diff --git a/.pkglts/clean.no b/.pkglts/clean.no deleted file mode 100644 index e69de29b..00000000 diff --git a/.pkglts/pkg_cfg.json b/.pkglts/pkg_cfg.json deleted file mode 100644 index fa1d3b21..00000000 --- a/.pkglts/pkg_cfg.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "_pkglts": { - "auto_install": true, - "install_front_end": "stdout", - "use_prompts": false, - "version": 12 - }, - "base": { - "authors": [ - [ - "Cyrille Ahmed Midingoyi", - "cyrille.midingoyi@inra.fr" - ], - [ - "Christophe Pradal", - "christophe.pradal@cirad.fr" - ] - ], - "namespace": null, - "namespace_method": "pkg_util", - "pkgname": "pycropml", - "url": "https://github.com/AgriculturalModelExchangeInitiative/PyCrop2ML" - }, - "data": { - "filetype": [ - ".json", - ".xml", - ".ini" - ], - "use_ext_dir": false - }, - "doc": { - "description": "A Python library to generate components from Crop2ML declarative language", - "fmt": "rst", - "keywords": [] - }, - "license": { - "name": "MIT", - "organization": "AMEI", - "project": "{{ base.pkgname }}", - "year": 2017 - }, - "pysetup": { - "intended_versions": [ - "27", "37" - ], - "require": [] - }, - "sphinx": { - "autodoc_dvlpt": true, - "build_dir": "build/sphinx", - "theme": "default" - }, - "test": { - "suite_name": "pytest" - }, - "version": { - "major": 1, - "minor": 1, - "post": 0 - } -} \ No newline at end of file diff --git a/.pkglts/pkg_hash.json b/.pkglts/pkg_hash.json deleted file mode 100644 index c9c18b82..00000000 --- a/.pkglts/pkg_hash.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "AUTHORS.rst": { - "doc.authors": "WBQE+pNJxobHw9z7xCoMU7/mTLz9vgnGD/XtriE8c507RJ1cs4o8XHmktlI6R+8YdJg504I5KDeVLmMM2MFpxw==", - "doc.contributors": "Ac1xHbB5q5mQmhiYDeN4wlY1XcXX+3z2O7Y14J0R8PshAShZ7fH6eusQDc1eMXM1tgKvDvo+lZMEc+Ondw9kiw==" - }, - "CONTRIBUTING.rst": {}, - "HISTORY.rst": {}, - "LICENSE": { - "license": "C0IwSkbEvv2vFSuJVbCTUfoNdOV+xJSVvLVgXjClviD3HXxeghoSi3lL8RuGWpD/obJR6gjZRHargPIWFe0DgQ==" - }, - "MANIFEST.in": { - "pysetup": "Y1QOReOOILPOTsNf8wWix/GCwuIUCPa5GRZKgK0pmu/K/7rkIpdpl4DrFkpaGrOrzdQv8bvLDxJzrxzHeJ8zFg==" - }, - "README.rst": { - "doc": "vmiIOMqGhuXJBom/KrWFzvETfJmbSMcLkvZ6XDTcFWl7XRHJgu1tcb4eHn97TgcziEqpfD96M5qO0DV3z3S+CQ==" - }, - "doc/Makefile": { - "sphinx": "EsaaEppe6Kw79WHpUyBigedrIraP6YlQDBg9Fu6jue32Rt6mCQkk2zH7gfOVqjT5bNpnXN90UfLkrzHVJCo6UQ==" - }, - "doc/_static/nonempty.txt": {}, - "doc/conf.py": { - "sphinx": "gH2ejqKE2tfDLnlBIdikVtfg3Q24v4eeWNuU0pDUJFQMZOvf1wevuVtbtuW/V77hT9U1xp8+uCEQWFGhc0GcQw==" - }, - "doc/make.bat": { - "sphinx": "E9sFsnXAm9uPYBn7f0Qb6edct0UKizsXRIJyjZISRCjHbT2HldXK4GIj1yO69R/OVSfnmdAX5lzXQ4wONQNFgA==" - }, - "dvlpt_requirements.txt": { - "pysetup": "4buSt15qYSNvkD2Ans39WG6s3ouq8r2I3vCvzX/y0oRz4LU+KrR2ktIO5SQ1+Amc8OS17QiDrVeKnvM6y8OFMA==" - }, - "requirements.txt": { - "pysetup": "2aT4rxgylS03HPPG+iGdYWan09mglW87QwvHiknWk3Hsjso06WVD719z4QfyySWlUA0150sJbx9hsWNKDj7vmg==" - }, - "requirements_minimal.txt": { - "pysetup": "vmiIOMqGhuXJBom/KrWFzvETfJmbSMcLkvZ6XDTcFWl7XRHJgu1tcb4eHn97TgcziEqpfD96M5qO0DV3z3S+CQ==" - }, - "setup.cfg": { - "pysetup": "BfdDz2+rdH5M/G1s39qU7tastV/hvs7xwgDSCBZ4HyFmkLVcXs0PnXlEeTokJLXdvjZQsKcM4z6Dg77cRfUYdQ==" - }, - "setup.py": { - "pysetup.call": "t30iIuCMd/sWxStR2XNYb8bCBgwanhKt8YYn2VKACyAqL5cKFRUWpVRIpAR+uxXUZ9PYYy2csMmECcONnRZE8w==", - "pysetup.kwds": "vMDaRG0BFMU6BN0LCHqwapjFdmLHc9EIJ/5xYTcoogCKI6/yuRMLIDgb+g/jUNoXI+6D6Hy9TDUvXL+JNGhKPQ==" - }, - "src/pycropml/__init__.py": { - "base": "+GVGxVjJGifAp8dAR9V2W3aVPe7/D53bN7r0O5VxO9OUqG4vnGTZvnORu1objjjIwm86DgemQd7ax/IJpRa8Wg==" - }, - "src/pycropml/version.py": { - "version": "QCUO1pBTHH3DnYyLfaT7MIrQzf26p4kProdwI4tW7jKEedOTrF4UBlTND37aru8ZeJ5TQgtSgayTvxxvlCVS9A==" - }, - "test/__init__.py": {}, - "test/conftest.py": { - "test.pytest_addoption": "I/hswVryIEYvZRBcFqkfRBxLP6eZCwZSbQuPclkOkjHw4MApBst5h7H0ejnMMe4bmwHXMXR5DCSxOMj/FcCnjQ==", - "test.pytest_cmdline_preparse": "Lid4ojpVpBIIn1jpCe1fmfeSeAgYhmIu4K5huJGEMv87/LruGeI0PjWNyONDNXlZrL0CL0BPTKvXlOkEj3jIWA==", - "test.pytest_collection": "a/3h30sLUHJ7xWsOrmfCInOOVXvm660dS+RxHwcDUcae2jHqDLRGhq/v8zgC+FSzN3pXaEaJ1QBJ9MNLOUBuCA==", - "test.pytest_import": "2ox6A0szNpUYZR5cJJRSW3OwEWR558BOiUMjC/OVkTPT++CF/OCgGSELCPL+7YHWaJGQKMw2rtCXmOMeSK5ZJA==" - } -} \ No newline at end of file diff --git a/.pkglts/pkg_version.json b/.pkglts/pkg_version.json deleted file mode 100644 index ac6b7f64..00000000 --- a/.pkglts/pkg_version.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": "4.3.0", - "data": "4.3.0", - "doc": "4.3.0", - "license": "4.3.0", - "pysetup": "4.3.0", - "sphinx": "4.3.0", - "test": "4.3.0", - "version": "4.3.0" -} \ No newline at end of file diff --git a/.pkglts/regenerate.no b/.pkglts/regenerate.no deleted file mode 100644 index e69de29b..00000000 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..f6b66d48 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,76 @@ +# FB 2025-04-14: based on ADEL and hydroshoot, sphinx pkg in environment.yml +[build-system] +requires = [ + "setuptools", + "six", + ] +build-backend = "setuptools.build_meta" + +# allow openalea to be a namespace package +[tool.setuptools.packages.find] +where = ["src"] + + +[project] +name = "pycropml" +dynamic = ["version", "readme"] +authors = [ + { name = "Cyrille Ahmed Midingoyi", email="cyrille_ahmed.midingoyi@cirad.fr" }, +] +description = "A Python library to generate components from Crop2ML declarative language" +license-files = ["LICEN[CS]E*"] +requires-python = ">=3.8" +classifiers = [ + "Intended Audience :: Science/Research", + "Intended Audience :: Developers", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Topic :: Scientific/Engineering", + "Framework :: OpenAlea", + "Framework :: Crop2ML", +] + +dependencies = [ + "ipykernel", + "configobj", + "six", + "setuptools", +] + +[tool.setuptools.dynamic] +version = {attr = "pycropml.version.__version__"} +readme = {file = ["README.rst"]} + +# section specific to conda-only distributed package (not used by pip yet) +[tool.conda.environment] +channels = [ + "openalea3", + "conda-forge" +] +dependencies = [ +] + +[project.optional-dependencies] +test = ["pytest"] +doc = [ + "sphinx-favicon", + "sphinx-rtd-theme", + "pydata-sphinx-theme", + "myst-parser", + "nbsphinx", +] + +[project.urls] +Homepage = "https://github.com/AgriculturalModelExchangeInitiative/PyCrop2ML" +"Bug Tracker" = "https://github.com/AgriculturalModelExchangeInitiative/PyCrop2ML/issues" +Discussions = "https://github.com/AgriculturalModelExchangeInitiative/PyCrop2ML/discussions" +Changelog = "https://github.com/AgriculturalModelExchangeInitiative/PyCrop2ML/releases" + +#[tool.setuptools.package-data] +#"pycropml_data" = ["*"] + +[project.scripts] +cyml = " pycropml.main:main" diff --git a/requirements.txt b/requirements.txt index 0c524b35..e85ec188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,28 +1,5 @@ -# {# pkglts, pysetup -# requirements are managed by pkglts, do not edit this file at all -# edit .pkglts/pkg_cfg instead -# section pysetup - -# install - - -# run examples - - -# test -#pytest -#pytest-mock - - -# compile doc -#sphinx - - -# other dvlpt tools - - -# #} -path +path.py +#yaml six nbformat numpy==2.0.2 @@ -31,9 +8,9 @@ nbsphinx networkx graphviz pydot -pyyaml +#pyyaml unyt IPython -antlr4-python3-runtime==4.8 +antlr4-python3-runtime==4.13.0 xmlformatter pandas==2.2.3 diff --git a/src/pycropml/transpiler/antlr_py/grammars/CMake.interp b/src/pycropml/transpiler/antlr_py/grammars/CMake.interp index bd89ec10..1e2131f2 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CMake.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/CMake.interp @@ -34,4 +34,4 @@ compound_argument atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 13, 42, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 3, 2, 7, 2, 12, 10, 2, 12, 2, 14, 2, 15, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 23, 10, 3, 12, 3, 14, 3, 26, 11, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 7, 5, 35, 10, 5, 12, 5, 14, 5, 38, 11, 5, 3, 5, 3, 5, 3, 5, 2, 2, 6, 2, 4, 6, 8, 2, 3, 4, 2, 5, 6, 8, 9, 2, 42, 2, 13, 3, 2, 2, 2, 4, 18, 3, 2, 2, 2, 6, 29, 3, 2, 2, 2, 8, 31, 3, 2, 2, 2, 10, 12, 5, 4, 3, 2, 11, 10, 3, 2, 2, 2, 12, 15, 3, 2, 2, 2, 13, 11, 3, 2, 2, 2, 13, 14, 3, 2, 2, 2, 14, 16, 3, 2, 2, 2, 15, 13, 3, 2, 2, 2, 16, 17, 7, 2, 2, 3, 17, 3, 3, 2, 2, 2, 18, 19, 7, 5, 2, 2, 19, 24, 7, 3, 2, 2, 20, 23, 5, 6, 4, 2, 21, 23, 5, 8, 5, 2, 22, 20, 3, 2, 2, 2, 22, 21, 3, 2, 2, 2, 23, 26, 3, 2, 2, 2, 24, 22, 3, 2, 2, 2, 24, 25, 3, 2, 2, 2, 25, 27, 3, 2, 2, 2, 26, 24, 3, 2, 2, 2, 27, 28, 7, 4, 2, 2, 28, 5, 3, 2, 2, 2, 29, 30, 9, 2, 2, 2, 30, 7, 3, 2, 2, 2, 31, 36, 7, 3, 2, 2, 32, 35, 5, 6, 4, 2, 33, 35, 5, 8, 5, 2, 34, 32, 3, 2, 2, 2, 34, 33, 3, 2, 2, 2, 35, 38, 3, 2, 2, 2, 36, 34, 3, 2, 2, 2, 36, 37, 3, 2, 2, 2, 37, 39, 3, 2, 2, 2, 38, 36, 3, 2, 2, 2, 39, 40, 7, 4, 2, 2, 40, 9, 3, 2, 2, 2, 7, 13, 22, 24, 34, 36] \ No newline at end of file +[4, 1, 11, 40, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 1, 0, 5, 0, 10, 8, 0, 10, 0, 12, 0, 13, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 21, 8, 1, 10, 1, 12, 1, 24, 9, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 33, 8, 3, 10, 3, 12, 3, 36, 9, 3, 1, 3, 1, 3, 1, 3, 0, 0, 4, 0, 2, 4, 6, 0, 1, 2, 0, 3, 4, 6, 7, 40, 0, 11, 1, 0, 0, 0, 2, 16, 1, 0, 0, 0, 4, 27, 1, 0, 0, 0, 6, 29, 1, 0, 0, 0, 8, 10, 3, 2, 1, 0, 9, 8, 1, 0, 0, 0, 10, 13, 1, 0, 0, 0, 11, 9, 1, 0, 0, 0, 11, 12, 1, 0, 0, 0, 12, 14, 1, 0, 0, 0, 13, 11, 1, 0, 0, 0, 14, 15, 5, 0, 0, 1, 15, 1, 1, 0, 0, 0, 16, 17, 5, 3, 0, 0, 17, 22, 5, 1, 0, 0, 18, 21, 3, 4, 2, 0, 19, 21, 3, 6, 3, 0, 20, 18, 1, 0, 0, 0, 20, 19, 1, 0, 0, 0, 21, 24, 1, 0, 0, 0, 22, 20, 1, 0, 0, 0, 22, 23, 1, 0, 0, 0, 23, 25, 1, 0, 0, 0, 24, 22, 1, 0, 0, 0, 25, 26, 5, 2, 0, 0, 26, 3, 1, 0, 0, 0, 27, 28, 7, 0, 0, 0, 28, 5, 1, 0, 0, 0, 29, 34, 5, 1, 0, 0, 30, 33, 3, 4, 2, 0, 31, 33, 3, 6, 3, 0, 32, 30, 1, 0, 0, 0, 32, 31, 1, 0, 0, 0, 33, 36, 1, 0, 0, 0, 34, 32, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 37, 1, 0, 0, 0, 36, 34, 1, 0, 0, 0, 37, 38, 5, 2, 0, 0, 38, 7, 1, 0, 0, 0, 5, 11, 20, 22, 32, 34] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CMakeLexer.interp b/src/pycropml/transpiler/antlr_py/grammars/CMakeLexer.interp index 12236844..771cfe9f 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CMakeLexer.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/CMakeLexer.interp @@ -52,4 +52,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 13, 175, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 7, 4, 42, 10, 4, 12, 4, 14, 4, 45, 11, 4, 3, 5, 3, 5, 6, 5, 49, 10, 5, 13, 5, 14, 5, 50, 3, 6, 3, 6, 3, 6, 5, 6, 56, 10, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 67, 10, 8, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 76, 10, 10, 12, 10, 14, 10, 79, 11, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 5, 11, 86, 10, 11, 3, 11, 5, 11, 89, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 7, 13, 101, 10, 13, 12, 13, 14, 13, 104, 11, 13, 3, 13, 5, 13, 107, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 7, 15, 121, 10, 15, 12, 15, 14, 15, 124, 11, 15, 3, 15, 3, 15, 7, 15, 128, 10, 15, 12, 15, 14, 15, 131, 11, 15, 3, 15, 3, 15, 7, 15, 135, 10, 15, 12, 15, 14, 15, 138, 11, 15, 3, 15, 3, 15, 7, 15, 142, 10, 15, 12, 15, 14, 15, 145, 11, 15, 5, 15, 147, 10, 15, 3, 15, 3, 15, 5, 15, 151, 10, 15, 3, 15, 5, 15, 154, 10, 15, 3, 15, 3, 15, 3, 16, 3, 16, 5, 16, 160, 10, 16, 3, 16, 6, 16, 163, 10, 16, 13, 16, 14, 16, 164, 3, 16, 3, 16, 3, 17, 6, 17, 170, 10, 17, 13, 17, 14, 17, 171, 3, 17, 3, 17, 3, 102, 2, 18, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 2, 15, 2, 17, 2, 19, 8, 21, 2, 23, 9, 25, 2, 27, 10, 29, 11, 31, 12, 33, 13, 3, 2, 12, 5, 2, 67, 92, 97, 97, 99, 124, 6, 2, 50, 59, 67, 92, 97, 97, 99, 124, 8, 2, 11, 12, 15, 15, 34, 34, 36, 37, 42, 43, 94, 94, 6, 2, 50, 59, 61, 61, 67, 92, 99, 124, 4, 2, 36, 36, 94, 94, 6, 2, 12, 12, 15, 15, 63, 63, 93, 93, 4, 2, 12, 12, 15, 15, 5, 2, 12, 12, 15, 15, 93, 93, 3, 3, 12, 12, 4, 2, 11, 11, 34, 34, 2, 196, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 3, 35, 3, 2, 2, 2, 5, 37, 3, 2, 2, 2, 7, 39, 3, 2, 2, 2, 9, 48, 3, 2, 2, 2, 11, 55, 3, 2, 2, 2, 13, 57, 3, 2, 2, 2, 15, 66, 3, 2, 2, 2, 17, 68, 3, 2, 2, 2, 19, 71, 3, 2, 2, 2, 21, 82, 3, 2, 2, 2, 23, 90, 3, 2, 2, 2, 25, 106, 3, 2, 2, 2, 27, 108, 3, 2, 2, 2, 29, 116, 3, 2, 2, 2, 31, 162, 3, 2, 2, 2, 33, 169, 3, 2, 2, 2, 35, 36, 7, 42, 2, 2, 36, 4, 3, 2, 2, 2, 37, 38, 7, 43, 2, 2, 38, 6, 3, 2, 2, 2, 39, 43, 9, 2, 2, 2, 40, 42, 9, 3, 2, 2, 41, 40, 3, 2, 2, 2, 42, 45, 3, 2, 2, 2, 43, 41, 3, 2, 2, 2, 43, 44, 3, 2, 2, 2, 44, 8, 3, 2, 2, 2, 45, 43, 3, 2, 2, 2, 46, 49, 10, 4, 2, 2, 47, 49, 5, 11, 6, 2, 48, 46, 3, 2, 2, 2, 48, 47, 3, 2, 2, 2, 49, 50, 3, 2, 2, 2, 50, 48, 3, 2, 2, 2, 50, 51, 3, 2, 2, 2, 51, 10, 3, 2, 2, 2, 52, 56, 5, 13, 7, 2, 53, 56, 5, 15, 8, 2, 54, 56, 5, 17, 9, 2, 55, 52, 3, 2, 2, 2, 55, 53, 3, 2, 2, 2, 55, 54, 3, 2, 2, 2, 56, 12, 3, 2, 2, 2, 57, 58, 7, 94, 2, 2, 58, 59, 10, 5, 2, 2, 59, 14, 3, 2, 2, 2, 60, 61, 7, 94, 2, 2, 61, 67, 7, 118, 2, 2, 62, 63, 7, 94, 2, 2, 63, 67, 7, 116, 2, 2, 64, 65, 7, 94, 2, 2, 65, 67, 7, 112, 2, 2, 66, 60, 3, 2, 2, 2, 66, 62, 3, 2, 2, 2, 66, 64, 3, 2, 2, 2, 67, 16, 3, 2, 2, 2, 68, 69, 7, 94, 2, 2, 69, 70, 7, 61, 2, 2, 70, 18, 3, 2, 2, 2, 71, 77, 7, 36, 2, 2, 72, 76, 10, 6, 2, 2, 73, 76, 5, 11, 6, 2, 74, 76, 5, 21, 11, 2, 75, 72, 3, 2, 2, 2, 75, 73, 3, 2, 2, 2, 75, 74, 3, 2, 2, 2, 76, 79, 3, 2, 2, 2, 77, 75, 3, 2, 2, 2, 77, 78, 3, 2, 2, 2, 78, 80, 3, 2, 2, 2, 79, 77, 3, 2, 2, 2, 80, 81, 7, 36, 2, 2, 81, 20, 3, 2, 2, 2, 82, 88, 7, 94, 2, 2, 83, 85, 7, 15, 2, 2, 84, 86, 7, 12, 2, 2, 85, 84, 3, 2, 2, 2, 85, 86, 3, 2, 2, 2, 86, 89, 3, 2, 2, 2, 87, 89, 7, 12, 2, 2, 88, 83, 3, 2, 2, 2, 88, 87, 3, 2, 2, 2, 89, 22, 3, 2, 2, 2, 90, 91, 7, 93, 2, 2, 91, 92, 5, 25, 13, 2, 92, 93, 7, 95, 2, 2, 93, 24, 3, 2, 2, 2, 94, 95, 7, 63, 2, 2, 95, 96, 5, 25, 13, 2, 96, 97, 7, 63, 2, 2, 97, 107, 3, 2, 2, 2, 98, 102, 7, 93, 2, 2, 99, 101, 11, 2, 2, 2, 100, 99, 3, 2, 2, 2, 101, 104, 3, 2, 2, 2, 102, 103, 3, 2, 2, 2, 102, 100, 3, 2, 2, 2, 103, 105, 3, 2, 2, 2, 104, 102, 3, 2, 2, 2, 105, 107, 7, 95, 2, 2, 106, 94, 3, 2, 2, 2, 106, 98, 3, 2, 2, 2, 107, 26, 3, 2, 2, 2, 108, 109, 7, 37, 2, 2, 109, 110, 7, 93, 2, 2, 110, 111, 3, 2, 2, 2, 111, 112, 5, 25, 13, 2, 112, 113, 7, 95, 2, 2, 113, 114, 3, 2, 2, 2, 114, 115, 8, 14, 2, 2, 115, 28, 3, 2, 2, 2, 116, 146, 7, 37, 2, 2, 117, 147, 3, 2, 2, 2, 118, 122, 7, 93, 2, 2, 119, 121, 7, 63, 2, 2, 120, 119, 3, 2, 2, 2, 121, 124, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 122, 123, 3, 2, 2, 2, 123, 147, 3, 2, 2, 2, 124, 122, 3, 2, 2, 2, 125, 129, 7, 93, 2, 2, 126, 128, 7, 63, 2, 2, 127, 126, 3, 2, 2, 2, 128, 131, 3, 2, 2, 2, 129, 127, 3, 2, 2, 2, 129, 130, 3, 2, 2, 2, 130, 132, 3, 2, 2, 2, 131, 129, 3, 2, 2, 2, 132, 136, 10, 7, 2, 2, 133, 135, 10, 8, 2, 2, 134, 133, 3, 2, 2, 2, 135, 138, 3, 2, 2, 2, 136, 134, 3, 2, 2, 2, 136, 137, 3, 2, 2, 2, 137, 147, 3, 2, 2, 2, 138, 136, 3, 2, 2, 2, 139, 143, 10, 9, 2, 2, 140, 142, 10, 8, 2, 2, 141, 140, 3, 2, 2, 2, 142, 145, 3, 2, 2, 2, 143, 141, 3, 2, 2, 2, 143, 144, 3, 2, 2, 2, 144, 147, 3, 2, 2, 2, 145, 143, 3, 2, 2, 2, 146, 117, 3, 2, 2, 2, 146, 118, 3, 2, 2, 2, 146, 125, 3, 2, 2, 2, 146, 139, 3, 2, 2, 2, 147, 153, 3, 2, 2, 2, 148, 150, 7, 15, 2, 2, 149, 151, 7, 12, 2, 2, 150, 149, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 154, 3, 2, 2, 2, 152, 154, 9, 10, 2, 2, 153, 148, 3, 2, 2, 2, 153, 152, 3, 2, 2, 2, 154, 155, 3, 2, 2, 2, 155, 156, 8, 15, 2, 2, 156, 30, 3, 2, 2, 2, 157, 159, 7, 15, 2, 2, 158, 160, 7, 12, 2, 2, 159, 158, 3, 2, 2, 2, 159, 160, 3, 2, 2, 2, 160, 163, 3, 2, 2, 2, 161, 163, 7, 12, 2, 2, 162, 157, 3, 2, 2, 2, 162, 161, 3, 2, 2, 2, 163, 164, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 164, 165, 3, 2, 2, 2, 165, 166, 3, 2, 2, 2, 166, 167, 8, 16, 2, 2, 167, 32, 3, 2, 2, 2, 168, 170, 9, 11, 2, 2, 169, 168, 3, 2, 2, 2, 170, 171, 3, 2, 2, 2, 171, 169, 3, 2, 2, 2, 171, 172, 3, 2, 2, 2, 172, 173, 3, 2, 2, 2, 173, 174, 8, 17, 2, 2, 174, 34, 3, 2, 2, 2, 25, 2, 43, 48, 50, 55, 66, 75, 77, 85, 88, 102, 106, 122, 129, 136, 143, 146, 150, 153, 159, 162, 164, 171, 3, 8, 2, 2] \ No newline at end of file +[4, 0, 11, 173, 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, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 5, 2, 40, 8, 2, 10, 2, 12, 2, 43, 9, 2, 1, 3, 1, 3, 4, 3, 47, 8, 3, 11, 3, 12, 3, 48, 1, 4, 1, 4, 1, 4, 3, 4, 54, 8, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 65, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 74, 8, 8, 10, 8, 12, 8, 77, 9, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 84, 8, 9, 1, 9, 3, 9, 87, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 99, 8, 11, 10, 11, 12, 11, 102, 9, 11, 1, 11, 3, 11, 105, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 119, 8, 13, 10, 13, 12, 13, 122, 9, 13, 1, 13, 1, 13, 5, 13, 126, 8, 13, 10, 13, 12, 13, 129, 9, 13, 1, 13, 1, 13, 5, 13, 133, 8, 13, 10, 13, 12, 13, 136, 9, 13, 1, 13, 1, 13, 5, 13, 140, 8, 13, 10, 13, 12, 13, 143, 9, 13, 3, 13, 145, 8, 13, 1, 13, 1, 13, 3, 13, 149, 8, 13, 1, 13, 3, 13, 152, 8, 13, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 158, 8, 14, 1, 14, 4, 14, 161, 8, 14, 11, 14, 12, 14, 162, 1, 14, 1, 14, 1, 15, 4, 15, 168, 8, 15, 11, 15, 12, 15, 169, 1, 15, 1, 15, 1, 100, 0, 16, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 0, 13, 0, 15, 0, 17, 6, 19, 0, 21, 7, 23, 0, 25, 8, 27, 9, 29, 10, 31, 11, 1, 0, 10, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 6, 0, 9, 10, 13, 13, 32, 32, 34, 35, 40, 41, 92, 92, 4, 0, 48, 57, 59, 59, 65, 90, 97, 122, 2, 0, 34, 34, 92, 92, 4, 0, 10, 10, 13, 13, 61, 61, 91, 91, 2, 0, 10, 10, 13, 13, 3, 0, 10, 10, 13, 13, 91, 91, 1, 1, 10, 10, 2, 0, 9, 9, 32, 32, 194, 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, 17, 1, 0, 0, 0, 0, 21, 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, 1, 33, 1, 0, 0, 0, 3, 35, 1, 0, 0, 0, 5, 37, 1, 0, 0, 0, 7, 46, 1, 0, 0, 0, 9, 53, 1, 0, 0, 0, 11, 55, 1, 0, 0, 0, 13, 64, 1, 0, 0, 0, 15, 66, 1, 0, 0, 0, 17, 69, 1, 0, 0, 0, 19, 80, 1, 0, 0, 0, 21, 88, 1, 0, 0, 0, 23, 104, 1, 0, 0, 0, 25, 106, 1, 0, 0, 0, 27, 114, 1, 0, 0, 0, 29, 160, 1, 0, 0, 0, 31, 167, 1, 0, 0, 0, 33, 34, 5, 40, 0, 0, 34, 2, 1, 0, 0, 0, 35, 36, 5, 41, 0, 0, 36, 4, 1, 0, 0, 0, 37, 41, 7, 0, 0, 0, 38, 40, 7, 1, 0, 0, 39, 38, 1, 0, 0, 0, 40, 43, 1, 0, 0, 0, 41, 39, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 6, 1, 0, 0, 0, 43, 41, 1, 0, 0, 0, 44, 47, 8, 2, 0, 0, 45, 47, 3, 9, 4, 0, 46, 44, 1, 0, 0, 0, 46, 45, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 46, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 8, 1, 0, 0, 0, 50, 54, 3, 11, 5, 0, 51, 54, 3, 13, 6, 0, 52, 54, 3, 15, 7, 0, 53, 50, 1, 0, 0, 0, 53, 51, 1, 0, 0, 0, 53, 52, 1, 0, 0, 0, 54, 10, 1, 0, 0, 0, 55, 56, 5, 92, 0, 0, 56, 57, 8, 3, 0, 0, 57, 12, 1, 0, 0, 0, 58, 59, 5, 92, 0, 0, 59, 65, 5, 116, 0, 0, 60, 61, 5, 92, 0, 0, 61, 65, 5, 114, 0, 0, 62, 63, 5, 92, 0, 0, 63, 65, 5, 110, 0, 0, 64, 58, 1, 0, 0, 0, 64, 60, 1, 0, 0, 0, 64, 62, 1, 0, 0, 0, 65, 14, 1, 0, 0, 0, 66, 67, 5, 92, 0, 0, 67, 68, 5, 59, 0, 0, 68, 16, 1, 0, 0, 0, 69, 75, 5, 34, 0, 0, 70, 74, 8, 4, 0, 0, 71, 74, 3, 9, 4, 0, 72, 74, 3, 19, 9, 0, 73, 70, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 72, 1, 0, 0, 0, 74, 77, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 78, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 79, 5, 34, 0, 0, 79, 18, 1, 0, 0, 0, 80, 86, 5, 92, 0, 0, 81, 83, 5, 13, 0, 0, 82, 84, 5, 10, 0, 0, 83, 82, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 87, 1, 0, 0, 0, 85, 87, 5, 10, 0, 0, 86, 81, 1, 0, 0, 0, 86, 85, 1, 0, 0, 0, 87, 20, 1, 0, 0, 0, 88, 89, 5, 91, 0, 0, 89, 90, 3, 23, 11, 0, 90, 91, 5, 93, 0, 0, 91, 22, 1, 0, 0, 0, 92, 93, 5, 61, 0, 0, 93, 94, 3, 23, 11, 0, 94, 95, 5, 61, 0, 0, 95, 105, 1, 0, 0, 0, 96, 100, 5, 91, 0, 0, 97, 99, 9, 0, 0, 0, 98, 97, 1, 0, 0, 0, 99, 102, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 100, 98, 1, 0, 0, 0, 101, 103, 1, 0, 0, 0, 102, 100, 1, 0, 0, 0, 103, 105, 5, 93, 0, 0, 104, 92, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 105, 24, 1, 0, 0, 0, 106, 107, 5, 35, 0, 0, 107, 108, 5, 91, 0, 0, 108, 109, 1, 0, 0, 0, 109, 110, 3, 23, 11, 0, 110, 111, 5, 93, 0, 0, 111, 112, 1, 0, 0, 0, 112, 113, 6, 12, 0, 0, 113, 26, 1, 0, 0, 0, 114, 144, 5, 35, 0, 0, 115, 145, 1, 0, 0, 0, 116, 120, 5, 91, 0, 0, 117, 119, 5, 61, 0, 0, 118, 117, 1, 0, 0, 0, 119, 122, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 145, 1, 0, 0, 0, 122, 120, 1, 0, 0, 0, 123, 127, 5, 91, 0, 0, 124, 126, 5, 61, 0, 0, 125, 124, 1, 0, 0, 0, 126, 129, 1, 0, 0, 0, 127, 125, 1, 0, 0, 0, 127, 128, 1, 0, 0, 0, 128, 130, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 130, 134, 8, 5, 0, 0, 131, 133, 8, 6, 0, 0, 132, 131, 1, 0, 0, 0, 133, 136, 1, 0, 0, 0, 134, 132, 1, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 145, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 137, 141, 8, 7, 0, 0, 138, 140, 8, 6, 0, 0, 139, 138, 1, 0, 0, 0, 140, 143, 1, 0, 0, 0, 141, 139, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 144, 115, 1, 0, 0, 0, 144, 116, 1, 0, 0, 0, 144, 123, 1, 0, 0, 0, 144, 137, 1, 0, 0, 0, 145, 151, 1, 0, 0, 0, 146, 148, 5, 13, 0, 0, 147, 149, 5, 10, 0, 0, 148, 147, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 152, 1, 0, 0, 0, 150, 152, 7, 8, 0, 0, 151, 146, 1, 0, 0, 0, 151, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 154, 6, 13, 0, 0, 154, 28, 1, 0, 0, 0, 155, 157, 5, 13, 0, 0, 156, 158, 5, 10, 0, 0, 157, 156, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 161, 1, 0, 0, 0, 159, 161, 5, 10, 0, 0, 160, 155, 1, 0, 0, 0, 160, 159, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 165, 6, 14, 0, 0, 165, 30, 1, 0, 0, 0, 166, 168, 7, 9, 0, 0, 167, 166, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 6, 15, 0, 0, 172, 32, 1, 0, 0, 0, 23, 0, 41, 46, 48, 53, 64, 73, 75, 83, 86, 100, 104, 120, 127, 134, 141, 144, 148, 151, 157, 160, 162, 169, 1, 6, 0, 0] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CMakeLexer.py b/src/pycropml/transpiler/antlr_py/grammars/CMakeLexer.py index 47f8d895..1be474e6 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CMakeLexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CMakeLexer.py @@ -1,88 +1,82 @@ -# Generated from CMake.g4 by ANTLR 4.8 +# Generated from CMake.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO import sys - +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\r") - buf.write("\u00af\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\3\2\3\2\3\3\3") - buf.write("\3\3\4\3\4\7\4*\n\4\f\4\16\4-\13\4\3\5\3\5\6\5\61\n\5") - buf.write("\r\5\16\5\62\3\6\3\6\3\6\5\68\n\6\3\7\3\7\3\7\3\b\3\b") - buf.write("\3\b\3\b\3\b\3\b\5\bC\n\b\3\t\3\t\3\t\3\n\3\n\3\n\3\n") - buf.write("\7\nL\n\n\f\n\16\nO\13\n\3\n\3\n\3\13\3\13\3\13\5\13V") - buf.write("\n\13\3\13\5\13Y\n\13\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r") - buf.write("\3\r\3\r\7\re\n\r\f\r\16\rh\13\r\3\r\5\rk\n\r\3\16\3\16") - buf.write("\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3\17\7\17") - buf.write("y\n\17\f\17\16\17|\13\17\3\17\3\17\7\17\u0080\n\17\f\17") - buf.write("\16\17\u0083\13\17\3\17\3\17\7\17\u0087\n\17\f\17\16\17") - buf.write("\u008a\13\17\3\17\3\17\7\17\u008e\n\17\f\17\16\17\u0091") - buf.write("\13\17\5\17\u0093\n\17\3\17\3\17\5\17\u0097\n\17\3\17") - buf.write("\5\17\u009a\n\17\3\17\3\17\3\20\3\20\5\20\u00a0\n\20\3") - buf.write("\20\6\20\u00a3\n\20\r\20\16\20\u00a4\3\20\3\20\3\21\6") - buf.write("\21\u00aa\n\21\r\21\16\21\u00ab\3\21\3\21\3f\2\22\3\3") - buf.write("\5\4\7\5\t\6\13\7\r\2\17\2\21\2\23\b\25\2\27\t\31\2\33") - buf.write("\n\35\13\37\f!\r\3\2\f\5\2C\\aac|\6\2\62;C\\aac|\b\2\13") - buf.write("\f\17\17\"\"$%*+^^\6\2\62;==C\\c|\4\2$$^^\6\2\f\f\17\17") - buf.write("??]]\4\2\f\f\17\17\5\2\f\f\17\17]]\3\3\f\f\4\2\13\13\"") - buf.write("\"\2\u00c4\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2") - buf.write("\2\2\2\13\3\2\2\2\2\23\3\2\2\2\2\27\3\2\2\2\2\33\3\2\2") - buf.write("\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\3#\3\2\2\2\5%") - buf.write("\3\2\2\2\7\'\3\2\2\2\t\60\3\2\2\2\13\67\3\2\2\2\r9\3\2") - buf.write("\2\2\17B\3\2\2\2\21D\3\2\2\2\23G\3\2\2\2\25R\3\2\2\2\27") - buf.write("Z\3\2\2\2\31j\3\2\2\2\33l\3\2\2\2\35t\3\2\2\2\37\u00a2") - buf.write("\3\2\2\2!\u00a9\3\2\2\2#$\7*\2\2$\4\3\2\2\2%&\7+\2\2&") - buf.write("\6\3\2\2\2\'+\t\2\2\2(*\t\3\2\2)(\3\2\2\2*-\3\2\2\2+)") - buf.write("\3\2\2\2+,\3\2\2\2,\b\3\2\2\2-+\3\2\2\2.\61\n\4\2\2/\61") - buf.write("\5\13\6\2\60.\3\2\2\2\60/\3\2\2\2\61\62\3\2\2\2\62\60") - buf.write("\3\2\2\2\62\63\3\2\2\2\63\n\3\2\2\2\648\5\r\7\2\658\5") - buf.write("\17\b\2\668\5\21\t\2\67\64\3\2\2\2\67\65\3\2\2\2\67\66") - buf.write("\3\2\2\28\f\3\2\2\29:\7^\2\2:;\n\5\2\2;\16\3\2\2\2<=\7") - buf.write("^\2\2=C\7v\2\2>?\7^\2\2?C\7t\2\2@A\7^\2\2AC\7p\2\2B<\3") - buf.write("\2\2\2B>\3\2\2\2B@\3\2\2\2C\20\3\2\2\2DE\7^\2\2EF\7=\2") - buf.write("\2F\22\3\2\2\2GM\7$\2\2HL\n\6\2\2IL\5\13\6\2JL\5\25\13") - buf.write("\2KH\3\2\2\2KI\3\2\2\2KJ\3\2\2\2LO\3\2\2\2MK\3\2\2\2M") - buf.write("N\3\2\2\2NP\3\2\2\2OM\3\2\2\2PQ\7$\2\2Q\24\3\2\2\2RX\7") - buf.write("^\2\2SU\7\17\2\2TV\7\f\2\2UT\3\2\2\2UV\3\2\2\2VY\3\2\2") - buf.write("\2WY\7\f\2\2XS\3\2\2\2XW\3\2\2\2Y\26\3\2\2\2Z[\7]\2\2") - buf.write("[\\\5\31\r\2\\]\7_\2\2]\30\3\2\2\2^_\7?\2\2_`\5\31\r\2") - buf.write("`a\7?\2\2ak\3\2\2\2bf\7]\2\2ce\13\2\2\2dc\3\2\2\2eh\3") - buf.write("\2\2\2fg\3\2\2\2fd\3\2\2\2gi\3\2\2\2hf\3\2\2\2ik\7_\2") - buf.write("\2j^\3\2\2\2jb\3\2\2\2k\32\3\2\2\2lm\7%\2\2mn\7]\2\2n") - buf.write("o\3\2\2\2op\5\31\r\2pq\7_\2\2qr\3\2\2\2rs\b\16\2\2s\34") - buf.write("\3\2\2\2t\u0092\7%\2\2u\u0093\3\2\2\2vz\7]\2\2wy\7?\2") - buf.write("\2xw\3\2\2\2y|\3\2\2\2zx\3\2\2\2z{\3\2\2\2{\u0093\3\2") - buf.write("\2\2|z\3\2\2\2}\u0081\7]\2\2~\u0080\7?\2\2\177~\3\2\2") - buf.write("\2\u0080\u0083\3\2\2\2\u0081\177\3\2\2\2\u0081\u0082\3") - buf.write("\2\2\2\u0082\u0084\3\2\2\2\u0083\u0081\3\2\2\2\u0084\u0088") - buf.write("\n\7\2\2\u0085\u0087\n\b\2\2\u0086\u0085\3\2\2\2\u0087") - buf.write("\u008a\3\2\2\2\u0088\u0086\3\2\2\2\u0088\u0089\3\2\2\2") - buf.write("\u0089\u0093\3\2\2\2\u008a\u0088\3\2\2\2\u008b\u008f\n") - buf.write("\t\2\2\u008c\u008e\n\b\2\2\u008d\u008c\3\2\2\2\u008e\u0091") - buf.write("\3\2\2\2\u008f\u008d\3\2\2\2\u008f\u0090\3\2\2\2\u0090") - buf.write("\u0093\3\2\2\2\u0091\u008f\3\2\2\2\u0092u\3\2\2\2\u0092") - buf.write("v\3\2\2\2\u0092}\3\2\2\2\u0092\u008b\3\2\2\2\u0093\u0099") - buf.write("\3\2\2\2\u0094\u0096\7\17\2\2\u0095\u0097\7\f\2\2\u0096") - buf.write("\u0095\3\2\2\2\u0096\u0097\3\2\2\2\u0097\u009a\3\2\2\2") - buf.write("\u0098\u009a\t\n\2\2\u0099\u0094\3\2\2\2\u0099\u0098\3") - buf.write("\2\2\2\u009a\u009b\3\2\2\2\u009b\u009c\b\17\2\2\u009c") - buf.write("\36\3\2\2\2\u009d\u009f\7\17\2\2\u009e\u00a0\7\f\2\2\u009f") - buf.write("\u009e\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0\u00a3\3\2\2\2") - buf.write("\u00a1\u00a3\7\f\2\2\u00a2\u009d\3\2\2\2\u00a2\u00a1\3") - buf.write("\2\2\2\u00a3\u00a4\3\2\2\2\u00a4\u00a2\3\2\2\2\u00a4\u00a5") - buf.write("\3\2\2\2\u00a5\u00a6\3\2\2\2\u00a6\u00a7\b\20\2\2\u00a7") - buf.write(" \3\2\2\2\u00a8\u00aa\t\13\2\2\u00a9\u00a8\3\2\2\2\u00aa") - buf.write("\u00ab\3\2\2\2\u00ab\u00a9\3\2\2\2\u00ab\u00ac\3\2\2\2") - buf.write("\u00ac\u00ad\3\2\2\2\u00ad\u00ae\b\21\2\2\u00ae\"\3\2") - buf.write("\2\2\31\2+\60\62\67BKMUXfjz\u0081\u0088\u008f\u0092\u0096") - buf.write("\u0099\u009f\u00a2\u00a4\u00ab\3\b\2\2") - return buf.getvalue() - + return [ + 4,0,11,173,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,1,0,1,0,1,1,1,1,1,2,1,2,5,2,40,8,2,10, + 2,12,2,43,9,2,1,3,1,3,4,3,47,8,3,11,3,12,3,48,1,4,1,4,1,4,3,4,54, + 8,4,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,3,6,65,8,6,1,7,1,7,1,7,1, + 8,1,8,1,8,1,8,5,8,74,8,8,10,8,12,8,77,9,8,1,8,1,8,1,9,1,9,1,9,3, + 9,84,8,9,1,9,3,9,87,8,9,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11, + 1,11,1,11,5,11,99,8,11,10,11,12,11,102,9,11,1,11,3,11,105,8,11,1, + 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,5,13,119, + 8,13,10,13,12,13,122,9,13,1,13,1,13,5,13,126,8,13,10,13,12,13,129, + 9,13,1,13,1,13,5,13,133,8,13,10,13,12,13,136,9,13,1,13,1,13,5,13, + 140,8,13,10,13,12,13,143,9,13,3,13,145,8,13,1,13,1,13,3,13,149,8, + 13,1,13,3,13,152,8,13,1,13,1,13,1,14,1,14,3,14,158,8,14,1,14,4,14, + 161,8,14,11,14,12,14,162,1,14,1,14,1,15,4,15,168,8,15,11,15,12,15, + 169,1,15,1,15,1,100,0,16,1,1,3,2,5,3,7,4,9,5,11,0,13,0,15,0,17,6, + 19,0,21,7,23,0,25,8,27,9,29,10,31,11,1,0,10,3,0,65,90,95,95,97,122, + 4,0,48,57,65,90,95,95,97,122,6,0,9,10,13,13,32,32,34,35,40,41,92, + 92,4,0,48,57,59,59,65,90,97,122,2,0,34,34,92,92,4,0,10,10,13,13, + 61,61,91,91,2,0,10,10,13,13,3,0,10,10,13,13,91,91,1,1,10,10,2,0, + 9,9,32,32,194,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,17,1,0,0,0,0,21,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,1,33,1,0,0,0,3,35,1,0,0,0,5,37,1,0,0,0,7, + 46,1,0,0,0,9,53,1,0,0,0,11,55,1,0,0,0,13,64,1,0,0,0,15,66,1,0,0, + 0,17,69,1,0,0,0,19,80,1,0,0,0,21,88,1,0,0,0,23,104,1,0,0,0,25,106, + 1,0,0,0,27,114,1,0,0,0,29,160,1,0,0,0,31,167,1,0,0,0,33,34,5,40, + 0,0,34,2,1,0,0,0,35,36,5,41,0,0,36,4,1,0,0,0,37,41,7,0,0,0,38,40, + 7,1,0,0,39,38,1,0,0,0,40,43,1,0,0,0,41,39,1,0,0,0,41,42,1,0,0,0, + 42,6,1,0,0,0,43,41,1,0,0,0,44,47,8,2,0,0,45,47,3,9,4,0,46,44,1,0, + 0,0,46,45,1,0,0,0,47,48,1,0,0,0,48,46,1,0,0,0,48,49,1,0,0,0,49,8, + 1,0,0,0,50,54,3,11,5,0,51,54,3,13,6,0,52,54,3,15,7,0,53,50,1,0,0, + 0,53,51,1,0,0,0,53,52,1,0,0,0,54,10,1,0,0,0,55,56,5,92,0,0,56,57, + 8,3,0,0,57,12,1,0,0,0,58,59,5,92,0,0,59,65,5,116,0,0,60,61,5,92, + 0,0,61,65,5,114,0,0,62,63,5,92,0,0,63,65,5,110,0,0,64,58,1,0,0,0, + 64,60,1,0,0,0,64,62,1,0,0,0,65,14,1,0,0,0,66,67,5,92,0,0,67,68,5, + 59,0,0,68,16,1,0,0,0,69,75,5,34,0,0,70,74,8,4,0,0,71,74,3,9,4,0, + 72,74,3,19,9,0,73,70,1,0,0,0,73,71,1,0,0,0,73,72,1,0,0,0,74,77,1, + 0,0,0,75,73,1,0,0,0,75,76,1,0,0,0,76,78,1,0,0,0,77,75,1,0,0,0,78, + 79,5,34,0,0,79,18,1,0,0,0,80,86,5,92,0,0,81,83,5,13,0,0,82,84,5, + 10,0,0,83,82,1,0,0,0,83,84,1,0,0,0,84,87,1,0,0,0,85,87,5,10,0,0, + 86,81,1,0,0,0,86,85,1,0,0,0,87,20,1,0,0,0,88,89,5,91,0,0,89,90,3, + 23,11,0,90,91,5,93,0,0,91,22,1,0,0,0,92,93,5,61,0,0,93,94,3,23,11, + 0,94,95,5,61,0,0,95,105,1,0,0,0,96,100,5,91,0,0,97,99,9,0,0,0,98, + 97,1,0,0,0,99,102,1,0,0,0,100,101,1,0,0,0,100,98,1,0,0,0,101,103, + 1,0,0,0,102,100,1,0,0,0,103,105,5,93,0,0,104,92,1,0,0,0,104,96,1, + 0,0,0,105,24,1,0,0,0,106,107,5,35,0,0,107,108,5,91,0,0,108,109,1, + 0,0,0,109,110,3,23,11,0,110,111,5,93,0,0,111,112,1,0,0,0,112,113, + 6,12,0,0,113,26,1,0,0,0,114,144,5,35,0,0,115,145,1,0,0,0,116,120, + 5,91,0,0,117,119,5,61,0,0,118,117,1,0,0,0,119,122,1,0,0,0,120,118, + 1,0,0,0,120,121,1,0,0,0,121,145,1,0,0,0,122,120,1,0,0,0,123,127, + 5,91,0,0,124,126,5,61,0,0,125,124,1,0,0,0,126,129,1,0,0,0,127,125, + 1,0,0,0,127,128,1,0,0,0,128,130,1,0,0,0,129,127,1,0,0,0,130,134, + 8,5,0,0,131,133,8,6,0,0,132,131,1,0,0,0,133,136,1,0,0,0,134,132, + 1,0,0,0,134,135,1,0,0,0,135,145,1,0,0,0,136,134,1,0,0,0,137,141, + 8,7,0,0,138,140,8,6,0,0,139,138,1,0,0,0,140,143,1,0,0,0,141,139, + 1,0,0,0,141,142,1,0,0,0,142,145,1,0,0,0,143,141,1,0,0,0,144,115, + 1,0,0,0,144,116,1,0,0,0,144,123,1,0,0,0,144,137,1,0,0,0,145,151, + 1,0,0,0,146,148,5,13,0,0,147,149,5,10,0,0,148,147,1,0,0,0,148,149, + 1,0,0,0,149,152,1,0,0,0,150,152,7,8,0,0,151,146,1,0,0,0,151,150, + 1,0,0,0,152,153,1,0,0,0,153,154,6,13,0,0,154,28,1,0,0,0,155,157, + 5,13,0,0,156,158,5,10,0,0,157,156,1,0,0,0,157,158,1,0,0,0,158,161, + 1,0,0,0,159,161,5,10,0,0,160,155,1,0,0,0,160,159,1,0,0,0,161,162, + 1,0,0,0,162,160,1,0,0,0,162,163,1,0,0,0,163,164,1,0,0,0,164,165, + 6,14,0,0,165,30,1,0,0,0,166,168,7,9,0,0,167,166,1,0,0,0,168,169, + 1,0,0,0,169,167,1,0,0,0,169,170,1,0,0,0,170,171,1,0,0,0,171,172, + 6,15,0,0,172,32,1,0,0,0,23,0,41,46,48,53,64,73,75,83,86,100,104, + 120,127,134,141,144,148,151,157,160,162,169,1,6,0,0 + ] class CMakeLexer(Lexer): @@ -124,7 +118,7 @@ class CMakeLexer(Lexer): def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/src/pycropml/transpiler/antlr_py/grammars/CMakeListener.py b/src/pycropml/transpiler/antlr_py/grammars/CMakeListener.py index c4df377d..ae97d718 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CMakeListener.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CMakeListener.py @@ -1,6 +1,6 @@ -# Generated from CMake.g4 by ANTLR 4.8 +# Generated from CMake.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .CMakeParser import CMakeParser else: from CMakeParser import CMakeParser diff --git a/src/pycropml/transpiler/antlr_py/grammars/CMakeParser.py b/src/pycropml/transpiler/antlr_py/grammars/CMakeParser.py index 14360789..a7e8317a 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CMakeParser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CMakeParser.py @@ -1,4 +1,4 @@ -# Generated from CMake.g4 by ANTLR 4.8 +# Generated from CMake.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,26 +8,22 @@ else: from typing.io import TextIO - def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\r") - buf.write("*\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\3\2\7\2\f\n\2\f\2\16") - buf.write("\2\17\13\2\3\2\3\2\3\3\3\3\3\3\3\3\7\3\27\n\3\f\3\16\3") - buf.write("\32\13\3\3\3\3\3\3\4\3\4\3\5\3\5\3\5\7\5#\n\5\f\5\16\5") - buf.write("&\13\5\3\5\3\5\3\5\2\2\6\2\4\6\b\2\3\4\2\5\6\b\t\2*\2") - buf.write("\r\3\2\2\2\4\22\3\2\2\2\6\35\3\2\2\2\b\37\3\2\2\2\n\f") - buf.write("\5\4\3\2\13\n\3\2\2\2\f\17\3\2\2\2\r\13\3\2\2\2\r\16\3") - buf.write("\2\2\2\16\20\3\2\2\2\17\r\3\2\2\2\20\21\7\2\2\3\21\3\3") - buf.write("\2\2\2\22\23\7\5\2\2\23\30\7\3\2\2\24\27\5\6\4\2\25\27") - buf.write("\5\b\5\2\26\24\3\2\2\2\26\25\3\2\2\2\27\32\3\2\2\2\30") - buf.write("\26\3\2\2\2\30\31\3\2\2\2\31\33\3\2\2\2\32\30\3\2\2\2") - buf.write("\33\34\7\4\2\2\34\5\3\2\2\2\35\36\t\2\2\2\36\7\3\2\2\2") - buf.write("\37$\7\3\2\2 #\5\6\4\2!#\5\b\5\2\" \3\2\2\2\"!\3\2\2\2") - buf.write("#&\3\2\2\2$\"\3\2\2\2$%\3\2\2\2%\'\3\2\2\2&$\3\2\2\2\'") - buf.write("(\7\4\2\2(\t\3\2\2\2\7\r\26\30\"$") - return buf.getvalue() - + return [ + 4,1,11,40,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,1,0,5,0,10,8,0,10,0,12, + 0,13,9,0,1,0,1,0,1,1,1,1,1,1,1,1,5,1,21,8,1,10,1,12,1,24,9,1,1,1, + 1,1,1,2,1,2,1,3,1,3,1,3,5,3,33,8,3,10,3,12,3,36,9,3,1,3,1,3,1,3, + 0,0,4,0,2,4,6,0,1,2,0,3,4,6,7,40,0,11,1,0,0,0,2,16,1,0,0,0,4,27, + 1,0,0,0,6,29,1,0,0,0,8,10,3,2,1,0,9,8,1,0,0,0,10,13,1,0,0,0,11,9, + 1,0,0,0,11,12,1,0,0,0,12,14,1,0,0,0,13,11,1,0,0,0,14,15,5,0,0,1, + 15,1,1,0,0,0,16,17,5,3,0,0,17,22,5,1,0,0,18,21,3,4,2,0,19,21,3,6, + 3,0,20,18,1,0,0,0,20,19,1,0,0,0,21,24,1,0,0,0,22,20,1,0,0,0,22,23, + 1,0,0,0,23,25,1,0,0,0,24,22,1,0,0,0,25,26,5,2,0,0,26,3,1,0,0,0,27, + 28,7,0,0,0,28,5,1,0,0,0,29,34,5,1,0,0,30,33,3,4,2,0,31,33,3,6,3, + 0,32,30,1,0,0,0,32,31,1,0,0,0,33,36,1,0,0,0,34,32,1,0,0,0,34,35, + 1,0,0,0,35,37,1,0,0,0,36,34,1,0,0,0,37,38,5,2,0,0,38,7,1,0,0,0,5, + 11,20,22,32,34 + ] class CMakeParser ( Parser ): @@ -68,7 +64,7 @@ class CMakeParser ( Parser ): def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None @@ -76,6 +72,7 @@ def __init__(self, input:TokenStream, output:TextIO = sys.stdout): class File_cContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -121,7 +118,7 @@ def file_c(self): self.state = 11 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CMakeParser.Identifier: + while _la==3: self.state = 8 self.command_invocation() self.state = 13 @@ -140,6 +137,7 @@ def file_c(self): class Command_invocationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -196,15 +194,15 @@ def command_invocation(self): self.state = 22 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CMakeParser.T__0) | (1 << CMakeParser.Identifier) | (1 << CMakeParser.Unquoted_argument) | (1 << CMakeParser.Quoted_argument) | (1 << CMakeParser.Bracket_argument))) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 218) != 0): self.state = 20 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CMakeParser.Identifier, CMakeParser.Unquoted_argument, CMakeParser.Quoted_argument, CMakeParser.Bracket_argument]: + if token in [3, 4, 6, 7]: self.state = 18 self.single_argument() pass - elif token in [CMakeParser.T__0]: + elif token in [1]: self.state = 19 self.compound_argument() pass @@ -227,6 +225,7 @@ def command_invocation(self): class Single_argumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -273,7 +272,7 @@ def single_argument(self): self.enterOuterAlt(localctx, 1) self.state = 27 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CMakeParser.Identifier) | (1 << CMakeParser.Unquoted_argument) | (1 << CMakeParser.Quoted_argument) | (1 << CMakeParser.Bracket_argument))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 216) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -288,6 +287,7 @@ def single_argument(self): class Compound_argumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -339,15 +339,15 @@ def compound_argument(self): self.state = 34 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CMakeParser.T__0) | (1 << CMakeParser.Identifier) | (1 << CMakeParser.Unquoted_argument) | (1 << CMakeParser.Quoted_argument) | (1 << CMakeParser.Bracket_argument))) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 218) != 0): self.state = 32 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CMakeParser.Identifier, CMakeParser.Unquoted_argument, CMakeParser.Quoted_argument, CMakeParser.Bracket_argument]: + if token in [3, 4, 6, 7]: self.state = 30 self.single_argument() pass - elif token in [CMakeParser.T__0]: + elif token in [1]: self.state = 31 self.compound_argument() pass diff --git a/src/pycropml/transpiler/antlr_py/grammars/CMakeVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/CMakeVisitor.py index aa586387..d6a34392 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CMakeVisitor.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CMakeVisitor.py @@ -1,6 +1,6 @@ -# Generated from CMake.g4 by ANTLR 4.8 +# Generated from CMake.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .CMakeParser import CMakeParser else: from CMakeParser import CMakeParser diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.g4 b/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.g4 new file mode 100644 index 00000000..897f6aec --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.g4 @@ -0,0 +1,398 @@ +// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine +// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true + +lexer grammar CPP14Lexer; + +IntegerLiteral: + DecimalLiteral Integersuffix? + | OctalLiteral Integersuffix? + | HexadecimalLiteral Integersuffix? + | BinaryLiteral Integersuffix? +; + +CharacterLiteral: ('u' | 'U' | 'L')? '\'' Cchar+ '\''; + +FloatingLiteral: + Fractionalconstant Exponentpart? Floatingsuffix? + | Digitsequence Exponentpart Floatingsuffix? +; + +StringLiteral: Encodingprefix? (Rawstring | '"' Schar* '"'); + +BooleanLiteral: False_ | True_; + +PointerLiteral: Nullptr; + +UserDefinedLiteral: + UserDefinedIntegerLiteral + | UserDefinedFloatingLiteral + | UserDefinedStringLiteral + | UserDefinedCharacterLiteral +; + +MultiLineMacro: '#' (~[\n]*? '\\' '\r'? '\n')+ ~ [\n]+ -> channel (HIDDEN); + +Directive: '#' ~ [\n]* -> channel (HIDDEN); +/*Keywords*/ + +Alignas: 'alignas'; + +Alignof: 'alignof'; + +Asm: 'asm'; + +Auto: 'auto'; + +Bool: 'bool'; + +Break: 'break'; + +Case: 'case'; + +Catch: 'catch'; + +Char: 'char'; + +Char16: 'char16_t'; + +Char32: 'char32_t'; + +Class: 'class'; + +Const: 'const'; + +Constexpr: 'constexpr'; + +Const_cast: 'const_cast'; + +Continue: 'continue'; + +Decltype: 'decltype'; + +Default: 'default'; + +Delete: 'delete'; + +Do: 'do'; + +Double: 'double'; + +Dynamic_cast: 'dynamic_cast'; + +Else: 'else'; + +Enum: 'enum'; + +Explicit: 'explicit'; + +Export: 'export'; + +Extern: 'extern'; + +//DO NOT RENAME - PYTHON NEEDS True and False +False_: 'false'; + +Final: 'final'; + +Float: 'float'; + +For: 'for'; + +Friend: 'friend'; + +Goto: 'goto'; + +If: 'if'; + +Inline: 'inline'; + +Int: 'int'; + +Long: 'long'; + +Mutable: 'mutable'; + +Namespace: 'namespace'; + +New: 'new'; + +Noexcept: 'noexcept'; + +Nullptr: 'nullptr'; + +Operator: 'operator'; + +Override: 'override'; + +Private: 'private'; + +Protected: 'protected'; + +Public: 'public'; + +Register: 'register'; + +Reinterpret_cast: 'reinterpret_cast'; + +Return: 'return'; + +Short: 'short'; + +Signed: 'signed'; + +Sizeof: 'sizeof'; + +Static: 'static'; + +Static_assert: 'static_assert'; + +Static_cast: 'static_cast'; + +Struct: 'struct'; + +Switch: 'switch'; + +Template: 'template'; + +This: 'this'; + +Thread_local: 'thread_local'; + +Throw: 'throw'; + +//DO NOT RENAME - PYTHON NEEDS True and False +True_: 'true'; + +Try: 'try'; + +Typedef: 'typedef'; + +Typeid_: 'typeid'; + +Typename_: 'typename'; + +Union: 'union'; + +Unsigned: 'unsigned'; + +Using: 'using'; + +Virtual: 'virtual'; + +Void: 'void'; + +Volatile: 'volatile'; + +Wchar: 'wchar_t'; + +While: 'while'; +/*Operators*/ + +LeftParen: '('; + +RightParen: ')'; + +LeftBracket: '['; + +RightBracket: ']'; + +LeftBrace: '{'; + +RightBrace: '}'; + +Plus: '+'; + +Minus: '-'; + +Star: '*'; + +Div: '/'; + +Mod: '%'; + +Caret: '^'; + +And: '&'; + +Or: '|'; + +Tilde: '~'; + +Not: '!' | 'not'; + +Assign: '='; + +Less: '<'; + +Greater: '>'; + +PlusAssign: '+='; + +MinusAssign: '-='; + +StarAssign: '*='; + +DivAssign: '/='; + +ModAssign: '%='; + +XorAssign: '^='; + +AndAssign: '&='; + +OrAssign: '|='; + +LeftShiftAssign: '<<='; + +RightShiftAssign: '>>='; + +Equal: '=='; + +NotEqual: '!='; + +LessEqual: '<='; + +GreaterEqual: '>='; + +AndAnd: '&&' | 'and'; + +OrOr: '||' | 'or'; + +PlusPlus: '++'; + +MinusMinus: '--'; + +Comma: ','; + +ArrowStar: '->*'; + +Arrow: '->'; + +Question: '?'; + +Colon: ':'; + +Doublecolon: '::'; + +Semi: ';'; + +Dot: '.'; + +DotStar: '.*'; + +Ellipsis: '...'; + +fragment Hexquad: HEXADECIMALDIGIT HEXADECIMALDIGIT HEXADECIMALDIGIT HEXADECIMALDIGIT; + +fragment Universalcharactername: '\\u' Hexquad | '\\U' Hexquad Hexquad; + +Identifier: + /* + Identifiernondigit | Identifier Identifiernondigit | Identifier DIGIT + */ Identifiernondigit (Identifiernondigit | DIGIT)* +; + +fragment Identifiernondigit: NONDIGIT | Universalcharactername; + +fragment NONDIGIT: [a-zA-Z_]; + +fragment DIGIT: [0-9]; + +DecimalLiteral: NONZERODIGIT ('\''? DIGIT)*; + +OctalLiteral: '0' ('\''? OCTALDIGIT)*; + +HexadecimalLiteral: ('0x' | '0X') HEXADECIMALDIGIT ( '\''? HEXADECIMALDIGIT)*; + +BinaryLiteral: ('0b' | '0B') BINARYDIGIT ('\''? BINARYDIGIT)*; + +fragment NONZERODIGIT: [1-9]; + +fragment OCTALDIGIT: [0-7]; + +fragment HEXADECIMALDIGIT: [0-9a-fA-F]; + +fragment BINARYDIGIT: [01]; + +Integersuffix: + Unsignedsuffix Longsuffix? + | Unsignedsuffix Longlongsuffix? + | Longsuffix Unsignedsuffix? + | Longlongsuffix Unsignedsuffix? +; + +fragment Unsignedsuffix: [uU]; + +fragment Longsuffix: [lL]; + +fragment Longlongsuffix: 'll' | 'LL'; + +fragment Cchar: ~ ['\\\r\n] | Escapesequence | Universalcharactername; + +fragment Escapesequence: Simpleescapesequence | Octalescapesequence | Hexadecimalescapesequence; + +fragment Simpleescapesequence: + '\\\'' + | '\\"' + | '\\?' + | '\\\\' + | '\\a' + | '\\b' + | '\\f' + | '\\n' + | '\\r' + | '\\' ('\r' '\n'? | '\n') + | '\\t' + | '\\v' +; + +fragment Octalescapesequence: + '\\' OCTALDIGIT + | '\\' OCTALDIGIT OCTALDIGIT + | '\\' OCTALDIGIT OCTALDIGIT OCTALDIGIT +; + +fragment Hexadecimalescapesequence: '\\x' HEXADECIMALDIGIT+; + +fragment Fractionalconstant: Digitsequence? '.' Digitsequence | Digitsequence '.'; + +fragment Exponentpart: 'e' SIGN? Digitsequence | 'E' SIGN? Digitsequence; + +fragment SIGN: [+-]; + +fragment Digitsequence: DIGIT ('\''? DIGIT)*; + +fragment Floatingsuffix: [flFL]; + +fragment Encodingprefix: 'u8' | 'u' | 'U' | 'L'; + +fragment Schar: ~ ["\\\r\n] | Escapesequence | Universalcharactername; + +fragment Rawstring: 'R"' ( '\\' ["()] | ~[\r\n (])*? '(' ~[)]*? ')' ( '\\' ["()] | ~[\r\n "])*? '"'; + +UserDefinedIntegerLiteral: + DecimalLiteral Udsuffix + | OctalLiteral Udsuffix + | HexadecimalLiteral Udsuffix + | BinaryLiteral Udsuffix +; + +UserDefinedFloatingLiteral: + Fractionalconstant Exponentpart? Udsuffix + | Digitsequence Exponentpart Udsuffix +; + +UserDefinedStringLiteral: StringLiteral Udsuffix; + +UserDefinedCharacterLiteral: CharacterLiteral Udsuffix; + +fragment Udsuffix: Identifier; + +Whitespace: [ \t]+ -> skip; + +Newline: ('\r' '\n'? | '\n') -> skip; + +BlockComment: '/*' .*? '*/' -> skip; + +LineComment: '//' ~ [\r\n]* -> skip; \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.interp b/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.interp new file mode 100644 index 00000000..6cfde355 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.interp @@ -0,0 +1,478 @@ +token literal names: +null +null +null +null +null +null +null +null +null +null +'alignas' +'alignof' +'asm' +'auto' +'bool' +'break' +'case' +'catch' +'char' +'char16_t' +'char32_t' +'class' +'const' +'constexpr' +'const_cast' +'continue' +'decltype' +'default' +'delete' +'do' +'double' +'dynamic_cast' +'else' +'enum' +'explicit' +'export' +'extern' +'false' +'final' +'float' +'for' +'friend' +'goto' +'if' +'inline' +'int' +'long' +'mutable' +'namespace' +'new' +'noexcept' +'nullptr' +'operator' +'override' +'private' +'protected' +'public' +'register' +'reinterpret_cast' +'return' +'short' +'signed' +'sizeof' +'static' +'static_assert' +'static_cast' +'struct' +'switch' +'template' +'this' +'thread_local' +'throw' +'true' +'try' +'typedef' +'typeid' +'typename' +'union' +'unsigned' +'using' +'virtual' +'void' +'volatile' +'wchar_t' +'while' +'(' +')' +'[' +']' +'{' +'}' +'+' +'-' +'*' +'/' +'%' +'^' +'&' +'|' +'~' +null +'=' +'<' +'>' +'+=' +'-=' +'*=' +'/=' +'%=' +'^=' +'&=' +'|=' +'<<=' +'>>=' +'==' +'!=' +'<=' +'>=' +null +null +'++' +'--' +',' +'->*' +'->' +'?' +':' +'::' +';' +'.' +'.*' +'...' +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +IntegerLiteral +CharacterLiteral +FloatingLiteral +StringLiteral +BooleanLiteral +PointerLiteral +UserDefinedLiteral +MultiLineMacro +Directive +Alignas +Alignof +Asm +Auto +Bool +Break +Case +Catch +Char +Char16 +Char32 +Class +Const +Constexpr +Const_cast +Continue +Decltype +Default +Delete +Do +Double +Dynamic_cast +Else +Enum +Explicit +Export +Extern +False_ +Final +Float +For +Friend +Goto +If +Inline +Int +Long +Mutable +Namespace +New +Noexcept +Nullptr +Operator +Override +Private +Protected +Public +Register +Reinterpret_cast +Return +Short +Signed +Sizeof +Static +Static_assert +Static_cast +Struct +Switch +Template +This +Thread_local +Throw +True_ +Try +Typedef +Typeid_ +Typename_ +Union +Unsigned +Using +Virtual +Void +Volatile +Wchar +While +LeftParen +RightParen +LeftBracket +RightBracket +LeftBrace +RightBrace +Plus +Minus +Star +Div +Mod +Caret +And +Or +Tilde +Not +Assign +Less +Greater +PlusAssign +MinusAssign +StarAssign +DivAssign +ModAssign +XorAssign +AndAssign +OrAssign +LeftShiftAssign +RightShiftAssign +Equal +NotEqual +LessEqual +GreaterEqual +AndAnd +OrOr +PlusPlus +MinusMinus +Comma +ArrowStar +Arrow +Question +Colon +Doublecolon +Semi +Dot +DotStar +Ellipsis +Identifier +DecimalLiteral +OctalLiteral +HexadecimalLiteral +BinaryLiteral +Integersuffix +UserDefinedIntegerLiteral +UserDefinedFloatingLiteral +UserDefinedStringLiteral +UserDefinedCharacterLiteral +Whitespace +Newline +BlockComment +LineComment + +rule names: +IntegerLiteral +CharacterLiteral +FloatingLiteral +StringLiteral +BooleanLiteral +PointerLiteral +UserDefinedLiteral +MultiLineMacro +Directive +Alignas +Alignof +Asm +Auto +Bool +Break +Case +Catch +Char +Char16 +Char32 +Class +Const +Constexpr +Const_cast +Continue +Decltype +Default +Delete +Do +Double +Dynamic_cast +Else +Enum +Explicit +Export +Extern +False_ +Final +Float +For +Friend +Goto +If +Inline +Int +Long +Mutable +Namespace +New +Noexcept +Nullptr +Operator +Override +Private +Protected +Public +Register +Reinterpret_cast +Return +Short +Signed +Sizeof +Static +Static_assert +Static_cast +Struct +Switch +Template +This +Thread_local +Throw +True_ +Try +Typedef +Typeid_ +Typename_ +Union +Unsigned +Using +Virtual +Void +Volatile +Wchar +While +LeftParen +RightParen +LeftBracket +RightBracket +LeftBrace +RightBrace +Plus +Minus +Star +Div +Mod +Caret +And +Or +Tilde +Not +Assign +Less +Greater +PlusAssign +MinusAssign +StarAssign +DivAssign +ModAssign +XorAssign +AndAssign +OrAssign +LeftShiftAssign +RightShiftAssign +Equal +NotEqual +LessEqual +GreaterEqual +AndAnd +OrOr +PlusPlus +MinusMinus +Comma +ArrowStar +Arrow +Question +Colon +Doublecolon +Semi +Dot +DotStar +Ellipsis +Hexquad +Universalcharactername +Identifier +Identifiernondigit +NONDIGIT +DIGIT +DecimalLiteral +OctalLiteral +HexadecimalLiteral +BinaryLiteral +NONZERODIGIT +OCTALDIGIT +HEXADECIMALDIGIT +BINARYDIGIT +Integersuffix +Unsignedsuffix +Longsuffix +Longlongsuffix +Cchar +Escapesequence +Simpleescapesequence +Octalescapesequence +Hexadecimalescapesequence +Fractionalconstant +Exponentpart +SIGN +Digitsequence +Floatingsuffix +Encodingprefix +Schar +Rawstring +UserDefinedIntegerLiteral +UserDefinedFloatingLiteral +UserDefinedStringLiteral +UserDefinedCharacterLiteral +Udsuffix +Whitespace +Newline +BlockComment +LineComment + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 145, 1460, 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, 1, 0, 1, 0, 3, 0, 346, 8, 0, 1, 0, 1, 0, 3, 0, 350, 8, 0, 1, 0, 1, 0, 3, 0, 354, 8, 0, 1, 0, 1, 0, 3, 0, 358, 8, 0, 3, 0, 360, 8, 0, 1, 1, 3, 1, 363, 8, 1, 1, 1, 1, 1, 4, 1, 367, 8, 1, 11, 1, 12, 1, 368, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 375, 8, 2, 1, 2, 3, 2, 378, 8, 2, 1, 2, 1, 2, 1, 2, 3, 2, 383, 8, 2, 3, 2, 385, 8, 2, 1, 3, 3, 3, 388, 8, 3, 1, 3, 1, 3, 1, 3, 5, 3, 393, 8, 3, 10, 3, 12, 3, 396, 9, 3, 1, 3, 3, 3, 399, 8, 3, 1, 4, 1, 4, 3, 4, 403, 8, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 411, 8, 6, 1, 7, 1, 7, 5, 7, 415, 8, 7, 10, 7, 12, 7, 418, 9, 7, 1, 7, 1, 7, 3, 7, 422, 8, 7, 1, 7, 4, 7, 425, 8, 7, 11, 7, 12, 7, 426, 1, 7, 4, 7, 430, 8, 7, 11, 7, 12, 7, 431, 1, 7, 1, 7, 1, 8, 1, 8, 5, 8, 438, 8, 8, 10, 8, 12, 8, 441, 9, 8, 1, 8, 1, 8, 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, 10, 1, 11, 1, 11, 1, 11, 1, 11, 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, 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, 18, 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, 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, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 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, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 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, 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, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 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, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 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, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 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, 49, 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, 51, 1, 51, 1, 52, 1, 52, 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, 53, 1, 53, 1, 54, 1, 54, 1, 54, 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, 56, 1, 56, 1, 56, 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, 57, 1, 57, 1, 57, 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, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 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, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 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, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1029, 8, 99, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 1086, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 1092, 8, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1142, 8, 132, 1, 133, 1, 133, 1, 133, 5, 133, 1147, 8, 133, 10, 133, 12, 133, 1150, 9, 133, 1, 134, 1, 134, 3, 134, 1154, 8, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 3, 137, 1162, 8, 137, 1, 137, 5, 137, 1165, 8, 137, 10, 137, 12, 137, 1168, 9, 137, 1, 138, 1, 138, 3, 138, 1172, 8, 138, 1, 138, 5, 138, 1175, 8, 138, 10, 138, 12, 138, 1178, 9, 138, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 1184, 8, 139, 1, 139, 1, 139, 3, 139, 1188, 8, 139, 1, 139, 5, 139, 1191, 8, 139, 10, 139, 12, 139, 1194, 9, 139, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 1200, 8, 140, 1, 140, 1, 140, 3, 140, 1204, 8, 140, 1, 140, 5, 140, 1207, 8, 140, 10, 140, 12, 140, 1210, 9, 140, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 145, 1, 145, 3, 145, 1222, 8, 145, 1, 145, 1, 145, 3, 145, 1226, 8, 145, 1, 145, 1, 145, 3, 145, 1230, 8, 145, 1, 145, 1, 145, 3, 145, 1234, 8, 145, 3, 145, 1236, 8, 145, 1, 146, 1, 146, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 1246, 8, 148, 1, 149, 1, 149, 1, 149, 3, 149, 1251, 8, 149, 1, 150, 1, 150, 1, 150, 3, 150, 1256, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 1279, 8, 151, 1, 151, 3, 151, 1282, 8, 151, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 1288, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 1301, 8, 152, 1, 153, 1, 153, 1, 153, 1, 153, 4, 153, 1307, 8, 153, 11, 153, 12, 153, 1308, 1, 154, 3, 154, 1312, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 1319, 8, 154, 1, 155, 1, 155, 3, 155, 1323, 8, 155, 1, 155, 1, 155, 1, 155, 3, 155, 1328, 8, 155, 1, 155, 3, 155, 1331, 8, 155, 1, 156, 1, 156, 1, 157, 1, 157, 3, 157, 1337, 8, 157, 1, 157, 5, 157, 1340, 8, 157, 10, 157, 12, 157, 1343, 9, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 3, 159, 1350, 8, 159, 1, 160, 1, 160, 1, 160, 3, 160, 1355, 8, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 5, 161, 1363, 8, 161, 10, 161, 12, 161, 1366, 9, 161, 1, 161, 1, 161, 5, 161, 1370, 8, 161, 10, 161, 12, 161, 1373, 9, 161, 1, 161, 1, 161, 1, 161, 1, 161, 5, 161, 1379, 8, 161, 10, 161, 12, 161, 1382, 9, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 1398, 8, 162, 1, 163, 1, 163, 3, 163, 1402, 8, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 1410, 8, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 4, 167, 1421, 8, 167, 11, 167, 12, 167, 1422, 1, 167, 1, 167, 1, 168, 1, 168, 3, 168, 1429, 8, 168, 1, 168, 3, 168, 1432, 8, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 5, 169, 1440, 8, 169, 10, 169, 12, 169, 1443, 9, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 5, 170, 1454, 8, 170, 10, 170, 12, 170, 1457, 9, 170, 1, 170, 1, 170, 5, 416, 1364, 1371, 1380, 1441, 0, 171, 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, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 0, 265, 0, 267, 132, 269, 0, 271, 0, 273, 0, 275, 133, 277, 134, 279, 135, 281, 136, 283, 0, 285, 0, 287, 0, 289, 0, 291, 137, 293, 0, 295, 0, 297, 0, 299, 0, 301, 0, 303, 0, 305, 0, 307, 0, 309, 0, 311, 0, 313, 0, 315, 0, 317, 0, 319, 0, 321, 0, 323, 0, 325, 138, 327, 139, 329, 140, 331, 141, 333, 0, 335, 142, 337, 143, 339, 144, 341, 145, 1, 0, 20, 3, 0, 76, 76, 85, 85, 117, 117, 1, 0, 10, 10, 3, 0, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 1, 0, 49, 57, 1, 0, 48, 55, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 49, 2, 0, 85, 85, 117, 117, 2, 0, 76, 76, 108, 108, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 2, 0, 43, 43, 45, 45, 4, 0, 70, 70, 76, 76, 102, 102, 108, 108, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 34, 34, 40, 41, 4, 0, 10, 10, 13, 13, 32, 32, 40, 40, 1, 0, 41, 41, 4, 0, 10, 10, 13, 13, 32, 32, 34, 34, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 1528, 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, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 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, 267, 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, 291, 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, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 1, 359, 1, 0, 0, 0, 3, 362, 1, 0, 0, 0, 5, 384, 1, 0, 0, 0, 7, 387, 1, 0, 0, 0, 9, 402, 1, 0, 0, 0, 11, 404, 1, 0, 0, 0, 13, 410, 1, 0, 0, 0, 15, 412, 1, 0, 0, 0, 17, 435, 1, 0, 0, 0, 19, 444, 1, 0, 0, 0, 21, 452, 1, 0, 0, 0, 23, 460, 1, 0, 0, 0, 25, 464, 1, 0, 0, 0, 27, 469, 1, 0, 0, 0, 29, 474, 1, 0, 0, 0, 31, 480, 1, 0, 0, 0, 33, 485, 1, 0, 0, 0, 35, 491, 1, 0, 0, 0, 37, 496, 1, 0, 0, 0, 39, 505, 1, 0, 0, 0, 41, 514, 1, 0, 0, 0, 43, 520, 1, 0, 0, 0, 45, 526, 1, 0, 0, 0, 47, 536, 1, 0, 0, 0, 49, 547, 1, 0, 0, 0, 51, 556, 1, 0, 0, 0, 53, 565, 1, 0, 0, 0, 55, 573, 1, 0, 0, 0, 57, 580, 1, 0, 0, 0, 59, 583, 1, 0, 0, 0, 61, 590, 1, 0, 0, 0, 63, 603, 1, 0, 0, 0, 65, 608, 1, 0, 0, 0, 67, 613, 1, 0, 0, 0, 69, 622, 1, 0, 0, 0, 71, 629, 1, 0, 0, 0, 73, 636, 1, 0, 0, 0, 75, 642, 1, 0, 0, 0, 77, 648, 1, 0, 0, 0, 79, 654, 1, 0, 0, 0, 81, 658, 1, 0, 0, 0, 83, 665, 1, 0, 0, 0, 85, 670, 1, 0, 0, 0, 87, 673, 1, 0, 0, 0, 89, 680, 1, 0, 0, 0, 91, 684, 1, 0, 0, 0, 93, 689, 1, 0, 0, 0, 95, 697, 1, 0, 0, 0, 97, 707, 1, 0, 0, 0, 99, 711, 1, 0, 0, 0, 101, 720, 1, 0, 0, 0, 103, 728, 1, 0, 0, 0, 105, 737, 1, 0, 0, 0, 107, 746, 1, 0, 0, 0, 109, 754, 1, 0, 0, 0, 111, 764, 1, 0, 0, 0, 113, 771, 1, 0, 0, 0, 115, 780, 1, 0, 0, 0, 117, 797, 1, 0, 0, 0, 119, 804, 1, 0, 0, 0, 121, 810, 1, 0, 0, 0, 123, 817, 1, 0, 0, 0, 125, 824, 1, 0, 0, 0, 127, 831, 1, 0, 0, 0, 129, 845, 1, 0, 0, 0, 131, 857, 1, 0, 0, 0, 133, 864, 1, 0, 0, 0, 135, 871, 1, 0, 0, 0, 137, 880, 1, 0, 0, 0, 139, 885, 1, 0, 0, 0, 141, 898, 1, 0, 0, 0, 143, 904, 1, 0, 0, 0, 145, 909, 1, 0, 0, 0, 147, 913, 1, 0, 0, 0, 149, 921, 1, 0, 0, 0, 151, 928, 1, 0, 0, 0, 153, 937, 1, 0, 0, 0, 155, 943, 1, 0, 0, 0, 157, 952, 1, 0, 0, 0, 159, 958, 1, 0, 0, 0, 161, 966, 1, 0, 0, 0, 163, 971, 1, 0, 0, 0, 165, 980, 1, 0, 0, 0, 167, 988, 1, 0, 0, 0, 169, 994, 1, 0, 0, 0, 171, 996, 1, 0, 0, 0, 173, 998, 1, 0, 0, 0, 175, 1000, 1, 0, 0, 0, 177, 1002, 1, 0, 0, 0, 179, 1004, 1, 0, 0, 0, 181, 1006, 1, 0, 0, 0, 183, 1008, 1, 0, 0, 0, 185, 1010, 1, 0, 0, 0, 187, 1012, 1, 0, 0, 0, 189, 1014, 1, 0, 0, 0, 191, 1016, 1, 0, 0, 0, 193, 1018, 1, 0, 0, 0, 195, 1020, 1, 0, 0, 0, 197, 1022, 1, 0, 0, 0, 199, 1028, 1, 0, 0, 0, 201, 1030, 1, 0, 0, 0, 203, 1032, 1, 0, 0, 0, 205, 1034, 1, 0, 0, 0, 207, 1036, 1, 0, 0, 0, 209, 1039, 1, 0, 0, 0, 211, 1042, 1, 0, 0, 0, 213, 1045, 1, 0, 0, 0, 215, 1048, 1, 0, 0, 0, 217, 1051, 1, 0, 0, 0, 219, 1054, 1, 0, 0, 0, 221, 1057, 1, 0, 0, 0, 223, 1060, 1, 0, 0, 0, 225, 1064, 1, 0, 0, 0, 227, 1068, 1, 0, 0, 0, 229, 1071, 1, 0, 0, 0, 231, 1074, 1, 0, 0, 0, 233, 1077, 1, 0, 0, 0, 235, 1085, 1, 0, 0, 0, 237, 1091, 1, 0, 0, 0, 239, 1093, 1, 0, 0, 0, 241, 1096, 1, 0, 0, 0, 243, 1099, 1, 0, 0, 0, 245, 1101, 1, 0, 0, 0, 247, 1105, 1, 0, 0, 0, 249, 1108, 1, 0, 0, 0, 251, 1110, 1, 0, 0, 0, 253, 1112, 1, 0, 0, 0, 255, 1115, 1, 0, 0, 0, 257, 1117, 1, 0, 0, 0, 259, 1119, 1, 0, 0, 0, 261, 1122, 1, 0, 0, 0, 263, 1126, 1, 0, 0, 0, 265, 1141, 1, 0, 0, 0, 267, 1143, 1, 0, 0, 0, 269, 1153, 1, 0, 0, 0, 271, 1155, 1, 0, 0, 0, 273, 1157, 1, 0, 0, 0, 275, 1159, 1, 0, 0, 0, 277, 1169, 1, 0, 0, 0, 279, 1183, 1, 0, 0, 0, 281, 1199, 1, 0, 0, 0, 283, 1211, 1, 0, 0, 0, 285, 1213, 1, 0, 0, 0, 287, 1215, 1, 0, 0, 0, 289, 1217, 1, 0, 0, 0, 291, 1235, 1, 0, 0, 0, 293, 1237, 1, 0, 0, 0, 295, 1239, 1, 0, 0, 0, 297, 1245, 1, 0, 0, 0, 299, 1250, 1, 0, 0, 0, 301, 1255, 1, 0, 0, 0, 303, 1287, 1, 0, 0, 0, 305, 1300, 1, 0, 0, 0, 307, 1302, 1, 0, 0, 0, 309, 1318, 1, 0, 0, 0, 311, 1330, 1, 0, 0, 0, 313, 1332, 1, 0, 0, 0, 315, 1334, 1, 0, 0, 0, 317, 1344, 1, 0, 0, 0, 319, 1349, 1, 0, 0, 0, 321, 1354, 1, 0, 0, 0, 323, 1356, 1, 0, 0, 0, 325, 1397, 1, 0, 0, 0, 327, 1409, 1, 0, 0, 0, 329, 1411, 1, 0, 0, 0, 331, 1414, 1, 0, 0, 0, 333, 1417, 1, 0, 0, 0, 335, 1420, 1, 0, 0, 0, 337, 1431, 1, 0, 0, 0, 339, 1435, 1, 0, 0, 0, 341, 1449, 1, 0, 0, 0, 343, 345, 3, 275, 137, 0, 344, 346, 3, 291, 145, 0, 345, 344, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 360, 1, 0, 0, 0, 347, 349, 3, 277, 138, 0, 348, 350, 3, 291, 145, 0, 349, 348, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 360, 1, 0, 0, 0, 351, 353, 3, 279, 139, 0, 352, 354, 3, 291, 145, 0, 353, 352, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 360, 1, 0, 0, 0, 355, 357, 3, 281, 140, 0, 356, 358, 3, 291, 145, 0, 357, 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 360, 1, 0, 0, 0, 359, 343, 1, 0, 0, 0, 359, 347, 1, 0, 0, 0, 359, 351, 1, 0, 0, 0, 359, 355, 1, 0, 0, 0, 360, 2, 1, 0, 0, 0, 361, 363, 7, 0, 0, 0, 362, 361, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 5, 39, 0, 0, 365, 367, 3, 299, 149, 0, 366, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 371, 5, 39, 0, 0, 371, 4, 1, 0, 0, 0, 372, 374, 3, 309, 154, 0, 373, 375, 3, 311, 155, 0, 374, 373, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 378, 3, 317, 158, 0, 377, 376, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 385, 1, 0, 0, 0, 379, 380, 3, 315, 157, 0, 380, 382, 3, 311, 155, 0, 381, 383, 3, 317, 158, 0, 382, 381, 1, 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 385, 1, 0, 0, 0, 384, 372, 1, 0, 0, 0, 384, 379, 1, 0, 0, 0, 385, 6, 1, 0, 0, 0, 386, 388, 3, 319, 159, 0, 387, 386, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 398, 1, 0, 0, 0, 389, 399, 3, 323, 161, 0, 390, 394, 5, 34, 0, 0, 391, 393, 3, 321, 160, 0, 392, 391, 1, 0, 0, 0, 393, 396, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 397, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 397, 399, 5, 34, 0, 0, 398, 389, 1, 0, 0, 0, 398, 390, 1, 0, 0, 0, 399, 8, 1, 0, 0, 0, 400, 403, 3, 73, 36, 0, 401, 403, 3, 143, 71, 0, 402, 400, 1, 0, 0, 0, 402, 401, 1, 0, 0, 0, 403, 10, 1, 0, 0, 0, 404, 405, 3, 101, 50, 0, 405, 12, 1, 0, 0, 0, 406, 411, 3, 325, 162, 0, 407, 411, 3, 327, 163, 0, 408, 411, 3, 329, 164, 0, 409, 411, 3, 331, 165, 0, 410, 406, 1, 0, 0, 0, 410, 407, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 409, 1, 0, 0, 0, 411, 14, 1, 0, 0, 0, 412, 424, 5, 35, 0, 0, 413, 415, 8, 1, 0, 0, 414, 413, 1, 0, 0, 0, 415, 418, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 419, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 419, 421, 5, 92, 0, 0, 420, 422, 5, 13, 0, 0, 421, 420, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 425, 5, 10, 0, 0, 424, 416, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 429, 1, 0, 0, 0, 428, 430, 8, 1, 0, 0, 429, 428, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 6, 7, 0, 0, 434, 16, 1, 0, 0, 0, 435, 439, 5, 35, 0, 0, 436, 438, 8, 1, 0, 0, 437, 436, 1, 0, 0, 0, 438, 441, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 442, 1, 0, 0, 0, 441, 439, 1, 0, 0, 0, 442, 443, 6, 8, 0, 0, 443, 18, 1, 0, 0, 0, 444, 445, 5, 97, 0, 0, 445, 446, 5, 108, 0, 0, 446, 447, 5, 105, 0, 0, 447, 448, 5, 103, 0, 0, 448, 449, 5, 110, 0, 0, 449, 450, 5, 97, 0, 0, 450, 451, 5, 115, 0, 0, 451, 20, 1, 0, 0, 0, 452, 453, 5, 97, 0, 0, 453, 454, 5, 108, 0, 0, 454, 455, 5, 105, 0, 0, 455, 456, 5, 103, 0, 0, 456, 457, 5, 110, 0, 0, 457, 458, 5, 111, 0, 0, 458, 459, 5, 102, 0, 0, 459, 22, 1, 0, 0, 0, 460, 461, 5, 97, 0, 0, 461, 462, 5, 115, 0, 0, 462, 463, 5, 109, 0, 0, 463, 24, 1, 0, 0, 0, 464, 465, 5, 97, 0, 0, 465, 466, 5, 117, 0, 0, 466, 467, 5, 116, 0, 0, 467, 468, 5, 111, 0, 0, 468, 26, 1, 0, 0, 0, 469, 470, 5, 98, 0, 0, 470, 471, 5, 111, 0, 0, 471, 472, 5, 111, 0, 0, 472, 473, 5, 108, 0, 0, 473, 28, 1, 0, 0, 0, 474, 475, 5, 98, 0, 0, 475, 476, 5, 114, 0, 0, 476, 477, 5, 101, 0, 0, 477, 478, 5, 97, 0, 0, 478, 479, 5, 107, 0, 0, 479, 30, 1, 0, 0, 0, 480, 481, 5, 99, 0, 0, 481, 482, 5, 97, 0, 0, 482, 483, 5, 115, 0, 0, 483, 484, 5, 101, 0, 0, 484, 32, 1, 0, 0, 0, 485, 486, 5, 99, 0, 0, 486, 487, 5, 97, 0, 0, 487, 488, 5, 116, 0, 0, 488, 489, 5, 99, 0, 0, 489, 490, 5, 104, 0, 0, 490, 34, 1, 0, 0, 0, 491, 492, 5, 99, 0, 0, 492, 493, 5, 104, 0, 0, 493, 494, 5, 97, 0, 0, 494, 495, 5, 114, 0, 0, 495, 36, 1, 0, 0, 0, 496, 497, 5, 99, 0, 0, 497, 498, 5, 104, 0, 0, 498, 499, 5, 97, 0, 0, 499, 500, 5, 114, 0, 0, 500, 501, 5, 49, 0, 0, 501, 502, 5, 54, 0, 0, 502, 503, 5, 95, 0, 0, 503, 504, 5, 116, 0, 0, 504, 38, 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, 510, 5, 51, 0, 0, 510, 511, 5, 50, 0, 0, 511, 512, 5, 95, 0, 0, 512, 513, 5, 116, 0, 0, 513, 40, 1, 0, 0, 0, 514, 515, 5, 99, 0, 0, 515, 516, 5, 108, 0, 0, 516, 517, 5, 97, 0, 0, 517, 518, 5, 115, 0, 0, 518, 519, 5, 115, 0, 0, 519, 42, 1, 0, 0, 0, 520, 521, 5, 99, 0, 0, 521, 522, 5, 111, 0, 0, 522, 523, 5, 110, 0, 0, 523, 524, 5, 115, 0, 0, 524, 525, 5, 116, 0, 0, 525, 44, 1, 0, 0, 0, 526, 527, 5, 99, 0, 0, 527, 528, 5, 111, 0, 0, 528, 529, 5, 110, 0, 0, 529, 530, 5, 115, 0, 0, 530, 531, 5, 116, 0, 0, 531, 532, 5, 101, 0, 0, 532, 533, 5, 120, 0, 0, 533, 534, 5, 112, 0, 0, 534, 535, 5, 114, 0, 0, 535, 46, 1, 0, 0, 0, 536, 537, 5, 99, 0, 0, 537, 538, 5, 111, 0, 0, 538, 539, 5, 110, 0, 0, 539, 540, 5, 115, 0, 0, 540, 541, 5, 116, 0, 0, 541, 542, 5, 95, 0, 0, 542, 543, 5, 99, 0, 0, 543, 544, 5, 97, 0, 0, 544, 545, 5, 115, 0, 0, 545, 546, 5, 116, 0, 0, 546, 48, 1, 0, 0, 0, 547, 548, 5, 99, 0, 0, 548, 549, 5, 111, 0, 0, 549, 550, 5, 110, 0, 0, 550, 551, 5, 116, 0, 0, 551, 552, 5, 105, 0, 0, 552, 553, 5, 110, 0, 0, 553, 554, 5, 117, 0, 0, 554, 555, 5, 101, 0, 0, 555, 50, 1, 0, 0, 0, 556, 557, 5, 100, 0, 0, 557, 558, 5, 101, 0, 0, 558, 559, 5, 99, 0, 0, 559, 560, 5, 108, 0, 0, 560, 561, 5, 116, 0, 0, 561, 562, 5, 121, 0, 0, 562, 563, 5, 112, 0, 0, 563, 564, 5, 101, 0, 0, 564, 52, 1, 0, 0, 0, 565, 566, 5, 100, 0, 0, 566, 567, 5, 101, 0, 0, 567, 568, 5, 102, 0, 0, 568, 569, 5, 97, 0, 0, 569, 570, 5, 117, 0, 0, 570, 571, 5, 108, 0, 0, 571, 572, 5, 116, 0, 0, 572, 54, 1, 0, 0, 0, 573, 574, 5, 100, 0, 0, 574, 575, 5, 101, 0, 0, 575, 576, 5, 108, 0, 0, 576, 577, 5, 101, 0, 0, 577, 578, 5, 116, 0, 0, 578, 579, 5, 101, 0, 0, 579, 56, 1, 0, 0, 0, 580, 581, 5, 100, 0, 0, 581, 582, 5, 111, 0, 0, 582, 58, 1, 0, 0, 0, 583, 584, 5, 100, 0, 0, 584, 585, 5, 111, 0, 0, 585, 586, 5, 117, 0, 0, 586, 587, 5, 98, 0, 0, 587, 588, 5, 108, 0, 0, 588, 589, 5, 101, 0, 0, 589, 60, 1, 0, 0, 0, 590, 591, 5, 100, 0, 0, 591, 592, 5, 121, 0, 0, 592, 593, 5, 110, 0, 0, 593, 594, 5, 97, 0, 0, 594, 595, 5, 109, 0, 0, 595, 596, 5, 105, 0, 0, 596, 597, 5, 99, 0, 0, 597, 598, 5, 95, 0, 0, 598, 599, 5, 99, 0, 0, 599, 600, 5, 97, 0, 0, 600, 601, 5, 115, 0, 0, 601, 602, 5, 116, 0, 0, 602, 62, 1, 0, 0, 0, 603, 604, 5, 101, 0, 0, 604, 605, 5, 108, 0, 0, 605, 606, 5, 115, 0, 0, 606, 607, 5, 101, 0, 0, 607, 64, 1, 0, 0, 0, 608, 609, 5, 101, 0, 0, 609, 610, 5, 110, 0, 0, 610, 611, 5, 117, 0, 0, 611, 612, 5, 109, 0, 0, 612, 66, 1, 0, 0, 0, 613, 614, 5, 101, 0, 0, 614, 615, 5, 120, 0, 0, 615, 616, 5, 112, 0, 0, 616, 617, 5, 108, 0, 0, 617, 618, 5, 105, 0, 0, 618, 619, 5, 99, 0, 0, 619, 620, 5, 105, 0, 0, 620, 621, 5, 116, 0, 0, 621, 68, 1, 0, 0, 0, 622, 623, 5, 101, 0, 0, 623, 624, 5, 120, 0, 0, 624, 625, 5, 112, 0, 0, 625, 626, 5, 111, 0, 0, 626, 627, 5, 114, 0, 0, 627, 628, 5, 116, 0, 0, 628, 70, 1, 0, 0, 0, 629, 630, 5, 101, 0, 0, 630, 631, 5, 120, 0, 0, 631, 632, 5, 116, 0, 0, 632, 633, 5, 101, 0, 0, 633, 634, 5, 114, 0, 0, 634, 635, 5, 110, 0, 0, 635, 72, 1, 0, 0, 0, 636, 637, 5, 102, 0, 0, 637, 638, 5, 97, 0, 0, 638, 639, 5, 108, 0, 0, 639, 640, 5, 115, 0, 0, 640, 641, 5, 101, 0, 0, 641, 74, 1, 0, 0, 0, 642, 643, 5, 102, 0, 0, 643, 644, 5, 105, 0, 0, 644, 645, 5, 110, 0, 0, 645, 646, 5, 97, 0, 0, 646, 647, 5, 108, 0, 0, 647, 76, 1, 0, 0, 0, 648, 649, 5, 102, 0, 0, 649, 650, 5, 108, 0, 0, 650, 651, 5, 111, 0, 0, 651, 652, 5, 97, 0, 0, 652, 653, 5, 116, 0, 0, 653, 78, 1, 0, 0, 0, 654, 655, 5, 102, 0, 0, 655, 656, 5, 111, 0, 0, 656, 657, 5, 114, 0, 0, 657, 80, 1, 0, 0, 0, 658, 659, 5, 102, 0, 0, 659, 660, 5, 114, 0, 0, 660, 661, 5, 105, 0, 0, 661, 662, 5, 101, 0, 0, 662, 663, 5, 110, 0, 0, 663, 664, 5, 100, 0, 0, 664, 82, 1, 0, 0, 0, 665, 666, 5, 103, 0, 0, 666, 667, 5, 111, 0, 0, 667, 668, 5, 116, 0, 0, 668, 669, 5, 111, 0, 0, 669, 84, 1, 0, 0, 0, 670, 671, 5, 105, 0, 0, 671, 672, 5, 102, 0, 0, 672, 86, 1, 0, 0, 0, 673, 674, 5, 105, 0, 0, 674, 675, 5, 110, 0, 0, 675, 676, 5, 108, 0, 0, 676, 677, 5, 105, 0, 0, 677, 678, 5, 110, 0, 0, 678, 679, 5, 101, 0, 0, 679, 88, 1, 0, 0, 0, 680, 681, 5, 105, 0, 0, 681, 682, 5, 110, 0, 0, 682, 683, 5, 116, 0, 0, 683, 90, 1, 0, 0, 0, 684, 685, 5, 108, 0, 0, 685, 686, 5, 111, 0, 0, 686, 687, 5, 110, 0, 0, 687, 688, 5, 103, 0, 0, 688, 92, 1, 0, 0, 0, 689, 690, 5, 109, 0, 0, 690, 691, 5, 117, 0, 0, 691, 692, 5, 116, 0, 0, 692, 693, 5, 97, 0, 0, 693, 694, 5, 98, 0, 0, 694, 695, 5, 108, 0, 0, 695, 696, 5, 101, 0, 0, 696, 94, 1, 0, 0, 0, 697, 698, 5, 110, 0, 0, 698, 699, 5, 97, 0, 0, 699, 700, 5, 109, 0, 0, 700, 701, 5, 101, 0, 0, 701, 702, 5, 115, 0, 0, 702, 703, 5, 112, 0, 0, 703, 704, 5, 97, 0, 0, 704, 705, 5, 99, 0, 0, 705, 706, 5, 101, 0, 0, 706, 96, 1, 0, 0, 0, 707, 708, 5, 110, 0, 0, 708, 709, 5, 101, 0, 0, 709, 710, 5, 119, 0, 0, 710, 98, 1, 0, 0, 0, 711, 712, 5, 110, 0, 0, 712, 713, 5, 111, 0, 0, 713, 714, 5, 101, 0, 0, 714, 715, 5, 120, 0, 0, 715, 716, 5, 99, 0, 0, 716, 717, 5, 101, 0, 0, 717, 718, 5, 112, 0, 0, 718, 719, 5, 116, 0, 0, 719, 100, 1, 0, 0, 0, 720, 721, 5, 110, 0, 0, 721, 722, 5, 117, 0, 0, 722, 723, 5, 108, 0, 0, 723, 724, 5, 108, 0, 0, 724, 725, 5, 112, 0, 0, 725, 726, 5, 116, 0, 0, 726, 727, 5, 114, 0, 0, 727, 102, 1, 0, 0, 0, 728, 729, 5, 111, 0, 0, 729, 730, 5, 112, 0, 0, 730, 731, 5, 101, 0, 0, 731, 732, 5, 114, 0, 0, 732, 733, 5, 97, 0, 0, 733, 734, 5, 116, 0, 0, 734, 735, 5, 111, 0, 0, 735, 736, 5, 114, 0, 0, 736, 104, 1, 0, 0, 0, 737, 738, 5, 111, 0, 0, 738, 739, 5, 118, 0, 0, 739, 740, 5, 101, 0, 0, 740, 741, 5, 114, 0, 0, 741, 742, 5, 114, 0, 0, 742, 743, 5, 105, 0, 0, 743, 744, 5, 100, 0, 0, 744, 745, 5, 101, 0, 0, 745, 106, 1, 0, 0, 0, 746, 747, 5, 112, 0, 0, 747, 748, 5, 114, 0, 0, 748, 749, 5, 105, 0, 0, 749, 750, 5, 118, 0, 0, 750, 751, 5, 97, 0, 0, 751, 752, 5, 116, 0, 0, 752, 753, 5, 101, 0, 0, 753, 108, 1, 0, 0, 0, 754, 755, 5, 112, 0, 0, 755, 756, 5, 114, 0, 0, 756, 757, 5, 111, 0, 0, 757, 758, 5, 116, 0, 0, 758, 759, 5, 101, 0, 0, 759, 760, 5, 99, 0, 0, 760, 761, 5, 116, 0, 0, 761, 762, 5, 101, 0, 0, 762, 763, 5, 100, 0, 0, 763, 110, 1, 0, 0, 0, 764, 765, 5, 112, 0, 0, 765, 766, 5, 117, 0, 0, 766, 767, 5, 98, 0, 0, 767, 768, 5, 108, 0, 0, 768, 769, 5, 105, 0, 0, 769, 770, 5, 99, 0, 0, 770, 112, 1, 0, 0, 0, 771, 772, 5, 114, 0, 0, 772, 773, 5, 101, 0, 0, 773, 774, 5, 103, 0, 0, 774, 775, 5, 105, 0, 0, 775, 776, 5, 115, 0, 0, 776, 777, 5, 116, 0, 0, 777, 778, 5, 101, 0, 0, 778, 779, 5, 114, 0, 0, 779, 114, 1, 0, 0, 0, 780, 781, 5, 114, 0, 0, 781, 782, 5, 101, 0, 0, 782, 783, 5, 105, 0, 0, 783, 784, 5, 110, 0, 0, 784, 785, 5, 116, 0, 0, 785, 786, 5, 101, 0, 0, 786, 787, 5, 114, 0, 0, 787, 788, 5, 112, 0, 0, 788, 789, 5, 114, 0, 0, 789, 790, 5, 101, 0, 0, 790, 791, 5, 116, 0, 0, 791, 792, 5, 95, 0, 0, 792, 793, 5, 99, 0, 0, 793, 794, 5, 97, 0, 0, 794, 795, 5, 115, 0, 0, 795, 796, 5, 116, 0, 0, 796, 116, 1, 0, 0, 0, 797, 798, 5, 114, 0, 0, 798, 799, 5, 101, 0, 0, 799, 800, 5, 116, 0, 0, 800, 801, 5, 117, 0, 0, 801, 802, 5, 114, 0, 0, 802, 803, 5, 110, 0, 0, 803, 118, 1, 0, 0, 0, 804, 805, 5, 115, 0, 0, 805, 806, 5, 104, 0, 0, 806, 807, 5, 111, 0, 0, 807, 808, 5, 114, 0, 0, 808, 809, 5, 116, 0, 0, 809, 120, 1, 0, 0, 0, 810, 811, 5, 115, 0, 0, 811, 812, 5, 105, 0, 0, 812, 813, 5, 103, 0, 0, 813, 814, 5, 110, 0, 0, 814, 815, 5, 101, 0, 0, 815, 816, 5, 100, 0, 0, 816, 122, 1, 0, 0, 0, 817, 818, 5, 115, 0, 0, 818, 819, 5, 105, 0, 0, 819, 820, 5, 122, 0, 0, 820, 821, 5, 101, 0, 0, 821, 822, 5, 111, 0, 0, 822, 823, 5, 102, 0, 0, 823, 124, 1, 0, 0, 0, 824, 825, 5, 115, 0, 0, 825, 826, 5, 116, 0, 0, 826, 827, 5, 97, 0, 0, 827, 828, 5, 116, 0, 0, 828, 829, 5, 105, 0, 0, 829, 830, 5, 99, 0, 0, 830, 126, 1, 0, 0, 0, 831, 832, 5, 115, 0, 0, 832, 833, 5, 116, 0, 0, 833, 834, 5, 97, 0, 0, 834, 835, 5, 116, 0, 0, 835, 836, 5, 105, 0, 0, 836, 837, 5, 99, 0, 0, 837, 838, 5, 95, 0, 0, 838, 839, 5, 97, 0, 0, 839, 840, 5, 115, 0, 0, 840, 841, 5, 115, 0, 0, 841, 842, 5, 101, 0, 0, 842, 843, 5, 114, 0, 0, 843, 844, 5, 116, 0, 0, 844, 128, 1, 0, 0, 0, 845, 846, 5, 115, 0, 0, 846, 847, 5, 116, 0, 0, 847, 848, 5, 97, 0, 0, 848, 849, 5, 116, 0, 0, 849, 850, 5, 105, 0, 0, 850, 851, 5, 99, 0, 0, 851, 852, 5, 95, 0, 0, 852, 853, 5, 99, 0, 0, 853, 854, 5, 97, 0, 0, 854, 855, 5, 115, 0, 0, 855, 856, 5, 116, 0, 0, 856, 130, 1, 0, 0, 0, 857, 858, 5, 115, 0, 0, 858, 859, 5, 116, 0, 0, 859, 860, 5, 114, 0, 0, 860, 861, 5, 117, 0, 0, 861, 862, 5, 99, 0, 0, 862, 863, 5, 116, 0, 0, 863, 132, 1, 0, 0, 0, 864, 865, 5, 115, 0, 0, 865, 866, 5, 119, 0, 0, 866, 867, 5, 105, 0, 0, 867, 868, 5, 116, 0, 0, 868, 869, 5, 99, 0, 0, 869, 870, 5, 104, 0, 0, 870, 134, 1, 0, 0, 0, 871, 872, 5, 116, 0, 0, 872, 873, 5, 101, 0, 0, 873, 874, 5, 109, 0, 0, 874, 875, 5, 112, 0, 0, 875, 876, 5, 108, 0, 0, 876, 877, 5, 97, 0, 0, 877, 878, 5, 116, 0, 0, 878, 879, 5, 101, 0, 0, 879, 136, 1, 0, 0, 0, 880, 881, 5, 116, 0, 0, 881, 882, 5, 104, 0, 0, 882, 883, 5, 105, 0, 0, 883, 884, 5, 115, 0, 0, 884, 138, 1, 0, 0, 0, 885, 886, 5, 116, 0, 0, 886, 887, 5, 104, 0, 0, 887, 888, 5, 114, 0, 0, 888, 889, 5, 101, 0, 0, 889, 890, 5, 97, 0, 0, 890, 891, 5, 100, 0, 0, 891, 892, 5, 95, 0, 0, 892, 893, 5, 108, 0, 0, 893, 894, 5, 111, 0, 0, 894, 895, 5, 99, 0, 0, 895, 896, 5, 97, 0, 0, 896, 897, 5, 108, 0, 0, 897, 140, 1, 0, 0, 0, 898, 899, 5, 116, 0, 0, 899, 900, 5, 104, 0, 0, 900, 901, 5, 114, 0, 0, 901, 902, 5, 111, 0, 0, 902, 903, 5, 119, 0, 0, 903, 142, 1, 0, 0, 0, 904, 905, 5, 116, 0, 0, 905, 906, 5, 114, 0, 0, 906, 907, 5, 117, 0, 0, 907, 908, 5, 101, 0, 0, 908, 144, 1, 0, 0, 0, 909, 910, 5, 116, 0, 0, 910, 911, 5, 114, 0, 0, 911, 912, 5, 121, 0, 0, 912, 146, 1, 0, 0, 0, 913, 914, 5, 116, 0, 0, 914, 915, 5, 121, 0, 0, 915, 916, 5, 112, 0, 0, 916, 917, 5, 101, 0, 0, 917, 918, 5, 100, 0, 0, 918, 919, 5, 101, 0, 0, 919, 920, 5, 102, 0, 0, 920, 148, 1, 0, 0, 0, 921, 922, 5, 116, 0, 0, 922, 923, 5, 121, 0, 0, 923, 924, 5, 112, 0, 0, 924, 925, 5, 101, 0, 0, 925, 926, 5, 105, 0, 0, 926, 927, 5, 100, 0, 0, 927, 150, 1, 0, 0, 0, 928, 929, 5, 116, 0, 0, 929, 930, 5, 121, 0, 0, 930, 931, 5, 112, 0, 0, 931, 932, 5, 101, 0, 0, 932, 933, 5, 110, 0, 0, 933, 934, 5, 97, 0, 0, 934, 935, 5, 109, 0, 0, 935, 936, 5, 101, 0, 0, 936, 152, 1, 0, 0, 0, 937, 938, 5, 117, 0, 0, 938, 939, 5, 110, 0, 0, 939, 940, 5, 105, 0, 0, 940, 941, 5, 111, 0, 0, 941, 942, 5, 110, 0, 0, 942, 154, 1, 0, 0, 0, 943, 944, 5, 117, 0, 0, 944, 945, 5, 110, 0, 0, 945, 946, 5, 115, 0, 0, 946, 947, 5, 105, 0, 0, 947, 948, 5, 103, 0, 0, 948, 949, 5, 110, 0, 0, 949, 950, 5, 101, 0, 0, 950, 951, 5, 100, 0, 0, 951, 156, 1, 0, 0, 0, 952, 953, 5, 117, 0, 0, 953, 954, 5, 115, 0, 0, 954, 955, 5, 105, 0, 0, 955, 956, 5, 110, 0, 0, 956, 957, 5, 103, 0, 0, 957, 158, 1, 0, 0, 0, 958, 959, 5, 118, 0, 0, 959, 960, 5, 105, 0, 0, 960, 961, 5, 114, 0, 0, 961, 962, 5, 116, 0, 0, 962, 963, 5, 117, 0, 0, 963, 964, 5, 97, 0, 0, 964, 965, 5, 108, 0, 0, 965, 160, 1, 0, 0, 0, 966, 967, 5, 118, 0, 0, 967, 968, 5, 111, 0, 0, 968, 969, 5, 105, 0, 0, 969, 970, 5, 100, 0, 0, 970, 162, 1, 0, 0, 0, 971, 972, 5, 118, 0, 0, 972, 973, 5, 111, 0, 0, 973, 974, 5, 108, 0, 0, 974, 975, 5, 97, 0, 0, 975, 976, 5, 116, 0, 0, 976, 977, 5, 105, 0, 0, 977, 978, 5, 108, 0, 0, 978, 979, 5, 101, 0, 0, 979, 164, 1, 0, 0, 0, 980, 981, 5, 119, 0, 0, 981, 982, 5, 99, 0, 0, 982, 983, 5, 104, 0, 0, 983, 984, 5, 97, 0, 0, 984, 985, 5, 114, 0, 0, 985, 986, 5, 95, 0, 0, 986, 987, 5, 116, 0, 0, 987, 166, 1, 0, 0, 0, 988, 989, 5, 119, 0, 0, 989, 990, 5, 104, 0, 0, 990, 991, 5, 105, 0, 0, 991, 992, 5, 108, 0, 0, 992, 993, 5, 101, 0, 0, 993, 168, 1, 0, 0, 0, 994, 995, 5, 40, 0, 0, 995, 170, 1, 0, 0, 0, 996, 997, 5, 41, 0, 0, 997, 172, 1, 0, 0, 0, 998, 999, 5, 91, 0, 0, 999, 174, 1, 0, 0, 0, 1000, 1001, 5, 93, 0, 0, 1001, 176, 1, 0, 0, 0, 1002, 1003, 5, 123, 0, 0, 1003, 178, 1, 0, 0, 0, 1004, 1005, 5, 125, 0, 0, 1005, 180, 1, 0, 0, 0, 1006, 1007, 5, 43, 0, 0, 1007, 182, 1, 0, 0, 0, 1008, 1009, 5, 45, 0, 0, 1009, 184, 1, 0, 0, 0, 1010, 1011, 5, 42, 0, 0, 1011, 186, 1, 0, 0, 0, 1012, 1013, 5, 47, 0, 0, 1013, 188, 1, 0, 0, 0, 1014, 1015, 5, 37, 0, 0, 1015, 190, 1, 0, 0, 0, 1016, 1017, 5, 94, 0, 0, 1017, 192, 1, 0, 0, 0, 1018, 1019, 5, 38, 0, 0, 1019, 194, 1, 0, 0, 0, 1020, 1021, 5, 124, 0, 0, 1021, 196, 1, 0, 0, 0, 1022, 1023, 5, 126, 0, 0, 1023, 198, 1, 0, 0, 0, 1024, 1029, 5, 33, 0, 0, 1025, 1026, 5, 110, 0, 0, 1026, 1027, 5, 111, 0, 0, 1027, 1029, 5, 116, 0, 0, 1028, 1024, 1, 0, 0, 0, 1028, 1025, 1, 0, 0, 0, 1029, 200, 1, 0, 0, 0, 1030, 1031, 5, 61, 0, 0, 1031, 202, 1, 0, 0, 0, 1032, 1033, 5, 60, 0, 0, 1033, 204, 1, 0, 0, 0, 1034, 1035, 5, 62, 0, 0, 1035, 206, 1, 0, 0, 0, 1036, 1037, 5, 43, 0, 0, 1037, 1038, 5, 61, 0, 0, 1038, 208, 1, 0, 0, 0, 1039, 1040, 5, 45, 0, 0, 1040, 1041, 5, 61, 0, 0, 1041, 210, 1, 0, 0, 0, 1042, 1043, 5, 42, 0, 0, 1043, 1044, 5, 61, 0, 0, 1044, 212, 1, 0, 0, 0, 1045, 1046, 5, 47, 0, 0, 1046, 1047, 5, 61, 0, 0, 1047, 214, 1, 0, 0, 0, 1048, 1049, 5, 37, 0, 0, 1049, 1050, 5, 61, 0, 0, 1050, 216, 1, 0, 0, 0, 1051, 1052, 5, 94, 0, 0, 1052, 1053, 5, 61, 0, 0, 1053, 218, 1, 0, 0, 0, 1054, 1055, 5, 38, 0, 0, 1055, 1056, 5, 61, 0, 0, 1056, 220, 1, 0, 0, 0, 1057, 1058, 5, 124, 0, 0, 1058, 1059, 5, 61, 0, 0, 1059, 222, 1, 0, 0, 0, 1060, 1061, 5, 60, 0, 0, 1061, 1062, 5, 60, 0, 0, 1062, 1063, 5, 61, 0, 0, 1063, 224, 1, 0, 0, 0, 1064, 1065, 5, 62, 0, 0, 1065, 1066, 5, 62, 0, 0, 1066, 1067, 5, 61, 0, 0, 1067, 226, 1, 0, 0, 0, 1068, 1069, 5, 61, 0, 0, 1069, 1070, 5, 61, 0, 0, 1070, 228, 1, 0, 0, 0, 1071, 1072, 5, 33, 0, 0, 1072, 1073, 5, 61, 0, 0, 1073, 230, 1, 0, 0, 0, 1074, 1075, 5, 60, 0, 0, 1075, 1076, 5, 61, 0, 0, 1076, 232, 1, 0, 0, 0, 1077, 1078, 5, 62, 0, 0, 1078, 1079, 5, 61, 0, 0, 1079, 234, 1, 0, 0, 0, 1080, 1081, 5, 38, 0, 0, 1081, 1086, 5, 38, 0, 0, 1082, 1083, 5, 97, 0, 0, 1083, 1084, 5, 110, 0, 0, 1084, 1086, 5, 100, 0, 0, 1085, 1080, 1, 0, 0, 0, 1085, 1082, 1, 0, 0, 0, 1086, 236, 1, 0, 0, 0, 1087, 1088, 5, 124, 0, 0, 1088, 1092, 5, 124, 0, 0, 1089, 1090, 5, 111, 0, 0, 1090, 1092, 5, 114, 0, 0, 1091, 1087, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1092, 238, 1, 0, 0, 0, 1093, 1094, 5, 43, 0, 0, 1094, 1095, 5, 43, 0, 0, 1095, 240, 1, 0, 0, 0, 1096, 1097, 5, 45, 0, 0, 1097, 1098, 5, 45, 0, 0, 1098, 242, 1, 0, 0, 0, 1099, 1100, 5, 44, 0, 0, 1100, 244, 1, 0, 0, 0, 1101, 1102, 5, 45, 0, 0, 1102, 1103, 5, 62, 0, 0, 1103, 1104, 5, 42, 0, 0, 1104, 246, 1, 0, 0, 0, 1105, 1106, 5, 45, 0, 0, 1106, 1107, 5, 62, 0, 0, 1107, 248, 1, 0, 0, 0, 1108, 1109, 5, 63, 0, 0, 1109, 250, 1, 0, 0, 0, 1110, 1111, 5, 58, 0, 0, 1111, 252, 1, 0, 0, 0, 1112, 1113, 5, 58, 0, 0, 1113, 1114, 5, 58, 0, 0, 1114, 254, 1, 0, 0, 0, 1115, 1116, 5, 59, 0, 0, 1116, 256, 1, 0, 0, 0, 1117, 1118, 5, 46, 0, 0, 1118, 258, 1, 0, 0, 0, 1119, 1120, 5, 46, 0, 0, 1120, 1121, 5, 42, 0, 0, 1121, 260, 1, 0, 0, 0, 1122, 1123, 5, 46, 0, 0, 1123, 1124, 5, 46, 0, 0, 1124, 1125, 5, 46, 0, 0, 1125, 262, 1, 0, 0, 0, 1126, 1127, 3, 287, 143, 0, 1127, 1128, 3, 287, 143, 0, 1128, 1129, 3, 287, 143, 0, 1129, 1130, 3, 287, 143, 0, 1130, 264, 1, 0, 0, 0, 1131, 1132, 5, 92, 0, 0, 1132, 1133, 5, 117, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1142, 3, 263, 131, 0, 1135, 1136, 5, 92, 0, 0, 1136, 1137, 5, 85, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1139, 3, 263, 131, 0, 1139, 1140, 3, 263, 131, 0, 1140, 1142, 1, 0, 0, 0, 1141, 1131, 1, 0, 0, 0, 1141, 1135, 1, 0, 0, 0, 1142, 266, 1, 0, 0, 0, 1143, 1148, 3, 269, 134, 0, 1144, 1147, 3, 269, 134, 0, 1145, 1147, 3, 273, 136, 0, 1146, 1144, 1, 0, 0, 0, 1146, 1145, 1, 0, 0, 0, 1147, 1150, 1, 0, 0, 0, 1148, 1146, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 268, 1, 0, 0, 0, 1150, 1148, 1, 0, 0, 0, 1151, 1154, 3, 271, 135, 0, 1152, 1154, 3, 265, 132, 0, 1153, 1151, 1, 0, 0, 0, 1153, 1152, 1, 0, 0, 0, 1154, 270, 1, 0, 0, 0, 1155, 1156, 7, 2, 0, 0, 1156, 272, 1, 0, 0, 0, 1157, 1158, 7, 3, 0, 0, 1158, 274, 1, 0, 0, 0, 1159, 1166, 3, 283, 141, 0, 1160, 1162, 5, 39, 0, 0, 1161, 1160, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1165, 3, 273, 136, 0, 1164, 1161, 1, 0, 0, 0, 1165, 1168, 1, 0, 0, 0, 1166, 1164, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 276, 1, 0, 0, 0, 1168, 1166, 1, 0, 0, 0, 1169, 1176, 5, 48, 0, 0, 1170, 1172, 5, 39, 0, 0, 1171, 1170, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1175, 3, 285, 142, 0, 1174, 1171, 1, 0, 0, 0, 1175, 1178, 1, 0, 0, 0, 1176, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 278, 1, 0, 0, 0, 1178, 1176, 1, 0, 0, 0, 1179, 1180, 5, 48, 0, 0, 1180, 1184, 5, 120, 0, 0, 1181, 1182, 5, 48, 0, 0, 1182, 1184, 5, 88, 0, 0, 1183, 1179, 1, 0, 0, 0, 1183, 1181, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1192, 3, 287, 143, 0, 1186, 1188, 5, 39, 0, 0, 1187, 1186, 1, 0, 0, 0, 1187, 1188, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 1191, 3, 287, 143, 0, 1190, 1187, 1, 0, 0, 0, 1191, 1194, 1, 0, 0, 0, 1192, 1190, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 280, 1, 0, 0, 0, 1194, 1192, 1, 0, 0, 0, 1195, 1196, 5, 48, 0, 0, 1196, 1200, 5, 98, 0, 0, 1197, 1198, 5, 48, 0, 0, 1198, 1200, 5, 66, 0, 0, 1199, 1195, 1, 0, 0, 0, 1199, 1197, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1208, 3, 289, 144, 0, 1202, 1204, 5, 39, 0, 0, 1203, 1202, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1207, 3, 289, 144, 0, 1206, 1203, 1, 0, 0, 0, 1207, 1210, 1, 0, 0, 0, 1208, 1206, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 282, 1, 0, 0, 0, 1210, 1208, 1, 0, 0, 0, 1211, 1212, 7, 4, 0, 0, 1212, 284, 1, 0, 0, 0, 1213, 1214, 7, 5, 0, 0, 1214, 286, 1, 0, 0, 0, 1215, 1216, 7, 6, 0, 0, 1216, 288, 1, 0, 0, 0, 1217, 1218, 7, 7, 0, 0, 1218, 290, 1, 0, 0, 0, 1219, 1221, 3, 293, 146, 0, 1220, 1222, 3, 295, 147, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1236, 1, 0, 0, 0, 1223, 1225, 3, 293, 146, 0, 1224, 1226, 3, 297, 148, 0, 1225, 1224, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1236, 1, 0, 0, 0, 1227, 1229, 3, 295, 147, 0, 1228, 1230, 3, 293, 146, 0, 1229, 1228, 1, 0, 0, 0, 1229, 1230, 1, 0, 0, 0, 1230, 1236, 1, 0, 0, 0, 1231, 1233, 3, 297, 148, 0, 1232, 1234, 3, 293, 146, 0, 1233, 1232, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1236, 1, 0, 0, 0, 1235, 1219, 1, 0, 0, 0, 1235, 1223, 1, 0, 0, 0, 1235, 1227, 1, 0, 0, 0, 1235, 1231, 1, 0, 0, 0, 1236, 292, 1, 0, 0, 0, 1237, 1238, 7, 8, 0, 0, 1238, 294, 1, 0, 0, 0, 1239, 1240, 7, 9, 0, 0, 1240, 296, 1, 0, 0, 0, 1241, 1242, 5, 108, 0, 0, 1242, 1246, 5, 108, 0, 0, 1243, 1244, 5, 76, 0, 0, 1244, 1246, 5, 76, 0, 0, 1245, 1241, 1, 0, 0, 0, 1245, 1243, 1, 0, 0, 0, 1246, 298, 1, 0, 0, 0, 1247, 1251, 8, 10, 0, 0, 1248, 1251, 3, 301, 150, 0, 1249, 1251, 3, 265, 132, 0, 1250, 1247, 1, 0, 0, 0, 1250, 1248, 1, 0, 0, 0, 1250, 1249, 1, 0, 0, 0, 1251, 300, 1, 0, 0, 0, 1252, 1256, 3, 303, 151, 0, 1253, 1256, 3, 305, 152, 0, 1254, 1256, 3, 307, 153, 0, 1255, 1252, 1, 0, 0, 0, 1255, 1253, 1, 0, 0, 0, 1255, 1254, 1, 0, 0, 0, 1256, 302, 1, 0, 0, 0, 1257, 1258, 5, 92, 0, 0, 1258, 1288, 5, 39, 0, 0, 1259, 1260, 5, 92, 0, 0, 1260, 1288, 5, 34, 0, 0, 1261, 1262, 5, 92, 0, 0, 1262, 1288, 5, 63, 0, 0, 1263, 1264, 5, 92, 0, 0, 1264, 1288, 5, 92, 0, 0, 1265, 1266, 5, 92, 0, 0, 1266, 1288, 5, 97, 0, 0, 1267, 1268, 5, 92, 0, 0, 1268, 1288, 5, 98, 0, 0, 1269, 1270, 5, 92, 0, 0, 1270, 1288, 5, 102, 0, 0, 1271, 1272, 5, 92, 0, 0, 1272, 1288, 5, 110, 0, 0, 1273, 1274, 5, 92, 0, 0, 1274, 1288, 5, 114, 0, 0, 1275, 1281, 5, 92, 0, 0, 1276, 1278, 5, 13, 0, 0, 1277, 1279, 5, 10, 0, 0, 1278, 1277, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1282, 1, 0, 0, 0, 1280, 1282, 5, 10, 0, 0, 1281, 1276, 1, 0, 0, 0, 1281, 1280, 1, 0, 0, 0, 1282, 1288, 1, 0, 0, 0, 1283, 1284, 5, 92, 0, 0, 1284, 1288, 5, 116, 0, 0, 1285, 1286, 5, 92, 0, 0, 1286, 1288, 5, 118, 0, 0, 1287, 1257, 1, 0, 0, 0, 1287, 1259, 1, 0, 0, 0, 1287, 1261, 1, 0, 0, 0, 1287, 1263, 1, 0, 0, 0, 1287, 1265, 1, 0, 0, 0, 1287, 1267, 1, 0, 0, 0, 1287, 1269, 1, 0, 0, 0, 1287, 1271, 1, 0, 0, 0, 1287, 1273, 1, 0, 0, 0, 1287, 1275, 1, 0, 0, 0, 1287, 1283, 1, 0, 0, 0, 1287, 1285, 1, 0, 0, 0, 1288, 304, 1, 0, 0, 0, 1289, 1290, 5, 92, 0, 0, 1290, 1301, 3, 285, 142, 0, 1291, 1292, 5, 92, 0, 0, 1292, 1293, 3, 285, 142, 0, 1293, 1294, 3, 285, 142, 0, 1294, 1301, 1, 0, 0, 0, 1295, 1296, 5, 92, 0, 0, 1296, 1297, 3, 285, 142, 0, 1297, 1298, 3, 285, 142, 0, 1298, 1299, 3, 285, 142, 0, 1299, 1301, 1, 0, 0, 0, 1300, 1289, 1, 0, 0, 0, 1300, 1291, 1, 0, 0, 0, 1300, 1295, 1, 0, 0, 0, 1301, 306, 1, 0, 0, 0, 1302, 1303, 5, 92, 0, 0, 1303, 1304, 5, 120, 0, 0, 1304, 1306, 1, 0, 0, 0, 1305, 1307, 3, 287, 143, 0, 1306, 1305, 1, 0, 0, 0, 1307, 1308, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 308, 1, 0, 0, 0, 1310, 1312, 3, 315, 157, 0, 1311, 1310, 1, 0, 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1314, 5, 46, 0, 0, 1314, 1319, 3, 315, 157, 0, 1315, 1316, 3, 315, 157, 0, 1316, 1317, 5, 46, 0, 0, 1317, 1319, 1, 0, 0, 0, 1318, 1311, 1, 0, 0, 0, 1318, 1315, 1, 0, 0, 0, 1319, 310, 1, 0, 0, 0, 1320, 1322, 5, 101, 0, 0, 1321, 1323, 3, 313, 156, 0, 1322, 1321, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1331, 3, 315, 157, 0, 1325, 1327, 5, 69, 0, 0, 1326, 1328, 3, 313, 156, 0, 1327, 1326, 1, 0, 0, 0, 1327, 1328, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1331, 3, 315, 157, 0, 1330, 1320, 1, 0, 0, 0, 1330, 1325, 1, 0, 0, 0, 1331, 312, 1, 0, 0, 0, 1332, 1333, 7, 11, 0, 0, 1333, 314, 1, 0, 0, 0, 1334, 1341, 3, 273, 136, 0, 1335, 1337, 5, 39, 0, 0, 1336, 1335, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1338, 1, 0, 0, 0, 1338, 1340, 3, 273, 136, 0, 1339, 1336, 1, 0, 0, 0, 1340, 1343, 1, 0, 0, 0, 1341, 1339, 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 316, 1, 0, 0, 0, 1343, 1341, 1, 0, 0, 0, 1344, 1345, 7, 12, 0, 0, 1345, 318, 1, 0, 0, 0, 1346, 1347, 5, 117, 0, 0, 1347, 1350, 5, 56, 0, 0, 1348, 1350, 7, 0, 0, 0, 1349, 1346, 1, 0, 0, 0, 1349, 1348, 1, 0, 0, 0, 1350, 320, 1, 0, 0, 0, 1351, 1355, 8, 13, 0, 0, 1352, 1355, 3, 301, 150, 0, 1353, 1355, 3, 265, 132, 0, 1354, 1351, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1354, 1353, 1, 0, 0, 0, 1355, 322, 1, 0, 0, 0, 1356, 1357, 5, 82, 0, 0, 1357, 1358, 5, 34, 0, 0, 1358, 1364, 1, 0, 0, 0, 1359, 1360, 5, 92, 0, 0, 1360, 1363, 7, 14, 0, 0, 1361, 1363, 8, 15, 0, 0, 1362, 1359, 1, 0, 0, 0, 1362, 1361, 1, 0, 0, 0, 1363, 1366, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1371, 5, 40, 0, 0, 1368, 1370, 8, 16, 0, 0, 1369, 1368, 1, 0, 0, 0, 1370, 1373, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1371, 1369, 1, 0, 0, 0, 1372, 1374, 1, 0, 0, 0, 1373, 1371, 1, 0, 0, 0, 1374, 1380, 5, 41, 0, 0, 1375, 1376, 5, 92, 0, 0, 1376, 1379, 7, 14, 0, 0, 1377, 1379, 8, 17, 0, 0, 1378, 1375, 1, 0, 0, 0, 1378, 1377, 1, 0, 0, 0, 1379, 1382, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1381, 1383, 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1384, 5, 34, 0, 0, 1384, 324, 1, 0, 0, 0, 1385, 1386, 3, 275, 137, 0, 1386, 1387, 3, 333, 166, 0, 1387, 1398, 1, 0, 0, 0, 1388, 1389, 3, 277, 138, 0, 1389, 1390, 3, 333, 166, 0, 1390, 1398, 1, 0, 0, 0, 1391, 1392, 3, 279, 139, 0, 1392, 1393, 3, 333, 166, 0, 1393, 1398, 1, 0, 0, 0, 1394, 1395, 3, 281, 140, 0, 1395, 1396, 3, 333, 166, 0, 1396, 1398, 1, 0, 0, 0, 1397, 1385, 1, 0, 0, 0, 1397, 1388, 1, 0, 0, 0, 1397, 1391, 1, 0, 0, 0, 1397, 1394, 1, 0, 0, 0, 1398, 326, 1, 0, 0, 0, 1399, 1401, 3, 309, 154, 0, 1400, 1402, 3, 311, 155, 0, 1401, 1400, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1404, 3, 333, 166, 0, 1404, 1410, 1, 0, 0, 0, 1405, 1406, 3, 315, 157, 0, 1406, 1407, 3, 311, 155, 0, 1407, 1408, 3, 333, 166, 0, 1408, 1410, 1, 0, 0, 0, 1409, 1399, 1, 0, 0, 0, 1409, 1405, 1, 0, 0, 0, 1410, 328, 1, 0, 0, 0, 1411, 1412, 3, 7, 3, 0, 1412, 1413, 3, 333, 166, 0, 1413, 330, 1, 0, 0, 0, 1414, 1415, 3, 3, 1, 0, 1415, 1416, 3, 333, 166, 0, 1416, 332, 1, 0, 0, 0, 1417, 1418, 3, 267, 133, 0, 1418, 334, 1, 0, 0, 0, 1419, 1421, 7, 18, 0, 0, 1420, 1419, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1420, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1425, 6, 167, 1, 0, 1425, 336, 1, 0, 0, 0, 1426, 1428, 5, 13, 0, 0, 1427, 1429, 5, 10, 0, 0, 1428, 1427, 1, 0, 0, 0, 1428, 1429, 1, 0, 0, 0, 1429, 1432, 1, 0, 0, 0, 1430, 1432, 5, 10, 0, 0, 1431, 1426, 1, 0, 0, 0, 1431, 1430, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1434, 6, 168, 1, 0, 1434, 338, 1, 0, 0, 0, 1435, 1436, 5, 47, 0, 0, 1436, 1437, 5, 42, 0, 0, 1437, 1441, 1, 0, 0, 0, 1438, 1440, 9, 0, 0, 0, 1439, 1438, 1, 0, 0, 0, 1440, 1443, 1, 0, 0, 0, 1441, 1442, 1, 0, 0, 0, 1441, 1439, 1, 0, 0, 0, 1442, 1444, 1, 0, 0, 0, 1443, 1441, 1, 0, 0, 0, 1444, 1445, 5, 42, 0, 0, 1445, 1446, 5, 47, 0, 0, 1446, 1447, 1, 0, 0, 0, 1447, 1448, 6, 169, 1, 0, 1448, 340, 1, 0, 0, 0, 1449, 1450, 5, 47, 0, 0, 1450, 1451, 5, 47, 0, 0, 1451, 1455, 1, 0, 0, 0, 1452, 1454, 8, 19, 0, 0, 1453, 1452, 1, 0, 0, 0, 1454, 1457, 1, 0, 0, 0, 1455, 1453, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 1458, 1, 0, 0, 0, 1457, 1455, 1, 0, 0, 0, 1458, 1459, 6, 170, 1, 0, 1459, 342, 1, 0, 0, 0, 74, 0, 345, 349, 353, 357, 359, 362, 368, 374, 377, 382, 384, 387, 394, 398, 402, 410, 416, 421, 426, 431, 439, 1028, 1085, 1091, 1141, 1146, 1148, 1153, 1161, 1166, 1171, 1176, 1183, 1187, 1192, 1199, 1203, 1208, 1221, 1225, 1229, 1233, 1235, 1245, 1250, 1255, 1278, 1281, 1287, 1300, 1308, 1311, 1318, 1322, 1327, 1330, 1336, 1341, 1349, 1354, 1362, 1364, 1371, 1378, 1380, 1397, 1401, 1409, 1422, 1428, 1431, 1441, 1455, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.py b/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.py index c3aee220..bd900169 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.py @@ -1,747 +1,579 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\cpp\CPP14.g4 by ANTLR 4.8 +# Generated from CPP14Lexer.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO import sys - +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u0098") - buf.write("\u05dd\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") - buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") - buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") - buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") - buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") - buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4") - buf.write("y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080") - buf.write("\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083") - buf.write("\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087") - buf.write("\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a") - buf.write("\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e") - buf.write("\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091") - buf.write("\4\u0092\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095") - buf.write("\t\u0095\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098") - buf.write("\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c") - buf.write("\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f") - buf.write("\4\u00a0\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3") - buf.write("\t\u00a3\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6") - buf.write("\4\u00a7\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa") - buf.write("\t\u00aa\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad") - buf.write("\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1") - buf.write("\t\u00b1\3\2\3\2\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\5\3\5\3") - buf.write("\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b") - buf.write("\3\t\3\t\3\t\3\t\3\t\3\n\3\n\7\n\u0184\n\n\f\n\16\n\u0187") - buf.write("\13\n\3\n\3\n\5\n\u018b\n\n\3\n\6\n\u018e\n\n\r\n\16\n") - buf.write("\u018f\3\n\6\n\u0193\n\n\r\n\16\n\u0194\3\n\3\n\3\13\3") - buf.write("\13\7\13\u019b\n\13\f\13\16\13\u019e\13\13\3\13\3\13\3") - buf.write("\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r") - buf.write("\3\r\3\r\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17") - buf.write("\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21") - buf.write("\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23") - buf.write("\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25") - buf.write("\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26") - buf.write("\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30") - buf.write("\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31") - buf.write("\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32") - buf.write("\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34") - buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35") - buf.write("\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36") - buf.write("\3\36\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3!") - buf.write("\3!\3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"\3\"\3\"\3#\3#") - buf.write("\3#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3") - buf.write("%\3%\3&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3(\3") - buf.write("(\3(\3(\3(\3(\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3+\3+\3") - buf.write("+\3+\3+\3,\3,\3,\3-\3-\3-\3-\3-\3-\3-\3.\3.\3.\3.\3/\3") - buf.write("/\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\61") - buf.write("\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62") - buf.write("\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63") - buf.write("\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65") - buf.write("\3\65\3\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3\66") - buf.write("\3\66\3\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\3\67\3\67") - buf.write("\3\67\38\38\38\38\38\38\38\38\38\38\39\39\39\39\39\39") - buf.write("\39\3:\3:\3:\3:\3:\3:\3:\3:\3:\3;\3;\3;\3;\3;\3;\3;\3") - buf.write(";\3;\3;\3;\3;\3;\3;\3;\3;\3;\3<\3<\3<\3<\3<\3<\3<\3=\3") - buf.write("=\3=\3=\3=\3=\3>\3>\3>\3>\3>\3>\3>\3?\3?\3?\3?\3?\3?\3") - buf.write("?\3@\3@\3@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3") - buf.write("A\3A\3A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3C\3C\3") - buf.write("C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3E\3") - buf.write("E\3E\3E\3F\3F\3F\3F\3F\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3") - buf.write("G\3G\3G\3H\3H\3H\3H\3H\3H\3I\3I\3I\3I\3J\3J\3J\3J\3J\3") - buf.write("J\3J\3J\3K\3K\3K\3K\3K\3K\3K\3L\3L\3L\3L\3L\3L\3L\3L\3") - buf.write("L\3M\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3N\3N\3N\3N\3O\3O\3") - buf.write("O\3O\3O\3O\3P\3P\3P\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3R\3") - buf.write("R\3R\3R\3R\3R\3R\3R\3R\3S\3S\3S\3S\3S\3S\3S\3S\3T\3T\3") - buf.write("T\3T\3T\3T\3U\3U\3V\3V\3W\3W\3X\3X\3Y\3Y\3Z\3Z\3[\3[\3") - buf.write("\\\3\\\3]\3]\3^\3^\3_\3_\3`\3`\3a\3a\3b\3b\3c\3c\3d\3") - buf.write("d\3d\3d\5d\u03df\nd\3e\3e\3f\3f\3g\3g\3h\3h\3h\3i\3i\3") - buf.write("i\3j\3j\3j\3k\3k\3k\3l\3l\3l\3m\3m\3m\3n\3n\3n\3o\3o\3") - buf.write("o\3p\3p\3p\3q\3q\3q\3r\3r\3r\3r\3s\3s\3s\3s\3t\3t\3t\3") - buf.write("u\3u\3u\3v\3v\3v\3w\3w\3w\3x\3x\3x\3x\3x\5x\u041e\nx\3") - buf.write("y\3y\3y\3y\5y\u0424\ny\3z\3z\3z\3{\3{\3{\3|\3|\3}\3}\3") - buf.write("}\3}\3~\3~\3~\3\177\3\177\3\u0080\3\u0080\3\u0081\3\u0081") - buf.write("\3\u0081\3\u0082\3\u0082\3\u0083\3\u0083\3\u0084\3\u0084") - buf.write("\3\u0084\3\u0085\3\u0085\3\u0085\3\u0085\3\u0086\3\u0086") - buf.write("\3\u0086\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087\3\u0087") - buf.write("\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087") - buf.write("\u0456\n\u0087\3\u0088\3\u0088\3\u0088\7\u0088\u045b\n") - buf.write("\u0088\f\u0088\16\u0088\u045e\13\u0088\3\u0089\3\u0089") - buf.write("\5\u0089\u0462\n\u0089\3\u008a\3\u008a\3\u008b\3\u008b") - buf.write("\3\u008c\3\u008c\5\u008c\u046a\n\u008c\3\u008c\3\u008c") - buf.write("\5\u008c\u046e\n\u008c\3\u008c\3\u008c\5\u008c\u0472\n") - buf.write("\u008c\3\u008c\3\u008c\5\u008c\u0476\n\u008c\5\u008c\u0478") - buf.write("\n\u008c\3\u008d\3\u008d\5\u008d\u047c\n\u008d\3\u008d") - buf.write("\7\u008d\u047f\n\u008d\f\u008d\16\u008d\u0482\13\u008d") - buf.write("\3\u008e\3\u008e\5\u008e\u0486\n\u008e\3\u008e\7\u008e") - buf.write("\u0489\n\u008e\f\u008e\16\u008e\u048c\13\u008e\3\u008f") - buf.write("\3\u008f\3\u008f\3\u008f\5\u008f\u0492\n\u008f\3\u008f") - buf.write("\3\u008f\5\u008f\u0496\n\u008f\3\u008f\7\u008f\u0499\n") - buf.write("\u008f\f\u008f\16\u008f\u049c\13\u008f\3\u0090\3\u0090") - buf.write("\3\u0090\3\u0090\5\u0090\u04a2\n\u0090\3\u0090\3\u0090") - buf.write("\5\u0090\u04a6\n\u0090\3\u0090\7\u0090\u04a9\n\u0090\f") - buf.write("\u0090\16\u0090\u04ac\13\u0090\3\u0091\3\u0091\3\u0092") - buf.write("\3\u0092\3\u0093\3\u0093\3\u0094\3\u0094\3\u0095\3\u0095") - buf.write("\5\u0095\u04b8\n\u0095\3\u0095\3\u0095\5\u0095\u04bc\n") - buf.write("\u0095\3\u0095\3\u0095\5\u0095\u04c0\n\u0095\3\u0095\3") - buf.write("\u0095\5\u0095\u04c4\n\u0095\5\u0095\u04c6\n\u0095\3\u0096") - buf.write("\3\u0096\3\u0097\3\u0097\3\u0098\3\u0098\3\u0098\3\u0098") - buf.write("\5\u0098\u04d0\n\u0098\3\u0099\3\u0099\6\u0099\u04d4\n") - buf.write("\u0099\r\u0099\16\u0099\u04d5\3\u0099\3\u0099\3\u0099") - buf.write("\3\u0099\3\u0099\6\u0099\u04dd\n\u0099\r\u0099\16\u0099") - buf.write("\u04de\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099\6\u0099") - buf.write("\u04e6\n\u0099\r\u0099\16\u0099\u04e7\3\u0099\3\u0099") - buf.write("\3\u0099\3\u0099\3\u0099\6\u0099\u04ef\n\u0099\r\u0099") - buf.write("\16\u0099\u04f0\3\u0099\3\u0099\5\u0099\u04f5\n\u0099") - buf.write("\3\u009a\3\u009a\3\u009a\5\u009a\u04fa\n\u009a\3\u009b") - buf.write("\3\u009b\3\u009b\5\u009b\u04ff\n\u009b\3\u009c\3\u009c") - buf.write("\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c") - buf.write("\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c") - buf.write("\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\5\u009c") - buf.write("\u0517\n\u009c\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d") - buf.write("\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\5\u009d") - buf.write("\u0524\n\u009d\3\u009e\3\u009e\3\u009e\3\u009e\6\u009e") - buf.write("\u052a\n\u009e\r\u009e\16\u009e\u052b\3\u009f\3\u009f") - buf.write("\5\u009f\u0530\n\u009f\3\u009f\5\u009f\u0533\n\u009f\3") - buf.write("\u009f\3\u009f\3\u009f\5\u009f\u0538\n\u009f\5\u009f\u053a") - buf.write("\n\u009f\3\u00a0\5\u00a0\u053d\n\u00a0\3\u00a0\3\u00a0") - buf.write("\3\u00a0\3\u00a0\3\u00a0\5\u00a0\u0544\n\u00a0\3\u00a1") - buf.write("\3\u00a1\5\u00a1\u0548\n\u00a1\3\u00a1\3\u00a1\3\u00a1") - buf.write("\5\u00a1\u054d\n\u00a1\3\u00a1\5\u00a1\u0550\n\u00a1\3") - buf.write("\u00a2\3\u00a2\3\u00a3\3\u00a3\5\u00a3\u0556\n\u00a3\3") - buf.write("\u00a3\7\u00a3\u0559\n\u00a3\f\u00a3\16\u00a3\u055c\13") - buf.write("\u00a3\3\u00a4\3\u00a4\3\u00a5\5\u00a5\u0561\n\u00a5\3") - buf.write("\u00a5\3\u00a5\7\u00a5\u0565\n\u00a5\f\u00a5\16\u00a5") - buf.write("\u0568\13\u00a5\3\u00a5\3\u00a5\5\u00a5\u056c\n\u00a5") - buf.write("\3\u00a5\3\u00a5\5\u00a5\u0570\n\u00a5\3\u00a6\3\u00a6") - buf.write("\3\u00a6\5\u00a6\u0575\n\u00a6\3\u00a7\3\u00a7\3\u00a7") - buf.write("\5\u00a7\u057a\n\u00a7\3\u00a8\3\u00a8\7\u00a8\u057e\n") - buf.write("\u00a8\f\u00a8\16\u00a8\u0581\13\u00a8\3\u00a8\3\u00a8") - buf.write("\7\u00a8\u0585\n\u00a8\f\u00a8\16\u00a8\u0588\13\u00a8") - buf.write("\3\u00a8\3\u00a8\7\u00a8\u058c\n\u00a8\f\u00a8\16\u00a8") - buf.write("\u058f\13\u00a8\3\u00a8\3\u00a8\3\u00a9\3\u00a9\3\u00a9") - buf.write("\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9") - buf.write("\3\u00a9\3\u00a9\5\u00a9\u059f\n\u00a9\3\u00aa\3\u00aa") - buf.write("\5\u00aa\u05a3\n\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00aa\3\u00aa\5\u00aa\u05ab\n\u00aa\3\u00ab\3\u00ab") - buf.write("\3\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ad\3\u00ad\3\u00ae") - buf.write("\6\u00ae\u05b6\n\u00ae\r\u00ae\16\u00ae\u05b7\3\u00ae") - buf.write("\3\u00ae\3\u00af\3\u00af\5\u00af\u05be\n\u00af\3\u00af") - buf.write("\5\u00af\u05c1\n\u00af\3\u00af\3\u00af\3\u00b0\3\u00b0") - buf.write("\3\u00b0\3\u00b0\7\u00b0\u05c9\n\u00b0\f\u00b0\16\u00b0") - buf.write("\u05cc\13\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b0") - buf.write("\3\u00b1\3\u00b1\3\u00b1\3\u00b1\7\u00b1\u05d7\n\u00b1") - buf.write("\f\u00b1\16\u00b1\u05da\13\u00b1\3\u00b1\3\u00b1\7\u0185") - buf.write("\u057f\u0586\u058d\u05ca\2\u00b2\3\3\5\4\7\5\t\6\13\7") - buf.write("\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21") - buf.write("!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67") - buf.write("\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61") - buf.write("a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177A\u0081") - buf.write("B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091") - buf.write("J\u0093K\u0095L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1") - buf.write("R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00afY\u00b1") - buf.write("Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1") - buf.write("b\u00c3c\u00c5d\u00c7e\u00c9f\u00cbg\u00cdh\u00cfi\u00d1") - buf.write("j\u00d3k\u00d5l\u00d7m\u00d9n\u00dbo\u00ddp\u00dfq\u00e1") - buf.write("r\u00e3s\u00e5t\u00e7u\u00e9v\u00ebw\u00edx\u00efy\u00f1") - buf.write("z\u00f3{\u00f5|\u00f7}\u00f9~\u00fb\177\u00fd\u0080\u00ff") - buf.write("\u0081\u0101\u0082\u0103\u0083\u0105\u0084\u0107\u0085") - buf.write("\u0109\u0086\u010b\2\u010d\2\u010f\u0087\u0111\2\u0113") - buf.write("\2\u0115\2\u0117\u0088\u0119\u0089\u011b\u008a\u011d\u008b") - buf.write("\u011f\u008c\u0121\2\u0123\2\u0125\2\u0127\2\u0129\u008d") - buf.write("\u012b\2\u012d\2\u012f\2\u0131\u008e\u0133\2\u0135\2\u0137") - buf.write("\2\u0139\2\u013b\2\u013d\u008f\u013f\2\u0141\2\u0143\2") - buf.write("\u0145\2\u0147\2\u0149\u0090\u014b\2\u014d\2\u014f\2\u0151") - buf.write("\u0091\u0153\u0092\u0155\u0093\u0157\u0094\u0159\2\u015b") - buf.write("\u0095\u015d\u0096\u015f\u0097\u0161\u0098\3\2\22\3\2") - buf.write("\f\f\5\2C\\aac|\3\2\62;\3\2\63;\3\2\629\5\2\62;CHch\3") - buf.write("\2\62\63\4\2WWww\4\2NNnn\6\2\f\f\17\17))^^\4\2--//\6\2") - buf.write("HHNNhhnn\5\2NNWWww\6\2\f\f\17\17$$^^\4\2\13\13\"\"\4\2") - buf.write("\f\f\17\17\2\u061e\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2") - buf.write("\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21") - buf.write("\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3") - buf.write("\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2") - buf.write("\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2") - buf.write("\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2") - buf.write("\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2") - buf.write("\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3") - buf.write("\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q") - buf.write("\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2") - buf.write("[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2") - buf.write("\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2") - buf.write("\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2") - buf.write("\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2") - buf.write("\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087") - buf.write("\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2") - buf.write("\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095") - buf.write("\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b\3\2\2") - buf.write("\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3") - buf.write("\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2") - buf.write("\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b1") - buf.write("\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2") - buf.write("\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf") - buf.write("\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2") - buf.write("\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd") - buf.write("\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2") - buf.write("\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db") - buf.write("\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2") - buf.write("\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9") - buf.write("\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2") - buf.write("\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7") - buf.write("\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2") - buf.write("\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105") - buf.write("\3\2\2\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010f\3\2\2") - buf.write("\2\2\u0117\3\2\2\2\2\u0119\3\2\2\2\2\u011b\3\2\2\2\2\u011d") - buf.write("\3\2\2\2\2\u011f\3\2\2\2\2\u0129\3\2\2\2\2\u0131\3\2\2") - buf.write("\2\2\u013d\3\2\2\2\2\u0149\3\2\2\2\2\u0151\3\2\2\2\2\u0153") - buf.write("\3\2\2\2\2\u0155\3\2\2\2\2\u0157\3\2\2\2\2\u015b\3\2\2") - buf.write("\2\2\u015d\3\2\2\2\2\u015f\3\2\2\2\2\u0161\3\2\2\2\3\u0163") - buf.write("\3\2\2\2\5\u0165\3\2\2\2\7\u0169\3\2\2\2\t\u016c\3\2\2") - buf.write("\2\13\u0170\3\2\2\2\r\u0173\3\2\2\2\17\u0176\3\2\2\2\21") - buf.write("\u017c\3\2\2\2\23\u0181\3\2\2\2\25\u0198\3\2\2\2\27\u01a1") - buf.write("\3\2\2\2\31\u01a9\3\2\2\2\33\u01b1\3\2\2\2\35\u01b5\3") - buf.write("\2\2\2\37\u01ba\3\2\2\2!\u01bf\3\2\2\2#\u01c5\3\2\2\2") - buf.write("%\u01ca\3\2\2\2\'\u01d0\3\2\2\2)\u01d5\3\2\2\2+\u01de") - buf.write("\3\2\2\2-\u01e7\3\2\2\2/\u01ed\3\2\2\2\61\u01f3\3\2\2") - buf.write("\2\63\u01fd\3\2\2\2\65\u0208\3\2\2\2\67\u0211\3\2\2\2") - buf.write("9\u021a\3\2\2\2;\u0222\3\2\2\2=\u0229\3\2\2\2?\u022c\3") - buf.write("\2\2\2A\u0233\3\2\2\2C\u0240\3\2\2\2E\u0245\3\2\2\2G\u024a") - buf.write("\3\2\2\2I\u0253\3\2\2\2K\u025a\3\2\2\2M\u0261\3\2\2\2") - buf.write("O\u0267\3\2\2\2Q\u026d\3\2\2\2S\u0271\3\2\2\2U\u0278\3") - buf.write("\2\2\2W\u027d\3\2\2\2Y\u0280\3\2\2\2[\u0287\3\2\2\2]\u028b") - buf.write("\3\2\2\2_\u0290\3\2\2\2a\u0298\3\2\2\2c\u02a2\3\2\2\2") - buf.write("e\u02a6\3\2\2\2g\u02af\3\2\2\2i\u02b7\3\2\2\2k\u02c0\3") - buf.write("\2\2\2m\u02c9\3\2\2\2o\u02d1\3\2\2\2q\u02db\3\2\2\2s\u02e2") - buf.write("\3\2\2\2u\u02eb\3\2\2\2w\u02fc\3\2\2\2y\u0303\3\2\2\2") - buf.write("{\u0309\3\2\2\2}\u0310\3\2\2\2\177\u0317\3\2\2\2\u0081") - buf.write("\u031e\3\2\2\2\u0083\u032c\3\2\2\2\u0085\u0338\3\2\2\2") - buf.write("\u0087\u033f\3\2\2\2\u0089\u0346\3\2\2\2\u008b\u034f\3") - buf.write("\2\2\2\u008d\u0354\3\2\2\2\u008f\u0361\3\2\2\2\u0091\u0367") - buf.write("\3\2\2\2\u0093\u036b\3\2\2\2\u0095\u0373\3\2\2\2\u0097") - buf.write("\u037a\3\2\2\2\u0099\u0383\3\2\2\2\u009b\u0389\3\2\2\2") - buf.write("\u009d\u0392\3\2\2\2\u009f\u0398\3\2\2\2\u00a1\u03a0\3") - buf.write("\2\2\2\u00a3\u03a5\3\2\2\2\u00a5\u03ae\3\2\2\2\u00a7\u03b6") - buf.write("\3\2\2\2\u00a9\u03bc\3\2\2\2\u00ab\u03be\3\2\2\2\u00ad") - buf.write("\u03c0\3\2\2\2\u00af\u03c2\3\2\2\2\u00b1\u03c4\3\2\2\2") - buf.write("\u00b3\u03c6\3\2\2\2\u00b5\u03c8\3\2\2\2\u00b7\u03ca\3") - buf.write("\2\2\2\u00b9\u03cc\3\2\2\2\u00bb\u03ce\3\2\2\2\u00bd\u03d0") - buf.write("\3\2\2\2\u00bf\u03d2\3\2\2\2\u00c1\u03d4\3\2\2\2\u00c3") - buf.write("\u03d6\3\2\2\2\u00c5\u03d8\3\2\2\2\u00c7\u03de\3\2\2\2") - buf.write("\u00c9\u03e0\3\2\2\2\u00cb\u03e2\3\2\2\2\u00cd\u03e4\3") - buf.write("\2\2\2\u00cf\u03e6\3\2\2\2\u00d1\u03e9\3\2\2\2\u00d3\u03ec") - buf.write("\3\2\2\2\u00d5\u03ef\3\2\2\2\u00d7\u03f2\3\2\2\2\u00d9") - buf.write("\u03f5\3\2\2\2\u00db\u03f8\3\2\2\2\u00dd\u03fb\3\2\2\2") - buf.write("\u00df\u03fe\3\2\2\2\u00e1\u0401\3\2\2\2\u00e3\u0404\3") - buf.write("\2\2\2\u00e5\u0408\3\2\2\2\u00e7\u040c\3\2\2\2\u00e9\u040f") - buf.write("\3\2\2\2\u00eb\u0412\3\2\2\2\u00ed\u0415\3\2\2\2\u00ef") - buf.write("\u041d\3\2\2\2\u00f1\u0423\3\2\2\2\u00f3\u0425\3\2\2\2") - buf.write("\u00f5\u0428\3\2\2\2\u00f7\u042b\3\2\2\2\u00f9\u042d\3") - buf.write("\2\2\2\u00fb\u0431\3\2\2\2\u00fd\u0434\3\2\2\2\u00ff\u0436") - buf.write("\3\2\2\2\u0101\u0438\3\2\2\2\u0103\u043b\3\2\2\2\u0105") - buf.write("\u043d\3\2\2\2\u0107\u043f\3\2\2\2\u0109\u0442\3\2\2\2") - buf.write("\u010b\u0446\3\2\2\2\u010d\u0455\3\2\2\2\u010f\u0457\3") - buf.write("\2\2\2\u0111\u0461\3\2\2\2\u0113\u0463\3\2\2\2\u0115\u0465") - buf.write("\3\2\2\2\u0117\u0477\3\2\2\2\u0119\u0479\3\2\2\2\u011b") - buf.write("\u0483\3\2\2\2\u011d\u0491\3\2\2\2\u011f\u04a1\3\2\2\2") - buf.write("\u0121\u04ad\3\2\2\2\u0123\u04af\3\2\2\2\u0125\u04b1\3") - buf.write("\2\2\2\u0127\u04b3\3\2\2\2\u0129\u04c5\3\2\2\2\u012b\u04c7") - buf.write("\3\2\2\2\u012d\u04c9\3\2\2\2\u012f\u04cf\3\2\2\2\u0131") - buf.write("\u04f4\3\2\2\2\u0133\u04f9\3\2\2\2\u0135\u04fe\3\2\2\2") - buf.write("\u0137\u0516\3\2\2\2\u0139\u0523\3\2\2\2\u013b\u0525\3") - buf.write("\2\2\2\u013d\u0539\3\2\2\2\u013f\u0543\3\2\2\2\u0141\u054f") - buf.write("\3\2\2\2\u0143\u0551\3\2\2\2\u0145\u0553\3\2\2\2\u0147") - buf.write("\u055d\3\2\2\2\u0149\u056f\3\2\2\2\u014b\u0574\3\2\2\2") - buf.write("\u014d\u0579\3\2\2\2\u014f\u057b\3\2\2\2\u0151\u059e\3") - buf.write("\2\2\2\u0153\u05aa\3\2\2\2\u0155\u05ac\3\2\2\2\u0157\u05af") - buf.write("\3\2\2\2\u0159\u05b2\3\2\2\2\u015b\u05b5\3\2\2\2\u015d") - buf.write("\u05c0\3\2\2\2\u015f\u05c4\3\2\2\2\u0161\u05d2\3\2\2\2") - buf.write("\u0163\u0164\7#\2\2\u0164\4\3\2\2\2\u0165\u0166\7p\2\2") - buf.write("\u0166\u0167\7q\2\2\u0167\u0168\7v\2\2\u0168\6\3\2\2\2") - buf.write("\u0169\u016a\7(\2\2\u016a\u016b\7(\2\2\u016b\b\3\2\2\2") - buf.write("\u016c\u016d\7c\2\2\u016d\u016e\7p\2\2\u016e\u016f\7f") - buf.write("\2\2\u016f\n\3\2\2\2\u0170\u0171\7~\2\2\u0171\u0172\7") - buf.write("~\2\2\u0172\f\3\2\2\2\u0173\u0174\7q\2\2\u0174\u0175\7") - buf.write("t\2\2\u0175\16\3\2\2\2\u0176\u0177\7h\2\2\u0177\u0178") - buf.write("\7c\2\2\u0178\u0179\7n\2\2\u0179\u017a\7u\2\2\u017a\u017b") - buf.write("\7g\2\2\u017b\20\3\2\2\2\u017c\u017d\7v\2\2\u017d\u017e") - buf.write("\7t\2\2\u017e\u017f\7w\2\2\u017f\u0180\7g\2\2\u0180\22") - buf.write("\3\2\2\2\u0181\u018d\7%\2\2\u0182\u0184\n\2\2\2\u0183") - buf.write("\u0182\3\2\2\2\u0184\u0187\3\2\2\2\u0185\u0186\3\2\2\2") - buf.write("\u0185\u0183\3\2\2\2\u0186\u0188\3\2\2\2\u0187\u0185\3") - buf.write("\2\2\2\u0188\u018a\7^\2\2\u0189\u018b\7\17\2\2\u018a\u0189") - buf.write("\3\2\2\2\u018a\u018b\3\2\2\2\u018b\u018c\3\2\2\2\u018c") - buf.write("\u018e\7\f\2\2\u018d\u0185\3\2\2\2\u018e\u018f\3\2\2\2") - buf.write("\u018f\u018d\3\2\2\2\u018f\u0190\3\2\2\2\u0190\u0192\3") - buf.write("\2\2\2\u0191\u0193\n\2\2\2\u0192\u0191\3\2\2\2\u0193\u0194") - buf.write("\3\2\2\2\u0194\u0192\3\2\2\2\u0194\u0195\3\2\2\2\u0195") - buf.write("\u0196\3\2\2\2\u0196\u0197\b\n\2\2\u0197\24\3\2\2\2\u0198") - buf.write("\u019c\7%\2\2\u0199\u019b\n\2\2\2\u019a\u0199\3\2\2\2") - buf.write("\u019b\u019e\3\2\2\2\u019c\u019a\3\2\2\2\u019c\u019d\3") - buf.write("\2\2\2\u019d\u019f\3\2\2\2\u019e\u019c\3\2\2\2\u019f\u01a0") - buf.write("\b\13\2\2\u01a0\26\3\2\2\2\u01a1\u01a2\7c\2\2\u01a2\u01a3") - buf.write("\7n\2\2\u01a3\u01a4\7k\2\2\u01a4\u01a5\7i\2\2\u01a5\u01a6") - buf.write("\7p\2\2\u01a6\u01a7\7c\2\2\u01a7\u01a8\7u\2\2\u01a8\30") - buf.write("\3\2\2\2\u01a9\u01aa\7c\2\2\u01aa\u01ab\7n\2\2\u01ab\u01ac") - buf.write("\7k\2\2\u01ac\u01ad\7i\2\2\u01ad\u01ae\7p\2\2\u01ae\u01af") - buf.write("\7q\2\2\u01af\u01b0\7h\2\2\u01b0\32\3\2\2\2\u01b1\u01b2") - buf.write("\7c\2\2\u01b2\u01b3\7u\2\2\u01b3\u01b4\7o\2\2\u01b4\34") - buf.write("\3\2\2\2\u01b5\u01b6\7c\2\2\u01b6\u01b7\7w\2\2\u01b7\u01b8") - buf.write("\7v\2\2\u01b8\u01b9\7q\2\2\u01b9\36\3\2\2\2\u01ba\u01bb") - buf.write("\7d\2\2\u01bb\u01bc\7q\2\2\u01bc\u01bd\7q\2\2\u01bd\u01be") - buf.write("\7n\2\2\u01be \3\2\2\2\u01bf\u01c0\7d\2\2\u01c0\u01c1") - buf.write("\7t\2\2\u01c1\u01c2\7g\2\2\u01c2\u01c3\7c\2\2\u01c3\u01c4") - buf.write("\7m\2\2\u01c4\"\3\2\2\2\u01c5\u01c6\7e\2\2\u01c6\u01c7") - buf.write("\7c\2\2\u01c7\u01c8\7u\2\2\u01c8\u01c9\7g\2\2\u01c9$\3") - buf.write("\2\2\2\u01ca\u01cb\7e\2\2\u01cb\u01cc\7c\2\2\u01cc\u01cd") - buf.write("\7v\2\2\u01cd\u01ce\7e\2\2\u01ce\u01cf\7j\2\2\u01cf&\3") - buf.write("\2\2\2\u01d0\u01d1\7e\2\2\u01d1\u01d2\7j\2\2\u01d2\u01d3") - buf.write("\7c\2\2\u01d3\u01d4\7t\2\2\u01d4(\3\2\2\2\u01d5\u01d6") - buf.write("\7e\2\2\u01d6\u01d7\7j\2\2\u01d7\u01d8\7c\2\2\u01d8\u01d9") - buf.write("\7t\2\2\u01d9\u01da\7\63\2\2\u01da\u01db\78\2\2\u01db") - buf.write("\u01dc\7a\2\2\u01dc\u01dd\7v\2\2\u01dd*\3\2\2\2\u01de") - buf.write("\u01df\7e\2\2\u01df\u01e0\7j\2\2\u01e0\u01e1\7c\2\2\u01e1") - buf.write("\u01e2\7t\2\2\u01e2\u01e3\7\65\2\2\u01e3\u01e4\7\64\2") - buf.write("\2\u01e4\u01e5\7a\2\2\u01e5\u01e6\7v\2\2\u01e6,\3\2\2") - buf.write("\2\u01e7\u01e8\7e\2\2\u01e8\u01e9\7n\2\2\u01e9\u01ea\7") - buf.write("c\2\2\u01ea\u01eb\7u\2\2\u01eb\u01ec\7u\2\2\u01ec.\3\2") - buf.write("\2\2\u01ed\u01ee\7e\2\2\u01ee\u01ef\7q\2\2\u01ef\u01f0") - buf.write("\7p\2\2\u01f0\u01f1\7u\2\2\u01f1\u01f2\7v\2\2\u01f2\60") - buf.write("\3\2\2\2\u01f3\u01f4\7e\2\2\u01f4\u01f5\7q\2\2\u01f5\u01f6") - buf.write("\7p\2\2\u01f6\u01f7\7u\2\2\u01f7\u01f8\7v\2\2\u01f8\u01f9") - buf.write("\7g\2\2\u01f9\u01fa\7z\2\2\u01fa\u01fb\7r\2\2\u01fb\u01fc") - buf.write("\7t\2\2\u01fc\62\3\2\2\2\u01fd\u01fe\7e\2\2\u01fe\u01ff") - buf.write("\7q\2\2\u01ff\u0200\7p\2\2\u0200\u0201\7u\2\2\u0201\u0202") - buf.write("\7v\2\2\u0202\u0203\7a\2\2\u0203\u0204\7e\2\2\u0204\u0205") - buf.write("\7c\2\2\u0205\u0206\7u\2\2\u0206\u0207\7v\2\2\u0207\64") - buf.write("\3\2\2\2\u0208\u0209\7e\2\2\u0209\u020a\7q\2\2\u020a\u020b") - buf.write("\7p\2\2\u020b\u020c\7v\2\2\u020c\u020d\7k\2\2\u020d\u020e") - buf.write("\7p\2\2\u020e\u020f\7w\2\2\u020f\u0210\7g\2\2\u0210\66") - buf.write("\3\2\2\2\u0211\u0212\7f\2\2\u0212\u0213\7g\2\2\u0213\u0214") - buf.write("\7e\2\2\u0214\u0215\7n\2\2\u0215\u0216\7v\2\2\u0216\u0217") - buf.write("\7{\2\2\u0217\u0218\7r\2\2\u0218\u0219\7g\2\2\u02198\3") - buf.write("\2\2\2\u021a\u021b\7f\2\2\u021b\u021c\7g\2\2\u021c\u021d") - buf.write("\7h\2\2\u021d\u021e\7c\2\2\u021e\u021f\7w\2\2\u021f\u0220") - buf.write("\7n\2\2\u0220\u0221\7v\2\2\u0221:\3\2\2\2\u0222\u0223") - buf.write("\7f\2\2\u0223\u0224\7g\2\2\u0224\u0225\7n\2\2\u0225\u0226") - buf.write("\7g\2\2\u0226\u0227\7v\2\2\u0227\u0228\7g\2\2\u0228<\3") - buf.write("\2\2\2\u0229\u022a\7f\2\2\u022a\u022b\7q\2\2\u022b>\3") - buf.write("\2\2\2\u022c\u022d\7f\2\2\u022d\u022e\7q\2\2\u022e\u022f") - buf.write("\7w\2\2\u022f\u0230\7d\2\2\u0230\u0231\7n\2\2\u0231\u0232") - buf.write("\7g\2\2\u0232@\3\2\2\2\u0233\u0234\7f\2\2\u0234\u0235") - buf.write("\7{\2\2\u0235\u0236\7p\2\2\u0236\u0237\7c\2\2\u0237\u0238") - buf.write("\7o\2\2\u0238\u0239\7k\2\2\u0239\u023a\7e\2\2\u023a\u023b") - buf.write("\7a\2\2\u023b\u023c\7e\2\2\u023c\u023d\7c\2\2\u023d\u023e") - buf.write("\7u\2\2\u023e\u023f\7v\2\2\u023fB\3\2\2\2\u0240\u0241") - buf.write("\7g\2\2\u0241\u0242\7n\2\2\u0242\u0243\7u\2\2\u0243\u0244") - buf.write("\7g\2\2\u0244D\3\2\2\2\u0245\u0246\7g\2\2\u0246\u0247") - buf.write("\7p\2\2\u0247\u0248\7w\2\2\u0248\u0249\7o\2\2\u0249F\3") - buf.write("\2\2\2\u024a\u024b\7g\2\2\u024b\u024c\7z\2\2\u024c\u024d") - buf.write("\7r\2\2\u024d\u024e\7n\2\2\u024e\u024f\7k\2\2\u024f\u0250") - buf.write("\7e\2\2\u0250\u0251\7k\2\2\u0251\u0252\7v\2\2\u0252H\3") - buf.write("\2\2\2\u0253\u0254\7g\2\2\u0254\u0255\7z\2\2\u0255\u0256") - buf.write("\7r\2\2\u0256\u0257\7q\2\2\u0257\u0258\7t\2\2\u0258\u0259") - buf.write("\7v\2\2\u0259J\3\2\2\2\u025a\u025b\7g\2\2\u025b\u025c") - buf.write("\7z\2\2\u025c\u025d\7v\2\2\u025d\u025e\7g\2\2\u025e\u025f") - buf.write("\7t\2\2\u025f\u0260\7p\2\2\u0260L\3\2\2\2\u0261\u0262") - buf.write("\7h\2\2\u0262\u0263\7k\2\2\u0263\u0264\7p\2\2\u0264\u0265") - buf.write("\7c\2\2\u0265\u0266\7n\2\2\u0266N\3\2\2\2\u0267\u0268") - buf.write("\7h\2\2\u0268\u0269\7n\2\2\u0269\u026a\7q\2\2\u026a\u026b") - buf.write("\7c\2\2\u026b\u026c\7v\2\2\u026cP\3\2\2\2\u026d\u026e") - buf.write("\7h\2\2\u026e\u026f\7q\2\2\u026f\u0270\7t\2\2\u0270R\3") - buf.write("\2\2\2\u0271\u0272\7h\2\2\u0272\u0273\7t\2\2\u0273\u0274") - buf.write("\7k\2\2\u0274\u0275\7g\2\2\u0275\u0276\7p\2\2\u0276\u0277") - buf.write("\7f\2\2\u0277T\3\2\2\2\u0278\u0279\7i\2\2\u0279\u027a") - buf.write("\7q\2\2\u027a\u027b\7v\2\2\u027b\u027c\7q\2\2\u027cV\3") - buf.write("\2\2\2\u027d\u027e\7k\2\2\u027e\u027f\7h\2\2\u027fX\3") - buf.write("\2\2\2\u0280\u0281\7k\2\2\u0281\u0282\7p\2\2\u0282\u0283") - buf.write("\7n\2\2\u0283\u0284\7k\2\2\u0284\u0285\7p\2\2\u0285\u0286") - buf.write("\7g\2\2\u0286Z\3\2\2\2\u0287\u0288\7k\2\2\u0288\u0289") - buf.write("\7p\2\2\u0289\u028a\7v\2\2\u028a\\\3\2\2\2\u028b\u028c") - buf.write("\7n\2\2\u028c\u028d\7q\2\2\u028d\u028e\7p\2\2\u028e\u028f") - buf.write("\7i\2\2\u028f^\3\2\2\2\u0290\u0291\7o\2\2\u0291\u0292") - buf.write("\7w\2\2\u0292\u0293\7v\2\2\u0293\u0294\7c\2\2\u0294\u0295") - buf.write("\7d\2\2\u0295\u0296\7n\2\2\u0296\u0297\7g\2\2\u0297`\3") - buf.write("\2\2\2\u0298\u0299\7p\2\2\u0299\u029a\7c\2\2\u029a\u029b") - buf.write("\7o\2\2\u029b\u029c\7g\2\2\u029c\u029d\7u\2\2\u029d\u029e") - buf.write("\7r\2\2\u029e\u029f\7c\2\2\u029f\u02a0\7e\2\2\u02a0\u02a1") - buf.write("\7g\2\2\u02a1b\3\2\2\2\u02a2\u02a3\7p\2\2\u02a3\u02a4") - buf.write("\7g\2\2\u02a4\u02a5\7y\2\2\u02a5d\3\2\2\2\u02a6\u02a7") - buf.write("\7p\2\2\u02a7\u02a8\7q\2\2\u02a8\u02a9\7g\2\2\u02a9\u02aa") - buf.write("\7z\2\2\u02aa\u02ab\7e\2\2\u02ab\u02ac\7g\2\2\u02ac\u02ad") - buf.write("\7r\2\2\u02ad\u02ae\7v\2\2\u02aef\3\2\2\2\u02af\u02b0") - buf.write("\7p\2\2\u02b0\u02b1\7w\2\2\u02b1\u02b2\7n\2\2\u02b2\u02b3") - buf.write("\7n\2\2\u02b3\u02b4\7r\2\2\u02b4\u02b5\7v\2\2\u02b5\u02b6") - buf.write("\7t\2\2\u02b6h\3\2\2\2\u02b7\u02b8\7q\2\2\u02b8\u02b9") - buf.write("\7r\2\2\u02b9\u02ba\7g\2\2\u02ba\u02bb\7t\2\2\u02bb\u02bc") - buf.write("\7c\2\2\u02bc\u02bd\7v\2\2\u02bd\u02be\7q\2\2\u02be\u02bf") - buf.write("\7t\2\2\u02bfj\3\2\2\2\u02c0\u02c1\7q\2\2\u02c1\u02c2") - buf.write("\7x\2\2\u02c2\u02c3\7g\2\2\u02c3\u02c4\7t\2\2\u02c4\u02c5") - buf.write("\7t\2\2\u02c5\u02c6\7k\2\2\u02c6\u02c7\7f\2\2\u02c7\u02c8") - buf.write("\7g\2\2\u02c8l\3\2\2\2\u02c9\u02ca\7r\2\2\u02ca\u02cb") - buf.write("\7t\2\2\u02cb\u02cc\7k\2\2\u02cc\u02cd\7x\2\2\u02cd\u02ce") - buf.write("\7c\2\2\u02ce\u02cf\7v\2\2\u02cf\u02d0\7g\2\2\u02d0n\3") - buf.write("\2\2\2\u02d1\u02d2\7r\2\2\u02d2\u02d3\7t\2\2\u02d3\u02d4") - buf.write("\7q\2\2\u02d4\u02d5\7v\2\2\u02d5\u02d6\7g\2\2\u02d6\u02d7") - buf.write("\7e\2\2\u02d7\u02d8\7v\2\2\u02d8\u02d9\7g\2\2\u02d9\u02da") - buf.write("\7f\2\2\u02dap\3\2\2\2\u02db\u02dc\7r\2\2\u02dc\u02dd") - buf.write("\7w\2\2\u02dd\u02de\7d\2\2\u02de\u02df\7n\2\2\u02df\u02e0") - buf.write("\7k\2\2\u02e0\u02e1\7e\2\2\u02e1r\3\2\2\2\u02e2\u02e3") - buf.write("\7t\2\2\u02e3\u02e4\7g\2\2\u02e4\u02e5\7i\2\2\u02e5\u02e6") - buf.write("\7k\2\2\u02e6\u02e7\7u\2\2\u02e7\u02e8\7v\2\2\u02e8\u02e9") - buf.write("\7g\2\2\u02e9\u02ea\7t\2\2\u02eat\3\2\2\2\u02eb\u02ec") - buf.write("\7t\2\2\u02ec\u02ed\7g\2\2\u02ed\u02ee\7k\2\2\u02ee\u02ef") - buf.write("\7p\2\2\u02ef\u02f0\7v\2\2\u02f0\u02f1\7g\2\2\u02f1\u02f2") - buf.write("\7t\2\2\u02f2\u02f3\7r\2\2\u02f3\u02f4\7t\2\2\u02f4\u02f5") - buf.write("\7g\2\2\u02f5\u02f6\7v\2\2\u02f6\u02f7\7a\2\2\u02f7\u02f8") - buf.write("\7e\2\2\u02f8\u02f9\7c\2\2\u02f9\u02fa\7u\2\2\u02fa\u02fb") - buf.write("\7v\2\2\u02fbv\3\2\2\2\u02fc\u02fd\7t\2\2\u02fd\u02fe") - buf.write("\7g\2\2\u02fe\u02ff\7v\2\2\u02ff\u0300\7w\2\2\u0300\u0301") - buf.write("\7t\2\2\u0301\u0302\7p\2\2\u0302x\3\2\2\2\u0303\u0304") - buf.write("\7u\2\2\u0304\u0305\7j\2\2\u0305\u0306\7q\2\2\u0306\u0307") - buf.write("\7t\2\2\u0307\u0308\7v\2\2\u0308z\3\2\2\2\u0309\u030a") - buf.write("\7u\2\2\u030a\u030b\7k\2\2\u030b\u030c\7i\2\2\u030c\u030d") - buf.write("\7p\2\2\u030d\u030e\7g\2\2\u030e\u030f\7f\2\2\u030f|\3") - buf.write("\2\2\2\u0310\u0311\7u\2\2\u0311\u0312\7k\2\2\u0312\u0313") - buf.write("\7|\2\2\u0313\u0314\7g\2\2\u0314\u0315\7q\2\2\u0315\u0316") - buf.write("\7h\2\2\u0316~\3\2\2\2\u0317\u0318\7u\2\2\u0318\u0319") - buf.write("\7v\2\2\u0319\u031a\7c\2\2\u031a\u031b\7v\2\2\u031b\u031c") - buf.write("\7k\2\2\u031c\u031d\7e\2\2\u031d\u0080\3\2\2\2\u031e\u031f") - buf.write("\7u\2\2\u031f\u0320\7v\2\2\u0320\u0321\7c\2\2\u0321\u0322") - buf.write("\7v\2\2\u0322\u0323\7k\2\2\u0323\u0324\7e\2\2\u0324\u0325") - buf.write("\7a\2\2\u0325\u0326\7c\2\2\u0326\u0327\7u\2\2\u0327\u0328") - buf.write("\7u\2\2\u0328\u0329\7g\2\2\u0329\u032a\7t\2\2\u032a\u032b") - buf.write("\7v\2\2\u032b\u0082\3\2\2\2\u032c\u032d\7u\2\2\u032d\u032e") - buf.write("\7v\2\2\u032e\u032f\7c\2\2\u032f\u0330\7v\2\2\u0330\u0331") - buf.write("\7k\2\2\u0331\u0332\7e\2\2\u0332\u0333\7a\2\2\u0333\u0334") - buf.write("\7e\2\2\u0334\u0335\7c\2\2\u0335\u0336\7u\2\2\u0336\u0337") - buf.write("\7v\2\2\u0337\u0084\3\2\2\2\u0338\u0339\7u\2\2\u0339\u033a") - buf.write("\7v\2\2\u033a\u033b\7t\2\2\u033b\u033c\7w\2\2\u033c\u033d") - buf.write("\7e\2\2\u033d\u033e\7v\2\2\u033e\u0086\3\2\2\2\u033f\u0340") - buf.write("\7u\2\2\u0340\u0341\7y\2\2\u0341\u0342\7k\2\2\u0342\u0343") - buf.write("\7v\2\2\u0343\u0344\7e\2\2\u0344\u0345\7j\2\2\u0345\u0088") - buf.write("\3\2\2\2\u0346\u0347\7v\2\2\u0347\u0348\7g\2\2\u0348\u0349") - buf.write("\7o\2\2\u0349\u034a\7r\2\2\u034a\u034b\7n\2\2\u034b\u034c") - buf.write("\7c\2\2\u034c\u034d\7v\2\2\u034d\u034e\7g\2\2\u034e\u008a") - buf.write("\3\2\2\2\u034f\u0350\7v\2\2\u0350\u0351\7j\2\2\u0351\u0352") - buf.write("\7k\2\2\u0352\u0353\7u\2\2\u0353\u008c\3\2\2\2\u0354\u0355") - buf.write("\7v\2\2\u0355\u0356\7j\2\2\u0356\u0357\7t\2\2\u0357\u0358") - buf.write("\7g\2\2\u0358\u0359\7c\2\2\u0359\u035a\7f\2\2\u035a\u035b") - buf.write("\7a\2\2\u035b\u035c\7n\2\2\u035c\u035d\7q\2\2\u035d\u035e") - buf.write("\7e\2\2\u035e\u035f\7c\2\2\u035f\u0360\7n\2\2\u0360\u008e") - buf.write("\3\2\2\2\u0361\u0362\7v\2\2\u0362\u0363\7j\2\2\u0363\u0364") - buf.write("\7t\2\2\u0364\u0365\7q\2\2\u0365\u0366\7y\2\2\u0366\u0090") - buf.write("\3\2\2\2\u0367\u0368\7v\2\2\u0368\u0369\7t\2\2\u0369\u036a") - buf.write("\7{\2\2\u036a\u0092\3\2\2\2\u036b\u036c\7v\2\2\u036c\u036d") - buf.write("\7{\2\2\u036d\u036e\7r\2\2\u036e\u036f\7g\2\2\u036f\u0370") - buf.write("\7f\2\2\u0370\u0371\7g\2\2\u0371\u0372\7h\2\2\u0372\u0094") - buf.write("\3\2\2\2\u0373\u0374\7v\2\2\u0374\u0375\7{\2\2\u0375\u0376") - buf.write("\7r\2\2\u0376\u0377\7g\2\2\u0377\u0378\7k\2\2\u0378\u0379") - buf.write("\7f\2\2\u0379\u0096\3\2\2\2\u037a\u037b\7v\2\2\u037b\u037c") - buf.write("\7{\2\2\u037c\u037d\7r\2\2\u037d\u037e\7g\2\2\u037e\u037f") - buf.write("\7p\2\2\u037f\u0380\7c\2\2\u0380\u0381\7o\2\2\u0381\u0382") - buf.write("\7g\2\2\u0382\u0098\3\2\2\2\u0383\u0384\7w\2\2\u0384\u0385") - buf.write("\7p\2\2\u0385\u0386\7k\2\2\u0386\u0387\7q\2\2\u0387\u0388") - buf.write("\7p\2\2\u0388\u009a\3\2\2\2\u0389\u038a\7w\2\2\u038a\u038b") - buf.write("\7p\2\2\u038b\u038c\7u\2\2\u038c\u038d\7k\2\2\u038d\u038e") - buf.write("\7i\2\2\u038e\u038f\7p\2\2\u038f\u0390\7g\2\2\u0390\u0391") - buf.write("\7f\2\2\u0391\u009c\3\2\2\2\u0392\u0393\7w\2\2\u0393\u0394") - buf.write("\7u\2\2\u0394\u0395\7k\2\2\u0395\u0396\7p\2\2\u0396\u0397") - buf.write("\7i\2\2\u0397\u009e\3\2\2\2\u0398\u0399\7x\2\2\u0399\u039a") - buf.write("\7k\2\2\u039a\u039b\7t\2\2\u039b\u039c\7v\2\2\u039c\u039d") - buf.write("\7w\2\2\u039d\u039e\7c\2\2\u039e\u039f\7n\2\2\u039f\u00a0") - buf.write("\3\2\2\2\u03a0\u03a1\7x\2\2\u03a1\u03a2\7q\2\2\u03a2\u03a3") - buf.write("\7k\2\2\u03a3\u03a4\7f\2\2\u03a4\u00a2\3\2\2\2\u03a5\u03a6") - buf.write("\7x\2\2\u03a6\u03a7\7q\2\2\u03a7\u03a8\7n\2\2\u03a8\u03a9") - buf.write("\7c\2\2\u03a9\u03aa\7v\2\2\u03aa\u03ab\7k\2\2\u03ab\u03ac") - buf.write("\7n\2\2\u03ac\u03ad\7g\2\2\u03ad\u00a4\3\2\2\2\u03ae\u03af") - buf.write("\7y\2\2\u03af\u03b0\7e\2\2\u03b0\u03b1\7j\2\2\u03b1\u03b2") - buf.write("\7c\2\2\u03b2\u03b3\7t\2\2\u03b3\u03b4\7a\2\2\u03b4\u03b5") - buf.write("\7v\2\2\u03b5\u00a6\3\2\2\2\u03b6\u03b7\7y\2\2\u03b7\u03b8") - buf.write("\7j\2\2\u03b8\u03b9\7k\2\2\u03b9\u03ba\7n\2\2\u03ba\u03bb") - buf.write("\7g\2\2\u03bb\u00a8\3\2\2\2\u03bc\u03bd\7*\2\2\u03bd\u00aa") - buf.write("\3\2\2\2\u03be\u03bf\7+\2\2\u03bf\u00ac\3\2\2\2\u03c0") - buf.write("\u03c1\7]\2\2\u03c1\u00ae\3\2\2\2\u03c2\u03c3\7_\2\2\u03c3") - buf.write("\u00b0\3\2\2\2\u03c4\u03c5\7}\2\2\u03c5\u00b2\3\2\2\2") - buf.write("\u03c6\u03c7\7\177\2\2\u03c7\u00b4\3\2\2\2\u03c8\u03c9") - buf.write("\7-\2\2\u03c9\u00b6\3\2\2\2\u03ca\u03cb\7/\2\2\u03cb\u00b8") - buf.write("\3\2\2\2\u03cc\u03cd\7,\2\2\u03cd\u00ba\3\2\2\2\u03ce") - buf.write("\u03cf\7\61\2\2\u03cf\u00bc\3\2\2\2\u03d0\u03d1\7\'\2") - buf.write("\2\u03d1\u00be\3\2\2\2\u03d2\u03d3\7`\2\2\u03d3\u00c0") - buf.write("\3\2\2\2\u03d4\u03d5\7(\2\2\u03d5\u00c2\3\2\2\2\u03d6") - buf.write("\u03d7\7~\2\2\u03d7\u00c4\3\2\2\2\u03d8\u03d9\7\u0080") - buf.write("\2\2\u03d9\u00c6\3\2\2\2\u03da\u03df\7#\2\2\u03db\u03dc") - buf.write("\7p\2\2\u03dc\u03dd\7q\2\2\u03dd\u03df\7v\2\2\u03de\u03da") - buf.write("\3\2\2\2\u03de\u03db\3\2\2\2\u03df\u00c8\3\2\2\2\u03e0") - buf.write("\u03e1\7?\2\2\u03e1\u00ca\3\2\2\2\u03e2\u03e3\7>\2\2\u03e3") - buf.write("\u00cc\3\2\2\2\u03e4\u03e5\7@\2\2\u03e5\u00ce\3\2\2\2") - buf.write("\u03e6\u03e7\7-\2\2\u03e7\u03e8\7?\2\2\u03e8\u00d0\3\2") - buf.write("\2\2\u03e9\u03ea\7/\2\2\u03ea\u03eb\7?\2\2\u03eb\u00d2") - buf.write("\3\2\2\2\u03ec\u03ed\7,\2\2\u03ed\u03ee\7?\2\2\u03ee\u00d4") - buf.write("\3\2\2\2\u03ef\u03f0\7\61\2\2\u03f0\u03f1\7?\2\2\u03f1") - buf.write("\u00d6\3\2\2\2\u03f2\u03f3\7\'\2\2\u03f3\u03f4\7?\2\2") - buf.write("\u03f4\u00d8\3\2\2\2\u03f5\u03f6\7`\2\2\u03f6\u03f7\7") - buf.write("?\2\2\u03f7\u00da\3\2\2\2\u03f8\u03f9\7(\2\2\u03f9\u03fa") - buf.write("\7?\2\2\u03fa\u00dc\3\2\2\2\u03fb\u03fc\7~\2\2\u03fc\u03fd") - buf.write("\7?\2\2\u03fd\u00de\3\2\2\2\u03fe\u03ff\7>\2\2\u03ff\u0400") - buf.write("\7>\2\2\u0400\u00e0\3\2\2\2\u0401\u0402\7@\2\2\u0402\u0403") - buf.write("\7@\2\2\u0403\u00e2\3\2\2\2\u0404\u0405\7>\2\2\u0405\u0406") - buf.write("\7>\2\2\u0406\u0407\7?\2\2\u0407\u00e4\3\2\2\2\u0408\u0409") - buf.write("\7@\2\2\u0409\u040a\7@\2\2\u040a\u040b\7?\2\2\u040b\u00e6") - buf.write("\3\2\2\2\u040c\u040d\7?\2\2\u040d\u040e\7?\2\2\u040e\u00e8") - buf.write("\3\2\2\2\u040f\u0410\7#\2\2\u0410\u0411\7?\2\2\u0411\u00ea") - buf.write("\3\2\2\2\u0412\u0413\7>\2\2\u0413\u0414\7?\2\2\u0414\u00ec") - buf.write("\3\2\2\2\u0415\u0416\7@\2\2\u0416\u0417\7?\2\2\u0417\u00ee") - buf.write("\3\2\2\2\u0418\u0419\7(\2\2\u0419\u041e\7(\2\2\u041a\u041b") - buf.write("\7c\2\2\u041b\u041c\7p\2\2\u041c\u041e\7f\2\2\u041d\u0418") - buf.write("\3\2\2\2\u041d\u041a\3\2\2\2\u041e\u00f0\3\2\2\2\u041f") - buf.write("\u0420\7~\2\2\u0420\u0424\7~\2\2\u0421\u0422\7q\2\2\u0422") - buf.write("\u0424\7t\2\2\u0423\u041f\3\2\2\2\u0423\u0421\3\2\2\2") - buf.write("\u0424\u00f2\3\2\2\2\u0425\u0426\7-\2\2\u0426\u0427\7") - buf.write("-\2\2\u0427\u00f4\3\2\2\2\u0428\u0429\7/\2\2\u0429\u042a") - buf.write("\7/\2\2\u042a\u00f6\3\2\2\2\u042b\u042c\7.\2\2\u042c\u00f8") - buf.write("\3\2\2\2\u042d\u042e\7/\2\2\u042e\u042f\7@\2\2\u042f\u0430") - buf.write("\7,\2\2\u0430\u00fa\3\2\2\2\u0431\u0432\7/\2\2\u0432\u0433") - buf.write("\7@\2\2\u0433\u00fc\3\2\2\2\u0434\u0435\7A\2\2\u0435\u00fe") - buf.write("\3\2\2\2\u0436\u0437\7<\2\2\u0437\u0100\3\2\2\2\u0438") - buf.write("\u0439\7<\2\2\u0439\u043a\7<\2\2\u043a\u0102\3\2\2\2\u043b") - buf.write("\u043c\7=\2\2\u043c\u0104\3\2\2\2\u043d\u043e\7\60\2\2") - buf.write("\u043e\u0106\3\2\2\2\u043f\u0440\7\60\2\2\u0440\u0441") - buf.write("\7,\2\2\u0441\u0108\3\2\2\2\u0442\u0443\7\60\2\2\u0443") - buf.write("\u0444\7\60\2\2\u0444\u0445\7\60\2\2\u0445\u010a\3\2\2") - buf.write("\2\u0446\u0447\5\u0125\u0093\2\u0447\u0448\5\u0125\u0093") - buf.write("\2\u0448\u0449\5\u0125\u0093\2\u0449\u044a\5\u0125\u0093") - buf.write("\2\u044a\u010c\3\2\2\2\u044b\u044c\7^\2\2\u044c\u044d") - buf.write("\7w\2\2\u044d\u044e\3\2\2\2\u044e\u0456\5\u010b\u0086") - buf.write("\2\u044f\u0450\7^\2\2\u0450\u0451\7W\2\2\u0451\u0452\3") - buf.write("\2\2\2\u0452\u0453\5\u010b\u0086\2\u0453\u0454\5\u010b") - buf.write("\u0086\2\u0454\u0456\3\2\2\2\u0455\u044b\3\2\2\2\u0455") - buf.write("\u044f\3\2\2\2\u0456\u010e\3\2\2\2\u0457\u045c\5\u0111") - buf.write("\u0089\2\u0458\u045b\5\u0111\u0089\2\u0459\u045b\5\u0115") - buf.write("\u008b\2\u045a\u0458\3\2\2\2\u045a\u0459\3\2\2\2\u045b") - buf.write("\u045e\3\2\2\2\u045c\u045a\3\2\2\2\u045c\u045d\3\2\2\2") - buf.write("\u045d\u0110\3\2\2\2\u045e\u045c\3\2\2\2\u045f\u0462\5") - buf.write("\u0113\u008a\2\u0460\u0462\5\u010d\u0087\2\u0461\u045f") - buf.write("\3\2\2\2\u0461\u0460\3\2\2\2\u0462\u0112\3\2\2\2\u0463") - buf.write("\u0464\t\3\2\2\u0464\u0114\3\2\2\2\u0465\u0466\t\4\2\2") - buf.write("\u0466\u0116\3\2\2\2\u0467\u0469\5\u0119\u008d\2\u0468") - buf.write("\u046a\5\u0129\u0095\2\u0469\u0468\3\2\2\2\u0469\u046a") - buf.write("\3\2\2\2\u046a\u0478\3\2\2\2\u046b\u046d\5\u011b\u008e") - buf.write("\2\u046c\u046e\5\u0129\u0095\2\u046d\u046c\3\2\2\2\u046d") - buf.write("\u046e\3\2\2\2\u046e\u0478\3\2\2\2\u046f\u0471\5\u011d") - buf.write("\u008f\2\u0470\u0472\5\u0129\u0095\2\u0471\u0470\3\2\2") - buf.write("\2\u0471\u0472\3\2\2\2\u0472\u0478\3\2\2\2\u0473\u0475") - buf.write("\5\u011f\u0090\2\u0474\u0476\5\u0129\u0095\2\u0475\u0474") - buf.write("\3\2\2\2\u0475\u0476\3\2\2\2\u0476\u0478\3\2\2\2\u0477") - buf.write("\u0467\3\2\2\2\u0477\u046b\3\2\2\2\u0477\u046f\3\2\2\2") - buf.write("\u0477\u0473\3\2\2\2\u0478\u0118\3\2\2\2\u0479\u0480\5") - buf.write("\u0121\u0091\2\u047a\u047c\7)\2\2\u047b\u047a\3\2\2\2") - buf.write("\u047b\u047c\3\2\2\2\u047c\u047d\3\2\2\2\u047d\u047f\5") - buf.write("\u0115\u008b\2\u047e\u047b\3\2\2\2\u047f\u0482\3\2\2\2") - buf.write("\u0480\u047e\3\2\2\2\u0480\u0481\3\2\2\2\u0481\u011a\3") - buf.write("\2\2\2\u0482\u0480\3\2\2\2\u0483\u048a\7\62\2\2\u0484") - buf.write("\u0486\7)\2\2\u0485\u0484\3\2\2\2\u0485\u0486\3\2\2\2") - buf.write("\u0486\u0487\3\2\2\2\u0487\u0489\5\u0123\u0092\2\u0488") - buf.write("\u0485\3\2\2\2\u0489\u048c\3\2\2\2\u048a\u0488\3\2\2\2") - buf.write("\u048a\u048b\3\2\2\2\u048b\u011c\3\2\2\2\u048c\u048a\3") - buf.write("\2\2\2\u048d\u048e\7\62\2\2\u048e\u0492\7z\2\2\u048f\u0490") - buf.write("\7\62\2\2\u0490\u0492\7Z\2\2\u0491\u048d\3\2\2\2\u0491") - buf.write("\u048f\3\2\2\2\u0492\u0493\3\2\2\2\u0493\u049a\5\u0125") - buf.write("\u0093\2\u0494\u0496\7)\2\2\u0495\u0494\3\2\2\2\u0495") - buf.write("\u0496\3\2\2\2\u0496\u0497\3\2\2\2\u0497\u0499\5\u0125") - buf.write("\u0093\2\u0498\u0495\3\2\2\2\u0499\u049c\3\2\2\2\u049a") - buf.write("\u0498\3\2\2\2\u049a\u049b\3\2\2\2\u049b\u011e\3\2\2\2") - buf.write("\u049c\u049a\3\2\2\2\u049d\u049e\7\62\2\2\u049e\u04a2") - buf.write("\7d\2\2\u049f\u04a0\7\62\2\2\u04a0\u04a2\7D\2\2\u04a1") - buf.write("\u049d\3\2\2\2\u04a1\u049f\3\2\2\2\u04a2\u04a3\3\2\2\2") - buf.write("\u04a3\u04aa\5\u0127\u0094\2\u04a4\u04a6\7)\2\2\u04a5") - buf.write("\u04a4\3\2\2\2\u04a5\u04a6\3\2\2\2\u04a6\u04a7\3\2\2\2") - buf.write("\u04a7\u04a9\5\u0127\u0094\2\u04a8\u04a5\3\2\2\2\u04a9") - buf.write("\u04ac\3\2\2\2\u04aa\u04a8\3\2\2\2\u04aa\u04ab\3\2\2\2") - buf.write("\u04ab\u0120\3\2\2\2\u04ac\u04aa\3\2\2\2\u04ad\u04ae\t") - buf.write("\5\2\2\u04ae\u0122\3\2\2\2\u04af\u04b0\t\6\2\2\u04b0\u0124") - buf.write("\3\2\2\2\u04b1\u04b2\t\7\2\2\u04b2\u0126\3\2\2\2\u04b3") - buf.write("\u04b4\t\b\2\2\u04b4\u0128\3\2\2\2\u04b5\u04b7\5\u012b") - buf.write("\u0096\2\u04b6\u04b8\5\u012d\u0097\2\u04b7\u04b6\3\2\2") - buf.write("\2\u04b7\u04b8\3\2\2\2\u04b8\u04c6\3\2\2\2\u04b9\u04bb") - buf.write("\5\u012b\u0096\2\u04ba\u04bc\5\u012f\u0098\2\u04bb\u04ba") - buf.write("\3\2\2\2\u04bb\u04bc\3\2\2\2\u04bc\u04c6\3\2\2\2\u04bd") - buf.write("\u04bf\5\u012d\u0097\2\u04be\u04c0\5\u012b\u0096\2\u04bf") - buf.write("\u04be\3\2\2\2\u04bf\u04c0\3\2\2\2\u04c0\u04c6\3\2\2\2") - buf.write("\u04c1\u04c3\5\u012f\u0098\2\u04c2\u04c4\5\u012b\u0096") - buf.write("\2\u04c3\u04c2\3\2\2\2\u04c3\u04c4\3\2\2\2\u04c4\u04c6") - buf.write("\3\2\2\2\u04c5\u04b5\3\2\2\2\u04c5\u04b9\3\2\2\2\u04c5") - buf.write("\u04bd\3\2\2\2\u04c5\u04c1\3\2\2\2\u04c6\u012a\3\2\2\2") - buf.write("\u04c7\u04c8\t\t\2\2\u04c8\u012c\3\2\2\2\u04c9\u04ca\t") - buf.write("\n\2\2\u04ca\u012e\3\2\2\2\u04cb\u04cc\7n\2\2\u04cc\u04d0") - buf.write("\7n\2\2\u04cd\u04ce\7N\2\2\u04ce\u04d0\7N\2\2\u04cf\u04cb") - buf.write("\3\2\2\2\u04cf\u04cd\3\2\2\2\u04d0\u0130\3\2\2\2\u04d1") - buf.write("\u04d3\7)\2\2\u04d2\u04d4\5\u0133\u009a\2\u04d3\u04d2") - buf.write("\3\2\2\2\u04d4\u04d5\3\2\2\2\u04d5\u04d3\3\2\2\2\u04d5") - buf.write("\u04d6\3\2\2\2\u04d6\u04d7\3\2\2\2\u04d7\u04d8\7)\2\2") - buf.write("\u04d8\u04f5\3\2\2\2\u04d9\u04da\7w\2\2\u04da\u04dc\7") - buf.write(")\2\2\u04db\u04dd\5\u0133\u009a\2\u04dc\u04db\3\2\2\2") - buf.write("\u04dd\u04de\3\2\2\2\u04de\u04dc\3\2\2\2\u04de\u04df\3") - buf.write("\2\2\2\u04df\u04e0\3\2\2\2\u04e0\u04e1\7)\2\2\u04e1\u04f5") - buf.write("\3\2\2\2\u04e2\u04e3\7W\2\2\u04e3\u04e5\7)\2\2\u04e4\u04e6") - buf.write("\5\u0133\u009a\2\u04e5\u04e4\3\2\2\2\u04e6\u04e7\3\2\2") - buf.write("\2\u04e7\u04e5\3\2\2\2\u04e7\u04e8\3\2\2\2\u04e8\u04e9") - buf.write("\3\2\2\2\u04e9\u04ea\7)\2\2\u04ea\u04f5\3\2\2\2\u04eb") - buf.write("\u04ec\7N\2\2\u04ec\u04ee\7)\2\2\u04ed\u04ef\5\u0133\u009a") - buf.write("\2\u04ee\u04ed\3\2\2\2\u04ef\u04f0\3\2\2\2\u04f0\u04ee") - buf.write("\3\2\2\2\u04f0\u04f1\3\2\2\2\u04f1\u04f2\3\2\2\2\u04f2") - buf.write("\u04f3\7)\2\2\u04f3\u04f5\3\2\2\2\u04f4\u04d1\3\2\2\2") - buf.write("\u04f4\u04d9\3\2\2\2\u04f4\u04e2\3\2\2\2\u04f4\u04eb\3") - buf.write("\2\2\2\u04f5\u0132\3\2\2\2\u04f6\u04fa\n\13\2\2\u04f7") - buf.write("\u04fa\5\u0135\u009b\2\u04f8\u04fa\5\u010d\u0087\2\u04f9") - buf.write("\u04f6\3\2\2\2\u04f9\u04f7\3\2\2\2\u04f9\u04f8\3\2\2\2") - buf.write("\u04fa\u0134\3\2\2\2\u04fb\u04ff\5\u0137\u009c\2\u04fc") - buf.write("\u04ff\5\u0139\u009d\2\u04fd\u04ff\5\u013b\u009e\2\u04fe") - buf.write("\u04fb\3\2\2\2\u04fe\u04fc\3\2\2\2\u04fe\u04fd\3\2\2\2") - buf.write("\u04ff\u0136\3\2\2\2\u0500\u0501\7^\2\2\u0501\u0517\7") - buf.write(")\2\2\u0502\u0503\7^\2\2\u0503\u0517\7$\2\2\u0504\u0505") - buf.write("\7^\2\2\u0505\u0517\7A\2\2\u0506\u0507\7^\2\2\u0507\u0517") - buf.write("\7^\2\2\u0508\u0509\7^\2\2\u0509\u0517\7c\2\2\u050a\u050b") - buf.write("\7^\2\2\u050b\u0517\7d\2\2\u050c\u050d\7^\2\2\u050d\u0517") - buf.write("\7h\2\2\u050e\u050f\7^\2\2\u050f\u0517\7p\2\2\u0510\u0511") - buf.write("\7^\2\2\u0511\u0517\7t\2\2\u0512\u0513\7^\2\2\u0513\u0517") - buf.write("\7v\2\2\u0514\u0515\7^\2\2\u0515\u0517\7x\2\2\u0516\u0500") - buf.write("\3\2\2\2\u0516\u0502\3\2\2\2\u0516\u0504\3\2\2\2\u0516") - buf.write("\u0506\3\2\2\2\u0516\u0508\3\2\2\2\u0516\u050a\3\2\2\2") - buf.write("\u0516\u050c\3\2\2\2\u0516\u050e\3\2\2\2\u0516\u0510\3") - buf.write("\2\2\2\u0516\u0512\3\2\2\2\u0516\u0514\3\2\2\2\u0517\u0138") - buf.write("\3\2\2\2\u0518\u0519\7^\2\2\u0519\u0524\5\u0123\u0092") - buf.write("\2\u051a\u051b\7^\2\2\u051b\u051c\5\u0123\u0092\2\u051c") - buf.write("\u051d\5\u0123\u0092\2\u051d\u0524\3\2\2\2\u051e\u051f") - buf.write("\7^\2\2\u051f\u0520\5\u0123\u0092\2\u0520\u0521\5\u0123") - buf.write("\u0092\2\u0521\u0522\5\u0123\u0092\2\u0522\u0524\3\2\2") - buf.write("\2\u0523\u0518\3\2\2\2\u0523\u051a\3\2\2\2\u0523\u051e") - buf.write("\3\2\2\2\u0524\u013a\3\2\2\2\u0525\u0526\7^\2\2\u0526") - buf.write("\u0527\7z\2\2\u0527\u0529\3\2\2\2\u0528\u052a\5\u0125") - buf.write("\u0093\2\u0529\u0528\3\2\2\2\u052a\u052b\3\2\2\2\u052b") - buf.write("\u0529\3\2\2\2\u052b\u052c\3\2\2\2\u052c\u013c\3\2\2\2") - buf.write("\u052d\u052f\5\u013f\u00a0\2\u052e\u0530\5\u0141\u00a1") - buf.write("\2\u052f\u052e\3\2\2\2\u052f\u0530\3\2\2\2\u0530\u0532") - buf.write("\3\2\2\2\u0531\u0533\5\u0147\u00a4\2\u0532\u0531\3\2\2") - buf.write("\2\u0532\u0533\3\2\2\2\u0533\u053a\3\2\2\2\u0534\u0535") - buf.write("\5\u0145\u00a3\2\u0535\u0537\5\u0141\u00a1\2\u0536\u0538") - buf.write("\5\u0147\u00a4\2\u0537\u0536\3\2\2\2\u0537\u0538\3\2\2") - buf.write("\2\u0538\u053a\3\2\2\2\u0539\u052d\3\2\2\2\u0539\u0534") - buf.write("\3\2\2\2\u053a\u013e\3\2\2\2\u053b\u053d\5\u0145\u00a3") - buf.write("\2\u053c\u053b\3\2\2\2\u053c\u053d\3\2\2\2\u053d\u053e") - buf.write("\3\2\2\2\u053e\u053f\7\60\2\2\u053f\u0544\5\u0145\u00a3") - buf.write("\2\u0540\u0541\5\u0145\u00a3\2\u0541\u0542\7\60\2\2\u0542") - buf.write("\u0544\3\2\2\2\u0543\u053c\3\2\2\2\u0543\u0540\3\2\2\2") - buf.write("\u0544\u0140\3\2\2\2\u0545\u0547\7g\2\2\u0546\u0548\5") - buf.write("\u0143\u00a2\2\u0547\u0546\3\2\2\2\u0547\u0548\3\2\2\2") - buf.write("\u0548\u0549\3\2\2\2\u0549\u0550\5\u0145\u00a3\2\u054a") - buf.write("\u054c\7G\2\2\u054b\u054d\5\u0143\u00a2\2\u054c\u054b") - buf.write("\3\2\2\2\u054c\u054d\3\2\2\2\u054d\u054e\3\2\2\2\u054e") - buf.write("\u0550\5\u0145\u00a3\2\u054f\u0545\3\2\2\2\u054f\u054a") - buf.write("\3\2\2\2\u0550\u0142\3\2\2\2\u0551\u0552\t\f\2\2\u0552") - buf.write("\u0144\3\2\2\2\u0553\u055a\5\u0115\u008b\2\u0554\u0556") - buf.write("\7)\2\2\u0555\u0554\3\2\2\2\u0555\u0556\3\2\2\2\u0556") - buf.write("\u0557\3\2\2\2\u0557\u0559\5\u0115\u008b\2\u0558\u0555") - buf.write("\3\2\2\2\u0559\u055c\3\2\2\2\u055a\u0558\3\2\2\2\u055a") - buf.write("\u055b\3\2\2\2\u055b\u0146\3\2\2\2\u055c\u055a\3\2\2\2") - buf.write("\u055d\u055e\t\r\2\2\u055e\u0148\3\2\2\2\u055f\u0561\5") - buf.write("\u014b\u00a6\2\u0560\u055f\3\2\2\2\u0560\u0561\3\2\2\2") - buf.write("\u0561\u0562\3\2\2\2\u0562\u0566\7$\2\2\u0563\u0565\5") - buf.write("\u014d\u00a7\2\u0564\u0563\3\2\2\2\u0565\u0568\3\2\2\2") - buf.write("\u0566\u0564\3\2\2\2\u0566\u0567\3\2\2\2\u0567\u0569\3") - buf.write("\2\2\2\u0568\u0566\3\2\2\2\u0569\u0570\7$\2\2\u056a\u056c") - buf.write("\5\u014b\u00a6\2\u056b\u056a\3\2\2\2\u056b\u056c\3\2\2") - buf.write("\2\u056c\u056d\3\2\2\2\u056d\u056e\7T\2\2\u056e\u0570") - buf.write("\5\u014f\u00a8\2\u056f\u0560\3\2\2\2\u056f\u056b\3\2\2") - buf.write("\2\u0570\u014a\3\2\2\2\u0571\u0572\7w\2\2\u0572\u0575") - buf.write("\7:\2\2\u0573\u0575\t\16\2\2\u0574\u0571\3\2\2\2\u0574") - buf.write("\u0573\3\2\2\2\u0575\u014c\3\2\2\2\u0576\u057a\n\17\2") - buf.write("\2\u0577\u057a\5\u0135\u009b\2\u0578\u057a\5\u010d\u0087") - buf.write("\2\u0579\u0576\3\2\2\2\u0579\u0577\3\2\2\2\u0579\u0578") - buf.write("\3\2\2\2\u057a\u014e\3\2\2\2\u057b\u057f\7$\2\2\u057c") - buf.write("\u057e\13\2\2\2\u057d\u057c\3\2\2\2\u057e\u0581\3\2\2") - buf.write("\2\u057f\u0580\3\2\2\2\u057f\u057d\3\2\2\2\u0580\u0582") - buf.write("\3\2\2\2\u0581\u057f\3\2\2\2\u0582\u0586\7*\2\2\u0583") - buf.write("\u0585\13\2\2\2\u0584\u0583\3\2\2\2\u0585\u0588\3\2\2") - buf.write("\2\u0586\u0587\3\2\2\2\u0586\u0584\3\2\2\2\u0587\u0589") - buf.write("\3\2\2\2\u0588\u0586\3\2\2\2\u0589\u058d\7+\2\2\u058a") - buf.write("\u058c\13\2\2\2\u058b\u058a\3\2\2\2\u058c\u058f\3\2\2") - buf.write("\2\u058d\u058e\3\2\2\2\u058d\u058b\3\2\2\2\u058e\u0590") - buf.write("\3\2\2\2\u058f\u058d\3\2\2\2\u0590\u0591\7$\2\2\u0591") - buf.write("\u0150\3\2\2\2\u0592\u0593\5\u0119\u008d\2\u0593\u0594") - buf.write("\5\u0159\u00ad\2\u0594\u059f\3\2\2\2\u0595\u0596\5\u011b") - buf.write("\u008e\2\u0596\u0597\5\u0159\u00ad\2\u0597\u059f\3\2\2") - buf.write("\2\u0598\u0599\5\u011d\u008f\2\u0599\u059a\5\u0159\u00ad") - buf.write("\2\u059a\u059f\3\2\2\2\u059b\u059c\5\u011f\u0090\2\u059c") - buf.write("\u059d\5\u0159\u00ad\2\u059d\u059f\3\2\2\2\u059e\u0592") - buf.write("\3\2\2\2\u059e\u0595\3\2\2\2\u059e\u0598\3\2\2\2\u059e") - buf.write("\u059b\3\2\2\2\u059f\u0152\3\2\2\2\u05a0\u05a2\5\u013f") - buf.write("\u00a0\2\u05a1\u05a3\5\u0141\u00a1\2\u05a2\u05a1\3\2\2") - buf.write("\2\u05a2\u05a3\3\2\2\2\u05a3\u05a4\3\2\2\2\u05a4\u05a5") - buf.write("\5\u0159\u00ad\2\u05a5\u05ab\3\2\2\2\u05a6\u05a7\5\u0145") - buf.write("\u00a3\2\u05a7\u05a8\5\u0141\u00a1\2\u05a8\u05a9\5\u0159") - buf.write("\u00ad\2\u05a9\u05ab\3\2\2\2\u05aa\u05a0\3\2\2\2\u05aa") - buf.write("\u05a6\3\2\2\2\u05ab\u0154\3\2\2\2\u05ac\u05ad\5\u0149") - buf.write("\u00a5\2\u05ad\u05ae\5\u0159\u00ad\2\u05ae\u0156\3\2\2") - buf.write("\2\u05af\u05b0\5\u0131\u0099\2\u05b0\u05b1\5\u0159\u00ad") - buf.write("\2\u05b1\u0158\3\2\2\2\u05b2\u05b3\5\u010f\u0088\2\u05b3") - buf.write("\u015a\3\2\2\2\u05b4\u05b6\t\20\2\2\u05b5\u05b4\3\2\2") - buf.write("\2\u05b6\u05b7\3\2\2\2\u05b7\u05b5\3\2\2\2\u05b7\u05b8") - buf.write("\3\2\2\2\u05b8\u05b9\3\2\2\2\u05b9\u05ba\b\u00ae\3\2\u05ba") - buf.write("\u015c\3\2\2\2\u05bb\u05bd\7\17\2\2\u05bc\u05be\7\f\2") - buf.write("\2\u05bd\u05bc\3\2\2\2\u05bd\u05be\3\2\2\2\u05be\u05c1") - buf.write("\3\2\2\2\u05bf\u05c1\7\f\2\2\u05c0\u05bb\3\2\2\2\u05c0") - buf.write("\u05bf\3\2\2\2\u05c1\u05c2\3\2\2\2\u05c2\u05c3\b\u00af") - buf.write("\3\2\u05c3\u015e\3\2\2\2\u05c4\u05c5\7\61\2\2\u05c5\u05c6") - buf.write("\7,\2\2\u05c6\u05ca\3\2\2\2\u05c7\u05c9\13\2\2\2\u05c8") - buf.write("\u05c7\3\2\2\2\u05c9\u05cc\3\2\2\2\u05ca\u05cb\3\2\2\2") - buf.write("\u05ca\u05c8\3\2\2\2\u05cb\u05cd\3\2\2\2\u05cc\u05ca\3") - buf.write("\2\2\2\u05cd\u05ce\7,\2\2\u05ce\u05cf\7\61\2\2\u05cf\u05d0") - buf.write("\3\2\2\2\u05d0\u05d1\b\u00b0\3\2\u05d1\u0160\3\2\2\2\u05d2") - buf.write("\u05d3\7\61\2\2\u05d3\u05d4\7\61\2\2\u05d4\u05d8\3\2\2") - buf.write("\2\u05d5\u05d7\n\21\2\2\u05d6\u05d5\3\2\2\2\u05d7\u05da") - buf.write("\3\2\2\2\u05d8\u05d6\3\2\2\2\u05d8\u05d9\3\2\2\2\u05d9") - buf.write("\u05db\3\2\2\2\u05da\u05d8\3\2\2\2\u05db\u05dc\b\u00b1") - buf.write("\3\2\u05dc\u0162\3\2\2\2J\2\u0185\u018a\u018f\u0194\u019c") - buf.write("\u03de\u041d\u0423\u0455\u045a\u045c\u0461\u0469\u046d") - buf.write("\u0471\u0475\u0477\u047b\u0480\u0485\u048a\u0491\u0495") - buf.write("\u049a\u04a1\u04a5\u04aa\u04b7\u04bb\u04bf\u04c3\u04c5") - buf.write("\u04cf\u04d5\u04de\u04e7\u04f0\u04f4\u04f9\u04fe\u0516") - buf.write("\u0523\u052b\u052f\u0532\u0537\u0539\u053c\u0543\u0547") - buf.write("\u054c\u054f\u0555\u055a\u0560\u0566\u056b\u056f\u0574") - buf.write("\u0579\u057f\u0586\u058d\u059e\u05a2\u05aa\u05b7\u05bd") - buf.write("\u05c0\u05ca\u05d8\4\2\3\2\b\2\2") - return buf.getvalue() - + return [ + 4,0,145,1460,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,1,0,1,0,3,0,346,8,0,1,0,1,0,3,0,350,8,0,1,0,1, + 0,3,0,354,8,0,1,0,1,0,3,0,358,8,0,3,0,360,8,0,1,1,3,1,363,8,1,1, + 1,1,1,4,1,367,8,1,11,1,12,1,368,1,1,1,1,1,2,1,2,3,2,375,8,2,1,2, + 3,2,378,8,2,1,2,1,2,1,2,3,2,383,8,2,3,2,385,8,2,1,3,3,3,388,8,3, + 1,3,1,3,1,3,5,3,393,8,3,10,3,12,3,396,9,3,1,3,3,3,399,8,3,1,4,1, + 4,3,4,403,8,4,1,5,1,5,1,6,1,6,1,6,1,6,3,6,411,8,6,1,7,1,7,5,7,415, + 8,7,10,7,12,7,418,9,7,1,7,1,7,3,7,422,8,7,1,7,4,7,425,8,7,11,7,12, + 7,426,1,7,4,7,430,8,7,11,7,12,7,431,1,7,1,7,1,8,1,8,5,8,438,8,8, + 10,8,12,8,441,9,8,1,8,1,8,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,10,1,11,1,11,1,11,1,11,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,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,18,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,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,21,1,22,1,22,1,22,1,22,1,22,1, + 22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1, + 23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1, + 25,1,25,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,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1, + 29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,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,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,35,1, + 35,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,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,40,1,40,1,40,1, + 40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,43,1, + 43,1,43,1,43,1,43,1,43,1,43,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,46,1,47,1,47,1,47,1, + 47,1,47,1,47,1,47,1,47,1,47,1,47,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,49,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,51,1,51,1,52,1,52,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, + 53,1,53,1,54,1,54,1,54,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,56,1,56,1,56,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,57,1,57,1,57,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, + 59,1,59,1,59,1,59,1,59,1,59,1,60,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,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, + 63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,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,66,1,66,1,66,1,66,1,66,1, + 66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1, + 68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1, + 69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1, + 71,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1, + 74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1, + 75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1, + 77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1, + 79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1, + 81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1, + 82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,85,1,85,1,86,1, + 86,1,87,1,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91,1,91,1,92,1,92,1, + 93,1,93,1,94,1,94,1,95,1,95,1,96,1,96,1,97,1,97,1,98,1,98,1,99,1, + 99,1,99,1,99,3,99,1029,8,99,1,100,1,100,1,101,1,101,1,102,1,102, + 1,103,1,103,1,103,1,104,1,104,1,104,1,105,1,105,1,105,1,106,1,106, + 1,106,1,107,1,107,1,107,1,108,1,108,1,108,1,109,1,109,1,109,1,110, + 1,110,1,110,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,113, + 1,113,1,113,1,114,1,114,1,114,1,115,1,115,1,115,1,116,1,116,1,116, + 1,117,1,117,1,117,1,117,1,117,3,117,1086,8,117,1,118,1,118,1,118, + 1,118,3,118,1092,8,118,1,119,1,119,1,119,1,120,1,120,1,120,1,121, + 1,121,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,124,1,124,1,125, + 1,125,1,126,1,126,1,126,1,127,1,127,1,128,1,128,1,129,1,129,1,129, + 1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,132,1,132, + 1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,3,132,1142,8,132, + 1,133,1,133,1,133,5,133,1147,8,133,10,133,12,133,1150,9,133,1,134, + 1,134,3,134,1154,8,134,1,135,1,135,1,136,1,136,1,137,1,137,3,137, + 1162,8,137,1,137,5,137,1165,8,137,10,137,12,137,1168,9,137,1,138, + 1,138,3,138,1172,8,138,1,138,5,138,1175,8,138,10,138,12,138,1178, + 9,138,1,139,1,139,1,139,1,139,3,139,1184,8,139,1,139,1,139,3,139, + 1188,8,139,1,139,5,139,1191,8,139,10,139,12,139,1194,9,139,1,140, + 1,140,1,140,1,140,3,140,1200,8,140,1,140,1,140,3,140,1204,8,140, + 1,140,5,140,1207,8,140,10,140,12,140,1210,9,140,1,141,1,141,1,142, + 1,142,1,143,1,143,1,144,1,144,1,145,1,145,3,145,1222,8,145,1,145, + 1,145,3,145,1226,8,145,1,145,1,145,3,145,1230,8,145,1,145,1,145, + 3,145,1234,8,145,3,145,1236,8,145,1,146,1,146,1,147,1,147,1,148, + 1,148,1,148,1,148,3,148,1246,8,148,1,149,1,149,1,149,3,149,1251, + 8,149,1,150,1,150,1,150,3,150,1256,8,150,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,3,151,1279,8,151,1,151,3,151, + 1282,8,151,1,151,1,151,1,151,1,151,3,151,1288,8,151,1,152,1,152, + 1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,3,152,1301, + 8,152,1,153,1,153,1,153,1,153,4,153,1307,8,153,11,153,12,153,1308, + 1,154,3,154,1312,8,154,1,154,1,154,1,154,1,154,1,154,3,154,1319, + 8,154,1,155,1,155,3,155,1323,8,155,1,155,1,155,1,155,3,155,1328, + 8,155,1,155,3,155,1331,8,155,1,156,1,156,1,157,1,157,3,157,1337, + 8,157,1,157,5,157,1340,8,157,10,157,12,157,1343,9,157,1,158,1,158, + 1,159,1,159,1,159,3,159,1350,8,159,1,160,1,160,1,160,3,160,1355, + 8,160,1,161,1,161,1,161,1,161,1,161,1,161,5,161,1363,8,161,10,161, + 12,161,1366,9,161,1,161,1,161,5,161,1370,8,161,10,161,12,161,1373, + 9,161,1,161,1,161,1,161,1,161,5,161,1379,8,161,10,161,12,161,1382, + 9,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, + 1,162,1,162,1,162,1,162,3,162,1398,8,162,1,163,1,163,3,163,1402, + 8,163,1,163,1,163,1,163,1,163,1,163,1,163,3,163,1410,8,163,1,164, + 1,164,1,164,1,165,1,165,1,165,1,166,1,166,1,167,4,167,1421,8,167, + 11,167,12,167,1422,1,167,1,167,1,168,1,168,3,168,1429,8,168,1,168, + 3,168,1432,8,168,1,168,1,168,1,169,1,169,1,169,1,169,5,169,1440, + 8,169,10,169,12,169,1443,9,169,1,169,1,169,1,169,1,169,1,169,1,170, + 1,170,1,170,1,170,5,170,1454,8,170,10,170,12,170,1457,9,170,1,170, + 1,170,5,416,1364,1371,1380,1441,0,171,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, + 70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79, + 159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177, + 89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98, + 197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213, + 107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229, + 115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245, + 123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261, + 131,263,0,265,0,267,132,269,0,271,0,273,0,275,133,277,134,279,135, + 281,136,283,0,285,0,287,0,289,0,291,137,293,0,295,0,297,0,299,0, + 301,0,303,0,305,0,307,0,309,0,311,0,313,0,315,0,317,0,319,0,321, + 0,323,0,325,138,327,139,329,140,331,141,333,0,335,142,337,143,339, + 144,341,145,1,0,20,3,0,76,76,85,85,117,117,1,0,10,10,3,0,65,90,95, + 95,97,122,1,0,48,57,1,0,49,57,1,0,48,55,3,0,48,57,65,70,97,102,1, + 0,48,49,2,0,85,85,117,117,2,0,76,76,108,108,4,0,10,10,13,13,39,39, + 92,92,2,0,43,43,45,45,4,0,70,70,76,76,102,102,108,108,4,0,10,10, + 13,13,34,34,92,92,2,0,34,34,40,41,4,0,10,10,13,13,32,32,40,40,1, + 0,41,41,4,0,10,10,13,13,32,32,34,34,2,0,9,9,32,32,2,0,10,10,13,13, + 1528,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,0,201,1, + 0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0, + 211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0, + 0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229, + 1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,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,267,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,291,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,335,1,0,0,0, + 0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,1,359,1,0,0,0,3,362,1, + 0,0,0,5,384,1,0,0,0,7,387,1,0,0,0,9,402,1,0,0,0,11,404,1,0,0,0,13, + 410,1,0,0,0,15,412,1,0,0,0,17,435,1,0,0,0,19,444,1,0,0,0,21,452, + 1,0,0,0,23,460,1,0,0,0,25,464,1,0,0,0,27,469,1,0,0,0,29,474,1,0, + 0,0,31,480,1,0,0,0,33,485,1,0,0,0,35,491,1,0,0,0,37,496,1,0,0,0, + 39,505,1,0,0,0,41,514,1,0,0,0,43,520,1,0,0,0,45,526,1,0,0,0,47,536, + 1,0,0,0,49,547,1,0,0,0,51,556,1,0,0,0,53,565,1,0,0,0,55,573,1,0, + 0,0,57,580,1,0,0,0,59,583,1,0,0,0,61,590,1,0,0,0,63,603,1,0,0,0, + 65,608,1,0,0,0,67,613,1,0,0,0,69,622,1,0,0,0,71,629,1,0,0,0,73,636, + 1,0,0,0,75,642,1,0,0,0,77,648,1,0,0,0,79,654,1,0,0,0,81,658,1,0, + 0,0,83,665,1,0,0,0,85,670,1,0,0,0,87,673,1,0,0,0,89,680,1,0,0,0, + 91,684,1,0,0,0,93,689,1,0,0,0,95,697,1,0,0,0,97,707,1,0,0,0,99,711, + 1,0,0,0,101,720,1,0,0,0,103,728,1,0,0,0,105,737,1,0,0,0,107,746, + 1,0,0,0,109,754,1,0,0,0,111,764,1,0,0,0,113,771,1,0,0,0,115,780, + 1,0,0,0,117,797,1,0,0,0,119,804,1,0,0,0,121,810,1,0,0,0,123,817, + 1,0,0,0,125,824,1,0,0,0,127,831,1,0,0,0,129,845,1,0,0,0,131,857, + 1,0,0,0,133,864,1,0,0,0,135,871,1,0,0,0,137,880,1,0,0,0,139,885, + 1,0,0,0,141,898,1,0,0,0,143,904,1,0,0,0,145,909,1,0,0,0,147,913, + 1,0,0,0,149,921,1,0,0,0,151,928,1,0,0,0,153,937,1,0,0,0,155,943, + 1,0,0,0,157,952,1,0,0,0,159,958,1,0,0,0,161,966,1,0,0,0,163,971, + 1,0,0,0,165,980,1,0,0,0,167,988,1,0,0,0,169,994,1,0,0,0,171,996, + 1,0,0,0,173,998,1,0,0,0,175,1000,1,0,0,0,177,1002,1,0,0,0,179,1004, + 1,0,0,0,181,1006,1,0,0,0,183,1008,1,0,0,0,185,1010,1,0,0,0,187,1012, + 1,0,0,0,189,1014,1,0,0,0,191,1016,1,0,0,0,193,1018,1,0,0,0,195,1020, + 1,0,0,0,197,1022,1,0,0,0,199,1028,1,0,0,0,201,1030,1,0,0,0,203,1032, + 1,0,0,0,205,1034,1,0,0,0,207,1036,1,0,0,0,209,1039,1,0,0,0,211,1042, + 1,0,0,0,213,1045,1,0,0,0,215,1048,1,0,0,0,217,1051,1,0,0,0,219,1054, + 1,0,0,0,221,1057,1,0,0,0,223,1060,1,0,0,0,225,1064,1,0,0,0,227,1068, + 1,0,0,0,229,1071,1,0,0,0,231,1074,1,0,0,0,233,1077,1,0,0,0,235,1085, + 1,0,0,0,237,1091,1,0,0,0,239,1093,1,0,0,0,241,1096,1,0,0,0,243,1099, + 1,0,0,0,245,1101,1,0,0,0,247,1105,1,0,0,0,249,1108,1,0,0,0,251,1110, + 1,0,0,0,253,1112,1,0,0,0,255,1115,1,0,0,0,257,1117,1,0,0,0,259,1119, + 1,0,0,0,261,1122,1,0,0,0,263,1126,1,0,0,0,265,1141,1,0,0,0,267,1143, + 1,0,0,0,269,1153,1,0,0,0,271,1155,1,0,0,0,273,1157,1,0,0,0,275,1159, + 1,0,0,0,277,1169,1,0,0,0,279,1183,1,0,0,0,281,1199,1,0,0,0,283,1211, + 1,0,0,0,285,1213,1,0,0,0,287,1215,1,0,0,0,289,1217,1,0,0,0,291,1235, + 1,0,0,0,293,1237,1,0,0,0,295,1239,1,0,0,0,297,1245,1,0,0,0,299,1250, + 1,0,0,0,301,1255,1,0,0,0,303,1287,1,0,0,0,305,1300,1,0,0,0,307,1302, + 1,0,0,0,309,1318,1,0,0,0,311,1330,1,0,0,0,313,1332,1,0,0,0,315,1334, + 1,0,0,0,317,1344,1,0,0,0,319,1349,1,0,0,0,321,1354,1,0,0,0,323,1356, + 1,0,0,0,325,1397,1,0,0,0,327,1409,1,0,0,0,329,1411,1,0,0,0,331,1414, + 1,0,0,0,333,1417,1,0,0,0,335,1420,1,0,0,0,337,1431,1,0,0,0,339,1435, + 1,0,0,0,341,1449,1,0,0,0,343,345,3,275,137,0,344,346,3,291,145,0, + 345,344,1,0,0,0,345,346,1,0,0,0,346,360,1,0,0,0,347,349,3,277,138, + 0,348,350,3,291,145,0,349,348,1,0,0,0,349,350,1,0,0,0,350,360,1, + 0,0,0,351,353,3,279,139,0,352,354,3,291,145,0,353,352,1,0,0,0,353, + 354,1,0,0,0,354,360,1,0,0,0,355,357,3,281,140,0,356,358,3,291,145, + 0,357,356,1,0,0,0,357,358,1,0,0,0,358,360,1,0,0,0,359,343,1,0,0, + 0,359,347,1,0,0,0,359,351,1,0,0,0,359,355,1,0,0,0,360,2,1,0,0,0, + 361,363,7,0,0,0,362,361,1,0,0,0,362,363,1,0,0,0,363,364,1,0,0,0, + 364,366,5,39,0,0,365,367,3,299,149,0,366,365,1,0,0,0,367,368,1,0, + 0,0,368,366,1,0,0,0,368,369,1,0,0,0,369,370,1,0,0,0,370,371,5,39, + 0,0,371,4,1,0,0,0,372,374,3,309,154,0,373,375,3,311,155,0,374,373, + 1,0,0,0,374,375,1,0,0,0,375,377,1,0,0,0,376,378,3,317,158,0,377, + 376,1,0,0,0,377,378,1,0,0,0,378,385,1,0,0,0,379,380,3,315,157,0, + 380,382,3,311,155,0,381,383,3,317,158,0,382,381,1,0,0,0,382,383, + 1,0,0,0,383,385,1,0,0,0,384,372,1,0,0,0,384,379,1,0,0,0,385,6,1, + 0,0,0,386,388,3,319,159,0,387,386,1,0,0,0,387,388,1,0,0,0,388,398, + 1,0,0,0,389,399,3,323,161,0,390,394,5,34,0,0,391,393,3,321,160,0, + 392,391,1,0,0,0,393,396,1,0,0,0,394,392,1,0,0,0,394,395,1,0,0,0, + 395,397,1,0,0,0,396,394,1,0,0,0,397,399,5,34,0,0,398,389,1,0,0,0, + 398,390,1,0,0,0,399,8,1,0,0,0,400,403,3,73,36,0,401,403,3,143,71, + 0,402,400,1,0,0,0,402,401,1,0,0,0,403,10,1,0,0,0,404,405,3,101,50, + 0,405,12,1,0,0,0,406,411,3,325,162,0,407,411,3,327,163,0,408,411, + 3,329,164,0,409,411,3,331,165,0,410,406,1,0,0,0,410,407,1,0,0,0, + 410,408,1,0,0,0,410,409,1,0,0,0,411,14,1,0,0,0,412,424,5,35,0,0, + 413,415,8,1,0,0,414,413,1,0,0,0,415,418,1,0,0,0,416,417,1,0,0,0, + 416,414,1,0,0,0,417,419,1,0,0,0,418,416,1,0,0,0,419,421,5,92,0,0, + 420,422,5,13,0,0,421,420,1,0,0,0,421,422,1,0,0,0,422,423,1,0,0,0, + 423,425,5,10,0,0,424,416,1,0,0,0,425,426,1,0,0,0,426,424,1,0,0,0, + 426,427,1,0,0,0,427,429,1,0,0,0,428,430,8,1,0,0,429,428,1,0,0,0, + 430,431,1,0,0,0,431,429,1,0,0,0,431,432,1,0,0,0,432,433,1,0,0,0, + 433,434,6,7,0,0,434,16,1,0,0,0,435,439,5,35,0,0,436,438,8,1,0,0, + 437,436,1,0,0,0,438,441,1,0,0,0,439,437,1,0,0,0,439,440,1,0,0,0, + 440,442,1,0,0,0,441,439,1,0,0,0,442,443,6,8,0,0,443,18,1,0,0,0,444, + 445,5,97,0,0,445,446,5,108,0,0,446,447,5,105,0,0,447,448,5,103,0, + 0,448,449,5,110,0,0,449,450,5,97,0,0,450,451,5,115,0,0,451,20,1, + 0,0,0,452,453,5,97,0,0,453,454,5,108,0,0,454,455,5,105,0,0,455,456, + 5,103,0,0,456,457,5,110,0,0,457,458,5,111,0,0,458,459,5,102,0,0, + 459,22,1,0,0,0,460,461,5,97,0,0,461,462,5,115,0,0,462,463,5,109, + 0,0,463,24,1,0,0,0,464,465,5,97,0,0,465,466,5,117,0,0,466,467,5, + 116,0,0,467,468,5,111,0,0,468,26,1,0,0,0,469,470,5,98,0,0,470,471, + 5,111,0,0,471,472,5,111,0,0,472,473,5,108,0,0,473,28,1,0,0,0,474, + 475,5,98,0,0,475,476,5,114,0,0,476,477,5,101,0,0,477,478,5,97,0, + 0,478,479,5,107,0,0,479,30,1,0,0,0,480,481,5,99,0,0,481,482,5,97, + 0,0,482,483,5,115,0,0,483,484,5,101,0,0,484,32,1,0,0,0,485,486,5, + 99,0,0,486,487,5,97,0,0,487,488,5,116,0,0,488,489,5,99,0,0,489,490, + 5,104,0,0,490,34,1,0,0,0,491,492,5,99,0,0,492,493,5,104,0,0,493, + 494,5,97,0,0,494,495,5,114,0,0,495,36,1,0,0,0,496,497,5,99,0,0,497, + 498,5,104,0,0,498,499,5,97,0,0,499,500,5,114,0,0,500,501,5,49,0, + 0,501,502,5,54,0,0,502,503,5,95,0,0,503,504,5,116,0,0,504,38,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,510,5,51,0,0,510,511,5,50,0,0,511,512,5,95,0,0,512, + 513,5,116,0,0,513,40,1,0,0,0,514,515,5,99,0,0,515,516,5,108,0,0, + 516,517,5,97,0,0,517,518,5,115,0,0,518,519,5,115,0,0,519,42,1,0, + 0,0,520,521,5,99,0,0,521,522,5,111,0,0,522,523,5,110,0,0,523,524, + 5,115,0,0,524,525,5,116,0,0,525,44,1,0,0,0,526,527,5,99,0,0,527, + 528,5,111,0,0,528,529,5,110,0,0,529,530,5,115,0,0,530,531,5,116, + 0,0,531,532,5,101,0,0,532,533,5,120,0,0,533,534,5,112,0,0,534,535, + 5,114,0,0,535,46,1,0,0,0,536,537,5,99,0,0,537,538,5,111,0,0,538, + 539,5,110,0,0,539,540,5,115,0,0,540,541,5,116,0,0,541,542,5,95,0, + 0,542,543,5,99,0,0,543,544,5,97,0,0,544,545,5,115,0,0,545,546,5, + 116,0,0,546,48,1,0,0,0,547,548,5,99,0,0,548,549,5,111,0,0,549,550, + 5,110,0,0,550,551,5,116,0,0,551,552,5,105,0,0,552,553,5,110,0,0, + 553,554,5,117,0,0,554,555,5,101,0,0,555,50,1,0,0,0,556,557,5,100, + 0,0,557,558,5,101,0,0,558,559,5,99,0,0,559,560,5,108,0,0,560,561, + 5,116,0,0,561,562,5,121,0,0,562,563,5,112,0,0,563,564,5,101,0,0, + 564,52,1,0,0,0,565,566,5,100,0,0,566,567,5,101,0,0,567,568,5,102, + 0,0,568,569,5,97,0,0,569,570,5,117,0,0,570,571,5,108,0,0,571,572, + 5,116,0,0,572,54,1,0,0,0,573,574,5,100,0,0,574,575,5,101,0,0,575, + 576,5,108,0,0,576,577,5,101,0,0,577,578,5,116,0,0,578,579,5,101, + 0,0,579,56,1,0,0,0,580,581,5,100,0,0,581,582,5,111,0,0,582,58,1, + 0,0,0,583,584,5,100,0,0,584,585,5,111,0,0,585,586,5,117,0,0,586, + 587,5,98,0,0,587,588,5,108,0,0,588,589,5,101,0,0,589,60,1,0,0,0, + 590,591,5,100,0,0,591,592,5,121,0,0,592,593,5,110,0,0,593,594,5, + 97,0,0,594,595,5,109,0,0,595,596,5,105,0,0,596,597,5,99,0,0,597, + 598,5,95,0,0,598,599,5,99,0,0,599,600,5,97,0,0,600,601,5,115,0,0, + 601,602,5,116,0,0,602,62,1,0,0,0,603,604,5,101,0,0,604,605,5,108, + 0,0,605,606,5,115,0,0,606,607,5,101,0,0,607,64,1,0,0,0,608,609,5, + 101,0,0,609,610,5,110,0,0,610,611,5,117,0,0,611,612,5,109,0,0,612, + 66,1,0,0,0,613,614,5,101,0,0,614,615,5,120,0,0,615,616,5,112,0,0, + 616,617,5,108,0,0,617,618,5,105,0,0,618,619,5,99,0,0,619,620,5,105, + 0,0,620,621,5,116,0,0,621,68,1,0,0,0,622,623,5,101,0,0,623,624,5, + 120,0,0,624,625,5,112,0,0,625,626,5,111,0,0,626,627,5,114,0,0,627, + 628,5,116,0,0,628,70,1,0,0,0,629,630,5,101,0,0,630,631,5,120,0,0, + 631,632,5,116,0,0,632,633,5,101,0,0,633,634,5,114,0,0,634,635,5, + 110,0,0,635,72,1,0,0,0,636,637,5,102,0,0,637,638,5,97,0,0,638,639, + 5,108,0,0,639,640,5,115,0,0,640,641,5,101,0,0,641,74,1,0,0,0,642, + 643,5,102,0,0,643,644,5,105,0,0,644,645,5,110,0,0,645,646,5,97,0, + 0,646,647,5,108,0,0,647,76,1,0,0,0,648,649,5,102,0,0,649,650,5,108, + 0,0,650,651,5,111,0,0,651,652,5,97,0,0,652,653,5,116,0,0,653,78, + 1,0,0,0,654,655,5,102,0,0,655,656,5,111,0,0,656,657,5,114,0,0,657, + 80,1,0,0,0,658,659,5,102,0,0,659,660,5,114,0,0,660,661,5,105,0,0, + 661,662,5,101,0,0,662,663,5,110,0,0,663,664,5,100,0,0,664,82,1,0, + 0,0,665,666,5,103,0,0,666,667,5,111,0,0,667,668,5,116,0,0,668,669, + 5,111,0,0,669,84,1,0,0,0,670,671,5,105,0,0,671,672,5,102,0,0,672, + 86,1,0,0,0,673,674,5,105,0,0,674,675,5,110,0,0,675,676,5,108,0,0, + 676,677,5,105,0,0,677,678,5,110,0,0,678,679,5,101,0,0,679,88,1,0, + 0,0,680,681,5,105,0,0,681,682,5,110,0,0,682,683,5,116,0,0,683,90, + 1,0,0,0,684,685,5,108,0,0,685,686,5,111,0,0,686,687,5,110,0,0,687, + 688,5,103,0,0,688,92,1,0,0,0,689,690,5,109,0,0,690,691,5,117,0,0, + 691,692,5,116,0,0,692,693,5,97,0,0,693,694,5,98,0,0,694,695,5,108, + 0,0,695,696,5,101,0,0,696,94,1,0,0,0,697,698,5,110,0,0,698,699,5, + 97,0,0,699,700,5,109,0,0,700,701,5,101,0,0,701,702,5,115,0,0,702, + 703,5,112,0,0,703,704,5,97,0,0,704,705,5,99,0,0,705,706,5,101,0, + 0,706,96,1,0,0,0,707,708,5,110,0,0,708,709,5,101,0,0,709,710,5,119, + 0,0,710,98,1,0,0,0,711,712,5,110,0,0,712,713,5,111,0,0,713,714,5, + 101,0,0,714,715,5,120,0,0,715,716,5,99,0,0,716,717,5,101,0,0,717, + 718,5,112,0,0,718,719,5,116,0,0,719,100,1,0,0,0,720,721,5,110,0, + 0,721,722,5,117,0,0,722,723,5,108,0,0,723,724,5,108,0,0,724,725, + 5,112,0,0,725,726,5,116,0,0,726,727,5,114,0,0,727,102,1,0,0,0,728, + 729,5,111,0,0,729,730,5,112,0,0,730,731,5,101,0,0,731,732,5,114, + 0,0,732,733,5,97,0,0,733,734,5,116,0,0,734,735,5,111,0,0,735,736, + 5,114,0,0,736,104,1,0,0,0,737,738,5,111,0,0,738,739,5,118,0,0,739, + 740,5,101,0,0,740,741,5,114,0,0,741,742,5,114,0,0,742,743,5,105, + 0,0,743,744,5,100,0,0,744,745,5,101,0,0,745,106,1,0,0,0,746,747, + 5,112,0,0,747,748,5,114,0,0,748,749,5,105,0,0,749,750,5,118,0,0, + 750,751,5,97,0,0,751,752,5,116,0,0,752,753,5,101,0,0,753,108,1,0, + 0,0,754,755,5,112,0,0,755,756,5,114,0,0,756,757,5,111,0,0,757,758, + 5,116,0,0,758,759,5,101,0,0,759,760,5,99,0,0,760,761,5,116,0,0,761, + 762,5,101,0,0,762,763,5,100,0,0,763,110,1,0,0,0,764,765,5,112,0, + 0,765,766,5,117,0,0,766,767,5,98,0,0,767,768,5,108,0,0,768,769,5, + 105,0,0,769,770,5,99,0,0,770,112,1,0,0,0,771,772,5,114,0,0,772,773, + 5,101,0,0,773,774,5,103,0,0,774,775,5,105,0,0,775,776,5,115,0,0, + 776,777,5,116,0,0,777,778,5,101,0,0,778,779,5,114,0,0,779,114,1, + 0,0,0,780,781,5,114,0,0,781,782,5,101,0,0,782,783,5,105,0,0,783, + 784,5,110,0,0,784,785,5,116,0,0,785,786,5,101,0,0,786,787,5,114, + 0,0,787,788,5,112,0,0,788,789,5,114,0,0,789,790,5,101,0,0,790,791, + 5,116,0,0,791,792,5,95,0,0,792,793,5,99,0,0,793,794,5,97,0,0,794, + 795,5,115,0,0,795,796,5,116,0,0,796,116,1,0,0,0,797,798,5,114,0, + 0,798,799,5,101,0,0,799,800,5,116,0,0,800,801,5,117,0,0,801,802, + 5,114,0,0,802,803,5,110,0,0,803,118,1,0,0,0,804,805,5,115,0,0,805, + 806,5,104,0,0,806,807,5,111,0,0,807,808,5,114,0,0,808,809,5,116, + 0,0,809,120,1,0,0,0,810,811,5,115,0,0,811,812,5,105,0,0,812,813, + 5,103,0,0,813,814,5,110,0,0,814,815,5,101,0,0,815,816,5,100,0,0, + 816,122,1,0,0,0,817,818,5,115,0,0,818,819,5,105,0,0,819,820,5,122, + 0,0,820,821,5,101,0,0,821,822,5,111,0,0,822,823,5,102,0,0,823,124, + 1,0,0,0,824,825,5,115,0,0,825,826,5,116,0,0,826,827,5,97,0,0,827, + 828,5,116,0,0,828,829,5,105,0,0,829,830,5,99,0,0,830,126,1,0,0,0, + 831,832,5,115,0,0,832,833,5,116,0,0,833,834,5,97,0,0,834,835,5,116, + 0,0,835,836,5,105,0,0,836,837,5,99,0,0,837,838,5,95,0,0,838,839, + 5,97,0,0,839,840,5,115,0,0,840,841,5,115,0,0,841,842,5,101,0,0,842, + 843,5,114,0,0,843,844,5,116,0,0,844,128,1,0,0,0,845,846,5,115,0, + 0,846,847,5,116,0,0,847,848,5,97,0,0,848,849,5,116,0,0,849,850,5, + 105,0,0,850,851,5,99,0,0,851,852,5,95,0,0,852,853,5,99,0,0,853,854, + 5,97,0,0,854,855,5,115,0,0,855,856,5,116,0,0,856,130,1,0,0,0,857, + 858,5,115,0,0,858,859,5,116,0,0,859,860,5,114,0,0,860,861,5,117, + 0,0,861,862,5,99,0,0,862,863,5,116,0,0,863,132,1,0,0,0,864,865,5, + 115,0,0,865,866,5,119,0,0,866,867,5,105,0,0,867,868,5,116,0,0,868, + 869,5,99,0,0,869,870,5,104,0,0,870,134,1,0,0,0,871,872,5,116,0,0, + 872,873,5,101,0,0,873,874,5,109,0,0,874,875,5,112,0,0,875,876,5, + 108,0,0,876,877,5,97,0,0,877,878,5,116,0,0,878,879,5,101,0,0,879, + 136,1,0,0,0,880,881,5,116,0,0,881,882,5,104,0,0,882,883,5,105,0, + 0,883,884,5,115,0,0,884,138,1,0,0,0,885,886,5,116,0,0,886,887,5, + 104,0,0,887,888,5,114,0,0,888,889,5,101,0,0,889,890,5,97,0,0,890, + 891,5,100,0,0,891,892,5,95,0,0,892,893,5,108,0,0,893,894,5,111,0, + 0,894,895,5,99,0,0,895,896,5,97,0,0,896,897,5,108,0,0,897,140,1, + 0,0,0,898,899,5,116,0,0,899,900,5,104,0,0,900,901,5,114,0,0,901, + 902,5,111,0,0,902,903,5,119,0,0,903,142,1,0,0,0,904,905,5,116,0, + 0,905,906,5,114,0,0,906,907,5,117,0,0,907,908,5,101,0,0,908,144, + 1,0,0,0,909,910,5,116,0,0,910,911,5,114,0,0,911,912,5,121,0,0,912, + 146,1,0,0,0,913,914,5,116,0,0,914,915,5,121,0,0,915,916,5,112,0, + 0,916,917,5,101,0,0,917,918,5,100,0,0,918,919,5,101,0,0,919,920, + 5,102,0,0,920,148,1,0,0,0,921,922,5,116,0,0,922,923,5,121,0,0,923, + 924,5,112,0,0,924,925,5,101,0,0,925,926,5,105,0,0,926,927,5,100, + 0,0,927,150,1,0,0,0,928,929,5,116,0,0,929,930,5,121,0,0,930,931, + 5,112,0,0,931,932,5,101,0,0,932,933,5,110,0,0,933,934,5,97,0,0,934, + 935,5,109,0,0,935,936,5,101,0,0,936,152,1,0,0,0,937,938,5,117,0, + 0,938,939,5,110,0,0,939,940,5,105,0,0,940,941,5,111,0,0,941,942, + 5,110,0,0,942,154,1,0,0,0,943,944,5,117,0,0,944,945,5,110,0,0,945, + 946,5,115,0,0,946,947,5,105,0,0,947,948,5,103,0,0,948,949,5,110, + 0,0,949,950,5,101,0,0,950,951,5,100,0,0,951,156,1,0,0,0,952,953, + 5,117,0,0,953,954,5,115,0,0,954,955,5,105,0,0,955,956,5,110,0,0, + 956,957,5,103,0,0,957,158,1,0,0,0,958,959,5,118,0,0,959,960,5,105, + 0,0,960,961,5,114,0,0,961,962,5,116,0,0,962,963,5,117,0,0,963,964, + 5,97,0,0,964,965,5,108,0,0,965,160,1,0,0,0,966,967,5,118,0,0,967, + 968,5,111,0,0,968,969,5,105,0,0,969,970,5,100,0,0,970,162,1,0,0, + 0,971,972,5,118,0,0,972,973,5,111,0,0,973,974,5,108,0,0,974,975, + 5,97,0,0,975,976,5,116,0,0,976,977,5,105,0,0,977,978,5,108,0,0,978, + 979,5,101,0,0,979,164,1,0,0,0,980,981,5,119,0,0,981,982,5,99,0,0, + 982,983,5,104,0,0,983,984,5,97,0,0,984,985,5,114,0,0,985,986,5,95, + 0,0,986,987,5,116,0,0,987,166,1,0,0,0,988,989,5,119,0,0,989,990, + 5,104,0,0,990,991,5,105,0,0,991,992,5,108,0,0,992,993,5,101,0,0, + 993,168,1,0,0,0,994,995,5,40,0,0,995,170,1,0,0,0,996,997,5,41,0, + 0,997,172,1,0,0,0,998,999,5,91,0,0,999,174,1,0,0,0,1000,1001,5,93, + 0,0,1001,176,1,0,0,0,1002,1003,5,123,0,0,1003,178,1,0,0,0,1004,1005, + 5,125,0,0,1005,180,1,0,0,0,1006,1007,5,43,0,0,1007,182,1,0,0,0,1008, + 1009,5,45,0,0,1009,184,1,0,0,0,1010,1011,5,42,0,0,1011,186,1,0,0, + 0,1012,1013,5,47,0,0,1013,188,1,0,0,0,1014,1015,5,37,0,0,1015,190, + 1,0,0,0,1016,1017,5,94,0,0,1017,192,1,0,0,0,1018,1019,5,38,0,0,1019, + 194,1,0,0,0,1020,1021,5,124,0,0,1021,196,1,0,0,0,1022,1023,5,126, + 0,0,1023,198,1,0,0,0,1024,1029,5,33,0,0,1025,1026,5,110,0,0,1026, + 1027,5,111,0,0,1027,1029,5,116,0,0,1028,1024,1,0,0,0,1028,1025,1, + 0,0,0,1029,200,1,0,0,0,1030,1031,5,61,0,0,1031,202,1,0,0,0,1032, + 1033,5,60,0,0,1033,204,1,0,0,0,1034,1035,5,62,0,0,1035,206,1,0,0, + 0,1036,1037,5,43,0,0,1037,1038,5,61,0,0,1038,208,1,0,0,0,1039,1040, + 5,45,0,0,1040,1041,5,61,0,0,1041,210,1,0,0,0,1042,1043,5,42,0,0, + 1043,1044,5,61,0,0,1044,212,1,0,0,0,1045,1046,5,47,0,0,1046,1047, + 5,61,0,0,1047,214,1,0,0,0,1048,1049,5,37,0,0,1049,1050,5,61,0,0, + 1050,216,1,0,0,0,1051,1052,5,94,0,0,1052,1053,5,61,0,0,1053,218, + 1,0,0,0,1054,1055,5,38,0,0,1055,1056,5,61,0,0,1056,220,1,0,0,0,1057, + 1058,5,124,0,0,1058,1059,5,61,0,0,1059,222,1,0,0,0,1060,1061,5,60, + 0,0,1061,1062,5,60,0,0,1062,1063,5,61,0,0,1063,224,1,0,0,0,1064, + 1065,5,62,0,0,1065,1066,5,62,0,0,1066,1067,5,61,0,0,1067,226,1,0, + 0,0,1068,1069,5,61,0,0,1069,1070,5,61,0,0,1070,228,1,0,0,0,1071, + 1072,5,33,0,0,1072,1073,5,61,0,0,1073,230,1,0,0,0,1074,1075,5,60, + 0,0,1075,1076,5,61,0,0,1076,232,1,0,0,0,1077,1078,5,62,0,0,1078, + 1079,5,61,0,0,1079,234,1,0,0,0,1080,1081,5,38,0,0,1081,1086,5,38, + 0,0,1082,1083,5,97,0,0,1083,1084,5,110,0,0,1084,1086,5,100,0,0,1085, + 1080,1,0,0,0,1085,1082,1,0,0,0,1086,236,1,0,0,0,1087,1088,5,124, + 0,0,1088,1092,5,124,0,0,1089,1090,5,111,0,0,1090,1092,5,114,0,0, + 1091,1087,1,0,0,0,1091,1089,1,0,0,0,1092,238,1,0,0,0,1093,1094,5, + 43,0,0,1094,1095,5,43,0,0,1095,240,1,0,0,0,1096,1097,5,45,0,0,1097, + 1098,5,45,0,0,1098,242,1,0,0,0,1099,1100,5,44,0,0,1100,244,1,0,0, + 0,1101,1102,5,45,0,0,1102,1103,5,62,0,0,1103,1104,5,42,0,0,1104, + 246,1,0,0,0,1105,1106,5,45,0,0,1106,1107,5,62,0,0,1107,248,1,0,0, + 0,1108,1109,5,63,0,0,1109,250,1,0,0,0,1110,1111,5,58,0,0,1111,252, + 1,0,0,0,1112,1113,5,58,0,0,1113,1114,5,58,0,0,1114,254,1,0,0,0,1115, + 1116,5,59,0,0,1116,256,1,0,0,0,1117,1118,5,46,0,0,1118,258,1,0,0, + 0,1119,1120,5,46,0,0,1120,1121,5,42,0,0,1121,260,1,0,0,0,1122,1123, + 5,46,0,0,1123,1124,5,46,0,0,1124,1125,5,46,0,0,1125,262,1,0,0,0, + 1126,1127,3,287,143,0,1127,1128,3,287,143,0,1128,1129,3,287,143, + 0,1129,1130,3,287,143,0,1130,264,1,0,0,0,1131,1132,5,92,0,0,1132, + 1133,5,117,0,0,1133,1134,1,0,0,0,1134,1142,3,263,131,0,1135,1136, + 5,92,0,0,1136,1137,5,85,0,0,1137,1138,1,0,0,0,1138,1139,3,263,131, + 0,1139,1140,3,263,131,0,1140,1142,1,0,0,0,1141,1131,1,0,0,0,1141, + 1135,1,0,0,0,1142,266,1,0,0,0,1143,1148,3,269,134,0,1144,1147,3, + 269,134,0,1145,1147,3,273,136,0,1146,1144,1,0,0,0,1146,1145,1,0, + 0,0,1147,1150,1,0,0,0,1148,1146,1,0,0,0,1148,1149,1,0,0,0,1149,268, + 1,0,0,0,1150,1148,1,0,0,0,1151,1154,3,271,135,0,1152,1154,3,265, + 132,0,1153,1151,1,0,0,0,1153,1152,1,0,0,0,1154,270,1,0,0,0,1155, + 1156,7,2,0,0,1156,272,1,0,0,0,1157,1158,7,3,0,0,1158,274,1,0,0,0, + 1159,1166,3,283,141,0,1160,1162,5,39,0,0,1161,1160,1,0,0,0,1161, + 1162,1,0,0,0,1162,1163,1,0,0,0,1163,1165,3,273,136,0,1164,1161,1, + 0,0,0,1165,1168,1,0,0,0,1166,1164,1,0,0,0,1166,1167,1,0,0,0,1167, + 276,1,0,0,0,1168,1166,1,0,0,0,1169,1176,5,48,0,0,1170,1172,5,39, + 0,0,1171,1170,1,0,0,0,1171,1172,1,0,0,0,1172,1173,1,0,0,0,1173,1175, + 3,285,142,0,1174,1171,1,0,0,0,1175,1178,1,0,0,0,1176,1174,1,0,0, + 0,1176,1177,1,0,0,0,1177,278,1,0,0,0,1178,1176,1,0,0,0,1179,1180, + 5,48,0,0,1180,1184,5,120,0,0,1181,1182,5,48,0,0,1182,1184,5,88,0, + 0,1183,1179,1,0,0,0,1183,1181,1,0,0,0,1184,1185,1,0,0,0,1185,1192, + 3,287,143,0,1186,1188,5,39,0,0,1187,1186,1,0,0,0,1187,1188,1,0,0, + 0,1188,1189,1,0,0,0,1189,1191,3,287,143,0,1190,1187,1,0,0,0,1191, + 1194,1,0,0,0,1192,1190,1,0,0,0,1192,1193,1,0,0,0,1193,280,1,0,0, + 0,1194,1192,1,0,0,0,1195,1196,5,48,0,0,1196,1200,5,98,0,0,1197,1198, + 5,48,0,0,1198,1200,5,66,0,0,1199,1195,1,0,0,0,1199,1197,1,0,0,0, + 1200,1201,1,0,0,0,1201,1208,3,289,144,0,1202,1204,5,39,0,0,1203, + 1202,1,0,0,0,1203,1204,1,0,0,0,1204,1205,1,0,0,0,1205,1207,3,289, + 144,0,1206,1203,1,0,0,0,1207,1210,1,0,0,0,1208,1206,1,0,0,0,1208, + 1209,1,0,0,0,1209,282,1,0,0,0,1210,1208,1,0,0,0,1211,1212,7,4,0, + 0,1212,284,1,0,0,0,1213,1214,7,5,0,0,1214,286,1,0,0,0,1215,1216, + 7,6,0,0,1216,288,1,0,0,0,1217,1218,7,7,0,0,1218,290,1,0,0,0,1219, + 1221,3,293,146,0,1220,1222,3,295,147,0,1221,1220,1,0,0,0,1221,1222, + 1,0,0,0,1222,1236,1,0,0,0,1223,1225,3,293,146,0,1224,1226,3,297, + 148,0,1225,1224,1,0,0,0,1225,1226,1,0,0,0,1226,1236,1,0,0,0,1227, + 1229,3,295,147,0,1228,1230,3,293,146,0,1229,1228,1,0,0,0,1229,1230, + 1,0,0,0,1230,1236,1,0,0,0,1231,1233,3,297,148,0,1232,1234,3,293, + 146,0,1233,1232,1,0,0,0,1233,1234,1,0,0,0,1234,1236,1,0,0,0,1235, + 1219,1,0,0,0,1235,1223,1,0,0,0,1235,1227,1,0,0,0,1235,1231,1,0,0, + 0,1236,292,1,0,0,0,1237,1238,7,8,0,0,1238,294,1,0,0,0,1239,1240, + 7,9,0,0,1240,296,1,0,0,0,1241,1242,5,108,0,0,1242,1246,5,108,0,0, + 1243,1244,5,76,0,0,1244,1246,5,76,0,0,1245,1241,1,0,0,0,1245,1243, + 1,0,0,0,1246,298,1,0,0,0,1247,1251,8,10,0,0,1248,1251,3,301,150, + 0,1249,1251,3,265,132,0,1250,1247,1,0,0,0,1250,1248,1,0,0,0,1250, + 1249,1,0,0,0,1251,300,1,0,0,0,1252,1256,3,303,151,0,1253,1256,3, + 305,152,0,1254,1256,3,307,153,0,1255,1252,1,0,0,0,1255,1253,1,0, + 0,0,1255,1254,1,0,0,0,1256,302,1,0,0,0,1257,1258,5,92,0,0,1258,1288, + 5,39,0,0,1259,1260,5,92,0,0,1260,1288,5,34,0,0,1261,1262,5,92,0, + 0,1262,1288,5,63,0,0,1263,1264,5,92,0,0,1264,1288,5,92,0,0,1265, + 1266,5,92,0,0,1266,1288,5,97,0,0,1267,1268,5,92,0,0,1268,1288,5, + 98,0,0,1269,1270,5,92,0,0,1270,1288,5,102,0,0,1271,1272,5,92,0,0, + 1272,1288,5,110,0,0,1273,1274,5,92,0,0,1274,1288,5,114,0,0,1275, + 1281,5,92,0,0,1276,1278,5,13,0,0,1277,1279,5,10,0,0,1278,1277,1, + 0,0,0,1278,1279,1,0,0,0,1279,1282,1,0,0,0,1280,1282,5,10,0,0,1281, + 1276,1,0,0,0,1281,1280,1,0,0,0,1282,1288,1,0,0,0,1283,1284,5,92, + 0,0,1284,1288,5,116,0,0,1285,1286,5,92,0,0,1286,1288,5,118,0,0,1287, + 1257,1,0,0,0,1287,1259,1,0,0,0,1287,1261,1,0,0,0,1287,1263,1,0,0, + 0,1287,1265,1,0,0,0,1287,1267,1,0,0,0,1287,1269,1,0,0,0,1287,1271, + 1,0,0,0,1287,1273,1,0,0,0,1287,1275,1,0,0,0,1287,1283,1,0,0,0,1287, + 1285,1,0,0,0,1288,304,1,0,0,0,1289,1290,5,92,0,0,1290,1301,3,285, + 142,0,1291,1292,5,92,0,0,1292,1293,3,285,142,0,1293,1294,3,285,142, + 0,1294,1301,1,0,0,0,1295,1296,5,92,0,0,1296,1297,3,285,142,0,1297, + 1298,3,285,142,0,1298,1299,3,285,142,0,1299,1301,1,0,0,0,1300,1289, + 1,0,0,0,1300,1291,1,0,0,0,1300,1295,1,0,0,0,1301,306,1,0,0,0,1302, + 1303,5,92,0,0,1303,1304,5,120,0,0,1304,1306,1,0,0,0,1305,1307,3, + 287,143,0,1306,1305,1,0,0,0,1307,1308,1,0,0,0,1308,1306,1,0,0,0, + 1308,1309,1,0,0,0,1309,308,1,0,0,0,1310,1312,3,315,157,0,1311,1310, + 1,0,0,0,1311,1312,1,0,0,0,1312,1313,1,0,0,0,1313,1314,5,46,0,0,1314, + 1319,3,315,157,0,1315,1316,3,315,157,0,1316,1317,5,46,0,0,1317,1319, + 1,0,0,0,1318,1311,1,0,0,0,1318,1315,1,0,0,0,1319,310,1,0,0,0,1320, + 1322,5,101,0,0,1321,1323,3,313,156,0,1322,1321,1,0,0,0,1322,1323, + 1,0,0,0,1323,1324,1,0,0,0,1324,1331,3,315,157,0,1325,1327,5,69,0, + 0,1326,1328,3,313,156,0,1327,1326,1,0,0,0,1327,1328,1,0,0,0,1328, + 1329,1,0,0,0,1329,1331,3,315,157,0,1330,1320,1,0,0,0,1330,1325,1, + 0,0,0,1331,312,1,0,0,0,1332,1333,7,11,0,0,1333,314,1,0,0,0,1334, + 1341,3,273,136,0,1335,1337,5,39,0,0,1336,1335,1,0,0,0,1336,1337, + 1,0,0,0,1337,1338,1,0,0,0,1338,1340,3,273,136,0,1339,1336,1,0,0, + 0,1340,1343,1,0,0,0,1341,1339,1,0,0,0,1341,1342,1,0,0,0,1342,316, + 1,0,0,0,1343,1341,1,0,0,0,1344,1345,7,12,0,0,1345,318,1,0,0,0,1346, + 1347,5,117,0,0,1347,1350,5,56,0,0,1348,1350,7,0,0,0,1349,1346,1, + 0,0,0,1349,1348,1,0,0,0,1350,320,1,0,0,0,1351,1355,8,13,0,0,1352, + 1355,3,301,150,0,1353,1355,3,265,132,0,1354,1351,1,0,0,0,1354,1352, + 1,0,0,0,1354,1353,1,0,0,0,1355,322,1,0,0,0,1356,1357,5,82,0,0,1357, + 1358,5,34,0,0,1358,1364,1,0,0,0,1359,1360,5,92,0,0,1360,1363,7,14, + 0,0,1361,1363,8,15,0,0,1362,1359,1,0,0,0,1362,1361,1,0,0,0,1363, + 1366,1,0,0,0,1364,1365,1,0,0,0,1364,1362,1,0,0,0,1365,1367,1,0,0, + 0,1366,1364,1,0,0,0,1367,1371,5,40,0,0,1368,1370,8,16,0,0,1369,1368, + 1,0,0,0,1370,1373,1,0,0,0,1371,1372,1,0,0,0,1371,1369,1,0,0,0,1372, + 1374,1,0,0,0,1373,1371,1,0,0,0,1374,1380,5,41,0,0,1375,1376,5,92, + 0,0,1376,1379,7,14,0,0,1377,1379,8,17,0,0,1378,1375,1,0,0,0,1378, + 1377,1,0,0,0,1379,1382,1,0,0,0,1380,1381,1,0,0,0,1380,1378,1,0,0, + 0,1381,1383,1,0,0,0,1382,1380,1,0,0,0,1383,1384,5,34,0,0,1384,324, + 1,0,0,0,1385,1386,3,275,137,0,1386,1387,3,333,166,0,1387,1398,1, + 0,0,0,1388,1389,3,277,138,0,1389,1390,3,333,166,0,1390,1398,1,0, + 0,0,1391,1392,3,279,139,0,1392,1393,3,333,166,0,1393,1398,1,0,0, + 0,1394,1395,3,281,140,0,1395,1396,3,333,166,0,1396,1398,1,0,0,0, + 1397,1385,1,0,0,0,1397,1388,1,0,0,0,1397,1391,1,0,0,0,1397,1394, + 1,0,0,0,1398,326,1,0,0,0,1399,1401,3,309,154,0,1400,1402,3,311,155, + 0,1401,1400,1,0,0,0,1401,1402,1,0,0,0,1402,1403,1,0,0,0,1403,1404, + 3,333,166,0,1404,1410,1,0,0,0,1405,1406,3,315,157,0,1406,1407,3, + 311,155,0,1407,1408,3,333,166,0,1408,1410,1,0,0,0,1409,1399,1,0, + 0,0,1409,1405,1,0,0,0,1410,328,1,0,0,0,1411,1412,3,7,3,0,1412,1413, + 3,333,166,0,1413,330,1,0,0,0,1414,1415,3,3,1,0,1415,1416,3,333,166, + 0,1416,332,1,0,0,0,1417,1418,3,267,133,0,1418,334,1,0,0,0,1419,1421, + 7,18,0,0,1420,1419,1,0,0,0,1421,1422,1,0,0,0,1422,1420,1,0,0,0,1422, + 1423,1,0,0,0,1423,1424,1,0,0,0,1424,1425,6,167,1,0,1425,336,1,0, + 0,0,1426,1428,5,13,0,0,1427,1429,5,10,0,0,1428,1427,1,0,0,0,1428, + 1429,1,0,0,0,1429,1432,1,0,0,0,1430,1432,5,10,0,0,1431,1426,1,0, + 0,0,1431,1430,1,0,0,0,1432,1433,1,0,0,0,1433,1434,6,168,1,0,1434, + 338,1,0,0,0,1435,1436,5,47,0,0,1436,1437,5,42,0,0,1437,1441,1,0, + 0,0,1438,1440,9,0,0,0,1439,1438,1,0,0,0,1440,1443,1,0,0,0,1441,1442, + 1,0,0,0,1441,1439,1,0,0,0,1442,1444,1,0,0,0,1443,1441,1,0,0,0,1444, + 1445,5,42,0,0,1445,1446,5,47,0,0,1446,1447,1,0,0,0,1447,1448,6,169, + 1,0,1448,340,1,0,0,0,1449,1450,5,47,0,0,1450,1451,5,47,0,0,1451, + 1455,1,0,0,0,1452,1454,8,19,0,0,1453,1452,1,0,0,0,1454,1457,1,0, + 0,0,1455,1453,1,0,0,0,1455,1456,1,0,0,0,1456,1458,1,0,0,0,1457,1455, + 1,0,0,0,1458,1459,6,170,1,0,1459,342,1,0,0,0,74,0,345,349,353,357, + 359,362,368,374,377,382,384,387,394,398,402,410,416,421,426,431, + 439,1028,1085,1091,1141,1146,1148,1153,1161,1166,1171,1176,1183, + 1187,1192,1199,1203,1208,1221,1225,1229,1233,1235,1245,1250,1255, + 1278,1281,1287,1300,1308,1311,1318,1322,1327,1330,1336,1341,1349, + 1354,1362,1364,1371,1378,1380,1397,1401,1409,1422,1428,1431,1441, + 1455,2,0,1,0,6,0,0 + ] class CPP14Lexer(Lexer): @@ -749,43 +581,43 @@ class CPP14Lexer(Lexer): decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - T__0 = 1 - T__1 = 2 - T__2 = 3 - T__3 = 4 - T__4 = 5 - T__5 = 6 - T__6 = 7 - T__7 = 8 - MultiLineMacro = 9 - Directive = 10 - Alignas = 11 - Alignof = 12 - Asm = 13 - Auto = 14 - Bool = 15 - Break = 16 - Case = 17 - Catch = 18 - Char = 19 - Char16 = 20 - Char32 = 21 - Class = 22 - Const = 23 - Constexpr = 24 - Const_cast = 25 - Continue = 26 - Decltype = 27 - Default = 28 - Delete = 29 - Do = 30 - Double = 31 - Dynamic_cast = 32 - Else = 33 - Enum = 34 - Explicit = 35 - Export = 36 - Extern = 37 + IntegerLiteral = 1 + CharacterLiteral = 2 + FloatingLiteral = 3 + StringLiteral = 4 + BooleanLiteral = 5 + PointerLiteral = 6 + UserDefinedLiteral = 7 + MultiLineMacro = 8 + Directive = 9 + Alignas = 10 + Alignof = 11 + Asm = 12 + Auto = 13 + Bool = 14 + Break = 15 + Case = 16 + Catch = 17 + Char = 18 + Char16 = 19 + Char32 = 20 + Class = 21 + Const = 22 + Constexpr = 23 + Const_cast = 24 + Continue = 25 + Decltype = 26 + Default = 27 + Delete = 28 + Do = 29 + Double = 30 + Dynamic_cast = 31 + Else = 32 + Enum = 33 + Explicit = 34 + Export = 35 + Extern = 36 + False_ = 37 Final = 38 Float = 39 For = 40 @@ -820,183 +652,177 @@ class CPP14Lexer(Lexer): This = 69 Thread_local = 70 Throw = 71 - Try = 72 - Typedef = 73 - Typeid_ = 74 - Typename_ = 75 - Union = 76 - Unsigned = 77 - Using = 78 - Virtual = 79 - Void = 80 - Volatile = 81 - Wchar = 82 - While = 83 - LeftParen = 84 - RightParen = 85 - LeftBracket = 86 - RightBracket = 87 - LeftBrace = 88 - RightBrace = 89 - Plus = 90 - Minus = 91 - Star = 92 - Div = 93 - Mod = 94 - Caret = 95 - And = 96 - Or = 97 - Tilde = 98 - Not = 99 - Assign = 100 - Less = 101 - Greater = 102 - PlusAssign = 103 - MinusAssign = 104 - StarAssign = 105 - DivAssign = 106 - ModAssign = 107 - XorAssign = 108 - AndAssign = 109 - OrAssign = 110 - LeftShift = 111 - RightShift = 112 - LeftShiftAssign = 113 - RightShiftAssign = 114 - Equal = 115 - NotEqual = 116 - LessEqual = 117 - GreaterEqual = 118 - AndAnd = 119 - OrOr = 120 - PlusPlus = 121 - MinusMinus = 122 - Comma = 123 - ArrowStar = 124 - Arrow = 125 - Question = 126 - Colon = 127 - Doublecolon = 128 - Semi = 129 - Dot = 130 - DotStar = 131 - Ellipsis = 132 - Identifier = 133 - Integerliteral = 134 - Decimalliteral = 135 - Octalliteral = 136 - Hexadecimalliteral = 137 - Binaryliteral = 138 - Integersuffix = 139 - Characterliteral = 140 - Floatingliteral = 141 - Stringliteral = 142 - Userdefinedintegerliteral = 143 - Userdefinedfloatingliteral = 144 - Userdefinedstringliteral = 145 - Userdefinedcharacterliteral = 146 - Whitespace = 147 - Newline = 148 - BlockComment = 149 - LineComment = 150 + True_ = 72 + Try = 73 + Typedef = 74 + Typeid_ = 75 + Typename_ = 76 + Union = 77 + Unsigned = 78 + Using = 79 + Virtual = 80 + Void = 81 + Volatile = 82 + Wchar = 83 + While = 84 + LeftParen = 85 + RightParen = 86 + LeftBracket = 87 + RightBracket = 88 + LeftBrace = 89 + RightBrace = 90 + Plus = 91 + Minus = 92 + Star = 93 + Div = 94 + Mod = 95 + Caret = 96 + And = 97 + Or = 98 + Tilde = 99 + Not = 100 + Assign = 101 + Less = 102 + Greater = 103 + PlusAssign = 104 + MinusAssign = 105 + StarAssign = 106 + DivAssign = 107 + ModAssign = 108 + XorAssign = 109 + AndAssign = 110 + OrAssign = 111 + LeftShiftAssign = 112 + RightShiftAssign = 113 + Equal = 114 + NotEqual = 115 + LessEqual = 116 + GreaterEqual = 117 + AndAnd = 118 + OrOr = 119 + PlusPlus = 120 + MinusMinus = 121 + Comma = 122 + ArrowStar = 123 + Arrow = 124 + Question = 125 + Colon = 126 + Doublecolon = 127 + Semi = 128 + Dot = 129 + DotStar = 130 + Ellipsis = 131 + Identifier = 132 + DecimalLiteral = 133 + OctalLiteral = 134 + HexadecimalLiteral = 135 + BinaryLiteral = 136 + Integersuffix = 137 + UserDefinedIntegerLiteral = 138 + UserDefinedFloatingLiteral = 139 + UserDefinedStringLiteral = 140 + UserDefinedCharacterLiteral = 141 + Whitespace = 142 + Newline = 143 + BlockComment = 144 + LineComment = 145 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] modeNames = [ "DEFAULT_MODE" ] literalNames = [ "", - "'!'", "'not'", "'&&'", "'and'", "'||'", "'or'", "'false'", - "'true'", "'alignas'", "'alignof'", "'asm'", "'auto'", "'bool'", - "'break'", "'case'", "'catch'", "'char'", "'char16_t'", "'char32_t'", - "'class'", "'const'", "'constexpr'", "'const_cast'", "'continue'", - "'decltype'", "'default'", "'delete'", "'do'", "'double'", "'dynamic_cast'", - "'else'", "'enum'", "'explicit'", "'export'", "'extern'", "'final'", - "'float'", "'for'", "'friend'", "'goto'", "'if'", "'inline'", - "'int'", "'long'", "'mutable'", "'namespace'", "'new'", "'noexcept'", - "'nullptr'", "'operator'", "'override'", "'private'", "'protected'", - "'public'", "'register'", "'reinterpret_cast'", "'return'", - "'short'", "'signed'", "'sizeof'", "'static'", "'static_assert'", + "'alignas'", "'alignof'", "'asm'", "'auto'", "'bool'", "'break'", + "'case'", "'catch'", "'char'", "'char16_t'", "'char32_t'", "'class'", + "'const'", "'constexpr'", "'const_cast'", "'continue'", "'decltype'", + "'default'", "'delete'", "'do'", "'double'", "'dynamic_cast'", + "'else'", "'enum'", "'explicit'", "'export'", "'extern'", "'false'", + "'final'", "'float'", "'for'", "'friend'", "'goto'", "'if'", + "'inline'", "'int'", "'long'", "'mutable'", "'namespace'", "'new'", + "'noexcept'", "'nullptr'", "'operator'", "'override'", "'private'", + "'protected'", "'public'", "'register'", "'reinterpret_cast'", + "'return'", "'short'", "'signed'", "'sizeof'", "'static'", "'static_assert'", "'static_cast'", "'struct'", "'switch'", "'template'", "'this'", - "'thread_local'", "'throw'", "'try'", "'typedef'", "'typeid'", - "'typename'", "'union'", "'unsigned'", "'using'", "'virtual'", - "'void'", "'volatile'", "'wchar_t'", "'while'", "'('", "')'", - "'['", "']'", "'{'", "'}'", "'+'", "'-'", "'*'", "'/'", "'%'", - "'^'", "'&'", "'|'", "'~'", "'='", "'<'", "'>'", "'+='", "'-='", - "'*='", "'/='", "'%='", "'^='", "'&='", "'|='", "'<<'", "'>>'", + "'thread_local'", "'throw'", "'true'", "'try'", "'typedef'", + "'typeid'", "'typename'", "'union'", "'unsigned'", "'using'", + "'virtual'", "'void'", "'volatile'", "'wchar_t'", "'while'", + "'('", "')'", "'['", "']'", "'{'", "'}'", "'+'", "'-'", "'*'", + "'/'", "'%'", "'^'", "'&'", "'|'", "'~'", "'='", "'<'", "'>'", + "'+='", "'-='", "'*='", "'/='", "'%='", "'^='", "'&='", "'|='", "'<<='", "'>>='", "'=='", "'!='", "'<='", "'>='", "'++'", "'--'", "','", "'->*'", "'->'", "'?'", "':'", "'::'", "';'", "'.'", "'.*'", "'...'" ] symbolicNames = [ "", - "MultiLineMacro", "Directive", "Alignas", "Alignof", "Asm", - "Auto", "Bool", "Break", "Case", "Catch", "Char", "Char16", - "Char32", "Class", "Const", "Constexpr", "Const_cast", "Continue", - "Decltype", "Default", "Delete", "Do", "Double", "Dynamic_cast", - "Else", "Enum", "Explicit", "Export", "Extern", "Final", "Float", - "For", "Friend", "Goto", "If", "Inline", "Int", "Long", "Mutable", - "Namespace", "New", "Noexcept", "Nullptr", "Operator", "Override", - "Private", "Protected", "Public", "Register", "Reinterpret_cast", - "Return", "Short", "Signed", "Sizeof", "Static", "Static_assert", - "Static_cast", "Struct", "Switch", "Template", "This", "Thread_local", - "Throw", "Try", "Typedef", "Typeid_", "Typename_", "Union", + "IntegerLiteral", "CharacterLiteral", "FloatingLiteral", "StringLiteral", + "BooleanLiteral", "PointerLiteral", "UserDefinedLiteral", "MultiLineMacro", + "Directive", "Alignas", "Alignof", "Asm", "Auto", "Bool", "Break", + "Case", "Catch", "Char", "Char16", "Char32", "Class", "Const", + "Constexpr", "Const_cast", "Continue", "Decltype", "Default", + "Delete", "Do", "Double", "Dynamic_cast", "Else", "Enum", "Explicit", + "Export", "Extern", "False_", "Final", "Float", "For", "Friend", + "Goto", "If", "Inline", "Int", "Long", "Mutable", "Namespace", + "New", "Noexcept", "Nullptr", "Operator", "Override", "Private", + "Protected", "Public", "Register", "Reinterpret_cast", "Return", + "Short", "Signed", "Sizeof", "Static", "Static_assert", "Static_cast", + "Struct", "Switch", "Template", "This", "Thread_local", "Throw", + "True_", "Try", "Typedef", "Typeid_", "Typename_", "Union", "Unsigned", "Using", "Virtual", "Void", "Volatile", "Wchar", "While", "LeftParen", "RightParen", "LeftBracket", "RightBracket", "LeftBrace", "RightBrace", "Plus", "Minus", "Star", "Div", "Mod", "Caret", "And", "Or", "Tilde", "Not", "Assign", "Less", "Greater", "PlusAssign", "MinusAssign", "StarAssign", "DivAssign", "ModAssign", - "XorAssign", "AndAssign", "OrAssign", "LeftShift", "RightShift", - "LeftShiftAssign", "RightShiftAssign", "Equal", "NotEqual", - "LessEqual", "GreaterEqual", "AndAnd", "OrOr", "PlusPlus", "MinusMinus", - "Comma", "ArrowStar", "Arrow", "Question", "Colon", "Doublecolon", - "Semi", "Dot", "DotStar", "Ellipsis", "Identifier", "Integerliteral", - "Decimalliteral", "Octalliteral", "Hexadecimalliteral", "Binaryliteral", - "Integersuffix", "Characterliteral", "Floatingliteral", "Stringliteral", - "Userdefinedintegerliteral", "Userdefinedfloatingliteral", "Userdefinedstringliteral", - "Userdefinedcharacterliteral", "Whitespace", "Newline", "BlockComment", - "LineComment" ] + "XorAssign", "AndAssign", "OrAssign", "LeftShiftAssign", "RightShiftAssign", + "Equal", "NotEqual", "LessEqual", "GreaterEqual", "AndAnd", + "OrOr", "PlusPlus", "MinusMinus", "Comma", "ArrowStar", "Arrow", + "Question", "Colon", "Doublecolon", "Semi", "Dot", "DotStar", + "Ellipsis", "Identifier", "DecimalLiteral", "OctalLiteral", + "HexadecimalLiteral", "BinaryLiteral", "Integersuffix", "UserDefinedIntegerLiteral", + "UserDefinedFloatingLiteral", "UserDefinedStringLiteral", "UserDefinedCharacterLiteral", + "Whitespace", "Newline", "BlockComment", "LineComment" ] - ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", - "T__7", "MultiLineMacro", "Directive", "Alignas", "Alignof", - "Asm", "Auto", "Bool", "Break", "Case", "Catch", "Char", - "Char16", "Char32", "Class", "Const", "Constexpr", "Const_cast", + ruleNames = [ "IntegerLiteral", "CharacterLiteral", "FloatingLiteral", + "StringLiteral", "BooleanLiteral", "PointerLiteral", "UserDefinedLiteral", + "MultiLineMacro", "Directive", "Alignas", "Alignof", "Asm", + "Auto", "Bool", "Break", "Case", "Catch", "Char", "Char16", + "Char32", "Class", "Const", "Constexpr", "Const_cast", "Continue", "Decltype", "Default", "Delete", "Do", "Double", "Dynamic_cast", "Else", "Enum", "Explicit", "Export", - "Extern", "Final", "Float", "For", "Friend", "Goto", "If", - "Inline", "Int", "Long", "Mutable", "Namespace", "New", - "Noexcept", "Nullptr", "Operator", "Override", "Private", - "Protected", "Public", "Register", "Reinterpret_cast", + "Extern", "False_", "Final", "Float", "For", "Friend", + "Goto", "If", "Inline", "Int", "Long", "Mutable", "Namespace", + "New", "Noexcept", "Nullptr", "Operator", "Override", + "Private", "Protected", "Public", "Register", "Reinterpret_cast", "Return", "Short", "Signed", "Sizeof", "Static", "Static_assert", "Static_cast", "Struct", "Switch", "Template", "This", - "Thread_local", "Throw", "Try", "Typedef", "Typeid_", + "Thread_local", "Throw", "True_", "Try", "Typedef", "Typeid_", "Typename_", "Union", "Unsigned", "Using", "Virtual", "Void", "Volatile", "Wchar", "While", "LeftParen", "RightParen", "LeftBracket", "RightBracket", "LeftBrace", "RightBrace", "Plus", "Minus", "Star", "Div", "Mod", "Caret", "And", "Or", "Tilde", "Not", "Assign", "Less", "Greater", "PlusAssign", "MinusAssign", "StarAssign", "DivAssign", "ModAssign", - "XorAssign", "AndAssign", "OrAssign", "LeftShift", "RightShift", - "LeftShiftAssign", "RightShiftAssign", "Equal", "NotEqual", - "LessEqual", "GreaterEqual", "AndAnd", "OrOr", "PlusPlus", - "MinusMinus", "Comma", "ArrowStar", "Arrow", "Question", - "Colon", "Doublecolon", "Semi", "Dot", "DotStar", "Ellipsis", - "Hexquad", "Universalcharactername", "Identifier", "Identifiernondigit", - "NONDIGIT", "DIGIT", "Integerliteral", "Decimalliteral", - "Octalliteral", "Hexadecimalliteral", "Binaryliteral", - "NONZERODIGIT", "OCTALDIGIT", "HEXADECIMALDIGIT", "BINARYDIGIT", - "Integersuffix", "Unsignedsuffix", "Longsuffix", "Longlongsuffix", - "Characterliteral", "Cchar", "Escapesequence", "Simpleescapesequence", - "Octalescapesequence", "Hexadecimalescapesequence", "Floatingliteral", - "Fractionalconstant", "Exponentpart", "SIGN", "Digitsequence", - "Floatingsuffix", "Stringliteral", "Encodingprefix", "Schar", - "Rawstring", "Userdefinedintegerliteral", "Userdefinedfloatingliteral", - "Userdefinedstringliteral", "Userdefinedcharacterliteral", - "Udsuffix", "Whitespace", "Newline", "BlockComment", "LineComment" ] + "XorAssign", "AndAssign", "OrAssign", "LeftShiftAssign", + "RightShiftAssign", "Equal", "NotEqual", "LessEqual", + "GreaterEqual", "AndAnd", "OrOr", "PlusPlus", "MinusMinus", + "Comma", "ArrowStar", "Arrow", "Question", "Colon", "Doublecolon", + "Semi", "Dot", "DotStar", "Ellipsis", "Hexquad", "Universalcharactername", + "Identifier", "Identifiernondigit", "NONDIGIT", "DIGIT", + "DecimalLiteral", "OctalLiteral", "HexadecimalLiteral", + "BinaryLiteral", "NONZERODIGIT", "OCTALDIGIT", "HEXADECIMALDIGIT", + "BINARYDIGIT", "Integersuffix", "Unsignedsuffix", "Longsuffix", + "Longlongsuffix", "Cchar", "Escapesequence", "Simpleescapesequence", + "Octalescapesequence", "Hexadecimalescapesequence", "Fractionalconstant", + "Exponentpart", "SIGN", "Digitsequence", "Floatingsuffix", + "Encodingprefix", "Schar", "Rawstring", "UserDefinedIntegerLiteral", + "UserDefinedFloatingLiteral", "UserDefinedStringLiteral", + "UserDefinedCharacterLiteral", "Udsuffix", "Whitespace", + "Newline", "BlockComment", "LineComment" ] - grammarFileName = "CPP14.g4" + grammarFileName = "CPP14Lexer.g4" def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.tokens b/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.tokens new file mode 100644 index 00000000..97906afe --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14Lexer.tokens @@ -0,0 +1,264 @@ +IntegerLiteral=1 +CharacterLiteral=2 +FloatingLiteral=3 +StringLiteral=4 +BooleanLiteral=5 +PointerLiteral=6 +UserDefinedLiteral=7 +MultiLineMacro=8 +Directive=9 +Alignas=10 +Alignof=11 +Asm=12 +Auto=13 +Bool=14 +Break=15 +Case=16 +Catch=17 +Char=18 +Char16=19 +Char32=20 +Class=21 +Const=22 +Constexpr=23 +Const_cast=24 +Continue=25 +Decltype=26 +Default=27 +Delete=28 +Do=29 +Double=30 +Dynamic_cast=31 +Else=32 +Enum=33 +Explicit=34 +Export=35 +Extern=36 +False_=37 +Final=38 +Float=39 +For=40 +Friend=41 +Goto=42 +If=43 +Inline=44 +Int=45 +Long=46 +Mutable=47 +Namespace=48 +New=49 +Noexcept=50 +Nullptr=51 +Operator=52 +Override=53 +Private=54 +Protected=55 +Public=56 +Register=57 +Reinterpret_cast=58 +Return=59 +Short=60 +Signed=61 +Sizeof=62 +Static=63 +Static_assert=64 +Static_cast=65 +Struct=66 +Switch=67 +Template=68 +This=69 +Thread_local=70 +Throw=71 +True_=72 +Try=73 +Typedef=74 +Typeid_=75 +Typename_=76 +Union=77 +Unsigned=78 +Using=79 +Virtual=80 +Void=81 +Volatile=82 +Wchar=83 +While=84 +LeftParen=85 +RightParen=86 +LeftBracket=87 +RightBracket=88 +LeftBrace=89 +RightBrace=90 +Plus=91 +Minus=92 +Star=93 +Div=94 +Mod=95 +Caret=96 +And=97 +Or=98 +Tilde=99 +Not=100 +Assign=101 +Less=102 +Greater=103 +PlusAssign=104 +MinusAssign=105 +StarAssign=106 +DivAssign=107 +ModAssign=108 +XorAssign=109 +AndAssign=110 +OrAssign=111 +LeftShiftAssign=112 +RightShiftAssign=113 +Equal=114 +NotEqual=115 +LessEqual=116 +GreaterEqual=117 +AndAnd=118 +OrOr=119 +PlusPlus=120 +MinusMinus=121 +Comma=122 +ArrowStar=123 +Arrow=124 +Question=125 +Colon=126 +Doublecolon=127 +Semi=128 +Dot=129 +DotStar=130 +Ellipsis=131 +Identifier=132 +DecimalLiteral=133 +OctalLiteral=134 +HexadecimalLiteral=135 +BinaryLiteral=136 +Integersuffix=137 +UserDefinedIntegerLiteral=138 +UserDefinedFloatingLiteral=139 +UserDefinedStringLiteral=140 +UserDefinedCharacterLiteral=141 +Whitespace=142 +Newline=143 +BlockComment=144 +LineComment=145 +'alignas'=10 +'alignof'=11 +'asm'=12 +'auto'=13 +'bool'=14 +'break'=15 +'case'=16 +'catch'=17 +'char'=18 +'char16_t'=19 +'char32_t'=20 +'class'=21 +'const'=22 +'constexpr'=23 +'const_cast'=24 +'continue'=25 +'decltype'=26 +'default'=27 +'delete'=28 +'do'=29 +'double'=30 +'dynamic_cast'=31 +'else'=32 +'enum'=33 +'explicit'=34 +'export'=35 +'extern'=36 +'false'=37 +'final'=38 +'float'=39 +'for'=40 +'friend'=41 +'goto'=42 +'if'=43 +'inline'=44 +'int'=45 +'long'=46 +'mutable'=47 +'namespace'=48 +'new'=49 +'noexcept'=50 +'nullptr'=51 +'operator'=52 +'override'=53 +'private'=54 +'protected'=55 +'public'=56 +'register'=57 +'reinterpret_cast'=58 +'return'=59 +'short'=60 +'signed'=61 +'sizeof'=62 +'static'=63 +'static_assert'=64 +'static_cast'=65 +'struct'=66 +'switch'=67 +'template'=68 +'this'=69 +'thread_local'=70 +'throw'=71 +'true'=72 +'try'=73 +'typedef'=74 +'typeid'=75 +'typename'=76 +'union'=77 +'unsigned'=78 +'using'=79 +'virtual'=80 +'void'=81 +'volatile'=82 +'wchar_t'=83 +'while'=84 +'('=85 +')'=86 +'['=87 +']'=88 +'{'=89 +'}'=90 +'+'=91 +'-'=92 +'*'=93 +'/'=94 +'%'=95 +'^'=96 +'&'=97 +'|'=98 +'~'=99 +'='=101 +'<'=102 +'>'=103 +'+='=104 +'-='=105 +'*='=106 +'/='=107 +'%='=108 +'^='=109 +'&='=110 +'|='=111 +'<<='=112 +'>>='=113 +'=='=114 +'!='=115 +'<='=116 +'>='=117 +'++'=120 +'--'=121 +','=122 +'->*'=123 +'->'=124 +'?'=125 +':'=126 +'::'=127 +';'=128 +'.'=129 +'.*'=130 +'...'=131 diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.g4 b/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.g4 new file mode 100644 index 00000000..d89a8a83 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.g4 @@ -0,0 +1,1075 @@ +/******************************************************************************* + * The MIT License (MIT) + * + * Copyright (c) 2015 Camilo Sanchez (Camiloasc1) 2020 Martin Mirchev (Marti2203) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * **************************************************************************** + */ + +// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging + +parser grammar CPP14Parser; + +options { + superClass = CPP14ParserBase; + tokenVocab = CPP14Lexer; +} + +// Insert here @header for C++ parser. + +/*Basic concepts*/ + +translationUnit + : declarationseq? EOF + ; + +/*Expressions*/ + +primaryExpression + : literal+ + | This + | LeftParen expression RightParen + | idExpression + | lambdaExpression + ; + +idExpression + : unqualifiedId + | qualifiedId + ; + +unqualifiedId + : Identifier + | operatorFunctionId + | conversionFunctionId + | literalOperatorId + | Tilde (className | decltypeSpecifier) + | templateId + ; + +qualifiedId + : nestedNameSpecifier Template? unqualifiedId + ; + +nestedNameSpecifier + : (theTypeName | namespaceName | decltypeSpecifier)? Doublecolon + | nestedNameSpecifier ( Identifier | Template? simpleTemplateId) Doublecolon + ; + +lambdaExpression + : lambdaIntroducer lambdaDeclarator? compoundStatement + ; + +lambdaIntroducer + : LeftBracket lambdaCapture? RightBracket + ; + +lambdaCapture + : captureList + | captureDefault (Comma captureList)? + ; + +captureDefault + : And + | Assign + ; + +captureList + : capture (Comma capture)* Ellipsis? + ; + +capture + : simpleCapture + | initcapture + ; + +simpleCapture + : And? Identifier + | This + ; + +initcapture + : And? Identifier initializer + ; + +lambdaDeclarator + : LeftParen parameterDeclarationClause? RightParen Mutable? exceptionSpecification? attributeSpecifierSeq? trailingReturnType? + ; + +postfixExpression + : primaryExpression + | postfixExpression LeftBracket (expression | bracedInitList) RightBracket + | postfixExpression LeftParen expressionList? RightParen + | (simpleTypeSpecifier | typeNameSpecifier) ( + LeftParen expressionList? RightParen + | bracedInitList + ) + | postfixExpression (Dot | Arrow) (Template? idExpression | pseudoDestructorName) + | postfixExpression (PlusPlus | MinusMinus) + | (Dynamic_cast | Static_cast | Reinterpret_cast | Const_cast) Less theTypeId Greater LeftParen expression RightParen + | typeIdOfTheTypeId LeftParen (expression | theTypeId) RightParen + ; + +/* + add a middle layer to eliminate duplicated function declarations + */ + +typeIdOfTheTypeId + : Typeid_ + ; + +expressionList + : initializerList + ; + +pseudoDestructorName + : nestedNameSpecifier? (theTypeName Doublecolon)? Tilde theTypeName + | nestedNameSpecifier Template simpleTemplateId Doublecolon Tilde theTypeName + | Tilde decltypeSpecifier + ; + +unaryExpression + : postfixExpression + | (PlusPlus | MinusMinus | unaryOperator | Sizeof) unaryExpression + | Sizeof (LeftParen theTypeId RightParen | Ellipsis LeftParen Identifier RightParen) + | Alignof LeftParen theTypeId RightParen + | noExceptExpression + | newExpression_ + | deleteExpression + ; + +unaryOperator + : Or + | Star + | And + | Plus + | Tilde + | Minus + | Not + ; + +newExpression_ + : Doublecolon? New newPlacement? (newTypeId | LeftParen theTypeId RightParen) newInitializer_? + ; + +newPlacement + : LeftParen expressionList RightParen + ; + +newTypeId + : typeSpecifierSeq newDeclarator_? + ; + +newDeclarator_ + : pointerOperator newDeclarator_? + | noPointerNewDeclarator + ; + +noPointerNewDeclarator + : LeftBracket expression RightBracket attributeSpecifierSeq? + | noPointerNewDeclarator LeftBracket constantExpression RightBracket attributeSpecifierSeq? + ; + +newInitializer_ + : LeftParen expressionList? RightParen + | bracedInitList + ; + +deleteExpression + : Doublecolon? Delete (LeftBracket RightBracket)? castExpression + ; + +noExceptExpression + : Noexcept LeftParen expression RightParen + ; + +castExpression + : unaryExpression + | LeftParen theTypeId RightParen castExpression + ; + +pointerMemberExpression + : castExpression ((DotStar | ArrowStar) castExpression)* + ; + +multiplicativeExpression + : pointerMemberExpression ((Star | Div | Mod) pointerMemberExpression)* + ; + +additiveExpression + : multiplicativeExpression ((Plus | Minus) multiplicativeExpression)* + ; + +shiftExpression + : additiveExpression (shiftOperator additiveExpression)* + ; + +shiftOperator + : Greater Greater + | Less Less + ; + +relationalExpression + : shiftExpression ((Less | Greater | LessEqual | GreaterEqual) shiftExpression)* + ; + +equalityExpression + : relationalExpression ((Equal | NotEqual) relationalExpression)* + ; + +andExpression + : equalityExpression (And equalityExpression)* + ; + +exclusiveOrExpression + : andExpression (Caret andExpression)* + ; + +inclusiveOrExpression + : exclusiveOrExpression (Or exclusiveOrExpression)* + ; + +logicalAndExpression + : inclusiveOrExpression (AndAnd inclusiveOrExpression)* + ; + +logicalOrExpression + : logicalAndExpression (OrOr logicalAndExpression)* + ; + +conditionalExpression + : logicalOrExpression (Question expression Colon assignmentExpression)? + ; + +assignmentExpression + : conditionalExpression + | logicalOrExpression assignmentOperator initializerClause + | throwExpression + ; + +assignmentOperator + : Assign + | StarAssign + | DivAssign + | ModAssign + | PlusAssign + | MinusAssign + | RightShiftAssign + | LeftShiftAssign + | AndAssign + | XorAssign + | OrAssign + ; + +expression + : assignmentExpression (Comma assignmentExpression)* + ; + +constantExpression + : conditionalExpression + ; + +/*Statements*/ + +statement + : labeledStatement + | declarationStatement + | attributeSpecifierSeq? ( + expressionStatement + | compoundStatement + | selectionStatement + | iterationStatement + | jumpStatement + | tryBlock + ) + ; + +labeledStatement + : attributeSpecifierSeq? (Identifier | Case constantExpression | Default) Colon statement + ; + +expressionStatement + : expression? Semi + ; + +compoundStatement + : LeftBrace statementSeq? RightBrace + ; + +statementSeq + : statement+ + ; + +selectionStatement + : If LeftParen condition RightParen statement (Else statement)? + | Switch LeftParen condition RightParen statement + ; + +condition + : expression + | attributeSpecifierSeq? declSpecifierSeq declarator ( + Assign initializerClause + | bracedInitList + ) + ; + +iterationStatement + : While LeftParen condition RightParen statement + | Do statement While LeftParen expression RightParen Semi + | For LeftParen ( + forInitStatement condition? Semi expression? + | forRangeDeclaration Colon forRangeInitializer + ) RightParen statement + ; + +forInitStatement + : expressionStatement + | simpleDeclaration + ; + +forRangeDeclaration + : attributeSpecifierSeq? declSpecifierSeq declarator + ; + +forRangeInitializer + : expression + | bracedInitList + ; + +jumpStatement + : (Break | Continue | Return (expression | bracedInitList)? | Goto Identifier) Semi + ; + +declarationStatement + : blockDeclaration + ; + +/*Declarations*/ + +declarationseq + : declaration+ + ; + +declaration + : blockDeclaration + | functionDefinition + | templateDeclaration + | explicitInstantiation + | explicitSpecialization + | linkageSpecification + | namespaceDefinition + | emptyDeclaration_ + | attributeDeclaration + ; + +blockDeclaration + : simpleDeclaration + | asmDefinition + | namespaceAliasDefinition + | usingDeclaration + | usingDirective + | staticAssertDeclaration + | aliasDeclaration + | opaqueEnumDeclaration + ; + +aliasDeclaration + : Using Identifier attributeSpecifierSeq? Assign theTypeId Semi + ; + +simpleDeclaration + : declSpecifierSeq? initDeclaratorList? Semi + | attributeSpecifierSeq declSpecifierSeq? initDeclaratorList Semi + ; + +staticAssertDeclaration + : Static_assert LeftParen constantExpression Comma StringLiteral RightParen Semi + ; + +emptyDeclaration_ + : Semi + ; + +attributeDeclaration + : attributeSpecifierSeq Semi + ; + +declSpecifier + : storageClassSpecifier + | typeSpecifier + | functionSpecifier + | Friend + | Typedef + | Constexpr + ; + +declSpecifierSeq + : declSpecifier+? attributeSpecifierSeq? + ; + +storageClassSpecifier + : Register + | Static + | Thread_local + | Extern + | Mutable + ; + +functionSpecifier + : Inline + | Virtual + | Explicit + ; + +typedefName + : Identifier + ; + +typeSpecifier + : trailingTypeSpecifier + | classSpecifier + | enumSpecifier + ; + +trailingTypeSpecifier + : simpleTypeSpecifier + | elaboratedTypeSpecifier + | typeNameSpecifier + | cvQualifier + ; + +typeSpecifierSeq + : typeSpecifier+ attributeSpecifierSeq? + ; + +trailingTypeSpecifierSeq + : trailingTypeSpecifier+ attributeSpecifierSeq? + ; + +simpleTypeLengthModifier + : Short + | Long + ; + +simpleTypeSignednessModifier + : Unsigned + | Signed + ; + +simpleTypeSpecifier + : nestedNameSpecifier? theTypeName + | nestedNameSpecifier Template simpleTemplateId + | Char + | Char16 + | Char32 + | Wchar + | Bool + | Short + | Int + | Long + | Float + | Signed + | Unsigned + | Float + | Double + | Void + | Auto + | decltypeSpecifier + ; + +theTypeName + : className + | enumName + | typedefName + | simpleTemplateId + ; + +decltypeSpecifier + : Decltype LeftParen (expression | Auto) RightParen + ; + +elaboratedTypeSpecifier + : classKey ( + attributeSpecifierSeq? nestedNameSpecifier? Identifier + | simpleTemplateId + | nestedNameSpecifier Template? simpleTemplateId + ) + | Enum nestedNameSpecifier? Identifier + ; + +enumName + : Identifier + ; + +enumSpecifier + : enumHead LeftBrace (enumeratorList Comma?)? RightBrace + ; + +enumHead + : enumkey attributeSpecifierSeq? (nestedNameSpecifier? Identifier)? enumbase? + ; + +opaqueEnumDeclaration + : enumkey attributeSpecifierSeq? Identifier enumbase? Semi + ; + +enumkey + : Enum (Class | Struct)? + ; + +enumbase + : Colon typeSpecifierSeq + ; + +enumeratorList + : enumeratorDefinition (Comma enumeratorDefinition)* + ; + +enumeratorDefinition + : enumerator (Assign constantExpression)? + ; + +enumerator + : Identifier + ; + +namespaceName + : originalNamespaceName + | namespaceAlias + ; + +originalNamespaceName + : Identifier + ; + +namespaceDefinition + : Inline? Namespace (Identifier | originalNamespaceName)? LeftBrace namespaceBody = declarationseq? RightBrace + ; + +namespaceAlias + : Identifier + ; + +namespaceAliasDefinition + : Namespace Identifier Assign qualifiednamespacespecifier Semi + ; + +qualifiednamespacespecifier + : nestedNameSpecifier? namespaceName + ; + +usingDeclaration + : Using (Typename_? nestedNameSpecifier | Doublecolon) unqualifiedId Semi + ; + +usingDirective + : attributeSpecifierSeq? Using Namespace nestedNameSpecifier? namespaceName Semi + ; + +asmDefinition + : Asm LeftParen StringLiteral RightParen Semi + ; + +linkageSpecification + : Extern StringLiteral (LeftBrace declarationseq? RightBrace | declaration) + ; + +attributeSpecifierSeq + : attributeSpecifier+ + ; + +attributeSpecifier + : LeftBracket LeftBracket attributeList? RightBracket RightBracket + | alignmentspecifier + ; + +alignmentspecifier + : Alignas LeftParen (theTypeId | constantExpression) Ellipsis? RightParen + ; + +attributeList + : attribute (Comma attribute)* Ellipsis? + ; + +attribute + : (attributeNamespace Doublecolon)? Identifier attributeArgumentClause? + ; + +attributeNamespace + : Identifier + ; + +attributeArgumentClause + : LeftParen balancedTokenSeq? RightParen + ; + +balancedTokenSeq + : balancedtoken+ + ; + +balancedtoken + : LeftParen balancedTokenSeq RightParen + | LeftBracket balancedTokenSeq RightBracket + | LeftBrace balancedTokenSeq RightBrace + | ~(LeftParen | RightParen | LeftBrace | RightBrace | LeftBracket | RightBracket)+ + ; + +/*Declarators*/ + +initDeclaratorList + : initDeclarator (Comma initDeclarator)* + ; + +initDeclarator + : declarator initializer? + ; + +declarator + : pointerDeclarator + | noPointerDeclarator parametersAndQualifiers trailingReturnType + ; + +pointerDeclarator + : (pointerOperator Const?)* noPointerDeclarator + ; + +noPointerDeclarator + : declaratorid attributeSpecifierSeq? + | noPointerDeclarator ( + parametersAndQualifiers + | LeftBracket constantExpression? RightBracket attributeSpecifierSeq? + ) + | LeftParen pointerDeclarator RightParen + ; + +parametersAndQualifiers + : LeftParen parameterDeclarationClause? RightParen cvqualifierseq? refqualifier? exceptionSpecification? attributeSpecifierSeq? + ; + +trailingReturnType + : Arrow trailingTypeSpecifierSeq abstractDeclarator? + ; + +pointerOperator + : (And | AndAnd) attributeSpecifierSeq? + | nestedNameSpecifier? Star attributeSpecifierSeq? cvqualifierseq? + ; + +cvqualifierseq + : cvQualifier+ + ; + +cvQualifier + : Const + | Volatile + ; + +refqualifier + : And + | AndAnd + ; + +declaratorid + : Ellipsis? idExpression + ; + +theTypeId + : typeSpecifierSeq abstractDeclarator? + ; + +abstractDeclarator + : pointerAbstractDeclarator + | noPointerAbstractDeclarator? parametersAndQualifiers trailingReturnType + | abstractPackDeclarator + ; + +pointerAbstractDeclarator + : pointerOperator* (noPointerAbstractDeclarator | pointerOperator) + ; + +noPointerAbstractDeclarator + : (parametersAndQualifiers | LeftParen pointerAbstractDeclarator RightParen) ( + parametersAndQualifiers + | LeftBracket constantExpression? RightBracket attributeSpecifierSeq? + )* + ; + +abstractPackDeclarator + : pointerOperator* noPointerAbstractPackDeclarator + ; + +noPointerAbstractPackDeclarator + : Ellipsis ( + parametersAndQualifiers + | LeftBracket constantExpression? RightBracket attributeSpecifierSeq? + )* + ; + +parameterDeclarationClause + : parameterDeclarationList (Comma? Ellipsis)? + ; + +parameterDeclarationList + : parameterDeclaration (Comma parameterDeclaration)* + ; + +parameterDeclaration + : attributeSpecifierSeq? declSpecifierSeq (declarator | abstractDeclarator?) ( + Assign initializerClause + )? + ; + +functionDefinition + : attributeSpecifierSeq? declSpecifierSeq? declarator virtualSpecifierSeq? functionBody + ; + +functionBody + : constructorInitializer? compoundStatement + | functionTryBlock + | Assign (Default | Delete) Semi + ; + +initializer + : braceOrEqualInitializer + | LeftParen expressionList RightParen + ; + +braceOrEqualInitializer + : Assign initializerClause + | bracedInitList + ; + +initializerClause + : assignmentExpression + | bracedInitList + ; + +initializerList + : initializerClause Ellipsis? (Comma initializerClause Ellipsis?)* + ; + +bracedInitList + : LeftBrace (initializerList Comma?)? RightBrace + ; + +/*Classes*/ + +className + : Identifier + | simpleTemplateId + ; + +classSpecifier + : classHead LeftBrace memberSpecification? RightBrace + ; + +classHead + : classKey attributeSpecifierSeq? (classHeadName classVirtSpecifier?)? baseClause? + | Union attributeSpecifierSeq? ( classHeadName classVirtSpecifier?)? + ; + +classHeadName + : nestedNameSpecifier? className + ; + +classVirtSpecifier + : Final + ; + +classKey + : Class + | Struct + ; + +memberSpecification + : (memberdeclaration | accessSpecifier Colon)+ + ; + +memberdeclaration + : attributeSpecifierSeq? declSpecifierSeq? memberDeclaratorList? Semi + | functionDefinition + | usingDeclaration + | staticAssertDeclaration + | templateDeclaration + | aliasDeclaration + | emptyDeclaration_ + ; + +memberDeclaratorList + : memberDeclarator (Comma memberDeclarator)* + ; + +memberDeclarator + : declarator ( + virtualSpecifierSeq + | { this.IsPureSpecifierAllowed() }? pureSpecifier + | { this.IsPureSpecifierAllowed() }? virtualSpecifierSeq pureSpecifier + | braceOrEqualInitializer + ) + | declarator + | Identifier? attributeSpecifierSeq? Colon constantExpression + ; + +virtualSpecifierSeq + : virtualSpecifier+ + ; + +virtualSpecifier + : Override + | Final + ; + +/* + purespecifier: Assign '0'//Conflicts with the lexer ; + */ + +pureSpecifier + : Assign IntegerLiteral + ; + +/*Derived classes*/ + +baseClause + : Colon baseSpecifierList + ; + +baseSpecifierList + : baseSpecifier Ellipsis? (Comma baseSpecifier Ellipsis?)* + ; + +baseSpecifier + : attributeSpecifierSeq? ( + baseTypeSpecifier + | Virtual accessSpecifier? baseTypeSpecifier + | accessSpecifier Virtual? baseTypeSpecifier + ) + ; + +classOrDeclType + : nestedNameSpecifier? className + | decltypeSpecifier + ; + +baseTypeSpecifier + : classOrDeclType + ; + +accessSpecifier + : Private + | Protected + | Public + ; + +/*Special member functions*/ + +conversionFunctionId + : Operator conversionTypeId + ; + +conversionTypeId + : typeSpecifierSeq conversionDeclarator? + ; + +conversionDeclarator + : pointerOperator conversionDeclarator? + ; + +constructorInitializer + : Colon memInitializerList + ; + +memInitializerList + : memInitializer Ellipsis? (Comma memInitializer Ellipsis?)* + ; + +memInitializer + : meminitializerid (LeftParen expressionList? RightParen | bracedInitList) + ; + +meminitializerid + : classOrDeclType + | Identifier + ; + +/*Overloading*/ + +operatorFunctionId + : Operator theOperator + ; + +literalOperatorId + : Operator (StringLiteral Identifier | UserDefinedStringLiteral) + ; + +/*Templates*/ + +templateDeclaration + : Template Less templateparameterList Greater declaration + ; + +templateparameterList + : templateParameter (Comma templateParameter)* + ; + +templateParameter + : typeParameter + | parameterDeclaration + ; + +typeParameter + : ((Template Less templateparameterList Greater)? Class | Typename_) ( + Ellipsis? Identifier? + | Identifier? Assign theTypeId + ) + ; + +simpleTemplateId + : templateName Less templateArgumentList? Greater + ; + +templateId + : simpleTemplateId + | (operatorFunctionId | literalOperatorId) Less templateArgumentList? Greater + ; + +templateName + : Identifier + ; + +templateArgumentList + : templateArgument Ellipsis? (Comma templateArgument Ellipsis?)* + ; + +templateArgument + : theTypeId + | constantExpression + | idExpression + ; + +typeNameSpecifier + : Typename_ nestedNameSpecifier (Identifier | Template? simpleTemplateId) + ; + +explicitInstantiation + : Extern? Template declaration + ; + +explicitSpecialization + : Template Less Greater declaration + ; + +/*Exception handling*/ + +tryBlock + : Try compoundStatement handlerSeq + ; + +functionTryBlock + : Try constructorInitializer? compoundStatement handlerSeq + ; + +handlerSeq + : handler+ + ; + +handler + : Catch LeftParen exceptionDeclaration RightParen compoundStatement + ; + +exceptionDeclaration + : attributeSpecifierSeq? typeSpecifierSeq (declarator | abstractDeclarator)? + | Ellipsis + ; + +throwExpression + : Throw assignmentExpression? + ; + +exceptionSpecification + : dynamicExceptionSpecification + | noeExceptSpecification + ; + +dynamicExceptionSpecification + : Throw LeftParen typeIdList? RightParen + ; + +typeIdList + : theTypeId Ellipsis? (Comma theTypeId Ellipsis?)* + ; + +noeExceptSpecification + : Noexcept LeftParen constantExpression RightParen + | Noexcept + ; + +/*Preprocessing directives*/ + +/*Lexer*/ + +theOperator + : New (LeftBracket RightBracket)? + | Delete (LeftBracket RightBracket)? + | Plus + | Minus + | Star + | Div + | Mod + | Caret + | And + | Or + | Tilde + | Not + | Assign + | Greater + | Less + | GreaterEqual + | PlusAssign + | MinusAssign + | StarAssign + | ModAssign + | XorAssign + | AndAssign + | OrAssign + | Less Less + | Greater Greater + | RightShiftAssign + | LeftShiftAssign + | Equal + | NotEqual + | LessEqual + | AndAnd + | OrOr + | PlusPlus + | MinusMinus + | Comma + | ArrowStar + | Arrow + | LeftParen RightParen + | LeftBracket RightBracket + ; + +literal + : IntegerLiteral + | CharacterLiteral + | FloatingLiteral + | StringLiteral + | BooleanLiteral + | PointerLiteral + | UserDefinedLiteral + ; \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.interp b/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.interp new file mode 100644 index 00000000..2a3339d2 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.interp @@ -0,0 +1,492 @@ +token literal names: +null +null +null +null +null +null +null +null +null +null +'alignas' +'alignof' +'asm' +'auto' +'bool' +'break' +'case' +'catch' +'char' +'char16_t' +'char32_t' +'class' +'const' +'constexpr' +'const_cast' +'continue' +'decltype' +'default' +'delete' +'do' +'double' +'dynamic_cast' +'else' +'enum' +'explicit' +'export' +'extern' +'false' +'final' +'float' +'for' +'friend' +'goto' +'if' +'inline' +'int' +'long' +'mutable' +'namespace' +'new' +'noexcept' +'nullptr' +'operator' +'override' +'private' +'protected' +'public' +'register' +'reinterpret_cast' +'return' +'short' +'signed' +'sizeof' +'static' +'static_assert' +'static_cast' +'struct' +'switch' +'template' +'this' +'thread_local' +'throw' +'true' +'try' +'typedef' +'typeid' +'typename' +'union' +'unsigned' +'using' +'virtual' +'void' +'volatile' +'wchar_t' +'while' +'(' +')' +'[' +']' +'{' +'}' +'+' +'-' +'*' +'/' +'%' +'^' +'&' +'|' +'~' +null +'=' +'<' +'>' +'+=' +'-=' +'*=' +'/=' +'%=' +'^=' +'&=' +'|=' +'<<=' +'>>=' +'==' +'!=' +'<=' +'>=' +null +null +'++' +'--' +',' +'->*' +'->' +'?' +':' +'::' +';' +'.' +'.*' +'...' +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +IntegerLiteral +CharacterLiteral +FloatingLiteral +StringLiteral +BooleanLiteral +PointerLiteral +UserDefinedLiteral +MultiLineMacro +Directive +Alignas +Alignof +Asm +Auto +Bool +Break +Case +Catch +Char +Char16 +Char32 +Class +Const +Constexpr +Const_cast +Continue +Decltype +Default +Delete +Do +Double +Dynamic_cast +Else +Enum +Explicit +Export +Extern +False_ +Final +Float +For +Friend +Goto +If +Inline +Int +Long +Mutable +Namespace +New +Noexcept +Nullptr +Operator +Override +Private +Protected +Public +Register +Reinterpret_cast +Return +Short +Signed +Sizeof +Static +Static_assert +Static_cast +Struct +Switch +Template +This +Thread_local +Throw +True_ +Try +Typedef +Typeid_ +Typename_ +Union +Unsigned +Using +Virtual +Void +Volatile +Wchar +While +LeftParen +RightParen +LeftBracket +RightBracket +LeftBrace +RightBrace +Plus +Minus +Star +Div +Mod +Caret +And +Or +Tilde +Not +Assign +Less +Greater +PlusAssign +MinusAssign +StarAssign +DivAssign +ModAssign +XorAssign +AndAssign +OrAssign +LeftShiftAssign +RightShiftAssign +Equal +NotEqual +LessEqual +GreaterEqual +AndAnd +OrOr +PlusPlus +MinusMinus +Comma +ArrowStar +Arrow +Question +Colon +Doublecolon +Semi +Dot +DotStar +Ellipsis +Identifier +DecimalLiteral +OctalLiteral +HexadecimalLiteral +BinaryLiteral +Integersuffix +UserDefinedIntegerLiteral +UserDefinedFloatingLiteral +UserDefinedStringLiteral +UserDefinedCharacterLiteral +Whitespace +Newline +BlockComment +LineComment + +rule names: +translationUnit +primaryExpression +idExpression +unqualifiedId +qualifiedId +nestedNameSpecifier +lambdaExpression +lambdaIntroducer +lambdaCapture +captureDefault +captureList +capture +simpleCapture +initcapture +lambdaDeclarator +postfixExpression +typeIdOfTheTypeId +expressionList +pseudoDestructorName +unaryExpression +unaryOperator +newExpression_ +newPlacement +newTypeId +newDeclarator_ +noPointerNewDeclarator +newInitializer_ +deleteExpression +noExceptExpression +castExpression +pointerMemberExpression +multiplicativeExpression +additiveExpression +shiftExpression +shiftOperator +relationalExpression +equalityExpression +andExpression +exclusiveOrExpression +inclusiveOrExpression +logicalAndExpression +logicalOrExpression +conditionalExpression +assignmentExpression +assignmentOperator +expression +constantExpression +statement +labeledStatement +expressionStatement +compoundStatement +statementSeq +selectionStatement +condition +iterationStatement +forInitStatement +forRangeDeclaration +forRangeInitializer +jumpStatement +declarationStatement +declarationseq +declaration +blockDeclaration +aliasDeclaration +simpleDeclaration +staticAssertDeclaration +emptyDeclaration_ +attributeDeclaration +declSpecifier +declSpecifierSeq +storageClassSpecifier +functionSpecifier +typedefName +typeSpecifier +trailingTypeSpecifier +typeSpecifierSeq +trailingTypeSpecifierSeq +simpleTypeLengthModifier +simpleTypeSignednessModifier +simpleTypeSpecifier +theTypeName +decltypeSpecifier +elaboratedTypeSpecifier +enumName +enumSpecifier +enumHead +opaqueEnumDeclaration +enumkey +enumbase +enumeratorList +enumeratorDefinition +enumerator +namespaceName +originalNamespaceName +namespaceDefinition +namespaceAlias +namespaceAliasDefinition +qualifiednamespacespecifier +usingDeclaration +usingDirective +asmDefinition +linkageSpecification +attributeSpecifierSeq +attributeSpecifier +alignmentspecifier +attributeList +attribute +attributeNamespace +attributeArgumentClause +balancedTokenSeq +balancedtoken +initDeclaratorList +initDeclarator +declarator +pointerDeclarator +noPointerDeclarator +parametersAndQualifiers +trailingReturnType +pointerOperator +cvqualifierseq +cvQualifier +refqualifier +declaratorid +theTypeId +abstractDeclarator +pointerAbstractDeclarator +noPointerAbstractDeclarator +abstractPackDeclarator +noPointerAbstractPackDeclarator +parameterDeclarationClause +parameterDeclarationList +parameterDeclaration +functionDefinition +functionBody +initializer +braceOrEqualInitializer +initializerClause +initializerList +bracedInitList +className +classSpecifier +classHead +classHeadName +classVirtSpecifier +classKey +memberSpecification +memberdeclaration +memberDeclaratorList +memberDeclarator +virtualSpecifierSeq +virtualSpecifier +pureSpecifier +baseClause +baseSpecifierList +baseSpecifier +classOrDeclType +baseTypeSpecifier +accessSpecifier +conversionFunctionId +conversionTypeId +conversionDeclarator +constructorInitializer +memInitializerList +memInitializer +meminitializerid +operatorFunctionId +literalOperatorId +templateDeclaration +templateparameterList +templateParameter +typeParameter +simpleTemplateId +templateId +templateName +templateArgumentList +templateArgument +typeNameSpecifier +explicitInstantiation +explicitSpecialization +tryBlock +functionTryBlock +handlerSeq +handler +exceptionDeclaration +throwExpression +exceptionSpecification +dynamicExceptionSpecification +typeIdList +noeExceptSpecification +theOperator +literal + + +atn: +[4, 1, 145, 2062, 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, 1, 0, 3, 0, 384, 8, 0, 1, 0, 1, 0, 1, 1, 4, 1, 389, 8, 1, 11, 1, 12, 1, 390, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 400, 8, 1, 1, 2, 1, 2, 3, 2, 404, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 413, 8, 3, 1, 3, 3, 3, 416, 8, 3, 1, 4, 1, 4, 3, 4, 420, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 428, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 435, 8, 5, 1, 5, 3, 5, 438, 8, 5, 1, 5, 5, 5, 441, 8, 5, 10, 5, 12, 5, 444, 9, 5, 1, 6, 1, 6, 3, 6, 448, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 3, 7, 454, 8, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 462, 8, 8, 3, 8, 464, 8, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 5, 10, 471, 8, 10, 10, 10, 12, 10, 474, 9, 10, 1, 10, 3, 10, 477, 8, 10, 1, 11, 1, 11, 3, 11, 481, 8, 11, 1, 12, 3, 12, 484, 8, 12, 1, 12, 1, 12, 3, 12, 488, 8, 12, 1, 13, 3, 13, 491, 8, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 498, 8, 14, 1, 14, 1, 14, 3, 14, 502, 8, 14, 1, 14, 3, 14, 505, 8, 14, 1, 14, 3, 14, 508, 8, 14, 1, 14, 3, 14, 511, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 517, 8, 15, 1, 15, 1, 15, 3, 15, 521, 8, 15, 1, 15, 1, 15, 3, 15, 525, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 539, 8, 15, 1, 15, 1, 15, 3, 15, 543, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 549, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 556, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 562, 8, 15, 1, 15, 1, 15, 3, 15, 566, 8, 15, 1, 15, 1, 15, 5, 15, 570, 8, 15, 10, 15, 12, 15, 573, 9, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 3, 18, 580, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 585, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 598, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 605, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 617, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 627, 8, 19, 1, 20, 1, 20, 1, 21, 3, 21, 632, 8, 21, 1, 21, 1, 21, 3, 21, 636, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 643, 8, 21, 1, 21, 3, 21, 646, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 654, 8, 23, 1, 24, 1, 24, 3, 24, 658, 8, 24, 1, 24, 3, 24, 661, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 668, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 675, 8, 25, 5, 25, 677, 8, 25, 10, 25, 12, 25, 680, 9, 25, 1, 26, 1, 26, 3, 26, 684, 8, 26, 1, 26, 1, 26, 3, 26, 688, 8, 26, 1, 27, 3, 27, 691, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 696, 8, 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, 3, 29, 711, 8, 29, 1, 30, 1, 30, 1, 30, 5, 30, 716, 8, 30, 10, 30, 12, 30, 719, 9, 30, 1, 31, 1, 31, 1, 31, 5, 31, 724, 8, 31, 10, 31, 12, 31, 727, 9, 31, 1, 32, 1, 32, 1, 32, 5, 32, 732, 8, 32, 10, 32, 12, 32, 735, 9, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 741, 8, 33, 10, 33, 12, 33, 744, 9, 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 750, 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 755, 8, 35, 10, 35, 12, 35, 758, 9, 35, 1, 36, 1, 36, 1, 36, 5, 36, 763, 8, 36, 10, 36, 12, 36, 766, 9, 36, 1, 37, 1, 37, 1, 37, 5, 37, 771, 8, 37, 10, 37, 12, 37, 774, 9, 37, 1, 38, 1, 38, 1, 38, 5, 38, 779, 8, 38, 10, 38, 12, 38, 782, 9, 38, 1, 39, 1, 39, 1, 39, 5, 39, 787, 8, 39, 10, 39, 12, 39, 790, 9, 39, 1, 40, 1, 40, 1, 40, 5, 40, 795, 8, 40, 10, 40, 12, 40, 798, 9, 40, 1, 41, 1, 41, 1, 41, 5, 41, 803, 8, 41, 10, 41, 12, 41, 806, 9, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 814, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 822, 8, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 5, 45, 829, 8, 45, 10, 45, 12, 45, 832, 9, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 3, 47, 839, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 847, 8, 47, 3, 47, 849, 8, 47, 1, 48, 3, 48, 852, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 858, 8, 48, 1, 48, 1, 48, 1, 48, 1, 49, 3, 49, 864, 8, 49, 1, 49, 1, 49, 1, 50, 1, 50, 3, 50, 870, 8, 50, 1, 50, 1, 50, 1, 51, 4, 51, 875, 8, 51, 11, 51, 12, 51, 876, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 886, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 894, 8, 52, 1, 53, 1, 53, 3, 53, 898, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 905, 8, 53, 3, 53, 907, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 927, 8, 54, 1, 54, 1, 54, 3, 54, 931, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 937, 8, 54, 1, 54, 1, 54, 1, 54, 3, 54, 942, 8, 54, 1, 55, 1, 55, 3, 55, 946, 8, 55, 1, 56, 3, 56, 949, 8, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 3, 57, 956, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 963, 8, 58, 1, 58, 1, 58, 3, 58, 967, 8, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 4, 60, 974, 8, 60, 11, 60, 12, 60, 975, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 987, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 997, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 1002, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 3, 64, 1009, 8, 64, 1, 64, 3, 64, 1012, 8, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1017, 8, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1022, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1043, 8, 68, 1, 69, 4, 69, 1046, 8, 69, 11, 69, 12, 69, 1047, 1, 69, 3, 69, 1051, 8, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 3, 73, 1062, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1068, 8, 74, 1, 75, 4, 75, 1071, 8, 75, 11, 75, 12, 75, 1072, 1, 75, 3, 75, 1076, 8, 75, 1, 76, 4, 76, 1079, 8, 76, 11, 76, 12, 76, 1080, 1, 76, 3, 76, 1084, 8, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 3, 79, 1091, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1114, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1120, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1126, 8, 81, 1, 81, 1, 81, 1, 82, 1, 82, 3, 82, 1132, 8, 82, 1, 82, 3, 82, 1135, 8, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1141, 8, 82, 1, 82, 1, 82, 3, 82, 1145, 8, 82, 1, 82, 1, 82, 3, 82, 1149, 8, 82, 1, 82, 3, 82, 1152, 8, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1160, 8, 84, 3, 84, 1162, 8, 84, 1, 84, 1, 84, 1, 85, 1, 85, 3, 85, 1168, 8, 85, 1, 85, 3, 85, 1171, 8, 85, 1, 85, 3, 85, 1174, 8, 85, 1, 85, 3, 85, 1177, 8, 85, 1, 86, 1, 86, 3, 86, 1181, 8, 86, 1, 86, 1, 86, 3, 86, 1185, 8, 86, 1, 86, 1, 86, 1, 87, 1, 87, 3, 87, 1191, 8, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 5, 89, 1199, 8, 89, 10, 89, 12, 89, 1202, 9, 89, 1, 90, 1, 90, 1, 90, 3, 90, 1207, 8, 90, 1, 91, 1, 91, 1, 92, 1, 92, 3, 92, 1213, 8, 92, 1, 93, 1, 93, 1, 94, 3, 94, 1218, 8, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1223, 8, 94, 1, 94, 1, 94, 3, 94, 1227, 8, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 3, 97, 1240, 8, 97, 1, 97, 1, 97, 1, 98, 1, 98, 3, 98, 1246, 8, 98, 1, 98, 1, 98, 3, 98, 1250, 8, 98, 1, 98, 1, 98, 1, 98, 1, 99, 3, 99, 1256, 8, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1261, 8, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1276, 8, 101, 1, 101, 1, 101, 3, 101, 1280, 8, 101, 1, 102, 4, 102, 1283, 8, 102, 11, 102, 12, 102, 1284, 1, 103, 1, 103, 1, 103, 3, 103, 1290, 8, 103, 1, 103, 1, 103, 1, 103, 3, 103, 1295, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1301, 8, 104, 1, 104, 3, 104, 1304, 8, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 5, 105, 1311, 8, 105, 10, 105, 12, 105, 1314, 9, 105, 1, 105, 3, 105, 1317, 8, 105, 1, 106, 1, 106, 1, 106, 3, 106, 1322, 8, 106, 1, 106, 1, 106, 3, 106, 1326, 8, 106, 1, 107, 1, 107, 1, 108, 1, 108, 3, 108, 1332, 8, 108, 1, 108, 1, 108, 1, 109, 4, 109, 1337, 8, 109, 11, 109, 12, 109, 1338, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 4, 110, 1354, 8, 110, 11, 110, 12, 110, 1355, 3, 110, 1358, 8, 110, 1, 111, 1, 111, 1, 111, 5, 111, 1363, 8, 111, 10, 111, 12, 111, 1366, 9, 111, 1, 112, 1, 112, 3, 112, 1370, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1377, 8, 113, 1, 114, 1, 114, 3, 114, 1381, 8, 114, 5, 114, 1383, 8, 114, 10, 114, 12, 114, 1386, 9, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 3, 115, 1393, 8, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 1399, 8, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 1405, 8, 115, 1, 115, 1, 115, 3, 115, 1409, 8, 115, 3, 115, 1411, 8, 115, 5, 115, 1413, 8, 115, 10, 115, 12, 115, 1416, 9, 115, 1, 116, 1, 116, 3, 116, 1420, 8, 116, 1, 116, 1, 116, 3, 116, 1424, 8, 116, 1, 116, 3, 116, 1427, 8, 116, 1, 116, 3, 116, 1430, 8, 116, 1, 116, 3, 116, 1433, 8, 116, 1, 117, 1, 117, 1, 117, 3, 117, 1438, 8, 117, 1, 118, 1, 118, 3, 118, 1442, 8, 118, 1, 118, 3, 118, 1445, 8, 118, 1, 118, 1, 118, 3, 118, 1449, 8, 118, 1, 118, 3, 118, 1452, 8, 118, 3, 118, 1454, 8, 118, 1, 119, 4, 119, 1457, 8, 119, 11, 119, 12, 119, 1458, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122, 3, 122, 1466, 8, 122, 1, 122, 1, 122, 1, 123, 1, 123, 3, 123, 1472, 8, 123, 1, 124, 1, 124, 3, 124, 1476, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 1482, 8, 124, 1, 125, 5, 125, 1485, 8, 125, 10, 125, 12, 125, 1488, 9, 125, 1, 125, 1, 125, 3, 125, 1492, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 3, 126, 1499, 8, 126, 1, 126, 1, 126, 1, 126, 3, 126, 1504, 8, 126, 1, 126, 1, 126, 3, 126, 1508, 8, 126, 5, 126, 1510, 8, 126, 10, 126, 12, 126, 1513, 9, 126, 1, 127, 5, 127, 1516, 8, 127, 10, 127, 12, 127, 1519, 9, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 1527, 8, 128, 1, 128, 1, 128, 3, 128, 1531, 8, 128, 5, 128, 1533, 8, 128, 10, 128, 12, 128, 1536, 9, 128, 1, 129, 1, 129, 3, 129, 1540, 8, 129, 1, 129, 3, 129, 1543, 8, 129, 1, 130, 1, 130, 1, 130, 5, 130, 1548, 8, 130, 10, 130, 12, 130, 1551, 9, 130, 1, 131, 3, 131, 1554, 8, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1559, 8, 131, 3, 131, 1561, 8, 131, 1, 131, 1, 131, 3, 131, 1565, 8, 131, 1, 132, 3, 132, 1568, 8, 132, 1, 132, 3, 132, 1571, 8, 132, 1, 132, 1, 132, 3, 132, 1575, 8, 132, 1, 132, 1, 132, 1, 133, 3, 133, 1580, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1587, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1594, 8, 134, 1, 135, 1, 135, 1, 135, 3, 135, 1599, 8, 135, 1, 136, 1, 136, 3, 136, 1603, 8, 136, 1, 137, 1, 137, 3, 137, 1607, 8, 137, 1, 137, 1, 137, 1, 137, 3, 137, 1612, 8, 137, 5, 137, 1614, 8, 137, 10, 137, 12, 137, 1617, 9, 137, 1, 138, 1, 138, 1, 138, 3, 138, 1622, 8, 138, 3, 138, 1624, 8, 138, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 1630, 8, 139, 1, 140, 1, 140, 1, 140, 3, 140, 1635, 8, 140, 1, 140, 1, 140, 1, 141, 1, 141, 3, 141, 1641, 8, 141, 1, 141, 1, 141, 3, 141, 1645, 8, 141, 3, 141, 1647, 8, 141, 1, 141, 3, 141, 1650, 8, 141, 1, 141, 1, 141, 3, 141, 1654, 8, 141, 1, 141, 1, 141, 3, 141, 1658, 8, 141, 3, 141, 1660, 8, 141, 3, 141, 1662, 8, 141, 1, 142, 3, 142, 1665, 8, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 4, 145, 1677, 8, 145, 11, 145, 12, 145, 1678, 1, 146, 3, 146, 1682, 8, 146, 1, 146, 3, 146, 1685, 8, 146, 1, 146, 3, 146, 1688, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 1697, 8, 146, 1, 147, 1, 147, 1, 147, 5, 147, 1702, 8, 147, 10, 147, 12, 147, 1705, 9, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 1716, 8, 148, 1, 148, 1, 148, 3, 148, 1720, 8, 148, 1, 148, 3, 148, 1723, 8, 148, 1, 148, 1, 148, 3, 148, 1727, 8, 148, 1, 149, 4, 149, 1730, 8, 149, 11, 149, 12, 149, 1731, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 3, 153, 1744, 8, 153, 1, 153, 1, 153, 1, 153, 3, 153, 1749, 8, 153, 5, 153, 1751, 8, 153, 10, 153, 12, 153, 1754, 9, 153, 1, 154, 3, 154, 1757, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 1762, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 1767, 8, 154, 1, 154, 1, 154, 3, 154, 1771, 8, 154, 1, 155, 3, 155, 1774, 8, 155, 1, 155, 1, 155, 3, 155, 1778, 8, 155, 1, 156, 1, 156, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 3, 159, 1789, 8, 159, 1, 160, 1, 160, 3, 160, 1793, 8, 160, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 3, 162, 1800, 8, 162, 1, 162, 1, 162, 1, 162, 3, 162, 1805, 8, 162, 5, 162, 1807, 8, 162, 10, 162, 12, 162, 1810, 9, 162, 1, 163, 1, 163, 1, 163, 3, 163, 1815, 8, 163, 1, 163, 1, 163, 3, 163, 1819, 8, 163, 1, 164, 1, 164, 3, 164, 1823, 8, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 3, 166, 1832, 8, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 5, 168, 1843, 8, 168, 10, 168, 12, 168, 1846, 9, 168, 1, 169, 1, 169, 3, 169, 1850, 8, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 3, 170, 1857, 8, 170, 1, 170, 1, 170, 3, 170, 1861, 8, 170, 1, 170, 3, 170, 1864, 8, 170, 1, 170, 3, 170, 1867, 8, 170, 1, 170, 3, 170, 1870, 8, 170, 1, 170, 1, 170, 3, 170, 1874, 8, 170, 1, 171, 1, 171, 1, 171, 3, 171, 1879, 8, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 3, 172, 1886, 8, 172, 1, 172, 1, 172, 3, 172, 1890, 8, 172, 1, 172, 1, 172, 3, 172, 1894, 8, 172, 1, 173, 1, 173, 1, 174, 1, 174, 3, 174, 1900, 8, 174, 1, 174, 1, 174, 1, 174, 3, 174, 1905, 8, 174, 5, 174, 1907, 8, 174, 10, 174, 12, 174, 1910, 9, 174, 1, 175, 1, 175, 1, 175, 3, 175, 1915, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 3, 176, 1921, 8, 176, 1, 176, 3, 176, 1924, 8, 176, 1, 177, 3, 177, 1927, 8, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 3, 180, 1943, 8, 180, 1, 180, 1, 180, 1, 180, 1, 181, 4, 181, 1949, 8, 181, 11, 181, 12, 181, 1950, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 3, 183, 1960, 8, 183, 1, 183, 1, 183, 1, 183, 3, 183, 1965, 8, 183, 1, 183, 3, 183, 1968, 8, 183, 1, 184, 1, 184, 3, 184, 1972, 8, 184, 1, 185, 1, 185, 3, 185, 1976, 8, 185, 1, 186, 1, 186, 1, 186, 3, 186, 1981, 8, 186, 1, 186, 1, 186, 1, 187, 1, 187, 3, 187, 1987, 8, 187, 1, 187, 1, 187, 1, 187, 3, 187, 1992, 8, 187, 5, 187, 1994, 8, 187, 10, 187, 12, 187, 1997, 9, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 2005, 8, 188, 1, 189, 1, 189, 1, 189, 3, 189, 2010, 8, 189, 1, 189, 1, 189, 1, 189, 3, 189, 2015, 8, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 2058, 8, 189, 1, 190, 1, 190, 1, 190, 1, 1047, 4, 10, 30, 50, 230, 191, 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, 0, 23, 2, 0, 97, 97, 101, 101, 4, 0, 24, 24, 31, 31, 58, 58, 65, 65, 2, 0, 124, 124, 129, 129, 1, 0, 120, 121, 2, 0, 91, 93, 97, 100, 2, 0, 123, 123, 130, 130, 1, 0, 93, 95, 1, 0, 91, 92, 2, 0, 102, 103, 116, 117, 1, 0, 114, 115, 2, 0, 101, 101, 104, 113, 5, 0, 36, 36, 47, 47, 57, 57, 63, 63, 70, 70, 3, 0, 34, 34, 44, 44, 80, 80, 2, 0, 46, 46, 60, 60, 2, 0, 61, 61, 78, 78, 2, 0, 21, 21, 66, 66, 1, 0, 85, 90, 2, 0, 97, 97, 118, 118, 2, 0, 22, 22, 82, 82, 1, 0, 27, 28, 2, 0, 38, 38, 53, 53, 1, 0, 54, 56, 1, 0, 1, 7, 2285, 0, 383, 1, 0, 0, 0, 2, 399, 1, 0, 0, 0, 4, 403, 1, 0, 0, 0, 6, 415, 1, 0, 0, 0, 8, 417, 1, 0, 0, 0, 10, 423, 1, 0, 0, 0, 12, 445, 1, 0, 0, 0, 14, 451, 1, 0, 0, 0, 16, 463, 1, 0, 0, 0, 18, 465, 1, 0, 0, 0, 20, 467, 1, 0, 0, 0, 22, 480, 1, 0, 0, 0, 24, 487, 1, 0, 0, 0, 26, 490, 1, 0, 0, 0, 28, 495, 1, 0, 0, 0, 30, 542, 1, 0, 0, 0, 32, 574, 1, 0, 0, 0, 34, 576, 1, 0, 0, 0, 36, 597, 1, 0, 0, 0, 38, 626, 1, 0, 0, 0, 40, 628, 1, 0, 0, 0, 42, 631, 1, 0, 0, 0, 44, 647, 1, 0, 0, 0, 46, 651, 1, 0, 0, 0, 48, 660, 1, 0, 0, 0, 50, 662, 1, 0, 0, 0, 52, 687, 1, 0, 0, 0, 54, 690, 1, 0, 0, 0, 56, 699, 1, 0, 0, 0, 58, 710, 1, 0, 0, 0, 60, 712, 1, 0, 0, 0, 62, 720, 1, 0, 0, 0, 64, 728, 1, 0, 0, 0, 66, 736, 1, 0, 0, 0, 68, 749, 1, 0, 0, 0, 70, 751, 1, 0, 0, 0, 72, 759, 1, 0, 0, 0, 74, 767, 1, 0, 0, 0, 76, 775, 1, 0, 0, 0, 78, 783, 1, 0, 0, 0, 80, 791, 1, 0, 0, 0, 82, 799, 1, 0, 0, 0, 84, 807, 1, 0, 0, 0, 86, 821, 1, 0, 0, 0, 88, 823, 1, 0, 0, 0, 90, 825, 1, 0, 0, 0, 92, 833, 1, 0, 0, 0, 94, 848, 1, 0, 0, 0, 96, 851, 1, 0, 0, 0, 98, 863, 1, 0, 0, 0, 100, 867, 1, 0, 0, 0, 102, 874, 1, 0, 0, 0, 104, 893, 1, 0, 0, 0, 106, 906, 1, 0, 0, 0, 108, 941, 1, 0, 0, 0, 110, 945, 1, 0, 0, 0, 112, 948, 1, 0, 0, 0, 114, 955, 1, 0, 0, 0, 116, 966, 1, 0, 0, 0, 118, 970, 1, 0, 0, 0, 120, 973, 1, 0, 0, 0, 122, 986, 1, 0, 0, 0, 124, 996, 1, 0, 0, 0, 126, 998, 1, 0, 0, 0, 128, 1021, 1, 0, 0, 0, 130, 1023, 1, 0, 0, 0, 132, 1031, 1, 0, 0, 0, 134, 1033, 1, 0, 0, 0, 136, 1042, 1, 0, 0, 0, 138, 1045, 1, 0, 0, 0, 140, 1052, 1, 0, 0, 0, 142, 1054, 1, 0, 0, 0, 144, 1056, 1, 0, 0, 0, 146, 1061, 1, 0, 0, 0, 148, 1067, 1, 0, 0, 0, 150, 1070, 1, 0, 0, 0, 152, 1078, 1, 0, 0, 0, 154, 1085, 1, 0, 0, 0, 156, 1087, 1, 0, 0, 0, 158, 1113, 1, 0, 0, 0, 160, 1119, 1, 0, 0, 0, 162, 1121, 1, 0, 0, 0, 164, 1151, 1, 0, 0, 0, 166, 1153, 1, 0, 0, 0, 168, 1155, 1, 0, 0, 0, 170, 1165, 1, 0, 0, 0, 172, 1178, 1, 0, 0, 0, 174, 1188, 1, 0, 0, 0, 176, 1192, 1, 0, 0, 0, 178, 1195, 1, 0, 0, 0, 180, 1203, 1, 0, 0, 0, 182, 1208, 1, 0, 0, 0, 184, 1212, 1, 0, 0, 0, 186, 1214, 1, 0, 0, 0, 188, 1217, 1, 0, 0, 0, 190, 1230, 1, 0, 0, 0, 192, 1232, 1, 0, 0, 0, 194, 1239, 1, 0, 0, 0, 196, 1243, 1, 0, 0, 0, 198, 1255, 1, 0, 0, 0, 200, 1265, 1, 0, 0, 0, 202, 1271, 1, 0, 0, 0, 204, 1282, 1, 0, 0, 0, 206, 1294, 1, 0, 0, 0, 208, 1296, 1, 0, 0, 0, 210, 1307, 1, 0, 0, 0, 212, 1321, 1, 0, 0, 0, 214, 1327, 1, 0, 0, 0, 216, 1329, 1, 0, 0, 0, 218, 1336, 1, 0, 0, 0, 220, 1357, 1, 0, 0, 0, 222, 1359, 1, 0, 0, 0, 224, 1367, 1, 0, 0, 0, 226, 1376, 1, 0, 0, 0, 228, 1384, 1, 0, 0, 0, 230, 1398, 1, 0, 0, 0, 232, 1417, 1, 0, 0, 0, 234, 1434, 1, 0, 0, 0, 236, 1453, 1, 0, 0, 0, 238, 1456, 1, 0, 0, 0, 240, 1460, 1, 0, 0, 0, 242, 1462, 1, 0, 0, 0, 244, 1465, 1, 0, 0, 0, 246, 1469, 1, 0, 0, 0, 248, 1481, 1, 0, 0, 0, 250, 1486, 1, 0, 0, 0, 252, 1498, 1, 0, 0, 0, 254, 1517, 1, 0, 0, 0, 256, 1522, 1, 0, 0, 0, 258, 1537, 1, 0, 0, 0, 260, 1544, 1, 0, 0, 0, 262, 1553, 1, 0, 0, 0, 264, 1567, 1, 0, 0, 0, 266, 1586, 1, 0, 0, 0, 268, 1593, 1, 0, 0, 0, 270, 1598, 1, 0, 0, 0, 272, 1602, 1, 0, 0, 0, 274, 1604, 1, 0, 0, 0, 276, 1618, 1, 0, 0, 0, 278, 1629, 1, 0, 0, 0, 280, 1631, 1, 0, 0, 0, 282, 1661, 1, 0, 0, 0, 284, 1664, 1, 0, 0, 0, 286, 1668, 1, 0, 0, 0, 288, 1670, 1, 0, 0, 0, 290, 1676, 1, 0, 0, 0, 292, 1696, 1, 0, 0, 0, 294, 1698, 1, 0, 0, 0, 296, 1726, 1, 0, 0, 0, 298, 1729, 1, 0, 0, 0, 300, 1733, 1, 0, 0, 0, 302, 1735, 1, 0, 0, 0, 304, 1738, 1, 0, 0, 0, 306, 1741, 1, 0, 0, 0, 308, 1756, 1, 0, 0, 0, 310, 1777, 1, 0, 0, 0, 312, 1779, 1, 0, 0, 0, 314, 1781, 1, 0, 0, 0, 316, 1783, 1, 0, 0, 0, 318, 1786, 1, 0, 0, 0, 320, 1790, 1, 0, 0, 0, 322, 1794, 1, 0, 0, 0, 324, 1797, 1, 0, 0, 0, 326, 1811, 1, 0, 0, 0, 328, 1822, 1, 0, 0, 0, 330, 1824, 1, 0, 0, 0, 332, 1827, 1, 0, 0, 0, 334, 1833, 1, 0, 0, 0, 336, 1839, 1, 0, 0, 0, 338, 1849, 1, 0, 0, 0, 340, 1860, 1, 0, 0, 0, 342, 1875, 1, 0, 0, 0, 344, 1893, 1, 0, 0, 0, 346, 1895, 1, 0, 0, 0, 348, 1897, 1, 0, 0, 0, 350, 1914, 1, 0, 0, 0, 352, 1916, 1, 0, 0, 0, 354, 1926, 1, 0, 0, 0, 356, 1931, 1, 0, 0, 0, 358, 1936, 1, 0, 0, 0, 360, 1940, 1, 0, 0, 0, 362, 1948, 1, 0, 0, 0, 364, 1952, 1, 0, 0, 0, 366, 1967, 1, 0, 0, 0, 368, 1969, 1, 0, 0, 0, 370, 1975, 1, 0, 0, 0, 372, 1977, 1, 0, 0, 0, 374, 1984, 1, 0, 0, 0, 376, 2004, 1, 0, 0, 0, 378, 2057, 1, 0, 0, 0, 380, 2059, 1, 0, 0, 0, 382, 384, 3, 120, 60, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 386, 5, 0, 0, 1, 386, 1, 1, 0, 0, 0, 387, 389, 3, 380, 190, 0, 388, 387, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 400, 1, 0, 0, 0, 392, 400, 5, 69, 0, 0, 393, 394, 5, 85, 0, 0, 394, 395, 3, 90, 45, 0, 395, 396, 5, 86, 0, 0, 396, 400, 1, 0, 0, 0, 397, 400, 3, 4, 2, 0, 398, 400, 3, 12, 6, 0, 399, 388, 1, 0, 0, 0, 399, 392, 1, 0, 0, 0, 399, 393, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 398, 1, 0, 0, 0, 400, 3, 1, 0, 0, 0, 401, 404, 3, 6, 3, 0, 402, 404, 3, 8, 4, 0, 403, 401, 1, 0, 0, 0, 403, 402, 1, 0, 0, 0, 404, 5, 1, 0, 0, 0, 405, 416, 5, 132, 0, 0, 406, 416, 3, 330, 165, 0, 407, 416, 3, 316, 158, 0, 408, 416, 3, 332, 166, 0, 409, 412, 5, 99, 0, 0, 410, 413, 3, 278, 139, 0, 411, 413, 3, 162, 81, 0, 412, 410, 1, 0, 0, 0, 412, 411, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 416, 3, 344, 172, 0, 415, 405, 1, 0, 0, 0, 415, 406, 1, 0, 0, 0, 415, 407, 1, 0, 0, 0, 415, 408, 1, 0, 0, 0, 415, 409, 1, 0, 0, 0, 415, 414, 1, 0, 0, 0, 416, 7, 1, 0, 0, 0, 417, 419, 3, 10, 5, 0, 418, 420, 5, 68, 0, 0, 419, 418, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 422, 3, 6, 3, 0, 422, 9, 1, 0, 0, 0, 423, 427, 6, 5, -1, 0, 424, 428, 3, 160, 80, 0, 425, 428, 3, 184, 92, 0, 426, 428, 3, 162, 81, 0, 427, 424, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 427, 426, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 430, 5, 127, 0, 0, 430, 442, 1, 0, 0, 0, 431, 437, 10, 1, 0, 0, 432, 438, 5, 132, 0, 0, 433, 435, 5, 68, 0, 0, 434, 433, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 438, 3, 342, 171, 0, 437, 432, 1, 0, 0, 0, 437, 434, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 441, 5, 127, 0, 0, 440, 431, 1, 0, 0, 0, 441, 444, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 11, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, 447, 3, 14, 7, 0, 446, 448, 3, 28, 14, 0, 447, 446, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 450, 3, 100, 50, 0, 450, 13, 1, 0, 0, 0, 451, 453, 5, 87, 0, 0, 452, 454, 3, 16, 8, 0, 453, 452, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 456, 5, 88, 0, 0, 456, 15, 1, 0, 0, 0, 457, 464, 3, 20, 10, 0, 458, 461, 3, 18, 9, 0, 459, 460, 5, 122, 0, 0, 460, 462, 3, 20, 10, 0, 461, 459, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 464, 1, 0, 0, 0, 463, 457, 1, 0, 0, 0, 463, 458, 1, 0, 0, 0, 464, 17, 1, 0, 0, 0, 465, 466, 7, 0, 0, 0, 466, 19, 1, 0, 0, 0, 467, 472, 3, 22, 11, 0, 468, 469, 5, 122, 0, 0, 469, 471, 3, 22, 11, 0, 470, 468, 1, 0, 0, 0, 471, 474, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 476, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 475, 477, 5, 131, 0, 0, 476, 475, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 21, 1, 0, 0, 0, 478, 481, 3, 24, 12, 0, 479, 481, 3, 26, 13, 0, 480, 478, 1, 0, 0, 0, 480, 479, 1, 0, 0, 0, 481, 23, 1, 0, 0, 0, 482, 484, 5, 97, 0, 0, 483, 482, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 488, 5, 132, 0, 0, 486, 488, 5, 69, 0, 0, 487, 483, 1, 0, 0, 0, 487, 486, 1, 0, 0, 0, 488, 25, 1, 0, 0, 0, 489, 491, 5, 97, 0, 0, 490, 489, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 493, 5, 132, 0, 0, 493, 494, 3, 268, 134, 0, 494, 27, 1, 0, 0, 0, 495, 497, 5, 85, 0, 0, 496, 498, 3, 258, 129, 0, 497, 496, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 501, 5, 86, 0, 0, 500, 502, 5, 47, 0, 0, 501, 500, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 504, 1, 0, 0, 0, 503, 505, 3, 370, 185, 0, 504, 503, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 507, 1, 0, 0, 0, 506, 508, 3, 204, 102, 0, 507, 506, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 510, 1, 0, 0, 0, 509, 511, 3, 234, 117, 0, 510, 509, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 29, 1, 0, 0, 0, 512, 513, 6, 15, -1, 0, 513, 543, 3, 2, 1, 0, 514, 517, 3, 158, 79, 0, 515, 517, 3, 352, 176, 0, 516, 514, 1, 0, 0, 0, 516, 515, 1, 0, 0, 0, 517, 524, 1, 0, 0, 0, 518, 520, 5, 85, 0, 0, 519, 521, 3, 34, 17, 0, 520, 519, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 525, 5, 86, 0, 0, 523, 525, 3, 276, 138, 0, 524, 518, 1, 0, 0, 0, 524, 523, 1, 0, 0, 0, 525, 543, 1, 0, 0, 0, 526, 527, 7, 1, 0, 0, 527, 528, 5, 102, 0, 0, 528, 529, 3, 246, 123, 0, 529, 530, 5, 103, 0, 0, 530, 531, 5, 85, 0, 0, 531, 532, 3, 90, 45, 0, 532, 533, 5, 86, 0, 0, 533, 543, 1, 0, 0, 0, 534, 535, 3, 32, 16, 0, 535, 538, 5, 85, 0, 0, 536, 539, 3, 90, 45, 0, 537, 539, 3, 246, 123, 0, 538, 536, 1, 0, 0, 0, 538, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 541, 5, 86, 0, 0, 541, 543, 1, 0, 0, 0, 542, 512, 1, 0, 0, 0, 542, 516, 1, 0, 0, 0, 542, 526, 1, 0, 0, 0, 542, 534, 1, 0, 0, 0, 543, 571, 1, 0, 0, 0, 544, 545, 10, 7, 0, 0, 545, 548, 5, 87, 0, 0, 546, 549, 3, 90, 45, 0, 547, 549, 3, 276, 138, 0, 548, 546, 1, 0, 0, 0, 548, 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 551, 5, 88, 0, 0, 551, 570, 1, 0, 0, 0, 552, 553, 10, 6, 0, 0, 553, 555, 5, 85, 0, 0, 554, 556, 3, 34, 17, 0, 555, 554, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 570, 5, 86, 0, 0, 558, 559, 10, 4, 0, 0, 559, 565, 7, 2, 0, 0, 560, 562, 5, 68, 0, 0, 561, 560, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 566, 3, 4, 2, 0, 564, 566, 3, 36, 18, 0, 565, 561, 1, 0, 0, 0, 565, 564, 1, 0, 0, 0, 566, 570, 1, 0, 0, 0, 567, 568, 10, 3, 0, 0, 568, 570, 7, 3, 0, 0, 569, 544, 1, 0, 0, 0, 569, 552, 1, 0, 0, 0, 569, 558, 1, 0, 0, 0, 569, 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 31, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 75, 0, 0, 575, 33, 1, 0, 0, 0, 576, 577, 3, 274, 137, 0, 577, 35, 1, 0, 0, 0, 578, 580, 3, 10, 5, 0, 579, 578, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 584, 1, 0, 0, 0, 581, 582, 3, 160, 80, 0, 582, 583, 5, 127, 0, 0, 583, 585, 1, 0, 0, 0, 584, 581, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 5, 99, 0, 0, 587, 598, 3, 160, 80, 0, 588, 589, 3, 10, 5, 0, 589, 590, 5, 68, 0, 0, 590, 591, 3, 342, 171, 0, 591, 592, 5, 127, 0, 0, 592, 593, 5, 99, 0, 0, 593, 594, 3, 160, 80, 0, 594, 598, 1, 0, 0, 0, 595, 596, 5, 99, 0, 0, 596, 598, 3, 162, 81, 0, 597, 579, 1, 0, 0, 0, 597, 588, 1, 0, 0, 0, 597, 595, 1, 0, 0, 0, 598, 37, 1, 0, 0, 0, 599, 627, 3, 30, 15, 0, 600, 605, 5, 120, 0, 0, 601, 605, 5, 121, 0, 0, 602, 605, 3, 40, 20, 0, 603, 605, 5, 62, 0, 0, 604, 600, 1, 0, 0, 0, 604, 601, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 604, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 627, 3, 38, 19, 0, 607, 616, 5, 62, 0, 0, 608, 609, 5, 85, 0, 0, 609, 610, 3, 246, 123, 0, 610, 611, 5, 86, 0, 0, 611, 617, 1, 0, 0, 0, 612, 613, 5, 131, 0, 0, 613, 614, 5, 85, 0, 0, 614, 615, 5, 132, 0, 0, 615, 617, 5, 86, 0, 0, 616, 608, 1, 0, 0, 0, 616, 612, 1, 0, 0, 0, 617, 627, 1, 0, 0, 0, 618, 619, 5, 11, 0, 0, 619, 620, 5, 85, 0, 0, 620, 621, 3, 246, 123, 0, 621, 622, 5, 86, 0, 0, 622, 627, 1, 0, 0, 0, 623, 627, 3, 56, 28, 0, 624, 627, 3, 42, 21, 0, 625, 627, 3, 54, 27, 0, 626, 599, 1, 0, 0, 0, 626, 604, 1, 0, 0, 0, 626, 607, 1, 0, 0, 0, 626, 618, 1, 0, 0, 0, 626, 623, 1, 0, 0, 0, 626, 624, 1, 0, 0, 0, 626, 625, 1, 0, 0, 0, 627, 39, 1, 0, 0, 0, 628, 629, 7, 4, 0, 0, 629, 41, 1, 0, 0, 0, 630, 632, 5, 127, 0, 0, 631, 630, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 633, 635, 5, 49, 0, 0, 634, 636, 3, 44, 22, 0, 635, 634, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 642, 1, 0, 0, 0, 637, 643, 3, 46, 23, 0, 638, 639, 5, 85, 0, 0, 639, 640, 3, 246, 123, 0, 640, 641, 5, 86, 0, 0, 641, 643, 1, 0, 0, 0, 642, 637, 1, 0, 0, 0, 642, 638, 1, 0, 0, 0, 643, 645, 1, 0, 0, 0, 644, 646, 3, 52, 26, 0, 645, 644, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 43, 1, 0, 0, 0, 647, 648, 5, 85, 0, 0, 648, 649, 3, 34, 17, 0, 649, 650, 5, 86, 0, 0, 650, 45, 1, 0, 0, 0, 651, 653, 3, 150, 75, 0, 652, 654, 3, 48, 24, 0, 653, 652, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 47, 1, 0, 0, 0, 655, 657, 3, 236, 118, 0, 656, 658, 3, 48, 24, 0, 657, 656, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 661, 1, 0, 0, 0, 659, 661, 3, 50, 25, 0, 660, 655, 1, 0, 0, 0, 660, 659, 1, 0, 0, 0, 661, 49, 1, 0, 0, 0, 662, 663, 6, 25, -1, 0, 663, 664, 5, 87, 0, 0, 664, 665, 3, 90, 45, 0, 665, 667, 5, 88, 0, 0, 666, 668, 3, 204, 102, 0, 667, 666, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 678, 1, 0, 0, 0, 669, 670, 10, 1, 0, 0, 670, 671, 5, 87, 0, 0, 671, 672, 3, 92, 46, 0, 672, 674, 5, 88, 0, 0, 673, 675, 3, 204, 102, 0, 674, 673, 1, 0, 0, 0, 674, 675, 1, 0, 0, 0, 675, 677, 1, 0, 0, 0, 676, 669, 1, 0, 0, 0, 677, 680, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 51, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 681, 683, 5, 85, 0, 0, 682, 684, 3, 34, 17, 0, 683, 682, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 688, 5, 86, 0, 0, 686, 688, 3, 276, 138, 0, 687, 681, 1, 0, 0, 0, 687, 686, 1, 0, 0, 0, 688, 53, 1, 0, 0, 0, 689, 691, 5, 127, 0, 0, 690, 689, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 695, 5, 28, 0, 0, 693, 694, 5, 87, 0, 0, 694, 696, 5, 88, 0, 0, 695, 693, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 698, 3, 58, 29, 0, 698, 55, 1, 0, 0, 0, 699, 700, 5, 50, 0, 0, 700, 701, 5, 85, 0, 0, 701, 702, 3, 90, 45, 0, 702, 703, 5, 86, 0, 0, 703, 57, 1, 0, 0, 0, 704, 711, 3, 38, 19, 0, 705, 706, 5, 85, 0, 0, 706, 707, 3, 246, 123, 0, 707, 708, 5, 86, 0, 0, 708, 709, 3, 58, 29, 0, 709, 711, 1, 0, 0, 0, 710, 704, 1, 0, 0, 0, 710, 705, 1, 0, 0, 0, 711, 59, 1, 0, 0, 0, 712, 717, 3, 58, 29, 0, 713, 714, 7, 5, 0, 0, 714, 716, 3, 58, 29, 0, 715, 713, 1, 0, 0, 0, 716, 719, 1, 0, 0, 0, 717, 715, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 61, 1, 0, 0, 0, 719, 717, 1, 0, 0, 0, 720, 725, 3, 60, 30, 0, 721, 722, 7, 6, 0, 0, 722, 724, 3, 60, 30, 0, 723, 721, 1, 0, 0, 0, 724, 727, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 63, 1, 0, 0, 0, 727, 725, 1, 0, 0, 0, 728, 733, 3, 62, 31, 0, 729, 730, 7, 7, 0, 0, 730, 732, 3, 62, 31, 0, 731, 729, 1, 0, 0, 0, 732, 735, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 65, 1, 0, 0, 0, 735, 733, 1, 0, 0, 0, 736, 742, 3, 64, 32, 0, 737, 738, 3, 68, 34, 0, 738, 739, 3, 64, 32, 0, 739, 741, 1, 0, 0, 0, 740, 737, 1, 0, 0, 0, 741, 744, 1, 0, 0, 0, 742, 740, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 67, 1, 0, 0, 0, 744, 742, 1, 0, 0, 0, 745, 746, 5, 103, 0, 0, 746, 750, 5, 103, 0, 0, 747, 748, 5, 102, 0, 0, 748, 750, 5, 102, 0, 0, 749, 745, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, 750, 69, 1, 0, 0, 0, 751, 756, 3, 66, 33, 0, 752, 753, 7, 8, 0, 0, 753, 755, 3, 66, 33, 0, 754, 752, 1, 0, 0, 0, 755, 758, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 71, 1, 0, 0, 0, 758, 756, 1, 0, 0, 0, 759, 764, 3, 70, 35, 0, 760, 761, 7, 9, 0, 0, 761, 763, 3, 70, 35, 0, 762, 760, 1, 0, 0, 0, 763, 766, 1, 0, 0, 0, 764, 762, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 73, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 767, 772, 3, 72, 36, 0, 768, 769, 5, 97, 0, 0, 769, 771, 3, 72, 36, 0, 770, 768, 1, 0, 0, 0, 771, 774, 1, 0, 0, 0, 772, 770, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 75, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 775, 780, 3, 74, 37, 0, 776, 777, 5, 96, 0, 0, 777, 779, 3, 74, 37, 0, 778, 776, 1, 0, 0, 0, 779, 782, 1, 0, 0, 0, 780, 778, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 77, 1, 0, 0, 0, 782, 780, 1, 0, 0, 0, 783, 788, 3, 76, 38, 0, 784, 785, 5, 98, 0, 0, 785, 787, 3, 76, 38, 0, 786, 784, 1, 0, 0, 0, 787, 790, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 79, 1, 0, 0, 0, 790, 788, 1, 0, 0, 0, 791, 796, 3, 78, 39, 0, 792, 793, 5, 118, 0, 0, 793, 795, 3, 78, 39, 0, 794, 792, 1, 0, 0, 0, 795, 798, 1, 0, 0, 0, 796, 794, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 81, 1, 0, 0, 0, 798, 796, 1, 0, 0, 0, 799, 804, 3, 80, 40, 0, 800, 801, 5, 119, 0, 0, 801, 803, 3, 80, 40, 0, 802, 800, 1, 0, 0, 0, 803, 806, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, 83, 1, 0, 0, 0, 806, 804, 1, 0, 0, 0, 807, 813, 3, 82, 41, 0, 808, 809, 5, 125, 0, 0, 809, 810, 3, 90, 45, 0, 810, 811, 5, 126, 0, 0, 811, 812, 3, 86, 43, 0, 812, 814, 1, 0, 0, 0, 813, 808, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 85, 1, 0, 0, 0, 815, 822, 3, 84, 42, 0, 816, 817, 3, 82, 41, 0, 817, 818, 3, 88, 44, 0, 818, 819, 3, 272, 136, 0, 819, 822, 1, 0, 0, 0, 820, 822, 3, 368, 184, 0, 821, 815, 1, 0, 0, 0, 821, 816, 1, 0, 0, 0, 821, 820, 1, 0, 0, 0, 822, 87, 1, 0, 0, 0, 823, 824, 7, 10, 0, 0, 824, 89, 1, 0, 0, 0, 825, 830, 3, 86, 43, 0, 826, 827, 5, 122, 0, 0, 827, 829, 3, 86, 43, 0, 828, 826, 1, 0, 0, 0, 829, 832, 1, 0, 0, 0, 830, 828, 1, 0, 0, 0, 830, 831, 1, 0, 0, 0, 831, 91, 1, 0, 0, 0, 832, 830, 1, 0, 0, 0, 833, 834, 3, 84, 42, 0, 834, 93, 1, 0, 0, 0, 835, 849, 3, 96, 48, 0, 836, 849, 3, 118, 59, 0, 837, 839, 3, 204, 102, 0, 838, 837, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 846, 1, 0, 0, 0, 840, 847, 3, 98, 49, 0, 841, 847, 3, 100, 50, 0, 842, 847, 3, 104, 52, 0, 843, 847, 3, 108, 54, 0, 844, 847, 3, 116, 58, 0, 845, 847, 3, 358, 179, 0, 846, 840, 1, 0, 0, 0, 846, 841, 1, 0, 0, 0, 846, 842, 1, 0, 0, 0, 846, 843, 1, 0, 0, 0, 846, 844, 1, 0, 0, 0, 846, 845, 1, 0, 0, 0, 847, 849, 1, 0, 0, 0, 848, 835, 1, 0, 0, 0, 848, 836, 1, 0, 0, 0, 848, 838, 1, 0, 0, 0, 849, 95, 1, 0, 0, 0, 850, 852, 3, 204, 102, 0, 851, 850, 1, 0, 0, 0, 851, 852, 1, 0, 0, 0, 852, 857, 1, 0, 0, 0, 853, 858, 5, 132, 0, 0, 854, 855, 5, 16, 0, 0, 855, 858, 3, 92, 46, 0, 856, 858, 5, 27, 0, 0, 857, 853, 1, 0, 0, 0, 857, 854, 1, 0, 0, 0, 857, 856, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 860, 5, 126, 0, 0, 860, 861, 3, 94, 47, 0, 861, 97, 1, 0, 0, 0, 862, 864, 3, 90, 45, 0, 863, 862, 1, 0, 0, 0, 863, 864, 1, 0, 0, 0, 864, 865, 1, 0, 0, 0, 865, 866, 5, 128, 0, 0, 866, 99, 1, 0, 0, 0, 867, 869, 5, 89, 0, 0, 868, 870, 3, 102, 51, 0, 869, 868, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 872, 5, 90, 0, 0, 872, 101, 1, 0, 0, 0, 873, 875, 3, 94, 47, 0, 874, 873, 1, 0, 0, 0, 875, 876, 1, 0, 0, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 103, 1, 0, 0, 0, 878, 879, 5, 43, 0, 0, 879, 880, 5, 85, 0, 0, 880, 881, 3, 106, 53, 0, 881, 882, 5, 86, 0, 0, 882, 885, 3, 94, 47, 0, 883, 884, 5, 32, 0, 0, 884, 886, 3, 94, 47, 0, 885, 883, 1, 0, 0, 0, 885, 886, 1, 0, 0, 0, 886, 894, 1, 0, 0, 0, 887, 888, 5, 67, 0, 0, 888, 889, 5, 85, 0, 0, 889, 890, 3, 106, 53, 0, 890, 891, 5, 86, 0, 0, 891, 892, 3, 94, 47, 0, 892, 894, 1, 0, 0, 0, 893, 878, 1, 0, 0, 0, 893, 887, 1, 0, 0, 0, 894, 105, 1, 0, 0, 0, 895, 907, 3, 90, 45, 0, 896, 898, 3, 204, 102, 0, 897, 896, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 900, 3, 138, 69, 0, 900, 904, 3, 226, 113, 0, 901, 902, 5, 101, 0, 0, 902, 905, 3, 272, 136, 0, 903, 905, 3, 276, 138, 0, 904, 901, 1, 0, 0, 0, 904, 903, 1, 0, 0, 0, 905, 907, 1, 0, 0, 0, 906, 895, 1, 0, 0, 0, 906, 897, 1, 0, 0, 0, 907, 107, 1, 0, 0, 0, 908, 909, 5, 84, 0, 0, 909, 910, 5, 85, 0, 0, 910, 911, 3, 106, 53, 0, 911, 912, 5, 86, 0, 0, 912, 913, 3, 94, 47, 0, 913, 942, 1, 0, 0, 0, 914, 915, 5, 29, 0, 0, 915, 916, 3, 94, 47, 0, 916, 917, 5, 84, 0, 0, 917, 918, 5, 85, 0, 0, 918, 919, 3, 90, 45, 0, 919, 920, 5, 86, 0, 0, 920, 921, 5, 128, 0, 0, 921, 942, 1, 0, 0, 0, 922, 923, 5, 40, 0, 0, 923, 936, 5, 85, 0, 0, 924, 926, 3, 110, 55, 0, 925, 927, 3, 106, 53, 0, 926, 925, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 930, 5, 128, 0, 0, 929, 931, 3, 90, 45, 0, 930, 929, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 937, 1, 0, 0, 0, 932, 933, 3, 112, 56, 0, 933, 934, 5, 126, 0, 0, 934, 935, 3, 114, 57, 0, 935, 937, 1, 0, 0, 0, 936, 924, 1, 0, 0, 0, 936, 932, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 939, 5, 86, 0, 0, 939, 940, 3, 94, 47, 0, 940, 942, 1, 0, 0, 0, 941, 908, 1, 0, 0, 0, 941, 914, 1, 0, 0, 0, 941, 922, 1, 0, 0, 0, 942, 109, 1, 0, 0, 0, 943, 946, 3, 98, 49, 0, 944, 946, 3, 128, 64, 0, 945, 943, 1, 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 111, 1, 0, 0, 0, 947, 949, 3, 204, 102, 0, 948, 947, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 951, 3, 138, 69, 0, 951, 952, 3, 226, 113, 0, 952, 113, 1, 0, 0, 0, 953, 956, 3, 90, 45, 0, 954, 956, 3, 276, 138, 0, 955, 953, 1, 0, 0, 0, 955, 954, 1, 0, 0, 0, 956, 115, 1, 0, 0, 0, 957, 967, 5, 15, 0, 0, 958, 967, 5, 25, 0, 0, 959, 962, 5, 59, 0, 0, 960, 963, 3, 90, 45, 0, 961, 963, 3, 276, 138, 0, 962, 960, 1, 0, 0, 0, 962, 961, 1, 0, 0, 0, 962, 963, 1, 0, 0, 0, 963, 967, 1, 0, 0, 0, 964, 965, 5, 42, 0, 0, 965, 967, 5, 132, 0, 0, 966, 957, 1, 0, 0, 0, 966, 958, 1, 0, 0, 0, 966, 959, 1, 0, 0, 0, 966, 964, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 969, 5, 128, 0, 0, 969, 117, 1, 0, 0, 0, 970, 971, 3, 124, 62, 0, 971, 119, 1, 0, 0, 0, 972, 974, 3, 122, 61, 0, 973, 972, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 973, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 121, 1, 0, 0, 0, 977, 987, 3, 124, 62, 0, 978, 987, 3, 264, 132, 0, 979, 987, 3, 334, 167, 0, 980, 987, 3, 354, 177, 0, 981, 987, 3, 356, 178, 0, 982, 987, 3, 202, 101, 0, 983, 987, 3, 188, 94, 0, 984, 987, 3, 132, 66, 0, 985, 987, 3, 134, 67, 0, 986, 977, 1, 0, 0, 0, 986, 978, 1, 0, 0, 0, 986, 979, 1, 0, 0, 0, 986, 980, 1, 0, 0, 0, 986, 981, 1, 0, 0, 0, 986, 982, 1, 0, 0, 0, 986, 983, 1, 0, 0, 0, 986, 984, 1, 0, 0, 0, 986, 985, 1, 0, 0, 0, 987, 123, 1, 0, 0, 0, 988, 997, 3, 128, 64, 0, 989, 997, 3, 200, 100, 0, 990, 997, 3, 192, 96, 0, 991, 997, 3, 196, 98, 0, 992, 997, 3, 198, 99, 0, 993, 997, 3, 130, 65, 0, 994, 997, 3, 126, 63, 0, 995, 997, 3, 172, 86, 0, 996, 988, 1, 0, 0, 0, 996, 989, 1, 0, 0, 0, 996, 990, 1, 0, 0, 0, 996, 991, 1, 0, 0, 0, 996, 992, 1, 0, 0, 0, 996, 993, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 996, 995, 1, 0, 0, 0, 997, 125, 1, 0, 0, 0, 998, 999, 5, 79, 0, 0, 999, 1001, 5, 132, 0, 0, 1000, 1002, 3, 204, 102, 0, 1001, 1000, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1004, 5, 101, 0, 0, 1004, 1005, 3, 246, 123, 0, 1005, 1006, 5, 128, 0, 0, 1006, 127, 1, 0, 0, 0, 1007, 1009, 3, 138, 69, 0, 1008, 1007, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1011, 1, 0, 0, 0, 1010, 1012, 3, 222, 111, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1022, 5, 128, 0, 0, 1014, 1016, 3, 204, 102, 0, 1015, 1017, 3, 138, 69, 0, 1016, 1015, 1, 0, 0, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1019, 3, 222, 111, 0, 1019, 1020, 5, 128, 0, 0, 1020, 1022, 1, 0, 0, 0, 1021, 1008, 1, 0, 0, 0, 1021, 1014, 1, 0, 0, 0, 1022, 129, 1, 0, 0, 0, 1023, 1024, 5, 64, 0, 0, 1024, 1025, 5, 85, 0, 0, 1025, 1026, 3, 92, 46, 0, 1026, 1027, 5, 122, 0, 0, 1027, 1028, 5, 4, 0, 0, 1028, 1029, 5, 86, 0, 0, 1029, 1030, 5, 128, 0, 0, 1030, 131, 1, 0, 0, 0, 1031, 1032, 5, 128, 0, 0, 1032, 133, 1, 0, 0, 0, 1033, 1034, 3, 204, 102, 0, 1034, 1035, 5, 128, 0, 0, 1035, 135, 1, 0, 0, 0, 1036, 1043, 3, 140, 70, 0, 1037, 1043, 3, 146, 73, 0, 1038, 1043, 3, 142, 71, 0, 1039, 1043, 5, 41, 0, 0, 1040, 1043, 5, 74, 0, 0, 1041, 1043, 5, 23, 0, 0, 1042, 1036, 1, 0, 0, 0, 1042, 1037, 1, 0, 0, 0, 1042, 1038, 1, 0, 0, 0, 1042, 1039, 1, 0, 0, 0, 1042, 1040, 1, 0, 0, 0, 1042, 1041, 1, 0, 0, 0, 1043, 137, 1, 0, 0, 0, 1044, 1046, 3, 136, 68, 0, 1045, 1044, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1047, 1045, 1, 0, 0, 0, 1048, 1050, 1, 0, 0, 0, 1049, 1051, 3, 204, 102, 0, 1050, 1049, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 139, 1, 0, 0, 0, 1052, 1053, 7, 11, 0, 0, 1053, 141, 1, 0, 0, 0, 1054, 1055, 7, 12, 0, 0, 1055, 143, 1, 0, 0, 0, 1056, 1057, 5, 132, 0, 0, 1057, 145, 1, 0, 0, 0, 1058, 1062, 3, 148, 74, 0, 1059, 1062, 3, 280, 140, 0, 1060, 1062, 3, 168, 84, 0, 1061, 1058, 1, 0, 0, 0, 1061, 1059, 1, 0, 0, 0, 1061, 1060, 1, 0, 0, 0, 1062, 147, 1, 0, 0, 0, 1063, 1068, 3, 158, 79, 0, 1064, 1068, 3, 164, 82, 0, 1065, 1068, 3, 352, 176, 0, 1066, 1068, 3, 240, 120, 0, 1067, 1063, 1, 0, 0, 0, 1067, 1064, 1, 0, 0, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1066, 1, 0, 0, 0, 1068, 149, 1, 0, 0, 0, 1069, 1071, 3, 146, 73, 0, 1070, 1069, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1070, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1075, 1, 0, 0, 0, 1074, 1076, 3, 204, 102, 0, 1075, 1074, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 151, 1, 0, 0, 0, 1077, 1079, 3, 148, 74, 0, 1078, 1077, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1078, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1083, 1, 0, 0, 0, 1082, 1084, 3, 204, 102, 0, 1083, 1082, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 153, 1, 0, 0, 0, 1085, 1086, 7, 13, 0, 0, 1086, 155, 1, 0, 0, 0, 1087, 1088, 7, 14, 0, 0, 1088, 157, 1, 0, 0, 0, 1089, 1091, 3, 10, 5, 0, 1090, 1089, 1, 0, 0, 0, 1090, 1091, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1114, 3, 160, 80, 0, 1093, 1094, 3, 10, 5, 0, 1094, 1095, 5, 68, 0, 0, 1095, 1096, 3, 342, 171, 0, 1096, 1114, 1, 0, 0, 0, 1097, 1114, 5, 18, 0, 0, 1098, 1114, 5, 19, 0, 0, 1099, 1114, 5, 20, 0, 0, 1100, 1114, 5, 83, 0, 0, 1101, 1114, 5, 14, 0, 0, 1102, 1114, 5, 60, 0, 0, 1103, 1114, 5, 45, 0, 0, 1104, 1114, 5, 46, 0, 0, 1105, 1114, 5, 39, 0, 0, 1106, 1114, 5, 61, 0, 0, 1107, 1114, 5, 78, 0, 0, 1108, 1114, 5, 39, 0, 0, 1109, 1114, 5, 30, 0, 0, 1110, 1114, 5, 81, 0, 0, 1111, 1114, 5, 13, 0, 0, 1112, 1114, 3, 162, 81, 0, 1113, 1090, 1, 0, 0, 0, 1113, 1093, 1, 0, 0, 0, 1113, 1097, 1, 0, 0, 0, 1113, 1098, 1, 0, 0, 0, 1113, 1099, 1, 0, 0, 0, 1113, 1100, 1, 0, 0, 0, 1113, 1101, 1, 0, 0, 0, 1113, 1102, 1, 0, 0, 0, 1113, 1103, 1, 0, 0, 0, 1113, 1104, 1, 0, 0, 0, 1113, 1105, 1, 0, 0, 0, 1113, 1106, 1, 0, 0, 0, 1113, 1107, 1, 0, 0, 0, 1113, 1108, 1, 0, 0, 0, 1113, 1109, 1, 0, 0, 0, 1113, 1110, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1113, 1112, 1, 0, 0, 0, 1114, 159, 1, 0, 0, 0, 1115, 1120, 3, 278, 139, 0, 1116, 1120, 3, 166, 83, 0, 1117, 1120, 3, 144, 72, 0, 1118, 1120, 3, 342, 171, 0, 1119, 1115, 1, 0, 0, 0, 1119, 1116, 1, 0, 0, 0, 1119, 1117, 1, 0, 0, 0, 1119, 1118, 1, 0, 0, 0, 1120, 161, 1, 0, 0, 0, 1121, 1122, 5, 26, 0, 0, 1122, 1125, 5, 85, 0, 0, 1123, 1126, 3, 90, 45, 0, 1124, 1126, 5, 13, 0, 0, 1125, 1123, 1, 0, 0, 0, 1125, 1124, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1128, 5, 86, 0, 0, 1128, 163, 1, 0, 0, 0, 1129, 1144, 3, 288, 144, 0, 1130, 1132, 3, 204, 102, 0, 1131, 1130, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 1134, 1, 0, 0, 0, 1133, 1135, 3, 10, 5, 0, 1134, 1133, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1145, 5, 132, 0, 0, 1137, 1145, 3, 342, 171, 0, 1138, 1140, 3, 10, 5, 0, 1139, 1141, 5, 68, 0, 0, 1140, 1139, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1143, 3, 342, 171, 0, 1143, 1145, 1, 0, 0, 0, 1144, 1131, 1, 0, 0, 0, 1144, 1137, 1, 0, 0, 0, 1144, 1138, 1, 0, 0, 0, 1145, 1152, 1, 0, 0, 0, 1146, 1148, 5, 33, 0, 0, 1147, 1149, 3, 10, 5, 0, 1148, 1147, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1152, 5, 132, 0, 0, 1151, 1129, 1, 0, 0, 0, 1151, 1146, 1, 0, 0, 0, 1152, 165, 1, 0, 0, 0, 1153, 1154, 5, 132, 0, 0, 1154, 167, 1, 0, 0, 0, 1155, 1156, 3, 170, 85, 0, 1156, 1161, 5, 89, 0, 0, 1157, 1159, 3, 178, 89, 0, 1158, 1160, 5, 122, 0, 0, 1159, 1158, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1162, 1, 0, 0, 0, 1161, 1157, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 5, 90, 0, 0, 1164, 169, 1, 0, 0, 0, 1165, 1167, 3, 174, 87, 0, 1166, 1168, 3, 204, 102, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1173, 1, 0, 0, 0, 1169, 1171, 3, 10, 5, 0, 1170, 1169, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1174, 5, 132, 0, 0, 1173, 1170, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1176, 1, 0, 0, 0, 1175, 1177, 3, 176, 88, 0, 1176, 1175, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 171, 1, 0, 0, 0, 1178, 1180, 3, 174, 87, 0, 1179, 1181, 3, 204, 102, 0, 1180, 1179, 1, 0, 0, 0, 1180, 1181, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1184, 5, 132, 0, 0, 1183, 1185, 3, 176, 88, 0, 1184, 1183, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1187, 5, 128, 0, 0, 1187, 173, 1, 0, 0, 0, 1188, 1190, 5, 33, 0, 0, 1189, 1191, 7, 15, 0, 0, 1190, 1189, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 175, 1, 0, 0, 0, 1192, 1193, 5, 126, 0, 0, 1193, 1194, 3, 150, 75, 0, 1194, 177, 1, 0, 0, 0, 1195, 1200, 3, 180, 90, 0, 1196, 1197, 5, 122, 0, 0, 1197, 1199, 3, 180, 90, 0, 1198, 1196, 1, 0, 0, 0, 1199, 1202, 1, 0, 0, 0, 1200, 1198, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 179, 1, 0, 0, 0, 1202, 1200, 1, 0, 0, 0, 1203, 1206, 3, 182, 91, 0, 1204, 1205, 5, 101, 0, 0, 1205, 1207, 3, 92, 46, 0, 1206, 1204, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 181, 1, 0, 0, 0, 1208, 1209, 5, 132, 0, 0, 1209, 183, 1, 0, 0, 0, 1210, 1213, 3, 186, 93, 0, 1211, 1213, 3, 190, 95, 0, 1212, 1210, 1, 0, 0, 0, 1212, 1211, 1, 0, 0, 0, 1213, 185, 1, 0, 0, 0, 1214, 1215, 5, 132, 0, 0, 1215, 187, 1, 0, 0, 0, 1216, 1218, 5, 44, 0, 0, 1217, 1216, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1222, 5, 48, 0, 0, 1220, 1223, 5, 132, 0, 0, 1221, 1223, 3, 186, 93, 0, 1222, 1220, 1, 0, 0, 0, 1222, 1221, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 1, 0, 0, 0, 1224, 1226, 5, 89, 0, 0, 1225, 1227, 3, 120, 60, 0, 1226, 1225, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1228, 1, 0, 0, 0, 1228, 1229, 5, 90, 0, 0, 1229, 189, 1, 0, 0, 0, 1230, 1231, 5, 132, 0, 0, 1231, 191, 1, 0, 0, 0, 1232, 1233, 5, 48, 0, 0, 1233, 1234, 5, 132, 0, 0, 1234, 1235, 5, 101, 0, 0, 1235, 1236, 3, 194, 97, 0, 1236, 1237, 5, 128, 0, 0, 1237, 193, 1, 0, 0, 0, 1238, 1240, 3, 10, 5, 0, 1239, 1238, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1242, 3, 184, 92, 0, 1242, 195, 1, 0, 0, 0, 1243, 1249, 5, 79, 0, 0, 1244, 1246, 5, 76, 0, 0, 1245, 1244, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1250, 3, 10, 5, 0, 1248, 1250, 5, 127, 0, 0, 1249, 1245, 1, 0, 0, 0, 1249, 1248, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 3, 6, 3, 0, 1252, 1253, 5, 128, 0, 0, 1253, 197, 1, 0, 0, 0, 1254, 1256, 3, 204, 102, 0, 1255, 1254, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1258, 5, 79, 0, 0, 1258, 1260, 5, 48, 0, 0, 1259, 1261, 3, 10, 5, 0, 1260, 1259, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1263, 3, 184, 92, 0, 1263, 1264, 5, 128, 0, 0, 1264, 199, 1, 0, 0, 0, 1265, 1266, 5, 12, 0, 0, 1266, 1267, 5, 85, 0, 0, 1267, 1268, 5, 4, 0, 0, 1268, 1269, 5, 86, 0, 0, 1269, 1270, 5, 128, 0, 0, 1270, 201, 1, 0, 0, 0, 1271, 1272, 5, 36, 0, 0, 1272, 1279, 5, 4, 0, 0, 1273, 1275, 5, 89, 0, 0, 1274, 1276, 3, 120, 60, 0, 1275, 1274, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1280, 5, 90, 0, 0, 1278, 1280, 3, 122, 61, 0, 1279, 1273, 1, 0, 0, 0, 1279, 1278, 1, 0, 0, 0, 1280, 203, 1, 0, 0, 0, 1281, 1283, 3, 206, 103, 0, 1282, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 1282, 1, 0, 0, 0, 1284, 1285, 1, 0, 0, 0, 1285, 205, 1, 0, 0, 0, 1286, 1287, 5, 87, 0, 0, 1287, 1289, 5, 87, 0, 0, 1288, 1290, 3, 210, 105, 0, 1289, 1288, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1292, 5, 88, 0, 0, 1292, 1295, 5, 88, 0, 0, 1293, 1295, 3, 208, 104, 0, 1294, 1286, 1, 0, 0, 0, 1294, 1293, 1, 0, 0, 0, 1295, 207, 1, 0, 0, 0, 1296, 1297, 5, 10, 0, 0, 1297, 1300, 5, 85, 0, 0, 1298, 1301, 3, 246, 123, 0, 1299, 1301, 3, 92, 46, 0, 1300, 1298, 1, 0, 0, 0, 1300, 1299, 1, 0, 0, 0, 1301, 1303, 1, 0, 0, 0, 1302, 1304, 5, 131, 0, 0, 1303, 1302, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 5, 86, 0, 0, 1306, 209, 1, 0, 0, 0, 1307, 1312, 3, 212, 106, 0, 1308, 1309, 5, 122, 0, 0, 1309, 1311, 3, 212, 106, 0, 1310, 1308, 1, 0, 0, 0, 1311, 1314, 1, 0, 0, 0, 1312, 1310, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1316, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1315, 1317, 5, 131, 0, 0, 1316, 1315, 1, 0, 0, 0, 1316, 1317, 1, 0, 0, 0, 1317, 211, 1, 0, 0, 0, 1318, 1319, 3, 214, 107, 0, 1319, 1320, 5, 127, 0, 0, 1320, 1322, 1, 0, 0, 0, 1321, 1318, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1325, 5, 132, 0, 0, 1324, 1326, 3, 216, 108, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 213, 1, 0, 0, 0, 1327, 1328, 5, 132, 0, 0, 1328, 215, 1, 0, 0, 0, 1329, 1331, 5, 85, 0, 0, 1330, 1332, 3, 218, 109, 0, 1331, 1330, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1334, 5, 86, 0, 0, 1334, 217, 1, 0, 0, 0, 1335, 1337, 3, 220, 110, 0, 1336, 1335, 1, 0, 0, 0, 1337, 1338, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1338, 1339, 1, 0, 0, 0, 1339, 219, 1, 0, 0, 0, 1340, 1341, 5, 85, 0, 0, 1341, 1342, 3, 218, 109, 0, 1342, 1343, 5, 86, 0, 0, 1343, 1358, 1, 0, 0, 0, 1344, 1345, 5, 87, 0, 0, 1345, 1346, 3, 218, 109, 0, 1346, 1347, 5, 88, 0, 0, 1347, 1358, 1, 0, 0, 0, 1348, 1349, 5, 89, 0, 0, 1349, 1350, 3, 218, 109, 0, 1350, 1351, 5, 90, 0, 0, 1351, 1358, 1, 0, 0, 0, 1352, 1354, 8, 16, 0, 0, 1353, 1352, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1353, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1358, 1, 0, 0, 0, 1357, 1340, 1, 0, 0, 0, 1357, 1344, 1, 0, 0, 0, 1357, 1348, 1, 0, 0, 0, 1357, 1353, 1, 0, 0, 0, 1358, 221, 1, 0, 0, 0, 1359, 1364, 3, 224, 112, 0, 1360, 1361, 5, 122, 0, 0, 1361, 1363, 3, 224, 112, 0, 1362, 1360, 1, 0, 0, 0, 1363, 1366, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 223, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1369, 3, 226, 113, 0, 1368, 1370, 3, 268, 134, 0, 1369, 1368, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 225, 1, 0, 0, 0, 1371, 1377, 3, 228, 114, 0, 1372, 1373, 3, 230, 115, 0, 1373, 1374, 3, 232, 116, 0, 1374, 1375, 3, 234, 117, 0, 1375, 1377, 1, 0, 0, 0, 1376, 1371, 1, 0, 0, 0, 1376, 1372, 1, 0, 0, 0, 1377, 227, 1, 0, 0, 0, 1378, 1380, 3, 236, 118, 0, 1379, 1381, 5, 22, 0, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1383, 1, 0, 0, 0, 1382, 1378, 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, 3, 230, 115, 0, 1388, 229, 1, 0, 0, 0, 1389, 1390, 6, 115, -1, 0, 1390, 1392, 3, 244, 122, 0, 1391, 1393, 3, 204, 102, 0, 1392, 1391, 1, 0, 0, 0, 1392, 1393, 1, 0, 0, 0, 1393, 1399, 1, 0, 0, 0, 1394, 1395, 5, 85, 0, 0, 1395, 1396, 3, 228, 114, 0, 1396, 1397, 5, 86, 0, 0, 1397, 1399, 1, 0, 0, 0, 1398, 1389, 1, 0, 0, 0, 1398, 1394, 1, 0, 0, 0, 1399, 1414, 1, 0, 0, 0, 1400, 1410, 10, 2, 0, 0, 1401, 1411, 3, 232, 116, 0, 1402, 1404, 5, 87, 0, 0, 1403, 1405, 3, 92, 46, 0, 1404, 1403, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 1, 0, 0, 0, 1406, 1408, 5, 88, 0, 0, 1407, 1409, 3, 204, 102, 0, 1408, 1407, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1411, 1, 0, 0, 0, 1410, 1401, 1, 0, 0, 0, 1410, 1402, 1, 0, 0, 0, 1411, 1413, 1, 0, 0, 0, 1412, 1400, 1, 0, 0, 0, 1413, 1416, 1, 0, 0, 0, 1414, 1412, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 231, 1, 0, 0, 0, 1416, 1414, 1, 0, 0, 0, 1417, 1419, 5, 85, 0, 0, 1418, 1420, 3, 258, 129, 0, 1419, 1418, 1, 0, 0, 0, 1419, 1420, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, 5, 86, 0, 0, 1422, 1424, 3, 238, 119, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1426, 1, 0, 0, 0, 1425, 1427, 3, 242, 121, 0, 1426, 1425, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1429, 1, 0, 0, 0, 1428, 1430, 3, 370, 185, 0, 1429, 1428, 1, 0, 0, 0, 1429, 1430, 1, 0, 0, 0, 1430, 1432, 1, 0, 0, 0, 1431, 1433, 3, 204, 102, 0, 1432, 1431, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 233, 1, 0, 0, 0, 1434, 1435, 5, 124, 0, 0, 1435, 1437, 3, 152, 76, 0, 1436, 1438, 3, 248, 124, 0, 1437, 1436, 1, 0, 0, 0, 1437, 1438, 1, 0, 0, 0, 1438, 235, 1, 0, 0, 0, 1439, 1441, 7, 17, 0, 0, 1440, 1442, 3, 204, 102, 0, 1441, 1440, 1, 0, 0, 0, 1441, 1442, 1, 0, 0, 0, 1442, 1454, 1, 0, 0, 0, 1443, 1445, 3, 10, 5, 0, 1444, 1443, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1448, 5, 93, 0, 0, 1447, 1449, 3, 204, 102, 0, 1448, 1447, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1451, 1, 0, 0, 0, 1450, 1452, 3, 238, 119, 0, 1451, 1450, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 1454, 1, 0, 0, 0, 1453, 1439, 1, 0, 0, 0, 1453, 1444, 1, 0, 0, 0, 1454, 237, 1, 0, 0, 0, 1455, 1457, 3, 240, 120, 0, 1456, 1455, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1456, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 239, 1, 0, 0, 0, 1460, 1461, 7, 18, 0, 0, 1461, 241, 1, 0, 0, 0, 1462, 1463, 7, 17, 0, 0, 1463, 243, 1, 0, 0, 0, 1464, 1466, 5, 131, 0, 0, 1465, 1464, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 3, 4, 2, 0, 1468, 245, 1, 0, 0, 0, 1469, 1471, 3, 150, 75, 0, 1470, 1472, 3, 248, 124, 0, 1471, 1470, 1, 0, 0, 0, 1471, 1472, 1, 0, 0, 0, 1472, 247, 1, 0, 0, 0, 1473, 1482, 3, 250, 125, 0, 1474, 1476, 3, 252, 126, 0, 1475, 1474, 1, 0, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1478, 3, 232, 116, 0, 1478, 1479, 3, 234, 117, 0, 1479, 1482, 1, 0, 0, 0, 1480, 1482, 3, 254, 127, 0, 1481, 1473, 1, 0, 0, 0, 1481, 1475, 1, 0, 0, 0, 1481, 1480, 1, 0, 0, 0, 1482, 249, 1, 0, 0, 0, 1483, 1485, 3, 236, 118, 0, 1484, 1483, 1, 0, 0, 0, 1485, 1488, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1491, 1, 0, 0, 0, 1488, 1486, 1, 0, 0, 0, 1489, 1492, 3, 252, 126, 0, 1490, 1492, 3, 236, 118, 0, 1491, 1489, 1, 0, 0, 0, 1491, 1490, 1, 0, 0, 0, 1492, 251, 1, 0, 0, 0, 1493, 1499, 3, 232, 116, 0, 1494, 1495, 5, 85, 0, 0, 1495, 1496, 3, 250, 125, 0, 1496, 1497, 5, 86, 0, 0, 1497, 1499, 1, 0, 0, 0, 1498, 1493, 1, 0, 0, 0, 1498, 1494, 1, 0, 0, 0, 1499, 1511, 1, 0, 0, 0, 1500, 1510, 3, 232, 116, 0, 1501, 1503, 5, 87, 0, 0, 1502, 1504, 3, 92, 46, 0, 1503, 1502, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1507, 5, 88, 0, 0, 1506, 1508, 3, 204, 102, 0, 1507, 1506, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1510, 1, 0, 0, 0, 1509, 1500, 1, 0, 0, 0, 1509, 1501, 1, 0, 0, 0, 1510, 1513, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 253, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1516, 3, 236, 118, 0, 1515, 1514, 1, 0, 0, 0, 1516, 1519, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1520, 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1520, 1521, 3, 256, 128, 0, 1521, 255, 1, 0, 0, 0, 1522, 1534, 5, 131, 0, 0, 1523, 1533, 3, 232, 116, 0, 1524, 1526, 5, 87, 0, 0, 1525, 1527, 3, 92, 46, 0, 1526, 1525, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1528, 1, 0, 0, 0, 1528, 1530, 5, 88, 0, 0, 1529, 1531, 3, 204, 102, 0, 1530, 1529, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1533, 1, 0, 0, 0, 1532, 1523, 1, 0, 0, 0, 1532, 1524, 1, 0, 0, 0, 1533, 1536, 1, 0, 0, 0, 1534, 1532, 1, 0, 0, 0, 1534, 1535, 1, 0, 0, 0, 1535, 257, 1, 0, 0, 0, 1536, 1534, 1, 0, 0, 0, 1537, 1542, 3, 260, 130, 0, 1538, 1540, 5, 122, 0, 0, 1539, 1538, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1543, 5, 131, 0, 0, 1542, 1539, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 259, 1, 0, 0, 0, 1544, 1549, 3, 262, 131, 0, 1545, 1546, 5, 122, 0, 0, 1546, 1548, 3, 262, 131, 0, 1547, 1545, 1, 0, 0, 0, 1548, 1551, 1, 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 261, 1, 0, 0, 0, 1551, 1549, 1, 0, 0, 0, 1552, 1554, 3, 204, 102, 0, 1553, 1552, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1555, 1, 0, 0, 0, 1555, 1560, 3, 138, 69, 0, 1556, 1561, 3, 226, 113, 0, 1557, 1559, 3, 248, 124, 0, 1558, 1557, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 1561, 1, 0, 0, 0, 1560, 1556, 1, 0, 0, 0, 1560, 1558, 1, 0, 0, 0, 1561, 1564, 1, 0, 0, 0, 1562, 1563, 5, 101, 0, 0, 1563, 1565, 3, 272, 136, 0, 1564, 1562, 1, 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 263, 1, 0, 0, 0, 1566, 1568, 3, 204, 102, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1570, 1, 0, 0, 0, 1569, 1571, 3, 138, 69, 0, 1570, 1569, 1, 0, 0, 0, 1570, 1571, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1574, 3, 226, 113, 0, 1573, 1575, 3, 298, 149, 0, 1574, 1573, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1576, 1, 0, 0, 0, 1576, 1577, 3, 266, 133, 0, 1577, 265, 1, 0, 0, 0, 1578, 1580, 3, 322, 161, 0, 1579, 1578, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 1587, 3, 100, 50, 0, 1582, 1587, 3, 360, 180, 0, 1583, 1584, 5, 101, 0, 0, 1584, 1585, 7, 19, 0, 0, 1585, 1587, 5, 128, 0, 0, 1586, 1579, 1, 0, 0, 0, 1586, 1582, 1, 0, 0, 0, 1586, 1583, 1, 0, 0, 0, 1587, 267, 1, 0, 0, 0, 1588, 1594, 3, 270, 135, 0, 1589, 1590, 5, 85, 0, 0, 1590, 1591, 3, 34, 17, 0, 1591, 1592, 5, 86, 0, 0, 1592, 1594, 1, 0, 0, 0, 1593, 1588, 1, 0, 0, 0, 1593, 1589, 1, 0, 0, 0, 1594, 269, 1, 0, 0, 0, 1595, 1596, 5, 101, 0, 0, 1596, 1599, 3, 272, 136, 0, 1597, 1599, 3, 276, 138, 0, 1598, 1595, 1, 0, 0, 0, 1598, 1597, 1, 0, 0, 0, 1599, 271, 1, 0, 0, 0, 1600, 1603, 3, 86, 43, 0, 1601, 1603, 3, 276, 138, 0, 1602, 1600, 1, 0, 0, 0, 1602, 1601, 1, 0, 0, 0, 1603, 273, 1, 0, 0, 0, 1604, 1606, 3, 272, 136, 0, 1605, 1607, 5, 131, 0, 0, 1606, 1605, 1, 0, 0, 0, 1606, 1607, 1, 0, 0, 0, 1607, 1615, 1, 0, 0, 0, 1608, 1609, 5, 122, 0, 0, 1609, 1611, 3, 272, 136, 0, 1610, 1612, 5, 131, 0, 0, 1611, 1610, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1614, 1, 0, 0, 0, 1613, 1608, 1, 0, 0, 0, 1614, 1617, 1, 0, 0, 0, 1615, 1613, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 275, 1, 0, 0, 0, 1617, 1615, 1, 0, 0, 0, 1618, 1623, 5, 89, 0, 0, 1619, 1621, 3, 274, 137, 0, 1620, 1622, 5, 122, 0, 0, 1621, 1620, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1624, 1, 0, 0, 0, 1623, 1619, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1626, 5, 90, 0, 0, 1626, 277, 1, 0, 0, 0, 1627, 1630, 5, 132, 0, 0, 1628, 1630, 3, 342, 171, 0, 1629, 1627, 1, 0, 0, 0, 1629, 1628, 1, 0, 0, 0, 1630, 279, 1, 0, 0, 0, 1631, 1632, 3, 282, 141, 0, 1632, 1634, 5, 89, 0, 0, 1633, 1635, 3, 290, 145, 0, 1634, 1633, 1, 0, 0, 0, 1634, 1635, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1637, 5, 90, 0, 0, 1637, 281, 1, 0, 0, 0, 1638, 1640, 3, 288, 144, 0, 1639, 1641, 3, 204, 102, 0, 1640, 1639, 1, 0, 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1646, 1, 0, 0, 0, 1642, 1644, 3, 284, 142, 0, 1643, 1645, 3, 286, 143, 0, 1644, 1643, 1, 0, 0, 0, 1644, 1645, 1, 0, 0, 0, 1645, 1647, 1, 0, 0, 0, 1646, 1642, 1, 0, 0, 0, 1646, 1647, 1, 0, 0, 0, 1647, 1649, 1, 0, 0, 0, 1648, 1650, 3, 304, 152, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1662, 1, 0, 0, 0, 1651, 1653, 5, 77, 0, 0, 1652, 1654, 3, 204, 102, 0, 1653, 1652, 1, 0, 0, 0, 1653, 1654, 1, 0, 0, 0, 1654, 1659, 1, 0, 0, 0, 1655, 1657, 3, 284, 142, 0, 1656, 1658, 3, 286, 143, 0, 1657, 1656, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1660, 1, 0, 0, 0, 1659, 1655, 1, 0, 0, 0, 1659, 1660, 1, 0, 0, 0, 1660, 1662, 1, 0, 0, 0, 1661, 1638, 1, 0, 0, 0, 1661, 1651, 1, 0, 0, 0, 1662, 283, 1, 0, 0, 0, 1663, 1665, 3, 10, 5, 0, 1664, 1663, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1666, 1, 0, 0, 0, 1666, 1667, 3, 278, 139, 0, 1667, 285, 1, 0, 0, 0, 1668, 1669, 5, 38, 0, 0, 1669, 287, 1, 0, 0, 0, 1670, 1671, 7, 15, 0, 0, 1671, 289, 1, 0, 0, 0, 1672, 1677, 3, 292, 146, 0, 1673, 1674, 3, 314, 157, 0, 1674, 1675, 5, 126, 0, 0, 1675, 1677, 1, 0, 0, 0, 1676, 1672, 1, 0, 0, 0, 1676, 1673, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1676, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 291, 1, 0, 0, 0, 1680, 1682, 3, 204, 102, 0, 1681, 1680, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1684, 1, 0, 0, 0, 1683, 1685, 3, 138, 69, 0, 1684, 1683, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1687, 1, 0, 0, 0, 1686, 1688, 3, 294, 147, 0, 1687, 1686, 1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1697, 5, 128, 0, 0, 1690, 1697, 3, 264, 132, 0, 1691, 1697, 3, 196, 98, 0, 1692, 1697, 3, 130, 65, 0, 1693, 1697, 3, 334, 167, 0, 1694, 1697, 3, 126, 63, 0, 1695, 1697, 3, 132, 66, 0, 1696, 1681, 1, 0, 0, 0, 1696, 1690, 1, 0, 0, 0, 1696, 1691, 1, 0, 0, 0, 1696, 1692, 1, 0, 0, 0, 1696, 1693, 1, 0, 0, 0, 1696, 1694, 1, 0, 0, 0, 1696, 1695, 1, 0, 0, 0, 1697, 293, 1, 0, 0, 0, 1698, 1703, 3, 296, 148, 0, 1699, 1700, 5, 122, 0, 0, 1700, 1702, 3, 296, 148, 0, 1701, 1699, 1, 0, 0, 0, 1702, 1705, 1, 0, 0, 0, 1703, 1701, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 295, 1, 0, 0, 0, 1705, 1703, 1, 0, 0, 0, 1706, 1715, 3, 226, 113, 0, 1707, 1716, 3, 298, 149, 0, 1708, 1709, 4, 148, 7, 0, 1709, 1716, 3, 302, 151, 0, 1710, 1711, 4, 148, 8, 0, 1711, 1712, 3, 298, 149, 0, 1712, 1713, 3, 302, 151, 0, 1713, 1716, 1, 0, 0, 0, 1714, 1716, 3, 270, 135, 0, 1715, 1707, 1, 0, 0, 0, 1715, 1708, 1, 0, 0, 0, 1715, 1710, 1, 0, 0, 0, 1715, 1714, 1, 0, 0, 0, 1716, 1727, 1, 0, 0, 0, 1717, 1727, 3, 226, 113, 0, 1718, 1720, 5, 132, 0, 0, 1719, 1718, 1, 0, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1723, 3, 204, 102, 0, 1722, 1721, 1, 0, 0, 0, 1722, 1723, 1, 0, 0, 0, 1723, 1724, 1, 0, 0, 0, 1724, 1725, 5, 126, 0, 0, 1725, 1727, 3, 92, 46, 0, 1726, 1706, 1, 0, 0, 0, 1726, 1717, 1, 0, 0, 0, 1726, 1719, 1, 0, 0, 0, 1727, 297, 1, 0, 0, 0, 1728, 1730, 3, 300, 150, 0, 1729, 1728, 1, 0, 0, 0, 1730, 1731, 1, 0, 0, 0, 1731, 1729, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 299, 1, 0, 0, 0, 1733, 1734, 7, 20, 0, 0, 1734, 301, 1, 0, 0, 0, 1735, 1736, 5, 101, 0, 0, 1736, 1737, 5, 1, 0, 0, 1737, 303, 1, 0, 0, 0, 1738, 1739, 5, 126, 0, 0, 1739, 1740, 3, 306, 153, 0, 1740, 305, 1, 0, 0, 0, 1741, 1743, 3, 308, 154, 0, 1742, 1744, 5, 131, 0, 0, 1743, 1742, 1, 0, 0, 0, 1743, 1744, 1, 0, 0, 0, 1744, 1752, 1, 0, 0, 0, 1745, 1746, 5, 122, 0, 0, 1746, 1748, 3, 308, 154, 0, 1747, 1749, 5, 131, 0, 0, 1748, 1747, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1751, 1, 0, 0, 0, 1750, 1745, 1, 0, 0, 0, 1751, 1754, 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 307, 1, 0, 0, 0, 1754, 1752, 1, 0, 0, 0, 1755, 1757, 3, 204, 102, 0, 1756, 1755, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1770, 1, 0, 0, 0, 1758, 1771, 3, 312, 156, 0, 1759, 1761, 5, 80, 0, 0, 1760, 1762, 3, 314, 157, 0, 1761, 1760, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1763, 1, 0, 0, 0, 1763, 1771, 3, 312, 156, 0, 1764, 1766, 3, 314, 157, 0, 1765, 1767, 5, 80, 0, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1769, 3, 312, 156, 0, 1769, 1771, 1, 0, 0, 0, 1770, 1758, 1, 0, 0, 0, 1770, 1759, 1, 0, 0, 0, 1770, 1764, 1, 0, 0, 0, 1771, 309, 1, 0, 0, 0, 1772, 1774, 3, 10, 5, 0, 1773, 1772, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1778, 3, 278, 139, 0, 1776, 1778, 3, 162, 81, 0, 1777, 1773, 1, 0, 0, 0, 1777, 1776, 1, 0, 0, 0, 1778, 311, 1, 0, 0, 0, 1779, 1780, 3, 310, 155, 0, 1780, 313, 1, 0, 0, 0, 1781, 1782, 7, 21, 0, 0, 1782, 315, 1, 0, 0, 0, 1783, 1784, 5, 52, 0, 0, 1784, 1785, 3, 318, 159, 0, 1785, 317, 1, 0, 0, 0, 1786, 1788, 3, 150, 75, 0, 1787, 1789, 3, 320, 160, 0, 1788, 1787, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 319, 1, 0, 0, 0, 1790, 1792, 3, 236, 118, 0, 1791, 1793, 3, 320, 160, 0, 1792, 1791, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 321, 1, 0, 0, 0, 1794, 1795, 5, 126, 0, 0, 1795, 1796, 3, 324, 162, 0, 1796, 323, 1, 0, 0, 0, 1797, 1799, 3, 326, 163, 0, 1798, 1800, 5, 131, 0, 0, 1799, 1798, 1, 0, 0, 0, 1799, 1800, 1, 0, 0, 0, 1800, 1808, 1, 0, 0, 0, 1801, 1802, 5, 122, 0, 0, 1802, 1804, 3, 326, 163, 0, 1803, 1805, 5, 131, 0, 0, 1804, 1803, 1, 0, 0, 0, 1804, 1805, 1, 0, 0, 0, 1805, 1807, 1, 0, 0, 0, 1806, 1801, 1, 0, 0, 0, 1807, 1810, 1, 0, 0, 0, 1808, 1806, 1, 0, 0, 0, 1808, 1809, 1, 0, 0, 0, 1809, 325, 1, 0, 0, 0, 1810, 1808, 1, 0, 0, 0, 1811, 1818, 3, 328, 164, 0, 1812, 1814, 5, 85, 0, 0, 1813, 1815, 3, 34, 17, 0, 1814, 1813, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1819, 5, 86, 0, 0, 1817, 1819, 3, 276, 138, 0, 1818, 1812, 1, 0, 0, 0, 1818, 1817, 1, 0, 0, 0, 1819, 327, 1, 0, 0, 0, 1820, 1823, 3, 310, 155, 0, 1821, 1823, 5, 132, 0, 0, 1822, 1820, 1, 0, 0, 0, 1822, 1821, 1, 0, 0, 0, 1823, 329, 1, 0, 0, 0, 1824, 1825, 5, 52, 0, 0, 1825, 1826, 3, 378, 189, 0, 1826, 331, 1, 0, 0, 0, 1827, 1831, 5, 52, 0, 0, 1828, 1829, 5, 4, 0, 0, 1829, 1832, 5, 132, 0, 0, 1830, 1832, 5, 140, 0, 0, 1831, 1828, 1, 0, 0, 0, 1831, 1830, 1, 0, 0, 0, 1832, 333, 1, 0, 0, 0, 1833, 1834, 5, 68, 0, 0, 1834, 1835, 5, 102, 0, 0, 1835, 1836, 3, 336, 168, 0, 1836, 1837, 5, 103, 0, 0, 1837, 1838, 3, 122, 61, 0, 1838, 335, 1, 0, 0, 0, 1839, 1844, 3, 338, 169, 0, 1840, 1841, 5, 122, 0, 0, 1841, 1843, 3, 338, 169, 0, 1842, 1840, 1, 0, 0, 0, 1843, 1846, 1, 0, 0, 0, 1844, 1842, 1, 0, 0, 0, 1844, 1845, 1, 0, 0, 0, 1845, 337, 1, 0, 0, 0, 1846, 1844, 1, 0, 0, 0, 1847, 1850, 3, 340, 170, 0, 1848, 1850, 3, 262, 131, 0, 1849, 1847, 1, 0, 0, 0, 1849, 1848, 1, 0, 0, 0, 1850, 339, 1, 0, 0, 0, 1851, 1852, 5, 68, 0, 0, 1852, 1853, 5, 102, 0, 0, 1853, 1854, 3, 336, 168, 0, 1854, 1855, 5, 103, 0, 0, 1855, 1857, 1, 0, 0, 0, 1856, 1851, 1, 0, 0, 0, 1856, 1857, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 1861, 5, 21, 0, 0, 1859, 1861, 5, 76, 0, 0, 1860, 1856, 1, 0, 0, 0, 1860, 1859, 1, 0, 0, 0, 1861, 1873, 1, 0, 0, 0, 1862, 1864, 5, 131, 0, 0, 1863, 1862, 1, 0, 0, 0, 1863, 1864, 1, 0, 0, 0, 1864, 1866, 1, 0, 0, 0, 1865, 1867, 5, 132, 0, 0, 1866, 1865, 1, 0, 0, 0, 1866, 1867, 1, 0, 0, 0, 1867, 1874, 1, 0, 0, 0, 1868, 1870, 5, 132, 0, 0, 1869, 1868, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1871, 1, 0, 0, 0, 1871, 1872, 5, 101, 0, 0, 1872, 1874, 3, 246, 123, 0, 1873, 1863, 1, 0, 0, 0, 1873, 1869, 1, 0, 0, 0, 1874, 341, 1, 0, 0, 0, 1875, 1876, 3, 346, 173, 0, 1876, 1878, 5, 102, 0, 0, 1877, 1879, 3, 348, 174, 0, 1878, 1877, 1, 0, 0, 0, 1878, 1879, 1, 0, 0, 0, 1879, 1880, 1, 0, 0, 0, 1880, 1881, 5, 103, 0, 0, 1881, 343, 1, 0, 0, 0, 1882, 1894, 3, 342, 171, 0, 1883, 1886, 3, 330, 165, 0, 1884, 1886, 3, 332, 166, 0, 1885, 1883, 1, 0, 0, 0, 1885, 1884, 1, 0, 0, 0, 1886, 1887, 1, 0, 0, 0, 1887, 1889, 5, 102, 0, 0, 1888, 1890, 3, 348, 174, 0, 1889, 1888, 1, 0, 0, 0, 1889, 1890, 1, 0, 0, 0, 1890, 1891, 1, 0, 0, 0, 1891, 1892, 5, 103, 0, 0, 1892, 1894, 1, 0, 0, 0, 1893, 1882, 1, 0, 0, 0, 1893, 1885, 1, 0, 0, 0, 1894, 345, 1, 0, 0, 0, 1895, 1896, 5, 132, 0, 0, 1896, 347, 1, 0, 0, 0, 1897, 1899, 3, 350, 175, 0, 1898, 1900, 5, 131, 0, 0, 1899, 1898, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 1908, 1, 0, 0, 0, 1901, 1902, 5, 122, 0, 0, 1902, 1904, 3, 350, 175, 0, 1903, 1905, 5, 131, 0, 0, 1904, 1903, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 1907, 1, 0, 0, 0, 1906, 1901, 1, 0, 0, 0, 1907, 1910, 1, 0, 0, 0, 1908, 1906, 1, 0, 0, 0, 1908, 1909, 1, 0, 0, 0, 1909, 349, 1, 0, 0, 0, 1910, 1908, 1, 0, 0, 0, 1911, 1915, 3, 246, 123, 0, 1912, 1915, 3, 92, 46, 0, 1913, 1915, 3, 4, 2, 0, 1914, 1911, 1, 0, 0, 0, 1914, 1912, 1, 0, 0, 0, 1914, 1913, 1, 0, 0, 0, 1915, 351, 1, 0, 0, 0, 1916, 1917, 5, 76, 0, 0, 1917, 1923, 3, 10, 5, 0, 1918, 1924, 5, 132, 0, 0, 1919, 1921, 5, 68, 0, 0, 1920, 1919, 1, 0, 0, 0, 1920, 1921, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1924, 3, 342, 171, 0, 1923, 1918, 1, 0, 0, 0, 1923, 1920, 1, 0, 0, 0, 1924, 353, 1, 0, 0, 0, 1925, 1927, 5, 36, 0, 0, 1926, 1925, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1929, 5, 68, 0, 0, 1929, 1930, 3, 122, 61, 0, 1930, 355, 1, 0, 0, 0, 1931, 1932, 5, 68, 0, 0, 1932, 1933, 5, 102, 0, 0, 1933, 1934, 5, 103, 0, 0, 1934, 1935, 3, 122, 61, 0, 1935, 357, 1, 0, 0, 0, 1936, 1937, 5, 73, 0, 0, 1937, 1938, 3, 100, 50, 0, 1938, 1939, 3, 362, 181, 0, 1939, 359, 1, 0, 0, 0, 1940, 1942, 5, 73, 0, 0, 1941, 1943, 3, 322, 161, 0, 1942, 1941, 1, 0, 0, 0, 1942, 1943, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, 1944, 1945, 3, 100, 50, 0, 1945, 1946, 3, 362, 181, 0, 1946, 361, 1, 0, 0, 0, 1947, 1949, 3, 364, 182, 0, 1948, 1947, 1, 0, 0, 0, 1949, 1950, 1, 0, 0, 0, 1950, 1948, 1, 0, 0, 0, 1950, 1951, 1, 0, 0, 0, 1951, 363, 1, 0, 0, 0, 1952, 1953, 5, 17, 0, 0, 1953, 1954, 5, 85, 0, 0, 1954, 1955, 3, 366, 183, 0, 1955, 1956, 5, 86, 0, 0, 1956, 1957, 3, 100, 50, 0, 1957, 365, 1, 0, 0, 0, 1958, 1960, 3, 204, 102, 0, 1959, 1958, 1, 0, 0, 0, 1959, 1960, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 1964, 3, 150, 75, 0, 1962, 1965, 3, 226, 113, 0, 1963, 1965, 3, 248, 124, 0, 1964, 1962, 1, 0, 0, 0, 1964, 1963, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 1968, 1, 0, 0, 0, 1966, 1968, 5, 131, 0, 0, 1967, 1959, 1, 0, 0, 0, 1967, 1966, 1, 0, 0, 0, 1968, 367, 1, 0, 0, 0, 1969, 1971, 5, 71, 0, 0, 1970, 1972, 3, 86, 43, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 369, 1, 0, 0, 0, 1973, 1976, 3, 372, 186, 0, 1974, 1976, 3, 376, 188, 0, 1975, 1973, 1, 0, 0, 0, 1975, 1974, 1, 0, 0, 0, 1976, 371, 1, 0, 0, 0, 1977, 1978, 5, 71, 0, 0, 1978, 1980, 5, 85, 0, 0, 1979, 1981, 3, 374, 187, 0, 1980, 1979, 1, 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 1982, 1, 0, 0, 0, 1982, 1983, 5, 86, 0, 0, 1983, 373, 1, 0, 0, 0, 1984, 1986, 3, 246, 123, 0, 1985, 1987, 5, 131, 0, 0, 1986, 1985, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 1995, 1, 0, 0, 0, 1988, 1989, 5, 122, 0, 0, 1989, 1991, 3, 246, 123, 0, 1990, 1992, 5, 131, 0, 0, 1991, 1990, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1994, 1, 0, 0, 0, 1993, 1988, 1, 0, 0, 0, 1994, 1997, 1, 0, 0, 0, 1995, 1993, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 375, 1, 0, 0, 0, 1997, 1995, 1, 0, 0, 0, 1998, 1999, 5, 50, 0, 0, 1999, 2000, 5, 85, 0, 0, 2000, 2001, 3, 92, 46, 0, 2001, 2002, 5, 86, 0, 0, 2002, 2005, 1, 0, 0, 0, 2003, 2005, 5, 50, 0, 0, 2004, 1998, 1, 0, 0, 0, 2004, 2003, 1, 0, 0, 0, 2005, 377, 1, 0, 0, 0, 2006, 2009, 5, 49, 0, 0, 2007, 2008, 5, 87, 0, 0, 2008, 2010, 5, 88, 0, 0, 2009, 2007, 1, 0, 0, 0, 2009, 2010, 1, 0, 0, 0, 2010, 2058, 1, 0, 0, 0, 2011, 2014, 5, 28, 0, 0, 2012, 2013, 5, 87, 0, 0, 2013, 2015, 5, 88, 0, 0, 2014, 2012, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2058, 1, 0, 0, 0, 2016, 2058, 5, 91, 0, 0, 2017, 2058, 5, 92, 0, 0, 2018, 2058, 5, 93, 0, 0, 2019, 2058, 5, 94, 0, 0, 2020, 2058, 5, 95, 0, 0, 2021, 2058, 5, 96, 0, 0, 2022, 2058, 5, 97, 0, 0, 2023, 2058, 5, 98, 0, 0, 2024, 2058, 5, 99, 0, 0, 2025, 2058, 5, 100, 0, 0, 2026, 2058, 5, 101, 0, 0, 2027, 2058, 5, 103, 0, 0, 2028, 2058, 5, 102, 0, 0, 2029, 2058, 5, 117, 0, 0, 2030, 2058, 5, 104, 0, 0, 2031, 2058, 5, 105, 0, 0, 2032, 2058, 5, 106, 0, 0, 2033, 2058, 5, 108, 0, 0, 2034, 2058, 5, 109, 0, 0, 2035, 2058, 5, 110, 0, 0, 2036, 2058, 5, 111, 0, 0, 2037, 2038, 5, 102, 0, 0, 2038, 2058, 5, 102, 0, 0, 2039, 2040, 5, 103, 0, 0, 2040, 2058, 5, 103, 0, 0, 2041, 2058, 5, 113, 0, 0, 2042, 2058, 5, 112, 0, 0, 2043, 2058, 5, 114, 0, 0, 2044, 2058, 5, 115, 0, 0, 2045, 2058, 5, 116, 0, 0, 2046, 2058, 5, 118, 0, 0, 2047, 2058, 5, 119, 0, 0, 2048, 2058, 5, 120, 0, 0, 2049, 2058, 5, 121, 0, 0, 2050, 2058, 5, 122, 0, 0, 2051, 2058, 5, 123, 0, 0, 2052, 2058, 5, 124, 0, 0, 2053, 2054, 5, 85, 0, 0, 2054, 2058, 5, 86, 0, 0, 2055, 2056, 5, 87, 0, 0, 2056, 2058, 5, 88, 0, 0, 2057, 2006, 1, 0, 0, 0, 2057, 2011, 1, 0, 0, 0, 2057, 2016, 1, 0, 0, 0, 2057, 2017, 1, 0, 0, 0, 2057, 2018, 1, 0, 0, 0, 2057, 2019, 1, 0, 0, 0, 2057, 2020, 1, 0, 0, 0, 2057, 2021, 1, 0, 0, 0, 2057, 2022, 1, 0, 0, 0, 2057, 2023, 1, 0, 0, 0, 2057, 2024, 1, 0, 0, 0, 2057, 2025, 1, 0, 0, 0, 2057, 2026, 1, 0, 0, 0, 2057, 2027, 1, 0, 0, 0, 2057, 2028, 1, 0, 0, 0, 2057, 2029, 1, 0, 0, 0, 2057, 2030, 1, 0, 0, 0, 2057, 2031, 1, 0, 0, 0, 2057, 2032, 1, 0, 0, 0, 2057, 2033, 1, 0, 0, 0, 2057, 2034, 1, 0, 0, 0, 2057, 2035, 1, 0, 0, 0, 2057, 2036, 1, 0, 0, 0, 2057, 2037, 1, 0, 0, 0, 2057, 2039, 1, 0, 0, 0, 2057, 2041, 1, 0, 0, 0, 2057, 2042, 1, 0, 0, 0, 2057, 2043, 1, 0, 0, 0, 2057, 2044, 1, 0, 0, 0, 2057, 2045, 1, 0, 0, 0, 2057, 2046, 1, 0, 0, 0, 2057, 2047, 1, 0, 0, 0, 2057, 2048, 1, 0, 0, 0, 2057, 2049, 1, 0, 0, 0, 2057, 2050, 1, 0, 0, 0, 2057, 2051, 1, 0, 0, 0, 2057, 2052, 1, 0, 0, 0, 2057, 2053, 1, 0, 0, 0, 2057, 2055, 1, 0, 0, 0, 2058, 379, 1, 0, 0, 0, 2059, 2060, 7, 22, 0, 0, 2060, 381, 1, 0, 0, 0, 291, 383, 390, 399, 403, 412, 415, 419, 427, 434, 437, 442, 447, 453, 461, 463, 472, 476, 480, 483, 487, 490, 497, 501, 504, 507, 510, 516, 520, 524, 538, 542, 548, 555, 561, 565, 569, 571, 579, 584, 597, 604, 616, 626, 631, 635, 642, 645, 653, 657, 660, 667, 674, 678, 683, 687, 690, 695, 710, 717, 725, 733, 742, 749, 756, 764, 772, 780, 788, 796, 804, 813, 821, 830, 838, 846, 848, 851, 857, 863, 869, 876, 885, 893, 897, 904, 906, 926, 930, 936, 941, 945, 948, 955, 962, 966, 975, 986, 996, 1001, 1008, 1011, 1016, 1021, 1042, 1047, 1050, 1061, 1067, 1072, 1075, 1080, 1083, 1090, 1113, 1119, 1125, 1131, 1134, 1140, 1144, 1148, 1151, 1159, 1161, 1167, 1170, 1173, 1176, 1180, 1184, 1190, 1200, 1206, 1212, 1217, 1222, 1226, 1239, 1245, 1249, 1255, 1260, 1275, 1279, 1284, 1289, 1294, 1300, 1303, 1312, 1316, 1321, 1325, 1331, 1338, 1355, 1357, 1364, 1369, 1376, 1380, 1384, 1392, 1398, 1404, 1408, 1410, 1414, 1419, 1423, 1426, 1429, 1432, 1437, 1441, 1444, 1448, 1451, 1453, 1458, 1465, 1471, 1475, 1481, 1486, 1491, 1498, 1503, 1507, 1509, 1511, 1517, 1526, 1530, 1532, 1534, 1539, 1542, 1549, 1553, 1558, 1560, 1564, 1567, 1570, 1574, 1579, 1586, 1593, 1598, 1602, 1606, 1611, 1615, 1621, 1623, 1629, 1634, 1640, 1644, 1646, 1649, 1653, 1657, 1659, 1661, 1664, 1676, 1678, 1681, 1684, 1687, 1696, 1703, 1715, 1719, 1722, 1726, 1731, 1743, 1748, 1752, 1756, 1761, 1766, 1770, 1773, 1777, 1788, 1792, 1799, 1804, 1808, 1814, 1818, 1822, 1831, 1844, 1849, 1856, 1860, 1863, 1866, 1869, 1873, 1878, 1885, 1889, 1893, 1899, 1904, 1908, 1914, 1920, 1923, 1926, 1942, 1950, 1959, 1964, 1967, 1971, 1975, 1980, 1986, 1991, 1995, 2004, 2009, 2014, 2057] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.py b/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.py index d3380e61..55690aca 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.py @@ -1,4 +1,4 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\cpp\CPP14.g4 by ANTLR 4.8 +# Generated from CPP14Parser.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,1386 +8,882 @@ else: from typing.io import TextIO +if "." in __name__: + from .CPP14ParserBase import CPP14ParserBase +else: + from CPP14ParserBase import CPP14ParserBase def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0098") - buf.write("\u09b1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") - buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") - buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") - buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") - buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") - buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") - buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") - buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") - buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") - buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") - buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") - buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4") - buf.write("_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4") - buf.write("h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4") - buf.write("q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4") - buf.write("z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080") - buf.write("\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084") - buf.write("\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087") - buf.write("\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b") - buf.write("\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e\t\u008e") - buf.write("\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092") - buf.write("\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095") - buf.write("\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099") - buf.write("\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c") - buf.write("\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0") - buf.write("\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3") - buf.write("\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7") - buf.write("\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa\t\u00aa") - buf.write("\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad\4\u00ae") - buf.write("\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1") - buf.write("\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5") - buf.write("\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8\t\u00b8") - buf.write("\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb\t\u00bb\4\u00bc") - buf.write("\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf") - buf.write("\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3") - buf.write("\t\u00c3\4\u00c4\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6") - buf.write("\4\u00c7\t\u00c7\4\u00c8\t\u00c8\4\u00c9\t\u00c9\4\u00ca") - buf.write("\t\u00ca\4\u00cb\t\u00cb\3\2\5\2\u0198\n\2\3\2\3\2\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\5\3\u01a4\n\3\3\4\3\4\5\4") - buf.write("\u01a8\n\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u01b3") - buf.write("\n\5\3\6\3\6\5\6\u01b7\n\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7") - buf.write("\3\7\3\7\3\7\3\7\3\7\3\7\5\7\u01c6\n\7\3\7\3\7\3\7\3\7") - buf.write("\3\7\5\7\u01cd\n\7\3\7\3\7\3\7\7\7\u01d2\n\7\f\7\16\7") - buf.write("\u01d5\13\7\3\b\3\b\5\b\u01d9\n\b\3\b\3\b\3\t\3\t\5\t") - buf.write("\u01df\n\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u01e9\n") - buf.write("\n\3\13\3\13\3\f\3\f\3\f\5\f\u01f0\n\f\3\f\3\f\3\f\3\f") - buf.write("\5\f\u01f6\n\f\7\f\u01f8\n\f\f\f\16\f\u01fb\13\f\3\r\3") - buf.write("\r\5\r\u01ff\n\r\3\16\3\16\3\16\3\16\5\16\u0205\n\16\3") - buf.write("\17\3\17\3\17\3\17\3\17\5\17\u020c\n\17\3\20\3\20\3\20") - buf.write("\3\20\5\20\u0212\n\20\3\20\5\20\u0215\n\20\3\20\5\20\u0218") - buf.write("\n\20\3\20\5\20\u021b\n\20\3\21\3\21\3\21\3\21\3\21\5") - buf.write("\21\u0222\n\21\3\21\3\21\3\21\3\21\3\21\5\21\u0229\n\21") - buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") - buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") - buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") - buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") - buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u025d\n\21\3\21\3") - buf.write("\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") - buf.write("\3\21\5\21\u026c\n\21\3\21\3\21\3\21\3\21\5\21\u0272\n") - buf.write("\21\3\21\3\21\3\21\3\21\5\21\u0278\n\21\3\21\3\21\3\21") - buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\7\21\u0285\n") - buf.write("\21\f\21\16\21\u0288\13\21\3\22\3\22\3\23\3\23\3\24\3") - buf.write("\24\3\25\5\25\u0291\n\25\3\25\3\25\3\25\3\25\3\25\3\25") - buf.write("\3\25\3\25\3\25\3\25\3\25\3\25\3\25\5\25\u02a0\n\25\3") - buf.write("\25\3\25\3\25\3\25\5\25\u02a6\n\25\3\26\3\26\3\26\3\26") - buf.write("\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26") - buf.write("\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26") - buf.write("\3\26\3\26\5\26\u02c4\n\26\3\27\3\27\3\30\5\30\u02c9\n") - buf.write("\30\3\30\3\30\5\30\u02cd\n\30\3\30\3\30\5\30\u02d1\n\30") - buf.write("\3\30\5\30\u02d4\n\30\3\30\3\30\5\30\u02d8\n\30\3\30\3") - buf.write("\30\3\30\3\30\5\30\u02de\n\30\5\30\u02e0\n\30\3\31\3\31") - buf.write("\3\31\3\31\3\32\3\32\5\32\u02e8\n\32\3\33\3\33\5\33\u02ec") - buf.write("\n\33\3\33\5\33\u02ef\n\33\3\34\3\34\3\34\3\34\3\34\5") - buf.write("\34\u02f6\n\34\3\34\3\34\3\34\3\34\3\34\5\34\u02fd\n\34") - buf.write("\7\34\u02ff\n\34\f\34\16\34\u0302\13\34\3\35\3\35\5\35") - buf.write("\u0306\n\35\3\35\3\35\5\35\u030a\n\35\3\36\5\36\u030d") - buf.write("\n\36\3\36\3\36\3\36\5\36\u0312\n\36\3\36\3\36\3\36\3") - buf.write("\36\5\36\u0318\n\36\3\37\3\37\3\37\3\37\3\37\3 \3 \3 ") - buf.write("\3 \3 \3 \5 \u0325\n \3!\3!\3!\3!\3!\3!\3!\3!\3!\7!\u0330") - buf.write("\n!\f!\16!\u0333\13!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3") - buf.write("\"\3\"\3\"\3\"\7\"\u0341\n\"\f\"\16\"\u0344\13\"\3#\3") - buf.write("#\3#\3#\3#\3#\3#\3#\3#\7#\u034f\n#\f#\16#\u0352\13#\3") - buf.write("$\3$\3$\3$\3$\3$\3$\7$\u035b\n$\f$\16$\u035e\13$\3%\3") - buf.write("%\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\7&\u0371") - buf.write("\n&\f&\16&\u0374\13&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3") - buf.write("\'\7\'\u037f\n\'\f\'\16\'\u0382\13\'\3(\3(\3(\3(\3(\3") - buf.write("(\7(\u038a\n(\f(\16(\u038d\13(\3)\3)\3)\3)\3)\3)\7)\u0395") - buf.write("\n)\f)\16)\u0398\13)\3*\3*\3*\3*\3*\3*\7*\u03a0\n*\f*") - buf.write("\16*\u03a3\13*\3+\3+\3+\3+\3+\3+\3+\3+\3+\7+\u03ae\n+") - buf.write("\f+\16+\u03b1\13+\3,\3,\3,\3,\3,\3,\3,\3,\3,\7,\u03bc") - buf.write("\n,\f,\16,\u03bf\13,\3-\3-\3-\3-\3-\3-\3-\5-\u03c8\n-") - buf.write("\3.\3.\3.\3.\3.\3.\5.\u03d0\n.\3/\3/\3\60\3\60\3\60\3") - buf.write("\60\3\60\3\60\7\60\u03da\n\60\f\60\16\60\u03dd\13\60\3") - buf.write("\61\3\61\3\62\3\62\5\62\u03e3\n\62\3\62\3\62\5\62\u03e7") - buf.write("\n\62\3\62\3\62\5\62\u03eb\n\62\3\62\3\62\5\62\u03ef\n") - buf.write("\62\3\62\3\62\5\62\u03f3\n\62\3\62\3\62\3\62\5\62\u03f8") - buf.write("\n\62\3\62\5\62\u03fb\n\62\3\63\5\63\u03fe\n\63\3\63\3") - buf.write("\63\3\63\3\63\5\63\u0404\n\63\3\63\3\63\3\63\3\63\3\63") - buf.write("\3\63\5\63\u040c\n\63\3\63\3\63\3\63\5\63\u0411\n\63\3") - buf.write("\64\5\64\u0414\n\64\3\64\3\64\3\65\3\65\5\65\u041a\n\65") - buf.write("\3\65\3\65\3\66\3\66\3\66\3\66\3\66\7\66\u0423\n\66\f") - buf.write("\66\16\66\u0426\13\66\3\67\3\67\3\67\3\67\3\67\3\67\3") - buf.write("\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67") - buf.write("\3\67\3\67\3\67\5\67\u043c\n\67\38\38\58\u0440\n8\38\3") - buf.write("8\38\38\38\38\58\u0448\n8\38\38\38\38\58\u044e\n8\39\3") - buf.write("9\39\39\39\39\39\39\39\39\39\39\39\39\39\39\39\39\59\u0462") - buf.write("\n9\39\39\59\u0466\n9\39\39\39\39\39\39\39\39\39\39\3") - buf.write("9\59\u0473\n9\3:\3:\5:\u0477\n:\3;\5;\u047a\n;\3;\3;\3") - buf.write(";\3<\3<\5<\u0481\n<\3=\3=\3=\3=\3=\3=\5=\u0489\n=\3=\3") - buf.write("=\3=\3=\3=\3=\3=\3=\5=\u0493\n=\3>\3>\3?\3?\3?\3?\3?\7") - buf.write("?\u049c\n?\f?\16?\u049f\13?\3@\3@\3@\3@\3@\3@\3@\3@\3") - buf.write("@\5@\u04aa\n@\3A\3A\3A\3A\3A\3A\3A\3A\5A\u04b4\nA\3B\3") - buf.write("B\3B\5B\u04b9\nB\3B\3B\3B\3B\3C\5C\u04c0\nC\3C\5C\u04c3") - buf.write("\nC\3C\3C\3C\5C\u04c8\nC\3C\3C\3C\5C\u04cd\nC\3D\3D\3") - buf.write("D\3D\3D\3D\3D\3D\3E\3E\3F\3F\3F\3G\3G\3G\3G\3G\3G\5G\u04e2") - buf.write("\nG\3H\3H\5H\u04e6\nH\3H\3H\3H\5H\u04eb\nH\3I\3I\3J\3") - buf.write("J\3K\3K\3L\3L\3L\5L\u04f6\nL\3M\3M\3M\3M\5M\u04fc\nM\3") - buf.write("N\3N\5N\u0500\nN\3N\3N\3N\5N\u0505\nN\3O\3O\5O\u0509\n") - buf.write("O\3O\3O\3O\5O\u050e\nO\3P\5P\u0511\nP\3P\3P\3P\3P\3P\3") - buf.write("P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\5P\u0527\n") - buf.write("P\3Q\3Q\3Q\3Q\5Q\u052d\nQ\3R\3R\3R\3R\3R\3R\3R\3R\3R\5") - buf.write("R\u0538\nR\3S\3S\5S\u053c\nS\3S\5S\u053f\nS\3S\3S\3S\3") - buf.write("S\3S\3S\3S\3S\5S\u0549\nS\3S\3S\3S\3S\5S\u054f\nS\3S\5") - buf.write("S\u0552\nS\3T\3T\3U\3U\3U\5U\u0559\nU\3U\3U\3U\3U\3U\3") - buf.write("U\3U\3U\5U\u0563\nU\3V\3V\5V\u0567\nV\3V\5V\u056a\nV\3") - buf.write("V\5V\u056d\nV\3V\3V\5V\u0571\nV\3V\3V\3V\5V\u0576\nV\5") - buf.write("V\u0578\nV\3W\3W\5W\u057c\nW\3W\3W\5W\u0580\nW\3W\3W\3") - buf.write("X\3X\3X\3X\3X\5X\u0589\nX\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3Z\7") - buf.write("Z\u0594\nZ\fZ\16Z\u0597\13Z\3[\3[\3[\3[\3[\5[\u059e\n") - buf.write("[\3\\\3\\\3]\3]\5]\u05a4\n]\3^\3^\3_\3_\5_\u05aa\n_\3") - buf.write("`\3`\5`\u05ae\n`\3a\5a\u05b1\na\3a\3a\3a\3a\3a\3a\3b\5") - buf.write("b\u05ba\nb\3b\3b\3b\3b\3b\3b\3c\5c\u05c3\nc\3c\3c\3c\3") - buf.write("c\3c\3d\5d\u05cb\nd\3e\3e\3f\3f\3f\3f\3f\3f\3g\5g\u05d6") - buf.write("\ng\3g\3g\3h\3h\5h\u05dc\nh\3h\3h\3h\3h\3h\3h\3h\3h\3") - buf.write("h\5h\u05e7\nh\3i\5i\u05ea\ni\3i\3i\3i\5i\u05ef\ni\3i\3") - buf.write("i\3i\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\5k\u05fe\nk\3k\3k\3") - buf.write("k\3k\5k\u0604\nk\3l\3l\3l\3l\3l\7l\u060b\nl\fl\16l\u060e") - buf.write("\13l\3m\3m\3m\3m\3m\3m\3m\5m\u0617\nm\3n\3n\3n\3n\5n\u061d") - buf.write("\nn\3n\3n\3n\3n\3n\3n\5n\u0625\nn\3n\3n\5n\u0629\nn\3") - buf.write("o\3o\5o\u062d\no\3o\3o\3o\5o\u0632\no\3o\3o\3o\5o\u0637") - buf.write("\no\3o\3o\3o\3o\3o\7o\u063e\no\fo\16o\u0641\13o\3p\3p") - buf.write("\5p\u0645\np\3q\3q\5q\u0649\nq\3r\3r\3r\3r\3s\3s\3t\3") - buf.write("t\3t\3t\3u\3u\5u\u0657\nu\3u\3u\7u\u065b\nu\fu\16u\u065e") - buf.write("\13u\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\6v\u066d\n") - buf.write("v\rv\16v\u066e\5v\u0671\nv\3w\3w\3w\3w\3w\3w\7w\u0679") - buf.write("\nw\fw\16w\u067c\13w\3x\3x\5x\u0680\nx\3y\3y\3y\3y\3y") - buf.write("\5y\u0687\ny\3z\3z\3z\3z\5z\u068d\nz\3{\3{\3{\5{\u0692") - buf.write("\n{\3{\3{\3{\3{\5{\u0698\n{\3{\3{\3{\3{\3{\5{\u069f\n") - buf.write("{\3{\3{\5{\u06a3\n{\7{\u06a5\n{\f{\16{\u06a8\13{\3|\3") - buf.write("|\3|\3|\5|\u06ae\n|\3|\5|\u06b1\n|\3|\5|\u06b4\n|\3|\5") - buf.write("|\u06b7\n|\3}\3}\3}\5}\u06bc\n}\3~\3~\5~\u06c0\n~\3~\5") - buf.write("~\u06c3\n~\3~\3~\5~\u06c7\n~\3~\3~\5~\u06cb\n~\3~\3~\3") - buf.write("~\5~\u06d0\n~\3~\5~\u06d3\n~\5~\u06d5\n~\3\177\3\177\5") - buf.write("\177\u06d9\n\177\3\u0080\3\u0080\3\u0081\3\u0081\3\u0082") - buf.write("\5\u0082\u06e0\n\u0082\3\u0082\3\u0082\3\u0083\3\u0083") - buf.write("\5\u0083\u06e6\n\u0083\3\u0084\3\u0084\5\u0084\u06ea\n") - buf.write("\u0084\3\u0084\3\u0084\3\u0084\3\u0084\5\u0084\u06f0\n") - buf.write("\u0084\3\u0085\3\u0085\3\u0085\5\u0085\u06f5\n\u0085\5") - buf.write("\u0085\u06f7\n\u0085\3\u0086\3\u0086\3\u0086\3\u0086\5") - buf.write("\u0086\u06fd\n\u0086\3\u0086\3\u0086\5\u0086\u0701\n\u0086") - buf.write("\3\u0086\3\u0086\3\u0086\3\u0086\5\u0086\u0707\n\u0086") - buf.write("\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\5\u0086\u070e") - buf.write("\n\u0086\3\u0086\3\u0086\5\u0086\u0712\n\u0086\7\u0086") - buf.write("\u0714\n\u0086\f\u0086\16\u0086\u0717\13\u0086\3\u0087") - buf.write("\3\u0087\3\u0087\3\u0087\5\u0087\u071d\n\u0087\3\u0088") - buf.write("\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088") - buf.write("\5\u0088\u0727\n\u0088\3\u0088\3\u0088\5\u0088\u072b\n") - buf.write("\u0088\7\u0088\u072d\n\u0088\f\u0088\16\u0088\u0730\13") - buf.write("\u0088\3\u0089\5\u0089\u0733\n\u0089\3\u0089\5\u0089\u0736") - buf.write("\n\u0089\3\u0089\3\u0089\3\u0089\3\u0089\5\u0089\u073c") - buf.write("\n\u0089\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a") - buf.write("\7\u008a\u0744\n\u008a\f\u008a\16\u008a\u0747\13\u008a") - buf.write("\3\u008b\5\u008b\u074a\n\u008b\3\u008b\3\u008b\3\u008b") - buf.write("\3\u008b\5\u008b\u0750\n\u008b\3\u008b\3\u008b\3\u008b") - buf.write("\3\u008b\3\u008b\3\u008b\5\u008b\u0758\n\u008b\3\u008b") - buf.write("\3\u008b\5\u008b\u075c\n\u008b\3\u008b\5\u008b\u075f\n") - buf.write("\u008b\3\u008b\3\u008b\5\u008b\u0763\n\u008b\3\u008b\3") - buf.write("\u008b\3\u008b\5\u008b\u0768\n\u008b\3\u008c\5\u008c\u076b") - buf.write("\n\u008c\3\u008c\5\u008c\u076e\n\u008c\3\u008c\3\u008c") - buf.write("\5\u008c\u0772\n\u008c\3\u008c\3\u008c\3\u008d\5\u008d") - buf.write("\u0777\n\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008d\5\u008d\u0781\n\u008d\3\u008e") - buf.write("\3\u008e\3\u008e\3\u008e\3\u008e\5\u008e\u0788\n\u008e") - buf.write("\3\u008f\3\u008f\3\u008f\5\u008f\u078d\n\u008f\3\u0090") - buf.write("\3\u0090\5\u0090\u0791\n\u0090\3\u0091\3\u0091\3\u0091") - buf.write("\5\u0091\u0796\n\u0091\3\u0091\3\u0091\3\u0091\3\u0091") - buf.write("\5\u0091\u079c\n\u0091\7\u0091\u079e\n\u0091\f\u0091\16") - buf.write("\u0091\u07a1\13\u0091\3\u0092\3\u0092\3\u0092\5\u0092") - buf.write("\u07a6\n\u0092\3\u0092\3\u0092\3\u0092\3\u0092\5\u0092") - buf.write("\u07ac\n\u0092\3\u0093\3\u0093\5\u0093\u07b0\n\u0093\3") - buf.write("\u0094\3\u0094\3\u0094\5\u0094\u07b5\n\u0094\3\u0094\3") - buf.write("\u0094\3\u0095\3\u0095\5\u0095\u07bb\n\u0095\3\u0095\3") - buf.write("\u0095\5\u0095\u07bf\n\u0095\3\u0095\5\u0095\u07c2\n\u0095") - buf.write("\3\u0095\3\u0095\5\u0095\u07c6\n\u0095\3\u0095\5\u0095") - buf.write("\u07c9\n\u0095\5\u0095\u07cb\n\u0095\3\u0096\5\u0096\u07ce") - buf.write("\n\u0096\3\u0096\3\u0096\3\u0097\3\u0097\3\u0098\3\u0098") - buf.write("\3\u0099\3\u0099\5\u0099\u07d8\n\u0099\3\u0099\3\u0099") - buf.write("\3\u0099\5\u0099\u07dd\n\u0099\5\u0099\u07df\n\u0099\3") - buf.write("\u009a\5\u009a\u07e2\n\u009a\3\u009a\5\u009a\u07e5\n\u009a") - buf.write("\3\u009a\5\u009a\u07e8\n\u009a\3\u009a\3\u009a\3\u009a") - buf.write("\3\u009a\3\u009a\3\u009a\3\u009a\5\u009a\u07f1\n\u009a") - buf.write("\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\7\u009b") - buf.write("\u07f9\n\u009b\f\u009b\16\u009b\u07fc\13\u009b\3\u009c") - buf.write("\3\u009c\5\u009c\u0800\n\u009c\3\u009c\5\u009c\u0803\n") - buf.write("\u009c\3\u009c\3\u009c\5\u009c\u0807\n\u009c\3\u009c\5") - buf.write("\u009c\u080a\n\u009c\3\u009c\5\u009c\u080d\n\u009c\3\u009c") - buf.write("\3\u009c\5\u009c\u0811\n\u009c\3\u009d\3\u009d\3\u009d") - buf.write("\3\u009d\3\u009d\7\u009d\u0818\n\u009d\f\u009d\16\u009d") - buf.write("\u081b\13\u009d\3\u009e\3\u009e\3\u009f\3\u009f\3\u009f") - buf.write("\3\u009f\3\u00a0\3\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a1") - buf.write("\5\u00a1\u0829\n\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1") - buf.write("\5\u00a1\u082f\n\u00a1\7\u00a1\u0831\n\u00a1\f\u00a1\16") - buf.write("\u00a1\u0834\13\u00a1\3\u00a2\5\u00a2\u0837\n\u00a2\3") - buf.write("\u00a2\3\u00a2\5\u00a2\u083b\n\u00a2\3\u00a2\3\u00a2\5") - buf.write("\u00a2\u083f\n\u00a2\3\u00a2\3\u00a2\5\u00a2\u0843\n\u00a2") - buf.write("\3\u00a2\3\u00a2\5\u00a2\u0847\n\u00a2\3\u00a2\3\u00a2") - buf.write("\5\u00a2\u084b\n\u00a2\3\u00a3\5\u00a3\u084e\n\u00a3\3") - buf.write("\u00a3\3\u00a3\5\u00a3\u0852\n\u00a3\3\u00a4\3\u00a4\3") - buf.write("\u00a5\3\u00a5\3\u00a6\3\u00a6\3\u00a6\3\u00a7\3\u00a7") - buf.write("\5\u00a7\u085d\n\u00a7\3\u00a8\3\u00a8\5\u00a8\u0861\n") - buf.write("\u00a8\3\u00a9\3\u00a9\3\u00a9\3\u00aa\3\u00aa\5\u00aa") - buf.write("\u0868\n\u00aa\3\u00aa\3\u00aa\5\u00aa\u086c\n\u00aa\3") - buf.write("\u00aa\3\u00aa\3\u00aa\5\u00aa\u0871\n\u00aa\3\u00ab\3") - buf.write("\u00ab\3\u00ab\5\u00ab\u0876\n\u00ab\3\u00ab\3\u00ab\3") - buf.write("\u00ab\3\u00ab\3\u00ab\5\u00ab\u087d\n\u00ab\3\u00ac\3") - buf.write("\u00ac\5\u00ac\u0881\n\u00ac\3\u00ad\3\u00ad\3\u00ad\3") - buf.write("\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\5\u00ae\u088b\n") - buf.write("\u00ae\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af") - buf.write("\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b0\7\u00b0") - buf.write("\u0899\n\u00b0\f\u00b0\16\u00b0\u089c\13\u00b0\3\u00b1") - buf.write("\3\u00b1\5\u00b1\u08a0\n\u00b1\3\u00b2\3\u00b2\5\u00b2") - buf.write("\u08a4\n\u00b2\3\u00b2\5\u00b2\u08a7\n\u00b2\3\u00b2\3") - buf.write("\u00b2\5\u00b2\u08ab\n\u00b2\3\u00b2\3\u00b2\3\u00b2\3") - buf.write("\u00b2\5\u00b2\u08b1\n\u00b2\3\u00b2\5\u00b2\u08b4\n\u00b2") - buf.write("\3\u00b2\3\u00b2\5\u00b2\u08b8\n\u00b2\3\u00b2\3\u00b2") - buf.write("\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\5\u00b2") - buf.write("\u08c2\n\u00b2\3\u00b2\5\u00b2\u08c5\n\u00b2\3\u00b2\3") - buf.write("\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\5\u00b2\u08cd\n") - buf.write("\u00b2\3\u00b2\3\u00b2\3\u00b2\5\u00b2\u08d2\n\u00b2\3") - buf.write("\u00b3\3\u00b3\3\u00b3\5\u00b3\u08d7\n\u00b3\3\u00b3\3") - buf.write("\u00b3\3\u00b4\3\u00b4\3\u00b4\3\u00b4\5\u00b4\u08df\n") - buf.write("\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\5\u00b4") - buf.write("\u08e6\n\u00b4\3\u00b4\3\u00b4\5\u00b4\u08ea\n\u00b4\3") - buf.write("\u00b5\3\u00b5\3\u00b6\3\u00b6\3\u00b6\5\u00b6\u08f1\n") - buf.write("\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\5\u00b6\u08f7\n") - buf.write("\u00b6\7\u00b6\u08f9\n\u00b6\f\u00b6\16\u00b6\u08fc\13") - buf.write("\u00b6\3\u00b7\3\u00b7\3\u00b7\5\u00b7\u0901\n\u00b7\3") - buf.write("\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\5\u00b8\u090a\n\u00b8\3\u00b8\3\u00b8\5\u00b8\u090e\n") - buf.write("\u00b8\3\u00b9\5\u00b9\u0911\n\u00b9\3\u00b9\3\u00b9\3") - buf.write("\u00b9\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00bb") - buf.write("\3\u00bb\3\u00bb\3\u00bb\3\u00bc\3\u00bc\5\u00bc\u0921") - buf.write("\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bd\3\u00bd\5\u00bd") - buf.write("\u0928\n\u00bd\3\u00be\3\u00be\3\u00be\3\u00be\3\u00be") - buf.write("\3\u00be\3\u00bf\5\u00bf\u0931\n\u00bf\3\u00bf\3\u00bf") - buf.write("\3\u00bf\3\u00bf\5\u00bf\u0937\n\u00bf\3\u00bf\3\u00bf") - buf.write("\5\u00bf\u093b\n\u00bf\3\u00bf\5\u00bf\u093e\n\u00bf\3") - buf.write("\u00c0\3\u00c0\5\u00c0\u0942\n\u00c0\3\u00c1\3\u00c1\5") - buf.write("\u00c1\u0946\n\u00c1\3\u00c2\3\u00c2\3\u00c2\5\u00c2\u094b") - buf.write("\n\u00c2\3\u00c2\3\u00c2\3\u00c3\3\u00c3\3\u00c3\5\u00c3") - buf.write("\u0952\n\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\5\u00c3") - buf.write("\u0958\n\u00c3\7\u00c3\u095a\n\u00c3\f\u00c3\16\u00c3") - buf.write("\u095d\13\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4") - buf.write("\3\u00c4\5\u00c4\u0965\n\u00c4\3\u00c5\3\u00c5\3\u00c6") - buf.write("\3\u00c6\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7") - buf.write("\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7") - buf.write("\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7") - buf.write("\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7") - buf.write("\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7") - buf.write("\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7") - buf.write("\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7") - buf.write("\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u099e\n\u00c7\3\u00c8") - buf.write("\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8") - buf.write("\u09a7\n\u00c8\3\u00c9\3\u00c9\5\u00c9\u09ab\n\u00c9\3") - buf.write("\u00ca\3\u00ca\3\u00cb\3\u00cb\3\u00cb\2$\f\26 \66@BD") - buf.write("FJLNPRTV^j|\u00b2\u00d6\u00dc\u00e8\u00ec\u00f4\u010a") - buf.write("\u010e\u0112\u0120\u0134\u0138\u0140\u015e\u016a\u0184") - buf.write("\u00cc\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,") - buf.write(".\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080") - buf.write("\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092") - buf.write("\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4") - buf.write("\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6") - buf.write("\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8") - buf.write("\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da") - buf.write("\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec") - buf.write("\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe") - buf.write("\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110") - buf.write("\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122") - buf.write("\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134") - buf.write("\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146") - buf.write("\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158") - buf.write("\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a") - buf.write("\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a\u017c") - buf.write("\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e") - buf.write("\u0190\u0192\u0194\2\17\4\2bbff\5\2\3\4\\^bd\3\2qr\5\2") - buf.write("ffipst\7\2\'\'\61\61;;AAHH\5\2%%..QQ\3\2V[\4\2\31\31S") - buf.write("S\4\2\5\5bb\5\2\30\30DDNN\4\2((\67\67\3\28:\3\2\u0091") - buf.write("\u0094\2\u0acc\2\u0197\3\2\2\2\4\u01a3\3\2\2\2\6\u01a7") - buf.write("\3\2\2\2\b\u01b2\3\2\2\2\n\u01b4\3\2\2\2\f\u01c5\3\2\2") - buf.write("\2\16\u01d6\3\2\2\2\20\u01dc\3\2\2\2\22\u01e8\3\2\2\2") - buf.write("\24\u01ea\3\2\2\2\26\u01ec\3\2\2\2\30\u01fe\3\2\2\2\32") - buf.write("\u0204\3\2\2\2\34\u020b\3\2\2\2\36\u020d\3\2\2\2 \u025c") - buf.write("\3\2\2\2\"\u0289\3\2\2\2$\u028b\3\2\2\2&\u028d\3\2\2\2") - buf.write("(\u02a5\3\2\2\2*\u02c3\3\2\2\2,\u02c5\3\2\2\2.\u02df\3") - buf.write("\2\2\2\60\u02e1\3\2\2\2\62\u02e5\3\2\2\2\64\u02ee\3\2") - buf.write("\2\2\66\u02f0\3\2\2\28\u0309\3\2\2\2:\u0317\3\2\2\2<\u0319") - buf.write("\3\2\2\2>\u0324\3\2\2\2@\u0326\3\2\2\2B\u0334\3\2\2\2") - buf.write("D\u0345\3\2\2\2F\u0353\3\2\2\2H\u035f\3\2\2\2J\u0361\3") - buf.write("\2\2\2L\u0375\3\2\2\2N\u0383\3\2\2\2P\u038e\3\2\2\2R\u0399") - buf.write("\3\2\2\2T\u03a4\3\2\2\2V\u03b2\3\2\2\2X\u03c7\3\2\2\2") - buf.write("Z\u03cf\3\2\2\2\\\u03d1\3\2\2\2^\u03d3\3\2\2\2`\u03de") - buf.write("\3\2\2\2b\u03fa\3\2\2\2d\u0410\3\2\2\2f\u0413\3\2\2\2") - buf.write("h\u0417\3\2\2\2j\u041d\3\2\2\2l\u043b\3\2\2\2n\u044d\3") - buf.write("\2\2\2p\u0472\3\2\2\2r\u0476\3\2\2\2t\u0479\3\2\2\2v\u0480") - buf.write("\3\2\2\2x\u0492\3\2\2\2z\u0494\3\2\2\2|\u0496\3\2\2\2") - buf.write("~\u04a9\3\2\2\2\u0080\u04b3\3\2\2\2\u0082\u04b5\3\2\2") - buf.write("\2\u0084\u04cc\3\2\2\2\u0086\u04ce\3\2\2\2\u0088\u04d6") - buf.write("\3\2\2\2\u008a\u04d8\3\2\2\2\u008c\u04e1\3\2\2\2\u008e") - buf.write("\u04ea\3\2\2\2\u0090\u04ec\3\2\2\2\u0092\u04ee\3\2\2\2") - buf.write("\u0094\u04f0\3\2\2\2\u0096\u04f5\3\2\2\2\u0098\u04fb\3") - buf.write("\2\2\2\u009a\u0504\3\2\2\2\u009c\u050d\3\2\2\2\u009e\u0526") - buf.write("\3\2\2\2\u00a0\u052c\3\2\2\2\u00a2\u0537\3\2\2\2\u00a4") - buf.write("\u0551\3\2\2\2\u00a6\u0553\3\2\2\2\u00a8\u0562\3\2\2\2") - buf.write("\u00aa\u0577\3\2\2\2\u00ac\u0579\3\2\2\2\u00ae\u0588\3") - buf.write("\2\2\2\u00b0\u058a\3\2\2\2\u00b2\u058d\3\2\2\2\u00b4\u059d") - buf.write("\3\2\2\2\u00b6\u059f\3\2\2\2\u00b8\u05a3\3\2\2\2\u00ba") - buf.write("\u05a5\3\2\2\2\u00bc\u05a9\3\2\2\2\u00be\u05ad\3\2\2\2") - buf.write("\u00c0\u05b0\3\2\2\2\u00c2\u05b9\3\2\2\2\u00c4\u05c2\3") - buf.write("\2\2\2\u00c6\u05ca\3\2\2\2\u00c8\u05cc\3\2\2\2\u00ca\u05ce") - buf.write("\3\2\2\2\u00cc\u05d5\3\2\2\2\u00ce\u05e6\3\2\2\2\u00d0") - buf.write("\u05e9\3\2\2\2\u00d2\u05f3\3\2\2\2\u00d4\u0603\3\2\2\2") - buf.write("\u00d6\u0605\3\2\2\2\u00d8\u0616\3\2\2\2\u00da\u0628\3") - buf.write("\2\2\2\u00dc\u0631\3\2\2\2\u00de\u0642\3\2\2\2\u00e0\u0648") - buf.write("\3\2\2\2\u00e2\u064a\3\2\2\2\u00e4\u064e\3\2\2\2\u00e6") - buf.write("\u0650\3\2\2\2\u00e8\u0654\3\2\2\2\u00ea\u0670\3\2\2\2") - buf.write("\u00ec\u0672\3\2\2\2\u00ee\u067d\3\2\2\2\u00f0\u0686\3") - buf.write("\2\2\2\u00f2\u068c\3\2\2\2\u00f4\u0697\3\2\2\2\u00f6\u06a9") - buf.write("\3\2\2\2\u00f8\u06b8\3\2\2\2\u00fa\u06d4\3\2\2\2\u00fc") - buf.write("\u06d6\3\2\2\2\u00fe\u06da\3\2\2\2\u0100\u06dc\3\2\2\2") - buf.write("\u0102\u06df\3\2\2\2\u0104\u06e3\3\2\2\2\u0106\u06ef\3") - buf.write("\2\2\2\u0108\u06f6\3\2\2\2\u010a\u0706\3\2\2\2\u010c\u071c") - buf.write("\3\2\2\2\u010e\u071e\3\2\2\2\u0110\u073b\3\2\2\2\u0112") - buf.write("\u073d\3\2\2\2\u0114\u0767\3\2\2\2\u0116\u076a\3\2\2\2") - buf.write("\u0118\u0780\3\2\2\2\u011a\u0787\3\2\2\2\u011c\u078c\3") - buf.write("\2\2\2\u011e\u0790\3\2\2\2\u0120\u0792\3\2\2\2\u0122\u07ab") - buf.write("\3\2\2\2\u0124\u07af\3\2\2\2\u0126\u07b1\3\2\2\2\u0128") - buf.write("\u07ca\3\2\2\2\u012a\u07cd\3\2\2\2\u012c\u07d1\3\2\2\2") - buf.write("\u012e\u07d3\3\2\2\2\u0130\u07de\3\2\2\2\u0132\u07f0\3") - buf.write("\2\2\2\u0134\u07f2\3\2\2\2\u0136\u0810\3\2\2\2\u0138\u0812") - buf.write("\3\2\2\2\u013a\u081c\3\2\2\2\u013c\u081e\3\2\2\2\u013e") - buf.write("\u0822\3\2\2\2\u0140\u0825\3\2\2\2\u0142\u084a\3\2\2\2") - buf.write("\u0144\u0851\3\2\2\2\u0146\u0853\3\2\2\2\u0148\u0855\3") - buf.write("\2\2\2\u014a\u0857\3\2\2\2\u014c\u085a\3\2\2\2\u014e\u085e") - buf.write("\3\2\2\2\u0150\u0862\3\2\2\2\u0152\u0870\3\2\2\2\u0154") - buf.write("\u087c\3\2\2\2\u0156\u0880\3\2\2\2\u0158\u0882\3\2\2\2") - buf.write("\u015a\u088a\3\2\2\2\u015c\u088c\3\2\2\2\u015e\u0892\3") - buf.write("\2\2\2\u0160\u089f\3\2\2\2\u0162\u08d1\3\2\2\2\u0164\u08d3") - buf.write("\3\2\2\2\u0166\u08e9\3\2\2\2\u0168\u08eb\3\2\2\2\u016a") - buf.write("\u08ed\3\2\2\2\u016c\u0900\3\2\2\2\u016e\u090d\3\2\2\2") - buf.write("\u0170\u0910\3\2\2\2\u0172\u0915\3\2\2\2\u0174\u091a\3") - buf.write("\2\2\2\u0176\u091e\3\2\2\2\u0178\u0925\3\2\2\2\u017a\u0929") - buf.write("\3\2\2\2\u017c\u093d\3\2\2\2\u017e\u093f\3\2\2\2\u0180") - buf.write("\u0945\3\2\2\2\u0182\u0947\3\2\2\2\u0184\u094e\3\2\2\2") - buf.write("\u0186\u0964\3\2\2\2\u0188\u0966\3\2\2\2\u018a\u0968\3") - buf.write("\2\2\2\u018c\u099d\3\2\2\2\u018e\u09a6\3\2\2\2\u0190\u09aa") - buf.write("\3\2\2\2\u0192\u09ac\3\2\2\2\u0194\u09ae\3\2\2\2\u0196") - buf.write("\u0198\5|?\2\u0197\u0196\3\2\2\2\u0197\u0198\3\2\2\2\u0198") - buf.write("\u0199\3\2\2\2\u0199\u019a\7\2\2\3\u019a\3\3\2\2\2\u019b") - buf.write("\u01a4\5\u018e\u00c8\2\u019c\u01a4\7G\2\2\u019d\u019e") - buf.write("\7V\2\2\u019e\u019f\5^\60\2\u019f\u01a0\7W\2\2\u01a0\u01a4") - buf.write("\3\2\2\2\u01a1\u01a4\5\6\4\2\u01a2\u01a4\5\16\b\2\u01a3") - buf.write("\u019b\3\2\2\2\u01a3\u019c\3\2\2\2\u01a3\u019d\3\2\2\2") - buf.write("\u01a3\u01a1\3\2\2\2\u01a3\u01a2\3\2\2\2\u01a4\5\3\2\2") - buf.write("\2\u01a5\u01a8\5\b\5\2\u01a6\u01a8\5\n\6\2\u01a7\u01a5") - buf.write("\3\2\2\2\u01a7\u01a6\3\2\2\2\u01a8\7\3\2\2\2\u01a9\u01b3") - buf.write("\7\u0087\2\2\u01aa\u01b3\5\u0158\u00ad\2\u01ab\u01b3\5") - buf.write("\u014a\u00a6\2\u01ac\u01b3\5\u015a\u00ae\2\u01ad\u01ae") - buf.write("\7d\2\2\u01ae\u01b3\5\u0124\u0093\2\u01af\u01b0\7d\2\2") - buf.write("\u01b0\u01b3\5\u00a2R\2\u01b1\u01b3\5\u0166\u00b4\2\u01b2") - buf.write("\u01a9\3\2\2\2\u01b2\u01aa\3\2\2\2\u01b2\u01ab\3\2\2\2") - buf.write("\u01b2\u01ac\3\2\2\2\u01b2\u01ad\3\2\2\2\u01b2\u01af\3") - buf.write("\2\2\2\u01b2\u01b1\3\2\2\2\u01b3\t\3\2\2\2\u01b4\u01b6") - buf.write("\5\f\7\2\u01b5\u01b7\7F\2\2\u01b6\u01b5\3\2\2\2\u01b6") - buf.write("\u01b7\3\2\2\2\u01b7\u01b8\3\2\2\2\u01b8\u01b9\5\b\5\2") - buf.write("\u01b9\13\3\2\2\2\u01ba\u01bb\b\7\1\2\u01bb\u01c6\7\u0082") - buf.write("\2\2\u01bc\u01bd\5\u00a0Q\2\u01bd\u01be\7\u0082\2\2\u01be") - buf.write("\u01c6\3\2\2\2\u01bf\u01c0\5\u00b8]\2\u01c0\u01c1\7\u0082") - buf.write("\2\2\u01c1\u01c6\3\2\2\2\u01c2\u01c3\5\u00a2R\2\u01c3") - buf.write("\u01c4\7\u0082\2\2\u01c4\u01c6\3\2\2\2\u01c5\u01ba\3\2") - buf.write("\2\2\u01c5\u01bc\3\2\2\2\u01c5\u01bf\3\2\2\2\u01c5\u01c2") - buf.write("\3\2\2\2\u01c6\u01d3\3\2\2\2\u01c7\u01c8\f\4\2\2\u01c8") - buf.write("\u01c9\7\u0087\2\2\u01c9\u01d2\7\u0082\2\2\u01ca\u01cc") - buf.write("\f\3\2\2\u01cb\u01cd\7F\2\2\u01cc\u01cb\3\2\2\2\u01cc") - buf.write("\u01cd\3\2\2\2\u01cd\u01ce\3\2\2\2\u01ce\u01cf\5\u0164") - buf.write("\u00b3\2\u01cf\u01d0\7\u0082\2\2\u01d0\u01d2\3\2\2\2\u01d1") - buf.write("\u01c7\3\2\2\2\u01d1\u01ca\3\2\2\2\u01d2\u01d5\3\2\2\2") - buf.write("\u01d3\u01d1\3\2\2\2\u01d3\u01d4\3\2\2\2\u01d4\r\3\2\2") - buf.write("\2\u01d5\u01d3\3\2\2\2\u01d6\u01d8\5\20\t\2\u01d7\u01d9") - buf.write("\5\36\20\2\u01d8\u01d7\3\2\2\2\u01d8\u01d9\3\2\2\2\u01d9") - buf.write("\u01da\3\2\2\2\u01da\u01db\5h\65\2\u01db\17\3\2\2\2\u01dc") - buf.write("\u01de\7X\2\2\u01dd\u01df\5\22\n\2\u01de\u01dd\3\2\2\2") - buf.write("\u01de\u01df\3\2\2\2\u01df\u01e0\3\2\2\2\u01e0\u01e1\7") - buf.write("Y\2\2\u01e1\21\3\2\2\2\u01e2\u01e9\5\24\13\2\u01e3\u01e9") - buf.write("\5\26\f\2\u01e4\u01e5\5\24\13\2\u01e5\u01e6\7}\2\2\u01e6") - buf.write("\u01e7\5\26\f\2\u01e7\u01e9\3\2\2\2\u01e8\u01e2\3\2\2") - buf.write("\2\u01e8\u01e3\3\2\2\2\u01e8\u01e4\3\2\2\2\u01e9\23\3") - buf.write("\2\2\2\u01ea\u01eb\t\2\2\2\u01eb\25\3\2\2\2\u01ec\u01ed") - buf.write("\b\f\1\2\u01ed\u01ef\5\30\r\2\u01ee\u01f0\7\u0086\2\2") - buf.write("\u01ef\u01ee\3\2\2\2\u01ef\u01f0\3\2\2\2\u01f0\u01f9\3") - buf.write("\2\2\2\u01f1\u01f2\f\3\2\2\u01f2\u01f3\7}\2\2\u01f3\u01f5") - buf.write("\5\30\r\2\u01f4\u01f6\7\u0086\2\2\u01f5\u01f4\3\2\2\2") - buf.write("\u01f5\u01f6\3\2\2\2\u01f6\u01f8\3\2\2\2\u01f7\u01f1\3") - buf.write("\2\2\2\u01f8\u01fb\3\2\2\2\u01f9\u01f7\3\2\2\2\u01f9\u01fa") - buf.write("\3\2\2\2\u01fa\27\3\2\2\2\u01fb\u01f9\3\2\2\2\u01fc\u01ff") - buf.write("\5\32\16\2\u01fd\u01ff\5\34\17\2\u01fe\u01fc\3\2\2\2\u01fe") - buf.write("\u01fd\3\2\2\2\u01ff\31\3\2\2\2\u0200\u0205\7\u0087\2") - buf.write("\2\u0201\u0202\7b\2\2\u0202\u0205\7\u0087\2\2\u0203\u0205") - buf.write("\7G\2\2\u0204\u0200\3\2\2\2\u0204\u0201\3\2\2\2\u0204") - buf.write("\u0203\3\2\2\2\u0205\33\3\2\2\2\u0206\u0207\7\u0087\2") - buf.write("\2\u0207\u020c\5\u011a\u008e\2\u0208\u0209\7b\2\2\u0209") - buf.write("\u020a\7\u0087\2\2\u020a\u020c\5\u011a\u008e\2\u020b\u0206") - buf.write("\3\2\2\2\u020b\u0208\3\2\2\2\u020c\35\3\2\2\2\u020d\u020e") - buf.write("\7V\2\2\u020e\u020f\5\u0110\u0089\2\u020f\u0211\7W\2\2") - buf.write("\u0210\u0212\7\61\2\2\u0211\u0210\3\2\2\2\u0211\u0212") - buf.write("\3\2\2\2\u0212\u0214\3\2\2\2\u0213\u0215\5\u0180\u00c1") - buf.write("\2\u0214\u0213\3\2\2\2\u0214\u0215\3\2\2\2\u0215\u0217") - buf.write("\3\2\2\2\u0216\u0218\5\u00d6l\2\u0217\u0216\3\2\2\2\u0217") - buf.write("\u0218\3\2\2\2\u0218\u021a\3\2\2\2\u0219\u021b\5\u00f8") - buf.write("}\2\u021a\u0219\3\2\2\2\u021a\u021b\3\2\2\2\u021b\37\3") - buf.write("\2\2\2\u021c\u021d\b\21\1\2\u021d\u025d\5\4\3\2\u021e") - buf.write("\u021f\5\u009eP\2\u021f\u0221\7V\2\2\u0220\u0222\5&\24") - buf.write("\2\u0221\u0220\3\2\2\2\u0221\u0222\3\2\2\2\u0222\u0223") - buf.write("\3\2\2\2\u0223\u0224\7W\2\2\u0224\u025d\3\2\2\2\u0225") - buf.write("\u0226\5\u016e\u00b8\2\u0226\u0228\7V\2\2\u0227\u0229") - buf.write("\5&\24\2\u0228\u0227\3\2\2\2\u0228\u0229\3\2\2\2\u0229") - buf.write("\u022a\3\2\2\2\u022a\u022b\7W\2\2\u022b\u025d\3\2\2\2") - buf.write("\u022c\u022d\5\u009eP\2\u022d\u022e\5\u0122\u0092\2\u022e") - buf.write("\u025d\3\2\2\2\u022f\u0230\5\u016e\u00b8\2\u0230\u0231") - buf.write("\5\u0122\u0092\2\u0231\u025d\3\2\2\2\u0232\u0233\7\"\2") - buf.write("\2\u0233\u0234\7g\2\2\u0234\u0235\5\u0104\u0083\2\u0235") - buf.write("\u0236\7h\2\2\u0236\u0237\7V\2\2\u0237\u0238\5^\60\2\u0238") - buf.write("\u0239\7W\2\2\u0239\u025d\3\2\2\2\u023a\u023b\7C\2\2\u023b") - buf.write("\u023c\7g\2\2\u023c\u023d\5\u0104\u0083\2\u023d\u023e") - buf.write("\7h\2\2\u023e\u023f\7V\2\2\u023f\u0240\5^\60\2\u0240\u0241") - buf.write("\7W\2\2\u0241\u025d\3\2\2\2\u0242\u0243\7<\2\2\u0243\u0244") - buf.write("\7g\2\2\u0244\u0245\5\u0104\u0083\2\u0245\u0246\7h\2\2") - buf.write("\u0246\u0247\7V\2\2\u0247\u0248\5^\60\2\u0248\u0249\7") - buf.write("W\2\2\u0249\u025d\3\2\2\2\u024a\u024b\7\33\2\2\u024b\u024c") - buf.write("\7g\2\2\u024c\u024d\5\u0104\u0083\2\u024d\u024e\7h\2\2") - buf.write("\u024e\u024f\7V\2\2\u024f\u0250\5^\60\2\u0250\u0251\7") - buf.write("W\2\2\u0251\u025d\3\2\2\2\u0252\u0253\5$\23\2\u0253\u0254") - buf.write("\7V\2\2\u0254\u0255\5^\60\2\u0255\u0256\7W\2\2\u0256\u025d") - buf.write("\3\2\2\2\u0257\u0258\5$\23\2\u0258\u0259\7V\2\2\u0259") - buf.write("\u025a\5\u0104\u0083\2\u025a\u025b\7W\2\2\u025b\u025d") - buf.write("\3\2\2\2\u025c\u021c\3\2\2\2\u025c\u021e\3\2\2\2\u025c") - buf.write("\u0225\3\2\2\2\u025c\u022c\3\2\2\2\u025c\u022f\3\2\2\2") - buf.write("\u025c\u0232\3\2\2\2\u025c\u023a\3\2\2\2\u025c\u0242\3") - buf.write("\2\2\2\u025c\u024a\3\2\2\2\u025c\u0252\3\2\2\2\u025c\u0257") - buf.write("\3\2\2\2\u025d\u0286\3\2\2\2\u025e\u025f\f\25\2\2\u025f") - buf.write("\u0260\7X\2\2\u0260\u0261\5^\60\2\u0261\u0262\7Y\2\2\u0262") - buf.write("\u0285\3\2\2\2\u0263\u0264\f\24\2\2\u0264\u0265\7X\2\2") - buf.write("\u0265\u0266\5\u0122\u0092\2\u0266\u0267\7Y\2\2\u0267") - buf.write("\u0285\3\2\2\2\u0268\u0269\f\23\2\2\u0269\u026b\7V\2\2") - buf.write("\u026a\u026c\5&\24\2\u026b\u026a\3\2\2\2\u026b\u026c\3") - buf.write("\2\2\2\u026c\u026d\3\2\2\2\u026d\u0285\7W\2\2\u026e\u026f") - buf.write("\f\16\2\2\u026f\u0271\7\u0084\2\2\u0270\u0272\7F\2\2\u0271") - buf.write("\u0270\3\2\2\2\u0271\u0272\3\2\2\2\u0272\u0273\3\2\2\2") - buf.write("\u0273\u0285\5\6\4\2\u0274\u0275\f\r\2\2\u0275\u0277\7") - buf.write("\177\2\2\u0276\u0278\7F\2\2\u0277\u0276\3\2\2\2\u0277") - buf.write("\u0278\3\2\2\2\u0278\u0279\3\2\2\2\u0279\u0285\5\6\4\2") - buf.write("\u027a\u027b\f\f\2\2\u027b\u027c\7\u0084\2\2\u027c\u0285") - buf.write("\5(\25\2\u027d\u027e\f\13\2\2\u027e\u027f\7\177\2\2\u027f") - buf.write("\u0285\5(\25\2\u0280\u0281\f\n\2\2\u0281\u0285\7{\2\2") - buf.write("\u0282\u0283\f\t\2\2\u0283\u0285\7|\2\2\u0284\u025e\3") - buf.write("\2\2\2\u0284\u0263\3\2\2\2\u0284\u0268\3\2\2\2\u0284\u026e") - buf.write("\3\2\2\2\u0284\u0274\3\2\2\2\u0284\u027a\3\2\2\2\u0284") - buf.write("\u027d\3\2\2\2\u0284\u0280\3\2\2\2\u0284\u0282\3\2\2\2") - buf.write("\u0285\u0288\3\2\2\2\u0286\u0284\3\2\2\2\u0286\u0287\3") - buf.write("\2\2\2\u0287!\3\2\2\2\u0288\u0286\3\2\2\2\u0289\u028a") - buf.write("\7L\2\2\u028a#\3\2\2\2\u028b\u028c\7L\2\2\u028c%\3\2\2") - buf.write("\2\u028d\u028e\5\u0120\u0091\2\u028e\'\3\2\2\2\u028f\u0291") - buf.write("\5\f\7\2\u0290\u028f\3\2\2\2\u0290\u0291\3\2\2\2\u0291") - buf.write("\u0292\3\2\2\2\u0292\u0293\5\u00a0Q\2\u0293\u0294\7\u0082") - buf.write("\2\2\u0294\u0295\7d\2\2\u0295\u0296\5\u00a0Q\2\u0296\u02a6") - buf.write("\3\2\2\2\u0297\u0298\5\f\7\2\u0298\u0299\7F\2\2\u0299") - buf.write("\u029a\5\u0164\u00b3\2\u029a\u029b\7\u0082\2\2\u029b\u029c") - buf.write("\7d\2\2\u029c\u029d\5\u00a0Q\2\u029d\u02a6\3\2\2\2\u029e") - buf.write("\u02a0\5\f\7\2\u029f\u029e\3\2\2\2\u029f\u02a0\3\2\2\2") - buf.write("\u02a0\u02a1\3\2\2\2\u02a1\u02a2\7d\2\2\u02a2\u02a6\5") - buf.write("\u00a0Q\2\u02a3\u02a4\7d\2\2\u02a4\u02a6\5\u00a2R\2\u02a5") - buf.write("\u0290\3\2\2\2\u02a5\u0297\3\2\2\2\u02a5\u029f\3\2\2\2") - buf.write("\u02a5\u02a3\3\2\2\2\u02a6)\3\2\2\2\u02a7\u02c4\5 \21") - buf.write("\2\u02a8\u02a9\7{\2\2\u02a9\u02c4\5> \2\u02aa\u02ab\7") - buf.write("|\2\2\u02ab\u02c4\5> \2\u02ac\u02ad\5,\27\2\u02ad\u02ae") - buf.write("\5> \2\u02ae\u02c4\3\2\2\2\u02af\u02b0\7@\2\2\u02b0\u02c4") - buf.write("\5*\26\2\u02b1\u02b2\7@\2\2\u02b2\u02b3\7V\2\2\u02b3\u02b4") - buf.write("\5\u0104\u0083\2\u02b4\u02b5\7W\2\2\u02b5\u02c4\3\2\2") - buf.write("\2\u02b6\u02b7\7@\2\2\u02b7\u02b8\7\u0086\2\2\u02b8\u02b9") - buf.write("\7V\2\2\u02b9\u02ba\7\u0087\2\2\u02ba\u02c4\7W\2\2\u02bb") - buf.write("\u02bc\7\16\2\2\u02bc\u02bd\7V\2\2\u02bd\u02be\5\u0104") - buf.write("\u0083\2\u02be\u02bf\7W\2\2\u02bf\u02c4\3\2\2\2\u02c0") - buf.write("\u02c4\5<\37\2\u02c1\u02c4\5.\30\2\u02c2\u02c4\5:\36\2") - buf.write("\u02c3\u02a7\3\2\2\2\u02c3\u02a8\3\2\2\2\u02c3\u02aa\3") - buf.write("\2\2\2\u02c3\u02ac\3\2\2\2\u02c3\u02af\3\2\2\2\u02c3\u02b1") - buf.write("\3\2\2\2\u02c3\u02b6\3\2\2\2\u02c3\u02bb\3\2\2\2\u02c3") - buf.write("\u02c0\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c3\u02c2\3\2\2\2") - buf.write("\u02c4+\3\2\2\2\u02c5\u02c6\t\3\2\2\u02c6-\3\2\2\2\u02c7") - buf.write("\u02c9\7\u0082\2\2\u02c8\u02c7\3\2\2\2\u02c8\u02c9\3\2") - buf.write("\2\2\u02c9\u02ca\3\2\2\2\u02ca\u02cc\7\63\2\2\u02cb\u02cd") - buf.write("\5\60\31\2\u02cc\u02cb\3\2\2\2\u02cc\u02cd\3\2\2\2\u02cd") - buf.write("\u02ce\3\2\2\2\u02ce\u02d0\5\62\32\2\u02cf\u02d1\58\35") - buf.write("\2\u02d0\u02cf\3\2\2\2\u02d0\u02d1\3\2\2\2\u02d1\u02e0") - buf.write("\3\2\2\2\u02d2\u02d4\7\u0082\2\2\u02d3\u02d2\3\2\2\2\u02d3") - buf.write("\u02d4\3\2\2\2\u02d4\u02d5\3\2\2\2\u02d5\u02d7\7\63\2") - buf.write("\2\u02d6\u02d8\5\60\31\2\u02d7\u02d6\3\2\2\2\u02d7\u02d8") - buf.write("\3\2\2\2\u02d8\u02d9\3\2\2\2\u02d9\u02da\7V\2\2\u02da") - buf.write("\u02db\5\u0104\u0083\2\u02db\u02dd\7W\2\2\u02dc\u02de") - buf.write("\58\35\2\u02dd\u02dc\3\2\2\2\u02dd\u02de\3\2\2\2\u02de") - buf.write("\u02e0\3\2\2\2\u02df\u02c8\3\2\2\2\u02df\u02d3\3\2\2\2") - buf.write("\u02e0/\3\2\2\2\u02e1\u02e2\7V\2\2\u02e2\u02e3\5&\24\2") - buf.write("\u02e3\u02e4\7W\2\2\u02e4\61\3\2\2\2\u02e5\u02e7\5\u009a") - buf.write("N\2\u02e6\u02e8\5\64\33\2\u02e7\u02e6\3\2\2\2\u02e7\u02e8") - buf.write("\3\2\2\2\u02e8\63\3\2\2\2\u02e9\u02eb\5\u00fa~\2\u02ea") - buf.write("\u02ec\5\64\33\2\u02eb\u02ea\3\2\2\2\u02eb\u02ec\3\2\2") - buf.write("\2\u02ec\u02ef\3\2\2\2\u02ed\u02ef\5\66\34\2\u02ee\u02e9") - buf.write("\3\2\2\2\u02ee\u02ed\3\2\2\2\u02ef\65\3\2\2\2\u02f0\u02f1") - buf.write("\b\34\1\2\u02f1\u02f2\7X\2\2\u02f2\u02f3\5^\60\2\u02f3") - buf.write("\u02f5\7Y\2\2\u02f4\u02f6\5\u00d6l\2\u02f5\u02f4\3\2\2") - buf.write("\2\u02f5\u02f6\3\2\2\2\u02f6\u0300\3\2\2\2\u02f7\u02f8") - buf.write("\f\3\2\2\u02f8\u02f9\7X\2\2\u02f9\u02fa\5`\61\2\u02fa") - buf.write("\u02fc\7Y\2\2\u02fb\u02fd\5\u00d6l\2\u02fc\u02fb\3\2\2") - buf.write("\2\u02fc\u02fd\3\2\2\2\u02fd\u02ff\3\2\2\2\u02fe\u02f7") - buf.write("\3\2\2\2\u02ff\u0302\3\2\2\2\u0300\u02fe\3\2\2\2\u0300") - buf.write("\u0301\3\2\2\2\u0301\67\3\2\2\2\u0302\u0300\3\2\2\2\u0303") - buf.write("\u0305\7V\2\2\u0304\u0306\5&\24\2\u0305\u0304\3\2\2\2") - buf.write("\u0305\u0306\3\2\2\2\u0306\u0307\3\2\2\2\u0307\u030a\7") - buf.write("W\2\2\u0308\u030a\5\u0122\u0092\2\u0309\u0303\3\2\2\2") - buf.write("\u0309\u0308\3\2\2\2\u030a9\3\2\2\2\u030b\u030d\7\u0082") - buf.write("\2\2\u030c\u030b\3\2\2\2\u030c\u030d\3\2\2\2\u030d\u030e") - buf.write("\3\2\2\2\u030e\u030f\7\37\2\2\u030f\u0318\5> \2\u0310") - buf.write("\u0312\7\u0082\2\2\u0311\u0310\3\2\2\2\u0311\u0312\3\2") - buf.write("\2\2\u0312\u0313\3\2\2\2\u0313\u0314\7\37\2\2\u0314\u0315") - buf.write("\7X\2\2\u0315\u0316\7Y\2\2\u0316\u0318\5> \2\u0317\u030c") - buf.write("\3\2\2\2\u0317\u0311\3\2\2\2\u0318;\3\2\2\2\u0319\u031a") - buf.write("\7\64\2\2\u031a\u031b\7V\2\2\u031b\u031c\5^\60\2\u031c") - buf.write("\u031d\7W\2\2\u031d=\3\2\2\2\u031e\u0325\5*\26\2\u031f") - buf.write("\u0320\7V\2\2\u0320\u0321\5\u0104\u0083\2\u0321\u0322") - buf.write("\7W\2\2\u0322\u0323\5> \2\u0323\u0325\3\2\2\2\u0324\u031e") - buf.write("\3\2\2\2\u0324\u031f\3\2\2\2\u0325?\3\2\2\2\u0326\u0327") - buf.write("\b!\1\2\u0327\u0328\5> \2\u0328\u0331\3\2\2\2\u0329\u032a") - buf.write("\f\4\2\2\u032a\u032b\7\u0085\2\2\u032b\u0330\5> \2\u032c") - buf.write("\u032d\f\3\2\2\u032d\u032e\7~\2\2\u032e\u0330\5> \2\u032f") - buf.write("\u0329\3\2\2\2\u032f\u032c\3\2\2\2\u0330\u0333\3\2\2\2") - buf.write("\u0331\u032f\3\2\2\2\u0331\u0332\3\2\2\2\u0332A\3\2\2") - buf.write("\2\u0333\u0331\3\2\2\2\u0334\u0335\b\"\1\2\u0335\u0336") - buf.write("\5@!\2\u0336\u0342\3\2\2\2\u0337\u0338\f\5\2\2\u0338\u0339") - buf.write("\7^\2\2\u0339\u0341\5@!\2\u033a\u033b\f\4\2\2\u033b\u033c") - buf.write("\7_\2\2\u033c\u0341\5@!\2\u033d\u033e\f\3\2\2\u033e\u033f") - buf.write("\7`\2\2\u033f\u0341\5@!\2\u0340\u0337\3\2\2\2\u0340\u033a") - buf.write("\3\2\2\2\u0340\u033d\3\2\2\2\u0341\u0344\3\2\2\2\u0342") - buf.write("\u0340\3\2\2\2\u0342\u0343\3\2\2\2\u0343C\3\2\2\2\u0344") - buf.write("\u0342\3\2\2\2\u0345\u0346\b#\1\2\u0346\u0347\5B\"\2\u0347") - buf.write("\u0350\3\2\2\2\u0348\u0349\f\4\2\2\u0349\u034a\7\\\2\2") - buf.write("\u034a\u034f\5B\"\2\u034b\u034c\f\3\2\2\u034c\u034d\7") - buf.write("]\2\2\u034d\u034f\5B\"\2\u034e\u0348\3\2\2\2\u034e\u034b") - buf.write("\3\2\2\2\u034f\u0352\3\2\2\2\u0350\u034e\3\2\2\2\u0350") - buf.write("\u0351\3\2\2\2\u0351E\3\2\2\2\u0352\u0350\3\2\2\2\u0353") - buf.write("\u0354\b$\1\2\u0354\u0355\5D#\2\u0355\u035c\3\2\2\2\u0356") - buf.write("\u0357\f\3\2\2\u0357\u0358\5H%\2\u0358\u0359\5D#\2\u0359") - buf.write("\u035b\3\2\2\2\u035a\u0356\3\2\2\2\u035b\u035e\3\2\2\2") - buf.write("\u035c\u035a\3\2\2\2\u035c\u035d\3\2\2\2\u035dG\3\2\2") - buf.write("\2\u035e\u035c\3\2\2\2\u035f\u0360\t\4\2\2\u0360I\3\2") - buf.write("\2\2\u0361\u0362\b&\1\2\u0362\u0363\5F$\2\u0363\u0372") - buf.write("\3\2\2\2\u0364\u0365\f\6\2\2\u0365\u0366\7g\2\2\u0366") - buf.write("\u0371\5F$\2\u0367\u0368\f\5\2\2\u0368\u0369\7h\2\2\u0369") - buf.write("\u0371\5F$\2\u036a\u036b\f\4\2\2\u036b\u036c\7w\2\2\u036c") - buf.write("\u0371\5F$\2\u036d\u036e\f\3\2\2\u036e\u036f\7x\2\2\u036f") - buf.write("\u0371\5F$\2\u0370\u0364\3\2\2\2\u0370\u0367\3\2\2\2\u0370") - buf.write("\u036a\3\2\2\2\u0370\u036d\3\2\2\2\u0371\u0374\3\2\2\2") - buf.write("\u0372\u0370\3\2\2\2\u0372\u0373\3\2\2\2\u0373K\3\2\2") - buf.write("\2\u0374\u0372\3\2\2\2\u0375\u0376\b\'\1\2\u0376\u0377") - buf.write("\5J&\2\u0377\u0380\3\2\2\2\u0378\u0379\f\4\2\2\u0379\u037a") - buf.write("\7u\2\2\u037a\u037f\5J&\2\u037b\u037c\f\3\2\2\u037c\u037d") - buf.write("\7v\2\2\u037d\u037f\5J&\2\u037e\u0378\3\2\2\2\u037e\u037b") - buf.write("\3\2\2\2\u037f\u0382\3\2\2\2\u0380\u037e\3\2\2\2\u0380") - buf.write("\u0381\3\2\2\2\u0381M\3\2\2\2\u0382\u0380\3\2\2\2\u0383") - buf.write("\u0384\b(\1\2\u0384\u0385\5L\'\2\u0385\u038b\3\2\2\2\u0386") - buf.write("\u0387\f\3\2\2\u0387\u0388\7b\2\2\u0388\u038a\5L\'\2\u0389") - buf.write("\u0386\3\2\2\2\u038a\u038d\3\2\2\2\u038b\u0389\3\2\2\2") - buf.write("\u038b\u038c\3\2\2\2\u038cO\3\2\2\2\u038d\u038b\3\2\2") - buf.write("\2\u038e\u038f\b)\1\2\u038f\u0390\5N(\2\u0390\u0396\3") - buf.write("\2\2\2\u0391\u0392\f\3\2\2\u0392\u0393\7a\2\2\u0393\u0395") - buf.write("\5N(\2\u0394\u0391\3\2\2\2\u0395\u0398\3\2\2\2\u0396\u0394") - buf.write("\3\2\2\2\u0396\u0397\3\2\2\2\u0397Q\3\2\2\2\u0398\u0396") - buf.write("\3\2\2\2\u0399\u039a\b*\1\2\u039a\u039b\5P)\2\u039b\u03a1") - buf.write("\3\2\2\2\u039c\u039d\f\3\2\2\u039d\u039e\7c\2\2\u039e") - buf.write("\u03a0\5P)\2\u039f\u039c\3\2\2\2\u03a0\u03a3\3\2\2\2\u03a1") - buf.write("\u039f\3\2\2\2\u03a1\u03a2\3\2\2\2\u03a2S\3\2\2\2\u03a3") - buf.write("\u03a1\3\2\2\2\u03a4\u03a5\b+\1\2\u03a5\u03a6\5R*\2\u03a6") - buf.write("\u03af\3\2\2\2\u03a7\u03a8\f\4\2\2\u03a8\u03a9\7\5\2\2") - buf.write("\u03a9\u03ae\5R*\2\u03aa\u03ab\f\3\2\2\u03ab\u03ac\7\6") - buf.write("\2\2\u03ac\u03ae\5R*\2\u03ad\u03a7\3\2\2\2\u03ad\u03aa") - buf.write("\3\2\2\2\u03ae\u03b1\3\2\2\2\u03af\u03ad\3\2\2\2\u03af") - buf.write("\u03b0\3\2\2\2\u03b0U\3\2\2\2\u03b1\u03af\3\2\2\2\u03b2") - buf.write("\u03b3\b,\1\2\u03b3\u03b4\5T+\2\u03b4\u03bd\3\2\2\2\u03b5") - buf.write("\u03b6\f\4\2\2\u03b6\u03b7\7\7\2\2\u03b7\u03bc\5T+\2\u03b8") - buf.write("\u03b9\f\3\2\2\u03b9\u03ba\7\b\2\2\u03ba\u03bc\5T+\2\u03bb") - buf.write("\u03b5\3\2\2\2\u03bb\u03b8\3\2\2\2\u03bc\u03bf\3\2\2\2") - buf.write("\u03bd\u03bb\3\2\2\2\u03bd\u03be\3\2\2\2\u03beW\3\2\2") - buf.write("\2\u03bf\u03bd\3\2\2\2\u03c0\u03c8\5V,\2\u03c1\u03c2\5") - buf.write("V,\2\u03c2\u03c3\7\u0080\2\2\u03c3\u03c4\5^\60\2\u03c4") - buf.write("\u03c5\7\u0081\2\2\u03c5\u03c6\5Z.\2\u03c6\u03c8\3\2\2") - buf.write("\2\u03c7\u03c0\3\2\2\2\u03c7\u03c1\3\2\2\2\u03c8Y\3\2") - buf.write("\2\2\u03c9\u03d0\5X-\2\u03ca\u03cb\5V,\2\u03cb\u03cc\5") - buf.write("\\/\2\u03cc\u03cd\5\u011e\u0090\2\u03cd\u03d0\3\2\2\2") - buf.write("\u03ce\u03d0\5\u017e\u00c0\2\u03cf\u03c9\3\2\2\2\u03cf") - buf.write("\u03ca\3\2\2\2\u03cf\u03ce\3\2\2\2\u03d0[\3\2\2\2\u03d1") - buf.write("\u03d2\t\5\2\2\u03d2]\3\2\2\2\u03d3\u03d4\b\60\1\2\u03d4") - buf.write("\u03d5\5Z.\2\u03d5\u03db\3\2\2\2\u03d6\u03d7\f\3\2\2\u03d7") - buf.write("\u03d8\7}\2\2\u03d8\u03da\5Z.\2\u03d9\u03d6\3\2\2\2\u03da") - buf.write("\u03dd\3\2\2\2\u03db\u03d9\3\2\2\2\u03db\u03dc\3\2\2\2") - buf.write("\u03dc_\3\2\2\2\u03dd\u03db\3\2\2\2\u03de\u03df\5X-\2") - buf.write("\u03dfa\3\2\2\2\u03e0\u03fb\5d\63\2\u03e1\u03e3\5\u00d6") - buf.write("l\2\u03e2\u03e1\3\2\2\2\u03e2\u03e3\3\2\2\2\u03e3\u03e4") - buf.write("\3\2\2\2\u03e4\u03fb\5f\64\2\u03e5\u03e7\5\u00d6l\2\u03e6") - buf.write("\u03e5\3\2\2\2\u03e6\u03e7\3\2\2\2\u03e7\u03e8\3\2\2\2") - buf.write("\u03e8\u03fb\5h\65\2\u03e9\u03eb\5\u00d6l\2\u03ea\u03e9") - buf.write("\3\2\2\2\u03ea\u03eb\3\2\2\2\u03eb\u03ec\3\2\2\2\u03ec") - buf.write("\u03fb\5l\67\2\u03ed\u03ef\5\u00d6l\2\u03ee\u03ed\3\2") - buf.write("\2\2\u03ee\u03ef\3\2\2\2\u03ef\u03f0\3\2\2\2\u03f0\u03fb") - buf.write("\5p9\2\u03f1\u03f3\5\u00d6l\2\u03f2\u03f1\3\2\2\2\u03f2") - buf.write("\u03f3\3\2\2\2\u03f3\u03f4\3\2\2\2\u03f4\u03fb\5x=\2\u03f5") - buf.write("\u03fb\5z>\2\u03f6\u03f8\5\u00d6l\2\u03f7\u03f6\3\2\2") - buf.write("\2\u03f7\u03f8\3\2\2\2\u03f8\u03f9\3\2\2\2\u03f9\u03fb") - buf.write("\5\u0174\u00bb\2\u03fa\u03e0\3\2\2\2\u03fa\u03e2\3\2\2") - buf.write("\2\u03fa\u03e6\3\2\2\2\u03fa\u03ea\3\2\2\2\u03fa\u03ee") - buf.write("\3\2\2\2\u03fa\u03f2\3\2\2\2\u03fa\u03f5\3\2\2\2\u03fa") - buf.write("\u03f7\3\2\2\2\u03fbc\3\2\2\2\u03fc\u03fe\5\u00d6l\2\u03fd") - buf.write("\u03fc\3\2\2\2\u03fd\u03fe\3\2\2\2\u03fe\u03ff\3\2\2\2") - buf.write("\u03ff\u0400\7\u0087\2\2\u0400\u0401\7\u0081\2\2\u0401") - buf.write("\u0411\5b\62\2\u0402\u0404\5\u00d6l\2\u0403\u0402\3\2") - buf.write("\2\2\u0403\u0404\3\2\2\2\u0404\u0405\3\2\2\2\u0405\u0406") - buf.write("\7\23\2\2\u0406\u0407\5`\61\2\u0407\u0408\7\u0081\2\2") - buf.write("\u0408\u0409\5b\62\2\u0409\u0411\3\2\2\2\u040a\u040c\5") - buf.write("\u00d6l\2\u040b\u040a\3\2\2\2\u040b\u040c\3\2\2\2\u040c") - buf.write("\u040d\3\2\2\2\u040d\u040e\7\36\2\2\u040e\u040f\7\u0081") - buf.write("\2\2\u040f\u0411\5b\62\2\u0410\u03fd\3\2\2\2\u0410\u0403") - buf.write("\3\2\2\2\u0410\u040b\3\2\2\2\u0411e\3\2\2\2\u0412\u0414") - buf.write("\5^\60\2\u0413\u0412\3\2\2\2\u0413\u0414\3\2\2\2\u0414") - buf.write("\u0415\3\2\2\2\u0415\u0416\7\u0083\2\2\u0416g\3\2\2\2") - buf.write("\u0417\u0419\7Z\2\2\u0418\u041a\5j\66\2\u0419\u0418\3") - buf.write("\2\2\2\u0419\u041a\3\2\2\2\u041a\u041b\3\2\2\2\u041b\u041c") - buf.write("\7[\2\2\u041ci\3\2\2\2\u041d\u041e\b\66\1\2\u041e\u041f") - buf.write("\5b\62\2\u041f\u0424\3\2\2\2\u0420\u0421\f\3\2\2\u0421") - buf.write("\u0423\5b\62\2\u0422\u0420\3\2\2\2\u0423\u0426\3\2\2\2") - buf.write("\u0424\u0422\3\2\2\2\u0424\u0425\3\2\2\2\u0425k\3\2\2") - buf.write("\2\u0426\u0424\3\2\2\2\u0427\u0428\7-\2\2\u0428\u0429") - buf.write("\7V\2\2\u0429\u042a\5n8\2\u042a\u042b\7W\2\2\u042b\u042c") - buf.write("\5b\62\2\u042c\u043c\3\2\2\2\u042d\u042e\7-\2\2\u042e") - buf.write("\u042f\7V\2\2\u042f\u0430\5n8\2\u0430\u0431\7W\2\2\u0431") - buf.write("\u0432\5b\62\2\u0432\u0433\7#\2\2\u0433\u0434\5b\62\2") - buf.write("\u0434\u043c\3\2\2\2\u0435\u0436\7E\2\2\u0436\u0437\7") - buf.write("V\2\2\u0437\u0438\5n8\2\u0438\u0439\7W\2\2\u0439\u043a") - buf.write("\5b\62\2\u043a\u043c\3\2\2\2\u043b\u0427\3\2\2\2\u043b") - buf.write("\u042d\3\2\2\2\u043b\u0435\3\2\2\2\u043cm\3\2\2\2\u043d") - buf.write("\u044e\5^\60\2\u043e\u0440\5\u00d6l\2\u043f\u043e\3\2") - buf.write("\2\2\u043f\u0440\3\2\2\2\u0440\u0441\3\2\2\2\u0441\u0442") - buf.write("\5\u008eH\2\u0442\u0443\5\u00f0y\2\u0443\u0444\7f\2\2") - buf.write("\u0444\u0445\5\u011e\u0090\2\u0445\u044e\3\2\2\2\u0446") - buf.write("\u0448\5\u00d6l\2\u0447\u0446\3\2\2\2\u0447\u0448\3\2") - buf.write("\2\2\u0448\u0449\3\2\2\2\u0449\u044a\5\u008eH\2\u044a") - buf.write("\u044b\5\u00f0y\2\u044b\u044c\5\u0122\u0092\2\u044c\u044e") - buf.write("\3\2\2\2\u044d\u043d\3\2\2\2\u044d\u043f\3\2\2\2\u044d") - buf.write("\u0447\3\2\2\2\u044eo\3\2\2\2\u044f\u0450\7U\2\2\u0450") - buf.write("\u0451\7V\2\2\u0451\u0452\5n8\2\u0452\u0453\7W\2\2\u0453") - buf.write("\u0454\5b\62\2\u0454\u0473\3\2\2\2\u0455\u0456\7 \2\2") - buf.write("\u0456\u0457\5b\62\2\u0457\u0458\7U\2\2\u0458\u0459\7") - buf.write("V\2\2\u0459\u045a\5^\60\2\u045a\u045b\7W\2\2\u045b\u045c") - buf.write("\7\u0083\2\2\u045c\u0473\3\2\2\2\u045d\u045e\7*\2\2\u045e") - buf.write("\u045f\7V\2\2\u045f\u0461\5r:\2\u0460\u0462\5n8\2\u0461") - buf.write("\u0460\3\2\2\2\u0461\u0462\3\2\2\2\u0462\u0463\3\2\2\2") - buf.write("\u0463\u0465\7\u0083\2\2\u0464\u0466\5^\60\2\u0465\u0464") - buf.write("\3\2\2\2\u0465\u0466\3\2\2\2\u0466\u0467\3\2\2\2\u0467") - buf.write("\u0468\7W\2\2\u0468\u0469\5b\62\2\u0469\u0473\3\2\2\2") - buf.write("\u046a\u046b\7*\2\2\u046b\u046c\7V\2\2\u046c\u046d\5t") - buf.write(";\2\u046d\u046e\7\u0081\2\2\u046e\u046f\5v<\2\u046f\u0470") - buf.write("\7W\2\2\u0470\u0471\5b\62\2\u0471\u0473\3\2\2\2\u0472") - buf.write("\u044f\3\2\2\2\u0472\u0455\3\2\2\2\u0472\u045d\3\2\2\2") - buf.write("\u0472\u046a\3\2\2\2\u0473q\3\2\2\2\u0474\u0477\5f\64") - buf.write("\2\u0475\u0477\5\u0084C\2\u0476\u0474\3\2\2\2\u0476\u0475") - buf.write("\3\2\2\2\u0477s\3\2\2\2\u0478\u047a\5\u00d6l\2\u0479\u0478") - buf.write("\3\2\2\2\u0479\u047a\3\2\2\2\u047a\u047b\3\2\2\2\u047b") - buf.write("\u047c\5\u008eH\2\u047c\u047d\5\u00f0y\2\u047du\3\2\2") - buf.write("\2\u047e\u0481\5^\60\2\u047f\u0481\5\u0122\u0092\2\u0480") - buf.write("\u047e\3\2\2\2\u0480\u047f\3\2\2\2\u0481w\3\2\2\2\u0482") - buf.write("\u0483\7\22\2\2\u0483\u0493\7\u0083\2\2\u0484\u0485\7") - buf.write("\34\2\2\u0485\u0493\7\u0083\2\2\u0486\u0488\7=\2\2\u0487") - buf.write("\u0489\5^\60\2\u0488\u0487\3\2\2\2\u0488\u0489\3\2\2\2") - buf.write("\u0489\u048a\3\2\2\2\u048a\u0493\7\u0083\2\2\u048b\u048c") - buf.write("\7=\2\2\u048c\u048d\5\u0122\u0092\2\u048d\u048e\7\u0083") - buf.write("\2\2\u048e\u0493\3\2\2\2\u048f\u0490\7,\2\2\u0490\u0491") - buf.write("\7\u0087\2\2\u0491\u0493\7\u0083\2\2\u0492\u0482\3\2\2") - buf.write("\2\u0492\u0484\3\2\2\2\u0492\u0486\3\2\2\2\u0492\u048b") - buf.write("\3\2\2\2\u0492\u048f\3\2\2\2\u0493y\3\2\2\2\u0494\u0495") - buf.write("\5\u0080A\2\u0495{\3\2\2\2\u0496\u0497\b?\1\2\u0497\u0498") - buf.write("\5~@\2\u0498\u049d\3\2\2\2\u0499\u049a\f\3\2\2\u049a\u049c") - buf.write("\5~@\2\u049b\u0499\3\2\2\2\u049c\u049f\3\2\2\2\u049d\u049b") - buf.write("\3\2\2\2\u049d\u049e\3\2\2\2\u049e}\3\2\2\2\u049f\u049d") - buf.write("\3\2\2\2\u04a0\u04aa\5\u0080A\2\u04a1\u04aa\5\u0116\u008c") - buf.write("\2\u04a2\u04aa\5\u015c\u00af\2\u04a3\u04aa\5\u0170\u00b9") - buf.write("\2\u04a4\u04aa\5\u0172\u00ba\2\u04a5\u04aa\5\u00d4k\2") - buf.write("\u04a6\u04aa\5\u00bc_\2\u04a7\u04aa\5\u0088E\2\u04a8\u04aa") - buf.write("\5\u008aF\2\u04a9\u04a0\3\2\2\2\u04a9\u04a1\3\2\2\2\u04a9") - buf.write("\u04a2\3\2\2\2\u04a9\u04a3\3\2\2\2\u04a9\u04a4\3\2\2\2") - buf.write("\u04a9\u04a5\3\2\2\2\u04a9\u04a6\3\2\2\2\u04a9\u04a7\3") - buf.write("\2\2\2\u04a9\u04a8\3\2\2\2\u04aa\177\3\2\2\2\u04ab\u04b4") - buf.write("\5\u0084C\2\u04ac\u04b4\5\u00d2j\2\u04ad\u04b4\5\u00ca") - buf.write("f\2\u04ae\u04b4\5\u00ceh\2\u04af\u04b4\5\u00d0i\2\u04b0") - buf.write("\u04b4\5\u0086D\2\u04b1\u04b4\5\u0082B\2\u04b2\u04b4\5") - buf.write("\u00acW\2\u04b3\u04ab\3\2\2\2\u04b3\u04ac\3\2\2\2\u04b3") - buf.write("\u04ad\3\2\2\2\u04b3\u04ae\3\2\2\2\u04b3\u04af\3\2\2\2") - buf.write("\u04b3\u04b0\3\2\2\2\u04b3\u04b1\3\2\2\2\u04b3\u04b2\3") - buf.write("\2\2\2\u04b4\u0081\3\2\2\2\u04b5\u04b6\7P\2\2\u04b6\u04b8") - buf.write("\7\u0087\2\2\u04b7\u04b9\5\u00d6l\2\u04b8\u04b7\3\2\2") - buf.write("\2\u04b8\u04b9\3\2\2\2\u04b9\u04ba\3\2\2\2\u04ba\u04bb") - buf.write("\7f\2\2\u04bb\u04bc\5\u0104\u0083\2\u04bc\u04bd\7\u0083") - buf.write("\2\2\u04bd\u0083\3\2\2\2\u04be\u04c0\5\u008eH\2\u04bf") - buf.write("\u04be\3\2\2\2\u04bf\u04c0\3\2\2\2\u04c0\u04c2\3\2\2\2") - buf.write("\u04c1\u04c3\5\u00ecw\2\u04c2\u04c1\3\2\2\2\u04c2\u04c3") - buf.write("\3\2\2\2\u04c3\u04c4\3\2\2\2\u04c4\u04cd\7\u0083\2\2\u04c5") - buf.write("\u04c7\5\u00d6l\2\u04c6\u04c8\5\u008eH\2\u04c7\u04c6\3") - buf.write("\2\2\2\u04c7\u04c8\3\2\2\2\u04c8\u04c9\3\2\2\2\u04c9\u04ca") - buf.write("\5\u00ecw\2\u04ca\u04cb\7\u0083\2\2\u04cb\u04cd\3\2\2") - buf.write("\2\u04cc\u04bf\3\2\2\2\u04cc\u04c5\3\2\2\2\u04cd\u0085") - buf.write("\3\2\2\2\u04ce\u04cf\7B\2\2\u04cf\u04d0\7V\2\2\u04d0\u04d1") - buf.write("\5`\61\2\u04d1\u04d2\7}\2\2\u04d2\u04d3\7\u0090\2\2\u04d3") - buf.write("\u04d4\7W\2\2\u04d4\u04d5\7\u0083\2\2\u04d5\u0087\3\2") - buf.write("\2\2\u04d6\u04d7\7\u0083\2\2\u04d7\u0089\3\2\2\2\u04d8") - buf.write("\u04d9\5\u00d6l\2\u04d9\u04da\7\u0083\2\2\u04da\u008b") - buf.write("\3\2\2\2\u04db\u04e2\5\u0090I\2\u04dc\u04e2\5\u0096L\2") - buf.write("\u04dd\u04e2\5\u0092J\2\u04de\u04e2\7+\2\2\u04df\u04e2") - buf.write("\7K\2\2\u04e0\u04e2\7\32\2\2\u04e1\u04db\3\2\2\2\u04e1") - buf.write("\u04dc\3\2\2\2\u04e1\u04dd\3\2\2\2\u04e1\u04de\3\2\2\2") - buf.write("\u04e1\u04df\3\2\2\2\u04e1\u04e0\3\2\2\2\u04e2\u008d\3") - buf.write("\2\2\2\u04e3\u04e5\5\u008cG\2\u04e4\u04e6\5\u00d6l\2\u04e5") - buf.write("\u04e4\3\2\2\2\u04e5\u04e6\3\2\2\2\u04e6\u04eb\3\2\2\2") - buf.write("\u04e7\u04e8\5\u008cG\2\u04e8\u04e9\5\u008eH\2\u04e9\u04eb") - buf.write("\3\2\2\2\u04ea\u04e3\3\2\2\2\u04ea\u04e7\3\2\2\2\u04eb") - buf.write("\u008f\3\2\2\2\u04ec\u04ed\t\6\2\2\u04ed\u0091\3\2\2\2") - buf.write("\u04ee\u04ef\t\7\2\2\u04ef\u0093\3\2\2\2\u04f0\u04f1\7") - buf.write("\u0087\2\2\u04f1\u0095\3\2\2\2\u04f2\u04f6\5\u0098M\2") - buf.write("\u04f3\u04f6\5\u0126\u0094\2\u04f4\u04f6\5\u00a8U\2\u04f5") - buf.write("\u04f2\3\2\2\2\u04f5\u04f3\3\2\2\2\u04f5\u04f4\3\2\2\2") - buf.write("\u04f6\u0097\3\2\2\2\u04f7\u04fc\5\u009eP\2\u04f8\u04fc") - buf.write("\5\u00a4S\2\u04f9\u04fc\5\u016e\u00b8\2\u04fa\u04fc\5") - buf.write("\u00fe\u0080\2\u04fb\u04f7\3\2\2\2\u04fb\u04f8\3\2\2\2") - buf.write("\u04fb\u04f9\3\2\2\2\u04fb\u04fa\3\2\2\2\u04fc\u0099\3") - buf.write("\2\2\2\u04fd\u04ff\5\u0096L\2\u04fe\u0500\5\u00d6l\2\u04ff") - buf.write("\u04fe\3\2\2\2\u04ff\u0500\3\2\2\2\u0500\u0505\3\2\2\2") - buf.write("\u0501\u0502\5\u0096L\2\u0502\u0503\5\u009aN\2\u0503\u0505") - buf.write("\3\2\2\2\u0504\u04fd\3\2\2\2\u0504\u0501\3\2\2\2\u0505") - buf.write("\u009b\3\2\2\2\u0506\u0508\5\u0098M\2\u0507\u0509\5\u00d6") - buf.write("l\2\u0508\u0507\3\2\2\2\u0508\u0509\3\2\2\2\u0509\u050e") - buf.write("\3\2\2\2\u050a\u050b\5\u0098M\2\u050b\u050c\5\u009cO\2") - buf.write("\u050c\u050e\3\2\2\2\u050d\u0506\3\2\2\2\u050d\u050a\3") - buf.write("\2\2\2\u050e\u009d\3\2\2\2\u050f\u0511\5\f\7\2\u0510\u050f") - buf.write("\3\2\2\2\u0510\u0511\3\2\2\2\u0511\u0512\3\2\2\2\u0512") - buf.write("\u0527\5\u00a0Q\2\u0513\u0514\5\f\7\2\u0514\u0515\7F\2") - buf.write("\2\u0515\u0516\5\u0164\u00b3\2\u0516\u0527\3\2\2\2\u0517") - buf.write("\u0527\7\25\2\2\u0518\u0527\7\26\2\2\u0519\u0527\7\27") - buf.write("\2\2\u051a\u0527\7T\2\2\u051b\u0527\7\21\2\2\u051c\u0527") - buf.write("\7>\2\2\u051d\u0527\7/\2\2\u051e\u0527\7\60\2\2\u051f") - buf.write("\u0527\7?\2\2\u0520\u0527\7O\2\2\u0521\u0527\7)\2\2\u0522") - buf.write("\u0527\7!\2\2\u0523\u0527\7R\2\2\u0524\u0527\7\20\2\2") - buf.write("\u0525\u0527\5\u00a2R\2\u0526\u0510\3\2\2\2\u0526\u0513") - buf.write("\3\2\2\2\u0526\u0517\3\2\2\2\u0526\u0518\3\2\2\2\u0526") - buf.write("\u0519\3\2\2\2\u0526\u051a\3\2\2\2\u0526\u051b\3\2\2\2") - buf.write("\u0526\u051c\3\2\2\2\u0526\u051d\3\2\2\2\u0526\u051e\3") - buf.write("\2\2\2\u0526\u051f\3\2\2\2\u0526\u0520\3\2\2\2\u0526\u0521") - buf.write("\3\2\2\2\u0526\u0522\3\2\2\2\u0526\u0523\3\2\2\2\u0526") - buf.write("\u0524\3\2\2\2\u0526\u0525\3\2\2\2\u0527\u009f\3\2\2\2") - buf.write("\u0528\u052d\5\u0124\u0093\2\u0529\u052d\5\u00a6T\2\u052a") - buf.write("\u052d\5\u0094K\2\u052b\u052d\5\u0164\u00b3\2\u052c\u0528") - buf.write("\3\2\2\2\u052c\u0529\3\2\2\2\u052c\u052a\3\2\2\2\u052c") - buf.write("\u052b\3\2\2\2\u052d\u00a1\3\2\2\2\u052e\u052f\7\35\2") - buf.write("\2\u052f\u0530\7V\2\2\u0530\u0531\5^\60\2\u0531\u0532") - buf.write("\7W\2\2\u0532\u0538\3\2\2\2\u0533\u0534\7\35\2\2\u0534") - buf.write("\u0535\7V\2\2\u0535\u0536\7\20\2\2\u0536\u0538\7W\2\2") - buf.write("\u0537\u052e\3\2\2\2\u0537\u0533\3\2\2\2\u0538\u00a3\3") - buf.write("\2\2\2\u0539\u053b\5\u012e\u0098\2\u053a\u053c\5\u00d6") - buf.write("l\2\u053b\u053a\3\2\2\2\u053b\u053c\3\2\2\2\u053c\u053e") - buf.write("\3\2\2\2\u053d\u053f\5\f\7\2\u053e\u053d\3\2\2\2\u053e") - buf.write("\u053f\3\2\2\2\u053f\u0540\3\2\2\2\u0540\u0541\7\u0087") - buf.write("\2\2\u0541\u0552\3\2\2\2\u0542\u0543\5\u012e\u0098\2\u0543") - buf.write("\u0544\5\u0164\u00b3\2\u0544\u0552\3\2\2\2\u0545\u0546") - buf.write("\5\u012e\u0098\2\u0546\u0548\5\f\7\2\u0547\u0549\7F\2") - buf.write("\2\u0548\u0547\3\2\2\2\u0548\u0549\3\2\2\2\u0549\u054a") - buf.write("\3\2\2\2\u054a\u054b\5\u0164\u00b3\2\u054b\u0552\3\2\2") - buf.write("\2\u054c\u054e\7$\2\2\u054d\u054f\5\f\7\2\u054e\u054d") - buf.write("\3\2\2\2\u054e\u054f\3\2\2\2\u054f\u0550\3\2\2\2\u0550") - buf.write("\u0552\7\u0087\2\2\u0551\u0539\3\2\2\2\u0551\u0542\3\2") - buf.write("\2\2\u0551\u0545\3\2\2\2\u0551\u054c\3\2\2\2\u0552\u00a5") - buf.write("\3\2\2\2\u0553\u0554\7\u0087\2\2\u0554\u00a7\3\2\2\2\u0555") - buf.write("\u0556\5\u00aaV\2\u0556\u0558\7Z\2\2\u0557\u0559\5\u00b2") - buf.write("Z\2\u0558\u0557\3\2\2\2\u0558\u0559\3\2\2\2\u0559\u055a") - buf.write("\3\2\2\2\u055a\u055b\7[\2\2\u055b\u0563\3\2\2\2\u055c") - buf.write("\u055d\5\u00aaV\2\u055d\u055e\7Z\2\2\u055e\u055f\5\u00b2") - buf.write("Z\2\u055f\u0560\7}\2\2\u0560\u0561\7[\2\2\u0561\u0563") - buf.write("\3\2\2\2\u0562\u0555\3\2\2\2\u0562\u055c\3\2\2\2\u0563") - buf.write("\u00a9\3\2\2\2\u0564\u0566\5\u00aeX\2\u0565\u0567\5\u00d6") - buf.write("l\2\u0566\u0565\3\2\2\2\u0566\u0567\3\2\2\2\u0567\u0569") - buf.write("\3\2\2\2\u0568\u056a\7\u0087\2\2\u0569\u0568\3\2\2\2\u0569") - buf.write("\u056a\3\2\2\2\u056a\u056c\3\2\2\2\u056b\u056d\5\u00b0") - buf.write("Y\2\u056c\u056b\3\2\2\2\u056c\u056d\3\2\2\2\u056d\u0578") - buf.write("\3\2\2\2\u056e\u0570\5\u00aeX\2\u056f\u0571\5\u00d6l\2") - buf.write("\u0570\u056f\3\2\2\2\u0570\u0571\3\2\2\2\u0571\u0572\3") - buf.write("\2\2\2\u0572\u0573\5\f\7\2\u0573\u0575\7\u0087\2\2\u0574") - buf.write("\u0576\5\u00b0Y\2\u0575\u0574\3\2\2\2\u0575\u0576\3\2") - buf.write("\2\2\u0576\u0578\3\2\2\2\u0577\u0564\3\2\2\2\u0577\u056e") - buf.write("\3\2\2\2\u0578\u00ab\3\2\2\2\u0579\u057b\5\u00aeX\2\u057a") - buf.write("\u057c\5\u00d6l\2\u057b\u057a\3\2\2\2\u057b\u057c\3\2") - buf.write("\2\2\u057c\u057d\3\2\2\2\u057d\u057f\7\u0087\2\2\u057e") - buf.write("\u0580\5\u00b0Y\2\u057f\u057e\3\2\2\2\u057f\u0580\3\2") - buf.write("\2\2\u0580\u0581\3\2\2\2\u0581\u0582\7\u0083\2\2\u0582") - buf.write("\u00ad\3\2\2\2\u0583\u0589\7$\2\2\u0584\u0585\7$\2\2\u0585") - buf.write("\u0589\7\30\2\2\u0586\u0587\7$\2\2\u0587\u0589\7D\2\2") - buf.write("\u0588\u0583\3\2\2\2\u0588\u0584\3\2\2\2\u0588\u0586\3") - buf.write("\2\2\2\u0589\u00af\3\2\2\2\u058a\u058b\7\u0081\2\2\u058b") - buf.write("\u058c\5\u009aN\2\u058c\u00b1\3\2\2\2\u058d\u058e\bZ\1") - buf.write("\2\u058e\u058f\5\u00b4[\2\u058f\u0595\3\2\2\2\u0590\u0591") - buf.write("\f\3\2\2\u0591\u0592\7}\2\2\u0592\u0594\5\u00b4[\2\u0593") - buf.write("\u0590\3\2\2\2\u0594\u0597\3\2\2\2\u0595\u0593\3\2\2\2") - buf.write("\u0595\u0596\3\2\2\2\u0596\u00b3\3\2\2\2\u0597\u0595\3") - buf.write("\2\2\2\u0598\u059e\5\u00b6\\\2\u0599\u059a\5\u00b6\\\2") - buf.write("\u059a\u059b\7f\2\2\u059b\u059c\5`\61\2\u059c\u059e\3") - buf.write("\2\2\2\u059d\u0598\3\2\2\2\u059d\u0599\3\2\2\2\u059e\u00b5") - buf.write("\3\2\2\2\u059f\u05a0\7\u0087\2\2\u05a0\u00b7\3\2\2\2\u05a1") - buf.write("\u05a4\5\u00ba^\2\u05a2\u05a4\5\u00c8e\2\u05a3\u05a1\3") - buf.write("\2\2\2\u05a3\u05a2\3\2\2\2\u05a4\u00b9\3\2\2\2\u05a5\u05a6") - buf.write("\7\u0087\2\2\u05a6\u00bb\3\2\2\2\u05a7\u05aa\5\u00be`") - buf.write("\2\u05a8\u05aa\5\u00c4c\2\u05a9\u05a7\3\2\2\2\u05a9\u05a8") - buf.write("\3\2\2\2\u05aa\u00bd\3\2\2\2\u05ab\u05ae\5\u00c0a\2\u05ac") - buf.write("\u05ae\5\u00c2b\2\u05ad\u05ab\3\2\2\2\u05ad\u05ac\3\2") - buf.write("\2\2\u05ae\u00bf\3\2\2\2\u05af\u05b1\7.\2\2\u05b0\u05af") - buf.write("\3\2\2\2\u05b0\u05b1\3\2\2\2\u05b1\u05b2\3\2\2\2\u05b2") - buf.write("\u05b3\7\62\2\2\u05b3\u05b4\7\u0087\2\2\u05b4\u05b5\7") - buf.write("Z\2\2\u05b5\u05b6\5\u00c6d\2\u05b6\u05b7\7[\2\2\u05b7") - buf.write("\u00c1\3\2\2\2\u05b8\u05ba\7.\2\2\u05b9\u05b8\3\2\2\2") - buf.write("\u05b9\u05ba\3\2\2\2\u05ba\u05bb\3\2\2\2\u05bb\u05bc\7") - buf.write("\62\2\2\u05bc\u05bd\5\u00ba^\2\u05bd\u05be\7Z\2\2\u05be") - buf.write("\u05bf\5\u00c6d\2\u05bf\u05c0\7[\2\2\u05c0\u00c3\3\2\2") - buf.write("\2\u05c1\u05c3\7.\2\2\u05c2\u05c1\3\2\2\2\u05c2\u05c3") - buf.write("\3\2\2\2\u05c3\u05c4\3\2\2\2\u05c4\u05c5\7\62\2\2\u05c5") - buf.write("\u05c6\7Z\2\2\u05c6\u05c7\5\u00c6d\2\u05c7\u05c8\7[\2") - buf.write("\2\u05c8\u00c5\3\2\2\2\u05c9\u05cb\5|?\2\u05ca\u05c9\3") - buf.write("\2\2\2\u05ca\u05cb\3\2\2\2\u05cb\u00c7\3\2\2\2\u05cc\u05cd") - buf.write("\7\u0087\2\2\u05cd\u00c9\3\2\2\2\u05ce\u05cf\7\62\2\2") - buf.write("\u05cf\u05d0\7\u0087\2\2\u05d0\u05d1\7f\2\2\u05d1\u05d2") - buf.write("\5\u00ccg\2\u05d2\u05d3\7\u0083\2\2\u05d3\u00cb\3\2\2") - buf.write("\2\u05d4\u05d6\5\f\7\2\u05d5\u05d4\3\2\2\2\u05d5\u05d6") - buf.write("\3\2\2\2\u05d6\u05d7\3\2\2\2\u05d7\u05d8\5\u00b8]\2\u05d8") - buf.write("\u00cd\3\2\2\2\u05d9\u05db\7P\2\2\u05da\u05dc\7M\2\2\u05db") - buf.write("\u05da\3\2\2\2\u05db\u05dc\3\2\2\2\u05dc\u05dd\3\2\2\2") - buf.write("\u05dd\u05de\5\f\7\2\u05de\u05df\5\b\5\2\u05df\u05e0\7") - buf.write("\u0083\2\2\u05e0\u05e7\3\2\2\2\u05e1\u05e2\7P\2\2\u05e2") - buf.write("\u05e3\7\u0082\2\2\u05e3\u05e4\5\b\5\2\u05e4\u05e5\7\u0083") - buf.write("\2\2\u05e5\u05e7\3\2\2\2\u05e6\u05d9\3\2\2\2\u05e6\u05e1") - buf.write("\3\2\2\2\u05e7\u00cf\3\2\2\2\u05e8\u05ea\5\u00d6l\2\u05e9") - buf.write("\u05e8\3\2\2\2\u05e9\u05ea\3\2\2\2\u05ea\u05eb\3\2\2\2") - buf.write("\u05eb\u05ec\7P\2\2\u05ec\u05ee\7\62\2\2\u05ed\u05ef\5") - buf.write("\f\7\2\u05ee\u05ed\3\2\2\2\u05ee\u05ef\3\2\2\2\u05ef\u05f0") - buf.write("\3\2\2\2\u05f0\u05f1\5\u00b8]\2\u05f1\u05f2\7\u0083\2") - buf.write("\2\u05f2\u00d1\3\2\2\2\u05f3\u05f4\7\17\2\2\u05f4\u05f5") - buf.write("\7V\2\2\u05f5\u05f6\7\u0090\2\2\u05f6\u05f7\7W\2\2\u05f7") - buf.write("\u05f8\7\u0083\2\2\u05f8\u00d3\3\2\2\2\u05f9\u05fa\7\'") - buf.write("\2\2\u05fa\u05fb\7\u0090\2\2\u05fb\u05fd\7Z\2\2\u05fc") - buf.write("\u05fe\5|?\2\u05fd\u05fc\3\2\2\2\u05fd\u05fe\3\2\2\2\u05fe") - buf.write("\u05ff\3\2\2\2\u05ff\u0604\7[\2\2\u0600\u0601\7\'\2\2") - buf.write("\u0601\u0602\7\u0090\2\2\u0602\u0604\5~@\2\u0603\u05f9") - buf.write("\3\2\2\2\u0603\u0600\3\2\2\2\u0604\u00d5\3\2\2\2\u0605") - buf.write("\u0606\bl\1\2\u0606\u0607\5\u00d8m\2\u0607\u060c\3\2\2") - buf.write("\2\u0608\u0609\f\3\2\2\u0609\u060b\5\u00d8m\2\u060a\u0608") - buf.write("\3\2\2\2\u060b\u060e\3\2\2\2\u060c\u060a\3\2\2\2\u060c") - buf.write("\u060d\3\2\2\2\u060d\u00d7\3\2\2\2\u060e\u060c\3\2\2\2") - buf.write("\u060f\u0610\7X\2\2\u0610\u0611\7X\2\2\u0611\u0612\5\u00dc") - buf.write("o\2\u0612\u0613\7Y\2\2\u0613\u0614\7Y\2\2\u0614\u0617") - buf.write("\3\2\2\2\u0615\u0617\5\u00dan\2\u0616\u060f\3\2\2\2\u0616") - buf.write("\u0615\3\2\2\2\u0617\u00d9\3\2\2\2\u0618\u0619\7\r\2\2") - buf.write("\u0619\u061a\7V\2\2\u061a\u061c\5\u0104\u0083\2\u061b") - buf.write("\u061d\7\u0086\2\2\u061c\u061b\3\2\2\2\u061c\u061d\3\2") - buf.write("\2\2\u061d\u061e\3\2\2\2\u061e\u061f\7W\2\2\u061f\u0629") - buf.write("\3\2\2\2\u0620\u0621\7\r\2\2\u0621\u0622\7V\2\2\u0622") - buf.write("\u0624\5`\61\2\u0623\u0625\7\u0086\2\2\u0624\u0623\3\2") - buf.write("\2\2\u0624\u0625\3\2\2\2\u0625\u0626\3\2\2\2\u0626\u0627") - buf.write("\7W\2\2\u0627\u0629\3\2\2\2\u0628\u0618\3\2\2\2\u0628") - buf.write("\u0620\3\2\2\2\u0629\u00db\3\2\2\2\u062a\u062c\bo\1\2") - buf.write("\u062b\u062d\5\u00dep\2\u062c\u062b\3\2\2\2\u062c\u062d") - buf.write("\3\2\2\2\u062d\u0632\3\2\2\2\u062e\u062f\5\u00dep\2\u062f") - buf.write("\u0630\7\u0086\2\2\u0630\u0632\3\2\2\2\u0631\u062a\3\2") - buf.write("\2\2\u0631\u062e\3\2\2\2\u0632\u063f\3\2\2\2\u0633\u0634") - buf.write("\f\5\2\2\u0634\u0636\7}\2\2\u0635\u0637\5\u00dep\2\u0636") - buf.write("\u0635\3\2\2\2\u0636\u0637\3\2\2\2\u0637\u063e\3\2\2\2") - buf.write("\u0638\u0639\f\3\2\2\u0639\u063a\7}\2\2\u063a\u063b\5") - buf.write("\u00dep\2\u063b\u063c\7\u0086\2\2\u063c\u063e\3\2\2\2") - buf.write("\u063d\u0633\3\2\2\2\u063d\u0638\3\2\2\2\u063e\u0641\3") - buf.write("\2\2\2\u063f\u063d\3\2\2\2\u063f\u0640\3\2\2\2\u0640\u00dd") - buf.write("\3\2\2\2\u0641\u063f\3\2\2\2\u0642\u0644\5\u00e0q\2\u0643") - buf.write("\u0645\5\u00e6t\2\u0644\u0643\3\2\2\2\u0644\u0645\3\2") - buf.write("\2\2\u0645\u00df\3\2\2\2\u0646\u0649\7\u0087\2\2\u0647") - buf.write("\u0649\5\u00e2r\2\u0648\u0646\3\2\2\2\u0648\u0647\3\2") - buf.write("\2\2\u0649\u00e1\3\2\2\2\u064a\u064b\5\u00e4s\2\u064b") - buf.write("\u064c\7\u0082\2\2\u064c\u064d\7\u0087\2\2\u064d\u00e3") - buf.write("\3\2\2\2\u064e\u064f\7\u0087\2\2\u064f\u00e5\3\2\2\2\u0650") - buf.write("\u0651\7V\2\2\u0651\u0652\5\u00e8u\2\u0652\u0653\7W\2") - buf.write("\2\u0653\u00e7\3\2\2\2\u0654\u0656\bu\1\2\u0655\u0657") - buf.write("\5\u00eav\2\u0656\u0655\3\2\2\2\u0656\u0657\3\2\2\2\u0657") - buf.write("\u065c\3\2\2\2\u0658\u0659\f\3\2\2\u0659\u065b\5\u00ea") - buf.write("v\2\u065a\u0658\3\2\2\2\u065b\u065e\3\2\2\2\u065c\u065a") - buf.write("\3\2\2\2\u065c\u065d\3\2\2\2\u065d\u00e9\3\2\2\2\u065e") - buf.write("\u065c\3\2\2\2\u065f\u0660\7V\2\2\u0660\u0661\5\u00e8") - buf.write("u\2\u0661\u0662\7W\2\2\u0662\u0671\3\2\2\2\u0663\u0664") - buf.write("\7X\2\2\u0664\u0665\5\u00e8u\2\u0665\u0666\7Y\2\2\u0666") - buf.write("\u0671\3\2\2\2\u0667\u0668\7Z\2\2\u0668\u0669\5\u00e8") - buf.write("u\2\u0669\u066a\7[\2\2\u066a\u0671\3\2\2\2\u066b\u066d") - buf.write("\n\b\2\2\u066c\u066b\3\2\2\2\u066d\u066e\3\2\2\2\u066e") - buf.write("\u066c\3\2\2\2\u066e\u066f\3\2\2\2\u066f\u0671\3\2\2\2") - buf.write("\u0670\u065f\3\2\2\2\u0670\u0663\3\2\2\2\u0670\u0667\3") - buf.write("\2\2\2\u0670\u066c\3\2\2\2\u0671\u00eb\3\2\2\2\u0672\u0673") - buf.write("\bw\1\2\u0673\u0674\5\u00eex\2\u0674\u067a\3\2\2\2\u0675") - buf.write("\u0676\f\3\2\2\u0676\u0677\7}\2\2\u0677\u0679\5\u00ee") - buf.write("x\2\u0678\u0675\3\2\2\2\u0679\u067c\3\2\2\2\u067a\u0678") - buf.write("\3\2\2\2\u067a\u067b\3\2\2\2\u067b\u00ed\3\2\2\2\u067c") - buf.write("\u067a\3\2\2\2\u067d\u067f\5\u00f0y\2\u067e\u0680\5\u011a") - buf.write("\u008e\2\u067f\u067e\3\2\2\2\u067f\u0680\3\2\2\2\u0680") - buf.write("\u00ef\3\2\2\2\u0681\u0687\5\u00f2z\2\u0682\u0683\5\u00f4") - buf.write("{\2\u0683\u0684\5\u00f6|\2\u0684\u0685\5\u00f8}\2\u0685") - buf.write("\u0687\3\2\2\2\u0686\u0681\3\2\2\2\u0686\u0682\3\2\2\2") - buf.write("\u0687\u00f1\3\2\2\2\u0688\u068d\5\u00f4{\2\u0689\u068a") - buf.write("\5\u00fa~\2\u068a\u068b\5\u00f2z\2\u068b\u068d\3\2\2\2") - buf.write("\u068c\u0688\3\2\2\2\u068c\u0689\3\2\2\2\u068d\u00f3\3") - buf.write("\2\2\2\u068e\u068f\b{\1\2\u068f\u0691\5\u0102\u0082\2") - buf.write("\u0690\u0692\5\u00d6l\2\u0691\u0690\3\2\2\2\u0691\u0692") - buf.write("\3\2\2\2\u0692\u0698\3\2\2\2\u0693\u0694\7V\2\2\u0694") - buf.write("\u0695\5\u00f2z\2\u0695\u0696\7W\2\2\u0696\u0698\3\2\2") - buf.write("\2\u0697\u068e\3\2\2\2\u0697\u0693\3\2\2\2\u0698\u06a6") - buf.write("\3\2\2\2\u0699\u069a\f\5\2\2\u069a\u06a5\5\u00f6|\2\u069b") - buf.write("\u069c\f\4\2\2\u069c\u069e\7X\2\2\u069d\u069f\5`\61\2") - buf.write("\u069e\u069d\3\2\2\2\u069e\u069f\3\2\2\2\u069f\u06a0\3") - buf.write("\2\2\2\u06a0\u06a2\7Y\2\2\u06a1\u06a3\5\u00d6l\2\u06a2") - buf.write("\u06a1\3\2\2\2\u06a2\u06a3\3\2\2\2\u06a3\u06a5\3\2\2\2") - buf.write("\u06a4\u0699\3\2\2\2\u06a4\u069b\3\2\2\2\u06a5\u06a8\3") - buf.write("\2\2\2\u06a6\u06a4\3\2\2\2\u06a6\u06a7\3\2\2\2\u06a7\u00f5") - buf.write("\3\2\2\2\u06a8\u06a6\3\2\2\2\u06a9\u06aa\7V\2\2\u06aa") - buf.write("\u06ab\5\u0110\u0089\2\u06ab\u06ad\7W\2\2\u06ac\u06ae") - buf.write("\5\u00fc\177\2\u06ad\u06ac\3\2\2\2\u06ad\u06ae\3\2\2\2") - buf.write("\u06ae\u06b0\3\2\2\2\u06af\u06b1\5\u0100\u0081\2\u06b0") - buf.write("\u06af\3\2\2\2\u06b0\u06b1\3\2\2\2\u06b1\u06b3\3\2\2\2") - buf.write("\u06b2\u06b4\5\u0180\u00c1\2\u06b3\u06b2\3\2\2\2\u06b3") - buf.write("\u06b4\3\2\2\2\u06b4\u06b6\3\2\2\2\u06b5\u06b7\5\u00d6") - buf.write("l\2\u06b6\u06b5\3\2\2\2\u06b6\u06b7\3\2\2\2\u06b7\u00f7") - buf.write("\3\2\2\2\u06b8\u06b9\7\177\2\2\u06b9\u06bb\5\u009cO\2") - buf.write("\u06ba\u06bc\5\u0106\u0084\2\u06bb\u06ba\3\2\2\2\u06bb") - buf.write("\u06bc\3\2\2\2\u06bc\u00f9\3\2\2\2\u06bd\u06bf\7^\2\2") - buf.write("\u06be\u06c0\5\u00d6l\2\u06bf\u06be\3\2\2\2\u06bf\u06c0") - buf.write("\3\2\2\2\u06c0\u06c2\3\2\2\2\u06c1\u06c3\5\u00fc\177\2") - buf.write("\u06c2\u06c1\3\2\2\2\u06c2\u06c3\3\2\2\2\u06c3\u06d5\3") - buf.write("\2\2\2\u06c4\u06c6\7b\2\2\u06c5\u06c7\5\u00d6l\2\u06c6") - buf.write("\u06c5\3\2\2\2\u06c6\u06c7\3\2\2\2\u06c7\u06d5\3\2\2\2") - buf.write("\u06c8\u06ca\7\5\2\2\u06c9\u06cb\5\u00d6l\2\u06ca\u06c9") - buf.write("\3\2\2\2\u06ca\u06cb\3\2\2\2\u06cb\u06d5\3\2\2\2\u06cc") - buf.write("\u06cd\5\f\7\2\u06cd\u06cf\7^\2\2\u06ce\u06d0\5\u00d6") - buf.write("l\2\u06cf\u06ce\3\2\2\2\u06cf\u06d0\3\2\2\2\u06d0\u06d2") - buf.write("\3\2\2\2\u06d1\u06d3\5\u00fc\177\2\u06d2\u06d1\3\2\2\2") - buf.write("\u06d2\u06d3\3\2\2\2\u06d3\u06d5\3\2\2\2\u06d4\u06bd\3") - buf.write("\2\2\2\u06d4\u06c4\3\2\2\2\u06d4\u06c8\3\2\2\2\u06d4\u06cc") - buf.write("\3\2\2\2\u06d5\u00fb\3\2\2\2\u06d6\u06d8\5\u00fe\u0080") - buf.write("\2\u06d7\u06d9\5\u00fc\177\2\u06d8\u06d7\3\2\2\2\u06d8") - buf.write("\u06d9\3\2\2\2\u06d9\u00fd\3\2\2\2\u06da\u06db\t\t\2\2") - buf.write("\u06db\u00ff\3\2\2\2\u06dc\u06dd\t\n\2\2\u06dd\u0101\3") - buf.write("\2\2\2\u06de\u06e0\7\u0086\2\2\u06df\u06de\3\2\2\2\u06df") - buf.write("\u06e0\3\2\2\2\u06e0\u06e1\3\2\2\2\u06e1\u06e2\5\6\4\2") - buf.write("\u06e2\u0103\3\2\2\2\u06e3\u06e5\5\u009aN\2\u06e4\u06e6") - buf.write("\5\u0106\u0084\2\u06e5\u06e4\3\2\2\2\u06e5\u06e6\3\2\2") - buf.write("\2\u06e6\u0105\3\2\2\2\u06e7\u06f0\5\u0108\u0085\2\u06e8") - buf.write("\u06ea\5\u010a\u0086\2\u06e9\u06e8\3\2\2\2\u06e9\u06ea") - buf.write("\3\2\2\2\u06ea\u06eb\3\2\2\2\u06eb\u06ec\5\u00f6|\2\u06ec") - buf.write("\u06ed\5\u00f8}\2\u06ed\u06f0\3\2\2\2\u06ee\u06f0\5\u010c") - buf.write("\u0087\2\u06ef\u06e7\3\2\2\2\u06ef\u06e9\3\2\2\2\u06ef") - buf.write("\u06ee\3\2\2\2\u06f0\u0107\3\2\2\2\u06f1\u06f7\5\u010a") - buf.write("\u0086\2\u06f2\u06f4\5\u00fa~\2\u06f3\u06f5\5\u0108\u0085") - buf.write("\2\u06f4\u06f3\3\2\2\2\u06f4\u06f5\3\2\2\2\u06f5\u06f7") - buf.write("\3\2\2\2\u06f6\u06f1\3\2\2\2\u06f6\u06f2\3\2\2\2\u06f7") - buf.write("\u0109\3\2\2\2\u06f8\u06f9\b\u0086\1\2\u06f9\u0707\5\u00f6") - buf.write("|\2\u06fa\u06fc\7X\2\2\u06fb\u06fd\5`\61\2\u06fc\u06fb") - buf.write("\3\2\2\2\u06fc\u06fd\3\2\2\2\u06fd\u06fe\3\2\2\2\u06fe") - buf.write("\u0700\7Y\2\2\u06ff\u0701\5\u00d6l\2\u0700\u06ff\3\2\2") - buf.write("\2\u0700\u0701\3\2\2\2\u0701\u0707\3\2\2\2\u0702\u0703") - buf.write("\7V\2\2\u0703\u0704\5\u0108\u0085\2\u0704\u0705\7W\2\2") - buf.write("\u0705\u0707\3\2\2\2\u0706\u06f8\3\2\2\2\u0706\u06fa\3") - buf.write("\2\2\2\u0706\u0702\3\2\2\2\u0707\u0715\3\2\2\2\u0708\u0709") - buf.write("\f\7\2\2\u0709\u0714\5\u00f6|\2\u070a\u070b\f\5\2\2\u070b") - buf.write("\u070d\7X\2\2\u070c\u070e\5`\61\2\u070d\u070c\3\2\2\2") - buf.write("\u070d\u070e\3\2\2\2\u070e\u070f\3\2\2\2\u070f\u0711\7") - buf.write("Y\2\2\u0710\u0712\5\u00d6l\2\u0711\u0710\3\2\2\2\u0711") - buf.write("\u0712\3\2\2\2\u0712\u0714\3\2\2\2\u0713\u0708\3\2\2\2") - buf.write("\u0713\u070a\3\2\2\2\u0714\u0717\3\2\2\2\u0715\u0713\3") - buf.write("\2\2\2\u0715\u0716\3\2\2\2\u0716\u010b\3\2\2\2\u0717\u0715") - buf.write("\3\2\2\2\u0718\u071d\5\u010e\u0088\2\u0719\u071a\5\u00fa") - buf.write("~\2\u071a\u071b\5\u010c\u0087\2\u071b\u071d\3\2\2\2\u071c") - buf.write("\u0718\3\2\2\2\u071c\u0719\3\2\2\2\u071d\u010d\3\2\2\2") - buf.write("\u071e\u071f\b\u0088\1\2\u071f\u0720\7\u0086\2\2\u0720") - buf.write("\u072e\3\2\2\2\u0721\u0722\f\5\2\2\u0722\u072d\5\u00f6") - buf.write("|\2\u0723\u0724\f\4\2\2\u0724\u0726\7X\2\2\u0725\u0727") - buf.write("\5`\61\2\u0726\u0725\3\2\2\2\u0726\u0727\3\2\2\2\u0727") - buf.write("\u0728\3\2\2\2\u0728\u072a\7Y\2\2\u0729\u072b\5\u00d6") - buf.write("l\2\u072a\u0729\3\2\2\2\u072a\u072b\3\2\2\2\u072b\u072d") - buf.write("\3\2\2\2\u072c\u0721\3\2\2\2\u072c\u0723\3\2\2\2\u072d") - buf.write("\u0730\3\2\2\2\u072e\u072c\3\2\2\2\u072e\u072f\3\2\2\2") - buf.write("\u072f\u010f\3\2\2\2\u0730\u072e\3\2\2\2\u0731\u0733\5") - buf.write("\u0112\u008a\2\u0732\u0731\3\2\2\2\u0732\u0733\3\2\2\2") - buf.write("\u0733\u0735\3\2\2\2\u0734\u0736\7\u0086\2\2\u0735\u0734") - buf.write("\3\2\2\2\u0735\u0736\3\2\2\2\u0736\u073c\3\2\2\2\u0737") - buf.write("\u0738\5\u0112\u008a\2\u0738\u0739\7}\2\2\u0739\u073a") - buf.write("\7\u0086\2\2\u073a\u073c\3\2\2\2\u073b\u0732\3\2\2\2\u073b") - buf.write("\u0737\3\2\2\2\u073c\u0111\3\2\2\2\u073d\u073e\b\u008a") - buf.write("\1\2\u073e\u073f\5\u0114\u008b\2\u073f\u0745\3\2\2\2\u0740") - buf.write("\u0741\f\3\2\2\u0741\u0742\7}\2\2\u0742\u0744\5\u0114") - buf.write("\u008b\2\u0743\u0740\3\2\2\2\u0744\u0747\3\2\2\2\u0745") - buf.write("\u0743\3\2\2\2\u0745\u0746\3\2\2\2\u0746\u0113\3\2\2\2") - buf.write("\u0747\u0745\3\2\2\2\u0748\u074a\5\u00d6l\2\u0749\u0748") - buf.write("\3\2\2\2\u0749\u074a\3\2\2\2\u074a\u074b\3\2\2\2\u074b") - buf.write("\u074c\5\u008eH\2\u074c\u074d\5\u00f0y\2\u074d\u0768\3") - buf.write("\2\2\2\u074e\u0750\5\u00d6l\2\u074f\u074e\3\2\2\2\u074f") - buf.write("\u0750\3\2\2\2\u0750\u0751\3\2\2\2\u0751\u0752\5\u008e") - buf.write("H\2\u0752\u0753\5\u00f0y\2\u0753\u0754\7f\2\2\u0754\u0755") - buf.write("\5\u011e\u0090\2\u0755\u0768\3\2\2\2\u0756\u0758\5\u00d6") - buf.write("l\2\u0757\u0756\3\2\2\2\u0757\u0758\3\2\2\2\u0758\u0759") - buf.write("\3\2\2\2\u0759\u075b\5\u008eH\2\u075a\u075c\5\u0106\u0084") - buf.write("\2\u075b\u075a\3\2\2\2\u075b\u075c\3\2\2\2\u075c\u0768") - buf.write("\3\2\2\2\u075d\u075f\5\u00d6l\2\u075e\u075d\3\2\2\2\u075e") - buf.write("\u075f\3\2\2\2\u075f\u0760\3\2\2\2\u0760\u0762\5\u008e") - buf.write("H\2\u0761\u0763\5\u0106\u0084\2\u0762\u0761\3\2\2\2\u0762") - buf.write("\u0763\3\2\2\2\u0763\u0764\3\2\2\2\u0764\u0765\7f\2\2") - buf.write("\u0765\u0766\5\u011e\u0090\2\u0766\u0768\3\2\2\2\u0767") - buf.write("\u0749\3\2\2\2\u0767\u074f\3\2\2\2\u0767\u0757\3\2\2\2") - buf.write("\u0767\u075e\3\2\2\2\u0768\u0115\3\2\2\2\u0769\u076b\5") - buf.write("\u00d6l\2\u076a\u0769\3\2\2\2\u076a\u076b\3\2\2\2\u076b") - buf.write("\u076d\3\2\2\2\u076c\u076e\5\u008eH\2\u076d\u076c\3\2") - buf.write("\2\2\u076d\u076e\3\2\2\2\u076e\u076f\3\2\2\2\u076f\u0771") - buf.write("\5\u00f0y\2\u0770\u0772\5\u0138\u009d\2\u0771\u0770\3") - buf.write("\2\2\2\u0771\u0772\3\2\2\2\u0772\u0773\3\2\2\2\u0773\u0774") - buf.write("\5\u0118\u008d\2\u0774\u0117\3\2\2\2\u0775\u0777\5\u0150") - buf.write("\u00a9\2\u0776\u0775\3\2\2\2\u0776\u0777\3\2\2\2\u0777") - buf.write("\u0778\3\2\2\2\u0778\u0781\5h\65\2\u0779\u0781\5\u0176") - buf.write("\u00bc\2\u077a\u077b\7f\2\2\u077b\u077c\7\36\2\2\u077c") - buf.write("\u0781\7\u0083\2\2\u077d\u077e\7f\2\2\u077e\u077f\7\37") - buf.write("\2\2\u077f\u0781\7\u0083\2\2\u0780\u0776\3\2\2\2\u0780") - buf.write("\u0779\3\2\2\2\u0780\u077a\3\2\2\2\u0780\u077d\3\2\2\2") - buf.write("\u0781\u0119\3\2\2\2\u0782\u0788\5\u011c\u008f\2\u0783") - buf.write("\u0784\7V\2\2\u0784\u0785\5&\24\2\u0785\u0786\7W\2\2\u0786") - buf.write("\u0788\3\2\2\2\u0787\u0782\3\2\2\2\u0787\u0783\3\2\2\2") - buf.write("\u0788\u011b\3\2\2\2\u0789\u078a\7f\2\2\u078a\u078d\5") - buf.write("\u011e\u0090\2\u078b\u078d\5\u0122\u0092\2\u078c\u0789") - buf.write("\3\2\2\2\u078c\u078b\3\2\2\2\u078d\u011d\3\2\2\2\u078e") - buf.write("\u0791\5Z.\2\u078f\u0791\5\u0122\u0092\2\u0790\u078e\3") - buf.write("\2\2\2\u0790\u078f\3\2\2\2\u0791\u011f\3\2\2\2\u0792\u0793") - buf.write("\b\u0091\1\2\u0793\u0795\5\u011e\u0090\2\u0794\u0796\7") - buf.write("\u0086\2\2\u0795\u0794\3\2\2\2\u0795\u0796\3\2\2\2\u0796") - buf.write("\u079f\3\2\2\2\u0797\u0798\f\3\2\2\u0798\u0799\7}\2\2") - buf.write("\u0799\u079b\5\u011e\u0090\2\u079a\u079c\7\u0086\2\2\u079b") - buf.write("\u079a\3\2\2\2\u079b\u079c\3\2\2\2\u079c\u079e\3\2\2\2") - buf.write("\u079d\u0797\3\2\2\2\u079e\u07a1\3\2\2\2\u079f\u079d\3") - buf.write("\2\2\2\u079f\u07a0\3\2\2\2\u07a0\u0121\3\2\2\2\u07a1\u079f") - buf.write("\3\2\2\2\u07a2\u07a3\7Z\2\2\u07a3\u07a5\5\u0120\u0091") - buf.write("\2\u07a4\u07a6\7}\2\2\u07a5\u07a4\3\2\2\2\u07a5\u07a6") - buf.write("\3\2\2\2\u07a6\u07a7\3\2\2\2\u07a7\u07a8\7[\2\2\u07a8") - buf.write("\u07ac\3\2\2\2\u07a9\u07aa\7Z\2\2\u07aa\u07ac\7[\2\2\u07ab") - buf.write("\u07a2\3\2\2\2\u07ab\u07a9\3\2\2\2\u07ac\u0123\3\2\2\2") - buf.write("\u07ad\u07b0\7\u0087\2\2\u07ae\u07b0\5\u0164\u00b3\2\u07af") - buf.write("\u07ad\3\2\2\2\u07af\u07ae\3\2\2\2\u07b0\u0125\3\2\2\2") - buf.write("\u07b1\u07b2\5\u0128\u0095\2\u07b2\u07b4\7Z\2\2\u07b3") - buf.write("\u07b5\5\u0130\u0099\2\u07b4\u07b3\3\2\2\2\u07b4\u07b5") - buf.write("\3\2\2\2\u07b5\u07b6\3\2\2\2\u07b6\u07b7\7[\2\2\u07b7") - buf.write("\u0127\3\2\2\2\u07b8\u07ba\5\u012e\u0098\2\u07b9\u07bb") - buf.write("\5\u00d6l\2\u07ba\u07b9\3\2\2\2\u07ba\u07bb\3\2\2\2\u07bb") - buf.write("\u07bc\3\2\2\2\u07bc\u07be\5\u012a\u0096\2\u07bd\u07bf") - buf.write("\5\u012c\u0097\2\u07be\u07bd\3\2\2\2\u07be\u07bf\3\2\2") - buf.write("\2\u07bf\u07c1\3\2\2\2\u07c0\u07c2\5\u013e\u00a0\2\u07c1") - buf.write("\u07c0\3\2\2\2\u07c1\u07c2\3\2\2\2\u07c2\u07cb\3\2\2\2") - buf.write("\u07c3\u07c5\5\u012e\u0098\2\u07c4\u07c6\5\u00d6l\2\u07c5") - buf.write("\u07c4\3\2\2\2\u07c5\u07c6\3\2\2\2\u07c6\u07c8\3\2\2\2") - buf.write("\u07c7\u07c9\5\u013e\u00a0\2\u07c8\u07c7\3\2\2\2\u07c8") - buf.write("\u07c9\3\2\2\2\u07c9\u07cb\3\2\2\2\u07ca\u07b8\3\2\2\2") - buf.write("\u07ca\u07c3\3\2\2\2\u07cb\u0129\3\2\2\2\u07cc\u07ce\5") - buf.write("\f\7\2\u07cd\u07cc\3\2\2\2\u07cd\u07ce\3\2\2\2\u07ce\u07cf") - buf.write("\3\2\2\2\u07cf\u07d0\5\u0124\u0093\2\u07d0\u012b\3\2\2") - buf.write("\2\u07d1\u07d2\7(\2\2\u07d2\u012d\3\2\2\2\u07d3\u07d4") - buf.write("\t\13\2\2\u07d4\u012f\3\2\2\2\u07d5\u07d7\5\u0132\u009a") - buf.write("\2\u07d6\u07d8\5\u0130\u0099\2\u07d7\u07d6\3\2\2\2\u07d7") - buf.write("\u07d8\3\2\2\2\u07d8\u07df\3\2\2\2\u07d9\u07da\5\u0148") - buf.write("\u00a5\2\u07da\u07dc\7\u0081\2\2\u07db\u07dd\5\u0130\u0099") - buf.write("\2\u07dc\u07db\3\2\2\2\u07dc\u07dd\3\2\2\2\u07dd\u07df") - buf.write("\3\2\2\2\u07de\u07d5\3\2\2\2\u07de\u07d9\3\2\2\2\u07df") - buf.write("\u0131\3\2\2\2\u07e0\u07e2\5\u00d6l\2\u07e1\u07e0\3\2") - buf.write("\2\2\u07e1\u07e2\3\2\2\2\u07e2\u07e4\3\2\2\2\u07e3\u07e5") - buf.write("\5\u008eH\2\u07e4\u07e3\3\2\2\2\u07e4\u07e5\3\2\2\2\u07e5") - buf.write("\u07e7\3\2\2\2\u07e6\u07e8\5\u0134\u009b\2\u07e7\u07e6") - buf.write("\3\2\2\2\u07e7\u07e8\3\2\2\2\u07e8\u07e9\3\2\2\2\u07e9") - buf.write("\u07f1\7\u0083\2\2\u07ea\u07f1\5\u0116\u008c\2\u07eb\u07f1") - buf.write("\5\u00ceh\2\u07ec\u07f1\5\u0086D\2\u07ed\u07f1\5\u015c") - buf.write("\u00af\2\u07ee\u07f1\5\u0082B\2\u07ef\u07f1\5\u0088E\2") - buf.write("\u07f0\u07e1\3\2\2\2\u07f0\u07ea\3\2\2\2\u07f0\u07eb\3") - buf.write("\2\2\2\u07f0\u07ec\3\2\2\2\u07f0\u07ed\3\2\2\2\u07f0\u07ee") - buf.write("\3\2\2\2\u07f0\u07ef\3\2\2\2\u07f1\u0133\3\2\2\2\u07f2") - buf.write("\u07f3\b\u009b\1\2\u07f3\u07f4\5\u0136\u009c\2\u07f4\u07fa") - buf.write("\3\2\2\2\u07f5\u07f6\f\3\2\2\u07f6\u07f7\7}\2\2\u07f7") - buf.write("\u07f9\5\u0136\u009c\2\u07f8\u07f5\3\2\2\2\u07f9\u07fc") - buf.write("\3\2\2\2\u07fa\u07f8\3\2\2\2\u07fa\u07fb\3\2\2\2\u07fb") - buf.write("\u0135\3\2\2\2\u07fc\u07fa\3\2\2\2\u07fd\u07ff\5\u00f0") - buf.write("y\2\u07fe\u0800\5\u0138\u009d\2\u07ff\u07fe\3\2\2\2\u07ff") - buf.write("\u0800\3\2\2\2\u0800\u0802\3\2\2\2\u0801\u0803\5\u013c") - buf.write("\u009f\2\u0802\u0801\3\2\2\2\u0802\u0803\3\2\2\2\u0803") - buf.write("\u0811\3\2\2\2\u0804\u0806\5\u00f0y\2\u0805\u0807\5\u011c") - buf.write("\u008f\2\u0806\u0805\3\2\2\2\u0806\u0807\3\2\2\2\u0807") - buf.write("\u0811\3\2\2\2\u0808\u080a\7\u0087\2\2\u0809\u0808\3\2") - buf.write("\2\2\u0809\u080a\3\2\2\2\u080a\u080c\3\2\2\2\u080b\u080d") - buf.write("\5\u00d6l\2\u080c\u080b\3\2\2\2\u080c\u080d\3\2\2\2\u080d") - buf.write("\u080e\3\2\2\2\u080e\u080f\7\u0081\2\2\u080f\u0811\5`") - buf.write("\61\2\u0810\u07fd\3\2\2\2\u0810\u0804\3\2\2\2\u0810\u0809") - buf.write("\3\2\2\2\u0811\u0137\3\2\2\2\u0812\u0813\b\u009d\1\2\u0813") - buf.write("\u0814\5\u013a\u009e\2\u0814\u0819\3\2\2\2\u0815\u0816") - buf.write("\f\3\2\2\u0816\u0818\5\u013a\u009e\2\u0817\u0815\3\2\2") - buf.write("\2\u0818\u081b\3\2\2\2\u0819\u0817\3\2\2\2\u0819\u081a") - buf.write("\3\2\2\2\u081a\u0139\3\2\2\2\u081b\u0819\3\2\2\2\u081c") - buf.write("\u081d\t\f\2\2\u081d\u013b\3\2\2\2\u081e\u081f\7f\2\2") - buf.write("\u081f\u0820\7\u008a\2\2\u0820\u0821\b\u009f\1\2\u0821") - buf.write("\u013d\3\2\2\2\u0822\u0823\7\u0081\2\2\u0823\u0824\5\u0140") - buf.write("\u00a1\2\u0824\u013f\3\2\2\2\u0825\u0826\b\u00a1\1\2\u0826") - buf.write("\u0828\5\u0142\u00a2\2\u0827\u0829\7\u0086\2\2\u0828\u0827") - buf.write("\3\2\2\2\u0828\u0829\3\2\2\2\u0829\u0832\3\2\2\2\u082a") - buf.write("\u082b\f\3\2\2\u082b\u082c\7}\2\2\u082c\u082e\5\u0142") - buf.write("\u00a2\2\u082d\u082f\7\u0086\2\2\u082e\u082d\3\2\2\2\u082e") - buf.write("\u082f\3\2\2\2\u082f\u0831\3\2\2\2\u0830\u082a\3\2\2\2") - buf.write("\u0831\u0834\3\2\2\2\u0832\u0830\3\2\2\2\u0832\u0833\3") - buf.write("\2\2\2\u0833\u0141\3\2\2\2\u0834\u0832\3\2\2\2\u0835\u0837") - buf.write("\5\u00d6l\2\u0836\u0835\3\2\2\2\u0836\u0837\3\2\2\2\u0837") - buf.write("\u0838\3\2\2\2\u0838\u084b\5\u0146\u00a4\2\u0839\u083b") - buf.write("\5\u00d6l\2\u083a\u0839\3\2\2\2\u083a\u083b\3\2\2\2\u083b") - buf.write("\u083c\3\2\2\2\u083c\u083e\7Q\2\2\u083d\u083f\5\u0148") - buf.write("\u00a5\2\u083e\u083d\3\2\2\2\u083e\u083f\3\2\2\2\u083f") - buf.write("\u0840\3\2\2\2\u0840\u084b\5\u0146\u00a4\2\u0841\u0843") - buf.write("\5\u00d6l\2\u0842\u0841\3\2\2\2\u0842\u0843\3\2\2\2\u0843") - buf.write("\u0844\3\2\2\2\u0844\u0846\5\u0148\u00a5\2\u0845\u0847") - buf.write("\7Q\2\2\u0846\u0845\3\2\2\2\u0846\u0847\3\2\2\2\u0847") - buf.write("\u0848\3\2\2\2\u0848\u0849\5\u0146\u00a4\2\u0849\u084b") - buf.write("\3\2\2\2\u084a\u0836\3\2\2\2\u084a\u083a\3\2\2\2\u084a") - buf.write("\u0842\3\2\2\2\u084b\u0143\3\2\2\2\u084c\u084e\5\f\7\2") - buf.write("\u084d\u084c\3\2\2\2\u084d\u084e\3\2\2\2\u084e\u084f\3") - buf.write("\2\2\2\u084f\u0852\5\u0124\u0093\2\u0850\u0852\5\u00a2") - buf.write("R\2\u0851\u084d\3\2\2\2\u0851\u0850\3\2\2\2\u0852\u0145") - buf.write("\3\2\2\2\u0853\u0854\5\u0144\u00a3\2\u0854\u0147\3\2\2") - buf.write("\2\u0855\u0856\t\r\2\2\u0856\u0149\3\2\2\2\u0857\u0858") - buf.write("\7\66\2\2\u0858\u0859\5\u014c\u00a7\2\u0859\u014b\3\2") - buf.write("\2\2\u085a\u085c\5\u009aN\2\u085b\u085d\5\u014e\u00a8") - buf.write("\2\u085c\u085b\3\2\2\2\u085c\u085d\3\2\2\2\u085d\u014d") - buf.write("\3\2\2\2\u085e\u0860\5\u00fa~\2\u085f\u0861\5\u014e\u00a8") - buf.write("\2\u0860\u085f\3\2\2\2\u0860\u0861\3\2\2\2\u0861\u014f") - buf.write("\3\2\2\2\u0862\u0863\7\u0081\2\2\u0863\u0864\5\u0152\u00aa") - buf.write("\2\u0864\u0151\3\2\2\2\u0865\u0867\5\u0154\u00ab\2\u0866") - buf.write("\u0868\7\u0086\2\2\u0867\u0866\3\2\2\2\u0867\u0868\3\2") - buf.write("\2\2\u0868\u0871\3\2\2\2\u0869\u086b\5\u0154\u00ab\2\u086a") - buf.write("\u086c\7\u0086\2\2\u086b\u086a\3\2\2\2\u086b\u086c\3\2") - buf.write("\2\2\u086c\u086d\3\2\2\2\u086d\u086e\7}\2\2\u086e\u086f") - buf.write("\5\u0152\u00aa\2\u086f\u0871\3\2\2\2\u0870\u0865\3\2\2") - buf.write("\2\u0870\u0869\3\2\2\2\u0871\u0153\3\2\2\2\u0872\u0873") - buf.write("\5\u0156\u00ac\2\u0873\u0875\7V\2\2\u0874\u0876\5&\24") - buf.write("\2\u0875\u0874\3\2\2\2\u0875\u0876\3\2\2\2\u0876\u0877") - buf.write("\3\2\2\2\u0877\u0878\7W\2\2\u0878\u087d\3\2\2\2\u0879") - buf.write("\u087a\5\u0156\u00ac\2\u087a\u087b\5\u0122\u0092\2\u087b") - buf.write("\u087d\3\2\2\2\u087c\u0872\3\2\2\2\u087c\u0879\3\2\2\2") - buf.write("\u087d\u0155\3\2\2\2\u087e\u0881\5\u0144\u00a3\2\u087f") - buf.write("\u0881\7\u0087\2\2\u0880\u087e\3\2\2\2\u0880\u087f\3\2") - buf.write("\2\2\u0881\u0157\3\2\2\2\u0882\u0883\7\66\2\2\u0883\u0884") - buf.write("\5\u018c\u00c7\2\u0884\u0159\3\2\2\2\u0885\u0886\7\66") - buf.write("\2\2\u0886\u0887\7\u0090\2\2\u0887\u088b\7\u0087\2\2\u0888") - buf.write("\u0889\7\66\2\2\u0889\u088b\7\u0093\2\2\u088a\u0885\3") - buf.write("\2\2\2\u088a\u0888\3\2\2\2\u088b\u015b\3\2\2\2\u088c\u088d") - buf.write("\7F\2\2\u088d\u088e\7g\2\2\u088e\u088f\5\u015e\u00b0\2") - buf.write("\u088f\u0890\7h\2\2\u0890\u0891\5~@\2\u0891\u015d\3\2") - buf.write("\2\2\u0892\u0893\b\u00b0\1\2\u0893\u0894\5\u0160\u00b1") - buf.write("\2\u0894\u089a\3\2\2\2\u0895\u0896\f\3\2\2\u0896\u0897") - buf.write("\7}\2\2\u0897\u0899\5\u0160\u00b1\2\u0898\u0895\3\2\2") - buf.write("\2\u0899\u089c\3\2\2\2\u089a\u0898\3\2\2\2\u089a\u089b") - buf.write("\3\2\2\2\u089b\u015f\3\2\2\2\u089c\u089a\3\2\2\2\u089d") - buf.write("\u08a0\5\u0162\u00b2\2\u089e\u08a0\5\u0114\u008b\2\u089f") - buf.write("\u089d\3\2\2\2\u089f\u089e\3\2\2\2\u08a0\u0161\3\2\2\2") - buf.write("\u08a1\u08a3\7\30\2\2\u08a2\u08a4\7\u0086\2\2\u08a3\u08a2") - buf.write("\3\2\2\2\u08a3\u08a4\3\2\2\2\u08a4\u08a6\3\2\2\2\u08a5") - buf.write("\u08a7\7\u0087\2\2\u08a6\u08a5\3\2\2\2\u08a6\u08a7\3\2") - buf.write("\2\2\u08a7\u08d2\3\2\2\2\u08a8\u08aa\7\30\2\2\u08a9\u08ab") - buf.write("\7\u0087\2\2\u08aa\u08a9\3\2\2\2\u08aa\u08ab\3\2\2\2\u08ab") - buf.write("\u08ac\3\2\2\2\u08ac\u08ad\7f\2\2\u08ad\u08d2\5\u0104") - buf.write("\u0083\2\u08ae\u08b0\7M\2\2\u08af\u08b1\7\u0086\2\2\u08b0") - buf.write("\u08af\3\2\2\2\u08b0\u08b1\3\2\2\2\u08b1\u08b3\3\2\2\2") - buf.write("\u08b2\u08b4\7\u0087\2\2\u08b3\u08b2\3\2\2\2\u08b3\u08b4") - buf.write("\3\2\2\2\u08b4\u08d2\3\2\2\2\u08b5\u08b7\7M\2\2\u08b6") - buf.write("\u08b8\7\u0087\2\2\u08b7\u08b6\3\2\2\2\u08b7\u08b8\3\2") - buf.write("\2\2\u08b8\u08b9\3\2\2\2\u08b9\u08ba\7f\2\2\u08ba\u08d2") - buf.write("\5\u0104\u0083\2\u08bb\u08bc\7F\2\2\u08bc\u08bd\7g\2\2") - buf.write("\u08bd\u08be\5\u015e\u00b0\2\u08be\u08bf\7h\2\2\u08bf") - buf.write("\u08c1\7\30\2\2\u08c0\u08c2\7\u0086\2\2\u08c1\u08c0\3") - buf.write("\2\2\2\u08c1\u08c2\3\2\2\2\u08c2\u08c4\3\2\2\2\u08c3\u08c5") - buf.write("\7\u0087\2\2\u08c4\u08c3\3\2\2\2\u08c4\u08c5\3\2\2\2\u08c5") - buf.write("\u08d2\3\2\2\2\u08c6\u08c7\7F\2\2\u08c7\u08c8\7g\2\2\u08c8") - buf.write("\u08c9\5\u015e\u00b0\2\u08c9\u08ca\7h\2\2\u08ca\u08cc") - buf.write("\7\30\2\2\u08cb\u08cd\7\u0087\2\2\u08cc\u08cb\3\2\2\2") - buf.write("\u08cc\u08cd\3\2\2\2\u08cd\u08ce\3\2\2\2\u08ce\u08cf\7") - buf.write("f\2\2\u08cf\u08d0\5\6\4\2\u08d0\u08d2\3\2\2\2\u08d1\u08a1") - buf.write("\3\2\2\2\u08d1\u08a8\3\2\2\2\u08d1\u08ae\3\2\2\2\u08d1") - buf.write("\u08b5\3\2\2\2\u08d1\u08bb\3\2\2\2\u08d1\u08c6\3\2\2\2") - buf.write("\u08d2\u0163\3\2\2\2\u08d3\u08d4\5\u0168\u00b5\2\u08d4") - buf.write("\u08d6\7g\2\2\u08d5\u08d7\5\u016a\u00b6\2\u08d6\u08d5") - buf.write("\3\2\2\2\u08d6\u08d7\3\2\2\2\u08d7\u08d8\3\2\2\2\u08d8") - buf.write("\u08d9\7h\2\2\u08d9\u0165\3\2\2\2\u08da\u08ea\5\u0164") - buf.write("\u00b3\2\u08db\u08dc\5\u0158\u00ad\2\u08dc\u08de\7g\2") - buf.write("\2\u08dd\u08df\5\u016a\u00b6\2\u08de\u08dd\3\2\2\2\u08de") - buf.write("\u08df\3\2\2\2\u08df\u08e0\3\2\2\2\u08e0\u08e1\7h\2\2") - buf.write("\u08e1\u08ea\3\2\2\2\u08e2\u08e3\5\u015a\u00ae\2\u08e3") - buf.write("\u08e5\7g\2\2\u08e4\u08e6\5\u016a\u00b6\2\u08e5\u08e4") - buf.write("\3\2\2\2\u08e5\u08e6\3\2\2\2\u08e6\u08e7\3\2\2\2\u08e7") - buf.write("\u08e8\7h\2\2\u08e8\u08ea\3\2\2\2\u08e9\u08da\3\2\2\2") - buf.write("\u08e9\u08db\3\2\2\2\u08e9\u08e2\3\2\2\2\u08ea\u0167\3") - buf.write("\2\2\2\u08eb\u08ec\7\u0087\2\2\u08ec\u0169\3\2\2\2\u08ed") - buf.write("\u08ee\b\u00b6\1\2\u08ee\u08f0\5\u016c\u00b7\2\u08ef\u08f1") - buf.write("\7\u0086\2\2\u08f0\u08ef\3\2\2\2\u08f0\u08f1\3\2\2\2\u08f1") - buf.write("\u08fa\3\2\2\2\u08f2\u08f3\f\3\2\2\u08f3\u08f4\7}\2\2") - buf.write("\u08f4\u08f6\5\u016c\u00b7\2\u08f5\u08f7\7\u0086\2\2\u08f6") - buf.write("\u08f5\3\2\2\2\u08f6\u08f7\3\2\2\2\u08f7\u08f9\3\2\2\2") - buf.write("\u08f8\u08f2\3\2\2\2\u08f9\u08fc\3\2\2\2\u08fa\u08f8\3") - buf.write("\2\2\2\u08fa\u08fb\3\2\2\2\u08fb\u016b\3\2\2\2\u08fc\u08fa") - buf.write("\3\2\2\2\u08fd\u0901\5\u0104\u0083\2\u08fe\u0901\5`\61") - buf.write("\2\u08ff\u0901\5\6\4\2\u0900\u08fd\3\2\2\2\u0900\u08fe") - buf.write("\3\2\2\2\u0900\u08ff\3\2\2\2\u0901\u016d\3\2\2\2\u0902") - buf.write("\u0903\7M\2\2\u0903\u0904\5\f\7\2\u0904\u0905\7\u0087") - buf.write("\2\2\u0905\u090e\3\2\2\2\u0906\u0907\7M\2\2\u0907\u0909") - buf.write("\5\f\7\2\u0908\u090a\7F\2\2\u0909\u0908\3\2\2\2\u0909") - buf.write("\u090a\3\2\2\2\u090a\u090b\3\2\2\2\u090b\u090c\5\u0164") - buf.write("\u00b3\2\u090c\u090e\3\2\2\2\u090d\u0902\3\2\2\2\u090d") - buf.write("\u0906\3\2\2\2\u090e\u016f\3\2\2\2\u090f\u0911\7\'\2\2") - buf.write("\u0910\u090f\3\2\2\2\u0910\u0911\3\2\2\2\u0911\u0912\3") - buf.write("\2\2\2\u0912\u0913\7F\2\2\u0913\u0914\5~@\2\u0914\u0171") - buf.write("\3\2\2\2\u0915\u0916\7F\2\2\u0916\u0917\7g\2\2\u0917\u0918") - buf.write("\7h\2\2\u0918\u0919\5~@\2\u0919\u0173\3\2\2\2\u091a\u091b") - buf.write("\7J\2\2\u091b\u091c\5h\65\2\u091c\u091d\5\u0178\u00bd") - buf.write("\2\u091d\u0175\3\2\2\2\u091e\u0920\7J\2\2\u091f\u0921") - buf.write("\5\u0150\u00a9\2\u0920\u091f\3\2\2\2\u0920\u0921\3\2\2") - buf.write("\2\u0921\u0922\3\2\2\2\u0922\u0923\5h\65\2\u0923\u0924") - buf.write("\5\u0178\u00bd\2\u0924\u0177\3\2\2\2\u0925\u0927\5\u017a") - buf.write("\u00be\2\u0926\u0928\5\u0178\u00bd\2\u0927\u0926\3\2\2") - buf.write("\2\u0927\u0928\3\2\2\2\u0928\u0179\3\2\2\2\u0929\u092a") - buf.write("\7\24\2\2\u092a\u092b\7V\2\2\u092b\u092c\5\u017c\u00bf") - buf.write("\2\u092c\u092d\7W\2\2\u092d\u092e\5h\65\2\u092e\u017b") - buf.write("\3\2\2\2\u092f\u0931\5\u00d6l\2\u0930\u092f\3\2\2\2\u0930") - buf.write("\u0931\3\2\2\2\u0931\u0932\3\2\2\2\u0932\u0933\5\u009a") - buf.write("N\2\u0933\u0934\5\u00f0y\2\u0934\u093e\3\2\2\2\u0935\u0937") - buf.write("\5\u00d6l\2\u0936\u0935\3\2\2\2\u0936\u0937\3\2\2\2\u0937") - buf.write("\u0938\3\2\2\2\u0938\u093a\5\u009aN\2\u0939\u093b\5\u0106") - buf.write("\u0084\2\u093a\u0939\3\2\2\2\u093a\u093b\3\2\2\2\u093b") - buf.write("\u093e\3\2\2\2\u093c\u093e\7\u0086\2\2\u093d\u0930\3\2") - buf.write("\2\2\u093d\u0936\3\2\2\2\u093d\u093c\3\2\2\2\u093e\u017d") - buf.write("\3\2\2\2\u093f\u0941\7I\2\2\u0940\u0942\5Z.\2\u0941\u0940") - buf.write("\3\2\2\2\u0941\u0942\3\2\2\2\u0942\u017f\3\2\2\2\u0943") - buf.write("\u0946\5\u0182\u00c2\2\u0944\u0946\5\u0186\u00c4\2\u0945") - buf.write("\u0943\3\2\2\2\u0945\u0944\3\2\2\2\u0946\u0181\3\2\2\2") - buf.write("\u0947\u0948\7I\2\2\u0948\u094a\7V\2\2\u0949\u094b\5\u0184") - buf.write("\u00c3\2\u094a\u0949\3\2\2\2\u094a\u094b\3\2\2\2\u094b") - buf.write("\u094c\3\2\2\2\u094c\u094d\7W\2\2\u094d\u0183\3\2\2\2") - buf.write("\u094e\u094f\b\u00c3\1\2\u094f\u0951\5\u0104\u0083\2\u0950") - buf.write("\u0952\7\u0086\2\2\u0951\u0950\3\2\2\2\u0951\u0952\3\2") - buf.write("\2\2\u0952\u095b\3\2\2\2\u0953\u0954\f\3\2\2\u0954\u0955") - buf.write("\7}\2\2\u0955\u0957\5\u0104\u0083\2\u0956\u0958\7\u0086") - buf.write("\2\2\u0957\u0956\3\2\2\2\u0957\u0958\3\2\2\2\u0958\u095a") - buf.write("\3\2\2\2\u0959\u0953\3\2\2\2\u095a\u095d\3\2\2\2\u095b") - buf.write("\u0959\3\2\2\2\u095b\u095c\3\2\2\2\u095c\u0185\3\2\2\2") - buf.write("\u095d\u095b\3\2\2\2\u095e\u095f\7\64\2\2\u095f\u0960") - buf.write("\7V\2\2\u0960\u0961\5`\61\2\u0961\u0962\7W\2\2\u0962\u0965") - buf.write("\3\2\2\2\u0963\u0965\7\64\2\2\u0964\u095e\3\2\2\2\u0964") - buf.write("\u0963\3\2\2\2\u0965\u0187\3\2\2\2\u0966\u0967\7\t\2\2") - buf.write("\u0967\u0189\3\2\2\2\u0968\u0969\7\n\2\2\u0969\u018b\3") - buf.write("\2\2\2\u096a\u099e\7\63\2\2\u096b\u099e\7\37\2\2\u096c") - buf.write("\u096d\7\63\2\2\u096d\u096e\7X\2\2\u096e\u099e\7Y\2\2") - buf.write("\u096f\u0970\7\37\2\2\u0970\u0971\7X\2\2\u0971\u099e\7") - buf.write("Y\2\2\u0972\u099e\7\\\2\2\u0973\u099e\7]\2\2\u0974\u099e") - buf.write("\7^\2\2\u0975\u099e\7_\2\2\u0976\u099e\7`\2\2\u0977\u099e") - buf.write("\7a\2\2\u0978\u099e\7b\2\2\u0979\u099e\7c\2\2\u097a\u099e") - buf.write("\7d\2\2\u097b\u099e\7\3\2\2\u097c\u099e\7\4\2\2\u097d") - buf.write("\u099e\7f\2\2\u097e\u099e\7g\2\2\u097f\u099e\7h\2\2\u0980") - buf.write("\u099e\7i\2\2\u0981\u099e\7j\2\2\u0982\u099e\7k\2\2\u0983") - buf.write("\u099e\7l\2\2\u0984\u099e\7m\2\2\u0985\u099e\7n\2\2\u0986") - buf.write("\u099e\7o\2\2\u0987\u099e\7p\2\2\u0988\u099e\7q\2\2\u0989") - buf.write("\u099e\7r\2\2\u098a\u099e\7t\2\2\u098b\u099e\7s\2\2\u098c") - buf.write("\u099e\7u\2\2\u098d\u099e\7v\2\2\u098e\u099e\7w\2\2\u098f") - buf.write("\u099e\7x\2\2\u0990\u099e\7\5\2\2\u0991\u099e\7\6\2\2") - buf.write("\u0992\u099e\7\7\2\2\u0993\u099e\7\b\2\2\u0994\u099e\7") - buf.write("{\2\2\u0995\u099e\7|\2\2\u0996\u099e\7}\2\2\u0997\u099e") - buf.write("\7~\2\2\u0998\u099e\7\177\2\2\u0999\u099a\7V\2\2\u099a") - buf.write("\u099e\7W\2\2\u099b\u099c\7X\2\2\u099c\u099e\7Y\2\2\u099d") - buf.write("\u096a\3\2\2\2\u099d\u096b\3\2\2\2\u099d\u096c\3\2\2\2") - buf.write("\u099d\u096f\3\2\2\2\u099d\u0972\3\2\2\2\u099d\u0973\3") - buf.write("\2\2\2\u099d\u0974\3\2\2\2\u099d\u0975\3\2\2\2\u099d\u0976") - buf.write("\3\2\2\2\u099d\u0977\3\2\2\2\u099d\u0978\3\2\2\2\u099d") - buf.write("\u0979\3\2\2\2\u099d\u097a\3\2\2\2\u099d\u097b\3\2\2\2") - buf.write("\u099d\u097c\3\2\2\2\u099d\u097d\3\2\2\2\u099d\u097e\3") - buf.write("\2\2\2\u099d\u097f\3\2\2\2\u099d\u0980\3\2\2\2\u099d\u0981") - buf.write("\3\2\2\2\u099d\u0982\3\2\2\2\u099d\u0983\3\2\2\2\u099d") - buf.write("\u0984\3\2\2\2\u099d\u0985\3\2\2\2\u099d\u0986\3\2\2\2") - buf.write("\u099d\u0987\3\2\2\2\u099d\u0988\3\2\2\2\u099d\u0989\3") - buf.write("\2\2\2\u099d\u098a\3\2\2\2\u099d\u098b\3\2\2\2\u099d\u098c") - buf.write("\3\2\2\2\u099d\u098d\3\2\2\2\u099d\u098e\3\2\2\2\u099d") - buf.write("\u098f\3\2\2\2\u099d\u0990\3\2\2\2\u099d\u0991\3\2\2\2") - buf.write("\u099d\u0992\3\2\2\2\u099d\u0993\3\2\2\2\u099d\u0994\3") - buf.write("\2\2\2\u099d\u0995\3\2\2\2\u099d\u0996\3\2\2\2\u099d\u0997") - buf.write("\3\2\2\2\u099d\u0998\3\2\2\2\u099d\u0999\3\2\2\2\u099d") - buf.write("\u099b\3\2\2\2\u099e\u018d\3\2\2\2\u099f\u09a7\7\u0088") - buf.write("\2\2\u09a0\u09a7\7\u008e\2\2\u09a1\u09a7\7\u008f\2\2\u09a2") - buf.write("\u09a7\7\u0090\2\2\u09a3\u09a7\5\u0190\u00c9\2\u09a4\u09a7") - buf.write("\5\u0192\u00ca\2\u09a5\u09a7\5\u0194\u00cb\2\u09a6\u099f") - buf.write("\3\2\2\2\u09a6\u09a0\3\2\2\2\u09a6\u09a1\3\2\2\2\u09a6") - buf.write("\u09a2\3\2\2\2\u09a6\u09a3\3\2\2\2\u09a6\u09a4\3\2\2\2") - buf.write("\u09a6\u09a5\3\2\2\2\u09a7\u018f\3\2\2\2\u09a8\u09ab\5") - buf.write("\u0188\u00c5\2\u09a9\u09ab\5\u018a\u00c6\2\u09aa\u09a8") - buf.write("\3\2\2\2\u09aa\u09a9\3\2\2\2\u09ab\u0191\3\2\2\2\u09ac") - buf.write("\u09ad\7\65\2\2\u09ad\u0193\3\2\2\2\u09ae\u09af\t\16\2") - buf.write("\2\u09af\u0195\3\2\2\2\u013f\u0197\u01a3\u01a7\u01b2\u01b6") - buf.write("\u01c5\u01cc\u01d1\u01d3\u01d8\u01de\u01e8\u01ef\u01f5") - buf.write("\u01f9\u01fe\u0204\u020b\u0211\u0214\u0217\u021a\u0221") - buf.write("\u0228\u025c\u026b\u0271\u0277\u0284\u0286\u0290\u029f") - buf.write("\u02a5\u02c3\u02c8\u02cc\u02d0\u02d3\u02d7\u02dd\u02df") - buf.write("\u02e7\u02eb\u02ee\u02f5\u02fc\u0300\u0305\u0309\u030c") - buf.write("\u0311\u0317\u0324\u032f\u0331\u0340\u0342\u034e\u0350") - buf.write("\u035c\u0370\u0372\u037e\u0380\u038b\u0396\u03a1\u03ad") - buf.write("\u03af\u03bb\u03bd\u03c7\u03cf\u03db\u03e2\u03e6\u03ea") - buf.write("\u03ee\u03f2\u03f7\u03fa\u03fd\u0403\u040b\u0410\u0413") - buf.write("\u0419\u0424\u043b\u043f\u0447\u044d\u0461\u0465\u0472") - buf.write("\u0476\u0479\u0480\u0488\u0492\u049d\u04a9\u04b3\u04b8") - buf.write("\u04bf\u04c2\u04c7\u04cc\u04e1\u04e5\u04ea\u04f5\u04fb") - buf.write("\u04ff\u0504\u0508\u050d\u0510\u0526\u052c\u0537\u053b") - buf.write("\u053e\u0548\u054e\u0551\u0558\u0562\u0566\u0569\u056c") - buf.write("\u0570\u0575\u0577\u057b\u057f\u0588\u0595\u059d\u05a3") - buf.write("\u05a9\u05ad\u05b0\u05b9\u05c2\u05ca\u05d5\u05db\u05e6") - buf.write("\u05e9\u05ee\u05fd\u0603\u060c\u0616\u061c\u0624\u0628") - buf.write("\u062c\u0631\u0636\u063d\u063f\u0644\u0648\u0656\u065c") - buf.write("\u066e\u0670\u067a\u067f\u0686\u068c\u0691\u0697\u069e") - buf.write("\u06a2\u06a4\u06a6\u06ad\u06b0\u06b3\u06b6\u06bb\u06bf") - buf.write("\u06c2\u06c6\u06ca\u06cf\u06d2\u06d4\u06d8\u06df\u06e5") - buf.write("\u06e9\u06ef\u06f4\u06f6\u06fc\u0700\u0706\u070d\u0711") - buf.write("\u0713\u0715\u071c\u0726\u072a\u072c\u072e\u0732\u0735") - buf.write("\u073b\u0745\u0749\u074f\u0757\u075b\u075e\u0762\u0767") - buf.write("\u076a\u076d\u0771\u0776\u0780\u0787\u078c\u0790\u0795") - buf.write("\u079b\u079f\u07a5\u07ab\u07af\u07b4\u07ba\u07be\u07c1") - buf.write("\u07c5\u07c8\u07ca\u07cd\u07d7\u07dc\u07de\u07e1\u07e4") - buf.write("\u07e7\u07f0\u07fa\u07ff\u0802\u0806\u0809\u080c\u0810") - buf.write("\u0819\u0828\u082e\u0832\u0836\u083a\u083e\u0842\u0846") - buf.write("\u084a\u084d\u0851\u085c\u0860\u0867\u086b\u0870\u0875") - buf.write("\u087c\u0880\u088a\u089a\u089f\u08a3\u08a6\u08aa\u08b0") - buf.write("\u08b3\u08b7\u08c1\u08c4\u08cc\u08d1\u08d6\u08de\u08e5") - buf.write("\u08e9\u08f0\u08f6\u08fa\u0900\u0909\u090d\u0910\u0920") - buf.write("\u0927\u0930\u0936\u093a\u093d\u0941\u0945\u094a\u0951") - buf.write("\u0957\u095b\u0964\u099d\u09a6\u09aa") - return buf.getvalue() - - -class CPP14Parser ( Parser ): - - grammarFileName = "CPP14.g4" + return [ + 4,1,145,2062,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,1,0,3,0,384, + 8,0,1,0,1,0,1,1,4,1,389,8,1,11,1,12,1,390,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,3,1,400,8,1,1,2,1,2,3,2,404,8,2,1,3,1,3,1,3,1,3,1,3,1,3,1, + 3,3,3,413,8,3,1,3,3,3,416,8,3,1,4,1,4,3,4,420,8,4,1,4,1,4,1,5,1, + 5,1,5,1,5,3,5,428,8,5,1,5,1,5,1,5,1,5,1,5,3,5,435,8,5,1,5,3,5,438, + 8,5,1,5,5,5,441,8,5,10,5,12,5,444,9,5,1,6,1,6,3,6,448,8,6,1,6,1, + 6,1,7,1,7,3,7,454,8,7,1,7,1,7,1,8,1,8,1,8,1,8,3,8,462,8,8,3,8,464, + 8,8,1,9,1,9,1,10,1,10,1,10,5,10,471,8,10,10,10,12,10,474,9,10,1, + 10,3,10,477,8,10,1,11,1,11,3,11,481,8,11,1,12,3,12,484,8,12,1,12, + 1,12,3,12,488,8,12,1,13,3,13,491,8,13,1,13,1,13,1,13,1,14,1,14,3, + 14,498,8,14,1,14,1,14,3,14,502,8,14,1,14,3,14,505,8,14,1,14,3,14, + 508,8,14,1,14,3,14,511,8,14,1,15,1,15,1,15,1,15,3,15,517,8,15,1, + 15,1,15,3,15,521,8,15,1,15,1,15,3,15,525,8,15,1,15,1,15,1,15,1,15, + 1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,539,8,15,1,15,1,15, + 3,15,543,8,15,1,15,1,15,1,15,1,15,3,15,549,8,15,1,15,1,15,1,15,1, + 15,1,15,3,15,556,8,15,1,15,1,15,1,15,1,15,3,15,562,8,15,1,15,1,15, + 3,15,566,8,15,1,15,1,15,5,15,570,8,15,10,15,12,15,573,9,15,1,16, + 1,16,1,17,1,17,1,18,3,18,580,8,18,1,18,1,18,1,18,3,18,585,8,18,1, + 18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,3,18,598,8, + 18,1,19,1,19,1,19,1,19,1,19,3,19,605,8,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,1,19,3,19,617,8,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,19,1,19,3,19,627,8,19,1,20,1,20,1,21,3,21,632,8,21,1,21, + 1,21,3,21,636,8,21,1,21,1,21,1,21,1,21,1,21,3,21,643,8,21,1,21,3, + 21,646,8,21,1,22,1,22,1,22,1,22,1,23,1,23,3,23,654,8,23,1,24,1,24, + 3,24,658,8,24,1,24,3,24,661,8,24,1,25,1,25,1,25,1,25,1,25,3,25,668, + 8,25,1,25,1,25,1,25,1,25,1,25,3,25,675,8,25,5,25,677,8,25,10,25, + 12,25,680,9,25,1,26,1,26,3,26,684,8,26,1,26,1,26,3,26,688,8,26,1, + 27,3,27,691,8,27,1,27,1,27,1,27,3,27,696,8,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,3,29,711,8,29,1,30, + 1,30,1,30,5,30,716,8,30,10,30,12,30,719,9,30,1,31,1,31,1,31,5,31, + 724,8,31,10,31,12,31,727,9,31,1,32,1,32,1,32,5,32,732,8,32,10,32, + 12,32,735,9,32,1,33,1,33,1,33,1,33,5,33,741,8,33,10,33,12,33,744, + 9,33,1,34,1,34,1,34,1,34,3,34,750,8,34,1,35,1,35,1,35,5,35,755,8, + 35,10,35,12,35,758,9,35,1,36,1,36,1,36,5,36,763,8,36,10,36,12,36, + 766,9,36,1,37,1,37,1,37,5,37,771,8,37,10,37,12,37,774,9,37,1,38, + 1,38,1,38,5,38,779,8,38,10,38,12,38,782,9,38,1,39,1,39,1,39,5,39, + 787,8,39,10,39,12,39,790,9,39,1,40,1,40,1,40,5,40,795,8,40,10,40, + 12,40,798,9,40,1,41,1,41,1,41,5,41,803,8,41,10,41,12,41,806,9,41, + 1,42,1,42,1,42,1,42,1,42,1,42,3,42,814,8,42,1,43,1,43,1,43,1,43, + 1,43,1,43,3,43,822,8,43,1,44,1,44,1,45,1,45,1,45,5,45,829,8,45,10, + 45,12,45,832,9,45,1,46,1,46,1,47,1,47,1,47,3,47,839,8,47,1,47,1, + 47,1,47,1,47,1,47,1,47,3,47,847,8,47,3,47,849,8,47,1,48,3,48,852, + 8,48,1,48,1,48,1,48,1,48,3,48,858,8,48,1,48,1,48,1,48,1,49,3,49, + 864,8,49,1,49,1,49,1,50,1,50,3,50,870,8,50,1,50,1,50,1,51,4,51,875, + 8,51,11,51,12,51,876,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,886, + 8,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,894,8,52,1,53,1,53,3,53, + 898,8,53,1,53,1,53,1,53,1,53,1,53,3,53,905,8,53,3,53,907,8,53,1, + 54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1, + 54,1,54,1,54,1,54,1,54,3,54,927,8,54,1,54,1,54,3,54,931,8,54,1,54, + 1,54,1,54,1,54,3,54,937,8,54,1,54,1,54,1,54,3,54,942,8,54,1,55,1, + 55,3,55,946,8,55,1,56,3,56,949,8,56,1,56,1,56,1,56,1,57,1,57,3,57, + 956,8,57,1,58,1,58,1,58,1,58,1,58,3,58,963,8,58,1,58,1,58,3,58,967, + 8,58,1,58,1,58,1,59,1,59,1,60,4,60,974,8,60,11,60,12,60,975,1,61, + 1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,3,61,987,8,61,1,62,1,62, + 1,62,1,62,1,62,1,62,1,62,1,62,3,62,997,8,62,1,63,1,63,1,63,3,63, + 1002,8,63,1,63,1,63,1,63,1,63,1,64,3,64,1009,8,64,1,64,3,64,1012, + 8,64,1,64,1,64,1,64,3,64,1017,8,64,1,64,1,64,1,64,3,64,1022,8,64, + 1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,67,1,67,1,67, + 1,68,1,68,1,68,1,68,1,68,1,68,3,68,1043,8,68,1,69,4,69,1046,8,69, + 11,69,12,69,1047,1,69,3,69,1051,8,69,1,70,1,70,1,71,1,71,1,72,1, + 72,1,73,1,73,1,73,3,73,1062,8,73,1,74,1,74,1,74,1,74,3,74,1068,8, + 74,1,75,4,75,1071,8,75,11,75,12,75,1072,1,75,3,75,1076,8,75,1,76, + 4,76,1079,8,76,11,76,12,76,1080,1,76,3,76,1084,8,76,1,77,1,77,1, + 78,1,78,1,79,3,79,1091,8,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1, + 79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1, + 79,3,79,1114,8,79,1,80,1,80,1,80,1,80,3,80,1120,8,80,1,81,1,81,1, + 81,1,81,3,81,1126,8,81,1,81,1,81,1,82,1,82,3,82,1132,8,82,1,82,3, + 82,1135,8,82,1,82,1,82,1,82,1,82,3,82,1141,8,82,1,82,1,82,3,82,1145, + 8,82,1,82,1,82,3,82,1149,8,82,1,82,3,82,1152,8,82,1,83,1,83,1,84, + 1,84,1,84,1,84,3,84,1160,8,84,3,84,1162,8,84,1,84,1,84,1,85,1,85, + 3,85,1168,8,85,1,85,3,85,1171,8,85,1,85,3,85,1174,8,85,1,85,3,85, + 1177,8,85,1,86,1,86,3,86,1181,8,86,1,86,1,86,3,86,1185,8,86,1,86, + 1,86,1,87,1,87,3,87,1191,8,87,1,88,1,88,1,88,1,89,1,89,1,89,5,89, + 1199,8,89,10,89,12,89,1202,9,89,1,90,1,90,1,90,3,90,1207,8,90,1, + 91,1,91,1,92,1,92,3,92,1213,8,92,1,93,1,93,1,94,3,94,1218,8,94,1, + 94,1,94,1,94,3,94,1223,8,94,1,94,1,94,3,94,1227,8,94,1,94,1,94,1, + 95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,97,3,97,1240,8,97,1,97,1, + 97,1,98,1,98,3,98,1246,8,98,1,98,1,98,3,98,1250,8,98,1,98,1,98,1, + 98,1,99,3,99,1256,8,99,1,99,1,99,1,99,3,99,1261,8,99,1,99,1,99,1, + 99,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,3, + 101,1276,8,101,1,101,1,101,3,101,1280,8,101,1,102,4,102,1283,8,102, + 11,102,12,102,1284,1,103,1,103,1,103,3,103,1290,8,103,1,103,1,103, + 1,103,3,103,1295,8,103,1,104,1,104,1,104,1,104,3,104,1301,8,104, + 1,104,3,104,1304,8,104,1,104,1,104,1,105,1,105,1,105,5,105,1311, + 8,105,10,105,12,105,1314,9,105,1,105,3,105,1317,8,105,1,106,1,106, + 1,106,3,106,1322,8,106,1,106,1,106,3,106,1326,8,106,1,107,1,107, + 1,108,1,108,3,108,1332,8,108,1,108,1,108,1,109,4,109,1337,8,109, + 11,109,12,109,1338,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, + 1,110,1,110,1,110,1,110,1,110,4,110,1354,8,110,11,110,12,110,1355, + 3,110,1358,8,110,1,111,1,111,1,111,5,111,1363,8,111,10,111,12,111, + 1366,9,111,1,112,1,112,3,112,1370,8,112,1,113,1,113,1,113,1,113, + 1,113,3,113,1377,8,113,1,114,1,114,3,114,1381,8,114,5,114,1383,8, + 114,10,114,12,114,1386,9,114,1,114,1,114,1,115,1,115,1,115,3,115, + 1393,8,115,1,115,1,115,1,115,1,115,3,115,1399,8,115,1,115,1,115, + 1,115,1,115,3,115,1405,8,115,1,115,1,115,3,115,1409,8,115,3,115, + 1411,8,115,5,115,1413,8,115,10,115,12,115,1416,9,115,1,116,1,116, + 3,116,1420,8,116,1,116,1,116,3,116,1424,8,116,1,116,3,116,1427,8, + 116,1,116,3,116,1430,8,116,1,116,3,116,1433,8,116,1,117,1,117,1, + 117,3,117,1438,8,117,1,118,1,118,3,118,1442,8,118,1,118,3,118,1445, + 8,118,1,118,1,118,3,118,1449,8,118,1,118,3,118,1452,8,118,3,118, + 1454,8,118,1,119,4,119,1457,8,119,11,119,12,119,1458,1,120,1,120, + 1,121,1,121,1,122,3,122,1466,8,122,1,122,1,122,1,123,1,123,3,123, + 1472,8,123,1,124,1,124,3,124,1476,8,124,1,124,1,124,1,124,1,124, + 3,124,1482,8,124,1,125,5,125,1485,8,125,10,125,12,125,1488,9,125, + 1,125,1,125,3,125,1492,8,125,1,126,1,126,1,126,1,126,1,126,3,126, + 1499,8,126,1,126,1,126,1,126,3,126,1504,8,126,1,126,1,126,3,126, + 1508,8,126,5,126,1510,8,126,10,126,12,126,1513,9,126,1,127,5,127, + 1516,8,127,10,127,12,127,1519,9,127,1,127,1,127,1,128,1,128,1,128, + 1,128,3,128,1527,8,128,1,128,1,128,3,128,1531,8,128,5,128,1533,8, + 128,10,128,12,128,1536,9,128,1,129,1,129,3,129,1540,8,129,1,129, + 3,129,1543,8,129,1,130,1,130,1,130,5,130,1548,8,130,10,130,12,130, + 1551,9,130,1,131,3,131,1554,8,131,1,131,1,131,1,131,3,131,1559,8, + 131,3,131,1561,8,131,1,131,1,131,3,131,1565,8,131,1,132,3,132,1568, + 8,132,1,132,3,132,1571,8,132,1,132,1,132,3,132,1575,8,132,1,132, + 1,132,1,133,3,133,1580,8,133,1,133,1,133,1,133,1,133,1,133,3,133, + 1587,8,133,1,134,1,134,1,134,1,134,1,134,3,134,1594,8,134,1,135, + 1,135,1,135,3,135,1599,8,135,1,136,1,136,3,136,1603,8,136,1,137, + 1,137,3,137,1607,8,137,1,137,1,137,1,137,3,137,1612,8,137,5,137, + 1614,8,137,10,137,12,137,1617,9,137,1,138,1,138,1,138,3,138,1622, + 8,138,3,138,1624,8,138,1,138,1,138,1,139,1,139,3,139,1630,8,139, + 1,140,1,140,1,140,3,140,1635,8,140,1,140,1,140,1,141,1,141,3,141, + 1641,8,141,1,141,1,141,3,141,1645,8,141,3,141,1647,8,141,1,141,3, + 141,1650,8,141,1,141,1,141,3,141,1654,8,141,1,141,1,141,3,141,1658, + 8,141,3,141,1660,8,141,3,141,1662,8,141,1,142,3,142,1665,8,142,1, + 142,1,142,1,143,1,143,1,144,1,144,1,145,1,145,1,145,1,145,4,145, + 1677,8,145,11,145,12,145,1678,1,146,3,146,1682,8,146,1,146,3,146, + 1685,8,146,1,146,3,146,1688,8,146,1,146,1,146,1,146,1,146,1,146, + 1,146,1,146,3,146,1697,8,146,1,147,1,147,1,147,5,147,1702,8,147, + 10,147,12,147,1705,9,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148, + 1,148,1,148,3,148,1716,8,148,1,148,1,148,3,148,1720,8,148,1,148, + 3,148,1723,8,148,1,148,1,148,3,148,1727,8,148,1,149,4,149,1730,8, + 149,11,149,12,149,1731,1,150,1,150,1,151,1,151,1,151,1,152,1,152, + 1,152,1,153,1,153,3,153,1744,8,153,1,153,1,153,1,153,3,153,1749, + 8,153,5,153,1751,8,153,10,153,12,153,1754,9,153,1,154,3,154,1757, + 8,154,1,154,1,154,1,154,3,154,1762,8,154,1,154,1,154,1,154,3,154, + 1767,8,154,1,154,1,154,3,154,1771,8,154,1,155,3,155,1774,8,155,1, + 155,1,155,3,155,1778,8,155,1,156,1,156,1,157,1,157,1,158,1,158,1, + 158,1,159,1,159,3,159,1789,8,159,1,160,1,160,3,160,1793,8,160,1, + 161,1,161,1,161,1,162,1,162,3,162,1800,8,162,1,162,1,162,1,162,3, + 162,1805,8,162,5,162,1807,8,162,10,162,12,162,1810,9,162,1,163,1, + 163,1,163,3,163,1815,8,163,1,163,1,163,3,163,1819,8,163,1,164,1, + 164,3,164,1823,8,164,1,165,1,165,1,165,1,166,1,166,1,166,1,166,3, + 166,1832,8,166,1,167,1,167,1,167,1,167,1,167,1,167,1,168,1,168,1, + 168,5,168,1843,8,168,10,168,12,168,1846,9,168,1,169,1,169,3,169, + 1850,8,169,1,170,1,170,1,170,1,170,1,170,3,170,1857,8,170,1,170, + 1,170,3,170,1861,8,170,1,170,3,170,1864,8,170,1,170,3,170,1867,8, + 170,1,170,3,170,1870,8,170,1,170,1,170,3,170,1874,8,170,1,171,1, + 171,1,171,3,171,1879,8,171,1,171,1,171,1,172,1,172,1,172,3,172,1886, + 8,172,1,172,1,172,3,172,1890,8,172,1,172,1,172,3,172,1894,8,172, + 1,173,1,173,1,174,1,174,3,174,1900,8,174,1,174,1,174,1,174,3,174, + 1905,8,174,5,174,1907,8,174,10,174,12,174,1910,9,174,1,175,1,175, + 1,175,3,175,1915,8,175,1,176,1,176,1,176,1,176,3,176,1921,8,176, + 1,176,3,176,1924,8,176,1,177,3,177,1927,8,177,1,177,1,177,1,177, + 1,178,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,180,1,180, + 3,180,1943,8,180,1,180,1,180,1,180,1,181,4,181,1949,8,181,11,181, + 12,181,1950,1,182,1,182,1,182,1,182,1,182,1,182,1,183,3,183,1960, + 8,183,1,183,1,183,1,183,3,183,1965,8,183,1,183,3,183,1968,8,183, + 1,184,1,184,3,184,1972,8,184,1,185,1,185,3,185,1976,8,185,1,186, + 1,186,1,186,3,186,1981,8,186,1,186,1,186,1,187,1,187,3,187,1987, + 8,187,1,187,1,187,1,187,3,187,1992,8,187,5,187,1994,8,187,10,187, + 12,187,1997,9,187,1,188,1,188,1,188,1,188,1,188,1,188,3,188,2005, + 8,188,1,189,1,189,1,189,3,189,2010,8,189,1,189,1,189,1,189,3,189, + 2015,8,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189, + 1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189, + 1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189, + 1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,3,189, + 2058,8,189,1,190,1,190,1,190,1,1047,4,10,30,50,230,191,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,0,23,2,0,97, + 97,101,101,4,0,24,24,31,31,58,58,65,65,2,0,124,124,129,129,1,0,120, + 121,2,0,91,93,97,100,2,0,123,123,130,130,1,0,93,95,1,0,91,92,2,0, + 102,103,116,117,1,0,114,115,2,0,101,101,104,113,5,0,36,36,47,47, + 57,57,63,63,70,70,3,0,34,34,44,44,80,80,2,0,46,46,60,60,2,0,61,61, + 78,78,2,0,21,21,66,66,1,0,85,90,2,0,97,97,118,118,2,0,22,22,82,82, + 1,0,27,28,2,0,38,38,53,53,1,0,54,56,1,0,1,7,2285,0,383,1,0,0,0,2, + 399,1,0,0,0,4,403,1,0,0,0,6,415,1,0,0,0,8,417,1,0,0,0,10,423,1,0, + 0,0,12,445,1,0,0,0,14,451,1,0,0,0,16,463,1,0,0,0,18,465,1,0,0,0, + 20,467,1,0,0,0,22,480,1,0,0,0,24,487,1,0,0,0,26,490,1,0,0,0,28,495, + 1,0,0,0,30,542,1,0,0,0,32,574,1,0,0,0,34,576,1,0,0,0,36,597,1,0, + 0,0,38,626,1,0,0,0,40,628,1,0,0,0,42,631,1,0,0,0,44,647,1,0,0,0, + 46,651,1,0,0,0,48,660,1,0,0,0,50,662,1,0,0,0,52,687,1,0,0,0,54,690, + 1,0,0,0,56,699,1,0,0,0,58,710,1,0,0,0,60,712,1,0,0,0,62,720,1,0, + 0,0,64,728,1,0,0,0,66,736,1,0,0,0,68,749,1,0,0,0,70,751,1,0,0,0, + 72,759,1,0,0,0,74,767,1,0,0,0,76,775,1,0,0,0,78,783,1,0,0,0,80,791, + 1,0,0,0,82,799,1,0,0,0,84,807,1,0,0,0,86,821,1,0,0,0,88,823,1,0, + 0,0,90,825,1,0,0,0,92,833,1,0,0,0,94,848,1,0,0,0,96,851,1,0,0,0, + 98,863,1,0,0,0,100,867,1,0,0,0,102,874,1,0,0,0,104,893,1,0,0,0,106, + 906,1,0,0,0,108,941,1,0,0,0,110,945,1,0,0,0,112,948,1,0,0,0,114, + 955,1,0,0,0,116,966,1,0,0,0,118,970,1,0,0,0,120,973,1,0,0,0,122, + 986,1,0,0,0,124,996,1,0,0,0,126,998,1,0,0,0,128,1021,1,0,0,0,130, + 1023,1,0,0,0,132,1031,1,0,0,0,134,1033,1,0,0,0,136,1042,1,0,0,0, + 138,1045,1,0,0,0,140,1052,1,0,0,0,142,1054,1,0,0,0,144,1056,1,0, + 0,0,146,1061,1,0,0,0,148,1067,1,0,0,0,150,1070,1,0,0,0,152,1078, + 1,0,0,0,154,1085,1,0,0,0,156,1087,1,0,0,0,158,1113,1,0,0,0,160,1119, + 1,0,0,0,162,1121,1,0,0,0,164,1151,1,0,0,0,166,1153,1,0,0,0,168,1155, + 1,0,0,0,170,1165,1,0,0,0,172,1178,1,0,0,0,174,1188,1,0,0,0,176,1192, + 1,0,0,0,178,1195,1,0,0,0,180,1203,1,0,0,0,182,1208,1,0,0,0,184,1212, + 1,0,0,0,186,1214,1,0,0,0,188,1217,1,0,0,0,190,1230,1,0,0,0,192,1232, + 1,0,0,0,194,1239,1,0,0,0,196,1243,1,0,0,0,198,1255,1,0,0,0,200,1265, + 1,0,0,0,202,1271,1,0,0,0,204,1282,1,0,0,0,206,1294,1,0,0,0,208,1296, + 1,0,0,0,210,1307,1,0,0,0,212,1321,1,0,0,0,214,1327,1,0,0,0,216,1329, + 1,0,0,0,218,1336,1,0,0,0,220,1357,1,0,0,0,222,1359,1,0,0,0,224,1367, + 1,0,0,0,226,1376,1,0,0,0,228,1384,1,0,0,0,230,1398,1,0,0,0,232,1417, + 1,0,0,0,234,1434,1,0,0,0,236,1453,1,0,0,0,238,1456,1,0,0,0,240,1460, + 1,0,0,0,242,1462,1,0,0,0,244,1465,1,0,0,0,246,1469,1,0,0,0,248,1481, + 1,0,0,0,250,1486,1,0,0,0,252,1498,1,0,0,0,254,1517,1,0,0,0,256,1522, + 1,0,0,0,258,1537,1,0,0,0,260,1544,1,0,0,0,262,1553,1,0,0,0,264,1567, + 1,0,0,0,266,1586,1,0,0,0,268,1593,1,0,0,0,270,1598,1,0,0,0,272,1602, + 1,0,0,0,274,1604,1,0,0,0,276,1618,1,0,0,0,278,1629,1,0,0,0,280,1631, + 1,0,0,0,282,1661,1,0,0,0,284,1664,1,0,0,0,286,1668,1,0,0,0,288,1670, + 1,0,0,0,290,1676,1,0,0,0,292,1696,1,0,0,0,294,1698,1,0,0,0,296,1726, + 1,0,0,0,298,1729,1,0,0,0,300,1733,1,0,0,0,302,1735,1,0,0,0,304,1738, + 1,0,0,0,306,1741,1,0,0,0,308,1756,1,0,0,0,310,1777,1,0,0,0,312,1779, + 1,0,0,0,314,1781,1,0,0,0,316,1783,1,0,0,0,318,1786,1,0,0,0,320,1790, + 1,0,0,0,322,1794,1,0,0,0,324,1797,1,0,0,0,326,1811,1,0,0,0,328,1822, + 1,0,0,0,330,1824,1,0,0,0,332,1827,1,0,0,0,334,1833,1,0,0,0,336,1839, + 1,0,0,0,338,1849,1,0,0,0,340,1860,1,0,0,0,342,1875,1,0,0,0,344,1893, + 1,0,0,0,346,1895,1,0,0,0,348,1897,1,0,0,0,350,1914,1,0,0,0,352,1916, + 1,0,0,0,354,1926,1,0,0,0,356,1931,1,0,0,0,358,1936,1,0,0,0,360,1940, + 1,0,0,0,362,1948,1,0,0,0,364,1952,1,0,0,0,366,1967,1,0,0,0,368,1969, + 1,0,0,0,370,1975,1,0,0,0,372,1977,1,0,0,0,374,1984,1,0,0,0,376,2004, + 1,0,0,0,378,2057,1,0,0,0,380,2059,1,0,0,0,382,384,3,120,60,0,383, + 382,1,0,0,0,383,384,1,0,0,0,384,385,1,0,0,0,385,386,5,0,0,1,386, + 1,1,0,0,0,387,389,3,380,190,0,388,387,1,0,0,0,389,390,1,0,0,0,390, + 388,1,0,0,0,390,391,1,0,0,0,391,400,1,0,0,0,392,400,5,69,0,0,393, + 394,5,85,0,0,394,395,3,90,45,0,395,396,5,86,0,0,396,400,1,0,0,0, + 397,400,3,4,2,0,398,400,3,12,6,0,399,388,1,0,0,0,399,392,1,0,0,0, + 399,393,1,0,0,0,399,397,1,0,0,0,399,398,1,0,0,0,400,3,1,0,0,0,401, + 404,3,6,3,0,402,404,3,8,4,0,403,401,1,0,0,0,403,402,1,0,0,0,404, + 5,1,0,0,0,405,416,5,132,0,0,406,416,3,330,165,0,407,416,3,316,158, + 0,408,416,3,332,166,0,409,412,5,99,0,0,410,413,3,278,139,0,411,413, + 3,162,81,0,412,410,1,0,0,0,412,411,1,0,0,0,413,416,1,0,0,0,414,416, + 3,344,172,0,415,405,1,0,0,0,415,406,1,0,0,0,415,407,1,0,0,0,415, + 408,1,0,0,0,415,409,1,0,0,0,415,414,1,0,0,0,416,7,1,0,0,0,417,419, + 3,10,5,0,418,420,5,68,0,0,419,418,1,0,0,0,419,420,1,0,0,0,420,421, + 1,0,0,0,421,422,3,6,3,0,422,9,1,0,0,0,423,427,6,5,-1,0,424,428,3, + 160,80,0,425,428,3,184,92,0,426,428,3,162,81,0,427,424,1,0,0,0,427, + 425,1,0,0,0,427,426,1,0,0,0,427,428,1,0,0,0,428,429,1,0,0,0,429, + 430,5,127,0,0,430,442,1,0,0,0,431,437,10,1,0,0,432,438,5,132,0,0, + 433,435,5,68,0,0,434,433,1,0,0,0,434,435,1,0,0,0,435,436,1,0,0,0, + 436,438,3,342,171,0,437,432,1,0,0,0,437,434,1,0,0,0,438,439,1,0, + 0,0,439,441,5,127,0,0,440,431,1,0,0,0,441,444,1,0,0,0,442,440,1, + 0,0,0,442,443,1,0,0,0,443,11,1,0,0,0,444,442,1,0,0,0,445,447,3,14, + 7,0,446,448,3,28,14,0,447,446,1,0,0,0,447,448,1,0,0,0,448,449,1, + 0,0,0,449,450,3,100,50,0,450,13,1,0,0,0,451,453,5,87,0,0,452,454, + 3,16,8,0,453,452,1,0,0,0,453,454,1,0,0,0,454,455,1,0,0,0,455,456, + 5,88,0,0,456,15,1,0,0,0,457,464,3,20,10,0,458,461,3,18,9,0,459,460, + 5,122,0,0,460,462,3,20,10,0,461,459,1,0,0,0,461,462,1,0,0,0,462, + 464,1,0,0,0,463,457,1,0,0,0,463,458,1,0,0,0,464,17,1,0,0,0,465,466, + 7,0,0,0,466,19,1,0,0,0,467,472,3,22,11,0,468,469,5,122,0,0,469,471, + 3,22,11,0,470,468,1,0,0,0,471,474,1,0,0,0,472,470,1,0,0,0,472,473, + 1,0,0,0,473,476,1,0,0,0,474,472,1,0,0,0,475,477,5,131,0,0,476,475, + 1,0,0,0,476,477,1,0,0,0,477,21,1,0,0,0,478,481,3,24,12,0,479,481, + 3,26,13,0,480,478,1,0,0,0,480,479,1,0,0,0,481,23,1,0,0,0,482,484, + 5,97,0,0,483,482,1,0,0,0,483,484,1,0,0,0,484,485,1,0,0,0,485,488, + 5,132,0,0,486,488,5,69,0,0,487,483,1,0,0,0,487,486,1,0,0,0,488,25, + 1,0,0,0,489,491,5,97,0,0,490,489,1,0,0,0,490,491,1,0,0,0,491,492, + 1,0,0,0,492,493,5,132,0,0,493,494,3,268,134,0,494,27,1,0,0,0,495, + 497,5,85,0,0,496,498,3,258,129,0,497,496,1,0,0,0,497,498,1,0,0,0, + 498,499,1,0,0,0,499,501,5,86,0,0,500,502,5,47,0,0,501,500,1,0,0, + 0,501,502,1,0,0,0,502,504,1,0,0,0,503,505,3,370,185,0,504,503,1, + 0,0,0,504,505,1,0,0,0,505,507,1,0,0,0,506,508,3,204,102,0,507,506, + 1,0,0,0,507,508,1,0,0,0,508,510,1,0,0,0,509,511,3,234,117,0,510, + 509,1,0,0,0,510,511,1,0,0,0,511,29,1,0,0,0,512,513,6,15,-1,0,513, + 543,3,2,1,0,514,517,3,158,79,0,515,517,3,352,176,0,516,514,1,0,0, + 0,516,515,1,0,0,0,517,524,1,0,0,0,518,520,5,85,0,0,519,521,3,34, + 17,0,520,519,1,0,0,0,520,521,1,0,0,0,521,522,1,0,0,0,522,525,5,86, + 0,0,523,525,3,276,138,0,524,518,1,0,0,0,524,523,1,0,0,0,525,543, + 1,0,0,0,526,527,7,1,0,0,527,528,5,102,0,0,528,529,3,246,123,0,529, + 530,5,103,0,0,530,531,5,85,0,0,531,532,3,90,45,0,532,533,5,86,0, + 0,533,543,1,0,0,0,534,535,3,32,16,0,535,538,5,85,0,0,536,539,3,90, + 45,0,537,539,3,246,123,0,538,536,1,0,0,0,538,537,1,0,0,0,539,540, + 1,0,0,0,540,541,5,86,0,0,541,543,1,0,0,0,542,512,1,0,0,0,542,516, + 1,0,0,0,542,526,1,0,0,0,542,534,1,0,0,0,543,571,1,0,0,0,544,545, + 10,7,0,0,545,548,5,87,0,0,546,549,3,90,45,0,547,549,3,276,138,0, + 548,546,1,0,0,0,548,547,1,0,0,0,549,550,1,0,0,0,550,551,5,88,0,0, + 551,570,1,0,0,0,552,553,10,6,0,0,553,555,5,85,0,0,554,556,3,34,17, + 0,555,554,1,0,0,0,555,556,1,0,0,0,556,557,1,0,0,0,557,570,5,86,0, + 0,558,559,10,4,0,0,559,565,7,2,0,0,560,562,5,68,0,0,561,560,1,0, + 0,0,561,562,1,0,0,0,562,563,1,0,0,0,563,566,3,4,2,0,564,566,3,36, + 18,0,565,561,1,0,0,0,565,564,1,0,0,0,566,570,1,0,0,0,567,568,10, + 3,0,0,568,570,7,3,0,0,569,544,1,0,0,0,569,552,1,0,0,0,569,558,1, + 0,0,0,569,567,1,0,0,0,570,573,1,0,0,0,571,569,1,0,0,0,571,572,1, + 0,0,0,572,31,1,0,0,0,573,571,1,0,0,0,574,575,5,75,0,0,575,33,1,0, + 0,0,576,577,3,274,137,0,577,35,1,0,0,0,578,580,3,10,5,0,579,578, + 1,0,0,0,579,580,1,0,0,0,580,584,1,0,0,0,581,582,3,160,80,0,582,583, + 5,127,0,0,583,585,1,0,0,0,584,581,1,0,0,0,584,585,1,0,0,0,585,586, + 1,0,0,0,586,587,5,99,0,0,587,598,3,160,80,0,588,589,3,10,5,0,589, + 590,5,68,0,0,590,591,3,342,171,0,591,592,5,127,0,0,592,593,5,99, + 0,0,593,594,3,160,80,0,594,598,1,0,0,0,595,596,5,99,0,0,596,598, + 3,162,81,0,597,579,1,0,0,0,597,588,1,0,0,0,597,595,1,0,0,0,598,37, + 1,0,0,0,599,627,3,30,15,0,600,605,5,120,0,0,601,605,5,121,0,0,602, + 605,3,40,20,0,603,605,5,62,0,0,604,600,1,0,0,0,604,601,1,0,0,0,604, + 602,1,0,0,0,604,603,1,0,0,0,605,606,1,0,0,0,606,627,3,38,19,0,607, + 616,5,62,0,0,608,609,5,85,0,0,609,610,3,246,123,0,610,611,5,86,0, + 0,611,617,1,0,0,0,612,613,5,131,0,0,613,614,5,85,0,0,614,615,5,132, + 0,0,615,617,5,86,0,0,616,608,1,0,0,0,616,612,1,0,0,0,617,627,1,0, + 0,0,618,619,5,11,0,0,619,620,5,85,0,0,620,621,3,246,123,0,621,622, + 5,86,0,0,622,627,1,0,0,0,623,627,3,56,28,0,624,627,3,42,21,0,625, + 627,3,54,27,0,626,599,1,0,0,0,626,604,1,0,0,0,626,607,1,0,0,0,626, + 618,1,0,0,0,626,623,1,0,0,0,626,624,1,0,0,0,626,625,1,0,0,0,627, + 39,1,0,0,0,628,629,7,4,0,0,629,41,1,0,0,0,630,632,5,127,0,0,631, + 630,1,0,0,0,631,632,1,0,0,0,632,633,1,0,0,0,633,635,5,49,0,0,634, + 636,3,44,22,0,635,634,1,0,0,0,635,636,1,0,0,0,636,642,1,0,0,0,637, + 643,3,46,23,0,638,639,5,85,0,0,639,640,3,246,123,0,640,641,5,86, + 0,0,641,643,1,0,0,0,642,637,1,0,0,0,642,638,1,0,0,0,643,645,1,0, + 0,0,644,646,3,52,26,0,645,644,1,0,0,0,645,646,1,0,0,0,646,43,1,0, + 0,0,647,648,5,85,0,0,648,649,3,34,17,0,649,650,5,86,0,0,650,45,1, + 0,0,0,651,653,3,150,75,0,652,654,3,48,24,0,653,652,1,0,0,0,653,654, + 1,0,0,0,654,47,1,0,0,0,655,657,3,236,118,0,656,658,3,48,24,0,657, + 656,1,0,0,0,657,658,1,0,0,0,658,661,1,0,0,0,659,661,3,50,25,0,660, + 655,1,0,0,0,660,659,1,0,0,0,661,49,1,0,0,0,662,663,6,25,-1,0,663, + 664,5,87,0,0,664,665,3,90,45,0,665,667,5,88,0,0,666,668,3,204,102, + 0,667,666,1,0,0,0,667,668,1,0,0,0,668,678,1,0,0,0,669,670,10,1,0, + 0,670,671,5,87,0,0,671,672,3,92,46,0,672,674,5,88,0,0,673,675,3, + 204,102,0,674,673,1,0,0,0,674,675,1,0,0,0,675,677,1,0,0,0,676,669, + 1,0,0,0,677,680,1,0,0,0,678,676,1,0,0,0,678,679,1,0,0,0,679,51,1, + 0,0,0,680,678,1,0,0,0,681,683,5,85,0,0,682,684,3,34,17,0,683,682, + 1,0,0,0,683,684,1,0,0,0,684,685,1,0,0,0,685,688,5,86,0,0,686,688, + 3,276,138,0,687,681,1,0,0,0,687,686,1,0,0,0,688,53,1,0,0,0,689,691, + 5,127,0,0,690,689,1,0,0,0,690,691,1,0,0,0,691,692,1,0,0,0,692,695, + 5,28,0,0,693,694,5,87,0,0,694,696,5,88,0,0,695,693,1,0,0,0,695,696, + 1,0,0,0,696,697,1,0,0,0,697,698,3,58,29,0,698,55,1,0,0,0,699,700, + 5,50,0,0,700,701,5,85,0,0,701,702,3,90,45,0,702,703,5,86,0,0,703, + 57,1,0,0,0,704,711,3,38,19,0,705,706,5,85,0,0,706,707,3,246,123, + 0,707,708,5,86,0,0,708,709,3,58,29,0,709,711,1,0,0,0,710,704,1,0, + 0,0,710,705,1,0,0,0,711,59,1,0,0,0,712,717,3,58,29,0,713,714,7,5, + 0,0,714,716,3,58,29,0,715,713,1,0,0,0,716,719,1,0,0,0,717,715,1, + 0,0,0,717,718,1,0,0,0,718,61,1,0,0,0,719,717,1,0,0,0,720,725,3,60, + 30,0,721,722,7,6,0,0,722,724,3,60,30,0,723,721,1,0,0,0,724,727,1, + 0,0,0,725,723,1,0,0,0,725,726,1,0,0,0,726,63,1,0,0,0,727,725,1,0, + 0,0,728,733,3,62,31,0,729,730,7,7,0,0,730,732,3,62,31,0,731,729, + 1,0,0,0,732,735,1,0,0,0,733,731,1,0,0,0,733,734,1,0,0,0,734,65,1, + 0,0,0,735,733,1,0,0,0,736,742,3,64,32,0,737,738,3,68,34,0,738,739, + 3,64,32,0,739,741,1,0,0,0,740,737,1,0,0,0,741,744,1,0,0,0,742,740, + 1,0,0,0,742,743,1,0,0,0,743,67,1,0,0,0,744,742,1,0,0,0,745,746,5, + 103,0,0,746,750,5,103,0,0,747,748,5,102,0,0,748,750,5,102,0,0,749, + 745,1,0,0,0,749,747,1,0,0,0,750,69,1,0,0,0,751,756,3,66,33,0,752, + 753,7,8,0,0,753,755,3,66,33,0,754,752,1,0,0,0,755,758,1,0,0,0,756, + 754,1,0,0,0,756,757,1,0,0,0,757,71,1,0,0,0,758,756,1,0,0,0,759,764, + 3,70,35,0,760,761,7,9,0,0,761,763,3,70,35,0,762,760,1,0,0,0,763, + 766,1,0,0,0,764,762,1,0,0,0,764,765,1,0,0,0,765,73,1,0,0,0,766,764, + 1,0,0,0,767,772,3,72,36,0,768,769,5,97,0,0,769,771,3,72,36,0,770, + 768,1,0,0,0,771,774,1,0,0,0,772,770,1,0,0,0,772,773,1,0,0,0,773, + 75,1,0,0,0,774,772,1,0,0,0,775,780,3,74,37,0,776,777,5,96,0,0,777, + 779,3,74,37,0,778,776,1,0,0,0,779,782,1,0,0,0,780,778,1,0,0,0,780, + 781,1,0,0,0,781,77,1,0,0,0,782,780,1,0,0,0,783,788,3,76,38,0,784, + 785,5,98,0,0,785,787,3,76,38,0,786,784,1,0,0,0,787,790,1,0,0,0,788, + 786,1,0,0,0,788,789,1,0,0,0,789,79,1,0,0,0,790,788,1,0,0,0,791,796, + 3,78,39,0,792,793,5,118,0,0,793,795,3,78,39,0,794,792,1,0,0,0,795, + 798,1,0,0,0,796,794,1,0,0,0,796,797,1,0,0,0,797,81,1,0,0,0,798,796, + 1,0,0,0,799,804,3,80,40,0,800,801,5,119,0,0,801,803,3,80,40,0,802, + 800,1,0,0,0,803,806,1,0,0,0,804,802,1,0,0,0,804,805,1,0,0,0,805, + 83,1,0,0,0,806,804,1,0,0,0,807,813,3,82,41,0,808,809,5,125,0,0,809, + 810,3,90,45,0,810,811,5,126,0,0,811,812,3,86,43,0,812,814,1,0,0, + 0,813,808,1,0,0,0,813,814,1,0,0,0,814,85,1,0,0,0,815,822,3,84,42, + 0,816,817,3,82,41,0,817,818,3,88,44,0,818,819,3,272,136,0,819,822, + 1,0,0,0,820,822,3,368,184,0,821,815,1,0,0,0,821,816,1,0,0,0,821, + 820,1,0,0,0,822,87,1,0,0,0,823,824,7,10,0,0,824,89,1,0,0,0,825,830, + 3,86,43,0,826,827,5,122,0,0,827,829,3,86,43,0,828,826,1,0,0,0,829, + 832,1,0,0,0,830,828,1,0,0,0,830,831,1,0,0,0,831,91,1,0,0,0,832,830, + 1,0,0,0,833,834,3,84,42,0,834,93,1,0,0,0,835,849,3,96,48,0,836,849, + 3,118,59,0,837,839,3,204,102,0,838,837,1,0,0,0,838,839,1,0,0,0,839, + 846,1,0,0,0,840,847,3,98,49,0,841,847,3,100,50,0,842,847,3,104,52, + 0,843,847,3,108,54,0,844,847,3,116,58,0,845,847,3,358,179,0,846, + 840,1,0,0,0,846,841,1,0,0,0,846,842,1,0,0,0,846,843,1,0,0,0,846, + 844,1,0,0,0,846,845,1,0,0,0,847,849,1,0,0,0,848,835,1,0,0,0,848, + 836,1,0,0,0,848,838,1,0,0,0,849,95,1,0,0,0,850,852,3,204,102,0,851, + 850,1,0,0,0,851,852,1,0,0,0,852,857,1,0,0,0,853,858,5,132,0,0,854, + 855,5,16,0,0,855,858,3,92,46,0,856,858,5,27,0,0,857,853,1,0,0,0, + 857,854,1,0,0,0,857,856,1,0,0,0,858,859,1,0,0,0,859,860,5,126,0, + 0,860,861,3,94,47,0,861,97,1,0,0,0,862,864,3,90,45,0,863,862,1,0, + 0,0,863,864,1,0,0,0,864,865,1,0,0,0,865,866,5,128,0,0,866,99,1,0, + 0,0,867,869,5,89,0,0,868,870,3,102,51,0,869,868,1,0,0,0,869,870, + 1,0,0,0,870,871,1,0,0,0,871,872,5,90,0,0,872,101,1,0,0,0,873,875, + 3,94,47,0,874,873,1,0,0,0,875,876,1,0,0,0,876,874,1,0,0,0,876,877, + 1,0,0,0,877,103,1,0,0,0,878,879,5,43,0,0,879,880,5,85,0,0,880,881, + 3,106,53,0,881,882,5,86,0,0,882,885,3,94,47,0,883,884,5,32,0,0,884, + 886,3,94,47,0,885,883,1,0,0,0,885,886,1,0,0,0,886,894,1,0,0,0,887, + 888,5,67,0,0,888,889,5,85,0,0,889,890,3,106,53,0,890,891,5,86,0, + 0,891,892,3,94,47,0,892,894,1,0,0,0,893,878,1,0,0,0,893,887,1,0, + 0,0,894,105,1,0,0,0,895,907,3,90,45,0,896,898,3,204,102,0,897,896, + 1,0,0,0,897,898,1,0,0,0,898,899,1,0,0,0,899,900,3,138,69,0,900,904, + 3,226,113,0,901,902,5,101,0,0,902,905,3,272,136,0,903,905,3,276, + 138,0,904,901,1,0,0,0,904,903,1,0,0,0,905,907,1,0,0,0,906,895,1, + 0,0,0,906,897,1,0,0,0,907,107,1,0,0,0,908,909,5,84,0,0,909,910,5, + 85,0,0,910,911,3,106,53,0,911,912,5,86,0,0,912,913,3,94,47,0,913, + 942,1,0,0,0,914,915,5,29,0,0,915,916,3,94,47,0,916,917,5,84,0,0, + 917,918,5,85,0,0,918,919,3,90,45,0,919,920,5,86,0,0,920,921,5,128, + 0,0,921,942,1,0,0,0,922,923,5,40,0,0,923,936,5,85,0,0,924,926,3, + 110,55,0,925,927,3,106,53,0,926,925,1,0,0,0,926,927,1,0,0,0,927, + 928,1,0,0,0,928,930,5,128,0,0,929,931,3,90,45,0,930,929,1,0,0,0, + 930,931,1,0,0,0,931,937,1,0,0,0,932,933,3,112,56,0,933,934,5,126, + 0,0,934,935,3,114,57,0,935,937,1,0,0,0,936,924,1,0,0,0,936,932,1, + 0,0,0,937,938,1,0,0,0,938,939,5,86,0,0,939,940,3,94,47,0,940,942, + 1,0,0,0,941,908,1,0,0,0,941,914,1,0,0,0,941,922,1,0,0,0,942,109, + 1,0,0,0,943,946,3,98,49,0,944,946,3,128,64,0,945,943,1,0,0,0,945, + 944,1,0,0,0,946,111,1,0,0,0,947,949,3,204,102,0,948,947,1,0,0,0, + 948,949,1,0,0,0,949,950,1,0,0,0,950,951,3,138,69,0,951,952,3,226, + 113,0,952,113,1,0,0,0,953,956,3,90,45,0,954,956,3,276,138,0,955, + 953,1,0,0,0,955,954,1,0,0,0,956,115,1,0,0,0,957,967,5,15,0,0,958, + 967,5,25,0,0,959,962,5,59,0,0,960,963,3,90,45,0,961,963,3,276,138, + 0,962,960,1,0,0,0,962,961,1,0,0,0,962,963,1,0,0,0,963,967,1,0,0, + 0,964,965,5,42,0,0,965,967,5,132,0,0,966,957,1,0,0,0,966,958,1,0, + 0,0,966,959,1,0,0,0,966,964,1,0,0,0,967,968,1,0,0,0,968,969,5,128, + 0,0,969,117,1,0,0,0,970,971,3,124,62,0,971,119,1,0,0,0,972,974,3, + 122,61,0,973,972,1,0,0,0,974,975,1,0,0,0,975,973,1,0,0,0,975,976, + 1,0,0,0,976,121,1,0,0,0,977,987,3,124,62,0,978,987,3,264,132,0,979, + 987,3,334,167,0,980,987,3,354,177,0,981,987,3,356,178,0,982,987, + 3,202,101,0,983,987,3,188,94,0,984,987,3,132,66,0,985,987,3,134, + 67,0,986,977,1,0,0,0,986,978,1,0,0,0,986,979,1,0,0,0,986,980,1,0, + 0,0,986,981,1,0,0,0,986,982,1,0,0,0,986,983,1,0,0,0,986,984,1,0, + 0,0,986,985,1,0,0,0,987,123,1,0,0,0,988,997,3,128,64,0,989,997,3, + 200,100,0,990,997,3,192,96,0,991,997,3,196,98,0,992,997,3,198,99, + 0,993,997,3,130,65,0,994,997,3,126,63,0,995,997,3,172,86,0,996,988, + 1,0,0,0,996,989,1,0,0,0,996,990,1,0,0,0,996,991,1,0,0,0,996,992, + 1,0,0,0,996,993,1,0,0,0,996,994,1,0,0,0,996,995,1,0,0,0,997,125, + 1,0,0,0,998,999,5,79,0,0,999,1001,5,132,0,0,1000,1002,3,204,102, + 0,1001,1000,1,0,0,0,1001,1002,1,0,0,0,1002,1003,1,0,0,0,1003,1004, + 5,101,0,0,1004,1005,3,246,123,0,1005,1006,5,128,0,0,1006,127,1,0, + 0,0,1007,1009,3,138,69,0,1008,1007,1,0,0,0,1008,1009,1,0,0,0,1009, + 1011,1,0,0,0,1010,1012,3,222,111,0,1011,1010,1,0,0,0,1011,1012,1, + 0,0,0,1012,1013,1,0,0,0,1013,1022,5,128,0,0,1014,1016,3,204,102, + 0,1015,1017,3,138,69,0,1016,1015,1,0,0,0,1016,1017,1,0,0,0,1017, + 1018,1,0,0,0,1018,1019,3,222,111,0,1019,1020,5,128,0,0,1020,1022, + 1,0,0,0,1021,1008,1,0,0,0,1021,1014,1,0,0,0,1022,129,1,0,0,0,1023, + 1024,5,64,0,0,1024,1025,5,85,0,0,1025,1026,3,92,46,0,1026,1027,5, + 122,0,0,1027,1028,5,4,0,0,1028,1029,5,86,0,0,1029,1030,5,128,0,0, + 1030,131,1,0,0,0,1031,1032,5,128,0,0,1032,133,1,0,0,0,1033,1034, + 3,204,102,0,1034,1035,5,128,0,0,1035,135,1,0,0,0,1036,1043,3,140, + 70,0,1037,1043,3,146,73,0,1038,1043,3,142,71,0,1039,1043,5,41,0, + 0,1040,1043,5,74,0,0,1041,1043,5,23,0,0,1042,1036,1,0,0,0,1042,1037, + 1,0,0,0,1042,1038,1,0,0,0,1042,1039,1,0,0,0,1042,1040,1,0,0,0,1042, + 1041,1,0,0,0,1043,137,1,0,0,0,1044,1046,3,136,68,0,1045,1044,1,0, + 0,0,1046,1047,1,0,0,0,1047,1048,1,0,0,0,1047,1045,1,0,0,0,1048,1050, + 1,0,0,0,1049,1051,3,204,102,0,1050,1049,1,0,0,0,1050,1051,1,0,0, + 0,1051,139,1,0,0,0,1052,1053,7,11,0,0,1053,141,1,0,0,0,1054,1055, + 7,12,0,0,1055,143,1,0,0,0,1056,1057,5,132,0,0,1057,145,1,0,0,0,1058, + 1062,3,148,74,0,1059,1062,3,280,140,0,1060,1062,3,168,84,0,1061, + 1058,1,0,0,0,1061,1059,1,0,0,0,1061,1060,1,0,0,0,1062,147,1,0,0, + 0,1063,1068,3,158,79,0,1064,1068,3,164,82,0,1065,1068,3,352,176, + 0,1066,1068,3,240,120,0,1067,1063,1,0,0,0,1067,1064,1,0,0,0,1067, + 1065,1,0,0,0,1067,1066,1,0,0,0,1068,149,1,0,0,0,1069,1071,3,146, + 73,0,1070,1069,1,0,0,0,1071,1072,1,0,0,0,1072,1070,1,0,0,0,1072, + 1073,1,0,0,0,1073,1075,1,0,0,0,1074,1076,3,204,102,0,1075,1074,1, + 0,0,0,1075,1076,1,0,0,0,1076,151,1,0,0,0,1077,1079,3,148,74,0,1078, + 1077,1,0,0,0,1079,1080,1,0,0,0,1080,1078,1,0,0,0,1080,1081,1,0,0, + 0,1081,1083,1,0,0,0,1082,1084,3,204,102,0,1083,1082,1,0,0,0,1083, + 1084,1,0,0,0,1084,153,1,0,0,0,1085,1086,7,13,0,0,1086,155,1,0,0, + 0,1087,1088,7,14,0,0,1088,157,1,0,0,0,1089,1091,3,10,5,0,1090,1089, + 1,0,0,0,1090,1091,1,0,0,0,1091,1092,1,0,0,0,1092,1114,3,160,80,0, + 1093,1094,3,10,5,0,1094,1095,5,68,0,0,1095,1096,3,342,171,0,1096, + 1114,1,0,0,0,1097,1114,5,18,0,0,1098,1114,5,19,0,0,1099,1114,5,20, + 0,0,1100,1114,5,83,0,0,1101,1114,5,14,0,0,1102,1114,5,60,0,0,1103, + 1114,5,45,0,0,1104,1114,5,46,0,0,1105,1114,5,39,0,0,1106,1114,5, + 61,0,0,1107,1114,5,78,0,0,1108,1114,5,39,0,0,1109,1114,5,30,0,0, + 1110,1114,5,81,0,0,1111,1114,5,13,0,0,1112,1114,3,162,81,0,1113, + 1090,1,0,0,0,1113,1093,1,0,0,0,1113,1097,1,0,0,0,1113,1098,1,0,0, + 0,1113,1099,1,0,0,0,1113,1100,1,0,0,0,1113,1101,1,0,0,0,1113,1102, + 1,0,0,0,1113,1103,1,0,0,0,1113,1104,1,0,0,0,1113,1105,1,0,0,0,1113, + 1106,1,0,0,0,1113,1107,1,0,0,0,1113,1108,1,0,0,0,1113,1109,1,0,0, + 0,1113,1110,1,0,0,0,1113,1111,1,0,0,0,1113,1112,1,0,0,0,1114,159, + 1,0,0,0,1115,1120,3,278,139,0,1116,1120,3,166,83,0,1117,1120,3,144, + 72,0,1118,1120,3,342,171,0,1119,1115,1,0,0,0,1119,1116,1,0,0,0,1119, + 1117,1,0,0,0,1119,1118,1,0,0,0,1120,161,1,0,0,0,1121,1122,5,26,0, + 0,1122,1125,5,85,0,0,1123,1126,3,90,45,0,1124,1126,5,13,0,0,1125, + 1123,1,0,0,0,1125,1124,1,0,0,0,1126,1127,1,0,0,0,1127,1128,5,86, + 0,0,1128,163,1,0,0,0,1129,1144,3,288,144,0,1130,1132,3,204,102,0, + 1131,1130,1,0,0,0,1131,1132,1,0,0,0,1132,1134,1,0,0,0,1133,1135, + 3,10,5,0,1134,1133,1,0,0,0,1134,1135,1,0,0,0,1135,1136,1,0,0,0,1136, + 1145,5,132,0,0,1137,1145,3,342,171,0,1138,1140,3,10,5,0,1139,1141, + 5,68,0,0,1140,1139,1,0,0,0,1140,1141,1,0,0,0,1141,1142,1,0,0,0,1142, + 1143,3,342,171,0,1143,1145,1,0,0,0,1144,1131,1,0,0,0,1144,1137,1, + 0,0,0,1144,1138,1,0,0,0,1145,1152,1,0,0,0,1146,1148,5,33,0,0,1147, + 1149,3,10,5,0,1148,1147,1,0,0,0,1148,1149,1,0,0,0,1149,1150,1,0, + 0,0,1150,1152,5,132,0,0,1151,1129,1,0,0,0,1151,1146,1,0,0,0,1152, + 165,1,0,0,0,1153,1154,5,132,0,0,1154,167,1,0,0,0,1155,1156,3,170, + 85,0,1156,1161,5,89,0,0,1157,1159,3,178,89,0,1158,1160,5,122,0,0, + 1159,1158,1,0,0,0,1159,1160,1,0,0,0,1160,1162,1,0,0,0,1161,1157, + 1,0,0,0,1161,1162,1,0,0,0,1162,1163,1,0,0,0,1163,1164,5,90,0,0,1164, + 169,1,0,0,0,1165,1167,3,174,87,0,1166,1168,3,204,102,0,1167,1166, + 1,0,0,0,1167,1168,1,0,0,0,1168,1173,1,0,0,0,1169,1171,3,10,5,0,1170, + 1169,1,0,0,0,1170,1171,1,0,0,0,1171,1172,1,0,0,0,1172,1174,5,132, + 0,0,1173,1170,1,0,0,0,1173,1174,1,0,0,0,1174,1176,1,0,0,0,1175,1177, + 3,176,88,0,1176,1175,1,0,0,0,1176,1177,1,0,0,0,1177,171,1,0,0,0, + 1178,1180,3,174,87,0,1179,1181,3,204,102,0,1180,1179,1,0,0,0,1180, + 1181,1,0,0,0,1181,1182,1,0,0,0,1182,1184,5,132,0,0,1183,1185,3,176, + 88,0,1184,1183,1,0,0,0,1184,1185,1,0,0,0,1185,1186,1,0,0,0,1186, + 1187,5,128,0,0,1187,173,1,0,0,0,1188,1190,5,33,0,0,1189,1191,7,15, + 0,0,1190,1189,1,0,0,0,1190,1191,1,0,0,0,1191,175,1,0,0,0,1192,1193, + 5,126,0,0,1193,1194,3,150,75,0,1194,177,1,0,0,0,1195,1200,3,180, + 90,0,1196,1197,5,122,0,0,1197,1199,3,180,90,0,1198,1196,1,0,0,0, + 1199,1202,1,0,0,0,1200,1198,1,0,0,0,1200,1201,1,0,0,0,1201,179,1, + 0,0,0,1202,1200,1,0,0,0,1203,1206,3,182,91,0,1204,1205,5,101,0,0, + 1205,1207,3,92,46,0,1206,1204,1,0,0,0,1206,1207,1,0,0,0,1207,181, + 1,0,0,0,1208,1209,5,132,0,0,1209,183,1,0,0,0,1210,1213,3,186,93, + 0,1211,1213,3,190,95,0,1212,1210,1,0,0,0,1212,1211,1,0,0,0,1213, + 185,1,0,0,0,1214,1215,5,132,0,0,1215,187,1,0,0,0,1216,1218,5,44, + 0,0,1217,1216,1,0,0,0,1217,1218,1,0,0,0,1218,1219,1,0,0,0,1219,1222, + 5,48,0,0,1220,1223,5,132,0,0,1221,1223,3,186,93,0,1222,1220,1,0, + 0,0,1222,1221,1,0,0,0,1222,1223,1,0,0,0,1223,1224,1,0,0,0,1224,1226, + 5,89,0,0,1225,1227,3,120,60,0,1226,1225,1,0,0,0,1226,1227,1,0,0, + 0,1227,1228,1,0,0,0,1228,1229,5,90,0,0,1229,189,1,0,0,0,1230,1231, + 5,132,0,0,1231,191,1,0,0,0,1232,1233,5,48,0,0,1233,1234,5,132,0, + 0,1234,1235,5,101,0,0,1235,1236,3,194,97,0,1236,1237,5,128,0,0,1237, + 193,1,0,0,0,1238,1240,3,10,5,0,1239,1238,1,0,0,0,1239,1240,1,0,0, + 0,1240,1241,1,0,0,0,1241,1242,3,184,92,0,1242,195,1,0,0,0,1243,1249, + 5,79,0,0,1244,1246,5,76,0,0,1245,1244,1,0,0,0,1245,1246,1,0,0,0, + 1246,1247,1,0,0,0,1247,1250,3,10,5,0,1248,1250,5,127,0,0,1249,1245, + 1,0,0,0,1249,1248,1,0,0,0,1250,1251,1,0,0,0,1251,1252,3,6,3,0,1252, + 1253,5,128,0,0,1253,197,1,0,0,0,1254,1256,3,204,102,0,1255,1254, + 1,0,0,0,1255,1256,1,0,0,0,1256,1257,1,0,0,0,1257,1258,5,79,0,0,1258, + 1260,5,48,0,0,1259,1261,3,10,5,0,1260,1259,1,0,0,0,1260,1261,1,0, + 0,0,1261,1262,1,0,0,0,1262,1263,3,184,92,0,1263,1264,5,128,0,0,1264, + 199,1,0,0,0,1265,1266,5,12,0,0,1266,1267,5,85,0,0,1267,1268,5,4, + 0,0,1268,1269,5,86,0,0,1269,1270,5,128,0,0,1270,201,1,0,0,0,1271, + 1272,5,36,0,0,1272,1279,5,4,0,0,1273,1275,5,89,0,0,1274,1276,3,120, + 60,0,1275,1274,1,0,0,0,1275,1276,1,0,0,0,1276,1277,1,0,0,0,1277, + 1280,5,90,0,0,1278,1280,3,122,61,0,1279,1273,1,0,0,0,1279,1278,1, + 0,0,0,1280,203,1,0,0,0,1281,1283,3,206,103,0,1282,1281,1,0,0,0,1283, + 1284,1,0,0,0,1284,1282,1,0,0,0,1284,1285,1,0,0,0,1285,205,1,0,0, + 0,1286,1287,5,87,0,0,1287,1289,5,87,0,0,1288,1290,3,210,105,0,1289, + 1288,1,0,0,0,1289,1290,1,0,0,0,1290,1291,1,0,0,0,1291,1292,5,88, + 0,0,1292,1295,5,88,0,0,1293,1295,3,208,104,0,1294,1286,1,0,0,0,1294, + 1293,1,0,0,0,1295,207,1,0,0,0,1296,1297,5,10,0,0,1297,1300,5,85, + 0,0,1298,1301,3,246,123,0,1299,1301,3,92,46,0,1300,1298,1,0,0,0, + 1300,1299,1,0,0,0,1301,1303,1,0,0,0,1302,1304,5,131,0,0,1303,1302, + 1,0,0,0,1303,1304,1,0,0,0,1304,1305,1,0,0,0,1305,1306,5,86,0,0,1306, + 209,1,0,0,0,1307,1312,3,212,106,0,1308,1309,5,122,0,0,1309,1311, + 3,212,106,0,1310,1308,1,0,0,0,1311,1314,1,0,0,0,1312,1310,1,0,0, + 0,1312,1313,1,0,0,0,1313,1316,1,0,0,0,1314,1312,1,0,0,0,1315,1317, + 5,131,0,0,1316,1315,1,0,0,0,1316,1317,1,0,0,0,1317,211,1,0,0,0,1318, + 1319,3,214,107,0,1319,1320,5,127,0,0,1320,1322,1,0,0,0,1321,1318, + 1,0,0,0,1321,1322,1,0,0,0,1322,1323,1,0,0,0,1323,1325,5,132,0,0, + 1324,1326,3,216,108,0,1325,1324,1,0,0,0,1325,1326,1,0,0,0,1326,213, + 1,0,0,0,1327,1328,5,132,0,0,1328,215,1,0,0,0,1329,1331,5,85,0,0, + 1330,1332,3,218,109,0,1331,1330,1,0,0,0,1331,1332,1,0,0,0,1332,1333, + 1,0,0,0,1333,1334,5,86,0,0,1334,217,1,0,0,0,1335,1337,3,220,110, + 0,1336,1335,1,0,0,0,1337,1338,1,0,0,0,1338,1336,1,0,0,0,1338,1339, + 1,0,0,0,1339,219,1,0,0,0,1340,1341,5,85,0,0,1341,1342,3,218,109, + 0,1342,1343,5,86,0,0,1343,1358,1,0,0,0,1344,1345,5,87,0,0,1345,1346, + 3,218,109,0,1346,1347,5,88,0,0,1347,1358,1,0,0,0,1348,1349,5,89, + 0,0,1349,1350,3,218,109,0,1350,1351,5,90,0,0,1351,1358,1,0,0,0,1352, + 1354,8,16,0,0,1353,1352,1,0,0,0,1354,1355,1,0,0,0,1355,1353,1,0, + 0,0,1355,1356,1,0,0,0,1356,1358,1,0,0,0,1357,1340,1,0,0,0,1357,1344, + 1,0,0,0,1357,1348,1,0,0,0,1357,1353,1,0,0,0,1358,221,1,0,0,0,1359, + 1364,3,224,112,0,1360,1361,5,122,0,0,1361,1363,3,224,112,0,1362, + 1360,1,0,0,0,1363,1366,1,0,0,0,1364,1362,1,0,0,0,1364,1365,1,0,0, + 0,1365,223,1,0,0,0,1366,1364,1,0,0,0,1367,1369,3,226,113,0,1368, + 1370,3,268,134,0,1369,1368,1,0,0,0,1369,1370,1,0,0,0,1370,225,1, + 0,0,0,1371,1377,3,228,114,0,1372,1373,3,230,115,0,1373,1374,3,232, + 116,0,1374,1375,3,234,117,0,1375,1377,1,0,0,0,1376,1371,1,0,0,0, + 1376,1372,1,0,0,0,1377,227,1,0,0,0,1378,1380,3,236,118,0,1379,1381, + 5,22,0,0,1380,1379,1,0,0,0,1380,1381,1,0,0,0,1381,1383,1,0,0,0,1382, + 1378,1,0,0,0,1383,1386,1,0,0,0,1384,1382,1,0,0,0,1384,1385,1,0,0, + 0,1385,1387,1,0,0,0,1386,1384,1,0,0,0,1387,1388,3,230,115,0,1388, + 229,1,0,0,0,1389,1390,6,115,-1,0,1390,1392,3,244,122,0,1391,1393, + 3,204,102,0,1392,1391,1,0,0,0,1392,1393,1,0,0,0,1393,1399,1,0,0, + 0,1394,1395,5,85,0,0,1395,1396,3,228,114,0,1396,1397,5,86,0,0,1397, + 1399,1,0,0,0,1398,1389,1,0,0,0,1398,1394,1,0,0,0,1399,1414,1,0,0, + 0,1400,1410,10,2,0,0,1401,1411,3,232,116,0,1402,1404,5,87,0,0,1403, + 1405,3,92,46,0,1404,1403,1,0,0,0,1404,1405,1,0,0,0,1405,1406,1,0, + 0,0,1406,1408,5,88,0,0,1407,1409,3,204,102,0,1408,1407,1,0,0,0,1408, + 1409,1,0,0,0,1409,1411,1,0,0,0,1410,1401,1,0,0,0,1410,1402,1,0,0, + 0,1411,1413,1,0,0,0,1412,1400,1,0,0,0,1413,1416,1,0,0,0,1414,1412, + 1,0,0,0,1414,1415,1,0,0,0,1415,231,1,0,0,0,1416,1414,1,0,0,0,1417, + 1419,5,85,0,0,1418,1420,3,258,129,0,1419,1418,1,0,0,0,1419,1420, + 1,0,0,0,1420,1421,1,0,0,0,1421,1423,5,86,0,0,1422,1424,3,238,119, + 0,1423,1422,1,0,0,0,1423,1424,1,0,0,0,1424,1426,1,0,0,0,1425,1427, + 3,242,121,0,1426,1425,1,0,0,0,1426,1427,1,0,0,0,1427,1429,1,0,0, + 0,1428,1430,3,370,185,0,1429,1428,1,0,0,0,1429,1430,1,0,0,0,1430, + 1432,1,0,0,0,1431,1433,3,204,102,0,1432,1431,1,0,0,0,1432,1433,1, + 0,0,0,1433,233,1,0,0,0,1434,1435,5,124,0,0,1435,1437,3,152,76,0, + 1436,1438,3,248,124,0,1437,1436,1,0,0,0,1437,1438,1,0,0,0,1438,235, + 1,0,0,0,1439,1441,7,17,0,0,1440,1442,3,204,102,0,1441,1440,1,0,0, + 0,1441,1442,1,0,0,0,1442,1454,1,0,0,0,1443,1445,3,10,5,0,1444,1443, + 1,0,0,0,1444,1445,1,0,0,0,1445,1446,1,0,0,0,1446,1448,5,93,0,0,1447, + 1449,3,204,102,0,1448,1447,1,0,0,0,1448,1449,1,0,0,0,1449,1451,1, + 0,0,0,1450,1452,3,238,119,0,1451,1450,1,0,0,0,1451,1452,1,0,0,0, + 1452,1454,1,0,0,0,1453,1439,1,0,0,0,1453,1444,1,0,0,0,1454,237,1, + 0,0,0,1455,1457,3,240,120,0,1456,1455,1,0,0,0,1457,1458,1,0,0,0, + 1458,1456,1,0,0,0,1458,1459,1,0,0,0,1459,239,1,0,0,0,1460,1461,7, + 18,0,0,1461,241,1,0,0,0,1462,1463,7,17,0,0,1463,243,1,0,0,0,1464, + 1466,5,131,0,0,1465,1464,1,0,0,0,1465,1466,1,0,0,0,1466,1467,1,0, + 0,0,1467,1468,3,4,2,0,1468,245,1,0,0,0,1469,1471,3,150,75,0,1470, + 1472,3,248,124,0,1471,1470,1,0,0,0,1471,1472,1,0,0,0,1472,247,1, + 0,0,0,1473,1482,3,250,125,0,1474,1476,3,252,126,0,1475,1474,1,0, + 0,0,1475,1476,1,0,0,0,1476,1477,1,0,0,0,1477,1478,3,232,116,0,1478, + 1479,3,234,117,0,1479,1482,1,0,0,0,1480,1482,3,254,127,0,1481,1473, + 1,0,0,0,1481,1475,1,0,0,0,1481,1480,1,0,0,0,1482,249,1,0,0,0,1483, + 1485,3,236,118,0,1484,1483,1,0,0,0,1485,1488,1,0,0,0,1486,1484,1, + 0,0,0,1486,1487,1,0,0,0,1487,1491,1,0,0,0,1488,1486,1,0,0,0,1489, + 1492,3,252,126,0,1490,1492,3,236,118,0,1491,1489,1,0,0,0,1491,1490, + 1,0,0,0,1492,251,1,0,0,0,1493,1499,3,232,116,0,1494,1495,5,85,0, + 0,1495,1496,3,250,125,0,1496,1497,5,86,0,0,1497,1499,1,0,0,0,1498, + 1493,1,0,0,0,1498,1494,1,0,0,0,1499,1511,1,0,0,0,1500,1510,3,232, + 116,0,1501,1503,5,87,0,0,1502,1504,3,92,46,0,1503,1502,1,0,0,0,1503, + 1504,1,0,0,0,1504,1505,1,0,0,0,1505,1507,5,88,0,0,1506,1508,3,204, + 102,0,1507,1506,1,0,0,0,1507,1508,1,0,0,0,1508,1510,1,0,0,0,1509, + 1500,1,0,0,0,1509,1501,1,0,0,0,1510,1513,1,0,0,0,1511,1509,1,0,0, + 0,1511,1512,1,0,0,0,1512,253,1,0,0,0,1513,1511,1,0,0,0,1514,1516, + 3,236,118,0,1515,1514,1,0,0,0,1516,1519,1,0,0,0,1517,1515,1,0,0, + 0,1517,1518,1,0,0,0,1518,1520,1,0,0,0,1519,1517,1,0,0,0,1520,1521, + 3,256,128,0,1521,255,1,0,0,0,1522,1534,5,131,0,0,1523,1533,3,232, + 116,0,1524,1526,5,87,0,0,1525,1527,3,92,46,0,1526,1525,1,0,0,0,1526, + 1527,1,0,0,0,1527,1528,1,0,0,0,1528,1530,5,88,0,0,1529,1531,3,204, + 102,0,1530,1529,1,0,0,0,1530,1531,1,0,0,0,1531,1533,1,0,0,0,1532, + 1523,1,0,0,0,1532,1524,1,0,0,0,1533,1536,1,0,0,0,1534,1532,1,0,0, + 0,1534,1535,1,0,0,0,1535,257,1,0,0,0,1536,1534,1,0,0,0,1537,1542, + 3,260,130,0,1538,1540,5,122,0,0,1539,1538,1,0,0,0,1539,1540,1,0, + 0,0,1540,1541,1,0,0,0,1541,1543,5,131,0,0,1542,1539,1,0,0,0,1542, + 1543,1,0,0,0,1543,259,1,0,0,0,1544,1549,3,262,131,0,1545,1546,5, + 122,0,0,1546,1548,3,262,131,0,1547,1545,1,0,0,0,1548,1551,1,0,0, + 0,1549,1547,1,0,0,0,1549,1550,1,0,0,0,1550,261,1,0,0,0,1551,1549, + 1,0,0,0,1552,1554,3,204,102,0,1553,1552,1,0,0,0,1553,1554,1,0,0, + 0,1554,1555,1,0,0,0,1555,1560,3,138,69,0,1556,1561,3,226,113,0,1557, + 1559,3,248,124,0,1558,1557,1,0,0,0,1558,1559,1,0,0,0,1559,1561,1, + 0,0,0,1560,1556,1,0,0,0,1560,1558,1,0,0,0,1561,1564,1,0,0,0,1562, + 1563,5,101,0,0,1563,1565,3,272,136,0,1564,1562,1,0,0,0,1564,1565, + 1,0,0,0,1565,263,1,0,0,0,1566,1568,3,204,102,0,1567,1566,1,0,0,0, + 1567,1568,1,0,0,0,1568,1570,1,0,0,0,1569,1571,3,138,69,0,1570,1569, + 1,0,0,0,1570,1571,1,0,0,0,1571,1572,1,0,0,0,1572,1574,3,226,113, + 0,1573,1575,3,298,149,0,1574,1573,1,0,0,0,1574,1575,1,0,0,0,1575, + 1576,1,0,0,0,1576,1577,3,266,133,0,1577,265,1,0,0,0,1578,1580,3, + 322,161,0,1579,1578,1,0,0,0,1579,1580,1,0,0,0,1580,1581,1,0,0,0, + 1581,1587,3,100,50,0,1582,1587,3,360,180,0,1583,1584,5,101,0,0,1584, + 1585,7,19,0,0,1585,1587,5,128,0,0,1586,1579,1,0,0,0,1586,1582,1, + 0,0,0,1586,1583,1,0,0,0,1587,267,1,0,0,0,1588,1594,3,270,135,0,1589, + 1590,5,85,0,0,1590,1591,3,34,17,0,1591,1592,5,86,0,0,1592,1594,1, + 0,0,0,1593,1588,1,0,0,0,1593,1589,1,0,0,0,1594,269,1,0,0,0,1595, + 1596,5,101,0,0,1596,1599,3,272,136,0,1597,1599,3,276,138,0,1598, + 1595,1,0,0,0,1598,1597,1,0,0,0,1599,271,1,0,0,0,1600,1603,3,86,43, + 0,1601,1603,3,276,138,0,1602,1600,1,0,0,0,1602,1601,1,0,0,0,1603, + 273,1,0,0,0,1604,1606,3,272,136,0,1605,1607,5,131,0,0,1606,1605, + 1,0,0,0,1606,1607,1,0,0,0,1607,1615,1,0,0,0,1608,1609,5,122,0,0, + 1609,1611,3,272,136,0,1610,1612,5,131,0,0,1611,1610,1,0,0,0,1611, + 1612,1,0,0,0,1612,1614,1,0,0,0,1613,1608,1,0,0,0,1614,1617,1,0,0, + 0,1615,1613,1,0,0,0,1615,1616,1,0,0,0,1616,275,1,0,0,0,1617,1615, + 1,0,0,0,1618,1623,5,89,0,0,1619,1621,3,274,137,0,1620,1622,5,122, + 0,0,1621,1620,1,0,0,0,1621,1622,1,0,0,0,1622,1624,1,0,0,0,1623,1619, + 1,0,0,0,1623,1624,1,0,0,0,1624,1625,1,0,0,0,1625,1626,5,90,0,0,1626, + 277,1,0,0,0,1627,1630,5,132,0,0,1628,1630,3,342,171,0,1629,1627, + 1,0,0,0,1629,1628,1,0,0,0,1630,279,1,0,0,0,1631,1632,3,282,141,0, + 1632,1634,5,89,0,0,1633,1635,3,290,145,0,1634,1633,1,0,0,0,1634, + 1635,1,0,0,0,1635,1636,1,0,0,0,1636,1637,5,90,0,0,1637,281,1,0,0, + 0,1638,1640,3,288,144,0,1639,1641,3,204,102,0,1640,1639,1,0,0,0, + 1640,1641,1,0,0,0,1641,1646,1,0,0,0,1642,1644,3,284,142,0,1643,1645, + 3,286,143,0,1644,1643,1,0,0,0,1644,1645,1,0,0,0,1645,1647,1,0,0, + 0,1646,1642,1,0,0,0,1646,1647,1,0,0,0,1647,1649,1,0,0,0,1648,1650, + 3,304,152,0,1649,1648,1,0,0,0,1649,1650,1,0,0,0,1650,1662,1,0,0, + 0,1651,1653,5,77,0,0,1652,1654,3,204,102,0,1653,1652,1,0,0,0,1653, + 1654,1,0,0,0,1654,1659,1,0,0,0,1655,1657,3,284,142,0,1656,1658,3, + 286,143,0,1657,1656,1,0,0,0,1657,1658,1,0,0,0,1658,1660,1,0,0,0, + 1659,1655,1,0,0,0,1659,1660,1,0,0,0,1660,1662,1,0,0,0,1661,1638, + 1,0,0,0,1661,1651,1,0,0,0,1662,283,1,0,0,0,1663,1665,3,10,5,0,1664, + 1663,1,0,0,0,1664,1665,1,0,0,0,1665,1666,1,0,0,0,1666,1667,3,278, + 139,0,1667,285,1,0,0,0,1668,1669,5,38,0,0,1669,287,1,0,0,0,1670, + 1671,7,15,0,0,1671,289,1,0,0,0,1672,1677,3,292,146,0,1673,1674,3, + 314,157,0,1674,1675,5,126,0,0,1675,1677,1,0,0,0,1676,1672,1,0,0, + 0,1676,1673,1,0,0,0,1677,1678,1,0,0,0,1678,1676,1,0,0,0,1678,1679, + 1,0,0,0,1679,291,1,0,0,0,1680,1682,3,204,102,0,1681,1680,1,0,0,0, + 1681,1682,1,0,0,0,1682,1684,1,0,0,0,1683,1685,3,138,69,0,1684,1683, + 1,0,0,0,1684,1685,1,0,0,0,1685,1687,1,0,0,0,1686,1688,3,294,147, + 0,1687,1686,1,0,0,0,1687,1688,1,0,0,0,1688,1689,1,0,0,0,1689,1697, + 5,128,0,0,1690,1697,3,264,132,0,1691,1697,3,196,98,0,1692,1697,3, + 130,65,0,1693,1697,3,334,167,0,1694,1697,3,126,63,0,1695,1697,3, + 132,66,0,1696,1681,1,0,0,0,1696,1690,1,0,0,0,1696,1691,1,0,0,0,1696, + 1692,1,0,0,0,1696,1693,1,0,0,0,1696,1694,1,0,0,0,1696,1695,1,0,0, + 0,1697,293,1,0,0,0,1698,1703,3,296,148,0,1699,1700,5,122,0,0,1700, + 1702,3,296,148,0,1701,1699,1,0,0,0,1702,1705,1,0,0,0,1703,1701,1, + 0,0,0,1703,1704,1,0,0,0,1704,295,1,0,0,0,1705,1703,1,0,0,0,1706, + 1715,3,226,113,0,1707,1716,3,298,149,0,1708,1709,4,148,7,0,1709, + 1716,3,302,151,0,1710,1711,4,148,8,0,1711,1712,3,298,149,0,1712, + 1713,3,302,151,0,1713,1716,1,0,0,0,1714,1716,3,270,135,0,1715,1707, + 1,0,0,0,1715,1708,1,0,0,0,1715,1710,1,0,0,0,1715,1714,1,0,0,0,1716, + 1727,1,0,0,0,1717,1727,3,226,113,0,1718,1720,5,132,0,0,1719,1718, + 1,0,0,0,1719,1720,1,0,0,0,1720,1722,1,0,0,0,1721,1723,3,204,102, + 0,1722,1721,1,0,0,0,1722,1723,1,0,0,0,1723,1724,1,0,0,0,1724,1725, + 5,126,0,0,1725,1727,3,92,46,0,1726,1706,1,0,0,0,1726,1717,1,0,0, + 0,1726,1719,1,0,0,0,1727,297,1,0,0,0,1728,1730,3,300,150,0,1729, + 1728,1,0,0,0,1730,1731,1,0,0,0,1731,1729,1,0,0,0,1731,1732,1,0,0, + 0,1732,299,1,0,0,0,1733,1734,7,20,0,0,1734,301,1,0,0,0,1735,1736, + 5,101,0,0,1736,1737,5,1,0,0,1737,303,1,0,0,0,1738,1739,5,126,0,0, + 1739,1740,3,306,153,0,1740,305,1,0,0,0,1741,1743,3,308,154,0,1742, + 1744,5,131,0,0,1743,1742,1,0,0,0,1743,1744,1,0,0,0,1744,1752,1,0, + 0,0,1745,1746,5,122,0,0,1746,1748,3,308,154,0,1747,1749,5,131,0, + 0,1748,1747,1,0,0,0,1748,1749,1,0,0,0,1749,1751,1,0,0,0,1750,1745, + 1,0,0,0,1751,1754,1,0,0,0,1752,1750,1,0,0,0,1752,1753,1,0,0,0,1753, + 307,1,0,0,0,1754,1752,1,0,0,0,1755,1757,3,204,102,0,1756,1755,1, + 0,0,0,1756,1757,1,0,0,0,1757,1770,1,0,0,0,1758,1771,3,312,156,0, + 1759,1761,5,80,0,0,1760,1762,3,314,157,0,1761,1760,1,0,0,0,1761, + 1762,1,0,0,0,1762,1763,1,0,0,0,1763,1771,3,312,156,0,1764,1766,3, + 314,157,0,1765,1767,5,80,0,0,1766,1765,1,0,0,0,1766,1767,1,0,0,0, + 1767,1768,1,0,0,0,1768,1769,3,312,156,0,1769,1771,1,0,0,0,1770,1758, + 1,0,0,0,1770,1759,1,0,0,0,1770,1764,1,0,0,0,1771,309,1,0,0,0,1772, + 1774,3,10,5,0,1773,1772,1,0,0,0,1773,1774,1,0,0,0,1774,1775,1,0, + 0,0,1775,1778,3,278,139,0,1776,1778,3,162,81,0,1777,1773,1,0,0,0, + 1777,1776,1,0,0,0,1778,311,1,0,0,0,1779,1780,3,310,155,0,1780,313, + 1,0,0,0,1781,1782,7,21,0,0,1782,315,1,0,0,0,1783,1784,5,52,0,0,1784, + 1785,3,318,159,0,1785,317,1,0,0,0,1786,1788,3,150,75,0,1787,1789, + 3,320,160,0,1788,1787,1,0,0,0,1788,1789,1,0,0,0,1789,319,1,0,0,0, + 1790,1792,3,236,118,0,1791,1793,3,320,160,0,1792,1791,1,0,0,0,1792, + 1793,1,0,0,0,1793,321,1,0,0,0,1794,1795,5,126,0,0,1795,1796,3,324, + 162,0,1796,323,1,0,0,0,1797,1799,3,326,163,0,1798,1800,5,131,0,0, + 1799,1798,1,0,0,0,1799,1800,1,0,0,0,1800,1808,1,0,0,0,1801,1802, + 5,122,0,0,1802,1804,3,326,163,0,1803,1805,5,131,0,0,1804,1803,1, + 0,0,0,1804,1805,1,0,0,0,1805,1807,1,0,0,0,1806,1801,1,0,0,0,1807, + 1810,1,0,0,0,1808,1806,1,0,0,0,1808,1809,1,0,0,0,1809,325,1,0,0, + 0,1810,1808,1,0,0,0,1811,1818,3,328,164,0,1812,1814,5,85,0,0,1813, + 1815,3,34,17,0,1814,1813,1,0,0,0,1814,1815,1,0,0,0,1815,1816,1,0, + 0,0,1816,1819,5,86,0,0,1817,1819,3,276,138,0,1818,1812,1,0,0,0,1818, + 1817,1,0,0,0,1819,327,1,0,0,0,1820,1823,3,310,155,0,1821,1823,5, + 132,0,0,1822,1820,1,0,0,0,1822,1821,1,0,0,0,1823,329,1,0,0,0,1824, + 1825,5,52,0,0,1825,1826,3,378,189,0,1826,331,1,0,0,0,1827,1831,5, + 52,0,0,1828,1829,5,4,0,0,1829,1832,5,132,0,0,1830,1832,5,140,0,0, + 1831,1828,1,0,0,0,1831,1830,1,0,0,0,1832,333,1,0,0,0,1833,1834,5, + 68,0,0,1834,1835,5,102,0,0,1835,1836,3,336,168,0,1836,1837,5,103, + 0,0,1837,1838,3,122,61,0,1838,335,1,0,0,0,1839,1844,3,338,169,0, + 1840,1841,5,122,0,0,1841,1843,3,338,169,0,1842,1840,1,0,0,0,1843, + 1846,1,0,0,0,1844,1842,1,0,0,0,1844,1845,1,0,0,0,1845,337,1,0,0, + 0,1846,1844,1,0,0,0,1847,1850,3,340,170,0,1848,1850,3,262,131,0, + 1849,1847,1,0,0,0,1849,1848,1,0,0,0,1850,339,1,0,0,0,1851,1852,5, + 68,0,0,1852,1853,5,102,0,0,1853,1854,3,336,168,0,1854,1855,5,103, + 0,0,1855,1857,1,0,0,0,1856,1851,1,0,0,0,1856,1857,1,0,0,0,1857,1858, + 1,0,0,0,1858,1861,5,21,0,0,1859,1861,5,76,0,0,1860,1856,1,0,0,0, + 1860,1859,1,0,0,0,1861,1873,1,0,0,0,1862,1864,5,131,0,0,1863,1862, + 1,0,0,0,1863,1864,1,0,0,0,1864,1866,1,0,0,0,1865,1867,5,132,0,0, + 1866,1865,1,0,0,0,1866,1867,1,0,0,0,1867,1874,1,0,0,0,1868,1870, + 5,132,0,0,1869,1868,1,0,0,0,1869,1870,1,0,0,0,1870,1871,1,0,0,0, + 1871,1872,5,101,0,0,1872,1874,3,246,123,0,1873,1863,1,0,0,0,1873, + 1869,1,0,0,0,1874,341,1,0,0,0,1875,1876,3,346,173,0,1876,1878,5, + 102,0,0,1877,1879,3,348,174,0,1878,1877,1,0,0,0,1878,1879,1,0,0, + 0,1879,1880,1,0,0,0,1880,1881,5,103,0,0,1881,343,1,0,0,0,1882,1894, + 3,342,171,0,1883,1886,3,330,165,0,1884,1886,3,332,166,0,1885,1883, + 1,0,0,0,1885,1884,1,0,0,0,1886,1887,1,0,0,0,1887,1889,5,102,0,0, + 1888,1890,3,348,174,0,1889,1888,1,0,0,0,1889,1890,1,0,0,0,1890,1891, + 1,0,0,0,1891,1892,5,103,0,0,1892,1894,1,0,0,0,1893,1882,1,0,0,0, + 1893,1885,1,0,0,0,1894,345,1,0,0,0,1895,1896,5,132,0,0,1896,347, + 1,0,0,0,1897,1899,3,350,175,0,1898,1900,5,131,0,0,1899,1898,1,0, + 0,0,1899,1900,1,0,0,0,1900,1908,1,0,0,0,1901,1902,5,122,0,0,1902, + 1904,3,350,175,0,1903,1905,5,131,0,0,1904,1903,1,0,0,0,1904,1905, + 1,0,0,0,1905,1907,1,0,0,0,1906,1901,1,0,0,0,1907,1910,1,0,0,0,1908, + 1906,1,0,0,0,1908,1909,1,0,0,0,1909,349,1,0,0,0,1910,1908,1,0,0, + 0,1911,1915,3,246,123,0,1912,1915,3,92,46,0,1913,1915,3,4,2,0,1914, + 1911,1,0,0,0,1914,1912,1,0,0,0,1914,1913,1,0,0,0,1915,351,1,0,0, + 0,1916,1917,5,76,0,0,1917,1923,3,10,5,0,1918,1924,5,132,0,0,1919, + 1921,5,68,0,0,1920,1919,1,0,0,0,1920,1921,1,0,0,0,1921,1922,1,0, + 0,0,1922,1924,3,342,171,0,1923,1918,1,0,0,0,1923,1920,1,0,0,0,1924, + 353,1,0,0,0,1925,1927,5,36,0,0,1926,1925,1,0,0,0,1926,1927,1,0,0, + 0,1927,1928,1,0,0,0,1928,1929,5,68,0,0,1929,1930,3,122,61,0,1930, + 355,1,0,0,0,1931,1932,5,68,0,0,1932,1933,5,102,0,0,1933,1934,5,103, + 0,0,1934,1935,3,122,61,0,1935,357,1,0,0,0,1936,1937,5,73,0,0,1937, + 1938,3,100,50,0,1938,1939,3,362,181,0,1939,359,1,0,0,0,1940,1942, + 5,73,0,0,1941,1943,3,322,161,0,1942,1941,1,0,0,0,1942,1943,1,0,0, + 0,1943,1944,1,0,0,0,1944,1945,3,100,50,0,1945,1946,3,362,181,0,1946, + 361,1,0,0,0,1947,1949,3,364,182,0,1948,1947,1,0,0,0,1949,1950,1, + 0,0,0,1950,1948,1,0,0,0,1950,1951,1,0,0,0,1951,363,1,0,0,0,1952, + 1953,5,17,0,0,1953,1954,5,85,0,0,1954,1955,3,366,183,0,1955,1956, + 5,86,0,0,1956,1957,3,100,50,0,1957,365,1,0,0,0,1958,1960,3,204,102, + 0,1959,1958,1,0,0,0,1959,1960,1,0,0,0,1960,1961,1,0,0,0,1961,1964, + 3,150,75,0,1962,1965,3,226,113,0,1963,1965,3,248,124,0,1964,1962, + 1,0,0,0,1964,1963,1,0,0,0,1964,1965,1,0,0,0,1965,1968,1,0,0,0,1966, + 1968,5,131,0,0,1967,1959,1,0,0,0,1967,1966,1,0,0,0,1968,367,1,0, + 0,0,1969,1971,5,71,0,0,1970,1972,3,86,43,0,1971,1970,1,0,0,0,1971, + 1972,1,0,0,0,1972,369,1,0,0,0,1973,1976,3,372,186,0,1974,1976,3, + 376,188,0,1975,1973,1,0,0,0,1975,1974,1,0,0,0,1976,371,1,0,0,0,1977, + 1978,5,71,0,0,1978,1980,5,85,0,0,1979,1981,3,374,187,0,1980,1979, + 1,0,0,0,1980,1981,1,0,0,0,1981,1982,1,0,0,0,1982,1983,5,86,0,0,1983, + 373,1,0,0,0,1984,1986,3,246,123,0,1985,1987,5,131,0,0,1986,1985, + 1,0,0,0,1986,1987,1,0,0,0,1987,1995,1,0,0,0,1988,1989,5,122,0,0, + 1989,1991,3,246,123,0,1990,1992,5,131,0,0,1991,1990,1,0,0,0,1991, + 1992,1,0,0,0,1992,1994,1,0,0,0,1993,1988,1,0,0,0,1994,1997,1,0,0, + 0,1995,1993,1,0,0,0,1995,1996,1,0,0,0,1996,375,1,0,0,0,1997,1995, + 1,0,0,0,1998,1999,5,50,0,0,1999,2000,5,85,0,0,2000,2001,3,92,46, + 0,2001,2002,5,86,0,0,2002,2005,1,0,0,0,2003,2005,5,50,0,0,2004,1998, + 1,0,0,0,2004,2003,1,0,0,0,2005,377,1,0,0,0,2006,2009,5,49,0,0,2007, + 2008,5,87,0,0,2008,2010,5,88,0,0,2009,2007,1,0,0,0,2009,2010,1,0, + 0,0,2010,2058,1,0,0,0,2011,2014,5,28,0,0,2012,2013,5,87,0,0,2013, + 2015,5,88,0,0,2014,2012,1,0,0,0,2014,2015,1,0,0,0,2015,2058,1,0, + 0,0,2016,2058,5,91,0,0,2017,2058,5,92,0,0,2018,2058,5,93,0,0,2019, + 2058,5,94,0,0,2020,2058,5,95,0,0,2021,2058,5,96,0,0,2022,2058,5, + 97,0,0,2023,2058,5,98,0,0,2024,2058,5,99,0,0,2025,2058,5,100,0,0, + 2026,2058,5,101,0,0,2027,2058,5,103,0,0,2028,2058,5,102,0,0,2029, + 2058,5,117,0,0,2030,2058,5,104,0,0,2031,2058,5,105,0,0,2032,2058, + 5,106,0,0,2033,2058,5,108,0,0,2034,2058,5,109,0,0,2035,2058,5,110, + 0,0,2036,2058,5,111,0,0,2037,2038,5,102,0,0,2038,2058,5,102,0,0, + 2039,2040,5,103,0,0,2040,2058,5,103,0,0,2041,2058,5,113,0,0,2042, + 2058,5,112,0,0,2043,2058,5,114,0,0,2044,2058,5,115,0,0,2045,2058, + 5,116,0,0,2046,2058,5,118,0,0,2047,2058,5,119,0,0,2048,2058,5,120, + 0,0,2049,2058,5,121,0,0,2050,2058,5,122,0,0,2051,2058,5,123,0,0, + 2052,2058,5,124,0,0,2053,2054,5,85,0,0,2054,2058,5,86,0,0,2055,2056, + 5,87,0,0,2056,2058,5,88,0,0,2057,2006,1,0,0,0,2057,2011,1,0,0,0, + 2057,2016,1,0,0,0,2057,2017,1,0,0,0,2057,2018,1,0,0,0,2057,2019, + 1,0,0,0,2057,2020,1,0,0,0,2057,2021,1,0,0,0,2057,2022,1,0,0,0,2057, + 2023,1,0,0,0,2057,2024,1,0,0,0,2057,2025,1,0,0,0,2057,2026,1,0,0, + 0,2057,2027,1,0,0,0,2057,2028,1,0,0,0,2057,2029,1,0,0,0,2057,2030, + 1,0,0,0,2057,2031,1,0,0,0,2057,2032,1,0,0,0,2057,2033,1,0,0,0,2057, + 2034,1,0,0,0,2057,2035,1,0,0,0,2057,2036,1,0,0,0,2057,2037,1,0,0, + 0,2057,2039,1,0,0,0,2057,2041,1,0,0,0,2057,2042,1,0,0,0,2057,2043, + 1,0,0,0,2057,2044,1,0,0,0,2057,2045,1,0,0,0,2057,2046,1,0,0,0,2057, + 2047,1,0,0,0,2057,2048,1,0,0,0,2057,2049,1,0,0,0,2057,2050,1,0,0, + 0,2057,2051,1,0,0,0,2057,2052,1,0,0,0,2057,2053,1,0,0,0,2057,2055, + 1,0,0,0,2058,379,1,0,0,0,2059,2060,7,22,0,0,2060,381,1,0,0,0,291, + 383,390,399,403,412,415,419,427,434,437,442,447,453,461,463,472, + 476,480,483,487,490,497,501,504,507,510,516,520,524,538,542,548, + 555,561,565,569,571,579,584,597,604,616,626,631,635,642,645,653, + 657,660,667,674,678,683,687,690,695,710,717,725,733,742,749,756, + 764,772,780,788,796,804,813,821,830,838,846,848,851,857,863,869, + 876,885,893,897,904,906,926,930,936,941,945,948,955,962,966,975, + 986,996,1001,1008,1011,1016,1021,1042,1047,1050,1061,1067,1072,1075, + 1080,1083,1090,1113,1119,1125,1131,1134,1140,1144,1148,1151,1159, + 1161,1167,1170,1173,1176,1180,1184,1190,1200,1206,1212,1217,1222, + 1226,1239,1245,1249,1255,1260,1275,1279,1284,1289,1294,1300,1303, + 1312,1316,1321,1325,1331,1338,1355,1357,1364,1369,1376,1380,1384, + 1392,1398,1404,1408,1410,1414,1419,1423,1426,1429,1432,1437,1441, + 1444,1448,1451,1453,1458,1465,1471,1475,1481,1486,1491,1498,1503, + 1507,1509,1511,1517,1526,1530,1532,1534,1539,1542,1549,1553,1558, + 1560,1564,1567,1570,1574,1579,1586,1593,1598,1602,1606,1611,1615, + 1621,1623,1629,1634,1640,1644,1646,1649,1653,1657,1659,1661,1664, + 1676,1678,1681,1684,1687,1696,1703,1715,1719,1722,1726,1731,1743, + 1748,1752,1756,1761,1766,1770,1773,1777,1788,1792,1799,1804,1808, + 1814,1818,1822,1831,1844,1849,1856,1860,1863,1866,1869,1873,1878, + 1885,1889,1893,1899,1904,1908,1914,1920,1923,1926,1942,1950,1959, + 1964,1967,1971,1975,1980,1986,1991,1995,2004,2009,2014,2057 + ] + +class CPP14Parser ( CPP14ParserBase ): + + grammarFileName = "CPP14Parser.g4" atn = ATNDeserializer().deserialize(serializedATN()) @@ -1395,373 +891,358 @@ class CPP14Parser ( Parser ): sharedContextCache = PredictionContextCache() - literalNames = [ "", "'!'", "'not'", "'&&'", "'and'", "'||'", - "'or'", "'false'", "'true'", "", "", - "'alignas'", "'alignof'", "'asm'", "'auto'", "'bool'", - "'break'", "'case'", "'catch'", "'char'", "'char16_t'", - "'char32_t'", "'class'", "'const'", "'constexpr'", - "'const_cast'", "'continue'", "'decltype'", "'default'", - "'delete'", "'do'", "'double'", "'dynamic_cast'", "'else'", - "'enum'", "'explicit'", "'export'", "'extern'", "'final'", - "'float'", "'for'", "'friend'", "'goto'", "'if'", "'inline'", - "'int'", "'long'", "'mutable'", "'namespace'", "'new'", - "'noexcept'", "'nullptr'", "'operator'", "'override'", - "'private'", "'protected'", "'public'", "'register'", - "'reinterpret_cast'", "'return'", "'short'", "'signed'", - "'sizeof'", "'static'", "'static_assert'", "'static_cast'", - "'struct'", "'switch'", "'template'", "'this'", "'thread_local'", - "'throw'", "'try'", "'typedef'", "'typeid'", "'typename'", - "'union'", "'unsigned'", "'using'", "'virtual'", "'void'", - "'volatile'", "'wchar_t'", "'while'", "'('", "')'", - "'['", "']'", "'{'", "'}'", "'+'", "'-'", "'*'", "'/'", - "'%'", "'^'", "'&'", "'|'", "'~'", "", "'='", - "'<'", "'>'", "'+='", "'-='", "'*='", "'/='", "'%='", - "'^='", "'&='", "'|='", "'<<'", "'>>'", "'<<='", "'>>='", - "'=='", "'!='", "'<='", "'>='", "", "", - "'++'", "'--'", "','", "'->*'", "'->'", "'?'", "':'", - "'::'", "';'", "'.'", "'.*'", "'...'" ] - - symbolicNames = [ "", "", "", "", - "", "", "", "", - "", "MultiLineMacro", "Directive", "Alignas", - "Alignof", "Asm", "Auto", "Bool", "Break", "Case", - "Catch", "Char", "Char16", "Char32", "Class", "Const", - "Constexpr", "Const_cast", "Continue", "Decltype", - "Default", "Delete", "Do", "Double", "Dynamic_cast", - "Else", "Enum", "Explicit", "Export", "Extern", "Final", - "Float", "For", "Friend", "Goto", "If", "Inline", - "Int", "Long", "Mutable", "Namespace", "New", "Noexcept", - "Nullptr", "Operator", "Override", "Private", "Protected", - "Public", "Register", "Reinterpret_cast", "Return", - "Short", "Signed", "Sizeof", "Static", "Static_assert", - "Static_cast", "Struct", "Switch", "Template", "This", - "Thread_local", "Throw", "Try", "Typedef", "Typeid_", - "Typename_", "Union", "Unsigned", "Using", "Virtual", - "Void", "Volatile", "Wchar", "While", "LeftParen", - "RightParen", "LeftBracket", "RightBracket", "LeftBrace", - "RightBrace", "Plus", "Minus", "Star", "Div", "Mod", - "Caret", "And", "Or", "Tilde", "Not", "Assign", "Less", - "Greater", "PlusAssign", "MinusAssign", "StarAssign", - "DivAssign", "ModAssign", "XorAssign", "AndAssign", - "OrAssign", "LeftShift", "RightShift", "LeftShiftAssign", + literalNames = [ "", "", "", "", + "", "", "", "", + "", "", "'alignas'", "'alignof'", + "'asm'", "'auto'", "'bool'", "'break'", "'case'", "'catch'", + "'char'", "'char16_t'", "'char32_t'", "'class'", "'const'", + "'constexpr'", "'const_cast'", "'continue'", "'decltype'", + "'default'", "'delete'", "'do'", "'double'", "'dynamic_cast'", + "'else'", "'enum'", "'explicit'", "'export'", "'extern'", + "'false'", "'final'", "'float'", "'for'", "'friend'", + "'goto'", "'if'", "'inline'", "'int'", "'long'", "'mutable'", + "'namespace'", "'new'", "'noexcept'", "'nullptr'", + "'operator'", "'override'", "'private'", "'protected'", + "'public'", "'register'", "'reinterpret_cast'", "'return'", + "'short'", "'signed'", "'sizeof'", "'static'", "'static_assert'", + "'static_cast'", "'struct'", "'switch'", "'template'", + "'this'", "'thread_local'", "'throw'", "'true'", "'try'", + "'typedef'", "'typeid'", "'typename'", "'union'", "'unsigned'", + "'using'", "'virtual'", "'void'", "'volatile'", "'wchar_t'", + "'while'", "'('", "')'", "'['", "']'", "'{'", "'}'", + "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "'&'", "'|'", + "'~'", "", "'='", "'<'", "'>'", "'+='", "'-='", + "'*='", "'/='", "'%='", "'^='", "'&='", "'|='", "'<<='", + "'>>='", "'=='", "'!='", "'<='", "'>='", "", + "", "'++'", "'--'", "','", "'->*'", "'->'", + "'?'", "':'", "'::'", "';'", "'.'", "'.*'", "'...'" ] + + symbolicNames = [ "", "IntegerLiteral", "CharacterLiteral", + "FloatingLiteral", "StringLiteral", "BooleanLiteral", + "PointerLiteral", "UserDefinedLiteral", "MultiLineMacro", + "Directive", "Alignas", "Alignof", "Asm", "Auto", + "Bool", "Break", "Case", "Catch", "Char", "Char16", + "Char32", "Class", "Const", "Constexpr", "Const_cast", + "Continue", "Decltype", "Default", "Delete", "Do", + "Double", "Dynamic_cast", "Else", "Enum", "Explicit", + "Export", "Extern", "False_", "Final", "Float", "For", + "Friend", "Goto", "If", "Inline", "Int", "Long", "Mutable", + "Namespace", "New", "Noexcept", "Nullptr", "Operator", + "Override", "Private", "Protected", "Public", "Register", + "Reinterpret_cast", "Return", "Short", "Signed", "Sizeof", + "Static", "Static_assert", "Static_cast", "Struct", + "Switch", "Template", "This", "Thread_local", "Throw", + "True_", "Try", "Typedef", "Typeid_", "Typename_", + "Union", "Unsigned", "Using", "Virtual", "Void", "Volatile", + "Wchar", "While", "LeftParen", "RightParen", "LeftBracket", + "RightBracket", "LeftBrace", "RightBrace", "Plus", + "Minus", "Star", "Div", "Mod", "Caret", "And", "Or", + "Tilde", "Not", "Assign", "Less", "Greater", "PlusAssign", + "MinusAssign", "StarAssign", "DivAssign", "ModAssign", + "XorAssign", "AndAssign", "OrAssign", "LeftShiftAssign", "RightShiftAssign", "Equal", "NotEqual", "LessEqual", "GreaterEqual", "AndAnd", "OrOr", "PlusPlus", "MinusMinus", "Comma", "ArrowStar", "Arrow", "Question", "Colon", "Doublecolon", "Semi", "Dot", "DotStar", "Ellipsis", - "Identifier", "Integerliteral", "Decimalliteral", - "Octalliteral", "Hexadecimalliteral", "Binaryliteral", - "Integersuffix", "Characterliteral", "Floatingliteral", - "Stringliteral", "Userdefinedintegerliteral", "Userdefinedfloatingliteral", - "Userdefinedstringliteral", "Userdefinedcharacterliteral", - "Whitespace", "Newline", "BlockComment", "LineComment" ] - - RULE_translationunit = 0 - RULE_primaryexpression = 1 - RULE_idexpression = 2 - RULE_unqualifiedid = 3 - RULE_qualifiedid = 4 - RULE_nestednamespecifier = 5 - RULE_lambdaexpression = 6 - RULE_lambdaintroducer = 7 - RULE_lambdacapture = 8 - RULE_capturedefault = 9 - RULE_capturelist = 10 + "Identifier", "DecimalLiteral", "OctalLiteral", "HexadecimalLiteral", + "BinaryLiteral", "Integersuffix", "UserDefinedIntegerLiteral", + "UserDefinedFloatingLiteral", "UserDefinedStringLiteral", + "UserDefinedCharacterLiteral", "Whitespace", "Newline", + "BlockComment", "LineComment" ] + + RULE_translationUnit = 0 + RULE_primaryExpression = 1 + RULE_idExpression = 2 + RULE_unqualifiedId = 3 + RULE_qualifiedId = 4 + RULE_nestedNameSpecifier = 5 + RULE_lambdaExpression = 6 + RULE_lambdaIntroducer = 7 + RULE_lambdaCapture = 8 + RULE_captureDefault = 9 + RULE_captureList = 10 RULE_capture = 11 - RULE_simplecapture = 12 + RULE_simpleCapture = 12 RULE_initcapture = 13 - RULE_lambdadeclarator = 14 - RULE_postfixexpression = 15 - RULE_typeidofexpr = 16 - RULE_typeidofthetypeid = 17 - RULE_expressionlist = 18 - RULE_pseudodestructorname = 19 - RULE_unaryexpression = 20 - RULE_unaryoperator = 21 - RULE_newexpression = 22 - RULE_newplacement = 23 - RULE_newtypeid = 24 - RULE_newdeclarator = 25 - RULE_noptrnewdeclarator = 26 - RULE_newinitializer = 27 - RULE_deleteexpression = 28 - RULE_noexceptexpression = 29 - RULE_castexpression = 30 - RULE_pmexpression = 31 - RULE_multiplicativeexpression = 32 - RULE_additiveexpression = 33 - RULE_shiftexpression = 34 - RULE_shiftoperator = 35 - RULE_relationalexpression = 36 - RULE_equalityexpression = 37 - RULE_andexpression = 38 - RULE_exclusiveorexpression = 39 - RULE_inclusiveorexpression = 40 - RULE_logicalandexpression = 41 - RULE_logicalorexpression = 42 - RULE_conditionalexpression = 43 - RULE_assignmentexpression = 44 - RULE_assignmentoperator = 45 - RULE_expression = 46 - RULE_constantexpression = 47 - RULE_statement = 48 - RULE_labeledstatement = 49 - RULE_expressionstatement = 50 - RULE_compoundstatement = 51 - RULE_statementseq = 52 - RULE_selectionstatement = 53 - RULE_condition = 54 - RULE_iterationstatement = 55 - RULE_forinitstatement = 56 - RULE_forrangedeclaration = 57 - RULE_forrangeinitializer = 58 - RULE_jumpstatement = 59 - RULE_declarationstatement = 60 - RULE_declarationseq = 61 - RULE_declaration = 62 - RULE_blockdeclaration = 63 - RULE_aliasdeclaration = 64 - RULE_simpledeclaration = 65 - RULE_static_assertdeclaration = 66 - RULE_emptydeclaration = 67 - RULE_attributedeclaration = 68 - RULE_declspecifier = 69 - RULE_declspecifierseq = 70 - RULE_storageclassspecifier = 71 - RULE_functionspecifier = 72 - RULE_typedefname = 73 - RULE_typespecifier = 74 - RULE_trailingtypespecifier = 75 - RULE_typespecifierseq = 76 - RULE_trailingtypespecifierseq = 77 - RULE_simpletypespecifier = 78 - RULE_thetypename = 79 - RULE_decltypespecifier = 80 - RULE_elaboratedtypespecifier = 81 - RULE_enumname = 82 - RULE_enumspecifier = 83 - RULE_enumhead = 84 - RULE_opaqueenumdeclaration = 85 - RULE_enumkey = 86 - RULE_enumbase = 87 - RULE_enumeratorlist = 88 - RULE_enumeratordefinition = 89 - RULE_enumerator = 90 - RULE_namespacename = 91 - RULE_originalnamespacename = 92 - RULE_namespacedefinition = 93 - RULE_namednamespacedefinition = 94 - RULE_originalnamespacedefinition = 95 - RULE_extensionnamespacedefinition = 96 - RULE_unnamednamespacedefinition = 97 - RULE_namespacebody = 98 - RULE_namespacealias = 99 - RULE_namespacealiasdefinition = 100 - RULE_qualifiednamespacespecifier = 101 - RULE_usingdeclaration = 102 - RULE_usingdirective = 103 - RULE_asmdefinition = 104 - RULE_linkagespecification = 105 - RULE_attributespecifierseq = 106 - RULE_attributespecifier = 107 - RULE_alignmentspecifier = 108 - RULE_attributelist = 109 - RULE_attribute = 110 - RULE_attributetoken = 111 - RULE_attributescopedtoken = 112 - RULE_attributenamespace = 113 - RULE_attributeargumentclause = 114 - RULE_balancedtokenseq = 115 - RULE_balancedtoken = 116 - RULE_initdeclaratorlist = 117 - RULE_initdeclarator = 118 - RULE_declarator = 119 - RULE_ptrdeclarator = 120 - RULE_noptrdeclarator = 121 - RULE_parametersandqualifiers = 122 - RULE_trailingreturntype = 123 - RULE_ptroperator = 124 - RULE_cvqualifierseq = 125 - RULE_cvqualifier = 126 - RULE_refqualifier = 127 - RULE_declaratorid = 128 - RULE_thetypeid = 129 - RULE_abstractdeclarator = 130 - RULE_ptrabstractdeclarator = 131 - RULE_noptrabstractdeclarator = 132 - RULE_abstractpackdeclarator = 133 - RULE_noptrabstractpackdeclarator = 134 - RULE_parameterdeclarationclause = 135 - RULE_parameterdeclarationlist = 136 - RULE_parameterdeclaration = 137 - RULE_functiondefinition = 138 - RULE_functionbody = 139 - RULE_initializer = 140 - RULE_braceorequalinitializer = 141 - RULE_initializerclause = 142 - RULE_initializerlist = 143 - RULE_bracedinitlist = 144 - RULE_classname = 145 - RULE_classspecifier = 146 - RULE_classhead = 147 - RULE_classheadname = 148 - RULE_classvirtspecifier = 149 - RULE_classkey = 150 - RULE_memberspecification = 151 - RULE_memberdeclaration = 152 - RULE_memberdeclaratorlist = 153 - RULE_memberdeclarator = 154 - RULE_virtspecifierseq = 155 - RULE_virtspecifier = 156 - RULE_purespecifier = 157 - RULE_baseclause = 158 - RULE_basespecifierlist = 159 - RULE_basespecifier = 160 - RULE_classordecltype = 161 - RULE_basetypespecifier = 162 - RULE_accessspecifier = 163 - RULE_conversionfunctionid = 164 - RULE_conversiontypeid = 165 - RULE_conversiondeclarator = 166 - RULE_ctorinitializer = 167 - RULE_meminitializerlist = 168 - RULE_meminitializer = 169 - RULE_meminitializerid = 170 - RULE_operatorfunctionid = 171 - RULE_literaloperatorid = 172 - RULE_templatedeclaration = 173 - RULE_templateparameterlist = 174 - RULE_templateparameter = 175 - RULE_typeparameter = 176 - RULE_simpletemplateid = 177 - RULE_templateid = 178 - RULE_templatename = 179 - RULE_templateargumentlist = 180 - RULE_templateargument = 181 - RULE_typenamespecifier = 182 - RULE_explicitinstantiation = 183 - RULE_explicitspecialization = 184 - RULE_tryblock = 185 - RULE_functiontryblock = 186 - RULE_handlerseq = 187 - RULE_handler = 188 - RULE_exceptiondeclaration = 189 - RULE_throwexpression = 190 - RULE_exceptionspecification = 191 - RULE_dynamicexceptionspecification = 192 - RULE_typeidlist = 193 - RULE_noexceptspecification = 194 - RULE_false = 195 - RULE_true = 196 - RULE_theoperator = 197 - RULE_literal = 198 - RULE_booleanliteral = 199 - RULE_pointerliteral = 200 - RULE_userdefinedliteral = 201 - - ruleNames = [ "translationunit", "primaryexpression", "idexpression", - "unqualifiedid", "qualifiedid", "nestednamespecifier", - "lambdaexpression", "lambdaintroducer", "lambdacapture", - "capturedefault", "capturelist", "capture", "simplecapture", - "initcapture", "lambdadeclarator", "postfixexpression", - "typeidofexpr", "typeidofthetypeid", "expressionlist", - "pseudodestructorname", "unaryexpression", "unaryoperator", - "newexpression", "newplacement", "newtypeid", "newdeclarator", - "noptrnewdeclarator", "newinitializer", "deleteexpression", - "noexceptexpression", "castexpression", "pmexpression", - "multiplicativeexpression", "additiveexpression", "shiftexpression", - "shiftoperator", "relationalexpression", "equalityexpression", - "andexpression", "exclusiveorexpression", "inclusiveorexpression", - "logicalandexpression", "logicalorexpression", "conditionalexpression", - "assignmentexpression", "assignmentoperator", "expression", - "constantexpression", "statement", "labeledstatement", - "expressionstatement", "compoundstatement", "statementseq", - "selectionstatement", "condition", "iterationstatement", - "forinitstatement", "forrangedeclaration", "forrangeinitializer", - "jumpstatement", "declarationstatement", "declarationseq", - "declaration", "blockdeclaration", "aliasdeclaration", - "simpledeclaration", "static_assertdeclaration", "emptydeclaration", - "attributedeclaration", "declspecifier", "declspecifierseq", - "storageclassspecifier", "functionspecifier", "typedefname", - "typespecifier", "trailingtypespecifier", "typespecifierseq", - "trailingtypespecifierseq", "simpletypespecifier", "thetypename", - "decltypespecifier", "elaboratedtypespecifier", "enumname", - "enumspecifier", "enumhead", "opaqueenumdeclaration", - "enumkey", "enumbase", "enumeratorlist", "enumeratordefinition", - "enumerator", "namespacename", "originalnamespacename", - "namespacedefinition", "namednamespacedefinition", "originalnamespacedefinition", - "extensionnamespacedefinition", "unnamednamespacedefinition", - "namespacebody", "namespacealias", "namespacealiasdefinition", - "qualifiednamespacespecifier", "usingdeclaration", "usingdirective", - "asmdefinition", "linkagespecification", "attributespecifierseq", - "attributespecifier", "alignmentspecifier", "attributelist", - "attribute", "attributetoken", "attributescopedtoken", - "attributenamespace", "attributeargumentclause", "balancedtokenseq", - "balancedtoken", "initdeclaratorlist", "initdeclarator", - "declarator", "ptrdeclarator", "noptrdeclarator", "parametersandqualifiers", - "trailingreturntype", "ptroperator", "cvqualifierseq", - "cvqualifier", "refqualifier", "declaratorid", "thetypeid", - "abstractdeclarator", "ptrabstractdeclarator", "noptrabstractdeclarator", - "abstractpackdeclarator", "noptrabstractpackdeclarator", - "parameterdeclarationclause", "parameterdeclarationlist", - "parameterdeclaration", "functiondefinition", "functionbody", - "initializer", "braceorequalinitializer", "initializerclause", - "initializerlist", "bracedinitlist", "classname", "classspecifier", - "classhead", "classheadname", "classvirtspecifier", "classkey", - "memberspecification", "memberdeclaration", "memberdeclaratorlist", - "memberdeclarator", "virtspecifierseq", "virtspecifier", - "purespecifier", "baseclause", "basespecifierlist", "basespecifier", - "classordecltype", "basetypespecifier", "accessspecifier", - "conversionfunctionid", "conversiontypeid", "conversiondeclarator", - "ctorinitializer", "meminitializerlist", "meminitializer", - "meminitializerid", "operatorfunctionid", "literaloperatorid", - "templatedeclaration", "templateparameterlist", "templateparameter", - "typeparameter", "simpletemplateid", "templateid", "templatename", - "templateargumentlist", "templateargument", "typenamespecifier", - "explicitinstantiation", "explicitspecialization", "tryblock", - "functiontryblock", "handlerseq", "handler", "exceptiondeclaration", - "throwexpression", "exceptionspecification", "dynamicexceptionspecification", - "typeidlist", "noexceptspecification", "false", "true", - "theoperator", "literal", "booleanliteral", "pointerliteral", - "userdefinedliteral" ] + RULE_lambdaDeclarator = 14 + RULE_postfixExpression = 15 + RULE_typeIdOfTheTypeId = 16 + RULE_expressionList = 17 + RULE_pseudoDestructorName = 18 + RULE_unaryExpression = 19 + RULE_unaryOperator = 20 + RULE_newExpression_ = 21 + RULE_newPlacement = 22 + RULE_newTypeId = 23 + RULE_newDeclarator_ = 24 + RULE_noPointerNewDeclarator = 25 + RULE_newInitializer_ = 26 + RULE_deleteExpression = 27 + RULE_noExceptExpression = 28 + RULE_castExpression = 29 + RULE_pointerMemberExpression = 30 + RULE_multiplicativeExpression = 31 + RULE_additiveExpression = 32 + RULE_shiftExpression = 33 + RULE_shiftOperator = 34 + RULE_relationalExpression = 35 + RULE_equalityExpression = 36 + RULE_andExpression = 37 + RULE_exclusiveOrExpression = 38 + RULE_inclusiveOrExpression = 39 + RULE_logicalAndExpression = 40 + RULE_logicalOrExpression = 41 + RULE_conditionalExpression = 42 + RULE_assignmentExpression = 43 + RULE_assignmentOperator = 44 + RULE_expression = 45 + RULE_constantExpression = 46 + RULE_statement = 47 + RULE_labeledStatement = 48 + RULE_expressionStatement = 49 + RULE_compoundStatement = 50 + RULE_statementSeq = 51 + RULE_selectionStatement = 52 + RULE_condition = 53 + RULE_iterationStatement = 54 + RULE_forInitStatement = 55 + RULE_forRangeDeclaration = 56 + RULE_forRangeInitializer = 57 + RULE_jumpStatement = 58 + RULE_declarationStatement = 59 + RULE_declarationseq = 60 + RULE_declaration = 61 + RULE_blockDeclaration = 62 + RULE_aliasDeclaration = 63 + RULE_simpleDeclaration = 64 + RULE_staticAssertDeclaration = 65 + RULE_emptyDeclaration_ = 66 + RULE_attributeDeclaration = 67 + RULE_declSpecifier = 68 + RULE_declSpecifierSeq = 69 + RULE_storageClassSpecifier = 70 + RULE_functionSpecifier = 71 + RULE_typedefName = 72 + RULE_typeSpecifier = 73 + RULE_trailingTypeSpecifier = 74 + RULE_typeSpecifierSeq = 75 + RULE_trailingTypeSpecifierSeq = 76 + RULE_simpleTypeLengthModifier = 77 + RULE_simpleTypeSignednessModifier = 78 + RULE_simpleTypeSpecifier = 79 + RULE_theTypeName = 80 + RULE_decltypeSpecifier = 81 + RULE_elaboratedTypeSpecifier = 82 + RULE_enumName = 83 + RULE_enumSpecifier = 84 + RULE_enumHead = 85 + RULE_opaqueEnumDeclaration = 86 + RULE_enumkey = 87 + RULE_enumbase = 88 + RULE_enumeratorList = 89 + RULE_enumeratorDefinition = 90 + RULE_enumerator = 91 + RULE_namespaceName = 92 + RULE_originalNamespaceName = 93 + RULE_namespaceDefinition = 94 + RULE_namespaceAlias = 95 + RULE_namespaceAliasDefinition = 96 + RULE_qualifiednamespacespecifier = 97 + RULE_usingDeclaration = 98 + RULE_usingDirective = 99 + RULE_asmDefinition = 100 + RULE_linkageSpecification = 101 + RULE_attributeSpecifierSeq = 102 + RULE_attributeSpecifier = 103 + RULE_alignmentspecifier = 104 + RULE_attributeList = 105 + RULE_attribute = 106 + RULE_attributeNamespace = 107 + RULE_attributeArgumentClause = 108 + RULE_balancedTokenSeq = 109 + RULE_balancedtoken = 110 + RULE_initDeclaratorList = 111 + RULE_initDeclarator = 112 + RULE_declarator = 113 + RULE_pointerDeclarator = 114 + RULE_noPointerDeclarator = 115 + RULE_parametersAndQualifiers = 116 + RULE_trailingReturnType = 117 + RULE_pointerOperator = 118 + RULE_cvqualifierseq = 119 + RULE_cvQualifier = 120 + RULE_refqualifier = 121 + RULE_declaratorid = 122 + RULE_theTypeId = 123 + RULE_abstractDeclarator = 124 + RULE_pointerAbstractDeclarator = 125 + RULE_noPointerAbstractDeclarator = 126 + RULE_abstractPackDeclarator = 127 + RULE_noPointerAbstractPackDeclarator = 128 + RULE_parameterDeclarationClause = 129 + RULE_parameterDeclarationList = 130 + RULE_parameterDeclaration = 131 + RULE_functionDefinition = 132 + RULE_functionBody = 133 + RULE_initializer = 134 + RULE_braceOrEqualInitializer = 135 + RULE_initializerClause = 136 + RULE_initializerList = 137 + RULE_bracedInitList = 138 + RULE_className = 139 + RULE_classSpecifier = 140 + RULE_classHead = 141 + RULE_classHeadName = 142 + RULE_classVirtSpecifier = 143 + RULE_classKey = 144 + RULE_memberSpecification = 145 + RULE_memberdeclaration = 146 + RULE_memberDeclaratorList = 147 + RULE_memberDeclarator = 148 + RULE_virtualSpecifierSeq = 149 + RULE_virtualSpecifier = 150 + RULE_pureSpecifier = 151 + RULE_baseClause = 152 + RULE_baseSpecifierList = 153 + RULE_baseSpecifier = 154 + RULE_classOrDeclType = 155 + RULE_baseTypeSpecifier = 156 + RULE_accessSpecifier = 157 + RULE_conversionFunctionId = 158 + RULE_conversionTypeId = 159 + RULE_conversionDeclarator = 160 + RULE_constructorInitializer = 161 + RULE_memInitializerList = 162 + RULE_memInitializer = 163 + RULE_meminitializerid = 164 + RULE_operatorFunctionId = 165 + RULE_literalOperatorId = 166 + RULE_templateDeclaration = 167 + RULE_templateparameterList = 168 + RULE_templateParameter = 169 + RULE_typeParameter = 170 + RULE_simpleTemplateId = 171 + RULE_templateId = 172 + RULE_templateName = 173 + RULE_templateArgumentList = 174 + RULE_templateArgument = 175 + RULE_typeNameSpecifier = 176 + RULE_explicitInstantiation = 177 + RULE_explicitSpecialization = 178 + RULE_tryBlock = 179 + RULE_functionTryBlock = 180 + RULE_handlerSeq = 181 + RULE_handler = 182 + RULE_exceptionDeclaration = 183 + RULE_throwExpression = 184 + RULE_exceptionSpecification = 185 + RULE_dynamicExceptionSpecification = 186 + RULE_typeIdList = 187 + RULE_noeExceptSpecification = 188 + RULE_theOperator = 189 + RULE_literal = 190 + + ruleNames = [ "translationUnit", "primaryExpression", "idExpression", + "unqualifiedId", "qualifiedId", "nestedNameSpecifier", + "lambdaExpression", "lambdaIntroducer", "lambdaCapture", + "captureDefault", "captureList", "capture", "simpleCapture", + "initcapture", "lambdaDeclarator", "postfixExpression", + "typeIdOfTheTypeId", "expressionList", "pseudoDestructorName", + "unaryExpression", "unaryOperator", "newExpression_", + "newPlacement", "newTypeId", "newDeclarator_", "noPointerNewDeclarator", + "newInitializer_", "deleteExpression", "noExceptExpression", + "castExpression", "pointerMemberExpression", "multiplicativeExpression", + "additiveExpression", "shiftExpression", "shiftOperator", + "relationalExpression", "equalityExpression", "andExpression", + "exclusiveOrExpression", "inclusiveOrExpression", "logicalAndExpression", + "logicalOrExpression", "conditionalExpression", "assignmentExpression", + "assignmentOperator", "expression", "constantExpression", + "statement", "labeledStatement", "expressionStatement", + "compoundStatement", "statementSeq", "selectionStatement", + "condition", "iterationStatement", "forInitStatement", + "forRangeDeclaration", "forRangeInitializer", "jumpStatement", + "declarationStatement", "declarationseq", "declaration", + "blockDeclaration", "aliasDeclaration", "simpleDeclaration", + "staticAssertDeclaration", "emptyDeclaration_", "attributeDeclaration", + "declSpecifier", "declSpecifierSeq", "storageClassSpecifier", + "functionSpecifier", "typedefName", "typeSpecifier", + "trailingTypeSpecifier", "typeSpecifierSeq", "trailingTypeSpecifierSeq", + "simpleTypeLengthModifier", "simpleTypeSignednessModifier", + "simpleTypeSpecifier", "theTypeName", "decltypeSpecifier", + "elaboratedTypeSpecifier", "enumName", "enumSpecifier", + "enumHead", "opaqueEnumDeclaration", "enumkey", "enumbase", + "enumeratorList", "enumeratorDefinition", "enumerator", + "namespaceName", "originalNamespaceName", "namespaceDefinition", + "namespaceAlias", "namespaceAliasDefinition", "qualifiednamespacespecifier", + "usingDeclaration", "usingDirective", "asmDefinition", + "linkageSpecification", "attributeSpecifierSeq", "attributeSpecifier", + "alignmentspecifier", "attributeList", "attribute", "attributeNamespace", + "attributeArgumentClause", "balancedTokenSeq", "balancedtoken", + "initDeclaratorList", "initDeclarator", "declarator", + "pointerDeclarator", "noPointerDeclarator", "parametersAndQualifiers", + "trailingReturnType", "pointerOperator", "cvqualifierseq", + "cvQualifier", "refqualifier", "declaratorid", "theTypeId", + "abstractDeclarator", "pointerAbstractDeclarator", "noPointerAbstractDeclarator", + "abstractPackDeclarator", "noPointerAbstractPackDeclarator", + "parameterDeclarationClause", "parameterDeclarationList", + "parameterDeclaration", "functionDefinition", "functionBody", + "initializer", "braceOrEqualInitializer", "initializerClause", + "initializerList", "bracedInitList", "className", "classSpecifier", + "classHead", "classHeadName", "classVirtSpecifier", "classKey", + "memberSpecification", "memberdeclaration", "memberDeclaratorList", + "memberDeclarator", "virtualSpecifierSeq", "virtualSpecifier", + "pureSpecifier", "baseClause", "baseSpecifierList", "baseSpecifier", + "classOrDeclType", "baseTypeSpecifier", "accessSpecifier", + "conversionFunctionId", "conversionTypeId", "conversionDeclarator", + "constructorInitializer", "memInitializerList", "memInitializer", + "meminitializerid", "operatorFunctionId", "literalOperatorId", + "templateDeclaration", "templateparameterList", "templateParameter", + "typeParameter", "simpleTemplateId", "templateId", "templateName", + "templateArgumentList", "templateArgument", "typeNameSpecifier", + "explicitInstantiation", "explicitSpecialization", "tryBlock", + "functionTryBlock", "handlerSeq", "handler", "exceptionDeclaration", + "throwExpression", "exceptionSpecification", "dynamicExceptionSpecification", + "typeIdList", "noeExceptSpecification", "theOperator", + "literal" ] EOF = Token.EOF - T__0=1 - T__1=2 - T__2=3 - T__3=4 - T__4=5 - T__5=6 - T__6=7 - T__7=8 - MultiLineMacro=9 - Directive=10 - Alignas=11 - Alignof=12 - Asm=13 - Auto=14 - Bool=15 - Break=16 - Case=17 - Catch=18 - Char=19 - Char16=20 - Char32=21 - Class=22 - Const=23 - Constexpr=24 - Const_cast=25 - Continue=26 - Decltype=27 - Default=28 - Delete=29 - Do=30 - Double=31 - Dynamic_cast=32 - Else=33 - Enum=34 - Explicit=35 - Export=36 - Extern=37 + IntegerLiteral=1 + CharacterLiteral=2 + FloatingLiteral=3 + StringLiteral=4 + BooleanLiteral=5 + PointerLiteral=6 + UserDefinedLiteral=7 + MultiLineMacro=8 + Directive=9 + Alignas=10 + Alignof=11 + Asm=12 + Auto=13 + Bool=14 + Break=15 + Case=16 + Catch=17 + Char=18 + Char16=19 + Char32=20 + Class=21 + Const=22 + Constexpr=23 + Const_cast=24 + Continue=25 + Decltype=26 + Default=27 + Delete=28 + Do=29 + Double=30 + Dynamic_cast=31 + Else=32 + Enum=33 + Explicit=34 + Export=35 + Extern=36 + False_=37 Final=38 Float=39 For=40 @@ -1796,96 +1277,92 @@ class CPP14Parser ( Parser ): This=69 Thread_local=70 Throw=71 - Try=72 - Typedef=73 - Typeid_=74 - Typename_=75 - Union=76 - Unsigned=77 - Using=78 - Virtual=79 - Void=80 - Volatile=81 - Wchar=82 - While=83 - LeftParen=84 - RightParen=85 - LeftBracket=86 - RightBracket=87 - LeftBrace=88 - RightBrace=89 - Plus=90 - Minus=91 - Star=92 - Div=93 - Mod=94 - Caret=95 - And=96 - Or=97 - Tilde=98 - Not=99 - Assign=100 - Less=101 - Greater=102 - PlusAssign=103 - MinusAssign=104 - StarAssign=105 - DivAssign=106 - ModAssign=107 - XorAssign=108 - AndAssign=109 - OrAssign=110 - LeftShift=111 - RightShift=112 - LeftShiftAssign=113 - RightShiftAssign=114 - Equal=115 - NotEqual=116 - LessEqual=117 - GreaterEqual=118 - AndAnd=119 - OrOr=120 - PlusPlus=121 - MinusMinus=122 - Comma=123 - ArrowStar=124 - Arrow=125 - Question=126 - Colon=127 - Doublecolon=128 - Semi=129 - Dot=130 - DotStar=131 - Ellipsis=132 - Identifier=133 - Integerliteral=134 - Decimalliteral=135 - Octalliteral=136 - Hexadecimalliteral=137 - Binaryliteral=138 - Integersuffix=139 - Characterliteral=140 - Floatingliteral=141 - Stringliteral=142 - Userdefinedintegerliteral=143 - Userdefinedfloatingliteral=144 - Userdefinedstringliteral=145 - Userdefinedcharacterliteral=146 - Whitespace=147 - Newline=148 - BlockComment=149 - LineComment=150 + True_=72 + Try=73 + Typedef=74 + Typeid_=75 + Typename_=76 + Union=77 + Unsigned=78 + Using=79 + Virtual=80 + Void=81 + Volatile=82 + Wchar=83 + While=84 + LeftParen=85 + RightParen=86 + LeftBracket=87 + RightBracket=88 + LeftBrace=89 + RightBrace=90 + Plus=91 + Minus=92 + Star=93 + Div=94 + Mod=95 + Caret=96 + And=97 + Or=98 + Tilde=99 + Not=100 + Assign=101 + Less=102 + Greater=103 + PlusAssign=104 + MinusAssign=105 + StarAssign=106 + DivAssign=107 + ModAssign=108 + XorAssign=109 + AndAssign=110 + OrAssign=111 + LeftShiftAssign=112 + RightShiftAssign=113 + Equal=114 + NotEqual=115 + LessEqual=116 + GreaterEqual=117 + AndAnd=118 + OrOr=119 + PlusPlus=120 + MinusMinus=121 + Comma=122 + ArrowStar=123 + Arrow=124 + Question=125 + Colon=126 + Doublecolon=127 + Semi=128 + Dot=129 + DotStar=130 + Ellipsis=131 + Identifier=132 + DecimalLiteral=133 + OctalLiteral=134 + HexadecimalLiteral=135 + BinaryLiteral=136 + Integersuffix=137 + UserDefinedIntegerLiteral=138 + UserDefinedFloatingLiteral=139 + UserDefinedStringLiteral=140 + UserDefinedCharacterLiteral=141 + Whitespace=142 + Newline=143 + BlockComment=144 + LineComment=145 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None - class TranslationunitContext(ParserRuleContext): + class TranslationUnitContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1899,41 +1376,41 @@ def declarationseq(self): def getRuleIndex(self): - return CPP14Parser.RULE_translationunit + return CPP14Parser.RULE_translationUnit def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTranslationunit" ): - listener.enterTranslationunit(self) + if hasattr( listener, "enterTranslationUnit" ): + listener.enterTranslationUnit(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTranslationunit" ): - listener.exitTranslationunit(self) + if hasattr( listener, "exitTranslationUnit" ): + listener.exitTranslationUnit(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTranslationunit" ): - return visitor.visitTranslationunit(self) + if hasattr( visitor, "visitTranslationUnit" ): + return visitor.visitTranslationUnit(self) else: return visitor.visitChildren(self) - def translationunit(self): + def translationUnit(self): - localctx = CPP14Parser.TranslationunitContext(self, self._ctx, self.state) - self.enterRule(localctx, 0, self.RULE_translationunit) + localctx = CPP14Parser.TranslationUnitContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_translationUnit) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 405 + self.state = 383 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__2) | (1 << CPP14Parser.Alignas) | (1 << CPP14Parser.Asm) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Constexpr) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Explicit) | (1 << CPP14Parser.Extern) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Friend) | (1 << CPP14Parser.Inline) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.Mutable) | (1 << CPP14Parser.Namespace) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Register) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Static))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CPP14Parser.Static_assert - 64)) | (1 << (CPP14Parser.Struct - 64)) | (1 << (CPP14Parser.Template - 64)) | (1 << (CPP14Parser.Thread_local - 64)) | (1 << (CPP14Parser.Typedef - 64)) | (1 << (CPP14Parser.Typename_ - 64)) | (1 << (CPP14Parser.Union - 64)) | (1 << (CPP14Parser.Unsigned - 64)) | (1 << (CPP14Parser.Using - 64)) | (1 << (CPP14Parser.Virtual - 64)) | (1 << (CPP14Parser.Void - 64)) | (1 << (CPP14Parser.Volatile - 64)) | (1 << (CPP14Parser.Wchar - 64)) | (1 << (CPP14Parser.LeftParen - 64)) | (1 << (CPP14Parser.LeftBracket - 64)) | (1 << (CPP14Parser.Star - 64)) | (1 << (CPP14Parser.And - 64)) | (1 << (CPP14Parser.Tilde - 64)))) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & ((1 << (CPP14Parser.Doublecolon - 128)) | (1 << (CPP14Parser.Semi - 128)) | (1 << (CPP14Parser.Ellipsis - 128)) | (1 << (CPP14Parser.Identifier - 128)))) != 0): - self.state = 404 - self.declarationseq(0) + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 1543754443169808157) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 459384754220313597) != 0): + self.state = 382 + self.declarationseq() - self.state = 407 + self.state = 385 self.match(CPP14Parser.EOF) except RecognitionException as re: localctx.exception = re @@ -1944,14 +1421,18 @@ def translationunit(self): return localctx - class PrimaryexpressionContext(ParserRuleContext): + class PrimaryExpressionContext(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(CPP14Parser.LiteralContext,0) + def literal(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.LiteralContext) + else: + return self.getTypedRuleContext(CPP14Parser.LiteralContext,i) def This(self): @@ -1967,70 +1448,82 @@ def expression(self): def RightParen(self): return self.getToken(CPP14Parser.RightParen, 0) - def idexpression(self): - return self.getTypedRuleContext(CPP14Parser.IdexpressionContext,0) + def idExpression(self): + return self.getTypedRuleContext(CPP14Parser.IdExpressionContext,0) - def lambdaexpression(self): - return self.getTypedRuleContext(CPP14Parser.LambdaexpressionContext,0) + def lambdaExpression(self): + return self.getTypedRuleContext(CPP14Parser.LambdaExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_primaryexpression + return CPP14Parser.RULE_primaryExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryexpression" ): - listener.enterPrimaryexpression(self) + if hasattr( listener, "enterPrimaryExpression" ): + listener.enterPrimaryExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryexpression" ): - listener.exitPrimaryexpression(self) + if hasattr( listener, "exitPrimaryExpression" ): + listener.exitPrimaryExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryexpression" ): - return visitor.visitPrimaryexpression(self) + if hasattr( visitor, "visitPrimaryExpression" ): + return visitor.visitPrimaryExpression(self) else: return visitor.visitChildren(self) - def primaryexpression(self): + def primaryExpression(self): - localctx = CPP14Parser.PrimaryexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 2, self.RULE_primaryexpression) + localctx = CPP14Parser.PrimaryExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_primaryExpression) try: - self.state = 417 + self.state = 399 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CPP14Parser.T__6, CPP14Parser.T__7, CPP14Parser.Nullptr, CPP14Parser.Integerliteral, CPP14Parser.Characterliteral, CPP14Parser.Floatingliteral, CPP14Parser.Stringliteral, CPP14Parser.Userdefinedintegerliteral, CPP14Parser.Userdefinedfloatingliteral, CPP14Parser.Userdefinedstringliteral, CPP14Parser.Userdefinedcharacterliteral]: + if token in [1, 2, 3, 4, 5, 6, 7]: self.enterOuterAlt(localctx, 1) - self.state = 409 - self.literal() + self.state = 388 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 387 + self.literal() + + else: + raise NoViableAltException(self) + self.state = 390 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,1,self._ctx) + pass - elif token in [CPP14Parser.This]: + elif token in [69]: self.enterOuterAlt(localctx, 2) - self.state = 410 + self.state = 392 self.match(CPP14Parser.This) pass - elif token in [CPP14Parser.LeftParen]: + elif token in [85]: self.enterOuterAlt(localctx, 3) - self.state = 411 + self.state = 393 self.match(CPP14Parser.LeftParen) - self.state = 412 - self.expression(0) - self.state = 413 + self.state = 394 + self.expression() + self.state = 395 self.match(CPP14Parser.RightParen) pass - elif token in [CPP14Parser.Decltype, CPP14Parser.Operator, CPP14Parser.Tilde, CPP14Parser.Doublecolon, CPP14Parser.Identifier]: + elif token in [26, 52, 99, 127, 132]: self.enterOuterAlt(localctx, 4) - self.state = 415 - self.idexpression() + self.state = 397 + self.idExpression() pass - elif token in [CPP14Parser.LeftBracket]: + elif token in [87]: self.enterOuterAlt(localctx, 5) - self.state = 416 - self.lambdaexpression() + self.state = 398 + self.lambdaExpression() pass else: raise NoViableAltException(self) @@ -2044,58 +1537,59 @@ def primaryexpression(self): return localctx - class IdexpressionContext(ParserRuleContext): + class IdExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def unqualifiedid(self): - return self.getTypedRuleContext(CPP14Parser.UnqualifiedidContext,0) + def unqualifiedId(self): + return self.getTypedRuleContext(CPP14Parser.UnqualifiedIdContext,0) - def qualifiedid(self): - return self.getTypedRuleContext(CPP14Parser.QualifiedidContext,0) + def qualifiedId(self): + return self.getTypedRuleContext(CPP14Parser.QualifiedIdContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_idexpression + return CPP14Parser.RULE_idExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIdexpression" ): - listener.enterIdexpression(self) + if hasattr( listener, "enterIdExpression" ): + listener.enterIdExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIdexpression" ): - listener.exitIdexpression(self) + if hasattr( listener, "exitIdExpression" ): + listener.exitIdExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIdexpression" ): - return visitor.visitIdexpression(self) + if hasattr( visitor, "visitIdExpression" ): + return visitor.visitIdExpression(self) else: return visitor.visitChildren(self) - def idexpression(self): + def idExpression(self): - localctx = CPP14Parser.IdexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 4, self.RULE_idexpression) + localctx = CPP14Parser.IdExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_idExpression) try: - self.state = 421 + self.state = 403 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,2,self._ctx) + la_ = self._interp.adaptivePredict(self._input,3,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 419 - self.unqualifiedid() + self.state = 401 + self.unqualifiedId() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 420 - self.qualifiedid() + self.state = 402 + self.qualifiedId() pass @@ -2108,7 +1602,8 @@ def idexpression(self): return localctx - class UnqualifiedidContext(ParserRuleContext): + class UnqualifiedIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2117,105 +1612,109 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def Identifier(self): return self.getToken(CPP14Parser.Identifier, 0) - def operatorfunctionid(self): - return self.getTypedRuleContext(CPP14Parser.OperatorfunctionidContext,0) + def operatorFunctionId(self): + return self.getTypedRuleContext(CPP14Parser.OperatorFunctionIdContext,0) - def conversionfunctionid(self): - return self.getTypedRuleContext(CPP14Parser.ConversionfunctionidContext,0) + def conversionFunctionId(self): + return self.getTypedRuleContext(CPP14Parser.ConversionFunctionIdContext,0) - def literaloperatorid(self): - return self.getTypedRuleContext(CPP14Parser.LiteraloperatoridContext,0) + def literalOperatorId(self): + return self.getTypedRuleContext(CPP14Parser.LiteralOperatorIdContext,0) def Tilde(self): return self.getToken(CPP14Parser.Tilde, 0) - def classname(self): - return self.getTypedRuleContext(CPP14Parser.ClassnameContext,0) + def className(self): + return self.getTypedRuleContext(CPP14Parser.ClassNameContext,0) - def decltypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.DecltypespecifierContext,0) + def decltypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.DecltypeSpecifierContext,0) - def templateid(self): - return self.getTypedRuleContext(CPP14Parser.TemplateidContext,0) + def templateId(self): + return self.getTypedRuleContext(CPP14Parser.TemplateIdContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_unqualifiedid + return CPP14Parser.RULE_unqualifiedId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnqualifiedid" ): - listener.enterUnqualifiedid(self) + if hasattr( listener, "enterUnqualifiedId" ): + listener.enterUnqualifiedId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnqualifiedid" ): - listener.exitUnqualifiedid(self) + if hasattr( listener, "exitUnqualifiedId" ): + listener.exitUnqualifiedId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnqualifiedid" ): - return visitor.visitUnqualifiedid(self) + if hasattr( visitor, "visitUnqualifiedId" ): + return visitor.visitUnqualifiedId(self) else: return visitor.visitChildren(self) - def unqualifiedid(self): + def unqualifiedId(self): - localctx = CPP14Parser.UnqualifiedidContext(self, self._ctx, self.state) - self.enterRule(localctx, 6, self.RULE_unqualifiedid) + localctx = CPP14Parser.UnqualifiedIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 6, self.RULE_unqualifiedId) try: - self.state = 432 + self.state = 415 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,3,self._ctx) + la_ = self._interp.adaptivePredict(self._input,5,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 423 + self.state = 405 self.match(CPP14Parser.Identifier) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 424 - self.operatorfunctionid() + self.state = 406 + self.operatorFunctionId() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 425 - self.conversionfunctionid() + self.state = 407 + self.conversionFunctionId() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 426 - self.literaloperatorid() + self.state = 408 + self.literalOperatorId() pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 427 + self.state = 409 self.match(CPP14Parser.Tilde) - self.state = 428 - self.classname() + self.state = 412 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [132]: + self.state = 410 + self.className() + pass + elif token in [26]: + self.state = 411 + self.decltypeSpecifier() + pass + else: + raise NoViableAltException(self) + pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 429 - self.match(CPP14Parser.Tilde) - self.state = 430 - self.decltypespecifier() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 431 - self.templateid() + self.state = 414 + self.templateId() pass @@ -2228,62 +1727,63 @@ def unqualifiedid(self): return localctx - class QualifiedidContext(ParserRuleContext): + class QualifiedIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) - def unqualifiedid(self): - return self.getTypedRuleContext(CPP14Parser.UnqualifiedidContext,0) + def unqualifiedId(self): + return self.getTypedRuleContext(CPP14Parser.UnqualifiedIdContext,0) def Template(self): return self.getToken(CPP14Parser.Template, 0) def getRuleIndex(self): - return CPP14Parser.RULE_qualifiedid + return CPP14Parser.RULE_qualifiedId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterQualifiedid" ): - listener.enterQualifiedid(self) + if hasattr( listener, "enterQualifiedId" ): + listener.enterQualifiedId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitQualifiedid" ): - listener.exitQualifiedid(self) + if hasattr( listener, "exitQualifiedId" ): + listener.exitQualifiedId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitQualifiedid" ): - return visitor.visitQualifiedid(self) + if hasattr( visitor, "visitQualifiedId" ): + return visitor.visitQualifiedId(self) else: return visitor.visitChildren(self) - def qualifiedid(self): + def qualifiedId(self): - localctx = CPP14Parser.QualifiedidContext(self, self._ctx, self.state) - self.enterRule(localctx, 8, self.RULE_qualifiedid) + localctx = CPP14Parser.QualifiedIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_qualifiedId) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 434 - self.nestednamespecifier(0) - self.state = 436 + self.state = 417 + self.nestedNameSpecifier(0) + self.state = 419 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Template: - self.state = 435 + if _la==68: + self.state = 418 self.match(CPP14Parser.Template) - self.state = 438 - self.unqualifiedid() + self.state = 421 + self.unqualifiedId() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2293,7 +1793,8 @@ def qualifiedid(self): return localctx - class NestednamespecifierContext(ParserRuleContext): + class NestedNameSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2302,141 +1803,121 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def Doublecolon(self): return self.getToken(CPP14Parser.Doublecolon, 0) - def thetypename(self): - return self.getTypedRuleContext(CPP14Parser.ThetypenameContext,0) + def theTypeName(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeNameContext,0) - def namespacename(self): - return self.getTypedRuleContext(CPP14Parser.NamespacenameContext,0) + def namespaceName(self): + return self.getTypedRuleContext(CPP14Parser.NamespaceNameContext,0) - def decltypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.DecltypespecifierContext,0) + def decltypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.DecltypeSpecifierContext,0) - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) def Identifier(self): return self.getToken(CPP14Parser.Identifier, 0) - def simpletemplateid(self): - return self.getTypedRuleContext(CPP14Parser.SimpletemplateidContext,0) + def simpleTemplateId(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTemplateIdContext,0) def Template(self): return self.getToken(CPP14Parser.Template, 0) def getRuleIndex(self): - return CPP14Parser.RULE_nestednamespecifier + return CPP14Parser.RULE_nestedNameSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNestednamespecifier" ): - listener.enterNestednamespecifier(self) + if hasattr( listener, "enterNestedNameSpecifier" ): + listener.enterNestedNameSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNestednamespecifier" ): - listener.exitNestednamespecifier(self) + if hasattr( listener, "exitNestedNameSpecifier" ): + listener.exitNestedNameSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNestednamespecifier" ): - return visitor.visitNestednamespecifier(self) + if hasattr( visitor, "visitNestedNameSpecifier" ): + return visitor.visitNestedNameSpecifier(self) else: return visitor.visitChildren(self) - def nestednamespecifier(self, _p:int=0): + def nestedNameSpecifier(self, _p:int=0): _parentctx = self._ctx _parentState = self.state - localctx = CPP14Parser.NestednamespecifierContext(self, self._ctx, _parentState) + localctx = CPP14Parser.NestedNameSpecifierContext(self, self._ctx, _parentState) _prevctx = localctx _startState = 10 - self.enterRecursionRule(localctx, 10, self.RULE_nestednamespecifier, _p) + self.enterRecursionRule(localctx, 10, self.RULE_nestedNameSpecifier, _p) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 451 + self.state = 427 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,5,self._ctx) + la_ = self._interp.adaptivePredict(self._input,7,self._ctx) if la_ == 1: - self.state = 441 - self.match(CPP14Parser.Doublecolon) - pass + self.state = 424 + self.theTypeName() elif la_ == 2: - self.state = 442 - self.thetypename() - self.state = 443 - self.match(CPP14Parser.Doublecolon) - pass + self.state = 425 + self.namespaceName() elif la_ == 3: - self.state = 445 - self.namespacename() - self.state = 446 - self.match(CPP14Parser.Doublecolon) - pass - - elif la_ == 4: - self.state = 448 - self.decltypespecifier() - self.state = 449 - self.match(CPP14Parser.Doublecolon) - pass + self.state = 426 + self.decltypeSpecifier() + self.state = 429 + self.match(CPP14Parser.Doublecolon) self._ctx.stop = self._input.LT(-1) - self.state = 465 + self.state = 442 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,8,self._ctx) + _alt = self._interp.adaptivePredict(self._input,10,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 = 463 + localctx = CPP14Parser.NestedNameSpecifierContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_nestedNameSpecifier) + self.state = 431 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 437 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,7,self._ctx) + la_ = self._interp.adaptivePredict(self._input,9,self._ctx) if la_ == 1: - localctx = CPP14Parser.NestednamespecifierContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_nestednamespecifier) - self.state = 453 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 454 + self.state = 432 self.match(CPP14Parser.Identifier) - self.state = 455 - self.match(CPP14Parser.Doublecolon) pass elif la_ == 2: - localctx = CPP14Parser.NestednamespecifierContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_nestednamespecifier) - self.state = 456 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 458 + self.state = 434 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Template: - self.state = 457 + if _la==68: + self.state = 433 self.match(CPP14Parser.Template) - self.state = 460 - self.simpletemplateid() - self.state = 461 - self.match(CPP14Parser.Doublecolon) + self.state = 436 + self.simpleTemplateId() pass - - self.state = 467 + + self.state = 439 + self.match(CPP14Parser.Doublecolon) + self.state = 444 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,8,self._ctx) + _alt = self._interp.adaptivePredict(self._input,10,self._ctx) except RecognitionException as re: localctx.exception = re @@ -2447,63 +1928,64 @@ def nestednamespecifier(self, _p:int=0): return localctx - class LambdaexpressionContext(ParserRuleContext): + class LambdaExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def lambdaintroducer(self): - return self.getTypedRuleContext(CPP14Parser.LambdaintroducerContext,0) + def lambdaIntroducer(self): + return self.getTypedRuleContext(CPP14Parser.LambdaIntroducerContext,0) - def compoundstatement(self): - return self.getTypedRuleContext(CPP14Parser.CompoundstatementContext,0) + def compoundStatement(self): + return self.getTypedRuleContext(CPP14Parser.CompoundStatementContext,0) - def lambdadeclarator(self): - return self.getTypedRuleContext(CPP14Parser.LambdadeclaratorContext,0) + def lambdaDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.LambdaDeclaratorContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_lambdaexpression + return CPP14Parser.RULE_lambdaExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdaexpression" ): - listener.enterLambdaexpression(self) + if hasattr( listener, "enterLambdaExpression" ): + listener.enterLambdaExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdaexpression" ): - listener.exitLambdaexpression(self) + if hasattr( listener, "exitLambdaExpression" ): + listener.exitLambdaExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLambdaexpression" ): - return visitor.visitLambdaexpression(self) + if hasattr( visitor, "visitLambdaExpression" ): + return visitor.visitLambdaExpression(self) else: return visitor.visitChildren(self) - def lambdaexpression(self): + def lambdaExpression(self): - localctx = CPP14Parser.LambdaexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 12, self.RULE_lambdaexpression) + localctx = CPP14Parser.LambdaExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 12, self.RULE_lambdaExpression) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 468 - self.lambdaintroducer() - self.state = 470 + self.state = 445 + self.lambdaIntroducer() + self.state = 447 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.LeftParen: - self.state = 469 - self.lambdadeclarator() + if _la==85: + self.state = 446 + self.lambdaDeclarator() - self.state = 472 - self.compoundstatement() + self.state = 449 + self.compoundStatement() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2513,7 +1995,8 @@ def lambdaexpression(self): return localctx - class LambdaintroducerContext(ParserRuleContext): + class LambdaIntroducerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2525,48 +2008,48 @@ def LeftBracket(self): def RightBracket(self): return self.getToken(CPP14Parser.RightBracket, 0) - def lambdacapture(self): - return self.getTypedRuleContext(CPP14Parser.LambdacaptureContext,0) + def lambdaCapture(self): + return self.getTypedRuleContext(CPP14Parser.LambdaCaptureContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_lambdaintroducer + return CPP14Parser.RULE_lambdaIntroducer def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdaintroducer" ): - listener.enterLambdaintroducer(self) + if hasattr( listener, "enterLambdaIntroducer" ): + listener.enterLambdaIntroducer(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdaintroducer" ): - listener.exitLambdaintroducer(self) + if hasattr( listener, "exitLambdaIntroducer" ): + listener.exitLambdaIntroducer(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLambdaintroducer" ): - return visitor.visitLambdaintroducer(self) + if hasattr( visitor, "visitLambdaIntroducer" ): + return visitor.visitLambdaIntroducer(self) else: return visitor.visitChildren(self) - def lambdaintroducer(self): + def lambdaIntroducer(self): - localctx = CPP14Parser.LambdaintroducerContext(self, self._ctx, self.state) - self.enterRule(localctx, 14, self.RULE_lambdaintroducer) + localctx = CPP14Parser.LambdaIntroducerContext(self, self._ctx, self.state) + self.enterRule(localctx, 14, self.RULE_lambdaIntroducer) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 474 + self.state = 451 self.match(CPP14Parser.LeftBracket) - self.state = 476 + self.state = 453 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (CPP14Parser.This - 69)) | (1 << (CPP14Parser.And - 69)) | (1 << (CPP14Parser.Assign - 69)))) != 0) or _la==CPP14Parser.Identifier: - self.state = 475 - self.lambdacapture() + if ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & -9223372032291373055) != 0): + self.state = 452 + self.lambdaCapture() - self.state = 478 + self.state = 455 self.match(CPP14Parser.RightBracket) except RecognitionException as re: localctx.exception = re @@ -2577,71 +2060,73 @@ def lambdaintroducer(self): return localctx - class LambdacaptureContext(ParserRuleContext): + class LambdaCaptureContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def capturedefault(self): - return self.getTypedRuleContext(CPP14Parser.CapturedefaultContext,0) + def captureList(self): + return self.getTypedRuleContext(CPP14Parser.CaptureListContext,0) - def capturelist(self): - return self.getTypedRuleContext(CPP14Parser.CapturelistContext,0) + def captureDefault(self): + return self.getTypedRuleContext(CPP14Parser.CaptureDefaultContext,0) def Comma(self): return self.getToken(CPP14Parser.Comma, 0) def getRuleIndex(self): - return CPP14Parser.RULE_lambdacapture + return CPP14Parser.RULE_lambdaCapture def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdacapture" ): - listener.enterLambdacapture(self) + if hasattr( listener, "enterLambdaCapture" ): + listener.enterLambdaCapture(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdacapture" ): - listener.exitLambdacapture(self) + if hasattr( listener, "exitLambdaCapture" ): + listener.exitLambdaCapture(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLambdacapture" ): - return visitor.visitLambdacapture(self) + if hasattr( visitor, "visitLambdaCapture" ): + return visitor.visitLambdaCapture(self) else: return visitor.visitChildren(self) - def lambdacapture(self): + def lambdaCapture(self): - localctx = CPP14Parser.LambdacaptureContext(self, self._ctx, self.state) - self.enterRule(localctx, 16, self.RULE_lambdacapture) + localctx = CPP14Parser.LambdaCaptureContext(self, self._ctx, self.state) + self.enterRule(localctx, 16, self.RULE_lambdaCapture) + self._la = 0 # Token type try: - self.state = 486 + self.state = 463 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,11,self._ctx) + la_ = self._interp.adaptivePredict(self._input,14,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 480 - self.capturedefault() + self.state = 457 + self.captureList() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 481 - self.capturelist(0) - pass + self.state = 458 + self.captureDefault() + self.state = 461 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==122: + self.state = 459 + self.match(CPP14Parser.Comma) + self.state = 460 + self.captureList() + - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 482 - self.capturedefault() - self.state = 483 - self.match(CPP14Parser.Comma) - self.state = 484 - self.capturelist(0) pass @@ -2654,7 +2139,8 @@ def lambdacapture(self): return localctx - class CapturedefaultContext(ParserRuleContext): + class CaptureDefaultContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2667,35 +2153,35 @@ def Assign(self): return self.getToken(CPP14Parser.Assign, 0) def getRuleIndex(self): - return CPP14Parser.RULE_capturedefault + return CPP14Parser.RULE_captureDefault def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCapturedefault" ): - listener.enterCapturedefault(self) + if hasattr( listener, "enterCaptureDefault" ): + listener.enterCaptureDefault(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCapturedefault" ): - listener.exitCapturedefault(self) + if hasattr( listener, "exitCaptureDefault" ): + listener.exitCaptureDefault(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCapturedefault" ): - return visitor.visitCapturedefault(self) + if hasattr( visitor, "visitCaptureDefault" ): + return visitor.visitCaptureDefault(self) else: return visitor.visitChildren(self) - def capturedefault(self): + def captureDefault(self): - localctx = CPP14Parser.CapturedefaultContext(self, self._ctx, self.state) - self.enterRule(localctx, 18, self.RULE_capturedefault) + localctx = CPP14Parser.CaptureDefaultContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_captureDefault) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 488 + self.state = 465 _la = self._input.LA(1) - if not(_la==CPP14Parser.And or _la==CPP14Parser.Assign): + if not(_la==97 or _la==101): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2709,112 +2195,96 @@ def capturedefault(self): return localctx - class CapturelistContext(ParserRuleContext): + class CaptureListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def capture(self): - return self.getTypedRuleContext(CPP14Parser.CaptureContext,0) + def capture(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.CaptureContext) + else: + return self.getTypedRuleContext(CPP14Parser.CaptureContext,i) + + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def Ellipsis(self): return self.getToken(CPP14Parser.Ellipsis, 0) - def capturelist(self): - return self.getTypedRuleContext(CPP14Parser.CapturelistContext,0) - - - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) - def getRuleIndex(self): - return CPP14Parser.RULE_capturelist + return CPP14Parser.RULE_captureList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCapturelist" ): - listener.enterCapturelist(self) + if hasattr( listener, "enterCaptureList" ): + listener.enterCaptureList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCapturelist" ): - listener.exitCapturelist(self) + if hasattr( listener, "exitCaptureList" ): + listener.exitCaptureList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCapturelist" ): - return visitor.visitCapturelist(self) + if hasattr( visitor, "visitCaptureList" ): + return visitor.visitCaptureList(self) else: return visitor.visitChildren(self) - def capturelist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.CapturelistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 20 - self.enterRecursionRule(localctx, 20, self.RULE_capturelist, _p) + + def captureList(self): + + localctx = CPP14Parser.CaptureListContext(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_captureList) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 491 + self.state = 467 self.capture() - self.state = 493 + self.state = 472 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,12,self._ctx) - if la_ == 1: - self.state = 492 - self.match(CPP14Parser.Ellipsis) - + _la = self._input.LA(1) + while _la==122: + self.state = 468 + self.match(CPP14Parser.Comma) + self.state = 469 + self.capture() + self.state = 474 + self._errHandler.sync(self) + _la = self._input.LA(1) - self._ctx.stop = self._input.LT(-1) - self.state = 503 + self.state = 476 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,14,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 = CPP14Parser.CapturelistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_capturelist) - self.state = 495 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 496 - self.match(CPP14Parser.Comma) - self.state = 497 - self.capture() - self.state = 499 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,13,self._ctx) - if la_ == 1: - self.state = 498 - self.match(CPP14Parser.Ellipsis) + _la = self._input.LA(1) + if _la==131: + self.state = 475 + self.match(CPP14Parser.Ellipsis) - - self.state = 505 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,14,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx class CaptureContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def simplecapture(self): - return self.getTypedRuleContext(CPP14Parser.SimplecaptureContext,0) + def simpleCapture(self): + return self.getTypedRuleContext(CPP14Parser.SimpleCaptureContext,0) def initcapture(self): @@ -2846,18 +2316,18 @@ def capture(self): localctx = CPP14Parser.CaptureContext(self, self._ctx, self.state) self.enterRule(localctx, 22, self.RULE_capture) try: - self.state = 508 + self.state = 480 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,15,self._ctx) + la_ = self._interp.adaptivePredict(self._input,17,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 506 - self.simplecapture() + self.state = 478 + self.simpleCapture() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 507 + self.state = 479 self.initcapture() pass @@ -2871,7 +2341,8 @@ def capture(self): return localctx - class SimplecaptureContext(ParserRuleContext): + class SimpleCaptureContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2887,48 +2358,50 @@ def This(self): return self.getToken(CPP14Parser.This, 0) def getRuleIndex(self): - return CPP14Parser.RULE_simplecapture + return CPP14Parser.RULE_simpleCapture def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSimplecapture" ): - listener.enterSimplecapture(self) + if hasattr( listener, "enterSimpleCapture" ): + listener.enterSimpleCapture(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSimplecapture" ): - listener.exitSimplecapture(self) + if hasattr( listener, "exitSimpleCapture" ): + listener.exitSimpleCapture(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSimplecapture" ): - return visitor.visitSimplecapture(self) + if hasattr( visitor, "visitSimpleCapture" ): + return visitor.visitSimpleCapture(self) else: return visitor.visitChildren(self) - def simplecapture(self): + def simpleCapture(self): - localctx = CPP14Parser.SimplecaptureContext(self, self._ctx, self.state) - self.enterRule(localctx, 24, self.RULE_simplecapture) + localctx = CPP14Parser.SimpleCaptureContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_simpleCapture) + self._la = 0 # Token type try: - self.state = 514 + self.state = 487 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CPP14Parser.Identifier]: + if token in [97, 132]: self.enterOuterAlt(localctx, 1) - self.state = 510 + self.state = 483 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==97: + self.state = 482 + self.match(CPP14Parser.And) + + + self.state = 485 self.match(CPP14Parser.Identifier) pass - elif token in [CPP14Parser.And]: + elif token in [69]: self.enterOuterAlt(localctx, 2) - self.state = 511 - self.match(CPP14Parser.And) - self.state = 512 - self.match(CPP14Parser.Identifier) - pass - elif token in [CPP14Parser.This]: - self.enterOuterAlt(localctx, 3) - self.state = 513 + self.state = 486 self.match(CPP14Parser.This) pass else: @@ -2944,6 +2417,7 @@ def simplecapture(self): class InitcaptureContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2983,29 +2457,21 @@ def initcapture(self): localctx = CPP14Parser.InitcaptureContext(self, self._ctx, self.state) self.enterRule(localctx, 26, self.RULE_initcapture) + self._la = 0 # Token type try: - self.state = 521 + self.enterOuterAlt(localctx, 1) + self.state = 490 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.Identifier]: - self.enterOuterAlt(localctx, 1) - self.state = 516 - self.match(CPP14Parser.Identifier) - self.state = 517 - self.initializer() - pass - elif token in [CPP14Parser.And]: - self.enterOuterAlt(localctx, 2) - self.state = 518 + _la = self._input.LA(1) + if _la==97: + self.state = 489 self.match(CPP14Parser.And) - self.state = 519 - self.match(CPP14Parser.Identifier) - self.state = 520 - self.initializer() - pass - else: - raise NoViableAltException(self) + + self.state = 492 + self.match(CPP14Parser.Identifier) + self.state = 493 + self.initializer() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3015,7 +2481,8 @@ def initcapture(self): return localctx - class LambdadeclaratorContext(ParserRuleContext): + class LambdaDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3024,91 +2491,97 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def LeftParen(self): return self.getToken(CPP14Parser.LeftParen, 0) - def parameterdeclarationclause(self): - return self.getTypedRuleContext(CPP14Parser.ParameterdeclarationclauseContext,0) - - def RightParen(self): return self.getToken(CPP14Parser.RightParen, 0) + def parameterDeclarationClause(self): + return self.getTypedRuleContext(CPP14Parser.ParameterDeclarationClauseContext,0) + + def Mutable(self): return self.getToken(CPP14Parser.Mutable, 0) - def exceptionspecification(self): - return self.getTypedRuleContext(CPP14Parser.ExceptionspecificationContext,0) + def exceptionSpecification(self): + return self.getTypedRuleContext(CPP14Parser.ExceptionSpecificationContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) - def trailingreturntype(self): - return self.getTypedRuleContext(CPP14Parser.TrailingreturntypeContext,0) + def trailingReturnType(self): + return self.getTypedRuleContext(CPP14Parser.TrailingReturnTypeContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_lambdadeclarator + return CPP14Parser.RULE_lambdaDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdadeclarator" ): - listener.enterLambdadeclarator(self) + if hasattr( listener, "enterLambdaDeclarator" ): + listener.enterLambdaDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdadeclarator" ): - listener.exitLambdadeclarator(self) + if hasattr( listener, "exitLambdaDeclarator" ): + listener.exitLambdaDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLambdadeclarator" ): - return visitor.visitLambdadeclarator(self) + if hasattr( visitor, "visitLambdaDeclarator" ): + return visitor.visitLambdaDeclarator(self) else: return visitor.visitChildren(self) - def lambdadeclarator(self): + def lambdaDeclarator(self): - localctx = CPP14Parser.LambdadeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 28, self.RULE_lambdadeclarator) + localctx = CPP14Parser.LambdaDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_lambdaDeclarator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 523 + self.state = 495 self.match(CPP14Parser.LeftParen) - self.state = 524 - self.parameterdeclarationclause() - self.state = 525 + self.state = 497 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 1237504995584196377) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 297237575406461917) != 0): + self.state = 496 + self.parameterDeclarationClause() + + + self.state = 499 self.match(CPP14Parser.RightParen) - self.state = 527 + self.state = 501 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Mutable: - self.state = 526 + if _la==47: + self.state = 500 self.match(CPP14Parser.Mutable) - self.state = 530 + self.state = 504 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Noexcept or _la==CPP14Parser.Throw: - self.state = 529 - self.exceptionspecification() + if _la==50 or _la==71: + self.state = 503 + self.exceptionSpecification() - self.state = 533 + self.state = 507 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 532 - self.attributespecifierseq(0) + if _la==10 or _la==87: + self.state = 506 + self.attributeSpecifierSeq() - self.state = 536 + self.state = 510 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Arrow: - self.state = 535 - self.trailingreturntype() + if _la==124: + self.state = 509 + self.trailingReturnType() except RecognitionException as re: @@ -3120,18 +2593,23 @@ def lambdadeclarator(self): return localctx - class PostfixexpressionContext(ParserRuleContext): + class PostfixExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def primaryexpression(self): - return self.getTypedRuleContext(CPP14Parser.PrimaryexpressionContext,0) + def primaryExpression(self): + return self.getTypedRuleContext(CPP14Parser.PrimaryExpressionContext,0) + + + def simpleTypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTypeSpecifierContext,0) - def simpletypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.SimpletypespecifierContext,0) + def typeNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.TypeNameSpecifierContext,0) def LeftParen(self): @@ -3140,26 +2618,19 @@ def LeftParen(self): def RightParen(self): return self.getToken(CPP14Parser.RightParen, 0) - def expressionlist(self): - return self.getTypedRuleContext(CPP14Parser.ExpressionlistContext,0) + def bracedInitList(self): + return self.getTypedRuleContext(CPP14Parser.BracedInitListContext,0) - def typenamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.TypenamespecifierContext,0) + def expressionList(self): + return self.getTypedRuleContext(CPP14Parser.ExpressionListContext,0) - def bracedinitlist(self): - return self.getTypedRuleContext(CPP14Parser.BracedinitlistContext,0) - - - def Dynamic_cast(self): - return self.getToken(CPP14Parser.Dynamic_cast, 0) - def Less(self): return self.getToken(CPP14Parser.Less, 0) - def thetypeid(self): - return self.getTypedRuleContext(CPP14Parser.ThetypeidContext,0) + def theTypeId(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeIdContext,0) def Greater(self): @@ -3169,6 +2640,9 @@ def expression(self): return self.getTypedRuleContext(CPP14Parser.ExpressionContext,0) + def Dynamic_cast(self): + return self.getToken(CPP14Parser.Dynamic_cast, 0) + def Static_cast(self): return self.getToken(CPP14Parser.Static_cast, 0) @@ -3178,12 +2652,12 @@ def Reinterpret_cast(self): def Const_cast(self): return self.getToken(CPP14Parser.Const_cast, 0) - def typeidofthetypeid(self): - return self.getTypedRuleContext(CPP14Parser.TypeidofthetypeidContext,0) + def typeIdOfTheTypeId(self): + return self.getTypedRuleContext(CPP14Parser.TypeIdOfTheTypeIdContext,0) - def postfixexpression(self): - return self.getTypedRuleContext(CPP14Parser.PostfixexpressionContext,0) + def postfixExpression(self): + return self.getTypedRuleContext(CPP14Parser.PostfixExpressionContext,0) def LeftBracket(self): @@ -3195,19 +2669,19 @@ def RightBracket(self): def Dot(self): return self.getToken(CPP14Parser.Dot, 0) - def idexpression(self): - return self.getTypedRuleContext(CPP14Parser.IdexpressionContext,0) + def Arrow(self): + return self.getToken(CPP14Parser.Arrow, 0) + def idExpression(self): + return self.getTypedRuleContext(CPP14Parser.IdExpressionContext,0) - def Template(self): - return self.getToken(CPP14Parser.Template, 0) - def Arrow(self): - return self.getToken(CPP14Parser.Arrow, 0) + def pseudoDestructorName(self): + return self.getTypedRuleContext(CPP14Parser.PseudoDestructorNameContext,0) - def pseudodestructorname(self): - return self.getTypedRuleContext(CPP14Parser.PseudodestructornameContext,0) + def Template(self): + return self.getToken(CPP14Parser.Template, 0) def PlusPlus(self): return self.getToken(CPP14Parser.PlusPlus, 0) @@ -3216,338 +2690,247 @@ def MinusMinus(self): return self.getToken(CPP14Parser.MinusMinus, 0) def getRuleIndex(self): - return CPP14Parser.RULE_postfixexpression + return CPP14Parser.RULE_postfixExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPostfixexpression" ): - listener.enterPostfixexpression(self) + if hasattr( listener, "enterPostfixExpression" ): + listener.enterPostfixExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPostfixexpression" ): - listener.exitPostfixexpression(self) + if hasattr( listener, "exitPostfixExpression" ): + listener.exitPostfixExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPostfixexpression" ): - return visitor.visitPostfixexpression(self) + if hasattr( visitor, "visitPostfixExpression" ): + return visitor.visitPostfixExpression(self) else: return visitor.visitChildren(self) - def postfixexpression(self, _p:int=0): + def postfixExpression(self, _p:int=0): _parentctx = self._ctx _parentState = self.state - localctx = CPP14Parser.PostfixexpressionContext(self, self._ctx, _parentState) + localctx = CPP14Parser.PostfixExpressionContext(self, self._ctx, _parentState) _prevctx = localctx _startState = 30 - self.enterRecursionRule(localctx, 30, self.RULE_postfixexpression, _p) + self.enterRecursionRule(localctx, 30, self.RULE_postfixExpression, _p) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 602 + self.state = 542 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,24,self._ctx) + la_ = self._interp.adaptivePredict(self._input,30,self._ctx) if la_ == 1: - self.state = 539 - self.primaryexpression() + self.state = 513 + self.primaryExpression() pass elif la_ == 2: - self.state = 540 - self.simpletypespecifier() - self.state = 541 - self.match(CPP14Parser.LeftParen) - self.state = 543 + self.state = 516 self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Throw - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.LeftBrace - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 542 - self.expressionlist() - - - self.state = 545 - self.match(CPP14Parser.RightParen) - pass - - elif la_ == 3: - self.state = 547 - self.typenamespecifier() - self.state = 548 - self.match(CPP14Parser.LeftParen) - self.state = 550 + token = self._input.LA(1) + if token in [13, 14, 18, 19, 20, 26, 30, 39, 45, 46, 60, 61, 78, 81, 83, 127, 132]: + self.state = 514 + self.simpleTypeSpecifier() + pass + elif token in [76]: + self.state = 515 + self.typeNameSpecifier() + pass + else: + raise NoViableAltException(self) + + self.state = 524 self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Throw - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.LeftBrace - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 549 - self.expressionlist() - - - self.state = 552 - self.match(CPP14Parser.RightParen) - pass + token = self._input.LA(1) + if token in [85]: + self.state = 518 + self.match(CPP14Parser.LeftParen) + self.state = 520 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474400910417) != 0) or _la==132: + self.state = 519 + self.expressionList() - elif la_ == 4: - self.state = 554 - self.simpletypespecifier() - self.state = 555 - self.bracedinitlist() - pass - elif la_ == 5: - self.state = 557 - self.typenamespecifier() - self.state = 558 - self.bracedinitlist() - pass + self.state = 522 + self.match(CPP14Parser.RightParen) + pass + elif token in [89]: + self.state = 523 + self.bracedInitList() + pass + else: + raise NoViableAltException(self) - elif la_ == 6: - self.state = 560 - self.match(CPP14Parser.Dynamic_cast) - self.state = 561 - self.match(CPP14Parser.Less) - self.state = 562 - self.thetypeid() - self.state = 563 - self.match(CPP14Parser.Greater) - self.state = 564 - self.match(CPP14Parser.LeftParen) - self.state = 565 - self.expression(0) - self.state = 566 - self.match(CPP14Parser.RightParen) pass - elif la_ == 7: - self.state = 568 - self.match(CPP14Parser.Static_cast) - self.state = 569 + elif la_ == 3: + self.state = 526 + _la = self._input.LA(1) + if not(((((_la - 24)) & ~0x3f) == 0 and ((1 << (_la - 24)) & 2216203124865) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 527 self.match(CPP14Parser.Less) - self.state = 570 - self.thetypeid() - self.state = 571 + self.state = 528 + self.theTypeId() + self.state = 529 self.match(CPP14Parser.Greater) - self.state = 572 + self.state = 530 self.match(CPP14Parser.LeftParen) - self.state = 573 - self.expression(0) - self.state = 574 + self.state = 531 + self.expression() + self.state = 532 self.match(CPP14Parser.RightParen) pass - elif la_ == 8: - self.state = 576 - self.match(CPP14Parser.Reinterpret_cast) - self.state = 577 - self.match(CPP14Parser.Less) - self.state = 578 - self.thetypeid() - self.state = 579 - self.match(CPP14Parser.Greater) - self.state = 580 + elif la_ == 4: + self.state = 534 + self.typeIdOfTheTypeId() + self.state = 535 self.match(CPP14Parser.LeftParen) - self.state = 581 - self.expression(0) - self.state = 582 - self.match(CPP14Parser.RightParen) - pass + self.state = 538 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,29,self._ctx) + if la_ == 1: + self.state = 536 + self.expression() + pass - elif la_ == 9: - self.state = 584 - self.match(CPP14Parser.Const_cast) - self.state = 585 - self.match(CPP14Parser.Less) - self.state = 586 - self.thetypeid() - self.state = 587 - self.match(CPP14Parser.Greater) - self.state = 588 - self.match(CPP14Parser.LeftParen) - self.state = 589 - self.expression(0) - self.state = 590 - self.match(CPP14Parser.RightParen) - pass + elif la_ == 2: + self.state = 537 + self.theTypeId() + pass - elif la_ == 10: - self.state = 592 - self.typeidofthetypeid() - self.state = 593 - self.match(CPP14Parser.LeftParen) - self.state = 594 - self.expression(0) - self.state = 595 - self.match(CPP14Parser.RightParen) - pass - elif la_ == 11: - self.state = 597 - self.typeidofthetypeid() - self.state = 598 - self.match(CPP14Parser.LeftParen) - self.state = 599 - self.thetypeid() - self.state = 600 + self.state = 540 self.match(CPP14Parser.RightParen) pass self._ctx.stop = self._input.LT(-1) - self.state = 644 + self.state = 571 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,29,self._ctx) + _alt = self._interp.adaptivePredict(self._input,36,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 = 642 + self.state = 569 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,28,self._ctx) + la_ = self._interp.adaptivePredict(self._input,35,self._ctx) if la_ == 1: - localctx = CPP14Parser.PostfixexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixexpression) - self.state = 604 - if not self.precpred(self._ctx, 19): + localctx = CPP14Parser.PostfixExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixExpression) + self.state = 544 + if not self.precpred(self._ctx, 7): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 19)") - self.state = 605 + raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") + self.state = 545 self.match(CPP14Parser.LeftBracket) - self.state = 606 - self.expression(0) - self.state = 607 + self.state = 548 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [1, 2, 3, 4, 5, 6, 7, 11, 13, 14, 18, 19, 20, 24, 26, 28, 30, 31, 39, 45, 46, 49, 50, 52, 58, 60, 61, 62, 65, 69, 71, 75, 76, 78, 81, 83, 85, 87, 91, 92, 93, 97, 98, 99, 100, 120, 121, 127, 132]: + self.state = 546 + self.expression() + pass + elif token in [89]: + self.state = 547 + self.bracedInitList() + pass + else: + raise NoViableAltException(self) + + self.state = 550 self.match(CPP14Parser.RightBracket) pass elif la_ == 2: - localctx = CPP14Parser.PostfixexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixexpression) - self.state = 609 - if not self.precpred(self._ctx, 18): + localctx = CPP14Parser.PostfixExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixExpression) + self.state = 552 + if not self.precpred(self._ctx, 6): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 18)") - self.state = 610 - self.match(CPP14Parser.LeftBracket) - self.state = 611 - self.bracedinitlist() - self.state = 612 - self.match(CPP14Parser.RightBracket) - pass - - elif la_ == 3: - localctx = CPP14Parser.PostfixexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixexpression) - self.state = 614 - if not self.precpred(self._ctx, 17): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 17)") - self.state = 615 + raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") + self.state = 553 self.match(CPP14Parser.LeftParen) - self.state = 617 + self.state = 555 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Throw - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.LeftBrace - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 616 - self.expressionlist() + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474400910417) != 0) or _la==132: + self.state = 554 + self.expressionList() - self.state = 619 + self.state = 557 self.match(CPP14Parser.RightParen) pass - elif la_ == 4: - localctx = CPP14Parser.PostfixexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixexpression) - self.state = 620 - if not self.precpred(self._ctx, 12): + elif la_ == 3: + localctx = CPP14Parser.PostfixExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixExpression) + self.state = 558 + if not self.precpred(self._ctx, 4): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 12)") - self.state = 621 - self.match(CPP14Parser.Dot) - self.state = 623 - self._errHandler.sync(self) + raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") + self.state = 559 _la = self._input.LA(1) - if _la==CPP14Parser.Template: - self.state = 622 - self.match(CPP14Parser.Template) - - - self.state = 625 - self.idexpression() - pass - - elif la_ == 5: - localctx = CPP14Parser.PostfixexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixexpression) - self.state = 626 - if not self.precpred(self._ctx, 11): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 11)") - self.state = 627 - self.match(CPP14Parser.Arrow) - self.state = 629 + if not(_la==124 or _la==129): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 565 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Template: - self.state = 628 - self.match(CPP14Parser.Template) + la_ = self._interp.adaptivePredict(self._input,34,self._ctx) + if la_ == 1: + self.state = 561 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==68: + self.state = 560 + self.match(CPP14Parser.Template) - self.state = 631 - self.idexpression() - pass + self.state = 563 + self.idExpression() + pass - elif la_ == 6: - localctx = CPP14Parser.PostfixexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixexpression) - self.state = 632 - if not self.precpred(self._ctx, 10): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") - self.state = 633 - self.match(CPP14Parser.Dot) - self.state = 634 - self.pseudodestructorname() - pass + elif la_ == 2: + self.state = 564 + self.pseudoDestructorName() + pass - elif la_ == 7: - localctx = CPP14Parser.PostfixexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixexpression) - self.state = 635 - if not self.precpred(self._ctx, 9): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") - self.state = 636 - self.match(CPP14Parser.Arrow) - self.state = 637 - self.pseudodestructorname() - pass - elif la_ == 8: - localctx = CPP14Parser.PostfixexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixexpression) - self.state = 638 - if not self.precpred(self._ctx, 8): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") - self.state = 639 - self.match(CPP14Parser.PlusPlus) pass - elif la_ == 9: - localctx = CPP14Parser.PostfixexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixexpression) - self.state = 640 - if not self.precpred(self._ctx, 7): + elif la_ == 4: + localctx = CPP14Parser.PostfixExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixExpression) + self.state = 567 + if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") - self.state = 641 - self.match(CPP14Parser.MinusMinus) + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 568 + _la = self._input.LA(1) + if not(_la==120 or _la==121): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() pass - self.state = 646 + self.state = 573 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,29,self._ctx) + _alt = self._interp.adaptivePredict(self._input,36,self._ctx) except RecognitionException as re: localctx.exception = re @@ -3558,7 +2941,8 @@ def postfixexpression(self, _p:int=0): return localctx - class TypeidofexprContext(ParserRuleContext): + class TypeIdOfTheTypeIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3568,32 +2952,32 @@ def Typeid_(self): return self.getToken(CPP14Parser.Typeid_, 0) def getRuleIndex(self): - return CPP14Parser.RULE_typeidofexpr + return CPP14Parser.RULE_typeIdOfTheTypeId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeidofexpr" ): - listener.enterTypeidofexpr(self) + if hasattr( listener, "enterTypeIdOfTheTypeId" ): + listener.enterTypeIdOfTheTypeId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeidofexpr" ): - listener.exitTypeidofexpr(self) + if hasattr( listener, "exitTypeIdOfTheTypeId" ): + listener.exitTypeIdOfTheTypeId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeidofexpr" ): - return visitor.visitTypeidofexpr(self) + if hasattr( visitor, "visitTypeIdOfTheTypeId" ): + return visitor.visitTypeIdOfTheTypeId(self) else: return visitor.visitChildren(self) - def typeidofexpr(self): + def typeIdOfTheTypeId(self): - localctx = CPP14Parser.TypeidofexprContext(self, self._ctx, self.state) - self.enterRule(localctx, 32, self.RULE_typeidofexpr) + localctx = CPP14Parser.TypeIdOfTheTypeIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_typeIdOfTheTypeId) try: self.enterOuterAlt(localctx, 1) - self.state = 647 + self.state = 574 self.match(CPP14Parser.Typeid_) except RecognitionException as re: localctx.exception = re @@ -3604,43 +2988,45 @@ def typeidofexpr(self): return localctx - class TypeidofthetypeidContext(ParserRuleContext): + class ExpressionListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Typeid_(self): - return self.getToken(CPP14Parser.Typeid_, 0) + def initializerList(self): + return self.getTypedRuleContext(CPP14Parser.InitializerListContext,0) + def getRuleIndex(self): - return CPP14Parser.RULE_typeidofthetypeid + return CPP14Parser.RULE_expressionList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeidofthetypeid" ): - listener.enterTypeidofthetypeid(self) + if hasattr( listener, "enterExpressionList" ): + listener.enterExpressionList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeidofthetypeid" ): - listener.exitTypeidofthetypeid(self) + if hasattr( listener, "exitExpressionList" ): + listener.exitExpressionList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeidofthetypeid" ): - return visitor.visitTypeidofthetypeid(self) + if hasattr( visitor, "visitExpressionList" ): + return visitor.visitExpressionList(self) else: return visitor.visitChildren(self) - def typeidofthetypeid(self): + def expressionList(self): - localctx = CPP14Parser.TypeidofthetypeidContext(self, self._ctx, self.state) - self.enterRule(localctx, 34, self.RULE_typeidofthetypeid) + localctx = CPP14Parser.ExpressionListContext(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_expressionList) try: self.enterOuterAlt(localctx, 1) - self.state = 649 - self.match(CPP14Parser.Typeid_) + self.state = 576 + self.initializerList() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3650,174 +3036,118 @@ def typeidofthetypeid(self): return localctx - class ExpressionlistContext(ParserRuleContext): + class PseudoDestructorNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def initializerlist(self): - return self.getTypedRuleContext(CPP14Parser.InitializerlistContext,0) - - - def getRuleIndex(self): - return CPP14Parser.RULE_expressionlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpressionlist" ): - listener.enterExpressionlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpressionlist" ): - listener.exitExpressionlist(self) + def Tilde(self): + return self.getToken(CPP14Parser.Tilde, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpressionlist" ): - return visitor.visitExpressionlist(self) + def theTypeName(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.TheTypeNameContext) else: - return visitor.visitChildren(self) - - - - - def expressionlist(self): - - localctx = CPP14Parser.ExpressionlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 36, self.RULE_expressionlist) - try: - self.enterOuterAlt(localctx, 1) - self.state = 651 - self.initializerlist(0) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PseudodestructornameContext(ParserRuleContext): + return self.getTypedRuleContext(CPP14Parser.TheTypeNameContext,i) - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - def thetypename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(CPP14Parser.ThetypenameContext) - else: - return self.getTypedRuleContext(CPP14Parser.ThetypenameContext,i) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) def Doublecolon(self): return self.getToken(CPP14Parser.Doublecolon, 0) - def Tilde(self): - return self.getToken(CPP14Parser.Tilde, 0) - - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) - - def Template(self): return self.getToken(CPP14Parser.Template, 0) - def simpletemplateid(self): - return self.getTypedRuleContext(CPP14Parser.SimpletemplateidContext,0) + def simpleTemplateId(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTemplateIdContext,0) - def decltypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.DecltypespecifierContext,0) + def decltypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.DecltypeSpecifierContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_pseudodestructorname + return CPP14Parser.RULE_pseudoDestructorName def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPseudodestructorname" ): - listener.enterPseudodestructorname(self) + if hasattr( listener, "enterPseudoDestructorName" ): + listener.enterPseudoDestructorName(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPseudodestructorname" ): - listener.exitPseudodestructorname(self) + if hasattr( listener, "exitPseudoDestructorName" ): + listener.exitPseudoDestructorName(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPseudodestructorname" ): - return visitor.visitPseudodestructorname(self) + if hasattr( visitor, "visitPseudoDestructorName" ): + return visitor.visitPseudoDestructorName(self) else: return visitor.visitChildren(self) - def pseudodestructorname(self): + def pseudoDestructorName(self): - localctx = CPP14Parser.PseudodestructornameContext(self, self._ctx, self.state) - self.enterRule(localctx, 38, self.RULE_pseudodestructorname) + localctx = CPP14Parser.PseudoDestructorNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_pseudoDestructorName) self._la = 0 # Token type try: - self.state = 675 + self.state = 597 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,32,self._ctx) + la_ = self._interp.adaptivePredict(self._input,39,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 654 + self.state = 579 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,30,self._ctx) + la_ = self._interp.adaptivePredict(self._input,37,self._ctx) if la_ == 1: - self.state = 653 - self.nestednamespecifier(0) + self.state = 578 + self.nestedNameSpecifier(0) - self.state = 656 - self.thetypename() - self.state = 657 - self.match(CPP14Parser.Doublecolon) - self.state = 658 + self.state = 584 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==132: + self.state = 581 + self.theTypeName() + self.state = 582 + self.match(CPP14Parser.Doublecolon) + + + self.state = 586 self.match(CPP14Parser.Tilde) - self.state = 659 - self.thetypename() + self.state = 587 + self.theTypeName() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 661 - self.nestednamespecifier(0) - self.state = 662 + self.state = 588 + self.nestedNameSpecifier(0) + self.state = 589 self.match(CPP14Parser.Template) - self.state = 663 - self.simpletemplateid() - self.state = 664 + self.state = 590 + self.simpleTemplateId() + self.state = 591 self.match(CPP14Parser.Doublecolon) - self.state = 665 + self.state = 592 self.match(CPP14Parser.Tilde) - self.state = 666 - self.thetypename() + self.state = 593 + self.theTypeName() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 669 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Decltype or _la==CPP14Parser.Doublecolon or _la==CPP14Parser.Identifier: - self.state = 668 - self.nestednamespecifier(0) - - - self.state = 671 - self.match(CPP14Parser.Tilde) - self.state = 672 - self.thetypename() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 673 + self.state = 595 self.match(CPP14Parser.Tilde) - self.state = 674 - self.decltypespecifier() + self.state = 596 + self.decltypeSpecifier() pass @@ -3830,42 +3160,39 @@ def pseudodestructorname(self): return localctx - class UnaryexpressionContext(ParserRuleContext): + class UnaryExpressionContext(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(CPP14Parser.PostfixexpressionContext,0) + def postfixExpression(self): + return self.getTypedRuleContext(CPP14Parser.PostfixExpressionContext,0) - def PlusPlus(self): - return self.getToken(CPP14Parser.PlusPlus, 0) + def unaryExpression(self): + return self.getTypedRuleContext(CPP14Parser.UnaryExpressionContext,0) - def castexpression(self): - return self.getTypedRuleContext(CPP14Parser.CastexpressionContext,0) + def PlusPlus(self): + return self.getToken(CPP14Parser.PlusPlus, 0) def MinusMinus(self): return self.getToken(CPP14Parser.MinusMinus, 0) - def unaryoperator(self): - return self.getTypedRuleContext(CPP14Parser.UnaryoperatorContext,0) + def unaryOperator(self): + return self.getTypedRuleContext(CPP14Parser.UnaryOperatorContext,0) def Sizeof(self): return self.getToken(CPP14Parser.Sizeof, 0) - def unaryexpression(self): - return self.getTypedRuleContext(CPP14Parser.UnaryexpressionContext,0) - - def LeftParen(self): return self.getToken(CPP14Parser.LeftParen, 0) - def thetypeid(self): - return self.getTypedRuleContext(CPP14Parser.ThetypeidContext,0) + def theTypeId(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeIdContext,0) def RightParen(self): @@ -3880,138 +3207,138 @@ def Identifier(self): def Alignof(self): return self.getToken(CPP14Parser.Alignof, 0) - def noexceptexpression(self): - return self.getTypedRuleContext(CPP14Parser.NoexceptexpressionContext,0) + def noExceptExpression(self): + return self.getTypedRuleContext(CPP14Parser.NoExceptExpressionContext,0) - def newexpression(self): - return self.getTypedRuleContext(CPP14Parser.NewexpressionContext,0) + def newExpression_(self): + return self.getTypedRuleContext(CPP14Parser.NewExpression_Context,0) - def deleteexpression(self): - return self.getTypedRuleContext(CPP14Parser.DeleteexpressionContext,0) + def deleteExpression(self): + return self.getTypedRuleContext(CPP14Parser.DeleteExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_unaryexpression + return CPP14Parser.RULE_unaryExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnaryexpression" ): - listener.enterUnaryexpression(self) + if hasattr( listener, "enterUnaryExpression" ): + listener.enterUnaryExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnaryexpression" ): - listener.exitUnaryexpression(self) + if hasattr( listener, "exitUnaryExpression" ): + listener.exitUnaryExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnaryexpression" ): - return visitor.visitUnaryexpression(self) + if hasattr( visitor, "visitUnaryExpression" ): + return visitor.visitUnaryExpression(self) else: return visitor.visitChildren(self) - def unaryexpression(self): + def unaryExpression(self): - localctx = CPP14Parser.UnaryexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 40, self.RULE_unaryexpression) + localctx = CPP14Parser.UnaryExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 38, self.RULE_unaryExpression) try: - self.state = 705 + self.state = 626 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,33,self._ctx) + la_ = self._interp.adaptivePredict(self._input,42,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 677 - self.postfixexpression(0) + self.state = 599 + self.postfixExpression(0) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 678 - self.match(CPP14Parser.PlusPlus) - self.state = 679 - self.castexpression() + self.state = 604 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [120]: + self.state = 600 + self.match(CPP14Parser.PlusPlus) + pass + elif token in [121]: + self.state = 601 + self.match(CPP14Parser.MinusMinus) + pass + elif token in [91, 92, 93, 97, 98, 99, 100]: + self.state = 602 + self.unaryOperator() + pass + elif token in [62]: + self.state = 603 + self.match(CPP14Parser.Sizeof) + pass + else: + raise NoViableAltException(self) + + self.state = 606 + self.unaryExpression() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 680 - self.match(CPP14Parser.MinusMinus) - self.state = 681 - self.castexpression() + self.state = 607 + self.match(CPP14Parser.Sizeof) + self.state = 616 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [85]: + self.state = 608 + self.match(CPP14Parser.LeftParen) + self.state = 609 + self.theTypeId() + self.state = 610 + self.match(CPP14Parser.RightParen) + pass + elif token in [131]: + self.state = 612 + self.match(CPP14Parser.Ellipsis) + self.state = 613 + self.match(CPP14Parser.LeftParen) + self.state = 614 + self.match(CPP14Parser.Identifier) + self.state = 615 + self.match(CPP14Parser.RightParen) + pass + else: + raise NoViableAltException(self) + pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 682 - self.unaryoperator() - self.state = 683 - self.castexpression() + self.state = 618 + self.match(CPP14Parser.Alignof) + self.state = 619 + self.match(CPP14Parser.LeftParen) + self.state = 620 + self.theTypeId() + self.state = 621 + self.match(CPP14Parser.RightParen) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 685 - self.match(CPP14Parser.Sizeof) - self.state = 686 - self.unaryexpression() + self.state = 623 + self.noExceptExpression() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 687 - self.match(CPP14Parser.Sizeof) - self.state = 688 - self.match(CPP14Parser.LeftParen) - self.state = 689 - self.thetypeid() - self.state = 690 - self.match(CPP14Parser.RightParen) + self.state = 624 + self.newExpression_() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 692 - self.match(CPP14Parser.Sizeof) - self.state = 693 - self.match(CPP14Parser.Ellipsis) - self.state = 694 - self.match(CPP14Parser.LeftParen) - self.state = 695 - self.match(CPP14Parser.Identifier) - self.state = 696 - self.match(CPP14Parser.RightParen) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 697 - self.match(CPP14Parser.Alignof) - self.state = 698 - self.match(CPP14Parser.LeftParen) - self.state = 699 - self.thetypeid() - self.state = 700 - self.match(CPP14Parser.RightParen) - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 702 - self.noexceptexpression() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 703 - self.newexpression() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 704 - self.deleteexpression() + self.state = 625 + self.deleteExpression() pass @@ -4024,7 +3351,8 @@ def unaryexpression(self): return localctx - class UnaryoperatorContext(ParserRuleContext): + class UnaryOperatorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4048,36 +3376,39 @@ def Tilde(self): def Minus(self): return self.getToken(CPP14Parser.Minus, 0) + def Not(self): + return self.getToken(CPP14Parser.Not, 0) + def getRuleIndex(self): - return CPP14Parser.RULE_unaryoperator + return CPP14Parser.RULE_unaryOperator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnaryoperator" ): - listener.enterUnaryoperator(self) + if hasattr( listener, "enterUnaryOperator" ): + listener.enterUnaryOperator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnaryoperator" ): - listener.exitUnaryoperator(self) + if hasattr( listener, "exitUnaryOperator" ): + listener.exitUnaryOperator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnaryoperator" ): - return visitor.visitUnaryoperator(self) + if hasattr( visitor, "visitUnaryOperator" ): + return visitor.visitUnaryOperator(self) else: return visitor.visitChildren(self) - def unaryoperator(self): + def unaryOperator(self): - localctx = CPP14Parser.UnaryoperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 42, self.RULE_unaryoperator) + localctx = CPP14Parser.UnaryOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 40, self.RULE_unaryOperator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 707 + self.state = 628 _la = self._input.LA(1) - if not(_la==CPP14Parser.T__0 or _la==CPP14Parser.T__1 or ((((_la - 90)) & ~0x3f) == 0 and ((1 << (_la - 90)) & ((1 << (CPP14Parser.Plus - 90)) | (1 << (CPP14Parser.Minus - 90)) | (1 << (CPP14Parser.Star - 90)) | (1 << (CPP14Parser.And - 90)) | (1 << (CPP14Parser.Or - 90)) | (1 << (CPP14Parser.Tilde - 90)))) != 0)): + if not(((((_la - 91)) & ~0x3f) == 0 and ((1 << (_la - 91)) & 967) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -4091,7 +3422,8 @@ def unaryoperator(self): return localctx - class NewexpressionContext(ParserRuleContext): + class NewExpression_Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4100,127 +3432,100 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def New(self): return self.getToken(CPP14Parser.New, 0) - def newtypeid(self): - return self.getTypedRuleContext(CPP14Parser.NewtypeidContext,0) + def newTypeId(self): + return self.getTypedRuleContext(CPP14Parser.NewTypeIdContext,0) - def Doublecolon(self): - return self.getToken(CPP14Parser.Doublecolon, 0) + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) - def newplacement(self): - return self.getTypedRuleContext(CPP14Parser.NewplacementContext,0) + def theTypeId(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeIdContext,0) - def newinitializer(self): - return self.getTypedRuleContext(CPP14Parser.NewinitializerContext,0) + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) + def Doublecolon(self): + return self.getToken(CPP14Parser.Doublecolon, 0) - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) + def newPlacement(self): + return self.getTypedRuleContext(CPP14Parser.NewPlacementContext,0) - def thetypeid(self): - return self.getTypedRuleContext(CPP14Parser.ThetypeidContext,0) + def newInitializer_(self): + return self.getTypedRuleContext(CPP14Parser.NewInitializer_Context,0) - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) def getRuleIndex(self): - return CPP14Parser.RULE_newexpression + return CPP14Parser.RULE_newExpression_ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNewexpression" ): - listener.enterNewexpression(self) + if hasattr( listener, "enterNewExpression_" ): + listener.enterNewExpression_(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNewexpression" ): - listener.exitNewexpression(self) + if hasattr( listener, "exitNewExpression_" ): + listener.exitNewExpression_(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNewexpression" ): - return visitor.visitNewexpression(self) + if hasattr( visitor, "visitNewExpression_" ): + return visitor.visitNewExpression_(self) else: return visitor.visitChildren(self) - def newexpression(self): + def newExpression_(self): - localctx = CPP14Parser.NewexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 44, self.RULE_newexpression) + localctx = CPP14Parser.NewExpression_Context(self, self._ctx, self.state) + self.enterRule(localctx, 42, self.RULE_newExpression_) self._la = 0 # Token type try: - self.state = 733 + self.enterOuterAlt(localctx, 1) + self.state = 631 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,40,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 710 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Doublecolon: - self.state = 709 - self.match(CPP14Parser.Doublecolon) - - - self.state = 712 - self.match(CPP14Parser.New) - self.state = 714 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.LeftParen: - self.state = 713 - self.newplacement() + _la = self._input.LA(1) + if _la==127: + self.state = 630 + self.match(CPP14Parser.Doublecolon) - self.state = 716 - self.newtypeid() - self.state = 718 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,36,self._ctx) - if la_ == 1: - self.state = 717 - self.newinitializer() + self.state = 633 + self.match(CPP14Parser.New) + self.state = 635 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,44,self._ctx) + if la_ == 1: + self.state = 634 + self.newPlacement() + self.state = 642 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [13, 14, 18, 19, 20, 21, 22, 26, 30, 33, 39, 45, 46, 60, 61, 66, 76, 77, 78, 81, 82, 83, 127, 132]: + self.state = 637 + self.newTypeId() pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 721 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Doublecolon: - self.state = 720 - self.match(CPP14Parser.Doublecolon) - - - self.state = 723 - self.match(CPP14Parser.New) - self.state = 725 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,38,self._ctx) - if la_ == 1: - self.state = 724 - self.newplacement() - - - self.state = 727 + elif token in [85]: + self.state = 638 self.match(CPP14Parser.LeftParen) - self.state = 728 - self.thetypeid() - self.state = 729 + self.state = 639 + self.theTypeId() + self.state = 640 self.match(CPP14Parser.RightParen) - self.state = 731 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,39,self._ctx) - if la_ == 1: - self.state = 730 - self.newinitializer() - - pass + else: + raise NoViableAltException(self) + + self.state = 645 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==85 or _la==89: + self.state = 644 + self.newInitializer_() except RecognitionException as re: @@ -4232,7 +3537,8 @@ def newexpression(self): return localctx - class NewplacementContext(ParserRuleContext): + class NewPlacementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4241,44 +3547,44 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def LeftParen(self): return self.getToken(CPP14Parser.LeftParen, 0) - def expressionlist(self): - return self.getTypedRuleContext(CPP14Parser.ExpressionlistContext,0) + def expressionList(self): + return self.getTypedRuleContext(CPP14Parser.ExpressionListContext,0) def RightParen(self): return self.getToken(CPP14Parser.RightParen, 0) def getRuleIndex(self): - return CPP14Parser.RULE_newplacement + return CPP14Parser.RULE_newPlacement def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNewplacement" ): - listener.enterNewplacement(self) + if hasattr( listener, "enterNewPlacement" ): + listener.enterNewPlacement(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNewplacement" ): - listener.exitNewplacement(self) + if hasattr( listener, "exitNewPlacement" ): + listener.exitNewPlacement(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNewplacement" ): - return visitor.visitNewplacement(self) + if hasattr( visitor, "visitNewPlacement" ): + return visitor.visitNewPlacement(self) else: return visitor.visitChildren(self) - def newplacement(self): + def newPlacement(self): - localctx = CPP14Parser.NewplacementContext(self, self._ctx, self.state) - self.enterRule(localctx, 46, self.RULE_newplacement) + localctx = CPP14Parser.NewPlacementContext(self, self._ctx, self.state) + self.enterRule(localctx, 44, self.RULE_newPlacement) try: self.enterOuterAlt(localctx, 1) - self.state = 735 + self.state = 647 self.match(CPP14Parser.LeftParen) - self.state = 736 - self.expressionlist() - self.state = 737 + self.state = 648 + self.expressionList() + self.state = 649 self.match(CPP14Parser.RightParen) except RecognitionException as re: localctx.exception = re @@ -4289,54 +3595,55 @@ def newplacement(self): return localctx - class NewtypeidContext(ParserRuleContext): + class NewTypeIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def typespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.TypespecifierseqContext,0) + def typeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.TypeSpecifierSeqContext,0) - def newdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NewdeclaratorContext,0) + def newDeclarator_(self): + return self.getTypedRuleContext(CPP14Parser.NewDeclarator_Context,0) def getRuleIndex(self): - return CPP14Parser.RULE_newtypeid + return CPP14Parser.RULE_newTypeId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNewtypeid" ): - listener.enterNewtypeid(self) + if hasattr( listener, "enterNewTypeId" ): + listener.enterNewTypeId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNewtypeid" ): - listener.exitNewtypeid(self) + if hasattr( listener, "exitNewTypeId" ): + listener.exitNewTypeId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNewtypeid" ): - return visitor.visitNewtypeid(self) + if hasattr( visitor, "visitNewTypeId" ): + return visitor.visitNewTypeId(self) else: return visitor.visitChildren(self) - def newtypeid(self): + def newTypeId(self): - localctx = CPP14Parser.NewtypeidContext(self, self._ctx, self.state) - self.enterRule(localctx, 48, self.RULE_newtypeid) + localctx = CPP14Parser.NewTypeIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 46, self.RULE_newTypeId) try: self.enterOuterAlt(localctx, 1) - self.state = 739 - self.typespecifierseq() - self.state = 741 + self.state = 651 + self.typeSpecifierSeq() + self.state = 653 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,41,self._ctx) + la_ = self._interp.adaptivePredict(self._input,47,self._ctx) if la_ == 1: - self.state = 740 - self.newdeclarator() + self.state = 652 + self.newDeclarator_() except RecognitionException as re: @@ -4348,69 +3655,70 @@ def newtypeid(self): return localctx - class NewdeclaratorContext(ParserRuleContext): + class NewDeclarator_Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def ptroperator(self): - return self.getTypedRuleContext(CPP14Parser.PtroperatorContext,0) + def pointerOperator(self): + return self.getTypedRuleContext(CPP14Parser.PointerOperatorContext,0) - def newdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NewdeclaratorContext,0) + def newDeclarator_(self): + return self.getTypedRuleContext(CPP14Parser.NewDeclarator_Context,0) - def noptrnewdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrnewdeclaratorContext,0) + def noPointerNewDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.NoPointerNewDeclaratorContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_newdeclarator + return CPP14Parser.RULE_newDeclarator_ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNewdeclarator" ): - listener.enterNewdeclarator(self) + if hasattr( listener, "enterNewDeclarator_" ): + listener.enterNewDeclarator_(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNewdeclarator" ): - listener.exitNewdeclarator(self) + if hasattr( listener, "exitNewDeclarator_" ): + listener.exitNewDeclarator_(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNewdeclarator" ): - return visitor.visitNewdeclarator(self) + if hasattr( visitor, "visitNewDeclarator_" ): + return visitor.visitNewDeclarator_(self) else: return visitor.visitChildren(self) - def newdeclarator(self): + def newDeclarator_(self): - localctx = CPP14Parser.NewdeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 50, self.RULE_newdeclarator) + localctx = CPP14Parser.NewDeclarator_Context(self, self._ctx, self.state) + self.enterRule(localctx, 48, self.RULE_newDeclarator_) try: - self.state = 748 + self.state = 660 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CPP14Parser.T__2, CPP14Parser.Decltype, CPP14Parser.Star, CPP14Parser.And, CPP14Parser.Doublecolon, CPP14Parser.Identifier]: + if token in [26, 93, 97, 118, 127, 132]: self.enterOuterAlt(localctx, 1) - self.state = 743 - self.ptroperator() - self.state = 745 + self.state = 655 + self.pointerOperator() + self.state = 657 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,42,self._ctx) + la_ = self._interp.adaptivePredict(self._input,48,self._ctx) if la_ == 1: - self.state = 744 - self.newdeclarator() + self.state = 656 + self.newDeclarator_() pass - elif token in [CPP14Parser.LeftBracket]: + elif token in [87]: self.enterOuterAlt(localctx, 2) - self.state = 747 - self.noptrnewdeclarator(0) + self.state = 659 + self.noPointerNewDeclarator(0) pass else: raise NoViableAltException(self) @@ -4424,7 +3732,8 @@ def newdeclarator(self): return localctx - class NoptrnewdeclaratorContext(ParserRuleContext): + class NoPointerNewDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4440,92 +3749,92 @@ def expression(self): def RightBracket(self): return self.getToken(CPP14Parser.RightBracket, 0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) - def noptrnewdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrnewdeclaratorContext,0) + def noPointerNewDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.NoPointerNewDeclaratorContext,0) - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) + def constantExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_noptrnewdeclarator + return CPP14Parser.RULE_noPointerNewDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNoptrnewdeclarator" ): - listener.enterNoptrnewdeclarator(self) + if hasattr( listener, "enterNoPointerNewDeclarator" ): + listener.enterNoPointerNewDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNoptrnewdeclarator" ): - listener.exitNoptrnewdeclarator(self) + if hasattr( listener, "exitNoPointerNewDeclarator" ): + listener.exitNoPointerNewDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNoptrnewdeclarator" ): - return visitor.visitNoptrnewdeclarator(self) + if hasattr( visitor, "visitNoPointerNewDeclarator" ): + return visitor.visitNoPointerNewDeclarator(self) else: return visitor.visitChildren(self) - def noptrnewdeclarator(self, _p:int=0): + def noPointerNewDeclarator(self, _p:int=0): _parentctx = self._ctx _parentState = self.state - localctx = CPP14Parser.NoptrnewdeclaratorContext(self, self._ctx, _parentState) + localctx = CPP14Parser.NoPointerNewDeclaratorContext(self, self._ctx, _parentState) _prevctx = localctx - _startState = 52 - self.enterRecursionRule(localctx, 52, self.RULE_noptrnewdeclarator, _p) + _startState = 50 + self.enterRecursionRule(localctx, 50, self.RULE_noPointerNewDeclarator, _p) try: self.enterOuterAlt(localctx, 1) - self.state = 751 + self.state = 663 self.match(CPP14Parser.LeftBracket) - self.state = 752 - self.expression(0) - self.state = 753 + self.state = 664 + self.expression() + self.state = 665 self.match(CPP14Parser.RightBracket) - self.state = 755 + self.state = 667 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,44,self._ctx) + la_ = self._interp.adaptivePredict(self._input,50,self._ctx) if la_ == 1: - self.state = 754 - self.attributespecifierseq(0) + self.state = 666 + self.attributeSpecifierSeq() self._ctx.stop = self._input.LT(-1) - self.state = 766 + self.state = 678 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,46,self._ctx) + _alt = self._interp.adaptivePredict(self._input,52,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 = CPP14Parser.NoptrnewdeclaratorContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_noptrnewdeclarator) - self.state = 757 + localctx = CPP14Parser.NoPointerNewDeclaratorContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_noPointerNewDeclarator) + self.state = 669 if not self.precpred(self._ctx, 1): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 758 + self.state = 670 self.match(CPP14Parser.LeftBracket) - self.state = 759 - self.constantexpression() - self.state = 760 + self.state = 671 + self.constantExpression() + self.state = 672 self.match(CPP14Parser.RightBracket) - self.state = 762 + self.state = 674 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,45,self._ctx) + la_ = self._interp.adaptivePredict(self._input,51,self._ctx) if la_ == 1: - self.state = 761 - self.attributespecifierseq(0) + self.state = 673 + self.attributeSpecifierSeq() - self.state = 768 + self.state = 680 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,46,self._ctx) + _alt = self._interp.adaptivePredict(self._input,52,self._ctx) except RecognitionException as re: localctx.exception = re @@ -4536,7 +3845,8 @@ def noptrnewdeclarator(self, _p:int=0): return localctx - class NewinitializerContext(ParserRuleContext): + class NewInitializer_Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4548,62 +3858,62 @@ def LeftParen(self): def RightParen(self): return self.getToken(CPP14Parser.RightParen, 0) - def expressionlist(self): - return self.getTypedRuleContext(CPP14Parser.ExpressionlistContext,0) + def expressionList(self): + return self.getTypedRuleContext(CPP14Parser.ExpressionListContext,0) - def bracedinitlist(self): - return self.getTypedRuleContext(CPP14Parser.BracedinitlistContext,0) + def bracedInitList(self): + return self.getTypedRuleContext(CPP14Parser.BracedInitListContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_newinitializer + return CPP14Parser.RULE_newInitializer_ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNewinitializer" ): - listener.enterNewinitializer(self) + if hasattr( listener, "enterNewInitializer_" ): + listener.enterNewInitializer_(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNewinitializer" ): - listener.exitNewinitializer(self) + if hasattr( listener, "exitNewInitializer_" ): + listener.exitNewInitializer_(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNewinitializer" ): - return visitor.visitNewinitializer(self) + if hasattr( visitor, "visitNewInitializer_" ): + return visitor.visitNewInitializer_(self) else: return visitor.visitChildren(self) - def newinitializer(self): + def newInitializer_(self): - localctx = CPP14Parser.NewinitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 54, self.RULE_newinitializer) + localctx = CPP14Parser.NewInitializer_Context(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_newInitializer_) self._la = 0 # Token type try: - self.state = 775 + self.state = 687 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CPP14Parser.LeftParen]: + if token in [85]: self.enterOuterAlt(localctx, 1) - self.state = 769 + self.state = 681 self.match(CPP14Parser.LeftParen) - self.state = 771 + self.state = 683 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Throw - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.LeftBrace - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 770 - self.expressionlist() + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474400910417) != 0) or _la==132: + self.state = 682 + self.expressionList() - self.state = 773 + self.state = 685 self.match(CPP14Parser.RightParen) pass - elif token in [CPP14Parser.LeftBrace]: + elif token in [89]: self.enterOuterAlt(localctx, 2) - self.state = 774 - self.bracedinitlist() + self.state = 686 + self.bracedInitList() pass else: raise NoViableAltException(self) @@ -4617,7 +3927,8 @@ def newinitializer(self): return localctx - class DeleteexpressionContext(ParserRuleContext): + class DeleteExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4626,8 +3937,8 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def Delete(self): return self.getToken(CPP14Parser.Delete, 0) - def castexpression(self): - return self.getTypedRuleContext(CPP14Parser.CastexpressionContext,0) + def castExpression(self): + return self.getTypedRuleContext(CPP14Parser.CastExpressionContext,0) def Doublecolon(self): @@ -4640,71 +3951,54 @@ def RightBracket(self): return self.getToken(CPP14Parser.RightBracket, 0) def getRuleIndex(self): - return CPP14Parser.RULE_deleteexpression + return CPP14Parser.RULE_deleteExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeleteexpression" ): - listener.enterDeleteexpression(self) + if hasattr( listener, "enterDeleteExpression" ): + listener.enterDeleteExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeleteexpression" ): - listener.exitDeleteexpression(self) + if hasattr( listener, "exitDeleteExpression" ): + listener.exitDeleteExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeleteexpression" ): - return visitor.visitDeleteexpression(self) + if hasattr( visitor, "visitDeleteExpression" ): + return visitor.visitDeleteExpression(self) else: return visitor.visitChildren(self) - def deleteexpression(self): + def deleteExpression(self): - localctx = CPP14Parser.DeleteexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 56, self.RULE_deleteexpression) + localctx = CPP14Parser.DeleteExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 54, self.RULE_deleteExpression) self._la = 0 # Token type try: - self.state = 789 + self.enterOuterAlt(localctx, 1) + self.state = 690 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==127: + self.state = 689 + self.match(CPP14Parser.Doublecolon) + + + self.state = 692 + self.match(CPP14Parser.Delete) + self.state = 695 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,51,self._ctx) + la_ = self._interp.adaptivePredict(self._input,56,self._ctx) if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 778 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Doublecolon: - self.state = 777 - self.match(CPP14Parser.Doublecolon) - - - self.state = 780 - self.match(CPP14Parser.Delete) - self.state = 781 - self.castexpression() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 783 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Doublecolon: - self.state = 782 - self.match(CPP14Parser.Doublecolon) - - - self.state = 785 - self.match(CPP14Parser.Delete) - self.state = 786 + self.state = 693 self.match(CPP14Parser.LeftBracket) - self.state = 787 + self.state = 694 self.match(CPP14Parser.RightBracket) - self.state = 788 - self.castexpression() - pass + self.state = 697 + self.castExpression() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4714,7 +4008,8 @@ def deleteexpression(self): return localctx - class NoexceptexpressionContext(ParserRuleContext): + class NoExceptExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4734,38 +4029,38 @@ def RightParen(self): return self.getToken(CPP14Parser.RightParen, 0) def getRuleIndex(self): - return CPP14Parser.RULE_noexceptexpression + return CPP14Parser.RULE_noExceptExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNoexceptexpression" ): - listener.enterNoexceptexpression(self) + if hasattr( listener, "enterNoExceptExpression" ): + listener.enterNoExceptExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNoexceptexpression" ): - listener.exitNoexceptexpression(self) + if hasattr( listener, "exitNoExceptExpression" ): + listener.exitNoExceptExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNoexceptexpression" ): - return visitor.visitNoexceptexpression(self) + if hasattr( visitor, "visitNoExceptExpression" ): + return visitor.visitNoExceptExpression(self) else: return visitor.visitChildren(self) - def noexceptexpression(self): + def noExceptExpression(self): - localctx = CPP14Parser.NoexceptexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 58, self.RULE_noexceptexpression) + localctx = CPP14Parser.NoExceptExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 56, self.RULE_noExceptExpression) try: self.enterOuterAlt(localctx, 1) - self.state = 791 + self.state = 699 self.match(CPP14Parser.Noexcept) - self.state = 792 + self.state = 700 self.match(CPP14Parser.LeftParen) - self.state = 793 - self.expression(0) - self.state = 794 + self.state = 701 + self.expression() + self.state = 702 self.match(CPP14Parser.RightParen) except RecognitionException as re: localctx.exception = re @@ -4776,74 +4071,75 @@ def noexceptexpression(self): return localctx - class CastexpressionContext(ParserRuleContext): + class CastExpressionContext(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(CPP14Parser.UnaryexpressionContext,0) + def unaryExpression(self): + return self.getTypedRuleContext(CPP14Parser.UnaryExpressionContext,0) def LeftParen(self): return self.getToken(CPP14Parser.LeftParen, 0) - def thetypeid(self): - return self.getTypedRuleContext(CPP14Parser.ThetypeidContext,0) + def theTypeId(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeIdContext,0) def RightParen(self): return self.getToken(CPP14Parser.RightParen, 0) - def castexpression(self): - return self.getTypedRuleContext(CPP14Parser.CastexpressionContext,0) + def castExpression(self): + return self.getTypedRuleContext(CPP14Parser.CastExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_castexpression + return CPP14Parser.RULE_castExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCastexpression" ): - listener.enterCastexpression(self) + if hasattr( listener, "enterCastExpression" ): + listener.enterCastExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCastexpression" ): - listener.exitCastexpression(self) + if hasattr( listener, "exitCastExpression" ): + listener.exitCastExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCastexpression" ): - return visitor.visitCastexpression(self) + if hasattr( visitor, "visitCastExpression" ): + return visitor.visitCastExpression(self) else: return visitor.visitChildren(self) - def castexpression(self): + def castExpression(self): - localctx = CPP14Parser.CastexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 60, self.RULE_castexpression) + localctx = CPP14Parser.CastExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 58, self.RULE_castExpression) try: - self.state = 802 + self.state = 710 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,52,self._ctx) + la_ = self._interp.adaptivePredict(self._input,57,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 796 - self.unaryexpression() + self.state = 704 + self.unaryExpression() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 797 + self.state = 705 self.match(CPP14Parser.LeftParen) - self.state = 798 - self.thetypeid() - self.state = 799 + self.state = 706 + self.theTypeId() + self.state = 707 self.match(CPP14Parser.RightParen) - self.state = 800 - self.castexpression() + self.state = 708 + self.castExpression() pass @@ -4856,454 +4152,390 @@ def castexpression(self): return localctx - class PmexpressionContext(ParserRuleContext): + class PointerMemberExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def castexpression(self): - return self.getTypedRuleContext(CPP14Parser.CastexpressionContext,0) - - - def pmexpression(self): - return self.getTypedRuleContext(CPP14Parser.PmexpressionContext,0) + def castExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.CastExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.CastExpressionContext,i) - def DotStar(self): - return self.getToken(CPP14Parser.DotStar, 0) + def DotStar(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.DotStar) + else: + return self.getToken(CPP14Parser.DotStar, i) - def ArrowStar(self): - return self.getToken(CPP14Parser.ArrowStar, 0) + def ArrowStar(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.ArrowStar) + else: + return self.getToken(CPP14Parser.ArrowStar, i) def getRuleIndex(self): - return CPP14Parser.RULE_pmexpression + return CPP14Parser.RULE_pointerMemberExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPmexpression" ): - listener.enterPmexpression(self) + if hasattr( listener, "enterPointerMemberExpression" ): + listener.enterPointerMemberExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPmexpression" ): - listener.exitPmexpression(self) + if hasattr( listener, "exitPointerMemberExpression" ): + listener.exitPointerMemberExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPmexpression" ): - return visitor.visitPmexpression(self) + if hasattr( visitor, "visitPointerMemberExpression" ): + return visitor.visitPointerMemberExpression(self) else: return visitor.visitChildren(self) - def pmexpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.PmexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 62 - self.enterRecursionRule(localctx, 62, self.RULE_pmexpression, _p) + + def pointerMemberExpression(self): + + localctx = CPP14Parser.PointerMemberExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 60, self.RULE_pointerMemberExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 805 - self.castexpression() - self._ctx.stop = self._input.LT(-1) - self.state = 815 + self.state = 712 + self.castExpression() + self.state = 717 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,54,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 = 813 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,53,self._ctx) - if la_ == 1: - localctx = CPP14Parser.PmexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_pmexpression) - self.state = 807 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 808 - self.match(CPP14Parser.DotStar) - self.state = 809 - self.castexpression() - pass - - elif la_ == 2: - localctx = CPP14Parser.PmexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_pmexpression) - self.state = 810 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 811 - self.match(CPP14Parser.ArrowStar) - self.state = 812 - self.castexpression() - pass - - - self.state = 817 + _la = self._input.LA(1) + while _la==123 or _la==130: + self.state = 713 + _la = self._input.LA(1) + if not(_la==123 or _la==130): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 714 + self.castExpression() + self.state = 719 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,54,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class MultiplicativeexpressionContext(ParserRuleContext): + class MultiplicativeExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def pmexpression(self): - return self.getTypedRuleContext(CPP14Parser.PmexpressionContext,0) - - - def multiplicativeexpression(self): - return self.getTypedRuleContext(CPP14Parser.MultiplicativeexpressionContext,0) + def pointerMemberExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.PointerMemberExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.PointerMemberExpressionContext,i) - def Star(self): - return self.getToken(CPP14Parser.Star, 0) + def Star(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Star) + else: + return self.getToken(CPP14Parser.Star, i) - def Div(self): - return self.getToken(CPP14Parser.Div, 0) + def Div(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Div) + else: + return self.getToken(CPP14Parser.Div, i) - def Mod(self): - return self.getToken(CPP14Parser.Mod, 0) + def Mod(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Mod) + else: + return self.getToken(CPP14Parser.Mod, i) def getRuleIndex(self): - return CPP14Parser.RULE_multiplicativeexpression + return CPP14Parser.RULE_multiplicativeExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMultiplicativeexpression" ): - listener.enterMultiplicativeexpression(self) + if hasattr( listener, "enterMultiplicativeExpression" ): + listener.enterMultiplicativeExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMultiplicativeexpression" ): - listener.exitMultiplicativeexpression(self) + if hasattr( listener, "exitMultiplicativeExpression" ): + listener.exitMultiplicativeExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMultiplicativeexpression" ): - return visitor.visitMultiplicativeexpression(self) + 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 = CPP14Parser.MultiplicativeexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 64 - self.enterRecursionRule(localctx, 64, self.RULE_multiplicativeexpression, _p) + + def multiplicativeExpression(self): + + localctx = CPP14Parser.MultiplicativeExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 62, self.RULE_multiplicativeExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 819 - self.pmexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 832 + self.state = 720 + self.pointerMemberExpression() + self.state = 725 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,56,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 = 830 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,55,self._ctx) - if la_ == 1: - localctx = CPP14Parser.MultiplicativeexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeexpression) - self.state = 821 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 822 - self.match(CPP14Parser.Star) - self.state = 823 - self.pmexpression(0) - pass - - elif la_ == 2: - localctx = CPP14Parser.MultiplicativeexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeexpression) - self.state = 824 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 825 - self.match(CPP14Parser.Div) - self.state = 826 - self.pmexpression(0) - pass - - elif la_ == 3: - localctx = CPP14Parser.MultiplicativeexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeexpression) - self.state = 827 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 828 - self.match(CPP14Parser.Mod) - self.state = 829 - self.pmexpression(0) - pass - - - self.state = 834 + _la = self._input.LA(1) + while ((((_la - 93)) & ~0x3f) == 0 and ((1 << (_la - 93)) & 7) != 0): + self.state = 721 + _la = self._input.LA(1) + if not(((((_la - 93)) & ~0x3f) == 0 and ((1 << (_la - 93)) & 7) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 722 + self.pointerMemberExpression() + self.state = 727 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,56,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class AdditiveexpressionContext(ParserRuleContext): + 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(CPP14Parser.MultiplicativeexpressionContext,0) - - - def additiveexpression(self): - return self.getTypedRuleContext(CPP14Parser.AdditiveexpressionContext,0) + def multiplicativeExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.MultiplicativeExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.MultiplicativeExpressionContext,i) - def Plus(self): - return self.getToken(CPP14Parser.Plus, 0) + def Plus(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Plus) + else: + return self.getToken(CPP14Parser.Plus, i) - def Minus(self): - return self.getToken(CPP14Parser.Minus, 0) + def Minus(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Minus) + else: + return self.getToken(CPP14Parser.Minus, i) def getRuleIndex(self): - return CPP14Parser.RULE_additiveexpression + return CPP14Parser.RULE_additiveExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAdditiveexpression" ): - listener.enterAdditiveexpression(self) + if hasattr( listener, "enterAdditiveExpression" ): + listener.enterAdditiveExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAdditiveexpression" ): - listener.exitAdditiveexpression(self) + if hasattr( listener, "exitAdditiveExpression" ): + listener.exitAdditiveExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAdditiveexpression" ): - return visitor.visitAdditiveexpression(self) + 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 = CPP14Parser.AdditiveexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 66 - self.enterRecursionRule(localctx, 66, self.RULE_additiveexpression, _p) + + def additiveExpression(self): + + localctx = CPP14Parser.AdditiveExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 64, self.RULE_additiveExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 836 - self.multiplicativeexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 846 + self.state = 728 + self.multiplicativeExpression() + self.state = 733 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,58,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 = 844 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,57,self._ctx) - if la_ == 1: - localctx = CPP14Parser.AdditiveexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveexpression) - self.state = 838 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 839 - self.match(CPP14Parser.Plus) - self.state = 840 - self.multiplicativeexpression(0) - pass - - elif la_ == 2: - localctx = CPP14Parser.AdditiveexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveexpression) - self.state = 841 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 842 - self.match(CPP14Parser.Minus) - self.state = 843 - self.multiplicativeexpression(0) - pass - - - self.state = 848 + _la = self._input.LA(1) + while _la==91 or _la==92: + self.state = 729 + _la = self._input.LA(1) + if not(_la==91 or _la==92): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 730 + self.multiplicativeExpression() + self.state = 735 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,58,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class ShiftexpressionContext(ParserRuleContext): + 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(CPP14Parser.AdditiveexpressionContext,0) - - - def shiftexpression(self): - return self.getTypedRuleContext(CPP14Parser.ShiftexpressionContext,0) + def additiveExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.AdditiveExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.AdditiveExpressionContext,i) - def shiftoperator(self): - return self.getTypedRuleContext(CPP14Parser.ShiftoperatorContext,0) + def shiftOperator(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.ShiftOperatorContext) + else: + return self.getTypedRuleContext(CPP14Parser.ShiftOperatorContext,i) def getRuleIndex(self): - return CPP14Parser.RULE_shiftexpression + return CPP14Parser.RULE_shiftExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterShiftexpression" ): - listener.enterShiftexpression(self) + if hasattr( listener, "enterShiftExpression" ): + listener.enterShiftExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitShiftexpression" ): - listener.exitShiftexpression(self) + if hasattr( listener, "exitShiftExpression" ): + listener.exitShiftExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitShiftexpression" ): - return visitor.visitShiftexpression(self) + 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 = CPP14Parser.ShiftexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 68 - self.enterRecursionRule(localctx, 68, self.RULE_shiftexpression, _p) + + def shiftExpression(self): + + localctx = CPP14Parser.ShiftExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 66, self.RULE_shiftExpression) try: self.enterOuterAlt(localctx, 1) - self.state = 850 - self.additiveexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 858 + self.state = 736 + self.additiveExpression() + self.state = 742 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,59,self._ctx) + _alt = self._interp.adaptivePredict(self._input,61,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 = CPP14Parser.ShiftexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftexpression) - self.state = 852 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 853 - self.shiftoperator() - self.state = 854 - self.additiveexpression(0) - self.state = 860 + self.state = 737 + self.shiftOperator() + self.state = 738 + self.additiveExpression() + self.state = 744 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,59,self._ctx) + _alt = self._interp.adaptivePredict(self._input,61,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class ShiftoperatorContext(ParserRuleContext): + class ShiftOperatorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def RightShift(self): - return self.getToken(CPP14Parser.RightShift, 0) + def Greater(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Greater) + else: + return self.getToken(CPP14Parser.Greater, i) - def LeftShift(self): - return self.getToken(CPP14Parser.LeftShift, 0) + def Less(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Less) + else: + return self.getToken(CPP14Parser.Less, i) def getRuleIndex(self): - return CPP14Parser.RULE_shiftoperator + return CPP14Parser.RULE_shiftOperator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterShiftoperator" ): - listener.enterShiftoperator(self) + if hasattr( listener, "enterShiftOperator" ): + listener.enterShiftOperator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitShiftoperator" ): - listener.exitShiftoperator(self) + if hasattr( listener, "exitShiftOperator" ): + listener.exitShiftOperator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitShiftoperator" ): - return visitor.visitShiftoperator(self) + if hasattr( visitor, "visitShiftOperator" ): + return visitor.visitShiftOperator(self) else: return visitor.visitChildren(self) - def shiftoperator(self): + def shiftOperator(self): - localctx = CPP14Parser.ShiftoperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 70, self.RULE_shiftoperator) - self._la = 0 # Token type + localctx = CPP14Parser.ShiftOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 68, self.RULE_shiftOperator) try: - self.enterOuterAlt(localctx, 1) - self.state = 861 - _la = self._input.LA(1) - if not(_la==CPP14Parser.LeftShift or _la==CPP14Parser.RightShift): - self._errHandler.recoverInline(self) + self.state = 749 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [103]: + self.enterOuterAlt(localctx, 1) + self.state = 745 + self.match(CPP14Parser.Greater) + self.state = 746 + self.match(CPP14Parser.Greater) + pass + elif token in [102]: + self.enterOuterAlt(localctx, 2) + self.state = 747 + self.match(CPP14Parser.Less) + self.state = 748 + self.match(CPP14Parser.Less) + pass else: - self._errHandler.reportMatch(self) - self.consume() + raise NoViableAltException(self) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5313,679 +4545,540 @@ def shiftoperator(self): return localctx - class RelationalexpressionContext(ParserRuleContext): + 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(CPP14Parser.ShiftexpressionContext,0) - - - def relationalexpression(self): - return self.getTypedRuleContext(CPP14Parser.RelationalexpressionContext,0) + def shiftExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.ShiftExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.ShiftExpressionContext,i) - def Less(self): - return self.getToken(CPP14Parser.Less, 0) + def Less(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Less) + else: + return self.getToken(CPP14Parser.Less, i) - def Greater(self): - return self.getToken(CPP14Parser.Greater, 0) + def Greater(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Greater) + else: + return self.getToken(CPP14Parser.Greater, i) - def LessEqual(self): - return self.getToken(CPP14Parser.LessEqual, 0) + def LessEqual(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.LessEqual) + else: + return self.getToken(CPP14Parser.LessEqual, i) - def GreaterEqual(self): - return self.getToken(CPP14Parser.GreaterEqual, 0) + def GreaterEqual(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.GreaterEqual) + else: + return self.getToken(CPP14Parser.GreaterEqual, i) def getRuleIndex(self): - return CPP14Parser.RULE_relationalexpression + return CPP14Parser.RULE_relationalExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRelationalexpression" ): - listener.enterRelationalexpression(self) + if hasattr( listener, "enterRelationalExpression" ): + listener.enterRelationalExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRelationalexpression" ): - listener.exitRelationalexpression(self) + if hasattr( listener, "exitRelationalExpression" ): + listener.exitRelationalExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRelationalexpression" ): - return visitor.visitRelationalexpression(self) + 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 = CPP14Parser.RelationalexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 72 - self.enterRecursionRule(localctx, 72, self.RULE_relationalexpression, _p) + + def relationalExpression(self): + + localctx = CPP14Parser.RelationalExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 70, self.RULE_relationalExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 864 - self.shiftexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 880 + self.state = 751 + self.shiftExpression() + self.state = 756 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,61,self._ctx) + _alt = self._interp.adaptivePredict(self._input,63,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 = 878 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,60,self._ctx) - if la_ == 1: - localctx = CPP14Parser.RelationalexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalexpression) - self.state = 866 - if not self.precpred(self._ctx, 4): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") - self.state = 867 - self.match(CPP14Parser.Less) - self.state = 868 - self.shiftexpression(0) - pass - - elif la_ == 2: - localctx = CPP14Parser.RelationalexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalexpression) - self.state = 869 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 870 - self.match(CPP14Parser.Greater) - self.state = 871 - self.shiftexpression(0) - pass - - elif la_ == 3: - localctx = CPP14Parser.RelationalexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalexpression) - self.state = 872 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 873 - self.match(CPP14Parser.LessEqual) - self.state = 874 - self.shiftexpression(0) - pass - - elif la_ == 4: - localctx = CPP14Parser.RelationalexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalexpression) - self.state = 875 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 876 - self.match(CPP14Parser.GreaterEqual) - self.state = 877 - self.shiftexpression(0) - pass - - - self.state = 882 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,61,self._ctx) + self.state = 752 + _la = self._input.LA(1) + if not(((((_la - 102)) & ~0x3f) == 0 and ((1 << (_la - 102)) & 49155) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 753 + self.shiftExpression() + self.state = 758 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,63,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class EqualityexpressionContext(ParserRuleContext): + 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(CPP14Parser.RelationalexpressionContext,0) - - - def equalityexpression(self): - return self.getTypedRuleContext(CPP14Parser.EqualityexpressionContext,0) + def relationalExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.RelationalExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.RelationalExpressionContext,i) - def Equal(self): - return self.getToken(CPP14Parser.Equal, 0) + def Equal(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Equal) + else: + return self.getToken(CPP14Parser.Equal, i) - def NotEqual(self): - return self.getToken(CPP14Parser.NotEqual, 0) + def NotEqual(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.NotEqual) + else: + return self.getToken(CPP14Parser.NotEqual, i) def getRuleIndex(self): - return CPP14Parser.RULE_equalityexpression + return CPP14Parser.RULE_equalityExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEqualityexpression" ): - listener.enterEqualityexpression(self) + if hasattr( listener, "enterEqualityExpression" ): + listener.enterEqualityExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEqualityexpression" ): - listener.exitEqualityexpression(self) + if hasattr( listener, "exitEqualityExpression" ): + listener.exitEqualityExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEqualityexpression" ): - return visitor.visitEqualityexpression(self) + 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 = CPP14Parser.EqualityexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 74 - self.enterRecursionRule(localctx, 74, self.RULE_equalityexpression, _p) + + def equalityExpression(self): + + localctx = CPP14Parser.EqualityExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 72, self.RULE_equalityExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 884 - self.relationalexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 894 + self.state = 759 + self.relationalExpression() + self.state = 764 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,63,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 = 892 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,62,self._ctx) - if la_ == 1: - localctx = CPP14Parser.EqualityexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityexpression) - self.state = 886 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 887 - self.match(CPP14Parser.Equal) - self.state = 888 - self.relationalexpression(0) - pass - - elif la_ == 2: - localctx = CPP14Parser.EqualityexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityexpression) - self.state = 889 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 890 - self.match(CPP14Parser.NotEqual) - self.state = 891 - self.relationalexpression(0) - pass - - - self.state = 896 + _la = self._input.LA(1) + while _la==114 or _la==115: + self.state = 760 + _la = self._input.LA(1) + if not(_la==114 or _la==115): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 761 + self.relationalExpression() + self.state = 766 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,63,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class AndexpressionContext(ParserRuleContext): + 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(CPP14Parser.EqualityexpressionContext,0) - - - def andexpression(self): - return self.getTypedRuleContext(CPP14Parser.AndexpressionContext,0) + def equalityExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.EqualityExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.EqualityExpressionContext,i) - def And(self): - return self.getToken(CPP14Parser.And, 0) + def And(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.And) + else: + return self.getToken(CPP14Parser.And, i) def getRuleIndex(self): - return CPP14Parser.RULE_andexpression + return CPP14Parser.RULE_andExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAndexpression" ): - listener.enterAndexpression(self) + if hasattr( listener, "enterAndExpression" ): + listener.enterAndExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAndexpression" ): - listener.exitAndexpression(self) + if hasattr( listener, "exitAndExpression" ): + listener.exitAndExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAndexpression" ): - return visitor.visitAndexpression(self) + 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 = CPP14Parser.AndexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 76 - self.enterRecursionRule(localctx, 76, self.RULE_andexpression, _p) + + def andExpression(self): + + localctx = CPP14Parser.AndExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 74, self.RULE_andExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 898 - self.equalityexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 905 + self.state = 767 + self.equalityExpression() + self.state = 772 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,64,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 = CPP14Parser.AndexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_andexpression) - self.state = 900 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 901 - self.match(CPP14Parser.And) - self.state = 902 - self.equalityexpression(0) - self.state = 907 + _la = self._input.LA(1) + while _la==97: + self.state = 768 + self.match(CPP14Parser.And) + self.state = 769 + self.equalityExpression() + self.state = 774 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,64,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class ExclusiveorexpressionContext(ParserRuleContext): + 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(CPP14Parser.AndexpressionContext,0) - - - def exclusiveorexpression(self): - return self.getTypedRuleContext(CPP14Parser.ExclusiveorexpressionContext,0) + def andExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.AndExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.AndExpressionContext,i) - def Caret(self): - return self.getToken(CPP14Parser.Caret, 0) + def Caret(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Caret) + else: + return self.getToken(CPP14Parser.Caret, i) def getRuleIndex(self): - return CPP14Parser.RULE_exclusiveorexpression + return CPP14Parser.RULE_exclusiveOrExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExclusiveorexpression" ): - listener.enterExclusiveorexpression(self) + if hasattr( listener, "enterExclusiveOrExpression" ): + listener.enterExclusiveOrExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExclusiveorexpression" ): - listener.exitExclusiveorexpression(self) + if hasattr( listener, "exitExclusiveOrExpression" ): + listener.exitExclusiveOrExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExclusiveorexpression" ): - return visitor.visitExclusiveorexpression(self) + 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 = CPP14Parser.ExclusiveorexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 78 - self.enterRecursionRule(localctx, 78, self.RULE_exclusiveorexpression, _p) + + def exclusiveOrExpression(self): + + localctx = CPP14Parser.ExclusiveOrExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 76, self.RULE_exclusiveOrExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 909 - self.andexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 916 + self.state = 775 + self.andExpression() + self.state = 780 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,65,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 = CPP14Parser.ExclusiveorexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_exclusiveorexpression) - self.state = 911 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 912 - self.match(CPP14Parser.Caret) - self.state = 913 - self.andexpression(0) - self.state = 918 + _la = self._input.LA(1) + while _la==96: + self.state = 776 + self.match(CPP14Parser.Caret) + self.state = 777 + self.andExpression() + self.state = 782 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,65,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class InclusiveorexpressionContext(ParserRuleContext): + 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(CPP14Parser.ExclusiveorexpressionContext,0) - - - def inclusiveorexpression(self): - return self.getTypedRuleContext(CPP14Parser.InclusiveorexpressionContext,0) + def exclusiveOrExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.ExclusiveOrExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.ExclusiveOrExpressionContext,i) - def Or(self): - return self.getToken(CPP14Parser.Or, 0) + def Or(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Or) + else: + return self.getToken(CPP14Parser.Or, i) def getRuleIndex(self): - return CPP14Parser.RULE_inclusiveorexpression + return CPP14Parser.RULE_inclusiveOrExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInclusiveorexpression" ): - listener.enterInclusiveorexpression(self) + if hasattr( listener, "enterInclusiveOrExpression" ): + listener.enterInclusiveOrExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInclusiveorexpression" ): - listener.exitInclusiveorexpression(self) + if hasattr( listener, "exitInclusiveOrExpression" ): + listener.exitInclusiveOrExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInclusiveorexpression" ): - return visitor.visitInclusiveorexpression(self) + 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 = CPP14Parser.InclusiveorexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 80 - self.enterRecursionRule(localctx, 80, self.RULE_inclusiveorexpression, _p) + + def inclusiveOrExpression(self): + + localctx = CPP14Parser.InclusiveOrExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 78, self.RULE_inclusiveOrExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 920 - self.exclusiveorexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 927 + self.state = 783 + self.exclusiveOrExpression() + self.state = 788 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,66,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 = CPP14Parser.InclusiveorexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_inclusiveorexpression) - self.state = 922 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 923 - self.match(CPP14Parser.Or) - self.state = 924 - self.exclusiveorexpression(0) - self.state = 929 + _la = self._input.LA(1) + while _la==98: + self.state = 784 + self.match(CPP14Parser.Or) + self.state = 785 + self.exclusiveOrExpression() + self.state = 790 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,66,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class LogicalandexpressionContext(ParserRuleContext): + class LogicalAndExpressionContext(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(CPP14Parser.InclusiveorexpressionContext,0) - + def inclusiveOrExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.InclusiveOrExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.InclusiveOrExpressionContext,i) - def logicalandexpression(self): - return self.getTypedRuleContext(CPP14Parser.LogicalandexpressionContext,0) + def AndAnd(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.AndAnd) + else: + return self.getToken(CPP14Parser.AndAnd, i) def getRuleIndex(self): - return CPP14Parser.RULE_logicalandexpression + return CPP14Parser.RULE_logicalAndExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLogicalandexpression" ): - listener.enterLogicalandexpression(self) + if hasattr( listener, "enterLogicalAndExpression" ): + listener.enterLogicalAndExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLogicalandexpression" ): - listener.exitLogicalandexpression(self) + if hasattr( listener, "exitLogicalAndExpression" ): + listener.exitLogicalAndExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLogicalandexpression" ): - return visitor.visitLogicalandexpression(self) + if hasattr( visitor, "visitLogicalAndExpression" ): + return visitor.visitLogicalAndExpression(self) else: return visitor.visitChildren(self) - def logicalandexpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.LogicalandexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 82 - self.enterRecursionRule(localctx, 82, self.RULE_logicalandexpression, _p) + + def logicalAndExpression(self): + + localctx = CPP14Parser.LogicalAndExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 80, self.RULE_logicalAndExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 931 - self.inclusiveorexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 941 + self.state = 791 + self.inclusiveOrExpression() + self.state = 796 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,68,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 = 939 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,67,self._ctx) - if la_ == 1: - localctx = CPP14Parser.LogicalandexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_logicalandexpression) - self.state = 933 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 934 - self.match(CPP14Parser.T__2) - self.state = 935 - self.inclusiveorexpression(0) - pass - - elif la_ == 2: - localctx = CPP14Parser.LogicalandexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_logicalandexpression) - self.state = 936 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 937 - self.match(CPP14Parser.T__3) - self.state = 938 - self.inclusiveorexpression(0) - pass - - - self.state = 943 + _la = self._input.LA(1) + while _la==118: + self.state = 792 + self.match(CPP14Parser.AndAnd) + self.state = 793 + self.inclusiveOrExpression() + self.state = 798 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,68,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class LogicalorexpressionContext(ParserRuleContext): + class LogicalOrExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def logicalandexpression(self): - return self.getTypedRuleContext(CPP14Parser.LogicalandexpressionContext,0) - + def logicalAndExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.LogicalAndExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.LogicalAndExpressionContext,i) - def logicalorexpression(self): - return self.getTypedRuleContext(CPP14Parser.LogicalorexpressionContext,0) + def OrOr(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.OrOr) + else: + return self.getToken(CPP14Parser.OrOr, i) def getRuleIndex(self): - return CPP14Parser.RULE_logicalorexpression + return CPP14Parser.RULE_logicalOrExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLogicalorexpression" ): - listener.enterLogicalorexpression(self) + if hasattr( listener, "enterLogicalOrExpression" ): + listener.enterLogicalOrExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLogicalorexpression" ): - listener.exitLogicalorexpression(self) + if hasattr( listener, "exitLogicalOrExpression" ): + listener.exitLogicalOrExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLogicalorexpression" ): - return visitor.visitLogicalorexpression(self) + if hasattr( visitor, "visitLogicalOrExpression" ): + return visitor.visitLogicalOrExpression(self) else: return visitor.visitChildren(self) - def logicalorexpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.LogicalorexpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 84 - self.enterRecursionRule(localctx, 84, self.RULE_logicalorexpression, _p) + + def logicalOrExpression(self): + + localctx = CPP14Parser.LogicalOrExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_logicalOrExpression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 945 - self.logicalandexpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 955 + self.state = 799 + self.logicalAndExpression() + self.state = 804 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,70,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 = 953 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,69,self._ctx) - if la_ == 1: - localctx = CPP14Parser.LogicalorexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_logicalorexpression) - self.state = 947 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 948 - self.match(CPP14Parser.T__4) - self.state = 949 - self.logicalandexpression(0) - pass - - elif la_ == 2: - localctx = CPP14Parser.LogicalorexpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_logicalorexpression) - self.state = 950 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 951 - self.match(CPP14Parser.T__5) - self.state = 952 - self.logicalandexpression(0) - pass - - - self.state = 957 + _la = self._input.LA(1) + while _la==119: + self.state = 800 + self.match(CPP14Parser.OrOr) + self.state = 801 + self.logicalAndExpression() + self.state = 806 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,70,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class ConditionalexpressionContext(ParserRuleContext): + class ConditionalExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def logicalorexpression(self): - return self.getTypedRuleContext(CPP14Parser.LogicalorexpressionContext,0) + def logicalOrExpression(self): + return self.getTypedRuleContext(CPP14Parser.LogicalOrExpressionContext,0) def Question(self): @@ -5998,57 +5091,51 @@ def expression(self): def Colon(self): return self.getToken(CPP14Parser.Colon, 0) - def assignmentexpression(self): - return self.getTypedRuleContext(CPP14Parser.AssignmentexpressionContext,0) + def assignmentExpression(self): + return self.getTypedRuleContext(CPP14Parser.AssignmentExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_conditionalexpression + return CPP14Parser.RULE_conditionalExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConditionalexpression" ): - listener.enterConditionalexpression(self) + if hasattr( listener, "enterConditionalExpression" ): + listener.enterConditionalExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConditionalexpression" ): - listener.exitConditionalexpression(self) + if hasattr( listener, "exitConditionalExpression" ): + listener.exitConditionalExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConditionalexpression" ): - return visitor.visitConditionalexpression(self) + if hasattr( visitor, "visitConditionalExpression" ): + return visitor.visitConditionalExpression(self) else: return visitor.visitChildren(self) - def conditionalexpression(self): + def conditionalExpression(self): - localctx = CPP14Parser.ConditionalexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 86, self.RULE_conditionalexpression) + localctx = CPP14Parser.ConditionalExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_conditionalExpression) + self._la = 0 # Token type try: - self.state = 965 + self.enterOuterAlt(localctx, 1) + self.state = 807 + self.logicalOrExpression() + self.state = 813 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,71,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 958 - self.logicalorexpression(0) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 959 - self.logicalorexpression(0) - self.state = 960 + _la = self._input.LA(1) + if _la==125: + self.state = 808 self.match(CPP14Parser.Question) - self.state = 961 - self.expression(0) - self.state = 962 + self.state = 809 + self.expression() + self.state = 810 self.match(CPP14Parser.Colon) - self.state = 963 - self.assignmentexpression() - pass + self.state = 811 + self.assignmentExpression() except RecognitionException as re: @@ -6060,80 +5147,81 @@ def conditionalexpression(self): return localctx - class AssignmentexpressionContext(ParserRuleContext): + 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(CPP14Parser.ConditionalexpressionContext,0) + def conditionalExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConditionalExpressionContext,0) - def logicalorexpression(self): - return self.getTypedRuleContext(CPP14Parser.LogicalorexpressionContext,0) + def logicalOrExpression(self): + return self.getTypedRuleContext(CPP14Parser.LogicalOrExpressionContext,0) - def assignmentoperator(self): - return self.getTypedRuleContext(CPP14Parser.AssignmentoperatorContext,0) + def assignmentOperator(self): + return self.getTypedRuleContext(CPP14Parser.AssignmentOperatorContext,0) - def initializerclause(self): - return self.getTypedRuleContext(CPP14Parser.InitializerclauseContext,0) + def initializerClause(self): + return self.getTypedRuleContext(CPP14Parser.InitializerClauseContext,0) - def throwexpression(self): - return self.getTypedRuleContext(CPP14Parser.ThrowexpressionContext,0) + def throwExpression(self): + return self.getTypedRuleContext(CPP14Parser.ThrowExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_assignmentexpression + return CPP14Parser.RULE_assignmentExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssignmentexpression" ): - listener.enterAssignmentexpression(self) + if hasattr( listener, "enterAssignmentExpression" ): + listener.enterAssignmentExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssignmentexpression" ): - listener.exitAssignmentexpression(self) + if hasattr( listener, "exitAssignmentExpression" ): + listener.exitAssignmentExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssignmentexpression" ): - return visitor.visitAssignmentexpression(self) + if hasattr( visitor, "visitAssignmentExpression" ): + return visitor.visitAssignmentExpression(self) else: return visitor.visitChildren(self) - def assignmentexpression(self): + def assignmentExpression(self): - localctx = CPP14Parser.AssignmentexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 88, self.RULE_assignmentexpression) + localctx = CPP14Parser.AssignmentExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 86, self.RULE_assignmentExpression) try: - self.state = 973 + self.state = 821 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,72,self._ctx) + la_ = self._interp.adaptivePredict(self._input,71,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 967 - self.conditionalexpression() + self.state = 815 + self.conditionalExpression() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 968 - self.logicalorexpression(0) - self.state = 969 - self.assignmentoperator() - self.state = 970 - self.initializerclause() + self.state = 816 + self.logicalOrExpression() + self.state = 817 + self.assignmentOperator() + self.state = 818 + self.initializerClause() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 972 - self.throwexpression() + self.state = 820 + self.throwExpression() pass @@ -6146,7 +5234,8 @@ def assignmentexpression(self): return localctx - class AssignmentoperatorContext(ParserRuleContext): + class AssignmentOperatorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6186,35 +5275,35 @@ def OrAssign(self): return self.getToken(CPP14Parser.OrAssign, 0) def getRuleIndex(self): - return CPP14Parser.RULE_assignmentoperator + return CPP14Parser.RULE_assignmentOperator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssignmentoperator" ): - listener.enterAssignmentoperator(self) + if hasattr( listener, "enterAssignmentOperator" ): + listener.enterAssignmentOperator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssignmentoperator" ): - listener.exitAssignmentoperator(self) + if hasattr( listener, "exitAssignmentOperator" ): + listener.exitAssignmentOperator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssignmentoperator" ): - return visitor.visitAssignmentoperator(self) + if hasattr( visitor, "visitAssignmentOperator" ): + return visitor.visitAssignmentOperator(self) else: return visitor.visitChildren(self) - def assignmentoperator(self): + def assignmentOperator(self): - localctx = CPP14Parser.AssignmentoperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 90, self.RULE_assignmentoperator) + localctx = CPP14Parser.AssignmentOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 88, self.RULE_assignmentOperator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 975 + self.state = 823 _la = self._input.LA(1) - if not(((((_la - 100)) & ~0x3f) == 0 and ((1 << (_la - 100)) & ((1 << (CPP14Parser.Assign - 100)) | (1 << (CPP14Parser.PlusAssign - 100)) | (1 << (CPP14Parser.MinusAssign - 100)) | (1 << (CPP14Parser.StarAssign - 100)) | (1 << (CPP14Parser.DivAssign - 100)) | (1 << (CPP14Parser.ModAssign - 100)) | (1 << (CPP14Parser.XorAssign - 100)) | (1 << (CPP14Parser.AndAssign - 100)) | (1 << (CPP14Parser.OrAssign - 100)) | (1 << (CPP14Parser.LeftShiftAssign - 100)) | (1 << (CPP14Parser.RightShiftAssign - 100)))) != 0)): + if not(((((_la - 101)) & ~0x3f) == 0 and ((1 << (_la - 101)) & 8185) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -6229,21 +5318,24 @@ def assignmentoperator(self): class ExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def assignmentexpression(self): - return self.getTypedRuleContext(CPP14Parser.AssignmentexpressionContext,0) - - - def expression(self): - return self.getTypedRuleContext(CPP14Parser.ExpressionContext,0) + def assignmentExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.AssignmentExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.AssignmentExpressionContext,i) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): return CPP14Parser.RULE_expression @@ -6264,87 +5356,76 @@ def accept(self, visitor:ParseTreeVisitor): - def expression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.ExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 92 - self.enterRecursionRule(localctx, 92, self.RULE_expression, _p) + + def expression(self): + + localctx = CPP14Parser.ExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 90, self.RULE_expression) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 978 - self.assignmentexpression() - self._ctx.stop = self._input.LT(-1) - self.state = 985 + self.state = 825 + self.assignmentExpression() + self.state = 830 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: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - localctx = CPP14Parser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 980 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 981 - self.match(CPP14Parser.Comma) - self.state = 982 - self.assignmentexpression() - self.state = 987 + _la = self._input.LA(1) + while _la==122: + self.state = 826 + self.match(CPP14Parser.Comma) + self.state = 827 + self.assignmentExpression() + self.state = 832 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,73,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class ConstantexpressionContext(ParserRuleContext): + class ConstantExpressionContext(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(CPP14Parser.ConditionalexpressionContext,0) + def conditionalExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConditionalExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_constantexpression + return CPP14Parser.RULE_constantExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstantexpression" ): - listener.enterConstantexpression(self) + if hasattr( listener, "enterConstantExpression" ): + listener.enterConstantExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstantexpression" ): - listener.exitConstantexpression(self) + if hasattr( listener, "exitConstantExpression" ): + listener.exitConstantExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstantexpression" ): - return visitor.visitConstantexpression(self) + if hasattr( visitor, "visitConstantExpression" ): + return visitor.visitConstantExpression(self) else: return visitor.visitChildren(self) - def constantexpression(self): + def constantExpression(self): - localctx = CPP14Parser.ConstantexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 94, self.RULE_constantexpression) + localctx = CPP14Parser.ConstantExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 92, self.RULE_constantExpression) try: self.enterOuterAlt(localctx, 1) - self.state = 988 - self.conditionalexpression() + self.state = 833 + self.conditionalExpression() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6355,45 +5436,46 @@ def constantexpression(self): class StatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def labeledstatement(self): - return self.getTypedRuleContext(CPP14Parser.LabeledstatementContext,0) + def labeledStatement(self): + return self.getTypedRuleContext(CPP14Parser.LabeledStatementContext,0) - def expressionstatement(self): - return self.getTypedRuleContext(CPP14Parser.ExpressionstatementContext,0) + def declarationStatement(self): + return self.getTypedRuleContext(CPP14Parser.DeclarationStatementContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def expressionStatement(self): + return self.getTypedRuleContext(CPP14Parser.ExpressionStatementContext,0) - def compoundstatement(self): - return self.getTypedRuleContext(CPP14Parser.CompoundstatementContext,0) + def compoundStatement(self): + return self.getTypedRuleContext(CPP14Parser.CompoundStatementContext,0) - def selectionstatement(self): - return self.getTypedRuleContext(CPP14Parser.SelectionstatementContext,0) + def selectionStatement(self): + return self.getTypedRuleContext(CPP14Parser.SelectionStatementContext,0) - def iterationstatement(self): - return self.getTypedRuleContext(CPP14Parser.IterationstatementContext,0) + def iterationStatement(self): + return self.getTypedRuleContext(CPP14Parser.IterationStatementContext,0) - def jumpstatement(self): - return self.getTypedRuleContext(CPP14Parser.JumpstatementContext,0) + def jumpStatement(self): + return self.getTypedRuleContext(CPP14Parser.JumpStatementContext,0) - def declarationstatement(self): - return self.getTypedRuleContext(CPP14Parser.DeclarationstatementContext,0) + def tryBlock(self): + return self.getTypedRuleContext(CPP14Parser.TryBlockContext,0) - def tryblock(self): - return self.getTypedRuleContext(CPP14Parser.TryblockContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def getRuleIndex(self): @@ -6419,106 +5501,63 @@ def accept(self, visitor:ParseTreeVisitor): def statement(self): localctx = CPP14Parser.StatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 96, self.RULE_statement) - self._la = 0 # Token type + self.enterRule(localctx, 94, self.RULE_statement) try: - self.state = 1016 + self.state = 848 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,80,self._ctx) + la_ = self._interp.adaptivePredict(self._input,75,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 990 - self.labeledstatement() + self.state = 835 + self.labeledStatement() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 992 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,74,self._ctx) - if la_ == 1: - self.state = 991 - self.attributespecifierseq(0) - - - self.state = 994 - self.expressionstatement() + self.state = 836 + self.declarationStatement() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 996 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 995 - self.attributespecifierseq(0) - - - self.state = 998 - self.compoundstatement() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1000 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 999 - self.attributespecifierseq(0) - - - self.state = 1002 - self.selectionstatement() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1004 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1003 - self.attributespecifierseq(0) - - - self.state = 1006 - self.iterationstatement() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1008 + self.state = 838 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1007 - self.attributespecifierseq(0) - - - self.state = 1010 - self.jumpstatement() - pass + la_ = self._interp.adaptivePredict(self._input,73,self._ctx) + if la_ == 1: + self.state = 837 + self.attributeSpecifierSeq() - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 1011 - self.declarationstatement() - pass - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 1013 + self.state = 846 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1012 - self.attributespecifierseq(0) - + token = self._input.LA(1) + if token in [1, 2, 3, 4, 5, 6, 7, 11, 13, 14, 18, 19, 20, 24, 26, 28, 30, 31, 39, 45, 46, 49, 50, 52, 58, 60, 61, 62, 65, 69, 71, 75, 76, 78, 81, 83, 85, 87, 91, 92, 93, 97, 98, 99, 100, 120, 121, 127, 128, 132]: + self.state = 840 + self.expressionStatement() + pass + elif token in [89]: + self.state = 841 + self.compoundStatement() + pass + elif token in [43, 67]: + self.state = 842 + self.selectionStatement() + pass + elif token in [29, 40, 84]: + self.state = 843 + self.iterationStatement() + pass + elif token in [15, 25, 42, 59]: + self.state = 844 + self.jumpStatement() + pass + elif token in [73]: + self.state = 845 + self.tryBlock() + pass + else: + raise NoViableAltException(self) - self.state = 1015 - self.tryblock() pass @@ -6531,15 +5570,13 @@ def statement(self): return localctx - class LabeledstatementContext(ParserRuleContext): + 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(CPP14Parser.Identifier, 0) - def Colon(self): return self.getToken(CPP14Parser.Colon, 0) @@ -6547,106 +5584,82 @@ def statement(self): return self.getTypedRuleContext(CPP14Parser.StatementContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) - + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) def Case(self): return self.getToken(CPP14Parser.Case, 0) - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) + def constantExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,0) def Default(self): return self.getToken(CPP14Parser.Default, 0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) + + def getRuleIndex(self): - return CPP14Parser.RULE_labeledstatement + return CPP14Parser.RULE_labeledStatement def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLabeledstatement" ): - listener.enterLabeledstatement(self) + if hasattr( listener, "enterLabeledStatement" ): + listener.enterLabeledStatement(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLabeledstatement" ): - listener.exitLabeledstatement(self) + if hasattr( listener, "exitLabeledStatement" ): + listener.exitLabeledStatement(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLabeledstatement" ): - return visitor.visitLabeledstatement(self) + if hasattr( visitor, "visitLabeledStatement" ): + return visitor.visitLabeledStatement(self) else: return visitor.visitChildren(self) - def labeledstatement(self): + def labeledStatement(self): - localctx = CPP14Parser.LabeledstatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 98, self.RULE_labeledstatement) + localctx = CPP14Parser.LabeledStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 96, self.RULE_labeledStatement) self._la = 0 # Token type try: - self.state = 1038 + self.enterOuterAlt(localctx, 1) + self.state = 851 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,84,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1019 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1018 - self.attributespecifierseq(0) + _la = self._input.LA(1) + if _la==10 or _la==87: + self.state = 850 + self.attributeSpecifierSeq() - self.state = 1021 + self.state = 857 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [132]: + self.state = 853 self.match(CPP14Parser.Identifier) - self.state = 1022 - self.match(CPP14Parser.Colon) - self.state = 1023 - self.statement() pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1025 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1024 - self.attributespecifierseq(0) - - - self.state = 1027 + elif token in [16]: + self.state = 854 self.match(CPP14Parser.Case) - self.state = 1028 - self.constantexpression() - self.state = 1029 - self.match(CPP14Parser.Colon) - self.state = 1030 - self.statement() + self.state = 855 + self.constantExpression() pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1033 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1032 - self.attributespecifierseq(0) - - - self.state = 1035 + elif token in [27]: + self.state = 856 self.match(CPP14Parser.Default) - self.state = 1036 - self.match(CPP14Parser.Colon) - self.state = 1037 - self.statement() pass + else: + raise NoViableAltException(self) - + self.state = 859 + self.match(CPP14Parser.Colon) + self.state = 860 + self.statement() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6656,7 +5669,8 @@ def labeledstatement(self): return localctx - class ExpressionstatementContext(ParserRuleContext): + class ExpressionStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6670,41 +5684,41 @@ def expression(self): def getRuleIndex(self): - return CPP14Parser.RULE_expressionstatement + return CPP14Parser.RULE_expressionStatement def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpressionstatement" ): - listener.enterExpressionstatement(self) + if hasattr( listener, "enterExpressionStatement" ): + listener.enterExpressionStatement(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpressionstatement" ): - listener.exitExpressionstatement(self) + if hasattr( listener, "exitExpressionStatement" ): + listener.exitExpressionStatement(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpressionstatement" ): - return visitor.visitExpressionstatement(self) + if hasattr( visitor, "visitExpressionStatement" ): + return visitor.visitExpressionStatement(self) else: return visitor.visitChildren(self) - def expressionstatement(self): + def expressionStatement(self): - localctx = CPP14Parser.ExpressionstatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 100, self.RULE_expressionstatement) + localctx = CPP14Parser.ExpressionStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 98, self.RULE_expressionStatement) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1041 + self.state = 863 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Throw - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 1040 - self.expression(0) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474384133201) != 0) or _la==132: + self.state = 862 + self.expression() - self.state = 1043 + self.state = 865 self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re @@ -6715,7 +5729,8 @@ def expressionstatement(self): return localctx - class CompoundstatementContext(ParserRuleContext): + class CompoundStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6727,48 +5742,48 @@ def LeftBrace(self): def RightBrace(self): return self.getToken(CPP14Parser.RightBrace, 0) - def statementseq(self): - return self.getTypedRuleContext(CPP14Parser.StatementseqContext,0) + def statementSeq(self): + return self.getTypedRuleContext(CPP14Parser.StatementSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_compoundstatement + return CPP14Parser.RULE_compoundStatement def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCompoundstatement" ): - listener.enterCompoundstatement(self) + if hasattr( listener, "enterCompoundStatement" ): + listener.enterCompoundStatement(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCompoundstatement" ): - listener.exitCompoundstatement(self) + if hasattr( listener, "exitCompoundStatement" ): + listener.exitCompoundStatement(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCompoundstatement" ): - return visitor.visitCompoundstatement(self) + if hasattr( visitor, "visitCompoundStatement" ): + return visitor.visitCompoundStatement(self) else: return visitor.visitChildren(self) - def compoundstatement(self): + def compoundStatement(self): - localctx = CPP14Parser.CompoundstatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 102, self.RULE_compoundstatement) + localctx = CPP14Parser.CompoundStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 100, self.RULE_compoundStatement) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1045 + self.state = 867 self.match(CPP14Parser.LeftBrace) - self.state = 1047 + self.state = 869 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__2) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignas) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Asm) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Break) | (1 << CPP14Parser.Case) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Constexpr) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Continue) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Default) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Do) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Explicit) | (1 << CPP14Parser.Extern) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.For) | (1 << CPP14Parser.Friend) | (1 << CPP14Parser.Goto) | (1 << CPP14Parser.If) | (1 << CPP14Parser.Inline) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.Mutable) | (1 << CPP14Parser.Namespace) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Register) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Return) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof) | (1 << CPP14Parser.Static))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CPP14Parser.Static_assert - 64)) | (1 << (CPP14Parser.Static_cast - 64)) | (1 << (CPP14Parser.Struct - 64)) | (1 << (CPP14Parser.Switch - 64)) | (1 << (CPP14Parser.This - 64)) | (1 << (CPP14Parser.Thread_local - 64)) | (1 << (CPP14Parser.Throw - 64)) | (1 << (CPP14Parser.Try - 64)) | (1 << (CPP14Parser.Typedef - 64)) | (1 << (CPP14Parser.Typeid_ - 64)) | (1 << (CPP14Parser.Typename_ - 64)) | (1 << (CPP14Parser.Union - 64)) | (1 << (CPP14Parser.Unsigned - 64)) | (1 << (CPP14Parser.Using - 64)) | (1 << (CPP14Parser.Virtual - 64)) | (1 << (CPP14Parser.Void - 64)) | (1 << (CPP14Parser.Volatile - 64)) | (1 << (CPP14Parser.Wchar - 64)) | (1 << (CPP14Parser.While - 64)) | (1 << (CPP14Parser.LeftParen - 64)) | (1 << (CPP14Parser.LeftBracket - 64)) | (1 << (CPP14Parser.LeftBrace - 64)) | (1 << (CPP14Parser.Plus - 64)) | (1 << (CPP14Parser.Minus - 64)) | (1 << (CPP14Parser.Star - 64)) | (1 << (CPP14Parser.And - 64)) | (1 << (CPP14Parser.Or - 64)) | (1 << (CPP14Parser.Tilde - 64)) | (1 << (CPP14Parser.PlusPlus - 64)) | (1 << (CPP14Parser.MinusMinus - 64)))) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & ((1 << (CPP14Parser.Doublecolon - 128)) | (1 << (CPP14Parser.Semi - 128)) | (1 << (CPP14Parser.Ellipsis - 128)) | (1 << (CPP14Parser.Identifier - 128)) | (1 << (CPP14Parser.Integerliteral - 128)) | (1 << (CPP14Parser.Characterliteral - 128)) | (1 << (CPP14Parser.Floatingliteral - 128)) | (1 << (CPP14Parser.Stringliteral - 128)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 128)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 128)) | (1 << (CPP14Parser.Userdefinedstringliteral - 128)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 128)))) != 0): - self.state = 1046 - self.statementseq(0) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -137360239606498050) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -8989184726396829969) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 25) != 0): + self.state = 868 + self.statementSeq() - self.state = 1049 + self.state = 871 self.match(CPP14Parser.RightBrace) except RecognitionException as re: localctx.exception = re @@ -6779,81 +5794,70 @@ def compoundstatement(self): return localctx - class StatementseqContext(ParserRuleContext): + class StatementSeqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def statement(self): - return self.getTypedRuleContext(CPP14Parser.StatementContext,0) - - - def statementseq(self): - return self.getTypedRuleContext(CPP14Parser.StatementseqContext,0) + def statement(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.StatementContext) + else: + return self.getTypedRuleContext(CPP14Parser.StatementContext,i) def getRuleIndex(self): - return CPP14Parser.RULE_statementseq + return CPP14Parser.RULE_statementSeq def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStatementseq" ): - listener.enterStatementseq(self) + if hasattr( listener, "enterStatementSeq" ): + listener.enterStatementSeq(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStatementseq" ): - listener.exitStatementseq(self) + if hasattr( listener, "exitStatementSeq" ): + listener.exitStatementSeq(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStatementseq" ): - return visitor.visitStatementseq(self) + if hasattr( visitor, "visitStatementSeq" ): + return visitor.visitStatementSeq(self) else: return visitor.visitChildren(self) - def statementseq(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.StatementseqContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 104 - self.enterRecursionRule(localctx, 104, self.RULE_statementseq, _p) + + def statementSeq(self): + + localctx = CPP14Parser.StatementSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 102, self.RULE_statementSeq) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1052 - self.statement() - self._ctx.stop = self._input.LT(-1) - self.state = 1058 + self.state = 874 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,87,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 = CPP14Parser.StatementseqContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_statementseq) - self.state = 1054 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 1055 - self.statement() - self.state = 1060 + _la = self._input.LA(1) + while True: + self.state = 873 + self.statement() + self.state = 876 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,87,self._ctx) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & -137360239606498050) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -8989184726396829969) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 25) != 0)): + break except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class SelectionstatementContext(ParserRuleContext): + class SelectionStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6886,79 +5890,71 @@ def Switch(self): return self.getToken(CPP14Parser.Switch, 0) def getRuleIndex(self): - return CPP14Parser.RULE_selectionstatement + return CPP14Parser.RULE_selectionStatement def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSelectionstatement" ): - listener.enterSelectionstatement(self) + if hasattr( listener, "enterSelectionStatement" ): + listener.enterSelectionStatement(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSelectionstatement" ): - listener.exitSelectionstatement(self) + if hasattr( listener, "exitSelectionStatement" ): + listener.exitSelectionStatement(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelectionstatement" ): - return visitor.visitSelectionstatement(self) + if hasattr( visitor, "visitSelectionStatement" ): + return visitor.visitSelectionStatement(self) else: return visitor.visitChildren(self) - def selectionstatement(self): + def selectionStatement(self): - localctx = CPP14Parser.SelectionstatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 106, self.RULE_selectionstatement) + localctx = CPP14Parser.SelectionStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 104, self.RULE_selectionStatement) try: - self.state = 1081 + self.state = 893 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,88,self._ctx) - if la_ == 1: + token = self._input.LA(1) + if token in [43]: self.enterOuterAlt(localctx, 1) - self.state = 1061 + self.state = 878 self.match(CPP14Parser.If) - self.state = 1062 + self.state = 879 self.match(CPP14Parser.LeftParen) - self.state = 1063 + self.state = 880 self.condition() - self.state = 1064 + self.state = 881 self.match(CPP14Parser.RightParen) - self.state = 1065 + self.state = 882 self.statement() - pass + self.state = 885 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,81,self._ctx) + if la_ == 1: + self.state = 883 + self.match(CPP14Parser.Else) + self.state = 884 + self.statement() - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1067 - self.match(CPP14Parser.If) - self.state = 1068 - self.match(CPP14Parser.LeftParen) - self.state = 1069 - self.condition() - self.state = 1070 - self.match(CPP14Parser.RightParen) - self.state = 1071 - self.statement() - self.state = 1072 - self.match(CPP14Parser.Else) - self.state = 1073 - self.statement() - pass - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1075 + pass + elif token in [67]: + self.enterOuterAlt(localctx, 2) + self.state = 887 self.match(CPP14Parser.Switch) - self.state = 1076 + self.state = 888 self.match(CPP14Parser.LeftParen) - self.state = 1077 + self.state = 889 self.condition() - self.state = 1078 + self.state = 890 self.match(CPP14Parser.RightParen) - self.state = 1079 + self.state = 891 self.statement() pass - + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re @@ -6970,6 +5966,7 @@ def selectionstatement(self): class ConditionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6979,8 +5976,8 @@ def expression(self): return self.getTypedRuleContext(CPP14Parser.ExpressionContext,0) - def declspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclspecifierseqContext,0) + def declSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.DeclSpecifierSeqContext,0) def declarator(self): @@ -6990,16 +5987,16 @@ def declarator(self): def Assign(self): return self.getToken(CPP14Parser.Assign, 0) - def initializerclause(self): - return self.getTypedRuleContext(CPP14Parser.InitializerclauseContext,0) + def initializerClause(self): + return self.getTypedRuleContext(CPP14Parser.InitializerClauseContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def bracedInitList(self): + return self.getTypedRuleContext(CPP14Parser.BracedInitListContext,0) - def bracedinitlist(self): - return self.getTypedRuleContext(CPP14Parser.BracedinitlistContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def getRuleIndex(self): @@ -7025,54 +6022,48 @@ def accept(self, visitor:ParseTreeVisitor): def condition(self): localctx = CPP14Parser.ConditionContext(self, self._ctx, self.state) - self.enterRule(localctx, 108, self.RULE_condition) + self.enterRule(localctx, 106, self.RULE_condition) self._la = 0 # Token type try: - self.state = 1099 + self.state = 906 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,91,self._ctx) + la_ = self._interp.adaptivePredict(self._input,85,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1083 - self.expression(0) + self.state = 895 + self.expression() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1085 + self.state = 897 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1084 - self.attributespecifierseq(0) + if _la==10 or _la==87: + self.state = 896 + self.attributeSpecifierSeq() - self.state = 1087 - self.declspecifierseq() - self.state = 1088 + self.state = 899 + self.declSpecifierSeq() + self.state = 900 self.declarator() - self.state = 1089 - self.match(CPP14Parser.Assign) - self.state = 1090 - self.initializerclause() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1093 + self.state = 904 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1092 - self.attributespecifierseq(0) - + token = self._input.LA(1) + if token in [101]: + self.state = 901 + self.match(CPP14Parser.Assign) + self.state = 902 + self.initializerClause() + pass + elif token in [89]: + self.state = 903 + self.bracedInitList() + pass + else: + raise NoViableAltException(self) - self.state = 1095 - self.declspecifierseq() - self.state = 1096 - self.declarator() - self.state = 1097 - self.bracedinitlist() pass @@ -7085,7 +6076,8 @@ def condition(self): return localctx - class IterationstatementContext(ParserRuleContext): + class IterationStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7121,132 +6113,129 @@ def Semi(self): def For(self): return self.getToken(CPP14Parser.For, 0) - def forinitstatement(self): - return self.getTypedRuleContext(CPP14Parser.ForinitstatementContext,0) + def forInitStatement(self): + return self.getTypedRuleContext(CPP14Parser.ForInitStatementContext,0) - def forrangedeclaration(self): - return self.getTypedRuleContext(CPP14Parser.ForrangedeclarationContext,0) + def forRangeDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.ForRangeDeclarationContext,0) def Colon(self): return self.getToken(CPP14Parser.Colon, 0) - def forrangeinitializer(self): - return self.getTypedRuleContext(CPP14Parser.ForrangeinitializerContext,0) + def forRangeInitializer(self): + return self.getTypedRuleContext(CPP14Parser.ForRangeInitializerContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_iterationstatement + return CPP14Parser.RULE_iterationStatement def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIterationstatement" ): - listener.enterIterationstatement(self) + if hasattr( listener, "enterIterationStatement" ): + listener.enterIterationStatement(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIterationstatement" ): - listener.exitIterationstatement(self) + if hasattr( listener, "exitIterationStatement" ): + listener.exitIterationStatement(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIterationstatement" ): - return visitor.visitIterationstatement(self) + if hasattr( visitor, "visitIterationStatement" ): + return visitor.visitIterationStatement(self) else: return visitor.visitChildren(self) - def iterationstatement(self): + def iterationStatement(self): - localctx = CPP14Parser.IterationstatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 110, self.RULE_iterationstatement) + localctx = CPP14Parser.IterationStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 108, self.RULE_iterationStatement) self._la = 0 # Token type try: - self.state = 1136 + self.state = 941 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,94,self._ctx) - if la_ == 1: + token = self._input.LA(1) + if token in [84]: self.enterOuterAlt(localctx, 1) - self.state = 1101 + self.state = 908 self.match(CPP14Parser.While) - self.state = 1102 + self.state = 909 self.match(CPP14Parser.LeftParen) - self.state = 1103 + self.state = 910 self.condition() - self.state = 1104 + self.state = 911 self.match(CPP14Parser.RightParen) - self.state = 1105 + self.state = 912 self.statement() pass - - elif la_ == 2: + elif token in [29]: self.enterOuterAlt(localctx, 2) - self.state = 1107 + self.state = 914 self.match(CPP14Parser.Do) - self.state = 1108 + self.state = 915 self.statement() - self.state = 1109 + self.state = 916 self.match(CPP14Parser.While) - self.state = 1110 + self.state = 917 self.match(CPP14Parser.LeftParen) - self.state = 1111 - self.expression(0) - self.state = 1112 + self.state = 918 + self.expression() + self.state = 919 self.match(CPP14Parser.RightParen) - self.state = 1113 + self.state = 920 self.match(CPP14Parser.Semi) pass - - elif la_ == 3: + elif token in [40]: self.enterOuterAlt(localctx, 3) - self.state = 1115 + self.state = 922 self.match(CPP14Parser.For) - self.state = 1116 + self.state = 923 self.match(CPP14Parser.LeftParen) - self.state = 1117 - self.forinitstatement() - self.state = 1119 + self.state = 936 self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignas) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Constexpr) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Explicit) | (1 << CPP14Parser.Extern) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Friend) | (1 << CPP14Parser.Inline) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.Mutable) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Register) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof) | (1 << CPP14Parser.Static))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.Struct - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Thread_local - 65)) | (1 << (CPP14Parser.Throw - 65)) | (1 << (CPP14Parser.Typedef - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Union - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Virtual - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Volatile - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 1118 - self.condition() + la_ = self._interp.adaptivePredict(self._input,88,self._ctx) + if la_ == 1: + self.state = 924 + self.forInitStatement() + self.state = 926 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -714116761242538754) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474384301683) != 0) or _la==132: + self.state = 925 + self.condition() - self.state = 1121 - self.match(CPP14Parser.Semi) - self.state = 1123 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Throw - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 1122 - self.expression(0) + self.state = 928 + self.match(CPP14Parser.Semi) + self.state = 930 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474384133201) != 0) or _la==132: + self.state = 929 + self.expression() - self.state = 1125 - self.match(CPP14Parser.RightParen) - self.state = 1126 - self.statement() - pass + pass - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1128 - self.match(CPP14Parser.For) - self.state = 1129 - self.match(CPP14Parser.LeftParen) - self.state = 1130 - self.forrangedeclaration() - self.state = 1131 - self.match(CPP14Parser.Colon) - self.state = 1132 - self.forrangeinitializer() - self.state = 1133 + elif la_ == 2: + self.state = 932 + self.forRangeDeclaration() + self.state = 933 + self.match(CPP14Parser.Colon) + self.state = 934 + self.forRangeInitializer() + pass + + + self.state = 938 self.match(CPP14Parser.RightParen) - self.state = 1134 + self.state = 939 self.statement() pass - + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re @@ -7257,58 +6246,59 @@ def iterationstatement(self): return localctx - class ForinitstatementContext(ParserRuleContext): + class ForInitStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def expressionstatement(self): - return self.getTypedRuleContext(CPP14Parser.ExpressionstatementContext,0) + def expressionStatement(self): + return self.getTypedRuleContext(CPP14Parser.ExpressionStatementContext,0) - def simpledeclaration(self): - return self.getTypedRuleContext(CPP14Parser.SimpledeclarationContext,0) + def simpleDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.SimpleDeclarationContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_forinitstatement + return CPP14Parser.RULE_forInitStatement def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForinitstatement" ): - listener.enterForinitstatement(self) + if hasattr( listener, "enterForInitStatement" ): + listener.enterForInitStatement(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForinitstatement" ): - listener.exitForinitstatement(self) + if hasattr( listener, "exitForInitStatement" ): + listener.exitForInitStatement(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitForinitstatement" ): - return visitor.visitForinitstatement(self) + if hasattr( visitor, "visitForInitStatement" ): + return visitor.visitForInitStatement(self) else: return visitor.visitChildren(self) - def forinitstatement(self): + def forInitStatement(self): - localctx = CPP14Parser.ForinitstatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 112, self.RULE_forinitstatement) + localctx = CPP14Parser.ForInitStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 110, self.RULE_forInitStatement) try: - self.state = 1140 + self.state = 945 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,95,self._ctx) + la_ = self._interp.adaptivePredict(self._input,90,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1138 - self.expressionstatement() + self.state = 943 + self.expressionStatement() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1139 - self.simpledeclaration() + self.state = 944 + self.simpleDeclaration() pass @@ -7321,62 +6311,63 @@ def forinitstatement(self): return localctx - class ForrangedeclarationContext(ParserRuleContext): + class ForRangeDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def declspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclspecifierseqContext,0) + def declSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.DeclSpecifierSeqContext,0) def declarator(self): return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_forrangedeclaration + return CPP14Parser.RULE_forRangeDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForrangedeclaration" ): - listener.enterForrangedeclaration(self) + if hasattr( listener, "enterForRangeDeclaration" ): + listener.enterForRangeDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForrangedeclaration" ): - listener.exitForrangedeclaration(self) + if hasattr( listener, "exitForRangeDeclaration" ): + listener.exitForRangeDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitForrangedeclaration" ): - return visitor.visitForrangedeclaration(self) + if hasattr( visitor, "visitForRangeDeclaration" ): + return visitor.visitForRangeDeclaration(self) else: return visitor.visitChildren(self) - def forrangedeclaration(self): + def forRangeDeclaration(self): - localctx = CPP14Parser.ForrangedeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 114, self.RULE_forrangedeclaration) + localctx = CPP14Parser.ForRangeDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 112, self.RULE_forRangeDeclaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1143 + self.state = 948 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1142 - self.attributespecifierseq(0) + if _la==10 or _la==87: + self.state = 947 + self.attributeSpecifierSeq() - self.state = 1145 - self.declspecifierseq() - self.state = 1146 + self.state = 950 + self.declSpecifierSeq() + self.state = 951 self.declarator() except RecognitionException as re: localctx.exception = re @@ -7387,7 +6378,8 @@ def forrangedeclaration(self): return localctx - class ForrangeinitializerContext(ParserRuleContext): + class ForRangeInitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7397,47 +6389,47 @@ def expression(self): return self.getTypedRuleContext(CPP14Parser.ExpressionContext,0) - def bracedinitlist(self): - return self.getTypedRuleContext(CPP14Parser.BracedinitlistContext,0) + def bracedInitList(self): + return self.getTypedRuleContext(CPP14Parser.BracedInitListContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_forrangeinitializer + return CPP14Parser.RULE_forRangeInitializer def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForrangeinitializer" ): - listener.enterForrangeinitializer(self) + if hasattr( listener, "enterForRangeInitializer" ): + listener.enterForRangeInitializer(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForrangeinitializer" ): - listener.exitForrangeinitializer(self) + if hasattr( listener, "exitForRangeInitializer" ): + listener.exitForRangeInitializer(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitForrangeinitializer" ): - return visitor.visitForrangeinitializer(self) + if hasattr( visitor, "visitForRangeInitializer" ): + return visitor.visitForRangeInitializer(self) else: return visitor.visitChildren(self) - def forrangeinitializer(self): + def forRangeInitializer(self): - localctx = CPP14Parser.ForrangeinitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 116, self.RULE_forrangeinitializer) + localctx = CPP14Parser.ForRangeInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 114, self.RULE_forRangeInitializer) try: - self.state = 1150 + self.state = 955 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CPP14Parser.T__0, CPP14Parser.T__1, CPP14Parser.T__6, CPP14Parser.T__7, CPP14Parser.Alignof, CPP14Parser.Auto, CPP14Parser.Bool, CPP14Parser.Char, CPP14Parser.Char16, CPP14Parser.Char32, CPP14Parser.Const_cast, CPP14Parser.Decltype, CPP14Parser.Delete, CPP14Parser.Double, CPP14Parser.Dynamic_cast, CPP14Parser.Float, CPP14Parser.Int, CPP14Parser.Long, CPP14Parser.New, CPP14Parser.Noexcept, CPP14Parser.Nullptr, CPP14Parser.Operator, CPP14Parser.Reinterpret_cast, CPP14Parser.Short, CPP14Parser.Signed, CPP14Parser.Sizeof, CPP14Parser.Static_cast, CPP14Parser.This, CPP14Parser.Throw, CPP14Parser.Typeid_, CPP14Parser.Typename_, CPP14Parser.Unsigned, CPP14Parser.Void, CPP14Parser.Wchar, CPP14Parser.LeftParen, CPP14Parser.LeftBracket, CPP14Parser.Plus, CPP14Parser.Minus, CPP14Parser.Star, CPP14Parser.And, CPP14Parser.Or, CPP14Parser.Tilde, CPP14Parser.PlusPlus, CPP14Parser.MinusMinus, CPP14Parser.Doublecolon, CPP14Parser.Identifier, CPP14Parser.Integerliteral, CPP14Parser.Characterliteral, CPP14Parser.Floatingliteral, CPP14Parser.Stringliteral, CPP14Parser.Userdefinedintegerliteral, CPP14Parser.Userdefinedfloatingliteral, CPP14Parser.Userdefinedstringliteral, CPP14Parser.Userdefinedcharacterliteral]: + if token in [1, 2, 3, 4, 5, 6, 7, 11, 13, 14, 18, 19, 20, 24, 26, 28, 30, 31, 39, 45, 46, 49, 50, 52, 58, 60, 61, 62, 65, 69, 71, 75, 76, 78, 81, 83, 85, 87, 91, 92, 93, 97, 98, 99, 100, 120, 121, 127, 132]: self.enterOuterAlt(localctx, 1) - self.state = 1148 - self.expression(0) + self.state = 953 + self.expression() pass - elif token in [CPP14Parser.LeftBrace]: + elif token in [89]: self.enterOuterAlt(localctx, 2) - self.state = 1149 - self.bracedinitlist() + self.state = 954 + self.bracedInitList() pass else: raise NoViableAltException(self) @@ -7451,120 +6443,106 @@ def forrangeinitializer(self): return localctx - class JumpstatementContext(ParserRuleContext): + class JumpStatementContext(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(CPP14Parser.Break, 0) - def Semi(self): return self.getToken(CPP14Parser.Semi, 0) + def Break(self): + return self.getToken(CPP14Parser.Break, 0) + def Continue(self): return self.getToken(CPP14Parser.Continue, 0) def Return(self): return self.getToken(CPP14Parser.Return, 0) - def expression(self): - return self.getTypedRuleContext(CPP14Parser.ExpressionContext,0) - - - def bracedinitlist(self): - return self.getTypedRuleContext(CPP14Parser.BracedinitlistContext,0) - - def Goto(self): return self.getToken(CPP14Parser.Goto, 0) def Identifier(self): return self.getToken(CPP14Parser.Identifier, 0) + def expression(self): + return self.getTypedRuleContext(CPP14Parser.ExpressionContext,0) + + + def bracedInitList(self): + return self.getTypedRuleContext(CPP14Parser.BracedInitListContext,0) + + def getRuleIndex(self): - return CPP14Parser.RULE_jumpstatement + return CPP14Parser.RULE_jumpStatement def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterJumpstatement" ): - listener.enterJumpstatement(self) + if hasattr( listener, "enterJumpStatement" ): + listener.enterJumpStatement(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitJumpstatement" ): - listener.exitJumpstatement(self) + if hasattr( listener, "exitJumpStatement" ): + listener.exitJumpStatement(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJumpstatement" ): - return visitor.visitJumpstatement(self) + if hasattr( visitor, "visitJumpStatement" ): + return visitor.visitJumpStatement(self) else: return visitor.visitChildren(self) - def jumpstatement(self): + def jumpStatement(self): - localctx = CPP14Parser.JumpstatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 118, self.RULE_jumpstatement) - self._la = 0 # Token type + localctx = CPP14Parser.JumpStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 116, self.RULE_jumpStatement) try: - self.state = 1168 + self.enterOuterAlt(localctx, 1) + self.state = 966 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,99,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1152 + token = self._input.LA(1) + if token in [15]: + self.state = 957 self.match(CPP14Parser.Break) - self.state = 1153 - self.match(CPP14Parser.Semi) pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1154 + elif token in [25]: + self.state = 958 self.match(CPP14Parser.Continue) - self.state = 1155 - self.match(CPP14Parser.Semi) pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1156 + elif token in [59]: + self.state = 959 self.match(CPP14Parser.Return) - self.state = 1158 + self.state = 962 self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Throw - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 1157 - self.expression(0) - - - self.state = 1160 - self.match(CPP14Parser.Semi) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1161 - self.match(CPP14Parser.Return) - self.state = 1162 - self.bracedinitlist() - self.state = 1163 - self.match(CPP14Parser.Semi) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1165 + token = self._input.LA(1) + if token in [1, 2, 3, 4, 5, 6, 7, 11, 13, 14, 18, 19, 20, 24, 26, 28, 30, 31, 39, 45, 46, 49, 50, 52, 58, 60, 61, 62, 65, 69, 71, 75, 76, 78, 81, 83, 85, 87, 91, 92, 93, 97, 98, 99, 100, 120, 121, 127, 132]: + self.state = 960 + self.expression() + pass + elif token in [89]: + self.state = 961 + self.bracedInitList() + pass + elif token in [128]: + pass + else: + pass + pass + elif token in [42]: + self.state = 964 self.match(CPP14Parser.Goto) - self.state = 1166 + self.state = 965 self.match(CPP14Parser.Identifier) - self.state = 1167 - self.match(CPP14Parser.Semi) pass + else: + raise NoViableAltException(self) - + self.state = 968 + self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7574,44 +6552,45 @@ def jumpstatement(self): return localctx - class DeclarationstatementContext(ParserRuleContext): + class DeclarationStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def blockdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.BlockdeclarationContext,0) + def blockDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.BlockDeclarationContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_declarationstatement + return CPP14Parser.RULE_declarationStatement def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclarationstatement" ): - listener.enterDeclarationstatement(self) + if hasattr( listener, "enterDeclarationStatement" ): + listener.enterDeclarationStatement(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclarationstatement" ): - listener.exitDeclarationstatement(self) + if hasattr( listener, "exitDeclarationStatement" ): + listener.exitDeclarationStatement(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclarationstatement" ): - return visitor.visitDeclarationstatement(self) + if hasattr( visitor, "visitDeclarationStatement" ): + return visitor.visitDeclarationStatement(self) else: return visitor.visitChildren(self) - def declarationstatement(self): + def declarationStatement(self): - localctx = CPP14Parser.DeclarationstatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 120, self.RULE_declarationstatement) + localctx = CPP14Parser.DeclarationStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 118, self.RULE_declarationStatement) try: self.enterOuterAlt(localctx, 1) - self.state = 1170 - self.blockdeclaration() + self.state = 970 + self.blockDeclaration() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7622,17 +6601,17 @@ def declarationstatement(self): class DeclarationseqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def declaration(self): - return self.getTypedRuleContext(CPP14Parser.DeclarationContext,0) - - - def declarationseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclarationseqContext,0) + def declaration(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.DeclarationContext) + else: + return self.getTypedRuleContext(CPP14Parser.DeclarationContext,i) def getRuleIndex(self): @@ -7654,87 +6633,76 @@ def accept(self, visitor:ParseTreeVisitor): - def declarationseq(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.DeclarationseqContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 122 - self.enterRecursionRule(localctx, 122, self.RULE_declarationseq, _p) + + def declarationseq(self): + + localctx = CPP14Parser.DeclarationseqContext(self, self._ctx, self.state) + self.enterRule(localctx, 120, self.RULE_declarationseq) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1173 - self.declaration() - self._ctx.stop = self._input.LT(-1) - self.state = 1179 + self.state = 973 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,100,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 = CPP14Parser.DeclarationseqContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_declarationseq) - self.state = 1175 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 1176 - self.declaration() - self.state = 1181 + _la = self._input.LA(1) + while True: + self.state = 972 + self.declaration() + self.state = 975 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,100,self._ctx) + _la = self._input.LA(1) + if not (((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 1543754443169808157) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 459384754220313597) != 0)): + break except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx class DeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def blockdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.BlockdeclarationContext,0) + def blockDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.BlockDeclarationContext,0) - def functiondefinition(self): - return self.getTypedRuleContext(CPP14Parser.FunctiondefinitionContext,0) + def functionDefinition(self): + return self.getTypedRuleContext(CPP14Parser.FunctionDefinitionContext,0) - def templatedeclaration(self): - return self.getTypedRuleContext(CPP14Parser.TemplatedeclarationContext,0) + def templateDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.TemplateDeclarationContext,0) - def explicitinstantiation(self): - return self.getTypedRuleContext(CPP14Parser.ExplicitinstantiationContext,0) + def explicitInstantiation(self): + return self.getTypedRuleContext(CPP14Parser.ExplicitInstantiationContext,0) - def explicitspecialization(self): - return self.getTypedRuleContext(CPP14Parser.ExplicitspecializationContext,0) + def explicitSpecialization(self): + return self.getTypedRuleContext(CPP14Parser.ExplicitSpecializationContext,0) - def linkagespecification(self): - return self.getTypedRuleContext(CPP14Parser.LinkagespecificationContext,0) + def linkageSpecification(self): + return self.getTypedRuleContext(CPP14Parser.LinkageSpecificationContext,0) - def namespacedefinition(self): - return self.getTypedRuleContext(CPP14Parser.NamespacedefinitionContext,0) + def namespaceDefinition(self): + return self.getTypedRuleContext(CPP14Parser.NamespaceDefinitionContext,0) - def emptydeclaration(self): - return self.getTypedRuleContext(CPP14Parser.EmptydeclarationContext,0) + def emptyDeclaration_(self): + return self.getTypedRuleContext(CPP14Parser.EmptyDeclaration_Context,0) - def attributedeclaration(self): - return self.getTypedRuleContext(CPP14Parser.AttributedeclarationContext,0) + def attributeDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.AttributeDeclarationContext,0) def getRuleIndex(self): @@ -7760,63 +6728,63 @@ def accept(self, visitor:ParseTreeVisitor): def declaration(self): localctx = CPP14Parser.DeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 124, self.RULE_declaration) + self.enterRule(localctx, 122, self.RULE_declaration) try: - self.state = 1191 + self.state = 986 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,101,self._ctx) + la_ = self._interp.adaptivePredict(self._input,96,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1182 - self.blockdeclaration() + self.state = 977 + self.blockDeclaration() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1183 - self.functiondefinition() + self.state = 978 + self.functionDefinition() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1184 - self.templatedeclaration() + self.state = 979 + self.templateDeclaration() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1185 - self.explicitinstantiation() + self.state = 980 + self.explicitInstantiation() pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 1186 - self.explicitspecialization() + self.state = 981 + self.explicitSpecialization() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 1187 - self.linkagespecification() + self.state = 982 + self.linkageSpecification() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 1188 - self.namespacedefinition() + self.state = 983 + self.namespaceDefinition() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 1189 - self.emptydeclaration() + self.state = 984 + self.emptyDeclaration_() pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 1190 - self.attributedeclaration() + self.state = 985 + self.attributeDeclaration() pass @@ -7829,118 +6797,119 @@ def declaration(self): return localctx - class BlockdeclarationContext(ParserRuleContext): + class BlockDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def simpledeclaration(self): - return self.getTypedRuleContext(CPP14Parser.SimpledeclarationContext,0) + def simpleDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.SimpleDeclarationContext,0) - def asmdefinition(self): - return self.getTypedRuleContext(CPP14Parser.AsmdefinitionContext,0) + def asmDefinition(self): + return self.getTypedRuleContext(CPP14Parser.AsmDefinitionContext,0) - def namespacealiasdefinition(self): - return self.getTypedRuleContext(CPP14Parser.NamespacealiasdefinitionContext,0) + def namespaceAliasDefinition(self): + return self.getTypedRuleContext(CPP14Parser.NamespaceAliasDefinitionContext,0) - def usingdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.UsingdeclarationContext,0) + def usingDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.UsingDeclarationContext,0) - def usingdirective(self): - return self.getTypedRuleContext(CPP14Parser.UsingdirectiveContext,0) + def usingDirective(self): + return self.getTypedRuleContext(CPP14Parser.UsingDirectiveContext,0) - def static_assertdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.Static_assertdeclarationContext,0) + def staticAssertDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.StaticAssertDeclarationContext,0) - def aliasdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.AliasdeclarationContext,0) + def aliasDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.AliasDeclarationContext,0) - def opaqueenumdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.OpaqueenumdeclarationContext,0) + def opaqueEnumDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.OpaqueEnumDeclarationContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_blockdeclaration + return CPP14Parser.RULE_blockDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBlockdeclaration" ): - listener.enterBlockdeclaration(self) + if hasattr( listener, "enterBlockDeclaration" ): + listener.enterBlockDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBlockdeclaration" ): - listener.exitBlockdeclaration(self) + if hasattr( listener, "exitBlockDeclaration" ): + listener.exitBlockDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBlockdeclaration" ): - return visitor.visitBlockdeclaration(self) + if hasattr( visitor, "visitBlockDeclaration" ): + return visitor.visitBlockDeclaration(self) else: return visitor.visitChildren(self) - def blockdeclaration(self): + def blockDeclaration(self): - localctx = CPP14Parser.BlockdeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 126, self.RULE_blockdeclaration) + localctx = CPP14Parser.BlockDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 124, self.RULE_blockDeclaration) try: - self.state = 1201 + self.state = 996 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,102,self._ctx) + la_ = self._interp.adaptivePredict(self._input,97,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1193 - self.simpledeclaration() + self.state = 988 + self.simpleDeclaration() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1194 - self.asmdefinition() + self.state = 989 + self.asmDefinition() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1195 - self.namespacealiasdefinition() + self.state = 990 + self.namespaceAliasDefinition() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1196 - self.usingdeclaration() + self.state = 991 + self.usingDeclaration() pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 1197 - self.usingdirective() + self.state = 992 + self.usingDirective() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 1198 - self.static_assertdeclaration() + self.state = 993 + self.staticAssertDeclaration() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 1199 - self.aliasdeclaration() + self.state = 994 + self.aliasDeclaration() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 1200 - self.opaqueenumdeclaration() + self.state = 995 + self.opaqueEnumDeclaration() pass @@ -7953,7 +6922,8 @@ def blockdeclaration(self): return localctx - class AliasdeclarationContext(ParserRuleContext): + class AliasDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7968,61 +6938,61 @@ def Identifier(self): def Assign(self): return self.getToken(CPP14Parser.Assign, 0) - def thetypeid(self): - return self.getTypedRuleContext(CPP14Parser.ThetypeidContext,0) + def theTypeId(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeIdContext,0) def Semi(self): return self.getToken(CPP14Parser.Semi, 0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_aliasdeclaration + return CPP14Parser.RULE_aliasDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAliasdeclaration" ): - listener.enterAliasdeclaration(self) + if hasattr( listener, "enterAliasDeclaration" ): + listener.enterAliasDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAliasdeclaration" ): - listener.exitAliasdeclaration(self) + if hasattr( listener, "exitAliasDeclaration" ): + listener.exitAliasDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAliasdeclaration" ): - return visitor.visitAliasdeclaration(self) + if hasattr( visitor, "visitAliasDeclaration" ): + return visitor.visitAliasDeclaration(self) else: return visitor.visitChildren(self) - def aliasdeclaration(self): + def aliasDeclaration(self): - localctx = CPP14Parser.AliasdeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 128, self.RULE_aliasdeclaration) + localctx = CPP14Parser.AliasDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 126, self.RULE_aliasDeclaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1203 + self.state = 998 self.match(CPP14Parser.Using) - self.state = 1204 + self.state = 999 self.match(CPP14Parser.Identifier) - self.state = 1206 + self.state = 1001 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1205 - self.attributespecifierseq(0) + if _la==10 or _la==87: + self.state = 1000 + self.attributeSpecifierSeq() - self.state = 1208 + self.state = 1003 self.match(CPP14Parser.Assign) - self.state = 1209 - self.thetypeid() - self.state = 1210 + self.state = 1004 + self.theTypeId() + self.state = 1005 self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re @@ -8033,7 +7003,8 @@ def aliasdeclaration(self): return localctx - class SimpledeclarationContext(ParserRuleContext): + class SimpleDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8042,83 +7013,83 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def Semi(self): return self.getToken(CPP14Parser.Semi, 0) - def declspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclspecifierseqContext,0) + def declSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.DeclSpecifierSeqContext,0) - def initdeclaratorlist(self): - return self.getTypedRuleContext(CPP14Parser.InitdeclaratorlistContext,0) + def initDeclaratorList(self): + return self.getTypedRuleContext(CPP14Parser.InitDeclaratorListContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_simpledeclaration + return CPP14Parser.RULE_simpleDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSimpledeclaration" ): - listener.enterSimpledeclaration(self) + if hasattr( listener, "enterSimpleDeclaration" ): + listener.enterSimpleDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSimpledeclaration" ): - listener.exitSimpledeclaration(self) + if hasattr( listener, "exitSimpleDeclaration" ): + listener.exitSimpleDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSimpledeclaration" ): - return visitor.visitSimpledeclaration(self) + if hasattr( visitor, "visitSimpleDeclaration" ): + return visitor.visitSimpleDeclaration(self) else: return visitor.visitChildren(self) - def simpledeclaration(self): + def simpleDeclaration(self): - localctx = CPP14Parser.SimpledeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 130, self.RULE_simpledeclaration) + localctx = CPP14Parser.SimpleDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 128, self.RULE_simpleDeclaration) self._la = 0 # Token type try: - self.state = 1226 + self.state = 1021 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CPP14Parser.T__2, CPP14Parser.Auto, CPP14Parser.Bool, CPP14Parser.Char, CPP14Parser.Char16, CPP14Parser.Char32, CPP14Parser.Class, CPP14Parser.Const, CPP14Parser.Constexpr, CPP14Parser.Decltype, CPP14Parser.Double, CPP14Parser.Enum, CPP14Parser.Explicit, CPP14Parser.Extern, CPP14Parser.Float, CPP14Parser.Friend, CPP14Parser.Inline, CPP14Parser.Int, CPP14Parser.Long, CPP14Parser.Mutable, CPP14Parser.Operator, CPP14Parser.Register, CPP14Parser.Short, CPP14Parser.Signed, CPP14Parser.Static, CPP14Parser.Struct, CPP14Parser.Thread_local, CPP14Parser.Typedef, CPP14Parser.Typename_, CPP14Parser.Union, CPP14Parser.Unsigned, CPP14Parser.Virtual, CPP14Parser.Void, CPP14Parser.Volatile, CPP14Parser.Wchar, CPP14Parser.LeftParen, CPP14Parser.Star, CPP14Parser.And, CPP14Parser.Tilde, CPP14Parser.Doublecolon, CPP14Parser.Semi, CPP14Parser.Ellipsis, CPP14Parser.Identifier]: + if token in [13, 14, 18, 19, 20, 21, 22, 23, 26, 30, 33, 34, 36, 39, 41, 44, 45, 46, 47, 52, 57, 60, 61, 63, 66, 70, 74, 76, 77, 78, 80, 81, 82, 83, 85, 93, 97, 99, 118, 127, 128, 131, 132]: self.enterOuterAlt(localctx, 1) - self.state = 1213 + self.state = 1008 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,104,self._ctx) + la_ = self._interp.adaptivePredict(self._input,99,self._ctx) if la_ == 1: - self.state = 1212 - self.declspecifierseq() + self.state = 1007 + self.declSpecifierSeq() - self.state = 1216 + self.state = 1011 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__2) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Operator))) != 0) or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (CPP14Parser.LeftParen - 84)) | (1 << (CPP14Parser.Star - 84)) | (1 << (CPP14Parser.And - 84)) | (1 << (CPP14Parser.Tilde - 84)) | (1 << (CPP14Parser.Doublecolon - 84)) | (1 << (CPP14Parser.Ellipsis - 84)) | (1 << (CPP14Parser.Identifier - 84)))) != 0): - self.state = 1215 - self.initdeclaratorlist(0) + if _la==26 or _la==52 or ((((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 215512868999425) != 0): + self.state = 1010 + self.initDeclaratorList() - self.state = 1218 + self.state = 1013 self.match(CPP14Parser.Semi) pass - elif token in [CPP14Parser.Alignas, CPP14Parser.LeftBracket]: + elif token in [10, 87]: self.enterOuterAlt(localctx, 2) - self.state = 1219 - self.attributespecifierseq(0) - self.state = 1221 + self.state = 1014 + self.attributeSpecifierSeq() + self.state = 1016 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,106,self._ctx) + la_ = self._interp.adaptivePredict(self._input,101,self._ctx) if la_ == 1: - self.state = 1220 - self.declspecifierseq() + self.state = 1015 + self.declSpecifierSeq() - self.state = 1223 - self.initdeclaratorlist(0) - self.state = 1224 + self.state = 1018 + self.initDeclaratorList() + self.state = 1019 self.match(CPP14Parser.Semi) pass else: @@ -8133,7 +7104,8 @@ def simpledeclaration(self): return localctx - class Static_assertdeclarationContext(ParserRuleContext): + class StaticAssertDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8145,15 +7117,15 @@ def Static_assert(self): def LeftParen(self): return self.getToken(CPP14Parser.LeftParen, 0) - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) + def constantExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,0) def Comma(self): return self.getToken(CPP14Parser.Comma, 0) - def Stringliteral(self): - return self.getToken(CPP14Parser.Stringliteral, 0) + def StringLiteral(self): + return self.getToken(CPP14Parser.StringLiteral, 0) def RightParen(self): return self.getToken(CPP14Parser.RightParen, 0) @@ -8162,44 +7134,44 @@ def Semi(self): return self.getToken(CPP14Parser.Semi, 0) def getRuleIndex(self): - return CPP14Parser.RULE_static_assertdeclaration + return CPP14Parser.RULE_staticAssertDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStatic_assertdeclaration" ): - listener.enterStatic_assertdeclaration(self) + if hasattr( listener, "enterStaticAssertDeclaration" ): + listener.enterStaticAssertDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStatic_assertdeclaration" ): - listener.exitStatic_assertdeclaration(self) + if hasattr( listener, "exitStaticAssertDeclaration" ): + listener.exitStaticAssertDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStatic_assertdeclaration" ): - return visitor.visitStatic_assertdeclaration(self) + if hasattr( visitor, "visitStaticAssertDeclaration" ): + return visitor.visitStaticAssertDeclaration(self) else: return visitor.visitChildren(self) - def static_assertdeclaration(self): + def staticAssertDeclaration(self): - localctx = CPP14Parser.Static_assertdeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 132, self.RULE_static_assertdeclaration) + localctx = CPP14Parser.StaticAssertDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 130, self.RULE_staticAssertDeclaration) try: self.enterOuterAlt(localctx, 1) - self.state = 1228 + self.state = 1023 self.match(CPP14Parser.Static_assert) - self.state = 1229 + self.state = 1024 self.match(CPP14Parser.LeftParen) - self.state = 1230 - self.constantexpression() - self.state = 1231 + self.state = 1025 + self.constantExpression() + self.state = 1026 self.match(CPP14Parser.Comma) - self.state = 1232 - self.match(CPP14Parser.Stringliteral) - self.state = 1233 + self.state = 1027 + self.match(CPP14Parser.StringLiteral) + self.state = 1028 self.match(CPP14Parser.RightParen) - self.state = 1234 + self.state = 1029 self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re @@ -8210,7 +7182,8 @@ def static_assertdeclaration(self): return localctx - class EmptydeclarationContext(ParserRuleContext): + class EmptyDeclaration_Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8220,32 +7193,32 @@ def Semi(self): return self.getToken(CPP14Parser.Semi, 0) def getRuleIndex(self): - return CPP14Parser.RULE_emptydeclaration + return CPP14Parser.RULE_emptyDeclaration_ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEmptydeclaration" ): - listener.enterEmptydeclaration(self) + if hasattr( listener, "enterEmptyDeclaration_" ): + listener.enterEmptyDeclaration_(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEmptydeclaration" ): - listener.exitEmptydeclaration(self) + if hasattr( listener, "exitEmptyDeclaration_" ): + listener.exitEmptyDeclaration_(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEmptydeclaration" ): - return visitor.visitEmptydeclaration(self) + if hasattr( visitor, "visitEmptyDeclaration_" ): + return visitor.visitEmptyDeclaration_(self) else: return visitor.visitChildren(self) - def emptydeclaration(self): + def emptyDeclaration_(self): - localctx = CPP14Parser.EmptydeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 134, self.RULE_emptydeclaration) + localctx = CPP14Parser.EmptyDeclaration_Context(self, self._ctx, self.state) + self.enterRule(localctx, 132, self.RULE_emptyDeclaration_) try: self.enterOuterAlt(localctx, 1) - self.state = 1236 + self.state = 1031 self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re @@ -8256,48 +7229,49 @@ def emptydeclaration(self): return localctx - class AttributedeclarationContext(ParserRuleContext): + class AttributeDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def Semi(self): return self.getToken(CPP14Parser.Semi, 0) def getRuleIndex(self): - return CPP14Parser.RULE_attributedeclaration + return CPP14Parser.RULE_attributeDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttributedeclaration" ): - listener.enterAttributedeclaration(self) + if hasattr( listener, "enterAttributeDeclaration" ): + listener.enterAttributeDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttributedeclaration" ): - listener.exitAttributedeclaration(self) + if hasattr( listener, "exitAttributeDeclaration" ): + listener.exitAttributeDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttributedeclaration" ): - return visitor.visitAttributedeclaration(self) + if hasattr( visitor, "visitAttributeDeclaration" ): + return visitor.visitAttributeDeclaration(self) else: return visitor.visitChildren(self) - def attributedeclaration(self): + def attributeDeclaration(self): - localctx = CPP14Parser.AttributedeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 136, self.RULE_attributedeclaration) + localctx = CPP14Parser.AttributeDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 134, self.RULE_attributeDeclaration) try: self.enterOuterAlt(localctx, 1) - self.state = 1238 - self.attributespecifierseq(0) - self.state = 1239 + self.state = 1033 + self.attributeSpecifierSeq() + self.state = 1034 self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re @@ -8308,22 +7282,23 @@ def attributedeclaration(self): return localctx - class DeclspecifierContext(ParserRuleContext): + class DeclSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def storageclassspecifier(self): - return self.getTypedRuleContext(CPP14Parser.StorageclassspecifierContext,0) + def storageClassSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.StorageClassSpecifierContext,0) - def typespecifier(self): - return self.getTypedRuleContext(CPP14Parser.TypespecifierContext,0) + def typeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.TypeSpecifierContext,0) - def functionspecifier(self): - return self.getTypedRuleContext(CPP14Parser.FunctionspecifierContext,0) + def functionSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.FunctionSpecifierContext,0) def Friend(self): @@ -8336,61 +7311,61 @@ def Constexpr(self): return self.getToken(CPP14Parser.Constexpr, 0) def getRuleIndex(self): - return CPP14Parser.RULE_declspecifier + return CPP14Parser.RULE_declSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclspecifier" ): - listener.enterDeclspecifier(self) + if hasattr( listener, "enterDeclSpecifier" ): + listener.enterDeclSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclspecifier" ): - listener.exitDeclspecifier(self) + if hasattr( listener, "exitDeclSpecifier" ): + listener.exitDeclSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclspecifier" ): - return visitor.visitDeclspecifier(self) + if hasattr( visitor, "visitDeclSpecifier" ): + return visitor.visitDeclSpecifier(self) else: return visitor.visitChildren(self) - def declspecifier(self): + def declSpecifier(self): - localctx = CPP14Parser.DeclspecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 138, self.RULE_declspecifier) + localctx = CPP14Parser.DeclSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 136, self.RULE_declSpecifier) try: - self.state = 1247 + self.state = 1042 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CPP14Parser.Extern, CPP14Parser.Mutable, CPP14Parser.Register, CPP14Parser.Static, CPP14Parser.Thread_local]: + if token in [36, 47, 57, 63, 70]: self.enterOuterAlt(localctx, 1) - self.state = 1241 - self.storageclassspecifier() + self.state = 1036 + self.storageClassSpecifier() pass - elif token in [CPP14Parser.Auto, CPP14Parser.Bool, CPP14Parser.Char, CPP14Parser.Char16, CPP14Parser.Char32, CPP14Parser.Class, CPP14Parser.Const, CPP14Parser.Decltype, CPP14Parser.Double, CPP14Parser.Enum, CPP14Parser.Float, CPP14Parser.Int, CPP14Parser.Long, CPP14Parser.Short, CPP14Parser.Signed, CPP14Parser.Struct, CPP14Parser.Typename_, CPP14Parser.Union, CPP14Parser.Unsigned, CPP14Parser.Void, CPP14Parser.Volatile, CPP14Parser.Wchar, CPP14Parser.Doublecolon, CPP14Parser.Identifier]: + elif token in [13, 14, 18, 19, 20, 21, 22, 26, 30, 33, 39, 45, 46, 60, 61, 66, 76, 77, 78, 81, 82, 83, 127, 132]: self.enterOuterAlt(localctx, 2) - self.state = 1242 - self.typespecifier() + self.state = 1037 + self.typeSpecifier() pass - elif token in [CPP14Parser.Explicit, CPP14Parser.Inline, CPP14Parser.Virtual]: + elif token in [34, 44, 80]: self.enterOuterAlt(localctx, 3) - self.state = 1243 - self.functionspecifier() + self.state = 1038 + self.functionSpecifier() pass - elif token in [CPP14Parser.Friend]: + elif token in [41]: self.enterOuterAlt(localctx, 4) - self.state = 1244 + self.state = 1039 self.match(CPP14Parser.Friend) pass - elif token in [CPP14Parser.Typedef]: + elif token in [74]: self.enterOuterAlt(localctx, 5) - self.state = 1245 + self.state = 1040 self.match(CPP14Parser.Typedef) pass - elif token in [CPP14Parser.Constexpr]: + elif token in [23]: self.enterOuterAlt(localctx, 6) - self.state = 1246 + self.state = 1041 self.match(CPP14Parser.Constexpr) pass else: @@ -8405,73 +7380,70 @@ def declspecifier(self): return localctx - class DeclspecifierseqContext(ParserRuleContext): + class DeclSpecifierSeqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def declspecifier(self): - return self.getTypedRuleContext(CPP14Parser.DeclspecifierContext,0) - - - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def declSpecifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.DeclSpecifierContext) + else: + return self.getTypedRuleContext(CPP14Parser.DeclSpecifierContext,i) - def declspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclspecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_declspecifierseq + return CPP14Parser.RULE_declSpecifierSeq def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclspecifierseq" ): - listener.enterDeclspecifierseq(self) + if hasattr( listener, "enterDeclSpecifierSeq" ): + listener.enterDeclSpecifierSeq(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclspecifierseq" ): - listener.exitDeclspecifierseq(self) + if hasattr( listener, "exitDeclSpecifierSeq" ): + listener.exitDeclSpecifierSeq(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclspecifierseq" ): - return visitor.visitDeclspecifierseq(self) + if hasattr( visitor, "visitDeclSpecifierSeq" ): + return visitor.visitDeclSpecifierSeq(self) else: return visitor.visitChildren(self) - def declspecifierseq(self): + def declSpecifierSeq(self): - localctx = CPP14Parser.DeclspecifierseqContext(self, self._ctx, self.state) - self.enterRule(localctx, 140, self.RULE_declspecifierseq) + localctx = CPP14Parser.DeclSpecifierSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 138, self.RULE_declSpecifierSeq) try: - self.state = 1256 + self.enterOuterAlt(localctx, 1) + self.state = 1045 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,110,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1249 - self.declspecifier() - self.state = 1251 + _alt = 1+1 + while _alt!=1 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1+1: + self.state = 1044 + self.declSpecifier() + + else: + raise NoViableAltException(self) + self.state = 1047 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,109,self._ctx) - if la_ == 1: - self.state = 1250 - self.attributespecifierseq(0) - - - pass + _alt = self._interp.adaptivePredict(self._input,104,self._ctx) - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1253 - self.declspecifier() - self.state = 1254 - self.declspecifierseq() - pass + self.state = 1050 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,105,self._ctx) + if la_ == 1: + self.state = 1049 + self.attributeSpecifierSeq() except RecognitionException as re: @@ -8483,7 +7455,8 @@ def declspecifierseq(self): return localctx - class StorageclassspecifierContext(ParserRuleContext): + class StorageClassSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8505,35 +7478,35 @@ def Mutable(self): return self.getToken(CPP14Parser.Mutable, 0) def getRuleIndex(self): - return CPP14Parser.RULE_storageclassspecifier + return CPP14Parser.RULE_storageClassSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStorageclassspecifier" ): - listener.enterStorageclassspecifier(self) + if hasattr( listener, "enterStorageClassSpecifier" ): + listener.enterStorageClassSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStorageclassspecifier" ): - listener.exitStorageclassspecifier(self) + if hasattr( listener, "exitStorageClassSpecifier" ): + listener.exitStorageClassSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStorageclassspecifier" ): - return visitor.visitStorageclassspecifier(self) + if hasattr( visitor, "visitStorageClassSpecifier" ): + return visitor.visitStorageClassSpecifier(self) else: return visitor.visitChildren(self) - def storageclassspecifier(self): + def storageClassSpecifier(self): - localctx = CPP14Parser.StorageclassspecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 142, self.RULE_storageclassspecifier) + localctx = CPP14Parser.StorageClassSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 140, self.RULE_storageClassSpecifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1258 + self.state = 1052 _la = self._input.LA(1) - if not(((((_la - 37)) & ~0x3f) == 0 and ((1 << (_la - 37)) & ((1 << (CPP14Parser.Extern - 37)) | (1 << (CPP14Parser.Mutable - 37)) | (1 << (CPP14Parser.Register - 37)) | (1 << (CPP14Parser.Static - 37)) | (1 << (CPP14Parser.Thread_local - 37)))) != 0)): + if not(((((_la - 36)) & ~0x3f) == 0 and ((1 << (_la - 36)) & 17316186113) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -8547,7 +7520,8 @@ def storageclassspecifier(self): return localctx - class FunctionspecifierContext(ParserRuleContext): + class FunctionSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8563,35 +7537,35 @@ def Explicit(self): return self.getToken(CPP14Parser.Explicit, 0) def getRuleIndex(self): - return CPP14Parser.RULE_functionspecifier + return CPP14Parser.RULE_functionSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunctionspecifier" ): - listener.enterFunctionspecifier(self) + if hasattr( listener, "enterFunctionSpecifier" ): + listener.enterFunctionSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunctionspecifier" ): - listener.exitFunctionspecifier(self) + if hasattr( listener, "exitFunctionSpecifier" ): + listener.exitFunctionSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunctionspecifier" ): - return visitor.visitFunctionspecifier(self) + if hasattr( visitor, "visitFunctionSpecifier" ): + return visitor.visitFunctionSpecifier(self) else: return visitor.visitChildren(self) - def functionspecifier(self): + def functionSpecifier(self): - localctx = CPP14Parser.FunctionspecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 144, self.RULE_functionspecifier) + localctx = CPP14Parser.FunctionSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 142, self.RULE_functionSpecifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1260 + self.state = 1054 _la = self._input.LA(1) - if not(((((_la - 35)) & ~0x3f) == 0 and ((1 << (_la - 35)) & ((1 << (CPP14Parser.Explicit - 35)) | (1 << (CPP14Parser.Inline - 35)) | (1 << (CPP14Parser.Virtual - 35)))) != 0)): + if not(((((_la - 34)) & ~0x3f) == 0 and ((1 << (_la - 34)) & 70368744178689) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -8605,7 +7579,8 @@ def functionspecifier(self): return localctx - class TypedefnameContext(ParserRuleContext): + class TypedefNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8615,32 +7590,32 @@ def Identifier(self): return self.getToken(CPP14Parser.Identifier, 0) def getRuleIndex(self): - return CPP14Parser.RULE_typedefname + return CPP14Parser.RULE_typedefName def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypedefname" ): - listener.enterTypedefname(self) + if hasattr( listener, "enterTypedefName" ): + listener.enterTypedefName(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypedefname" ): - listener.exitTypedefname(self) + if hasattr( listener, "exitTypedefName" ): + listener.exitTypedefName(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypedefname" ): - return visitor.visitTypedefname(self) + if hasattr( visitor, "visitTypedefName" ): + return visitor.visitTypedefName(self) else: return visitor.visitChildren(self) - def typedefname(self): + def typedefName(self): - localctx = CPP14Parser.TypedefnameContext(self, self._ctx, self.state) - self.enterRule(localctx, 146, self.RULE_typedefname) + localctx = CPP14Parser.TypedefNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 144, self.RULE_typedefName) try: self.enterOuterAlt(localctx, 1) - self.state = 1262 + self.state = 1056 self.match(CPP14Parser.Identifier) except RecognitionException as re: localctx.exception = re @@ -8651,68 +7626,69 @@ def typedefname(self): return localctx - class TypespecifierContext(ParserRuleContext): + class TypeSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def trailingtypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.TrailingtypespecifierContext,0) + def trailingTypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.TrailingTypeSpecifierContext,0) - def classspecifier(self): - return self.getTypedRuleContext(CPP14Parser.ClassspecifierContext,0) + def classSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.ClassSpecifierContext,0) - def enumspecifier(self): - return self.getTypedRuleContext(CPP14Parser.EnumspecifierContext,0) + def enumSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.EnumSpecifierContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_typespecifier + return CPP14Parser.RULE_typeSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypespecifier" ): - listener.enterTypespecifier(self) + if hasattr( listener, "enterTypeSpecifier" ): + listener.enterTypeSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypespecifier" ): - listener.exitTypespecifier(self) + if hasattr( listener, "exitTypeSpecifier" ): + listener.exitTypeSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypespecifier" ): - return visitor.visitTypespecifier(self) + if hasattr( visitor, "visitTypeSpecifier" ): + return visitor.visitTypeSpecifier(self) else: return visitor.visitChildren(self) - def typespecifier(self): + def typeSpecifier(self): - localctx = CPP14Parser.TypespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 148, self.RULE_typespecifier) + localctx = CPP14Parser.TypeSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 146, self.RULE_typeSpecifier) try: - self.state = 1267 + self.state = 1061 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,111,self._ctx) + la_ = self._interp.adaptivePredict(self._input,106,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1264 - self.trailingtypespecifier() + self.state = 1058 + self.trailingTypeSpecifier() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1265 - self.classspecifier() + self.state = 1059 + self.classSpecifier() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1266 - self.enumspecifier() + self.state = 1060 + self.enumSpecifier() pass @@ -8725,75 +7701,76 @@ def typespecifier(self): return localctx - class TrailingtypespecifierContext(ParserRuleContext): + class TrailingTypeSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def simpletypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.SimpletypespecifierContext,0) + def simpleTypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTypeSpecifierContext,0) - def elaboratedtypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.ElaboratedtypespecifierContext,0) + def elaboratedTypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.ElaboratedTypeSpecifierContext,0) - def typenamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.TypenamespecifierContext,0) + def typeNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.TypeNameSpecifierContext,0) - def cvqualifier(self): - return self.getTypedRuleContext(CPP14Parser.CvqualifierContext,0) + def cvQualifier(self): + return self.getTypedRuleContext(CPP14Parser.CvQualifierContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_trailingtypespecifier + return CPP14Parser.RULE_trailingTypeSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTrailingtypespecifier" ): - listener.enterTrailingtypespecifier(self) + if hasattr( listener, "enterTrailingTypeSpecifier" ): + listener.enterTrailingTypeSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTrailingtypespecifier" ): - listener.exitTrailingtypespecifier(self) + if hasattr( listener, "exitTrailingTypeSpecifier" ): + listener.exitTrailingTypeSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTrailingtypespecifier" ): - return visitor.visitTrailingtypespecifier(self) + if hasattr( visitor, "visitTrailingTypeSpecifier" ): + return visitor.visitTrailingTypeSpecifier(self) else: return visitor.visitChildren(self) - def trailingtypespecifier(self): + def trailingTypeSpecifier(self): - localctx = CPP14Parser.TrailingtypespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 150, self.RULE_trailingtypespecifier) + localctx = CPP14Parser.TrailingTypeSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 148, self.RULE_trailingTypeSpecifier) try: - self.state = 1273 + self.state = 1067 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CPP14Parser.Auto, CPP14Parser.Bool, CPP14Parser.Char, CPP14Parser.Char16, CPP14Parser.Char32, CPP14Parser.Decltype, CPP14Parser.Double, CPP14Parser.Float, CPP14Parser.Int, CPP14Parser.Long, CPP14Parser.Short, CPP14Parser.Signed, CPP14Parser.Unsigned, CPP14Parser.Void, CPP14Parser.Wchar, CPP14Parser.Doublecolon, CPP14Parser.Identifier]: + if token in [13, 14, 18, 19, 20, 26, 30, 39, 45, 46, 60, 61, 78, 81, 83, 127, 132]: self.enterOuterAlt(localctx, 1) - self.state = 1269 - self.simpletypespecifier() + self.state = 1063 + self.simpleTypeSpecifier() pass - elif token in [CPP14Parser.Class, CPP14Parser.Enum, CPP14Parser.Struct, CPP14Parser.Union]: + elif token in [21, 33, 66]: self.enterOuterAlt(localctx, 2) - self.state = 1270 - self.elaboratedtypespecifier() + self.state = 1064 + self.elaboratedTypeSpecifier() pass - elif token in [CPP14Parser.Typename_]: + elif token in [76]: self.enterOuterAlt(localctx, 3) - self.state = 1271 - self.typenamespecifier() + self.state = 1065 + self.typeNameSpecifier() pass - elif token in [CPP14Parser.Const, CPP14Parser.Volatile]: + elif token in [22, 82]: self.enterOuterAlt(localctx, 4) - self.state = 1272 - self.cvqualifier() + self.state = 1066 + self.cvQualifier() pass else: raise NoViableAltException(self) @@ -8807,73 +7784,70 @@ def trailingtypespecifier(self): return localctx - class TypespecifierseqContext(ParserRuleContext): + class TypeSpecifierSeqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def typespecifier(self): - return self.getTypedRuleContext(CPP14Parser.TypespecifierContext,0) - - - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def typeSpecifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.TypeSpecifierContext) + else: + return self.getTypedRuleContext(CPP14Parser.TypeSpecifierContext,i) - def typespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.TypespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_typespecifierseq + return CPP14Parser.RULE_typeSpecifierSeq def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypespecifierseq" ): - listener.enterTypespecifierseq(self) + if hasattr( listener, "enterTypeSpecifierSeq" ): + listener.enterTypeSpecifierSeq(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypespecifierseq" ): - listener.exitTypespecifierseq(self) + if hasattr( listener, "exitTypeSpecifierSeq" ): + listener.exitTypeSpecifierSeq(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypespecifierseq" ): - return visitor.visitTypespecifierseq(self) + if hasattr( visitor, "visitTypeSpecifierSeq" ): + return visitor.visitTypeSpecifierSeq(self) else: return visitor.visitChildren(self) - def typespecifierseq(self): + def typeSpecifierSeq(self): - localctx = CPP14Parser.TypespecifierseqContext(self, self._ctx, self.state) - self.enterRule(localctx, 152, self.RULE_typespecifierseq) + localctx = CPP14Parser.TypeSpecifierSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 150, self.RULE_typeSpecifierSeq) try: - self.state = 1282 + self.enterOuterAlt(localctx, 1) + self.state = 1070 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,114,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1275 - self.typespecifier() - self.state = 1277 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,113,self._ctx) - if la_ == 1: - self.state = 1276 - self.attributespecifierseq(0) - + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1069 + self.typeSpecifier() - pass + else: + raise NoViableAltException(self) + self.state = 1072 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,108,self._ctx) - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1279 - self.typespecifier() - self.state = 1280 - self.typespecifierseq() - pass + self.state = 1075 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,109,self._ctx) + if la_ == 1: + self.state = 1074 + self.attributeSpecifierSeq() except RecognitionException as re: @@ -8885,75 +7859,184 @@ def typespecifierseq(self): return localctx - class TrailingtypespecifierseqContext(ParserRuleContext): + class TrailingTypeSpecifierSeqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def trailingtypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.TrailingtypespecifierContext,0) - - - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def trailingTypeSpecifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.TrailingTypeSpecifierContext) + else: + return self.getTypedRuleContext(CPP14Parser.TrailingTypeSpecifierContext,i) - def trailingtypespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.TrailingtypespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_trailingtypespecifierseq + return CPP14Parser.RULE_trailingTypeSpecifierSeq def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTrailingtypespecifierseq" ): - listener.enterTrailingtypespecifierseq(self) + if hasattr( listener, "enterTrailingTypeSpecifierSeq" ): + listener.enterTrailingTypeSpecifierSeq(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTrailingtypespecifierseq" ): - listener.exitTrailingtypespecifierseq(self) + if hasattr( listener, "exitTrailingTypeSpecifierSeq" ): + listener.exitTrailingTypeSpecifierSeq(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTrailingtypespecifierseq" ): - return visitor.visitTrailingtypespecifierseq(self) + if hasattr( visitor, "visitTrailingTypeSpecifierSeq" ): + return visitor.visitTrailingTypeSpecifierSeq(self) else: return visitor.visitChildren(self) - def trailingtypespecifierseq(self): + def trailingTypeSpecifierSeq(self): - localctx = CPP14Parser.TrailingtypespecifierseqContext(self, self._ctx, self.state) - self.enterRule(localctx, 154, self.RULE_trailingtypespecifierseq) + localctx = CPP14Parser.TrailingTypeSpecifierSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 152, self.RULE_trailingTypeSpecifierSeq) try: - self.state = 1291 + self.enterOuterAlt(localctx, 1) + self.state = 1078 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,116,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1284 - self.trailingtypespecifier() - self.state = 1286 + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1077 + self.trailingTypeSpecifier() + + else: + raise NoViableAltException(self) + self.state = 1080 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,115,self._ctx) - if la_ == 1: - self.state = 1285 - self.attributespecifierseq(0) + _alt = self._interp.adaptivePredict(self._input,110,self._ctx) + + self.state = 1083 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,111,self._ctx) + if la_ == 1: + self.state = 1082 + self.attributeSpecifierSeq() - pass + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1288 - self.trailingtypespecifier() - self.state = 1289 - self.trailingtypespecifierseq() - pass + + class SimpleTypeLengthModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def Short(self): + return self.getToken(CPP14Parser.Short, 0) + + def Long(self): + return self.getToken(CPP14Parser.Long, 0) + + def getRuleIndex(self): + return CPP14Parser.RULE_simpleTypeLengthModifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleTypeLengthModifier" ): + listener.enterSimpleTypeLengthModifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleTypeLengthModifier" ): + listener.exitSimpleTypeLengthModifier(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSimpleTypeLengthModifier" ): + return visitor.visitSimpleTypeLengthModifier(self) + else: + return visitor.visitChildren(self) + + + + + def simpleTypeLengthModifier(self): + + localctx = CPP14Parser.SimpleTypeLengthModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 154, self.RULE_simpleTypeLengthModifier) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1085 + _la = self._input.LA(1) + if not(_la==46 or _la==60): + 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 SimpleTypeSignednessModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def Unsigned(self): + return self.getToken(CPP14Parser.Unsigned, 0) + + def Signed(self): + return self.getToken(CPP14Parser.Signed, 0) + + def getRuleIndex(self): + return CPP14Parser.RULE_simpleTypeSignednessModifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSimpleTypeSignednessModifier" ): + listener.enterSimpleTypeSignednessModifier(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSimpleTypeSignednessModifier" ): + listener.exitSimpleTypeSignednessModifier(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSimpleTypeSignednessModifier" ): + return visitor.visitSimpleTypeSignednessModifier(self) + else: + return visitor.visitChildren(self) + + + def simpleTypeSignednessModifier(self): + + localctx = CPP14Parser.SimpleTypeSignednessModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 156, self.RULE_simpleTypeSignednessModifier) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1087 + _la = self._input.LA(1) + if not(_la==61 or _la==78): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8963,25 +8046,26 @@ def trailingtypespecifierseq(self): return localctx - class SimpletypespecifierContext(ParserRuleContext): + class SimpleTypeSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def thetypename(self): - return self.getTypedRuleContext(CPP14Parser.ThetypenameContext,0) + def theTypeName(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeNameContext,0) - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) def Template(self): return self.getToken(CPP14Parser.Template, 0) - def simpletemplateid(self): - return self.getTypedRuleContext(CPP14Parser.SimpletemplateidContext,0) + def simpleTemplateId(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTemplateIdContext,0) def Char(self): @@ -9008,15 +8092,15 @@ def Int(self): def Long(self): return self.getToken(CPP14Parser.Long, 0) + def Float(self): + return self.getToken(CPP14Parser.Float, 0) + def Signed(self): return self.getToken(CPP14Parser.Signed, 0) def Unsigned(self): return self.getToken(CPP14Parser.Unsigned, 0) - def Float(self): - return self.getToken(CPP14Parser.Float, 0) - def Double(self): return self.getToken(CPP14Parser.Double, 0) @@ -9026,150 +8110,156 @@ def Void(self): def Auto(self): return self.getToken(CPP14Parser.Auto, 0) - def decltypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.DecltypespecifierContext,0) + def decltypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.DecltypeSpecifierContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_simpletypespecifier + return CPP14Parser.RULE_simpleTypeSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSimpletypespecifier" ): - listener.enterSimpletypespecifier(self) + if hasattr( listener, "enterSimpleTypeSpecifier" ): + listener.enterSimpleTypeSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSimpletypespecifier" ): - listener.exitSimpletypespecifier(self) + if hasattr( listener, "exitSimpleTypeSpecifier" ): + listener.exitSimpleTypeSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSimpletypespecifier" ): - return visitor.visitSimpletypespecifier(self) + if hasattr( visitor, "visitSimpleTypeSpecifier" ): + return visitor.visitSimpleTypeSpecifier(self) else: return visitor.visitChildren(self) - def simpletypespecifier(self): + def simpleTypeSpecifier(self): - localctx = CPP14Parser.SimpletypespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 156, self.RULE_simpletypespecifier) + localctx = CPP14Parser.SimpleTypeSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 158, self.RULE_simpleTypeSpecifier) try: - self.state = 1316 + self.state = 1113 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,118,self._ctx) + la_ = self._interp.adaptivePredict(self._input,113,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1294 + self.state = 1090 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,117,self._ctx) + la_ = self._interp.adaptivePredict(self._input,112,self._ctx) if la_ == 1: - self.state = 1293 - self.nestednamespecifier(0) + self.state = 1089 + self.nestedNameSpecifier(0) - self.state = 1296 - self.thetypename() + self.state = 1092 + self.theTypeName() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1297 - self.nestednamespecifier(0) - self.state = 1298 + self.state = 1093 + self.nestedNameSpecifier(0) + self.state = 1094 self.match(CPP14Parser.Template) - self.state = 1299 - self.simpletemplateid() + self.state = 1095 + self.simpleTemplateId() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1301 + self.state = 1097 self.match(CPP14Parser.Char) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1302 + self.state = 1098 self.match(CPP14Parser.Char16) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 1303 + self.state = 1099 self.match(CPP14Parser.Char32) pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 1304 + self.state = 1100 self.match(CPP14Parser.Wchar) pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 1305 + self.state = 1101 self.match(CPP14Parser.Bool) pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 1306 + self.state = 1102 self.match(CPP14Parser.Short) pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 1307 + self.state = 1103 self.match(CPP14Parser.Int) pass elif la_ == 10: self.enterOuterAlt(localctx, 10) - self.state = 1308 + self.state = 1104 self.match(CPP14Parser.Long) pass elif la_ == 11: self.enterOuterAlt(localctx, 11) - self.state = 1309 - self.match(CPP14Parser.Signed) + self.state = 1105 + self.match(CPP14Parser.Float) pass elif la_ == 12: self.enterOuterAlt(localctx, 12) - self.state = 1310 - self.match(CPP14Parser.Unsigned) + self.state = 1106 + self.match(CPP14Parser.Signed) pass elif la_ == 13: self.enterOuterAlt(localctx, 13) - self.state = 1311 - self.match(CPP14Parser.Float) + self.state = 1107 + self.match(CPP14Parser.Unsigned) pass elif la_ == 14: self.enterOuterAlt(localctx, 14) - self.state = 1312 - self.match(CPP14Parser.Double) + self.state = 1108 + self.match(CPP14Parser.Float) pass elif la_ == 15: self.enterOuterAlt(localctx, 15) - self.state = 1313 - self.match(CPP14Parser.Void) + self.state = 1109 + self.match(CPP14Parser.Double) pass elif la_ == 16: self.enterOuterAlt(localctx, 16) - self.state = 1314 - self.match(CPP14Parser.Auto) + self.state = 1110 + self.match(CPP14Parser.Void) pass elif la_ == 17: self.enterOuterAlt(localctx, 17) - self.state = 1315 - self.decltypespecifier() + self.state = 1111 + self.match(CPP14Parser.Auto) + pass + + elif la_ == 18: + self.enterOuterAlt(localctx, 18) + self.state = 1112 + self.decltypeSpecifier() pass @@ -9182,78 +8272,79 @@ def simpletypespecifier(self): return localctx - class ThetypenameContext(ParserRuleContext): + class TheTypeNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def classname(self): - return self.getTypedRuleContext(CPP14Parser.ClassnameContext,0) + def className(self): + return self.getTypedRuleContext(CPP14Parser.ClassNameContext,0) - def enumname(self): - return self.getTypedRuleContext(CPP14Parser.EnumnameContext,0) + def enumName(self): + return self.getTypedRuleContext(CPP14Parser.EnumNameContext,0) - def typedefname(self): - return self.getTypedRuleContext(CPP14Parser.TypedefnameContext,0) + def typedefName(self): + return self.getTypedRuleContext(CPP14Parser.TypedefNameContext,0) - def simpletemplateid(self): - return self.getTypedRuleContext(CPP14Parser.SimpletemplateidContext,0) + def simpleTemplateId(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTemplateIdContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_thetypename + return CPP14Parser.RULE_theTypeName def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterThetypename" ): - listener.enterThetypename(self) + if hasattr( listener, "enterTheTypeName" ): + listener.enterTheTypeName(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitThetypename" ): - listener.exitThetypename(self) + if hasattr( listener, "exitTheTypeName" ): + listener.exitTheTypeName(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitThetypename" ): - return visitor.visitThetypename(self) + if hasattr( visitor, "visitTheTypeName" ): + return visitor.visitTheTypeName(self) else: return visitor.visitChildren(self) - def thetypename(self): + def theTypeName(self): - localctx = CPP14Parser.ThetypenameContext(self, self._ctx, self.state) - self.enterRule(localctx, 158, self.RULE_thetypename) + localctx = CPP14Parser.TheTypeNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 160, self.RULE_theTypeName) try: - self.state = 1322 + self.state = 1119 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,119,self._ctx) + la_ = self._interp.adaptivePredict(self._input,114,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1318 - self.classname() + self.state = 1115 + self.className() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1319 - self.enumname() + self.state = 1116 + self.enumName() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1320 - self.typedefname() + self.state = 1117 + self.typedefName() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1321 - self.simpletemplateid() + self.state = 1118 + self.simpleTemplateId() pass @@ -9266,7 +8357,8 @@ def thetypename(self): return localctx - class DecltypespecifierContext(ParserRuleContext): + class DecltypeSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9278,69 +8370,62 @@ def Decltype(self): def LeftParen(self): return self.getToken(CPP14Parser.LeftParen, 0) + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) + def expression(self): return self.getTypedRuleContext(CPP14Parser.ExpressionContext,0) - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) - def Auto(self): return self.getToken(CPP14Parser.Auto, 0) def getRuleIndex(self): - return CPP14Parser.RULE_decltypespecifier + return CPP14Parser.RULE_decltypeSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecltypespecifier" ): - listener.enterDecltypespecifier(self) + if hasattr( listener, "enterDecltypeSpecifier" ): + listener.enterDecltypeSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecltypespecifier" ): - listener.exitDecltypespecifier(self) + if hasattr( listener, "exitDecltypeSpecifier" ): + listener.exitDecltypeSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecltypespecifier" ): - return visitor.visitDecltypespecifier(self) + if hasattr( visitor, "visitDecltypeSpecifier" ): + return visitor.visitDecltypeSpecifier(self) else: return visitor.visitChildren(self) - def decltypespecifier(self): + def decltypeSpecifier(self): - localctx = CPP14Parser.DecltypespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 160, self.RULE_decltypespecifier) + localctx = CPP14Parser.DecltypeSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 162, self.RULE_decltypeSpecifier) try: - self.state = 1333 + self.enterOuterAlt(localctx, 1) + self.state = 1121 + self.match(CPP14Parser.Decltype) + self.state = 1122 + self.match(CPP14Parser.LeftParen) + self.state = 1125 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,120,self._ctx) + la_ = self._interp.adaptivePredict(self._input,115,self._ctx) if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1324 - self.match(CPP14Parser.Decltype) - self.state = 1325 - self.match(CPP14Parser.LeftParen) - self.state = 1326 - self.expression(0) - self.state = 1327 - self.match(CPP14Parser.RightParen) + self.state = 1123 + self.expression() pass elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1329 - self.match(CPP14Parser.Decltype) - self.state = 1330 - self.match(CPP14Parser.LeftParen) - self.state = 1331 + self.state = 1124 self.match(CPP14Parser.Auto) - self.state = 1332 - self.match(CPP14Parser.RightParen) pass + self.state = 1127 + self.match(CPP14Parser.RightParen) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9350,29 +8435,30 @@ def decltypespecifier(self): return localctx - class ElaboratedtypespecifierContext(ParserRuleContext): + class ElaboratedTypeSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def classkey(self): - return self.getTypedRuleContext(CPP14Parser.ClasskeyContext,0) + def classKey(self): + return self.getTypedRuleContext(CPP14Parser.ClassKeyContext,0) def Identifier(self): return self.getToken(CPP14Parser.Identifier, 0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def simpleTemplateId(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTemplateIdContext,0) - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) - def simpletemplateid(self): - return self.getTypedRuleContext(CPP14Parser.SimpletemplateidContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def Template(self): @@ -9382,100 +8468,101 @@ def Enum(self): return self.getToken(CPP14Parser.Enum, 0) def getRuleIndex(self): - return CPP14Parser.RULE_elaboratedtypespecifier + return CPP14Parser.RULE_elaboratedTypeSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElaboratedtypespecifier" ): - listener.enterElaboratedtypespecifier(self) + if hasattr( listener, "enterElaboratedTypeSpecifier" ): + listener.enterElaboratedTypeSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElaboratedtypespecifier" ): - listener.exitElaboratedtypespecifier(self) + if hasattr( listener, "exitElaboratedTypeSpecifier" ): + listener.exitElaboratedTypeSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitElaboratedtypespecifier" ): - return visitor.visitElaboratedtypespecifier(self) + if hasattr( visitor, "visitElaboratedTypeSpecifier" ): + return visitor.visitElaboratedTypeSpecifier(self) else: return visitor.visitChildren(self) - def elaboratedtypespecifier(self): + def elaboratedTypeSpecifier(self): - localctx = CPP14Parser.ElaboratedtypespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 162, self.RULE_elaboratedtypespecifier) + localctx = CPP14Parser.ElaboratedTypeSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 164, self.RULE_elaboratedTypeSpecifier) self._la = 0 # Token type try: - self.state = 1359 + self.state = 1151 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,125,self._ctx) - if la_ == 1: + token = self._input.LA(1) + if token in [21, 66]: self.enterOuterAlt(localctx, 1) - self.state = 1335 - self.classkey() - self.state = 1337 + self.state = 1129 + self.classKey() + self.state = 1144 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1336 - self.attributespecifierseq(0) + la_ = self._interp.adaptivePredict(self._input,119,self._ctx) + if la_ == 1: + self.state = 1131 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==10 or _la==87: + self.state = 1130 + self.attributeSpecifierSeq() - self.state = 1340 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,122,self._ctx) - if la_ == 1: - self.state = 1339 - self.nestednamespecifier(0) + self.state = 1134 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,117,self._ctx) + if la_ == 1: + self.state = 1133 + self.nestedNameSpecifier(0) - self.state = 1342 - self.match(CPP14Parser.Identifier) - pass + self.state = 1136 + self.match(CPP14Parser.Identifier) + pass - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1344 - self.classkey() - self.state = 1345 - self.simpletemplateid() - pass + elif la_ == 2: + self.state = 1137 + self.simpleTemplateId() + pass - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1347 - self.classkey() - self.state = 1348 - self.nestednamespecifier(0) - self.state = 1350 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Template: - self.state = 1349 - self.match(CPP14Parser.Template) + elif la_ == 3: + self.state = 1138 + self.nestedNameSpecifier(0) + self.state = 1140 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==68: + self.state = 1139 + self.match(CPP14Parser.Template) - self.state = 1352 - self.simpletemplateid() - pass + self.state = 1142 + self.simpleTemplateId() + pass - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1354 + + pass + elif token in [33]: + self.enterOuterAlt(localctx, 2) + self.state = 1146 self.match(CPP14Parser.Enum) - self.state = 1356 + self.state = 1148 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,124,self._ctx) + la_ = self._interp.adaptivePredict(self._input,120,self._ctx) if la_ == 1: - self.state = 1355 - self.nestednamespecifier(0) + self.state = 1147 + self.nestedNameSpecifier(0) - self.state = 1358 + self.state = 1150 self.match(CPP14Parser.Identifier) pass - + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re @@ -9486,7 +8573,8 @@ def elaboratedtypespecifier(self): return localctx - class EnumnameContext(ParserRuleContext): + class EnumNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9496,32 +8584,32 @@ def Identifier(self): return self.getToken(CPP14Parser.Identifier, 0) def getRuleIndex(self): - return CPP14Parser.RULE_enumname + return CPP14Parser.RULE_enumName def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumname" ): - listener.enterEnumname(self) + if hasattr( listener, "enterEnumName" ): + listener.enterEnumName(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumname" ): - listener.exitEnumname(self) + if hasattr( listener, "exitEnumName" ): + listener.exitEnumName(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumname" ): - return visitor.visitEnumname(self) + if hasattr( visitor, "visitEnumName" ): + return visitor.visitEnumName(self) else: return visitor.visitChildren(self) - def enumname(self): + def enumName(self): - localctx = CPP14Parser.EnumnameContext(self, self._ctx, self.state) - self.enterRule(localctx, 164, self.RULE_enumname) + localctx = CPP14Parser.EnumNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 166, self.RULE_enumName) try: self.enterOuterAlt(localctx, 1) - self.state = 1361 + self.state = 1153 self.match(CPP14Parser.Identifier) except RecognitionException as re: localctx.exception = re @@ -9532,14 +8620,15 @@ def enumname(self): return localctx - class EnumspecifierContext(ParserRuleContext): + class EnumSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def enumhead(self): - return self.getTypedRuleContext(CPP14Parser.EnumheadContext,0) + def enumHead(self): + return self.getTypedRuleContext(CPP14Parser.EnumHeadContext,0) def LeftBrace(self): @@ -9548,75 +8637,62 @@ def LeftBrace(self): def RightBrace(self): return self.getToken(CPP14Parser.RightBrace, 0) - def enumeratorlist(self): - return self.getTypedRuleContext(CPP14Parser.EnumeratorlistContext,0) + def enumeratorList(self): + return self.getTypedRuleContext(CPP14Parser.EnumeratorListContext,0) def Comma(self): return self.getToken(CPP14Parser.Comma, 0) def getRuleIndex(self): - return CPP14Parser.RULE_enumspecifier + return CPP14Parser.RULE_enumSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumspecifier" ): - listener.enterEnumspecifier(self) + if hasattr( listener, "enterEnumSpecifier" ): + listener.enterEnumSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumspecifier" ): - listener.exitEnumspecifier(self) + if hasattr( listener, "exitEnumSpecifier" ): + listener.exitEnumSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumspecifier" ): - return visitor.visitEnumspecifier(self) + if hasattr( visitor, "visitEnumSpecifier" ): + return visitor.visitEnumSpecifier(self) else: return visitor.visitChildren(self) - def enumspecifier(self): + def enumSpecifier(self): - localctx = CPP14Parser.EnumspecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 166, self.RULE_enumspecifier) + localctx = CPP14Parser.EnumSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 168, self.RULE_enumSpecifier) self._la = 0 # Token type try: - self.state = 1376 + self.enterOuterAlt(localctx, 1) + self.state = 1155 + self.enumHead() + self.state = 1156 + self.match(CPP14Parser.LeftBrace) + self.state = 1161 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,127,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1363 - self.enumhead() - self.state = 1364 - self.match(CPP14Parser.LeftBrace) - self.state = 1366 + _la = self._input.LA(1) + if _la==132: + self.state = 1157 + self.enumeratorList() + self.state = 1159 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Identifier: - self.state = 1365 - self.enumeratorlist(0) - + if _la==122: + self.state = 1158 + self.match(CPP14Parser.Comma) - self.state = 1368 - self.match(CPP14Parser.RightBrace) - pass - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1370 - self.enumhead() - self.state = 1371 - self.match(CPP14Parser.LeftBrace) - self.state = 1372 - self.enumeratorlist(0) - self.state = 1373 - self.match(CPP14Parser.Comma) - self.state = 1374 - self.match(CPP14Parser.RightBrace) - pass + self.state = 1163 + self.match(CPP14Parser.RightBrace) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9626,7 +8702,8 @@ def enumspecifier(self): return localctx - class EnumheadContext(ParserRuleContext): + class EnumHeadContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9636,8 +8713,8 @@ def enumkey(self): return self.getTypedRuleContext(CPP14Parser.EnumkeyContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def Identifier(self): @@ -9647,94 +8724,69 @@ def enumbase(self): return self.getTypedRuleContext(CPP14Parser.EnumbaseContext,0) - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_enumhead + return CPP14Parser.RULE_enumHead def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumhead" ): - listener.enterEnumhead(self) + if hasattr( listener, "enterEnumHead" ): + listener.enterEnumHead(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumhead" ): - listener.exitEnumhead(self) + if hasattr( listener, "exitEnumHead" ): + listener.exitEnumHead(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumhead" ): - return visitor.visitEnumhead(self) + if hasattr( visitor, "visitEnumHead" ): + return visitor.visitEnumHead(self) else: return visitor.visitChildren(self) - def enumhead(self): + def enumHead(self): - localctx = CPP14Parser.EnumheadContext(self, self._ctx, self.state) - self.enterRule(localctx, 168, self.RULE_enumhead) + localctx = CPP14Parser.EnumHeadContext(self, self._ctx, self.state) + self.enterRule(localctx, 170, self.RULE_enumHead) self._la = 0 # Token type try: - self.state = 1397 + self.enterOuterAlt(localctx, 1) + self.state = 1165 + self.enumkey() + self.state = 1167 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,133,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1378 - self.enumkey() - self.state = 1380 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1379 - self.attributespecifierseq(0) - - - self.state = 1383 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Identifier: - self.state = 1382 - self.match(CPP14Parser.Identifier) - - - self.state = 1386 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Colon: - self.state = 1385 - self.enumbase() - + _la = self._input.LA(1) + if _la==10 or _la==87: + self.state = 1166 + self.attributeSpecifierSeq() - pass - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1388 - self.enumkey() - self.state = 1390 + self.state = 1173 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==26 or _la==127 or _la==132: + self.state = 1170 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1389 - self.attributespecifierseq(0) + la_ = self._interp.adaptivePredict(self._input,125,self._ctx) + if la_ == 1: + self.state = 1169 + self.nestedNameSpecifier(0) - self.state = 1392 - self.nestednamespecifier(0) - self.state = 1393 + self.state = 1172 self.match(CPP14Parser.Identifier) - self.state = 1395 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Colon: - self.state = 1394 - self.enumbase() - pass + self.state = 1176 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==126: + self.state = 1175 + self.enumbase() except RecognitionException as re: @@ -9746,7 +8798,8 @@ def enumhead(self): return localctx - class OpaqueenumdeclarationContext(ParserRuleContext): + class OpaqueEnumDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9762,8 +8815,8 @@ def Identifier(self): def Semi(self): return self.getToken(CPP14Parser.Semi, 0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def enumbase(self): @@ -9771,53 +8824,53 @@ def enumbase(self): def getRuleIndex(self): - return CPP14Parser.RULE_opaqueenumdeclaration + return CPP14Parser.RULE_opaqueEnumDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpaqueenumdeclaration" ): - listener.enterOpaqueenumdeclaration(self) + if hasattr( listener, "enterOpaqueEnumDeclaration" ): + listener.enterOpaqueEnumDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpaqueenumdeclaration" ): - listener.exitOpaqueenumdeclaration(self) + if hasattr( listener, "exitOpaqueEnumDeclaration" ): + listener.exitOpaqueEnumDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpaqueenumdeclaration" ): - return visitor.visitOpaqueenumdeclaration(self) + if hasattr( visitor, "visitOpaqueEnumDeclaration" ): + return visitor.visitOpaqueEnumDeclaration(self) else: return visitor.visitChildren(self) - def opaqueenumdeclaration(self): + def opaqueEnumDeclaration(self): - localctx = CPP14Parser.OpaqueenumdeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 170, self.RULE_opaqueenumdeclaration) + localctx = CPP14Parser.OpaqueEnumDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 172, self.RULE_opaqueEnumDeclaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1399 + self.state = 1178 self.enumkey() - self.state = 1401 + self.state = 1180 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1400 - self.attributespecifierseq(0) + if _la==10 or _la==87: + self.state = 1179 + self.attributeSpecifierSeq() - self.state = 1403 + self.state = 1182 self.match(CPP14Parser.Identifier) - self.state = 1405 + self.state = 1184 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Colon: - self.state = 1404 + if _la==126: + self.state = 1183 self.enumbase() - self.state = 1407 + self.state = 1186 self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re @@ -9829,6 +8882,7 @@ def opaqueenumdeclaration(self): class EnumkeyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9866,32 +8920,23 @@ def accept(self, visitor:ParseTreeVisitor): def enumkey(self): localctx = CPP14Parser.EnumkeyContext(self, self._ctx, self.state) - self.enterRule(localctx, 172, self.RULE_enumkey) + self.enterRule(localctx, 174, self.RULE_enumkey) + self._la = 0 # Token type try: - self.state = 1414 + self.enterOuterAlt(localctx, 1) + self.state = 1188 + self.match(CPP14Parser.Enum) + self.state = 1190 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,136,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1409 - self.match(CPP14Parser.Enum) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1410 - self.match(CPP14Parser.Enum) - self.state = 1411 - self.match(CPP14Parser.Class) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1412 - self.match(CPP14Parser.Enum) - self.state = 1413 - self.match(CPP14Parser.Struct) - pass + _la = self._input.LA(1) + if _la==21 or _la==66: + self.state = 1189 + _la = self._input.LA(1) + if not(_la==21 or _la==66): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() except RecognitionException as re: @@ -9904,6 +8949,7 @@ def enumkey(self): class EnumbaseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9912,8 +8958,8 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def Colon(self): return self.getToken(CPP14Parser.Colon, 0) - def typespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.TypespecifierseqContext,0) + def typeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.TypeSpecifierSeqContext,0) def getRuleIndex(self): @@ -9939,13 +8985,13 @@ def accept(self, visitor:ParseTreeVisitor): def enumbase(self): localctx = CPP14Parser.EnumbaseContext(self, self._ctx, self.state) - self.enterRule(localctx, 174, self.RULE_enumbase) + self.enterRule(localctx, 176, self.RULE_enumbase) try: self.enterOuterAlt(localctx, 1) - self.state = 1416 + self.state = 1192 self.match(CPP14Parser.Colon) - self.state = 1417 - self.typespecifierseq() + self.state = 1193 + self.typeSpecifierSeq() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9955,86 +9001,78 @@ def enumbase(self): return localctx - class EnumeratorlistContext(ParserRuleContext): + class EnumeratorListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def enumeratordefinition(self): - return self.getTypedRuleContext(CPP14Parser.EnumeratordefinitionContext,0) - - - def enumeratorlist(self): - return self.getTypedRuleContext(CPP14Parser.EnumeratorlistContext,0) + def enumeratorDefinition(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.EnumeratorDefinitionContext) + else: + return self.getTypedRuleContext(CPP14Parser.EnumeratorDefinitionContext,i) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): - return CPP14Parser.RULE_enumeratorlist + return CPP14Parser.RULE_enumeratorList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumeratorlist" ): - listener.enterEnumeratorlist(self) + if hasattr( listener, "enterEnumeratorList" ): + listener.enterEnumeratorList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumeratorlist" ): - listener.exitEnumeratorlist(self) + if hasattr( listener, "exitEnumeratorList" ): + listener.exitEnumeratorList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumeratorlist" ): - return visitor.visitEnumeratorlist(self) + if hasattr( visitor, "visitEnumeratorList" ): + return visitor.visitEnumeratorList(self) else: return visitor.visitChildren(self) - def enumeratorlist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.EnumeratorlistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 176 - self.enterRecursionRule(localctx, 176, self.RULE_enumeratorlist, _p) + + def enumeratorList(self): + + localctx = CPP14Parser.EnumeratorListContext(self, self._ctx, self.state) + self.enterRule(localctx, 178, self.RULE_enumeratorList) try: self.enterOuterAlt(localctx, 1) - self.state = 1420 - self.enumeratordefinition() - self._ctx.stop = self._input.LT(-1) - self.state = 1427 + self.state = 1195 + self.enumeratorDefinition() + self.state = 1200 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,137,self._ctx) + _alt = self._interp.adaptivePredict(self._input,131,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 = CPP14Parser.EnumeratorlistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_enumeratorlist) - self.state = 1422 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 1423 + self.state = 1196 self.match(CPP14Parser.Comma) - self.state = 1424 - self.enumeratordefinition() - self.state = 1429 + self.state = 1197 + self.enumeratorDefinition() + self.state = 1202 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,137,self._ctx) + _alt = self._interp.adaptivePredict(self._input,131,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class EnumeratordefinitionContext(ParserRuleContext): + class EnumeratorDefinitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10047,53 +9085,47 @@ def enumerator(self): def Assign(self): return self.getToken(CPP14Parser.Assign, 0) - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) + def constantExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_enumeratordefinition + return CPP14Parser.RULE_enumeratorDefinition def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumeratordefinition" ): - listener.enterEnumeratordefinition(self) + if hasattr( listener, "enterEnumeratorDefinition" ): + listener.enterEnumeratorDefinition(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumeratordefinition" ): - listener.exitEnumeratordefinition(self) + if hasattr( listener, "exitEnumeratorDefinition" ): + listener.exitEnumeratorDefinition(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumeratordefinition" ): - return visitor.visitEnumeratordefinition(self) + if hasattr( visitor, "visitEnumeratorDefinition" ): + return visitor.visitEnumeratorDefinition(self) else: return visitor.visitChildren(self) - def enumeratordefinition(self): + def enumeratorDefinition(self): - localctx = CPP14Parser.EnumeratordefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 178, self.RULE_enumeratordefinition) + localctx = CPP14Parser.EnumeratorDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 180, self.RULE_enumeratorDefinition) + self._la = 0 # Token type try: - self.state = 1435 + self.enterOuterAlt(localctx, 1) + self.state = 1203 + self.enumerator() + self.state = 1206 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,138,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1430 - self.enumerator() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1431 - self.enumerator() - self.state = 1432 + _la = self._input.LA(1) + if _la==101: + self.state = 1204 self.match(CPP14Parser.Assign) - self.state = 1433 - self.constantexpression() - pass + self.state = 1205 + self.constantExpression() except RecognitionException as re: @@ -10106,6 +9138,7 @@ def enumeratordefinition(self): class EnumeratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10137,10 +9170,10 @@ def accept(self, visitor:ParseTreeVisitor): def enumerator(self): localctx = CPP14Parser.EnumeratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 180, self.RULE_enumerator) + self.enterRule(localctx, 182, self.RULE_enumerator) try: self.enterOuterAlt(localctx, 1) - self.state = 1437 + self.state = 1208 self.match(CPP14Parser.Identifier) except RecognitionException as re: localctx.exception = re @@ -10151,58 +9184,59 @@ def enumerator(self): return localctx - class NamespacenameContext(ParserRuleContext): + class NamespaceNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def originalnamespacename(self): - return self.getTypedRuleContext(CPP14Parser.OriginalnamespacenameContext,0) + def originalNamespaceName(self): + return self.getTypedRuleContext(CPP14Parser.OriginalNamespaceNameContext,0) - def namespacealias(self): - return self.getTypedRuleContext(CPP14Parser.NamespacealiasContext,0) + def namespaceAlias(self): + return self.getTypedRuleContext(CPP14Parser.NamespaceAliasContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_namespacename + return CPP14Parser.RULE_namespaceName def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNamespacename" ): - listener.enterNamespacename(self) + if hasattr( listener, "enterNamespaceName" ): + listener.enterNamespaceName(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNamespacename" ): - listener.exitNamespacename(self) + if hasattr( listener, "exitNamespaceName" ): + listener.exitNamespaceName(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNamespacename" ): - return visitor.visitNamespacename(self) + if hasattr( visitor, "visitNamespaceName" ): + return visitor.visitNamespaceName(self) else: return visitor.visitChildren(self) - def namespacename(self): + def namespaceName(self): - localctx = CPP14Parser.NamespacenameContext(self, self._ctx, self.state) - self.enterRule(localctx, 182, self.RULE_namespacename) + localctx = CPP14Parser.NamespaceNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 184, self.RULE_namespaceName) try: - self.state = 1441 + self.state = 1212 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,139,self._ctx) + la_ = self._interp.adaptivePredict(self._input,133,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1439 - self.originalnamespacename() + self.state = 1210 + self.originalNamespaceName() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1440 - self.namespacealias() + self.state = 1211 + self.namespaceAlias() pass @@ -10215,7 +9249,8 @@ def namespacename(self): return localctx - class OriginalnamespacenameContext(ParserRuleContext): + class OriginalNamespaceNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10225,32 +9260,32 @@ def Identifier(self): return self.getToken(CPP14Parser.Identifier, 0) def getRuleIndex(self): - return CPP14Parser.RULE_originalnamespacename + return CPP14Parser.RULE_originalNamespaceName def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOriginalnamespacename" ): - listener.enterOriginalnamespacename(self) + if hasattr( listener, "enterOriginalNamespaceName" ): + listener.enterOriginalNamespaceName(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOriginalnamespacename" ): - listener.exitOriginalnamespacename(self) + if hasattr( listener, "exitOriginalNamespaceName" ): + listener.exitOriginalNamespaceName(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOriginalnamespacename" ): - return visitor.visitOriginalnamespacename(self) + if hasattr( visitor, "visitOriginalNamespaceName" ): + return visitor.visitOriginalNamespaceName(self) else: return visitor.visitChildren(self) - def originalnamespacename(self): + def originalNamespaceName(self): - localctx = CPP14Parser.OriginalnamespacenameContext(self, self._ctx, self.state) - self.enterRule(localctx, 184, self.RULE_originalnamespacename) + localctx = CPP14Parser.OriginalNamespaceNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 186, self.RULE_originalNamespaceName) try: self.enterOuterAlt(localctx, 1) - self.state = 1443 + self.state = 1214 self.match(CPP14Parser.Identifier) except RecognitionException as re: localctx.exception = re @@ -10261,61 +9296,98 @@ def originalnamespacename(self): return localctx - class NamespacedefinitionContext(ParserRuleContext): + class NamespaceDefinitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + self.namespaceBody = None # DeclarationseqContext + + def Namespace(self): + return self.getToken(CPP14Parser.Namespace, 0) + + def LeftBrace(self): + return self.getToken(CPP14Parser.LeftBrace, 0) + + def RightBrace(self): + return self.getToken(CPP14Parser.RightBrace, 0) + + def Inline(self): + return self.getToken(CPP14Parser.Inline, 0) - def namednamespacedefinition(self): - return self.getTypedRuleContext(CPP14Parser.NamednamespacedefinitionContext,0) + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) + def originalNamespaceName(self): + return self.getTypedRuleContext(CPP14Parser.OriginalNamespaceNameContext,0) - def unnamednamespacedefinition(self): - return self.getTypedRuleContext(CPP14Parser.UnnamednamespacedefinitionContext,0) + + def declarationseq(self): + return self.getTypedRuleContext(CPP14Parser.DeclarationseqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_namespacedefinition + return CPP14Parser.RULE_namespaceDefinition def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNamespacedefinition" ): - listener.enterNamespacedefinition(self) + if hasattr( listener, "enterNamespaceDefinition" ): + listener.enterNamespaceDefinition(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNamespacedefinition" ): - listener.exitNamespacedefinition(self) + if hasattr( listener, "exitNamespaceDefinition" ): + listener.exitNamespaceDefinition(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNamespacedefinition" ): - return visitor.visitNamespacedefinition(self) + if hasattr( visitor, "visitNamespaceDefinition" ): + return visitor.visitNamespaceDefinition(self) else: return visitor.visitChildren(self) - def namespacedefinition(self): + def namespaceDefinition(self): - localctx = CPP14Parser.NamespacedefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 186, self.RULE_namespacedefinition) + localctx = CPP14Parser.NamespaceDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 188, self.RULE_namespaceDefinition) + self._la = 0 # Token type try: - self.state = 1447 + self.enterOuterAlt(localctx, 1) + self.state = 1217 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==44: + self.state = 1216 + self.match(CPP14Parser.Inline) + + + self.state = 1219 + self.match(CPP14Parser.Namespace) + self.state = 1222 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,140,self._ctx) + la_ = self._interp.adaptivePredict(self._input,135,self._ctx) if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1445 - self.namednamespacedefinition() - pass + self.state = 1220 + self.match(CPP14Parser.Identifier) elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1446 - self.unnamednamespacedefinition() - pass + self.state = 1221 + self.originalNamespaceName() + + + self.state = 1224 + self.match(CPP14Parser.LeftBrace) + self.state = 1226 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 1543754443169808157) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 459384754220313597) != 0): + self.state = 1225 + localctx.namespaceBody = self.declarationseq() + self.state = 1228 + self.match(CPP14Parser.RightBrace) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10325,61 +9397,44 @@ def namespacedefinition(self): return localctx - class NamednamespacedefinitionContext(ParserRuleContext): + class NamespaceAliasContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def originalnamespacedefinition(self): - return self.getTypedRuleContext(CPP14Parser.OriginalnamespacedefinitionContext,0) + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) - - def extensionnamespacedefinition(self): - return self.getTypedRuleContext(CPP14Parser.ExtensionnamespacedefinitionContext,0) - - - def getRuleIndex(self): - return CPP14Parser.RULE_namednamespacedefinition + def getRuleIndex(self): + return CPP14Parser.RULE_namespaceAlias def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNamednamespacedefinition" ): - listener.enterNamednamespacedefinition(self) + if hasattr( listener, "enterNamespaceAlias" ): + listener.enterNamespaceAlias(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNamednamespacedefinition" ): - listener.exitNamednamespacedefinition(self) + if hasattr( listener, "exitNamespaceAlias" ): + listener.exitNamespaceAlias(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNamednamespacedefinition" ): - return visitor.visitNamednamespacedefinition(self) + if hasattr( visitor, "visitNamespaceAlias" ): + return visitor.visitNamespaceAlias(self) else: return visitor.visitChildren(self) - def namednamespacedefinition(self): + def namespaceAlias(self): - localctx = CPP14Parser.NamednamespacedefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 188, self.RULE_namednamespacedefinition) + localctx = CPP14Parser.NamespaceAliasContext(self, self._ctx, self.state) + self.enterRule(localctx, 190, self.RULE_namespaceAlias) try: - self.state = 1451 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,141,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1449 - self.originalnamespacedefinition() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1450 - self.extensionnamespacedefinition() - pass - - + self.enterOuterAlt(localctx, 1) + self.state = 1230 + self.match(CPP14Parser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10389,7 +9444,8 @@ def namednamespacedefinition(self): return localctx - class OriginalnamespacedefinitionContext(ParserRuleContext): + class NamespaceAliasDefinitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10401,64 +9457,52 @@ def Namespace(self): def Identifier(self): return self.getToken(CPP14Parser.Identifier, 0) - def LeftBrace(self): - return self.getToken(CPP14Parser.LeftBrace, 0) - - def namespacebody(self): - return self.getTypedRuleContext(CPP14Parser.NamespacebodyContext,0) + def Assign(self): + return self.getToken(CPP14Parser.Assign, 0) + def qualifiednamespacespecifier(self): + return self.getTypedRuleContext(CPP14Parser.QualifiednamespacespecifierContext,0) - def RightBrace(self): - return self.getToken(CPP14Parser.RightBrace, 0) - def Inline(self): - return self.getToken(CPP14Parser.Inline, 0) + def Semi(self): + return self.getToken(CPP14Parser.Semi, 0) def getRuleIndex(self): - return CPP14Parser.RULE_originalnamespacedefinition + return CPP14Parser.RULE_namespaceAliasDefinition def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOriginalnamespacedefinition" ): - listener.enterOriginalnamespacedefinition(self) + if hasattr( listener, "enterNamespaceAliasDefinition" ): + listener.enterNamespaceAliasDefinition(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOriginalnamespacedefinition" ): - listener.exitOriginalnamespacedefinition(self) + if hasattr( listener, "exitNamespaceAliasDefinition" ): + listener.exitNamespaceAliasDefinition(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOriginalnamespacedefinition" ): - return visitor.visitOriginalnamespacedefinition(self) + if hasattr( visitor, "visitNamespaceAliasDefinition" ): + return visitor.visitNamespaceAliasDefinition(self) else: return visitor.visitChildren(self) - def originalnamespacedefinition(self): + def namespaceAliasDefinition(self): - localctx = CPP14Parser.OriginalnamespacedefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 190, self.RULE_originalnamespacedefinition) - self._la = 0 # Token type + localctx = CPP14Parser.NamespaceAliasDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 192, self.RULE_namespaceAliasDefinition) try: self.enterOuterAlt(localctx, 1) - self.state = 1454 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Inline: - self.state = 1453 - self.match(CPP14Parser.Inline) - - - self.state = 1456 + self.state = 1232 self.match(CPP14Parser.Namespace) - self.state = 1457 + self.state = 1233 self.match(CPP14Parser.Identifier) - self.state = 1458 - self.match(CPP14Parser.LeftBrace) - self.state = 1459 - self.namespacebody() - self.state = 1460 - self.match(CPP14Parser.RightBrace) + self.state = 1234 + self.match(CPP14Parser.Assign) + self.state = 1235 + self.qualifiednamespacespecifier() + self.state = 1236 + self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10468,77 +9512,57 @@ def originalnamespacedefinition(self): return localctx - class ExtensionnamespacedefinitionContext(ParserRuleContext): + class QualifiednamespacespecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Namespace(self): - return self.getToken(CPP14Parser.Namespace, 0) - - def originalnamespacename(self): - return self.getTypedRuleContext(CPP14Parser.OriginalnamespacenameContext,0) - - - def LeftBrace(self): - return self.getToken(CPP14Parser.LeftBrace, 0) - - def namespacebody(self): - return self.getTypedRuleContext(CPP14Parser.NamespacebodyContext,0) + def namespaceName(self): + return self.getTypedRuleContext(CPP14Parser.NamespaceNameContext,0) - def RightBrace(self): - return self.getToken(CPP14Parser.RightBrace, 0) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) - def Inline(self): - return self.getToken(CPP14Parser.Inline, 0) def getRuleIndex(self): - return CPP14Parser.RULE_extensionnamespacedefinition + return CPP14Parser.RULE_qualifiednamespacespecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExtensionnamespacedefinition" ): - listener.enterExtensionnamespacedefinition(self) + if hasattr( listener, "enterQualifiednamespacespecifier" ): + listener.enterQualifiednamespacespecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExtensionnamespacedefinition" ): - listener.exitExtensionnamespacedefinition(self) + if hasattr( listener, "exitQualifiednamespacespecifier" ): + listener.exitQualifiednamespacespecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExtensionnamespacedefinition" ): - return visitor.visitExtensionnamespacedefinition(self) + if hasattr( visitor, "visitQualifiednamespacespecifier" ): + return visitor.visitQualifiednamespacespecifier(self) else: return visitor.visitChildren(self) - def extensionnamespacedefinition(self): + def qualifiednamespacespecifier(self): - localctx = CPP14Parser.ExtensionnamespacedefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 192, self.RULE_extensionnamespacedefinition) - self._la = 0 # Token type + localctx = CPP14Parser.QualifiednamespacespecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 194, self.RULE_qualifiednamespacespecifier) try: self.enterOuterAlt(localctx, 1) - self.state = 1463 + self.state = 1239 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Inline: - self.state = 1462 - self.match(CPP14Parser.Inline) + la_ = self._interp.adaptivePredict(self._input,137,self._ctx) + if la_ == 1: + self.state = 1238 + self.nestedNameSpecifier(0) - self.state = 1465 - self.match(CPP14Parser.Namespace) - self.state = 1466 - self.originalnamespacename() - self.state = 1467 - self.match(CPP14Parser.LeftBrace) - self.state = 1468 - self.namespacebody() - self.state = 1469 - self.match(CPP14Parser.RightBrace) + self.state = 1241 + self.namespaceName() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10548,71 +9572,88 @@ def extensionnamespacedefinition(self): return localctx - class UnnamednamespacedefinitionContext(ParserRuleContext): + class UsingDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Namespace(self): - return self.getToken(CPP14Parser.Namespace, 0) + def Using(self): + return self.getToken(CPP14Parser.Using, 0) - def LeftBrace(self): - return self.getToken(CPP14Parser.LeftBrace, 0) + def unqualifiedId(self): + return self.getTypedRuleContext(CPP14Parser.UnqualifiedIdContext,0) + + + def Semi(self): + return self.getToken(CPP14Parser.Semi, 0) - def namespacebody(self): - return self.getTypedRuleContext(CPP14Parser.NamespacebodyContext,0) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) - def RightBrace(self): - return self.getToken(CPP14Parser.RightBrace, 0) + def Doublecolon(self): + return self.getToken(CPP14Parser.Doublecolon, 0) - def Inline(self): - return self.getToken(CPP14Parser.Inline, 0) + def Typename_(self): + return self.getToken(CPP14Parser.Typename_, 0) def getRuleIndex(self): - return CPP14Parser.RULE_unnamednamespacedefinition + return CPP14Parser.RULE_usingDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnnamednamespacedefinition" ): - listener.enterUnnamednamespacedefinition(self) + if hasattr( listener, "enterUsingDeclaration" ): + listener.enterUsingDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnnamednamespacedefinition" ): - listener.exitUnnamednamespacedefinition(self) + if hasattr( listener, "exitUsingDeclaration" ): + listener.exitUsingDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnnamednamespacedefinition" ): - return visitor.visitUnnamednamespacedefinition(self) + if hasattr( visitor, "visitUsingDeclaration" ): + return visitor.visitUsingDeclaration(self) else: return visitor.visitChildren(self) - def unnamednamespacedefinition(self): + def usingDeclaration(self): - localctx = CPP14Parser.UnnamednamespacedefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 194, self.RULE_unnamednamespacedefinition) + localctx = CPP14Parser.UsingDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 196, self.RULE_usingDeclaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1472 + self.state = 1243 + self.match(CPP14Parser.Using) + self.state = 1249 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Inline: - self.state = 1471 - self.match(CPP14Parser.Inline) + la_ = self._interp.adaptivePredict(self._input,139,self._ctx) + if la_ == 1: + self.state = 1245 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==76: + self.state = 1244 + self.match(CPP14Parser.Typename_) - self.state = 1474 - self.match(CPP14Parser.Namespace) - self.state = 1475 - self.match(CPP14Parser.LeftBrace) - self.state = 1476 - self.namespacebody() - self.state = 1477 - self.match(CPP14Parser.RightBrace) + self.state = 1247 + self.nestedNameSpecifier(0) + pass + + elif la_ == 2: + self.state = 1248 + self.match(CPP14Parser.Doublecolon) + pass + + + self.state = 1251 + self.unqualifiedId() + self.state = 1252 + self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10622,51 +9663,85 @@ def unnamednamespacedefinition(self): return localctx - class NamespacebodyContext(ParserRuleContext): + class UsingDirectiveContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def declarationseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclarationseqContext,0) + def Using(self): + return self.getToken(CPP14Parser.Using, 0) + + def Namespace(self): + return self.getToken(CPP14Parser.Namespace, 0) + + def namespaceName(self): + return self.getTypedRuleContext(CPP14Parser.NamespaceNameContext,0) + + + def Semi(self): + return self.getToken(CPP14Parser.Semi, 0) + + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) + + + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_namespacebody + return CPP14Parser.RULE_usingDirective def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNamespacebody" ): - listener.enterNamespacebody(self) + if hasattr( listener, "enterUsingDirective" ): + listener.enterUsingDirective(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNamespacebody" ): - listener.exitNamespacebody(self) + if hasattr( listener, "exitUsingDirective" ): + listener.exitUsingDirective(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNamespacebody" ): - return visitor.visitNamespacebody(self) + if hasattr( visitor, "visitUsingDirective" ): + return visitor.visitUsingDirective(self) else: return visitor.visitChildren(self) - def namespacebody(self): + def usingDirective(self): - localctx = CPP14Parser.NamespacebodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 196, self.RULE_namespacebody) + localctx = CPP14Parser.UsingDirectiveContext(self, self._ctx, self.state) + self.enterRule(localctx, 198, self.RULE_usingDirective) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1480 + self.state = 1255 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__2) | (1 << CPP14Parser.Alignas) | (1 << CPP14Parser.Asm) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Constexpr) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Explicit) | (1 << CPP14Parser.Extern) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Friend) | (1 << CPP14Parser.Inline) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.Mutable) | (1 << CPP14Parser.Namespace) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Register) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Static))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CPP14Parser.Static_assert - 64)) | (1 << (CPP14Parser.Struct - 64)) | (1 << (CPP14Parser.Template - 64)) | (1 << (CPP14Parser.Thread_local - 64)) | (1 << (CPP14Parser.Typedef - 64)) | (1 << (CPP14Parser.Typename_ - 64)) | (1 << (CPP14Parser.Union - 64)) | (1 << (CPP14Parser.Unsigned - 64)) | (1 << (CPP14Parser.Using - 64)) | (1 << (CPP14Parser.Virtual - 64)) | (1 << (CPP14Parser.Void - 64)) | (1 << (CPP14Parser.Volatile - 64)) | (1 << (CPP14Parser.Wchar - 64)) | (1 << (CPP14Parser.LeftParen - 64)) | (1 << (CPP14Parser.LeftBracket - 64)) | (1 << (CPP14Parser.Star - 64)) | (1 << (CPP14Parser.And - 64)) | (1 << (CPP14Parser.Tilde - 64)))) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & ((1 << (CPP14Parser.Doublecolon - 128)) | (1 << (CPP14Parser.Semi - 128)) | (1 << (CPP14Parser.Ellipsis - 128)) | (1 << (CPP14Parser.Identifier - 128)))) != 0): - self.state = 1479 - self.declarationseq(0) + if _la==10 or _la==87: + self.state = 1254 + self.attributeSpecifierSeq() + + + self.state = 1257 + self.match(CPP14Parser.Using) + self.state = 1258 + self.match(CPP14Parser.Namespace) + self.state = 1260 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,141,self._ctx) + if la_ == 1: + self.state = 1259 + self.nestedNameSpecifier(0) + self.state = 1262 + self.namespaceName() + self.state = 1263 + self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10676,43 +9751,64 @@ def namespacebody(self): return localctx - class NamespacealiasContext(ParserRuleContext): + class AsmDefinitionContext(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(CPP14Parser.Identifier, 0) + def Asm(self): + return self.getToken(CPP14Parser.Asm, 0) + + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) + + def StringLiteral(self): + return self.getToken(CPP14Parser.StringLiteral, 0) + + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) + + def Semi(self): + return self.getToken(CPP14Parser.Semi, 0) def getRuleIndex(self): - return CPP14Parser.RULE_namespacealias + return CPP14Parser.RULE_asmDefinition def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNamespacealias" ): - listener.enterNamespacealias(self) + if hasattr( listener, "enterAsmDefinition" ): + listener.enterAsmDefinition(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNamespacealias" ): - listener.exitNamespacealias(self) + if hasattr( listener, "exitAsmDefinition" ): + listener.exitAsmDefinition(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNamespacealias" ): - return visitor.visitNamespacealias(self) + if hasattr( visitor, "visitAsmDefinition" ): + return visitor.visitAsmDefinition(self) else: return visitor.visitChildren(self) - def namespacealias(self): + def asmDefinition(self): - localctx = CPP14Parser.NamespacealiasContext(self, self._ctx, self.state) - self.enterRule(localctx, 198, self.RULE_namespacealias) + localctx = CPP14Parser.AsmDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 200, self.RULE_asmDefinition) try: self.enterOuterAlt(localctx, 1) - self.state = 1482 - self.match(CPP14Parser.Identifier) + self.state = 1265 + self.match(CPP14Parser.Asm) + self.state = 1266 + self.match(CPP14Parser.LeftParen) + self.state = 1267 + self.match(CPP14Parser.StringLiteral) + self.state = 1268 + self.match(CPP14Parser.RightParen) + self.state = 1269 + self.match(CPP14Parser.Semi) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10722,64 +9818,88 @@ def namespacealias(self): return localctx - class NamespacealiasdefinitionContext(ParserRuleContext): + class LinkageSpecificationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Namespace(self): - return self.getToken(CPP14Parser.Namespace, 0) + def Extern(self): + return self.getToken(CPP14Parser.Extern, 0) - def Identifier(self): - return self.getToken(CPP14Parser.Identifier, 0) + def StringLiteral(self): + return self.getToken(CPP14Parser.StringLiteral, 0) - def Assign(self): - return self.getToken(CPP14Parser.Assign, 0) + def LeftBrace(self): + return self.getToken(CPP14Parser.LeftBrace, 0) - def qualifiednamespacespecifier(self): - return self.getTypedRuleContext(CPP14Parser.QualifiednamespacespecifierContext,0) + def RightBrace(self): + return self.getToken(CPP14Parser.RightBrace, 0) + + def declaration(self): + return self.getTypedRuleContext(CPP14Parser.DeclarationContext,0) - def Semi(self): - return self.getToken(CPP14Parser.Semi, 0) + def declarationseq(self): + return self.getTypedRuleContext(CPP14Parser.DeclarationseqContext,0) + def getRuleIndex(self): - return CPP14Parser.RULE_namespacealiasdefinition + return CPP14Parser.RULE_linkageSpecification def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNamespacealiasdefinition" ): - listener.enterNamespacealiasdefinition(self) + if hasattr( listener, "enterLinkageSpecification" ): + listener.enterLinkageSpecification(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNamespacealiasdefinition" ): - listener.exitNamespacealiasdefinition(self) + if hasattr( listener, "exitLinkageSpecification" ): + listener.exitLinkageSpecification(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNamespacealiasdefinition" ): - return visitor.visitNamespacealiasdefinition(self) + if hasattr( visitor, "visitLinkageSpecification" ): + return visitor.visitLinkageSpecification(self) else: return visitor.visitChildren(self) - def namespacealiasdefinition(self): + def linkageSpecification(self): - localctx = CPP14Parser.NamespacealiasdefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 200, self.RULE_namespacealiasdefinition) + localctx = CPP14Parser.LinkageSpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 202, self.RULE_linkageSpecification) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1484 - self.match(CPP14Parser.Namespace) - self.state = 1485 - self.match(CPP14Parser.Identifier) - self.state = 1486 - self.match(CPP14Parser.Assign) - self.state = 1487 - self.qualifiednamespacespecifier() - self.state = 1488 - self.match(CPP14Parser.Semi) + self.state = 1271 + self.match(CPP14Parser.Extern) + self.state = 1272 + self.match(CPP14Parser.StringLiteral) + self.state = 1279 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [89]: + self.state = 1273 + self.match(CPP14Parser.LeftBrace) + self.state = 1275 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 1543754443169808157) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 459384754220313597) != 0): + self.state = 1274 + self.declarationseq() + + + self.state = 1277 + self.match(CPP14Parser.RightBrace) + pass + elif token in [10, 12, 13, 14, 18, 19, 20, 21, 22, 23, 26, 30, 33, 34, 36, 39, 41, 44, 45, 46, 47, 48, 52, 57, 60, 61, 63, 64, 66, 68, 70, 74, 76, 77, 78, 79, 80, 81, 82, 83, 85, 87, 93, 97, 99, 118, 127, 128, 131, 132]: + self.state = 1278 + self.declaration() + pass + else: + raise NoViableAltException(self) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10789,56 +9909,60 @@ def namespacealiasdefinition(self): return localctx - class QualifiednamespacespecifierContext(ParserRuleContext): + class AttributeSpecifierSeqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def namespacename(self): - return self.getTypedRuleContext(CPP14Parser.NamespacenameContext,0) - - - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def attributeSpecifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.AttributeSpecifierContext) + else: + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierContext,i) def getRuleIndex(self): - return CPP14Parser.RULE_qualifiednamespacespecifier + return CPP14Parser.RULE_attributeSpecifierSeq def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterQualifiednamespacespecifier" ): - listener.enterQualifiednamespacespecifier(self) + if hasattr( listener, "enterAttributeSpecifierSeq" ): + listener.enterAttributeSpecifierSeq(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitQualifiednamespacespecifier" ): - listener.exitQualifiednamespacespecifier(self) + if hasattr( listener, "exitAttributeSpecifierSeq" ): + listener.exitAttributeSpecifierSeq(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitQualifiednamespacespecifier" ): - return visitor.visitQualifiednamespacespecifier(self) + if hasattr( visitor, "visitAttributeSpecifierSeq" ): + return visitor.visitAttributeSpecifierSeq(self) else: return visitor.visitChildren(self) - def qualifiednamespacespecifier(self): + def attributeSpecifierSeq(self): - localctx = CPP14Parser.QualifiednamespacespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 202, self.RULE_qualifiednamespacespecifier) + localctx = CPP14Parser.AttributeSpecifierSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 204, self.RULE_attributeSpecifierSeq) try: self.enterOuterAlt(localctx, 1) - self.state = 1491 + self.state = 1282 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,146,self._ctx) - if la_ == 1: - self.state = 1490 - self.nestednamespecifier(0) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1281 + self.attributeSpecifier() + else: + raise NoViableAltException(self) + self.state = 1284 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,144,self._ctx) - self.state = 1493 - self.namespacename() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10848,93 +9972,88 @@ def qualifiednamespacespecifier(self): return localctx - class UsingdeclarationContext(ParserRuleContext): + class AttributeSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Using(self): - return self.getToken(CPP14Parser.Using, 0) - - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) - + def LeftBracket(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.LeftBracket) + else: + return self.getToken(CPP14Parser.LeftBracket, i) - def unqualifiedid(self): - return self.getTypedRuleContext(CPP14Parser.UnqualifiedidContext,0) + def RightBracket(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.RightBracket) + else: + return self.getToken(CPP14Parser.RightBracket, i) + def attributeList(self): + return self.getTypedRuleContext(CPP14Parser.AttributeListContext,0) - def Semi(self): - return self.getToken(CPP14Parser.Semi, 0) - def Typename_(self): - return self.getToken(CPP14Parser.Typename_, 0) + def alignmentspecifier(self): + return self.getTypedRuleContext(CPP14Parser.AlignmentspecifierContext,0) - def Doublecolon(self): - return self.getToken(CPP14Parser.Doublecolon, 0) def getRuleIndex(self): - return CPP14Parser.RULE_usingdeclaration + return CPP14Parser.RULE_attributeSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUsingdeclaration" ): - listener.enterUsingdeclaration(self) + if hasattr( listener, "enterAttributeSpecifier" ): + listener.enterAttributeSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUsingdeclaration" ): - listener.exitUsingdeclaration(self) + if hasattr( listener, "exitAttributeSpecifier" ): + listener.exitAttributeSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUsingdeclaration" ): - return visitor.visitUsingdeclaration(self) + if hasattr( visitor, "visitAttributeSpecifier" ): + return visitor.visitAttributeSpecifier(self) else: return visitor.visitChildren(self) - def usingdeclaration(self): + def attributeSpecifier(self): - localctx = CPP14Parser.UsingdeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 204, self.RULE_usingdeclaration) + localctx = CPP14Parser.AttributeSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 206, self.RULE_attributeSpecifier) self._la = 0 # Token type try: - self.state = 1508 + self.state = 1294 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,148,self._ctx) - if la_ == 1: + token = self._input.LA(1) + if token in [87]: self.enterOuterAlt(localctx, 1) - self.state = 1495 - self.match(CPP14Parser.Using) - self.state = 1497 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Typename_: - self.state = 1496 - self.match(CPP14Parser.Typename_) + self.state = 1286 + self.match(CPP14Parser.LeftBracket) + self.state = 1287 + self.match(CPP14Parser.LeftBracket) + self.state = 1289 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==132: + self.state = 1288 + self.attributeList() - self.state = 1499 - self.nestednamespecifier(0) - self.state = 1500 - self.unqualifiedid() - self.state = 1501 - self.match(CPP14Parser.Semi) + self.state = 1291 + self.match(CPP14Parser.RightBracket) + self.state = 1292 + self.match(CPP14Parser.RightBracket) pass - - elif la_ == 2: + elif token in [10]: self.enterOuterAlt(localctx, 2) - self.state = 1503 - self.match(CPP14Parser.Using) - self.state = 1504 - self.match(CPP14Parser.Doublecolon) - self.state = 1505 - self.unqualifiedid() - self.state = 1506 - self.match(CPP14Parser.Semi) + self.state = 1293 + self.alignmentspecifier() pass - + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re @@ -10945,84 +10064,88 @@ def usingdeclaration(self): return localctx - class UsingdirectiveContext(ParserRuleContext): + class AlignmentspecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Using(self): - return self.getToken(CPP14Parser.Using, 0) - - def Namespace(self): - return self.getToken(CPP14Parser.Namespace, 0) + def Alignas(self): + return self.getToken(CPP14Parser.Alignas, 0) - def namespacename(self): - return self.getTypedRuleContext(CPP14Parser.NamespacenameContext,0) + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) - def Semi(self): - return self.getToken(CPP14Parser.Semi, 0) + def theTypeId(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeIdContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def constantExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,0) - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def Ellipsis(self): + return self.getToken(CPP14Parser.Ellipsis, 0) def getRuleIndex(self): - return CPP14Parser.RULE_usingdirective + return CPP14Parser.RULE_alignmentspecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUsingdirective" ): - listener.enterUsingdirective(self) + if hasattr( listener, "enterAlignmentspecifier" ): + listener.enterAlignmentspecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUsingdirective" ): - listener.exitUsingdirective(self) + if hasattr( listener, "exitAlignmentspecifier" ): + listener.exitAlignmentspecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUsingdirective" ): - return visitor.visitUsingdirective(self) + if hasattr( visitor, "visitAlignmentspecifier" ): + return visitor.visitAlignmentspecifier(self) else: return visitor.visitChildren(self) - def usingdirective(self): + def alignmentspecifier(self): - localctx = CPP14Parser.UsingdirectiveContext(self, self._ctx, self.state) - self.enterRule(localctx, 206, self.RULE_usingdirective) + localctx = CPP14Parser.AlignmentspecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 208, self.RULE_alignmentspecifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1511 + self.state = 1296 + self.match(CPP14Parser.Alignas) + self.state = 1297 + self.match(CPP14Parser.LeftParen) + self.state = 1300 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1510 - self.attributespecifierseq(0) + la_ = self._interp.adaptivePredict(self._input,147,self._ctx) + if la_ == 1: + self.state = 1298 + self.theTypeId() + pass + + elif la_ == 2: + self.state = 1299 + self.constantExpression() + pass - self.state = 1513 - self.match(CPP14Parser.Using) - self.state = 1514 - self.match(CPP14Parser.Namespace) - self.state = 1516 + self.state = 1303 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,150,self._ctx) - if la_ == 1: - self.state = 1515 - self.nestednamespecifier(0) + _la = self._input.LA(1) + if _la==131: + self.state = 1302 + self.match(CPP14Parser.Ellipsis) - self.state = 1518 - self.namespacename() - self.state = 1519 - self.match(CPP14Parser.Semi) + self.state = 1305 + self.match(CPP14Parser.RightParen) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11032,63 +10155,78 @@ def usingdirective(self): return localctx - class AsmdefinitionContext(ParserRuleContext): + class AttributeListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Asm(self): - return self.getToken(CPP14Parser.Asm, 0) - - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) + def attribute(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.AttributeContext) + else: + return self.getTypedRuleContext(CPP14Parser.AttributeContext,i) - def Stringliteral(self): - return self.getToken(CPP14Parser.Stringliteral, 0) - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) - def Semi(self): - return self.getToken(CPP14Parser.Semi, 0) + def Ellipsis(self): + return self.getToken(CPP14Parser.Ellipsis, 0) def getRuleIndex(self): - return CPP14Parser.RULE_asmdefinition + return CPP14Parser.RULE_attributeList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAsmdefinition" ): - listener.enterAsmdefinition(self) + if hasattr( listener, "enterAttributeList" ): + listener.enterAttributeList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAsmdefinition" ): - listener.exitAsmdefinition(self) + if hasattr( listener, "exitAttributeList" ): + listener.exitAttributeList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAsmdefinition" ): - return visitor.visitAsmdefinition(self) + if hasattr( visitor, "visitAttributeList" ): + return visitor.visitAttributeList(self) else: return visitor.visitChildren(self) - def asmdefinition(self): + def attributeList(self): - localctx = CPP14Parser.AsmdefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 208, self.RULE_asmdefinition) + localctx = CPP14Parser.AttributeListContext(self, self._ctx, self.state) + self.enterRule(localctx, 210, self.RULE_attributeList) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1521 - self.match(CPP14Parser.Asm) - self.state = 1522 - self.match(CPP14Parser.LeftParen) - self.state = 1523 - self.match(CPP14Parser.Stringliteral) - self.state = 1524 - self.match(CPP14Parser.RightParen) - self.state = 1525 - self.match(CPP14Parser.Semi) + self.state = 1307 + self.attribute() + self.state = 1312 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==122: + self.state = 1308 + self.match(CPP14Parser.Comma) + self.state = 1309 + self.attribute() + self.state = 1314 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1316 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==131: + self.state = 1315 + self.match(CPP14Parser.Ellipsis) + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11098,90 +10236,72 @@ def asmdefinition(self): return localctx - class LinkagespecificationContext(ParserRuleContext): + class AttributeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Extern(self): - return self.getToken(CPP14Parser.Extern, 0) - - def Stringliteral(self): - return self.getToken(CPP14Parser.Stringliteral, 0) - - def LeftBrace(self): - return self.getToken(CPP14Parser.LeftBrace, 0) + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) - def RightBrace(self): - return self.getToken(CPP14Parser.RightBrace, 0) + def attributeNamespace(self): + return self.getTypedRuleContext(CPP14Parser.AttributeNamespaceContext,0) - def declarationseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclarationseqContext,0) + def Doublecolon(self): + return self.getToken(CPP14Parser.Doublecolon, 0) - def declaration(self): - return self.getTypedRuleContext(CPP14Parser.DeclarationContext,0) + def attributeArgumentClause(self): + return self.getTypedRuleContext(CPP14Parser.AttributeArgumentClauseContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_linkagespecification + return CPP14Parser.RULE_attribute def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLinkagespecification" ): - listener.enterLinkagespecification(self) + if hasattr( listener, "enterAttribute" ): + listener.enterAttribute(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLinkagespecification" ): - listener.exitLinkagespecification(self) + if hasattr( listener, "exitAttribute" ): + listener.exitAttribute(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLinkagespecification" ): - return visitor.visitLinkagespecification(self) + if hasattr( visitor, "visitAttribute" ): + return visitor.visitAttribute(self) else: return visitor.visitChildren(self) - def linkagespecification(self): + def attribute(self): - localctx = CPP14Parser.LinkagespecificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 210, self.RULE_linkagespecification) + localctx = CPP14Parser.AttributeContext(self, self._ctx, self.state) + self.enterRule(localctx, 212, self.RULE_attribute) self._la = 0 # Token type try: - self.state = 1537 + self.enterOuterAlt(localctx, 1) + self.state = 1321 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,152,self._ctx) + la_ = self._interp.adaptivePredict(self._input,151,self._ctx) if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1527 - self.match(CPP14Parser.Extern) - self.state = 1528 - self.match(CPP14Parser.Stringliteral) - self.state = 1529 - self.match(CPP14Parser.LeftBrace) - self.state = 1531 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__2) | (1 << CPP14Parser.Alignas) | (1 << CPP14Parser.Asm) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Constexpr) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Explicit) | (1 << CPP14Parser.Extern) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Friend) | (1 << CPP14Parser.Inline) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.Mutable) | (1 << CPP14Parser.Namespace) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Register) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Static))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CPP14Parser.Static_assert - 64)) | (1 << (CPP14Parser.Struct - 64)) | (1 << (CPP14Parser.Template - 64)) | (1 << (CPP14Parser.Thread_local - 64)) | (1 << (CPP14Parser.Typedef - 64)) | (1 << (CPP14Parser.Typename_ - 64)) | (1 << (CPP14Parser.Union - 64)) | (1 << (CPP14Parser.Unsigned - 64)) | (1 << (CPP14Parser.Using - 64)) | (1 << (CPP14Parser.Virtual - 64)) | (1 << (CPP14Parser.Void - 64)) | (1 << (CPP14Parser.Volatile - 64)) | (1 << (CPP14Parser.Wchar - 64)) | (1 << (CPP14Parser.LeftParen - 64)) | (1 << (CPP14Parser.LeftBracket - 64)) | (1 << (CPP14Parser.Star - 64)) | (1 << (CPP14Parser.And - 64)) | (1 << (CPP14Parser.Tilde - 64)))) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & ((1 << (CPP14Parser.Doublecolon - 128)) | (1 << (CPP14Parser.Semi - 128)) | (1 << (CPP14Parser.Ellipsis - 128)) | (1 << (CPP14Parser.Identifier - 128)))) != 0): - self.state = 1530 - self.declarationseq(0) - + self.state = 1318 + self.attributeNamespace() + self.state = 1319 + self.match(CPP14Parser.Doublecolon) - self.state = 1533 - self.match(CPP14Parser.RightBrace) - pass - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1534 - self.match(CPP14Parser.Extern) - self.state = 1535 - self.match(CPP14Parser.Stringliteral) - self.state = 1536 - self.declaration() - pass + self.state = 1323 + self.match(CPP14Parser.Identifier) + self.state = 1325 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==85: + self.state = 1324 + self.attributeArgumentClause() except RecognitionException as re: @@ -11193,155 +10313,109 @@ def linkagespecification(self): return localctx - class AttributespecifierseqContext(ParserRuleContext): + class AttributeNamespaceContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def attributespecifier(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierContext,0) - - - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) - + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) def getRuleIndex(self): - return CPP14Parser.RULE_attributespecifierseq + return CPP14Parser.RULE_attributeNamespace def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttributespecifierseq" ): - listener.enterAttributespecifierseq(self) + if hasattr( listener, "enterAttributeNamespace" ): + listener.enterAttributeNamespace(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttributespecifierseq" ): - listener.exitAttributespecifierseq(self) + if hasattr( listener, "exitAttributeNamespace" ): + listener.exitAttributeNamespace(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttributespecifierseq" ): - return visitor.visitAttributespecifierseq(self) + if hasattr( visitor, "visitAttributeNamespace" ): + return visitor.visitAttributeNamespace(self) else: return visitor.visitChildren(self) - def attributespecifierseq(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.AttributespecifierseqContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 212 - self.enterRecursionRule(localctx, 212, self.RULE_attributespecifierseq, _p) + + def attributeNamespace(self): + + localctx = CPP14Parser.AttributeNamespaceContext(self, self._ctx, self.state) + self.enterRule(localctx, 214, self.RULE_attributeNamespace) try: self.enterOuterAlt(localctx, 1) - self.state = 1540 - self.attributespecifier() - self._ctx.stop = self._input.LT(-1) - self.state = 1546 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,153,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 = CPP14Parser.AttributespecifierseqContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_attributespecifierseq) - self.state = 1542 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 1543 - self.attributespecifier() - self.state = 1548 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,153,self._ctx) - + self.state = 1327 + self.match(CPP14Parser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class AttributespecifierContext(ParserRuleContext): + class AttributeArgumentClauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def LeftBracket(self, i:int=None): - if i is None: - return self.getTokens(CPP14Parser.LeftBracket) - else: - return self.getToken(CPP14Parser.LeftBracket, i) - - def attributelist(self): - return self.getTypedRuleContext(CPP14Parser.AttributelistContext,0) - + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) - def RightBracket(self, i:int=None): - if i is None: - return self.getTokens(CPP14Parser.RightBracket) - else: - return self.getToken(CPP14Parser.RightBracket, i) + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) - def alignmentspecifier(self): - return self.getTypedRuleContext(CPP14Parser.AlignmentspecifierContext,0) + def balancedTokenSeq(self): + return self.getTypedRuleContext(CPP14Parser.BalancedTokenSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_attributespecifier + return CPP14Parser.RULE_attributeArgumentClause def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttributespecifier" ): - listener.enterAttributespecifier(self) + if hasattr( listener, "enterAttributeArgumentClause" ): + listener.enterAttributeArgumentClause(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttributespecifier" ): - listener.exitAttributespecifier(self) + if hasattr( listener, "exitAttributeArgumentClause" ): + listener.exitAttributeArgumentClause(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttributespecifier" ): - return visitor.visitAttributespecifier(self) + if hasattr( visitor, "visitAttributeArgumentClause" ): + return visitor.visitAttributeArgumentClause(self) else: return visitor.visitChildren(self) - def attributespecifier(self): + def attributeArgumentClause(self): - localctx = CPP14Parser.AttributespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 214, self.RULE_attributespecifier) + localctx = CPP14Parser.AttributeArgumentClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 216, self.RULE_attributeArgumentClause) + self._la = 0 # Token type try: - self.state = 1556 + self.enterOuterAlt(localctx, 1) + self.state = 1329 + self.match(CPP14Parser.LeftParen) + self.state = 1331 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.LeftBracket]: - self.enterOuterAlt(localctx, 1) - self.state = 1549 - self.match(CPP14Parser.LeftBracket) - self.state = 1550 - self.match(CPP14Parser.LeftBracket) - self.state = 1551 - self.attributelist(0) - self.state = 1552 - self.match(CPP14Parser.RightBracket) - self.state = 1553 - self.match(CPP14Parser.RightBracket) - pass - elif token in [CPP14Parser.Alignas]: - self.enterOuterAlt(localctx, 2) - self.state = 1555 - self.alignmentspecifier() - pass - else: - raise NoViableAltException(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -2) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -88080385) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 262143) != 0): + self.state = 1330 + self.balancedTokenSeq() + + self.state = 1333 + self.match(CPP14Parser.RightParen) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11351,101 +10425,58 @@ def attributespecifier(self): return localctx - class AlignmentspecifierContext(ParserRuleContext): + class BalancedTokenSeqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Alignas(self): - return self.getToken(CPP14Parser.Alignas, 0) - - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) - - def thetypeid(self): - return self.getTypedRuleContext(CPP14Parser.ThetypeidContext,0) - - - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) - - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) - - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) + def balancedtoken(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.BalancedtokenContext) + else: + return self.getTypedRuleContext(CPP14Parser.BalancedtokenContext,i) def getRuleIndex(self): - return CPP14Parser.RULE_alignmentspecifier + return CPP14Parser.RULE_balancedTokenSeq def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlignmentspecifier" ): - listener.enterAlignmentspecifier(self) + if hasattr( listener, "enterBalancedTokenSeq" ): + listener.enterBalancedTokenSeq(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlignmentspecifier" ): - listener.exitAlignmentspecifier(self) + if hasattr( listener, "exitBalancedTokenSeq" ): + listener.exitBalancedTokenSeq(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlignmentspecifier" ): - return visitor.visitAlignmentspecifier(self) + if hasattr( visitor, "visitBalancedTokenSeq" ): + return visitor.visitBalancedTokenSeq(self) else: return visitor.visitChildren(self) - def alignmentspecifier(self): + def balancedTokenSeq(self): - localctx = CPP14Parser.AlignmentspecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 216, self.RULE_alignmentspecifier) + localctx = CPP14Parser.BalancedTokenSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 218, self.RULE_balancedTokenSeq) self._la = 0 # Token type try: - self.state = 1574 + self.enterOuterAlt(localctx, 1) + self.state = 1336 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,157,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1558 - self.match(CPP14Parser.Alignas) - self.state = 1559 - self.match(CPP14Parser.LeftParen) - self.state = 1560 - self.thetypeid() - self.state = 1562 + _la = self._input.LA(1) + while True: + self.state = 1335 + self.balancedtoken() + self.state = 1338 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Ellipsis: - self.state = 1561 - self.match(CPP14Parser.Ellipsis) - - - self.state = 1564 - self.match(CPP14Parser.RightParen) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1566 - self.match(CPP14Parser.Alignas) - self.state = 1567 - self.match(CPP14Parser.LeftParen) - self.state = 1568 - self.constantexpression() - self.state = 1570 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Ellipsis: - self.state = 1569 - self.match(CPP14Parser.Ellipsis) - - - self.state = 1572 - self.match(CPP14Parser.RightParen) - pass - + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & -2) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -88080385) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 262143) != 0)): + break except RecognitionException as re: localctx.exception = re @@ -11456,185 +10487,203 @@ def alignmentspecifier(self): return localctx - class AttributelistContext(ParserRuleContext): + class BalancedtokenContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def attribute(self): - return self.getTypedRuleContext(CPP14Parser.AttributeContext,0) + def LeftParen(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.LeftParen) + else: + return self.getToken(CPP14Parser.LeftParen, i) + def balancedTokenSeq(self): + return self.getTypedRuleContext(CPP14Parser.BalancedTokenSeqContext,0) - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) - def attributelist(self): - return self.getTypedRuleContext(CPP14Parser.AttributelistContext,0) + def RightParen(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.RightParen) + else: + return self.getToken(CPP14Parser.RightParen, i) + def LeftBracket(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.LeftBracket) + else: + return self.getToken(CPP14Parser.LeftBracket, i) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) + def RightBracket(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.RightBracket) + else: + return self.getToken(CPP14Parser.RightBracket, i) + + def LeftBrace(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.LeftBrace) + else: + return self.getToken(CPP14Parser.LeftBrace, i) + + def RightBrace(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.RightBrace) + else: + return self.getToken(CPP14Parser.RightBrace, i) def getRuleIndex(self): - return CPP14Parser.RULE_attributelist + return CPP14Parser.RULE_balancedtoken def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttributelist" ): - listener.enterAttributelist(self) + if hasattr( listener, "enterBalancedtoken" ): + listener.enterBalancedtoken(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttributelist" ): - listener.exitAttributelist(self) + if hasattr( listener, "exitBalancedtoken" ): + listener.exitBalancedtoken(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttributelist" ): - return visitor.visitAttributelist(self) + if hasattr( visitor, "visitBalancedtoken" ): + return visitor.visitBalancedtoken(self) else: return visitor.visitChildren(self) - def attributelist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.AttributelistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 218 - self.enterRecursionRule(localctx, 218, self.RULE_attributelist, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1583 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,159,self._ctx) - if la_ == 1: - self.state = 1578 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,158,self._ctx) - if la_ == 1: - self.state = 1577 - self.attribute() + def balancedtoken(self): + localctx = CPP14Parser.BalancedtokenContext(self, self._ctx, self.state) + self.enterRule(localctx, 220, self.RULE_balancedtoken) + self._la = 0 # Token type + try: + self.state = 1357 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [85]: + self.enterOuterAlt(localctx, 1) + self.state = 1340 + self.match(CPP14Parser.LeftParen) + self.state = 1341 + self.balancedTokenSeq() + self.state = 1342 + self.match(CPP14Parser.RightParen) pass - - elif la_ == 2: - self.state = 1580 - self.attribute() - self.state = 1581 - self.match(CPP14Parser.Ellipsis) + elif token in [87]: + self.enterOuterAlt(localctx, 2) + self.state = 1344 + self.match(CPP14Parser.LeftBracket) + self.state = 1345 + self.balancedTokenSeq() + self.state = 1346 + self.match(CPP14Parser.RightBracket) pass + elif token in [89]: + self.enterOuterAlt(localctx, 3) + self.state = 1348 + self.match(CPP14Parser.LeftBrace) + self.state = 1349 + self.balancedTokenSeq() + self.state = 1350 + self.match(CPP14Parser.RightBrace) + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145]: + self.enterOuterAlt(localctx, 4) + self.state = 1353 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1352 + _la = self._input.LA(1) + if _la <= 0 or ((((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 63) != 0): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() - - self._ctx.stop = self._input.LT(-1) - self.state = 1597 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,162,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 = 1595 + else: + raise NoViableAltException(self) + self.state = 1355 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,161,self._ctx) - if la_ == 1: - localctx = CPP14Parser.AttributelistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_attributelist) - self.state = 1585 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 1586 - self.match(CPP14Parser.Comma) - self.state = 1588 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,160,self._ctx) - if la_ == 1: - self.state = 1587 - self.attribute() - - - pass - - elif la_ == 2: - localctx = CPP14Parser.AttributelistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_attributelist) - self.state = 1590 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 1591 - self.match(CPP14Parser.Comma) - self.state = 1592 - self.attribute() - self.state = 1593 - self.match(CPP14Parser.Ellipsis) - pass + _alt = self._interp.adaptivePredict(self._input,155,self._ctx) - - self.state = 1599 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,162,self._ctx) + pass + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class AttributeContext(ParserRuleContext): + class InitDeclaratorListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def attributetoken(self): - return self.getTypedRuleContext(CPP14Parser.AttributetokenContext,0) - + def initDeclarator(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.InitDeclaratorContext) + else: + return self.getTypedRuleContext(CPP14Parser.InitDeclaratorContext,i) - def attributeargumentclause(self): - return self.getTypedRuleContext(CPP14Parser.AttributeargumentclauseContext,0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): - return CPP14Parser.RULE_attribute + return CPP14Parser.RULE_initDeclaratorList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttribute" ): - listener.enterAttribute(self) + if hasattr( listener, "enterInitDeclaratorList" ): + listener.enterInitDeclaratorList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttribute" ): - listener.exitAttribute(self) + if hasattr( listener, "exitInitDeclaratorList" ): + listener.exitInitDeclaratorList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttribute" ): - return visitor.visitAttribute(self) + if hasattr( visitor, "visitInitDeclaratorList" ): + return visitor.visitInitDeclaratorList(self) else: return visitor.visitChildren(self) - def attribute(self): + def initDeclaratorList(self): - localctx = CPP14Parser.AttributeContext(self, self._ctx, self.state) - self.enterRule(localctx, 220, self.RULE_attribute) + localctx = CPP14Parser.InitDeclaratorListContext(self, self._ctx, self.state) + self.enterRule(localctx, 222, self.RULE_initDeclaratorList) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1600 - self.attributetoken() - self.state = 1602 + self.state = 1359 + self.initDeclarator() + self.state = 1364 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,163,self._ctx) - if la_ == 1: - self.state = 1601 - self.attributeargumentclause() - + _la = self._input.LA(1) + while _la==122: + self.state = 1360 + self.match(CPP14Parser.Comma) + self.state = 1361 + self.initDeclarator() + self.state = 1366 + self._errHandler.sync(self) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re @@ -11645,58 +10694,56 @@ def attribute(self): return localctx - class AttributetokenContext(ParserRuleContext): + class InitDeclaratorContext(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(CPP14Parser.Identifier, 0) + def declarator(self): + return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) + - def attributescopedtoken(self): - return self.getTypedRuleContext(CPP14Parser.AttributescopedtokenContext,0) + def initializer(self): + return self.getTypedRuleContext(CPP14Parser.InitializerContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_attributetoken + return CPP14Parser.RULE_initDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttributetoken" ): - listener.enterAttributetoken(self) + if hasattr( listener, "enterInitDeclarator" ): + listener.enterInitDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttributetoken" ): - listener.exitAttributetoken(self) + if hasattr( listener, "exitInitDeclarator" ): + listener.exitInitDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttributetoken" ): - return visitor.visitAttributetoken(self) + if hasattr( visitor, "visitInitDeclarator" ): + return visitor.visitInitDeclarator(self) else: return visitor.visitChildren(self) - def attributetoken(self): + def initDeclarator(self): - localctx = CPP14Parser.AttributetokenContext(self, self._ctx, self.state) - self.enterRule(localctx, 222, self.RULE_attributetoken) + localctx = CPP14Parser.InitDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 224, self.RULE_initDeclarator) + self._la = 0 # Token type try: - self.state = 1606 + self.enterOuterAlt(localctx, 1) + self.state = 1367 + self.declarator() + self.state = 1369 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,164,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1604 - self.match(CPP14Parser.Identifier) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1605 - self.attributescopedtoken() - pass + _la = self._input.LA(1) + if ((((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 65553) != 0): + self.state = 1368 + self.initializer() except RecognitionException as re: @@ -11708,54 +10755,74 @@ def attributetoken(self): return localctx - class AttributescopedtokenContext(ParserRuleContext): + class DeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def attributenamespace(self): - return self.getTypedRuleContext(CPP14Parser.AttributenamespaceContext,0) + def pointerDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.PointerDeclaratorContext,0) - def Doublecolon(self): - return self.getToken(CPP14Parser.Doublecolon, 0) + def noPointerDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.NoPointerDeclaratorContext,0) + + + def parametersAndQualifiers(self): + return self.getTypedRuleContext(CPP14Parser.ParametersAndQualifiersContext,0) + + + def trailingReturnType(self): + return self.getTypedRuleContext(CPP14Parser.TrailingReturnTypeContext,0) - def Identifier(self): - return self.getToken(CPP14Parser.Identifier, 0) def getRuleIndex(self): - return CPP14Parser.RULE_attributescopedtoken + return CPP14Parser.RULE_declarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttributescopedtoken" ): - listener.enterAttributescopedtoken(self) + if hasattr( listener, "enterDeclarator" ): + listener.enterDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttributescopedtoken" ): - listener.exitAttributescopedtoken(self) + if hasattr( listener, "exitDeclarator" ): + listener.exitDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttributescopedtoken" ): - return visitor.visitAttributescopedtoken(self) + if hasattr( visitor, "visitDeclarator" ): + return visitor.visitDeclarator(self) else: return visitor.visitChildren(self) - def attributescopedtoken(self): + def declarator(self): - localctx = CPP14Parser.AttributescopedtokenContext(self, self._ctx, self.state) - self.enterRule(localctx, 224, self.RULE_attributescopedtoken) + localctx = CPP14Parser.DeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 226, self.RULE_declarator) try: - self.enterOuterAlt(localctx, 1) - self.state = 1608 - self.attributenamespace() - self.state = 1609 - self.match(CPP14Parser.Doublecolon) - self.state = 1610 - self.match(CPP14Parser.Identifier) + self.state = 1376 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,159,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1371 + self.pointerDeclarator() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1372 + self.noPointerDeclarator(0) + self.state = 1373 + self.parametersAndQualifiers() + self.state = 1374 + self.trailingReturnType() + pass + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11765,43 +10832,78 @@ def attributescopedtoken(self): return localctx - class AttributenamespaceContext(ParserRuleContext): + class PointerDeclaratorContext(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(CPP14Parser.Identifier, 0) + def noPointerDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.NoPointerDeclaratorContext,0) + + + def pointerOperator(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.PointerOperatorContext) + else: + return self.getTypedRuleContext(CPP14Parser.PointerOperatorContext,i) + + + def Const(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Const) + else: + return self.getToken(CPP14Parser.Const, i) def getRuleIndex(self): - return CPP14Parser.RULE_attributenamespace + return CPP14Parser.RULE_pointerDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttributenamespace" ): - listener.enterAttributenamespace(self) + if hasattr( listener, "enterPointerDeclarator" ): + listener.enterPointerDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttributenamespace" ): - listener.exitAttributenamespace(self) + if hasattr( listener, "exitPointerDeclarator" ): + listener.exitPointerDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttributenamespace" ): - return visitor.visitAttributenamespace(self) + if hasattr( visitor, "visitPointerDeclarator" ): + return visitor.visitPointerDeclarator(self) else: return visitor.visitChildren(self) - def attributenamespace(self): + def pointerDeclarator(self): - localctx = CPP14Parser.AttributenamespaceContext(self, self._ctx, self.state) - self.enterRule(localctx, 226, self.RULE_attributenamespace) + localctx = CPP14Parser.PointerDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 228, self.RULE_pointerDeclarator) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1612 - self.match(CPP14Parser.Identifier) + self.state = 1384 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,161,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1378 + self.pointerOperator() + self.state = 1380 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==22: + self.state = 1379 + self.match(CPP14Parser.Const) + + + self.state = 1386 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,161,self._ctx) + + self.state = 1387 + self.noPointerDeclarator(0) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11811,133 +10913,154 @@ def attributenamespace(self): return localctx - class AttributeargumentclauseContext(ParserRuleContext): + class NoPointerDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def declaratorid(self): + return self.getTypedRuleContext(CPP14Parser.DeclaratoridContext,0) + + + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) + + def LeftParen(self): return self.getToken(CPP14Parser.LeftParen, 0) - def balancedtokenseq(self): - return self.getTypedRuleContext(CPP14Parser.BalancedtokenseqContext,0) + def pointerDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.PointerDeclaratorContext,0) def RightParen(self): return self.getToken(CPP14Parser.RightParen, 0) - def getRuleIndex(self): - return CPP14Parser.RULE_attributeargumentclause + def noPointerDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.NoPointerDeclaratorContext,0) - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttributeargumentclause" ): - listener.enterAttributeargumentclause(self) - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttributeargumentclause" ): - listener.exitAttributeargumentclause(self) + def parametersAndQualifiers(self): + return self.getTypedRuleContext(CPP14Parser.ParametersAndQualifiersContext,0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttributeargumentclause" ): - return visitor.visitAttributeargumentclause(self) - else: - return visitor.visitChildren(self) + def LeftBracket(self): + return self.getToken(CPP14Parser.LeftBracket, 0) + def RightBracket(self): + return self.getToken(CPP14Parser.RightBracket, 0) - - def attributeargumentclause(self): - - localctx = CPP14Parser.AttributeargumentclauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 228, self.RULE_attributeargumentclause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1614 - self.match(CPP14Parser.LeftParen) - self.state = 1615 - self.balancedtokenseq(0) - self.state = 1616 - self.match(CPP14Parser.RightParen) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BalancedtokenseqContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def balancedtoken(self): - return self.getTypedRuleContext(CPP14Parser.BalancedtokenContext,0) - - - def balancedtokenseq(self): - return self.getTypedRuleContext(CPP14Parser.BalancedtokenseqContext,0) + def constantExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_balancedtokenseq + return CPP14Parser.RULE_noPointerDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBalancedtokenseq" ): - listener.enterBalancedtokenseq(self) + if hasattr( listener, "enterNoPointerDeclarator" ): + listener.enterNoPointerDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBalancedtokenseq" ): - listener.exitBalancedtokenseq(self) + if hasattr( listener, "exitNoPointerDeclarator" ): + listener.exitNoPointerDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBalancedtokenseq" ): - return visitor.visitBalancedtokenseq(self) + if hasattr( visitor, "visitNoPointerDeclarator" ): + return visitor.visitNoPointerDeclarator(self) else: return visitor.visitChildren(self) - def balancedtokenseq(self, _p:int=0): + def noPointerDeclarator(self, _p:int=0): _parentctx = self._ctx _parentState = self.state - localctx = CPP14Parser.BalancedtokenseqContext(self, self._ctx, _parentState) + localctx = CPP14Parser.NoPointerDeclaratorContext(self, self._ctx, _parentState) _prevctx = localctx _startState = 230 - self.enterRecursionRule(localctx, 230, self.RULE_balancedtokenseq, _p) + self.enterRecursionRule(localctx, 230, self.RULE_noPointerDeclarator, _p) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1620 + self.state = 1398 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,165,self._ctx) - if la_ == 1: - self.state = 1619 - self.balancedtoken() + token = self._input.LA(1) + if token in [26, 52, 99, 127, 131, 132]: + self.state = 1390 + self.declaratorid() + self.state = 1392 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,162,self._ctx) + if la_ == 1: + self.state = 1391 + self.attributeSpecifierSeq() + + pass + elif token in [85]: + self.state = 1394 + self.match(CPP14Parser.LeftParen) + self.state = 1395 + self.pointerDeclarator() + self.state = 1396 + self.match(CPP14Parser.RightParen) + pass + else: + raise NoViableAltException(self) self._ctx.stop = self._input.LT(-1) - self.state = 1626 + self.state = 1414 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,166,self._ctx) + _alt = self._interp.adaptivePredict(self._input,167,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 = CPP14Parser.BalancedtokenseqContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_balancedtokenseq) - self.state = 1622 - if not self.precpred(self._ctx, 1): + localctx = CPP14Parser.NoPointerDeclaratorContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_noPointerDeclarator) + self.state = 1400 + if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 1623 - self.balancedtoken() - self.state = 1628 + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 1410 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [85]: + self.state = 1401 + self.parametersAndQualifiers() + pass + elif token in [87]: + self.state = 1402 + self.match(CPP14Parser.LeftBracket) + self.state = 1404 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474384133137) != 0) or _la==132: + self.state = 1403 + self.constantExpression() + + + self.state = 1406 + self.match(CPP14Parser.RightBracket) + self.state = 1408 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,165,self._ctx) + if la_ == 1: + self.state = 1407 + self.attributeSpecifierSeq() + + + pass + else: + raise NoViableAltException(self) + + self.state = 1416 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,166,self._ctx) + _alt = self._interp.adaptivePredict(self._input,167,self._ctx) except RecognitionException as re: localctx.exception = re @@ -11948,132 +11071,109 @@ def balancedtokenseq(self, _p:int=0): return localctx - class BalancedtokenContext(ParserRuleContext): + class ParametersAndQualifiersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def LeftParen(self, i:int=None): - if i is None: - return self.getTokens(CPP14Parser.LeftParen) - else: - return self.getToken(CPP14Parser.LeftParen, i) + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) - def balancedtokenseq(self): - return self.getTypedRuleContext(CPP14Parser.BalancedtokenseqContext,0) + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) + def parameterDeclarationClause(self): + return self.getTypedRuleContext(CPP14Parser.ParameterDeclarationClauseContext,0) - def RightParen(self, i:int=None): - if i is None: - return self.getTokens(CPP14Parser.RightParen) - else: - return self.getToken(CPP14Parser.RightParen, i) - def LeftBracket(self, i:int=None): - if i is None: - return self.getTokens(CPP14Parser.LeftBracket) - else: - return self.getToken(CPP14Parser.LeftBracket, i) + def cvqualifierseq(self): + return self.getTypedRuleContext(CPP14Parser.CvqualifierseqContext,0) - def RightBracket(self, i:int=None): - if i is None: - return self.getTokens(CPP14Parser.RightBracket) - else: - return self.getToken(CPP14Parser.RightBracket, i) - def LeftBrace(self, i:int=None): - if i is None: - return self.getTokens(CPP14Parser.LeftBrace) - else: - return self.getToken(CPP14Parser.LeftBrace, i) + def refqualifier(self): + return self.getTypedRuleContext(CPP14Parser.RefqualifierContext,0) + + + def exceptionSpecification(self): + return self.getTypedRuleContext(CPP14Parser.ExceptionSpecificationContext,0) + + + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) - def RightBrace(self, i:int=None): - if i is None: - return self.getTokens(CPP14Parser.RightBrace) - else: - return self.getToken(CPP14Parser.RightBrace, i) def getRuleIndex(self): - return CPP14Parser.RULE_balancedtoken + return CPP14Parser.RULE_parametersAndQualifiers def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBalancedtoken" ): - listener.enterBalancedtoken(self) + if hasattr( listener, "enterParametersAndQualifiers" ): + listener.enterParametersAndQualifiers(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBalancedtoken" ): - listener.exitBalancedtoken(self) + if hasattr( listener, "exitParametersAndQualifiers" ): + listener.exitParametersAndQualifiers(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBalancedtoken" ): - return visitor.visitBalancedtoken(self) + if hasattr( visitor, "visitParametersAndQualifiers" ): + return visitor.visitParametersAndQualifiers(self) else: return visitor.visitChildren(self) - def balancedtoken(self): + def parametersAndQualifiers(self): - localctx = CPP14Parser.BalancedtokenContext(self, self._ctx, self.state) - self.enterRule(localctx, 232, self.RULE_balancedtoken) + localctx = CPP14Parser.ParametersAndQualifiersContext(self, self._ctx, self.state) + self.enterRule(localctx, 232, self.RULE_parametersAndQualifiers) self._la = 0 # Token type try: - self.state = 1646 + self.enterOuterAlt(localctx, 1) + self.state = 1417 + self.match(CPP14Parser.LeftParen) + self.state = 1419 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.LeftParen]: - self.enterOuterAlt(localctx, 1) - self.state = 1629 - self.match(CPP14Parser.LeftParen) - self.state = 1630 - self.balancedtokenseq(0) - self.state = 1631 - self.match(CPP14Parser.RightParen) - pass - elif token in [CPP14Parser.LeftBracket]: - self.enterOuterAlt(localctx, 2) - self.state = 1633 - self.match(CPP14Parser.LeftBracket) - self.state = 1634 - self.balancedtokenseq(0) - self.state = 1635 - self.match(CPP14Parser.RightBracket) - pass - elif token in [CPP14Parser.LeftBrace]: - self.enterOuterAlt(localctx, 3) - self.state = 1637 - self.match(CPP14Parser.LeftBrace) - self.state = 1638 - self.balancedtokenseq(0) - self.state = 1639 - self.match(CPP14Parser.RightBrace) - pass - elif token in [CPP14Parser.T__0, CPP14Parser.T__1, CPP14Parser.T__2, CPP14Parser.T__3, CPP14Parser.T__4, CPP14Parser.T__5, CPP14Parser.T__6, CPP14Parser.T__7, CPP14Parser.MultiLineMacro, CPP14Parser.Directive, CPP14Parser.Alignas, CPP14Parser.Alignof, CPP14Parser.Asm, CPP14Parser.Auto, CPP14Parser.Bool, CPP14Parser.Break, CPP14Parser.Case, CPP14Parser.Catch, CPP14Parser.Char, CPP14Parser.Char16, CPP14Parser.Char32, CPP14Parser.Class, CPP14Parser.Const, CPP14Parser.Constexpr, CPP14Parser.Const_cast, CPP14Parser.Continue, CPP14Parser.Decltype, CPP14Parser.Default, CPP14Parser.Delete, CPP14Parser.Do, CPP14Parser.Double, CPP14Parser.Dynamic_cast, CPP14Parser.Else, CPP14Parser.Enum, CPP14Parser.Explicit, CPP14Parser.Export, CPP14Parser.Extern, CPP14Parser.Final, CPP14Parser.Float, CPP14Parser.For, CPP14Parser.Friend, CPP14Parser.Goto, CPP14Parser.If, CPP14Parser.Inline, CPP14Parser.Int, CPP14Parser.Long, CPP14Parser.Mutable, CPP14Parser.Namespace, CPP14Parser.New, CPP14Parser.Noexcept, CPP14Parser.Nullptr, CPP14Parser.Operator, CPP14Parser.Override, CPP14Parser.Private, CPP14Parser.Protected, CPP14Parser.Public, CPP14Parser.Register, CPP14Parser.Reinterpret_cast, CPP14Parser.Return, CPP14Parser.Short, CPP14Parser.Signed, CPP14Parser.Sizeof, CPP14Parser.Static, CPP14Parser.Static_assert, CPP14Parser.Static_cast, CPP14Parser.Struct, CPP14Parser.Switch, CPP14Parser.Template, CPP14Parser.This, CPP14Parser.Thread_local, CPP14Parser.Throw, CPP14Parser.Try, CPP14Parser.Typedef, CPP14Parser.Typeid_, CPP14Parser.Typename_, CPP14Parser.Union, CPP14Parser.Unsigned, CPP14Parser.Using, CPP14Parser.Virtual, CPP14Parser.Void, CPP14Parser.Volatile, CPP14Parser.Wchar, CPP14Parser.While, CPP14Parser.Plus, CPP14Parser.Minus, CPP14Parser.Star, CPP14Parser.Div, CPP14Parser.Mod, CPP14Parser.Caret, CPP14Parser.And, CPP14Parser.Or, CPP14Parser.Tilde, CPP14Parser.Not, CPP14Parser.Assign, CPP14Parser.Less, CPP14Parser.Greater, CPP14Parser.PlusAssign, CPP14Parser.MinusAssign, CPP14Parser.StarAssign, CPP14Parser.DivAssign, CPP14Parser.ModAssign, CPP14Parser.XorAssign, CPP14Parser.AndAssign, CPP14Parser.OrAssign, CPP14Parser.LeftShift, CPP14Parser.RightShift, CPP14Parser.LeftShiftAssign, CPP14Parser.RightShiftAssign, CPP14Parser.Equal, CPP14Parser.NotEqual, CPP14Parser.LessEqual, CPP14Parser.GreaterEqual, CPP14Parser.AndAnd, CPP14Parser.OrOr, CPP14Parser.PlusPlus, CPP14Parser.MinusMinus, CPP14Parser.Comma, CPP14Parser.ArrowStar, CPP14Parser.Arrow, CPP14Parser.Question, CPP14Parser.Colon, CPP14Parser.Doublecolon, CPP14Parser.Semi, CPP14Parser.Dot, CPP14Parser.DotStar, CPP14Parser.Ellipsis, CPP14Parser.Identifier, CPP14Parser.Integerliteral, CPP14Parser.Decimalliteral, CPP14Parser.Octalliteral, CPP14Parser.Hexadecimalliteral, CPP14Parser.Binaryliteral, CPP14Parser.Integersuffix, CPP14Parser.Characterliteral, CPP14Parser.Floatingliteral, CPP14Parser.Stringliteral, CPP14Parser.Userdefinedintegerliteral, CPP14Parser.Userdefinedfloatingliteral, CPP14Parser.Userdefinedstringliteral, CPP14Parser.Userdefinedcharacterliteral, CPP14Parser.Whitespace, CPP14Parser.Newline, CPP14Parser.BlockComment, CPP14Parser.LineComment]: - self.enterOuterAlt(localctx, 4) - self.state = 1642 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 1641 - _la = self._input.LA(1) - if _la <= 0 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (CPP14Parser.LeftParen - 84)) | (1 << (CPP14Parser.RightParen - 84)) | (1 << (CPP14Parser.LeftBracket - 84)) | (1 << (CPP14Parser.RightBracket - 84)) | (1 << (CPP14Parser.LeftBrace - 84)) | (1 << (CPP14Parser.RightBrace - 84)))) != 0): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() + _la = self._input.LA(1) + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 1237504995584196377) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 297237575406461917) != 0): + self.state = 1418 + self.parameterDeclarationClause() - else: - raise NoViableAltException(self) - self.state = 1644 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,167,self._ctx) - pass - else: - raise NoViableAltException(self) + self.state = 1421 + self.match(CPP14Parser.RightParen) + self.state = 1423 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,169,self._ctx) + if la_ == 1: + self.state = 1422 + self.cvqualifierseq() + + + self.state = 1426 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,170,self._ctx) + if la_ == 1: + self.state = 1425 + self.refqualifier() + + + self.state = 1429 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,171,self._ctx) + if la_ == 1: + self.state = 1428 + self.exceptionSpecification() + + + self.state = 1432 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,172,self._ctx) + if la_ == 1: + self.state = 1431 + self.attributeSpecifierSeq() + except RecognitionException as re: localctx.exception = re @@ -12084,134 +11184,177 @@ def balancedtoken(self): return localctx - class InitdeclaratorlistContext(ParserRuleContext): + class TrailingReturnTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def initdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.InitdeclaratorContext,0) + def Arrow(self): + return self.getToken(CPP14Parser.Arrow, 0) + def trailingTypeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.TrailingTypeSpecifierSeqContext,0) - def initdeclaratorlist(self): - return self.getTypedRuleContext(CPP14Parser.InitdeclaratorlistContext,0) + def abstractDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.AbstractDeclaratorContext,0) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) def getRuleIndex(self): - return CPP14Parser.RULE_initdeclaratorlist + return CPP14Parser.RULE_trailingReturnType def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInitdeclaratorlist" ): - listener.enterInitdeclaratorlist(self) + if hasattr( listener, "enterTrailingReturnType" ): + listener.enterTrailingReturnType(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInitdeclaratorlist" ): - listener.exitInitdeclaratorlist(self) + if hasattr( listener, "exitTrailingReturnType" ): + listener.exitTrailingReturnType(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInitdeclaratorlist" ): - return visitor.visitInitdeclaratorlist(self) + if hasattr( visitor, "visitTrailingReturnType" ): + return visitor.visitTrailingReturnType(self) else: return visitor.visitChildren(self) - def initdeclaratorlist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.InitdeclaratorlistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 234 - self.enterRecursionRule(localctx, 234, self.RULE_initdeclaratorlist, _p) + + def trailingReturnType(self): + + localctx = CPP14Parser.TrailingReturnTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 234, self.RULE_trailingReturnType) try: self.enterOuterAlt(localctx, 1) - self.state = 1649 - self.initdeclarator() - self._ctx.stop = self._input.LT(-1) - self.state = 1656 + self.state = 1434 + self.match(CPP14Parser.Arrow) + self.state = 1435 + self.trailingTypeSpecifierSeq() + self.state = 1437 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,169,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 = CPP14Parser.InitdeclaratorlistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_initdeclaratorlist) - self.state = 1651 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 1652 - self.match(CPP14Parser.Comma) - self.state = 1653 - self.initdeclarator() - self.state = 1658 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,169,self._ctx) + la_ = self._interp.adaptivePredict(self._input,173,self._ctx) + if la_ == 1: + self.state = 1436 + self.abstractDeclarator() + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class InitdeclaratorContext(ParserRuleContext): + class PointerOperatorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def declarator(self): - return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) + def And(self): + return self.getToken(CPP14Parser.And, 0) + def AndAnd(self): + return self.getToken(CPP14Parser.AndAnd, 0) - def initializer(self): - return self.getTypedRuleContext(CPP14Parser.InitializerContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) + + + def Star(self): + return self.getToken(CPP14Parser.Star, 0) + + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) + + + def cvqualifierseq(self): + return self.getTypedRuleContext(CPP14Parser.CvqualifierseqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_initdeclarator + return CPP14Parser.RULE_pointerOperator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInitdeclarator" ): - listener.enterInitdeclarator(self) + if hasattr( listener, "enterPointerOperator" ): + listener.enterPointerOperator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInitdeclarator" ): - listener.exitInitdeclarator(self) + if hasattr( listener, "exitPointerOperator" ): + listener.exitPointerOperator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInitdeclarator" ): - return visitor.visitInitdeclarator(self) + if hasattr( visitor, "visitPointerOperator" ): + return visitor.visitPointerOperator(self) else: return visitor.visitChildren(self) - def initdeclarator(self): + def pointerOperator(self): - localctx = CPP14Parser.InitdeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 236, self.RULE_initdeclarator) + localctx = CPP14Parser.PointerOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 236, self.RULE_pointerOperator) + self._la = 0 # Token type try: - self.enterOuterAlt(localctx, 1) - self.state = 1659 - self.declarator() - self.state = 1661 + self.state = 1453 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,170,self._ctx) - if la_ == 1: - self.state = 1660 - self.initializer() + token = self._input.LA(1) + if token in [97, 118]: + self.enterOuterAlt(localctx, 1) + self.state = 1439 + _la = self._input.LA(1) + if not(_la==97 or _la==118): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1441 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,174,self._ctx) + if la_ == 1: + self.state = 1440 + self.attributeSpecifierSeq() + + + pass + elif token in [26, 93, 127, 132]: + self.enterOuterAlt(localctx, 2) + self.state = 1444 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==26 or _la==127 or _la==132: + self.state = 1443 + self.nestedNameSpecifier(0) + + + self.state = 1446 + self.match(CPP14Parser.Star) + self.state = 1448 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,176,self._ctx) + if la_ == 1: + self.state = 1447 + self.attributeSpecifierSeq() + + + self.state = 1451 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,177,self._ctx) + if la_ == 1: + self.state = 1450 + self.cvqualifierseq() + + pass + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re @@ -12222,72 +11365,59 @@ def initdeclarator(self): return localctx - class DeclaratorContext(ParserRuleContext): + class CvqualifierseqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def ptrdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.PtrdeclaratorContext,0) + def cvQualifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.CvQualifierContext) + else: + return self.getTypedRuleContext(CPP14Parser.CvQualifierContext,i) - def noptrdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrdeclaratorContext,0) + def getRuleIndex(self): + return CPP14Parser.RULE_cvqualifierseq - - def parametersandqualifiers(self): - return self.getTypedRuleContext(CPP14Parser.ParametersandqualifiersContext,0) - - - def trailingreturntype(self): - return self.getTypedRuleContext(CPP14Parser.TrailingreturntypeContext,0) - - - def getRuleIndex(self): - return CPP14Parser.RULE_declarator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclarator" ): - listener.enterDeclarator(self) + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCvqualifierseq" ): + listener.enterCvqualifierseq(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclarator" ): - listener.exitDeclarator(self) + if hasattr( listener, "exitCvqualifierseq" ): + listener.exitCvqualifierseq(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclarator" ): - return visitor.visitDeclarator(self) + if hasattr( visitor, "visitCvqualifierseq" ): + return visitor.visitCvqualifierseq(self) else: return visitor.visitChildren(self) - def declarator(self): + def cvqualifierseq(self): - localctx = CPP14Parser.DeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 238, self.RULE_declarator) + localctx = CPP14Parser.CvqualifierseqContext(self, self._ctx, self.state) + self.enterRule(localctx, 238, self.RULE_cvqualifierseq) try: - self.state = 1668 + self.enterOuterAlt(localctx, 1) + self.state = 1456 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,171,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1663 - self.ptrdeclarator() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1664 - self.noptrdeclarator(0) - self.state = 1665 - self.parametersandqualifiers() - self.state = 1666 - self.trailingreturntype() - pass + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1455 + self.cvQualifier() + else: + raise NoViableAltException(self) + self.state = 1458 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,179,self._ctx) except RecognitionException as re: localctx.exception = re @@ -12298,67 +11428,53 @@ def declarator(self): return localctx - class PtrdeclaratorContext(ParserRuleContext): + class CvQualifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def noptrdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrdeclaratorContext,0) - - - def ptroperator(self): - return self.getTypedRuleContext(CPP14Parser.PtroperatorContext,0) - - - def ptrdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.PtrdeclaratorContext,0) + def Const(self): + return self.getToken(CPP14Parser.Const, 0) + def Volatile(self): + return self.getToken(CPP14Parser.Volatile, 0) def getRuleIndex(self): - return CPP14Parser.RULE_ptrdeclarator + return CPP14Parser.RULE_cvQualifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPtrdeclarator" ): - listener.enterPtrdeclarator(self) + if hasattr( listener, "enterCvQualifier" ): + listener.enterCvQualifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPtrdeclarator" ): - listener.exitPtrdeclarator(self) + if hasattr( listener, "exitCvQualifier" ): + listener.exitCvQualifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPtrdeclarator" ): - return visitor.visitPtrdeclarator(self) + if hasattr( visitor, "visitCvQualifier" ): + return visitor.visitCvQualifier(self) else: return visitor.visitChildren(self) - def ptrdeclarator(self): + def cvQualifier(self): - localctx = CPP14Parser.PtrdeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 240, self.RULE_ptrdeclarator) + localctx = CPP14Parser.CvQualifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 240, self.RULE_cvQualifier) + self._la = 0 # Token type try: - self.state = 1674 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,172,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1670 - self.noptrdeclarator(0) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1671 - self.ptroperator() - self.state = 1672 - self.ptrdeclarator() - pass - - + self.enterOuterAlt(localctx, 1) + self.state = 1460 + _la = self._input.LA(1) + if not(_la==22 or _la==82): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -12368,263 +11484,171 @@ def ptrdeclarator(self): return localctx - class NoptrdeclaratorContext(ParserRuleContext): + class RefqualifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def declaratorid(self): - return self.getTypedRuleContext(CPP14Parser.DeclaratoridContext,0) + def And(self): + return self.getToken(CPP14Parser.And, 0) + def AndAnd(self): + return self.getToken(CPP14Parser.AndAnd, 0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def getRuleIndex(self): + return CPP14Parser.RULE_refqualifier + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRefqualifier" ): + listener.enterRefqualifier(self) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRefqualifier" ): + listener.exitRefqualifier(self) - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRefqualifier" ): + return visitor.visitRefqualifier(self) + else: + return visitor.visitChildren(self) - def ptrdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.PtrdeclaratorContext,0) - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) - def noptrdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrdeclaratorContext,0) + def refqualifier(self): + localctx = CPP14Parser.RefqualifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 242, self.RULE_refqualifier) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1462 + _la = self._input.LA(1) + if not(_la==97 or _la==118): + 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 - def parametersandqualifiers(self): - return self.getTypedRuleContext(CPP14Parser.ParametersandqualifiersContext,0) + class DeclaratoridContext(ParserRuleContext): + __slots__ = 'parser' - def LeftBracket(self): - return self.getToken(CPP14Parser.LeftBracket, 0) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser - def RightBracket(self): - return self.getToken(CPP14Parser.RightBracket, 0) + def idExpression(self): + return self.getTypedRuleContext(CPP14Parser.IdExpressionContext,0) - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) + def Ellipsis(self): + return self.getToken(CPP14Parser.Ellipsis, 0) def getRuleIndex(self): - return CPP14Parser.RULE_noptrdeclarator + return CPP14Parser.RULE_declaratorid def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNoptrdeclarator" ): - listener.enterNoptrdeclarator(self) + if hasattr( listener, "enterDeclaratorid" ): + listener.enterDeclaratorid(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNoptrdeclarator" ): - listener.exitNoptrdeclarator(self) + if hasattr( listener, "exitDeclaratorid" ): + listener.exitDeclaratorid(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNoptrdeclarator" ): - return visitor.visitNoptrdeclarator(self) + if hasattr( visitor, "visitDeclaratorid" ): + return visitor.visitDeclaratorid(self) else: return visitor.visitChildren(self) - def noptrdeclarator(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.NoptrdeclaratorContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 242 - self.enterRecursionRule(localctx, 242, self.RULE_noptrdeclarator, _p) + + def declaratorid(self): + + localctx = CPP14Parser.DeclaratoridContext(self, self._ctx, self.state) + self.enterRule(localctx, 244, self.RULE_declaratorid) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1685 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.Decltype, CPP14Parser.Operator, CPP14Parser.Tilde, CPP14Parser.Doublecolon, CPP14Parser.Ellipsis, CPP14Parser.Identifier]: - self.state = 1677 - self.declaratorid() - self.state = 1679 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,173,self._ctx) - if la_ == 1: - self.state = 1678 - self.attributespecifierseq(0) - - - pass - elif token in [CPP14Parser.LeftParen]: - self.state = 1681 - self.match(CPP14Parser.LeftParen) - self.state = 1682 - self.ptrdeclarator() - self.state = 1683 - self.match(CPP14Parser.RightParen) - pass - else: - raise NoViableAltException(self) - - self._ctx.stop = self._input.LT(-1) - self.state = 1700 + self.state = 1465 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,178,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 = 1698 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,177,self._ctx) - if la_ == 1: - localctx = CPP14Parser.NoptrdeclaratorContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_noptrdeclarator) - self.state = 1687 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 1688 - self.parametersandqualifiers() - pass - - elif la_ == 2: - localctx = CPP14Parser.NoptrdeclaratorContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_noptrdeclarator) - self.state = 1689 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 1690 - self.match(CPP14Parser.LeftBracket) - self.state = 1692 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 1691 - self.constantexpression() - - - self.state = 1694 - self.match(CPP14Parser.RightBracket) - self.state = 1696 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,176,self._ctx) - if la_ == 1: - self.state = 1695 - self.attributespecifierseq(0) - - - pass + _la = self._input.LA(1) + if _la==131: + self.state = 1464 + self.match(CPP14Parser.Ellipsis) - - self.state = 1702 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,178,self._ctx) + self.state = 1467 + self.idExpression() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class ParametersandqualifiersContext(ParserRuleContext): + class TheTypeIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) - - def parameterdeclarationclause(self): - return self.getTypedRuleContext(CPP14Parser.ParameterdeclarationclauseContext,0) - - - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) - - def cvqualifierseq(self): - return self.getTypedRuleContext(CPP14Parser.CvqualifierseqContext,0) - - - def refqualifier(self): - return self.getTypedRuleContext(CPP14Parser.RefqualifierContext,0) - - - def exceptionspecification(self): - return self.getTypedRuleContext(CPP14Parser.ExceptionspecificationContext,0) + def typeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.TypeSpecifierSeqContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def abstractDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.AbstractDeclaratorContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_parametersandqualifiers + return CPP14Parser.RULE_theTypeId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterParametersandqualifiers" ): - listener.enterParametersandqualifiers(self) + if hasattr( listener, "enterTheTypeId" ): + listener.enterTheTypeId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitParametersandqualifiers" ): - listener.exitParametersandqualifiers(self) + if hasattr( listener, "exitTheTypeId" ): + listener.exitTheTypeId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitParametersandqualifiers" ): - return visitor.visitParametersandqualifiers(self) + if hasattr( visitor, "visitTheTypeId" ): + return visitor.visitTheTypeId(self) else: return visitor.visitChildren(self) - def parametersandqualifiers(self): + def theTypeId(self): - localctx = CPP14Parser.ParametersandqualifiersContext(self, self._ctx, self.state) - self.enterRule(localctx, 244, self.RULE_parametersandqualifiers) + localctx = CPP14Parser.TheTypeIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 246, self.RULE_theTypeId) try: self.enterOuterAlt(localctx, 1) - self.state = 1703 - self.match(CPP14Parser.LeftParen) - self.state = 1704 - self.parameterdeclarationclause() - self.state = 1705 - self.match(CPP14Parser.RightParen) - self.state = 1707 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,179,self._ctx) - if la_ == 1: - self.state = 1706 - self.cvqualifierseq() - - - self.state = 1710 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,180,self._ctx) - if la_ == 1: - self.state = 1709 - self.refqualifier() - - - self.state = 1713 + self.state = 1469 + self.typeSpecifierSeq() + self.state = 1471 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,181,self._ctx) if la_ == 1: - self.state = 1712 - self.exceptionspecification() - - - self.state = 1716 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,182,self._ctx) - if la_ == 1: - self.state = 1715 - self.attributespecifierseq(0) + self.state = 1470 + self.abstractDeclarator() except RecognitionException as re: @@ -12636,59 +11660,88 @@ def parametersandqualifiers(self): return localctx - class TrailingreturntypeContext(ParserRuleContext): + class AbstractDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Arrow(self): - return self.getToken(CPP14Parser.Arrow, 0) + def pointerAbstractDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.PointerAbstractDeclaratorContext,0) + + + def parametersAndQualifiers(self): + return self.getTypedRuleContext(CPP14Parser.ParametersAndQualifiersContext,0) - def trailingtypespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.TrailingtypespecifierseqContext,0) + def trailingReturnType(self): + return self.getTypedRuleContext(CPP14Parser.TrailingReturnTypeContext,0) - def abstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.AbstractdeclaratorContext,0) + + def noPointerAbstractDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.NoPointerAbstractDeclaratorContext,0) + + + def abstractPackDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.AbstractPackDeclaratorContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_trailingreturntype + return CPP14Parser.RULE_abstractDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTrailingreturntype" ): - listener.enterTrailingreturntype(self) + if hasattr( listener, "enterAbstractDeclarator" ): + listener.enterAbstractDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTrailingreturntype" ): - listener.exitTrailingreturntype(self) + if hasattr( listener, "exitAbstractDeclarator" ): + listener.exitAbstractDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTrailingreturntype" ): - return visitor.visitTrailingreturntype(self) + if hasattr( visitor, "visitAbstractDeclarator" ): + return visitor.visitAbstractDeclarator(self) else: return visitor.visitChildren(self) - def trailingreturntype(self): + def abstractDeclarator(self): - localctx = CPP14Parser.TrailingreturntypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 246, self.RULE_trailingreturntype) + localctx = CPP14Parser.AbstractDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 248, self.RULE_abstractDeclarator) try: - self.enterOuterAlt(localctx, 1) - self.state = 1718 - self.match(CPP14Parser.Arrow) - self.state = 1719 - self.trailingtypespecifierseq() - self.state = 1721 + self.state = 1481 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,183,self._ctx) if la_ == 1: - self.state = 1720 - self.abstractdeclarator() + self.enterOuterAlt(localctx, 1) + self.state = 1473 + self.pointerAbstractDeclarator() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1475 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,182,self._ctx) + if la_ == 1: + self.state = 1474 + self.noPointerAbstractDeclarator() + + + self.state = 1477 + self.parametersAndQualifiers() + self.state = 1478 + self.trailingReturnType() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1480 + self.abstractPackDeclarator() + pass except RecognitionException as re: @@ -12700,127 +11753,71 @@ def trailingreturntype(self): return localctx - class PtroperatorContext(ParserRuleContext): + class PointerAbstractDeclaratorContext(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(CPP14Parser.Star, 0) - - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) - - - def cvqualifierseq(self): - return self.getTypedRuleContext(CPP14Parser.CvqualifierseqContext,0) + def noPointerAbstractDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.NoPointerAbstractDeclaratorContext,0) - def And(self): - return self.getToken(CPP14Parser.And, 0) - - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def pointerOperator(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.PointerOperatorContext) + else: + return self.getTypedRuleContext(CPP14Parser.PointerOperatorContext,i) def getRuleIndex(self): - return CPP14Parser.RULE_ptroperator + return CPP14Parser.RULE_pointerAbstractDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPtroperator" ): - listener.enterPtroperator(self) + if hasattr( listener, "enterPointerAbstractDeclarator" ): + listener.enterPointerAbstractDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPtroperator" ): - listener.exitPtroperator(self) + if hasattr( listener, "exitPointerAbstractDeclarator" ): + listener.exitPointerAbstractDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPtroperator" ): - return visitor.visitPtroperator(self) + if hasattr( visitor, "visitPointerAbstractDeclarator" ): + return visitor.visitPointerAbstractDeclarator(self) else: return visitor.visitChildren(self) - def ptroperator(self): + def pointerAbstractDeclarator(self): - localctx = CPP14Parser.PtroperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 248, self.RULE_ptroperator) + localctx = CPP14Parser.PointerAbstractDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 250, self.RULE_pointerAbstractDeclarator) try: - self.state = 1746 + self.enterOuterAlt(localctx, 1) + self.state = 1486 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.Star]: - self.enterOuterAlt(localctx, 1) - self.state = 1723 - self.match(CPP14Parser.Star) - self.state = 1725 + _alt = self._interp.adaptivePredict(self._input,184,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1483 + self.pointerOperator() + self.state = 1488 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,184,self._ctx) - if la_ == 1: - self.state = 1724 - self.attributespecifierseq(0) - - - self.state = 1728 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,185,self._ctx) - if la_ == 1: - self.state = 1727 - self.cvqualifierseq() - - - pass - elif token in [CPP14Parser.And]: - self.enterOuterAlt(localctx, 2) - self.state = 1730 - self.match(CPP14Parser.And) - self.state = 1732 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,186,self._ctx) - if la_ == 1: - self.state = 1731 - self.attributespecifierseq(0) - - - pass - elif token in [CPP14Parser.T__2]: - self.enterOuterAlt(localctx, 3) - self.state = 1734 - self.match(CPP14Parser.T__2) - self.state = 1736 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,187,self._ctx) - if la_ == 1: - self.state = 1735 - self.attributespecifierseq(0) - + _alt = self._interp.adaptivePredict(self._input,184,self._ctx) + self.state = 1491 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [85]: + self.state = 1489 + self.noPointerAbstractDeclarator() pass - elif token in [CPP14Parser.Decltype, CPP14Parser.Doublecolon, CPP14Parser.Identifier]: - self.enterOuterAlt(localctx, 4) - self.state = 1738 - self.nestednamespecifier(0) - self.state = 1739 - self.match(CPP14Parser.Star) - self.state = 1741 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,188,self._ctx) - if la_ == 1: - self.state = 1740 - self.attributespecifierseq(0) - - - self.state = 1744 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,189,self._ctx) - if la_ == 1: - self.state = 1743 - self.cvqualifierseq() - - + elif token in [26, 93, 97, 118, 127, 132]: + self.state = 1490 + self.pointerOperator() pass else: raise NoViableAltException(self) @@ -12834,55 +11831,141 @@ def ptroperator(self): return localctx - class CvqualifierseqContext(ParserRuleContext): + class NoPointerAbstractDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def cvqualifier(self): - return self.getTypedRuleContext(CPP14Parser.CvqualifierContext,0) + def parametersAndQualifiers(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.ParametersAndQualifiersContext) + else: + return self.getTypedRuleContext(CPP14Parser.ParametersAndQualifiersContext,i) - def cvqualifierseq(self): - return self.getTypedRuleContext(CPP14Parser.CvqualifierseqContext,0) + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) + + def pointerAbstractDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.PointerAbstractDeclaratorContext,0) + + + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) + + def LeftBracket(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.LeftBracket) + else: + return self.getToken(CPP14Parser.LeftBracket, i) + + def RightBracket(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.RightBracket) + else: + return self.getToken(CPP14Parser.RightBracket, i) + + def constantExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.ConstantExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,i) + + + def attributeSpecifierSeq(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.AttributeSpecifierSeqContext) + else: + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,i) def getRuleIndex(self): - return CPP14Parser.RULE_cvqualifierseq + return CPP14Parser.RULE_noPointerAbstractDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCvqualifierseq" ): - listener.enterCvqualifierseq(self) + if hasattr( listener, "enterNoPointerAbstractDeclarator" ): + listener.enterNoPointerAbstractDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCvqualifierseq" ): - listener.exitCvqualifierseq(self) + if hasattr( listener, "exitNoPointerAbstractDeclarator" ): + listener.exitNoPointerAbstractDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCvqualifierseq" ): - return visitor.visitCvqualifierseq(self) + if hasattr( visitor, "visitNoPointerAbstractDeclarator" ): + return visitor.visitNoPointerAbstractDeclarator(self) else: return visitor.visitChildren(self) - def cvqualifierseq(self): + def noPointerAbstractDeclarator(self): - localctx = CPP14Parser.CvqualifierseqContext(self, self._ctx, self.state) - self.enterRule(localctx, 250, self.RULE_cvqualifierseq) + localctx = CPP14Parser.NoPointerAbstractDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 252, self.RULE_noPointerAbstractDeclarator) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1748 - self.cvqualifier() - self.state = 1750 + self.state = 1498 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,191,self._ctx) + la_ = self._interp.adaptivePredict(self._input,186,self._ctx) if la_ == 1: - self.state = 1749 - self.cvqualifierseq() + self.state = 1493 + self.parametersAndQualifiers() + pass + + elif la_ == 2: + self.state = 1494 + self.match(CPP14Parser.LeftParen) + self.state = 1495 + self.pointerAbstractDeclarator() + self.state = 1496 + self.match(CPP14Parser.RightParen) + pass + + + self.state = 1511 + 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 = 1509 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [85]: + self.state = 1500 + self.parametersAndQualifiers() + pass + elif token in [87]: + self.state = 1501 + self.match(CPP14Parser.LeftBracket) + self.state = 1503 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474384133137) != 0) or _la==132: + self.state = 1502 + self.constantExpression() + + self.state = 1505 + self.match(CPP14Parser.RightBracket) + self.state = 1507 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,188,self._ctx) + if la_ == 1: + self.state = 1506 + self.attributeSpecifierSeq() + + + pass + else: + raise NoViableAltException(self) + + self.state = 1513 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,190,self._ctx) except RecognitionException as re: localctx.exception = re @@ -12893,52 +11976,63 @@ def cvqualifierseq(self): return localctx - class CvqualifierContext(ParserRuleContext): + class AbstractPackDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Const(self): - return self.getToken(CPP14Parser.Const, 0) + def noPointerAbstractPackDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.NoPointerAbstractPackDeclaratorContext,0) + + + def pointerOperator(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.PointerOperatorContext) + else: + return self.getTypedRuleContext(CPP14Parser.PointerOperatorContext,i) - def Volatile(self): - return self.getToken(CPP14Parser.Volatile, 0) def getRuleIndex(self): - return CPP14Parser.RULE_cvqualifier + return CPP14Parser.RULE_abstractPackDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCvqualifier" ): - listener.enterCvqualifier(self) + if hasattr( listener, "enterAbstractPackDeclarator" ): + listener.enterAbstractPackDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCvqualifier" ): - listener.exitCvqualifier(self) + if hasattr( listener, "exitAbstractPackDeclarator" ): + listener.exitAbstractPackDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCvqualifier" ): - return visitor.visitCvqualifier(self) + if hasattr( visitor, "visitAbstractPackDeclarator" ): + return visitor.visitAbstractPackDeclarator(self) else: return visitor.visitChildren(self) - def cvqualifier(self): + def abstractPackDeclarator(self): - localctx = CPP14Parser.CvqualifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 252, self.RULE_cvqualifier) + localctx = CPP14Parser.AbstractPackDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 254, self.RULE_abstractPackDeclarator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1752 + self.state = 1517 + self._errHandler.sync(self) _la = self._input.LA(1) - if not(_la==CPP14Parser.Const or _la==CPP14Parser.Volatile): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() + while _la==26 or ((((_la - 93)) & ~0x3f) == 0 and ((1 << (_la - 93)) & 566969237521) != 0): + self.state = 1514 + self.pointerOperator() + self.state = 1519 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1520 + self.noPointerAbstractPackDeclarator() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -12948,49 +12042,119 @@ def cvqualifier(self): return localctx - class RefqualifierContext(ParserRuleContext): + class NoPointerAbstractPackDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def And(self): - return self.getToken(CPP14Parser.And, 0) + def Ellipsis(self): + return self.getToken(CPP14Parser.Ellipsis, 0) + + def parametersAndQualifiers(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.ParametersAndQualifiersContext) + else: + return self.getTypedRuleContext(CPP14Parser.ParametersAndQualifiersContext,i) + + + def LeftBracket(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.LeftBracket) + else: + return self.getToken(CPP14Parser.LeftBracket, i) + + def RightBracket(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.RightBracket) + else: + return self.getToken(CPP14Parser.RightBracket, i) + + def constantExpression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.ConstantExpressionContext) + else: + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,i) + + + def attributeSpecifierSeq(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.AttributeSpecifierSeqContext) + else: + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,i) + def getRuleIndex(self): - return CPP14Parser.RULE_refqualifier + return CPP14Parser.RULE_noPointerAbstractPackDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRefqualifier" ): - listener.enterRefqualifier(self) + if hasattr( listener, "enterNoPointerAbstractPackDeclarator" ): + listener.enterNoPointerAbstractPackDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRefqualifier" ): - listener.exitRefqualifier(self) + if hasattr( listener, "exitNoPointerAbstractPackDeclarator" ): + listener.exitNoPointerAbstractPackDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRefqualifier" ): - return visitor.visitRefqualifier(self) + if hasattr( visitor, "visitNoPointerAbstractPackDeclarator" ): + return visitor.visitNoPointerAbstractPackDeclarator(self) else: return visitor.visitChildren(self) - def refqualifier(self): + def noPointerAbstractPackDeclarator(self): - localctx = CPP14Parser.RefqualifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 254, self.RULE_refqualifier) + localctx = CPP14Parser.NoPointerAbstractPackDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 256, self.RULE_noPointerAbstractPackDeclarator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1754 - _la = self._input.LA(1) - if not(_la==CPP14Parser.T__2 or _la==CPP14Parser.And): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() + self.state = 1522 + self.match(CPP14Parser.Ellipsis) + self.state = 1534 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,195,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1532 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [85]: + self.state = 1523 + self.parametersAndQualifiers() + pass + elif token in [87]: + self.state = 1524 + self.match(CPP14Parser.LeftBracket) + self.state = 1526 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474384133137) != 0) or _la==132: + self.state = 1525 + self.constantExpression() + + + self.state = 1528 + self.match(CPP14Parser.RightBracket) + self.state = 1530 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,193,self._ctx) + if la_ == 1: + self.state = 1529 + self.attributeSpecifierSeq() + + + pass + else: + raise NoViableAltException(self) + + self.state = 1536 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,195,self._ctx) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -13000,56 +12164,68 @@ def refqualifier(self): return localctx - class DeclaratoridContext(ParserRuleContext): + class ParameterDeclarationClauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def idexpression(self): - return self.getTypedRuleContext(CPP14Parser.IdexpressionContext,0) + def parameterDeclarationList(self): + return self.getTypedRuleContext(CPP14Parser.ParameterDeclarationListContext,0) def Ellipsis(self): return self.getToken(CPP14Parser.Ellipsis, 0) + def Comma(self): + return self.getToken(CPP14Parser.Comma, 0) + def getRuleIndex(self): - return CPP14Parser.RULE_declaratorid + return CPP14Parser.RULE_parameterDeclarationClause def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclaratorid" ): - listener.enterDeclaratorid(self) + if hasattr( listener, "enterParameterDeclarationClause" ): + listener.enterParameterDeclarationClause(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclaratorid" ): - listener.exitDeclaratorid(self) + if hasattr( listener, "exitParameterDeclarationClause" ): + listener.exitParameterDeclarationClause(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclaratorid" ): - return visitor.visitDeclaratorid(self) + if hasattr( visitor, "visitParameterDeclarationClause" ): + return visitor.visitParameterDeclarationClause(self) else: return visitor.visitChildren(self) - def declaratorid(self): + def parameterDeclarationClause(self): - localctx = CPP14Parser.DeclaratoridContext(self, self._ctx, self.state) - self.enterRule(localctx, 256, self.RULE_declaratorid) + localctx = CPP14Parser.ParameterDeclarationClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 258, self.RULE_parameterDeclarationClause) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1757 + self.state = 1537 + self.parameterDeclarationList() + self.state = 1542 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Ellipsis: - self.state = 1756 + if _la==122 or _la==131: + self.state = 1539 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==122: + self.state = 1538 + self.match(CPP14Parser.Comma) + + + self.state = 1541 self.match(CPP14Parser.Ellipsis) - self.state = 1759 - self.idexpression() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -13059,55 +12235,66 @@ def declaratorid(self): return localctx - class ThetypeidContext(ParserRuleContext): + class ParameterDeclarationListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def typespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.TypespecifierseqContext,0) - + def parameterDeclaration(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.ParameterDeclarationContext) + else: + return self.getTypedRuleContext(CPP14Parser.ParameterDeclarationContext,i) - def abstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.AbstractdeclaratorContext,0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): - return CPP14Parser.RULE_thetypeid + return CPP14Parser.RULE_parameterDeclarationList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterThetypeid" ): - listener.enterThetypeid(self) + if hasattr( listener, "enterParameterDeclarationList" ): + listener.enterParameterDeclarationList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitThetypeid" ): - listener.exitThetypeid(self) + if hasattr( listener, "exitParameterDeclarationList" ): + listener.exitParameterDeclarationList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitThetypeid" ): - return visitor.visitThetypeid(self) + if hasattr( visitor, "visitParameterDeclarationList" ): + return visitor.visitParameterDeclarationList(self) else: return visitor.visitChildren(self) - def thetypeid(self): + def parameterDeclarationList(self): - localctx = CPP14Parser.ThetypeidContext(self, self._ctx, self.state) - self.enterRule(localctx, 258, self.RULE_thetypeid) + localctx = CPP14Parser.ParameterDeclarationListContext(self, self._ctx, self.state) + self.enterRule(localctx, 260, self.RULE_parameterDeclarationList) try: self.enterOuterAlt(localctx, 1) - self.state = 1761 - self.typespecifierseq() - self.state = 1763 + self.state = 1544 + self.parameterDeclaration() + self.state = 1549 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,193,self._ctx) - if la_ == 1: - self.state = 1762 - self.abstractdeclarator() - + _alt = self._interp.adaptivePredict(self._input,198,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 1545 + self.match(CPP14Parser.Comma) + self.state = 1546 + self.parameterDeclaration() + self.state = 1551 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,198,self._ctx) except RecognitionException as re: localctx.exception = re @@ -13118,87 +12305,101 @@ def thetypeid(self): return localctx - class AbstractdeclaratorContext(ParserRuleContext): + class ParameterDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def ptrabstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.PtrabstractdeclaratorContext,0) + def declSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.DeclSpecifierSeqContext,0) + + def declarator(self): + return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) - def parametersandqualifiers(self): - return self.getTypedRuleContext(CPP14Parser.ParametersandqualifiersContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) - def trailingreturntype(self): - return self.getTypedRuleContext(CPP14Parser.TrailingreturntypeContext,0) + def Assign(self): + return self.getToken(CPP14Parser.Assign, 0) - def noptrabstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrabstractdeclaratorContext,0) + def initializerClause(self): + return self.getTypedRuleContext(CPP14Parser.InitializerClauseContext,0) - def abstractpackdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.AbstractpackdeclaratorContext,0) + def abstractDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.AbstractDeclaratorContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_abstractdeclarator + return CPP14Parser.RULE_parameterDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAbstractdeclarator" ): - listener.enterAbstractdeclarator(self) + if hasattr( listener, "enterParameterDeclaration" ): + listener.enterParameterDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAbstractdeclarator" ): - listener.exitAbstractdeclarator(self) + if hasattr( listener, "exitParameterDeclaration" ): + listener.exitParameterDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAbstractdeclarator" ): - return visitor.visitAbstractdeclarator(self) + if hasattr( visitor, "visitParameterDeclaration" ): + return visitor.visitParameterDeclaration(self) else: return visitor.visitChildren(self) - def abstractdeclarator(self): + def parameterDeclaration(self): - localctx = CPP14Parser.AbstractdeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 260, self.RULE_abstractdeclarator) + localctx = CPP14Parser.ParameterDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 262, self.RULE_parameterDeclaration) + self._la = 0 # Token type try: - self.state = 1773 + self.enterOuterAlt(localctx, 1) + self.state = 1553 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==10 or _la==87: + self.state = 1552 + self.attributeSpecifierSeq() + + + self.state = 1555 + self.declSpecifierSeq() + self.state = 1560 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,195,self._ctx) + la_ = self._interp.adaptivePredict(self._input,201,self._ctx) if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1765 - self.ptrabstractdeclarator() + self.state = 1556 + self.declarator() pass elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1767 + self.state = 1558 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,194,self._ctx) + la_ = self._interp.adaptivePredict(self._input,200,self._ctx) if la_ == 1: - self.state = 1766 - self.noptrabstractdeclarator(0) + self.state = 1557 + self.abstractDeclarator() - self.state = 1769 - self.parametersandqualifiers() - self.state = 1770 - self.trailingreturntype() pass - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1772 - self.abstractpackdeclarator() - pass + + self.state = 1564 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==101: + self.state = 1562 + self.match(CPP14Parser.Assign) + self.state = 1563 + self.initializerClause() except RecognitionException as re: @@ -13210,73 +12411,88 @@ def abstractdeclarator(self): return localctx - class PtrabstractdeclaratorContext(ParserRuleContext): + class FunctionDefinitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def noptrabstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrabstractdeclaratorContext,0) + def declarator(self): + return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) + + def functionBody(self): + return self.getTypedRuleContext(CPP14Parser.FunctionBodyContext,0) - def ptroperator(self): - return self.getTypedRuleContext(CPP14Parser.PtroperatorContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) - def ptrabstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.PtrabstractdeclaratorContext,0) + + def declSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.DeclSpecifierSeqContext,0) + + + def virtualSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.VirtualSpecifierSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_ptrabstractdeclarator + return CPP14Parser.RULE_functionDefinition def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPtrabstractdeclarator" ): - listener.enterPtrabstractdeclarator(self) + if hasattr( listener, "enterFunctionDefinition" ): + listener.enterFunctionDefinition(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPtrabstractdeclarator" ): - listener.exitPtrabstractdeclarator(self) + if hasattr( listener, "exitFunctionDefinition" ): + listener.exitFunctionDefinition(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPtrabstractdeclarator" ): - return visitor.visitPtrabstractdeclarator(self) + if hasattr( visitor, "visitFunctionDefinition" ): + return visitor.visitFunctionDefinition(self) else: return visitor.visitChildren(self) - def ptrabstractdeclarator(self): + def functionDefinition(self): - localctx = CPP14Parser.PtrabstractdeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 262, self.RULE_ptrabstractdeclarator) + localctx = CPP14Parser.FunctionDefinitionContext(self, self._ctx, self.state) + self.enterRule(localctx, 264, self.RULE_functionDefinition) + self._la = 0 # Token type try: - self.state = 1780 + self.enterOuterAlt(localctx, 1) + self.state = 1567 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.LeftParen, CPP14Parser.LeftBracket]: - self.enterOuterAlt(localctx, 1) - self.state = 1775 - self.noptrabstractdeclarator(0) - pass - elif token in [CPP14Parser.T__2, CPP14Parser.Decltype, CPP14Parser.Star, CPP14Parser.And, CPP14Parser.Doublecolon, CPP14Parser.Identifier]: - self.enterOuterAlt(localctx, 2) - self.state = 1776 - self.ptroperator() - self.state = 1778 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,196,self._ctx) - if la_ == 1: - self.state = 1777 - self.ptrabstractdeclarator() + _la = self._input.LA(1) + if _la==10 or _la==87: + self.state = 1566 + self.attributeSpecifierSeq() - pass - else: - raise NoViableAltException(self) + self.state = 1570 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,204,self._ctx) + if la_ == 1: + self.state = 1569 + self.declSpecifierSeq() + + + self.state = 1572 + self.declarator() + self.state = 1574 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==38 or _la==53: + self.state = 1573 + self.virtualSpecifierSeq() + + self.state = 1576 + self.functionBody() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -13286,237 +12502,172 @@ def ptrabstractdeclarator(self): return localctx - class NoptrabstractdeclaratorContext(ParserRuleContext): + class FunctionBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def parametersandqualifiers(self): - return self.getTypedRuleContext(CPP14Parser.ParametersandqualifiersContext,0) - - - def LeftBracket(self): - return self.getToken(CPP14Parser.LeftBracket, 0) - - def RightBracket(self): - return self.getToken(CPP14Parser.RightBracket, 0) + def compoundStatement(self): + return self.getTypedRuleContext(CPP14Parser.CompoundStatementContext,0) - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) + def constructorInitializer(self): + return self.getTypedRuleContext(CPP14Parser.ConstructorInitializerContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def functionTryBlock(self): + return self.getTypedRuleContext(CPP14Parser.FunctionTryBlockContext,0) - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) - - def ptrabstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.PtrabstractdeclaratorContext,0) + def Assign(self): + return self.getToken(CPP14Parser.Assign, 0) - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) + def Semi(self): + return self.getToken(CPP14Parser.Semi, 0) - def noptrabstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrabstractdeclaratorContext,0) + def Default(self): + return self.getToken(CPP14Parser.Default, 0) + def Delete(self): + return self.getToken(CPP14Parser.Delete, 0) def getRuleIndex(self): - return CPP14Parser.RULE_noptrabstractdeclarator + return CPP14Parser.RULE_functionBody def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNoptrabstractdeclarator" ): - listener.enterNoptrabstractdeclarator(self) + if hasattr( listener, "enterFunctionBody" ): + listener.enterFunctionBody(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNoptrabstractdeclarator" ): - listener.exitNoptrabstractdeclarator(self) + if hasattr( listener, "exitFunctionBody" ): + listener.exitFunctionBody(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNoptrabstractdeclarator" ): - return visitor.visitNoptrabstractdeclarator(self) + if hasattr( visitor, "visitFunctionBody" ): + return visitor.visitFunctionBody(self) else: return visitor.visitChildren(self) - def noptrabstractdeclarator(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.NoptrabstractdeclaratorContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 264 - self.enterRecursionRule(localctx, 264, self.RULE_noptrabstractdeclarator, _p) + + def functionBody(self): + + localctx = CPP14Parser.FunctionBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 266, self.RULE_functionBody) self._la = 0 # Token type try: - self.enterOuterAlt(localctx, 1) - self.state = 1796 + self.state = 1586 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,200,self._ctx) - if la_ == 1: - self.state = 1783 - self.parametersandqualifiers() - pass - - elif la_ == 2: - self.state = 1784 - self.match(CPP14Parser.LeftBracket) - self.state = 1786 + token = self._input.LA(1) + if token in [89, 126]: + self.enterOuterAlt(localctx, 1) + self.state = 1579 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 1785 - self.constantexpression() - - - self.state = 1788 - self.match(CPP14Parser.RightBracket) - self.state = 1790 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,199,self._ctx) - if la_ == 1: - self.state = 1789 - self.attributespecifierseq(0) + if _la==126: + self.state = 1578 + self.constructorInitializer() + self.state = 1581 + self.compoundStatement() pass - - elif la_ == 3: - self.state = 1792 - self.match(CPP14Parser.LeftParen) - self.state = 1793 - self.ptrabstractdeclarator() - self.state = 1794 - self.match(CPP14Parser.RightParen) + elif token in [73]: + self.enterOuterAlt(localctx, 2) + self.state = 1582 + self.functionTryBlock() pass - - - self._ctx.stop = self._input.LT(-1) - self.state = 1811 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,204,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 = 1809 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,203,self._ctx) - if la_ == 1: - localctx = CPP14Parser.NoptrabstractdeclaratorContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_noptrabstractdeclarator) - self.state = 1798 - if not self.precpred(self._ctx, 5): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") - self.state = 1799 - self.parametersandqualifiers() - pass - - elif la_ == 2: - localctx = CPP14Parser.NoptrabstractdeclaratorContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_noptrabstractdeclarator) - self.state = 1800 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 1801 - self.match(CPP14Parser.LeftBracket) - self.state = 1803 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 1802 - self.constantexpression() - - - self.state = 1805 - self.match(CPP14Parser.RightBracket) - self.state = 1807 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,202,self._ctx) - if la_ == 1: - self.state = 1806 - self.attributespecifierseq(0) - - - pass - - - self.state = 1813 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,204,self._ctx) + elif token in [101]: + self.enterOuterAlt(localctx, 3) + self.state = 1583 + self.match(CPP14Parser.Assign) + self.state = 1584 + _la = self._input.LA(1) + if not(_la==27 or _la==28): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1585 + self.match(CPP14Parser.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.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class AbstractpackdeclaratorContext(ParserRuleContext): + class InitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def noptrabstractpackdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrabstractpackdeclaratorContext,0) + def braceOrEqualInitializer(self): + return self.getTypedRuleContext(CPP14Parser.BraceOrEqualInitializerContext,0) - def ptroperator(self): - return self.getTypedRuleContext(CPP14Parser.PtroperatorContext,0) + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) + def expressionList(self): + return self.getTypedRuleContext(CPP14Parser.ExpressionListContext,0) - def abstractpackdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.AbstractpackdeclaratorContext,0) + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) def getRuleIndex(self): - return CPP14Parser.RULE_abstractpackdeclarator + return CPP14Parser.RULE_initializer def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAbstractpackdeclarator" ): - listener.enterAbstractpackdeclarator(self) + if hasattr( listener, "enterInitializer" ): + listener.enterInitializer(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAbstractpackdeclarator" ): - listener.exitAbstractpackdeclarator(self) + if hasattr( listener, "exitInitializer" ): + listener.exitInitializer(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAbstractpackdeclarator" ): - return visitor.visitAbstractpackdeclarator(self) + if hasattr( visitor, "visitInitializer" ): + return visitor.visitInitializer(self) else: return visitor.visitChildren(self) - def abstractpackdeclarator(self): + def initializer(self): - localctx = CPP14Parser.AbstractpackdeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 266, self.RULE_abstractpackdeclarator) + localctx = CPP14Parser.InitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 268, self.RULE_initializer) try: - self.state = 1818 + self.state = 1593 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CPP14Parser.Ellipsis]: + if token in [89, 101]: self.enterOuterAlt(localctx, 1) - self.state = 1814 - self.noptrabstractpackdeclarator(0) + self.state = 1588 + self.braceOrEqualInitializer() pass - elif token in [CPP14Parser.T__2, CPP14Parser.Decltype, CPP14Parser.Star, CPP14Parser.And, CPP14Parser.Doublecolon, CPP14Parser.Identifier]: + elif token in [85]: self.enterOuterAlt(localctx, 2) - self.state = 1815 - self.ptroperator() - self.state = 1816 - self.abstractpackdeclarator() + self.state = 1589 + self.match(CPP14Parser.LeftParen) + self.state = 1590 + self.expressionList() + self.state = 1591 + self.match(CPP14Parser.RightParen) pass else: raise NoViableAltException(self) @@ -13530,209 +12681,131 @@ def abstractpackdeclarator(self): return localctx - class NoptrabstractpackdeclaratorContext(ParserRuleContext): + class BraceOrEqualInitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) - - def noptrabstractpackdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.NoptrabstractpackdeclaratorContext,0) - - - def parametersandqualifiers(self): - return self.getTypedRuleContext(CPP14Parser.ParametersandqualifiersContext,0) - - - def LeftBracket(self): - return self.getToken(CPP14Parser.LeftBracket, 0) - - def RightBracket(self): - return self.getToken(CPP14Parser.RightBracket, 0) + def Assign(self): + return self.getToken(CPP14Parser.Assign, 0) - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) + def initializerClause(self): + return self.getTypedRuleContext(CPP14Parser.InitializerClauseContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def bracedInitList(self): + return self.getTypedRuleContext(CPP14Parser.BracedInitListContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_noptrabstractpackdeclarator + return CPP14Parser.RULE_braceOrEqualInitializer def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNoptrabstractpackdeclarator" ): - listener.enterNoptrabstractpackdeclarator(self) + if hasattr( listener, "enterBraceOrEqualInitializer" ): + listener.enterBraceOrEqualInitializer(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNoptrabstractpackdeclarator" ): - listener.exitNoptrabstractpackdeclarator(self) + if hasattr( listener, "exitBraceOrEqualInitializer" ): + listener.exitBraceOrEqualInitializer(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNoptrabstractpackdeclarator" ): - return visitor.visitNoptrabstractpackdeclarator(self) + if hasattr( visitor, "visitBraceOrEqualInitializer" ): + return visitor.visitBraceOrEqualInitializer(self) else: return visitor.visitChildren(self) - def noptrabstractpackdeclarator(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.NoptrabstractpackdeclaratorContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 268 - self.enterRecursionRule(localctx, 268, self.RULE_noptrabstractpackdeclarator, _p) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1821 - self.match(CPP14Parser.Ellipsis) - self._ctx.stop = self._input.LT(-1) - self.state = 1836 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,209,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 = 1834 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,208,self._ctx) - if la_ == 1: - localctx = CPP14Parser.NoptrabstractpackdeclaratorContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_noptrabstractpackdeclarator) - self.state = 1823 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 1824 - self.parametersandqualifiers() - pass - - elif la_ == 2: - localctx = CPP14Parser.NoptrabstractpackdeclaratorContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_noptrabstractpackdeclarator) - self.state = 1825 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 1826 - self.match(CPP14Parser.LeftBracket) - self.state = 1828 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 1827 - self.constantexpression() - - - self.state = 1830 - self.match(CPP14Parser.RightBracket) - self.state = 1832 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,207,self._ctx) - if la_ == 1: - self.state = 1831 - self.attributespecifierseq(0) - - pass + def braceOrEqualInitializer(self): - - self.state = 1838 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,209,self._ctx) + localctx = CPP14Parser.BraceOrEqualInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 270, self.RULE_braceOrEqualInitializer) + try: + self.state = 1598 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [101]: + self.enterOuterAlt(localctx, 1) + self.state = 1595 + self.match(CPP14Parser.Assign) + self.state = 1596 + self.initializerClause() + pass + elif token in [89]: + self.enterOuterAlt(localctx, 2) + self.state = 1597 + self.bracedInitList() + pass + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class ParameterdeclarationclauseContext(ParserRuleContext): + class InitializerClauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def parameterdeclarationlist(self): - return self.getTypedRuleContext(CPP14Parser.ParameterdeclarationlistContext,0) + def assignmentExpression(self): + return self.getTypedRuleContext(CPP14Parser.AssignmentExpressionContext,0) - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) + def bracedInitList(self): + return self.getTypedRuleContext(CPP14Parser.BracedInitListContext,0) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) def getRuleIndex(self): - return CPP14Parser.RULE_parameterdeclarationclause + return CPP14Parser.RULE_initializerClause def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterParameterdeclarationclause" ): - listener.enterParameterdeclarationclause(self) + if hasattr( listener, "enterInitializerClause" ): + listener.enterInitializerClause(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitParameterdeclarationclause" ): - listener.exitParameterdeclarationclause(self) + if hasattr( listener, "exitInitializerClause" ): + listener.exitInitializerClause(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitParameterdeclarationclause" ): - return visitor.visitParameterdeclarationclause(self) + if hasattr( visitor, "visitInitializerClause" ): + return visitor.visitInitializerClause(self) else: return visitor.visitChildren(self) - def parameterdeclarationclause(self): + def initializerClause(self): - localctx = CPP14Parser.ParameterdeclarationclauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 270, self.RULE_parameterdeclarationclause) - self._la = 0 # Token type + localctx = CPP14Parser.InitializerClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 272, self.RULE_initializerClause) try: - self.state = 1849 + self.state = 1602 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,212,self._ctx) - if la_ == 1: + token = self._input.LA(1) + if token in [1, 2, 3, 4, 5, 6, 7, 11, 13, 14, 18, 19, 20, 24, 26, 28, 30, 31, 39, 45, 46, 49, 50, 52, 58, 60, 61, 62, 65, 69, 71, 75, 76, 78, 81, 83, 85, 87, 91, 92, 93, 97, 98, 99, 100, 120, 121, 127, 132]: self.enterOuterAlt(localctx, 1) - self.state = 1840 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 11)) & ~0x3f) == 0 and ((1 << (_la - 11)) & ((1 << (CPP14Parser.Alignas - 11)) | (1 << (CPP14Parser.Auto - 11)) | (1 << (CPP14Parser.Bool - 11)) | (1 << (CPP14Parser.Char - 11)) | (1 << (CPP14Parser.Char16 - 11)) | (1 << (CPP14Parser.Char32 - 11)) | (1 << (CPP14Parser.Class - 11)) | (1 << (CPP14Parser.Const - 11)) | (1 << (CPP14Parser.Constexpr - 11)) | (1 << (CPP14Parser.Decltype - 11)) | (1 << (CPP14Parser.Double - 11)) | (1 << (CPP14Parser.Enum - 11)) | (1 << (CPP14Parser.Explicit - 11)) | (1 << (CPP14Parser.Extern - 11)) | (1 << (CPP14Parser.Float - 11)) | (1 << (CPP14Parser.Friend - 11)) | (1 << (CPP14Parser.Inline - 11)) | (1 << (CPP14Parser.Int - 11)) | (1 << (CPP14Parser.Long - 11)) | (1 << (CPP14Parser.Mutable - 11)) | (1 << (CPP14Parser.Register - 11)) | (1 << (CPP14Parser.Short - 11)) | (1 << (CPP14Parser.Signed - 11)) | (1 << (CPP14Parser.Static - 11)) | (1 << (CPP14Parser.Struct - 11)) | (1 << (CPP14Parser.Thread_local - 11)) | (1 << (CPP14Parser.Typedef - 11)))) != 0) or ((((_la - 75)) & ~0x3f) == 0 and ((1 << (_la - 75)) & ((1 << (CPP14Parser.Typename_ - 75)) | (1 << (CPP14Parser.Union - 75)) | (1 << (CPP14Parser.Unsigned - 75)) | (1 << (CPP14Parser.Virtual - 75)) | (1 << (CPP14Parser.Void - 75)) | (1 << (CPP14Parser.Volatile - 75)) | (1 << (CPP14Parser.Wchar - 75)) | (1 << (CPP14Parser.LeftBracket - 75)) | (1 << (CPP14Parser.Doublecolon - 75)) | (1 << (CPP14Parser.Identifier - 75)))) != 0): - self.state = 1839 - self.parameterdeclarationlist(0) - - - self.state = 1843 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Ellipsis: - self.state = 1842 - self.match(CPP14Parser.Ellipsis) - - + self.state = 1600 + self.assignmentExpression() pass - - elif la_ == 2: + elif token in [89]: self.enterOuterAlt(localctx, 2) - self.state = 1845 - self.parameterdeclarationlist(0) - self.state = 1846 - self.match(CPP14Parser.Comma) - self.state = 1847 - self.match(CPP14Parser.Ellipsis) + self.state = 1601 + self.bracedInitList() pass - + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re @@ -13743,73 +12816,87 @@ def parameterdeclarationclause(self): return localctx - class ParameterdeclarationlistContext(ParserRuleContext): + class InitializerListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def parameterdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.ParameterdeclarationContext,0) - + def initializerClause(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.InitializerClauseContext) + else: + return self.getTypedRuleContext(CPP14Parser.InitializerClauseContext,i) - def parameterdeclarationlist(self): - return self.getTypedRuleContext(CPP14Parser.ParameterdeclarationlistContext,0) + def Ellipsis(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Ellipsis) + else: + return self.getToken(CPP14Parser.Ellipsis, i) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): - return CPP14Parser.RULE_parameterdeclarationlist + return CPP14Parser.RULE_initializerList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterParameterdeclarationlist" ): - listener.enterParameterdeclarationlist(self) + if hasattr( listener, "enterInitializerList" ): + listener.enterInitializerList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitParameterdeclarationlist" ): - listener.exitParameterdeclarationlist(self) + if hasattr( listener, "exitInitializerList" ): + listener.exitInitializerList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitParameterdeclarationlist" ): - return visitor.visitParameterdeclarationlist(self) + if hasattr( visitor, "visitInitializerList" ): + return visitor.visitInitializerList(self) else: return visitor.visitChildren(self) - def parameterdeclarationlist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.ParameterdeclarationlistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 272 - self.enterRecursionRule(localctx, 272, self.RULE_parameterdeclarationlist, _p) + + def initializerList(self): + + localctx = CPP14Parser.InitializerListContext(self, self._ctx, self.state) + self.enterRule(localctx, 274, self.RULE_initializerList) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1852 - self.parameterdeclaration() - self._ctx.stop = self._input.LT(-1) - self.state = 1859 + self.state = 1604 + self.initializerClause() + self.state = 1606 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==131: + self.state = 1605 + self.match(CPP14Parser.Ellipsis) + + + self.state = 1615 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,213,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 = CPP14Parser.ParameterdeclarationlistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_parameterdeclarationlist) - self.state = 1854 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 1855 + self.state = 1608 self.match(CPP14Parser.Comma) - self.state = 1856 - self.parameterdeclaration() - self.state = 1861 + self.state = 1609 + self.initializerClause() + self.state = 1611 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==131: + self.state = 1610 + self.match(CPP14Parser.Ellipsis) + + + self.state = 1617 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,213,self._ctx) @@ -13818,150 +12905,138 @@ def parameterdeclarationlist(self, _p:int=0): self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class ParameterdeclarationContext(ParserRuleContext): + class BracedInitListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def declspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclspecifierseqContext,0) + def LeftBrace(self): + return self.getToken(CPP14Parser.LeftBrace, 0) + def RightBrace(self): + return self.getToken(CPP14Parser.RightBrace, 0) - def declarator(self): - return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) - - - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) - - - def Assign(self): - return self.getToken(CPP14Parser.Assign, 0) + def initializerList(self): + return self.getTypedRuleContext(CPP14Parser.InitializerListContext,0) - def initializerclause(self): - return self.getTypedRuleContext(CPP14Parser.InitializerclauseContext,0) - - - def abstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.AbstractdeclaratorContext,0) + def Comma(self): + return self.getToken(CPP14Parser.Comma, 0) def getRuleIndex(self): - return CPP14Parser.RULE_parameterdeclaration + return CPP14Parser.RULE_bracedInitList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterParameterdeclaration" ): - listener.enterParameterdeclaration(self) + if hasattr( listener, "enterBracedInitList" ): + listener.enterBracedInitList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitParameterdeclaration" ): - listener.exitParameterdeclaration(self) + if hasattr( listener, "exitBracedInitList" ): + listener.exitBracedInitList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitParameterdeclaration" ): - return visitor.visitParameterdeclaration(self) + if hasattr( visitor, "visitBracedInitList" ): + return visitor.visitBracedInitList(self) else: return visitor.visitChildren(self) - def parameterdeclaration(self): + def bracedInitList(self): - localctx = CPP14Parser.ParameterdeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 274, self.RULE_parameterdeclaration) + localctx = CPP14Parser.BracedInitListContext(self, self._ctx, self.state) + self.enterRule(localctx, 276, self.RULE_bracedInitList) self._la = 0 # Token type try: - self.state = 1893 + self.enterOuterAlt(localctx, 1) + self.state = 1618 + self.match(CPP14Parser.LeftBrace) + self.state = 1623 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,220,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1863 + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474400910417) != 0) or _la==132: + self.state = 1619 + self.initializerList() + self.state = 1621 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1862 - self.attributespecifierseq(0) + if _la==122: + self.state = 1620 + self.match(CPP14Parser.Comma) - self.state = 1865 - self.declspecifierseq() - self.state = 1866 - self.declarator() - pass - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1869 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1868 - self.attributespecifierseq(0) + + self.state = 1625 + self.match(CPP14Parser.RightBrace) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx - self.state = 1871 - self.declspecifierseq() - self.state = 1872 - self.declarator() - self.state = 1873 - self.match(CPP14Parser.Assign) - self.state = 1874 - self.initializerclause() - pass + class ClassNameContext(ParserRuleContext): + __slots__ = 'parser' - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1877 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1876 - self.attributespecifierseq(0) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) - self.state = 1879 - self.declspecifierseq() - self.state = 1881 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,217,self._ctx) - if la_ == 1: - self.state = 1880 - self.abstractdeclarator() + def simpleTemplateId(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTemplateIdContext,0) - pass + def getRuleIndex(self): + return CPP14Parser.RULE_className - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1884 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1883 - self.attributespecifierseq(0) + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterClassName" ): + listener.enterClassName(self) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitClassName" ): + listener.exitClassName(self) - self.state = 1886 - self.declspecifierseq() - self.state = 1888 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.T__2 or _la==CPP14Parser.Decltype or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (CPP14Parser.LeftParen - 84)) | (1 << (CPP14Parser.LeftBracket - 84)) | (1 << (CPP14Parser.Star - 84)) | (1 << (CPP14Parser.And - 84)) | (1 << (CPP14Parser.Doublecolon - 84)) | (1 << (CPP14Parser.Ellipsis - 84)) | (1 << (CPP14Parser.Identifier - 84)))) != 0): - self.state = 1887 - self.abstractdeclarator() + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitClassName" ): + return visitor.visitClassName(self) + else: + return visitor.visitChildren(self) - self.state = 1890 - self.match(CPP14Parser.Assign) - self.state = 1891 - self.initializerclause() + + + def className(self): + + localctx = CPP14Parser.ClassNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 278, self.RULE_className) + try: + self.state = 1629 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,216,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1627 + self.match(CPP14Parser.Identifier) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1628 + self.simpleTemplateId() pass @@ -13974,87 +13049,68 @@ def parameterdeclaration(self): return localctx - class FunctiondefinitionContext(ParserRuleContext): + class ClassSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def declarator(self): - return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) - - - def functionbody(self): - return self.getTypedRuleContext(CPP14Parser.FunctionbodyContext,0) - - - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def classHead(self): + return self.getTypedRuleContext(CPP14Parser.ClassHeadContext,0) - def declspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclspecifierseqContext,0) + def LeftBrace(self): + return self.getToken(CPP14Parser.LeftBrace, 0) + def RightBrace(self): + return self.getToken(CPP14Parser.RightBrace, 0) - def virtspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.VirtspecifierseqContext,0) + def memberSpecification(self): + return self.getTypedRuleContext(CPP14Parser.MemberSpecificationContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_functiondefinition + return CPP14Parser.RULE_classSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunctiondefinition" ): - listener.enterFunctiondefinition(self) + if hasattr( listener, "enterClassSpecifier" ): + listener.enterClassSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunctiondefinition" ): - listener.exitFunctiondefinition(self) + if hasattr( listener, "exitClassSpecifier" ): + listener.exitClassSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunctiondefinition" ): - return visitor.visitFunctiondefinition(self) + if hasattr( visitor, "visitClassSpecifier" ): + return visitor.visitClassSpecifier(self) else: return visitor.visitChildren(self) - def functiondefinition(self): + def classSpecifier(self): - localctx = CPP14Parser.FunctiondefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 276, self.RULE_functiondefinition) + localctx = CPP14Parser.ClassSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 280, self.RULE_classSpecifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1896 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1895 - self.attributespecifierseq(0) - - - self.state = 1899 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,222,self._ctx) - if la_ == 1: - self.state = 1898 - self.declspecifierseq() - - - self.state = 1901 - self.declarator() - self.state = 1903 + self.state = 1631 + self.classHead() + self.state = 1632 + self.match(CPP14Parser.LeftBrace) + self.state = 1634 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Final or _la==CPP14Parser.Override: - self.state = 1902 - self.virtspecifierseq(0) + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 1543877313594212121) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 463888353847684093) != 0): + self.state = 1633 + self.memberSpecification() - self.state = 1905 - self.functionbody() + self.state = 1636 + self.match(CPP14Parser.RightBrace) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14064,106 +13120,134 @@ def functiondefinition(self): return localctx - class FunctionbodyContext(ParserRuleContext): + class ClassHeadContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def compoundstatement(self): - return self.getTypedRuleContext(CPP14Parser.CompoundstatementContext,0) + def classKey(self): + return self.getTypedRuleContext(CPP14Parser.ClassKeyContext,0) - def ctorinitializer(self): - return self.getTypedRuleContext(CPP14Parser.CtorinitializerContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) - def functiontryblock(self): - return self.getTypedRuleContext(CPP14Parser.FunctiontryblockContext,0) + def classHeadName(self): + return self.getTypedRuleContext(CPP14Parser.ClassHeadNameContext,0) - def Assign(self): - return self.getToken(CPP14Parser.Assign, 0) + def baseClause(self): + return self.getTypedRuleContext(CPP14Parser.BaseClauseContext,0) - def Default(self): - return self.getToken(CPP14Parser.Default, 0) - def Semi(self): - return self.getToken(CPP14Parser.Semi, 0) + def classVirtSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.ClassVirtSpecifierContext,0) - def Delete(self): - return self.getToken(CPP14Parser.Delete, 0) + + def Union(self): + return self.getToken(CPP14Parser.Union, 0) def getRuleIndex(self): - return CPP14Parser.RULE_functionbody + return CPP14Parser.RULE_classHead def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunctionbody" ): - listener.enterFunctionbody(self) + if hasattr( listener, "enterClassHead" ): + listener.enterClassHead(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunctionbody" ): - listener.exitFunctionbody(self) + if hasattr( listener, "exitClassHead" ): + listener.exitClassHead(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunctionbody" ): - return visitor.visitFunctionbody(self) + if hasattr( visitor, "visitClassHead" ): + return visitor.visitClassHead(self) else: return visitor.visitChildren(self) - def functionbody(self): + def classHead(self): - localctx = CPP14Parser.FunctionbodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 278, self.RULE_functionbody) + localctx = CPP14Parser.ClassHeadContext(self, self._ctx, self.state) + self.enterRule(localctx, 282, self.RULE_classHead) self._la = 0 # Token type try: - self.state = 1918 + self.state = 1661 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,225,self._ctx) - if la_ == 1: + token = self._input.LA(1) + if token in [21, 66]: self.enterOuterAlt(localctx, 1) - self.state = 1908 + self.state = 1638 + self.classKey() + self.state = 1640 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Colon: - self.state = 1907 - self.ctorinitializer() + if _la==10 or _la==87: + self.state = 1639 + self.attributeSpecifierSeq() - self.state = 1910 - self.compoundstatement() - pass + self.state = 1646 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==26 or _la==127 or _la==132: + self.state = 1642 + self.classHeadName() + self.state = 1644 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==38: + self.state = 1643 + self.classVirtSpecifier() - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1911 - self.functiontryblock() - pass - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1912 - self.match(CPP14Parser.Assign) - self.state = 1913 - self.match(CPP14Parser.Default) - self.state = 1914 - self.match(CPP14Parser.Semi) - pass - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1915 - self.match(CPP14Parser.Assign) - self.state = 1916 - self.match(CPP14Parser.Delete) - self.state = 1917 - self.match(CPP14Parser.Semi) + + self.state = 1649 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==126: + self.state = 1648 + self.baseClause() + + pass + elif token in [77]: + self.enterOuterAlt(localctx, 2) + self.state = 1651 + self.match(CPP14Parser.Union) + self.state = 1653 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==10 or _la==87: + self.state = 1652 + self.attributeSpecifierSeq() + + + self.state = 1659 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==26 or _la==127 or _la==132: + self.state = 1655 + self.classHeadName() + self.state = 1657 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==38: + self.state = 1656 + self.classVirtSpecifier() + + + pass + else: + raise NoViableAltException(self) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14173,71 +13257,57 @@ def functionbody(self): return localctx - class InitializerContext(ParserRuleContext): + class ClassHeadNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def braceorequalinitializer(self): - return self.getTypedRuleContext(CPP14Parser.BraceorequalinitializerContext,0) - - - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) + def className(self): + return self.getTypedRuleContext(CPP14Parser.ClassNameContext,0) - def expressionlist(self): - return self.getTypedRuleContext(CPP14Parser.ExpressionlistContext,0) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) def getRuleIndex(self): - return CPP14Parser.RULE_initializer + return CPP14Parser.RULE_classHeadName def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInitializer" ): - listener.enterInitializer(self) + if hasattr( listener, "enterClassHeadName" ): + listener.enterClassHeadName(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInitializer" ): - listener.exitInitializer(self) + if hasattr( listener, "exitClassHeadName" ): + listener.exitClassHeadName(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInitializer" ): - return visitor.visitInitializer(self) + if hasattr( visitor, "visitClassHeadName" ): + return visitor.visitClassHeadName(self) else: return visitor.visitChildren(self) - def initializer(self): + def classHeadName(self): - localctx = CPP14Parser.InitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 280, self.RULE_initializer) + localctx = CPP14Parser.ClassHeadNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 284, self.RULE_classHeadName) try: - self.state = 1925 + self.enterOuterAlt(localctx, 1) + self.state = 1664 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.LeftBrace, CPP14Parser.Assign]: - self.enterOuterAlt(localctx, 1) - self.state = 1920 - self.braceorequalinitializer() - pass - elif token in [CPP14Parser.LeftParen]: - self.enterOuterAlt(localctx, 2) - self.state = 1921 - self.match(CPP14Parser.LeftParen) - self.state = 1922 - self.expressionlist() - self.state = 1923 - self.match(CPP14Parser.RightParen) - pass - else: - raise NoViableAltException(self) + la_ = self._interp.adaptivePredict(self._input,226,self._ctx) + if la_ == 1: + self.state = 1663 + self.nestedNameSpecifier(0) + + self.state = 1666 + self.className() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14247,66 +13317,44 @@ def initializer(self): return localctx - class BraceorequalinitializerContext(ParserRuleContext): + class ClassVirtSpecifierContext(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(CPP14Parser.Assign, 0) - - def initializerclause(self): - return self.getTypedRuleContext(CPP14Parser.InitializerclauseContext,0) - - - def bracedinitlist(self): - return self.getTypedRuleContext(CPP14Parser.BracedinitlistContext,0) - + def Final(self): + return self.getToken(CPP14Parser.Final, 0) def getRuleIndex(self): - return CPP14Parser.RULE_braceorequalinitializer + return CPP14Parser.RULE_classVirtSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBraceorequalinitializer" ): - listener.enterBraceorequalinitializer(self) + if hasattr( listener, "enterClassVirtSpecifier" ): + listener.enterClassVirtSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBraceorequalinitializer" ): - listener.exitBraceorequalinitializer(self) + if hasattr( listener, "exitClassVirtSpecifier" ): + listener.exitClassVirtSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBraceorequalinitializer" ): - return visitor.visitBraceorequalinitializer(self) + if hasattr( visitor, "visitClassVirtSpecifier" ): + return visitor.visitClassVirtSpecifier(self) else: return visitor.visitChildren(self) - def braceorequalinitializer(self): + def classVirtSpecifier(self): - localctx = CPP14Parser.BraceorequalinitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 282, self.RULE_braceorequalinitializer) + localctx = CPP14Parser.ClassVirtSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 286, self.RULE_classVirtSpecifier) try: - self.state = 1930 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.Assign]: - self.enterOuterAlt(localctx, 1) - self.state = 1927 - self.match(CPP14Parser.Assign) - self.state = 1928 - self.initializerclause() - pass - elif token in [CPP14Parser.LeftBrace]: - self.enterOuterAlt(localctx, 2) - self.state = 1929 - self.bracedinitlist() - pass - else: - raise NoViableAltException(self) - + self.enterOuterAlt(localctx, 1) + self.state = 1668 + self.match(CPP14Parser.Final) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14316,61 +13364,53 @@ def braceorequalinitializer(self): return localctx - class InitializerclauseContext(ParserRuleContext): + class ClassKeyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def assignmentexpression(self): - return self.getTypedRuleContext(CPP14Parser.AssignmentexpressionContext,0) - - - def bracedinitlist(self): - return self.getTypedRuleContext(CPP14Parser.BracedinitlistContext,0) + def Class(self): + return self.getToken(CPP14Parser.Class, 0) + def Struct(self): + return self.getToken(CPP14Parser.Struct, 0) def getRuleIndex(self): - return CPP14Parser.RULE_initializerclause + return CPP14Parser.RULE_classKey def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInitializerclause" ): - listener.enterInitializerclause(self) + if hasattr( listener, "enterClassKey" ): + listener.enterClassKey(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInitializerclause" ): - listener.exitInitializerclause(self) + if hasattr( listener, "exitClassKey" ): + listener.exitClassKey(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInitializerclause" ): - return visitor.visitInitializerclause(self) + if hasattr( visitor, "visitClassKey" ): + return visitor.visitClassKey(self) else: return visitor.visitChildren(self) - def initializerclause(self): + def classKey(self): - localctx = CPP14Parser.InitializerclauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 284, self.RULE_initializerclause) + localctx = CPP14Parser.ClassKeyContext(self, self._ctx, self.state) + self.enterRule(localctx, 288, self.RULE_classKey) + self._la = 0 # Token type try: - self.state = 1934 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.T__0, CPP14Parser.T__1, CPP14Parser.T__6, CPP14Parser.T__7, CPP14Parser.Alignof, CPP14Parser.Auto, CPP14Parser.Bool, CPP14Parser.Char, CPP14Parser.Char16, CPP14Parser.Char32, CPP14Parser.Const_cast, CPP14Parser.Decltype, CPP14Parser.Delete, CPP14Parser.Double, CPP14Parser.Dynamic_cast, CPP14Parser.Float, CPP14Parser.Int, CPP14Parser.Long, CPP14Parser.New, CPP14Parser.Noexcept, CPP14Parser.Nullptr, CPP14Parser.Operator, CPP14Parser.Reinterpret_cast, CPP14Parser.Short, CPP14Parser.Signed, CPP14Parser.Sizeof, CPP14Parser.Static_cast, CPP14Parser.This, CPP14Parser.Throw, CPP14Parser.Typeid_, CPP14Parser.Typename_, CPP14Parser.Unsigned, CPP14Parser.Void, CPP14Parser.Wchar, CPP14Parser.LeftParen, CPP14Parser.LeftBracket, CPP14Parser.Plus, CPP14Parser.Minus, CPP14Parser.Star, CPP14Parser.And, CPP14Parser.Or, CPP14Parser.Tilde, CPP14Parser.PlusPlus, CPP14Parser.MinusMinus, CPP14Parser.Doublecolon, CPP14Parser.Identifier, CPP14Parser.Integerliteral, CPP14Parser.Characterliteral, CPP14Parser.Floatingliteral, CPP14Parser.Stringliteral, CPP14Parser.Userdefinedintegerliteral, CPP14Parser.Userdefinedfloatingliteral, CPP14Parser.Userdefinedstringliteral, CPP14Parser.Userdefinedcharacterliteral]: - self.enterOuterAlt(localctx, 1) - self.state = 1932 - self.assignmentexpression() - pass - elif token in [CPP14Parser.LeftBrace]: - self.enterOuterAlt(localctx, 2) - self.state = 1933 - self.bracedinitlist() - pass + self.enterOuterAlt(localctx, 1) + self.state = 1670 + _la = self._input.LA(1) + if not(_la==21 or _la==66): + self._errHandler.recoverInline(self) else: - raise NoViableAltException(self) - + self._errHandler.reportMatch(self) + self.consume() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14380,239 +13420,234 @@ def initializerclause(self): return localctx - class InitializerlistContext(ParserRuleContext): + class MemberSpecificationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def initializerclause(self): - return self.getTypedRuleContext(CPP14Parser.InitializerclauseContext,0) - + def memberdeclaration(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.MemberdeclarationContext) + else: + return self.getTypedRuleContext(CPP14Parser.MemberdeclarationContext,i) - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) - def initializerlist(self): - return self.getTypedRuleContext(CPP14Parser.InitializerlistContext,0) + def accessSpecifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.AccessSpecifierContext) + else: + return self.getTypedRuleContext(CPP14Parser.AccessSpecifierContext,i) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) + def Colon(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Colon) + else: + return self.getToken(CPP14Parser.Colon, i) def getRuleIndex(self): - return CPP14Parser.RULE_initializerlist + return CPP14Parser.RULE_memberSpecification def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInitializerlist" ): - listener.enterInitializerlist(self) + if hasattr( listener, "enterMemberSpecification" ): + listener.enterMemberSpecification(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInitializerlist" ): - listener.exitInitializerlist(self) + if hasattr( listener, "exitMemberSpecification" ): + listener.exitMemberSpecification(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInitializerlist" ): - return visitor.visitInitializerlist(self) + if hasattr( visitor, "visitMemberSpecification" ): + return visitor.visitMemberSpecification(self) else: return visitor.visitChildren(self) - def initializerlist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.InitializerlistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 286 - self.enterRecursionRule(localctx, 286, self.RULE_initializerlist, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1937 - self.initializerclause() - self.state = 1939 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,229,self._ctx) - if la_ == 1: - self.state = 1938 - self.match(CPP14Parser.Ellipsis) + def memberSpecification(self): - self._ctx.stop = self._input.LT(-1) - self.state = 1949 + localctx = CPP14Parser.MemberSpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 290, self.RULE_memberSpecification) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1676 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,231,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 = CPP14Parser.InitializerlistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_initializerlist) - self.state = 1941 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 1942 - self.match(CPP14Parser.Comma) - self.state = 1943 - self.initializerclause() - self.state = 1945 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,230,self._ctx) - if la_ == 1: - self.state = 1944 - self.match(CPP14Parser.Ellipsis) - - - self.state = 1951 + _la = self._input.LA(1) + while True: + self.state = 1676 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,231,self._ctx) + token = self._input.LA(1) + if token in [10, 13, 14, 18, 19, 20, 21, 22, 23, 26, 30, 33, 34, 36, 39, 41, 44, 45, 46, 47, 52, 57, 60, 61, 63, 64, 66, 68, 70, 74, 76, 77, 78, 79, 80, 81, 82, 83, 85, 87, 93, 97, 99, 118, 126, 127, 128, 131, 132]: + self.state = 1672 + self.memberdeclaration() + pass + elif token in [54, 55, 56]: + self.state = 1673 + self.accessSpecifier() + self.state = 1674 + self.match(CPP14Parser.Colon) + pass + else: + raise NoViableAltException(self) + + self.state = 1678 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 1543877313594212121) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 463888353847684093) != 0)): + break except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class BracedinitlistContext(ParserRuleContext): + class MemberdeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def LeftBrace(self): - return self.getToken(CPP14Parser.LeftBrace, 0) - - def initializerlist(self): - return self.getTypedRuleContext(CPP14Parser.InitializerlistContext,0) - - - def RightBrace(self): - return self.getToken(CPP14Parser.RightBrace, 0) - - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) - - def getRuleIndex(self): - return CPP14Parser.RULE_bracedinitlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBracedinitlist" ): - listener.enterBracedinitlist(self) + def Semi(self): + return self.getToken(CPP14Parser.Semi, 0) - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBracedinitlist" ): - listener.exitBracedinitlist(self) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBracedinitlist" ): - return visitor.visitBracedinitlist(self) - else: - return visitor.visitChildren(self) + def declSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.DeclSpecifierSeqContext,0) + def memberDeclaratorList(self): + return self.getTypedRuleContext(CPP14Parser.MemberDeclaratorListContext,0) - def bracedinitlist(self): - localctx = CPP14Parser.BracedinitlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 288, self.RULE_bracedinitlist) - self._la = 0 # Token type - try: - self.state = 1961 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,233,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1952 - self.match(CPP14Parser.LeftBrace) - self.state = 1953 - self.initializerlist(0) - self.state = 1955 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Comma: - self.state = 1954 - self.match(CPP14Parser.Comma) + def functionDefinition(self): + return self.getTypedRuleContext(CPP14Parser.FunctionDefinitionContext,0) - self.state = 1957 - self.match(CPP14Parser.RightBrace) - pass + def usingDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.UsingDeclarationContext,0) - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1959 - self.match(CPP14Parser.LeftBrace) - self.state = 1960 - self.match(CPP14Parser.RightBrace) - pass + def staticAssertDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.StaticAssertDeclarationContext,0) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx + def templateDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.TemplateDeclarationContext,0) - class ClassnameContext(ParserRuleContext): - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser + def aliasDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.AliasDeclarationContext,0) - def Identifier(self): - return self.getToken(CPP14Parser.Identifier, 0) - def simpletemplateid(self): - return self.getTypedRuleContext(CPP14Parser.SimpletemplateidContext,0) + def emptyDeclaration_(self): + return self.getTypedRuleContext(CPP14Parser.EmptyDeclaration_Context,0) def getRuleIndex(self): - return CPP14Parser.RULE_classname + return CPP14Parser.RULE_memberdeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassname" ): - listener.enterClassname(self) + if hasattr( listener, "enterMemberdeclaration" ): + listener.enterMemberdeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassname" ): - listener.exitClassname(self) + if hasattr( listener, "exitMemberdeclaration" ): + listener.exitMemberdeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassname" ): - return visitor.visitClassname(self) + if hasattr( visitor, "visitMemberdeclaration" ): + return visitor.visitMemberdeclaration(self) else: return visitor.visitChildren(self) - def classname(self): + def memberdeclaration(self): - localctx = CPP14Parser.ClassnameContext(self, self._ctx, self.state) - self.enterRule(localctx, 290, self.RULE_classname) + localctx = CPP14Parser.MemberdeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 292, self.RULE_memberdeclaration) + self._la = 0 # Token type try: - self.state = 1965 + self.state = 1696 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,234,self._ctx) + la_ = self._interp.adaptivePredict(self._input,232,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1963 - self.match(CPP14Parser.Identifier) + self.state = 1681 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,229,self._ctx) + if la_ == 1: + self.state = 1680 + self.attributeSpecifierSeq() + + + self.state = 1684 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,230,self._ctx) + if la_ == 1: + self.state = 1683 + self.declSpecifierSeq() + + + self.state = 1687 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4503599694480384) != 0) or ((((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 217711892254981) != 0): + self.state = 1686 + self.memberDeclaratorList() + + + self.state = 1689 + self.match(CPP14Parser.Semi) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1964 - self.simpletemplateid() + self.state = 1690 + self.functionDefinition() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1691 + self.usingDeclaration() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1692 + self.staticAssertDeclaration() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1693 + self.templateDeclaration() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 1694 + self.aliasDeclaration() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 1695 + self.emptyDeclaration_() pass @@ -14625,67 +13660,67 @@ def classname(self): return localctx - class ClassspecifierContext(ParserRuleContext): + class MemberDeclaratorListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def classhead(self): - return self.getTypedRuleContext(CPP14Parser.ClassheadContext,0) - - - def LeftBrace(self): - return self.getToken(CPP14Parser.LeftBrace, 0) - - def RightBrace(self): - return self.getToken(CPP14Parser.RightBrace, 0) + def memberDeclarator(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.MemberDeclaratorContext) + else: + return self.getTypedRuleContext(CPP14Parser.MemberDeclaratorContext,i) - def memberspecification(self): - return self.getTypedRuleContext(CPP14Parser.MemberspecificationContext,0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): - return CPP14Parser.RULE_classspecifier + return CPP14Parser.RULE_memberDeclaratorList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassspecifier" ): - listener.enterClassspecifier(self) + if hasattr( listener, "enterMemberDeclaratorList" ): + listener.enterMemberDeclaratorList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassspecifier" ): - listener.exitClassspecifier(self) + if hasattr( listener, "exitMemberDeclaratorList" ): + listener.exitMemberDeclaratorList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassspecifier" ): - return visitor.visitClassspecifier(self) + if hasattr( visitor, "visitMemberDeclaratorList" ): + return visitor.visitMemberDeclaratorList(self) else: return visitor.visitChildren(self) - def classspecifier(self): + def memberDeclaratorList(self): - localctx = CPP14Parser.ClassspecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 292, self.RULE_classspecifier) + localctx = CPP14Parser.MemberDeclaratorListContext(self, self._ctx, self.state) + self.enterRule(localctx, 294, self.RULE_memberDeclaratorList) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1967 - self.classhead() - self.state = 1968 - self.match(CPP14Parser.LeftBrace) - self.state = 1970 + self.state = 1698 + self.memberDeclarator() + self.state = 1703 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__2) | (1 << CPP14Parser.Alignas) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Constexpr) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Explicit) | (1 << CPP14Parser.Extern) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Friend) | (1 << CPP14Parser.Inline) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.Mutable) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Private) | (1 << CPP14Parser.Protected) | (1 << CPP14Parser.Public) | (1 << CPP14Parser.Register) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Static))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CPP14Parser.Static_assert - 64)) | (1 << (CPP14Parser.Struct - 64)) | (1 << (CPP14Parser.Template - 64)) | (1 << (CPP14Parser.Thread_local - 64)) | (1 << (CPP14Parser.Typedef - 64)) | (1 << (CPP14Parser.Typename_ - 64)) | (1 << (CPP14Parser.Union - 64)) | (1 << (CPP14Parser.Unsigned - 64)) | (1 << (CPP14Parser.Using - 64)) | (1 << (CPP14Parser.Virtual - 64)) | (1 << (CPP14Parser.Void - 64)) | (1 << (CPP14Parser.Volatile - 64)) | (1 << (CPP14Parser.Wchar - 64)) | (1 << (CPP14Parser.LeftParen - 64)) | (1 << (CPP14Parser.LeftBracket - 64)) | (1 << (CPP14Parser.Star - 64)) | (1 << (CPP14Parser.And - 64)) | (1 << (CPP14Parser.Tilde - 64)) | (1 << (CPP14Parser.Colon - 64)))) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & ((1 << (CPP14Parser.Doublecolon - 128)) | (1 << (CPP14Parser.Semi - 128)) | (1 << (CPP14Parser.Ellipsis - 128)) | (1 << (CPP14Parser.Identifier - 128)))) != 0): - self.state = 1969 - self.memberspecification() - + while _la==122: + self.state = 1699 + self.match(CPP14Parser.Comma) + self.state = 1700 + self.memberDeclarator() + self.state = 1705 + self._errHandler.sync(self) + _la = self._input.LA(1) - self.state = 1972 - self.match(CPP14Parser.RightBrace) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14695,113 +13730,140 @@ def classspecifier(self): return localctx - class ClassheadContext(ParserRuleContext): + class MemberDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def classkey(self): - return self.getTypedRuleContext(CPP14Parser.ClasskeyContext,0) + def declarator(self): + return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) + + + def virtualSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.VirtualSpecifierSeqContext,0) + + def pureSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.PureSpecifierContext,0) - def classheadname(self): - return self.getTypedRuleContext(CPP14Parser.ClassheadnameContext,0) + def braceOrEqualInitializer(self): + return self.getTypedRuleContext(CPP14Parser.BraceOrEqualInitializerContext,0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def Colon(self): + return self.getToken(CPP14Parser.Colon, 0) - def classvirtspecifier(self): - return self.getTypedRuleContext(CPP14Parser.ClassvirtspecifierContext,0) + def constantExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,0) - def baseclause(self): - return self.getTypedRuleContext(CPP14Parser.BaseclauseContext,0) + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) + + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_classhead + return CPP14Parser.RULE_memberDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClasshead" ): - listener.enterClasshead(self) + if hasattr( listener, "enterMemberDeclarator" ): + listener.enterMemberDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClasshead" ): - listener.exitClasshead(self) + if hasattr( listener, "exitMemberDeclarator" ): + listener.exitMemberDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClasshead" ): - return visitor.visitClasshead(self) + if hasattr( visitor, "visitMemberDeclarator" ): + return visitor.visitMemberDeclarator(self) else: return visitor.visitChildren(self) - def classhead(self): + def memberDeclarator(self): - localctx = CPP14Parser.ClassheadContext(self, self._ctx, self.state) - self.enterRule(localctx, 294, self.RULE_classhead) + localctx = CPP14Parser.MemberDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 296, self.RULE_memberDeclarator) self._la = 0 # Token type try: - self.state = 1992 + self.state = 1726 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,241,self._ctx) + la_ = self._interp.adaptivePredict(self._input,237,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1974 - self.classkey() - self.state = 1976 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1975 - self.attributespecifierseq(0) - - - self.state = 1978 - self.classheadname() - self.state = 1980 + self.state = 1706 + self.declarator() + self.state = 1715 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Final: - self.state = 1979 - self.classvirtspecifier() + la_ = self._interp.adaptivePredict(self._input,234,self._ctx) + if la_ == 1: + self.state = 1707 + self.virtualSpecifierSeq() + pass + elif la_ == 2: + self.state = 1708 + if not this.IsPureSpecifierAllowed() : + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, " this.IsPureSpecifierAllowed() ") + self.state = 1709 + self.pureSpecifier() + pass + + elif la_ == 3: + self.state = 1710 + if not this.IsPureSpecifierAllowed() : + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, " this.IsPureSpecifierAllowed() ") + self.state = 1711 + self.virtualSpecifierSeq() + self.state = 1712 + self.pureSpecifier() + pass - self.state = 1983 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Colon: - self.state = 1982 - self.baseclause() + elif la_ == 4: + self.state = 1714 + self.braceOrEqualInitializer() + pass pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1985 - self.classkey() - self.state = 1987 + self.state = 1717 + self.declarator() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1719 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 1986 - self.attributespecifierseq(0) + if _la==132: + self.state = 1718 + self.match(CPP14Parser.Identifier) - self.state = 1990 + self.state = 1722 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Colon: - self.state = 1989 - self.baseclause() + if _la==10 or _la==87: + self.state = 1721 + self.attributeSpecifierSeq() + self.state = 1724 + self.match(CPP14Parser.Colon) + self.state = 1725 + self.constantExpression() pass @@ -14814,56 +13876,59 @@ def classhead(self): return localctx - class ClassheadnameContext(ParserRuleContext): + class VirtualSpecifierSeqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def classname(self): - return self.getTypedRuleContext(CPP14Parser.ClassnameContext,0) - - - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def virtualSpecifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.VirtualSpecifierContext) + else: + return self.getTypedRuleContext(CPP14Parser.VirtualSpecifierContext,i) def getRuleIndex(self): - return CPP14Parser.RULE_classheadname + return CPP14Parser.RULE_virtualSpecifierSeq def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassheadname" ): - listener.enterClassheadname(self) + if hasattr( listener, "enterVirtualSpecifierSeq" ): + listener.enterVirtualSpecifierSeq(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassheadname" ): - listener.exitClassheadname(self) + if hasattr( listener, "exitVirtualSpecifierSeq" ): + listener.exitVirtualSpecifierSeq(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassheadname" ): - return visitor.visitClassheadname(self) + if hasattr( visitor, "visitVirtualSpecifierSeq" ): + return visitor.visitVirtualSpecifierSeq(self) else: return visitor.visitChildren(self) - def classheadname(self): + def virtualSpecifierSeq(self): - localctx = CPP14Parser.ClassheadnameContext(self, self._ctx, self.state) - self.enterRule(localctx, 296, self.RULE_classheadname) + localctx = CPP14Parser.VirtualSpecifierSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 298, self.RULE_virtualSpecifierSeq) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1995 + self.state = 1729 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,242,self._ctx) - if la_ == 1: - self.state = 1994 - self.nestednamespecifier(0) - + _la = self._input.LA(1) + while True: + self.state = 1728 + self.virtualSpecifier() + self.state = 1731 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la==38 or _la==53): + break - self.state = 1997 - self.classname() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14873,43 +13938,53 @@ def classheadname(self): return localctx - class ClassvirtspecifierContext(ParserRuleContext): + class VirtualSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def Override(self): + return self.getToken(CPP14Parser.Override, 0) + def Final(self): return self.getToken(CPP14Parser.Final, 0) def getRuleIndex(self): - return CPP14Parser.RULE_classvirtspecifier + return CPP14Parser.RULE_virtualSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassvirtspecifier" ): - listener.enterClassvirtspecifier(self) + if hasattr( listener, "enterVirtualSpecifier" ): + listener.enterVirtualSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassvirtspecifier" ): - listener.exitClassvirtspecifier(self) + if hasattr( listener, "exitVirtualSpecifier" ): + listener.exitVirtualSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassvirtspecifier" ): - return visitor.visitClassvirtspecifier(self) + if hasattr( visitor, "visitVirtualSpecifier" ): + return visitor.visitVirtualSpecifier(self) else: return visitor.visitChildren(self) - def classvirtspecifier(self): + def virtualSpecifier(self): - localctx = CPP14Parser.ClassvirtspecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 298, self.RULE_classvirtspecifier) + localctx = CPP14Parser.VirtualSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 300, self.RULE_virtualSpecifier) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1999 - self.match(CPP14Parser.Final) + self.state = 1733 + _la = self._input.LA(1) + if not(_la==38 or _la==53): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14919,55 +13994,49 @@ def classvirtspecifier(self): return localctx - class ClasskeyContext(ParserRuleContext): + class PureSpecifierContext(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(CPP14Parser.Class, 0) - - def Struct(self): - return self.getToken(CPP14Parser.Struct, 0) + def Assign(self): + return self.getToken(CPP14Parser.Assign, 0) - def Union(self): - return self.getToken(CPP14Parser.Union, 0) + def IntegerLiteral(self): + return self.getToken(CPP14Parser.IntegerLiteral, 0) def getRuleIndex(self): - return CPP14Parser.RULE_classkey + return CPP14Parser.RULE_pureSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClasskey" ): - listener.enterClasskey(self) + if hasattr( listener, "enterPureSpecifier" ): + listener.enterPureSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClasskey" ): - listener.exitClasskey(self) + if hasattr( listener, "exitPureSpecifier" ): + listener.exitPureSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClasskey" ): - return visitor.visitClasskey(self) + if hasattr( visitor, "visitPureSpecifier" ): + return visitor.visitPureSpecifier(self) else: return visitor.visitChildren(self) - def classkey(self): + def pureSpecifier(self): - localctx = CPP14Parser.ClasskeyContext(self, self._ctx, self.state) - self.enterRule(localctx, 300, self.RULE_classkey) - self._la = 0 # Token type + localctx = CPP14Parser.PureSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 302, self.RULE_pureSpecifier) try: self.enterOuterAlt(localctx, 1) - self.state = 2001 - _la = self._input.LA(1) - if not(((((_la - 22)) & ~0x3f) == 0 and ((1 << (_la - 22)) & ((1 << (CPP14Parser.Class - 22)) | (1 << (CPP14Parser.Struct - 22)) | (1 << (CPP14Parser.Union - 22)))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() + self.state = 1735 + self.match(CPP14Parser.Assign) + self.state = 1736 + self.match(CPP14Parser.IntegerLiteral) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14977,87 +14046,50 @@ def classkey(self): return localctx - class MemberspecificationContext(ParserRuleContext): + class BaseClauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def memberdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.MemberdeclarationContext,0) - - - def memberspecification(self): - return self.getTypedRuleContext(CPP14Parser.MemberspecificationContext,0) - - - def accessspecifier(self): - return self.getTypedRuleContext(CPP14Parser.AccessspecifierContext,0) - - def Colon(self): return self.getToken(CPP14Parser.Colon, 0) + def baseSpecifierList(self): + return self.getTypedRuleContext(CPP14Parser.BaseSpecifierListContext,0) + + def getRuleIndex(self): - return CPP14Parser.RULE_memberspecification + return CPP14Parser.RULE_baseClause def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMemberspecification" ): - listener.enterMemberspecification(self) + if hasattr( listener, "enterBaseClause" ): + listener.enterBaseClause(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMemberspecification" ): - listener.exitMemberspecification(self) + if hasattr( listener, "exitBaseClause" ): + listener.exitBaseClause(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMemberspecification" ): - return visitor.visitMemberspecification(self) + if hasattr( visitor, "visitBaseClause" ): + return visitor.visitBaseClause(self) else: return visitor.visitChildren(self) - def memberspecification(self): + def baseClause(self): - localctx = CPP14Parser.MemberspecificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 302, self.RULE_memberspecification) - self._la = 0 # Token type + localctx = CPP14Parser.BaseClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 304, self.RULE_baseClause) try: - self.state = 2012 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.T__2, CPP14Parser.Alignas, CPP14Parser.Auto, CPP14Parser.Bool, CPP14Parser.Char, CPP14Parser.Char16, CPP14Parser.Char32, CPP14Parser.Class, CPP14Parser.Const, CPP14Parser.Constexpr, CPP14Parser.Decltype, CPP14Parser.Double, CPP14Parser.Enum, CPP14Parser.Explicit, CPP14Parser.Extern, CPP14Parser.Float, CPP14Parser.Friend, CPP14Parser.Inline, CPP14Parser.Int, CPP14Parser.Long, CPP14Parser.Mutable, CPP14Parser.Operator, CPP14Parser.Register, CPP14Parser.Short, CPP14Parser.Signed, CPP14Parser.Static, CPP14Parser.Static_assert, CPP14Parser.Struct, CPP14Parser.Template, CPP14Parser.Thread_local, CPP14Parser.Typedef, CPP14Parser.Typename_, CPP14Parser.Union, CPP14Parser.Unsigned, CPP14Parser.Using, CPP14Parser.Virtual, CPP14Parser.Void, CPP14Parser.Volatile, CPP14Parser.Wchar, CPP14Parser.LeftParen, CPP14Parser.LeftBracket, CPP14Parser.Star, CPP14Parser.And, CPP14Parser.Tilde, CPP14Parser.Colon, CPP14Parser.Doublecolon, CPP14Parser.Semi, CPP14Parser.Ellipsis, CPP14Parser.Identifier]: - self.enterOuterAlt(localctx, 1) - self.state = 2003 - self.memberdeclaration() - self.state = 2005 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__2) | (1 << CPP14Parser.Alignas) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Constexpr) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Explicit) | (1 << CPP14Parser.Extern) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Friend) | (1 << CPP14Parser.Inline) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.Mutable) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Private) | (1 << CPP14Parser.Protected) | (1 << CPP14Parser.Public) | (1 << CPP14Parser.Register) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Static))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CPP14Parser.Static_assert - 64)) | (1 << (CPP14Parser.Struct - 64)) | (1 << (CPP14Parser.Template - 64)) | (1 << (CPP14Parser.Thread_local - 64)) | (1 << (CPP14Parser.Typedef - 64)) | (1 << (CPP14Parser.Typename_ - 64)) | (1 << (CPP14Parser.Union - 64)) | (1 << (CPP14Parser.Unsigned - 64)) | (1 << (CPP14Parser.Using - 64)) | (1 << (CPP14Parser.Virtual - 64)) | (1 << (CPP14Parser.Void - 64)) | (1 << (CPP14Parser.Volatile - 64)) | (1 << (CPP14Parser.Wchar - 64)) | (1 << (CPP14Parser.LeftParen - 64)) | (1 << (CPP14Parser.LeftBracket - 64)) | (1 << (CPP14Parser.Star - 64)) | (1 << (CPP14Parser.And - 64)) | (1 << (CPP14Parser.Tilde - 64)) | (1 << (CPP14Parser.Colon - 64)))) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & ((1 << (CPP14Parser.Doublecolon - 128)) | (1 << (CPP14Parser.Semi - 128)) | (1 << (CPP14Parser.Ellipsis - 128)) | (1 << (CPP14Parser.Identifier - 128)))) != 0): - self.state = 2004 - self.memberspecification() - - - pass - elif token in [CPP14Parser.Private, CPP14Parser.Protected, CPP14Parser.Public]: - self.enterOuterAlt(localctx, 2) - self.state = 2007 - self.accessspecifier() - self.state = 2008 - self.match(CPP14Parser.Colon) - self.state = 2010 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__2) | (1 << CPP14Parser.Alignas) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Constexpr) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Explicit) | (1 << CPP14Parser.Extern) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Friend) | (1 << CPP14Parser.Inline) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.Mutable) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Private) | (1 << CPP14Parser.Protected) | (1 << CPP14Parser.Public) | (1 << CPP14Parser.Register) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Static))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CPP14Parser.Static_assert - 64)) | (1 << (CPP14Parser.Struct - 64)) | (1 << (CPP14Parser.Template - 64)) | (1 << (CPP14Parser.Thread_local - 64)) | (1 << (CPP14Parser.Typedef - 64)) | (1 << (CPP14Parser.Typename_ - 64)) | (1 << (CPP14Parser.Union - 64)) | (1 << (CPP14Parser.Unsigned - 64)) | (1 << (CPP14Parser.Using - 64)) | (1 << (CPP14Parser.Virtual - 64)) | (1 << (CPP14Parser.Void - 64)) | (1 << (CPP14Parser.Volatile - 64)) | (1 << (CPP14Parser.Wchar - 64)) | (1 << (CPP14Parser.LeftParen - 64)) | (1 << (CPP14Parser.LeftBracket - 64)) | (1 << (CPP14Parser.Star - 64)) | (1 << (CPP14Parser.And - 64)) | (1 << (CPP14Parser.Tilde - 64)) | (1 << (CPP14Parser.Colon - 64)))) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & ((1 << (CPP14Parser.Doublecolon - 128)) | (1 << (CPP14Parser.Semi - 128)) | (1 << (CPP14Parser.Ellipsis - 128)) | (1 << (CPP14Parser.Identifier - 128)))) != 0): - self.state = 2009 - self.memberspecification() - - - pass - else: - raise NoViableAltException(self) - + self.enterOuterAlt(localctx, 1) + self.state = 1738 + self.match(CPP14Parser.Colon) + self.state = 1739 + self.baseSpecifierList() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -15067,146 +14099,88 @@ def memberspecification(self): return localctx - class MemberdeclarationContext(ParserRuleContext): + class BaseSpecifierListContext(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(CPP14Parser.Semi, 0) + def baseSpecifier(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.BaseSpecifierContext) + else: + return self.getTypedRuleContext(CPP14Parser.BaseSpecifierContext,i) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def Ellipsis(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Ellipsis) + else: + return self.getToken(CPP14Parser.Ellipsis, i) - def declspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.DeclspecifierseqContext,0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) + def getRuleIndex(self): + return CPP14Parser.RULE_baseSpecifierList - def memberdeclaratorlist(self): - return self.getTypedRuleContext(CPP14Parser.MemberdeclaratorlistContext,0) + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBaseSpecifierList" ): + listener.enterBaseSpecifierList(self) - - def functiondefinition(self): - return self.getTypedRuleContext(CPP14Parser.FunctiondefinitionContext,0) - - - def usingdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.UsingdeclarationContext,0) - - - def static_assertdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.Static_assertdeclarationContext,0) - - - def templatedeclaration(self): - return self.getTypedRuleContext(CPP14Parser.TemplatedeclarationContext,0) - - - def aliasdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.AliasdeclarationContext,0) - - - def emptydeclaration(self): - return self.getTypedRuleContext(CPP14Parser.EmptydeclarationContext,0) - - - def getRuleIndex(self): - return CPP14Parser.RULE_memberdeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMemberdeclaration" ): - listener.enterMemberdeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMemberdeclaration" ): - listener.exitMemberdeclaration(self) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBaseSpecifierList" ): + listener.exitBaseSpecifierList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMemberdeclaration" ): - return visitor.visitMemberdeclaration(self) + if hasattr( visitor, "visitBaseSpecifierList" ): + return visitor.visitBaseSpecifierList(self) else: return visitor.visitChildren(self) - def memberdeclaration(self): + def baseSpecifierList(self): - localctx = CPP14Parser.MemberdeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 304, self.RULE_memberdeclaration) + localctx = CPP14Parser.BaseSpecifierListContext(self, self._ctx, self.state) + self.enterRule(localctx, 306, self.RULE_baseSpecifierList) self._la = 0 # Token type try: - self.state = 2030 + self.enterOuterAlt(localctx, 1) + self.state = 1741 + self.baseSpecifier() + self.state = 1743 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,249,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2015 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,246,self._ctx) - if la_ == 1: - self.state = 2014 - self.attributespecifierseq(0) + _la = self._input.LA(1) + if _la==131: + self.state = 1742 + self.match(CPP14Parser.Ellipsis) - self.state = 2018 + self.state = 1752 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==122: + self.state = 1745 + self.match(CPP14Parser.Comma) + self.state = 1746 + self.baseSpecifier() + self.state = 1748 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,247,self._ctx) - if la_ == 1: - self.state = 2017 - self.declspecifierseq() + _la = self._input.LA(1) + if _la==131: + self.state = 1747 + self.match(CPP14Parser.Ellipsis) - self.state = 2021 + self.state = 1754 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__2) | (1 << CPP14Parser.Alignas) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Operator))) != 0) or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (CPP14Parser.LeftParen - 84)) | (1 << (CPP14Parser.LeftBracket - 84)) | (1 << (CPP14Parser.Star - 84)) | (1 << (CPP14Parser.And - 84)) | (1 << (CPP14Parser.Tilde - 84)) | (1 << (CPP14Parser.Colon - 84)) | (1 << (CPP14Parser.Doublecolon - 84)) | (1 << (CPP14Parser.Ellipsis - 84)) | (1 << (CPP14Parser.Identifier - 84)))) != 0): - self.state = 2020 - self.memberdeclaratorlist(0) - - - self.state = 2023 - self.match(CPP14Parser.Semi) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2024 - self.functiondefinition() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2025 - self.usingdeclaration() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2026 - self.static_assertdeclaration() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2027 - self.templatedeclaration() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2028 - self.aliasdeclaration() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 2029 - self.emptydeclaration() - pass - except RecognitionException as re: localctx.exception = re @@ -15217,208 +14191,175 @@ def memberdeclaration(self): return localctx - class MemberdeclaratorlistContext(ParserRuleContext): + class BaseSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def memberdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.MemberdeclaratorContext,0) + def baseTypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.BaseTypeSpecifierContext,0) - def memberdeclaratorlist(self): - return self.getTypedRuleContext(CPP14Parser.MemberdeclaratorlistContext,0) + def Virtual(self): + return self.getToken(CPP14Parser.Virtual, 0) + def accessSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.AccessSpecifierContext,0) + + + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) def getRuleIndex(self): - return CPP14Parser.RULE_memberdeclaratorlist + return CPP14Parser.RULE_baseSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMemberdeclaratorlist" ): - listener.enterMemberdeclaratorlist(self) + if hasattr( listener, "enterBaseSpecifier" ): + listener.enterBaseSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMemberdeclaratorlist" ): - listener.exitMemberdeclaratorlist(self) + if hasattr( listener, "exitBaseSpecifier" ): + listener.exitBaseSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMemberdeclaratorlist" ): - return visitor.visitMemberdeclaratorlist(self) + if hasattr( visitor, "visitBaseSpecifier" ): + return visitor.visitBaseSpecifier(self) else: return visitor.visitChildren(self) - def memberdeclaratorlist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.MemberdeclaratorlistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 306 - self.enterRecursionRule(localctx, 306, self.RULE_memberdeclaratorlist, _p) + + def baseSpecifier(self): + + localctx = CPP14Parser.BaseSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 308, self.RULE_baseSpecifier) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2033 - self.memberdeclarator() - self._ctx.stop = self._input.LT(-1) - self.state = 2040 + self.state = 1756 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,250,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 = CPP14Parser.MemberdeclaratorlistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_memberdeclaratorlist) - self.state = 2035 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2036 - self.match(CPP14Parser.Comma) - self.state = 2037 - self.memberdeclarator() - self.state = 2042 + _la = self._input.LA(1) + if _la==10 or _la==87: + self.state = 1755 + self.attributeSpecifierSeq() + + + self.state = 1770 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [26, 127, 132]: + self.state = 1758 + self.baseTypeSpecifier() + pass + elif token in [80]: + self.state = 1759 + self.match(CPP14Parser.Virtual) + self.state = 1761 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 126100789566373888) != 0): + self.state = 1760 + self.accessSpecifier() + + + self.state = 1763 + self.baseTypeSpecifier() + pass + elif token in [54, 55, 56]: + self.state = 1764 + self.accessSpecifier() + self.state = 1766 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,250,self._ctx) + _la = self._input.LA(1) + if _la==80: + self.state = 1765 + self.match(CPP14Parser.Virtual) + + + self.state = 1768 + self.baseTypeSpecifier() + pass + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class MemberdeclaratorContext(ParserRuleContext): + class ClassOrDeclTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def declarator(self): - return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) - + def className(self): + return self.getTypedRuleContext(CPP14Parser.ClassNameContext,0) - def virtspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.VirtspecifierseqContext,0) + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) - def purespecifier(self): - return self.getTypedRuleContext(CPP14Parser.PurespecifierContext,0) - - def braceorequalinitializer(self): - return self.getTypedRuleContext(CPP14Parser.BraceorequalinitializerContext,0) - - - def Colon(self): - return self.getToken(CPP14Parser.Colon, 0) - - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) - - - def Identifier(self): - return self.getToken(CPP14Parser.Identifier, 0) - - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def decltypeSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.DecltypeSpecifierContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_memberdeclarator + return CPP14Parser.RULE_classOrDeclType def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMemberdeclarator" ): - listener.enterMemberdeclarator(self) + if hasattr( listener, "enterClassOrDeclType" ): + listener.enterClassOrDeclType(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMemberdeclarator" ): - listener.exitMemberdeclarator(self) + if hasattr( listener, "exitClassOrDeclType" ): + listener.exitClassOrDeclType(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMemberdeclarator" ): - return visitor.visitMemberdeclarator(self) + if hasattr( visitor, "visitClassOrDeclType" ): + return visitor.visitClassOrDeclType(self) else: return visitor.visitChildren(self) - def memberdeclarator(self): + def classOrDeclType(self): - localctx = CPP14Parser.MemberdeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 308, self.RULE_memberdeclarator) - self._la = 0 # Token type + localctx = CPP14Parser.ClassOrDeclTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 310, self.RULE_classOrDeclType) try: - self.state = 2062 + self.state = 1777 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,256,self._ctx) + la_ = self._interp.adaptivePredict(self._input,247,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 2043 - self.declarator() - self.state = 2045 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,251,self._ctx) - if la_ == 1: - self.state = 2044 - self.virtspecifierseq(0) - - - self.state = 2048 + self.state = 1773 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,252,self._ctx) + la_ = self._interp.adaptivePredict(self._input,246,self._ctx) if la_ == 1: - self.state = 2047 - self.purespecifier() + self.state = 1772 + self.nestedNameSpecifier(0) + self.state = 1775 + self.className() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 2050 - self.declarator() - self.state = 2052 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,253,self._ctx) - if la_ == 1: - self.state = 2051 - self.braceorequalinitializer() - - - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2055 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Identifier: - self.state = 2054 - self.match(CPP14Parser.Identifier) - - - self.state = 2058 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 2057 - self.attributespecifierseq(0) - - - self.state = 2060 - self.match(CPP14Parser.Colon) - self.state = 2061 - self.constantexpression() + self.state = 1776 + self.decltypeSpecifier() pass @@ -15431,122 +14372,100 @@ def memberdeclarator(self): return localctx - class VirtspecifierseqContext(ParserRuleContext): + class BaseTypeSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def virtspecifier(self): - return self.getTypedRuleContext(CPP14Parser.VirtspecifierContext,0) - - - def virtspecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.VirtspecifierseqContext,0) + def classOrDeclType(self): + return self.getTypedRuleContext(CPP14Parser.ClassOrDeclTypeContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_virtspecifierseq + return CPP14Parser.RULE_baseTypeSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVirtspecifierseq" ): - listener.enterVirtspecifierseq(self) + if hasattr( listener, "enterBaseTypeSpecifier" ): + listener.enterBaseTypeSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVirtspecifierseq" ): - listener.exitVirtspecifierseq(self) + if hasattr( listener, "exitBaseTypeSpecifier" ): + listener.exitBaseTypeSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVirtspecifierseq" ): - return visitor.visitVirtspecifierseq(self) + if hasattr( visitor, "visitBaseTypeSpecifier" ): + return visitor.visitBaseTypeSpecifier(self) else: return visitor.visitChildren(self) - def virtspecifierseq(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.VirtspecifierseqContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 310 - self.enterRecursionRule(localctx, 310, self.RULE_virtspecifierseq, _p) + + def baseTypeSpecifier(self): + + localctx = CPP14Parser.BaseTypeSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 312, self.RULE_baseTypeSpecifier) try: self.enterOuterAlt(localctx, 1) - self.state = 2065 - self.virtspecifier() - self._ctx.stop = self._input.LT(-1) - self.state = 2071 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,257,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 = CPP14Parser.VirtspecifierseqContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_virtspecifierseq) - self.state = 2067 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2068 - self.virtspecifier() - self.state = 2073 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,257,self._ctx) - + self.state = 1779 + self.classOrDeclType() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class VirtspecifierContext(ParserRuleContext): + class AccessSpecifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Override(self): - return self.getToken(CPP14Parser.Override, 0) + def Private(self): + return self.getToken(CPP14Parser.Private, 0) - def Final(self): - return self.getToken(CPP14Parser.Final, 0) + def Protected(self): + return self.getToken(CPP14Parser.Protected, 0) + + def Public(self): + return self.getToken(CPP14Parser.Public, 0) def getRuleIndex(self): - return CPP14Parser.RULE_virtspecifier + return CPP14Parser.RULE_accessSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVirtspecifier" ): - listener.enterVirtspecifier(self) + if hasattr( listener, "enterAccessSpecifier" ): + listener.enterAccessSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVirtspecifier" ): - listener.exitVirtspecifier(self) + if hasattr( listener, "exitAccessSpecifier" ): + listener.exitAccessSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVirtspecifier" ): - return visitor.visitVirtspecifier(self) + if hasattr( visitor, "visitAccessSpecifier" ): + return visitor.visitAccessSpecifier(self) else: return visitor.visitChildren(self) - def virtspecifier(self): + def accessSpecifier(self): - localctx = CPP14Parser.VirtspecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 312, self.RULE_virtspecifier) + localctx = CPP14Parser.AccessSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 314, self.RULE_accessSpecifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2074 + self.state = 1781 _la = self._input.LA(1) - if not(_la==CPP14Parser.Final or _la==CPP14Parser.Override): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 126100789566373888) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -15560,50 +14479,50 @@ def virtspecifier(self): return localctx - class PurespecifierContext(ParserRuleContext): + class ConversionFunctionIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.val = None # Token - def Assign(self): - return self.getToken(CPP14Parser.Assign, 0) + def Operator(self): + return self.getToken(CPP14Parser.Operator, 0) + + def conversionTypeId(self): + return self.getTypedRuleContext(CPP14Parser.ConversionTypeIdContext,0) - def Octalliteral(self): - return self.getToken(CPP14Parser.Octalliteral, 0) def getRuleIndex(self): - return CPP14Parser.RULE_purespecifier + return CPP14Parser.RULE_conversionFunctionId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPurespecifier" ): - listener.enterPurespecifier(self) + if hasattr( listener, "enterConversionFunctionId" ): + listener.enterConversionFunctionId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPurespecifier" ): - listener.exitPurespecifier(self) + if hasattr( listener, "exitConversionFunctionId" ): + listener.exitConversionFunctionId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPurespecifier" ): - return visitor.visitPurespecifier(self) + if hasattr( visitor, "visitConversionFunctionId" ): + return visitor.visitConversionFunctionId(self) else: return visitor.visitChildren(self) - def purespecifier(self): + def conversionFunctionId(self): - localctx = CPP14Parser.PurespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 314, self.RULE_purespecifier) + localctx = CPP14Parser.ConversionFunctionIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 316, self.RULE_conversionFunctionId) try: self.enterOuterAlt(localctx, 1) - self.state = 2076 - self.match(CPP14Parser.Assign) - self.state = 2077 - localctx.val = self.match(CPP14Parser.Octalliteral) - if((None if localctx.val is None else localctx.val.text)!="0"): raise("error"); + self.state = 1783 + self.match(CPP14Parser.Operator) + self.state = 1784 + self.conversionTypeId() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -15613,49 +14532,57 @@ def purespecifier(self): return localctx - class BaseclauseContext(ParserRuleContext): + class ConversionTypeIdContext(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(CPP14Parser.Colon, 0) + def typeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.TypeSpecifierSeqContext,0) - def basespecifierlist(self): - return self.getTypedRuleContext(CPP14Parser.BasespecifierlistContext,0) + + def conversionDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.ConversionDeclaratorContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_baseclause + return CPP14Parser.RULE_conversionTypeId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBaseclause" ): - listener.enterBaseclause(self) + if hasattr( listener, "enterConversionTypeId" ): + listener.enterConversionTypeId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBaseclause" ): - listener.exitBaseclause(self) + if hasattr( listener, "exitConversionTypeId" ): + listener.exitConversionTypeId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBaseclause" ): - return visitor.visitBaseclause(self) + if hasattr( visitor, "visitConversionTypeId" ): + return visitor.visitConversionTypeId(self) else: return visitor.visitChildren(self) - def baseclause(self): + def conversionTypeId(self): - localctx = CPP14Parser.BaseclauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 316, self.RULE_baseclause) + localctx = CPP14Parser.ConversionTypeIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 318, self.RULE_conversionTypeId) try: self.enterOuterAlt(localctx, 1) - self.state = 2080 - self.match(CPP14Parser.Colon) - self.state = 2081 - self.basespecifierlist(0) + self.state = 1786 + self.typeSpecifierSeq() + self.state = 1788 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,248,self._ctx) + if la_ == 1: + self.state = 1787 + self.conversionDeclarator() + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -15665,217 +14592,110 @@ def baseclause(self): return localctx - class BasespecifierlistContext(ParserRuleContext): + class ConversionDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def basespecifier(self): - return self.getTypedRuleContext(CPP14Parser.BasespecifierContext,0) - - - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) + def pointerOperator(self): + return self.getTypedRuleContext(CPP14Parser.PointerOperatorContext,0) - def basespecifierlist(self): - return self.getTypedRuleContext(CPP14Parser.BasespecifierlistContext,0) + def conversionDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.ConversionDeclaratorContext,0) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) def getRuleIndex(self): - return CPP14Parser.RULE_basespecifierlist + return CPP14Parser.RULE_conversionDeclarator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBasespecifierlist" ): - listener.enterBasespecifierlist(self) + if hasattr( listener, "enterConversionDeclarator" ): + listener.enterConversionDeclarator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBasespecifierlist" ): - listener.exitBasespecifierlist(self) + if hasattr( listener, "exitConversionDeclarator" ): + listener.exitConversionDeclarator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBasespecifierlist" ): - return visitor.visitBasespecifierlist(self) + if hasattr( visitor, "visitConversionDeclarator" ): + return visitor.visitConversionDeclarator(self) else: return visitor.visitChildren(self) - def basespecifierlist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.BasespecifierlistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 318 - self.enterRecursionRule(localctx, 318, self.RULE_basespecifierlist, _p) + + def conversionDeclarator(self): + + localctx = CPP14Parser.ConversionDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 320, self.RULE_conversionDeclarator) try: self.enterOuterAlt(localctx, 1) - self.state = 2084 - self.basespecifier() - self.state = 2086 + self.state = 1790 + self.pointerOperator() + self.state = 1792 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,258,self._ctx) + la_ = self._interp.adaptivePredict(self._input,249,self._ctx) if la_ == 1: - self.state = 2085 - self.match(CPP14Parser.Ellipsis) - - - self._ctx.stop = self._input.LT(-1) - self.state = 2096 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,260,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 = CPP14Parser.BasespecifierlistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_basespecifierlist) - self.state = 2088 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2089 - self.match(CPP14Parser.Comma) - self.state = 2090 - self.basespecifier() - self.state = 2092 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,259,self._ctx) - if la_ == 1: - self.state = 2091 - self.match(CPP14Parser.Ellipsis) + self.state = 1791 + self.conversionDeclarator() - - self.state = 2098 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,260,self._ctx) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class BasespecifierContext(ParserRuleContext): + class ConstructorInitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def basetypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.BasetypespecifierContext,0) + def Colon(self): + return self.getToken(CPP14Parser.Colon, 0) - - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) - - - def Virtual(self): - return self.getToken(CPP14Parser.Virtual, 0) - - def accessspecifier(self): - return self.getTypedRuleContext(CPP14Parser.AccessspecifierContext,0) + def memInitializerList(self): + return self.getTypedRuleContext(CPP14Parser.MemInitializerListContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_basespecifier + return CPP14Parser.RULE_constructorInitializer def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBasespecifier" ): - listener.enterBasespecifier(self) + if hasattr( listener, "enterConstructorInitializer" ): + listener.enterConstructorInitializer(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBasespecifier" ): - listener.exitBasespecifier(self) + if hasattr( listener, "exitConstructorInitializer" ): + listener.exitConstructorInitializer(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBasespecifier" ): - return visitor.visitBasespecifier(self) + if hasattr( visitor, "visitConstructorInitializer" ): + return visitor.visitConstructorInitializer(self) else: return visitor.visitChildren(self) - def basespecifier(self): + def constructorInitializer(self): - localctx = CPP14Parser.BasespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 320, self.RULE_basespecifier) - self._la = 0 # Token type + localctx = CPP14Parser.ConstructorInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 322, self.RULE_constructorInitializer) try: - self.state = 2120 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,266,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2100 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 2099 - self.attributespecifierseq(0) - - - self.state = 2102 - self.basetypespecifier() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2104 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 2103 - self.attributespecifierseq(0) - - - self.state = 2106 - self.match(CPP14Parser.Virtual) - self.state = 2108 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.Private) | (1 << CPP14Parser.Protected) | (1 << CPP14Parser.Public))) != 0): - self.state = 2107 - self.accessspecifier() - - - self.state = 2110 - self.basetypespecifier() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2112 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 2111 - self.attributespecifierseq(0) - - - self.state = 2114 - self.accessspecifier() - self.state = 2116 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Virtual: - self.state = 2115 - self.match(CPP14Parser.Virtual) - - - self.state = 2118 - self.basetypespecifier() - pass - - + self.enterOuterAlt(localctx, 1) + self.state = 1794 + self.match(CPP14Parser.Colon) + self.state = 1795 + self.memInitializerList() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -15885,72 +14705,88 @@ def basespecifier(self): return localctx - class ClassordecltypeContext(ParserRuleContext): + class MemInitializerListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def classname(self): - return self.getTypedRuleContext(CPP14Parser.ClassnameContext,0) - - - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def memInitializer(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.MemInitializerContext) + else: + return self.getTypedRuleContext(CPP14Parser.MemInitializerContext,i) - def decltypespecifier(self): - return self.getTypedRuleContext(CPP14Parser.DecltypespecifierContext,0) + def Ellipsis(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Ellipsis) + else: + return self.getToken(CPP14Parser.Ellipsis, i) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): - return CPP14Parser.RULE_classordecltype + return CPP14Parser.RULE_memInitializerList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassordecltype" ): - listener.enterClassordecltype(self) + if hasattr( listener, "enterMemInitializerList" ): + listener.enterMemInitializerList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassordecltype" ): - listener.exitClassordecltype(self) + if hasattr( listener, "exitMemInitializerList" ): + listener.exitMemInitializerList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassordecltype" ): - return visitor.visitClassordecltype(self) + if hasattr( visitor, "visitMemInitializerList" ): + return visitor.visitMemInitializerList(self) else: return visitor.visitChildren(self) - def classordecltype(self): + def memInitializerList(self): - localctx = CPP14Parser.ClassordecltypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 322, self.RULE_classordecltype) + localctx = CPP14Parser.MemInitializerListContext(self, self._ctx, self.state) + self.enterRule(localctx, 324, self.RULE_memInitializerList) + self._la = 0 # Token type try: - self.state = 2127 + self.enterOuterAlt(localctx, 1) + self.state = 1797 + self.memInitializer() + self.state = 1799 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,268,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2123 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,267,self._ctx) - if la_ == 1: - self.state = 2122 - self.nestednamespecifier(0) + _la = self._input.LA(1) + if _la==131: + self.state = 1798 + self.match(CPP14Parser.Ellipsis) - self.state = 2125 - self.classname() - pass + self.state = 1808 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==122: + self.state = 1801 + self.match(CPP14Parser.Comma) + self.state = 1802 + self.memInitializer() + self.state = 1804 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==131: + self.state = 1803 + self.match(CPP14Parser.Ellipsis) - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2126 - self.decltypespecifier() - pass + self.state = 1810 + self._errHandler.sync(self) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re @@ -15961,44 +14797,84 @@ def classordecltype(self): return localctx - class BasetypespecifierContext(ParserRuleContext): + class MemInitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def classordecltype(self): - return self.getTypedRuleContext(CPP14Parser.ClassordecltypeContext,0) + def meminitializerid(self): + return self.getTypedRuleContext(CPP14Parser.MeminitializeridContext,0) + + + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) + + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) + + def bracedInitList(self): + return self.getTypedRuleContext(CPP14Parser.BracedInitListContext,0) + + + def expressionList(self): + return self.getTypedRuleContext(CPP14Parser.ExpressionListContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_basetypespecifier + return CPP14Parser.RULE_memInitializer def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBasetypespecifier" ): - listener.enterBasetypespecifier(self) + if hasattr( listener, "enterMemInitializer" ): + listener.enterMemInitializer(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBasetypespecifier" ): - listener.exitBasetypespecifier(self) + if hasattr( listener, "exitMemInitializer" ): + listener.exitMemInitializer(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBasetypespecifier" ): - return visitor.visitBasetypespecifier(self) + if hasattr( visitor, "visitMemInitializer" ): + return visitor.visitMemInitializer(self) else: return visitor.visitChildren(self) - def basetypespecifier(self): + def memInitializer(self): - localctx = CPP14Parser.BasetypespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 324, self.RULE_basetypespecifier) + localctx = CPP14Parser.MemInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 326, self.RULE_memInitializer) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2129 - self.classordecltype() + self.state = 1811 + self.meminitializerid() + self.state = 1818 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [85]: + self.state = 1812 + self.match(CPP14Parser.LeftParen) + self.state = 1814 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474400910417) != 0) or _la==132: + self.state = 1813 + self.expressionList() + + + self.state = 1816 + self.match(CPP14Parser.RightParen) + pass + elif token in [89]: + self.state = 1817 + self.bracedInitList() + pass + else: + raise NoViableAltException(self) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -16008,55 +14884,61 @@ def basetypespecifier(self): return localctx - class AccessspecifierContext(ParserRuleContext): + class MeminitializeridContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Private(self): - return self.getToken(CPP14Parser.Private, 0) + def classOrDeclType(self): + return self.getTypedRuleContext(CPP14Parser.ClassOrDeclTypeContext,0) - def Protected(self): - return self.getToken(CPP14Parser.Protected, 0) - def Public(self): - return self.getToken(CPP14Parser.Public, 0) + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) def getRuleIndex(self): - return CPP14Parser.RULE_accessspecifier + return CPP14Parser.RULE_meminitializerid def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAccessspecifier" ): - listener.enterAccessspecifier(self) + if hasattr( listener, "enterMeminitializerid" ): + listener.enterMeminitializerid(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAccessspecifier" ): - listener.exitAccessspecifier(self) + if hasattr( listener, "exitMeminitializerid" ): + listener.exitMeminitializerid(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAccessspecifier" ): - return visitor.visitAccessspecifier(self) + if hasattr( visitor, "visitMeminitializerid" ): + return visitor.visitMeminitializerid(self) else: return visitor.visitChildren(self) - def accessspecifier(self): + def meminitializerid(self): - localctx = CPP14Parser.AccessspecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 326, self.RULE_accessspecifier) - self._la = 0 # Token type + localctx = CPP14Parser.MeminitializeridContext(self, self._ctx, self.state) + self.enterRule(localctx, 328, self.RULE_meminitializerid) try: - self.enterOuterAlt(localctx, 1) - self.state = 2131 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.Private) | (1 << CPP14Parser.Protected) | (1 << CPP14Parser.Public))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() + self.state = 1822 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,255,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1820 + self.classOrDeclType() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1821 + self.match(CPP14Parser.Identifier) + pass + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -16066,7 +14948,8 @@ def accessspecifier(self): return localctx - class ConversionfunctionidContext(ParserRuleContext): + class OperatorFunctionIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16075,40 +14958,40 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def Operator(self): return self.getToken(CPP14Parser.Operator, 0) - def conversiontypeid(self): - return self.getTypedRuleContext(CPP14Parser.ConversiontypeidContext,0) + def theOperator(self): + return self.getTypedRuleContext(CPP14Parser.TheOperatorContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_conversionfunctionid + return CPP14Parser.RULE_operatorFunctionId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConversionfunctionid" ): - listener.enterConversionfunctionid(self) + if hasattr( listener, "enterOperatorFunctionId" ): + listener.enterOperatorFunctionId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConversionfunctionid" ): - listener.exitConversionfunctionid(self) + if hasattr( listener, "exitOperatorFunctionId" ): + listener.exitOperatorFunctionId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConversionfunctionid" ): - return visitor.visitConversionfunctionid(self) + if hasattr( visitor, "visitOperatorFunctionId" ): + return visitor.visitOperatorFunctionId(self) else: return visitor.visitChildren(self) - def conversionfunctionid(self): + def operatorFunctionId(self): - localctx = CPP14Parser.ConversionfunctionidContext(self, self._ctx, self.state) - self.enterRule(localctx, 328, self.RULE_conversionfunctionid) + localctx = CPP14Parser.OperatorFunctionIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 330, self.RULE_operatorFunctionId) try: self.enterOuterAlt(localctx, 1) - self.state = 2133 + self.state = 1824 self.match(CPP14Parser.Operator) - self.state = 2134 - self.conversiontypeid() + self.state = 1825 + self.theOperator() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -16118,55 +15001,68 @@ def conversionfunctionid(self): return localctx - class ConversiontypeidContext(ParserRuleContext): + class LiteralOperatorIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def typespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.TypespecifierseqContext,0) + def Operator(self): + return self.getToken(CPP14Parser.Operator, 0) + def StringLiteral(self): + return self.getToken(CPP14Parser.StringLiteral, 0) - def conversiondeclarator(self): - return self.getTypedRuleContext(CPP14Parser.ConversiondeclaratorContext,0) + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) + def UserDefinedStringLiteral(self): + return self.getToken(CPP14Parser.UserDefinedStringLiteral, 0) def getRuleIndex(self): - return CPP14Parser.RULE_conversiontypeid + return CPP14Parser.RULE_literalOperatorId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConversiontypeid" ): - listener.enterConversiontypeid(self) + if hasattr( listener, "enterLiteralOperatorId" ): + listener.enterLiteralOperatorId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConversiontypeid" ): - listener.exitConversiontypeid(self) + if hasattr( listener, "exitLiteralOperatorId" ): + listener.exitLiteralOperatorId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConversiontypeid" ): - return visitor.visitConversiontypeid(self) + if hasattr( visitor, "visitLiteralOperatorId" ): + return visitor.visitLiteralOperatorId(self) else: return visitor.visitChildren(self) - def conversiontypeid(self): + def literalOperatorId(self): - localctx = CPP14Parser.ConversiontypeidContext(self, self._ctx, self.state) - self.enterRule(localctx, 330, self.RULE_conversiontypeid) + localctx = CPP14Parser.LiteralOperatorIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 332, self.RULE_literalOperatorId) try: self.enterOuterAlt(localctx, 1) - self.state = 2136 - self.typespecifierseq() - self.state = 2138 + self.state = 1827 + self.match(CPP14Parser.Operator) + self.state = 1831 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,269,self._ctx) - if la_ == 1: - self.state = 2137 - self.conversiondeclarator() - + token = self._input.LA(1) + if token in [4]: + self.state = 1828 + self.match(CPP14Parser.StringLiteral) + self.state = 1829 + self.match(CPP14Parser.Identifier) + pass + elif token in [140]: + self.state = 1830 + self.match(CPP14Parser.UserDefinedStringLiteral) + pass + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re @@ -16177,56 +15073,66 @@ def conversiontypeid(self): return localctx - class ConversiondeclaratorContext(ParserRuleContext): + class TemplateDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def ptroperator(self): - return self.getTypedRuleContext(CPP14Parser.PtroperatorContext,0) + def Template(self): + return self.getToken(CPP14Parser.Template, 0) + + def Less(self): + return self.getToken(CPP14Parser.Less, 0) + + def templateparameterList(self): + return self.getTypedRuleContext(CPP14Parser.TemplateparameterListContext,0) - def conversiondeclarator(self): - return self.getTypedRuleContext(CPP14Parser.ConversiondeclaratorContext,0) + def Greater(self): + return self.getToken(CPP14Parser.Greater, 0) + + def declaration(self): + return self.getTypedRuleContext(CPP14Parser.DeclarationContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_conversiondeclarator + return CPP14Parser.RULE_templateDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConversiondeclarator" ): - listener.enterConversiondeclarator(self) + if hasattr( listener, "enterTemplateDeclaration" ): + listener.enterTemplateDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConversiondeclarator" ): - listener.exitConversiondeclarator(self) + if hasattr( listener, "exitTemplateDeclaration" ): + listener.exitTemplateDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConversiondeclarator" ): - return visitor.visitConversiondeclarator(self) + if hasattr( visitor, "visitTemplateDeclaration" ): + return visitor.visitTemplateDeclaration(self) else: return visitor.visitChildren(self) - def conversiondeclarator(self): + def templateDeclaration(self): - localctx = CPP14Parser.ConversiondeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 332, self.RULE_conversiondeclarator) + localctx = CPP14Parser.TemplateDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 334, self.RULE_templateDeclaration) try: self.enterOuterAlt(localctx, 1) - self.state = 2140 - self.ptroperator() - self.state = 2142 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,270,self._ctx) - if la_ == 1: - self.state = 2141 - self.conversiondeclarator() - - + self.state = 1833 + self.match(CPP14Parser.Template) + self.state = 1834 + self.match(CPP14Parser.Less) + self.state = 1835 + self.templateparameterList() + self.state = 1836 + self.match(CPP14Parser.Greater) + self.state = 1837 + self.declaration() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -16236,49 +15142,67 @@ def conversiondeclarator(self): return localctx - class CtorinitializerContext(ParserRuleContext): + class TemplateparameterListContext(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(CPP14Parser.Colon, 0) + def templateParameter(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.TemplateParameterContext) + else: + return self.getTypedRuleContext(CPP14Parser.TemplateParameterContext,i) - def meminitializerlist(self): - return self.getTypedRuleContext(CPP14Parser.MeminitializerlistContext,0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): - return CPP14Parser.RULE_ctorinitializer + return CPP14Parser.RULE_templateparameterList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCtorinitializer" ): - listener.enterCtorinitializer(self) + if hasattr( listener, "enterTemplateparameterList" ): + listener.enterTemplateparameterList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCtorinitializer" ): - listener.exitCtorinitializer(self) + if hasattr( listener, "exitTemplateparameterList" ): + listener.exitTemplateparameterList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCtorinitializer" ): - return visitor.visitCtorinitializer(self) + if hasattr( visitor, "visitTemplateparameterList" ): + return visitor.visitTemplateparameterList(self) else: return visitor.visitChildren(self) - def ctorinitializer(self): + def templateparameterList(self): - localctx = CPP14Parser.CtorinitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 334, self.RULE_ctorinitializer) + localctx = CPP14Parser.TemplateparameterListContext(self, self._ctx, self.state) + self.enterRule(localctx, 336, self.RULE_templateparameterList) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2144 - self.match(CPP14Parser.Colon) - self.state = 2145 - self.meminitializerlist() + self.state = 1839 + self.templateParameter() + self.state = 1844 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==122: + self.state = 1840 + self.match(CPP14Parser.Comma) + self.state = 1841 + self.templateParameter() + self.state = 1846 + self._errHandler.sync(self) + _la = self._input.LA(1) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -16288,85 +15212,59 @@ def ctorinitializer(self): return localctx - class MeminitializerlistContext(ParserRuleContext): + class TemplateParameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def meminitializer(self): - return self.getTypedRuleContext(CPP14Parser.MeminitializerContext,0) - - - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) + def typeParameter(self): + return self.getTypedRuleContext(CPP14Parser.TypeParameterContext,0) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) - def meminitializerlist(self): - return self.getTypedRuleContext(CPP14Parser.MeminitializerlistContext,0) + def parameterDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.ParameterDeclarationContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_meminitializerlist + return CPP14Parser.RULE_templateParameter def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMeminitializerlist" ): - listener.enterMeminitializerlist(self) + if hasattr( listener, "enterTemplateParameter" ): + listener.enterTemplateParameter(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMeminitializerlist" ): - listener.exitMeminitializerlist(self) + if hasattr( listener, "exitTemplateParameter" ): + listener.exitTemplateParameter(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMeminitializerlist" ): - return visitor.visitMeminitializerlist(self) + if hasattr( visitor, "visitTemplateParameter" ): + return visitor.visitTemplateParameter(self) else: return visitor.visitChildren(self) - def meminitializerlist(self): + def templateParameter(self): - localctx = CPP14Parser.MeminitializerlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 336, self.RULE_meminitializerlist) - self._la = 0 # Token type + localctx = CPP14Parser.TemplateParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 338, self.RULE_templateParameter) try: - self.state = 2158 + self.state = 1849 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,273,self._ctx) + la_ = self._interp.adaptivePredict(self._input,258,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 2147 - self.meminitializer() - self.state = 2149 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Ellipsis: - self.state = 2148 - self.match(CPP14Parser.Ellipsis) - - + self.state = 1847 + self.typeParameter() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 2151 - self.meminitializer() - self.state = 2153 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Ellipsis: - self.state = 2152 - self.match(CPP14Parser.Ellipsis) - - - self.state = 2155 - self.match(CPP14Parser.Comma) - self.state = 2156 - self.meminitializerlist() + self.state = 1848 + self.parameterDeclaration() pass @@ -16379,146 +15277,135 @@ def meminitializerlist(self): return localctx - class MeminitializerContext(ParserRuleContext): + class TypeParameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def meminitializerid(self): - return self.getTypedRuleContext(CPP14Parser.MeminitializeridContext,0) + def Class(self): + return self.getToken(CPP14Parser.Class, 0) + def Typename_(self): + return self.getToken(CPP14Parser.Typename_, 0) - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) + def Assign(self): + return self.getToken(CPP14Parser.Assign, 0) - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) + def theTypeId(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeIdContext,0) + + + def Template(self): + return self.getToken(CPP14Parser.Template, 0) + + def Less(self): + return self.getToken(CPP14Parser.Less, 0) - def expressionlist(self): - return self.getTypedRuleContext(CPP14Parser.ExpressionlistContext,0) + def templateparameterList(self): + return self.getTypedRuleContext(CPP14Parser.TemplateparameterListContext,0) - def bracedinitlist(self): - return self.getTypedRuleContext(CPP14Parser.BracedinitlistContext,0) + def Greater(self): + return self.getToken(CPP14Parser.Greater, 0) + + def Ellipsis(self): + return self.getToken(CPP14Parser.Ellipsis, 0) + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) def getRuleIndex(self): - return CPP14Parser.RULE_meminitializer + return CPP14Parser.RULE_typeParameter def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMeminitializer" ): - listener.enterMeminitializer(self) + if hasattr( listener, "enterTypeParameter" ): + listener.enterTypeParameter(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMeminitializer" ): - listener.exitMeminitializer(self) + if hasattr( listener, "exitTypeParameter" ): + listener.exitTypeParameter(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMeminitializer" ): - return visitor.visitMeminitializer(self) + if hasattr( visitor, "visitTypeParameter" ): + return visitor.visitTypeParameter(self) else: return visitor.visitChildren(self) - def meminitializer(self): + def typeParameter(self): - localctx = CPP14Parser.MeminitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 338, self.RULE_meminitializer) + localctx = CPP14Parser.TypeParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 340, self.RULE_typeParameter) self._la = 0 # Token type try: - self.state = 2170 + self.enterOuterAlt(localctx, 1) + self.state = 1860 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,275,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2160 - self.meminitializerid() - self.state = 2161 - self.match(CPP14Parser.LeftParen) - self.state = 2163 + token = self._input.LA(1) + if token in [21, 68]: + self.state = 1856 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Throw - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.LeftBrace - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 2162 - self.expressionlist() + if _la==68: + self.state = 1851 + self.match(CPP14Parser.Template) + self.state = 1852 + self.match(CPP14Parser.Less) + self.state = 1853 + self.templateparameterList() + self.state = 1854 + self.match(CPP14Parser.Greater) - self.state = 2165 - self.match(CPP14Parser.RightParen) + self.state = 1858 + self.match(CPP14Parser.Class) pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2167 - self.meminitializerid() - self.state = 2168 - self.bracedinitlist() + elif token in [76]: + self.state = 1859 + self.match(CPP14Parser.Typename_) 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 MeminitializeridContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classordecltype(self): - return self.getTypedRuleContext(CPP14Parser.ClassordecltypeContext,0) - - - def Identifier(self): - return self.getToken(CPP14Parser.Identifier, 0) - - def getRuleIndex(self): - return CPP14Parser.RULE_meminitializerid - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMeminitializerid" ): - listener.enterMeminitializerid(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMeminitializerid" ): - listener.exitMeminitializerid(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMeminitializerid" ): - return visitor.visitMeminitializerid(self) - else: - return visitor.visitChildren(self) - + self.state = 1873 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,264,self._ctx) + if la_ == 1: + self.state = 1863 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==131: + self.state = 1862 + self.match(CPP14Parser.Ellipsis) + self.state = 1866 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==132: + self.state = 1865 + self.match(CPP14Parser.Identifier) - def meminitializerid(self): - localctx = CPP14Parser.MeminitializeridContext(self, self._ctx, self.state) - self.enterRule(localctx, 340, self.RULE_meminitializerid) - try: - self.state = 2174 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,276,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2172 - self.classordecltype() pass elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2173 - self.match(CPP14Parser.Identifier) + self.state = 1869 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==132: + self.state = 1868 + self.match(CPP14Parser.Identifier) + + + self.state = 1871 + self.match(CPP14Parser.Assign) + self.state = 1872 + self.theTypeId() pass @@ -16531,49 +15418,68 @@ def meminitializerid(self): return localctx - class OperatorfunctionidContext(ParserRuleContext): + class SimpleTemplateIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Operator(self): - return self.getToken(CPP14Parser.Operator, 0) + def templateName(self): + return self.getTypedRuleContext(CPP14Parser.TemplateNameContext,0) + - def theoperator(self): - return self.getTypedRuleContext(CPP14Parser.TheoperatorContext,0) + def Less(self): + return self.getToken(CPP14Parser.Less, 0) + + def Greater(self): + return self.getToken(CPP14Parser.Greater, 0) + + def templateArgumentList(self): + return self.getTypedRuleContext(CPP14Parser.TemplateArgumentListContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_operatorfunctionid + return CPP14Parser.RULE_simpleTemplateId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOperatorfunctionid" ): - listener.enterOperatorfunctionid(self) + if hasattr( listener, "enterSimpleTemplateId" ): + listener.enterSimpleTemplateId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOperatorfunctionid" ): - listener.exitOperatorfunctionid(self) + if hasattr( listener, "exitSimpleTemplateId" ): + listener.exitSimpleTemplateId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOperatorfunctionid" ): - return visitor.visitOperatorfunctionid(self) + if hasattr( visitor, "visitSimpleTemplateId" ): + return visitor.visitSimpleTemplateId(self) else: return visitor.visitChildren(self) - def operatorfunctionid(self): + def simpleTemplateId(self): - localctx = CPP14Parser.OperatorfunctionidContext(self, self._ctx, self.state) - self.enterRule(localctx, 342, self.RULE_operatorfunctionid) + localctx = CPP14Parser.SimpleTemplateIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 342, self.RULE_simpleTemplateId) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2176 - self.match(CPP14Parser.Operator) - self.state = 2177 - self.theoperator() + self.state = 1875 + self.templateName() + self.state = 1876 + self.match(CPP14Parser.Less) + self.state = 1878 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979472930990334) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474384268307) != 0) or _la==132: + self.state = 1877 + self.templateArgumentList() + + + self.state = 1880 + self.match(CPP14Parser.Greater) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -16583,70 +15489,100 @@ def operatorfunctionid(self): return localctx - class LiteraloperatoridContext(ParserRuleContext): + class TemplateIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Operator(self): - return self.getToken(CPP14Parser.Operator, 0) + def simpleTemplateId(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTemplateIdContext,0) - def Stringliteral(self): - return self.getToken(CPP14Parser.Stringliteral, 0) - def Identifier(self): - return self.getToken(CPP14Parser.Identifier, 0) + def Less(self): + return self.getToken(CPP14Parser.Less, 0) + + def Greater(self): + return self.getToken(CPP14Parser.Greater, 0) + + def operatorFunctionId(self): + return self.getTypedRuleContext(CPP14Parser.OperatorFunctionIdContext,0) + + + def literalOperatorId(self): + return self.getTypedRuleContext(CPP14Parser.LiteralOperatorIdContext,0) + + + def templateArgumentList(self): + return self.getTypedRuleContext(CPP14Parser.TemplateArgumentListContext,0) - def Userdefinedstringliteral(self): - return self.getToken(CPP14Parser.Userdefinedstringliteral, 0) def getRuleIndex(self): - return CPP14Parser.RULE_literaloperatorid + return CPP14Parser.RULE_templateId def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLiteraloperatorid" ): - listener.enterLiteraloperatorid(self) + if hasattr( listener, "enterTemplateId" ): + listener.enterTemplateId(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLiteraloperatorid" ): - listener.exitLiteraloperatorid(self) + if hasattr( listener, "exitTemplateId" ): + listener.exitTemplateId(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLiteraloperatorid" ): - return visitor.visitLiteraloperatorid(self) + if hasattr( visitor, "visitTemplateId" ): + return visitor.visitTemplateId(self) else: return visitor.visitChildren(self) - def literaloperatorid(self): + def templateId(self): - localctx = CPP14Parser.LiteraloperatoridContext(self, self._ctx, self.state) - self.enterRule(localctx, 344, self.RULE_literaloperatorid) + localctx = CPP14Parser.TemplateIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 344, self.RULE_templateId) + self._la = 0 # Token type try: - self.state = 2184 + self.state = 1893 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,277,self._ctx) - if la_ == 1: + token = self._input.LA(1) + if token in [132]: self.enterOuterAlt(localctx, 1) - self.state = 2179 - self.match(CPP14Parser.Operator) - self.state = 2180 - self.match(CPP14Parser.Stringliteral) - self.state = 2181 - self.match(CPP14Parser.Identifier) + self.state = 1882 + self.simpleTemplateId() pass - - elif la_ == 2: + elif token in [52]: self.enterOuterAlt(localctx, 2) - self.state = 2182 - self.match(CPP14Parser.Operator) - self.state = 2183 - self.match(CPP14Parser.Userdefinedstringliteral) - pass + self.state = 1885 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,266,self._ctx) + if la_ == 1: + self.state = 1883 + self.operatorFunctionId() + pass + elif la_ == 2: + self.state = 1884 + self.literalOperatorId() + pass + + + self.state = 1887 + self.match(CPP14Parser.Less) + self.state = 1889 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979472930990334) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474384268307) != 0) or _la==132: + self.state = 1888 + self.templateArgumentList() + + + self.state = 1891 + self.match(CPP14Parser.Greater) + pass + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re @@ -16657,65 +15593,44 @@ def literaloperatorid(self): return localctx - class TemplatedeclarationContext(ParserRuleContext): + class TemplateNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Template(self): - return self.getToken(CPP14Parser.Template, 0) - - def Less(self): - return self.getToken(CPP14Parser.Less, 0) - - def templateparameterlist(self): - return self.getTypedRuleContext(CPP14Parser.TemplateparameterlistContext,0) - - - def Greater(self): - return self.getToken(CPP14Parser.Greater, 0) - - def declaration(self): - return self.getTypedRuleContext(CPP14Parser.DeclarationContext,0) - + def Identifier(self): + return self.getToken(CPP14Parser.Identifier, 0) def getRuleIndex(self): - return CPP14Parser.RULE_templatedeclaration + return CPP14Parser.RULE_templateName def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTemplatedeclaration" ): - listener.enterTemplatedeclaration(self) + if hasattr( listener, "enterTemplateName" ): + listener.enterTemplateName(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTemplatedeclaration" ): - listener.exitTemplatedeclaration(self) + if hasattr( listener, "exitTemplateName" ): + listener.exitTemplateName(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTemplatedeclaration" ): - return visitor.visitTemplatedeclaration(self) + if hasattr( visitor, "visitTemplateName" ): + return visitor.visitTemplateName(self) else: return visitor.visitChildren(self) - def templatedeclaration(self): + def templateName(self): - localctx = CPP14Parser.TemplatedeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 346, self.RULE_templatedeclaration) + localctx = CPP14Parser.TemplateNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 346, self.RULE_templateName) try: self.enterOuterAlt(localctx, 1) - self.state = 2186 - self.match(CPP14Parser.Template) - self.state = 2187 - self.match(CPP14Parser.Less) - self.state = 2188 - self.templateparameterlist(0) - self.state = 2189 - self.match(CPP14Parser.Greater) - self.state = 2190 - self.declaration() + self.state = 1895 + self.match(CPP14Parser.Identifier) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -16725,137 +15640,161 @@ def templatedeclaration(self): return localctx - class TemplateparameterlistContext(ParserRuleContext): + class TemplateArgumentListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def templateparameter(self): - return self.getTypedRuleContext(CPP14Parser.TemplateparameterContext,0) - + def templateArgument(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.TemplateArgumentContext) + else: + return self.getTypedRuleContext(CPP14Parser.TemplateArgumentContext,i) - def templateparameterlist(self): - return self.getTypedRuleContext(CPP14Parser.TemplateparameterlistContext,0) + def Ellipsis(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Ellipsis) + else: + return self.getToken(CPP14Parser.Ellipsis, i) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): - return CPP14Parser.RULE_templateparameterlist + return CPP14Parser.RULE_templateArgumentList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTemplateparameterlist" ): - listener.enterTemplateparameterlist(self) + if hasattr( listener, "enterTemplateArgumentList" ): + listener.enterTemplateArgumentList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTemplateparameterlist" ): - listener.exitTemplateparameterlist(self) + if hasattr( listener, "exitTemplateArgumentList" ): + listener.exitTemplateArgumentList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTemplateparameterlist" ): - return visitor.visitTemplateparameterlist(self) + if hasattr( visitor, "visitTemplateArgumentList" ): + return visitor.visitTemplateArgumentList(self) else: return visitor.visitChildren(self) - def templateparameterlist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.TemplateparameterlistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 348 - self.enterRecursionRule(localctx, 348, self.RULE_templateparameterlist, _p) + + def templateArgumentList(self): + + localctx = CPP14Parser.TemplateArgumentListContext(self, self._ctx, self.state) + self.enterRule(localctx, 348, self.RULE_templateArgumentList) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2193 - self.templateparameter() - self._ctx.stop = self._input.LT(-1) - self.state = 2200 + self.state = 1897 + self.templateArgument() + self.state = 1899 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,278,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 = CPP14Parser.TemplateparameterlistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_templateparameterlist) - self.state = 2195 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2196 - self.match(CPP14Parser.Comma) - self.state = 2197 - self.templateparameter() - self.state = 2202 + _la = self._input.LA(1) + if _la==131: + self.state = 1898 + self.match(CPP14Parser.Ellipsis) + + + self.state = 1908 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==122: + self.state = 1901 + self.match(CPP14Parser.Comma) + self.state = 1902 + self.templateArgument() + self.state = 1904 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==131: + self.state = 1903 + self.match(CPP14Parser.Ellipsis) + + + self.state = 1910 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,278,self._ctx) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class TemplateparameterContext(ParserRuleContext): + class TemplateArgumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def typeparameter(self): - return self.getTypedRuleContext(CPP14Parser.TypeparameterContext,0) + def theTypeId(self): + return self.getTypedRuleContext(CPP14Parser.TheTypeIdContext,0) + + def constantExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,0) - def parameterdeclaration(self): - return self.getTypedRuleContext(CPP14Parser.ParameterdeclarationContext,0) + + def idExpression(self): + return self.getTypedRuleContext(CPP14Parser.IdExpressionContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_templateparameter + return CPP14Parser.RULE_templateArgument def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTemplateparameter" ): - listener.enterTemplateparameter(self) + if hasattr( listener, "enterTemplateArgument" ): + listener.enterTemplateArgument(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTemplateparameter" ): - listener.exitTemplateparameter(self) + if hasattr( listener, "exitTemplateArgument" ): + listener.exitTemplateArgument(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTemplateparameter" ): - return visitor.visitTemplateparameter(self) + if hasattr( visitor, "visitTemplateArgument" ): + return visitor.visitTemplateArgument(self) else: return visitor.visitChildren(self) - def templateparameter(self): + def templateArgument(self): - localctx = CPP14Parser.TemplateparameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 350, self.RULE_templateparameter) + localctx = CPP14Parser.TemplateArgumentContext(self, self._ctx, self.state) + self.enterRule(localctx, 350, self.RULE_templateArgument) try: - self.state = 2205 + self.state = 1914 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,279,self._ctx) + la_ = self._interp.adaptivePredict(self._input,272,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 2203 - self.typeparameter() + self.state = 1911 + self.theTypeId() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 2204 - self.parameterdeclaration() + self.state = 1912 + self.constantExpression() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1913 + self.idExpression() pass @@ -16868,214 +15807,148 @@ def templateparameter(self): return localctx - class TypeparameterContext(ParserRuleContext): + class TypeNameSpecifierContext(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(CPP14Parser.Class, 0) + def Typename_(self): + return self.getToken(CPP14Parser.Typename_, 0) + + def nestedNameSpecifier(self): + return self.getTypedRuleContext(CPP14Parser.NestedNameSpecifierContext,0) - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) def Identifier(self): return self.getToken(CPP14Parser.Identifier, 0) - def Assign(self): - return self.getToken(CPP14Parser.Assign, 0) - - def thetypeid(self): - return self.getTypedRuleContext(CPP14Parser.ThetypeidContext,0) + def simpleTemplateId(self): + return self.getTypedRuleContext(CPP14Parser.SimpleTemplateIdContext,0) - def Typename_(self): - return self.getToken(CPP14Parser.Typename_, 0) - def Template(self): return self.getToken(CPP14Parser.Template, 0) - def Less(self): - return self.getToken(CPP14Parser.Less, 0) - - def templateparameterlist(self): - return self.getTypedRuleContext(CPP14Parser.TemplateparameterlistContext,0) - - - def Greater(self): - return self.getToken(CPP14Parser.Greater, 0) - - def idexpression(self): - return self.getTypedRuleContext(CPP14Parser.IdexpressionContext,0) - - def getRuleIndex(self): - return CPP14Parser.RULE_typeparameter + return CPP14Parser.RULE_typeNameSpecifier def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeparameter" ): - listener.enterTypeparameter(self) + if hasattr( listener, "enterTypeNameSpecifier" ): + listener.enterTypeNameSpecifier(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeparameter" ): - listener.exitTypeparameter(self) + if hasattr( listener, "exitTypeNameSpecifier" ): + listener.exitTypeNameSpecifier(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeparameter" ): - return visitor.visitTypeparameter(self) + if hasattr( visitor, "visitTypeNameSpecifier" ): + return visitor.visitTypeNameSpecifier(self) else: return visitor.visitChildren(self) - def typeparameter(self): + def typeNameSpecifier(self): - localctx = CPP14Parser.TypeparameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 352, self.RULE_typeparameter) + localctx = CPP14Parser.TypeNameSpecifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 352, self.RULE_typeNameSpecifier) self._la = 0 # Token type try: - self.state = 2255 + self.enterOuterAlt(localctx, 1) + self.state = 1916 + self.match(CPP14Parser.Typename_) + self.state = 1917 + self.nestedNameSpecifier(0) + self.state = 1923 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,289,self._ctx) + la_ = self._interp.adaptivePredict(self._input,274,self._ctx) if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2207 - self.match(CPP14Parser.Class) - self.state = 2209 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,280,self._ctx) - if la_ == 1: - self.state = 2208 - self.match(CPP14Parser.Ellipsis) - - - self.state = 2212 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,281,self._ctx) - if la_ == 1: - self.state = 2211 - self.match(CPP14Parser.Identifier) - - + self.state = 1918 + self.match(CPP14Parser.Identifier) pass elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2214 - self.match(CPP14Parser.Class) - self.state = 2216 + self.state = 1920 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Identifier: - self.state = 2215 - self.match(CPP14Parser.Identifier) + if _la==68: + self.state = 1919 + self.match(CPP14Parser.Template) - self.state = 2218 - self.match(CPP14Parser.Assign) - self.state = 2219 - self.thetypeid() + self.state = 1922 + self.simpleTemplateId() pass - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2220 - self.match(CPP14Parser.Typename_) - self.state = 2222 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,283,self._ctx) - if la_ == 1: - self.state = 2221 - self.match(CPP14Parser.Ellipsis) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx - self.state = 2225 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,284,self._ctx) - if la_ == 1: - self.state = 2224 - self.match(CPP14Parser.Identifier) + class ExplicitInstantiationContext(ParserRuleContext): + __slots__ = 'parser' - pass + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2227 - self.match(CPP14Parser.Typename_) - self.state = 2229 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Identifier: - self.state = 2228 - self.match(CPP14Parser.Identifier) + def Template(self): + return self.getToken(CPP14Parser.Template, 0) + def declaration(self): + return self.getTypedRuleContext(CPP14Parser.DeclarationContext,0) - self.state = 2231 - self.match(CPP14Parser.Assign) - self.state = 2232 - self.thetypeid() - pass - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2233 - self.match(CPP14Parser.Template) - self.state = 2234 - self.match(CPP14Parser.Less) - self.state = 2235 - self.templateparameterlist(0) - self.state = 2236 - self.match(CPP14Parser.Greater) - self.state = 2237 - self.match(CPP14Parser.Class) - self.state = 2239 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,286,self._ctx) - if la_ == 1: - self.state = 2238 - self.match(CPP14Parser.Ellipsis) + def Extern(self): + return self.getToken(CPP14Parser.Extern, 0) + def getRuleIndex(self): + return CPP14Parser.RULE_explicitInstantiation - self.state = 2242 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,287,self._ctx) - if la_ == 1: - self.state = 2241 - self.match(CPP14Parser.Identifier) + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExplicitInstantiation" ): + listener.enterExplicitInstantiation(self) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExplicitInstantiation" ): + listener.exitExplicitInstantiation(self) - pass + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExplicitInstantiation" ): + return visitor.visitExplicitInstantiation(self) + else: + return visitor.visitChildren(self) - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2244 - self.match(CPP14Parser.Template) - self.state = 2245 - self.match(CPP14Parser.Less) - self.state = 2246 - self.templateparameterlist(0) - self.state = 2247 - self.match(CPP14Parser.Greater) - self.state = 2248 - self.match(CPP14Parser.Class) - self.state = 2250 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Identifier: - self.state = 2249 - self.match(CPP14Parser.Identifier) - self.state = 2252 - self.match(CPP14Parser.Assign) - self.state = 2253 - self.idexpression() - pass + + def explicitInstantiation(self): + + localctx = CPP14Parser.ExplicitInstantiationContext(self, self._ctx, self.state) + self.enterRule(localctx, 354, self.RULE_explicitInstantiation) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1926 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==36: + self.state = 1925 + self.match(CPP14Parser.Extern) + self.state = 1928 + self.match(CPP14Parser.Template) + self.state = 1929 + self.declaration() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -17085,15 +15958,15 @@ def typeparameter(self): return localctx - class SimpletemplateidContext(ParserRuleContext): + class ExplicitSpecializationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def templatename(self): - return self.getTypedRuleContext(CPP14Parser.TemplatenameContext,0) - + def Template(self): + return self.getToken(CPP14Parser.Template, 0) def Less(self): return self.getToken(CPP14Parser.Less, 0) @@ -17101,51 +15974,44 @@ def Less(self): def Greater(self): return self.getToken(CPP14Parser.Greater, 0) - def templateargumentlist(self): - return self.getTypedRuleContext(CPP14Parser.TemplateargumentlistContext,0) + def declaration(self): + return self.getTypedRuleContext(CPP14Parser.DeclarationContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_simpletemplateid + return CPP14Parser.RULE_explicitSpecialization def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSimpletemplateid" ): - listener.enterSimpletemplateid(self) + if hasattr( listener, "enterExplicitSpecialization" ): + listener.enterExplicitSpecialization(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSimpletemplateid" ): - listener.exitSimpletemplateid(self) + if hasattr( listener, "exitExplicitSpecialization" ): + listener.exitExplicitSpecialization(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSimpletemplateid" ): - return visitor.visitSimpletemplateid(self) + if hasattr( visitor, "visitExplicitSpecialization" ): + return visitor.visitExplicitSpecialization(self) else: return visitor.visitChildren(self) - def simpletemplateid(self): + def explicitSpecialization(self): - localctx = CPP14Parser.SimpletemplateidContext(self, self._ctx, self.state) - self.enterRule(localctx, 354, self.RULE_simpletemplateid) - self._la = 0 # Token type + localctx = CPP14Parser.ExplicitSpecializationContext(self, self._ctx, self.state) + self.enterRule(localctx, 356, self.RULE_explicitSpecialization) try: self.enterOuterAlt(localctx, 1) - self.state = 2257 - self.templatename() - self.state = 2258 + self.state = 1931 + self.match(CPP14Parser.Template) + self.state = 1932 self.match(CPP14Parser.Less) - self.state = 2260 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.Struct - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Union - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Volatile - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 2259 - self.templateargumentlist(0) - - - self.state = 2262 + self.state = 1933 self.match(CPP14Parser.Greater) + self.state = 1934 + self.declaration() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -17155,106 +16021,56 @@ def simpletemplateid(self): return localctx - class TemplateidContext(ParserRuleContext): + class TryBlockContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def simpletemplateid(self): - return self.getTypedRuleContext(CPP14Parser.SimpletemplateidContext,0) - - - def operatorfunctionid(self): - return self.getTypedRuleContext(CPP14Parser.OperatorfunctionidContext,0) - - - def Less(self): - return self.getToken(CPP14Parser.Less, 0) - - def Greater(self): - return self.getToken(CPP14Parser.Greater, 0) + def Try(self): + return self.getToken(CPP14Parser.Try, 0) - def templateargumentlist(self): - return self.getTypedRuleContext(CPP14Parser.TemplateargumentlistContext,0) + def compoundStatement(self): + return self.getTypedRuleContext(CPP14Parser.CompoundStatementContext,0) - def literaloperatorid(self): - return self.getTypedRuleContext(CPP14Parser.LiteraloperatoridContext,0) + def handlerSeq(self): + return self.getTypedRuleContext(CPP14Parser.HandlerSeqContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_templateid + return CPP14Parser.RULE_tryBlock def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTemplateid" ): - listener.enterTemplateid(self) + if hasattr( listener, "enterTryBlock" ): + listener.enterTryBlock(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTemplateid" ): - listener.exitTemplateid(self) + if hasattr( listener, "exitTryBlock" ): + listener.exitTryBlock(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTemplateid" ): - return visitor.visitTemplateid(self) + if hasattr( visitor, "visitTryBlock" ): + return visitor.visitTryBlock(self) else: return visitor.visitChildren(self) - def templateid(self): + def tryBlock(self): - localctx = CPP14Parser.TemplateidContext(self, self._ctx, self.state) - self.enterRule(localctx, 356, self.RULE_templateid) - self._la = 0 # Token type + localctx = CPP14Parser.TryBlockContext(self, self._ctx, self.state) + self.enterRule(localctx, 358, self.RULE_tryBlock) try: - self.state = 2279 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,293,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2264 - self.simpletemplateid() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2265 - self.operatorfunctionid() - self.state = 2266 - self.match(CPP14Parser.Less) - self.state = 2268 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.Struct - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Union - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Volatile - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 2267 - self.templateargumentlist(0) - - - self.state = 2270 - self.match(CPP14Parser.Greater) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2272 - self.literaloperatorid() - self.state = 2273 - self.match(CPP14Parser.Less) - self.state = 2275 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CPP14Parser.T__0) | (1 << CPP14Parser.T__1) | (1 << CPP14Parser.T__6) | (1 << CPP14Parser.T__7) | (1 << CPP14Parser.Alignof) | (1 << CPP14Parser.Auto) | (1 << CPP14Parser.Bool) | (1 << CPP14Parser.Char) | (1 << CPP14Parser.Char16) | (1 << CPP14Parser.Char32) | (1 << CPP14Parser.Class) | (1 << CPP14Parser.Const) | (1 << CPP14Parser.Const_cast) | (1 << CPP14Parser.Decltype) | (1 << CPP14Parser.Delete) | (1 << CPP14Parser.Double) | (1 << CPP14Parser.Dynamic_cast) | (1 << CPP14Parser.Enum) | (1 << CPP14Parser.Float) | (1 << CPP14Parser.Int) | (1 << CPP14Parser.Long) | (1 << CPP14Parser.New) | (1 << CPP14Parser.Noexcept) | (1 << CPP14Parser.Nullptr) | (1 << CPP14Parser.Operator) | (1 << CPP14Parser.Reinterpret_cast) | (1 << CPP14Parser.Short) | (1 << CPP14Parser.Signed) | (1 << CPP14Parser.Sizeof))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CPP14Parser.Static_cast - 65)) | (1 << (CPP14Parser.Struct - 65)) | (1 << (CPP14Parser.This - 65)) | (1 << (CPP14Parser.Typeid_ - 65)) | (1 << (CPP14Parser.Typename_ - 65)) | (1 << (CPP14Parser.Union - 65)) | (1 << (CPP14Parser.Unsigned - 65)) | (1 << (CPP14Parser.Void - 65)) | (1 << (CPP14Parser.Volatile - 65)) | (1 << (CPP14Parser.Wchar - 65)) | (1 << (CPP14Parser.LeftParen - 65)) | (1 << (CPP14Parser.LeftBracket - 65)) | (1 << (CPP14Parser.Plus - 65)) | (1 << (CPP14Parser.Minus - 65)) | (1 << (CPP14Parser.Star - 65)) | (1 << (CPP14Parser.And - 65)) | (1 << (CPP14Parser.Or - 65)) | (1 << (CPP14Parser.Tilde - 65)) | (1 << (CPP14Parser.PlusPlus - 65)) | (1 << (CPP14Parser.MinusMinus - 65)) | (1 << (CPP14Parser.Doublecolon - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CPP14Parser.Identifier - 133)) | (1 << (CPP14Parser.Integerliteral - 133)) | (1 << (CPP14Parser.Characterliteral - 133)) | (1 << (CPP14Parser.Floatingliteral - 133)) | (1 << (CPP14Parser.Stringliteral - 133)) | (1 << (CPP14Parser.Userdefinedintegerliteral - 133)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 133)) | (1 << (CPP14Parser.Userdefinedstringliteral - 133)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 133)))) != 0): - self.state = 2274 - self.templateargumentlist(0) - - - self.state = 2277 - self.match(CPP14Parser.Greater) - pass - - + self.enterOuterAlt(localctx, 1) + self.state = 1936 + self.match(CPP14Parser.Try) + self.state = 1937 + self.compoundStatement() + self.state = 1938 + self.handlerSeq() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -17264,43 +16080,69 @@ def templateid(self): return localctx - class TemplatenameContext(ParserRuleContext): + class FunctionTryBlockContext(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(CPP14Parser.Identifier, 0) + def Try(self): + return self.getToken(CPP14Parser.Try, 0) + + def compoundStatement(self): + return self.getTypedRuleContext(CPP14Parser.CompoundStatementContext,0) + + + def handlerSeq(self): + return self.getTypedRuleContext(CPP14Parser.HandlerSeqContext,0) + + + def constructorInitializer(self): + return self.getTypedRuleContext(CPP14Parser.ConstructorInitializerContext,0) + def getRuleIndex(self): - return CPP14Parser.RULE_templatename + return CPP14Parser.RULE_functionTryBlock def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTemplatename" ): - listener.enterTemplatename(self) + if hasattr( listener, "enterFunctionTryBlock" ): + listener.enterFunctionTryBlock(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTemplatename" ): - listener.exitTemplatename(self) + if hasattr( listener, "exitFunctionTryBlock" ): + listener.exitFunctionTryBlock(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTemplatename" ): - return visitor.visitTemplatename(self) + if hasattr( visitor, "visitFunctionTryBlock" ): + return visitor.visitFunctionTryBlock(self) else: return visitor.visitChildren(self) - def templatename(self): + def functionTryBlock(self): - localctx = CPP14Parser.TemplatenameContext(self, self._ctx, self.state) - self.enterRule(localctx, 358, self.RULE_templatename) + localctx = CPP14Parser.FunctionTryBlockContext(self, self._ctx, self.state) + self.enterRule(localctx, 360, self.RULE_functionTryBlock) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2281 - self.match(CPP14Parser.Identifier) + self.state = 1940 + self.match(CPP14Parser.Try) + self.state = 1942 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==126: + self.state = 1941 + self.constructorInitializer() + + + self.state = 1944 + self.compoundStatement() + self.state = 1945 + self.handlerSeq() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -17310,169 +16152,128 @@ def templatename(self): return localctx - class TemplateargumentlistContext(ParserRuleContext): + class HandlerSeqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def templateargument(self): - return self.getTypedRuleContext(CPP14Parser.TemplateargumentContext,0) - - - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) - - def templateargumentlist(self): - return self.getTypedRuleContext(CPP14Parser.TemplateargumentlistContext,0) - + def handler(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.HandlerContext) + else: + return self.getTypedRuleContext(CPP14Parser.HandlerContext,i) - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) def getRuleIndex(self): - return CPP14Parser.RULE_templateargumentlist + return CPP14Parser.RULE_handlerSeq def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTemplateargumentlist" ): - listener.enterTemplateargumentlist(self) + if hasattr( listener, "enterHandlerSeq" ): + listener.enterHandlerSeq(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTemplateargumentlist" ): - listener.exitTemplateargumentlist(self) + if hasattr( listener, "exitHandlerSeq" ): + listener.exitHandlerSeq(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTemplateargumentlist" ): - return visitor.visitTemplateargumentlist(self) + if hasattr( visitor, "visitHandlerSeq" ): + return visitor.visitHandlerSeq(self) else: return visitor.visitChildren(self) - def templateargumentlist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.TemplateargumentlistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 360 - self.enterRecursionRule(localctx, 360, self.RULE_templateargumentlist, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2284 - self.templateargument() - self.state = 2286 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,294,self._ctx) - if la_ == 1: - self.state = 2285 - self.match(CPP14Parser.Ellipsis) + def handlerSeq(self): - self._ctx.stop = self._input.LT(-1) - self.state = 2296 + localctx = CPP14Parser.HandlerSeqContext(self, self._ctx, self.state) + self.enterRule(localctx, 362, self.RULE_handlerSeq) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1948 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,296,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 = CPP14Parser.TemplateargumentlistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_templateargumentlist) - self.state = 2288 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2289 - self.match(CPP14Parser.Comma) - self.state = 2290 - self.templateargument() - self.state = 2292 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,295,self._ctx) - if la_ == 1: - self.state = 2291 - self.match(CPP14Parser.Ellipsis) - - - self.state = 2298 + _la = self._input.LA(1) + while True: + self.state = 1947 + self.handler() + self.state = 1950 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,296,self._ctx) + _la = self._input.LA(1) + if not (_la==17): + break except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) finally: - self.unrollRecursionContexts(_parentctx) + self.exitRule() return localctx - class TemplateargumentContext(ParserRuleContext): + class HandlerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def thetypeid(self): - return self.getTypedRuleContext(CPP14Parser.ThetypeidContext,0) + def Catch(self): + return self.getToken(CPP14Parser.Catch, 0) + + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) + def exceptionDeclaration(self): + return self.getTypedRuleContext(CPP14Parser.ExceptionDeclarationContext,0) - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) - def idexpression(self): - return self.getTypedRuleContext(CPP14Parser.IdexpressionContext,0) + def compoundStatement(self): + return self.getTypedRuleContext(CPP14Parser.CompoundStatementContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_templateargument + return CPP14Parser.RULE_handler def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTemplateargument" ): - listener.enterTemplateargument(self) + if hasattr( listener, "enterHandler" ): + listener.enterHandler(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTemplateargument" ): - listener.exitTemplateargument(self) + if hasattr( listener, "exitHandler" ): + listener.exitHandler(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTemplateargument" ): - return visitor.visitTemplateargument(self) + if hasattr( visitor, "visitHandler" ): + return visitor.visitHandler(self) else: return visitor.visitChildren(self) - def templateargument(self): + def handler(self): - localctx = CPP14Parser.TemplateargumentContext(self, self._ctx, self.state) - self.enterRule(localctx, 362, self.RULE_templateargument) + localctx = CPP14Parser.HandlerContext(self, self._ctx, self.state) + self.enterRule(localctx, 364, self.RULE_handler) try: - self.state = 2302 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,297,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2299 - self.thetypeid() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2300 - self.constantexpression() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2301 - self.idexpression() - pass - - + self.enterOuterAlt(localctx, 1) + self.state = 1952 + self.match(CPP14Parser.Catch) + self.state = 1953 + self.match(CPP14Parser.LeftParen) + self.state = 1954 + self.exceptionDeclaration() + self.state = 1955 + self.match(CPP14Parser.RightParen) + self.state = 1956 + self.compoundStatement() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -17482,86 +16283,93 @@ def templateargument(self): return localctx - class TypenamespecifierContext(ParserRuleContext): + class ExceptionDeclarationContext(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.getToken(CPP14Parser.Typename_, 0) + def typeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.TypeSpecifierSeqContext,0) - def nestednamespecifier(self): - return self.getTypedRuleContext(CPP14Parser.NestednamespecifierContext,0) + def attributeSpecifierSeq(self): + return self.getTypedRuleContext(CPP14Parser.AttributeSpecifierSeqContext,0) - def Identifier(self): - return self.getToken(CPP14Parser.Identifier, 0) - def simpletemplateid(self): - return self.getTypedRuleContext(CPP14Parser.SimpletemplateidContext,0) + def declarator(self): + return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) + + def abstractDeclarator(self): + return self.getTypedRuleContext(CPP14Parser.AbstractDeclaratorContext,0) - def Template(self): - return self.getToken(CPP14Parser.Template, 0) + + def Ellipsis(self): + return self.getToken(CPP14Parser.Ellipsis, 0) def getRuleIndex(self): - return CPP14Parser.RULE_typenamespecifier + return CPP14Parser.RULE_exceptionDeclaration def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypenamespecifier" ): - listener.enterTypenamespecifier(self) + if hasattr( listener, "enterExceptionDeclaration" ): + listener.enterExceptionDeclaration(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypenamespecifier" ): - listener.exitTypenamespecifier(self) + if hasattr( listener, "exitExceptionDeclaration" ): + listener.exitExceptionDeclaration(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypenamespecifier" ): - return visitor.visitTypenamespecifier(self) + if hasattr( visitor, "visitExceptionDeclaration" ): + return visitor.visitExceptionDeclaration(self) else: return visitor.visitChildren(self) - def typenamespecifier(self): + def exceptionDeclaration(self): - localctx = CPP14Parser.TypenamespecifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 364, self.RULE_typenamespecifier) + localctx = CPP14Parser.ExceptionDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 366, self.RULE_exceptionDeclaration) self._la = 0 # Token type try: - self.state = 2315 + self.state = 1967 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,299,self._ctx) - if la_ == 1: + token = self._input.LA(1) + if token in [10, 13, 14, 18, 19, 20, 21, 22, 26, 30, 33, 39, 45, 46, 60, 61, 66, 76, 77, 78, 81, 82, 83, 87, 127, 132]: self.enterOuterAlt(localctx, 1) - self.state = 2304 - self.match(CPP14Parser.Typename_) - self.state = 2305 - self.nestednamespecifier(0) - self.state = 2306 - self.match(CPP14Parser.Identifier) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2308 - self.match(CPP14Parser.Typename_) - self.state = 2309 - self.nestednamespecifier(0) - self.state = 2311 + self.state = 1959 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Template: - self.state = 2310 - self.match(CPP14Parser.Template) + if _la==10 or _la==87: + self.state = 1958 + self.attributeSpecifierSeq() - self.state = 2313 - self.simpletemplateid() - pass + self.state = 1961 + self.typeSpecifierSeq() + self.state = 1964 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,279,self._ctx) + if la_ == 1: + self.state = 1962 + self.declarator() + + elif la_ == 2: + self.state = 1963 + self.abstractDeclarator() + + pass + elif token in [131]: + self.enterOuterAlt(localctx, 2) + self.state = 1966 + self.match(CPP14Parser.Ellipsis) + pass + else: + raise NoViableAltException(self) except RecognitionException as re: localctx.exception = re @@ -17572,61 +16380,57 @@ def typenamespecifier(self): return localctx - class ExplicitinstantiationContext(ParserRuleContext): + class ThrowExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Template(self): - return self.getToken(CPP14Parser.Template, 0) - - def declaration(self): - return self.getTypedRuleContext(CPP14Parser.DeclarationContext,0) + def Throw(self): + return self.getToken(CPP14Parser.Throw, 0) + def assignmentExpression(self): + return self.getTypedRuleContext(CPP14Parser.AssignmentExpressionContext,0) - def Extern(self): - return self.getToken(CPP14Parser.Extern, 0) def getRuleIndex(self): - return CPP14Parser.RULE_explicitinstantiation + return CPP14Parser.RULE_throwExpression def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplicitinstantiation" ): - listener.enterExplicitinstantiation(self) + if hasattr( listener, "enterThrowExpression" ): + listener.enterThrowExpression(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplicitinstantiation" ): - listener.exitExplicitinstantiation(self) + if hasattr( listener, "exitThrowExpression" ): + listener.exitThrowExpression(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplicitinstantiation" ): - return visitor.visitExplicitinstantiation(self) + if hasattr( visitor, "visitThrowExpression" ): + return visitor.visitThrowExpression(self) else: return visitor.visitChildren(self) - def explicitinstantiation(self): + def throwExpression(self): - localctx = CPP14Parser.ExplicitinstantiationContext(self, self._ctx, self.state) - self.enterRule(localctx, 366, self.RULE_explicitinstantiation) + localctx = CPP14Parser.ThrowExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 368, self.RULE_throwExpression) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2318 + self.state = 1969 + self.match(CPP14Parser.Throw) + self.state = 1971 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Extern: - self.state = 2317 - self.match(CPP14Parser.Extern) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8364979464334764286) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4719772474384133201) != 0) or _la==132: + self.state = 1970 + self.assignmentExpression() - self.state = 2320 - self.match(CPP14Parser.Template) - self.state = 2321 - self.declaration() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -17636,59 +16440,62 @@ def explicitinstantiation(self): return localctx - class ExplicitspecializationContext(ParserRuleContext): + class ExceptionSpecificationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Template(self): - return self.getToken(CPP14Parser.Template, 0) - - def Less(self): - return self.getToken(CPP14Parser.Less, 0) + def dynamicExceptionSpecification(self): + return self.getTypedRuleContext(CPP14Parser.DynamicExceptionSpecificationContext,0) - def Greater(self): - return self.getToken(CPP14Parser.Greater, 0) - def declaration(self): - return self.getTypedRuleContext(CPP14Parser.DeclarationContext,0) + def noeExceptSpecification(self): + return self.getTypedRuleContext(CPP14Parser.NoeExceptSpecificationContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_explicitspecialization + return CPP14Parser.RULE_exceptionSpecification def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplicitspecialization" ): - listener.enterExplicitspecialization(self) + if hasattr( listener, "enterExceptionSpecification" ): + listener.enterExceptionSpecification(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplicitspecialization" ): - listener.exitExplicitspecialization(self) + if hasattr( listener, "exitExceptionSpecification" ): + listener.exitExceptionSpecification(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplicitspecialization" ): - return visitor.visitExplicitspecialization(self) + if hasattr( visitor, "visitExceptionSpecification" ): + return visitor.visitExceptionSpecification(self) else: return visitor.visitChildren(self) - def explicitspecialization(self): + def exceptionSpecification(self): - localctx = CPP14Parser.ExplicitspecializationContext(self, self._ctx, self.state) - self.enterRule(localctx, 368, self.RULE_explicitspecialization) + localctx = CPP14Parser.ExceptionSpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 370, self.RULE_exceptionSpecification) try: - self.enterOuterAlt(localctx, 1) - self.state = 2323 - self.match(CPP14Parser.Template) - self.state = 2324 - self.match(CPP14Parser.Less) - self.state = 2325 - self.match(CPP14Parser.Greater) - self.state = 2326 - self.declaration() + self.state = 1975 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [71]: + self.enterOuterAlt(localctx, 1) + self.state = 1973 + self.dynamicExceptionSpecification() + pass + elif token in [50]: + self.enterOuterAlt(localctx, 2) + self.state = 1974 + self.noeExceptSpecification() + pass + else: + raise NoViableAltException(self) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -17698,55 +16505,67 @@ def explicitspecialization(self): return localctx - class TryblockContext(ParserRuleContext): + class DynamicExceptionSpecificationContext(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(CPP14Parser.Try, 0) + def Throw(self): + return self.getToken(CPP14Parser.Throw, 0) - def compoundstatement(self): - return self.getTypedRuleContext(CPP14Parser.CompoundstatementContext,0) + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) - def handlerseq(self): - return self.getTypedRuleContext(CPP14Parser.HandlerseqContext,0) + def typeIdList(self): + return self.getTypedRuleContext(CPP14Parser.TypeIdListContext,0) def getRuleIndex(self): - return CPP14Parser.RULE_tryblock + return CPP14Parser.RULE_dynamicExceptionSpecification def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTryblock" ): - listener.enterTryblock(self) + if hasattr( listener, "enterDynamicExceptionSpecification" ): + listener.enterDynamicExceptionSpecification(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTryblock" ): - listener.exitTryblock(self) + if hasattr( listener, "exitDynamicExceptionSpecification" ): + listener.exitDynamicExceptionSpecification(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTryblock" ): - return visitor.visitTryblock(self) + if hasattr( visitor, "visitDynamicExceptionSpecification" ): + return visitor.visitDynamicExceptionSpecification(self) else: return visitor.visitChildren(self) - def tryblock(self): + def dynamicExceptionSpecification(self): - localctx = CPP14Parser.TryblockContext(self, self._ctx, self.state) - self.enterRule(localctx, 370, self.RULE_tryblock) + localctx = CPP14Parser.DynamicExceptionSpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 372, self.RULE_dynamicExceptionSpecification) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2328 - self.match(CPP14Parser.Try) - self.state = 2329 - self.compoundstatement() - self.state = 2330 - self.handlerseq() + self.state = 1977 + self.match(CPP14Parser.Throw) + self.state = 1978 + self.match(CPP14Parser.LeftParen) + self.state = 1980 + self._errHandler.sync(self) + _la = self._input.LA(1) + if ((((_la - 13)) & ~0x3f) == 0 and ((1 << (_la - 13)) & -9213942612181769245) != 0) or ((((_la - 77)) & ~0x3f) == 0 and ((1 << (_la - 77)) & 37154696925806707) != 0): + self.state = 1979 + self.typeIdList() + + + self.state = 1982 + self.match(CPP14Parser.RightParen) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -17756,68 +16575,89 @@ def tryblock(self): return localctx - class FunctiontryblockContext(ParserRuleContext): + class TypeIdListContext(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(CPP14Parser.Try, 0) - - def compoundstatement(self): - return self.getTypedRuleContext(CPP14Parser.CompoundstatementContext,0) - - - def handlerseq(self): - return self.getTypedRuleContext(CPP14Parser.HandlerseqContext,0) + def theTypeId(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CPP14Parser.TheTypeIdContext) + else: + return self.getTypedRuleContext(CPP14Parser.TheTypeIdContext,i) - def ctorinitializer(self): - return self.getTypedRuleContext(CPP14Parser.CtorinitializerContext,0) + def Ellipsis(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Ellipsis) + else: + return self.getToken(CPP14Parser.Ellipsis, i) + def Comma(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Comma) + else: + return self.getToken(CPP14Parser.Comma, i) def getRuleIndex(self): - return CPP14Parser.RULE_functiontryblock + return CPP14Parser.RULE_typeIdList def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunctiontryblock" ): - listener.enterFunctiontryblock(self) + if hasattr( listener, "enterTypeIdList" ): + listener.enterTypeIdList(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunctiontryblock" ): - listener.exitFunctiontryblock(self) + if hasattr( listener, "exitTypeIdList" ): + listener.exitTypeIdList(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunctiontryblock" ): - return visitor.visitFunctiontryblock(self) + if hasattr( visitor, "visitTypeIdList" ): + return visitor.visitTypeIdList(self) else: return visitor.visitChildren(self) - def functiontryblock(self): + def typeIdList(self): - localctx = CPP14Parser.FunctiontryblockContext(self, self._ctx, self.state) - self.enterRule(localctx, 372, self.RULE_functiontryblock) + localctx = CPP14Parser.TypeIdListContext(self, self._ctx, self.state) + self.enterRule(localctx, 374, self.RULE_typeIdList) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2332 - self.match(CPP14Parser.Try) - self.state = 2334 + self.state = 1984 + self.theTypeId() + self.state = 1986 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==131: + self.state = 1985 + self.match(CPP14Parser.Ellipsis) + + + self.state = 1995 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CPP14Parser.Colon: - self.state = 2333 - self.ctorinitializer() + while _la==122: + self.state = 1988 + self.match(CPP14Parser.Comma) + self.state = 1989 + self.theTypeId() + self.state = 1991 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==131: + self.state = 1990 + self.match(CPP14Parser.Ellipsis) + + self.state = 1997 + self._errHandler.sync(self) + _la = self._input.LA(1) - self.state = 2336 - self.compoundstatement() - self.state = 2337 - self.handlerseq() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -17827,54 +16667,71 @@ def functiontryblock(self): return localctx - class HandlerseqContext(ParserRuleContext): + class NoeExceptSpecificationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def handler(self): - return self.getTypedRuleContext(CPP14Parser.HandlerContext,0) + def Noexcept(self): + return self.getToken(CPP14Parser.Noexcept, 0) + + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) + def constantExpression(self): + return self.getTypedRuleContext(CPP14Parser.ConstantExpressionContext,0) - def handlerseq(self): - return self.getTypedRuleContext(CPP14Parser.HandlerseqContext,0) + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) def getRuleIndex(self): - return CPP14Parser.RULE_handlerseq + return CPP14Parser.RULE_noeExceptSpecification def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterHandlerseq" ): - listener.enterHandlerseq(self) + if hasattr( listener, "enterNoeExceptSpecification" ): + listener.enterNoeExceptSpecification(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitHandlerseq" ): - listener.exitHandlerseq(self) + if hasattr( listener, "exitNoeExceptSpecification" ): + listener.exitNoeExceptSpecification(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitHandlerseq" ): - return visitor.visitHandlerseq(self) + if hasattr( visitor, "visitNoeExceptSpecification" ): + return visitor.visitNoeExceptSpecification(self) else: return visitor.visitChildren(self) - def handlerseq(self): + def noeExceptSpecification(self): - localctx = CPP14Parser.HandlerseqContext(self, self._ctx, self.state) - self.enterRule(localctx, 374, self.RULE_handlerseq) + localctx = CPP14Parser.NoeExceptSpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 376, self.RULE_noeExceptSpecification) try: - self.enterOuterAlt(localctx, 1) - self.state = 2339 - self.handler() - self.state = 2341 + self.state = 2004 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,302,self._ctx) + la_ = self._interp.adaptivePredict(self._input,287,self._ctx) if la_ == 1: - self.state = 2340 - self.handlerseq() + self.enterOuterAlt(localctx, 1) + self.state = 1998 + self.match(CPP14Parser.Noexcept) + self.state = 1999 + self.match(CPP14Parser.LeftParen) + self.state = 2000 + self.constantExpression() + self.state = 2001 + self.match(CPP14Parser.RightParen) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2003 + self.match(CPP14Parser.Noexcept) + pass except RecognitionException as re: @@ -17886,1283 +16743,427 @@ def handlerseq(self): return localctx - class HandlerContext(ParserRuleContext): + class TheOperatorContext(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(CPP14Parser.Catch, 0) + def New(self): + return self.getToken(CPP14Parser.New, 0) - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) + def LeftBracket(self): + return self.getToken(CPP14Parser.LeftBracket, 0) + + def RightBracket(self): + return self.getToken(CPP14Parser.RightBracket, 0) - def exceptiondeclaration(self): - return self.getTypedRuleContext(CPP14Parser.ExceptiondeclarationContext,0) + def Delete(self): + return self.getToken(CPP14Parser.Delete, 0) + def Plus(self): + return self.getToken(CPP14Parser.Plus, 0) - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) + def Minus(self): + return self.getToken(CPP14Parser.Minus, 0) - def compoundstatement(self): - return self.getTypedRuleContext(CPP14Parser.CompoundstatementContext,0) + def Star(self): + return self.getToken(CPP14Parser.Star, 0) + def Div(self): + return self.getToken(CPP14Parser.Div, 0) - def getRuleIndex(self): - return CPP14Parser.RULE_handler + def Mod(self): + return self.getToken(CPP14Parser.Mod, 0) - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterHandler" ): - listener.enterHandler(self) + def Caret(self): + return self.getToken(CPP14Parser.Caret, 0) - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitHandler" ): - listener.exitHandler(self) + def And(self): + return self.getToken(CPP14Parser.And, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitHandler" ): - return visitor.visitHandler(self) + def Or(self): + return self.getToken(CPP14Parser.Or, 0) + + def Tilde(self): + return self.getToken(CPP14Parser.Tilde, 0) + + def Not(self): + return self.getToken(CPP14Parser.Not, 0) + + def Assign(self): + return self.getToken(CPP14Parser.Assign, 0) + + def Greater(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Greater) else: - return visitor.visitChildren(self) + return self.getToken(CPP14Parser.Greater, i) + def Less(self, i:int=None): + if i is None: + return self.getTokens(CPP14Parser.Less) + else: + return self.getToken(CPP14Parser.Less, i) + def GreaterEqual(self): + return self.getToken(CPP14Parser.GreaterEqual, 0) + def PlusAssign(self): + return self.getToken(CPP14Parser.PlusAssign, 0) - def handler(self): + def MinusAssign(self): + return self.getToken(CPP14Parser.MinusAssign, 0) - localctx = CPP14Parser.HandlerContext(self, self._ctx, self.state) - self.enterRule(localctx, 376, self.RULE_handler) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2343 - self.match(CPP14Parser.Catch) - self.state = 2344 - self.match(CPP14Parser.LeftParen) - self.state = 2345 - self.exceptiondeclaration() - self.state = 2346 - self.match(CPP14Parser.RightParen) - self.state = 2347 - self.compoundstatement() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx + def StarAssign(self): + return self.getToken(CPP14Parser.StarAssign, 0) + def ModAssign(self): + return self.getToken(CPP14Parser.ModAssign, 0) - class ExceptiondeclarationContext(ParserRuleContext): + def XorAssign(self): + return self.getToken(CPP14Parser.XorAssign, 0) - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser + def AndAssign(self): + return self.getToken(CPP14Parser.AndAssign, 0) - def typespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.TypespecifierseqContext,0) + def OrAssign(self): + return self.getToken(CPP14Parser.OrAssign, 0) + def RightShiftAssign(self): + return self.getToken(CPP14Parser.RightShiftAssign, 0) - def declarator(self): - return self.getTypedRuleContext(CPP14Parser.DeclaratorContext,0) + def LeftShiftAssign(self): + return self.getToken(CPP14Parser.LeftShiftAssign, 0) + + def Equal(self): + return self.getToken(CPP14Parser.Equal, 0) + + def NotEqual(self): + return self.getToken(CPP14Parser.NotEqual, 0) + def LessEqual(self): + return self.getToken(CPP14Parser.LessEqual, 0) - def attributespecifierseq(self): - return self.getTypedRuleContext(CPP14Parser.AttributespecifierseqContext,0) + def AndAnd(self): + return self.getToken(CPP14Parser.AndAnd, 0) + def OrOr(self): + return self.getToken(CPP14Parser.OrOr, 0) - def abstractdeclarator(self): - return self.getTypedRuleContext(CPP14Parser.AbstractdeclaratorContext,0) + def PlusPlus(self): + return self.getToken(CPP14Parser.PlusPlus, 0) + def MinusMinus(self): + return self.getToken(CPP14Parser.MinusMinus, 0) - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) + def Comma(self): + return self.getToken(CPP14Parser.Comma, 0) + + def ArrowStar(self): + return self.getToken(CPP14Parser.ArrowStar, 0) + + def Arrow(self): + return self.getToken(CPP14Parser.Arrow, 0) + + def LeftParen(self): + return self.getToken(CPP14Parser.LeftParen, 0) + + def RightParen(self): + return self.getToken(CPP14Parser.RightParen, 0) def getRuleIndex(self): - return CPP14Parser.RULE_exceptiondeclaration + return CPP14Parser.RULE_theOperator def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExceptiondeclaration" ): - listener.enterExceptiondeclaration(self) + if hasattr( listener, "enterTheOperator" ): + listener.enterTheOperator(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExceptiondeclaration" ): - listener.exitExceptiondeclaration(self) + if hasattr( listener, "exitTheOperator" ): + listener.exitTheOperator(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExceptiondeclaration" ): - return visitor.visitExceptiondeclaration(self) + if hasattr( visitor, "visitTheOperator" ): + return visitor.visitTheOperator(self) else: return visitor.visitChildren(self) - def exceptiondeclaration(self): + def theOperator(self): - localctx = CPP14Parser.ExceptiondeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 378, self.RULE_exceptiondeclaration) - self._la = 0 # Token type + localctx = CPP14Parser.TheOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 378, self.RULE_theOperator) try: - self.state = 2363 + self.state = 2057 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,306,self._ctx) + la_ = self._interp.adaptivePredict(self._input,290,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 2350 + self.state = 2006 + self.match(CPP14Parser.New) + self.state = 2009 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 2349 - self.attributespecifierseq(0) + la_ = self._interp.adaptivePredict(self._input,288,self._ctx) + if la_ == 1: + self.state = 2007 + self.match(CPP14Parser.LeftBracket) + self.state = 2008 + self.match(CPP14Parser.RightBracket) - self.state = 2352 - self.typespecifierseq() - self.state = 2353 - self.declarator() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 2356 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.Alignas or _la==CPP14Parser.LeftBracket: - self.state = 2355 - self.attributespecifierseq(0) - - - self.state = 2358 - self.typespecifierseq() - self.state = 2360 + self.state = 2011 + self.match(CPP14Parser.Delete) + self.state = 2014 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CPP14Parser.T__2 or _la==CPP14Parser.Decltype or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (CPP14Parser.LeftParen - 84)) | (1 << (CPP14Parser.LeftBracket - 84)) | (1 << (CPP14Parser.Star - 84)) | (1 << (CPP14Parser.And - 84)) | (1 << (CPP14Parser.Doublecolon - 84)) | (1 << (CPP14Parser.Ellipsis - 84)) | (1 << (CPP14Parser.Identifier - 84)))) != 0): - self.state = 2359 - self.abstractdeclarator() + la_ = self._interp.adaptivePredict(self._input,289,self._ctx) + if la_ == 1: + self.state = 2012 + self.match(CPP14Parser.LeftBracket) + self.state = 2013 + self.match(CPP14Parser.RightBracket) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 2362 - self.match(CPP14Parser.Ellipsis) + self.state = 2016 + self.match(CPP14Parser.Plus) pass + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2017 + self.match(CPP14Parser.Minus) + pass - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2018 + self.match(CPP14Parser.Star) + pass - class ThrowexpressionContext(ParserRuleContext): + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 2019 + self.match(CPP14Parser.Div) + pass - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 2020 + self.match(CPP14Parser.Mod) + pass - def Throw(self): - return self.getToken(CPP14Parser.Throw, 0) + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 2021 + self.match(CPP14Parser.Caret) + pass - def assignmentexpression(self): - return self.getTypedRuleContext(CPP14Parser.AssignmentexpressionContext,0) - - - def getRuleIndex(self): - return CPP14Parser.RULE_throwexpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterThrowexpression" ): - listener.enterThrowexpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitThrowexpression" ): - listener.exitThrowexpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitThrowexpression" ): - return visitor.visitThrowexpression(self) - else: - return visitor.visitChildren(self) - - - - - def throwexpression(self): - - localctx = CPP14Parser.ThrowexpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 380, self.RULE_throwexpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2365 - self.match(CPP14Parser.Throw) - self.state = 2367 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,307,self._ctx) - if la_ == 1: - self.state = 2366 - self.assignmentexpression() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExceptionspecificationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def dynamicexceptionspecification(self): - return self.getTypedRuleContext(CPP14Parser.DynamicexceptionspecificationContext,0) - - - def noexceptspecification(self): - return self.getTypedRuleContext(CPP14Parser.NoexceptspecificationContext,0) - - - def getRuleIndex(self): - return CPP14Parser.RULE_exceptionspecification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExceptionspecification" ): - listener.enterExceptionspecification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExceptionspecification" ): - listener.exitExceptionspecification(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExceptionspecification" ): - return visitor.visitExceptionspecification(self) - else: - return visitor.visitChildren(self) - - - - - def exceptionspecification(self): - - localctx = CPP14Parser.ExceptionspecificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 382, self.RULE_exceptionspecification) - try: - self.state = 2371 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.Throw]: - self.enterOuterAlt(localctx, 1) - self.state = 2369 - self.dynamicexceptionspecification() - pass - elif token in [CPP14Parser.Noexcept]: - self.enterOuterAlt(localctx, 2) - self.state = 2370 - self.noexceptspecification() - 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 DynamicexceptionspecificationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Throw(self): - return self.getToken(CPP14Parser.Throw, 0) - - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) - - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) - - def typeidlist(self): - return self.getTypedRuleContext(CPP14Parser.TypeidlistContext,0) - - - def getRuleIndex(self): - return CPP14Parser.RULE_dynamicexceptionspecification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDynamicexceptionspecification" ): - listener.enterDynamicexceptionspecification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDynamicexceptionspecification" ): - listener.exitDynamicexceptionspecification(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDynamicexceptionspecification" ): - return visitor.visitDynamicexceptionspecification(self) - else: - return visitor.visitChildren(self) - - - - - def dynamicexceptionspecification(self): - - localctx = CPP14Parser.DynamicexceptionspecificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 384, self.RULE_dynamicexceptionspecification) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2373 - self.match(CPP14Parser.Throw) - self.state = 2374 - self.match(CPP14Parser.LeftParen) - self.state = 2376 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & ((1 << (CPP14Parser.Auto - 14)) | (1 << (CPP14Parser.Bool - 14)) | (1 << (CPP14Parser.Char - 14)) | (1 << (CPP14Parser.Char16 - 14)) | (1 << (CPP14Parser.Char32 - 14)) | (1 << (CPP14Parser.Class - 14)) | (1 << (CPP14Parser.Const - 14)) | (1 << (CPP14Parser.Decltype - 14)) | (1 << (CPP14Parser.Double - 14)) | (1 << (CPP14Parser.Enum - 14)) | (1 << (CPP14Parser.Float - 14)) | (1 << (CPP14Parser.Int - 14)) | (1 << (CPP14Parser.Long - 14)) | (1 << (CPP14Parser.Short - 14)) | (1 << (CPP14Parser.Signed - 14)) | (1 << (CPP14Parser.Struct - 14)) | (1 << (CPP14Parser.Typename_ - 14)) | (1 << (CPP14Parser.Union - 14)) | (1 << (CPP14Parser.Unsigned - 14)))) != 0) or ((((_la - 80)) & ~0x3f) == 0 and ((1 << (_la - 80)) & ((1 << (CPP14Parser.Void - 80)) | (1 << (CPP14Parser.Volatile - 80)) | (1 << (CPP14Parser.Wchar - 80)) | (1 << (CPP14Parser.Doublecolon - 80)) | (1 << (CPP14Parser.Identifier - 80)))) != 0): - self.state = 2375 - self.typeidlist(0) - - - self.state = 2378 - self.match(CPP14Parser.RightParen) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeidlistContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def thetypeid(self): - return self.getTypedRuleContext(CPP14Parser.ThetypeidContext,0) - - - def Ellipsis(self): - return self.getToken(CPP14Parser.Ellipsis, 0) - - def typeidlist(self): - return self.getTypedRuleContext(CPP14Parser.TypeidlistContext,0) - - - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) - - def getRuleIndex(self): - return CPP14Parser.RULE_typeidlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeidlist" ): - listener.enterTypeidlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeidlist" ): - listener.exitTypeidlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeidlist" ): - return visitor.visitTypeidlist(self) - else: - return visitor.visitChildren(self) - - - - def typeidlist(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = CPP14Parser.TypeidlistContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 386 - self.enterRecursionRule(localctx, 386, self.RULE_typeidlist, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2381 - self.thetypeid() - self.state = 2383 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,310,self._ctx) - if la_ == 1: - self.state = 2382 - self.match(CPP14Parser.Ellipsis) - - - self._ctx.stop = self._input.LT(-1) - self.state = 2393 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,312,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 = CPP14Parser.TypeidlistContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_typeidlist) - self.state = 2385 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2386 - self.match(CPP14Parser.Comma) - self.state = 2387 - self.thetypeid() - self.state = 2389 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,311,self._ctx) - if la_ == 1: - self.state = 2388 - self.match(CPP14Parser.Ellipsis) - - - self.state = 2395 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,312,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 NoexceptspecificationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Noexcept(self): - return self.getToken(CPP14Parser.Noexcept, 0) - - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) - - def constantexpression(self): - return self.getTypedRuleContext(CPP14Parser.ConstantexpressionContext,0) - - - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) - - def getRuleIndex(self): - return CPP14Parser.RULE_noexceptspecification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNoexceptspecification" ): - listener.enterNoexceptspecification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNoexceptspecification" ): - listener.exitNoexceptspecification(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNoexceptspecification" ): - return visitor.visitNoexceptspecification(self) - else: - return visitor.visitChildren(self) - - - - - def noexceptspecification(self): - - localctx = CPP14Parser.NoexceptspecificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 388, self.RULE_noexceptspecification) - try: - self.state = 2402 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,313,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2396 - self.match(CPP14Parser.Noexcept) - self.state = 2397 - self.match(CPP14Parser.LeftParen) - self.state = 2398 - self.constantexpression() - self.state = 2399 - self.match(CPP14Parser.RightParen) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2401 - self.match(CPP14Parser.Noexcept) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FalseContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return CPP14Parser.RULE_false - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFalse" ): - listener.enterFalse(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFalse" ): - listener.exitFalse(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFalse" ): - return visitor.visitFalse(self) - else: - return visitor.visitChildren(self) - - - - - def false(self): - - localctx = CPP14Parser.FalseContext(self, self._ctx, self.state) - self.enterRule(localctx, 390, self.RULE_false) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2404 - self.match(CPP14Parser.T__6) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TrueContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return CPP14Parser.RULE_true - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTrue" ): - listener.enterTrue(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTrue" ): - listener.exitTrue(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTrue" ): - return visitor.visitTrue(self) - else: - return visitor.visitChildren(self) - - - - - def true(self): - - localctx = CPP14Parser.TrueContext(self, self._ctx, self.state) - self.enterRule(localctx, 392, self.RULE_true) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2406 - self.match(CPP14Parser.T__7) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TheoperatorContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def New(self): - return self.getToken(CPP14Parser.New, 0) - - def Delete(self): - return self.getToken(CPP14Parser.Delete, 0) - - def LeftBracket(self): - return self.getToken(CPP14Parser.LeftBracket, 0) - - def RightBracket(self): - return self.getToken(CPP14Parser.RightBracket, 0) - - def Plus(self): - return self.getToken(CPP14Parser.Plus, 0) - - def Minus(self): - return self.getToken(CPP14Parser.Minus, 0) - - def Star(self): - return self.getToken(CPP14Parser.Star, 0) - - def Div(self): - return self.getToken(CPP14Parser.Div, 0) - - def Mod(self): - return self.getToken(CPP14Parser.Mod, 0) - - def Caret(self): - return self.getToken(CPP14Parser.Caret, 0) - - def And(self): - return self.getToken(CPP14Parser.And, 0) - - def Or(self): - return self.getToken(CPP14Parser.Or, 0) - - def Tilde(self): - return self.getToken(CPP14Parser.Tilde, 0) - - def Assign(self): - return self.getToken(CPP14Parser.Assign, 0) - - def Less(self): - return self.getToken(CPP14Parser.Less, 0) - - def Greater(self): - return self.getToken(CPP14Parser.Greater, 0) - - def PlusAssign(self): - return self.getToken(CPP14Parser.PlusAssign, 0) - - def MinusAssign(self): - return self.getToken(CPP14Parser.MinusAssign, 0) - - def StarAssign(self): - return self.getToken(CPP14Parser.StarAssign, 0) - - def DivAssign(self): - return self.getToken(CPP14Parser.DivAssign, 0) - - def ModAssign(self): - return self.getToken(CPP14Parser.ModAssign, 0) - - def XorAssign(self): - return self.getToken(CPP14Parser.XorAssign, 0) - - def AndAssign(self): - return self.getToken(CPP14Parser.AndAssign, 0) - - def OrAssign(self): - return self.getToken(CPP14Parser.OrAssign, 0) - - def LeftShift(self): - return self.getToken(CPP14Parser.LeftShift, 0) - - def RightShift(self): - return self.getToken(CPP14Parser.RightShift, 0) - - def RightShiftAssign(self): - return self.getToken(CPP14Parser.RightShiftAssign, 0) - - def LeftShiftAssign(self): - return self.getToken(CPP14Parser.LeftShiftAssign, 0) - - def Equal(self): - return self.getToken(CPP14Parser.Equal, 0) - - def NotEqual(self): - return self.getToken(CPP14Parser.NotEqual, 0) - - def LessEqual(self): - return self.getToken(CPP14Parser.LessEqual, 0) - - def GreaterEqual(self): - return self.getToken(CPP14Parser.GreaterEqual, 0) - - def PlusPlus(self): - return self.getToken(CPP14Parser.PlusPlus, 0) - - def MinusMinus(self): - return self.getToken(CPP14Parser.MinusMinus, 0) - - def Comma(self): - return self.getToken(CPP14Parser.Comma, 0) - - def ArrowStar(self): - return self.getToken(CPP14Parser.ArrowStar, 0) - - def Arrow(self): - return self.getToken(CPP14Parser.Arrow, 0) - - def LeftParen(self): - return self.getToken(CPP14Parser.LeftParen, 0) - - def RightParen(self): - return self.getToken(CPP14Parser.RightParen, 0) - - def getRuleIndex(self): - return CPP14Parser.RULE_theoperator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTheoperator" ): - listener.enterTheoperator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTheoperator" ): - listener.exitTheoperator(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTheoperator" ): - return visitor.visitTheoperator(self) - else: - return visitor.visitChildren(self) - - - - - def theoperator(self): - - localctx = CPP14Parser.TheoperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 394, self.RULE_theoperator) - try: - self.state = 2459 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,314,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2408 - self.match(CPP14Parser.New) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2409 - self.match(CPP14Parser.Delete) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2410 - self.match(CPP14Parser.New) - self.state = 2411 - self.match(CPP14Parser.LeftBracket) - self.state = 2412 - self.match(CPP14Parser.RightBracket) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2413 - self.match(CPP14Parser.Delete) - self.state = 2414 - self.match(CPP14Parser.LeftBracket) - self.state = 2415 - self.match(CPP14Parser.RightBracket) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2416 - self.match(CPP14Parser.Plus) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2417 - self.match(CPP14Parser.Minus) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 2418 - self.match(CPP14Parser.Star) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 2419 - self.match(CPP14Parser.Div) - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 2420 - self.match(CPP14Parser.Mod) - pass + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 2022 + self.match(CPP14Parser.And) + pass elif la_ == 10: self.enterOuterAlt(localctx, 10) - self.state = 2421 - self.match(CPP14Parser.Caret) + self.state = 2023 + self.match(CPP14Parser.Or) pass elif la_ == 11: self.enterOuterAlt(localctx, 11) - self.state = 2422 - self.match(CPP14Parser.And) + self.state = 2024 + self.match(CPP14Parser.Tilde) pass elif la_ == 12: self.enterOuterAlt(localctx, 12) - self.state = 2423 - self.match(CPP14Parser.Or) + self.state = 2025 + self.match(CPP14Parser.Not) pass elif la_ == 13: self.enterOuterAlt(localctx, 13) - self.state = 2424 - self.match(CPP14Parser.Tilde) + self.state = 2026 + self.match(CPP14Parser.Assign) pass elif la_ == 14: self.enterOuterAlt(localctx, 14) - self.state = 2425 - self.match(CPP14Parser.T__0) + self.state = 2027 + self.match(CPP14Parser.Greater) pass elif la_ == 15: self.enterOuterAlt(localctx, 15) - self.state = 2426 - self.match(CPP14Parser.T__1) + self.state = 2028 + self.match(CPP14Parser.Less) pass elif la_ == 16: self.enterOuterAlt(localctx, 16) - self.state = 2427 - self.match(CPP14Parser.Assign) + self.state = 2029 + self.match(CPP14Parser.GreaterEqual) pass elif la_ == 17: self.enterOuterAlt(localctx, 17) - self.state = 2428 - self.match(CPP14Parser.Less) + self.state = 2030 + self.match(CPP14Parser.PlusAssign) pass elif la_ == 18: self.enterOuterAlt(localctx, 18) - self.state = 2429 - self.match(CPP14Parser.Greater) + self.state = 2031 + self.match(CPP14Parser.MinusAssign) pass elif la_ == 19: self.enterOuterAlt(localctx, 19) - self.state = 2430 - self.match(CPP14Parser.PlusAssign) + self.state = 2032 + self.match(CPP14Parser.StarAssign) pass elif la_ == 20: self.enterOuterAlt(localctx, 20) - self.state = 2431 - self.match(CPP14Parser.MinusAssign) + self.state = 2033 + self.match(CPP14Parser.ModAssign) pass elif la_ == 21: self.enterOuterAlt(localctx, 21) - self.state = 2432 - self.match(CPP14Parser.StarAssign) + self.state = 2034 + self.match(CPP14Parser.XorAssign) pass elif la_ == 22: self.enterOuterAlt(localctx, 22) - self.state = 2433 - self.match(CPP14Parser.DivAssign) + self.state = 2035 + self.match(CPP14Parser.AndAssign) pass elif la_ == 23: self.enterOuterAlt(localctx, 23) - self.state = 2434 - self.match(CPP14Parser.ModAssign) + self.state = 2036 + self.match(CPP14Parser.OrAssign) pass elif la_ == 24: self.enterOuterAlt(localctx, 24) - self.state = 2435 - self.match(CPP14Parser.XorAssign) - pass - - elif la_ == 25: - self.enterOuterAlt(localctx, 25) - self.state = 2436 - self.match(CPP14Parser.AndAssign) - pass - - elif la_ == 26: - self.enterOuterAlt(localctx, 26) - self.state = 2437 - self.match(CPP14Parser.OrAssign) - pass - - elif la_ == 27: - self.enterOuterAlt(localctx, 27) - self.state = 2438 - self.match(CPP14Parser.LeftShift) - pass - - elif la_ == 28: - self.enterOuterAlt(localctx, 28) - self.state = 2439 - self.match(CPP14Parser.RightShift) - pass - - elif la_ == 29: - self.enterOuterAlt(localctx, 29) - self.state = 2440 - self.match(CPP14Parser.RightShiftAssign) - pass - - elif la_ == 30: - self.enterOuterAlt(localctx, 30) - self.state = 2441 - self.match(CPP14Parser.LeftShiftAssign) - pass - - elif la_ == 31: - self.enterOuterAlt(localctx, 31) - self.state = 2442 - self.match(CPP14Parser.Equal) - pass - - elif la_ == 32: - self.enterOuterAlt(localctx, 32) - self.state = 2443 - self.match(CPP14Parser.NotEqual) - pass - - elif la_ == 33: - self.enterOuterAlt(localctx, 33) - self.state = 2444 - self.match(CPP14Parser.LessEqual) - pass - - elif la_ == 34: - self.enterOuterAlt(localctx, 34) - self.state = 2445 - self.match(CPP14Parser.GreaterEqual) - pass - - elif la_ == 35: - self.enterOuterAlt(localctx, 35) - self.state = 2446 - self.match(CPP14Parser.T__2) - pass - - elif la_ == 36: - self.enterOuterAlt(localctx, 36) - self.state = 2447 - self.match(CPP14Parser.T__3) - pass - - elif la_ == 37: - self.enterOuterAlt(localctx, 37) - self.state = 2448 - self.match(CPP14Parser.T__4) - pass - - elif la_ == 38: - self.enterOuterAlt(localctx, 38) - self.state = 2449 - self.match(CPP14Parser.T__5) - pass - - elif la_ == 39: - self.enterOuterAlt(localctx, 39) - self.state = 2450 - self.match(CPP14Parser.PlusPlus) - pass - - elif la_ == 40: - self.enterOuterAlt(localctx, 40) - self.state = 2451 - self.match(CPP14Parser.MinusMinus) - pass - - elif la_ == 41: - self.enterOuterAlt(localctx, 41) - self.state = 2452 - self.match(CPP14Parser.Comma) - pass - - elif la_ == 42: - self.enterOuterAlt(localctx, 42) - self.state = 2453 - self.match(CPP14Parser.ArrowStar) - pass - - elif la_ == 43: - self.enterOuterAlt(localctx, 43) - self.state = 2454 - self.match(CPP14Parser.Arrow) - pass - - elif la_ == 44: - self.enterOuterAlt(localctx, 44) - self.state = 2455 - self.match(CPP14Parser.LeftParen) - self.state = 2456 - self.match(CPP14Parser.RightParen) - pass - - elif la_ == 45: - self.enterOuterAlt(localctx, 45) - self.state = 2457 - self.match(CPP14Parser.LeftBracket) - self.state = 2458 - self.match(CPP14Parser.RightBracket) - pass - - - 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): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Integerliteral(self): - return self.getToken(CPP14Parser.Integerliteral, 0) - - def Characterliteral(self): - return self.getToken(CPP14Parser.Characterliteral, 0) - - def Floatingliteral(self): - return self.getToken(CPP14Parser.Floatingliteral, 0) - - def Stringliteral(self): - return self.getToken(CPP14Parser.Stringliteral, 0) - - def booleanliteral(self): - return self.getTypedRuleContext(CPP14Parser.BooleanliteralContext,0) - - - def pointerliteral(self): - return self.getTypedRuleContext(CPP14Parser.PointerliteralContext,0) - - - def userdefinedliteral(self): - return self.getTypedRuleContext(CPP14Parser.UserdefinedliteralContext,0) - - - def getRuleIndex(self): - return CPP14Parser.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 = CPP14Parser.LiteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 396, self.RULE_literal) - try: - self.state = 2468 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.Integerliteral]: - self.enterOuterAlt(localctx, 1) - self.state = 2461 - self.match(CPP14Parser.Integerliteral) - pass - elif token in [CPP14Parser.Characterliteral]: - self.enterOuterAlt(localctx, 2) - self.state = 2462 - self.match(CPP14Parser.Characterliteral) - pass - elif token in [CPP14Parser.Floatingliteral]: - self.enterOuterAlt(localctx, 3) - self.state = 2463 - self.match(CPP14Parser.Floatingliteral) - pass - elif token in [CPP14Parser.Stringliteral]: - self.enterOuterAlt(localctx, 4) - self.state = 2464 - self.match(CPP14Parser.Stringliteral) - pass - elif token in [CPP14Parser.T__6, CPP14Parser.T__7]: - self.enterOuterAlt(localctx, 5) - self.state = 2465 - self.booleanliteral() - pass - elif token in [CPP14Parser.Nullptr]: - self.enterOuterAlt(localctx, 6) - self.state = 2466 - self.pointerliteral() - pass - elif token in [CPP14Parser.Userdefinedintegerliteral, CPP14Parser.Userdefinedfloatingliteral, CPP14Parser.Userdefinedstringliteral, CPP14Parser.Userdefinedcharacterliteral]: - self.enterOuterAlt(localctx, 7) - self.state = 2467 - self.userdefinedliteral() - 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 BooleanliteralContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def false(self): - return self.getTypedRuleContext(CPP14Parser.FalseContext,0) - - - def true(self): - return self.getTypedRuleContext(CPP14Parser.TrueContext,0) - - - def getRuleIndex(self): - return CPP14Parser.RULE_booleanliteral - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBooleanliteral" ): - listener.enterBooleanliteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBooleanliteral" ): - listener.exitBooleanliteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBooleanliteral" ): - return visitor.visitBooleanliteral(self) - else: - return visitor.visitChildren(self) - - - + self.state = 2037 + self.match(CPP14Parser.Less) + self.state = 2038 + self.match(CPP14Parser.Less) + pass - def booleanliteral(self): + elif la_ == 25: + self.enterOuterAlt(localctx, 25) + self.state = 2039 + self.match(CPP14Parser.Greater) + self.state = 2040 + self.match(CPP14Parser.Greater) + pass - localctx = CPP14Parser.BooleanliteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 398, self.RULE_booleanliteral) - try: - self.state = 2472 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CPP14Parser.T__6]: - self.enterOuterAlt(localctx, 1) - self.state = 2470 - self.false() + elif la_ == 26: + self.enterOuterAlt(localctx, 26) + self.state = 2041 + self.match(CPP14Parser.RightShiftAssign) pass - elif token in [CPP14Parser.T__7]: - self.enterOuterAlt(localctx, 2) - self.state = 2471 - self.true() + + elif la_ == 27: + self.enterOuterAlt(localctx, 27) + self.state = 2042 + self.match(CPP14Parser.LeftShiftAssign) 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 + elif la_ == 28: + self.enterOuterAlt(localctx, 28) + self.state = 2043 + self.match(CPP14Parser.Equal) + pass + elif la_ == 29: + self.enterOuterAlt(localctx, 29) + self.state = 2044 + self.match(CPP14Parser.NotEqual) + pass - class PointerliteralContext(ParserRuleContext): + elif la_ == 30: + self.enterOuterAlt(localctx, 30) + self.state = 2045 + self.match(CPP14Parser.LessEqual) + pass - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser + elif la_ == 31: + self.enterOuterAlt(localctx, 31) + self.state = 2046 + self.match(CPP14Parser.AndAnd) + pass - def Nullptr(self): - return self.getToken(CPP14Parser.Nullptr, 0) + elif la_ == 32: + self.enterOuterAlt(localctx, 32) + self.state = 2047 + self.match(CPP14Parser.OrOr) + pass - def getRuleIndex(self): - return CPP14Parser.RULE_pointerliteral + elif la_ == 33: + self.enterOuterAlt(localctx, 33) + self.state = 2048 + self.match(CPP14Parser.PlusPlus) + pass - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPointerliteral" ): - listener.enterPointerliteral(self) + elif la_ == 34: + self.enterOuterAlt(localctx, 34) + self.state = 2049 + self.match(CPP14Parser.MinusMinus) + pass - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPointerliteral" ): - listener.exitPointerliteral(self) + elif la_ == 35: + self.enterOuterAlt(localctx, 35) + self.state = 2050 + self.match(CPP14Parser.Comma) + pass - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPointerliteral" ): - return visitor.visitPointerliteral(self) - else: - return visitor.visitChildren(self) + elif la_ == 36: + self.enterOuterAlt(localctx, 36) + self.state = 2051 + self.match(CPP14Parser.ArrowStar) + pass + elif la_ == 37: + self.enterOuterAlt(localctx, 37) + self.state = 2052 + self.match(CPP14Parser.Arrow) + pass + elif la_ == 38: + self.enterOuterAlt(localctx, 38) + self.state = 2053 + self.match(CPP14Parser.LeftParen) + self.state = 2054 + self.match(CPP14Parser.RightParen) + pass + elif la_ == 39: + self.enterOuterAlt(localctx, 39) + self.state = 2055 + self.match(CPP14Parser.LeftBracket) + self.state = 2056 + self.match(CPP14Parser.RightBracket) + pass - def pointerliteral(self): - localctx = CPP14Parser.PointerliteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 400, self.RULE_pointerliteral) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2474 - self.match(CPP14Parser.Nullptr) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -19172,54 +17173,64 @@ def pointerliteral(self): return localctx - class UserdefinedliteralContext(ParserRuleContext): + class LiteralContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def Userdefinedintegerliteral(self): - return self.getToken(CPP14Parser.Userdefinedintegerliteral, 0) + def IntegerLiteral(self): + return self.getToken(CPP14Parser.IntegerLiteral, 0) + + def CharacterLiteral(self): + return self.getToken(CPP14Parser.CharacterLiteral, 0) + + def FloatingLiteral(self): + return self.getToken(CPP14Parser.FloatingLiteral, 0) - def Userdefinedfloatingliteral(self): - return self.getToken(CPP14Parser.Userdefinedfloatingliteral, 0) + def StringLiteral(self): + return self.getToken(CPP14Parser.StringLiteral, 0) - def Userdefinedstringliteral(self): - return self.getToken(CPP14Parser.Userdefinedstringliteral, 0) + def BooleanLiteral(self): + return self.getToken(CPP14Parser.BooleanLiteral, 0) - def Userdefinedcharacterliteral(self): - return self.getToken(CPP14Parser.Userdefinedcharacterliteral, 0) + def PointerLiteral(self): + return self.getToken(CPP14Parser.PointerLiteral, 0) + + def UserDefinedLiteral(self): + return self.getToken(CPP14Parser.UserDefinedLiteral, 0) def getRuleIndex(self): - return CPP14Parser.RULE_userdefinedliteral + return CPP14Parser.RULE_literal def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUserdefinedliteral" ): - listener.enterUserdefinedliteral(self) + if hasattr( listener, "enterLiteral" ): + listener.enterLiteral(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUserdefinedliteral" ): - listener.exitUserdefinedliteral(self) + if hasattr( listener, "exitLiteral" ): + listener.exitLiteral(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUserdefinedliteral" ): - return visitor.visitUserdefinedliteral(self) + if hasattr( visitor, "visitLiteral" ): + return visitor.visitLiteral(self) else: return visitor.visitChildren(self) - def userdefinedliteral(self): + def literal(self): - localctx = CPP14Parser.UserdefinedliteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 402, self.RULE_userdefinedliteral) + localctx = CPP14Parser.LiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 380, self.RULE_literal) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2476 + self.state = 2059 _la = self._input.LA(1) - if not(((((_la - 143)) & ~0x3f) == 0 and ((1 << (_la - 143)) & ((1 << (CPP14Parser.Userdefinedintegerliteral - 143)) | (1 << (CPP14Parser.Userdefinedfloatingliteral - 143)) | (1 << (CPP14Parser.Userdefinedstringliteral - 143)) | (1 << (CPP14Parser.Userdefinedcharacterliteral - 143)))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 254) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -19237,306 +17248,56 @@ def userdefinedliteral(self): def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): if self._predicates == None: self._predicates = dict() - self._predicates[5] = self.nestednamespecifier_sempred - self._predicates[10] = self.capturelist_sempred - self._predicates[15] = self.postfixexpression_sempred - self._predicates[26] = self.noptrnewdeclarator_sempred - self._predicates[31] = self.pmexpression_sempred - self._predicates[32] = self.multiplicativeexpression_sempred - self._predicates[33] = self.additiveexpression_sempred - self._predicates[34] = self.shiftexpression_sempred - self._predicates[36] = self.relationalexpression_sempred - self._predicates[37] = self.equalityexpression_sempred - self._predicates[38] = self.andexpression_sempred - self._predicates[39] = self.exclusiveorexpression_sempred - self._predicates[40] = self.inclusiveorexpression_sempred - self._predicates[41] = self.logicalandexpression_sempred - self._predicates[42] = self.logicalorexpression_sempred - self._predicates[46] = self.expression_sempred - self._predicates[52] = self.statementseq_sempred - self._predicates[61] = self.declarationseq_sempred - self._predicates[88] = self.enumeratorlist_sempred - self._predicates[106] = self.attributespecifierseq_sempred - self._predicates[109] = self.attributelist_sempred - self._predicates[115] = self.balancedtokenseq_sempred - self._predicates[117] = self.initdeclaratorlist_sempred - self._predicates[121] = self.noptrdeclarator_sempred - self._predicates[132] = self.noptrabstractdeclarator_sempred - self._predicates[134] = self.noptrabstractpackdeclarator_sempred - self._predicates[136] = self.parameterdeclarationlist_sempred - self._predicates[143] = self.initializerlist_sempred - self._predicates[153] = self.memberdeclaratorlist_sempred - self._predicates[155] = self.virtspecifierseq_sempred - self._predicates[159] = self.basespecifierlist_sempred - self._predicates[174] = self.templateparameterlist_sempred - self._predicates[180] = self.templateargumentlist_sempred - self._predicates[193] = self.typeidlist_sempred + self._predicates[5] = self.nestedNameSpecifier_sempred + self._predicates[15] = self.postfixExpression_sempred + self._predicates[25] = self.noPointerNewDeclarator_sempred + self._predicates[115] = self.noPointerDeclarator_sempred + self._predicates[148] = self.memberDeclarator_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 nestednamespecifier_sempred(self, localctx:NestednamespecifierContext, predIndex:int): + def nestedNameSpecifier_sempred(self, localctx:NestedNameSpecifierContext, predIndex:int): if predIndex == 0: - return self.precpred(self._ctx, 2) + return self.precpred(self._ctx, 1) + def postfixExpression_sempred(self, localctx:PostfixExpressionContext, predIndex:int): if predIndex == 1: - return self.precpred(self._ctx, 1) + return self.precpred(self._ctx, 7) - def capturelist_sempred(self, localctx:CapturelistContext, predIndex:int): if predIndex == 2: - return self.precpred(self._ctx, 1) + return self.precpred(self._ctx, 6) - def postfixexpression_sempred(self, localctx:PostfixexpressionContext, predIndex:int): if predIndex == 3: - return self.precpred(self._ctx, 19) + return self.precpred(self._ctx, 4) if predIndex == 4: - return self.precpred(self._ctx, 18) + return self.precpred(self._ctx, 3) + def noPointerNewDeclarator_sempred(self, localctx:NoPointerNewDeclaratorContext, predIndex:int): if predIndex == 5: - return self.precpred(self._ctx, 17) + return self.precpred(self._ctx, 1) + def noPointerDeclarator_sempred(self, localctx:NoPointerDeclaratorContext, predIndex:int): if predIndex == 6: - return self.precpred(self._ctx, 12) + return self.precpred(self._ctx, 2) + def memberDeclarator_sempred(self, localctx:MemberDeclaratorContext, predIndex:int): if predIndex == 7: - return self.precpred(self._ctx, 11) + return this.IsPureSpecifierAllowed() if predIndex == 8: - return self.precpred(self._ctx, 10) - - - if predIndex == 9: - return self.precpred(self._ctx, 9) - - - if predIndex == 10: - return self.precpred(self._ctx, 8) - - - if predIndex == 11: - return self.precpred(self._ctx, 7) - - - def noptrnewdeclarator_sempred(self, localctx:NoptrnewdeclaratorContext, predIndex:int): - if predIndex == 12: - return self.precpred(self._ctx, 1) - - - def pmexpression_sempred(self, localctx:PmexpressionContext, predIndex:int): - if predIndex == 13: - return self.precpred(self._ctx, 2) - - - if predIndex == 14: - return self.precpred(self._ctx, 1) - - - def multiplicativeexpression_sempred(self, localctx:MultiplicativeexpressionContext, predIndex:int): - if predIndex == 15: - return self.precpred(self._ctx, 3) - - - if predIndex == 16: - return self.precpred(self._ctx, 2) - - - if predIndex == 17: - return self.precpred(self._ctx, 1) - - - def additiveexpression_sempred(self, localctx:AdditiveexpressionContext, predIndex:int): - if predIndex == 18: - return self.precpred(self._ctx, 2) - - - if predIndex == 19: - return self.precpred(self._ctx, 1) - - - def shiftexpression_sempred(self, localctx:ShiftexpressionContext, predIndex:int): - if predIndex == 20: - return self.precpred(self._ctx, 1) - - - def relationalexpression_sempred(self, localctx:RelationalexpressionContext, predIndex:int): - if predIndex == 21: - return self.precpred(self._ctx, 4) - - - if predIndex == 22: - return self.precpred(self._ctx, 3) - - - if predIndex == 23: - return self.precpred(self._ctx, 2) - - - if predIndex == 24: - return self.precpred(self._ctx, 1) - - - def equalityexpression_sempred(self, localctx:EqualityexpressionContext, predIndex:int): - if predIndex == 25: - return self.precpred(self._ctx, 2) - - - if predIndex == 26: - return self.precpred(self._ctx, 1) - - - def andexpression_sempred(self, localctx:AndexpressionContext, predIndex:int): - if predIndex == 27: - return self.precpred(self._ctx, 1) - - - def exclusiveorexpression_sempred(self, localctx:ExclusiveorexpressionContext, predIndex:int): - if predIndex == 28: - return self.precpred(self._ctx, 1) - - - def inclusiveorexpression_sempred(self, localctx:InclusiveorexpressionContext, predIndex:int): - if predIndex == 29: - return self.precpred(self._ctx, 1) - - - def logicalandexpression_sempred(self, localctx:LogicalandexpressionContext, predIndex:int): - if predIndex == 30: - return self.precpred(self._ctx, 2) - - - if predIndex == 31: - return self.precpred(self._ctx, 1) - - - def logicalorexpression_sempred(self, localctx:LogicalorexpressionContext, predIndex:int): - if predIndex == 32: - return self.precpred(self._ctx, 2) - - - if predIndex == 33: - return self.precpred(self._ctx, 1) - - - def expression_sempred(self, localctx:ExpressionContext, predIndex:int): - if predIndex == 34: - return self.precpred(self._ctx, 1) - - - def statementseq_sempred(self, localctx:StatementseqContext, predIndex:int): - if predIndex == 35: - return self.precpred(self._ctx, 1) - - - def declarationseq_sempred(self, localctx:DeclarationseqContext, predIndex:int): - if predIndex == 36: - return self.precpred(self._ctx, 1) - - - def enumeratorlist_sempred(self, localctx:EnumeratorlistContext, predIndex:int): - if predIndex == 37: - return self.precpred(self._ctx, 1) - - - def attributespecifierseq_sempred(self, localctx:AttributespecifierseqContext, predIndex:int): - if predIndex == 38: - return self.precpred(self._ctx, 1) - - - def attributelist_sempred(self, localctx:AttributelistContext, predIndex:int): - if predIndex == 39: - return self.precpred(self._ctx, 3) - - - if predIndex == 40: - return self.precpred(self._ctx, 1) - - - def balancedtokenseq_sempred(self, localctx:BalancedtokenseqContext, predIndex:int): - if predIndex == 41: - return self.precpred(self._ctx, 1) - - - def initdeclaratorlist_sempred(self, localctx:InitdeclaratorlistContext, predIndex:int): - if predIndex == 42: - return self.precpred(self._ctx, 1) - - - def noptrdeclarator_sempred(self, localctx:NoptrdeclaratorContext, predIndex:int): - if predIndex == 43: - return self.precpred(self._ctx, 3) - - - if predIndex == 44: - return self.precpred(self._ctx, 2) - - - def noptrabstractdeclarator_sempred(self, localctx:NoptrabstractdeclaratorContext, predIndex:int): - if predIndex == 45: - return self.precpred(self._ctx, 5) - - - if predIndex == 46: - return self.precpred(self._ctx, 3) - - - def noptrabstractpackdeclarator_sempred(self, localctx:NoptrabstractpackdeclaratorContext, predIndex:int): - if predIndex == 47: - return self.precpred(self._ctx, 3) - - - if predIndex == 48: - return self.precpred(self._ctx, 2) - - - def parameterdeclarationlist_sempred(self, localctx:ParameterdeclarationlistContext, predIndex:int): - if predIndex == 49: - return self.precpred(self._ctx, 1) - - - def initializerlist_sempred(self, localctx:InitializerlistContext, predIndex:int): - if predIndex == 50: - return self.precpred(self._ctx, 1) - - - def memberdeclaratorlist_sempred(self, localctx:MemberdeclaratorlistContext, predIndex:int): - if predIndex == 51: - return self.precpred(self._ctx, 1) - - - def virtspecifierseq_sempred(self, localctx:VirtspecifierseqContext, predIndex:int): - if predIndex == 52: - return self.precpred(self._ctx, 1) - - - def basespecifierlist_sempred(self, localctx:BasespecifierlistContext, predIndex:int): - if predIndex == 53: - return self.precpred(self._ctx, 1) - - - def templateparameterlist_sempred(self, localctx:TemplateparameterlistContext, predIndex:int): - if predIndex == 54: - return self.precpred(self._ctx, 1) - - - def templateargumentlist_sempred(self, localctx:TemplateargumentlistContext, predIndex:int): - if predIndex == 55: - return self.precpred(self._ctx, 1) - - - def typeidlist_sempred(self, localctx:TypeidlistContext, predIndex:int): - if predIndex == 56: - return self.precpred(self._ctx, 1) + return this.IsPureSpecifierAllowed() diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.tokens b/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.tokens new file mode 100644 index 00000000..97906afe --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14Parser.tokens @@ -0,0 +1,264 @@ +IntegerLiteral=1 +CharacterLiteral=2 +FloatingLiteral=3 +StringLiteral=4 +BooleanLiteral=5 +PointerLiteral=6 +UserDefinedLiteral=7 +MultiLineMacro=8 +Directive=9 +Alignas=10 +Alignof=11 +Asm=12 +Auto=13 +Bool=14 +Break=15 +Case=16 +Catch=17 +Char=18 +Char16=19 +Char32=20 +Class=21 +Const=22 +Constexpr=23 +Const_cast=24 +Continue=25 +Decltype=26 +Default=27 +Delete=28 +Do=29 +Double=30 +Dynamic_cast=31 +Else=32 +Enum=33 +Explicit=34 +Export=35 +Extern=36 +False_=37 +Final=38 +Float=39 +For=40 +Friend=41 +Goto=42 +If=43 +Inline=44 +Int=45 +Long=46 +Mutable=47 +Namespace=48 +New=49 +Noexcept=50 +Nullptr=51 +Operator=52 +Override=53 +Private=54 +Protected=55 +Public=56 +Register=57 +Reinterpret_cast=58 +Return=59 +Short=60 +Signed=61 +Sizeof=62 +Static=63 +Static_assert=64 +Static_cast=65 +Struct=66 +Switch=67 +Template=68 +This=69 +Thread_local=70 +Throw=71 +True_=72 +Try=73 +Typedef=74 +Typeid_=75 +Typename_=76 +Union=77 +Unsigned=78 +Using=79 +Virtual=80 +Void=81 +Volatile=82 +Wchar=83 +While=84 +LeftParen=85 +RightParen=86 +LeftBracket=87 +RightBracket=88 +LeftBrace=89 +RightBrace=90 +Plus=91 +Minus=92 +Star=93 +Div=94 +Mod=95 +Caret=96 +And=97 +Or=98 +Tilde=99 +Not=100 +Assign=101 +Less=102 +Greater=103 +PlusAssign=104 +MinusAssign=105 +StarAssign=106 +DivAssign=107 +ModAssign=108 +XorAssign=109 +AndAssign=110 +OrAssign=111 +LeftShiftAssign=112 +RightShiftAssign=113 +Equal=114 +NotEqual=115 +LessEqual=116 +GreaterEqual=117 +AndAnd=118 +OrOr=119 +PlusPlus=120 +MinusMinus=121 +Comma=122 +ArrowStar=123 +Arrow=124 +Question=125 +Colon=126 +Doublecolon=127 +Semi=128 +Dot=129 +DotStar=130 +Ellipsis=131 +Identifier=132 +DecimalLiteral=133 +OctalLiteral=134 +HexadecimalLiteral=135 +BinaryLiteral=136 +Integersuffix=137 +UserDefinedIntegerLiteral=138 +UserDefinedFloatingLiteral=139 +UserDefinedStringLiteral=140 +UserDefinedCharacterLiteral=141 +Whitespace=142 +Newline=143 +BlockComment=144 +LineComment=145 +'alignas'=10 +'alignof'=11 +'asm'=12 +'auto'=13 +'bool'=14 +'break'=15 +'case'=16 +'catch'=17 +'char'=18 +'char16_t'=19 +'char32_t'=20 +'class'=21 +'const'=22 +'constexpr'=23 +'const_cast'=24 +'continue'=25 +'decltype'=26 +'default'=27 +'delete'=28 +'do'=29 +'double'=30 +'dynamic_cast'=31 +'else'=32 +'enum'=33 +'explicit'=34 +'export'=35 +'extern'=36 +'false'=37 +'final'=38 +'float'=39 +'for'=40 +'friend'=41 +'goto'=42 +'if'=43 +'inline'=44 +'int'=45 +'long'=46 +'mutable'=47 +'namespace'=48 +'new'=49 +'noexcept'=50 +'nullptr'=51 +'operator'=52 +'override'=53 +'private'=54 +'protected'=55 +'public'=56 +'register'=57 +'reinterpret_cast'=58 +'return'=59 +'short'=60 +'signed'=61 +'sizeof'=62 +'static'=63 +'static_assert'=64 +'static_cast'=65 +'struct'=66 +'switch'=67 +'template'=68 +'this'=69 +'thread_local'=70 +'throw'=71 +'true'=72 +'try'=73 +'typedef'=74 +'typeid'=75 +'typename'=76 +'union'=77 +'unsigned'=78 +'using'=79 +'virtual'=80 +'void'=81 +'volatile'=82 +'wchar_t'=83 +'while'=84 +'('=85 +')'=86 +'['=87 +']'=88 +'{'=89 +'}'=90 +'+'=91 +'-'=92 +'*'=93 +'/'=94 +'%'=95 +'^'=96 +'&'=97 +'|'=98 +'~'=99 +'='=101 +'<'=102 +'>'=103 +'+='=104 +'-='=105 +'*='=106 +'/='=107 +'%='=108 +'^='=109 +'&='=110 +'|='=111 +'<<='=112 +'>>='=113 +'=='=114 +'!='=115 +'<='=116 +'>='=117 +'++'=120 +'--'=121 +','=122 +'->*'=123 +'->'=124 +'?'=125 +':'=126 +'::'=127 +';'=128 +'.'=129 +'.*'=130 +'...'=131 diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14ParserListener.py b/src/pycropml/transpiler/antlr_py/grammars/CPP14ParserListener.py new file mode 100644 index 00000000..7b90921b --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14ParserListener.py @@ -0,0 +1,1731 @@ +# Generated from CPP14Parser.g4 by ANTLR 4.13.2 +from antlr4 import * +if "." in __name__: + from .CPP14Parser import CPP14Parser +else: + from CPP14Parser import CPP14Parser + +# This class defines a complete listener for a parse tree produced by CPP14Parser. +class CPP14ParserListener(ParseTreeListener): + + # Enter a parse tree produced by CPP14Parser#translationUnit. + def enterTranslationUnit(self, ctx:CPP14Parser.TranslationUnitContext): + pass + + # Exit a parse tree produced by CPP14Parser#translationUnit. + def exitTranslationUnit(self, ctx:CPP14Parser.TranslationUnitContext): + pass + + + # Enter a parse tree produced by CPP14Parser#primaryExpression. + def enterPrimaryExpression(self, ctx:CPP14Parser.PrimaryExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#primaryExpression. + def exitPrimaryExpression(self, ctx:CPP14Parser.PrimaryExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#idExpression. + def enterIdExpression(self, ctx:CPP14Parser.IdExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#idExpression. + def exitIdExpression(self, ctx:CPP14Parser.IdExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#unqualifiedId. + def enterUnqualifiedId(self, ctx:CPP14Parser.UnqualifiedIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#unqualifiedId. + def exitUnqualifiedId(self, ctx:CPP14Parser.UnqualifiedIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#qualifiedId. + def enterQualifiedId(self, ctx:CPP14Parser.QualifiedIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#qualifiedId. + def exitQualifiedId(self, ctx:CPP14Parser.QualifiedIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#nestedNameSpecifier. + def enterNestedNameSpecifier(self, ctx:CPP14Parser.NestedNameSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#nestedNameSpecifier. + def exitNestedNameSpecifier(self, ctx:CPP14Parser.NestedNameSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#lambdaExpression. + def enterLambdaExpression(self, ctx:CPP14Parser.LambdaExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#lambdaExpression. + def exitLambdaExpression(self, ctx:CPP14Parser.LambdaExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#lambdaIntroducer. + def enterLambdaIntroducer(self, ctx:CPP14Parser.LambdaIntroducerContext): + pass + + # Exit a parse tree produced by CPP14Parser#lambdaIntroducer. + def exitLambdaIntroducer(self, ctx:CPP14Parser.LambdaIntroducerContext): + pass + + + # Enter a parse tree produced by CPP14Parser#lambdaCapture. + def enterLambdaCapture(self, ctx:CPP14Parser.LambdaCaptureContext): + pass + + # Exit a parse tree produced by CPP14Parser#lambdaCapture. + def exitLambdaCapture(self, ctx:CPP14Parser.LambdaCaptureContext): + pass + + + # Enter a parse tree produced by CPP14Parser#captureDefault. + def enterCaptureDefault(self, ctx:CPP14Parser.CaptureDefaultContext): + pass + + # Exit a parse tree produced by CPP14Parser#captureDefault. + def exitCaptureDefault(self, ctx:CPP14Parser.CaptureDefaultContext): + pass + + + # Enter a parse tree produced by CPP14Parser#captureList. + def enterCaptureList(self, ctx:CPP14Parser.CaptureListContext): + pass + + # Exit a parse tree produced by CPP14Parser#captureList. + def exitCaptureList(self, ctx:CPP14Parser.CaptureListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#capture. + def enterCapture(self, ctx:CPP14Parser.CaptureContext): + pass + + # Exit a parse tree produced by CPP14Parser#capture. + def exitCapture(self, ctx:CPP14Parser.CaptureContext): + pass + + + # Enter a parse tree produced by CPP14Parser#simpleCapture. + def enterSimpleCapture(self, ctx:CPP14Parser.SimpleCaptureContext): + pass + + # Exit a parse tree produced by CPP14Parser#simpleCapture. + def exitSimpleCapture(self, ctx:CPP14Parser.SimpleCaptureContext): + pass + + + # Enter a parse tree produced by CPP14Parser#initcapture. + def enterInitcapture(self, ctx:CPP14Parser.InitcaptureContext): + pass + + # Exit a parse tree produced by CPP14Parser#initcapture. + def exitInitcapture(self, ctx:CPP14Parser.InitcaptureContext): + pass + + + # Enter a parse tree produced by CPP14Parser#lambdaDeclarator. + def enterLambdaDeclarator(self, ctx:CPP14Parser.LambdaDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#lambdaDeclarator. + def exitLambdaDeclarator(self, ctx:CPP14Parser.LambdaDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#postfixExpression. + def enterPostfixExpression(self, ctx:CPP14Parser.PostfixExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#postfixExpression. + def exitPostfixExpression(self, ctx:CPP14Parser.PostfixExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#typeIdOfTheTypeId. + def enterTypeIdOfTheTypeId(self, ctx:CPP14Parser.TypeIdOfTheTypeIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#typeIdOfTheTypeId. + def exitTypeIdOfTheTypeId(self, ctx:CPP14Parser.TypeIdOfTheTypeIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#expressionList. + def enterExpressionList(self, ctx:CPP14Parser.ExpressionListContext): + pass + + # Exit a parse tree produced by CPP14Parser#expressionList. + def exitExpressionList(self, ctx:CPP14Parser.ExpressionListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#pseudoDestructorName. + def enterPseudoDestructorName(self, ctx:CPP14Parser.PseudoDestructorNameContext): + pass + + # Exit a parse tree produced by CPP14Parser#pseudoDestructorName. + def exitPseudoDestructorName(self, ctx:CPP14Parser.PseudoDestructorNameContext): + pass + + + # Enter a parse tree produced by CPP14Parser#unaryExpression. + def enterUnaryExpression(self, ctx:CPP14Parser.UnaryExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#unaryExpression. + def exitUnaryExpression(self, ctx:CPP14Parser.UnaryExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#unaryOperator. + def enterUnaryOperator(self, ctx:CPP14Parser.UnaryOperatorContext): + pass + + # Exit a parse tree produced by CPP14Parser#unaryOperator. + def exitUnaryOperator(self, ctx:CPP14Parser.UnaryOperatorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#newExpression_. + def enterNewExpression_(self, ctx:CPP14Parser.NewExpression_Context): + pass + + # Exit a parse tree produced by CPP14Parser#newExpression_. + def exitNewExpression_(self, ctx:CPP14Parser.NewExpression_Context): + pass + + + # Enter a parse tree produced by CPP14Parser#newPlacement. + def enterNewPlacement(self, ctx:CPP14Parser.NewPlacementContext): + pass + + # Exit a parse tree produced by CPP14Parser#newPlacement. + def exitNewPlacement(self, ctx:CPP14Parser.NewPlacementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#newTypeId. + def enterNewTypeId(self, ctx:CPP14Parser.NewTypeIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#newTypeId. + def exitNewTypeId(self, ctx:CPP14Parser.NewTypeIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#newDeclarator_. + def enterNewDeclarator_(self, ctx:CPP14Parser.NewDeclarator_Context): + pass + + # Exit a parse tree produced by CPP14Parser#newDeclarator_. + def exitNewDeclarator_(self, ctx:CPP14Parser.NewDeclarator_Context): + pass + + + # Enter a parse tree produced by CPP14Parser#noPointerNewDeclarator. + def enterNoPointerNewDeclarator(self, ctx:CPP14Parser.NoPointerNewDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#noPointerNewDeclarator. + def exitNoPointerNewDeclarator(self, ctx:CPP14Parser.NoPointerNewDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#newInitializer_. + def enterNewInitializer_(self, ctx:CPP14Parser.NewInitializer_Context): + pass + + # Exit a parse tree produced by CPP14Parser#newInitializer_. + def exitNewInitializer_(self, ctx:CPP14Parser.NewInitializer_Context): + pass + + + # Enter a parse tree produced by CPP14Parser#deleteExpression. + def enterDeleteExpression(self, ctx:CPP14Parser.DeleteExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#deleteExpression. + def exitDeleteExpression(self, ctx:CPP14Parser.DeleteExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#noExceptExpression. + def enterNoExceptExpression(self, ctx:CPP14Parser.NoExceptExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#noExceptExpression. + def exitNoExceptExpression(self, ctx:CPP14Parser.NoExceptExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#castExpression. + def enterCastExpression(self, ctx:CPP14Parser.CastExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#castExpression. + def exitCastExpression(self, ctx:CPP14Parser.CastExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#pointerMemberExpression. + def enterPointerMemberExpression(self, ctx:CPP14Parser.PointerMemberExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#pointerMemberExpression. + def exitPointerMemberExpression(self, ctx:CPP14Parser.PointerMemberExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#multiplicativeExpression. + def enterMultiplicativeExpression(self, ctx:CPP14Parser.MultiplicativeExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#multiplicativeExpression. + def exitMultiplicativeExpression(self, ctx:CPP14Parser.MultiplicativeExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#additiveExpression. + def enterAdditiveExpression(self, ctx:CPP14Parser.AdditiveExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#additiveExpression. + def exitAdditiveExpression(self, ctx:CPP14Parser.AdditiveExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#shiftExpression. + def enterShiftExpression(self, ctx:CPP14Parser.ShiftExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#shiftExpression. + def exitShiftExpression(self, ctx:CPP14Parser.ShiftExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#shiftOperator. + def enterShiftOperator(self, ctx:CPP14Parser.ShiftOperatorContext): + pass + + # Exit a parse tree produced by CPP14Parser#shiftOperator. + def exitShiftOperator(self, ctx:CPP14Parser.ShiftOperatorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#relationalExpression. + def enterRelationalExpression(self, ctx:CPP14Parser.RelationalExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#relationalExpression. + def exitRelationalExpression(self, ctx:CPP14Parser.RelationalExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#equalityExpression. + def enterEqualityExpression(self, ctx:CPP14Parser.EqualityExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#equalityExpression. + def exitEqualityExpression(self, ctx:CPP14Parser.EqualityExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#andExpression. + def enterAndExpression(self, ctx:CPP14Parser.AndExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#andExpression. + def exitAndExpression(self, ctx:CPP14Parser.AndExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#exclusiveOrExpression. + def enterExclusiveOrExpression(self, ctx:CPP14Parser.ExclusiveOrExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#exclusiveOrExpression. + def exitExclusiveOrExpression(self, ctx:CPP14Parser.ExclusiveOrExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#inclusiveOrExpression. + def enterInclusiveOrExpression(self, ctx:CPP14Parser.InclusiveOrExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#inclusiveOrExpression. + def exitInclusiveOrExpression(self, ctx:CPP14Parser.InclusiveOrExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#logicalAndExpression. + def enterLogicalAndExpression(self, ctx:CPP14Parser.LogicalAndExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#logicalAndExpression. + def exitLogicalAndExpression(self, ctx:CPP14Parser.LogicalAndExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#logicalOrExpression. + def enterLogicalOrExpression(self, ctx:CPP14Parser.LogicalOrExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#logicalOrExpression. + def exitLogicalOrExpression(self, ctx:CPP14Parser.LogicalOrExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#conditionalExpression. + def enterConditionalExpression(self, ctx:CPP14Parser.ConditionalExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#conditionalExpression. + def exitConditionalExpression(self, ctx:CPP14Parser.ConditionalExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#assignmentExpression. + def enterAssignmentExpression(self, ctx:CPP14Parser.AssignmentExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#assignmentExpression. + def exitAssignmentExpression(self, ctx:CPP14Parser.AssignmentExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#assignmentOperator. + def enterAssignmentOperator(self, ctx:CPP14Parser.AssignmentOperatorContext): + pass + + # Exit a parse tree produced by CPP14Parser#assignmentOperator. + def exitAssignmentOperator(self, ctx:CPP14Parser.AssignmentOperatorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#expression. + def enterExpression(self, ctx:CPP14Parser.ExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#expression. + def exitExpression(self, ctx:CPP14Parser.ExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#constantExpression. + def enterConstantExpression(self, ctx:CPP14Parser.ConstantExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#constantExpression. + def exitConstantExpression(self, ctx:CPP14Parser.ConstantExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#statement. + def enterStatement(self, ctx:CPP14Parser.StatementContext): + pass + + # Exit a parse tree produced by CPP14Parser#statement. + def exitStatement(self, ctx:CPP14Parser.StatementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#labeledStatement. + def enterLabeledStatement(self, ctx:CPP14Parser.LabeledStatementContext): + pass + + # Exit a parse tree produced by CPP14Parser#labeledStatement. + def exitLabeledStatement(self, ctx:CPP14Parser.LabeledStatementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#expressionStatement. + def enterExpressionStatement(self, ctx:CPP14Parser.ExpressionStatementContext): + pass + + # Exit a parse tree produced by CPP14Parser#expressionStatement. + def exitExpressionStatement(self, ctx:CPP14Parser.ExpressionStatementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#compoundStatement. + def enterCompoundStatement(self, ctx:CPP14Parser.CompoundStatementContext): + pass + + # Exit a parse tree produced by CPP14Parser#compoundStatement. + def exitCompoundStatement(self, ctx:CPP14Parser.CompoundStatementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#statementSeq. + def enterStatementSeq(self, ctx:CPP14Parser.StatementSeqContext): + pass + + # Exit a parse tree produced by CPP14Parser#statementSeq. + def exitStatementSeq(self, ctx:CPP14Parser.StatementSeqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#selectionStatement. + def enterSelectionStatement(self, ctx:CPP14Parser.SelectionStatementContext): + pass + + # Exit a parse tree produced by CPP14Parser#selectionStatement. + def exitSelectionStatement(self, ctx:CPP14Parser.SelectionStatementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#condition. + def enterCondition(self, ctx:CPP14Parser.ConditionContext): + pass + + # Exit a parse tree produced by CPP14Parser#condition. + def exitCondition(self, ctx:CPP14Parser.ConditionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#iterationStatement. + def enterIterationStatement(self, ctx:CPP14Parser.IterationStatementContext): + pass + + # Exit a parse tree produced by CPP14Parser#iterationStatement. + def exitIterationStatement(self, ctx:CPP14Parser.IterationStatementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#forInitStatement. + def enterForInitStatement(self, ctx:CPP14Parser.ForInitStatementContext): + pass + + # Exit a parse tree produced by CPP14Parser#forInitStatement. + def exitForInitStatement(self, ctx:CPP14Parser.ForInitStatementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#forRangeDeclaration. + def enterForRangeDeclaration(self, ctx:CPP14Parser.ForRangeDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#forRangeDeclaration. + def exitForRangeDeclaration(self, ctx:CPP14Parser.ForRangeDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#forRangeInitializer. + def enterForRangeInitializer(self, ctx:CPP14Parser.ForRangeInitializerContext): + pass + + # Exit a parse tree produced by CPP14Parser#forRangeInitializer. + def exitForRangeInitializer(self, ctx:CPP14Parser.ForRangeInitializerContext): + pass + + + # Enter a parse tree produced by CPP14Parser#jumpStatement. + def enterJumpStatement(self, ctx:CPP14Parser.JumpStatementContext): + pass + + # Exit a parse tree produced by CPP14Parser#jumpStatement. + def exitJumpStatement(self, ctx:CPP14Parser.JumpStatementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#declarationStatement. + def enterDeclarationStatement(self, ctx:CPP14Parser.DeclarationStatementContext): + pass + + # Exit a parse tree produced by CPP14Parser#declarationStatement. + def exitDeclarationStatement(self, ctx:CPP14Parser.DeclarationStatementContext): + pass + + + # Enter a parse tree produced by CPP14Parser#declarationseq. + def enterDeclarationseq(self, ctx:CPP14Parser.DeclarationseqContext): + pass + + # Exit a parse tree produced by CPP14Parser#declarationseq. + def exitDeclarationseq(self, ctx:CPP14Parser.DeclarationseqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#declaration. + def enterDeclaration(self, ctx:CPP14Parser.DeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#declaration. + def exitDeclaration(self, ctx:CPP14Parser.DeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#blockDeclaration. + def enterBlockDeclaration(self, ctx:CPP14Parser.BlockDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#blockDeclaration. + def exitBlockDeclaration(self, ctx:CPP14Parser.BlockDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#aliasDeclaration. + def enterAliasDeclaration(self, ctx:CPP14Parser.AliasDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#aliasDeclaration. + def exitAliasDeclaration(self, ctx:CPP14Parser.AliasDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#simpleDeclaration. + def enterSimpleDeclaration(self, ctx:CPP14Parser.SimpleDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#simpleDeclaration. + def exitSimpleDeclaration(self, ctx:CPP14Parser.SimpleDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#staticAssertDeclaration. + def enterStaticAssertDeclaration(self, ctx:CPP14Parser.StaticAssertDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#staticAssertDeclaration. + def exitStaticAssertDeclaration(self, ctx:CPP14Parser.StaticAssertDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#emptyDeclaration_. + def enterEmptyDeclaration_(self, ctx:CPP14Parser.EmptyDeclaration_Context): + pass + + # Exit a parse tree produced by CPP14Parser#emptyDeclaration_. + def exitEmptyDeclaration_(self, ctx:CPP14Parser.EmptyDeclaration_Context): + pass + + + # Enter a parse tree produced by CPP14Parser#attributeDeclaration. + def enterAttributeDeclaration(self, ctx:CPP14Parser.AttributeDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#attributeDeclaration. + def exitAttributeDeclaration(self, ctx:CPP14Parser.AttributeDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#declSpecifier. + def enterDeclSpecifier(self, ctx:CPP14Parser.DeclSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#declSpecifier. + def exitDeclSpecifier(self, ctx:CPP14Parser.DeclSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#declSpecifierSeq. + def enterDeclSpecifierSeq(self, ctx:CPP14Parser.DeclSpecifierSeqContext): + pass + + # Exit a parse tree produced by CPP14Parser#declSpecifierSeq. + def exitDeclSpecifierSeq(self, ctx:CPP14Parser.DeclSpecifierSeqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#storageClassSpecifier. + def enterStorageClassSpecifier(self, ctx:CPP14Parser.StorageClassSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#storageClassSpecifier. + def exitStorageClassSpecifier(self, ctx:CPP14Parser.StorageClassSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#functionSpecifier. + def enterFunctionSpecifier(self, ctx:CPP14Parser.FunctionSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#functionSpecifier. + def exitFunctionSpecifier(self, ctx:CPP14Parser.FunctionSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#typedefName. + def enterTypedefName(self, ctx:CPP14Parser.TypedefNameContext): + pass + + # Exit a parse tree produced by CPP14Parser#typedefName. + def exitTypedefName(self, ctx:CPP14Parser.TypedefNameContext): + pass + + + # Enter a parse tree produced by CPP14Parser#typeSpecifier. + def enterTypeSpecifier(self, ctx:CPP14Parser.TypeSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#typeSpecifier. + def exitTypeSpecifier(self, ctx:CPP14Parser.TypeSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#trailingTypeSpecifier. + def enterTrailingTypeSpecifier(self, ctx:CPP14Parser.TrailingTypeSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#trailingTypeSpecifier. + def exitTrailingTypeSpecifier(self, ctx:CPP14Parser.TrailingTypeSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#typeSpecifierSeq. + def enterTypeSpecifierSeq(self, ctx:CPP14Parser.TypeSpecifierSeqContext): + pass + + # Exit a parse tree produced by CPP14Parser#typeSpecifierSeq. + def exitTypeSpecifierSeq(self, ctx:CPP14Parser.TypeSpecifierSeqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#trailingTypeSpecifierSeq. + def enterTrailingTypeSpecifierSeq(self, ctx:CPP14Parser.TrailingTypeSpecifierSeqContext): + pass + + # Exit a parse tree produced by CPP14Parser#trailingTypeSpecifierSeq. + def exitTrailingTypeSpecifierSeq(self, ctx:CPP14Parser.TrailingTypeSpecifierSeqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#simpleTypeLengthModifier. + def enterSimpleTypeLengthModifier(self, ctx:CPP14Parser.SimpleTypeLengthModifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#simpleTypeLengthModifier. + def exitSimpleTypeLengthModifier(self, ctx:CPP14Parser.SimpleTypeLengthModifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#simpleTypeSignednessModifier. + def enterSimpleTypeSignednessModifier(self, ctx:CPP14Parser.SimpleTypeSignednessModifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#simpleTypeSignednessModifier. + def exitSimpleTypeSignednessModifier(self, ctx:CPP14Parser.SimpleTypeSignednessModifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#simpleTypeSpecifier. + def enterSimpleTypeSpecifier(self, ctx:CPP14Parser.SimpleTypeSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#simpleTypeSpecifier. + def exitSimpleTypeSpecifier(self, ctx:CPP14Parser.SimpleTypeSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#theTypeName. + def enterTheTypeName(self, ctx:CPP14Parser.TheTypeNameContext): + pass + + # Exit a parse tree produced by CPP14Parser#theTypeName. + def exitTheTypeName(self, ctx:CPP14Parser.TheTypeNameContext): + pass + + + # Enter a parse tree produced by CPP14Parser#decltypeSpecifier. + def enterDecltypeSpecifier(self, ctx:CPP14Parser.DecltypeSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#decltypeSpecifier. + def exitDecltypeSpecifier(self, ctx:CPP14Parser.DecltypeSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#elaboratedTypeSpecifier. + def enterElaboratedTypeSpecifier(self, ctx:CPP14Parser.ElaboratedTypeSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#elaboratedTypeSpecifier. + def exitElaboratedTypeSpecifier(self, ctx:CPP14Parser.ElaboratedTypeSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#enumName. + def enterEnumName(self, ctx:CPP14Parser.EnumNameContext): + pass + + # Exit a parse tree produced by CPP14Parser#enumName. + def exitEnumName(self, ctx:CPP14Parser.EnumNameContext): + pass + + + # Enter a parse tree produced by CPP14Parser#enumSpecifier. + def enterEnumSpecifier(self, ctx:CPP14Parser.EnumSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#enumSpecifier. + def exitEnumSpecifier(self, ctx:CPP14Parser.EnumSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#enumHead. + def enterEnumHead(self, ctx:CPP14Parser.EnumHeadContext): + pass + + # Exit a parse tree produced by CPP14Parser#enumHead. + def exitEnumHead(self, ctx:CPP14Parser.EnumHeadContext): + pass + + + # Enter a parse tree produced by CPP14Parser#opaqueEnumDeclaration. + def enterOpaqueEnumDeclaration(self, ctx:CPP14Parser.OpaqueEnumDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#opaqueEnumDeclaration. + def exitOpaqueEnumDeclaration(self, ctx:CPP14Parser.OpaqueEnumDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#enumkey. + def enterEnumkey(self, ctx:CPP14Parser.EnumkeyContext): + pass + + # Exit a parse tree produced by CPP14Parser#enumkey. + def exitEnumkey(self, ctx:CPP14Parser.EnumkeyContext): + pass + + + # Enter a parse tree produced by CPP14Parser#enumbase. + def enterEnumbase(self, ctx:CPP14Parser.EnumbaseContext): + pass + + # Exit a parse tree produced by CPP14Parser#enumbase. + def exitEnumbase(self, ctx:CPP14Parser.EnumbaseContext): + pass + + + # Enter a parse tree produced by CPP14Parser#enumeratorList. + def enterEnumeratorList(self, ctx:CPP14Parser.EnumeratorListContext): + pass + + # Exit a parse tree produced by CPP14Parser#enumeratorList. + def exitEnumeratorList(self, ctx:CPP14Parser.EnumeratorListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#enumeratorDefinition. + def enterEnumeratorDefinition(self, ctx:CPP14Parser.EnumeratorDefinitionContext): + pass + + # Exit a parse tree produced by CPP14Parser#enumeratorDefinition. + def exitEnumeratorDefinition(self, ctx:CPP14Parser.EnumeratorDefinitionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#enumerator. + def enterEnumerator(self, ctx:CPP14Parser.EnumeratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#enumerator. + def exitEnumerator(self, ctx:CPP14Parser.EnumeratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#namespaceName. + def enterNamespaceName(self, ctx:CPP14Parser.NamespaceNameContext): + pass + + # Exit a parse tree produced by CPP14Parser#namespaceName. + def exitNamespaceName(self, ctx:CPP14Parser.NamespaceNameContext): + pass + + + # Enter a parse tree produced by CPP14Parser#originalNamespaceName. + def enterOriginalNamespaceName(self, ctx:CPP14Parser.OriginalNamespaceNameContext): + pass + + # Exit a parse tree produced by CPP14Parser#originalNamespaceName. + def exitOriginalNamespaceName(self, ctx:CPP14Parser.OriginalNamespaceNameContext): + pass + + + # Enter a parse tree produced by CPP14Parser#namespaceDefinition. + def enterNamespaceDefinition(self, ctx:CPP14Parser.NamespaceDefinitionContext): + pass + + # Exit a parse tree produced by CPP14Parser#namespaceDefinition. + def exitNamespaceDefinition(self, ctx:CPP14Parser.NamespaceDefinitionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#namespaceAlias. + def enterNamespaceAlias(self, ctx:CPP14Parser.NamespaceAliasContext): + pass + + # Exit a parse tree produced by CPP14Parser#namespaceAlias. + def exitNamespaceAlias(self, ctx:CPP14Parser.NamespaceAliasContext): + pass + + + # Enter a parse tree produced by CPP14Parser#namespaceAliasDefinition. + def enterNamespaceAliasDefinition(self, ctx:CPP14Parser.NamespaceAliasDefinitionContext): + pass + + # Exit a parse tree produced by CPP14Parser#namespaceAliasDefinition. + def exitNamespaceAliasDefinition(self, ctx:CPP14Parser.NamespaceAliasDefinitionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#qualifiednamespacespecifier. + def enterQualifiednamespacespecifier(self, ctx:CPP14Parser.QualifiednamespacespecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#qualifiednamespacespecifier. + def exitQualifiednamespacespecifier(self, ctx:CPP14Parser.QualifiednamespacespecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#usingDeclaration. + def enterUsingDeclaration(self, ctx:CPP14Parser.UsingDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#usingDeclaration. + def exitUsingDeclaration(self, ctx:CPP14Parser.UsingDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#usingDirective. + def enterUsingDirective(self, ctx:CPP14Parser.UsingDirectiveContext): + pass + + # Exit a parse tree produced by CPP14Parser#usingDirective. + def exitUsingDirective(self, ctx:CPP14Parser.UsingDirectiveContext): + pass + + + # Enter a parse tree produced by CPP14Parser#asmDefinition. + def enterAsmDefinition(self, ctx:CPP14Parser.AsmDefinitionContext): + pass + + # Exit a parse tree produced by CPP14Parser#asmDefinition. + def exitAsmDefinition(self, ctx:CPP14Parser.AsmDefinitionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#linkageSpecification. + def enterLinkageSpecification(self, ctx:CPP14Parser.LinkageSpecificationContext): + pass + + # Exit a parse tree produced by CPP14Parser#linkageSpecification. + def exitLinkageSpecification(self, ctx:CPP14Parser.LinkageSpecificationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#attributeSpecifierSeq. + def enterAttributeSpecifierSeq(self, ctx:CPP14Parser.AttributeSpecifierSeqContext): + pass + + # Exit a parse tree produced by CPP14Parser#attributeSpecifierSeq. + def exitAttributeSpecifierSeq(self, ctx:CPP14Parser.AttributeSpecifierSeqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#attributeSpecifier. + def enterAttributeSpecifier(self, ctx:CPP14Parser.AttributeSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#attributeSpecifier. + def exitAttributeSpecifier(self, ctx:CPP14Parser.AttributeSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#alignmentspecifier. + def enterAlignmentspecifier(self, ctx:CPP14Parser.AlignmentspecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#alignmentspecifier. + def exitAlignmentspecifier(self, ctx:CPP14Parser.AlignmentspecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#attributeList. + def enterAttributeList(self, ctx:CPP14Parser.AttributeListContext): + pass + + # Exit a parse tree produced by CPP14Parser#attributeList. + def exitAttributeList(self, ctx:CPP14Parser.AttributeListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#attribute. + def enterAttribute(self, ctx:CPP14Parser.AttributeContext): + pass + + # Exit a parse tree produced by CPP14Parser#attribute. + def exitAttribute(self, ctx:CPP14Parser.AttributeContext): + pass + + + # Enter a parse tree produced by CPP14Parser#attributeNamespace. + def enterAttributeNamespace(self, ctx:CPP14Parser.AttributeNamespaceContext): + pass + + # Exit a parse tree produced by CPP14Parser#attributeNamespace. + def exitAttributeNamespace(self, ctx:CPP14Parser.AttributeNamespaceContext): + pass + + + # Enter a parse tree produced by CPP14Parser#attributeArgumentClause. + def enterAttributeArgumentClause(self, ctx:CPP14Parser.AttributeArgumentClauseContext): + pass + + # Exit a parse tree produced by CPP14Parser#attributeArgumentClause. + def exitAttributeArgumentClause(self, ctx:CPP14Parser.AttributeArgumentClauseContext): + pass + + + # Enter a parse tree produced by CPP14Parser#balancedTokenSeq. + def enterBalancedTokenSeq(self, ctx:CPP14Parser.BalancedTokenSeqContext): + pass + + # Exit a parse tree produced by CPP14Parser#balancedTokenSeq. + def exitBalancedTokenSeq(self, ctx:CPP14Parser.BalancedTokenSeqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#balancedtoken. + def enterBalancedtoken(self, ctx:CPP14Parser.BalancedtokenContext): + pass + + # Exit a parse tree produced by CPP14Parser#balancedtoken. + def exitBalancedtoken(self, ctx:CPP14Parser.BalancedtokenContext): + pass + + + # Enter a parse tree produced by CPP14Parser#initDeclaratorList. + def enterInitDeclaratorList(self, ctx:CPP14Parser.InitDeclaratorListContext): + pass + + # Exit a parse tree produced by CPP14Parser#initDeclaratorList. + def exitInitDeclaratorList(self, ctx:CPP14Parser.InitDeclaratorListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#initDeclarator. + def enterInitDeclarator(self, ctx:CPP14Parser.InitDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#initDeclarator. + def exitInitDeclarator(self, ctx:CPP14Parser.InitDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#declarator. + def enterDeclarator(self, ctx:CPP14Parser.DeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#declarator. + def exitDeclarator(self, ctx:CPP14Parser.DeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#pointerDeclarator. + def enterPointerDeclarator(self, ctx:CPP14Parser.PointerDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#pointerDeclarator. + def exitPointerDeclarator(self, ctx:CPP14Parser.PointerDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#noPointerDeclarator. + def enterNoPointerDeclarator(self, ctx:CPP14Parser.NoPointerDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#noPointerDeclarator. + def exitNoPointerDeclarator(self, ctx:CPP14Parser.NoPointerDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#parametersAndQualifiers. + def enterParametersAndQualifiers(self, ctx:CPP14Parser.ParametersAndQualifiersContext): + pass + + # Exit a parse tree produced by CPP14Parser#parametersAndQualifiers. + def exitParametersAndQualifiers(self, ctx:CPP14Parser.ParametersAndQualifiersContext): + pass + + + # Enter a parse tree produced by CPP14Parser#trailingReturnType. + def enterTrailingReturnType(self, ctx:CPP14Parser.TrailingReturnTypeContext): + pass + + # Exit a parse tree produced by CPP14Parser#trailingReturnType. + def exitTrailingReturnType(self, ctx:CPP14Parser.TrailingReturnTypeContext): + pass + + + # Enter a parse tree produced by CPP14Parser#pointerOperator. + def enterPointerOperator(self, ctx:CPP14Parser.PointerOperatorContext): + pass + + # Exit a parse tree produced by CPP14Parser#pointerOperator. + def exitPointerOperator(self, ctx:CPP14Parser.PointerOperatorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#cvqualifierseq. + def enterCvqualifierseq(self, ctx:CPP14Parser.CvqualifierseqContext): + pass + + # Exit a parse tree produced by CPP14Parser#cvqualifierseq. + def exitCvqualifierseq(self, ctx:CPP14Parser.CvqualifierseqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#cvQualifier. + def enterCvQualifier(self, ctx:CPP14Parser.CvQualifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#cvQualifier. + def exitCvQualifier(self, ctx:CPP14Parser.CvQualifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#refqualifier. + def enterRefqualifier(self, ctx:CPP14Parser.RefqualifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#refqualifier. + def exitRefqualifier(self, ctx:CPP14Parser.RefqualifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#declaratorid. + def enterDeclaratorid(self, ctx:CPP14Parser.DeclaratoridContext): + pass + + # Exit a parse tree produced by CPP14Parser#declaratorid. + def exitDeclaratorid(self, ctx:CPP14Parser.DeclaratoridContext): + pass + + + # Enter a parse tree produced by CPP14Parser#theTypeId. + def enterTheTypeId(self, ctx:CPP14Parser.TheTypeIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#theTypeId. + def exitTheTypeId(self, ctx:CPP14Parser.TheTypeIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#abstractDeclarator. + def enterAbstractDeclarator(self, ctx:CPP14Parser.AbstractDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#abstractDeclarator. + def exitAbstractDeclarator(self, ctx:CPP14Parser.AbstractDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#pointerAbstractDeclarator. + def enterPointerAbstractDeclarator(self, ctx:CPP14Parser.PointerAbstractDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#pointerAbstractDeclarator. + def exitPointerAbstractDeclarator(self, ctx:CPP14Parser.PointerAbstractDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#noPointerAbstractDeclarator. + def enterNoPointerAbstractDeclarator(self, ctx:CPP14Parser.NoPointerAbstractDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#noPointerAbstractDeclarator. + def exitNoPointerAbstractDeclarator(self, ctx:CPP14Parser.NoPointerAbstractDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#abstractPackDeclarator. + def enterAbstractPackDeclarator(self, ctx:CPP14Parser.AbstractPackDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#abstractPackDeclarator. + def exitAbstractPackDeclarator(self, ctx:CPP14Parser.AbstractPackDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#noPointerAbstractPackDeclarator. + def enterNoPointerAbstractPackDeclarator(self, ctx:CPP14Parser.NoPointerAbstractPackDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#noPointerAbstractPackDeclarator. + def exitNoPointerAbstractPackDeclarator(self, ctx:CPP14Parser.NoPointerAbstractPackDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#parameterDeclarationClause. + def enterParameterDeclarationClause(self, ctx:CPP14Parser.ParameterDeclarationClauseContext): + pass + + # Exit a parse tree produced by CPP14Parser#parameterDeclarationClause. + def exitParameterDeclarationClause(self, ctx:CPP14Parser.ParameterDeclarationClauseContext): + pass + + + # Enter a parse tree produced by CPP14Parser#parameterDeclarationList. + def enterParameterDeclarationList(self, ctx:CPP14Parser.ParameterDeclarationListContext): + pass + + # Exit a parse tree produced by CPP14Parser#parameterDeclarationList. + def exitParameterDeclarationList(self, ctx:CPP14Parser.ParameterDeclarationListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#parameterDeclaration. + def enterParameterDeclaration(self, ctx:CPP14Parser.ParameterDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#parameterDeclaration. + def exitParameterDeclaration(self, ctx:CPP14Parser.ParameterDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#functionDefinition. + def enterFunctionDefinition(self, ctx:CPP14Parser.FunctionDefinitionContext): + pass + + # Exit a parse tree produced by CPP14Parser#functionDefinition. + def exitFunctionDefinition(self, ctx:CPP14Parser.FunctionDefinitionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#functionBody. + def enterFunctionBody(self, ctx:CPP14Parser.FunctionBodyContext): + pass + + # Exit a parse tree produced by CPP14Parser#functionBody. + def exitFunctionBody(self, ctx:CPP14Parser.FunctionBodyContext): + pass + + + # Enter a parse tree produced by CPP14Parser#initializer. + def enterInitializer(self, ctx:CPP14Parser.InitializerContext): + pass + + # Exit a parse tree produced by CPP14Parser#initializer. + def exitInitializer(self, ctx:CPP14Parser.InitializerContext): + pass + + + # Enter a parse tree produced by CPP14Parser#braceOrEqualInitializer. + def enterBraceOrEqualInitializer(self, ctx:CPP14Parser.BraceOrEqualInitializerContext): + pass + + # Exit a parse tree produced by CPP14Parser#braceOrEqualInitializer. + def exitBraceOrEqualInitializer(self, ctx:CPP14Parser.BraceOrEqualInitializerContext): + pass + + + # Enter a parse tree produced by CPP14Parser#initializerClause. + def enterInitializerClause(self, ctx:CPP14Parser.InitializerClauseContext): + pass + + # Exit a parse tree produced by CPP14Parser#initializerClause. + def exitInitializerClause(self, ctx:CPP14Parser.InitializerClauseContext): + pass + + + # Enter a parse tree produced by CPP14Parser#initializerList. + def enterInitializerList(self, ctx:CPP14Parser.InitializerListContext): + pass + + # Exit a parse tree produced by CPP14Parser#initializerList. + def exitInitializerList(self, ctx:CPP14Parser.InitializerListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#bracedInitList. + def enterBracedInitList(self, ctx:CPP14Parser.BracedInitListContext): + pass + + # Exit a parse tree produced by CPP14Parser#bracedInitList. + def exitBracedInitList(self, ctx:CPP14Parser.BracedInitListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#className. + def enterClassName(self, ctx:CPP14Parser.ClassNameContext): + pass + + # Exit a parse tree produced by CPP14Parser#className. + def exitClassName(self, ctx:CPP14Parser.ClassNameContext): + pass + + + # Enter a parse tree produced by CPP14Parser#classSpecifier. + def enterClassSpecifier(self, ctx:CPP14Parser.ClassSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#classSpecifier. + def exitClassSpecifier(self, ctx:CPP14Parser.ClassSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#classHead. + def enterClassHead(self, ctx:CPP14Parser.ClassHeadContext): + pass + + # Exit a parse tree produced by CPP14Parser#classHead. + def exitClassHead(self, ctx:CPP14Parser.ClassHeadContext): + pass + + + # Enter a parse tree produced by CPP14Parser#classHeadName. + def enterClassHeadName(self, ctx:CPP14Parser.ClassHeadNameContext): + pass + + # Exit a parse tree produced by CPP14Parser#classHeadName. + def exitClassHeadName(self, ctx:CPP14Parser.ClassHeadNameContext): + pass + + + # Enter a parse tree produced by CPP14Parser#classVirtSpecifier. + def enterClassVirtSpecifier(self, ctx:CPP14Parser.ClassVirtSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#classVirtSpecifier. + def exitClassVirtSpecifier(self, ctx:CPP14Parser.ClassVirtSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#classKey. + def enterClassKey(self, ctx:CPP14Parser.ClassKeyContext): + pass + + # Exit a parse tree produced by CPP14Parser#classKey. + def exitClassKey(self, ctx:CPP14Parser.ClassKeyContext): + pass + + + # Enter a parse tree produced by CPP14Parser#memberSpecification. + def enterMemberSpecification(self, ctx:CPP14Parser.MemberSpecificationContext): + pass + + # Exit a parse tree produced by CPP14Parser#memberSpecification. + def exitMemberSpecification(self, ctx:CPP14Parser.MemberSpecificationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#memberdeclaration. + def enterMemberdeclaration(self, ctx:CPP14Parser.MemberdeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#memberdeclaration. + def exitMemberdeclaration(self, ctx:CPP14Parser.MemberdeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#memberDeclaratorList. + def enterMemberDeclaratorList(self, ctx:CPP14Parser.MemberDeclaratorListContext): + pass + + # Exit a parse tree produced by CPP14Parser#memberDeclaratorList. + def exitMemberDeclaratorList(self, ctx:CPP14Parser.MemberDeclaratorListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#memberDeclarator. + def enterMemberDeclarator(self, ctx:CPP14Parser.MemberDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#memberDeclarator. + def exitMemberDeclarator(self, ctx:CPP14Parser.MemberDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#virtualSpecifierSeq. + def enterVirtualSpecifierSeq(self, ctx:CPP14Parser.VirtualSpecifierSeqContext): + pass + + # Exit a parse tree produced by CPP14Parser#virtualSpecifierSeq. + def exitVirtualSpecifierSeq(self, ctx:CPP14Parser.VirtualSpecifierSeqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#virtualSpecifier. + def enterVirtualSpecifier(self, ctx:CPP14Parser.VirtualSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#virtualSpecifier. + def exitVirtualSpecifier(self, ctx:CPP14Parser.VirtualSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#pureSpecifier. + def enterPureSpecifier(self, ctx:CPP14Parser.PureSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#pureSpecifier. + def exitPureSpecifier(self, ctx:CPP14Parser.PureSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#baseClause. + def enterBaseClause(self, ctx:CPP14Parser.BaseClauseContext): + pass + + # Exit a parse tree produced by CPP14Parser#baseClause. + def exitBaseClause(self, ctx:CPP14Parser.BaseClauseContext): + pass + + + # Enter a parse tree produced by CPP14Parser#baseSpecifierList. + def enterBaseSpecifierList(self, ctx:CPP14Parser.BaseSpecifierListContext): + pass + + # Exit a parse tree produced by CPP14Parser#baseSpecifierList. + def exitBaseSpecifierList(self, ctx:CPP14Parser.BaseSpecifierListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#baseSpecifier. + def enterBaseSpecifier(self, ctx:CPP14Parser.BaseSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#baseSpecifier. + def exitBaseSpecifier(self, ctx:CPP14Parser.BaseSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#classOrDeclType. + def enterClassOrDeclType(self, ctx:CPP14Parser.ClassOrDeclTypeContext): + pass + + # Exit a parse tree produced by CPP14Parser#classOrDeclType. + def exitClassOrDeclType(self, ctx:CPP14Parser.ClassOrDeclTypeContext): + pass + + + # Enter a parse tree produced by CPP14Parser#baseTypeSpecifier. + def enterBaseTypeSpecifier(self, ctx:CPP14Parser.BaseTypeSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#baseTypeSpecifier. + def exitBaseTypeSpecifier(self, ctx:CPP14Parser.BaseTypeSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#accessSpecifier. + def enterAccessSpecifier(self, ctx:CPP14Parser.AccessSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#accessSpecifier. + def exitAccessSpecifier(self, ctx:CPP14Parser.AccessSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#conversionFunctionId. + def enterConversionFunctionId(self, ctx:CPP14Parser.ConversionFunctionIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#conversionFunctionId. + def exitConversionFunctionId(self, ctx:CPP14Parser.ConversionFunctionIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#conversionTypeId. + def enterConversionTypeId(self, ctx:CPP14Parser.ConversionTypeIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#conversionTypeId. + def exitConversionTypeId(self, ctx:CPP14Parser.ConversionTypeIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#conversionDeclarator. + def enterConversionDeclarator(self, ctx:CPP14Parser.ConversionDeclaratorContext): + pass + + # Exit a parse tree produced by CPP14Parser#conversionDeclarator. + def exitConversionDeclarator(self, ctx:CPP14Parser.ConversionDeclaratorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#constructorInitializer. + def enterConstructorInitializer(self, ctx:CPP14Parser.ConstructorInitializerContext): + pass + + # Exit a parse tree produced by CPP14Parser#constructorInitializer. + def exitConstructorInitializer(self, ctx:CPP14Parser.ConstructorInitializerContext): + pass + + + # Enter a parse tree produced by CPP14Parser#memInitializerList. + def enterMemInitializerList(self, ctx:CPP14Parser.MemInitializerListContext): + pass + + # Exit a parse tree produced by CPP14Parser#memInitializerList. + def exitMemInitializerList(self, ctx:CPP14Parser.MemInitializerListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#memInitializer. + def enterMemInitializer(self, ctx:CPP14Parser.MemInitializerContext): + pass + + # Exit a parse tree produced by CPP14Parser#memInitializer. + def exitMemInitializer(self, ctx:CPP14Parser.MemInitializerContext): + pass + + + # Enter a parse tree produced by CPP14Parser#meminitializerid. + def enterMeminitializerid(self, ctx:CPP14Parser.MeminitializeridContext): + pass + + # Exit a parse tree produced by CPP14Parser#meminitializerid. + def exitMeminitializerid(self, ctx:CPP14Parser.MeminitializeridContext): + pass + + + # Enter a parse tree produced by CPP14Parser#operatorFunctionId. + def enterOperatorFunctionId(self, ctx:CPP14Parser.OperatorFunctionIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#operatorFunctionId. + def exitOperatorFunctionId(self, ctx:CPP14Parser.OperatorFunctionIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#literalOperatorId. + def enterLiteralOperatorId(self, ctx:CPP14Parser.LiteralOperatorIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#literalOperatorId. + def exitLiteralOperatorId(self, ctx:CPP14Parser.LiteralOperatorIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#templateDeclaration. + def enterTemplateDeclaration(self, ctx:CPP14Parser.TemplateDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#templateDeclaration. + def exitTemplateDeclaration(self, ctx:CPP14Parser.TemplateDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#templateparameterList. + def enterTemplateparameterList(self, ctx:CPP14Parser.TemplateparameterListContext): + pass + + # Exit a parse tree produced by CPP14Parser#templateparameterList. + def exitTemplateparameterList(self, ctx:CPP14Parser.TemplateparameterListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#templateParameter. + def enterTemplateParameter(self, ctx:CPP14Parser.TemplateParameterContext): + pass + + # Exit a parse tree produced by CPP14Parser#templateParameter. + def exitTemplateParameter(self, ctx:CPP14Parser.TemplateParameterContext): + pass + + + # Enter a parse tree produced by CPP14Parser#typeParameter. + def enterTypeParameter(self, ctx:CPP14Parser.TypeParameterContext): + pass + + # Exit a parse tree produced by CPP14Parser#typeParameter. + def exitTypeParameter(self, ctx:CPP14Parser.TypeParameterContext): + pass + + + # Enter a parse tree produced by CPP14Parser#simpleTemplateId. + def enterSimpleTemplateId(self, ctx:CPP14Parser.SimpleTemplateIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#simpleTemplateId. + def exitSimpleTemplateId(self, ctx:CPP14Parser.SimpleTemplateIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#templateId. + def enterTemplateId(self, ctx:CPP14Parser.TemplateIdContext): + pass + + # Exit a parse tree produced by CPP14Parser#templateId. + def exitTemplateId(self, ctx:CPP14Parser.TemplateIdContext): + pass + + + # Enter a parse tree produced by CPP14Parser#templateName. + def enterTemplateName(self, ctx:CPP14Parser.TemplateNameContext): + pass + + # Exit a parse tree produced by CPP14Parser#templateName. + def exitTemplateName(self, ctx:CPP14Parser.TemplateNameContext): + pass + + + # Enter a parse tree produced by CPP14Parser#templateArgumentList. + def enterTemplateArgumentList(self, ctx:CPP14Parser.TemplateArgumentListContext): + pass + + # Exit a parse tree produced by CPP14Parser#templateArgumentList. + def exitTemplateArgumentList(self, ctx:CPP14Parser.TemplateArgumentListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#templateArgument. + def enterTemplateArgument(self, ctx:CPP14Parser.TemplateArgumentContext): + pass + + # Exit a parse tree produced by CPP14Parser#templateArgument. + def exitTemplateArgument(self, ctx:CPP14Parser.TemplateArgumentContext): + pass + + + # Enter a parse tree produced by CPP14Parser#typeNameSpecifier. + def enterTypeNameSpecifier(self, ctx:CPP14Parser.TypeNameSpecifierContext): + pass + + # Exit a parse tree produced by CPP14Parser#typeNameSpecifier. + def exitTypeNameSpecifier(self, ctx:CPP14Parser.TypeNameSpecifierContext): + pass + + + # Enter a parse tree produced by CPP14Parser#explicitInstantiation. + def enterExplicitInstantiation(self, ctx:CPP14Parser.ExplicitInstantiationContext): + pass + + # Exit a parse tree produced by CPP14Parser#explicitInstantiation. + def exitExplicitInstantiation(self, ctx:CPP14Parser.ExplicitInstantiationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#explicitSpecialization. + def enterExplicitSpecialization(self, ctx:CPP14Parser.ExplicitSpecializationContext): + pass + + # Exit a parse tree produced by CPP14Parser#explicitSpecialization. + def exitExplicitSpecialization(self, ctx:CPP14Parser.ExplicitSpecializationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#tryBlock. + def enterTryBlock(self, ctx:CPP14Parser.TryBlockContext): + pass + + # Exit a parse tree produced by CPP14Parser#tryBlock. + def exitTryBlock(self, ctx:CPP14Parser.TryBlockContext): + pass + + + # Enter a parse tree produced by CPP14Parser#functionTryBlock. + def enterFunctionTryBlock(self, ctx:CPP14Parser.FunctionTryBlockContext): + pass + + # Exit a parse tree produced by CPP14Parser#functionTryBlock. + def exitFunctionTryBlock(self, ctx:CPP14Parser.FunctionTryBlockContext): + pass + + + # Enter a parse tree produced by CPP14Parser#handlerSeq. + def enterHandlerSeq(self, ctx:CPP14Parser.HandlerSeqContext): + pass + + # Exit a parse tree produced by CPP14Parser#handlerSeq. + def exitHandlerSeq(self, ctx:CPP14Parser.HandlerSeqContext): + pass + + + # Enter a parse tree produced by CPP14Parser#handler. + def enterHandler(self, ctx:CPP14Parser.HandlerContext): + pass + + # Exit a parse tree produced by CPP14Parser#handler. + def exitHandler(self, ctx:CPP14Parser.HandlerContext): + pass + + + # Enter a parse tree produced by CPP14Parser#exceptionDeclaration. + def enterExceptionDeclaration(self, ctx:CPP14Parser.ExceptionDeclarationContext): + pass + + # Exit a parse tree produced by CPP14Parser#exceptionDeclaration. + def exitExceptionDeclaration(self, ctx:CPP14Parser.ExceptionDeclarationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#throwExpression. + def enterThrowExpression(self, ctx:CPP14Parser.ThrowExpressionContext): + pass + + # Exit a parse tree produced by CPP14Parser#throwExpression. + def exitThrowExpression(self, ctx:CPP14Parser.ThrowExpressionContext): + pass + + + # Enter a parse tree produced by CPP14Parser#exceptionSpecification. + def enterExceptionSpecification(self, ctx:CPP14Parser.ExceptionSpecificationContext): + pass + + # Exit a parse tree produced by CPP14Parser#exceptionSpecification. + def exitExceptionSpecification(self, ctx:CPP14Parser.ExceptionSpecificationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#dynamicExceptionSpecification. + def enterDynamicExceptionSpecification(self, ctx:CPP14Parser.DynamicExceptionSpecificationContext): + pass + + # Exit a parse tree produced by CPP14Parser#dynamicExceptionSpecification. + def exitDynamicExceptionSpecification(self, ctx:CPP14Parser.DynamicExceptionSpecificationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#typeIdList. + def enterTypeIdList(self, ctx:CPP14Parser.TypeIdListContext): + pass + + # Exit a parse tree produced by CPP14Parser#typeIdList. + def exitTypeIdList(self, ctx:CPP14Parser.TypeIdListContext): + pass + + + # Enter a parse tree produced by CPP14Parser#noeExceptSpecification. + def enterNoeExceptSpecification(self, ctx:CPP14Parser.NoeExceptSpecificationContext): + pass + + # Exit a parse tree produced by CPP14Parser#noeExceptSpecification. + def exitNoeExceptSpecification(self, ctx:CPP14Parser.NoeExceptSpecificationContext): + pass + + + # Enter a parse tree produced by CPP14Parser#theOperator. + def enterTheOperator(self, ctx:CPP14Parser.TheOperatorContext): + pass + + # Exit a parse tree produced by CPP14Parser#theOperator. + def exitTheOperator(self, ctx:CPP14Parser.TheOperatorContext): + pass + + + # Enter a parse tree produced by CPP14Parser#literal. + def enterLiteral(self, ctx:CPP14Parser.LiteralContext): + pass + + # Exit a parse tree produced by CPP14Parser#literal. + def exitLiteral(self, ctx:CPP14Parser.LiteralContext): + pass + + + +del CPP14Parser \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CPP14ParserVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/CPP14ParserVisitor.py new file mode 100644 index 00000000..8b0f3e06 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CPP14ParserVisitor.py @@ -0,0 +1,968 @@ +# Generated from CPP14Parser.g4 by ANTLR 4.13.2 +from antlr4 import * +if "." in __name__: + from .CPP14Parser import CPP14Parser +else: + from CPP14Parser import CPP14Parser + +# This class defines a complete generic visitor for a parse tree produced by CPP14Parser. + +class CPP14ParserVisitor(ParseTreeVisitor): + + # Visit a parse tree produced by CPP14Parser#translationUnit. + def visitTranslationUnit(self, ctx:CPP14Parser.TranslationUnitContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#primaryExpression. + def visitPrimaryExpression(self, ctx:CPP14Parser.PrimaryExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#idExpression. + def visitIdExpression(self, ctx:CPP14Parser.IdExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#unqualifiedId. + def visitUnqualifiedId(self, ctx:CPP14Parser.UnqualifiedIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#qualifiedId. + def visitQualifiedId(self, ctx:CPP14Parser.QualifiedIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#nestedNameSpecifier. + def visitNestedNameSpecifier(self, ctx:CPP14Parser.NestedNameSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#lambdaExpression. + def visitLambdaExpression(self, ctx:CPP14Parser.LambdaExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#lambdaIntroducer. + def visitLambdaIntroducer(self, ctx:CPP14Parser.LambdaIntroducerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#lambdaCapture. + def visitLambdaCapture(self, ctx:CPP14Parser.LambdaCaptureContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#captureDefault. + def visitCaptureDefault(self, ctx:CPP14Parser.CaptureDefaultContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#captureList. + def visitCaptureList(self, ctx:CPP14Parser.CaptureListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#capture. + def visitCapture(self, ctx:CPP14Parser.CaptureContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#simpleCapture. + def visitSimpleCapture(self, ctx:CPP14Parser.SimpleCaptureContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#initcapture. + def visitInitcapture(self, ctx:CPP14Parser.InitcaptureContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#lambdaDeclarator. + def visitLambdaDeclarator(self, ctx:CPP14Parser.LambdaDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#postfixExpression. + def visitPostfixExpression(self, ctx:CPP14Parser.PostfixExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#typeIdOfTheTypeId. + def visitTypeIdOfTheTypeId(self, ctx:CPP14Parser.TypeIdOfTheTypeIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#expressionList. + def visitExpressionList(self, ctx:CPP14Parser.ExpressionListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#pseudoDestructorName. + def visitPseudoDestructorName(self, ctx:CPP14Parser.PseudoDestructorNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#unaryExpression. + def visitUnaryExpression(self, ctx:CPP14Parser.UnaryExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#unaryOperator. + def visitUnaryOperator(self, ctx:CPP14Parser.UnaryOperatorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#newExpression_. + def visitNewExpression_(self, ctx:CPP14Parser.NewExpression_Context): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#newPlacement. + def visitNewPlacement(self, ctx:CPP14Parser.NewPlacementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#newTypeId. + def visitNewTypeId(self, ctx:CPP14Parser.NewTypeIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#newDeclarator_. + def visitNewDeclarator_(self, ctx:CPP14Parser.NewDeclarator_Context): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#noPointerNewDeclarator. + def visitNoPointerNewDeclarator(self, ctx:CPP14Parser.NoPointerNewDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#newInitializer_. + def visitNewInitializer_(self, ctx:CPP14Parser.NewInitializer_Context): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#deleteExpression. + def visitDeleteExpression(self, ctx:CPP14Parser.DeleteExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#noExceptExpression. + def visitNoExceptExpression(self, ctx:CPP14Parser.NoExceptExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#castExpression. + def visitCastExpression(self, ctx:CPP14Parser.CastExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#pointerMemberExpression. + def visitPointerMemberExpression(self, ctx:CPP14Parser.PointerMemberExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#multiplicativeExpression. + def visitMultiplicativeExpression(self, ctx:CPP14Parser.MultiplicativeExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#additiveExpression. + def visitAdditiveExpression(self, ctx:CPP14Parser.AdditiveExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#shiftExpression. + def visitShiftExpression(self, ctx:CPP14Parser.ShiftExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#shiftOperator. + def visitShiftOperator(self, ctx:CPP14Parser.ShiftOperatorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#relationalExpression. + def visitRelationalExpression(self, ctx:CPP14Parser.RelationalExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#equalityExpression. + def visitEqualityExpression(self, ctx:CPP14Parser.EqualityExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#andExpression. + def visitAndExpression(self, ctx:CPP14Parser.AndExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#exclusiveOrExpression. + def visitExclusiveOrExpression(self, ctx:CPP14Parser.ExclusiveOrExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#inclusiveOrExpression. + def visitInclusiveOrExpression(self, ctx:CPP14Parser.InclusiveOrExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#logicalAndExpression. + def visitLogicalAndExpression(self, ctx:CPP14Parser.LogicalAndExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#logicalOrExpression. + def visitLogicalOrExpression(self, ctx:CPP14Parser.LogicalOrExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#conditionalExpression. + def visitConditionalExpression(self, ctx:CPP14Parser.ConditionalExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#assignmentExpression. + def visitAssignmentExpression(self, ctx:CPP14Parser.AssignmentExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#assignmentOperator. + def visitAssignmentOperator(self, ctx:CPP14Parser.AssignmentOperatorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#expression. + def visitExpression(self, ctx:CPP14Parser.ExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#constantExpression. + def visitConstantExpression(self, ctx:CPP14Parser.ConstantExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#statement. + def visitStatement(self, ctx:CPP14Parser.StatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#labeledStatement. + def visitLabeledStatement(self, ctx:CPP14Parser.LabeledStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#expressionStatement. + def visitExpressionStatement(self, ctx:CPP14Parser.ExpressionStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#compoundStatement. + def visitCompoundStatement(self, ctx:CPP14Parser.CompoundStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#statementSeq. + def visitStatementSeq(self, ctx:CPP14Parser.StatementSeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#selectionStatement. + def visitSelectionStatement(self, ctx:CPP14Parser.SelectionStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#condition. + def visitCondition(self, ctx:CPP14Parser.ConditionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#iterationStatement. + def visitIterationStatement(self, ctx:CPP14Parser.IterationStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#forInitStatement. + def visitForInitStatement(self, ctx:CPP14Parser.ForInitStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#forRangeDeclaration. + def visitForRangeDeclaration(self, ctx:CPP14Parser.ForRangeDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#forRangeInitializer. + def visitForRangeInitializer(self, ctx:CPP14Parser.ForRangeInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#jumpStatement. + def visitJumpStatement(self, ctx:CPP14Parser.JumpStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#declarationStatement. + def visitDeclarationStatement(self, ctx:CPP14Parser.DeclarationStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#declarationseq. + def visitDeclarationseq(self, ctx:CPP14Parser.DeclarationseqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#declaration. + def visitDeclaration(self, ctx:CPP14Parser.DeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#blockDeclaration. + def visitBlockDeclaration(self, ctx:CPP14Parser.BlockDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#aliasDeclaration. + def visitAliasDeclaration(self, ctx:CPP14Parser.AliasDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#simpleDeclaration. + def visitSimpleDeclaration(self, ctx:CPP14Parser.SimpleDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#staticAssertDeclaration. + def visitStaticAssertDeclaration(self, ctx:CPP14Parser.StaticAssertDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#emptyDeclaration_. + def visitEmptyDeclaration_(self, ctx:CPP14Parser.EmptyDeclaration_Context): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#attributeDeclaration. + def visitAttributeDeclaration(self, ctx:CPP14Parser.AttributeDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#declSpecifier. + def visitDeclSpecifier(self, ctx:CPP14Parser.DeclSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#declSpecifierSeq. + def visitDeclSpecifierSeq(self, ctx:CPP14Parser.DeclSpecifierSeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#storageClassSpecifier. + def visitStorageClassSpecifier(self, ctx:CPP14Parser.StorageClassSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#functionSpecifier. + def visitFunctionSpecifier(self, ctx:CPP14Parser.FunctionSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#typedefName. + def visitTypedefName(self, ctx:CPP14Parser.TypedefNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#typeSpecifier. + def visitTypeSpecifier(self, ctx:CPP14Parser.TypeSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#trailingTypeSpecifier. + def visitTrailingTypeSpecifier(self, ctx:CPP14Parser.TrailingTypeSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#typeSpecifierSeq. + def visitTypeSpecifierSeq(self, ctx:CPP14Parser.TypeSpecifierSeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#trailingTypeSpecifierSeq. + def visitTrailingTypeSpecifierSeq(self, ctx:CPP14Parser.TrailingTypeSpecifierSeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#simpleTypeLengthModifier. + def visitSimpleTypeLengthModifier(self, ctx:CPP14Parser.SimpleTypeLengthModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#simpleTypeSignednessModifier. + def visitSimpleTypeSignednessModifier(self, ctx:CPP14Parser.SimpleTypeSignednessModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#simpleTypeSpecifier. + def visitSimpleTypeSpecifier(self, ctx:CPP14Parser.SimpleTypeSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#theTypeName. + def visitTheTypeName(self, ctx:CPP14Parser.TheTypeNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#decltypeSpecifier. + def visitDecltypeSpecifier(self, ctx:CPP14Parser.DecltypeSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#elaboratedTypeSpecifier. + def visitElaboratedTypeSpecifier(self, ctx:CPP14Parser.ElaboratedTypeSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#enumName. + def visitEnumName(self, ctx:CPP14Parser.EnumNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#enumSpecifier. + def visitEnumSpecifier(self, ctx:CPP14Parser.EnumSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#enumHead. + def visitEnumHead(self, ctx:CPP14Parser.EnumHeadContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#opaqueEnumDeclaration. + def visitOpaqueEnumDeclaration(self, ctx:CPP14Parser.OpaqueEnumDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#enumkey. + def visitEnumkey(self, ctx:CPP14Parser.EnumkeyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#enumbase. + def visitEnumbase(self, ctx:CPP14Parser.EnumbaseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#enumeratorList. + def visitEnumeratorList(self, ctx:CPP14Parser.EnumeratorListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#enumeratorDefinition. + def visitEnumeratorDefinition(self, ctx:CPP14Parser.EnumeratorDefinitionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#enumerator. + def visitEnumerator(self, ctx:CPP14Parser.EnumeratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#namespaceName. + def visitNamespaceName(self, ctx:CPP14Parser.NamespaceNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#originalNamespaceName. + def visitOriginalNamespaceName(self, ctx:CPP14Parser.OriginalNamespaceNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#namespaceDefinition. + def visitNamespaceDefinition(self, ctx:CPP14Parser.NamespaceDefinitionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#namespaceAlias. + def visitNamespaceAlias(self, ctx:CPP14Parser.NamespaceAliasContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#namespaceAliasDefinition. + def visitNamespaceAliasDefinition(self, ctx:CPP14Parser.NamespaceAliasDefinitionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#qualifiednamespacespecifier. + def visitQualifiednamespacespecifier(self, ctx:CPP14Parser.QualifiednamespacespecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#usingDeclaration. + def visitUsingDeclaration(self, ctx:CPP14Parser.UsingDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#usingDirective. + def visitUsingDirective(self, ctx:CPP14Parser.UsingDirectiveContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#asmDefinition. + def visitAsmDefinition(self, ctx:CPP14Parser.AsmDefinitionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#linkageSpecification. + def visitLinkageSpecification(self, ctx:CPP14Parser.LinkageSpecificationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#attributeSpecifierSeq. + def visitAttributeSpecifierSeq(self, ctx:CPP14Parser.AttributeSpecifierSeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#attributeSpecifier. + def visitAttributeSpecifier(self, ctx:CPP14Parser.AttributeSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#alignmentspecifier. + def visitAlignmentspecifier(self, ctx:CPP14Parser.AlignmentspecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#attributeList. + def visitAttributeList(self, ctx:CPP14Parser.AttributeListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#attribute. + def visitAttribute(self, ctx:CPP14Parser.AttributeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#attributeNamespace. + def visitAttributeNamespace(self, ctx:CPP14Parser.AttributeNamespaceContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#attributeArgumentClause. + def visitAttributeArgumentClause(self, ctx:CPP14Parser.AttributeArgumentClauseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#balancedTokenSeq. + def visitBalancedTokenSeq(self, ctx:CPP14Parser.BalancedTokenSeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#balancedtoken. + def visitBalancedtoken(self, ctx:CPP14Parser.BalancedtokenContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#initDeclaratorList. + def visitInitDeclaratorList(self, ctx:CPP14Parser.InitDeclaratorListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#initDeclarator. + def visitInitDeclarator(self, ctx:CPP14Parser.InitDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#declarator. + def visitDeclarator(self, ctx:CPP14Parser.DeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#pointerDeclarator. + def visitPointerDeclarator(self, ctx:CPP14Parser.PointerDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#noPointerDeclarator. + def visitNoPointerDeclarator(self, ctx:CPP14Parser.NoPointerDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#parametersAndQualifiers. + def visitParametersAndQualifiers(self, ctx:CPP14Parser.ParametersAndQualifiersContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#trailingReturnType. + def visitTrailingReturnType(self, ctx:CPP14Parser.TrailingReturnTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#pointerOperator. + def visitPointerOperator(self, ctx:CPP14Parser.PointerOperatorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#cvqualifierseq. + def visitCvqualifierseq(self, ctx:CPP14Parser.CvqualifierseqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#cvQualifier. + def visitCvQualifier(self, ctx:CPP14Parser.CvQualifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#refqualifier. + def visitRefqualifier(self, ctx:CPP14Parser.RefqualifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#declaratorid. + def visitDeclaratorid(self, ctx:CPP14Parser.DeclaratoridContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#theTypeId. + def visitTheTypeId(self, ctx:CPP14Parser.TheTypeIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#abstractDeclarator. + def visitAbstractDeclarator(self, ctx:CPP14Parser.AbstractDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#pointerAbstractDeclarator. + def visitPointerAbstractDeclarator(self, ctx:CPP14Parser.PointerAbstractDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#noPointerAbstractDeclarator. + def visitNoPointerAbstractDeclarator(self, ctx:CPP14Parser.NoPointerAbstractDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#abstractPackDeclarator. + def visitAbstractPackDeclarator(self, ctx:CPP14Parser.AbstractPackDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#noPointerAbstractPackDeclarator. + def visitNoPointerAbstractPackDeclarator(self, ctx:CPP14Parser.NoPointerAbstractPackDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#parameterDeclarationClause. + def visitParameterDeclarationClause(self, ctx:CPP14Parser.ParameterDeclarationClauseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#parameterDeclarationList. + def visitParameterDeclarationList(self, ctx:CPP14Parser.ParameterDeclarationListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#parameterDeclaration. + def visitParameterDeclaration(self, ctx:CPP14Parser.ParameterDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#functionDefinition. + def visitFunctionDefinition(self, ctx:CPP14Parser.FunctionDefinitionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#functionBody. + def visitFunctionBody(self, ctx:CPP14Parser.FunctionBodyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#initializer. + def visitInitializer(self, ctx:CPP14Parser.InitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#braceOrEqualInitializer. + def visitBraceOrEqualInitializer(self, ctx:CPP14Parser.BraceOrEqualInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#initializerClause. + def visitInitializerClause(self, ctx:CPP14Parser.InitializerClauseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#initializerList. + def visitInitializerList(self, ctx:CPP14Parser.InitializerListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#bracedInitList. + def visitBracedInitList(self, ctx:CPP14Parser.BracedInitListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#className. + def visitClassName(self, ctx:CPP14Parser.ClassNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#classSpecifier. + def visitClassSpecifier(self, ctx:CPP14Parser.ClassSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#classHead. + def visitClassHead(self, ctx:CPP14Parser.ClassHeadContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#classHeadName. + def visitClassHeadName(self, ctx:CPP14Parser.ClassHeadNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#classVirtSpecifier. + def visitClassVirtSpecifier(self, ctx:CPP14Parser.ClassVirtSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#classKey. + def visitClassKey(self, ctx:CPP14Parser.ClassKeyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#memberSpecification. + def visitMemberSpecification(self, ctx:CPP14Parser.MemberSpecificationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#memberdeclaration. + def visitMemberdeclaration(self, ctx:CPP14Parser.MemberdeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#memberDeclaratorList. + def visitMemberDeclaratorList(self, ctx:CPP14Parser.MemberDeclaratorListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#memberDeclarator. + def visitMemberDeclarator(self, ctx:CPP14Parser.MemberDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#virtualSpecifierSeq. + def visitVirtualSpecifierSeq(self, ctx:CPP14Parser.VirtualSpecifierSeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#virtualSpecifier. + def visitVirtualSpecifier(self, ctx:CPP14Parser.VirtualSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#pureSpecifier. + def visitPureSpecifier(self, ctx:CPP14Parser.PureSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#baseClause. + def visitBaseClause(self, ctx:CPP14Parser.BaseClauseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#baseSpecifierList. + def visitBaseSpecifierList(self, ctx:CPP14Parser.BaseSpecifierListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#baseSpecifier. + def visitBaseSpecifier(self, ctx:CPP14Parser.BaseSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#classOrDeclType. + def visitClassOrDeclType(self, ctx:CPP14Parser.ClassOrDeclTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#baseTypeSpecifier. + def visitBaseTypeSpecifier(self, ctx:CPP14Parser.BaseTypeSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#accessSpecifier. + def visitAccessSpecifier(self, ctx:CPP14Parser.AccessSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#conversionFunctionId. + def visitConversionFunctionId(self, ctx:CPP14Parser.ConversionFunctionIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#conversionTypeId. + def visitConversionTypeId(self, ctx:CPP14Parser.ConversionTypeIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#conversionDeclarator. + def visitConversionDeclarator(self, ctx:CPP14Parser.ConversionDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#constructorInitializer. + def visitConstructorInitializer(self, ctx:CPP14Parser.ConstructorInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#memInitializerList. + def visitMemInitializerList(self, ctx:CPP14Parser.MemInitializerListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#memInitializer. + def visitMemInitializer(self, ctx:CPP14Parser.MemInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#meminitializerid. + def visitMeminitializerid(self, ctx:CPP14Parser.MeminitializeridContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#operatorFunctionId. + def visitOperatorFunctionId(self, ctx:CPP14Parser.OperatorFunctionIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#literalOperatorId. + def visitLiteralOperatorId(self, ctx:CPP14Parser.LiteralOperatorIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#templateDeclaration. + def visitTemplateDeclaration(self, ctx:CPP14Parser.TemplateDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#templateparameterList. + def visitTemplateparameterList(self, ctx:CPP14Parser.TemplateparameterListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#templateParameter. + def visitTemplateParameter(self, ctx:CPP14Parser.TemplateParameterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#typeParameter. + def visitTypeParameter(self, ctx:CPP14Parser.TypeParameterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#simpleTemplateId. + def visitSimpleTemplateId(self, ctx:CPP14Parser.SimpleTemplateIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#templateId. + def visitTemplateId(self, ctx:CPP14Parser.TemplateIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#templateName. + def visitTemplateName(self, ctx:CPP14Parser.TemplateNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#templateArgumentList. + def visitTemplateArgumentList(self, ctx:CPP14Parser.TemplateArgumentListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#templateArgument. + def visitTemplateArgument(self, ctx:CPP14Parser.TemplateArgumentContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#typeNameSpecifier. + def visitTypeNameSpecifier(self, ctx:CPP14Parser.TypeNameSpecifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#explicitInstantiation. + def visitExplicitInstantiation(self, ctx:CPP14Parser.ExplicitInstantiationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#explicitSpecialization. + def visitExplicitSpecialization(self, ctx:CPP14Parser.ExplicitSpecializationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#tryBlock. + def visitTryBlock(self, ctx:CPP14Parser.TryBlockContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#functionTryBlock. + def visitFunctionTryBlock(self, ctx:CPP14Parser.FunctionTryBlockContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#handlerSeq. + def visitHandlerSeq(self, ctx:CPP14Parser.HandlerSeqContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#handler. + def visitHandler(self, ctx:CPP14Parser.HandlerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#exceptionDeclaration. + def visitExceptionDeclaration(self, ctx:CPP14Parser.ExceptionDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#throwExpression. + def visitThrowExpression(self, ctx:CPP14Parser.ThrowExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#exceptionSpecification. + def visitExceptionSpecification(self, ctx:CPP14Parser.ExceptionSpecificationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#dynamicExceptionSpecification. + def visitDynamicExceptionSpecification(self, ctx:CPP14Parser.DynamicExceptionSpecificationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#typeIdList. + def visitTypeIdList(self, ctx:CPP14Parser.TypeIdListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#noeExceptSpecification. + def visitNoeExceptSpecification(self, ctx:CPP14Parser.NoeExceptSpecificationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#theOperator. + def visitTheOperator(self, ctx:CPP14Parser.TheOperatorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CPP14Parser#literal. + def visitLiteral(self, ctx:CPP14Parser.LiteralContext): + return self.visitChildren(ctx) + + + +del CPP14Parser \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.g4 b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.g4 index 7fa873a2..10cdbc33 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.g4 +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.g4 @@ -2,1105 +2,1057 @@ // Copyright (c) 2013, Christian Wulf (chwchw@gmx.de) // Copyright (c) 2016-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. -lexer grammar CSharpLexer; +// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine +// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true -@lexer::header -{import java.util.Stack;} +lexer grammar CSharpLexer; -channels { COMMENTS_CHANNEL, DIRECTIVE } +channels { + COMMENTS_CHANNEL, + DIRECTIVE +} -@lexer::members -{private int interpolatedStringLevel; -private Stack interpolatedVerbatiums = new Stack(); -private Stack curlyLevels = new Stack(); -private boolean verbatium; +options { + superClass = CSharpLexerBase; } BYTE_ORDER_MARK: '\u00EF\u00BB\u00BF'; -SINGLE_LINE_DOC_COMMENT: '///' InputCharacter* -> channel(COMMENTS_CHANNEL); -DELIMITED_DOC_COMMENT: '/**' .*? '*/' -> channel(COMMENTS_CHANNEL); -SINGLE_LINE_COMMENT: '//' InputCharacter* -> channel(COMMENTS_CHANNEL); -DELIMITED_COMMENT: '/*' .*? '*/' -> channel(COMMENTS_CHANNEL); +SINGLE_LINE_DOC_COMMENT : '///' InputCharacter* -> channel(COMMENTS_CHANNEL); +EMPTY_DELIMITED_DOC_COMMENT : '/***/' -> channel(COMMENTS_CHANNEL); +DELIMITED_DOC_COMMENT : '/**' ~'/' .*? '*/' -> channel(COMMENTS_CHANNEL); +SINGLE_LINE_COMMENT : '//' InputCharacter* -> channel(COMMENTS_CHANNEL); +DELIMITED_COMMENT : '/*' .*? '*/' -> channel(COMMENTS_CHANNEL); +WHITESPACES : (Whitespace | NewLine)+ -> channel(HIDDEN); +SHARP : '#' -> mode(DIRECTIVE_MODE), skip; -WHITESPACES: (Whitespace | NewLine)+ -> channel(HIDDEN); -SHARP: '#' -> mode(DIRECTIVE_MODE); - -ABSTRACT: 'abstract'; -ADD: 'add'; -ALIAS: 'alias'; -ARGLIST: '__arglist'; -AS: 'as'; -ASCENDING: 'ascending'; -ASYNC: 'async'; -AWAIT: 'await'; -BASE: 'base'; -BOOL: 'bool'; -BREAK: 'break'; -BY: 'by'; -BYTE: 'byte'; -CASE: 'case'; -CATCH: 'catch'; -CHAR: 'char'; -CHECKED: 'checked'; -CLASS: 'class'; -CONST: 'const'; -CONTINUE: 'continue'; -DECIMAL: 'decimal'; -DEFAULT: 'default'; -DELEGATE: 'delegate'; -DESCENDING: 'descending'; -DO: 'do'; -DOUBLE: 'double'; -DYNAMIC: 'dynamic'; -ELSE: 'else'; -ENUM: 'enum'; -EQUALS: 'equals'; -EVENT: 'event'; -EXPLICIT: 'explicit'; -EXTERN: 'extern'; -FALSE: 'false'; -FINALLY: 'finally'; -FIXED: 'fixed'; -FLOAT: 'float'; -FOR: 'for'; -FOREACH: 'foreach'; -FROM: 'from'; -GET: 'get'; -GOTO: 'goto'; -GROUP: 'group'; -IF: 'if'; -IMPLICIT: 'implicit'; -IN: 'in'; -INT: 'int'; -INTERFACE: 'interface'; -INTERNAL: 'internal'; -INTO: 'into'; -IS: 'is'; -JOIN: 'join'; -LET: 'let'; -LOCK: 'lock'; -LONG: 'long'; -NAMEOF: 'nameof'; -NAMESPACE: 'namespace'; -NEW: 'new'; -NULL: 'null'; -OBJECT: 'object'; -ON: 'on'; -OPERATOR: 'operator'; -ORDERBY: 'orderby'; -OUT: 'out'; -OVERRIDE: 'override'; -PARAMS: 'params'; -PARTIAL: 'partial'; -PRIVATE: 'private'; -PROTECTED: 'protected'; -PUBLIC: 'public'; -READONLY: 'readonly'; -REF: 'ref'; -REMOVE: 'remove'; -RETURN: 'return'; -SBYTE: 'sbyte'; -SEALED: 'sealed'; -SELECT: 'select'; -SET: 'set'; -SHORT: 'short'; -SIZEOF: 'sizeof'; -STACKALLOC: 'stackalloc'; -STATIC: 'static'; -STRING: 'string'; -STRUCT: 'struct'; -SWITCH: 'switch'; -THIS: 'this'; -THROW: 'throw'; -TRUE: 'true'; -TRY: 'try'; -TYPEOF: 'typeof'; -UINT: 'uint'; -ULONG: 'ulong'; -UNCHECKED: 'unchecked'; -UNMANAGED: 'unmanaged'; -UNSAFE: 'unsafe'; -USHORT: 'ushort'; -USING: 'using'; -VAR: 'var'; -VIRTUAL: 'virtual'; -VOID: 'void'; -VOLATILE: 'volatile'; -WHEN: 'when'; -WHERE: 'where'; -WHILE: 'while'; -YIELD: 'yield'; +ABSTRACT : 'abstract'; +ADD : 'add'; +ALIAS : 'alias'; +ARGLIST : '__arglist'; +AS : 'as'; +ASCENDING : 'ascending'; +ASYNC : 'async'; +AWAIT : 'await'; +BASE : 'base'; +BOOL : 'bool'; +BREAK : 'break'; +BY : 'by'; +BYTE : 'byte'; +CASE : 'case'; +CATCH : 'catch'; +CHAR : 'char'; +CHECKED : 'checked'; +CLASS : 'class'; +CONST : 'const'; +CONTINUE : 'continue'; +DECIMAL : 'decimal'; +DEFAULT : 'default'; +DELEGATE : 'delegate'; +DESCENDING : 'descending'; +DO : 'do'; +DOUBLE : 'double'; +DYNAMIC : 'dynamic'; +ELSE : 'else'; +ENUM : 'enum'; +EQUALS : 'equals'; +EVENT : 'event'; +EXPLICIT : 'explicit'; +EXTERN : 'extern'; +FALSE : 'false'; +FINALLY : 'finally'; +FIXED : 'fixed'; +FLOAT : 'float'; +FOR : 'for'; +FOREACH : 'foreach'; +FROM : 'from'; +GET : 'get'; +GOTO : 'goto'; +GROUP : 'group'; +IF : 'if'; +IMPLICIT : 'implicit'; +IN : 'in'; +INT : 'int'; +INTERFACE : 'interface'; +INTERNAL : 'internal'; +INTO : 'into'; +IS : 'is'; +JOIN : 'join'; +LET : 'let'; +LOCK : 'lock'; +LONG : 'long'; +NAMEOF : 'nameof'; +NAMESPACE : 'namespace'; +NEW : 'new'; +NULL_ : 'null'; +OBJECT : 'object'; +ON : 'on'; +OPERATOR : 'operator'; +ORDERBY : 'orderby'; +OUT : 'out'; +OVERRIDE : 'override'; +PARAMS : 'params'; +PARTIAL : 'partial'; +PRIVATE : 'private'; +PROTECTED : 'protected'; +PUBLIC : 'public'; +READONLY : 'readonly'; +REF : 'ref'; +REMOVE : 'remove'; +RETURN : 'return'; +SBYTE : 'sbyte'; +SEALED : 'sealed'; +SELECT : 'select'; +SET : 'set'; +SHORT : 'short'; +SIZEOF : 'sizeof'; +STACKALLOC : 'stackalloc'; +STATIC : 'static'; +STRING : 'string'; +STRUCT : 'struct'; +SWITCH : 'switch'; +THIS : 'this'; +THROW : 'throw'; +TRUE : 'true'; +TRY : 'try'; +TYPEOF : 'typeof'; +UINT : 'uint'; +ULONG : 'ulong'; +UNCHECKED : 'unchecked'; +UNMANAGED : 'unmanaged'; +UNSAFE : 'unsafe'; +USHORT : 'ushort'; +USING : 'using'; +VAR : 'var'; +VIRTUAL : 'virtual'; +VOID : 'void'; +VOLATILE : 'volatile'; +WHEN : 'when'; +WHERE : 'where'; +WHILE : 'while'; +YIELD : 'yield'; //B.1.6 Identifiers // must be defined after all keywords so the first branch (Available_identifier) does not match keywords // https://msdn.microsoft.com/en-us/library/aa664670(v=vs.71).aspx -IDENTIFIER: '@'? IdentifierOrKeyword; +IDENTIFIER: '@'? IdentifierOrKeyword; //B.1.8 Literals // 0.Equals() would be parsed as an invalid real (1. branch) causing a lexer error -LITERAL_ACCESS: [0-9] ('_'* [0-9])* IntegerTypeSuffix? '.' '@'? IdentifierOrKeyword; -INTEGER_LITERAL: [0-9] ('_'* [0-9])* IntegerTypeSuffix?; -HEX_INTEGER_LITERAL: '0' [xX] ('_'* HexDigit)+ IntegerTypeSuffix?; -BIN_INTEGER_LITERAL: '0' [bB] ('_'* [01])+ IntegerTypeSuffix?; -REAL_LITERAL: ([0-9] ('_'* [0-9])*)? '.' [0-9] ('_'* [0-9])* ExponentPart? [FfDdMm]? | [0-9] ('_'* [0-9])* ([FfDdMm] | ExponentPart [FfDdMm]?); +LITERAL_ACCESS : [0-9] ('_'* [0-9])* IntegerTypeSuffix? '.' '@'? IdentifierOrKeyword; +INTEGER_LITERAL : [0-9] ('_'* [0-9])* IntegerTypeSuffix?; +HEX_INTEGER_LITERAL : '0' [xX] ('_'* HexDigit)+ IntegerTypeSuffix?; +BIN_INTEGER_LITERAL : '0' [bB] ('_'* [01])+ IntegerTypeSuffix?; +REAL_LITERAL: + ([0-9] ('_'* [0-9])*)? '.' [0-9] ('_'* [0-9])* ExponentPart? [FfDdMm]? + | [0-9] ('_'* [0-9])* ([FfDdMm] | ExponentPart [FfDdMm]?) +; -CHARACTER_LITERAL: '\'' (~['\\\r\n\u0085\u2028\u2029] | CommonCharacter) '\''; -REGULAR_STRING: '"' (~["\\\r\n\u0085\u2028\u2029] | CommonCharacter)* '"'; -VERBATIUM_STRING: '@"' (~'"' | '""')* '"'; -INTERPOLATED_REGULAR_STRING_START: '$"' - { interpolatedStringLevel++; interpolatedVerbatiums.push(false); verbatium = false; } -> pushMode(INTERPOLATION_STRING); -INTERPOLATED_VERBATIUM_STRING_START: '$@"' - { interpolatedStringLevel++; interpolatedVerbatiums.push(true); verbatium = true; } -> pushMode(INTERPOLATION_STRING); +CHARACTER_LITERAL : '\'' (~['\\\r\n\u0085\u2028\u2029] | CommonCharacter) '\''; +REGULAR_STRING : '"' (~["\\\r\n\u0085\u2028\u2029] | CommonCharacter)* '"'; +VERBATIUM_STRING : '@"' (~'"' | '""')* '"'; +INTERPOLATED_REGULAR_STRING_START: + '$"' { this.OnInterpolatedRegularStringStart(); } -> pushMode(INTERPOLATION_STRING) +; +INTERPOLATED_VERBATIUM_STRING_START: + '$@"' { this.OnInterpolatedVerbatiumStringStart(); } -> pushMode(INTERPOLATION_STRING) +; //B.1.9 Operators And Punctuators -OPEN_BRACE: '{' -{ -if (interpolatedStringLevel > 0) -{ - curlyLevels.push(curlyLevels.pop() + 1); -}}; -CLOSE_BRACE: '}' -{ -if (interpolatedStringLevel > 0) -{ - curlyLevels.push(curlyLevels.pop() - 1); - if (curlyLevels.peek() == 0) - { - curlyLevels.pop(); - skip(); - popMode(); - } -} -}; -OPEN_BRACKET: '['; -CLOSE_BRACKET: ']'; -OPEN_PARENS: '('; -CLOSE_PARENS: ')'; -DOT: '.'; -COMMA: ','; -COLON: ':' -{ -if (interpolatedStringLevel > 0) -{ - int ind = 1; - boolean switchToFormatString = true; - while ((char)_input.LA(ind) != '}') - { - if (_input.LA(ind) == ':' || _input.LA(ind) == ')') - { - switchToFormatString = false; - break; - } - ind++; - } - if (switchToFormatString) - { - mode(INTERPOLATION_FORMAT); - } -} -}; -SEMICOLON: ';'; -PLUS: '+'; -MINUS: '-'; -STAR: '*'; -DIV: '/'; -PERCENT: '%'; -AMP: '&'; -BITWISE_OR: '|'; -CARET: '^'; -BANG: '!'; -TILDE: '~'; -ASSIGNMENT: '='; -LT: '<'; -GT: '>'; -INTERR: '?'; -DOUBLE_COLON: '::'; -OP_COALESCING: '??'; -OP_INC: '++'; -OP_DEC: '--'; -OP_AND: '&&'; -OP_OR: '||'; -OP_PTR: '->'; -OP_EQ: '=='; -OP_NE: '!='; -OP_LE: '<='; -OP_GE: '>='; -OP_ADD_ASSIGNMENT: '+='; -OP_SUB_ASSIGNMENT: '-='; -OP_MULT_ASSIGNMENT: '*='; -OP_DIV_ASSIGNMENT: '/='; -OP_MOD_ASSIGNMENT: '%='; -OP_AND_ASSIGNMENT: '&='; -OP_OR_ASSIGNMENT: '|='; -OP_XOR_ASSIGNMENT: '^='; -OP_LEFT_SHIFT: '<<'; -OP_LEFT_SHIFT_ASSIGNMENT: '<<='; -OP_COALESCING_ASSIGNMENT: '??='; -OP_RANGE: '..'; +OPEN_BRACE : '{' { this.OnOpenBrace(); }; +CLOSE_BRACE : '}' { this.OnCloseBrace(); }; +OPEN_BRACKET : '['; +CLOSE_BRACKET : ']'; +OPEN_PARENS : '('; +CLOSE_PARENS : ')'; +DOT : '.'; +COMMA : ','; +COLON : ':' { this.OnColon(); }; +SEMICOLON : ';'; +PLUS : '+'; +MINUS : '-'; +STAR : '*'; +DIV : '/'; +PERCENT : '%'; +AMP : '&'; +BITWISE_OR : '|'; +CARET : '^'; +BANG : '!'; +TILDE : '~'; +ASSIGNMENT : '='; +LT : '<'; +GT : '>'; +INTERR : '?'; +DOUBLE_COLON : '::'; +OP_COALESCING : '??'; +OP_INC : '++'; +OP_DEC : '--'; +OP_AND : '&&'; +OP_OR : '||'; +OP_PTR : '->'; +OP_EQ : '=='; +OP_NE : '!='; +OP_LE : '<='; +OP_GE : '>='; +OP_ADD_ASSIGNMENT : '+='; +OP_SUB_ASSIGNMENT : '-='; +OP_MULT_ASSIGNMENT : '*='; +OP_DIV_ASSIGNMENT : '/='; +OP_MOD_ASSIGNMENT : '%='; +OP_AND_ASSIGNMENT : '&='; +OP_OR_ASSIGNMENT : '|='; +OP_XOR_ASSIGNMENT : '^='; +OP_LEFT_SHIFT : '<<'; +OP_LEFT_SHIFT_ASSIGNMENT : '<<='; +OP_COALESCING_ASSIGNMENT : '??='; +OP_RANGE : '..'; // https://msdn.microsoft.com/en-us/library/dn961160.aspx mode INTERPOLATION_STRING; -DOUBLE_CURLY_INSIDE: '{{'; -OPEN_BRACE_INSIDE: '{' { curlyLevels.push(1); } -> skip, pushMode(DEFAULT_MODE); -REGULAR_CHAR_INSIDE: { !verbatium }? SimpleEscapeSequence; -VERBATIUM_DOUBLE_QUOTE_INSIDE: { verbatium }? '""'; -DOUBLE_QUOTE_INSIDE: '"' { interpolatedStringLevel--; interpolatedVerbatiums.pop(); - verbatium = (interpolatedVerbatiums.size() > 0 ? interpolatedVerbatiums.peek() : false); } -> popMode; -REGULAR_STRING_INSIDE: { !verbatium }? ~('{' | '\\' | '"')+; -VERBATIUM_INSIDE_STRING: { verbatium }? ~('{' | '"')+; +DOUBLE_CURLY_INSIDE : '{{'; +OPEN_BRACE_INSIDE : '{' { this.OpenBraceInside(); } -> skip, pushMode(DEFAULT_MODE); +REGULAR_CHAR_INSIDE : { this.IsRegularCharInside() }? SimpleEscapeSequence; +VERBATIUM_DOUBLE_QUOTE_INSIDE : { this.IsVerbatiumDoubleQuoteInside() }? '""'; +DOUBLE_QUOTE_INSIDE : '"' { this.OnDoubleQuoteInside(); } -> popMode; +REGULAR_STRING_INSIDE : { this.IsRegularCharInside() }? ~('{' | '\\' | '"')+; +VERBATIUM_INSIDE_STRING : { this.IsVerbatiumDoubleQuoteInside() }? ~('{' | '"')+; mode INTERPOLATION_FORMAT; -DOUBLE_CURLY_CLOSE_INSIDE: '}}' -> type(FORMAT_STRING); -CLOSE_BRACE_INSIDE: '}' { curlyLevels.pop(); } -> skip, popMode; -FORMAT_STRING: ~'}'+; +DOUBLE_CURLY_CLOSE_INSIDE : '}}' -> type(FORMAT_STRING); +CLOSE_BRACE_INSIDE : '}' { this.OnCloseBraceInside(); } -> skip, popMode; +FORMAT_STRING : ~'}'+; mode DIRECTIVE_MODE; -DIRECTIVE_WHITESPACES: Whitespace+ -> channel(HIDDEN); -DIGITS: [0-9]+ -> channel(DIRECTIVE); -DIRECTIVE_TRUE: 'true' -> channel(DIRECTIVE), type(TRUE); -DIRECTIVE_FALSE: 'false' -> channel(DIRECTIVE), type(FALSE); -DEFINE: 'define' -> channel(DIRECTIVE); -UNDEF: 'undef' -> channel(DIRECTIVE); -DIRECTIVE_IF: 'if' -> channel(DIRECTIVE), type(IF); -ELIF: 'elif' -> channel(DIRECTIVE); -DIRECTIVE_ELSE: 'else' -> channel(DIRECTIVE), type(ELSE); -ENDIF: 'endif' -> channel(DIRECTIVE); -LINE: 'line' -> channel(DIRECTIVE); -ERROR: 'error' Whitespace+ -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); -WARNING: 'warning' Whitespace+ -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); -REGION: 'region' Whitespace* -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); -ENDREGION: 'endregion' Whitespace* -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); -PRAGMA: 'pragma' Whitespace+ -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); -NULLABLE: 'nullable' Whitespace+ -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); -DIRECTIVE_DEFAULT: 'default' -> channel(DIRECTIVE), type(DEFAULT); -DIRECTIVE_HIDDEN: 'hidden' -> channel(DIRECTIVE); -DIRECTIVE_OPEN_PARENS: '(' -> channel(DIRECTIVE), type(OPEN_PARENS); -DIRECTIVE_CLOSE_PARENS: ')' -> channel(DIRECTIVE), type(CLOSE_PARENS); -DIRECTIVE_BANG: '!' -> channel(DIRECTIVE), type(BANG); -DIRECTIVE_OP_EQ: '==' -> channel(DIRECTIVE), type(OP_EQ); -DIRECTIVE_OP_NE: '!=' -> channel(DIRECTIVE), type(OP_NE); -DIRECTIVE_OP_AND: '&&' -> channel(DIRECTIVE), type(OP_AND); -DIRECTIVE_OP_OR: '||' -> channel(DIRECTIVE), type(OP_OR); -DIRECTIVE_STRING: '"' ~('"' | [\r\n\u0085\u2028\u2029])* '"' -> channel(DIRECTIVE), type(STRING); -CONDITIONAL_SYMBOL: IdentifierOrKeyword -> channel(DIRECTIVE); -DIRECTIVE_SINGLE_LINE_COMMENT: '//' ~[\r\n\u0085\u2028\u2029]* -> channel(COMMENTS_CHANNEL), type(SINGLE_LINE_COMMENT); -DIRECTIVE_NEW_LINE: NewLine -> channel(DIRECTIVE), mode(DEFAULT_MODE); +DIRECTIVE_WHITESPACES : Whitespace+ -> channel(HIDDEN); +DIGITS : [0-9]+ -> channel(DIRECTIVE); +DIRECTIVE_TRUE : 'true' -> channel(DIRECTIVE), type(TRUE); +DIRECTIVE_FALSE : 'false' -> channel(DIRECTIVE), type(FALSE); +DEFINE : 'define' -> channel(DIRECTIVE); +UNDEF : 'undef' -> channel(DIRECTIVE); +DIRECTIVE_IF : 'if' -> channel(DIRECTIVE), type(IF); +ELIF : 'elif' -> channel(DIRECTIVE); +DIRECTIVE_ELSE : 'else' -> channel(DIRECTIVE), type(ELSE); +ENDIF : 'endif' -> channel(DIRECTIVE); +LINE : 'line' -> channel(DIRECTIVE); +ERROR : 'error' Whitespace+ -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); +WARNING : 'warning' Whitespace+ -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); +REGION : 'region' Whitespace* -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); +ENDREGION : 'endregion' Whitespace* -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); +PRAGMA : 'pragma' Whitespace+ -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); +NULLABLE : 'nullable' Whitespace+ -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT); +DIRECTIVE_DEFAULT : 'default' -> channel(DIRECTIVE), type(DEFAULT); +DIRECTIVE_HIDDEN : 'hidden' -> channel(DIRECTIVE); +DIRECTIVE_OPEN_PARENS : '(' -> channel(DIRECTIVE), type(OPEN_PARENS); +DIRECTIVE_CLOSE_PARENS : ')' -> channel(DIRECTIVE), type(CLOSE_PARENS); +DIRECTIVE_BANG : '!' -> channel(DIRECTIVE), type(BANG); +DIRECTIVE_OP_EQ : '==' -> channel(DIRECTIVE), type(OP_EQ); +DIRECTIVE_OP_NE : '!=' -> channel(DIRECTIVE), type(OP_NE); +DIRECTIVE_OP_AND : '&&' -> channel(DIRECTIVE), type(OP_AND); +DIRECTIVE_OP_OR : '||' -> channel(DIRECTIVE), type(OP_OR); +DIRECTIVE_STRING: + '"' ~('"' | [\r\n\u0085\u2028\u2029])* '"' -> channel(DIRECTIVE), type(STRING) +; +CONDITIONAL_SYMBOL: IdentifierOrKeyword -> channel(DIRECTIVE); +DIRECTIVE_SINGLE_LINE_COMMENT: + '//' ~[\r\n\u0085\u2028\u2029]* -> channel(COMMENTS_CHANNEL), type(SINGLE_LINE_COMMENT) +; +DIRECTIVE_NEW_LINE: NewLine -> channel(DIRECTIVE), mode(DEFAULT_MODE); mode DIRECTIVE_TEXT; -TEXT: ~[\r\n\u0085\u2028\u2029]+ -> channel(DIRECTIVE); -TEXT_NEW_LINE: NewLine -> channel(DIRECTIVE), type(DIRECTIVE_NEW_LINE), mode(DEFAULT_MODE); +TEXT : ~[\r\n\u0085\u2028\u2029]+ -> channel(DIRECTIVE); +TEXT_NEW_LINE : NewLine -> channel(DIRECTIVE), type(DIRECTIVE_NEW_LINE), mode(DEFAULT_MODE); // Fragments -fragment InputCharacter: ~[\r\n\u0085\u2028\u2029]; +fragment InputCharacter: ~[\r\n\u0085\u2028\u2029]; -fragment NewLineCharacter - : '\u000D' //'' - | '\u000A' //'' - | '\u0085' //'' - | '\u2028' //'' - | '\u2029' //'' - ; +fragment NewLineCharacter: + '\u000D' //'' + | '\u000A' //'' + | '\u0085' //'' + | '\u2028' //'' + | '\u2029' //'' +; -fragment IntegerTypeSuffix: [lL]? [uU] | [uU]? [lL]; -fragment ExponentPart: [eE] ('+' | '-')? [0-9] ('_'* [0-9])*; +fragment IntegerTypeSuffix : [lL]? [uU] | [uU]? [lL]; +fragment ExponentPart : [eE] ('+' | '-')? [0-9] ('_'* [0-9])*; -fragment CommonCharacter - : SimpleEscapeSequence - | HexEscapeSequence - | UnicodeEscapeSequence - ; +fragment CommonCharacter: SimpleEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence; -fragment SimpleEscapeSequence - : '\\\'' - | '\\"' - | '\\\\' - | '\\0' - | '\\a' - | '\\b' - | '\\f' - | '\\n' - | '\\r' - | '\\t' - | '\\v' - ; +fragment SimpleEscapeSequence: + '\\\'' + | '\\"' + | '\\\\' + | '\\0' + | '\\a' + | '\\b' + | '\\f' + | '\\n' + | '\\r' + | '\\t' + | '\\v' +; -fragment HexEscapeSequence - : '\\x' HexDigit - | '\\x' HexDigit HexDigit - | '\\x' HexDigit HexDigit HexDigit - | '\\x' HexDigit HexDigit HexDigit HexDigit - ; +fragment HexEscapeSequence: + '\\x' HexDigit + | '\\x' HexDigit HexDigit + | '\\x' HexDigit HexDigit HexDigit + | '\\x' HexDigit HexDigit HexDigit HexDigit +; -fragment NewLine - : '\r\n' | '\r' | '\n' - | '\u0085' // ' - | '\u2028' //'' - | '\u2029' //'' - ; +fragment NewLine: + '\r\n' + | '\r' + | '\n' + | '\u0085' // ' + | '\u2028' //'' + | '\u2029' //'' +; -fragment Whitespace - : UnicodeClassZS //'' - | '\u0009' //'' - | '\u000B' //'' - | '\u000C' //'
' - ; +fragment Whitespace: + UnicodeClassZS //'' + | '\u0009' //'' + | '\u000B' //'' + | '\u000C' //'' +; -fragment UnicodeClassZS - : '\u0020' // SPACE - | '\u00A0' // NO_BREAK SPACE - | '\u1680' // OGHAM SPACE MARK - | '\u180E' // MONGOLIAN VOWEL SEPARATOR - | '\u2000' // EN QUAD - | '\u2001' // EM QUAD - | '\u2002' // EN SPACE - | '\u2003' // EM SPACE - | '\u2004' // THREE_PER_EM SPACE - | '\u2005' // FOUR_PER_EM SPACE - | '\u2006' // SIX_PER_EM SPACE - | '\u2008' // PUNCTUATION SPACE - | '\u2009' // THIN SPACE - | '\u200A' // HAIR SPACE - | '\u202F' // NARROW NO_BREAK SPACE - | '\u3000' // IDEOGRAPHIC SPACE - | '\u205F' // MEDIUM MATHEMATICAL SPACE - ; +fragment UnicodeClassZS: + '\u0020' // SPACE + | '\u00A0' // NO_BREAK SPACE + | '\u1680' // OGHAM SPACE MARK + | '\u180E' // MONGOLIAN VOWEL SEPARATOR + | '\u2000' // EN QUAD + | '\u2001' // EM QUAD + | '\u2002' // EN SPACE + | '\u2003' // EM SPACE + | '\u2004' // THREE_PER_EM SPACE + | '\u2005' // FOUR_PER_EM SPACE + | '\u2006' // SIX_PER_EM SPACE + | '\u2008' // PUNCTUATION SPACE + | '\u2009' // THIN SPACE + | '\u200A' // HAIR SPACE + | '\u202F' // NARROW NO_BREAK SPACE + | '\u3000' // IDEOGRAPHIC SPACE + | '\u205F' // MEDIUM MATHEMATICAL SPACE +; -fragment IdentifierOrKeyword - : IdentifierStartCharacter IdentifierPartCharacter* - ; +fragment IdentifierOrKeyword: IdentifierStartCharacter IdentifierPartCharacter*; -fragment IdentifierStartCharacter - : LetterCharacter - | '_' - ; +fragment IdentifierStartCharacter: LetterCharacter | '_'; -fragment IdentifierPartCharacter - : LetterCharacter - | DecimalDigitCharacter - | ConnectingCharacter - | CombiningCharacter - | FormattingCharacter - ; +fragment IdentifierPartCharacter: + LetterCharacter + | DecimalDigitCharacter + | ConnectingCharacter + | CombiningCharacter + | FormattingCharacter +; //'' // WARNING: ignores UnicodeEscapeSequence -fragment LetterCharacter - : UnicodeClassLU - | UnicodeClassLL - | UnicodeClassLT - | UnicodeClassLM - | UnicodeClassLO - | UnicodeClassNL - | UnicodeEscapeSequence - ; +fragment LetterCharacter: + UnicodeClassLU + | UnicodeClassLL + | UnicodeClassLT + | UnicodeClassLM + | UnicodeClassLO + | UnicodeClassNL + | UnicodeEscapeSequence +; //'' // WARNING: ignores UnicodeEscapeSequence -fragment DecimalDigitCharacter - : UnicodeClassND - | UnicodeEscapeSequence - ; +fragment DecimalDigitCharacter: UnicodeClassND | UnicodeEscapeSequence; //'' // WARNING: ignores UnicodeEscapeSequence -fragment ConnectingCharacter - : UnicodeClassPC - | UnicodeEscapeSequence - ; +fragment ConnectingCharacter: UnicodeClassPC | UnicodeEscapeSequence; //'' // WARNING: ignores UnicodeEscapeSequence -fragment CombiningCharacter - : UnicodeClassMN - | UnicodeClassMC - | UnicodeEscapeSequence - ; +fragment CombiningCharacter: UnicodeClassMN | UnicodeClassMC | UnicodeEscapeSequence; //'' // WARNING: ignores UnicodeEscapeSequence -fragment FormattingCharacter - : UnicodeClassCF - | UnicodeEscapeSequence - ; +fragment FormattingCharacter: UnicodeClassCF | UnicodeEscapeSequence; //B.1.5 Unicode Character Escape Sequences -fragment UnicodeEscapeSequence - : '\\u' HexDigit HexDigit HexDigit HexDigit - | '\\U' HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit - ; +fragment UnicodeEscapeSequence: + '\\u' HexDigit HexDigit HexDigit HexDigit + | '\\U' HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit +; -fragment HexDigit : [0-9] | [A-F] | [a-f]; +fragment HexDigit: [0-9] | [A-F] | [a-f]; // Unicode character classes -fragment UnicodeClassLU - : '\u0041'..'\u005a' - | '\u00c0'..'\u00d6' - | '\u00d8'..'\u00de' - | '\u0100'..'\u0136' - | '\u0139'..'\u0147' - | '\u014a'..'\u0178' - | '\u0179'..'\u017d' - | '\u0181'..'\u0182' - | '\u0184'..'\u0186' - | '\u0187'..'\u0189' - | '\u018a'..'\u018b' - | '\u018e'..'\u0191' - | '\u0193'..'\u0194' - | '\u0196'..'\u0198' - | '\u019c'..'\u019d' - | '\u019f'..'\u01a0' - | '\u01a2'..'\u01a6' - | '\u01a7'..'\u01a9' - | '\u01ac'..'\u01ae' - | '\u01af'..'\u01b1' - | '\u01b2'..'\u01b3' - | '\u01b5'..'\u01b7' - | '\u01b8'..'\u01bc' - | '\u01c4'..'\u01cd' - | '\u01cf'..'\u01db' - | '\u01de'..'\u01ee' - | '\u01f1'..'\u01f4' - | '\u01f6'..'\u01f8' - | '\u01fa'..'\u0232' - | '\u023a'..'\u023b' - | '\u023d'..'\u023e' - | '\u0241'..'\u0243' - | '\u0244'..'\u0246' - | '\u0248'..'\u024e' - | '\u0370'..'\u0372' - | '\u0376'..'\u037f' - | '\u0386'..'\u0388' - | '\u0389'..'\u038a' - | '\u038c'..'\u038e' - | '\u038f'..'\u0391' - | '\u0392'..'\u03a1' - | '\u03a3'..'\u03ab' - | '\u03cf'..'\u03d2' - | '\u03d3'..'\u03d4' - | '\u03d8'..'\u03ee' - | '\u03f4'..'\u03f7' - | '\u03f9'..'\u03fa' - | '\u03fd'..'\u042f' - | '\u0460'..'\u0480' - | '\u048a'..'\u04c0' - | '\u04c1'..'\u04cd' - | '\u04d0'..'\u052e' - | '\u0531'..'\u0556' - | '\u10a0'..'\u10c5' - | '\u10c7'..'\u10cd' - | '\u1e00'..'\u1e94' - | '\u1e9e'..'\u1efe' - | '\u1f08'..'\u1f0f' - | '\u1f18'..'\u1f1d' - | '\u1f28'..'\u1f2f' - | '\u1f38'..'\u1f3f' - | '\u1f48'..'\u1f4d' - | '\u1f59'..'\u1f5f' - | '\u1f68'..'\u1f6f' - | '\u1fb8'..'\u1fbb' - | '\u1fc8'..'\u1fcb' - | '\u1fd8'..'\u1fdb' - | '\u1fe8'..'\u1fec' - | '\u1ff8'..'\u1ffb' - | '\u2102'..'\u2107' - | '\u210b'..'\u210d' - | '\u2110'..'\u2112' - | '\u2115'..'\u2119' - | '\u211a'..'\u211d' - | '\u2124'..'\u212a' - | '\u212b'..'\u212d' - | '\u2130'..'\u2133' - | '\u213e'..'\u213f' - | '\u2145'..'\u2183' - | '\u2c00'..'\u2c2e' - | '\u2c60'..'\u2c62' - | '\u2c63'..'\u2c64' - | '\u2c67'..'\u2c6d' - | '\u2c6e'..'\u2c70' - | '\u2c72'..'\u2c75' - | '\u2c7e'..'\u2c80' - | '\u2c82'..'\u2ce2' - | '\u2ceb'..'\u2ced' - | '\u2cf2'..'\ua640' - | '\ua642'..'\ua66c' - | '\ua680'..'\ua69a' - | '\ua722'..'\ua72e' - | '\ua732'..'\ua76e' - | '\ua779'..'\ua77d' - | '\ua77e'..'\ua786' - | '\ua78b'..'\ua78d' - | '\ua790'..'\ua792' - | '\ua796'..'\ua7aa' - | '\ua7ab'..'\ua7ad' - | '\ua7b0'..'\ua7b1' - | '\uff21'..'\uff3a' - ; +fragment UnicodeClassLU: + '\u0041' ..'\u005a' + | '\u00c0' ..'\u00d6' + | '\u00d8' ..'\u00de' + | '\u0100' ..'\u0136' + | '\u0139' ..'\u0147' + | '\u014a' ..'\u0178' + | '\u0179' ..'\u017d' + | '\u0181' ..'\u0182' + | '\u0184' ..'\u0186' + | '\u0187' ..'\u0189' + | '\u018a' ..'\u018b' + | '\u018e' ..'\u0191' + | '\u0193' ..'\u0194' + | '\u0196' ..'\u0198' + | '\u019c' ..'\u019d' + | '\u019f' ..'\u01a0' + | '\u01a2' ..'\u01a6' + | '\u01a7' ..'\u01a9' + | '\u01ac' ..'\u01ae' + | '\u01af' ..'\u01b1' + | '\u01b2' ..'\u01b3' + | '\u01b5' ..'\u01b7' + | '\u01b8' ..'\u01bc' + | '\u01c4' ..'\u01cd' + | '\u01cf' ..'\u01db' + | '\u01de' ..'\u01ee' + | '\u01f1' ..'\u01f4' + | '\u01f6' ..'\u01f8' + | '\u01fa' ..'\u0232' + | '\u023a' ..'\u023b' + | '\u023d' ..'\u023e' + | '\u0241' ..'\u0243' + | '\u0244' ..'\u0246' + | '\u0248' ..'\u024e' + | '\u0370' ..'\u0372' + | '\u0376' ..'\u037f' + | '\u0386' ..'\u0388' + | '\u0389' ..'\u038a' + | '\u038c' ..'\u038e' + | '\u038f' ..'\u0391' + | '\u0392' ..'\u03a1' + | '\u03a3' ..'\u03ab' + | '\u03cf' ..'\u03d2' + | '\u03d3' ..'\u03d4' + | '\u03d8' ..'\u03ee' + | '\u03f4' ..'\u03f7' + | '\u03f9' ..'\u03fa' + | '\u03fd' ..'\u042f' + | '\u0460' ..'\u0480' + | '\u048a' ..'\u04c0' + | '\u04c1' ..'\u04cd' + | '\u04d0' ..'\u052e' + | '\u0531' ..'\u0556' + | '\u10a0' ..'\u10c5' + | '\u10c7' ..'\u10cd' + | '\u1e00' ..'\u1e94' + | '\u1e9e' ..'\u1efe' + | '\u1f08' ..'\u1f0f' + | '\u1f18' ..'\u1f1d' + | '\u1f28' ..'\u1f2f' + | '\u1f38' ..'\u1f3f' + | '\u1f48' ..'\u1f4d' + | '\u1f59' ..'\u1f5f' + | '\u1f68' ..'\u1f6f' + | '\u1fb8' ..'\u1fbb' + | '\u1fc8' ..'\u1fcb' + | '\u1fd8' ..'\u1fdb' + | '\u1fe8' ..'\u1fec' + | '\u1ff8' ..'\u1ffb' + | '\u2102' ..'\u2107' + | '\u210b' ..'\u210d' + | '\u2110' ..'\u2112' + | '\u2115' ..'\u2119' + | '\u211a' ..'\u211d' + | '\u2124' ..'\u212a' + | '\u212b' ..'\u212d' + | '\u2130' ..'\u2133' + | '\u213e' ..'\u213f' + | '\u2145' ..'\u2183' + | '\u2c00' ..'\u2c2e' + | '\u2c60' ..'\u2c62' + | '\u2c63' ..'\u2c64' + | '\u2c67' ..'\u2c6d' + | '\u2c6e' ..'\u2c70' + | '\u2c72' ..'\u2c75' + | '\u2c7e' ..'\u2c80' + | '\u2c82' ..'\u2ce2' + | '\u2ceb' ..'\u2ced' + | '\u2cf2' ..'\ua640' + | '\ua642' ..'\ua66c' + | '\ua680' ..'\ua69a' + | '\ua722' ..'\ua72e' + | '\ua732' ..'\ua76e' + | '\ua779' ..'\ua77d' + | '\ua77e' ..'\ua786' + | '\ua78b' ..'\ua78d' + | '\ua790' ..'\ua792' + | '\ua796' ..'\ua7aa' + | '\ua7ab' ..'\ua7ad' + | '\ua7b0' ..'\ua7b1' + | '\uff21' ..'\uff3a' +; -fragment UnicodeClassLL - : '\u0061'..'\u007A' - | '\u00b5'..'\u00df' - | '\u00e0'..'\u00f6' - | '\u00f8'..'\u00ff' - | '\u0101'..'\u0137' - | '\u0138'..'\u0148' - | '\u0149'..'\u0177' - | '\u017a'..'\u017e' - | '\u017f'..'\u0180' - | '\u0183'..'\u0185' - | '\u0188'..'\u018c' - | '\u018d'..'\u0192' - | '\u0195'..'\u0199' - | '\u019a'..'\u019b' - | '\u019e'..'\u01a1' - | '\u01a3'..'\u01a5' - | '\u01a8'..'\u01aa' - | '\u01ab'..'\u01ad' - | '\u01b0'..'\u01b4' - | '\u01b6'..'\u01b9' - | '\u01ba'..'\u01bd' - | '\u01be'..'\u01bf' - | '\u01c6'..'\u01cc' - | '\u01ce'..'\u01dc' - | '\u01dd'..'\u01ef' - | '\u01f0'..'\u01f3' - | '\u01f5'..'\u01f9' - | '\u01fb'..'\u0233' - | '\u0234'..'\u0239' - | '\u023c'..'\u023f' - | '\u0240'..'\u0242' - | '\u0247'..'\u024f' - | '\u0250'..'\u0293' - | '\u0295'..'\u02af' - | '\u0371'..'\u0373' - | '\u0377'..'\u037b' - | '\u037c'..'\u037d' - | '\u0390'..'\u03ac' - | '\u03ad'..'\u03ce' - | '\u03d0'..'\u03d1' - | '\u03d5'..'\u03d7' - | '\u03d9'..'\u03ef' - | '\u03f0'..'\u03f3' - | '\u03f5'..'\u03fb' - | '\u03fc'..'\u0430' - | '\u0431'..'\u045f' - | '\u0461'..'\u0481' - | '\u048b'..'\u04bf' - | '\u04c2'..'\u04ce' - | '\u04cf'..'\u052f' - | '\u0561'..'\u0587' - | '\u1d00'..'\u1d2b' - | '\u1d6b'..'\u1d77' - | '\u1d79'..'\u1d9a' - | '\u1e01'..'\u1e95' - | '\u1e96'..'\u1e9d' - | '\u1e9f'..'\u1eff' - | '\u1f00'..'\u1f07' - | '\u1f10'..'\u1f15' - | '\u1f20'..'\u1f27' - | '\u1f30'..'\u1f37' - | '\u1f40'..'\u1f45' - | '\u1f50'..'\u1f57' - | '\u1f60'..'\u1f67' - | '\u1f70'..'\u1f7d' - | '\u1f80'..'\u1f87' - | '\u1f90'..'\u1f97' - | '\u1fa0'..'\u1fa7' - | '\u1fb0'..'\u1fb4' - | '\u1fb6'..'\u1fb7' - | '\u1fbe'..'\u1fc2' - | '\u1fc3'..'\u1fc4' - | '\u1fc6'..'\u1fc7' - | '\u1fd0'..'\u1fd3' - | '\u1fd6'..'\u1fd7' - | '\u1fe0'..'\u1fe7' - | '\u1ff2'..'\u1ff4' - | '\u1ff6'..'\u1ff7' - | '\u210a'..'\u210e' - | '\u210f'..'\u2113' - | '\u212f'..'\u2139' - | '\u213c'..'\u213d' - | '\u2146'..'\u2149' - | '\u214e'..'\u2184' - | '\u2c30'..'\u2c5e' - | '\u2c61'..'\u2c65' - | '\u2c66'..'\u2c6c' - | '\u2c71'..'\u2c73' - | '\u2c74'..'\u2c76' - | '\u2c77'..'\u2c7b' - | '\u2c81'..'\u2ce3' - | '\u2ce4'..'\u2cec' - | '\u2cee'..'\u2cf3' - | '\u2d00'..'\u2d25' - | '\u2d27'..'\u2d2d' - | '\ua641'..'\ua66d' - | '\ua681'..'\ua69b' - | '\ua723'..'\ua72f' - | '\ua730'..'\ua731' - | '\ua733'..'\ua771' - | '\ua772'..'\ua778' - | '\ua77a'..'\ua77c' - | '\ua77f'..'\ua787' - | '\ua78c'..'\ua78e' - | '\ua791'..'\ua793' - | '\ua794'..'\ua795' - | '\ua797'..'\ua7a9' - | '\ua7fa'..'\uab30' - | '\uab31'..'\uab5a' - | '\uab64'..'\uab65' - | '\ufb00'..'\ufb06' - | '\ufb13'..'\ufb17' - | '\uff41'..'\uff5a' - ; +fragment UnicodeClassLL: + '\u0061' ..'\u007A' + | '\u00b5' ..'\u00df' + | '\u00e0' ..'\u00f6' + | '\u00f8' ..'\u00ff' + | '\u0101' ..'\u0137' + | '\u0138' ..'\u0148' + | '\u0149' ..'\u0177' + | '\u017a' ..'\u017e' + | '\u017f' ..'\u0180' + | '\u0183' ..'\u0185' + | '\u0188' ..'\u018c' + | '\u018d' ..'\u0192' + | '\u0195' ..'\u0199' + | '\u019a' ..'\u019b' + | '\u019e' ..'\u01a1' + | '\u01a3' ..'\u01a5' + | '\u01a8' ..'\u01aa' + | '\u01ab' ..'\u01ad' + | '\u01b0' ..'\u01b4' + | '\u01b6' ..'\u01b9' + | '\u01ba' ..'\u01bd' + | '\u01be' ..'\u01bf' + | '\u01c6' ..'\u01cc' + | '\u01ce' ..'\u01dc' + | '\u01dd' ..'\u01ef' + | '\u01f0' ..'\u01f3' + | '\u01f5' ..'\u01f9' + | '\u01fb' ..'\u0233' + | '\u0234' ..'\u0239' + | '\u023c' ..'\u023f' + | '\u0240' ..'\u0242' + | '\u0247' ..'\u024f' + | '\u0250' ..'\u0293' + | '\u0295' ..'\u02af' + | '\u0371' ..'\u0373' + | '\u0377' ..'\u037b' + | '\u037c' ..'\u037d' + | '\u0390' ..'\u03ac' + | '\u03ad' ..'\u03ce' + | '\u03d0' ..'\u03d1' + | '\u03d5' ..'\u03d7' + | '\u03d9' ..'\u03ef' + | '\u03f0' ..'\u03f3' + | '\u03f5' ..'\u03fb' + | '\u03fc' ..'\u0430' + | '\u0431' ..'\u045f' + | '\u0461' ..'\u0481' + | '\u048b' ..'\u04bf' + | '\u04c2' ..'\u04ce' + | '\u04cf' ..'\u052f' + | '\u0561' ..'\u0587' + | '\u1d00' ..'\u1d2b' + | '\u1d6b' ..'\u1d77' + | '\u1d79' ..'\u1d9a' + | '\u1e01' ..'\u1e95' + | '\u1e96' ..'\u1e9d' + | '\u1e9f' ..'\u1eff' + | '\u1f00' ..'\u1f07' + | '\u1f10' ..'\u1f15' + | '\u1f20' ..'\u1f27' + | '\u1f30' ..'\u1f37' + | '\u1f40' ..'\u1f45' + | '\u1f50' ..'\u1f57' + | '\u1f60' ..'\u1f67' + | '\u1f70' ..'\u1f7d' + | '\u1f80' ..'\u1f87' + | '\u1f90' ..'\u1f97' + | '\u1fa0' ..'\u1fa7' + | '\u1fb0' ..'\u1fb4' + | '\u1fb6' ..'\u1fb7' + | '\u1fbe' ..'\u1fc2' + | '\u1fc3' ..'\u1fc4' + | '\u1fc6' ..'\u1fc7' + | '\u1fd0' ..'\u1fd3' + | '\u1fd6' ..'\u1fd7' + | '\u1fe0' ..'\u1fe7' + | '\u1ff2' ..'\u1ff4' + | '\u1ff6' ..'\u1ff7' + | '\u210a' ..'\u210e' + | '\u210f' ..'\u2113' + | '\u212f' ..'\u2139' + | '\u213c' ..'\u213d' + | '\u2146' ..'\u2149' + | '\u214e' ..'\u2184' + | '\u2c30' ..'\u2c5e' + | '\u2c61' ..'\u2c65' + | '\u2c66' ..'\u2c6c' + | '\u2c71' ..'\u2c73' + | '\u2c74' ..'\u2c76' + | '\u2c77' ..'\u2c7b' + | '\u2c81' ..'\u2ce3' + | '\u2ce4' ..'\u2cec' + | '\u2cee' ..'\u2cf3' + | '\u2d00' ..'\u2d25' + | '\u2d27' ..'\u2d2d' + | '\ua641' ..'\ua66d' + | '\ua681' ..'\ua69b' + | '\ua723' ..'\ua72f' + | '\ua730' ..'\ua731' + | '\ua733' ..'\ua771' + | '\ua772' ..'\ua778' + | '\ua77a' ..'\ua77c' + | '\ua77f' ..'\ua787' + | '\ua78c' ..'\ua78e' + | '\ua791' ..'\ua793' + | '\ua794' ..'\ua795' + | '\ua797' ..'\ua7a9' + | '\ua7fa' ..'\uab30' + | '\uab31' ..'\uab5a' + | '\uab64' ..'\uab65' + | '\ufb00' ..'\ufb06' + | '\ufb13' ..'\ufb17' + | '\uff41' ..'\uff5a' +; -fragment UnicodeClassLT - : '\u01c5'..'\u01cb' - | '\u01f2'..'\u1f88' - | '\u1f89'..'\u1f8f' - | '\u1f98'..'\u1f9f' - | '\u1fa8'..'\u1faf' - | '\u1fbc'..'\u1fcc' - | '\u1ffc'..'\u1ffc' - ; +fragment UnicodeClassLT: + '\u01c5' ..'\u01cb' + | '\u01f2' ..'\u1f88' + | '\u1f89' ..'\u1f8f' + | '\u1f98' ..'\u1f9f' + | '\u1fa8' ..'\u1faf' + | '\u1fbc' ..'\u1fcc' + | '\u1ffc' ..'\u1ffc' +; -fragment UnicodeClassLM - : '\u02b0'..'\u02c1' - | '\u02c6'..'\u02d1' - | '\u02e0'..'\u02e4' - | '\u02ec'..'\u02ee' - | '\u0374'..'\u037a' - | '\u0559'..'\u0640' - | '\u06e5'..'\u06e6' - | '\u07f4'..'\u07f5' - | '\u07fa'..'\u081a' - | '\u0824'..'\u0828' - | '\u0971'..'\u0e46' - | '\u0ec6'..'\u10fc' - | '\u17d7'..'\u1843' - | '\u1aa7'..'\u1c78' - | '\u1c79'..'\u1c7d' - | '\u1d2c'..'\u1d6a' - | '\u1d78'..'\u1d9b' - | '\u1d9c'..'\u1dbf' - | '\u2071'..'\u207f' - | '\u2090'..'\u209c' - | '\u2c7c'..'\u2c7d' - | '\u2d6f'..'\u2e2f' - | '\u3005'..'\u3031' - | '\u3032'..'\u3035' - | '\u303b'..'\u309d' - | '\u309e'..'\u30fc' - | '\u30fd'..'\u30fe' - | '\ua015'..'\ua4f8' - | '\ua4f9'..'\ua4fd' - | '\ua60c'..'\ua67f' - | '\ua69c'..'\ua69d' - | '\ua717'..'\ua71f' - | '\ua770'..'\ua788' - | '\ua7f8'..'\ua7f9' - | '\ua9cf'..'\ua9e6' - | '\uaa70'..'\uaadd' - | '\uaaf3'..'\uaaf4' - | '\uab5c'..'\uab5f' - | '\uff70'..'\uff9e' - | '\uff9f'..'\uff9f' - ; +fragment UnicodeClassLM: + '\u02b0' ..'\u02c1' + | '\u02c6' ..'\u02d1' + | '\u02e0' ..'\u02e4' + | '\u02ec' ..'\u02ee' + | '\u0374' ..'\u037a' + | '\u0559' ..'\u0640' + | '\u06e5' ..'\u06e6' + | '\u07f4' ..'\u07f5' + | '\u07fa' ..'\u081a' + | '\u0824' ..'\u0828' + | '\u0971' ..'\u0e46' + | '\u0ec6' ..'\u10fc' + | '\u17d7' ..'\u1843' + | '\u1aa7' ..'\u1c78' + | '\u1c79' ..'\u1c7d' + | '\u1d2c' ..'\u1d6a' + | '\u1d78' ..'\u1d9b' + | '\u1d9c' ..'\u1dbf' + | '\u2071' ..'\u207f' + | '\u2090' ..'\u209c' + | '\u2c7c' ..'\u2c7d' + | '\u2d6f' ..'\u2e2f' + | '\u3005' ..'\u3031' + | '\u3032' ..'\u3035' + | '\u303b' ..'\u309d' + | '\u309e' ..'\u30fc' + | '\u30fd' ..'\u30fe' + | '\ua015' ..'\ua4f8' + | '\ua4f9' ..'\ua4fd' + | '\ua60c' ..'\ua67f' + | '\ua69c' ..'\ua69d' + | '\ua717' ..'\ua71f' + | '\ua770' ..'\ua788' + | '\ua7f8' ..'\ua7f9' + | '\ua9cf' ..'\ua9e6' + | '\uaa70' ..'\uaadd' + | '\uaaf3' ..'\uaaf4' + | '\uab5c' ..'\uab5f' + | '\uff70' ..'\uff9e' + | '\uff9f' ..'\uff9f' +; -fragment UnicodeClassLO - : '\u00aa'..'\u00ba' - | '\u01bb'..'\u01c0' - | '\u01c1'..'\u01c3' - | '\u0294'..'\u05d0' - | '\u05d1'..'\u05ea' - | '\u05f0'..'\u05f2' - | '\u0620'..'\u063f' - | '\u0641'..'\u064a' - | '\u066e'..'\u066f' - | '\u0671'..'\u06d3' - | '\u06d5'..'\u06ee' - | '\u06ef'..'\u06fa' - | '\u06fb'..'\u06fc' - | '\u06ff'..'\u0710' - | '\u0712'..'\u072f' - | '\u074d'..'\u07a5' - | '\u07b1'..'\u07ca' - | '\u07cb'..'\u07ea' - | '\u0800'..'\u0815' - | '\u0840'..'\u0858' - | '\u08a0'..'\u08b2' - | '\u0904'..'\u0939' - | '\u093d'..'\u0950' - | '\u0958'..'\u0961' - | '\u0972'..'\u0980' - | '\u0985'..'\u098c' - | '\u098f'..'\u0990' - | '\u0993'..'\u09a8' - | '\u09aa'..'\u09b0' - | '\u09b2'..'\u09b6' - | '\u09b7'..'\u09b9' - | '\u09bd'..'\u09ce' - | '\u09dc'..'\u09dd' - | '\u09df'..'\u09e1' - | '\u09f0'..'\u09f1' - | '\u0a05'..'\u0a0a' - | '\u0a0f'..'\u0a10' - | '\u0a13'..'\u0a28' - | '\u0a2a'..'\u0a30' - | '\u0a32'..'\u0a33' - | '\u0a35'..'\u0a36' - | '\u0a38'..'\u0a39' - | '\u0a59'..'\u0a5c' - | '\u0a5e'..'\u0a72' - | '\u0a73'..'\u0a74' - | '\u0a85'..'\u0a8d' - | '\u0a8f'..'\u0a91' - | '\u0a93'..'\u0aa8' - | '\u0aaa'..'\u0ab0' - | '\u0ab2'..'\u0ab3' - | '\u0ab5'..'\u0ab9' - | '\u0abd'..'\u0ad0' - | '\u0ae0'..'\u0ae1' - | '\u0b05'..'\u0b0c' - | '\u0b0f'..'\u0b10' - | '\u0b13'..'\u0b28' - | '\u0b2a'..'\u0b30' - | '\u0b32'..'\u0b33' - | '\u0b35'..'\u0b39' - | '\u0b3d'..'\u0b5c' - | '\u0b5d'..'\u0b5f' - | '\u0b60'..'\u0b61' - | '\u0b71'..'\u0b83' - | '\u0b85'..'\u0b8a' - | '\u0b8e'..'\u0b90' - | '\u0b92'..'\u0b95' - | '\u0b99'..'\u0b9a' - | '\u0b9c'..'\u0b9e' - | '\u0b9f'..'\u0ba3' - | '\u0ba4'..'\u0ba8' - | '\u0ba9'..'\u0baa' - | '\u0bae'..'\u0bb9' - | '\u0bd0'..'\u0c05' - | '\u0c06'..'\u0c0c' - | '\u0c0e'..'\u0c10' - | '\u0c12'..'\u0c28' - | '\u0c2a'..'\u0c39' - | '\u0c3d'..'\u0c58' - | '\u0c59'..'\u0c60' - | '\u0c61'..'\u0c85' - | '\u0c86'..'\u0c8c' - | '\u0c8e'..'\u0c90' - | '\u0c92'..'\u0ca8' - | '\u0caa'..'\u0cb3' - | '\u0cb5'..'\u0cb9' - | '\u0cbd'..'\u0cde' - | '\u0ce0'..'\u0ce1' - | '\u0cf1'..'\u0cf2' - | '\u0d05'..'\u0d0c' - | '\u0d0e'..'\u0d10' - | '\u0d12'..'\u0d3a' - | '\u0d3d'..'\u0d4e' - | '\u0d60'..'\u0d61' - | '\u0d7a'..'\u0d7f' - | '\u0d85'..'\u0d96' - | '\u0d9a'..'\u0db1' - | '\u0db3'..'\u0dbb' - | '\u0dbd'..'\u0dc0' - | '\u0dc1'..'\u0dc6' - | '\u0e01'..'\u0e30' - | '\u0e32'..'\u0e33' - | '\u0e40'..'\u0e45' - | '\u0e81'..'\u0e82' - | '\u0e84'..'\u0e87' - | '\u0e88'..'\u0e8a' - | '\u0e8d'..'\u0e94' - | '\u0e95'..'\u0e97' - | '\u0e99'..'\u0e9f' - | '\u0ea1'..'\u0ea3' - | '\u0ea5'..'\u0ea7' - | '\u0eaa'..'\u0eab' - | '\u0ead'..'\u0eb0' - | '\u0eb2'..'\u0eb3' - | '\u0ebd'..'\u0ec0' - | '\u0ec1'..'\u0ec4' - | '\u0edc'..'\u0edf' - | '\u0f00'..'\u0f40' - | '\u0f41'..'\u0f47' - | '\u0f49'..'\u0f6c' - | '\u0f88'..'\u0f8c' - | '\u1000'..'\u102a' - | '\u103f'..'\u1050' - | '\u1051'..'\u1055' - | '\u105a'..'\u105d' - | '\u1061'..'\u1065' - | '\u1066'..'\u106e' - | '\u106f'..'\u1070' - | '\u1075'..'\u1081' - | '\u108e'..'\u10d0' - | '\u10d1'..'\u10fa' - | '\u10fd'..'\u1248' - | '\u124a'..'\u124d' - | '\u1250'..'\u1256' - | '\u1258'..'\u125a' - | '\u125b'..'\u125d' - | '\u1260'..'\u1288' - | '\u128a'..'\u128d' - | '\u1290'..'\u12b0' - | '\u12b2'..'\u12b5' - | '\u12b8'..'\u12be' - | '\u12c0'..'\u12c2' - | '\u12c3'..'\u12c5' - | '\u12c8'..'\u12d6' - | '\u12d8'..'\u1310' - | '\u1312'..'\u1315' - | '\u1318'..'\u135a' - | '\u1380'..'\u138f' - | '\u13a0'..'\u13f4' - | '\u1401'..'\u166c' - | '\u166f'..'\u167f' - | '\u1681'..'\u169a' - | '\u16a0'..'\u16ea' - | '\u16f1'..'\u16f8' - | '\u1700'..'\u170c' - | '\u170e'..'\u1711' - | '\u1720'..'\u1731' - | '\u1740'..'\u1751' - | '\u1760'..'\u176c' - | '\u176e'..'\u1770' - | '\u1780'..'\u17b3' - | '\u17dc'..'\u1820' - | '\u1821'..'\u1842' - | '\u1844'..'\u1877' - | '\u1880'..'\u18a8' - | '\u18aa'..'\u18b0' - | '\u18b1'..'\u18f5' - | '\u1900'..'\u191e' - | '\u1950'..'\u196d' - | '\u1970'..'\u1974' - | '\u1980'..'\u19ab' - | '\u19c1'..'\u19c7' - | '\u1a00'..'\u1a16' - | '\u1a20'..'\u1a54' - | '\u1b05'..'\u1b33' - | '\u1b45'..'\u1b4b' - | '\u1b83'..'\u1ba0' - | '\u1bae'..'\u1baf' - | '\u1bba'..'\u1be5' - | '\u1c00'..'\u1c23' - | '\u1c4d'..'\u1c4f' - | '\u1c5a'..'\u1c77' - | '\u1ce9'..'\u1cec' - | '\u1cee'..'\u1cf1' - | '\u1cf5'..'\u1cf6' - | '\u2135'..'\u2138' - | '\u2d30'..'\u2d67' - | '\u2d80'..'\u2d96' - | '\u2da0'..'\u2da6' - | '\u2da8'..'\u2dae' - | '\u2db0'..'\u2db6' - | '\u2db8'..'\u2dbe' - | '\u2dc0'..'\u2dc6' - | '\u2dc8'..'\u2dce' - | '\u2dd0'..'\u2dd6' - | '\u2dd8'..'\u2dde' - | '\u3006'..'\u303c' - | '\u3041'..'\u3096' - | '\u309f'..'\u30a1' - | '\u30a2'..'\u30fa' - | '\u30ff'..'\u3105' - | '\u3106'..'\u312d' - | '\u3131'..'\u318e' - | '\u31a0'..'\u31ba' - | '\u31f0'..'\u31ff' - | '\u3400'..'\u4db5' - | '\u4e00'..'\u9fcc' - | '\ua000'..'\ua014' - | '\ua016'..'\ua48c' - | '\ua4d0'..'\ua4f7' - | '\ua500'..'\ua60b' - | '\ua610'..'\ua61f' - | '\ua62a'..'\ua62b' - | '\ua66e'..'\ua6a0' - | '\ua6a1'..'\ua6e5' - | '\ua7f7'..'\ua7fb' - | '\ua7fc'..'\ua801' - | '\ua803'..'\ua805' - | '\ua807'..'\ua80a' - | '\ua80c'..'\ua822' - | '\ua840'..'\ua873' - | '\ua882'..'\ua8b3' - | '\ua8f2'..'\ua8f7' - | '\ua8fb'..'\ua90a' - | '\ua90b'..'\ua925' - | '\ua930'..'\ua946' - | '\ua960'..'\ua97c' - | '\ua984'..'\ua9b2' - | '\ua9e0'..'\ua9e4' - | '\ua9e7'..'\ua9ef' - | '\ua9fa'..'\ua9fe' - | '\uaa00'..'\uaa28' - | '\uaa40'..'\uaa42' - | '\uaa44'..'\uaa4b' - | '\uaa60'..'\uaa6f' - | '\uaa71'..'\uaa76' - | '\uaa7a'..'\uaa7e' - | '\uaa7f'..'\uaaaf' - | '\uaab1'..'\uaab5' - | '\uaab6'..'\uaab9' - | '\uaaba'..'\uaabd' - | '\uaac0'..'\uaac2' - | '\uaadb'..'\uaadc' - | '\uaae0'..'\uaaea' - | '\uaaf2'..'\uab01' - | '\uab02'..'\uab06' - | '\uab09'..'\uab0e' - | '\uab11'..'\uab16' - | '\uab20'..'\uab26' - | '\uab28'..'\uab2e' - | '\uabc0'..'\uabe2' - | '\uac00'..'\ud7a3' - | '\ud7b0'..'\ud7c6' - | '\ud7cb'..'\ud7fb' - | '\uf900'..'\ufa6d' - | '\ufa70'..'\ufad9' - | '\ufb1d'..'\ufb1f' - | '\ufb20'..'\ufb28' - | '\ufb2a'..'\ufb36' - | '\ufb38'..'\ufb3c' - | '\ufb3e'..'\ufb40' - | '\ufb41'..'\ufb43' - | '\ufb44'..'\ufb46' - | '\ufb47'..'\ufbb1' - | '\ufbd3'..'\ufd3d' - | '\ufd50'..'\ufd8f' - | '\ufd92'..'\ufdc7' - | '\ufdf0'..'\ufdfb' - | '\ufe70'..'\ufe74' - | '\ufe76'..'\ufefc' - | '\uff66'..'\uff6f' - | '\uff71'..'\uff9d' - | '\uffa0'..'\uffbe' - | '\uffc2'..'\uffc7' - | '\uffca'..'\uffcf' - | '\uffd2'..'\uffd7' - | '\uffda'..'\uffdc' - ; +fragment UnicodeClassLO: + '\u00aa' ..'\u00ba' + | '\u01bb' ..'\u01c0' + | '\u01c1' ..'\u01c3' + | '\u0294' ..'\u05d0' + | '\u05d1' ..'\u05ea' + | '\u05f0' ..'\u05f2' + | '\u0620' ..'\u063f' + | '\u0641' ..'\u064a' + | '\u066e' ..'\u066f' + | '\u0671' ..'\u06d3' + | '\u06d5' ..'\u06ee' + | '\u06ef' ..'\u06fa' + | '\u06fb' ..'\u06fc' + | '\u06ff' ..'\u0710' + | '\u0712' ..'\u072f' + | '\u074d' ..'\u07a5' + | '\u07b1' ..'\u07ca' + | '\u07cb' ..'\u07ea' + | '\u0800' ..'\u0815' + | '\u0840' ..'\u0858' + | '\u08a0' ..'\u08b2' + | '\u0904' ..'\u0939' + | '\u093d' ..'\u0950' + | '\u0958' ..'\u0961' + | '\u0972' ..'\u0980' + | '\u0985' ..'\u098c' + | '\u098f' ..'\u0990' + | '\u0993' ..'\u09a8' + | '\u09aa' ..'\u09b0' + | '\u09b2' ..'\u09b6' + | '\u09b7' ..'\u09b9' + | '\u09bd' ..'\u09ce' + | '\u09dc' ..'\u09dd' + | '\u09df' ..'\u09e1' + | '\u09f0' ..'\u09f1' + | '\u0a05' ..'\u0a0a' + | '\u0a0f' ..'\u0a10' + | '\u0a13' ..'\u0a28' + | '\u0a2a' ..'\u0a30' + | '\u0a32' ..'\u0a33' + | '\u0a35' ..'\u0a36' + | '\u0a38' ..'\u0a39' + | '\u0a59' ..'\u0a5c' + | '\u0a5e' ..'\u0a72' + | '\u0a73' ..'\u0a74' + | '\u0a85' ..'\u0a8d' + | '\u0a8f' ..'\u0a91' + | '\u0a93' ..'\u0aa8' + | '\u0aaa' ..'\u0ab0' + | '\u0ab2' ..'\u0ab3' + | '\u0ab5' ..'\u0ab9' + | '\u0abd' ..'\u0ad0' + | '\u0ae0' ..'\u0ae1' + | '\u0b05' ..'\u0b0c' + | '\u0b0f' ..'\u0b10' + | '\u0b13' ..'\u0b28' + | '\u0b2a' ..'\u0b30' + | '\u0b32' ..'\u0b33' + | '\u0b35' ..'\u0b39' + | '\u0b3d' ..'\u0b5c' + | '\u0b5d' ..'\u0b5f' + | '\u0b60' ..'\u0b61' + | '\u0b71' ..'\u0b83' + | '\u0b85' ..'\u0b8a' + | '\u0b8e' ..'\u0b90' + | '\u0b92' ..'\u0b95' + | '\u0b99' ..'\u0b9a' + | '\u0b9c' ..'\u0b9e' + | '\u0b9f' ..'\u0ba3' + | '\u0ba4' ..'\u0ba8' + | '\u0ba9' ..'\u0baa' + | '\u0bae' ..'\u0bb9' + | '\u0bd0' ..'\u0c05' + | '\u0c06' ..'\u0c0c' + | '\u0c0e' ..'\u0c10' + | '\u0c12' ..'\u0c28' + | '\u0c2a' ..'\u0c39' + | '\u0c3d' ..'\u0c58' + | '\u0c59' ..'\u0c60' + | '\u0c61' ..'\u0c85' + | '\u0c86' ..'\u0c8c' + | '\u0c8e' ..'\u0c90' + | '\u0c92' ..'\u0ca8' + | '\u0caa' ..'\u0cb3' + | '\u0cb5' ..'\u0cb9' + | '\u0cbd' ..'\u0cde' + | '\u0ce0' ..'\u0ce1' + | '\u0cf1' ..'\u0cf2' + | '\u0d05' ..'\u0d0c' + | '\u0d0e' ..'\u0d10' + | '\u0d12' ..'\u0d3a' + | '\u0d3d' ..'\u0d4e' + | '\u0d60' ..'\u0d61' + | '\u0d7a' ..'\u0d7f' + | '\u0d85' ..'\u0d96' + | '\u0d9a' ..'\u0db1' + | '\u0db3' ..'\u0dbb' + | '\u0dbd' ..'\u0dc0' + | '\u0dc1' ..'\u0dc6' + | '\u0e01' ..'\u0e30' + | '\u0e32' ..'\u0e33' + | '\u0e40' ..'\u0e45' + | '\u0e81' ..'\u0e82' + | '\u0e84' ..'\u0e87' + | '\u0e88' ..'\u0e8a' + | '\u0e8d' ..'\u0e94' + | '\u0e95' ..'\u0e97' + | '\u0e99' ..'\u0e9f' + | '\u0ea1' ..'\u0ea3' + | '\u0ea5' ..'\u0ea7' + | '\u0eaa' ..'\u0eab' + | '\u0ead' ..'\u0eb0' + | '\u0eb2' ..'\u0eb3' + | '\u0ebd' ..'\u0ec0' + | '\u0ec1' ..'\u0ec4' + | '\u0edc' ..'\u0edf' + | '\u0f00' ..'\u0f40' + | '\u0f41' ..'\u0f47' + | '\u0f49' ..'\u0f6c' + | '\u0f88' ..'\u0f8c' + | '\u1000' ..'\u102a' + | '\u103f' ..'\u1050' + | '\u1051' ..'\u1055' + | '\u105a' ..'\u105d' + | '\u1061' ..'\u1065' + | '\u1066' ..'\u106e' + | '\u106f' ..'\u1070' + | '\u1075' ..'\u1081' + | '\u108e' ..'\u10d0' + | '\u10d1' ..'\u10fa' + | '\u10fd' ..'\u1248' + | '\u124a' ..'\u124d' + | '\u1250' ..'\u1256' + | '\u1258' ..'\u125a' + | '\u125b' ..'\u125d' + | '\u1260' ..'\u1288' + | '\u128a' ..'\u128d' + | '\u1290' ..'\u12b0' + | '\u12b2' ..'\u12b5' + | '\u12b8' ..'\u12be' + | '\u12c0' ..'\u12c2' + | '\u12c3' ..'\u12c5' + | '\u12c8' ..'\u12d6' + | '\u12d8' ..'\u1310' + | '\u1312' ..'\u1315' + | '\u1318' ..'\u135a' + | '\u1380' ..'\u138f' + | '\u13a0' ..'\u13f4' + | '\u1401' ..'\u166c' + | '\u166f' ..'\u167f' + | '\u1681' ..'\u169a' + | '\u16a0' ..'\u16ea' + | '\u16f1' ..'\u16f8' + | '\u1700' ..'\u170c' + | '\u170e' ..'\u1711' + | '\u1720' ..'\u1731' + | '\u1740' ..'\u1751' + | '\u1760' ..'\u176c' + | '\u176e' ..'\u1770' + | '\u1780' ..'\u17b3' + | '\u17dc' ..'\u1820' + | '\u1821' ..'\u1842' + | '\u1844' ..'\u1877' + | '\u1880' ..'\u18a8' + | '\u18aa' ..'\u18b0' + | '\u18b1' ..'\u18f5' + | '\u1900' ..'\u191e' + | '\u1950' ..'\u196d' + | '\u1970' ..'\u1974' + | '\u1980' ..'\u19ab' + | '\u19c1' ..'\u19c7' + | '\u1a00' ..'\u1a16' + | '\u1a20' ..'\u1a54' + | '\u1b05' ..'\u1b33' + | '\u1b45' ..'\u1b4b' + | '\u1b83' ..'\u1ba0' + | '\u1bae' ..'\u1baf' + | '\u1bba' ..'\u1be5' + | '\u1c00' ..'\u1c23' + | '\u1c4d' ..'\u1c4f' + | '\u1c5a' ..'\u1c77' + | '\u1ce9' ..'\u1cec' + | '\u1cee' ..'\u1cf1' + | '\u1cf5' ..'\u1cf6' + | '\u2135' ..'\u2138' + | '\u2d30' ..'\u2d67' + | '\u2d80' ..'\u2d96' + | '\u2da0' ..'\u2da6' + | '\u2da8' ..'\u2dae' + | '\u2db0' ..'\u2db6' + | '\u2db8' ..'\u2dbe' + | '\u2dc0' ..'\u2dc6' + | '\u2dc8' ..'\u2dce' + | '\u2dd0' ..'\u2dd6' + | '\u2dd8' ..'\u2dde' + | '\u3006' ..'\u303c' + | '\u3041' ..'\u3096' + | '\u309f' ..'\u30a1' + | '\u30a2' ..'\u30fa' + | '\u30ff' ..'\u3105' + | '\u3106' ..'\u312d' + | '\u3131' ..'\u318e' + | '\u31a0' ..'\u31ba' + | '\u31f0' ..'\u31ff' + | '\u3400' ..'\u4db5' + | '\u4e00' ..'\u9fcc' + | '\ua000' ..'\ua014' + | '\ua016' ..'\ua48c' + | '\ua4d0' ..'\ua4f7' + | '\ua500' ..'\ua60b' + | '\ua610' ..'\ua61f' + | '\ua62a' ..'\ua62b' + | '\ua66e' ..'\ua6a0' + | '\ua6a1' ..'\ua6e5' + | '\ua7f7' ..'\ua7fb' + | '\ua7fc' ..'\ua801' + | '\ua803' ..'\ua805' + | '\ua807' ..'\ua80a' + | '\ua80c' ..'\ua822' + | '\ua840' ..'\ua873' + | '\ua882' ..'\ua8b3' + | '\ua8f2' ..'\ua8f7' + | '\ua8fb' ..'\ua90a' + | '\ua90b' ..'\ua925' + | '\ua930' ..'\ua946' + | '\ua960' ..'\ua97c' + | '\ua984' ..'\ua9b2' + | '\ua9e0' ..'\ua9e4' + | '\ua9e7' ..'\ua9ef' + | '\ua9fa' ..'\ua9fe' + | '\uaa00' ..'\uaa28' + | '\uaa40' ..'\uaa42' + | '\uaa44' ..'\uaa4b' + | '\uaa60' ..'\uaa6f' + | '\uaa71' ..'\uaa76' + | '\uaa7a' ..'\uaa7e' + | '\uaa7f' ..'\uaaaf' + | '\uaab1' ..'\uaab5' + | '\uaab6' ..'\uaab9' + | '\uaaba' ..'\uaabd' + | '\uaac0' ..'\uaac2' + | '\uaadb' ..'\uaadc' + | '\uaae0' ..'\uaaea' + | '\uaaf2' ..'\uab01' + | '\uab02' ..'\uab06' + | '\uab09' ..'\uab0e' + | '\uab11' ..'\uab16' + | '\uab20' ..'\uab26' + | '\uab28' ..'\uab2e' + | '\uabc0' ..'\uabe2' + | '\uac00' ..'\ud7a3' + | '\ud7b0' ..'\ud7c6' + | '\ud7cb' ..'\ud7fb' + | '\uf900' ..'\ufa6d' + | '\ufa70' ..'\ufad9' + | '\ufb1d' ..'\ufb1f' + | '\ufb20' ..'\ufb28' + | '\ufb2a' ..'\ufb36' + | '\ufb38' ..'\ufb3c' + | '\ufb3e' ..'\ufb40' + | '\ufb41' ..'\ufb43' + | '\ufb44' ..'\ufb46' + | '\ufb47' ..'\ufbb1' + | '\ufbd3' ..'\ufd3d' + | '\ufd50' ..'\ufd8f' + | '\ufd92' ..'\ufdc7' + | '\ufdf0' ..'\ufdfb' + | '\ufe70' ..'\ufe74' + | '\ufe76' ..'\ufefc' + | '\uff66' ..'\uff6f' + | '\uff71' ..'\uff9d' + | '\uffa0' ..'\uffbe' + | '\uffc2' ..'\uffc7' + | '\uffca' ..'\uffcf' + | '\uffd2' ..'\uffd7' + | '\uffda' ..'\uffdc' +; -fragment UnicodeClassNL - : '\u16EE' // RUNIC ARLAUG SYMBOL - | '\u16EF' // RUNIC TVIMADUR SYMBOL - | '\u16F0' // RUNIC BELGTHOR SYMBOL - | '\u2160' // ROMAN NUMERAL ONE - | '\u2161' // ROMAN NUMERAL TWO - | '\u2162' // ROMAN NUMERAL THREE - | '\u2163' // ROMAN NUMERAL FOUR - | '\u2164' // ROMAN NUMERAL FIVE - | '\u2165' // ROMAN NUMERAL SIX - | '\u2166' // ROMAN NUMERAL SEVEN - | '\u2167' // ROMAN NUMERAL EIGHT - | '\u2168' // ROMAN NUMERAL NINE - | '\u2169' // ROMAN NUMERAL TEN - | '\u216A' // ROMAN NUMERAL ELEVEN - | '\u216B' // ROMAN NUMERAL TWELVE - | '\u216C' // ROMAN NUMERAL FIFTY - | '\u216D' // ROMAN NUMERAL ONE HUNDRED - | '\u216E' // ROMAN NUMERAL FIVE HUNDRED - | '\u216F' // ROMAN NUMERAL ONE THOUSAND - ; +fragment UnicodeClassNL: + '\u16EE' // RUNIC ARLAUG SYMBOL + | '\u16EF' // RUNIC TVIMADUR SYMBOL + | '\u16F0' // RUNIC BELGTHOR SYMBOL + | '\u2160' // ROMAN NUMERAL ONE + | '\u2161' // ROMAN NUMERAL TWO + | '\u2162' // ROMAN NUMERAL THREE + | '\u2163' // ROMAN NUMERAL FOUR + | '\u2164' // ROMAN NUMERAL FIVE + | '\u2165' // ROMAN NUMERAL SIX + | '\u2166' // ROMAN NUMERAL SEVEN + | '\u2167' // ROMAN NUMERAL EIGHT + | '\u2168' // ROMAN NUMERAL NINE + | '\u2169' // ROMAN NUMERAL TEN + | '\u216A' // ROMAN NUMERAL ELEVEN + | '\u216B' // ROMAN NUMERAL TWELVE + | '\u216C' // ROMAN NUMERAL FIFTY + | '\u216D' // ROMAN NUMERAL ONE HUNDRED + | '\u216E' // ROMAN NUMERAL FIVE HUNDRED + | '\u216F' // ROMAN NUMERAL ONE THOUSAND +; -fragment UnicodeClassMN - : '\u0300' // COMBINING GRAVE ACCENT - | '\u0301' // COMBINING ACUTE ACCENT - | '\u0302' // COMBINING CIRCUMFLEX ACCENT - | '\u0303' // COMBINING TILDE - | '\u0304' // COMBINING MACRON - | '\u0305' // COMBINING OVERLINE - | '\u0306' // COMBINING BREVE - | '\u0307' // COMBINING DOT ABOVE - | '\u0308' // COMBINING DIAERESIS - | '\u0309' // COMBINING HOOK ABOVE - | '\u030A' // COMBINING RING ABOVE - | '\u030B' // COMBINING DOUBLE ACUTE ACCENT - | '\u030C' // COMBINING CARON - | '\u030D' // COMBINING VERTICAL LINE ABOVE - | '\u030E' // COMBINING DOUBLE VERTICAL LINE ABOVE - | '\u030F' // COMBINING DOUBLE GRAVE ACCENT - | '\u0310' // COMBINING CANDRABINDU - ; +fragment UnicodeClassMN: + '\u0300' // COMBINING GRAVE ACCENT + | '\u0301' // COMBINING ACUTE ACCENT + | '\u0302' // COMBINING CIRCUMFLEX ACCENT + | '\u0303' // COMBINING TILDE + | '\u0304' // COMBINING MACRON + | '\u0305' // COMBINING OVERLINE + | '\u0306' // COMBINING BREVE + | '\u0307' // COMBINING DOT ABOVE + | '\u0308' // COMBINING DIAERESIS + | '\u0309' // COMBINING HOOK ABOVE + | '\u030A' // COMBINING RING ABOVE + | '\u030B' // COMBINING DOUBLE ACUTE ACCENT + | '\u030C' // COMBINING CARON + | '\u030D' // COMBINING VERTICAL LINE ABOVE + | '\u030E' // COMBINING DOUBLE VERTICAL LINE ABOVE + | '\u030F' // COMBINING DOUBLE GRAVE ACCENT + | '\u0310' // COMBINING CANDRABINDU +; -fragment UnicodeClassMC - : '\u0903' // DEVANAGARI SIGN VISARGA - | '\u093E' // DEVANAGARI VOWEL SIGN AA - | '\u093F' // DEVANAGARI VOWEL SIGN I - | '\u0940' // DEVANAGARI VOWEL SIGN II - | '\u0949' // DEVANAGARI VOWEL SIGN CANDRA O - | '\u094A' // DEVANAGARI VOWEL SIGN SHORT O - | '\u094B' // DEVANAGARI VOWEL SIGN O - | '\u094C' // DEVANAGARI VOWEL SIGN AU - ; +fragment UnicodeClassMC: + '\u0903' // DEVANAGARI SIGN VISARGA + | '\u093E' // DEVANAGARI VOWEL SIGN AA + | '\u093F' // DEVANAGARI VOWEL SIGN I + | '\u0940' // DEVANAGARI VOWEL SIGN II + | '\u0949' // DEVANAGARI VOWEL SIGN CANDRA O + | '\u094A' // DEVANAGARI VOWEL SIGN SHORT O + | '\u094B' // DEVANAGARI VOWEL SIGN O + | '\u094C' // DEVANAGARI VOWEL SIGN AU +; -fragment UnicodeClassCF - : '\u00AD' // SOFT HYPHEN - | '\u0600' // ARABIC NUMBER SIGN - | '\u0601' // ARABIC SIGN SANAH - | '\u0602' // ARABIC FOOTNOTE MARKER - | '\u0603' // ARABIC SIGN SAFHA - | '\u06DD' // ARABIC END OF AYAH - ; +fragment UnicodeClassCF: + '\u00AD' // SOFT HYPHEN + | '\u0600' // ARABIC NUMBER SIGN + | '\u0601' // ARABIC SIGN SANAH + | '\u0602' // ARABIC FOOTNOTE MARKER + | '\u0603' // ARABIC SIGN SAFHA + | '\u06DD' // ARABIC END OF AYAH +; -fragment UnicodeClassPC - : '\u005F' // LOW LINE - | '\u203F' // UNDERTIE - | '\u2040' // CHARACTER TIE - | '\u2054' // INVERTED UNDERTIE - | '\uFE33' // PRESENTATION FORM FOR VERTICAL LOW LINE - | '\uFE34' // PRESENTATION FORM FOR VERTICAL WAVY LOW LINE - | '\uFE4D' // DASHED LOW LINE - | '\uFE4E' // CENTRELINE LOW LINE - | '\uFE4F' // WAVY LOW LINE - | '\uFF3F' // FULLWIDTH LOW LINE - ; +fragment UnicodeClassPC: + '\u005F' // LOW LINE + | '\u203F' // UNDERTIE + | '\u2040' // CHARACTER TIE + | '\u2054' // INVERTED UNDERTIE + | '\uFE33' // PRESENTATION FORM FOR VERTICAL LOW LINE + | '\uFE34' // PRESENTATION FORM FOR VERTICAL WAVY LOW LINE + | '\uFE4D' // DASHED LOW LINE + | '\uFE4E' // CENTRELINE LOW LINE + | '\uFE4F' // WAVY LOW LINE + | '\uFF3F' // FULLWIDTH LOW LINE +; -fragment UnicodeClassND - : '\u0030'..'\u0039' - | '\u0660'..'\u0669' - | '\u06f0'..'\u06f9' - | '\u07c0'..'\u07c9' - | '\u0966'..'\u096f' - | '\u09e6'..'\u09ef' - | '\u0a66'..'\u0a6f' - | '\u0ae6'..'\u0aef' - | '\u0b66'..'\u0b6f' - | '\u0be6'..'\u0bef' - | '\u0c66'..'\u0c6f' - | '\u0ce6'..'\u0cef' - | '\u0d66'..'\u0d6f' - | '\u0de6'..'\u0def' - | '\u0e50'..'\u0e59' - | '\u0ed0'..'\u0ed9' - | '\u0f20'..'\u0f29' - | '\u1040'..'\u1049' - | '\u1090'..'\u1099' - | '\u17e0'..'\u17e9' - | '\u1810'..'\u1819' - | '\u1946'..'\u194f' - | '\u19d0'..'\u19d9' - | '\u1a80'..'\u1a89' - | '\u1a90'..'\u1a99' - | '\u1b50'..'\u1b59' - | '\u1bb0'..'\u1bb9' - | '\u1c40'..'\u1c49' - | '\u1c50'..'\u1c59' - | '\ua620'..'\ua629' - | '\ua8d0'..'\ua8d9' - | '\ua900'..'\ua909' - | '\ua9d0'..'\ua9d9' - | '\ua9f0'..'\ua9f9' - | '\uaa50'..'\uaa59' - | '\uabf0'..'\uabf9' - | '\uff10'..'\uff19' - ; \ No newline at end of file +fragment UnicodeClassND: + '\u0030' ..'\u0039' + | '\u0660' ..'\u0669' + | '\u06f0' ..'\u06f9' + | '\u07c0' ..'\u07c9' + | '\u0966' ..'\u096f' + | '\u09e6' ..'\u09ef' + | '\u0a66' ..'\u0a6f' + | '\u0ae6' ..'\u0aef' + | '\u0b66' ..'\u0b6f' + | '\u0be6' ..'\u0bef' + | '\u0c66' ..'\u0c6f' + | '\u0ce6' ..'\u0cef' + | '\u0d66' ..'\u0d6f' + | '\u0de6' ..'\u0def' + | '\u0e50' ..'\u0e59' + | '\u0ed0' ..'\u0ed9' + | '\u0f20' ..'\u0f29' + | '\u1040' ..'\u1049' + | '\u1090' ..'\u1099' + | '\u17e0' ..'\u17e9' + | '\u1810' ..'\u1819' + | '\u1946' ..'\u194f' + | '\u19d0' ..'\u19d9' + | '\u1a80' ..'\u1a89' + | '\u1a90' ..'\u1a99' + | '\u1b50' ..'\u1b59' + | '\u1bb0' ..'\u1bb9' + | '\u1c40' ..'\u1c49' + | '\u1c50' ..'\u1c59' + | '\ua620' ..'\ua629' + | '\ua8d0' ..'\ua8d9' + | '\ua900' ..'\ua909' + | '\ua9d0' ..'\ua9d9' + | '\ua9f0' ..'\ua9f9' + | '\uaa50' ..'\uaa59' + | '\uabf0' ..'\uabf9' + | '\uff10' ..'\uff19' +; \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.interp b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.interp new file mode 100644 index 00000000..a92bc394 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.interp @@ -0,0 +1,665 @@ +token literal names: +null +'\u00EF\u00BB\u00BF' +null +'/***/' +null +null +null +null +'#' +'abstract' +'add' +'alias' +'__arglist' +'as' +'ascending' +'async' +'await' +'base' +'bool' +'break' +'by' +'byte' +'case' +'catch' +'char' +'checked' +'class' +'const' +'continue' +'decimal' +'default' +'delegate' +'descending' +'do' +'double' +'dynamic' +'else' +'enum' +'equals' +'event' +'explicit' +'extern' +'false' +'finally' +'fixed' +'float' +'for' +'foreach' +'from' +'get' +'goto' +'group' +'if' +'implicit' +'in' +'int' +'interface' +'internal' +'into' +'is' +'join' +'let' +'lock' +'long' +'nameof' +'namespace' +'new' +'null' +'object' +'on' +'operator' +'orderby' +'out' +'override' +'params' +'partial' +'private' +'protected' +'public' +'readonly' +'ref' +'remove' +'return' +'sbyte' +'sealed' +'select' +'set' +'short' +'sizeof' +'stackalloc' +'static' +'string' +'struct' +'switch' +'this' +'throw' +'true' +'try' +'typeof' +'uint' +'ulong' +'unchecked' +'unmanaged' +'unsafe' +'ushort' +'using' +'var' +'virtual' +'void' +'volatile' +'when' +'where' +'while' +'yield' +null +null +null +null +null +null +null +null +null +null +null +'{' +'}' +'[' +']' +'(' +')' +'.' +',' +':' +';' +'+' +'-' +'*' +'/' +'%' +'&' +'|' +'^' +'!' +'~' +'=' +'<' +'>' +'?' +'::' +'??' +'++' +'--' +'&&' +'||' +'->' +'==' +'!=' +'<=' +'>=' +'+=' +'-=' +'*=' +'/=' +'%=' +'&=' +'|=' +'^=' +'<<' +'<<=' +'??=' +'..' +'{{' +null +null +null +null +null +null +null +null +null +null +'define' +'undef' +'elif' +'endif' +'line' +null +null +null +null +null +null +'hidden' +null +null +null +'}}' + +token symbolic names: +null +BYTE_ORDER_MARK +SINGLE_LINE_DOC_COMMENT +EMPTY_DELIMITED_DOC_COMMENT +DELIMITED_DOC_COMMENT +SINGLE_LINE_COMMENT +DELIMITED_COMMENT +WHITESPACES +SHARP +ABSTRACT +ADD +ALIAS +ARGLIST +AS +ASCENDING +ASYNC +AWAIT +BASE +BOOL +BREAK +BY +BYTE +CASE +CATCH +CHAR +CHECKED +CLASS +CONST +CONTINUE +DECIMAL +DEFAULT +DELEGATE +DESCENDING +DO +DOUBLE +DYNAMIC +ELSE +ENUM +EQUALS +EVENT +EXPLICIT +EXTERN +FALSE +FINALLY +FIXED +FLOAT +FOR +FOREACH +FROM +GET +GOTO +GROUP +IF +IMPLICIT +IN +INT +INTERFACE +INTERNAL +INTO +IS +JOIN +LET +LOCK +LONG +NAMEOF +NAMESPACE +NEW +NULL_ +OBJECT +ON +OPERATOR +ORDERBY +OUT +OVERRIDE +PARAMS +PARTIAL +PRIVATE +PROTECTED +PUBLIC +READONLY +REF +REMOVE +RETURN +SBYTE +SEALED +SELECT +SET +SHORT +SIZEOF +STACKALLOC +STATIC +STRING +STRUCT +SWITCH +THIS +THROW +TRUE +TRY +TYPEOF +UINT +ULONG +UNCHECKED +UNMANAGED +UNSAFE +USHORT +USING +VAR +VIRTUAL +VOID +VOLATILE +WHEN +WHERE +WHILE +YIELD +IDENTIFIER +LITERAL_ACCESS +INTEGER_LITERAL +HEX_INTEGER_LITERAL +BIN_INTEGER_LITERAL +REAL_LITERAL +CHARACTER_LITERAL +REGULAR_STRING +VERBATIUM_STRING +INTERPOLATED_REGULAR_STRING_START +INTERPOLATED_VERBATIUM_STRING_START +OPEN_BRACE +CLOSE_BRACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_PARENS +CLOSE_PARENS +DOT +COMMA +COLON +SEMICOLON +PLUS +MINUS +STAR +DIV +PERCENT +AMP +BITWISE_OR +CARET +BANG +TILDE +ASSIGNMENT +LT +GT +INTERR +DOUBLE_COLON +OP_COALESCING +OP_INC +OP_DEC +OP_AND +OP_OR +OP_PTR +OP_EQ +OP_NE +OP_LE +OP_GE +OP_ADD_ASSIGNMENT +OP_SUB_ASSIGNMENT +OP_MULT_ASSIGNMENT +OP_DIV_ASSIGNMENT +OP_MOD_ASSIGNMENT +OP_AND_ASSIGNMENT +OP_OR_ASSIGNMENT +OP_XOR_ASSIGNMENT +OP_LEFT_SHIFT +OP_LEFT_SHIFT_ASSIGNMENT +OP_COALESCING_ASSIGNMENT +OP_RANGE +DOUBLE_CURLY_INSIDE +OPEN_BRACE_INSIDE +REGULAR_CHAR_INSIDE +VERBATIUM_DOUBLE_QUOTE_INSIDE +DOUBLE_QUOTE_INSIDE +REGULAR_STRING_INSIDE +VERBATIUM_INSIDE_STRING +CLOSE_BRACE_INSIDE +FORMAT_STRING +DIRECTIVE_WHITESPACES +DIGITS +DEFINE +UNDEF +ELIF +ENDIF +LINE +ERROR +WARNING +REGION +ENDREGION +PRAGMA +NULLABLE +DIRECTIVE_HIDDEN +CONDITIONAL_SYMBOL +DIRECTIVE_NEW_LINE +TEXT +DOUBLE_CURLY_CLOSE_INSIDE + +rule names: +BYTE_ORDER_MARK +SINGLE_LINE_DOC_COMMENT +EMPTY_DELIMITED_DOC_COMMENT +DELIMITED_DOC_COMMENT +SINGLE_LINE_COMMENT +DELIMITED_COMMENT +WHITESPACES +SHARP +ABSTRACT +ADD +ALIAS +ARGLIST +AS +ASCENDING +ASYNC +AWAIT +BASE +BOOL +BREAK +BY +BYTE +CASE +CATCH +CHAR +CHECKED +CLASS +CONST +CONTINUE +DECIMAL +DEFAULT +DELEGATE +DESCENDING +DO +DOUBLE +DYNAMIC +ELSE +ENUM +EQUALS +EVENT +EXPLICIT +EXTERN +FALSE +FINALLY +FIXED +FLOAT +FOR +FOREACH +FROM +GET +GOTO +GROUP +IF +IMPLICIT +IN +INT +INTERFACE +INTERNAL +INTO +IS +JOIN +LET +LOCK +LONG +NAMEOF +NAMESPACE +NEW +NULL_ +OBJECT +ON +OPERATOR +ORDERBY +OUT +OVERRIDE +PARAMS +PARTIAL +PRIVATE +PROTECTED +PUBLIC +READONLY +REF +REMOVE +RETURN +SBYTE +SEALED +SELECT +SET +SHORT +SIZEOF +STACKALLOC +STATIC +STRING +STRUCT +SWITCH +THIS +THROW +TRUE +TRY +TYPEOF +UINT +ULONG +UNCHECKED +UNMANAGED +UNSAFE +USHORT +USING +VAR +VIRTUAL +VOID +VOLATILE +WHEN +WHERE +WHILE +YIELD +IDENTIFIER +LITERAL_ACCESS +INTEGER_LITERAL +HEX_INTEGER_LITERAL +BIN_INTEGER_LITERAL +REAL_LITERAL +CHARACTER_LITERAL +REGULAR_STRING +VERBATIUM_STRING +INTERPOLATED_REGULAR_STRING_START +INTERPOLATED_VERBATIUM_STRING_START +OPEN_BRACE +CLOSE_BRACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_PARENS +CLOSE_PARENS +DOT +COMMA +COLON +SEMICOLON +PLUS +MINUS +STAR +DIV +PERCENT +AMP +BITWISE_OR +CARET +BANG +TILDE +ASSIGNMENT +LT +GT +INTERR +DOUBLE_COLON +OP_COALESCING +OP_INC +OP_DEC +OP_AND +OP_OR +OP_PTR +OP_EQ +OP_NE +OP_LE +OP_GE +OP_ADD_ASSIGNMENT +OP_SUB_ASSIGNMENT +OP_MULT_ASSIGNMENT +OP_DIV_ASSIGNMENT +OP_MOD_ASSIGNMENT +OP_AND_ASSIGNMENT +OP_OR_ASSIGNMENT +OP_XOR_ASSIGNMENT +OP_LEFT_SHIFT +OP_LEFT_SHIFT_ASSIGNMENT +OP_COALESCING_ASSIGNMENT +OP_RANGE +DOUBLE_CURLY_INSIDE +OPEN_BRACE_INSIDE +REGULAR_CHAR_INSIDE +VERBATIUM_DOUBLE_QUOTE_INSIDE +DOUBLE_QUOTE_INSIDE +REGULAR_STRING_INSIDE +VERBATIUM_INSIDE_STRING +DOUBLE_CURLY_CLOSE_INSIDE +CLOSE_BRACE_INSIDE +FORMAT_STRING +DIRECTIVE_WHITESPACES +DIGITS +DIRECTIVE_TRUE +DIRECTIVE_FALSE +DEFINE +UNDEF +DIRECTIVE_IF +ELIF +DIRECTIVE_ELSE +ENDIF +LINE +ERROR +WARNING +REGION +ENDREGION +PRAGMA +NULLABLE +DIRECTIVE_DEFAULT +DIRECTIVE_HIDDEN +DIRECTIVE_OPEN_PARENS +DIRECTIVE_CLOSE_PARENS +DIRECTIVE_BANG +DIRECTIVE_OP_EQ +DIRECTIVE_OP_NE +DIRECTIVE_OP_AND +DIRECTIVE_OP_OR +DIRECTIVE_STRING +CONDITIONAL_SYMBOL +DIRECTIVE_SINGLE_LINE_COMMENT +DIRECTIVE_NEW_LINE +TEXT +TEXT_NEW_LINE +InputCharacter +NewLineCharacter +IntegerTypeSuffix +ExponentPart +CommonCharacter +SimpleEscapeSequence +HexEscapeSequence +NewLine +Whitespace +UnicodeClassZS +IdentifierOrKeyword +IdentifierStartCharacter +IdentifierPartCharacter +LetterCharacter +DecimalDigitCharacter +ConnectingCharacter +CombiningCharacter +FormattingCharacter +UnicodeEscapeSequence +HexDigit +UnicodeClassLU +UnicodeClassLL +UnicodeClassLT +UnicodeClassLM +UnicodeClassLO +UnicodeClassNL +UnicodeClassMN +UnicodeClassMC +UnicodeClassCF +UnicodeClassPC +UnicodeClassND + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN +null +null +COMMENTS_CHANNEL +DIRECTIVE + +mode names: +DEFAULT_MODE +INTERPOLATION_STRING +INTERPOLATION_FORMAT +DIRECTIVE_MODE +DIRECTIVE_TEXT + +atn: +[4, 0, 198, 2069, 6, -1, 6, -1, 6, -1, 6, -1, 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, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 503, 8, 1, 10, 1, 12, 1, 506, 9, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 524, 8, 3, 10, 3, 12, 3, 527, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 538, 8, 4, 10, 4, 12, 4, 541, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 549, 8, 5, 10, 5, 12, 5, 552, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 4, 6, 561, 8, 6, 11, 6, 12, 6, 562, 1, 6, 1, 6, 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, 8, 1, 8, 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, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 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, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 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, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 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, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 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, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 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, 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, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 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, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 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, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 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, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 3, 113, 1248, 8, 113, 1, 113, 1, 113, 1, 114, 1, 114, 5, 114, 1254, 8, 114, 10, 114, 12, 114, 1257, 9, 114, 1, 114, 5, 114, 1260, 8, 114, 10, 114, 12, 114, 1263, 9, 114, 1, 114, 3, 114, 1266, 8, 114, 1, 114, 1, 114, 3, 114, 1270, 8, 114, 1, 114, 1, 114, 1, 115, 1, 115, 5, 115, 1276, 8, 115, 10, 115, 12, 115, 1279, 9, 115, 1, 115, 5, 115, 1282, 8, 115, 10, 115, 12, 115, 1285, 9, 115, 1, 115, 3, 115, 1288, 8, 115, 1, 116, 1, 116, 1, 116, 5, 116, 1293, 8, 116, 10, 116, 12, 116, 1296, 9, 116, 1, 116, 4, 116, 1299, 8, 116, 11, 116, 12, 116, 1300, 1, 116, 3, 116, 1304, 8, 116, 1, 117, 1, 117, 1, 117, 5, 117, 1309, 8, 117, 10, 117, 12, 117, 1312, 9, 117, 1, 117, 4, 117, 1315, 8, 117, 11, 117, 12, 117, 1316, 1, 117, 3, 117, 1320, 8, 117, 1, 118, 1, 118, 5, 118, 1324, 8, 118, 10, 118, 12, 118, 1327, 9, 118, 1, 118, 5, 118, 1330, 8, 118, 10, 118, 12, 118, 1333, 9, 118, 3, 118, 1335, 8, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1340, 8, 118, 10, 118, 12, 118, 1343, 9, 118, 1, 118, 5, 118, 1346, 8, 118, 10, 118, 12, 118, 1349, 9, 118, 1, 118, 3, 118, 1352, 8, 118, 1, 118, 3, 118, 1355, 8, 118, 1, 118, 1, 118, 5, 118, 1359, 8, 118, 10, 118, 12, 118, 1362, 9, 118, 1, 118, 5, 118, 1365, 8, 118, 10, 118, 12, 118, 1368, 9, 118, 1, 118, 1, 118, 1, 118, 3, 118, 1373, 8, 118, 3, 118, 1375, 8, 118, 3, 118, 1377, 8, 118, 1, 119, 1, 119, 1, 119, 3, 119, 1382, 8, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 5, 120, 1389, 8, 120, 10, 120, 12, 120, 1392, 9, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 1402, 8, 121, 10, 121, 12, 121, 1405, 9, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 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, 139, 1, 139, 1, 140, 1, 140, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 146, 1, 146, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 154, 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, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 4, 176, 1569, 8, 176, 11, 176, 12, 176, 1570, 1, 177, 1, 177, 4, 177, 1575, 8, 177, 11, 177, 12, 177, 1576, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 4, 180, 1591, 8, 180, 11, 180, 12, 180, 1592, 1, 181, 4, 181, 1596, 8, 181, 11, 181, 12, 181, 1597, 1, 181, 1, 181, 1, 182, 4, 182, 1603, 8, 182, 11, 182, 12, 182, 1604, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 4, 192, 1686, 8, 192, 11, 192, 12, 192, 1687, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 4, 193, 1702, 8, 193, 11, 193, 12, 193, 1703, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 5, 194, 1717, 8, 194, 10, 194, 12, 194, 1720, 9, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 5, 195, 1736, 8, 195, 10, 195, 12, 195, 1739, 9, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 4, 196, 1752, 8, 196, 11, 196, 12, 196, 1753, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 4, 197, 1769, 8, 197, 11, 197, 12, 197, 1770, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 5, 207, 1837, 8, 207, 10, 207, 12, 207, 1840, 9, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 5, 209, 1855, 8, 209, 10, 209, 12, 209, 1858, 9, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 4, 211, 1869, 8, 211, 11, 211, 12, 211, 1870, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 214, 1, 214, 1, 215, 3, 215, 1886, 8, 215, 1, 215, 1, 215, 3, 215, 1890, 8, 215, 1, 215, 3, 215, 1893, 8, 215, 1, 216, 1, 216, 3, 216, 1897, 8, 216, 1, 216, 1, 216, 5, 216, 1901, 8, 216, 10, 216, 12, 216, 1904, 9, 216, 1, 216, 5, 216, 1907, 8, 216, 10, 216, 12, 216, 1910, 9, 216, 1, 217, 1, 217, 1, 217, 3, 217, 1915, 8, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 1939, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 3, 219, 1966, 8, 219, 1, 220, 1, 220, 1, 220, 3, 220, 1971, 8, 220, 1, 221, 1, 221, 3, 221, 1975, 8, 221, 1, 222, 1, 222, 1, 223, 1, 223, 5, 223, 1981, 8, 223, 10, 223, 12, 223, 1984, 9, 223, 1, 224, 1, 224, 3, 224, 1988, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 3, 225, 1995, 8, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 3, 226, 2004, 8, 226, 1, 227, 1, 227, 3, 227, 2008, 8, 227, 1, 228, 1, 228, 3, 228, 2012, 8, 228, 1, 229, 1, 229, 1, 229, 3, 229, 2017, 8, 229, 1, 230, 1, 230, 3, 230, 2021, 8, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 3, 231, 2043, 8, 231, 1, 232, 3, 232, 2046, 8, 232, 1, 233, 1, 233, 1, 234, 1, 234, 1, 235, 1, 235, 1, 236, 1, 236, 1, 237, 1, 237, 1, 238, 1, 238, 1, 239, 1, 239, 1, 240, 1, 240, 1, 241, 1, 241, 1, 242, 1, 242, 1, 243, 1, 243, 2, 525, 550, 0, 244, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 30, 65, 31, 67, 32, 69, 33, 71, 34, 73, 35, 75, 36, 77, 37, 79, 38, 81, 39, 83, 40, 85, 41, 87, 42, 89, 43, 91, 44, 93, 45, 95, 46, 97, 47, 99, 48, 101, 49, 103, 50, 105, 51, 107, 52, 109, 53, 111, 54, 113, 55, 115, 56, 117, 57, 119, 58, 121, 59, 123, 60, 125, 61, 127, 62, 129, 63, 131, 64, 133, 65, 135, 66, 137, 67, 139, 68, 141, 69, 143, 70, 145, 71, 147, 72, 149, 73, 151, 74, 153, 75, 155, 76, 157, 77, 159, 78, 161, 79, 163, 80, 165, 81, 167, 82, 169, 83, 171, 84, 173, 85, 175, 86, 177, 87, 179, 88, 181, 89, 183, 90, 185, 91, 187, 92, 189, 93, 191, 94, 193, 95, 195, 96, 197, 97, 199, 98, 201, 99, 203, 100, 205, 101, 207, 102, 209, 103, 211, 104, 213, 105, 215, 106, 217, 107, 219, 108, 221, 109, 223, 110, 225, 111, 227, 112, 229, 113, 231, 114, 233, 115, 235, 116, 237, 117, 239, 118, 241, 119, 243, 120, 245, 121, 247, 122, 249, 123, 251, 124, 253, 125, 255, 126, 257, 127, 259, 128, 261, 129, 263, 130, 265, 131, 267, 132, 269, 133, 271, 134, 273, 135, 275, 136, 277, 137, 279, 138, 281, 139, 283, 140, 285, 141, 287, 142, 289, 143, 291, 144, 293, 145, 295, 146, 297, 147, 299, 148, 301, 149, 303, 150, 305, 151, 307, 152, 309, 153, 311, 154, 313, 155, 315, 156, 317, 157, 319, 158, 321, 159, 323, 160, 325, 161, 327, 162, 329, 163, 331, 164, 333, 165, 335, 166, 337, 167, 339, 168, 341, 169, 343, 170, 345, 171, 347, 172, 349, 173, 351, 174, 353, 175, 355, 176, 357, 177, 359, 178, 361, 198, 363, 179, 365, 180, 367, 181, 369, 182, 371, 0, 373, 0, 375, 183, 377, 184, 379, 0, 381, 185, 383, 0, 385, 186, 387, 187, 389, 188, 391, 189, 393, 190, 395, 191, 397, 192, 399, 193, 401, 0, 403, 194, 405, 0, 407, 0, 409, 0, 411, 0, 413, 0, 415, 0, 417, 0, 419, 0, 421, 195, 423, 0, 425, 196, 427, 197, 429, 0, 431, 0, 433, 0, 435, 0, 437, 0, 439, 0, 441, 0, 443, 0, 445, 0, 447, 0, 449, 0, 451, 0, 453, 0, 455, 0, 457, 0, 459, 0, 461, 0, 463, 0, 465, 0, 467, 0, 469, 0, 471, 0, 473, 0, 475, 0, 477, 0, 479, 0, 481, 0, 483, 0, 485, 0, 487, 0, 489, 0, 491, 0, 5, 0, 1, 2, 3, 4, 31, 1, 0, 47, 47, 1, 0, 48, 57, 2, 0, 88, 88, 120, 120, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 6, 0, 68, 68, 70, 70, 77, 77, 100, 100, 102, 102, 109, 109, 6, 0, 10, 10, 13, 13, 39, 39, 92, 92, 133, 133, 8232, 8233, 6, 0, 10, 10, 13, 13, 34, 34, 92, 92, 133, 133, 8232, 8233, 1, 0, 34, 34, 3, 0, 34, 34, 92, 92, 123, 123, 2, 0, 34, 34, 123, 123, 1, 0, 125, 125, 5, 0, 10, 10, 13, 13, 34, 34, 133, 133, 8232, 8233, 4, 0, 10, 10, 13, 13, 133, 133, 8232, 8233, 2, 0, 76, 76, 108, 108, 2, 0, 85, 85, 117, 117, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 2, 0, 9, 9, 11, 12, 9, 0, 32, 32, 160, 160, 5760, 5760, 6158, 6158, 8192, 8198, 8200, 8202, 8239, 8239, 8287, 8287, 12288, 12288, 3, 0, 48, 57, 65, 70, 97, 102, 82, 0, 65, 90, 192, 214, 216, 222, 256, 310, 313, 327, 330, 381, 385, 386, 388, 395, 398, 401, 403, 404, 406, 408, 412, 413, 415, 416, 418, 425, 428, 435, 437, 444, 452, 461, 463, 475, 478, 494, 497, 500, 502, 504, 506, 562, 570, 571, 573, 574, 577, 582, 584, 590, 880, 882, 886, 895, 902, 906, 908, 929, 931, 939, 975, 980, 984, 1006, 1012, 1015, 1017, 1018, 1021, 1071, 1120, 1152, 1162, 1229, 1232, 1326, 1329, 1366, 4256, 4293, 4295, 4301, 7680, 7828, 7838, 7934, 7944, 7951, 7960, 7965, 7976, 7983, 7992, 7999, 8008, 8013, 8025, 8031, 8040, 8047, 8120, 8123, 8136, 8139, 8152, 8155, 8168, 8172, 8184, 8187, 8450, 8455, 8459, 8461, 8464, 8466, 8469, 8477, 8484, 8493, 8496, 8499, 8510, 8511, 8517, 8579, 11264, 11310, 11360, 11364, 11367, 11376, 11378, 11381, 11390, 11392, 11394, 11490, 11499, 11501, 11506, 42560, 42562, 42604, 42624, 42650, 42786, 42798, 42802, 42862, 42873, 42886, 42891, 42893, 42896, 42898, 42902, 42925, 42928, 42929, 65313, 65338, 81, 0, 97, 122, 181, 246, 248, 255, 257, 375, 378, 384, 387, 389, 392, 402, 405, 411, 414, 417, 419, 421, 424, 429, 432, 436, 438, 447, 454, 460, 462, 499, 501, 505, 507, 569, 572, 578, 583, 659, 661, 687, 881, 883, 887, 893, 912, 974, 976, 977, 981, 983, 985, 1011, 1013, 1119, 1121, 1153, 1163, 1215, 1218, 1327, 1377, 1415, 7424, 7467, 7531, 7543, 7545, 7578, 7681, 7837, 7839, 7943, 7952, 7957, 7968, 7975, 7984, 7991, 8000, 8005, 8016, 8023, 8032, 8039, 8048, 8061, 8064, 8071, 8080, 8087, 8096, 8103, 8112, 8116, 8118, 8119, 8126, 8132, 8134, 8135, 8144, 8147, 8150, 8151, 8160, 8167, 8178, 8180, 8182, 8183, 8458, 8467, 8495, 8505, 8508, 8509, 8518, 8521, 8526, 8580, 11312, 11358, 11361, 11372, 11377, 11387, 11393, 11500, 11502, 11507, 11520, 11557, 11559, 11565, 42561, 42605, 42625, 42651, 42787, 42801, 42803, 42872, 42874, 42876, 42879, 42887, 42892, 42894, 42897, 42901, 42903, 42921, 43002, 43866, 43876, 43877, 64256, 64262, 64275, 64279, 65345, 65370, 6, 0, 453, 459, 498, 8079, 8088, 8095, 8104, 8111, 8124, 8140, 8188, 8188, 33, 0, 688, 705, 710, 721, 736, 740, 748, 750, 884, 890, 1369, 1600, 1765, 1766, 2036, 2037, 2042, 2074, 2084, 2088, 2417, 3654, 3782, 4348, 6103, 6211, 6823, 7293, 7468, 7530, 7544, 7615, 8305, 8319, 8336, 8348, 11388, 11389, 11631, 11823, 12293, 12341, 12347, 12542, 40981, 42237, 42508, 42623, 42652, 42653, 42775, 42783, 42864, 42888, 43000, 43001, 43471, 43494, 43632, 43741, 43763, 43764, 43868, 43871, 65392, 65439, 234, 0, 170, 186, 443, 451, 660, 1514, 1520, 1522, 1568, 1599, 1601, 1610, 1646, 1647, 1649, 1747, 1749, 1788, 1791, 1808, 1810, 1839, 1869, 1957, 1969, 2026, 2048, 2069, 2112, 2136, 2208, 2226, 2308, 2361, 2365, 2384, 2392, 2401, 2418, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2489, 2493, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2768, 2784, 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2913, 2929, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2986, 2990, 3001, 3024, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3406, 3424, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3526, 3585, 3632, 3634, 3635, 3648, 3653, 3713, 3714, 3716, 3722, 3725, 3735, 3737, 3743, 3745, 3747, 3749, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3780, 3804, 3807, 3840, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4181, 4186, 4189, 4193, 4208, 4213, 4225, 4238, 4346, 4349, 4680, 4682, 4685, 4688, 4694, 4696, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5873, 5880, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6108, 6210, 6212, 6263, 6272, 6312, 6314, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7287, 7401, 7404, 7406, 7409, 7413, 7414, 8501, 8504, 11568, 11623, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12294, 12348, 12353, 12438, 12447, 12538, 12543, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 40980, 40982, 42124, 42192, 42231, 42240, 42507, 42512, 42527, 42538, 42539, 42606, 42725, 42999, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43488, 43492, 43495, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43631, 43633, 43638, 43642, 43695, 43697, 43709, 43712, 43714, 43739, 43740, 43744, 43754, 43762, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65382, 65391, 65393, 65437, 65440, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 2, 0, 5870, 5872, 8544, 8559, 3, 0, 2307, 2307, 2366, 2368, 2377, 2380, 3, 0, 173, 173, 1536, 1539, 1757, 1757, 6, 0, 95, 95, 8255, 8256, 8276, 8276, 65075, 65076, 65101, 65103, 65343, 65343, 37, 0, 48, 57, 1632, 1641, 1776, 1785, 1984, 1993, 2406, 2415, 2534, 2543, 2662, 2671, 2790, 2799, 2918, 2927, 3046, 3055, 3174, 3183, 3302, 3311, 3430, 3439, 3558, 3567, 3664, 3673, 3792, 3801, 3872, 3881, 4160, 4169, 4240, 4249, 6112, 6121, 6160, 6169, 6470, 6479, 6608, 6617, 6784, 6793, 6800, 6809, 6992, 7001, 7088, 7097, 7232, 7241, 7248, 7257, 42528, 42537, 43216, 43225, 43264, 43273, 43472, 43481, 43504, 43513, 43600, 43609, 44016, 44025, 65296, 65305, 2125, 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, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 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, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 1, 347, 1, 0, 0, 0, 1, 349, 1, 0, 0, 0, 1, 351, 1, 0, 0, 0, 1, 353, 1, 0, 0, 0, 1, 355, 1, 0, 0, 0, 1, 357, 1, 0, 0, 0, 1, 359, 1, 0, 0, 0, 2, 361, 1, 0, 0, 0, 2, 363, 1, 0, 0, 0, 2, 365, 1, 0, 0, 0, 3, 367, 1, 0, 0, 0, 3, 369, 1, 0, 0, 0, 3, 371, 1, 0, 0, 0, 3, 373, 1, 0, 0, 0, 3, 375, 1, 0, 0, 0, 3, 377, 1, 0, 0, 0, 3, 379, 1, 0, 0, 0, 3, 381, 1, 0, 0, 0, 3, 383, 1, 0, 0, 0, 3, 385, 1, 0, 0, 0, 3, 387, 1, 0, 0, 0, 3, 389, 1, 0, 0, 0, 3, 391, 1, 0, 0, 0, 3, 393, 1, 0, 0, 0, 3, 395, 1, 0, 0, 0, 3, 397, 1, 0, 0, 0, 3, 399, 1, 0, 0, 0, 3, 401, 1, 0, 0, 0, 3, 403, 1, 0, 0, 0, 3, 405, 1, 0, 0, 0, 3, 407, 1, 0, 0, 0, 3, 409, 1, 0, 0, 0, 3, 411, 1, 0, 0, 0, 3, 413, 1, 0, 0, 0, 3, 415, 1, 0, 0, 0, 3, 417, 1, 0, 0, 0, 3, 419, 1, 0, 0, 0, 3, 421, 1, 0, 0, 0, 3, 423, 1, 0, 0, 0, 3, 425, 1, 0, 0, 0, 4, 427, 1, 0, 0, 0, 4, 429, 1, 0, 0, 0, 5, 493, 1, 0, 0, 0, 7, 497, 1, 0, 0, 0, 9, 509, 1, 0, 0, 0, 11, 517, 1, 0, 0, 0, 13, 533, 1, 0, 0, 0, 15, 544, 1, 0, 0, 0, 17, 560, 1, 0, 0, 0, 19, 566, 1, 0, 0, 0, 21, 571, 1, 0, 0, 0, 23, 580, 1, 0, 0, 0, 25, 584, 1, 0, 0, 0, 27, 590, 1, 0, 0, 0, 29, 600, 1, 0, 0, 0, 31, 603, 1, 0, 0, 0, 33, 613, 1, 0, 0, 0, 35, 619, 1, 0, 0, 0, 37, 625, 1, 0, 0, 0, 39, 630, 1, 0, 0, 0, 41, 635, 1, 0, 0, 0, 43, 641, 1, 0, 0, 0, 45, 644, 1, 0, 0, 0, 47, 649, 1, 0, 0, 0, 49, 654, 1, 0, 0, 0, 51, 660, 1, 0, 0, 0, 53, 665, 1, 0, 0, 0, 55, 673, 1, 0, 0, 0, 57, 679, 1, 0, 0, 0, 59, 685, 1, 0, 0, 0, 61, 694, 1, 0, 0, 0, 63, 702, 1, 0, 0, 0, 65, 710, 1, 0, 0, 0, 67, 719, 1, 0, 0, 0, 69, 730, 1, 0, 0, 0, 71, 733, 1, 0, 0, 0, 73, 740, 1, 0, 0, 0, 75, 748, 1, 0, 0, 0, 77, 753, 1, 0, 0, 0, 79, 758, 1, 0, 0, 0, 81, 765, 1, 0, 0, 0, 83, 771, 1, 0, 0, 0, 85, 780, 1, 0, 0, 0, 87, 787, 1, 0, 0, 0, 89, 793, 1, 0, 0, 0, 91, 801, 1, 0, 0, 0, 93, 807, 1, 0, 0, 0, 95, 813, 1, 0, 0, 0, 97, 817, 1, 0, 0, 0, 99, 825, 1, 0, 0, 0, 101, 830, 1, 0, 0, 0, 103, 834, 1, 0, 0, 0, 105, 839, 1, 0, 0, 0, 107, 845, 1, 0, 0, 0, 109, 848, 1, 0, 0, 0, 111, 857, 1, 0, 0, 0, 113, 860, 1, 0, 0, 0, 115, 864, 1, 0, 0, 0, 117, 874, 1, 0, 0, 0, 119, 883, 1, 0, 0, 0, 121, 888, 1, 0, 0, 0, 123, 891, 1, 0, 0, 0, 125, 896, 1, 0, 0, 0, 127, 900, 1, 0, 0, 0, 129, 905, 1, 0, 0, 0, 131, 910, 1, 0, 0, 0, 133, 917, 1, 0, 0, 0, 135, 927, 1, 0, 0, 0, 137, 931, 1, 0, 0, 0, 139, 936, 1, 0, 0, 0, 141, 943, 1, 0, 0, 0, 143, 946, 1, 0, 0, 0, 145, 955, 1, 0, 0, 0, 147, 963, 1, 0, 0, 0, 149, 967, 1, 0, 0, 0, 151, 976, 1, 0, 0, 0, 153, 983, 1, 0, 0, 0, 155, 991, 1, 0, 0, 0, 157, 999, 1, 0, 0, 0, 159, 1009, 1, 0, 0, 0, 161, 1016, 1, 0, 0, 0, 163, 1025, 1, 0, 0, 0, 165, 1029, 1, 0, 0, 0, 167, 1036, 1, 0, 0, 0, 169, 1043, 1, 0, 0, 0, 171, 1049, 1, 0, 0, 0, 173, 1056, 1, 0, 0, 0, 175, 1063, 1, 0, 0, 0, 177, 1067, 1, 0, 0, 0, 179, 1073, 1, 0, 0, 0, 181, 1080, 1, 0, 0, 0, 183, 1091, 1, 0, 0, 0, 185, 1098, 1, 0, 0, 0, 187, 1105, 1, 0, 0, 0, 189, 1112, 1, 0, 0, 0, 191, 1119, 1, 0, 0, 0, 193, 1124, 1, 0, 0, 0, 195, 1130, 1, 0, 0, 0, 197, 1135, 1, 0, 0, 0, 199, 1139, 1, 0, 0, 0, 201, 1146, 1, 0, 0, 0, 203, 1151, 1, 0, 0, 0, 205, 1157, 1, 0, 0, 0, 207, 1167, 1, 0, 0, 0, 209, 1177, 1, 0, 0, 0, 211, 1184, 1, 0, 0, 0, 213, 1191, 1, 0, 0, 0, 215, 1197, 1, 0, 0, 0, 217, 1201, 1, 0, 0, 0, 219, 1209, 1, 0, 0, 0, 221, 1214, 1, 0, 0, 0, 223, 1223, 1, 0, 0, 0, 225, 1228, 1, 0, 0, 0, 227, 1234, 1, 0, 0, 0, 229, 1240, 1, 0, 0, 0, 231, 1247, 1, 0, 0, 0, 233, 1251, 1, 0, 0, 0, 235, 1273, 1, 0, 0, 0, 237, 1289, 1, 0, 0, 0, 239, 1305, 1, 0, 0, 0, 241, 1376, 1, 0, 0, 0, 243, 1378, 1, 0, 0, 0, 245, 1385, 1, 0, 0, 0, 247, 1395, 1, 0, 0, 0, 249, 1408, 1, 0, 0, 0, 251, 1415, 1, 0, 0, 0, 253, 1423, 1, 0, 0, 0, 255, 1426, 1, 0, 0, 0, 257, 1429, 1, 0, 0, 0, 259, 1431, 1, 0, 0, 0, 261, 1433, 1, 0, 0, 0, 263, 1435, 1, 0, 0, 0, 265, 1437, 1, 0, 0, 0, 267, 1439, 1, 0, 0, 0, 269, 1441, 1, 0, 0, 0, 271, 1444, 1, 0, 0, 0, 273, 1446, 1, 0, 0, 0, 275, 1448, 1, 0, 0, 0, 277, 1450, 1, 0, 0, 0, 279, 1452, 1, 0, 0, 0, 281, 1454, 1, 0, 0, 0, 283, 1456, 1, 0, 0, 0, 285, 1458, 1, 0, 0, 0, 287, 1460, 1, 0, 0, 0, 289, 1462, 1, 0, 0, 0, 291, 1464, 1, 0, 0, 0, 293, 1466, 1, 0, 0, 0, 295, 1468, 1, 0, 0, 0, 297, 1470, 1, 0, 0, 0, 299, 1472, 1, 0, 0, 0, 301, 1474, 1, 0, 0, 0, 303, 1477, 1, 0, 0, 0, 305, 1480, 1, 0, 0, 0, 307, 1483, 1, 0, 0, 0, 309, 1486, 1, 0, 0, 0, 311, 1489, 1, 0, 0, 0, 313, 1492, 1, 0, 0, 0, 315, 1495, 1, 0, 0, 0, 317, 1498, 1, 0, 0, 0, 319, 1501, 1, 0, 0, 0, 321, 1504, 1, 0, 0, 0, 323, 1507, 1, 0, 0, 0, 325, 1510, 1, 0, 0, 0, 327, 1513, 1, 0, 0, 0, 329, 1516, 1, 0, 0, 0, 331, 1519, 1, 0, 0, 0, 333, 1522, 1, 0, 0, 0, 335, 1525, 1, 0, 0, 0, 337, 1528, 1, 0, 0, 0, 339, 1531, 1, 0, 0, 0, 341, 1534, 1, 0, 0, 0, 343, 1538, 1, 0, 0, 0, 345, 1542, 1, 0, 0, 0, 347, 1545, 1, 0, 0, 0, 349, 1548, 1, 0, 0, 0, 351, 1554, 1, 0, 0, 0, 353, 1557, 1, 0, 0, 0, 355, 1561, 1, 0, 0, 0, 357, 1566, 1, 0, 0, 0, 359, 1572, 1, 0, 0, 0, 361, 1578, 1, 0, 0, 0, 363, 1583, 1, 0, 0, 0, 365, 1590, 1, 0, 0, 0, 367, 1595, 1, 0, 0, 0, 369, 1602, 1, 0, 0, 0, 371, 1608, 1, 0, 0, 0, 373, 1616, 1, 0, 0, 0, 375, 1625, 1, 0, 0, 0, 377, 1634, 1, 0, 0, 0, 379, 1642, 1, 0, 0, 0, 381, 1648, 1, 0, 0, 0, 383, 1655, 1, 0, 0, 0, 385, 1663, 1, 0, 0, 0, 387, 1671, 1, 0, 0, 0, 389, 1678, 1, 0, 0, 0, 391, 1692, 1, 0, 0, 0, 393, 1708, 1, 0, 0, 0, 395, 1724, 1, 0, 0, 0, 397, 1743, 1, 0, 0, 0, 399, 1758, 1, 0, 0, 0, 401, 1775, 1, 0, 0, 0, 403, 1786, 1, 0, 0, 0, 405, 1795, 1, 0, 0, 0, 407, 1800, 1, 0, 0, 0, 409, 1805, 1, 0, 0, 0, 411, 1810, 1, 0, 0, 0, 413, 1816, 1, 0, 0, 0, 415, 1822, 1, 0, 0, 0, 417, 1828, 1, 0, 0, 0, 419, 1834, 1, 0, 0, 0, 421, 1846, 1, 0, 0, 0, 423, 1850, 1, 0, 0, 0, 425, 1862, 1, 0, 0, 0, 427, 1868, 1, 0, 0, 0, 429, 1874, 1, 0, 0, 0, 431, 1880, 1, 0, 0, 0, 433, 1882, 1, 0, 0, 0, 435, 1892, 1, 0, 0, 0, 437, 1894, 1, 0, 0, 0, 439, 1914, 1, 0, 0, 0, 441, 1938, 1, 0, 0, 0, 443, 1965, 1, 0, 0, 0, 445, 1970, 1, 0, 0, 0, 447, 1974, 1, 0, 0, 0, 449, 1976, 1, 0, 0, 0, 451, 1978, 1, 0, 0, 0, 453, 1987, 1, 0, 0, 0, 455, 1994, 1, 0, 0, 0, 457, 2003, 1, 0, 0, 0, 459, 2007, 1, 0, 0, 0, 461, 2011, 1, 0, 0, 0, 463, 2016, 1, 0, 0, 0, 465, 2020, 1, 0, 0, 0, 467, 2042, 1, 0, 0, 0, 469, 2045, 1, 0, 0, 0, 471, 2047, 1, 0, 0, 0, 473, 2049, 1, 0, 0, 0, 475, 2051, 1, 0, 0, 0, 477, 2053, 1, 0, 0, 0, 479, 2055, 1, 0, 0, 0, 481, 2057, 1, 0, 0, 0, 483, 2059, 1, 0, 0, 0, 485, 2061, 1, 0, 0, 0, 487, 2063, 1, 0, 0, 0, 489, 2065, 1, 0, 0, 0, 491, 2067, 1, 0, 0, 0, 493, 494, 5, 239, 0, 0, 494, 495, 5, 187, 0, 0, 495, 496, 5, 191, 0, 0, 496, 6, 1, 0, 0, 0, 497, 498, 5, 47, 0, 0, 498, 499, 5, 47, 0, 0, 499, 500, 5, 47, 0, 0, 500, 504, 1, 0, 0, 0, 501, 503, 3, 431, 213, 0, 502, 501, 1, 0, 0, 0, 503, 506, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 507, 1, 0, 0, 0, 506, 504, 1, 0, 0, 0, 507, 508, 6, 1, 0, 0, 508, 8, 1, 0, 0, 0, 509, 510, 5, 47, 0, 0, 510, 511, 5, 42, 0, 0, 511, 512, 5, 42, 0, 0, 512, 513, 5, 42, 0, 0, 513, 514, 5, 47, 0, 0, 514, 515, 1, 0, 0, 0, 515, 516, 6, 2, 0, 0, 516, 10, 1, 0, 0, 0, 517, 518, 5, 47, 0, 0, 518, 519, 5, 42, 0, 0, 519, 520, 5, 42, 0, 0, 520, 521, 1, 0, 0, 0, 521, 525, 8, 0, 0, 0, 522, 524, 9, 0, 0, 0, 523, 522, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 526, 528, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 528, 529, 5, 42, 0, 0, 529, 530, 5, 47, 0, 0, 530, 531, 1, 0, 0, 0, 531, 532, 6, 3, 0, 0, 532, 12, 1, 0, 0, 0, 533, 534, 5, 47, 0, 0, 534, 535, 5, 47, 0, 0, 535, 539, 1, 0, 0, 0, 536, 538, 3, 431, 213, 0, 537, 536, 1, 0, 0, 0, 538, 541, 1, 0, 0, 0, 539, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 542, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 542, 543, 6, 4, 0, 0, 543, 14, 1, 0, 0, 0, 544, 545, 5, 47, 0, 0, 545, 546, 5, 42, 0, 0, 546, 550, 1, 0, 0, 0, 547, 549, 9, 0, 0, 0, 548, 547, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 551, 553, 1, 0, 0, 0, 552, 550, 1, 0, 0, 0, 553, 554, 5, 42, 0, 0, 554, 555, 5, 47, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557, 6, 5, 0, 0, 557, 16, 1, 0, 0, 0, 558, 561, 3, 447, 221, 0, 559, 561, 3, 445, 220, 0, 560, 558, 1, 0, 0, 0, 560, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 6, 6, 1, 0, 565, 18, 1, 0, 0, 0, 566, 567, 5, 35, 0, 0, 567, 568, 1, 0, 0, 0, 568, 569, 6, 7, 2, 0, 569, 570, 6, 7, 3, 0, 570, 20, 1, 0, 0, 0, 571, 572, 5, 97, 0, 0, 572, 573, 5, 98, 0, 0, 573, 574, 5, 115, 0, 0, 574, 575, 5, 116, 0, 0, 575, 576, 5, 114, 0, 0, 576, 577, 5, 97, 0, 0, 577, 578, 5, 99, 0, 0, 578, 579, 5, 116, 0, 0, 579, 22, 1, 0, 0, 0, 580, 581, 5, 97, 0, 0, 581, 582, 5, 100, 0, 0, 582, 583, 5, 100, 0, 0, 583, 24, 1, 0, 0, 0, 584, 585, 5, 97, 0, 0, 585, 586, 5, 108, 0, 0, 586, 587, 5, 105, 0, 0, 587, 588, 5, 97, 0, 0, 588, 589, 5, 115, 0, 0, 589, 26, 1, 0, 0, 0, 590, 591, 5, 95, 0, 0, 591, 592, 5, 95, 0, 0, 592, 593, 5, 97, 0, 0, 593, 594, 5, 114, 0, 0, 594, 595, 5, 103, 0, 0, 595, 596, 5, 108, 0, 0, 596, 597, 5, 105, 0, 0, 597, 598, 5, 115, 0, 0, 598, 599, 5, 116, 0, 0, 599, 28, 1, 0, 0, 0, 600, 601, 5, 97, 0, 0, 601, 602, 5, 115, 0, 0, 602, 30, 1, 0, 0, 0, 603, 604, 5, 97, 0, 0, 604, 605, 5, 115, 0, 0, 605, 606, 5, 99, 0, 0, 606, 607, 5, 101, 0, 0, 607, 608, 5, 110, 0, 0, 608, 609, 5, 100, 0, 0, 609, 610, 5, 105, 0, 0, 610, 611, 5, 110, 0, 0, 611, 612, 5, 103, 0, 0, 612, 32, 1, 0, 0, 0, 613, 614, 5, 97, 0, 0, 614, 615, 5, 115, 0, 0, 615, 616, 5, 121, 0, 0, 616, 617, 5, 110, 0, 0, 617, 618, 5, 99, 0, 0, 618, 34, 1, 0, 0, 0, 619, 620, 5, 97, 0, 0, 620, 621, 5, 119, 0, 0, 621, 622, 5, 97, 0, 0, 622, 623, 5, 105, 0, 0, 623, 624, 5, 116, 0, 0, 624, 36, 1, 0, 0, 0, 625, 626, 5, 98, 0, 0, 626, 627, 5, 97, 0, 0, 627, 628, 5, 115, 0, 0, 628, 629, 5, 101, 0, 0, 629, 38, 1, 0, 0, 0, 630, 631, 5, 98, 0, 0, 631, 632, 5, 111, 0, 0, 632, 633, 5, 111, 0, 0, 633, 634, 5, 108, 0, 0, 634, 40, 1, 0, 0, 0, 635, 636, 5, 98, 0, 0, 636, 637, 5, 114, 0, 0, 637, 638, 5, 101, 0, 0, 638, 639, 5, 97, 0, 0, 639, 640, 5, 107, 0, 0, 640, 42, 1, 0, 0, 0, 641, 642, 5, 98, 0, 0, 642, 643, 5, 121, 0, 0, 643, 44, 1, 0, 0, 0, 644, 645, 5, 98, 0, 0, 645, 646, 5, 121, 0, 0, 646, 647, 5, 116, 0, 0, 647, 648, 5, 101, 0, 0, 648, 46, 1, 0, 0, 0, 649, 650, 5, 99, 0, 0, 650, 651, 5, 97, 0, 0, 651, 652, 5, 115, 0, 0, 652, 653, 5, 101, 0, 0, 653, 48, 1, 0, 0, 0, 654, 655, 5, 99, 0, 0, 655, 656, 5, 97, 0, 0, 656, 657, 5, 116, 0, 0, 657, 658, 5, 99, 0, 0, 658, 659, 5, 104, 0, 0, 659, 50, 1, 0, 0, 0, 660, 661, 5, 99, 0, 0, 661, 662, 5, 104, 0, 0, 662, 663, 5, 97, 0, 0, 663, 664, 5, 114, 0, 0, 664, 52, 1, 0, 0, 0, 665, 666, 5, 99, 0, 0, 666, 667, 5, 104, 0, 0, 667, 668, 5, 101, 0, 0, 668, 669, 5, 99, 0, 0, 669, 670, 5, 107, 0, 0, 670, 671, 5, 101, 0, 0, 671, 672, 5, 100, 0, 0, 672, 54, 1, 0, 0, 0, 673, 674, 5, 99, 0, 0, 674, 675, 5, 108, 0, 0, 675, 676, 5, 97, 0, 0, 676, 677, 5, 115, 0, 0, 677, 678, 5, 115, 0, 0, 678, 56, 1, 0, 0, 0, 679, 680, 5, 99, 0, 0, 680, 681, 5, 111, 0, 0, 681, 682, 5, 110, 0, 0, 682, 683, 5, 115, 0, 0, 683, 684, 5, 116, 0, 0, 684, 58, 1, 0, 0, 0, 685, 686, 5, 99, 0, 0, 686, 687, 5, 111, 0, 0, 687, 688, 5, 110, 0, 0, 688, 689, 5, 116, 0, 0, 689, 690, 5, 105, 0, 0, 690, 691, 5, 110, 0, 0, 691, 692, 5, 117, 0, 0, 692, 693, 5, 101, 0, 0, 693, 60, 1, 0, 0, 0, 694, 695, 5, 100, 0, 0, 695, 696, 5, 101, 0, 0, 696, 697, 5, 99, 0, 0, 697, 698, 5, 105, 0, 0, 698, 699, 5, 109, 0, 0, 699, 700, 5, 97, 0, 0, 700, 701, 5, 108, 0, 0, 701, 62, 1, 0, 0, 0, 702, 703, 5, 100, 0, 0, 703, 704, 5, 101, 0, 0, 704, 705, 5, 102, 0, 0, 705, 706, 5, 97, 0, 0, 706, 707, 5, 117, 0, 0, 707, 708, 5, 108, 0, 0, 708, 709, 5, 116, 0, 0, 709, 64, 1, 0, 0, 0, 710, 711, 5, 100, 0, 0, 711, 712, 5, 101, 0, 0, 712, 713, 5, 108, 0, 0, 713, 714, 5, 101, 0, 0, 714, 715, 5, 103, 0, 0, 715, 716, 5, 97, 0, 0, 716, 717, 5, 116, 0, 0, 717, 718, 5, 101, 0, 0, 718, 66, 1, 0, 0, 0, 719, 720, 5, 100, 0, 0, 720, 721, 5, 101, 0, 0, 721, 722, 5, 115, 0, 0, 722, 723, 5, 99, 0, 0, 723, 724, 5, 101, 0, 0, 724, 725, 5, 110, 0, 0, 725, 726, 5, 100, 0, 0, 726, 727, 5, 105, 0, 0, 727, 728, 5, 110, 0, 0, 728, 729, 5, 103, 0, 0, 729, 68, 1, 0, 0, 0, 730, 731, 5, 100, 0, 0, 731, 732, 5, 111, 0, 0, 732, 70, 1, 0, 0, 0, 733, 734, 5, 100, 0, 0, 734, 735, 5, 111, 0, 0, 735, 736, 5, 117, 0, 0, 736, 737, 5, 98, 0, 0, 737, 738, 5, 108, 0, 0, 738, 739, 5, 101, 0, 0, 739, 72, 1, 0, 0, 0, 740, 741, 5, 100, 0, 0, 741, 742, 5, 121, 0, 0, 742, 743, 5, 110, 0, 0, 743, 744, 5, 97, 0, 0, 744, 745, 5, 109, 0, 0, 745, 746, 5, 105, 0, 0, 746, 747, 5, 99, 0, 0, 747, 74, 1, 0, 0, 0, 748, 749, 5, 101, 0, 0, 749, 750, 5, 108, 0, 0, 750, 751, 5, 115, 0, 0, 751, 752, 5, 101, 0, 0, 752, 76, 1, 0, 0, 0, 753, 754, 5, 101, 0, 0, 754, 755, 5, 110, 0, 0, 755, 756, 5, 117, 0, 0, 756, 757, 5, 109, 0, 0, 757, 78, 1, 0, 0, 0, 758, 759, 5, 101, 0, 0, 759, 760, 5, 113, 0, 0, 760, 761, 5, 117, 0, 0, 761, 762, 5, 97, 0, 0, 762, 763, 5, 108, 0, 0, 763, 764, 5, 115, 0, 0, 764, 80, 1, 0, 0, 0, 765, 766, 5, 101, 0, 0, 766, 767, 5, 118, 0, 0, 767, 768, 5, 101, 0, 0, 768, 769, 5, 110, 0, 0, 769, 770, 5, 116, 0, 0, 770, 82, 1, 0, 0, 0, 771, 772, 5, 101, 0, 0, 772, 773, 5, 120, 0, 0, 773, 774, 5, 112, 0, 0, 774, 775, 5, 108, 0, 0, 775, 776, 5, 105, 0, 0, 776, 777, 5, 99, 0, 0, 777, 778, 5, 105, 0, 0, 778, 779, 5, 116, 0, 0, 779, 84, 1, 0, 0, 0, 780, 781, 5, 101, 0, 0, 781, 782, 5, 120, 0, 0, 782, 783, 5, 116, 0, 0, 783, 784, 5, 101, 0, 0, 784, 785, 5, 114, 0, 0, 785, 786, 5, 110, 0, 0, 786, 86, 1, 0, 0, 0, 787, 788, 5, 102, 0, 0, 788, 789, 5, 97, 0, 0, 789, 790, 5, 108, 0, 0, 790, 791, 5, 115, 0, 0, 791, 792, 5, 101, 0, 0, 792, 88, 1, 0, 0, 0, 793, 794, 5, 102, 0, 0, 794, 795, 5, 105, 0, 0, 795, 796, 5, 110, 0, 0, 796, 797, 5, 97, 0, 0, 797, 798, 5, 108, 0, 0, 798, 799, 5, 108, 0, 0, 799, 800, 5, 121, 0, 0, 800, 90, 1, 0, 0, 0, 801, 802, 5, 102, 0, 0, 802, 803, 5, 105, 0, 0, 803, 804, 5, 120, 0, 0, 804, 805, 5, 101, 0, 0, 805, 806, 5, 100, 0, 0, 806, 92, 1, 0, 0, 0, 807, 808, 5, 102, 0, 0, 808, 809, 5, 108, 0, 0, 809, 810, 5, 111, 0, 0, 810, 811, 5, 97, 0, 0, 811, 812, 5, 116, 0, 0, 812, 94, 1, 0, 0, 0, 813, 814, 5, 102, 0, 0, 814, 815, 5, 111, 0, 0, 815, 816, 5, 114, 0, 0, 816, 96, 1, 0, 0, 0, 817, 818, 5, 102, 0, 0, 818, 819, 5, 111, 0, 0, 819, 820, 5, 114, 0, 0, 820, 821, 5, 101, 0, 0, 821, 822, 5, 97, 0, 0, 822, 823, 5, 99, 0, 0, 823, 824, 5, 104, 0, 0, 824, 98, 1, 0, 0, 0, 825, 826, 5, 102, 0, 0, 826, 827, 5, 114, 0, 0, 827, 828, 5, 111, 0, 0, 828, 829, 5, 109, 0, 0, 829, 100, 1, 0, 0, 0, 830, 831, 5, 103, 0, 0, 831, 832, 5, 101, 0, 0, 832, 833, 5, 116, 0, 0, 833, 102, 1, 0, 0, 0, 834, 835, 5, 103, 0, 0, 835, 836, 5, 111, 0, 0, 836, 837, 5, 116, 0, 0, 837, 838, 5, 111, 0, 0, 838, 104, 1, 0, 0, 0, 839, 840, 5, 103, 0, 0, 840, 841, 5, 114, 0, 0, 841, 842, 5, 111, 0, 0, 842, 843, 5, 117, 0, 0, 843, 844, 5, 112, 0, 0, 844, 106, 1, 0, 0, 0, 845, 846, 5, 105, 0, 0, 846, 847, 5, 102, 0, 0, 847, 108, 1, 0, 0, 0, 848, 849, 5, 105, 0, 0, 849, 850, 5, 109, 0, 0, 850, 851, 5, 112, 0, 0, 851, 852, 5, 108, 0, 0, 852, 853, 5, 105, 0, 0, 853, 854, 5, 99, 0, 0, 854, 855, 5, 105, 0, 0, 855, 856, 5, 116, 0, 0, 856, 110, 1, 0, 0, 0, 857, 858, 5, 105, 0, 0, 858, 859, 5, 110, 0, 0, 859, 112, 1, 0, 0, 0, 860, 861, 5, 105, 0, 0, 861, 862, 5, 110, 0, 0, 862, 863, 5, 116, 0, 0, 863, 114, 1, 0, 0, 0, 864, 865, 5, 105, 0, 0, 865, 866, 5, 110, 0, 0, 866, 867, 5, 116, 0, 0, 867, 868, 5, 101, 0, 0, 868, 869, 5, 114, 0, 0, 869, 870, 5, 102, 0, 0, 870, 871, 5, 97, 0, 0, 871, 872, 5, 99, 0, 0, 872, 873, 5, 101, 0, 0, 873, 116, 1, 0, 0, 0, 874, 875, 5, 105, 0, 0, 875, 876, 5, 110, 0, 0, 876, 877, 5, 116, 0, 0, 877, 878, 5, 101, 0, 0, 878, 879, 5, 114, 0, 0, 879, 880, 5, 110, 0, 0, 880, 881, 5, 97, 0, 0, 881, 882, 5, 108, 0, 0, 882, 118, 1, 0, 0, 0, 883, 884, 5, 105, 0, 0, 884, 885, 5, 110, 0, 0, 885, 886, 5, 116, 0, 0, 886, 887, 5, 111, 0, 0, 887, 120, 1, 0, 0, 0, 888, 889, 5, 105, 0, 0, 889, 890, 5, 115, 0, 0, 890, 122, 1, 0, 0, 0, 891, 892, 5, 106, 0, 0, 892, 893, 5, 111, 0, 0, 893, 894, 5, 105, 0, 0, 894, 895, 5, 110, 0, 0, 895, 124, 1, 0, 0, 0, 896, 897, 5, 108, 0, 0, 897, 898, 5, 101, 0, 0, 898, 899, 5, 116, 0, 0, 899, 126, 1, 0, 0, 0, 900, 901, 5, 108, 0, 0, 901, 902, 5, 111, 0, 0, 902, 903, 5, 99, 0, 0, 903, 904, 5, 107, 0, 0, 904, 128, 1, 0, 0, 0, 905, 906, 5, 108, 0, 0, 906, 907, 5, 111, 0, 0, 907, 908, 5, 110, 0, 0, 908, 909, 5, 103, 0, 0, 909, 130, 1, 0, 0, 0, 910, 911, 5, 110, 0, 0, 911, 912, 5, 97, 0, 0, 912, 913, 5, 109, 0, 0, 913, 914, 5, 101, 0, 0, 914, 915, 5, 111, 0, 0, 915, 916, 5, 102, 0, 0, 916, 132, 1, 0, 0, 0, 917, 918, 5, 110, 0, 0, 918, 919, 5, 97, 0, 0, 919, 920, 5, 109, 0, 0, 920, 921, 5, 101, 0, 0, 921, 922, 5, 115, 0, 0, 922, 923, 5, 112, 0, 0, 923, 924, 5, 97, 0, 0, 924, 925, 5, 99, 0, 0, 925, 926, 5, 101, 0, 0, 926, 134, 1, 0, 0, 0, 927, 928, 5, 110, 0, 0, 928, 929, 5, 101, 0, 0, 929, 930, 5, 119, 0, 0, 930, 136, 1, 0, 0, 0, 931, 932, 5, 110, 0, 0, 932, 933, 5, 117, 0, 0, 933, 934, 5, 108, 0, 0, 934, 935, 5, 108, 0, 0, 935, 138, 1, 0, 0, 0, 936, 937, 5, 111, 0, 0, 937, 938, 5, 98, 0, 0, 938, 939, 5, 106, 0, 0, 939, 940, 5, 101, 0, 0, 940, 941, 5, 99, 0, 0, 941, 942, 5, 116, 0, 0, 942, 140, 1, 0, 0, 0, 943, 944, 5, 111, 0, 0, 944, 945, 5, 110, 0, 0, 945, 142, 1, 0, 0, 0, 946, 947, 5, 111, 0, 0, 947, 948, 5, 112, 0, 0, 948, 949, 5, 101, 0, 0, 949, 950, 5, 114, 0, 0, 950, 951, 5, 97, 0, 0, 951, 952, 5, 116, 0, 0, 952, 953, 5, 111, 0, 0, 953, 954, 5, 114, 0, 0, 954, 144, 1, 0, 0, 0, 955, 956, 5, 111, 0, 0, 956, 957, 5, 114, 0, 0, 957, 958, 5, 100, 0, 0, 958, 959, 5, 101, 0, 0, 959, 960, 5, 114, 0, 0, 960, 961, 5, 98, 0, 0, 961, 962, 5, 121, 0, 0, 962, 146, 1, 0, 0, 0, 963, 964, 5, 111, 0, 0, 964, 965, 5, 117, 0, 0, 965, 966, 5, 116, 0, 0, 966, 148, 1, 0, 0, 0, 967, 968, 5, 111, 0, 0, 968, 969, 5, 118, 0, 0, 969, 970, 5, 101, 0, 0, 970, 971, 5, 114, 0, 0, 971, 972, 5, 114, 0, 0, 972, 973, 5, 105, 0, 0, 973, 974, 5, 100, 0, 0, 974, 975, 5, 101, 0, 0, 975, 150, 1, 0, 0, 0, 976, 977, 5, 112, 0, 0, 977, 978, 5, 97, 0, 0, 978, 979, 5, 114, 0, 0, 979, 980, 5, 97, 0, 0, 980, 981, 5, 109, 0, 0, 981, 982, 5, 115, 0, 0, 982, 152, 1, 0, 0, 0, 983, 984, 5, 112, 0, 0, 984, 985, 5, 97, 0, 0, 985, 986, 5, 114, 0, 0, 986, 987, 5, 116, 0, 0, 987, 988, 5, 105, 0, 0, 988, 989, 5, 97, 0, 0, 989, 990, 5, 108, 0, 0, 990, 154, 1, 0, 0, 0, 991, 992, 5, 112, 0, 0, 992, 993, 5, 114, 0, 0, 993, 994, 5, 105, 0, 0, 994, 995, 5, 118, 0, 0, 995, 996, 5, 97, 0, 0, 996, 997, 5, 116, 0, 0, 997, 998, 5, 101, 0, 0, 998, 156, 1, 0, 0, 0, 999, 1000, 5, 112, 0, 0, 1000, 1001, 5, 114, 0, 0, 1001, 1002, 5, 111, 0, 0, 1002, 1003, 5, 116, 0, 0, 1003, 1004, 5, 101, 0, 0, 1004, 1005, 5, 99, 0, 0, 1005, 1006, 5, 116, 0, 0, 1006, 1007, 5, 101, 0, 0, 1007, 1008, 5, 100, 0, 0, 1008, 158, 1, 0, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1011, 5, 117, 0, 0, 1011, 1012, 5, 98, 0, 0, 1012, 1013, 5, 108, 0, 0, 1013, 1014, 5, 105, 0, 0, 1014, 1015, 5, 99, 0, 0, 1015, 160, 1, 0, 0, 0, 1016, 1017, 5, 114, 0, 0, 1017, 1018, 5, 101, 0, 0, 1018, 1019, 5, 97, 0, 0, 1019, 1020, 5, 100, 0, 0, 1020, 1021, 5, 111, 0, 0, 1021, 1022, 5, 110, 0, 0, 1022, 1023, 5, 108, 0, 0, 1023, 1024, 5, 121, 0, 0, 1024, 162, 1, 0, 0, 0, 1025, 1026, 5, 114, 0, 0, 1026, 1027, 5, 101, 0, 0, 1027, 1028, 5, 102, 0, 0, 1028, 164, 1, 0, 0, 0, 1029, 1030, 5, 114, 0, 0, 1030, 1031, 5, 101, 0, 0, 1031, 1032, 5, 109, 0, 0, 1032, 1033, 5, 111, 0, 0, 1033, 1034, 5, 118, 0, 0, 1034, 1035, 5, 101, 0, 0, 1035, 166, 1, 0, 0, 0, 1036, 1037, 5, 114, 0, 0, 1037, 1038, 5, 101, 0, 0, 1038, 1039, 5, 116, 0, 0, 1039, 1040, 5, 117, 0, 0, 1040, 1041, 5, 114, 0, 0, 1041, 1042, 5, 110, 0, 0, 1042, 168, 1, 0, 0, 0, 1043, 1044, 5, 115, 0, 0, 1044, 1045, 5, 98, 0, 0, 1045, 1046, 5, 121, 0, 0, 1046, 1047, 5, 116, 0, 0, 1047, 1048, 5, 101, 0, 0, 1048, 170, 1, 0, 0, 0, 1049, 1050, 5, 115, 0, 0, 1050, 1051, 5, 101, 0, 0, 1051, 1052, 5, 97, 0, 0, 1052, 1053, 5, 108, 0, 0, 1053, 1054, 5, 101, 0, 0, 1054, 1055, 5, 100, 0, 0, 1055, 172, 1, 0, 0, 0, 1056, 1057, 5, 115, 0, 0, 1057, 1058, 5, 101, 0, 0, 1058, 1059, 5, 108, 0, 0, 1059, 1060, 5, 101, 0, 0, 1060, 1061, 5, 99, 0, 0, 1061, 1062, 5, 116, 0, 0, 1062, 174, 1, 0, 0, 0, 1063, 1064, 5, 115, 0, 0, 1064, 1065, 5, 101, 0, 0, 1065, 1066, 5, 116, 0, 0, 1066, 176, 1, 0, 0, 0, 1067, 1068, 5, 115, 0, 0, 1068, 1069, 5, 104, 0, 0, 1069, 1070, 5, 111, 0, 0, 1070, 1071, 5, 114, 0, 0, 1071, 1072, 5, 116, 0, 0, 1072, 178, 1, 0, 0, 0, 1073, 1074, 5, 115, 0, 0, 1074, 1075, 5, 105, 0, 0, 1075, 1076, 5, 122, 0, 0, 1076, 1077, 5, 101, 0, 0, 1077, 1078, 5, 111, 0, 0, 1078, 1079, 5, 102, 0, 0, 1079, 180, 1, 0, 0, 0, 1080, 1081, 5, 115, 0, 0, 1081, 1082, 5, 116, 0, 0, 1082, 1083, 5, 97, 0, 0, 1083, 1084, 5, 99, 0, 0, 1084, 1085, 5, 107, 0, 0, 1085, 1086, 5, 97, 0, 0, 1086, 1087, 5, 108, 0, 0, 1087, 1088, 5, 108, 0, 0, 1088, 1089, 5, 111, 0, 0, 1089, 1090, 5, 99, 0, 0, 1090, 182, 1, 0, 0, 0, 1091, 1092, 5, 115, 0, 0, 1092, 1093, 5, 116, 0, 0, 1093, 1094, 5, 97, 0, 0, 1094, 1095, 5, 116, 0, 0, 1095, 1096, 5, 105, 0, 0, 1096, 1097, 5, 99, 0, 0, 1097, 184, 1, 0, 0, 0, 1098, 1099, 5, 115, 0, 0, 1099, 1100, 5, 116, 0, 0, 1100, 1101, 5, 114, 0, 0, 1101, 1102, 5, 105, 0, 0, 1102, 1103, 5, 110, 0, 0, 1103, 1104, 5, 103, 0, 0, 1104, 186, 1, 0, 0, 0, 1105, 1106, 5, 115, 0, 0, 1106, 1107, 5, 116, 0, 0, 1107, 1108, 5, 114, 0, 0, 1108, 1109, 5, 117, 0, 0, 1109, 1110, 5, 99, 0, 0, 1110, 1111, 5, 116, 0, 0, 1111, 188, 1, 0, 0, 0, 1112, 1113, 5, 115, 0, 0, 1113, 1114, 5, 119, 0, 0, 1114, 1115, 5, 105, 0, 0, 1115, 1116, 5, 116, 0, 0, 1116, 1117, 5, 99, 0, 0, 1117, 1118, 5, 104, 0, 0, 1118, 190, 1, 0, 0, 0, 1119, 1120, 5, 116, 0, 0, 1120, 1121, 5, 104, 0, 0, 1121, 1122, 5, 105, 0, 0, 1122, 1123, 5, 115, 0, 0, 1123, 192, 1, 0, 0, 0, 1124, 1125, 5, 116, 0, 0, 1125, 1126, 5, 104, 0, 0, 1126, 1127, 5, 114, 0, 0, 1127, 1128, 5, 111, 0, 0, 1128, 1129, 5, 119, 0, 0, 1129, 194, 1, 0, 0, 0, 1130, 1131, 5, 116, 0, 0, 1131, 1132, 5, 114, 0, 0, 1132, 1133, 5, 117, 0, 0, 1133, 1134, 5, 101, 0, 0, 1134, 196, 1, 0, 0, 0, 1135, 1136, 5, 116, 0, 0, 1136, 1137, 5, 114, 0, 0, 1137, 1138, 5, 121, 0, 0, 1138, 198, 1, 0, 0, 0, 1139, 1140, 5, 116, 0, 0, 1140, 1141, 5, 121, 0, 0, 1141, 1142, 5, 112, 0, 0, 1142, 1143, 5, 101, 0, 0, 1143, 1144, 5, 111, 0, 0, 1144, 1145, 5, 102, 0, 0, 1145, 200, 1, 0, 0, 0, 1146, 1147, 5, 117, 0, 0, 1147, 1148, 5, 105, 0, 0, 1148, 1149, 5, 110, 0, 0, 1149, 1150, 5, 116, 0, 0, 1150, 202, 1, 0, 0, 0, 1151, 1152, 5, 117, 0, 0, 1152, 1153, 5, 108, 0, 0, 1153, 1154, 5, 111, 0, 0, 1154, 1155, 5, 110, 0, 0, 1155, 1156, 5, 103, 0, 0, 1156, 204, 1, 0, 0, 0, 1157, 1158, 5, 117, 0, 0, 1158, 1159, 5, 110, 0, 0, 1159, 1160, 5, 99, 0, 0, 1160, 1161, 5, 104, 0, 0, 1161, 1162, 5, 101, 0, 0, 1162, 1163, 5, 99, 0, 0, 1163, 1164, 5, 107, 0, 0, 1164, 1165, 5, 101, 0, 0, 1165, 1166, 5, 100, 0, 0, 1166, 206, 1, 0, 0, 0, 1167, 1168, 5, 117, 0, 0, 1168, 1169, 5, 110, 0, 0, 1169, 1170, 5, 109, 0, 0, 1170, 1171, 5, 97, 0, 0, 1171, 1172, 5, 110, 0, 0, 1172, 1173, 5, 97, 0, 0, 1173, 1174, 5, 103, 0, 0, 1174, 1175, 5, 101, 0, 0, 1175, 1176, 5, 100, 0, 0, 1176, 208, 1, 0, 0, 0, 1177, 1178, 5, 117, 0, 0, 1178, 1179, 5, 110, 0, 0, 1179, 1180, 5, 115, 0, 0, 1180, 1181, 5, 97, 0, 0, 1181, 1182, 5, 102, 0, 0, 1182, 1183, 5, 101, 0, 0, 1183, 210, 1, 0, 0, 0, 1184, 1185, 5, 117, 0, 0, 1185, 1186, 5, 115, 0, 0, 1186, 1187, 5, 104, 0, 0, 1187, 1188, 5, 111, 0, 0, 1188, 1189, 5, 114, 0, 0, 1189, 1190, 5, 116, 0, 0, 1190, 212, 1, 0, 0, 0, 1191, 1192, 5, 117, 0, 0, 1192, 1193, 5, 115, 0, 0, 1193, 1194, 5, 105, 0, 0, 1194, 1195, 5, 110, 0, 0, 1195, 1196, 5, 103, 0, 0, 1196, 214, 1, 0, 0, 0, 1197, 1198, 5, 118, 0, 0, 1198, 1199, 5, 97, 0, 0, 1199, 1200, 5, 114, 0, 0, 1200, 216, 1, 0, 0, 0, 1201, 1202, 5, 118, 0, 0, 1202, 1203, 5, 105, 0, 0, 1203, 1204, 5, 114, 0, 0, 1204, 1205, 5, 116, 0, 0, 1205, 1206, 5, 117, 0, 0, 1206, 1207, 5, 97, 0, 0, 1207, 1208, 5, 108, 0, 0, 1208, 218, 1, 0, 0, 0, 1209, 1210, 5, 118, 0, 0, 1210, 1211, 5, 111, 0, 0, 1211, 1212, 5, 105, 0, 0, 1212, 1213, 5, 100, 0, 0, 1213, 220, 1, 0, 0, 0, 1214, 1215, 5, 118, 0, 0, 1215, 1216, 5, 111, 0, 0, 1216, 1217, 5, 108, 0, 0, 1217, 1218, 5, 97, 0, 0, 1218, 1219, 5, 116, 0, 0, 1219, 1220, 5, 105, 0, 0, 1220, 1221, 5, 108, 0, 0, 1221, 1222, 5, 101, 0, 0, 1222, 222, 1, 0, 0, 0, 1223, 1224, 5, 119, 0, 0, 1224, 1225, 5, 104, 0, 0, 1225, 1226, 5, 101, 0, 0, 1226, 1227, 5, 110, 0, 0, 1227, 224, 1, 0, 0, 0, 1228, 1229, 5, 119, 0, 0, 1229, 1230, 5, 104, 0, 0, 1230, 1231, 5, 101, 0, 0, 1231, 1232, 5, 114, 0, 0, 1232, 1233, 5, 101, 0, 0, 1233, 226, 1, 0, 0, 0, 1234, 1235, 5, 119, 0, 0, 1235, 1236, 5, 104, 0, 0, 1236, 1237, 5, 105, 0, 0, 1237, 1238, 5, 108, 0, 0, 1238, 1239, 5, 101, 0, 0, 1239, 228, 1, 0, 0, 0, 1240, 1241, 5, 121, 0, 0, 1241, 1242, 5, 105, 0, 0, 1242, 1243, 5, 101, 0, 0, 1243, 1244, 5, 108, 0, 0, 1244, 1245, 5, 100, 0, 0, 1245, 230, 1, 0, 0, 0, 1246, 1248, 5, 64, 0, 0, 1247, 1246, 1, 0, 0, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 3, 451, 223, 0, 1250, 232, 1, 0, 0, 0, 1251, 1261, 7, 1, 0, 0, 1252, 1254, 5, 95, 0, 0, 1253, 1252, 1, 0, 0, 0, 1254, 1257, 1, 0, 0, 0, 1255, 1253, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1258, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1258, 1260, 7, 1, 0, 0, 1259, 1255, 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, 3, 435, 215, 0, 1265, 1264, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1269, 5, 46, 0, 0, 1268, 1270, 5, 64, 0, 0, 1269, 1268, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1272, 3, 451, 223, 0, 1272, 234, 1, 0, 0, 0, 1273, 1283, 7, 1, 0, 0, 1274, 1276, 5, 95, 0, 0, 1275, 1274, 1, 0, 0, 0, 1276, 1279, 1, 0, 0, 0, 1277, 1275, 1, 0, 0, 0, 1277, 1278, 1, 0, 0, 0, 1278, 1280, 1, 0, 0, 0, 1279, 1277, 1, 0, 0, 0, 1280, 1282, 7, 1, 0, 0, 1281, 1277, 1, 0, 0, 0, 1282, 1285, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 1287, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1286, 1288, 3, 435, 215, 0, 1287, 1286, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 236, 1, 0, 0, 0, 1289, 1290, 5, 48, 0, 0, 1290, 1298, 7, 2, 0, 0, 1291, 1293, 5, 95, 0, 0, 1292, 1291, 1, 0, 0, 0, 1293, 1296, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1297, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1297, 1299, 3, 469, 232, 0, 1298, 1294, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1298, 1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1303, 1, 0, 0, 0, 1302, 1304, 3, 435, 215, 0, 1303, 1302, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 238, 1, 0, 0, 0, 1305, 1306, 5, 48, 0, 0, 1306, 1314, 7, 3, 0, 0, 1307, 1309, 5, 95, 0, 0, 1308, 1307, 1, 0, 0, 0, 1309, 1312, 1, 0, 0, 0, 1310, 1308, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 1313, 1, 0, 0, 0, 1312, 1310, 1, 0, 0, 0, 1313, 1315, 7, 4, 0, 0, 1314, 1310, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, 0, 1316, 1317, 1, 0, 0, 0, 1317, 1319, 1, 0, 0, 0, 1318, 1320, 3, 435, 215, 0, 1319, 1318, 1, 0, 0, 0, 1319, 1320, 1, 0, 0, 0, 1320, 240, 1, 0, 0, 0, 1321, 1331, 7, 1, 0, 0, 1322, 1324, 5, 95, 0, 0, 1323, 1322, 1, 0, 0, 0, 1324, 1327, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1328, 1, 0, 0, 0, 1327, 1325, 1, 0, 0, 0, 1328, 1330, 7, 1, 0, 0, 1329, 1325, 1, 0, 0, 0, 1330, 1333, 1, 0, 0, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1335, 1, 0, 0, 0, 1333, 1331, 1, 0, 0, 0, 1334, 1321, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1337, 5, 46, 0, 0, 1337, 1347, 7, 1, 0, 0, 1338, 1340, 5, 95, 0, 0, 1339, 1338, 1, 0, 0, 0, 1340, 1343, 1, 0, 0, 0, 1341, 1339, 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1344, 1, 0, 0, 0, 1343, 1341, 1, 0, 0, 0, 1344, 1346, 7, 1, 0, 0, 1345, 1341, 1, 0, 0, 0, 1346, 1349, 1, 0, 0, 0, 1347, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1351, 1, 0, 0, 0, 1349, 1347, 1, 0, 0, 0, 1350, 1352, 3, 437, 216, 0, 1351, 1350, 1, 0, 0, 0, 1351, 1352, 1, 0, 0, 0, 1352, 1354, 1, 0, 0, 0, 1353, 1355, 7, 5, 0, 0, 1354, 1353, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1377, 1, 0, 0, 0, 1356, 1366, 7, 1, 0, 0, 1357, 1359, 5, 95, 0, 0, 1358, 1357, 1, 0, 0, 0, 1359, 1362, 1, 0, 0, 0, 1360, 1358, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, 1360, 1, 0, 0, 0, 1363, 1365, 7, 1, 0, 0, 1364, 1360, 1, 0, 0, 0, 1365, 1368, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1374, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1369, 1375, 7, 5, 0, 0, 1370, 1372, 3, 437, 216, 0, 1371, 1373, 7, 5, 0, 0, 1372, 1371, 1, 0, 0, 0, 1372, 1373, 1, 0, 0, 0, 1373, 1375, 1, 0, 0, 0, 1374, 1369, 1, 0, 0, 0, 1374, 1370, 1, 0, 0, 0, 1375, 1377, 1, 0, 0, 0, 1376, 1334, 1, 0, 0, 0, 1376, 1356, 1, 0, 0, 0, 1377, 242, 1, 0, 0, 0, 1378, 1381, 5, 39, 0, 0, 1379, 1382, 8, 6, 0, 0, 1380, 1382, 3, 439, 217, 0, 1381, 1379, 1, 0, 0, 0, 1381, 1380, 1, 0, 0, 0, 1382, 1383, 1, 0, 0, 0, 1383, 1384, 5, 39, 0, 0, 1384, 244, 1, 0, 0, 0, 1385, 1390, 5, 34, 0, 0, 1386, 1389, 8, 7, 0, 0, 1387, 1389, 3, 439, 217, 0, 1388, 1386, 1, 0, 0, 0, 1388, 1387, 1, 0, 0, 0, 1389, 1392, 1, 0, 0, 0, 1390, 1388, 1, 0, 0, 0, 1390, 1391, 1, 0, 0, 0, 1391, 1393, 1, 0, 0, 0, 1392, 1390, 1, 0, 0, 0, 1393, 1394, 5, 34, 0, 0, 1394, 246, 1, 0, 0, 0, 1395, 1396, 5, 64, 0, 0, 1396, 1397, 5, 34, 0, 0, 1397, 1403, 1, 0, 0, 0, 1398, 1402, 8, 8, 0, 0, 1399, 1400, 5, 34, 0, 0, 1400, 1402, 5, 34, 0, 0, 1401, 1398, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1405, 1, 0, 0, 0, 1403, 1401, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1406, 1, 0, 0, 0, 1405, 1403, 1, 0, 0, 0, 1406, 1407, 5, 34, 0, 0, 1407, 248, 1, 0, 0, 0, 1408, 1409, 5, 36, 0, 0, 1409, 1410, 5, 34, 0, 0, 1410, 1411, 1, 0, 0, 0, 1411, 1412, 6, 122, 4, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1414, 6, 122, 5, 0, 1414, 250, 1, 0, 0, 0, 1415, 1416, 5, 36, 0, 0, 1416, 1417, 5, 64, 0, 0, 1417, 1418, 5, 34, 0, 0, 1418, 1419, 1, 0, 0, 0, 1419, 1420, 6, 123, 6, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 6, 123, 5, 0, 1422, 252, 1, 0, 0, 0, 1423, 1424, 5, 123, 0, 0, 1424, 1425, 6, 124, 7, 0, 1425, 254, 1, 0, 0, 0, 1426, 1427, 5, 125, 0, 0, 1427, 1428, 6, 125, 8, 0, 1428, 256, 1, 0, 0, 0, 1429, 1430, 5, 91, 0, 0, 1430, 258, 1, 0, 0, 0, 1431, 1432, 5, 93, 0, 0, 1432, 260, 1, 0, 0, 0, 1433, 1434, 5, 40, 0, 0, 1434, 262, 1, 0, 0, 0, 1435, 1436, 5, 41, 0, 0, 1436, 264, 1, 0, 0, 0, 1437, 1438, 5, 46, 0, 0, 1438, 266, 1, 0, 0, 0, 1439, 1440, 5, 44, 0, 0, 1440, 268, 1, 0, 0, 0, 1441, 1442, 5, 58, 0, 0, 1442, 1443, 6, 132, 9, 0, 1443, 270, 1, 0, 0, 0, 1444, 1445, 5, 59, 0, 0, 1445, 272, 1, 0, 0, 0, 1446, 1447, 5, 43, 0, 0, 1447, 274, 1, 0, 0, 0, 1448, 1449, 5, 45, 0, 0, 1449, 276, 1, 0, 0, 0, 1450, 1451, 5, 42, 0, 0, 1451, 278, 1, 0, 0, 0, 1452, 1453, 5, 47, 0, 0, 1453, 280, 1, 0, 0, 0, 1454, 1455, 5, 37, 0, 0, 1455, 282, 1, 0, 0, 0, 1456, 1457, 5, 38, 0, 0, 1457, 284, 1, 0, 0, 0, 1458, 1459, 5, 124, 0, 0, 1459, 286, 1, 0, 0, 0, 1460, 1461, 5, 94, 0, 0, 1461, 288, 1, 0, 0, 0, 1462, 1463, 5, 33, 0, 0, 1463, 290, 1, 0, 0, 0, 1464, 1465, 5, 126, 0, 0, 1465, 292, 1, 0, 0, 0, 1466, 1467, 5, 61, 0, 0, 1467, 294, 1, 0, 0, 0, 1468, 1469, 5, 60, 0, 0, 1469, 296, 1, 0, 0, 0, 1470, 1471, 5, 62, 0, 0, 1471, 298, 1, 0, 0, 0, 1472, 1473, 5, 63, 0, 0, 1473, 300, 1, 0, 0, 0, 1474, 1475, 5, 58, 0, 0, 1475, 1476, 5, 58, 0, 0, 1476, 302, 1, 0, 0, 0, 1477, 1478, 5, 63, 0, 0, 1478, 1479, 5, 63, 0, 0, 1479, 304, 1, 0, 0, 0, 1480, 1481, 5, 43, 0, 0, 1481, 1482, 5, 43, 0, 0, 1482, 306, 1, 0, 0, 0, 1483, 1484, 5, 45, 0, 0, 1484, 1485, 5, 45, 0, 0, 1485, 308, 1, 0, 0, 0, 1486, 1487, 5, 38, 0, 0, 1487, 1488, 5, 38, 0, 0, 1488, 310, 1, 0, 0, 0, 1489, 1490, 5, 124, 0, 0, 1490, 1491, 5, 124, 0, 0, 1491, 312, 1, 0, 0, 0, 1492, 1493, 5, 45, 0, 0, 1493, 1494, 5, 62, 0, 0, 1494, 314, 1, 0, 0, 0, 1495, 1496, 5, 61, 0, 0, 1496, 1497, 5, 61, 0, 0, 1497, 316, 1, 0, 0, 0, 1498, 1499, 5, 33, 0, 0, 1499, 1500, 5, 61, 0, 0, 1500, 318, 1, 0, 0, 0, 1501, 1502, 5, 60, 0, 0, 1502, 1503, 5, 61, 0, 0, 1503, 320, 1, 0, 0, 0, 1504, 1505, 5, 62, 0, 0, 1505, 1506, 5, 61, 0, 0, 1506, 322, 1, 0, 0, 0, 1507, 1508, 5, 43, 0, 0, 1508, 1509, 5, 61, 0, 0, 1509, 324, 1, 0, 0, 0, 1510, 1511, 5, 45, 0, 0, 1511, 1512, 5, 61, 0, 0, 1512, 326, 1, 0, 0, 0, 1513, 1514, 5, 42, 0, 0, 1514, 1515, 5, 61, 0, 0, 1515, 328, 1, 0, 0, 0, 1516, 1517, 5, 47, 0, 0, 1517, 1518, 5, 61, 0, 0, 1518, 330, 1, 0, 0, 0, 1519, 1520, 5, 37, 0, 0, 1520, 1521, 5, 61, 0, 0, 1521, 332, 1, 0, 0, 0, 1522, 1523, 5, 38, 0, 0, 1523, 1524, 5, 61, 0, 0, 1524, 334, 1, 0, 0, 0, 1525, 1526, 5, 124, 0, 0, 1526, 1527, 5, 61, 0, 0, 1527, 336, 1, 0, 0, 0, 1528, 1529, 5, 94, 0, 0, 1529, 1530, 5, 61, 0, 0, 1530, 338, 1, 0, 0, 0, 1531, 1532, 5, 60, 0, 0, 1532, 1533, 5, 60, 0, 0, 1533, 340, 1, 0, 0, 0, 1534, 1535, 5, 60, 0, 0, 1535, 1536, 5, 60, 0, 0, 1536, 1537, 5, 61, 0, 0, 1537, 342, 1, 0, 0, 0, 1538, 1539, 5, 63, 0, 0, 1539, 1540, 5, 63, 0, 0, 1540, 1541, 5, 61, 0, 0, 1541, 344, 1, 0, 0, 0, 1542, 1543, 5, 46, 0, 0, 1543, 1544, 5, 46, 0, 0, 1544, 346, 1, 0, 0, 0, 1545, 1546, 5, 123, 0, 0, 1546, 1547, 5, 123, 0, 0, 1547, 348, 1, 0, 0, 0, 1548, 1549, 5, 123, 0, 0, 1549, 1550, 6, 172, 10, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1552, 6, 172, 3, 0, 1552, 1553, 6, 172, 11, 0, 1553, 350, 1, 0, 0, 0, 1554, 1555, 4, 173, 0, 0, 1555, 1556, 3, 441, 218, 0, 1556, 352, 1, 0, 0, 0, 1557, 1558, 4, 174, 1, 0, 1558, 1559, 5, 34, 0, 0, 1559, 1560, 5, 34, 0, 0, 1560, 354, 1, 0, 0, 0, 1561, 1562, 5, 34, 0, 0, 1562, 1563, 6, 175, 12, 0, 1563, 1564, 1, 0, 0, 0, 1564, 1565, 6, 175, 13, 0, 1565, 356, 1, 0, 0, 0, 1566, 1568, 4, 176, 2, 0, 1567, 1569, 8, 9, 0, 0, 1568, 1567, 1, 0, 0, 0, 1569, 1570, 1, 0, 0, 0, 1570, 1568, 1, 0, 0, 0, 1570, 1571, 1, 0, 0, 0, 1571, 358, 1, 0, 0, 0, 1572, 1574, 4, 177, 3, 0, 1573, 1575, 8, 10, 0, 0, 1574, 1573, 1, 0, 0, 0, 1575, 1576, 1, 0, 0, 0, 1576, 1574, 1, 0, 0, 0, 1576, 1577, 1, 0, 0, 0, 1577, 360, 1, 0, 0, 0, 1578, 1579, 5, 125, 0, 0, 1579, 1580, 5, 125, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 1582, 6, 178, 14, 0, 1582, 362, 1, 0, 0, 0, 1583, 1584, 5, 125, 0, 0, 1584, 1585, 6, 179, 15, 0, 1585, 1586, 1, 0, 0, 0, 1586, 1587, 6, 179, 3, 0, 1587, 1588, 6, 179, 13, 0, 1588, 364, 1, 0, 0, 0, 1589, 1591, 8, 11, 0, 0, 1590, 1589, 1, 0, 0, 0, 1591, 1592, 1, 0, 0, 0, 1592, 1590, 1, 0, 0, 0, 1592, 1593, 1, 0, 0, 0, 1593, 366, 1, 0, 0, 0, 1594, 1596, 3, 447, 221, 0, 1595, 1594, 1, 0, 0, 0, 1596, 1597, 1, 0, 0, 0, 1597, 1595, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1599, 1, 0, 0, 0, 1599, 1600, 6, 181, 1, 0, 1600, 368, 1, 0, 0, 0, 1601, 1603, 7, 1, 0, 0, 1602, 1601, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1602, 1, 0, 0, 0, 1604, 1605, 1, 0, 0, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1607, 6, 182, 16, 0, 1607, 370, 1, 0, 0, 0, 1608, 1609, 5, 116, 0, 0, 1609, 1610, 5, 114, 0, 0, 1610, 1611, 5, 117, 0, 0, 1611, 1612, 5, 101, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 1614, 6, 183, 16, 0, 1614, 1615, 6, 183, 17, 0, 1615, 372, 1, 0, 0, 0, 1616, 1617, 5, 102, 0, 0, 1617, 1618, 5, 97, 0, 0, 1618, 1619, 5, 108, 0, 0, 1619, 1620, 5, 115, 0, 0, 1620, 1621, 5, 101, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1623, 6, 184, 16, 0, 1623, 1624, 6, 184, 18, 0, 1624, 374, 1, 0, 0, 0, 1625, 1626, 5, 100, 0, 0, 1626, 1627, 5, 101, 0, 0, 1627, 1628, 5, 102, 0, 0, 1628, 1629, 5, 105, 0, 0, 1629, 1630, 5, 110, 0, 0, 1630, 1631, 5, 101, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 1633, 6, 185, 16, 0, 1633, 376, 1, 0, 0, 0, 1634, 1635, 5, 117, 0, 0, 1635, 1636, 5, 110, 0, 0, 1636, 1637, 5, 100, 0, 0, 1637, 1638, 5, 101, 0, 0, 1638, 1639, 5, 102, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 1641, 6, 186, 16, 0, 1641, 378, 1, 0, 0, 0, 1642, 1643, 5, 105, 0, 0, 1643, 1644, 5, 102, 0, 0, 1644, 1645, 1, 0, 0, 0, 1645, 1646, 6, 187, 16, 0, 1646, 1647, 6, 187, 19, 0, 1647, 380, 1, 0, 0, 0, 1648, 1649, 5, 101, 0, 0, 1649, 1650, 5, 108, 0, 0, 1650, 1651, 5, 105, 0, 0, 1651, 1652, 5, 102, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1654, 6, 188, 16, 0, 1654, 382, 1, 0, 0, 0, 1655, 1656, 5, 101, 0, 0, 1656, 1657, 5, 108, 0, 0, 1657, 1658, 5, 115, 0, 0, 1658, 1659, 5, 101, 0, 0, 1659, 1660, 1, 0, 0, 0, 1660, 1661, 6, 189, 16, 0, 1661, 1662, 6, 189, 20, 0, 1662, 384, 1, 0, 0, 0, 1663, 1664, 5, 101, 0, 0, 1664, 1665, 5, 110, 0, 0, 1665, 1666, 5, 100, 0, 0, 1666, 1667, 5, 105, 0, 0, 1667, 1668, 5, 102, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1670, 6, 190, 16, 0, 1670, 386, 1, 0, 0, 0, 1671, 1672, 5, 108, 0, 0, 1672, 1673, 5, 105, 0, 0, 1673, 1674, 5, 110, 0, 0, 1674, 1675, 5, 101, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1677, 6, 191, 16, 0, 1677, 388, 1, 0, 0, 0, 1678, 1679, 5, 101, 0, 0, 1679, 1680, 5, 114, 0, 0, 1680, 1681, 5, 114, 0, 0, 1681, 1682, 5, 111, 0, 0, 1682, 1683, 5, 114, 0, 0, 1683, 1685, 1, 0, 0, 0, 1684, 1686, 3, 447, 221, 0, 1685, 1684, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1687, 1685, 1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1690, 6, 192, 16, 0, 1690, 1691, 6, 192, 21, 0, 1691, 390, 1, 0, 0, 0, 1692, 1693, 5, 119, 0, 0, 1693, 1694, 5, 97, 0, 0, 1694, 1695, 5, 114, 0, 0, 1695, 1696, 5, 110, 0, 0, 1696, 1697, 5, 105, 0, 0, 1697, 1698, 5, 110, 0, 0, 1698, 1699, 5, 103, 0, 0, 1699, 1701, 1, 0, 0, 0, 1700, 1702, 3, 447, 221, 0, 1701, 1700, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1701, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1706, 6, 193, 16, 0, 1706, 1707, 6, 193, 21, 0, 1707, 392, 1, 0, 0, 0, 1708, 1709, 5, 114, 0, 0, 1709, 1710, 5, 101, 0, 0, 1710, 1711, 5, 103, 0, 0, 1711, 1712, 5, 105, 0, 0, 1712, 1713, 5, 111, 0, 0, 1713, 1714, 5, 110, 0, 0, 1714, 1718, 1, 0, 0, 0, 1715, 1717, 3, 447, 221, 0, 1716, 1715, 1, 0, 0, 0, 1717, 1720, 1, 0, 0, 0, 1718, 1716, 1, 0, 0, 0, 1718, 1719, 1, 0, 0, 0, 1719, 1721, 1, 0, 0, 0, 1720, 1718, 1, 0, 0, 0, 1721, 1722, 6, 194, 16, 0, 1722, 1723, 6, 194, 21, 0, 1723, 394, 1, 0, 0, 0, 1724, 1725, 5, 101, 0, 0, 1725, 1726, 5, 110, 0, 0, 1726, 1727, 5, 100, 0, 0, 1727, 1728, 5, 114, 0, 0, 1728, 1729, 5, 101, 0, 0, 1729, 1730, 5, 103, 0, 0, 1730, 1731, 5, 105, 0, 0, 1731, 1732, 5, 111, 0, 0, 1732, 1733, 5, 110, 0, 0, 1733, 1737, 1, 0, 0, 0, 1734, 1736, 3, 447, 221, 0, 1735, 1734, 1, 0, 0, 0, 1736, 1739, 1, 0, 0, 0, 1737, 1735, 1, 0, 0, 0, 1737, 1738, 1, 0, 0, 0, 1738, 1740, 1, 0, 0, 0, 1739, 1737, 1, 0, 0, 0, 1740, 1741, 6, 195, 16, 0, 1741, 1742, 6, 195, 21, 0, 1742, 396, 1, 0, 0, 0, 1743, 1744, 5, 112, 0, 0, 1744, 1745, 5, 114, 0, 0, 1745, 1746, 5, 97, 0, 0, 1746, 1747, 5, 103, 0, 0, 1747, 1748, 5, 109, 0, 0, 1748, 1749, 5, 97, 0, 0, 1749, 1751, 1, 0, 0, 0, 1750, 1752, 3, 447, 221, 0, 1751, 1750, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 1751, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1756, 6, 196, 16, 0, 1756, 1757, 6, 196, 21, 0, 1757, 398, 1, 0, 0, 0, 1758, 1759, 5, 110, 0, 0, 1759, 1760, 5, 117, 0, 0, 1760, 1761, 5, 108, 0, 0, 1761, 1762, 5, 108, 0, 0, 1762, 1763, 5, 97, 0, 0, 1763, 1764, 5, 98, 0, 0, 1764, 1765, 5, 108, 0, 0, 1765, 1766, 5, 101, 0, 0, 1766, 1768, 1, 0, 0, 0, 1767, 1769, 3, 447, 221, 0, 1768, 1767, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1768, 1, 0, 0, 0, 1770, 1771, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1773, 6, 197, 16, 0, 1773, 1774, 6, 197, 21, 0, 1774, 400, 1, 0, 0, 0, 1775, 1776, 5, 100, 0, 0, 1776, 1777, 5, 101, 0, 0, 1777, 1778, 5, 102, 0, 0, 1778, 1779, 5, 97, 0, 0, 1779, 1780, 5, 117, 0, 0, 1780, 1781, 5, 108, 0, 0, 1781, 1782, 5, 116, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1784, 6, 198, 16, 0, 1784, 1785, 6, 198, 22, 0, 1785, 402, 1, 0, 0, 0, 1786, 1787, 5, 104, 0, 0, 1787, 1788, 5, 105, 0, 0, 1788, 1789, 5, 100, 0, 0, 1789, 1790, 5, 100, 0, 0, 1790, 1791, 5, 101, 0, 0, 1791, 1792, 5, 110, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 1794, 6, 199, 16, 0, 1794, 404, 1, 0, 0, 0, 1795, 1796, 5, 40, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1798, 6, 200, 16, 0, 1798, 1799, 6, 200, 23, 0, 1799, 406, 1, 0, 0, 0, 1800, 1801, 5, 41, 0, 0, 1801, 1802, 1, 0, 0, 0, 1802, 1803, 6, 201, 16, 0, 1803, 1804, 6, 201, 24, 0, 1804, 408, 1, 0, 0, 0, 1805, 1806, 5, 33, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 1808, 6, 202, 16, 0, 1808, 1809, 6, 202, 25, 0, 1809, 410, 1, 0, 0, 0, 1810, 1811, 5, 61, 0, 0, 1811, 1812, 5, 61, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1814, 6, 203, 16, 0, 1814, 1815, 6, 203, 26, 0, 1815, 412, 1, 0, 0, 0, 1816, 1817, 5, 33, 0, 0, 1817, 1818, 5, 61, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1820, 6, 204, 16, 0, 1820, 1821, 6, 204, 27, 0, 1821, 414, 1, 0, 0, 0, 1822, 1823, 5, 38, 0, 0, 1823, 1824, 5, 38, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1826, 6, 205, 16, 0, 1826, 1827, 6, 205, 28, 0, 1827, 416, 1, 0, 0, 0, 1828, 1829, 5, 124, 0, 0, 1829, 1830, 5, 124, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1832, 6, 206, 16, 0, 1832, 1833, 6, 206, 29, 0, 1833, 418, 1, 0, 0, 0, 1834, 1838, 5, 34, 0, 0, 1835, 1837, 8, 12, 0, 0, 1836, 1835, 1, 0, 0, 0, 1837, 1840, 1, 0, 0, 0, 1838, 1836, 1, 0, 0, 0, 1838, 1839, 1, 0, 0, 0, 1839, 1841, 1, 0, 0, 0, 1840, 1838, 1, 0, 0, 0, 1841, 1842, 5, 34, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1844, 6, 207, 16, 0, 1844, 1845, 6, 207, 30, 0, 1845, 420, 1, 0, 0, 0, 1846, 1847, 3, 451, 223, 0, 1847, 1848, 1, 0, 0, 0, 1848, 1849, 6, 208, 16, 0, 1849, 422, 1, 0, 0, 0, 1850, 1851, 5, 47, 0, 0, 1851, 1852, 5, 47, 0, 0, 1852, 1856, 1, 0, 0, 0, 1853, 1855, 8, 13, 0, 0, 1854, 1853, 1, 0, 0, 0, 1855, 1858, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1856, 1857, 1, 0, 0, 0, 1857, 1859, 1, 0, 0, 0, 1858, 1856, 1, 0, 0, 0, 1859, 1860, 6, 209, 0, 0, 1860, 1861, 6, 209, 31, 0, 1861, 424, 1, 0, 0, 0, 1862, 1863, 3, 445, 220, 0, 1863, 1864, 1, 0, 0, 0, 1864, 1865, 6, 210, 16, 0, 1865, 1866, 6, 210, 32, 0, 1866, 426, 1, 0, 0, 0, 1867, 1869, 8, 13, 0, 0, 1868, 1867, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1868, 1, 0, 0, 0, 1870, 1871, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1873, 6, 211, 16, 0, 1873, 428, 1, 0, 0, 0, 1874, 1875, 3, 445, 220, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1877, 6, 212, 16, 0, 1877, 1878, 6, 212, 33, 0, 1878, 1879, 6, 212, 32, 0, 1879, 430, 1, 0, 0, 0, 1880, 1881, 8, 13, 0, 0, 1881, 432, 1, 0, 0, 0, 1882, 1883, 7, 13, 0, 0, 1883, 434, 1, 0, 0, 0, 1884, 1886, 7, 14, 0, 0, 1885, 1884, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1887, 1, 0, 0, 0, 1887, 1893, 7, 15, 0, 0, 1888, 1890, 7, 15, 0, 0, 1889, 1888, 1, 0, 0, 0, 1889, 1890, 1, 0, 0, 0, 1890, 1891, 1, 0, 0, 0, 1891, 1893, 7, 14, 0, 0, 1892, 1885, 1, 0, 0, 0, 1892, 1889, 1, 0, 0, 0, 1893, 436, 1, 0, 0, 0, 1894, 1896, 7, 16, 0, 0, 1895, 1897, 7, 17, 0, 0, 1896, 1895, 1, 0, 0, 0, 1896, 1897, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1908, 7, 1, 0, 0, 1899, 1901, 5, 95, 0, 0, 1900, 1899, 1, 0, 0, 0, 1901, 1904, 1, 0, 0, 0, 1902, 1900, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 1905, 1, 0, 0, 0, 1904, 1902, 1, 0, 0, 0, 1905, 1907, 7, 1, 0, 0, 1906, 1902, 1, 0, 0, 0, 1907, 1910, 1, 0, 0, 0, 1908, 1906, 1, 0, 0, 0, 1908, 1909, 1, 0, 0, 0, 1909, 438, 1, 0, 0, 0, 1910, 1908, 1, 0, 0, 0, 1911, 1915, 3, 441, 218, 0, 1912, 1915, 3, 443, 219, 0, 1913, 1915, 3, 467, 231, 0, 1914, 1911, 1, 0, 0, 0, 1914, 1912, 1, 0, 0, 0, 1914, 1913, 1, 0, 0, 0, 1915, 440, 1, 0, 0, 0, 1916, 1917, 5, 92, 0, 0, 1917, 1939, 5, 39, 0, 0, 1918, 1919, 5, 92, 0, 0, 1919, 1939, 5, 34, 0, 0, 1920, 1921, 5, 92, 0, 0, 1921, 1939, 5, 92, 0, 0, 1922, 1923, 5, 92, 0, 0, 1923, 1939, 5, 48, 0, 0, 1924, 1925, 5, 92, 0, 0, 1925, 1939, 5, 97, 0, 0, 1926, 1927, 5, 92, 0, 0, 1927, 1939, 5, 98, 0, 0, 1928, 1929, 5, 92, 0, 0, 1929, 1939, 5, 102, 0, 0, 1930, 1931, 5, 92, 0, 0, 1931, 1939, 5, 110, 0, 0, 1932, 1933, 5, 92, 0, 0, 1933, 1939, 5, 114, 0, 0, 1934, 1935, 5, 92, 0, 0, 1935, 1939, 5, 116, 0, 0, 1936, 1937, 5, 92, 0, 0, 1937, 1939, 5, 118, 0, 0, 1938, 1916, 1, 0, 0, 0, 1938, 1918, 1, 0, 0, 0, 1938, 1920, 1, 0, 0, 0, 1938, 1922, 1, 0, 0, 0, 1938, 1924, 1, 0, 0, 0, 1938, 1926, 1, 0, 0, 0, 1938, 1928, 1, 0, 0, 0, 1938, 1930, 1, 0, 0, 0, 1938, 1932, 1, 0, 0, 0, 1938, 1934, 1, 0, 0, 0, 1938, 1936, 1, 0, 0, 0, 1939, 442, 1, 0, 0, 0, 1940, 1941, 5, 92, 0, 0, 1941, 1942, 5, 120, 0, 0, 1942, 1943, 1, 0, 0, 0, 1943, 1966, 3, 469, 232, 0, 1944, 1945, 5, 92, 0, 0, 1945, 1946, 5, 120, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 1948, 3, 469, 232, 0, 1948, 1949, 3, 469, 232, 0, 1949, 1966, 1, 0, 0, 0, 1950, 1951, 5, 92, 0, 0, 1951, 1952, 5, 120, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 1954, 3, 469, 232, 0, 1954, 1955, 3, 469, 232, 0, 1955, 1956, 3, 469, 232, 0, 1956, 1966, 1, 0, 0, 0, 1957, 1958, 5, 92, 0, 0, 1958, 1959, 5, 120, 0, 0, 1959, 1960, 1, 0, 0, 0, 1960, 1961, 3, 469, 232, 0, 1961, 1962, 3, 469, 232, 0, 1962, 1963, 3, 469, 232, 0, 1963, 1964, 3, 469, 232, 0, 1964, 1966, 1, 0, 0, 0, 1965, 1940, 1, 0, 0, 0, 1965, 1944, 1, 0, 0, 0, 1965, 1950, 1, 0, 0, 0, 1965, 1957, 1, 0, 0, 0, 1966, 444, 1, 0, 0, 0, 1967, 1968, 5, 13, 0, 0, 1968, 1971, 5, 10, 0, 0, 1969, 1971, 7, 13, 0, 0, 1970, 1967, 1, 0, 0, 0, 1970, 1969, 1, 0, 0, 0, 1971, 446, 1, 0, 0, 0, 1972, 1975, 3, 449, 222, 0, 1973, 1975, 7, 18, 0, 0, 1974, 1972, 1, 0, 0, 0, 1974, 1973, 1, 0, 0, 0, 1975, 448, 1, 0, 0, 0, 1976, 1977, 7, 19, 0, 0, 1977, 450, 1, 0, 0, 0, 1978, 1982, 3, 453, 224, 0, 1979, 1981, 3, 455, 225, 0, 1980, 1979, 1, 0, 0, 0, 1981, 1984, 1, 0, 0, 0, 1982, 1980, 1, 0, 0, 0, 1982, 1983, 1, 0, 0, 0, 1983, 452, 1, 0, 0, 0, 1984, 1982, 1, 0, 0, 0, 1985, 1988, 3, 457, 226, 0, 1986, 1988, 5, 95, 0, 0, 1987, 1985, 1, 0, 0, 0, 1987, 1986, 1, 0, 0, 0, 1988, 454, 1, 0, 0, 0, 1989, 1995, 3, 457, 226, 0, 1990, 1995, 3, 459, 227, 0, 1991, 1995, 3, 461, 228, 0, 1992, 1995, 3, 463, 229, 0, 1993, 1995, 3, 465, 230, 0, 1994, 1989, 1, 0, 0, 0, 1994, 1990, 1, 0, 0, 0, 1994, 1991, 1, 0, 0, 0, 1994, 1992, 1, 0, 0, 0, 1994, 1993, 1, 0, 0, 0, 1995, 456, 1, 0, 0, 0, 1996, 2004, 3, 471, 233, 0, 1997, 2004, 3, 473, 234, 0, 1998, 2004, 3, 475, 235, 0, 1999, 2004, 3, 477, 236, 0, 2000, 2004, 3, 479, 237, 0, 2001, 2004, 3, 481, 238, 0, 2002, 2004, 3, 467, 231, 0, 2003, 1996, 1, 0, 0, 0, 2003, 1997, 1, 0, 0, 0, 2003, 1998, 1, 0, 0, 0, 2003, 1999, 1, 0, 0, 0, 2003, 2000, 1, 0, 0, 0, 2003, 2001, 1, 0, 0, 0, 2003, 2002, 1, 0, 0, 0, 2004, 458, 1, 0, 0, 0, 2005, 2008, 3, 491, 243, 0, 2006, 2008, 3, 467, 231, 0, 2007, 2005, 1, 0, 0, 0, 2007, 2006, 1, 0, 0, 0, 2008, 460, 1, 0, 0, 0, 2009, 2012, 3, 489, 242, 0, 2010, 2012, 3, 467, 231, 0, 2011, 2009, 1, 0, 0, 0, 2011, 2010, 1, 0, 0, 0, 2012, 462, 1, 0, 0, 0, 2013, 2017, 3, 483, 239, 0, 2014, 2017, 3, 485, 240, 0, 2015, 2017, 3, 467, 231, 0, 2016, 2013, 1, 0, 0, 0, 2016, 2014, 1, 0, 0, 0, 2016, 2015, 1, 0, 0, 0, 2017, 464, 1, 0, 0, 0, 2018, 2021, 3, 487, 241, 0, 2019, 2021, 3, 467, 231, 0, 2020, 2018, 1, 0, 0, 0, 2020, 2019, 1, 0, 0, 0, 2021, 466, 1, 0, 0, 0, 2022, 2023, 5, 92, 0, 0, 2023, 2024, 5, 117, 0, 0, 2024, 2025, 1, 0, 0, 0, 2025, 2026, 3, 469, 232, 0, 2026, 2027, 3, 469, 232, 0, 2027, 2028, 3, 469, 232, 0, 2028, 2029, 3, 469, 232, 0, 2029, 2043, 1, 0, 0, 0, 2030, 2031, 5, 92, 0, 0, 2031, 2032, 5, 85, 0, 0, 2032, 2033, 1, 0, 0, 0, 2033, 2034, 3, 469, 232, 0, 2034, 2035, 3, 469, 232, 0, 2035, 2036, 3, 469, 232, 0, 2036, 2037, 3, 469, 232, 0, 2037, 2038, 3, 469, 232, 0, 2038, 2039, 3, 469, 232, 0, 2039, 2040, 3, 469, 232, 0, 2040, 2041, 3, 469, 232, 0, 2041, 2043, 1, 0, 0, 0, 2042, 2022, 1, 0, 0, 0, 2042, 2030, 1, 0, 0, 0, 2043, 468, 1, 0, 0, 0, 2044, 2046, 7, 20, 0, 0, 2045, 2044, 1, 0, 0, 0, 2046, 470, 1, 0, 0, 0, 2047, 2048, 7, 21, 0, 0, 2048, 472, 1, 0, 0, 0, 2049, 2050, 7, 22, 0, 0, 2050, 474, 1, 0, 0, 0, 2051, 2052, 7, 23, 0, 0, 2052, 476, 1, 0, 0, 0, 2053, 2054, 7, 24, 0, 0, 2054, 478, 1, 0, 0, 0, 2055, 2056, 7, 25, 0, 0, 2056, 480, 1, 0, 0, 0, 2057, 2058, 7, 26, 0, 0, 2058, 482, 1, 0, 0, 0, 2059, 2060, 2, 768, 784, 0, 2060, 484, 1, 0, 0, 0, 2061, 2062, 7, 27, 0, 0, 2062, 486, 1, 0, 0, 0, 2063, 2064, 7, 28, 0, 0, 2064, 488, 1, 0, 0, 0, 2065, 2066, 7, 29, 0, 0, 2066, 490, 1, 0, 0, 0, 2067, 2068, 7, 30, 0, 0, 2068, 492, 1, 0, 0, 0, 77, 0, 1, 2, 3, 4, 504, 525, 539, 550, 560, 562, 1247, 1255, 1261, 1265, 1269, 1277, 1283, 1287, 1294, 1300, 1303, 1310, 1316, 1319, 1325, 1331, 1334, 1341, 1347, 1351, 1354, 1360, 1366, 1372, 1374, 1376, 1381, 1388, 1390, 1401, 1403, 1570, 1576, 1592, 1597, 1604, 1687, 1703, 1718, 1737, 1753, 1770, 1838, 1856, 1870, 1885, 1889, 1892, 1896, 1902, 1908, 1914, 1938, 1965, 1970, 1974, 1982, 1987, 1994, 2003, 2007, 2011, 2016, 2020, 2042, 2045, 34, 0, 2, 0, 0, 1, 0, 2, 3, 0, 6, 0, 0, 1, 122, 0, 5, 1, 0, 1, 123, 1, 1, 124, 2, 1, 125, 3, 1, 132, 4, 1, 172, 5, 5, 0, 0, 1, 175, 6, 4, 0, 0, 7, 180, 0, 1, 179, 7, 0, 3, 0, 7, 96, 0, 7, 42, 0, 7, 52, 0, 7, 36, 0, 2, 4, 0, 7, 30, 0, 7, 129, 0, 7, 130, 0, 7, 143, 0, 7, 156, 0, 7, 157, 0, 7, 153, 0, 7, 154, 0, 7, 91, 0, 7, 5, 0, 2, 0, 0, 7, 196, 0] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.py b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.py index 773aa520..e2d1b0c9 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.py @@ -1,1141 +1,907 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\csharp\CSharpLexer.g4 by ANTLR 4.8 +# Generated from CSharpLexer.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO -import antlr4 import sys - -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u00c7") - buf.write("\u080b\b\1\b\1\b\1\b\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5") - buf.write("\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13") - buf.write("\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t") - buf.write("\21\4\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26") - buf.write("\4\27\t\27\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34") - buf.write("\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!\t!\4\"\t") - buf.write("\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4") - buf.write("+\t+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62") - buf.write("\t\62\4\63\t\63\4\64\t\64\4\65\t\65\4\66\t\66\4\67\t\67") - buf.write("\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t") - buf.write("@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\t") - buf.write("I\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\t") - buf.write("R\4S\tS\4T\tT\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t") - buf.write("[\4\\\t\\\4]\t]\4^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4") - buf.write("d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4") - buf.write("m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4") - buf.write("v\tv\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4") - buf.write("\177\t\177\4\u0080\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082") - buf.write("\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086") - buf.write("\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089") - buf.write("\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d") - buf.write("\t\u008d\4\u008e\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090") - buf.write("\4\u0091\t\u0091\4\u0092\t\u0092\4\u0093\t\u0093\4\u0094") - buf.write("\t\u0094\4\u0095\t\u0095\4\u0096\t\u0096\4\u0097\t\u0097") - buf.write("\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b") - buf.write("\t\u009b\4\u009c\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e") - buf.write("\4\u009f\t\u009f\4\u00a0\t\u00a0\4\u00a1\t\u00a1\4\u00a2") - buf.write("\t\u00a2\4\u00a3\t\u00a3\4\u00a4\t\u00a4\4\u00a5\t\u00a5") - buf.write("\4\u00a6\t\u00a6\4\u00a7\t\u00a7\4\u00a8\t\u00a8\4\u00a9") - buf.write("\t\u00a9\4\u00aa\t\u00aa\4\u00ab\t\u00ab\4\u00ac\t\u00ac") - buf.write("\4\u00ad\t\u00ad\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0") - buf.write("\t\u00b0\4\u00b1\t\u00b1\4\u00b2\t\u00b2\4\u00b3\t\u00b3") - buf.write("\4\u00b4\t\u00b4\4\u00b5\t\u00b5\4\u00b6\t\u00b6\4\u00b7") - buf.write("\t\u00b7\4\u00b8\t\u00b8\4\u00b9\t\u00b9\4\u00ba\t\u00ba") - buf.write("\4\u00bb\t\u00bb\4\u00bc\t\u00bc\4\u00bd\t\u00bd\4\u00be") - buf.write("\t\u00be\4\u00bf\t\u00bf\4\u00c0\t\u00c0\4\u00c1\t\u00c1") - buf.write("\4\u00c2\t\u00c2\4\u00c3\t\u00c3\4\u00c4\t\u00c4\4\u00c5") - buf.write("\t\u00c5\4\u00c6\t\u00c6\4\u00c7\t\u00c7\4\u00c8\t\u00c8") - buf.write("\4\u00c9\t\u00c9\4\u00ca\t\u00ca\4\u00cb\t\u00cb\4\u00cc") - buf.write("\t\u00cc\4\u00cd\t\u00cd\4\u00ce\t\u00ce\4\u00cf\t\u00cf") - buf.write("\4\u00d0\t\u00d0\4\u00d1\t\u00d1\4\u00d2\t\u00d2\4\u00d3") - buf.write("\t\u00d3\4\u00d4\t\u00d4\4\u00d5\t\u00d5\4\u00d6\t\u00d6") - buf.write("\4\u00d7\t\u00d7\4\u00d8\t\u00d8\4\u00d9\t\u00d9\4\u00da") - buf.write("\t\u00da\4\u00db\t\u00db\4\u00dc\t\u00dc\4\u00dd\t\u00dd") - buf.write("\4\u00de\t\u00de\4\u00df\t\u00df\4\u00e0\t\u00e0\4\u00e1") - buf.write("\t\u00e1\4\u00e2\t\u00e2\4\u00e3\t\u00e3\4\u00e4\t\u00e4") - buf.write("\4\u00e5\t\u00e5\4\u00e6\t\u00e6\4\u00e7\t\u00e7\4\u00e8") - buf.write("\t\u00e8\4\u00e9\t\u00e9\4\u00ea\t\u00ea\4\u00eb\t\u00eb") - buf.write("\4\u00ec\t\u00ec\4\u00ed\t\u00ed\4\u00ee\t\u00ee\4\u00ef") - buf.write("\t\u00ef\4\u00f0\t\u00f0\4\u00f1\t\u00f1\4\u00f2\t\u00f2") - buf.write("\4\u00f3\t\u00f3\4\u00f4\t\u00f4\3\2\3\2\3\2\3\2\3\3\3") - buf.write("\3\3\3\3\3\3\3\7\3\u01f7\n\3\f\3\16\3\u01fa\13\3\3\3\3") - buf.write("\3\3\4\3\4\3\4\3\4\3\4\7\4\u0203\n\4\f\4\16\4\u0206\13") - buf.write("\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\7\5\u0211\n\5\f") - buf.write("\5\16\5\u0214\13\5\3\5\3\5\3\6\3\6\3\6\3\6\7\6\u021c\n") - buf.write("\6\f\6\16\6\u021f\13\6\3\6\3\6\3\6\3\6\3\6\3\7\3\7\6\7") - buf.write("\u0228\n\7\r\7\16\7\u0229\3\7\3\7\3\b\3\b\3\b\3\b\3\t") - buf.write("\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\13") - buf.write("\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f") - buf.write("\3\f\3\f\3\f\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16") - buf.write("\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\20") - buf.write("\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\22") - buf.write("\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\24") - buf.write("\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26") - buf.write("\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30") - buf.write("\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\32\3\32") - buf.write("\3\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\34") - buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35") - buf.write("\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36") - buf.write("\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37") - buf.write("\3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3\"\3\"\3\"") - buf.write("\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3$\3$\3$\3$\3") - buf.write("$\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'") - buf.write("\3\'\3\'\3(\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)") - buf.write("\3)\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3") - buf.write(",\3,\3,\3,\3-\3-\3-\3-\3-\3-\3.\3.\3.\3.\3/\3/\3/\3/\3") - buf.write("/\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61") - buf.write("\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\63") - buf.write("\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65") - buf.write("\3\65\3\66\3\66\3\66\3\67\3\67\3\67\3\67\38\38\38\38\3") - buf.write("8\38\38\38\38\38\39\39\39\39\39\39\39\39\39\3:\3:\3:\3") - buf.write(":\3:\3;\3;\3;\3<\3<\3<\3<\3<\3=\3=\3=\3=\3>\3>\3>\3>\3") - buf.write(">\3?\3?\3?\3?\3?\3@\3@\3@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3") - buf.write("A\3A\3A\3A\3A\3B\3B\3B\3B\3C\3C\3C\3C\3C\3D\3D\3D\3D\3") - buf.write("D\3D\3D\3E\3E\3E\3F\3F\3F\3F\3F\3F\3F\3F\3F\3G\3G\3G\3") - buf.write("G\3G\3G\3G\3G\3H\3H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\3") - buf.write("J\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3K\3K\3K\3L\3L\3L\3") - buf.write("L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\3N\3N\3N\3") - buf.write("N\3N\3N\3N\3O\3O\3O\3O\3O\3O\3O\3O\3O\3P\3P\3P\3P\3Q\3") - buf.write("Q\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3R\3R\3S\3S\3S\3S\3S\3") - buf.write("S\3T\3T\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3V\3V\3V\3") - buf.write("V\3W\3W\3W\3W\3W\3W\3X\3X\3X\3X\3X\3X\3X\3Y\3Y\3Y\3Y\3") - buf.write("Y\3Y\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3[\3[\3[\3[\3") - buf.write("[\3[\3[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3]\3]\3]\3]\3]\3]") - buf.write("\3]\3^\3^\3^\3^\3^\3_\3_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3") - buf.write("a\3a\3a\3a\3b\3b\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3d\3d\3") - buf.write("d\3d\3d\3d\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3f\3f\3f\3f\3") - buf.write("f\3f\3f\3f\3f\3f\3g\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3") - buf.write("h\3h\3i\3i\3i\3i\3i\3i\3j\3j\3j\3j\3k\3k\3k\3k\3k\3k\3") - buf.write("k\3k\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m\3m\3m\3n\3n\3") - buf.write("n\3n\3n\3o\3o\3o\3o\3o\3o\3p\3p\3p\3p\3p\3p\3q\3q\3q\3") - buf.write("q\3q\3q\3r\5r\u04d6\nr\3r\3r\3s\3s\7s\u04dc\ns\fs\16s") - buf.write("\u04df\13s\3s\7s\u04e2\ns\fs\16s\u04e5\13s\3s\5s\u04e8") - buf.write("\ns\3s\3s\5s\u04ec\ns\3s\3s\3t\3t\7t\u04f2\nt\ft\16t\u04f5") - buf.write("\13t\3t\7t\u04f8\nt\ft\16t\u04fb\13t\3t\5t\u04fe\nt\3") - buf.write("u\3u\3u\7u\u0503\nu\fu\16u\u0506\13u\3u\6u\u0509\nu\r") - buf.write("u\16u\u050a\3u\5u\u050e\nu\3v\3v\3v\7v\u0513\nv\fv\16") - buf.write("v\u0516\13v\3v\6v\u0519\nv\rv\16v\u051a\3v\5v\u051e\n") - buf.write("v\3w\3w\7w\u0522\nw\fw\16w\u0525\13w\3w\7w\u0528\nw\f") - buf.write("w\16w\u052b\13w\5w\u052d\nw\3w\3w\3w\7w\u0532\nw\fw\16") - buf.write("w\u0535\13w\3w\7w\u0538\nw\fw\16w\u053b\13w\3w\5w\u053e") - buf.write("\nw\3w\5w\u0541\nw\3w\3w\7w\u0545\nw\fw\16w\u0548\13w") - buf.write("\3w\7w\u054b\nw\fw\16w\u054e\13w\3w\3w\3w\5w\u0553\nw") - buf.write("\5w\u0555\nw\5w\u0557\nw\3x\3x\3x\5x\u055c\nx\3x\3x\3") - buf.write("y\3y\3y\7y\u0563\ny\fy\16y\u0566\13y\3y\3y\3z\3z\3z\3") - buf.write("z\3z\3z\7z\u0570\nz\fz\16z\u0573\13z\3z\3z\3{\3{\3{\3") - buf.write("{\3{\3{\3{\3|\3|\3|\3|\3|\3|\3|\3|\3}\3}\3}\3~\3~\3~\3") - buf.write("\177\3\177\3\u0080\3\u0080\3\u0081\3\u0081\3\u0082\3\u0082") - buf.write("\3\u0083\3\u0083\3\u0084\3\u0084\3\u0085\3\u0085\3\u0085") - buf.write("\3\u0086\3\u0086\3\u0087\3\u0087\3\u0088\3\u0088\3\u0089") - buf.write("\3\u0089\3\u008a\3\u008a\3\u008b\3\u008b\3\u008c\3\u008c") - buf.write("\3\u008d\3\u008d\3\u008e\3\u008e\3\u008f\3\u008f\3\u0090") - buf.write("\3\u0090\3\u0091\3\u0091\3\u0092\3\u0092\3\u0093\3\u0093") - buf.write("\3\u0094\3\u0094\3\u0095\3\u0095\3\u0095\3\u0096\3\u0096") - buf.write("\3\u0096\3\u0097\3\u0097\3\u0097\3\u0098\3\u0098\3\u0098") - buf.write("\3\u0099\3\u0099\3\u0099\3\u009a\3\u009a\3\u009a\3\u009b") - buf.write("\3\u009b\3\u009b\3\u009c\3\u009c\3\u009c\3\u009d\3\u009d") - buf.write("\3\u009d\3\u009e\3\u009e\3\u009e\3\u009f\3\u009f\3\u009f") - buf.write("\3\u00a0\3\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a2") - buf.write("\3\u00a2\3\u00a2\3\u00a3\3\u00a3\3\u00a3\3\u00a4\3\u00a4") - buf.write("\3\u00a4\3\u00a5\3\u00a5\3\u00a5\3\u00a6\3\u00a6\3\u00a6") - buf.write("\3\u00a7\3\u00a7\3\u00a7\3\u00a8\3\u00a8\3\u00a8\3\u00a9") - buf.write("\3\u00a9\3\u00a9\3\u00a9\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00ab\3\u00ab\3\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ad") - buf.write("\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ae\3\u00ae") - buf.write("\3\u00ae\3\u00af\3\u00af\3\u00af\3\u00af\3\u00b0\3\u00b0") - buf.write("\3\u00b0\3\u00b0\3\u00b0\3\u00b1\3\u00b1\6\u00b1\u0617") - buf.write("\n\u00b1\r\u00b1\16\u00b1\u0618\3\u00b2\3\u00b2\6\u00b2") - buf.write("\u061d\n\u00b2\r\u00b2\16\u00b2\u061e\3\u00b3\3\u00b3") - buf.write("\3\u00b3\3\u00b3\3\u00b3\3\u00b4\3\u00b4\3\u00b4\3\u00b4") - buf.write("\3\u00b4\3\u00b4\3\u00b5\6\u00b5\u062d\n\u00b5\r\u00b5") - buf.write("\16\u00b5\u062e\3\u00b6\6\u00b6\u0632\n\u00b6\r\u00b6") - buf.write("\16\u00b6\u0633\3\u00b6\3\u00b6\3\u00b7\6\u00b7\u0639") - buf.write("\n\u00b7\r\u00b7\16\u00b7\u063a\3\u00b7\3\u00b7\3\u00b8") - buf.write("\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9") - buf.write("\3\u00b9\3\u00b9\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba") - buf.write("\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00bb\3\u00bb\3\u00bb") - buf.write("\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bc\3\u00bc") - buf.write("\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bd\3\u00bd\3\u00bd") - buf.write("\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00be\3\u00be\3\u00be") - buf.write("\3\u00be\3\u00be\3\u00be\3\u00be\3\u00be\3\u00bf\3\u00bf") - buf.write("\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00c0") - buf.write("\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c1") - buf.write("\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\6\u00c1") - buf.write("\u068c\n\u00c1\r\u00c1\16\u00c1\u068d\3\u00c1\3\u00c1") - buf.write("\3\u00c1\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2") - buf.write("\3\u00c2\3\u00c2\3\u00c2\6\u00c2\u069c\n\u00c2\r\u00c2") - buf.write("\16\u00c2\u069d\3\u00c2\3\u00c2\3\u00c2\3\u00c3\3\u00c3") - buf.write("\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\7\u00c3") - buf.write("\u06ab\n\u00c3\f\u00c3\16\u00c3\u06ae\13\u00c3\3\u00c3") - buf.write("\3\u00c3\3\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4") - buf.write("\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\7\u00c4") - buf.write("\u06be\n\u00c4\f\u00c4\16\u00c4\u06c1\13\u00c4\3\u00c4") - buf.write("\3\u00c4\3\u00c4\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5") - buf.write("\3\u00c5\3\u00c5\3\u00c5\6\u00c5\u06ce\n\u00c5\r\u00c5") - buf.write("\16\u00c5\u06cf\3\u00c5\3\u00c5\3\u00c5\3\u00c6\3\u00c6") - buf.write("\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6") - buf.write("\3\u00c6\6\u00c6\u06df\n\u00c6\r\u00c6\16\u00c6\u06e0") - buf.write("\3\u00c6\3\u00c6\3\u00c6\3\u00c7\3\u00c7\3\u00c7\3\u00c7") - buf.write("\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7") - buf.write("\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8") - buf.write("\3\u00c8\3\u00c8\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9") - buf.write("\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00cb\3\u00cb") - buf.write("\3\u00cb\3\u00cb\3\u00cb\3\u00cc\3\u00cc\3\u00cc\3\u00cc") - buf.write("\3\u00cc\3\u00cc\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd") - buf.write("\3\u00cd\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce") - buf.write("\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00d0") - buf.write("\3\u00d0\7\u00d0\u0723\n\u00d0\f\u00d0\16\u00d0\u0726") - buf.write("\13\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d1") - buf.write("\3\u00d1\3\u00d1\3\u00d1\3\u00d2\3\u00d2\3\u00d2\3\u00d2") - buf.write("\7\u00d2\u0735\n\u00d2\f\u00d2\16\u00d2\u0738\13\u00d2") - buf.write("\3\u00d2\3\u00d2\3\u00d2\3\u00d3\3\u00d3\3\u00d3\3\u00d3") - buf.write("\3\u00d3\3\u00d4\6\u00d4\u0743\n\u00d4\r\u00d4\16\u00d4") - buf.write("\u0744\3\u00d4\3\u00d4\3\u00d5\3\u00d5\3\u00d5\3\u00d5") - buf.write("\3\u00d5\3\u00d5\3\u00d6\3\u00d6\3\u00d7\3\u00d7\3\u00d8") - buf.write("\5\u00d8\u0754\n\u00d8\3\u00d8\3\u00d8\5\u00d8\u0758\n") - buf.write("\u00d8\3\u00d8\5\u00d8\u075b\n\u00d8\3\u00d9\3\u00d9\5") - buf.write("\u00d9\u075f\n\u00d9\3\u00d9\3\u00d9\7\u00d9\u0763\n\u00d9") - buf.write("\f\u00d9\16\u00d9\u0766\13\u00d9\3\u00d9\7\u00d9\u0769") - buf.write("\n\u00d9\f\u00d9\16\u00d9\u076c\13\u00d9\3\u00da\3\u00da") - buf.write("\3\u00da\5\u00da\u0771\n\u00da\3\u00db\3\u00db\3\u00db") - buf.write("\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db") - buf.write("\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db") - buf.write("\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\5\u00db\u0789") - buf.write("\n\u00db\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc") - buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc") - buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc") - buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\5\u00dc\u07a4") - buf.write("\n\u00dc\3\u00dd\3\u00dd\3\u00dd\5\u00dd\u07a9\n\u00dd") - buf.write("\3\u00de\3\u00de\5\u00de\u07ad\n\u00de\3\u00df\3\u00df") - buf.write("\3\u00e0\3\u00e0\7\u00e0\u07b3\n\u00e0\f\u00e0\16\u00e0") - buf.write("\u07b6\13\u00e0\3\u00e1\3\u00e1\5\u00e1\u07ba\n\u00e1") - buf.write("\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\5\u00e2\u07c1") - buf.write("\n\u00e2\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3") - buf.write("\3\u00e3\5\u00e3\u07ca\n\u00e3\3\u00e4\3\u00e4\5\u00e4") - buf.write("\u07ce\n\u00e4\3\u00e5\3\u00e5\5\u00e5\u07d2\n\u00e5\3") - buf.write("\u00e6\3\u00e6\3\u00e6\5\u00e6\u07d7\n\u00e6\3\u00e7\3") - buf.write("\u00e7\5\u00e7\u07db\n\u00e7\3\u00e8\3\u00e8\3\u00e8\3") - buf.write("\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8") - buf.write("\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8") - buf.write("\3\u00e8\3\u00e8\3\u00e8\5\u00e8\u07f1\n\u00e8\3\u00e9") - buf.write("\5\u00e9\u07f4\n\u00e9\3\u00ea\3\u00ea\3\u00eb\3\u00eb") - buf.write("\3\u00ec\3\u00ec\3\u00ed\3\u00ed\3\u00ee\3\u00ee\3\u00ef") - buf.write("\3\u00ef\3\u00f0\3\u00f0\3\u00f1\3\u00f1\3\u00f2\3\u00f2") - buf.write("\3\u00f3\3\u00f3\3\u00f4\3\u00f4\4\u0204\u021d\2\u00f5") - buf.write("\7\3\t\4\13\5\r\6\17\7\21\b\23\t\25\n\27\13\31\f\33\r") - buf.write("\35\16\37\17!\20#\21%\22\'\23)\24+\25-\26/\27\61\30\63") - buf.write("\31\65\32\67\339\34;\35=\36?\37A C!E\"G#I$K%M&O\'Q(S)") - buf.write("U*W+Y,[-]._/a\60c\61e\62g\63i\64k\65m\66o\67q8s9u:w;y") - buf.write("<{=}>\177?\u0081@\u0083A\u0085B\u0087C\u0089D\u008bE\u008d") - buf.write("F\u008fG\u0091H\u0093I\u0095J\u0097K\u0099L\u009bM\u009d") - buf.write("N\u009fO\u00a1P\u00a3Q\u00a5R\u00a7S\u00a9T\u00abU\u00ad") - buf.write("V\u00afW\u00b1X\u00b3Y\u00b5Z\u00b7[\u00b9\\\u00bb]\u00bd") - buf.write("^\u00bf_\u00c1`\u00c3a\u00c5b\u00c7c\u00c9d\u00cbe\u00cd") - buf.write("f\u00cfg\u00d1h\u00d3i\u00d5j\u00d7k\u00d9l\u00dbm\u00dd") - buf.write("n\u00dfo\u00e1p\u00e3q\u00e5r\u00e7s\u00e9t\u00ebu\u00ed") - buf.write("v\u00efw\u00f1x\u00f3y\u00f5z\u00f7{\u00f9|\u00fb}\u00fd") - buf.write("~\u00ff\177\u0101\u0080\u0103\u0081\u0105\u0082\u0107") - buf.write("\u0083\u0109\u0084\u010b\u0085\u010d\u0086\u010f\u0087") - buf.write("\u0111\u0088\u0113\u0089\u0115\u008a\u0117\u008b\u0119") - buf.write("\u008c\u011b\u008d\u011d\u008e\u011f\u008f\u0121\u0090") - buf.write("\u0123\u0091\u0125\u0092\u0127\u0093\u0129\u0094\u012b") - buf.write("\u0095\u012d\u0096\u012f\u0097\u0131\u0098\u0133\u0099") - buf.write("\u0135\u009a\u0137\u009b\u0139\u009c\u013b\u009d\u013d") - buf.write("\u009e\u013f\u009f\u0141\u00a0\u0143\u00a1\u0145\u00a2") - buf.write("\u0147\u00a3\u0149\u00a4\u014b\u00a5\u014d\u00a6\u014f") - buf.write("\u00a7\u0151\u00a8\u0153\u00a9\u0155\u00aa\u0157\u00ab") - buf.write("\u0159\u00ac\u015b\u00ad\u015d\u00ae\u015f\u00af\u0161") - buf.write("\u00b0\u0163\u00b1\u0165\u00b2\u0167\u00b3\u0169\u00c7") - buf.write("\u016b\u00b4\u016d\u00b5\u016f\u00b6\u0171\u00b7\u0173") - buf.write("\2\u0175\2\u0177\u00b8\u0179\u00b9\u017b\2\u017d\u00ba") - buf.write("\u017f\2\u0181\u00bb\u0183\u00bc\u0185\u00bd\u0187\u00be") - buf.write("\u0189\u00bf\u018b\u00c0\u018d\u00c1\u018f\u00c2\u0191") - buf.write("\2\u0193\u00c3\u0195\2\u0197\2\u0199\2\u019b\2\u019d\2") - buf.write("\u019f\2\u01a1\2\u01a3\2\u01a5\u00c4\u01a7\2\u01a9\u00c5") - buf.write("\u01ab\u00c6\u01ad\2\u01af\2\u01b1\2\u01b3\2\u01b5\2\u01b7") - buf.write("\2\u01b9\2\u01bb\2\u01bd\2\u01bf\2\u01c1\2\u01c3\2\u01c5") - buf.write("\2\u01c7\2\u01c9\2\u01cb\2\u01cd\2\u01cf\2\u01d1\2\u01d3") - buf.write("\2\u01d5\2\u01d7\2\u01d9\2\u01db\2\u01dd\2\u01df\2\u01e1") - buf.write("\2\u01e3\2\u01e5\2\u01e7\2\u01e9\2\u01eb\2\7\2\3\4\5\6") - buf.write(" \3\2\62;\4\2ZZzz\4\2DDdd\3\2\62\63\b\2FFHHOOffhhoo\b") - buf.write("\2\f\f\17\17))^^\u0087\u0087\u202a\u202b\b\2\f\f\17\17") - buf.write("$$^^\u0087\u0087\u202a\u202b\3\2$$\5\2$$^^}}\4\2$$}}\3") - buf.write("\2\177\177\7\2\f\f\17\17$$\u0087\u0087\u202a\u202b\6\2") - buf.write("\f\f\17\17\u0087\u0087\u202a\u202b\4\2NNnn\4\2WWww\4\2") - buf.write("GGgg\4\2--//\4\2\13\13\r\16\13\2\"\"\u00a2\u00a2\u1682") - buf.write("\u1682\u1810\u1810\u2002\u2008\u200a\u200c\u2031\u2031") - buf.write("\u2061\u2061\u3002\u3002\5\2\62;CHchT\2C\\\u00c2\u00d8") - buf.write("\u00da\u00e0\u0102\u0138\u013b\u0149\u014c\u017f\u0183") - buf.write("\u0184\u0186\u018d\u0190\u0193\u0195\u0196\u0198\u019a") - buf.write("\u019e\u019f\u01a1\u01a2\u01a4\u01ab\u01ae\u01b5\u01b7") - buf.write("\u01be\u01c6\u01cf\u01d1\u01dd\u01e0\u01f0\u01f3\u01f6") - buf.write("\u01f8\u01fa\u01fc\u0234\u023c\u023d\u023f\u0240\u0243") - buf.write("\u0248\u024a\u0250\u0372\u0374\u0378\u0381\u0388\u038c") - buf.write("\u038e\u03a3\u03a5\u03ad\u03d1\u03d6\u03da\u03f0\u03f6") - buf.write("\u03f9\u03fb\u03fc\u03ff\u0431\u0462\u0482\u048c\u04cf") - buf.write("\u04d2\u0530\u0533\u0558\u10a2\u10c7\u10c9\u10cf\u1e02") - buf.write("\u1e96\u1ea0\u1f00\u1f0a\u1f11\u1f1a\u1f1f\u1f2a\u1f31") - buf.write("\u1f3a\u1f41\u1f4a\u1f4f\u1f5b\u1f61\u1f6a\u1f71\u1fba") - buf.write("\u1fbd\u1fca\u1fcd\u1fda\u1fdd\u1fea\u1fee\u1ffa\u1ffd") - buf.write("\u2104\u2109\u210d\u210f\u2112\u2114\u2117\u211f\u2126") - buf.write("\u212f\u2132\u2135\u2140\u2141\u2147\u2185\u2c02\u2c30") - buf.write("\u2c62\u2c66\u2c69\u2c72\u2c74\u2c77\u2c80\u2c82\u2c84") - buf.write("\u2ce4\u2ced\u2cef\u2cf4\ua642\ua644\ua66e\ua682\ua69c") - buf.write("\ua724\ua730\ua734\ua770\ua77b\ua788\ua78d\ua78f\ua792") - buf.write("\ua794\ua798\ua7af\ua7b2\ua7b3\uff23\uff3cS\2c|\u00b7") - buf.write("\u00f8\u00fa\u0101\u0103\u0179\u017c\u0182\u0185\u0187") - buf.write("\u018a\u0194\u0197\u019d\u01a0\u01a3\u01a5\u01a7\u01aa") - buf.write("\u01af\u01b2\u01b6\u01b8\u01c1\u01c8\u01ce\u01d0\u01f5") - buf.write("\u01f7\u01fb\u01fd\u023b\u023e\u0244\u0249\u0295\u0297") - buf.write("\u02b1\u0373\u0375\u0379\u037f\u0392\u03d0\u03d2\u03d3") - buf.write("\u03d7\u03d9\u03db\u03f5\u03f7\u0461\u0463\u0483\u048d") - buf.write("\u04c1\u04c4\u0531\u0563\u0589\u1d02\u1d2d\u1d6d\u1d79") - buf.write("\u1d7b\u1d9c\u1e03\u1e9f\u1ea1\u1f09\u1f12\u1f17\u1f22") - buf.write("\u1f29\u1f32\u1f39\u1f42\u1f47\u1f52\u1f59\u1f62\u1f69") - buf.write("\u1f72\u1f7f\u1f82\u1f89\u1f92\u1f99\u1fa2\u1fa9\u1fb2") - buf.write("\u1fb6\u1fb8\u1fb9\u1fc0\u1fc6\u1fc8\u1fc9\u1fd2\u1fd5") - buf.write("\u1fd8\u1fd9\u1fe2\u1fe9\u1ff4\u1ff6\u1ff8\u1ff9\u210c") - buf.write("\u2115\u2131\u213b\u213e\u213f\u2148\u214b\u2150\u2186") - buf.write("\u2c32\u2c60\u2c63\u2c6e\u2c73\u2c7d\u2c83\u2cee\u2cf0") - buf.write("\u2cf5\u2d02\u2d27\u2d29\u2d2f\ua643\ua66f\ua683\ua69d") - buf.write("\ua725\ua733\ua735\ua77a\ua77c\ua77e\ua781\ua789\ua78e") - buf.write("\ua790\ua793\ua797\ua799\ua7ab\ua7fc\uab5c\uab66\uab67") - buf.write("\ufb02\ufb08\ufb15\ufb19\uff43\uff5c\b\2\u01c7\u01cd\u01f4") - buf.write("\u1f91\u1f9a\u1fa1\u1faa\u1fb1\u1fbe\u1fce\u1ffe\u1ffe") - buf.write("#\2\u02b2\u02c3\u02c8\u02d3\u02e2\u02e6\u02ee\u02f0\u0376") - buf.write("\u037c\u055b\u0642\u06e7\u06e8\u07f6\u07f7\u07fc\u081c") - buf.write("\u0826\u082a\u0973\u0e48\u0ec8\u10fe\u17d9\u1845\u1aa9") - buf.write("\u1c7f\u1d2e\u1d6c\u1d7a\u1dc1\u2073\u2081\u2092\u209e") - buf.write("\u2c7e\u2c7f\u2d71\u2e31\u3007\u3037\u303d\u3100\ua017") - buf.write("\ua4ff\ua60e\ua681\ua69e\ua69f\ua719\ua721\ua772\ua78a") - buf.write("\ua7fa\ua7fb\ua9d1\ua9e8\uaa72\uaadf\uaaf5\uaaf6\uab5e") - buf.write("\uab61\uff72\uffa1\u00ec\2\u00ac\u00bc\u01bd\u01c5\u0296") - buf.write("\u05ec\u05f2\u05f4\u0622\u0641\u0643\u064c\u0670\u0671") - buf.write("\u0673\u06d5\u06d7\u06fe\u0701\u0712\u0714\u0731\u074f") - buf.write("\u07a7\u07b3\u07ec\u0802\u0817\u0842\u085a\u08a2\u08b4") - buf.write("\u0906\u093b\u093f\u0952\u095a\u0963\u0974\u0982\u0987") - buf.write("\u098e\u0991\u0992\u0995\u09aa\u09ac\u09b2\u09b4\u09bb") - buf.write("\u09bf\u09d0\u09de\u09df\u09e1\u09e3\u09f2\u09f3\u0a07") - buf.write("\u0a0c\u0a11\u0a12\u0a15\u0a2a\u0a2c\u0a32\u0a34\u0a35") - buf.write("\u0a37\u0a38\u0a3a\u0a3b\u0a5b\u0a5e\u0a60\u0a76\u0a87") - buf.write("\u0a8f\u0a91\u0a93\u0a95\u0aaa\u0aac\u0ab2\u0ab4\u0ab5") - buf.write("\u0ab7\u0abb\u0abf\u0ad2\u0ae2\u0ae3\u0b07\u0b0e\u0b11") - buf.write("\u0b12\u0b15\u0b2a\u0b2c\u0b32\u0b34\u0b35\u0b37\u0b3b") - buf.write("\u0b3f\u0b63\u0b73\u0b85\u0b87\u0b8c\u0b90\u0b92\u0b94") - buf.write("\u0b97\u0b9b\u0b9c\u0b9e\u0bac\u0bb0\u0bbb\u0bd2\u0c0e") - buf.write("\u0c10\u0c12\u0c14\u0c2a\u0c2c\u0c3b\u0c3f\u0c8e\u0c90") - buf.write("\u0c92\u0c94\u0caa\u0cac\u0cb5\u0cb7\u0cbb\u0cbf\u0ce0") - buf.write("\u0ce2\u0ce3\u0cf3\u0cf4\u0d07\u0d0e\u0d10\u0d12\u0d14") - buf.write("\u0d3c\u0d3f\u0d50\u0d62\u0d63\u0d7c\u0d81\u0d87\u0d98") - buf.write("\u0d9c\u0db3\u0db5\u0dbd\u0dbf\u0dc8\u0e03\u0e32\u0e34") - buf.write("\u0e35\u0e42\u0e47\u0e83\u0e84\u0e86\u0e8c\u0e8f\u0e99") - buf.write("\u0e9b\u0ea1\u0ea3\u0ea5\u0ea7\u0ea9\u0eac\u0ead\u0eaf") - buf.write("\u0eb2\u0eb4\u0eb5\u0ebf\u0ec6\u0ede\u0ee1\u0f02\u0f49") - buf.write("\u0f4b\u0f6e\u0f8a\u0f8e\u1002\u102c\u1041\u1057\u105c") - buf.write("\u105f\u1063\u1072\u1077\u1083\u1090\u10fc\u10ff\u124a") - buf.write("\u124c\u124f\u1252\u1258\u125a\u125f\u1262\u128a\u128c") - buf.write("\u128f\u1292\u12b2\u12b4\u12b7\u12ba\u12c0\u12c2\u12c7") - buf.write("\u12ca\u12d8\u12da\u1312\u1314\u1317\u131a\u135c\u1382") - buf.write("\u1391\u13a2\u13f6\u1403\u166e\u1671\u1681\u1683\u169c") - buf.write("\u16a2\u16ec\u16f3\u16fa\u1702\u170e\u1710\u1713\u1722") - buf.write("\u1733\u1742\u1753\u1762\u176e\u1770\u1772\u1782\u17b5") - buf.write("\u17de\u1844\u1846\u1879\u1882\u18aa\u18ac\u18f7\u1902") - buf.write("\u1920\u1952\u196f\u1972\u1976\u1982\u19ad\u19c3\u19c9") - buf.write("\u1a02\u1a18\u1a22\u1a56\u1b07\u1b35\u1b47\u1b4d\u1b85") - buf.write("\u1ba2\u1bb0\u1bb1\u1bbc\u1be7\u1c02\u1c25\u1c4f\u1c51") - buf.write("\u1c5c\u1c79\u1ceb\u1cee\u1cf0\u1cf3\u1cf7\u1cf8\u2137") - buf.write("\u213a\u2d32\u2d69\u2d82\u2d98\u2da2\u2da8\u2daa\u2db0") - buf.write("\u2db2\u2db8\u2dba\u2dc0\u2dc2\u2dc8\u2dca\u2dd0\u2dd2") - buf.write("\u2dd8\u2dda\u2de0\u3008\u303e\u3043\u3098\u30a1\u30fc") - buf.write("\u3101\u312f\u3133\u3190\u31a2\u31bc\u31f2\u3201\u3402") - buf.write("\u4db7\u4e02\u9fce\ua002\ua016\ua018\ua48e\ua4d2\ua4f9") - buf.write("\ua502\ua60d\ua612\ua621\ua62c\ua62d\ua670\ua6e7\ua7f9") - buf.write("\ua803\ua805\ua807\ua809\ua80c\ua80e\ua824\ua842\ua875") - buf.write("\ua884\ua8b5\ua8f4\ua8f9\ua8fd\ua927\ua932\ua948\ua962") - buf.write("\ua97e\ua986\ua9b4\ua9e2\ua9e6\ua9e9\ua9f1\ua9fc\uaa00") - buf.write("\uaa02\uaa2a\uaa42\uaa44\uaa46\uaa4d\uaa62\uaa71\uaa73") - buf.write("\uaa78\uaa7c\uaab1\uaab3\uaabf\uaac2\uaac4\uaadd\uaade") - buf.write("\uaae2\uaaec\uaaf4\uab08\uab0b\uab10\uab13\uab18\uab22") - buf.write("\uab28\uab2a\uab30\uabc2\uabe4\uac02\ud7a5\ud7b2\ud7c8") - buf.write("\ud7cd\ud7fd\uf902\ufa6f\ufa72\ufadb\ufb1f\ufb2a\ufb2c") - buf.write("\ufb38\ufb3a\ufb3e\ufb40\ufbb3\ufbd5\ufd3f\ufd52\ufd91") - buf.write("\ufd94\ufdc9\ufdf2\ufdfd\ufe72\ufe76\ufe78\ufefe\uff68") - buf.write("\uff71\uff73\uff9f\uffa2\uffc0\uffc4\uffc9\uffcc\uffd1") - buf.write("\uffd4\uffd9\uffdc\uffde\4\2\u16f0\u16f2\u2162\u2171\5") - buf.write("\2\u0905\u0905\u0940\u0942\u094b\u094e\5\2\u00af\u00af") - buf.write("\u0602\u0605\u06df\u06df\b\2aa\u2041\u2042\u2056\u2056") - buf.write("\ufe35\ufe36\ufe4f\ufe51\uff41\uff41\'\2\62;\u0662\u066b") - buf.write("\u06f2\u06fb\u07c2\u07cb\u0968\u0971\u09e8\u09f1\u0a68") - buf.write("\u0a71\u0ae8\u0af1\u0b68\u0b71\u0be8\u0bf1\u0c68\u0c71") - buf.write("\u0ce8\u0cf1\u0d68\u0d71\u0de8\u0df1\u0e52\u0e5b\u0ed2") - buf.write("\u0edb\u0f22\u0f2b\u1042\u104b\u1092\u109b\u17e2\u17eb") - buf.write("\u1812\u181b\u1948\u1951\u19d2\u19db\u1a82\u1a8b\u1a92") - buf.write("\u1a9b\u1b52\u1b5b\u1bb2\u1bbb\u1c42\u1c4b\u1c52\u1c5b") - buf.write("\ua622\ua62b\ua8d2\ua8db\ua902\ua90b\ua9d2\ua9db\ua9f2") - buf.write("\ua9fb\uaa52\uaa5b\uabf2\uabfb\uff12\uff1b\2\u0843\2\7") - buf.write("\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2") - buf.write("\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2") - buf.write("\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2") - buf.write("\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2") - buf.write("\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63") - buf.write("\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2") - buf.write("\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2") - buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3") - buf.write("\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y") - buf.write("\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2") - buf.write("c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2") - buf.write("\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2") - buf.write("\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3") - buf.write("\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2") - buf.write("\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d") - buf.write("\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2") - buf.write("\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b") - buf.write("\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2") - buf.write("\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9") - buf.write("\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2") - buf.write("\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7") - buf.write("\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2") - buf.write("\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5") - buf.write("\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2") - buf.write("\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3") - buf.write("\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2") - buf.write("\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1") - buf.write("\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2") - buf.write("\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef") - buf.write("\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2") - buf.write("\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd") - buf.write("\3\2\2\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2") - buf.write("\2\2\u0105\3\2\2\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010b") - buf.write("\3\2\2\2\2\u010d\3\2\2\2\2\u010f\3\2\2\2\2\u0111\3\2\2") - buf.write("\2\2\u0113\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2\2\2\u0119") - buf.write("\3\2\2\2\2\u011b\3\2\2\2\2\u011d\3\2\2\2\2\u011f\3\2\2") - buf.write("\2\2\u0121\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u0127") - buf.write("\3\2\2\2\2\u0129\3\2\2\2\2\u012b\3\2\2\2\2\u012d\3\2\2") - buf.write("\2\2\u012f\3\2\2\2\2\u0131\3\2\2\2\2\u0133\3\2\2\2\2\u0135") - buf.write("\3\2\2\2\2\u0137\3\2\2\2\2\u0139\3\2\2\2\2\u013b\3\2\2") - buf.write("\2\2\u013d\3\2\2\2\2\u013f\3\2\2\2\2\u0141\3\2\2\2\2\u0143") - buf.write("\3\2\2\2\2\u0145\3\2\2\2\2\u0147\3\2\2\2\2\u0149\3\2\2") - buf.write("\2\2\u014b\3\2\2\2\2\u014d\3\2\2\2\2\u014f\3\2\2\2\2\u0151") - buf.write("\3\2\2\2\2\u0153\3\2\2\2\2\u0155\3\2\2\2\2\u0157\3\2\2") - buf.write("\2\2\u0159\3\2\2\2\3\u015b\3\2\2\2\3\u015d\3\2\2\2\3\u015f") - buf.write("\3\2\2\2\3\u0161\3\2\2\2\3\u0163\3\2\2\2\3\u0165\3\2\2") - buf.write("\2\3\u0167\3\2\2\2\4\u0169\3\2\2\2\4\u016b\3\2\2\2\4\u016d") - buf.write("\3\2\2\2\5\u016f\3\2\2\2\5\u0171\3\2\2\2\5\u0173\3\2\2") - buf.write("\2\5\u0175\3\2\2\2\5\u0177\3\2\2\2\5\u0179\3\2\2\2\5\u017b") - buf.write("\3\2\2\2\5\u017d\3\2\2\2\5\u017f\3\2\2\2\5\u0181\3\2\2") - buf.write("\2\5\u0183\3\2\2\2\5\u0185\3\2\2\2\5\u0187\3\2\2\2\5\u0189") - buf.write("\3\2\2\2\5\u018b\3\2\2\2\5\u018d\3\2\2\2\5\u018f\3\2\2") - buf.write("\2\5\u0191\3\2\2\2\5\u0193\3\2\2\2\5\u0195\3\2\2\2\5\u0197") - buf.write("\3\2\2\2\5\u0199\3\2\2\2\5\u019b\3\2\2\2\5\u019d\3\2\2") - buf.write("\2\5\u019f\3\2\2\2\5\u01a1\3\2\2\2\5\u01a3\3\2\2\2\5\u01a5") - buf.write("\3\2\2\2\5\u01a7\3\2\2\2\5\u01a9\3\2\2\2\6\u01ab\3\2\2") - buf.write("\2\6\u01ad\3\2\2\2\7\u01ed\3\2\2\2\t\u01f1\3\2\2\2\13") - buf.write("\u01fd\3\2\2\2\r\u020c\3\2\2\2\17\u0217\3\2\2\2\21\u0227") - buf.write("\3\2\2\2\23\u022d\3\2\2\2\25\u0231\3\2\2\2\27\u023a\3") - buf.write("\2\2\2\31\u023e\3\2\2\2\33\u0244\3\2\2\2\35\u024e\3\2") - buf.write("\2\2\37\u0251\3\2\2\2!\u025b\3\2\2\2#\u0261\3\2\2\2%\u0267") - buf.write("\3\2\2\2\'\u026c\3\2\2\2)\u0271\3\2\2\2+\u0277\3\2\2\2") - buf.write("-\u027a\3\2\2\2/\u027f\3\2\2\2\61\u0284\3\2\2\2\63\u028a") - buf.write("\3\2\2\2\65\u028f\3\2\2\2\67\u0297\3\2\2\29\u029d\3\2") - buf.write("\2\2;\u02a3\3\2\2\2=\u02ac\3\2\2\2?\u02b4\3\2\2\2A\u02bc") - buf.write("\3\2\2\2C\u02c5\3\2\2\2E\u02d0\3\2\2\2G\u02d3\3\2\2\2") - buf.write("I\u02da\3\2\2\2K\u02e2\3\2\2\2M\u02e7\3\2\2\2O\u02ec\3") - buf.write("\2\2\2Q\u02f3\3\2\2\2S\u02f9\3\2\2\2U\u0302\3\2\2\2W\u0309") - buf.write("\3\2\2\2Y\u030f\3\2\2\2[\u0317\3\2\2\2]\u031d\3\2\2\2") - buf.write("_\u0323\3\2\2\2a\u0327\3\2\2\2c\u032f\3\2\2\2e\u0334\3") - buf.write("\2\2\2g\u0338\3\2\2\2i\u033d\3\2\2\2k\u0343\3\2\2\2m\u0346") - buf.write("\3\2\2\2o\u034f\3\2\2\2q\u0352\3\2\2\2s\u0356\3\2\2\2") - buf.write("u\u0360\3\2\2\2w\u0369\3\2\2\2y\u036e\3\2\2\2{\u0371\3") - buf.write("\2\2\2}\u0376\3\2\2\2\177\u037a\3\2\2\2\u0081\u037f\3") - buf.write("\2\2\2\u0083\u0384\3\2\2\2\u0085\u038b\3\2\2\2\u0087\u0395") - buf.write("\3\2\2\2\u0089\u0399\3\2\2\2\u008b\u039e\3\2\2\2\u008d") - buf.write("\u03a5\3\2\2\2\u008f\u03a8\3\2\2\2\u0091\u03b1\3\2\2\2") - buf.write("\u0093\u03b9\3\2\2\2\u0095\u03bd\3\2\2\2\u0097\u03c6\3") - buf.write("\2\2\2\u0099\u03cd\3\2\2\2\u009b\u03d5\3\2\2\2\u009d\u03dd") - buf.write("\3\2\2\2\u009f\u03e7\3\2\2\2\u00a1\u03ee\3\2\2\2\u00a3") - buf.write("\u03f7\3\2\2\2\u00a5\u03fb\3\2\2\2\u00a7\u0402\3\2\2\2") - buf.write("\u00a9\u0409\3\2\2\2\u00ab\u040f\3\2\2\2\u00ad\u0416\3") - buf.write("\2\2\2\u00af\u041d\3\2\2\2\u00b1\u0421\3\2\2\2\u00b3\u0427") - buf.write("\3\2\2\2\u00b5\u042e\3\2\2\2\u00b7\u0439\3\2\2\2\u00b9") - buf.write("\u0440\3\2\2\2\u00bb\u0447\3\2\2\2\u00bd\u044e\3\2\2\2") - buf.write("\u00bf\u0455\3\2\2\2\u00c1\u045a\3\2\2\2\u00c3\u0460\3") - buf.write("\2\2\2\u00c5\u0465\3\2\2\2\u00c7\u0469\3\2\2\2\u00c9\u0470") - buf.write("\3\2\2\2\u00cb\u0475\3\2\2\2\u00cd\u047b\3\2\2\2\u00cf") - buf.write("\u0485\3\2\2\2\u00d1\u048f\3\2\2\2\u00d3\u0496\3\2\2\2") - buf.write("\u00d5\u049d\3\2\2\2\u00d7\u04a3\3\2\2\2\u00d9\u04a7\3") - buf.write("\2\2\2\u00db\u04af\3\2\2\2\u00dd\u04b4\3\2\2\2\u00df\u04bd") - buf.write("\3\2\2\2\u00e1\u04c2\3\2\2\2\u00e3\u04c8\3\2\2\2\u00e5") - buf.write("\u04ce\3\2\2\2\u00e7\u04d5\3\2\2\2\u00e9\u04d9\3\2\2\2") - buf.write("\u00eb\u04ef\3\2\2\2\u00ed\u04ff\3\2\2\2\u00ef\u050f\3") - buf.write("\2\2\2\u00f1\u0556\3\2\2\2\u00f3\u0558\3\2\2\2\u00f5\u055f") - buf.write("\3\2\2\2\u00f7\u0569\3\2\2\2\u00f9\u0576\3\2\2\2\u00fb") - buf.write("\u057d\3\2\2\2\u00fd\u0585\3\2\2\2\u00ff\u0588\3\2\2\2") - buf.write("\u0101\u058b\3\2\2\2\u0103\u058d\3\2\2\2\u0105\u058f\3") - buf.write("\2\2\2\u0107\u0591\3\2\2\2\u0109\u0593\3\2\2\2\u010b\u0595") - buf.write("\3\2\2\2\u010d\u0597\3\2\2\2\u010f\u059a\3\2\2\2\u0111") - buf.write("\u059c\3\2\2\2\u0113\u059e\3\2\2\2\u0115\u05a0\3\2\2\2") - buf.write("\u0117\u05a2\3\2\2\2\u0119\u05a4\3\2\2\2\u011b\u05a6\3") - buf.write("\2\2\2\u011d\u05a8\3\2\2\2\u011f\u05aa\3\2\2\2\u0121\u05ac") - buf.write("\3\2\2\2\u0123\u05ae\3\2\2\2\u0125\u05b0\3\2\2\2\u0127") - buf.write("\u05b2\3\2\2\2\u0129\u05b4\3\2\2\2\u012b\u05b6\3\2\2\2") - buf.write("\u012d\u05b8\3\2\2\2\u012f\u05bb\3\2\2\2\u0131\u05be\3") - buf.write("\2\2\2\u0133\u05c1\3\2\2\2\u0135\u05c4\3\2\2\2\u0137\u05c7") - buf.write("\3\2\2\2\u0139\u05ca\3\2\2\2\u013b\u05cd\3\2\2\2\u013d") - buf.write("\u05d0\3\2\2\2\u013f\u05d3\3\2\2\2\u0141\u05d6\3\2\2\2") - buf.write("\u0143\u05d9\3\2\2\2\u0145\u05dc\3\2\2\2\u0147\u05df\3") - buf.write("\2\2\2\u0149\u05e2\3\2\2\2\u014b\u05e5\3\2\2\2\u014d\u05e8") - buf.write("\3\2\2\2\u014f\u05eb\3\2\2\2\u0151\u05ee\3\2\2\2\u0153") - buf.write("\u05f1\3\2\2\2\u0155\u05f4\3\2\2\2\u0157\u05f8\3\2\2\2") - buf.write("\u0159\u05fc\3\2\2\2\u015b\u05ff\3\2\2\2\u015d\u0602\3") - buf.write("\2\2\2\u015f\u0608\3\2\2\2\u0161\u060b\3\2\2\2\u0163\u060f") - buf.write("\3\2\2\2\u0165\u0614\3\2\2\2\u0167\u061a\3\2\2\2\u0169") - buf.write("\u0620\3\2\2\2\u016b\u0625\3\2\2\2\u016d\u062c\3\2\2\2") - buf.write("\u016f\u0631\3\2\2\2\u0171\u0638\3\2\2\2\u0173\u063e\3") - buf.write("\2\2\2\u0175\u0646\3\2\2\2\u0177\u064f\3\2\2\2\u0179\u0658") - buf.write("\3\2\2\2\u017b\u0660\3\2\2\2\u017d\u0666\3\2\2\2\u017f") - buf.write("\u066d\3\2\2\2\u0181\u0675\3\2\2\2\u0183\u067d\3\2\2\2") - buf.write("\u0185\u0684\3\2\2\2\u0187\u0692\3\2\2\2\u0189\u06a2\3") - buf.write("\2\2\2\u018b\u06b2\3\2\2\2\u018d\u06c5\3\2\2\2\u018f\u06d4") - buf.write("\3\2\2\2\u0191\u06e5\3\2\2\2\u0193\u06f0\3\2\2\2\u0195") - buf.write("\u06f9\3\2\2\2\u0197\u06fe\3\2\2\2\u0199\u0703\3\2\2\2") - buf.write("\u019b\u0708\3\2\2\2\u019d\u070e\3\2\2\2\u019f\u0714\3") - buf.write("\2\2\2\u01a1\u071a\3\2\2\2\u01a3\u0720\3\2\2\2\u01a5\u072c") - buf.write("\3\2\2\2\u01a7\u0730\3\2\2\2\u01a9\u073c\3\2\2\2\u01ab") - buf.write("\u0742\3\2\2\2\u01ad\u0748\3\2\2\2\u01af\u074e\3\2\2\2") - buf.write("\u01b1\u0750\3\2\2\2\u01b3\u075a\3\2\2\2\u01b5\u075c\3") - buf.write("\2\2\2\u01b7\u0770\3\2\2\2\u01b9\u0788\3\2\2\2\u01bb\u07a3") - buf.write("\3\2\2\2\u01bd\u07a8\3\2\2\2\u01bf\u07ac\3\2\2\2\u01c1") - buf.write("\u07ae\3\2\2\2\u01c3\u07b0\3\2\2\2\u01c5\u07b9\3\2\2\2") - buf.write("\u01c7\u07c0\3\2\2\2\u01c9\u07c9\3\2\2\2\u01cb\u07cd\3") - buf.write("\2\2\2\u01cd\u07d1\3\2\2\2\u01cf\u07d6\3\2\2\2\u01d1\u07da") - buf.write("\3\2\2\2\u01d3\u07f0\3\2\2\2\u01d5\u07f3\3\2\2\2\u01d7") - buf.write("\u07f5\3\2\2\2\u01d9\u07f7\3\2\2\2\u01db\u07f9\3\2\2\2") - buf.write("\u01dd\u07fb\3\2\2\2\u01df\u07fd\3\2\2\2\u01e1\u07ff\3") - buf.write("\2\2\2\u01e3\u0801\3\2\2\2\u01e5\u0803\3\2\2\2\u01e7\u0805") - buf.write("\3\2\2\2\u01e9\u0807\3\2\2\2\u01eb\u0809\3\2\2\2\u01ed") - buf.write("\u01ee\7\u00f1\2\2\u01ee\u01ef\7\u00bd\2\2\u01ef\u01f0") - buf.write("\7\u00c1\2\2\u01f0\b\3\2\2\2\u01f1\u01f2\7\61\2\2\u01f2") - buf.write("\u01f3\7\61\2\2\u01f3\u01f4\7\61\2\2\u01f4\u01f8\3\2\2") - buf.write("\2\u01f5\u01f7\5\u01af\u00d6\2\u01f6\u01f5\3\2\2\2\u01f7") - buf.write("\u01fa\3\2\2\2\u01f8\u01f6\3\2\2\2\u01f8\u01f9\3\2\2\2") - buf.write("\u01f9\u01fb\3\2\2\2\u01fa\u01f8\3\2\2\2\u01fb\u01fc\b") - buf.write("\3\2\2\u01fc\n\3\2\2\2\u01fd\u01fe\7\61\2\2\u01fe\u01ff") - buf.write("\7,\2\2\u01ff\u0200\7,\2\2\u0200\u0204\3\2\2\2\u0201\u0203") - buf.write("\13\2\2\2\u0202\u0201\3\2\2\2\u0203\u0206\3\2\2\2\u0204") - buf.write("\u0205\3\2\2\2\u0204\u0202\3\2\2\2\u0205\u0207\3\2\2\2") - buf.write("\u0206\u0204\3\2\2\2\u0207\u0208\7,\2\2\u0208\u0209\7") - buf.write("\61\2\2\u0209\u020a\3\2\2\2\u020a\u020b\b\4\2\2\u020b") - buf.write("\f\3\2\2\2\u020c\u020d\7\61\2\2\u020d\u020e\7\61\2\2\u020e") - buf.write("\u0212\3\2\2\2\u020f\u0211\5\u01af\u00d6\2\u0210\u020f") - buf.write("\3\2\2\2\u0211\u0214\3\2\2\2\u0212\u0210\3\2\2\2\u0212") - buf.write("\u0213\3\2\2\2\u0213\u0215\3\2\2\2\u0214\u0212\3\2\2\2") - buf.write("\u0215\u0216\b\5\2\2\u0216\16\3\2\2\2\u0217\u0218\7\61") - buf.write("\2\2\u0218\u0219\7,\2\2\u0219\u021d\3\2\2\2\u021a\u021c") - buf.write("\13\2\2\2\u021b\u021a\3\2\2\2\u021c\u021f\3\2\2\2\u021d") - buf.write("\u021e\3\2\2\2\u021d\u021b\3\2\2\2\u021e\u0220\3\2\2\2") - buf.write("\u021f\u021d\3\2\2\2\u0220\u0221\7,\2\2\u0221\u0222\7") - buf.write("\61\2\2\u0222\u0223\3\2\2\2\u0223\u0224\b\6\2\2\u0224") - buf.write("\20\3\2\2\2\u0225\u0228\5\u01bf\u00de\2\u0226\u0228\5") - buf.write("\u01bd\u00dd\2\u0227\u0225\3\2\2\2\u0227\u0226\3\2\2\2") - buf.write("\u0228\u0229\3\2\2\2\u0229\u0227\3\2\2\2\u0229\u022a\3") - buf.write("\2\2\2\u022a\u022b\3\2\2\2\u022b\u022c\b\7\3\2\u022c\22") - buf.write("\3\2\2\2\u022d\u022e\7%\2\2\u022e\u022f\3\2\2\2\u022f") - buf.write("\u0230\b\b\4\2\u0230\24\3\2\2\2\u0231\u0232\7c\2\2\u0232") - buf.write("\u0233\7d\2\2\u0233\u0234\7u\2\2\u0234\u0235\7v\2\2\u0235") - buf.write("\u0236\7t\2\2\u0236\u0237\7c\2\2\u0237\u0238\7e\2\2\u0238") - buf.write("\u0239\7v\2\2\u0239\26\3\2\2\2\u023a\u023b\7c\2\2\u023b") - buf.write("\u023c\7f\2\2\u023c\u023d\7f\2\2\u023d\30\3\2\2\2\u023e") - buf.write("\u023f\7c\2\2\u023f\u0240\7n\2\2\u0240\u0241\7k\2\2\u0241") - buf.write("\u0242\7c\2\2\u0242\u0243\7u\2\2\u0243\32\3\2\2\2\u0244") - buf.write("\u0245\7a\2\2\u0245\u0246\7a\2\2\u0246\u0247\7c\2\2\u0247") - buf.write("\u0248\7t\2\2\u0248\u0249\7i\2\2\u0249\u024a\7n\2\2\u024a") - buf.write("\u024b\7k\2\2\u024b\u024c\7u\2\2\u024c\u024d\7v\2\2\u024d") - buf.write("\34\3\2\2\2\u024e\u024f\7c\2\2\u024f\u0250\7u\2\2\u0250") - buf.write("\36\3\2\2\2\u0251\u0252\7c\2\2\u0252\u0253\7u\2\2\u0253") - buf.write("\u0254\7e\2\2\u0254\u0255\7g\2\2\u0255\u0256\7p\2\2\u0256") - buf.write("\u0257\7f\2\2\u0257\u0258\7k\2\2\u0258\u0259\7p\2\2\u0259") - buf.write("\u025a\7i\2\2\u025a \3\2\2\2\u025b\u025c\7c\2\2\u025c") - buf.write("\u025d\7u\2\2\u025d\u025e\7{\2\2\u025e\u025f\7p\2\2\u025f") - buf.write("\u0260\7e\2\2\u0260\"\3\2\2\2\u0261\u0262\7c\2\2\u0262") - buf.write("\u0263\7y\2\2\u0263\u0264\7c\2\2\u0264\u0265\7k\2\2\u0265") - buf.write("\u0266\7v\2\2\u0266$\3\2\2\2\u0267\u0268\7d\2\2\u0268") - buf.write("\u0269\7c\2\2\u0269\u026a\7u\2\2\u026a\u026b\7g\2\2\u026b") - buf.write("&\3\2\2\2\u026c\u026d\7d\2\2\u026d\u026e\7q\2\2\u026e") - buf.write("\u026f\7q\2\2\u026f\u0270\7n\2\2\u0270(\3\2\2\2\u0271") - buf.write("\u0272\7d\2\2\u0272\u0273\7t\2\2\u0273\u0274\7g\2\2\u0274") - buf.write("\u0275\7c\2\2\u0275\u0276\7m\2\2\u0276*\3\2\2\2\u0277") - buf.write("\u0278\7d\2\2\u0278\u0279\7{\2\2\u0279,\3\2\2\2\u027a") - buf.write("\u027b\7d\2\2\u027b\u027c\7{\2\2\u027c\u027d\7v\2\2\u027d") - buf.write("\u027e\7g\2\2\u027e.\3\2\2\2\u027f\u0280\7e\2\2\u0280") - buf.write("\u0281\7c\2\2\u0281\u0282\7u\2\2\u0282\u0283\7g\2\2\u0283") - buf.write("\60\3\2\2\2\u0284\u0285\7e\2\2\u0285\u0286\7c\2\2\u0286") - buf.write("\u0287\7v\2\2\u0287\u0288\7e\2\2\u0288\u0289\7j\2\2\u0289") - buf.write("\62\3\2\2\2\u028a\u028b\7e\2\2\u028b\u028c\7j\2\2\u028c") - buf.write("\u028d\7c\2\2\u028d\u028e\7t\2\2\u028e\64\3\2\2\2\u028f") - buf.write("\u0290\7e\2\2\u0290\u0291\7j\2\2\u0291\u0292\7g\2\2\u0292") - buf.write("\u0293\7e\2\2\u0293\u0294\7m\2\2\u0294\u0295\7g\2\2\u0295") - buf.write("\u0296\7f\2\2\u0296\66\3\2\2\2\u0297\u0298\7e\2\2\u0298") - buf.write("\u0299\7n\2\2\u0299\u029a\7c\2\2\u029a\u029b\7u\2\2\u029b") - buf.write("\u029c\7u\2\2\u029c8\3\2\2\2\u029d\u029e\7e\2\2\u029e") - buf.write("\u029f\7q\2\2\u029f\u02a0\7p\2\2\u02a0\u02a1\7u\2\2\u02a1") - buf.write("\u02a2\7v\2\2\u02a2:\3\2\2\2\u02a3\u02a4\7e\2\2\u02a4") - buf.write("\u02a5\7q\2\2\u02a5\u02a6\7p\2\2\u02a6\u02a7\7v\2\2\u02a7") - buf.write("\u02a8\7k\2\2\u02a8\u02a9\7p\2\2\u02a9\u02aa\7w\2\2\u02aa") - buf.write("\u02ab\7g\2\2\u02ab<\3\2\2\2\u02ac\u02ad\7f\2\2\u02ad") - buf.write("\u02ae\7g\2\2\u02ae\u02af\7e\2\2\u02af\u02b0\7k\2\2\u02b0") - buf.write("\u02b1\7o\2\2\u02b1\u02b2\7c\2\2\u02b2\u02b3\7n\2\2\u02b3") - buf.write(">\3\2\2\2\u02b4\u02b5\7f\2\2\u02b5\u02b6\7g\2\2\u02b6") - buf.write("\u02b7\7h\2\2\u02b7\u02b8\7c\2\2\u02b8\u02b9\7w\2\2\u02b9") - buf.write("\u02ba\7n\2\2\u02ba\u02bb\7v\2\2\u02bb@\3\2\2\2\u02bc") - buf.write("\u02bd\7f\2\2\u02bd\u02be\7g\2\2\u02be\u02bf\7n\2\2\u02bf") - buf.write("\u02c0\7g\2\2\u02c0\u02c1\7i\2\2\u02c1\u02c2\7c\2\2\u02c2") - buf.write("\u02c3\7v\2\2\u02c3\u02c4\7g\2\2\u02c4B\3\2\2\2\u02c5") - buf.write("\u02c6\7f\2\2\u02c6\u02c7\7g\2\2\u02c7\u02c8\7u\2\2\u02c8") - buf.write("\u02c9\7e\2\2\u02c9\u02ca\7g\2\2\u02ca\u02cb\7p\2\2\u02cb") - buf.write("\u02cc\7f\2\2\u02cc\u02cd\7k\2\2\u02cd\u02ce\7p\2\2\u02ce") - buf.write("\u02cf\7i\2\2\u02cfD\3\2\2\2\u02d0\u02d1\7f\2\2\u02d1") - buf.write("\u02d2\7q\2\2\u02d2F\3\2\2\2\u02d3\u02d4\7f\2\2\u02d4") - buf.write("\u02d5\7q\2\2\u02d5\u02d6\7w\2\2\u02d6\u02d7\7d\2\2\u02d7") - buf.write("\u02d8\7n\2\2\u02d8\u02d9\7g\2\2\u02d9H\3\2\2\2\u02da") - buf.write("\u02db\7f\2\2\u02db\u02dc\7{\2\2\u02dc\u02dd\7p\2\2\u02dd") - buf.write("\u02de\7c\2\2\u02de\u02df\7o\2\2\u02df\u02e0\7k\2\2\u02e0") - buf.write("\u02e1\7e\2\2\u02e1J\3\2\2\2\u02e2\u02e3\7g\2\2\u02e3") - buf.write("\u02e4\7n\2\2\u02e4\u02e5\7u\2\2\u02e5\u02e6\7g\2\2\u02e6") - buf.write("L\3\2\2\2\u02e7\u02e8\7g\2\2\u02e8\u02e9\7p\2\2\u02e9") - buf.write("\u02ea\7w\2\2\u02ea\u02eb\7o\2\2\u02ebN\3\2\2\2\u02ec") - buf.write("\u02ed\7g\2\2\u02ed\u02ee\7s\2\2\u02ee\u02ef\7w\2\2\u02ef") - buf.write("\u02f0\7c\2\2\u02f0\u02f1\7n\2\2\u02f1\u02f2\7u\2\2\u02f2") - buf.write("P\3\2\2\2\u02f3\u02f4\7g\2\2\u02f4\u02f5\7x\2\2\u02f5") - buf.write("\u02f6\7g\2\2\u02f6\u02f7\7p\2\2\u02f7\u02f8\7v\2\2\u02f8") - buf.write("R\3\2\2\2\u02f9\u02fa\7g\2\2\u02fa\u02fb\7z\2\2\u02fb") - buf.write("\u02fc\7r\2\2\u02fc\u02fd\7n\2\2\u02fd\u02fe\7k\2\2\u02fe") - buf.write("\u02ff\7e\2\2\u02ff\u0300\7k\2\2\u0300\u0301\7v\2\2\u0301") - buf.write("T\3\2\2\2\u0302\u0303\7g\2\2\u0303\u0304\7z\2\2\u0304") - buf.write("\u0305\7v\2\2\u0305\u0306\7g\2\2\u0306\u0307\7t\2\2\u0307") - buf.write("\u0308\7p\2\2\u0308V\3\2\2\2\u0309\u030a\7h\2\2\u030a") - buf.write("\u030b\7c\2\2\u030b\u030c\7n\2\2\u030c\u030d\7u\2\2\u030d") - buf.write("\u030e\7g\2\2\u030eX\3\2\2\2\u030f\u0310\7h\2\2\u0310") - buf.write("\u0311\7k\2\2\u0311\u0312\7p\2\2\u0312\u0313\7c\2\2\u0313") - buf.write("\u0314\7n\2\2\u0314\u0315\7n\2\2\u0315\u0316\7{\2\2\u0316") - buf.write("Z\3\2\2\2\u0317\u0318\7h\2\2\u0318\u0319\7k\2\2\u0319") - buf.write("\u031a\7z\2\2\u031a\u031b\7g\2\2\u031b\u031c\7f\2\2\u031c") - buf.write("\\\3\2\2\2\u031d\u031e\7h\2\2\u031e\u031f\7n\2\2\u031f") - buf.write("\u0320\7q\2\2\u0320\u0321\7c\2\2\u0321\u0322\7v\2\2\u0322") - buf.write("^\3\2\2\2\u0323\u0324\7h\2\2\u0324\u0325\7q\2\2\u0325") - buf.write("\u0326\7t\2\2\u0326`\3\2\2\2\u0327\u0328\7h\2\2\u0328") - buf.write("\u0329\7q\2\2\u0329\u032a\7t\2\2\u032a\u032b\7g\2\2\u032b") - buf.write("\u032c\7c\2\2\u032c\u032d\7e\2\2\u032d\u032e\7j\2\2\u032e") - buf.write("b\3\2\2\2\u032f\u0330\7h\2\2\u0330\u0331\7t\2\2\u0331") - buf.write("\u0332\7q\2\2\u0332\u0333\7o\2\2\u0333d\3\2\2\2\u0334") - buf.write("\u0335\7i\2\2\u0335\u0336\7g\2\2\u0336\u0337\7v\2\2\u0337") - buf.write("f\3\2\2\2\u0338\u0339\7i\2\2\u0339\u033a\7q\2\2\u033a") - buf.write("\u033b\7v\2\2\u033b\u033c\7q\2\2\u033ch\3\2\2\2\u033d") - buf.write("\u033e\7i\2\2\u033e\u033f\7t\2\2\u033f\u0340\7q\2\2\u0340") - buf.write("\u0341\7w\2\2\u0341\u0342\7r\2\2\u0342j\3\2\2\2\u0343") - buf.write("\u0344\7k\2\2\u0344\u0345\7h\2\2\u0345l\3\2\2\2\u0346") - buf.write("\u0347\7k\2\2\u0347\u0348\7o\2\2\u0348\u0349\7r\2\2\u0349") - buf.write("\u034a\7n\2\2\u034a\u034b\7k\2\2\u034b\u034c\7e\2\2\u034c") - buf.write("\u034d\7k\2\2\u034d\u034e\7v\2\2\u034en\3\2\2\2\u034f") - buf.write("\u0350\7k\2\2\u0350\u0351\7p\2\2\u0351p\3\2\2\2\u0352") - buf.write("\u0353\7k\2\2\u0353\u0354\7p\2\2\u0354\u0355\7v\2\2\u0355") - buf.write("r\3\2\2\2\u0356\u0357\7k\2\2\u0357\u0358\7p\2\2\u0358") - buf.write("\u0359\7v\2\2\u0359\u035a\7g\2\2\u035a\u035b\7t\2\2\u035b") - buf.write("\u035c\7h\2\2\u035c\u035d\7c\2\2\u035d\u035e\7e\2\2\u035e") - buf.write("\u035f\7g\2\2\u035ft\3\2\2\2\u0360\u0361\7k\2\2\u0361") - buf.write("\u0362\7p\2\2\u0362\u0363\7v\2\2\u0363\u0364\7g\2\2\u0364") - buf.write("\u0365\7t\2\2\u0365\u0366\7p\2\2\u0366\u0367\7c\2\2\u0367") - buf.write("\u0368\7n\2\2\u0368v\3\2\2\2\u0369\u036a\7k\2\2\u036a") - buf.write("\u036b\7p\2\2\u036b\u036c\7v\2\2\u036c\u036d\7q\2\2\u036d") - buf.write("x\3\2\2\2\u036e\u036f\7k\2\2\u036f\u0370\7u\2\2\u0370") - buf.write("z\3\2\2\2\u0371\u0372\7l\2\2\u0372\u0373\7q\2\2\u0373") - buf.write("\u0374\7k\2\2\u0374\u0375\7p\2\2\u0375|\3\2\2\2\u0376") - buf.write("\u0377\7n\2\2\u0377\u0378\7g\2\2\u0378\u0379\7v\2\2\u0379") - buf.write("~\3\2\2\2\u037a\u037b\7n\2\2\u037b\u037c\7q\2\2\u037c") - buf.write("\u037d\7e\2\2\u037d\u037e\7m\2\2\u037e\u0080\3\2\2\2\u037f") - buf.write("\u0380\7n\2\2\u0380\u0381\7q\2\2\u0381\u0382\7p\2\2\u0382") - buf.write("\u0383\7i\2\2\u0383\u0082\3\2\2\2\u0384\u0385\7p\2\2\u0385") - buf.write("\u0386\7c\2\2\u0386\u0387\7o\2\2\u0387\u0388\7g\2\2\u0388") - buf.write("\u0389\7q\2\2\u0389\u038a\7h\2\2\u038a\u0084\3\2\2\2\u038b") - buf.write("\u038c\7p\2\2\u038c\u038d\7c\2\2\u038d\u038e\7o\2\2\u038e") - buf.write("\u038f\7g\2\2\u038f\u0390\7u\2\2\u0390\u0391\7r\2\2\u0391") - buf.write("\u0392\7c\2\2\u0392\u0393\7e\2\2\u0393\u0394\7g\2\2\u0394") - buf.write("\u0086\3\2\2\2\u0395\u0396\7p\2\2\u0396\u0397\7g\2\2\u0397") - buf.write("\u0398\7y\2\2\u0398\u0088\3\2\2\2\u0399\u039a\7p\2\2\u039a") - buf.write("\u039b\7w\2\2\u039b\u039c\7n\2\2\u039c\u039d\7n\2\2\u039d") - buf.write("\u008a\3\2\2\2\u039e\u039f\7q\2\2\u039f\u03a0\7d\2\2\u03a0") - buf.write("\u03a1\7l\2\2\u03a1\u03a2\7g\2\2\u03a2\u03a3\7e\2\2\u03a3") - buf.write("\u03a4\7v\2\2\u03a4\u008c\3\2\2\2\u03a5\u03a6\7q\2\2\u03a6") - buf.write("\u03a7\7p\2\2\u03a7\u008e\3\2\2\2\u03a8\u03a9\7q\2\2\u03a9") - buf.write("\u03aa\7r\2\2\u03aa\u03ab\7g\2\2\u03ab\u03ac\7t\2\2\u03ac") - buf.write("\u03ad\7c\2\2\u03ad\u03ae\7v\2\2\u03ae\u03af\7q\2\2\u03af") - buf.write("\u03b0\7t\2\2\u03b0\u0090\3\2\2\2\u03b1\u03b2\7q\2\2\u03b2") - buf.write("\u03b3\7t\2\2\u03b3\u03b4\7f\2\2\u03b4\u03b5\7g\2\2\u03b5") - buf.write("\u03b6\7t\2\2\u03b6\u03b7\7d\2\2\u03b7\u03b8\7{\2\2\u03b8") - buf.write("\u0092\3\2\2\2\u03b9\u03ba\7q\2\2\u03ba\u03bb\7w\2\2\u03bb") - buf.write("\u03bc\7v\2\2\u03bc\u0094\3\2\2\2\u03bd\u03be\7q\2\2\u03be") - buf.write("\u03bf\7x\2\2\u03bf\u03c0\7g\2\2\u03c0\u03c1\7t\2\2\u03c1") - buf.write("\u03c2\7t\2\2\u03c2\u03c3\7k\2\2\u03c3\u03c4\7f\2\2\u03c4") - buf.write("\u03c5\7g\2\2\u03c5\u0096\3\2\2\2\u03c6\u03c7\7r\2\2\u03c7") - buf.write("\u03c8\7c\2\2\u03c8\u03c9\7t\2\2\u03c9\u03ca\7c\2\2\u03ca") - buf.write("\u03cb\7o\2\2\u03cb\u03cc\7u\2\2\u03cc\u0098\3\2\2\2\u03cd") - buf.write("\u03ce\7r\2\2\u03ce\u03cf\7c\2\2\u03cf\u03d0\7t\2\2\u03d0") - buf.write("\u03d1\7v\2\2\u03d1\u03d2\7k\2\2\u03d2\u03d3\7c\2\2\u03d3") - buf.write("\u03d4\7n\2\2\u03d4\u009a\3\2\2\2\u03d5\u03d6\7r\2\2\u03d6") - buf.write("\u03d7\7t\2\2\u03d7\u03d8\7k\2\2\u03d8\u03d9\7x\2\2\u03d9") - buf.write("\u03da\7c\2\2\u03da\u03db\7v\2\2\u03db\u03dc\7g\2\2\u03dc") - buf.write("\u009c\3\2\2\2\u03dd\u03de\7r\2\2\u03de\u03df\7t\2\2\u03df") - buf.write("\u03e0\7q\2\2\u03e0\u03e1\7v\2\2\u03e1\u03e2\7g\2\2\u03e2") - buf.write("\u03e3\7e\2\2\u03e3\u03e4\7v\2\2\u03e4\u03e5\7g\2\2\u03e5") - buf.write("\u03e6\7f\2\2\u03e6\u009e\3\2\2\2\u03e7\u03e8\7r\2\2\u03e8") - buf.write("\u03e9\7w\2\2\u03e9\u03ea\7d\2\2\u03ea\u03eb\7n\2\2\u03eb") - buf.write("\u03ec\7k\2\2\u03ec\u03ed\7e\2\2\u03ed\u00a0\3\2\2\2\u03ee") - buf.write("\u03ef\7t\2\2\u03ef\u03f0\7g\2\2\u03f0\u03f1\7c\2\2\u03f1") - buf.write("\u03f2\7f\2\2\u03f2\u03f3\7q\2\2\u03f3\u03f4\7p\2\2\u03f4") - buf.write("\u03f5\7n\2\2\u03f5\u03f6\7{\2\2\u03f6\u00a2\3\2\2\2\u03f7") - buf.write("\u03f8\7t\2\2\u03f8\u03f9\7g\2\2\u03f9\u03fa\7h\2\2\u03fa") - buf.write("\u00a4\3\2\2\2\u03fb\u03fc\7t\2\2\u03fc\u03fd\7g\2\2\u03fd") - buf.write("\u03fe\7o\2\2\u03fe\u03ff\7q\2\2\u03ff\u0400\7x\2\2\u0400") - buf.write("\u0401\7g\2\2\u0401\u00a6\3\2\2\2\u0402\u0403\7t\2\2\u0403") - buf.write("\u0404\7g\2\2\u0404\u0405\7v\2\2\u0405\u0406\7w\2\2\u0406") - buf.write("\u0407\7t\2\2\u0407\u0408\7p\2\2\u0408\u00a8\3\2\2\2\u0409") - buf.write("\u040a\7u\2\2\u040a\u040b\7d\2\2\u040b\u040c\7{\2\2\u040c") - buf.write("\u040d\7v\2\2\u040d\u040e\7g\2\2\u040e\u00aa\3\2\2\2\u040f") - buf.write("\u0410\7u\2\2\u0410\u0411\7g\2\2\u0411\u0412\7c\2\2\u0412") - buf.write("\u0413\7n\2\2\u0413\u0414\7g\2\2\u0414\u0415\7f\2\2\u0415") - buf.write("\u00ac\3\2\2\2\u0416\u0417\7u\2\2\u0417\u0418\7g\2\2\u0418") - buf.write("\u0419\7n\2\2\u0419\u041a\7g\2\2\u041a\u041b\7e\2\2\u041b") - buf.write("\u041c\7v\2\2\u041c\u00ae\3\2\2\2\u041d\u041e\7u\2\2\u041e") - buf.write("\u041f\7g\2\2\u041f\u0420\7v\2\2\u0420\u00b0\3\2\2\2\u0421") - buf.write("\u0422\7u\2\2\u0422\u0423\7j\2\2\u0423\u0424\7q\2\2\u0424") - buf.write("\u0425\7t\2\2\u0425\u0426\7v\2\2\u0426\u00b2\3\2\2\2\u0427") - buf.write("\u0428\7u\2\2\u0428\u0429\7k\2\2\u0429\u042a\7|\2\2\u042a") - buf.write("\u042b\7g\2\2\u042b\u042c\7q\2\2\u042c\u042d\7h\2\2\u042d") - buf.write("\u00b4\3\2\2\2\u042e\u042f\7u\2\2\u042f\u0430\7v\2\2\u0430") - buf.write("\u0431\7c\2\2\u0431\u0432\7e\2\2\u0432\u0433\7m\2\2\u0433") - buf.write("\u0434\7c\2\2\u0434\u0435\7n\2\2\u0435\u0436\7n\2\2\u0436") - buf.write("\u0437\7q\2\2\u0437\u0438\7e\2\2\u0438\u00b6\3\2\2\2\u0439") - buf.write("\u043a\7u\2\2\u043a\u043b\7v\2\2\u043b\u043c\7c\2\2\u043c") - buf.write("\u043d\7v\2\2\u043d\u043e\7k\2\2\u043e\u043f\7e\2\2\u043f") - buf.write("\u00b8\3\2\2\2\u0440\u0441\7u\2\2\u0441\u0442\7v\2\2\u0442") - buf.write("\u0443\7t\2\2\u0443\u0444\7k\2\2\u0444\u0445\7p\2\2\u0445") - buf.write("\u0446\7i\2\2\u0446\u00ba\3\2\2\2\u0447\u0448\7u\2\2\u0448") - buf.write("\u0449\7v\2\2\u0449\u044a\7t\2\2\u044a\u044b\7w\2\2\u044b") - buf.write("\u044c\7e\2\2\u044c\u044d\7v\2\2\u044d\u00bc\3\2\2\2\u044e") - buf.write("\u044f\7u\2\2\u044f\u0450\7y\2\2\u0450\u0451\7k\2\2\u0451") - buf.write("\u0452\7v\2\2\u0452\u0453\7e\2\2\u0453\u0454\7j\2\2\u0454") - buf.write("\u00be\3\2\2\2\u0455\u0456\7v\2\2\u0456\u0457\7j\2\2\u0457") - buf.write("\u0458\7k\2\2\u0458\u0459\7u\2\2\u0459\u00c0\3\2\2\2\u045a") - buf.write("\u045b\7v\2\2\u045b\u045c\7j\2\2\u045c\u045d\7t\2\2\u045d") - buf.write("\u045e\7q\2\2\u045e\u045f\7y\2\2\u045f\u00c2\3\2\2\2\u0460") - buf.write("\u0461\7v\2\2\u0461\u0462\7t\2\2\u0462\u0463\7w\2\2\u0463") - buf.write("\u0464\7g\2\2\u0464\u00c4\3\2\2\2\u0465\u0466\7v\2\2\u0466") - buf.write("\u0467\7t\2\2\u0467\u0468\7{\2\2\u0468\u00c6\3\2\2\2\u0469") - buf.write("\u046a\7v\2\2\u046a\u046b\7{\2\2\u046b\u046c\7r\2\2\u046c") - buf.write("\u046d\7g\2\2\u046d\u046e\7q\2\2\u046e\u046f\7h\2\2\u046f") - buf.write("\u00c8\3\2\2\2\u0470\u0471\7w\2\2\u0471\u0472\7k\2\2\u0472") - buf.write("\u0473\7p\2\2\u0473\u0474\7v\2\2\u0474\u00ca\3\2\2\2\u0475") - buf.write("\u0476\7w\2\2\u0476\u0477\7n\2\2\u0477\u0478\7q\2\2\u0478") - buf.write("\u0479\7p\2\2\u0479\u047a\7i\2\2\u047a\u00cc\3\2\2\2\u047b") - buf.write("\u047c\7w\2\2\u047c\u047d\7p\2\2\u047d\u047e\7e\2\2\u047e") - buf.write("\u047f\7j\2\2\u047f\u0480\7g\2\2\u0480\u0481\7e\2\2\u0481") - buf.write("\u0482\7m\2\2\u0482\u0483\7g\2\2\u0483\u0484\7f\2\2\u0484") - buf.write("\u00ce\3\2\2\2\u0485\u0486\7w\2\2\u0486\u0487\7p\2\2\u0487") - buf.write("\u0488\7o\2\2\u0488\u0489\7c\2\2\u0489\u048a\7p\2\2\u048a") - buf.write("\u048b\7c\2\2\u048b\u048c\7i\2\2\u048c\u048d\7g\2\2\u048d") - buf.write("\u048e\7f\2\2\u048e\u00d0\3\2\2\2\u048f\u0490\7w\2\2\u0490") - buf.write("\u0491\7p\2\2\u0491\u0492\7u\2\2\u0492\u0493\7c\2\2\u0493") - buf.write("\u0494\7h\2\2\u0494\u0495\7g\2\2\u0495\u00d2\3\2\2\2\u0496") - buf.write("\u0497\7w\2\2\u0497\u0498\7u\2\2\u0498\u0499\7j\2\2\u0499") - buf.write("\u049a\7q\2\2\u049a\u049b\7t\2\2\u049b\u049c\7v\2\2\u049c") - buf.write("\u00d4\3\2\2\2\u049d\u049e\7w\2\2\u049e\u049f\7u\2\2\u049f") - buf.write("\u04a0\7k\2\2\u04a0\u04a1\7p\2\2\u04a1\u04a2\7i\2\2\u04a2") - buf.write("\u00d6\3\2\2\2\u04a3\u04a4\7x\2\2\u04a4\u04a5\7c\2\2\u04a5") - buf.write("\u04a6\7t\2\2\u04a6\u00d8\3\2\2\2\u04a7\u04a8\7x\2\2\u04a8") - buf.write("\u04a9\7k\2\2\u04a9\u04aa\7t\2\2\u04aa\u04ab\7v\2\2\u04ab") - buf.write("\u04ac\7w\2\2\u04ac\u04ad\7c\2\2\u04ad\u04ae\7n\2\2\u04ae") - buf.write("\u00da\3\2\2\2\u04af\u04b0\7x\2\2\u04b0\u04b1\7q\2\2\u04b1") - buf.write("\u04b2\7k\2\2\u04b2\u04b3\7f\2\2\u04b3\u00dc\3\2\2\2\u04b4") - buf.write("\u04b5\7x\2\2\u04b5\u04b6\7q\2\2\u04b6\u04b7\7n\2\2\u04b7") - buf.write("\u04b8\7c\2\2\u04b8\u04b9\7v\2\2\u04b9\u04ba\7k\2\2\u04ba") - buf.write("\u04bb\7n\2\2\u04bb\u04bc\7g\2\2\u04bc\u00de\3\2\2\2\u04bd") - buf.write("\u04be\7y\2\2\u04be\u04bf\7j\2\2\u04bf\u04c0\7g\2\2\u04c0") - buf.write("\u04c1\7p\2\2\u04c1\u00e0\3\2\2\2\u04c2\u04c3\7y\2\2\u04c3") - buf.write("\u04c4\7j\2\2\u04c4\u04c5\7g\2\2\u04c5\u04c6\7t\2\2\u04c6") - buf.write("\u04c7\7g\2\2\u04c7\u00e2\3\2\2\2\u04c8\u04c9\7y\2\2\u04c9") - buf.write("\u04ca\7j\2\2\u04ca\u04cb\7k\2\2\u04cb\u04cc\7n\2\2\u04cc") - buf.write("\u04cd\7g\2\2\u04cd\u00e4\3\2\2\2\u04ce\u04cf\7{\2\2\u04cf") - buf.write("\u04d0\7k\2\2\u04d0\u04d1\7g\2\2\u04d1\u04d2\7n\2\2\u04d2") - buf.write("\u04d3\7f\2\2\u04d3\u00e6\3\2\2\2\u04d4\u04d6\7B\2\2\u04d5") - buf.write("\u04d4\3\2\2\2\u04d5\u04d6\3\2\2\2\u04d6\u04d7\3\2\2\2") - buf.write("\u04d7\u04d8\5\u01c3\u00e0\2\u04d8\u00e8\3\2\2\2\u04d9") - buf.write("\u04e3\t\2\2\2\u04da\u04dc\7a\2\2\u04db\u04da\3\2\2\2") - buf.write("\u04dc\u04df\3\2\2\2\u04dd\u04db\3\2\2\2\u04dd\u04de\3") - buf.write("\2\2\2\u04de\u04e0\3\2\2\2\u04df\u04dd\3\2\2\2\u04e0\u04e2") - buf.write("\t\2\2\2\u04e1\u04dd\3\2\2\2\u04e2\u04e5\3\2\2\2\u04e3") - buf.write("\u04e1\3\2\2\2\u04e3\u04e4\3\2\2\2\u04e4\u04e7\3\2\2\2") - buf.write("\u04e5\u04e3\3\2\2\2\u04e6\u04e8\5\u01b3\u00d8\2\u04e7") - buf.write("\u04e6\3\2\2\2\u04e7\u04e8\3\2\2\2\u04e8\u04e9\3\2\2\2") - buf.write("\u04e9\u04eb\7\60\2\2\u04ea\u04ec\7B\2\2\u04eb\u04ea\3") - buf.write("\2\2\2\u04eb\u04ec\3\2\2\2\u04ec\u04ed\3\2\2\2\u04ed\u04ee") - buf.write("\5\u01c3\u00e0\2\u04ee\u00ea\3\2\2\2\u04ef\u04f9\t\2\2") - buf.write("\2\u04f0\u04f2\7a\2\2\u04f1\u04f0\3\2\2\2\u04f2\u04f5") - buf.write("\3\2\2\2\u04f3\u04f1\3\2\2\2\u04f3\u04f4\3\2\2\2\u04f4") - buf.write("\u04f6\3\2\2\2\u04f5\u04f3\3\2\2\2\u04f6\u04f8\t\2\2\2") - buf.write("\u04f7\u04f3\3\2\2\2\u04f8\u04fb\3\2\2\2\u04f9\u04f7\3") - buf.write("\2\2\2\u04f9\u04fa\3\2\2\2\u04fa\u04fd\3\2\2\2\u04fb\u04f9") - buf.write("\3\2\2\2\u04fc\u04fe\5\u01b3\u00d8\2\u04fd\u04fc\3\2\2") - buf.write("\2\u04fd\u04fe\3\2\2\2\u04fe\u00ec\3\2\2\2\u04ff\u0500") - buf.write("\7\62\2\2\u0500\u0508\t\3\2\2\u0501\u0503\7a\2\2\u0502") - buf.write("\u0501\3\2\2\2\u0503\u0506\3\2\2\2\u0504\u0502\3\2\2\2") - buf.write("\u0504\u0505\3\2\2\2\u0505\u0507\3\2\2\2\u0506\u0504\3") - buf.write("\2\2\2\u0507\u0509\5\u01d5\u00e9\2\u0508\u0504\3\2\2\2") - buf.write("\u0509\u050a\3\2\2\2\u050a\u0508\3\2\2\2\u050a\u050b\3") - buf.write("\2\2\2\u050b\u050d\3\2\2\2\u050c\u050e\5\u01b3\u00d8\2") - buf.write("\u050d\u050c\3\2\2\2\u050d\u050e\3\2\2\2\u050e\u00ee\3") - buf.write("\2\2\2\u050f\u0510\7\62\2\2\u0510\u0518\t\4\2\2\u0511") - buf.write("\u0513\7a\2\2\u0512\u0511\3\2\2\2\u0513\u0516\3\2\2\2") - buf.write("\u0514\u0512\3\2\2\2\u0514\u0515\3\2\2\2\u0515\u0517\3") - buf.write("\2\2\2\u0516\u0514\3\2\2\2\u0517\u0519\t\5\2\2\u0518\u0514") - buf.write("\3\2\2\2\u0519\u051a\3\2\2\2\u051a\u0518\3\2\2\2\u051a") - buf.write("\u051b\3\2\2\2\u051b\u051d\3\2\2\2\u051c\u051e\5\u01b3") - buf.write("\u00d8\2\u051d\u051c\3\2\2\2\u051d\u051e\3\2\2\2\u051e") - buf.write("\u00f0\3\2\2\2\u051f\u0529\t\2\2\2\u0520\u0522\7a\2\2") - buf.write("\u0521\u0520\3\2\2\2\u0522\u0525\3\2\2\2\u0523\u0521\3") - buf.write("\2\2\2\u0523\u0524\3\2\2\2\u0524\u0526\3\2\2\2\u0525\u0523") - buf.write("\3\2\2\2\u0526\u0528\t\2\2\2\u0527\u0523\3\2\2\2\u0528") - buf.write("\u052b\3\2\2\2\u0529\u0527\3\2\2\2\u0529\u052a\3\2\2\2") - buf.write("\u052a\u052d\3\2\2\2\u052b\u0529\3\2\2\2\u052c\u051f\3") - buf.write("\2\2\2\u052c\u052d\3\2\2\2\u052d\u052e\3\2\2\2\u052e\u052f") - buf.write("\7\60\2\2\u052f\u0539\t\2\2\2\u0530\u0532\7a\2\2\u0531") - buf.write("\u0530\3\2\2\2\u0532\u0535\3\2\2\2\u0533\u0531\3\2\2\2") - buf.write("\u0533\u0534\3\2\2\2\u0534\u0536\3\2\2\2\u0535\u0533\3") - buf.write("\2\2\2\u0536\u0538\t\2\2\2\u0537\u0533\3\2\2\2\u0538\u053b") - buf.write("\3\2\2\2\u0539\u0537\3\2\2\2\u0539\u053a\3\2\2\2\u053a") - buf.write("\u053d\3\2\2\2\u053b\u0539\3\2\2\2\u053c\u053e\5\u01b5") - buf.write("\u00d9\2\u053d\u053c\3\2\2\2\u053d\u053e\3\2\2\2\u053e") - buf.write("\u0540\3\2\2\2\u053f\u0541\t\6\2\2\u0540\u053f\3\2\2\2") - buf.write("\u0540\u0541\3\2\2\2\u0541\u0557\3\2\2\2\u0542\u054c\t") - buf.write("\2\2\2\u0543\u0545\7a\2\2\u0544\u0543\3\2\2\2\u0545\u0548") - buf.write("\3\2\2\2\u0546\u0544\3\2\2\2\u0546\u0547\3\2\2\2\u0547") - buf.write("\u0549\3\2\2\2\u0548\u0546\3\2\2\2\u0549\u054b\t\2\2\2") - buf.write("\u054a\u0546\3\2\2\2\u054b\u054e\3\2\2\2\u054c\u054a\3") - buf.write("\2\2\2\u054c\u054d\3\2\2\2\u054d\u0554\3\2\2\2\u054e\u054c") - buf.write("\3\2\2\2\u054f\u0555\t\6\2\2\u0550\u0552\5\u01b5\u00d9") - buf.write("\2\u0551\u0553\t\6\2\2\u0552\u0551\3\2\2\2\u0552\u0553") - buf.write("\3\2\2\2\u0553\u0555\3\2\2\2\u0554\u054f\3\2\2\2\u0554") - buf.write("\u0550\3\2\2\2\u0555\u0557\3\2\2\2\u0556\u052c\3\2\2\2") - buf.write("\u0556\u0542\3\2\2\2\u0557\u00f2\3\2\2\2\u0558\u055b\7") - buf.write(")\2\2\u0559\u055c\n\7\2\2\u055a\u055c\5\u01b7\u00da\2") - buf.write("\u055b\u0559\3\2\2\2\u055b\u055a\3\2\2\2\u055c\u055d\3") - buf.write("\2\2\2\u055d\u055e\7)\2\2\u055e\u00f4\3\2\2\2\u055f\u0564") - buf.write("\7$\2\2\u0560\u0563\n\b\2\2\u0561\u0563\5\u01b7\u00da") - buf.write("\2\u0562\u0560\3\2\2\2\u0562\u0561\3\2\2\2\u0563\u0566") - buf.write("\3\2\2\2\u0564\u0562\3\2\2\2\u0564\u0565\3\2\2\2\u0565") - buf.write("\u0567\3\2\2\2\u0566\u0564\3\2\2\2\u0567\u0568\7$\2\2") - buf.write("\u0568\u00f6\3\2\2\2\u0569\u056a\7B\2\2\u056a\u056b\7") - buf.write("$\2\2\u056b\u0571\3\2\2\2\u056c\u0570\n\t\2\2\u056d\u056e") - buf.write("\7$\2\2\u056e\u0570\7$\2\2\u056f\u056c\3\2\2\2\u056f\u056d") - buf.write("\3\2\2\2\u0570\u0573\3\2\2\2\u0571\u056f\3\2\2\2\u0571") - buf.write("\u0572\3\2\2\2\u0572\u0574\3\2\2\2\u0573\u0571\3\2\2\2") - buf.write("\u0574\u0575\7$\2\2\u0575\u00f8\3\2\2\2\u0576\u0577\7") - buf.write("&\2\2\u0577\u0578\7$\2\2\u0578\u0579\3\2\2\2\u0579\u057a") - buf.write("\b{\5\2\u057a\u057b\3\2\2\2\u057b\u057c\b{\6\2\u057c\u00fa") - buf.write("\3\2\2\2\u057d\u057e\7&\2\2\u057e\u057f\7B\2\2\u057f\u0580") - buf.write("\7$\2\2\u0580\u0581\3\2\2\2\u0581\u0582\b|\7\2\u0582\u0583") - buf.write("\3\2\2\2\u0583\u0584\b|\6\2\u0584\u00fc\3\2\2\2\u0585") - buf.write("\u0586\7}\2\2\u0586\u0587\b}\b\2\u0587\u00fe\3\2\2\2\u0588") - buf.write("\u0589\7\177\2\2\u0589\u058a\b~\t\2\u058a\u0100\3\2\2") - buf.write("\2\u058b\u058c\7]\2\2\u058c\u0102\3\2\2\2\u058d\u058e") - buf.write("\7_\2\2\u058e\u0104\3\2\2\2\u058f\u0590\7*\2\2\u0590\u0106") - buf.write("\3\2\2\2\u0591\u0592\7+\2\2\u0592\u0108\3\2\2\2\u0593") - buf.write("\u0594\7\60\2\2\u0594\u010a\3\2\2\2\u0595\u0596\7.\2\2") - buf.write("\u0596\u010c\3\2\2\2\u0597\u0598\7<\2\2\u0598\u0599\b") - buf.write("\u0085\n\2\u0599\u010e\3\2\2\2\u059a\u059b\7=\2\2\u059b") - buf.write("\u0110\3\2\2\2\u059c\u059d\7-\2\2\u059d\u0112\3\2\2\2") - buf.write("\u059e\u059f\7/\2\2\u059f\u0114\3\2\2\2\u05a0\u05a1\7") - buf.write(",\2\2\u05a1\u0116\3\2\2\2\u05a2\u05a3\7\61\2\2\u05a3\u0118") - buf.write("\3\2\2\2\u05a4\u05a5\7\'\2\2\u05a5\u011a\3\2\2\2\u05a6") - buf.write("\u05a7\7(\2\2\u05a7\u011c\3\2\2\2\u05a8\u05a9\7~\2\2\u05a9") - buf.write("\u011e\3\2\2\2\u05aa\u05ab\7`\2\2\u05ab\u0120\3\2\2\2") - buf.write("\u05ac\u05ad\7#\2\2\u05ad\u0122\3\2\2\2\u05ae\u05af\7") - buf.write("\u0080\2\2\u05af\u0124\3\2\2\2\u05b0\u05b1\7?\2\2\u05b1") - buf.write("\u0126\3\2\2\2\u05b2\u05b3\7>\2\2\u05b3\u0128\3\2\2\2") - buf.write("\u05b4\u05b5\7@\2\2\u05b5\u012a\3\2\2\2\u05b6\u05b7\7") - buf.write("A\2\2\u05b7\u012c\3\2\2\2\u05b8\u05b9\7<\2\2\u05b9\u05ba") - buf.write("\7<\2\2\u05ba\u012e\3\2\2\2\u05bb\u05bc\7A\2\2\u05bc\u05bd") - buf.write("\7A\2\2\u05bd\u0130\3\2\2\2\u05be\u05bf\7-\2\2\u05bf\u05c0") - buf.write("\7-\2\2\u05c0\u0132\3\2\2\2\u05c1\u05c2\7/\2\2\u05c2\u05c3") - buf.write("\7/\2\2\u05c3\u0134\3\2\2\2\u05c4\u05c5\7(\2\2\u05c5\u05c6") - buf.write("\7(\2\2\u05c6\u0136\3\2\2\2\u05c7\u05c8\7~\2\2\u05c8\u05c9") - buf.write("\7~\2\2\u05c9\u0138\3\2\2\2\u05ca\u05cb\7/\2\2\u05cb\u05cc") - buf.write("\7@\2\2\u05cc\u013a\3\2\2\2\u05cd\u05ce\7?\2\2\u05ce\u05cf") - buf.write("\7?\2\2\u05cf\u013c\3\2\2\2\u05d0\u05d1\7#\2\2\u05d1\u05d2") - buf.write("\7?\2\2\u05d2\u013e\3\2\2\2\u05d3\u05d4\7>\2\2\u05d4\u05d5") - buf.write("\7?\2\2\u05d5\u0140\3\2\2\2\u05d6\u05d7\7@\2\2\u05d7\u05d8") - buf.write("\7?\2\2\u05d8\u0142\3\2\2\2\u05d9\u05da\7-\2\2\u05da\u05db") - buf.write("\7?\2\2\u05db\u0144\3\2\2\2\u05dc\u05dd\7/\2\2\u05dd\u05de") - buf.write("\7?\2\2\u05de\u0146\3\2\2\2\u05df\u05e0\7,\2\2\u05e0\u05e1") - buf.write("\7?\2\2\u05e1\u0148\3\2\2\2\u05e2\u05e3\7\61\2\2\u05e3") - buf.write("\u05e4\7?\2\2\u05e4\u014a\3\2\2\2\u05e5\u05e6\7\'\2\2") - buf.write("\u05e6\u05e7\7?\2\2\u05e7\u014c\3\2\2\2\u05e8\u05e9\7") - buf.write("(\2\2\u05e9\u05ea\7?\2\2\u05ea\u014e\3\2\2\2\u05eb\u05ec") - buf.write("\7~\2\2\u05ec\u05ed\7?\2\2\u05ed\u0150\3\2\2\2\u05ee\u05ef") - buf.write("\7`\2\2\u05ef\u05f0\7?\2\2\u05f0\u0152\3\2\2\2\u05f1\u05f2") - buf.write("\7>\2\2\u05f2\u05f3\7>\2\2\u05f3\u0154\3\2\2\2\u05f4\u05f5") - buf.write("\7>\2\2\u05f5\u05f6\7>\2\2\u05f6\u05f7\7?\2\2\u05f7\u0156") - buf.write("\3\2\2\2\u05f8\u05f9\7A\2\2\u05f9\u05fa\7A\2\2\u05fa\u05fb") - buf.write("\7?\2\2\u05fb\u0158\3\2\2\2\u05fc\u05fd\7\60\2\2\u05fd") - buf.write("\u05fe\7\60\2\2\u05fe\u015a\3\2\2\2\u05ff\u0600\7}\2\2") - buf.write("\u0600\u0601\7}\2\2\u0601\u015c\3\2\2\2\u0602\u0603\7") - buf.write("}\2\2\u0603\u0604\b\u00ad\13\2\u0604\u0605\3\2\2\2\u0605") - buf.write("\u0606\b\u00ad\f\2\u0606\u0607\b\u00ad\r\2\u0607\u015e") - buf.write("\3\2\2\2\u0608\u0609\6\u00ae\2\2\u0609\u060a\5\u01b9\u00db") - buf.write("\2\u060a\u0160\3\2\2\2\u060b\u060c\6\u00af\3\2\u060c\u060d") - buf.write("\7$\2\2\u060d\u060e\7$\2\2\u060e\u0162\3\2\2\2\u060f\u0610") - buf.write("\7$\2\2\u0610\u0611\b\u00b0\16\2\u0611\u0612\3\2\2\2\u0612") - buf.write("\u0613\b\u00b0\17\2\u0613\u0164\3\2\2\2\u0614\u0616\6") - buf.write("\u00b1\4\2\u0615\u0617\n\n\2\2\u0616\u0615\3\2\2\2\u0617") - buf.write("\u0618\3\2\2\2\u0618\u0616\3\2\2\2\u0618\u0619\3\2\2\2") - buf.write("\u0619\u0166\3\2\2\2\u061a\u061c\6\u00b2\5\2\u061b\u061d") - buf.write("\n\13\2\2\u061c\u061b\3\2\2\2\u061d\u061e\3\2\2\2\u061e") - buf.write("\u061c\3\2\2\2\u061e\u061f\3\2\2\2\u061f\u0168\3\2\2\2") - buf.write("\u0620\u0621\7\177\2\2\u0621\u0622\7\177\2\2\u0622\u0623") - buf.write("\3\2\2\2\u0623\u0624\b\u00b3\20\2\u0624\u016a\3\2\2\2") - buf.write("\u0625\u0626\7\177\2\2\u0626\u0627\b\u00b4\21\2\u0627") - buf.write("\u0628\3\2\2\2\u0628\u0629\b\u00b4\f\2\u0629\u062a\b\u00b4") - buf.write("\17\2\u062a\u016c\3\2\2\2\u062b\u062d\n\f\2\2\u062c\u062b") - buf.write("\3\2\2\2\u062d\u062e\3\2\2\2\u062e\u062c\3\2\2\2\u062e") - buf.write("\u062f\3\2\2\2\u062f\u016e\3\2\2\2\u0630\u0632\5\u01bf") - buf.write("\u00de\2\u0631\u0630\3\2\2\2\u0632\u0633\3\2\2\2\u0633") - buf.write("\u0631\3\2\2\2\u0633\u0634\3\2\2\2\u0634\u0635\3\2\2\2") - buf.write("\u0635\u0636\b\u00b6\3\2\u0636\u0170\3\2\2\2\u0637\u0639") - buf.write("\t\2\2\2\u0638\u0637\3\2\2\2\u0639\u063a\3\2\2\2\u063a") - buf.write("\u0638\3\2\2\2\u063a\u063b\3\2\2\2\u063b\u063c\3\2\2\2") - buf.write("\u063c\u063d\b\u00b7\22\2\u063d\u0172\3\2\2\2\u063e\u063f") - buf.write("\7v\2\2\u063f\u0640\7t\2\2\u0640\u0641\7w\2\2\u0641\u0642") - buf.write("\7g\2\2\u0642\u0643\3\2\2\2\u0643\u0644\b\u00b8\22\2\u0644") - buf.write("\u0645\b\u00b8\23\2\u0645\u0174\3\2\2\2\u0646\u0647\7") - buf.write("h\2\2\u0647\u0648\7c\2\2\u0648\u0649\7n\2\2\u0649\u064a") - buf.write("\7u\2\2\u064a\u064b\7g\2\2\u064b\u064c\3\2\2\2\u064c\u064d") - buf.write("\b\u00b9\22\2\u064d\u064e\b\u00b9\24\2\u064e\u0176\3\2") - buf.write("\2\2\u064f\u0650\7f\2\2\u0650\u0651\7g\2\2\u0651\u0652") - buf.write("\7h\2\2\u0652\u0653\7k\2\2\u0653\u0654\7p\2\2\u0654\u0655") - buf.write("\7g\2\2\u0655\u0656\3\2\2\2\u0656\u0657\b\u00ba\22\2\u0657") - buf.write("\u0178\3\2\2\2\u0658\u0659\7w\2\2\u0659\u065a\7p\2\2\u065a") - buf.write("\u065b\7f\2\2\u065b\u065c\7g\2\2\u065c\u065d\7h\2\2\u065d") - buf.write("\u065e\3\2\2\2\u065e\u065f\b\u00bb\22\2\u065f\u017a\3") - buf.write("\2\2\2\u0660\u0661\7k\2\2\u0661\u0662\7h\2\2\u0662\u0663") - buf.write("\3\2\2\2\u0663\u0664\b\u00bc\22\2\u0664\u0665\b\u00bc") - buf.write("\25\2\u0665\u017c\3\2\2\2\u0666\u0667\7g\2\2\u0667\u0668") - buf.write("\7n\2\2\u0668\u0669\7k\2\2\u0669\u066a\7h\2\2\u066a\u066b") - buf.write("\3\2\2\2\u066b\u066c\b\u00bd\22\2\u066c\u017e\3\2\2\2") - buf.write("\u066d\u066e\7g\2\2\u066e\u066f\7n\2\2\u066f\u0670\7u") - buf.write("\2\2\u0670\u0671\7g\2\2\u0671\u0672\3\2\2\2\u0672\u0673") - buf.write("\b\u00be\22\2\u0673\u0674\b\u00be\26\2\u0674\u0180\3\2") - buf.write("\2\2\u0675\u0676\7g\2\2\u0676\u0677\7p\2\2\u0677\u0678") - buf.write("\7f\2\2\u0678\u0679\7k\2\2\u0679\u067a\7h\2\2\u067a\u067b") - buf.write("\3\2\2\2\u067b\u067c\b\u00bf\22\2\u067c\u0182\3\2\2\2") - buf.write("\u067d\u067e\7n\2\2\u067e\u067f\7k\2\2\u067f\u0680\7p") - buf.write("\2\2\u0680\u0681\7g\2\2\u0681\u0682\3\2\2\2\u0682\u0683") - buf.write("\b\u00c0\22\2\u0683\u0184\3\2\2\2\u0684\u0685\7g\2\2\u0685") - buf.write("\u0686\7t\2\2\u0686\u0687\7t\2\2\u0687\u0688\7q\2\2\u0688") - buf.write("\u0689\7t\2\2\u0689\u068b\3\2\2\2\u068a\u068c\5\u01bf") - buf.write("\u00de\2\u068b\u068a\3\2\2\2\u068c\u068d\3\2\2\2\u068d") - buf.write("\u068b\3\2\2\2\u068d\u068e\3\2\2\2\u068e\u068f\3\2\2\2") - buf.write("\u068f\u0690\b\u00c1\22\2\u0690\u0691\b\u00c1\27\2\u0691") - buf.write("\u0186\3\2\2\2\u0692\u0693\7y\2\2\u0693\u0694\7c\2\2\u0694") - buf.write("\u0695\7t\2\2\u0695\u0696\7p\2\2\u0696\u0697\7k\2\2\u0697") - buf.write("\u0698\7p\2\2\u0698\u0699\7i\2\2\u0699\u069b\3\2\2\2\u069a") - buf.write("\u069c\5\u01bf\u00de\2\u069b\u069a\3\2\2\2\u069c\u069d") - buf.write("\3\2\2\2\u069d\u069b\3\2\2\2\u069d\u069e\3\2\2\2\u069e") - buf.write("\u069f\3\2\2\2\u069f\u06a0\b\u00c2\22\2\u06a0\u06a1\b") - buf.write("\u00c2\27\2\u06a1\u0188\3\2\2\2\u06a2\u06a3\7t\2\2\u06a3") - buf.write("\u06a4\7g\2\2\u06a4\u06a5\7i\2\2\u06a5\u06a6\7k\2\2\u06a6") - buf.write("\u06a7\7q\2\2\u06a7\u06a8\7p\2\2\u06a8\u06ac\3\2\2\2\u06a9") - buf.write("\u06ab\5\u01bf\u00de\2\u06aa\u06a9\3\2\2\2\u06ab\u06ae") - buf.write("\3\2\2\2\u06ac\u06aa\3\2\2\2\u06ac\u06ad\3\2\2\2\u06ad") - buf.write("\u06af\3\2\2\2\u06ae\u06ac\3\2\2\2\u06af\u06b0\b\u00c3") - buf.write("\22\2\u06b0\u06b1\b\u00c3\27\2\u06b1\u018a\3\2\2\2\u06b2") - buf.write("\u06b3\7g\2\2\u06b3\u06b4\7p\2\2\u06b4\u06b5\7f\2\2\u06b5") - buf.write("\u06b6\7t\2\2\u06b6\u06b7\7g\2\2\u06b7\u06b8\7i\2\2\u06b8") - buf.write("\u06b9\7k\2\2\u06b9\u06ba\7q\2\2\u06ba\u06bb\7p\2\2\u06bb") - buf.write("\u06bf\3\2\2\2\u06bc\u06be\5\u01bf\u00de\2\u06bd\u06bc") - buf.write("\3\2\2\2\u06be\u06c1\3\2\2\2\u06bf\u06bd\3\2\2\2\u06bf") - buf.write("\u06c0\3\2\2\2\u06c0\u06c2\3\2\2\2\u06c1\u06bf\3\2\2\2") - buf.write("\u06c2\u06c3\b\u00c4\22\2\u06c3\u06c4\b\u00c4\27\2\u06c4") - buf.write("\u018c\3\2\2\2\u06c5\u06c6\7r\2\2\u06c6\u06c7\7t\2\2\u06c7") - buf.write("\u06c8\7c\2\2\u06c8\u06c9\7i\2\2\u06c9\u06ca\7o\2\2\u06ca") - buf.write("\u06cb\7c\2\2\u06cb\u06cd\3\2\2\2\u06cc\u06ce\5\u01bf") - buf.write("\u00de\2\u06cd\u06cc\3\2\2\2\u06ce\u06cf\3\2\2\2\u06cf") - buf.write("\u06cd\3\2\2\2\u06cf\u06d0\3\2\2\2\u06d0\u06d1\3\2\2\2") - buf.write("\u06d1\u06d2\b\u00c5\22\2\u06d2\u06d3\b\u00c5\27\2\u06d3") - buf.write("\u018e\3\2\2\2\u06d4\u06d5\7p\2\2\u06d5\u06d6\7w\2\2\u06d6") - buf.write("\u06d7\7n\2\2\u06d7\u06d8\7n\2\2\u06d8\u06d9\7c\2\2\u06d9") - buf.write("\u06da\7d\2\2\u06da\u06db\7n\2\2\u06db\u06dc\7g\2\2\u06dc") - buf.write("\u06de\3\2\2\2\u06dd\u06df\5\u01bf\u00de\2\u06de\u06dd") - buf.write("\3\2\2\2\u06df\u06e0\3\2\2\2\u06e0\u06de\3\2\2\2\u06e0") - buf.write("\u06e1\3\2\2\2\u06e1\u06e2\3\2\2\2\u06e2\u06e3\b\u00c6") - buf.write("\22\2\u06e3\u06e4\b\u00c6\27\2\u06e4\u0190\3\2\2\2\u06e5") - buf.write("\u06e6\7f\2\2\u06e6\u06e7\7g\2\2\u06e7\u06e8\7h\2\2\u06e8") - buf.write("\u06e9\7c\2\2\u06e9\u06ea\7w\2\2\u06ea\u06eb\7n\2\2\u06eb") - buf.write("\u06ec\7v\2\2\u06ec\u06ed\3\2\2\2\u06ed\u06ee\b\u00c7") - buf.write("\22\2\u06ee\u06ef\b\u00c7\30\2\u06ef\u0192\3\2\2\2\u06f0") - buf.write("\u06f1\7j\2\2\u06f1\u06f2\7k\2\2\u06f2\u06f3\7f\2\2\u06f3") - buf.write("\u06f4\7f\2\2\u06f4\u06f5\7g\2\2\u06f5\u06f6\7p\2\2\u06f6") - buf.write("\u06f7\3\2\2\2\u06f7\u06f8\b\u00c8\22\2\u06f8\u0194\3") - buf.write("\2\2\2\u06f9\u06fa\7*\2\2\u06fa\u06fb\3\2\2\2\u06fb\u06fc") - buf.write("\b\u00c9\22\2\u06fc\u06fd\b\u00c9\31\2\u06fd\u0196\3\2") - buf.write("\2\2\u06fe\u06ff\7+\2\2\u06ff\u0700\3\2\2\2\u0700\u0701") - buf.write("\b\u00ca\22\2\u0701\u0702\b\u00ca\32\2\u0702\u0198\3\2") - buf.write("\2\2\u0703\u0704\7#\2\2\u0704\u0705\3\2\2\2\u0705\u0706") - buf.write("\b\u00cb\22\2\u0706\u0707\b\u00cb\33\2\u0707\u019a\3\2") - buf.write("\2\2\u0708\u0709\7?\2\2\u0709\u070a\7?\2\2\u070a\u070b") - buf.write("\3\2\2\2\u070b\u070c\b\u00cc\22\2\u070c\u070d\b\u00cc") - buf.write("\34\2\u070d\u019c\3\2\2\2\u070e\u070f\7#\2\2\u070f\u0710") - buf.write("\7?\2\2\u0710\u0711\3\2\2\2\u0711\u0712\b\u00cd\22\2\u0712") - buf.write("\u0713\b\u00cd\35\2\u0713\u019e\3\2\2\2\u0714\u0715\7") - buf.write("(\2\2\u0715\u0716\7(\2\2\u0716\u0717\3\2\2\2\u0717\u0718") - buf.write("\b\u00ce\22\2\u0718\u0719\b\u00ce\36\2\u0719\u01a0\3\2") - buf.write("\2\2\u071a\u071b\7~\2\2\u071b\u071c\7~\2\2\u071c\u071d") - buf.write("\3\2\2\2\u071d\u071e\b\u00cf\22\2\u071e\u071f\b\u00cf") - buf.write("\37\2\u071f\u01a2\3\2\2\2\u0720\u0724\7$\2\2\u0721\u0723") - buf.write("\n\r\2\2\u0722\u0721\3\2\2\2\u0723\u0726\3\2\2\2\u0724") - buf.write("\u0722\3\2\2\2\u0724\u0725\3\2\2\2\u0725\u0727\3\2\2\2") - buf.write("\u0726\u0724\3\2\2\2\u0727\u0728\7$\2\2\u0728\u0729\3") - buf.write("\2\2\2\u0729\u072a\b\u00d0\22\2\u072a\u072b\b\u00d0 \2") - buf.write("\u072b\u01a4\3\2\2\2\u072c\u072d\5\u01c3\u00e0\2\u072d") - buf.write("\u072e\3\2\2\2\u072e\u072f\b\u00d1\22\2\u072f\u01a6\3") - buf.write("\2\2\2\u0730\u0731\7\61\2\2\u0731\u0732\7\61\2\2\u0732") - buf.write("\u0736\3\2\2\2\u0733\u0735\n\16\2\2\u0734\u0733\3\2\2") - buf.write("\2\u0735\u0738\3\2\2\2\u0736\u0734\3\2\2\2\u0736\u0737") - buf.write("\3\2\2\2\u0737\u0739\3\2\2\2\u0738\u0736\3\2\2\2\u0739") - buf.write("\u073a\b\u00d2\2\2\u073a\u073b\b\u00d2!\2\u073b\u01a8") - buf.write("\3\2\2\2\u073c\u073d\5\u01bd\u00dd\2\u073d\u073e\3\2\2") - buf.write("\2\u073e\u073f\b\u00d3\22\2\u073f\u0740\b\u00d3\"\2\u0740") - buf.write("\u01aa\3\2\2\2\u0741\u0743\n\16\2\2\u0742\u0741\3\2\2") - buf.write("\2\u0743\u0744\3\2\2\2\u0744\u0742\3\2\2\2\u0744\u0745") - buf.write("\3\2\2\2\u0745\u0746\3\2\2\2\u0746\u0747\b\u00d4\22\2") - buf.write("\u0747\u01ac\3\2\2\2\u0748\u0749\5\u01bd\u00dd\2\u0749") - buf.write("\u074a\3\2\2\2\u074a\u074b\b\u00d5\22\2\u074b\u074c\b") - buf.write("\u00d5#\2\u074c\u074d\b\u00d5\"\2\u074d\u01ae\3\2\2\2") - buf.write("\u074e\u074f\n\16\2\2\u074f\u01b0\3\2\2\2\u0750\u0751") - buf.write("\t\16\2\2\u0751\u01b2\3\2\2\2\u0752\u0754\t\17\2\2\u0753") - buf.write("\u0752\3\2\2\2\u0753\u0754\3\2\2\2\u0754\u0755\3\2\2\2") - buf.write("\u0755\u075b\t\20\2\2\u0756\u0758\t\20\2\2\u0757\u0756") - buf.write("\3\2\2\2\u0757\u0758\3\2\2\2\u0758\u0759\3\2\2\2\u0759") - buf.write("\u075b\t\17\2\2\u075a\u0753\3\2\2\2\u075a\u0757\3\2\2") - buf.write("\2\u075b\u01b4\3\2\2\2\u075c\u075e\t\21\2\2\u075d\u075f") - buf.write("\t\22\2\2\u075e\u075d\3\2\2\2\u075e\u075f\3\2\2\2\u075f") - buf.write("\u0760\3\2\2\2\u0760\u076a\t\2\2\2\u0761\u0763\7a\2\2") - buf.write("\u0762\u0761\3\2\2\2\u0763\u0766\3\2\2\2\u0764\u0762\3") - buf.write("\2\2\2\u0764\u0765\3\2\2\2\u0765\u0767\3\2\2\2\u0766\u0764") - buf.write("\3\2\2\2\u0767\u0769\t\2\2\2\u0768\u0764\3\2\2\2\u0769") - buf.write("\u076c\3\2\2\2\u076a\u0768\3\2\2\2\u076a\u076b\3\2\2\2") - buf.write("\u076b\u01b6\3\2\2\2\u076c\u076a\3\2\2\2\u076d\u0771\5") - buf.write("\u01b9\u00db\2\u076e\u0771\5\u01bb\u00dc\2\u076f\u0771") - buf.write("\5\u01d3\u00e8\2\u0770\u076d\3\2\2\2\u0770\u076e\3\2\2") - buf.write("\2\u0770\u076f\3\2\2\2\u0771\u01b8\3\2\2\2\u0772\u0773") - buf.write("\7^\2\2\u0773\u0789\7)\2\2\u0774\u0775\7^\2\2\u0775\u0789") - buf.write("\7$\2\2\u0776\u0777\7^\2\2\u0777\u0789\7^\2\2\u0778\u0779") - buf.write("\7^\2\2\u0779\u0789\7\62\2\2\u077a\u077b\7^\2\2\u077b") - buf.write("\u0789\7c\2\2\u077c\u077d\7^\2\2\u077d\u0789\7d\2\2\u077e") - buf.write("\u077f\7^\2\2\u077f\u0789\7h\2\2\u0780\u0781\7^\2\2\u0781") - buf.write("\u0789\7p\2\2\u0782\u0783\7^\2\2\u0783\u0789\7t\2\2\u0784") - buf.write("\u0785\7^\2\2\u0785\u0789\7v\2\2\u0786\u0787\7^\2\2\u0787") - buf.write("\u0789\7x\2\2\u0788\u0772\3\2\2\2\u0788\u0774\3\2\2\2") - buf.write("\u0788\u0776\3\2\2\2\u0788\u0778\3\2\2\2\u0788\u077a\3") - buf.write("\2\2\2\u0788\u077c\3\2\2\2\u0788\u077e\3\2\2\2\u0788\u0780") - buf.write("\3\2\2\2\u0788\u0782\3\2\2\2\u0788\u0784\3\2\2\2\u0788") - buf.write("\u0786\3\2\2\2\u0789\u01ba\3\2\2\2\u078a\u078b\7^\2\2") - buf.write("\u078b\u078c\7z\2\2\u078c\u078d\3\2\2\2\u078d\u07a4\5") - buf.write("\u01d5\u00e9\2\u078e\u078f\7^\2\2\u078f\u0790\7z\2\2\u0790") - buf.write("\u0791\3\2\2\2\u0791\u0792\5\u01d5\u00e9\2\u0792\u0793") - buf.write("\5\u01d5\u00e9\2\u0793\u07a4\3\2\2\2\u0794\u0795\7^\2") - buf.write("\2\u0795\u0796\7z\2\2\u0796\u0797\3\2\2\2\u0797\u0798") - buf.write("\5\u01d5\u00e9\2\u0798\u0799\5\u01d5\u00e9\2\u0799\u079a") - buf.write("\5\u01d5\u00e9\2\u079a\u07a4\3\2\2\2\u079b\u079c\7^\2") - buf.write("\2\u079c\u079d\7z\2\2\u079d\u079e\3\2\2\2\u079e\u079f") - buf.write("\5\u01d5\u00e9\2\u079f\u07a0\5\u01d5\u00e9\2\u07a0\u07a1") - buf.write("\5\u01d5\u00e9\2\u07a1\u07a2\5\u01d5\u00e9\2\u07a2\u07a4") - buf.write("\3\2\2\2\u07a3\u078a\3\2\2\2\u07a3\u078e\3\2\2\2\u07a3") - buf.write("\u0794\3\2\2\2\u07a3\u079b\3\2\2\2\u07a4\u01bc\3\2\2\2") - buf.write("\u07a5\u07a6\7\17\2\2\u07a6\u07a9\7\f\2\2\u07a7\u07a9") - buf.write("\t\16\2\2\u07a8\u07a5\3\2\2\2\u07a8\u07a7\3\2\2\2\u07a9") - buf.write("\u01be\3\2\2\2\u07aa\u07ad\5\u01c1\u00df\2\u07ab\u07ad") - buf.write("\t\23\2\2\u07ac\u07aa\3\2\2\2\u07ac\u07ab\3\2\2\2\u07ad") - buf.write("\u01c0\3\2\2\2\u07ae\u07af\t\24\2\2\u07af\u01c2\3\2\2") - buf.write("\2\u07b0\u07b4\5\u01c5\u00e1\2\u07b1\u07b3\5\u01c7\u00e2") - buf.write("\2\u07b2\u07b1\3\2\2\2\u07b3\u07b6\3\2\2\2\u07b4\u07b2") - buf.write("\3\2\2\2\u07b4\u07b5\3\2\2\2\u07b5\u01c4\3\2\2\2\u07b6") - buf.write("\u07b4\3\2\2\2\u07b7\u07ba\5\u01c9\u00e3\2\u07b8\u07ba") - buf.write("\7a\2\2\u07b9\u07b7\3\2\2\2\u07b9\u07b8\3\2\2\2\u07ba") - buf.write("\u01c6\3\2\2\2\u07bb\u07c1\5\u01c9\u00e3\2\u07bc\u07c1") - buf.write("\5\u01cb\u00e4\2\u07bd\u07c1\5\u01cd\u00e5\2\u07be\u07c1") - buf.write("\5\u01cf\u00e6\2\u07bf\u07c1\5\u01d1\u00e7\2\u07c0\u07bb") - buf.write("\3\2\2\2\u07c0\u07bc\3\2\2\2\u07c0\u07bd\3\2\2\2\u07c0") - buf.write("\u07be\3\2\2\2\u07c0\u07bf\3\2\2\2\u07c1\u01c8\3\2\2\2") - buf.write("\u07c2\u07ca\5\u01d7\u00ea\2\u07c3\u07ca\5\u01d9\u00eb") - buf.write("\2\u07c4\u07ca\5\u01db\u00ec\2\u07c5\u07ca\5\u01dd\u00ed") - buf.write("\2\u07c6\u07ca\5\u01df\u00ee\2\u07c7\u07ca\5\u01e1\u00ef") - buf.write("\2\u07c8\u07ca\5\u01d3\u00e8\2\u07c9\u07c2\3\2\2\2\u07c9") - buf.write("\u07c3\3\2\2\2\u07c9\u07c4\3\2\2\2\u07c9\u07c5\3\2\2\2") - buf.write("\u07c9\u07c6\3\2\2\2\u07c9\u07c7\3\2\2\2\u07c9\u07c8\3") - buf.write("\2\2\2\u07ca\u01ca\3\2\2\2\u07cb\u07ce\5\u01eb\u00f4\2") - buf.write("\u07cc\u07ce\5\u01d3\u00e8\2\u07cd\u07cb\3\2\2\2\u07cd") - buf.write("\u07cc\3\2\2\2\u07ce\u01cc\3\2\2\2\u07cf\u07d2\5\u01e9") - buf.write("\u00f3\2\u07d0\u07d2\5\u01d3\u00e8\2\u07d1\u07cf\3\2\2") - buf.write("\2\u07d1\u07d0\3\2\2\2\u07d2\u01ce\3\2\2\2\u07d3\u07d7") - buf.write("\5\u01e3\u00f0\2\u07d4\u07d7\5\u01e5\u00f1\2\u07d5\u07d7") - buf.write("\5\u01d3\u00e8\2\u07d6\u07d3\3\2\2\2\u07d6\u07d4\3\2\2") - buf.write("\2\u07d6\u07d5\3\2\2\2\u07d7\u01d0\3\2\2\2\u07d8\u07db") - buf.write("\5\u01e7\u00f2\2\u07d9\u07db\5\u01d3\u00e8\2\u07da\u07d8") - buf.write("\3\2\2\2\u07da\u07d9\3\2\2\2\u07db\u01d2\3\2\2\2\u07dc") - buf.write("\u07dd\7^\2\2\u07dd\u07de\7w\2\2\u07de\u07df\3\2\2\2\u07df") - buf.write("\u07e0\5\u01d5\u00e9\2\u07e0\u07e1\5\u01d5\u00e9\2\u07e1") - buf.write("\u07e2\5\u01d5\u00e9\2\u07e2\u07e3\5\u01d5\u00e9\2\u07e3") - buf.write("\u07f1\3\2\2\2\u07e4\u07e5\7^\2\2\u07e5\u07e6\7W\2\2\u07e6") - buf.write("\u07e7\3\2\2\2\u07e7\u07e8\5\u01d5\u00e9\2\u07e8\u07e9") - buf.write("\5\u01d5\u00e9\2\u07e9\u07ea\5\u01d5\u00e9\2\u07ea\u07eb") - buf.write("\5\u01d5\u00e9\2\u07eb\u07ec\5\u01d5\u00e9\2\u07ec\u07ed") - buf.write("\5\u01d5\u00e9\2\u07ed\u07ee\5\u01d5\u00e9\2\u07ee\u07ef") - buf.write("\5\u01d5\u00e9\2\u07ef\u07f1\3\2\2\2\u07f0\u07dc\3\2\2") - buf.write("\2\u07f0\u07e4\3\2\2\2\u07f1\u01d4\3\2\2\2\u07f2\u07f4") - buf.write("\t\25\2\2\u07f3\u07f2\3\2\2\2\u07f4\u01d6\3\2\2\2\u07f5") - buf.write("\u07f6\t\26\2\2\u07f6\u01d8\3\2\2\2\u07f7\u07f8\t\27\2") - buf.write("\2\u07f8\u01da\3\2\2\2\u07f9\u07fa\t\30\2\2\u07fa\u01dc") - buf.write("\3\2\2\2\u07fb\u07fc\t\31\2\2\u07fc\u01de\3\2\2\2\u07fd") - buf.write("\u07fe\t\32\2\2\u07fe\u01e0\3\2\2\2\u07ff\u0800\t\33\2") - buf.write("\2\u0800\u01e2\3\2\2\2\u0801\u0802\4\u0302\u0312\2\u0802") - buf.write("\u01e4\3\2\2\2\u0803\u0804\t\34\2\2\u0804\u01e6\3\2\2") - buf.write("\2\u0805\u0806\t\35\2\2\u0806\u01e8\3\2\2\2\u0807\u0808") - buf.write("\t\36\2\2\u0808\u01ea\3\2\2\2\u0809\u080a\t\37\2\2\u080a") - buf.write("\u01ec\3\2\2\2O\2\3\4\5\6\u01f8\u0204\u0212\u021d\u0227") - buf.write("\u0229\u04d5\u04dd\u04e3\u04e7\u04eb\u04f3\u04f9\u04fd") - buf.write("\u0504\u050a\u050d\u0514\u051a\u051d\u0523\u0529\u052c") - buf.write("\u0533\u0539\u053d\u0540\u0546\u054c\u0552\u0554\u0556") - buf.write("\u055b\u0562\u0564\u056f\u0571\u0618\u061e\u062e\u0633") - buf.write("\u063a\u068d\u069d\u06ac\u06bf\u06cf\u06e0\u0724\u0736") - buf.write("\u0744\u0753\u0757\u075a\u075e\u0764\u076a\u0770\u0788") - buf.write("\u07a3\u07a8\u07ac\u07b4\u07b9\u07c0\u07c9\u07cd\u07d1") - buf.write("\u07d6\u07da\u07f0\u07f3$\2\4\2\2\3\2\4\5\2\3{\2\7\3\2") - buf.write("\3|\3\3}\4\3~\5\3\u0085\6\3\u00ad\7\b\2\2\7\2\2\3\u00b0") - buf.write("\b\6\2\2\t\u00b5\2\3\u00b4\t\2\5\2\ta\2\t+\2\t\65\2\t") - buf.write("%\2\4\6\2\t\37\2\t\u0082\2\t\u0083\2\t\u0090\2\t\u009d") - buf.write("\2\t\u009e\2\t\u009a\2\t\u009b\2\t\\\2\t\6\2\4\2\2\t\u00c5") - buf.write("\2") - return buf.getvalue() - +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO +if "." in __name__: + from .CSharpLexerBase import CSharpLexerBase +else: + from CSharpLexerBase import CSharpLexerBase +def serializedATN(): + return [ + 4,0,198,2069,6,-1,6,-1,6,-1,6,-1,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,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,1,0, + 1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,5,1,503,8,1,10,1,12,1,506,9,1,1, + 1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,5, + 3,524,8,3,10,3,12,3,527,9,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4, + 5,4,538,8,4,10,4,12,4,541,9,4,1,4,1,4,1,5,1,5,1,5,1,5,5,5,549,8, + 5,10,5,12,5,552,9,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,4,6,561,8,6,11,6, + 12,6,562,1,6,1,6,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,8,1,8,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,11,1,12,1,12,1,12,1,13,1,13, + 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14, + 1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,17, + 1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,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,22,1,22,1,22, + 1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,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,29,1,29,1,29,1,29, + 1,29,1,30,1,30,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,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,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,34,1,34, + 1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37, + 1,37,1,37,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,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,42,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44, + 1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47, + 1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49, + 1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,52, + 1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,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,55,1,56,1,56,1,56,1,56, + 1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,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,61,1,61,1,61,1,61, + 1,61,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63, + 1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65, + 1,65,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67, + 1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,70, + 1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73, + 1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75, + 1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76, + 1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78, + 1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80, + 1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82, + 1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84, + 1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86, + 1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88, + 1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90, + 1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91, + 1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,94, + 1,94,1,94,1,94,1,94,1,94,1,95,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,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98, + 1,99,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,103, + 1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104, + 1,104,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,110, + 1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111, + 1,112,1,112,1,112,1,112,1,112,1,112,1,113,3,113,1248,8,113,1,113, + 1,113,1,114,1,114,5,114,1254,8,114,10,114,12,114,1257,9,114,1,114, + 5,114,1260,8,114,10,114,12,114,1263,9,114,1,114,3,114,1266,8,114, + 1,114,1,114,3,114,1270,8,114,1,114,1,114,1,115,1,115,5,115,1276, + 8,115,10,115,12,115,1279,9,115,1,115,5,115,1282,8,115,10,115,12, + 115,1285,9,115,1,115,3,115,1288,8,115,1,116,1,116,1,116,5,116,1293, + 8,116,10,116,12,116,1296,9,116,1,116,4,116,1299,8,116,11,116,12, + 116,1300,1,116,3,116,1304,8,116,1,117,1,117,1,117,5,117,1309,8,117, + 10,117,12,117,1312,9,117,1,117,4,117,1315,8,117,11,117,12,117,1316, + 1,117,3,117,1320,8,117,1,118,1,118,5,118,1324,8,118,10,118,12,118, + 1327,9,118,1,118,5,118,1330,8,118,10,118,12,118,1333,9,118,3,118, + 1335,8,118,1,118,1,118,1,118,5,118,1340,8,118,10,118,12,118,1343, + 9,118,1,118,5,118,1346,8,118,10,118,12,118,1349,9,118,1,118,3,118, + 1352,8,118,1,118,3,118,1355,8,118,1,118,1,118,5,118,1359,8,118,10, + 118,12,118,1362,9,118,1,118,5,118,1365,8,118,10,118,12,118,1368, + 9,118,1,118,1,118,1,118,3,118,1373,8,118,3,118,1375,8,118,3,118, + 1377,8,118,1,119,1,119,1,119,3,119,1382,8,119,1,119,1,119,1,120, + 1,120,1,120,5,120,1389,8,120,10,120,12,120,1392,9,120,1,120,1,120, + 1,121,1,121,1,121,1,121,1,121,1,121,5,121,1402,8,121,10,121,12,121, + 1405,9,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122, + 1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124, + 1,125,1,125,1,125,1,126,1,126,1,127,1,127,1,128,1,128,1,129,1,129, + 1,130,1,130,1,131,1,131,1,132,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,139,1,139,1,140, + 1,140,1,141,1,141,1,142,1,142,1,143,1,143,1,144,1,144,1,145,1,145, + 1,146,1,146,1,147,1,147,1,148,1,148,1,148,1,149,1,149,1,149,1,150, + 1,150,1,150,1,151,1,151,1,151,1,152,1,152,1,152,1,153,1,153,1,153, + 1,154,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,164,1,164,1,164, + 1,165,1,165,1,165,1,166,1,166,1,166,1,167,1,167,1,167,1,168,1,168, + 1,168,1,168,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,171,1,171, + 1,171,1,172,1,172,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,174, + 1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,175,1,176,1,176,4,176, + 1569,8,176,11,176,12,176,1570,1,177,1,177,4,177,1575,8,177,11,177, + 12,177,1576,1,178,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179, + 1,179,1,179,1,180,4,180,1591,8,180,11,180,12,180,1592,1,181,4,181, + 1596,8,181,11,181,12,181,1597,1,181,1,181,1,182,4,182,1603,8,182, + 11,182,12,182,1604,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,183, + 1,183,1,183,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184, + 1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,186,1,186, + 1,186,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187, + 1,187,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,189,1,189,1,189, + 1,189,1,189,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,190,1,190, + 1,190,1,190,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,4,192,1686,8,192,11,192,12,192,1687, + 1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193, + 1,193,4,193,1702,8,193,11,193,12,193,1703,1,193,1,193,1,193,1,194, + 1,194,1,194,1,194,1,194,1,194,1,194,1,194,5,194,1717,8,194,10,194, + 12,194,1720,9,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195,1,195, + 1,195,1,195,1,195,1,195,1,195,1,195,5,195,1736,8,195,10,195,12,195, + 1739,9,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,196,1,196, + 1,196,1,196,4,196,1752,8,196,11,196,12,196,1753,1,196,1,196,1,196, + 1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,4,197, + 1769,8,197,11,197,12,197,1770,1,197,1,197,1,197,1,198,1,198,1,198, + 1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,199,1,199,1,199, + 1,199,1,199,1,199,1,199,1,199,1,199,1,200,1,200,1,200,1,200,1,200, + 1,201,1,201,1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202,1,203, + 1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,204, + 1,205,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,206, + 1,206,1,207,1,207,5,207,1837,8,207,10,207,12,207,1840,9,207,1,207, + 1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,209,1,209,1,209, + 1,209,5,209,1855,8,209,10,209,12,209,1858,9,209,1,209,1,209,1,209, + 1,210,1,210,1,210,1,210,1,210,1,211,4,211,1869,8,211,11,211,12,211, + 1870,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,213,1,213, + 1,214,1,214,1,215,3,215,1886,8,215,1,215,1,215,3,215,1890,8,215, + 1,215,3,215,1893,8,215,1,216,1,216,3,216,1897,8,216,1,216,1,216, + 5,216,1901,8,216,10,216,12,216,1904,9,216,1,216,5,216,1907,8,216, + 10,216,12,216,1910,9,216,1,217,1,217,1,217,3,217,1915,8,217,1,218, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,3,218, + 1939,8,218,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219, + 1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219,1,219, + 1,219,1,219,1,219,1,219,1,219,3,219,1966,8,219,1,220,1,220,1,220, + 3,220,1971,8,220,1,221,1,221,3,221,1975,8,221,1,222,1,222,1,223, + 1,223,5,223,1981,8,223,10,223,12,223,1984,9,223,1,224,1,224,3,224, + 1988,8,224,1,225,1,225,1,225,1,225,1,225,3,225,1995,8,225,1,226, + 1,226,1,226,1,226,1,226,1,226,1,226,3,226,2004,8,226,1,227,1,227, + 3,227,2008,8,227,1,228,1,228,3,228,2012,8,228,1,229,1,229,1,229, + 3,229,2017,8,229,1,230,1,230,3,230,2021,8,230,1,231,1,231,1,231, + 1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,231,1,231,1,231,1,231,1,231,3,231,2043,8,231,1,232,3,232, + 2046,8,232,1,233,1,233,1,234,1,234,1,235,1,235,1,236,1,236,1,237, + 1,237,1,238,1,238,1,239,1,239,1,240,1,240,1,241,1,241,1,242,1,242, + 1,243,1,243,2,525,550,0,244,5,1,7,2,9,3,11,4,13,5,15,6,17,7,19,8, + 21,9,23,10,25,11,27,12,29,13,31,14,33,15,35,16,37,17,39,18,41,19, + 43,20,45,21,47,22,49,23,51,24,53,25,55,26,57,27,59,28,61,29,63,30, + 65,31,67,32,69,33,71,34,73,35,75,36,77,37,79,38,81,39,83,40,85,41, + 87,42,89,43,91,44,93,45,95,46,97,47,99,48,101,49,103,50,105,51,107, + 52,109,53,111,54,113,55,115,56,117,57,119,58,121,59,123,60,125,61, + 127,62,129,63,131,64,133,65,135,66,137,67,139,68,141,69,143,70,145, + 71,147,72,149,73,151,74,153,75,155,76,157,77,159,78,161,79,163,80, + 165,81,167,82,169,83,171,84,173,85,175,86,177,87,179,88,181,89,183, + 90,185,91,187,92,189,93,191,94,193,95,195,96,197,97,199,98,201,99, + 203,100,205,101,207,102,209,103,211,104,213,105,215,106,217,107, + 219,108,221,109,223,110,225,111,227,112,229,113,231,114,233,115, + 235,116,237,117,239,118,241,119,243,120,245,121,247,122,249,123, + 251,124,253,125,255,126,257,127,259,128,261,129,263,130,265,131, + 267,132,269,133,271,134,273,135,275,136,277,137,279,138,281,139, + 283,140,285,141,287,142,289,143,291,144,293,145,295,146,297,147, + 299,148,301,149,303,150,305,151,307,152,309,153,311,154,313,155, + 315,156,317,157,319,158,321,159,323,160,325,161,327,162,329,163, + 331,164,333,165,335,166,337,167,339,168,341,169,343,170,345,171, + 347,172,349,173,351,174,353,175,355,176,357,177,359,178,361,198, + 363,179,365,180,367,181,369,182,371,0,373,0,375,183,377,184,379, + 0,381,185,383,0,385,186,387,187,389,188,391,189,393,190,395,191, + 397,192,399,193,401,0,403,194,405,0,407,0,409,0,411,0,413,0,415, + 0,417,0,419,0,421,195,423,0,425,196,427,197,429,0,431,0,433,0,435, + 0,437,0,439,0,441,0,443,0,445,0,447,0,449,0,451,0,453,0,455,0,457, + 0,459,0,461,0,463,0,465,0,467,0,469,0,471,0,473,0,475,0,477,0,479, + 0,481,0,483,0,485,0,487,0,489,0,491,0,5,0,1,2,3,4,31,1,0,47,47,1, + 0,48,57,2,0,88,88,120,120,2,0,66,66,98,98,1,0,48,49,6,0,68,68,70, + 70,77,77,100,100,102,102,109,109,6,0,10,10,13,13,39,39,92,92,133, + 133,8232,8233,6,0,10,10,13,13,34,34,92,92,133,133,8232,8233,1,0, + 34,34,3,0,34,34,92,92,123,123,2,0,34,34,123,123,1,0,125,125,5,0, + 10,10,13,13,34,34,133,133,8232,8233,4,0,10,10,13,13,133,133,8232, + 8233,2,0,76,76,108,108,2,0,85,85,117,117,2,0,69,69,101,101,2,0,43, + 43,45,45,2,0,9,9,11,12,9,0,32,32,160,160,5760,5760,6158,6158,8192, + 8198,8200,8202,8239,8239,8287,8287,12288,12288,3,0,48,57,65,70,97, + 102,82,0,65,90,192,214,216,222,256,310,313,327,330,381,385,386,388, + 395,398,401,403,404,406,408,412,413,415,416,418,425,428,435,437, + 444,452,461,463,475,478,494,497,500,502,504,506,562,570,571,573, + 574,577,582,584,590,880,882,886,895,902,906,908,929,931,939,975, + 980,984,1006,1012,1015,1017,1018,1021,1071,1120,1152,1162,1229,1232, + 1326,1329,1366,4256,4293,4295,4301,7680,7828,7838,7934,7944,7951, + 7960,7965,7976,7983,7992,7999,8008,8013,8025,8031,8040,8047,8120, + 8123,8136,8139,8152,8155,8168,8172,8184,8187,8450,8455,8459,8461, + 8464,8466,8469,8477,8484,8493,8496,8499,8510,8511,8517,8579,11264, + 11310,11360,11364,11367,11376,11378,11381,11390,11392,11394,11490, + 11499,11501,11506,42560,42562,42604,42624,42650,42786,42798,42802, + 42862,42873,42886,42891,42893,42896,42898,42902,42925,42928,42929, + 65313,65338,81,0,97,122,181,246,248,255,257,375,378,384,387,389, + 392,402,405,411,414,417,419,421,424,429,432,436,438,447,454,460, + 462,499,501,505,507,569,572,578,583,659,661,687,881,883,887,893, + 912,974,976,977,981,983,985,1011,1013,1119,1121,1153,1163,1215,1218, + 1327,1377,1415,7424,7467,7531,7543,7545,7578,7681,7837,7839,7943, + 7952,7957,7968,7975,7984,7991,8000,8005,8016,8023,8032,8039,8048, + 8061,8064,8071,8080,8087,8096,8103,8112,8116,8118,8119,8126,8132, + 8134,8135,8144,8147,8150,8151,8160,8167,8178,8180,8182,8183,8458, + 8467,8495,8505,8508,8509,8518,8521,8526,8580,11312,11358,11361,11372, + 11377,11387,11393,11500,11502,11507,11520,11557,11559,11565,42561, + 42605,42625,42651,42787,42801,42803,42872,42874,42876,42879,42887, + 42892,42894,42897,42901,42903,42921,43002,43866,43876,43877,64256, + 64262,64275,64279,65345,65370,6,0,453,459,498,8079,8088,8095,8104, + 8111,8124,8140,8188,8188,33,0,688,705,710,721,736,740,748,750,884, + 890,1369,1600,1765,1766,2036,2037,2042,2074,2084,2088,2417,3654, + 3782,4348,6103,6211,6823,7293,7468,7530,7544,7615,8305,8319,8336, + 8348,11388,11389,11631,11823,12293,12341,12347,12542,40981,42237, + 42508,42623,42652,42653,42775,42783,42864,42888,43000,43001,43471, + 43494,43632,43741,43763,43764,43868,43871,65392,65439,234,0,170, + 186,443,451,660,1514,1520,1522,1568,1599,1601,1610,1646,1647,1649, + 1747,1749,1788,1791,1808,1810,1839,1869,1957,1969,2026,2048,2069, + 2112,2136,2208,2226,2308,2361,2365,2384,2392,2401,2418,2432,2437, + 2444,2447,2448,2451,2472,2474,2480,2482,2489,2493,2510,2524,2525, + 2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610, + 2611,2613,2614,2616,2617,2649,2652,2654,2676,2693,2701,2703,2705, + 2707,2728,2730,2736,2738,2739,2741,2745,2749,2768,2784,2785,2821, + 2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2913, + 2929,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2986,2990, + 3001,3024,3084,3086,3088,3090,3112,3114,3129,3133,3212,3214,3216, + 3218,3240,3242,3251,3253,3257,3261,3294,3296,3297,3313,3314,3333, + 3340,3342,3344,3346,3386,3389,3406,3424,3425,3450,3455,3461,3478, + 3482,3505,3507,3515,3517,3526,3585,3632,3634,3635,3648,3653,3713, + 3714,3716,3722,3725,3735,3737,3743,3745,3747,3749,3751,3754,3755, + 3757,3760,3762,3763,3773,3780,3804,3807,3840,3911,3913,3948,3976, + 3980,4096,4138,4159,4181,4186,4189,4193,4208,4213,4225,4238,4346, + 4349,4680,4682,4685,4688,4694,4696,4701,4704,4744,4746,4749,4752, + 4784,4786,4789,4792,4798,4800,4805,4808,4822,4824,4880,4882,4885, + 4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792, + 5866,5873,5880,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996, + 5998,6000,6016,6067,6108,6210,6212,6263,6272,6312,6314,6389,6400, + 6430,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740, + 6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245, + 7247,7258,7287,7401,7404,7406,7409,7413,7414,8501,8504,11568,11623, + 11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712, + 11718,11720,11726,11728,11734,11736,11742,12294,12348,12353,12438, + 12447,12538,12543,12589,12593,12686,12704,12730,12784,12799,13312, + 19893,19968,40908,40960,40980,40982,42124,42192,42231,42240,42507, + 42512,42527,42538,42539,42606,42725,42999,43009,43011,43013,43015, + 43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43301, + 43312,43334,43360,43388,43396,43442,43488,43492,43495,43503,43514, + 43518,43520,43560,43584,43586,43588,43595,43616,43631,43633,43638, + 43642,43695,43697,43709,43712,43714,43739,43740,43744,43754,43762, + 43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002, + 44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64285, + 64296,64298,64310,64312,64316,64318,64433,64467,64829,64848,64911, + 64914,64967,65008,65019,65136,65140,65142,65276,65382,65391,65393, + 65437,65440,65470,65474,65479,65482,65487,65490,65495,65498,65500, + 2,0,5870,5872,8544,8559,3,0,2307,2307,2366,2368,2377,2380,3,0,173, + 173,1536,1539,1757,1757,6,0,95,95,8255,8256,8276,8276,65075,65076, + 65101,65103,65343,65343,37,0,48,57,1632,1641,1776,1785,1984,1993, + 2406,2415,2534,2543,2662,2671,2790,2799,2918,2927,3046,3055,3174, + 3183,3302,3311,3430,3439,3558,3567,3664,3673,3792,3801,3872,3881, + 4160,4169,4240,4249,6112,6121,6160,6169,6470,6479,6608,6617,6784, + 6793,6800,6809,6992,7001,7088,7097,7232,7241,7248,7257,42528,42537, + 43216,43225,43264,43273,43472,43481,43504,43513,43600,43609,44016, + 44025,65296,65305,2125,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,0,201,1,0,0,0, + 0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1, + 0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0, + 221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0, + 0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,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,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0, + 0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,1,347,1,0,0,0,1,349,1, + 0,0,0,1,351,1,0,0,0,1,353,1,0,0,0,1,355,1,0,0,0,1,357,1,0,0,0,1, + 359,1,0,0,0,2,361,1,0,0,0,2,363,1,0,0,0,2,365,1,0,0,0,3,367,1,0, + 0,0,3,369,1,0,0,0,3,371,1,0,0,0,3,373,1,0,0,0,3,375,1,0,0,0,3,377, + 1,0,0,0,3,379,1,0,0,0,3,381,1,0,0,0,3,383,1,0,0,0,3,385,1,0,0,0, + 3,387,1,0,0,0,3,389,1,0,0,0,3,391,1,0,0,0,3,393,1,0,0,0,3,395,1, + 0,0,0,3,397,1,0,0,0,3,399,1,0,0,0,3,401,1,0,0,0,3,403,1,0,0,0,3, + 405,1,0,0,0,3,407,1,0,0,0,3,409,1,0,0,0,3,411,1,0,0,0,3,413,1,0, + 0,0,3,415,1,0,0,0,3,417,1,0,0,0,3,419,1,0,0,0,3,421,1,0,0,0,3,423, + 1,0,0,0,3,425,1,0,0,0,4,427,1,0,0,0,4,429,1,0,0,0,5,493,1,0,0,0, + 7,497,1,0,0,0,9,509,1,0,0,0,11,517,1,0,0,0,13,533,1,0,0,0,15,544, + 1,0,0,0,17,560,1,0,0,0,19,566,1,0,0,0,21,571,1,0,0,0,23,580,1,0, + 0,0,25,584,1,0,0,0,27,590,1,0,0,0,29,600,1,0,0,0,31,603,1,0,0,0, + 33,613,1,0,0,0,35,619,1,0,0,0,37,625,1,0,0,0,39,630,1,0,0,0,41,635, + 1,0,0,0,43,641,1,0,0,0,45,644,1,0,0,0,47,649,1,0,0,0,49,654,1,0, + 0,0,51,660,1,0,0,0,53,665,1,0,0,0,55,673,1,0,0,0,57,679,1,0,0,0, + 59,685,1,0,0,0,61,694,1,0,0,0,63,702,1,0,0,0,65,710,1,0,0,0,67,719, + 1,0,0,0,69,730,1,0,0,0,71,733,1,0,0,0,73,740,1,0,0,0,75,748,1,0, + 0,0,77,753,1,0,0,0,79,758,1,0,0,0,81,765,1,0,0,0,83,771,1,0,0,0, + 85,780,1,0,0,0,87,787,1,0,0,0,89,793,1,0,0,0,91,801,1,0,0,0,93,807, + 1,0,0,0,95,813,1,0,0,0,97,817,1,0,0,0,99,825,1,0,0,0,101,830,1,0, + 0,0,103,834,1,0,0,0,105,839,1,0,0,0,107,845,1,0,0,0,109,848,1,0, + 0,0,111,857,1,0,0,0,113,860,1,0,0,0,115,864,1,0,0,0,117,874,1,0, + 0,0,119,883,1,0,0,0,121,888,1,0,0,0,123,891,1,0,0,0,125,896,1,0, + 0,0,127,900,1,0,0,0,129,905,1,0,0,0,131,910,1,0,0,0,133,917,1,0, + 0,0,135,927,1,0,0,0,137,931,1,0,0,0,139,936,1,0,0,0,141,943,1,0, + 0,0,143,946,1,0,0,0,145,955,1,0,0,0,147,963,1,0,0,0,149,967,1,0, + 0,0,151,976,1,0,0,0,153,983,1,0,0,0,155,991,1,0,0,0,157,999,1,0, + 0,0,159,1009,1,0,0,0,161,1016,1,0,0,0,163,1025,1,0,0,0,165,1029, + 1,0,0,0,167,1036,1,0,0,0,169,1043,1,0,0,0,171,1049,1,0,0,0,173,1056, + 1,0,0,0,175,1063,1,0,0,0,177,1067,1,0,0,0,179,1073,1,0,0,0,181,1080, + 1,0,0,0,183,1091,1,0,0,0,185,1098,1,0,0,0,187,1105,1,0,0,0,189,1112, + 1,0,0,0,191,1119,1,0,0,0,193,1124,1,0,0,0,195,1130,1,0,0,0,197,1135, + 1,0,0,0,199,1139,1,0,0,0,201,1146,1,0,0,0,203,1151,1,0,0,0,205,1157, + 1,0,0,0,207,1167,1,0,0,0,209,1177,1,0,0,0,211,1184,1,0,0,0,213,1191, + 1,0,0,0,215,1197,1,0,0,0,217,1201,1,0,0,0,219,1209,1,0,0,0,221,1214, + 1,0,0,0,223,1223,1,0,0,0,225,1228,1,0,0,0,227,1234,1,0,0,0,229,1240, + 1,0,0,0,231,1247,1,0,0,0,233,1251,1,0,0,0,235,1273,1,0,0,0,237,1289, + 1,0,0,0,239,1305,1,0,0,0,241,1376,1,0,0,0,243,1378,1,0,0,0,245,1385, + 1,0,0,0,247,1395,1,0,0,0,249,1408,1,0,0,0,251,1415,1,0,0,0,253,1423, + 1,0,0,0,255,1426,1,0,0,0,257,1429,1,0,0,0,259,1431,1,0,0,0,261,1433, + 1,0,0,0,263,1435,1,0,0,0,265,1437,1,0,0,0,267,1439,1,0,0,0,269,1441, + 1,0,0,0,271,1444,1,0,0,0,273,1446,1,0,0,0,275,1448,1,0,0,0,277,1450, + 1,0,0,0,279,1452,1,0,0,0,281,1454,1,0,0,0,283,1456,1,0,0,0,285,1458, + 1,0,0,0,287,1460,1,0,0,0,289,1462,1,0,0,0,291,1464,1,0,0,0,293,1466, + 1,0,0,0,295,1468,1,0,0,0,297,1470,1,0,0,0,299,1472,1,0,0,0,301,1474, + 1,0,0,0,303,1477,1,0,0,0,305,1480,1,0,0,0,307,1483,1,0,0,0,309,1486, + 1,0,0,0,311,1489,1,0,0,0,313,1492,1,0,0,0,315,1495,1,0,0,0,317,1498, + 1,0,0,0,319,1501,1,0,0,0,321,1504,1,0,0,0,323,1507,1,0,0,0,325,1510, + 1,0,0,0,327,1513,1,0,0,0,329,1516,1,0,0,0,331,1519,1,0,0,0,333,1522, + 1,0,0,0,335,1525,1,0,0,0,337,1528,1,0,0,0,339,1531,1,0,0,0,341,1534, + 1,0,0,0,343,1538,1,0,0,0,345,1542,1,0,0,0,347,1545,1,0,0,0,349,1548, + 1,0,0,0,351,1554,1,0,0,0,353,1557,1,0,0,0,355,1561,1,0,0,0,357,1566, + 1,0,0,0,359,1572,1,0,0,0,361,1578,1,0,0,0,363,1583,1,0,0,0,365,1590, + 1,0,0,0,367,1595,1,0,0,0,369,1602,1,0,0,0,371,1608,1,0,0,0,373,1616, + 1,0,0,0,375,1625,1,0,0,0,377,1634,1,0,0,0,379,1642,1,0,0,0,381,1648, + 1,0,0,0,383,1655,1,0,0,0,385,1663,1,0,0,0,387,1671,1,0,0,0,389,1678, + 1,0,0,0,391,1692,1,0,0,0,393,1708,1,0,0,0,395,1724,1,0,0,0,397,1743, + 1,0,0,0,399,1758,1,0,0,0,401,1775,1,0,0,0,403,1786,1,0,0,0,405,1795, + 1,0,0,0,407,1800,1,0,0,0,409,1805,1,0,0,0,411,1810,1,0,0,0,413,1816, + 1,0,0,0,415,1822,1,0,0,0,417,1828,1,0,0,0,419,1834,1,0,0,0,421,1846, + 1,0,0,0,423,1850,1,0,0,0,425,1862,1,0,0,0,427,1868,1,0,0,0,429,1874, + 1,0,0,0,431,1880,1,0,0,0,433,1882,1,0,0,0,435,1892,1,0,0,0,437,1894, + 1,0,0,0,439,1914,1,0,0,0,441,1938,1,0,0,0,443,1965,1,0,0,0,445,1970, + 1,0,0,0,447,1974,1,0,0,0,449,1976,1,0,0,0,451,1978,1,0,0,0,453,1987, + 1,0,0,0,455,1994,1,0,0,0,457,2003,1,0,0,0,459,2007,1,0,0,0,461,2011, + 1,0,0,0,463,2016,1,0,0,0,465,2020,1,0,0,0,467,2042,1,0,0,0,469,2045, + 1,0,0,0,471,2047,1,0,0,0,473,2049,1,0,0,0,475,2051,1,0,0,0,477,2053, + 1,0,0,0,479,2055,1,0,0,0,481,2057,1,0,0,0,483,2059,1,0,0,0,485,2061, + 1,0,0,0,487,2063,1,0,0,0,489,2065,1,0,0,0,491,2067,1,0,0,0,493,494, + 5,239,0,0,494,495,5,187,0,0,495,496,5,191,0,0,496,6,1,0,0,0,497, + 498,5,47,0,0,498,499,5,47,0,0,499,500,5,47,0,0,500,504,1,0,0,0,501, + 503,3,431,213,0,502,501,1,0,0,0,503,506,1,0,0,0,504,502,1,0,0,0, + 504,505,1,0,0,0,505,507,1,0,0,0,506,504,1,0,0,0,507,508,6,1,0,0, + 508,8,1,0,0,0,509,510,5,47,0,0,510,511,5,42,0,0,511,512,5,42,0,0, + 512,513,5,42,0,0,513,514,5,47,0,0,514,515,1,0,0,0,515,516,6,2,0, + 0,516,10,1,0,0,0,517,518,5,47,0,0,518,519,5,42,0,0,519,520,5,42, + 0,0,520,521,1,0,0,0,521,525,8,0,0,0,522,524,9,0,0,0,523,522,1,0, + 0,0,524,527,1,0,0,0,525,526,1,0,0,0,525,523,1,0,0,0,526,528,1,0, + 0,0,527,525,1,0,0,0,528,529,5,42,0,0,529,530,5,47,0,0,530,531,1, + 0,0,0,531,532,6,3,0,0,532,12,1,0,0,0,533,534,5,47,0,0,534,535,5, + 47,0,0,535,539,1,0,0,0,536,538,3,431,213,0,537,536,1,0,0,0,538,541, + 1,0,0,0,539,537,1,0,0,0,539,540,1,0,0,0,540,542,1,0,0,0,541,539, + 1,0,0,0,542,543,6,4,0,0,543,14,1,0,0,0,544,545,5,47,0,0,545,546, + 5,42,0,0,546,550,1,0,0,0,547,549,9,0,0,0,548,547,1,0,0,0,549,552, + 1,0,0,0,550,551,1,0,0,0,550,548,1,0,0,0,551,553,1,0,0,0,552,550, + 1,0,0,0,553,554,5,42,0,0,554,555,5,47,0,0,555,556,1,0,0,0,556,557, + 6,5,0,0,557,16,1,0,0,0,558,561,3,447,221,0,559,561,3,445,220,0,560, + 558,1,0,0,0,560,559,1,0,0,0,561,562,1,0,0,0,562,560,1,0,0,0,562, + 563,1,0,0,0,563,564,1,0,0,0,564,565,6,6,1,0,565,18,1,0,0,0,566,567, + 5,35,0,0,567,568,1,0,0,0,568,569,6,7,2,0,569,570,6,7,3,0,570,20, + 1,0,0,0,571,572,5,97,0,0,572,573,5,98,0,0,573,574,5,115,0,0,574, + 575,5,116,0,0,575,576,5,114,0,0,576,577,5,97,0,0,577,578,5,99,0, + 0,578,579,5,116,0,0,579,22,1,0,0,0,580,581,5,97,0,0,581,582,5,100, + 0,0,582,583,5,100,0,0,583,24,1,0,0,0,584,585,5,97,0,0,585,586,5, + 108,0,0,586,587,5,105,0,0,587,588,5,97,0,0,588,589,5,115,0,0,589, + 26,1,0,0,0,590,591,5,95,0,0,591,592,5,95,0,0,592,593,5,97,0,0,593, + 594,5,114,0,0,594,595,5,103,0,0,595,596,5,108,0,0,596,597,5,105, + 0,0,597,598,5,115,0,0,598,599,5,116,0,0,599,28,1,0,0,0,600,601,5, + 97,0,0,601,602,5,115,0,0,602,30,1,0,0,0,603,604,5,97,0,0,604,605, + 5,115,0,0,605,606,5,99,0,0,606,607,5,101,0,0,607,608,5,110,0,0,608, + 609,5,100,0,0,609,610,5,105,0,0,610,611,5,110,0,0,611,612,5,103, + 0,0,612,32,1,0,0,0,613,614,5,97,0,0,614,615,5,115,0,0,615,616,5, + 121,0,0,616,617,5,110,0,0,617,618,5,99,0,0,618,34,1,0,0,0,619,620, + 5,97,0,0,620,621,5,119,0,0,621,622,5,97,0,0,622,623,5,105,0,0,623, + 624,5,116,0,0,624,36,1,0,0,0,625,626,5,98,0,0,626,627,5,97,0,0,627, + 628,5,115,0,0,628,629,5,101,0,0,629,38,1,0,0,0,630,631,5,98,0,0, + 631,632,5,111,0,0,632,633,5,111,0,0,633,634,5,108,0,0,634,40,1,0, + 0,0,635,636,5,98,0,0,636,637,5,114,0,0,637,638,5,101,0,0,638,639, + 5,97,0,0,639,640,5,107,0,0,640,42,1,0,0,0,641,642,5,98,0,0,642,643, + 5,121,0,0,643,44,1,0,0,0,644,645,5,98,0,0,645,646,5,121,0,0,646, + 647,5,116,0,0,647,648,5,101,0,0,648,46,1,0,0,0,649,650,5,99,0,0, + 650,651,5,97,0,0,651,652,5,115,0,0,652,653,5,101,0,0,653,48,1,0, + 0,0,654,655,5,99,0,0,655,656,5,97,0,0,656,657,5,116,0,0,657,658, + 5,99,0,0,658,659,5,104,0,0,659,50,1,0,0,0,660,661,5,99,0,0,661,662, + 5,104,0,0,662,663,5,97,0,0,663,664,5,114,0,0,664,52,1,0,0,0,665, + 666,5,99,0,0,666,667,5,104,0,0,667,668,5,101,0,0,668,669,5,99,0, + 0,669,670,5,107,0,0,670,671,5,101,0,0,671,672,5,100,0,0,672,54,1, + 0,0,0,673,674,5,99,0,0,674,675,5,108,0,0,675,676,5,97,0,0,676,677, + 5,115,0,0,677,678,5,115,0,0,678,56,1,0,0,0,679,680,5,99,0,0,680, + 681,5,111,0,0,681,682,5,110,0,0,682,683,5,115,0,0,683,684,5,116, + 0,0,684,58,1,0,0,0,685,686,5,99,0,0,686,687,5,111,0,0,687,688,5, + 110,0,0,688,689,5,116,0,0,689,690,5,105,0,0,690,691,5,110,0,0,691, + 692,5,117,0,0,692,693,5,101,0,0,693,60,1,0,0,0,694,695,5,100,0,0, + 695,696,5,101,0,0,696,697,5,99,0,0,697,698,5,105,0,0,698,699,5,109, + 0,0,699,700,5,97,0,0,700,701,5,108,0,0,701,62,1,0,0,0,702,703,5, + 100,0,0,703,704,5,101,0,0,704,705,5,102,0,0,705,706,5,97,0,0,706, + 707,5,117,0,0,707,708,5,108,0,0,708,709,5,116,0,0,709,64,1,0,0,0, + 710,711,5,100,0,0,711,712,5,101,0,0,712,713,5,108,0,0,713,714,5, + 101,0,0,714,715,5,103,0,0,715,716,5,97,0,0,716,717,5,116,0,0,717, + 718,5,101,0,0,718,66,1,0,0,0,719,720,5,100,0,0,720,721,5,101,0,0, + 721,722,5,115,0,0,722,723,5,99,0,0,723,724,5,101,0,0,724,725,5,110, + 0,0,725,726,5,100,0,0,726,727,5,105,0,0,727,728,5,110,0,0,728,729, + 5,103,0,0,729,68,1,0,0,0,730,731,5,100,0,0,731,732,5,111,0,0,732, + 70,1,0,0,0,733,734,5,100,0,0,734,735,5,111,0,0,735,736,5,117,0,0, + 736,737,5,98,0,0,737,738,5,108,0,0,738,739,5,101,0,0,739,72,1,0, + 0,0,740,741,5,100,0,0,741,742,5,121,0,0,742,743,5,110,0,0,743,744, + 5,97,0,0,744,745,5,109,0,0,745,746,5,105,0,0,746,747,5,99,0,0,747, + 74,1,0,0,0,748,749,5,101,0,0,749,750,5,108,0,0,750,751,5,115,0,0, + 751,752,5,101,0,0,752,76,1,0,0,0,753,754,5,101,0,0,754,755,5,110, + 0,0,755,756,5,117,0,0,756,757,5,109,0,0,757,78,1,0,0,0,758,759,5, + 101,0,0,759,760,5,113,0,0,760,761,5,117,0,0,761,762,5,97,0,0,762, + 763,5,108,0,0,763,764,5,115,0,0,764,80,1,0,0,0,765,766,5,101,0,0, + 766,767,5,118,0,0,767,768,5,101,0,0,768,769,5,110,0,0,769,770,5, + 116,0,0,770,82,1,0,0,0,771,772,5,101,0,0,772,773,5,120,0,0,773,774, + 5,112,0,0,774,775,5,108,0,0,775,776,5,105,0,0,776,777,5,99,0,0,777, + 778,5,105,0,0,778,779,5,116,0,0,779,84,1,0,0,0,780,781,5,101,0,0, + 781,782,5,120,0,0,782,783,5,116,0,0,783,784,5,101,0,0,784,785,5, + 114,0,0,785,786,5,110,0,0,786,86,1,0,0,0,787,788,5,102,0,0,788,789, + 5,97,0,0,789,790,5,108,0,0,790,791,5,115,0,0,791,792,5,101,0,0,792, + 88,1,0,0,0,793,794,5,102,0,0,794,795,5,105,0,0,795,796,5,110,0,0, + 796,797,5,97,0,0,797,798,5,108,0,0,798,799,5,108,0,0,799,800,5,121, + 0,0,800,90,1,0,0,0,801,802,5,102,0,0,802,803,5,105,0,0,803,804,5, + 120,0,0,804,805,5,101,0,0,805,806,5,100,0,0,806,92,1,0,0,0,807,808, + 5,102,0,0,808,809,5,108,0,0,809,810,5,111,0,0,810,811,5,97,0,0,811, + 812,5,116,0,0,812,94,1,0,0,0,813,814,5,102,0,0,814,815,5,111,0,0, + 815,816,5,114,0,0,816,96,1,0,0,0,817,818,5,102,0,0,818,819,5,111, + 0,0,819,820,5,114,0,0,820,821,5,101,0,0,821,822,5,97,0,0,822,823, + 5,99,0,0,823,824,5,104,0,0,824,98,1,0,0,0,825,826,5,102,0,0,826, + 827,5,114,0,0,827,828,5,111,0,0,828,829,5,109,0,0,829,100,1,0,0, + 0,830,831,5,103,0,0,831,832,5,101,0,0,832,833,5,116,0,0,833,102, + 1,0,0,0,834,835,5,103,0,0,835,836,5,111,0,0,836,837,5,116,0,0,837, + 838,5,111,0,0,838,104,1,0,0,0,839,840,5,103,0,0,840,841,5,114,0, + 0,841,842,5,111,0,0,842,843,5,117,0,0,843,844,5,112,0,0,844,106, + 1,0,0,0,845,846,5,105,0,0,846,847,5,102,0,0,847,108,1,0,0,0,848, + 849,5,105,0,0,849,850,5,109,0,0,850,851,5,112,0,0,851,852,5,108, + 0,0,852,853,5,105,0,0,853,854,5,99,0,0,854,855,5,105,0,0,855,856, + 5,116,0,0,856,110,1,0,0,0,857,858,5,105,0,0,858,859,5,110,0,0,859, + 112,1,0,0,0,860,861,5,105,0,0,861,862,5,110,0,0,862,863,5,116,0, + 0,863,114,1,0,0,0,864,865,5,105,0,0,865,866,5,110,0,0,866,867,5, + 116,0,0,867,868,5,101,0,0,868,869,5,114,0,0,869,870,5,102,0,0,870, + 871,5,97,0,0,871,872,5,99,0,0,872,873,5,101,0,0,873,116,1,0,0,0, + 874,875,5,105,0,0,875,876,5,110,0,0,876,877,5,116,0,0,877,878,5, + 101,0,0,878,879,5,114,0,0,879,880,5,110,0,0,880,881,5,97,0,0,881, + 882,5,108,0,0,882,118,1,0,0,0,883,884,5,105,0,0,884,885,5,110,0, + 0,885,886,5,116,0,0,886,887,5,111,0,0,887,120,1,0,0,0,888,889,5, + 105,0,0,889,890,5,115,0,0,890,122,1,0,0,0,891,892,5,106,0,0,892, + 893,5,111,0,0,893,894,5,105,0,0,894,895,5,110,0,0,895,124,1,0,0, + 0,896,897,5,108,0,0,897,898,5,101,0,0,898,899,5,116,0,0,899,126, + 1,0,0,0,900,901,5,108,0,0,901,902,5,111,0,0,902,903,5,99,0,0,903, + 904,5,107,0,0,904,128,1,0,0,0,905,906,5,108,0,0,906,907,5,111,0, + 0,907,908,5,110,0,0,908,909,5,103,0,0,909,130,1,0,0,0,910,911,5, + 110,0,0,911,912,5,97,0,0,912,913,5,109,0,0,913,914,5,101,0,0,914, + 915,5,111,0,0,915,916,5,102,0,0,916,132,1,0,0,0,917,918,5,110,0, + 0,918,919,5,97,0,0,919,920,5,109,0,0,920,921,5,101,0,0,921,922,5, + 115,0,0,922,923,5,112,0,0,923,924,5,97,0,0,924,925,5,99,0,0,925, + 926,5,101,0,0,926,134,1,0,0,0,927,928,5,110,0,0,928,929,5,101,0, + 0,929,930,5,119,0,0,930,136,1,0,0,0,931,932,5,110,0,0,932,933,5, + 117,0,0,933,934,5,108,0,0,934,935,5,108,0,0,935,138,1,0,0,0,936, + 937,5,111,0,0,937,938,5,98,0,0,938,939,5,106,0,0,939,940,5,101,0, + 0,940,941,5,99,0,0,941,942,5,116,0,0,942,140,1,0,0,0,943,944,5,111, + 0,0,944,945,5,110,0,0,945,142,1,0,0,0,946,947,5,111,0,0,947,948, + 5,112,0,0,948,949,5,101,0,0,949,950,5,114,0,0,950,951,5,97,0,0,951, + 952,5,116,0,0,952,953,5,111,0,0,953,954,5,114,0,0,954,144,1,0,0, + 0,955,956,5,111,0,0,956,957,5,114,0,0,957,958,5,100,0,0,958,959, + 5,101,0,0,959,960,5,114,0,0,960,961,5,98,0,0,961,962,5,121,0,0,962, + 146,1,0,0,0,963,964,5,111,0,0,964,965,5,117,0,0,965,966,5,116,0, + 0,966,148,1,0,0,0,967,968,5,111,0,0,968,969,5,118,0,0,969,970,5, + 101,0,0,970,971,5,114,0,0,971,972,5,114,0,0,972,973,5,105,0,0,973, + 974,5,100,0,0,974,975,5,101,0,0,975,150,1,0,0,0,976,977,5,112,0, + 0,977,978,5,97,0,0,978,979,5,114,0,0,979,980,5,97,0,0,980,981,5, + 109,0,0,981,982,5,115,0,0,982,152,1,0,0,0,983,984,5,112,0,0,984, + 985,5,97,0,0,985,986,5,114,0,0,986,987,5,116,0,0,987,988,5,105,0, + 0,988,989,5,97,0,0,989,990,5,108,0,0,990,154,1,0,0,0,991,992,5,112, + 0,0,992,993,5,114,0,0,993,994,5,105,0,0,994,995,5,118,0,0,995,996, + 5,97,0,0,996,997,5,116,0,0,997,998,5,101,0,0,998,156,1,0,0,0,999, + 1000,5,112,0,0,1000,1001,5,114,0,0,1001,1002,5,111,0,0,1002,1003, + 5,116,0,0,1003,1004,5,101,0,0,1004,1005,5,99,0,0,1005,1006,5,116, + 0,0,1006,1007,5,101,0,0,1007,1008,5,100,0,0,1008,158,1,0,0,0,1009, + 1010,5,112,0,0,1010,1011,5,117,0,0,1011,1012,5,98,0,0,1012,1013, + 5,108,0,0,1013,1014,5,105,0,0,1014,1015,5,99,0,0,1015,160,1,0,0, + 0,1016,1017,5,114,0,0,1017,1018,5,101,0,0,1018,1019,5,97,0,0,1019, + 1020,5,100,0,0,1020,1021,5,111,0,0,1021,1022,5,110,0,0,1022,1023, + 5,108,0,0,1023,1024,5,121,0,0,1024,162,1,0,0,0,1025,1026,5,114,0, + 0,1026,1027,5,101,0,0,1027,1028,5,102,0,0,1028,164,1,0,0,0,1029, + 1030,5,114,0,0,1030,1031,5,101,0,0,1031,1032,5,109,0,0,1032,1033, + 5,111,0,0,1033,1034,5,118,0,0,1034,1035,5,101,0,0,1035,166,1,0,0, + 0,1036,1037,5,114,0,0,1037,1038,5,101,0,0,1038,1039,5,116,0,0,1039, + 1040,5,117,0,0,1040,1041,5,114,0,0,1041,1042,5,110,0,0,1042,168, + 1,0,0,0,1043,1044,5,115,0,0,1044,1045,5,98,0,0,1045,1046,5,121,0, + 0,1046,1047,5,116,0,0,1047,1048,5,101,0,0,1048,170,1,0,0,0,1049, + 1050,5,115,0,0,1050,1051,5,101,0,0,1051,1052,5,97,0,0,1052,1053, + 5,108,0,0,1053,1054,5,101,0,0,1054,1055,5,100,0,0,1055,172,1,0,0, + 0,1056,1057,5,115,0,0,1057,1058,5,101,0,0,1058,1059,5,108,0,0,1059, + 1060,5,101,0,0,1060,1061,5,99,0,0,1061,1062,5,116,0,0,1062,174,1, + 0,0,0,1063,1064,5,115,0,0,1064,1065,5,101,0,0,1065,1066,5,116,0, + 0,1066,176,1,0,0,0,1067,1068,5,115,0,0,1068,1069,5,104,0,0,1069, + 1070,5,111,0,0,1070,1071,5,114,0,0,1071,1072,5,116,0,0,1072,178, + 1,0,0,0,1073,1074,5,115,0,0,1074,1075,5,105,0,0,1075,1076,5,122, + 0,0,1076,1077,5,101,0,0,1077,1078,5,111,0,0,1078,1079,5,102,0,0, + 1079,180,1,0,0,0,1080,1081,5,115,0,0,1081,1082,5,116,0,0,1082,1083, + 5,97,0,0,1083,1084,5,99,0,0,1084,1085,5,107,0,0,1085,1086,5,97,0, + 0,1086,1087,5,108,0,0,1087,1088,5,108,0,0,1088,1089,5,111,0,0,1089, + 1090,5,99,0,0,1090,182,1,0,0,0,1091,1092,5,115,0,0,1092,1093,5,116, + 0,0,1093,1094,5,97,0,0,1094,1095,5,116,0,0,1095,1096,5,105,0,0,1096, + 1097,5,99,0,0,1097,184,1,0,0,0,1098,1099,5,115,0,0,1099,1100,5,116, + 0,0,1100,1101,5,114,0,0,1101,1102,5,105,0,0,1102,1103,5,110,0,0, + 1103,1104,5,103,0,0,1104,186,1,0,0,0,1105,1106,5,115,0,0,1106,1107, + 5,116,0,0,1107,1108,5,114,0,0,1108,1109,5,117,0,0,1109,1110,5,99, + 0,0,1110,1111,5,116,0,0,1111,188,1,0,0,0,1112,1113,5,115,0,0,1113, + 1114,5,119,0,0,1114,1115,5,105,0,0,1115,1116,5,116,0,0,1116,1117, + 5,99,0,0,1117,1118,5,104,0,0,1118,190,1,0,0,0,1119,1120,5,116,0, + 0,1120,1121,5,104,0,0,1121,1122,5,105,0,0,1122,1123,5,115,0,0,1123, + 192,1,0,0,0,1124,1125,5,116,0,0,1125,1126,5,104,0,0,1126,1127,5, + 114,0,0,1127,1128,5,111,0,0,1128,1129,5,119,0,0,1129,194,1,0,0,0, + 1130,1131,5,116,0,0,1131,1132,5,114,0,0,1132,1133,5,117,0,0,1133, + 1134,5,101,0,0,1134,196,1,0,0,0,1135,1136,5,116,0,0,1136,1137,5, + 114,0,0,1137,1138,5,121,0,0,1138,198,1,0,0,0,1139,1140,5,116,0,0, + 1140,1141,5,121,0,0,1141,1142,5,112,0,0,1142,1143,5,101,0,0,1143, + 1144,5,111,0,0,1144,1145,5,102,0,0,1145,200,1,0,0,0,1146,1147,5, + 117,0,0,1147,1148,5,105,0,0,1148,1149,5,110,0,0,1149,1150,5,116, + 0,0,1150,202,1,0,0,0,1151,1152,5,117,0,0,1152,1153,5,108,0,0,1153, + 1154,5,111,0,0,1154,1155,5,110,0,0,1155,1156,5,103,0,0,1156,204, + 1,0,0,0,1157,1158,5,117,0,0,1158,1159,5,110,0,0,1159,1160,5,99,0, + 0,1160,1161,5,104,0,0,1161,1162,5,101,0,0,1162,1163,5,99,0,0,1163, + 1164,5,107,0,0,1164,1165,5,101,0,0,1165,1166,5,100,0,0,1166,206, + 1,0,0,0,1167,1168,5,117,0,0,1168,1169,5,110,0,0,1169,1170,5,109, + 0,0,1170,1171,5,97,0,0,1171,1172,5,110,0,0,1172,1173,5,97,0,0,1173, + 1174,5,103,0,0,1174,1175,5,101,0,0,1175,1176,5,100,0,0,1176,208, + 1,0,0,0,1177,1178,5,117,0,0,1178,1179,5,110,0,0,1179,1180,5,115, + 0,0,1180,1181,5,97,0,0,1181,1182,5,102,0,0,1182,1183,5,101,0,0,1183, + 210,1,0,0,0,1184,1185,5,117,0,0,1185,1186,5,115,0,0,1186,1187,5, + 104,0,0,1187,1188,5,111,0,0,1188,1189,5,114,0,0,1189,1190,5,116, + 0,0,1190,212,1,0,0,0,1191,1192,5,117,0,0,1192,1193,5,115,0,0,1193, + 1194,5,105,0,0,1194,1195,5,110,0,0,1195,1196,5,103,0,0,1196,214, + 1,0,0,0,1197,1198,5,118,0,0,1198,1199,5,97,0,0,1199,1200,5,114,0, + 0,1200,216,1,0,0,0,1201,1202,5,118,0,0,1202,1203,5,105,0,0,1203, + 1204,5,114,0,0,1204,1205,5,116,0,0,1205,1206,5,117,0,0,1206,1207, + 5,97,0,0,1207,1208,5,108,0,0,1208,218,1,0,0,0,1209,1210,5,118,0, + 0,1210,1211,5,111,0,0,1211,1212,5,105,0,0,1212,1213,5,100,0,0,1213, + 220,1,0,0,0,1214,1215,5,118,0,0,1215,1216,5,111,0,0,1216,1217,5, + 108,0,0,1217,1218,5,97,0,0,1218,1219,5,116,0,0,1219,1220,5,105,0, + 0,1220,1221,5,108,0,0,1221,1222,5,101,0,0,1222,222,1,0,0,0,1223, + 1224,5,119,0,0,1224,1225,5,104,0,0,1225,1226,5,101,0,0,1226,1227, + 5,110,0,0,1227,224,1,0,0,0,1228,1229,5,119,0,0,1229,1230,5,104,0, + 0,1230,1231,5,101,0,0,1231,1232,5,114,0,0,1232,1233,5,101,0,0,1233, + 226,1,0,0,0,1234,1235,5,119,0,0,1235,1236,5,104,0,0,1236,1237,5, + 105,0,0,1237,1238,5,108,0,0,1238,1239,5,101,0,0,1239,228,1,0,0,0, + 1240,1241,5,121,0,0,1241,1242,5,105,0,0,1242,1243,5,101,0,0,1243, + 1244,5,108,0,0,1244,1245,5,100,0,0,1245,230,1,0,0,0,1246,1248,5, + 64,0,0,1247,1246,1,0,0,0,1247,1248,1,0,0,0,1248,1249,1,0,0,0,1249, + 1250,3,451,223,0,1250,232,1,0,0,0,1251,1261,7,1,0,0,1252,1254,5, + 95,0,0,1253,1252,1,0,0,0,1254,1257,1,0,0,0,1255,1253,1,0,0,0,1255, + 1256,1,0,0,0,1256,1258,1,0,0,0,1257,1255,1,0,0,0,1258,1260,7,1,0, + 0,1259,1255,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,3,435,215, + 0,1265,1264,1,0,0,0,1265,1266,1,0,0,0,1266,1267,1,0,0,0,1267,1269, + 5,46,0,0,1268,1270,5,64,0,0,1269,1268,1,0,0,0,1269,1270,1,0,0,0, + 1270,1271,1,0,0,0,1271,1272,3,451,223,0,1272,234,1,0,0,0,1273,1283, + 7,1,0,0,1274,1276,5,95,0,0,1275,1274,1,0,0,0,1276,1279,1,0,0,0,1277, + 1275,1,0,0,0,1277,1278,1,0,0,0,1278,1280,1,0,0,0,1279,1277,1,0,0, + 0,1280,1282,7,1,0,0,1281,1277,1,0,0,0,1282,1285,1,0,0,0,1283,1281, + 1,0,0,0,1283,1284,1,0,0,0,1284,1287,1,0,0,0,1285,1283,1,0,0,0,1286, + 1288,3,435,215,0,1287,1286,1,0,0,0,1287,1288,1,0,0,0,1288,236,1, + 0,0,0,1289,1290,5,48,0,0,1290,1298,7,2,0,0,1291,1293,5,95,0,0,1292, + 1291,1,0,0,0,1293,1296,1,0,0,0,1294,1292,1,0,0,0,1294,1295,1,0,0, + 0,1295,1297,1,0,0,0,1296,1294,1,0,0,0,1297,1299,3,469,232,0,1298, + 1294,1,0,0,0,1299,1300,1,0,0,0,1300,1298,1,0,0,0,1300,1301,1,0,0, + 0,1301,1303,1,0,0,0,1302,1304,3,435,215,0,1303,1302,1,0,0,0,1303, + 1304,1,0,0,0,1304,238,1,0,0,0,1305,1306,5,48,0,0,1306,1314,7,3,0, + 0,1307,1309,5,95,0,0,1308,1307,1,0,0,0,1309,1312,1,0,0,0,1310,1308, + 1,0,0,0,1310,1311,1,0,0,0,1311,1313,1,0,0,0,1312,1310,1,0,0,0,1313, + 1315,7,4,0,0,1314,1310,1,0,0,0,1315,1316,1,0,0,0,1316,1314,1,0,0, + 0,1316,1317,1,0,0,0,1317,1319,1,0,0,0,1318,1320,3,435,215,0,1319, + 1318,1,0,0,0,1319,1320,1,0,0,0,1320,240,1,0,0,0,1321,1331,7,1,0, + 0,1322,1324,5,95,0,0,1323,1322,1,0,0,0,1324,1327,1,0,0,0,1325,1323, + 1,0,0,0,1325,1326,1,0,0,0,1326,1328,1,0,0,0,1327,1325,1,0,0,0,1328, + 1330,7,1,0,0,1329,1325,1,0,0,0,1330,1333,1,0,0,0,1331,1329,1,0,0, + 0,1331,1332,1,0,0,0,1332,1335,1,0,0,0,1333,1331,1,0,0,0,1334,1321, + 1,0,0,0,1334,1335,1,0,0,0,1335,1336,1,0,0,0,1336,1337,5,46,0,0,1337, + 1347,7,1,0,0,1338,1340,5,95,0,0,1339,1338,1,0,0,0,1340,1343,1,0, + 0,0,1341,1339,1,0,0,0,1341,1342,1,0,0,0,1342,1344,1,0,0,0,1343,1341, + 1,0,0,0,1344,1346,7,1,0,0,1345,1341,1,0,0,0,1346,1349,1,0,0,0,1347, + 1345,1,0,0,0,1347,1348,1,0,0,0,1348,1351,1,0,0,0,1349,1347,1,0,0, + 0,1350,1352,3,437,216,0,1351,1350,1,0,0,0,1351,1352,1,0,0,0,1352, + 1354,1,0,0,0,1353,1355,7,5,0,0,1354,1353,1,0,0,0,1354,1355,1,0,0, + 0,1355,1377,1,0,0,0,1356,1366,7,1,0,0,1357,1359,5,95,0,0,1358,1357, + 1,0,0,0,1359,1362,1,0,0,0,1360,1358,1,0,0,0,1360,1361,1,0,0,0,1361, + 1363,1,0,0,0,1362,1360,1,0,0,0,1363,1365,7,1,0,0,1364,1360,1,0,0, + 0,1365,1368,1,0,0,0,1366,1364,1,0,0,0,1366,1367,1,0,0,0,1367,1374, + 1,0,0,0,1368,1366,1,0,0,0,1369,1375,7,5,0,0,1370,1372,3,437,216, + 0,1371,1373,7,5,0,0,1372,1371,1,0,0,0,1372,1373,1,0,0,0,1373,1375, + 1,0,0,0,1374,1369,1,0,0,0,1374,1370,1,0,0,0,1375,1377,1,0,0,0,1376, + 1334,1,0,0,0,1376,1356,1,0,0,0,1377,242,1,0,0,0,1378,1381,5,39,0, + 0,1379,1382,8,6,0,0,1380,1382,3,439,217,0,1381,1379,1,0,0,0,1381, + 1380,1,0,0,0,1382,1383,1,0,0,0,1383,1384,5,39,0,0,1384,244,1,0,0, + 0,1385,1390,5,34,0,0,1386,1389,8,7,0,0,1387,1389,3,439,217,0,1388, + 1386,1,0,0,0,1388,1387,1,0,0,0,1389,1392,1,0,0,0,1390,1388,1,0,0, + 0,1390,1391,1,0,0,0,1391,1393,1,0,0,0,1392,1390,1,0,0,0,1393,1394, + 5,34,0,0,1394,246,1,0,0,0,1395,1396,5,64,0,0,1396,1397,5,34,0,0, + 1397,1403,1,0,0,0,1398,1402,8,8,0,0,1399,1400,5,34,0,0,1400,1402, + 5,34,0,0,1401,1398,1,0,0,0,1401,1399,1,0,0,0,1402,1405,1,0,0,0,1403, + 1401,1,0,0,0,1403,1404,1,0,0,0,1404,1406,1,0,0,0,1405,1403,1,0,0, + 0,1406,1407,5,34,0,0,1407,248,1,0,0,0,1408,1409,5,36,0,0,1409,1410, + 5,34,0,0,1410,1411,1,0,0,0,1411,1412,6,122,4,0,1412,1413,1,0,0,0, + 1413,1414,6,122,5,0,1414,250,1,0,0,0,1415,1416,5,36,0,0,1416,1417, + 5,64,0,0,1417,1418,5,34,0,0,1418,1419,1,0,0,0,1419,1420,6,123,6, + 0,1420,1421,1,0,0,0,1421,1422,6,123,5,0,1422,252,1,0,0,0,1423,1424, + 5,123,0,0,1424,1425,6,124,7,0,1425,254,1,0,0,0,1426,1427,5,125,0, + 0,1427,1428,6,125,8,0,1428,256,1,0,0,0,1429,1430,5,91,0,0,1430,258, + 1,0,0,0,1431,1432,5,93,0,0,1432,260,1,0,0,0,1433,1434,5,40,0,0,1434, + 262,1,0,0,0,1435,1436,5,41,0,0,1436,264,1,0,0,0,1437,1438,5,46,0, + 0,1438,266,1,0,0,0,1439,1440,5,44,0,0,1440,268,1,0,0,0,1441,1442, + 5,58,0,0,1442,1443,6,132,9,0,1443,270,1,0,0,0,1444,1445,5,59,0,0, + 1445,272,1,0,0,0,1446,1447,5,43,0,0,1447,274,1,0,0,0,1448,1449,5, + 45,0,0,1449,276,1,0,0,0,1450,1451,5,42,0,0,1451,278,1,0,0,0,1452, + 1453,5,47,0,0,1453,280,1,0,0,0,1454,1455,5,37,0,0,1455,282,1,0,0, + 0,1456,1457,5,38,0,0,1457,284,1,0,0,0,1458,1459,5,124,0,0,1459,286, + 1,0,0,0,1460,1461,5,94,0,0,1461,288,1,0,0,0,1462,1463,5,33,0,0,1463, + 290,1,0,0,0,1464,1465,5,126,0,0,1465,292,1,0,0,0,1466,1467,5,61, + 0,0,1467,294,1,0,0,0,1468,1469,5,60,0,0,1469,296,1,0,0,0,1470,1471, + 5,62,0,0,1471,298,1,0,0,0,1472,1473,5,63,0,0,1473,300,1,0,0,0,1474, + 1475,5,58,0,0,1475,1476,5,58,0,0,1476,302,1,0,0,0,1477,1478,5,63, + 0,0,1478,1479,5,63,0,0,1479,304,1,0,0,0,1480,1481,5,43,0,0,1481, + 1482,5,43,0,0,1482,306,1,0,0,0,1483,1484,5,45,0,0,1484,1485,5,45, + 0,0,1485,308,1,0,0,0,1486,1487,5,38,0,0,1487,1488,5,38,0,0,1488, + 310,1,0,0,0,1489,1490,5,124,0,0,1490,1491,5,124,0,0,1491,312,1,0, + 0,0,1492,1493,5,45,0,0,1493,1494,5,62,0,0,1494,314,1,0,0,0,1495, + 1496,5,61,0,0,1496,1497,5,61,0,0,1497,316,1,0,0,0,1498,1499,5,33, + 0,0,1499,1500,5,61,0,0,1500,318,1,0,0,0,1501,1502,5,60,0,0,1502, + 1503,5,61,0,0,1503,320,1,0,0,0,1504,1505,5,62,0,0,1505,1506,5,61, + 0,0,1506,322,1,0,0,0,1507,1508,5,43,0,0,1508,1509,5,61,0,0,1509, + 324,1,0,0,0,1510,1511,5,45,0,0,1511,1512,5,61,0,0,1512,326,1,0,0, + 0,1513,1514,5,42,0,0,1514,1515,5,61,0,0,1515,328,1,0,0,0,1516,1517, + 5,47,0,0,1517,1518,5,61,0,0,1518,330,1,0,0,0,1519,1520,5,37,0,0, + 1520,1521,5,61,0,0,1521,332,1,0,0,0,1522,1523,5,38,0,0,1523,1524, + 5,61,0,0,1524,334,1,0,0,0,1525,1526,5,124,0,0,1526,1527,5,61,0,0, + 1527,336,1,0,0,0,1528,1529,5,94,0,0,1529,1530,5,61,0,0,1530,338, + 1,0,0,0,1531,1532,5,60,0,0,1532,1533,5,60,0,0,1533,340,1,0,0,0,1534, + 1535,5,60,0,0,1535,1536,5,60,0,0,1536,1537,5,61,0,0,1537,342,1,0, + 0,0,1538,1539,5,63,0,0,1539,1540,5,63,0,0,1540,1541,5,61,0,0,1541, + 344,1,0,0,0,1542,1543,5,46,0,0,1543,1544,5,46,0,0,1544,346,1,0,0, + 0,1545,1546,5,123,0,0,1546,1547,5,123,0,0,1547,348,1,0,0,0,1548, + 1549,5,123,0,0,1549,1550,6,172,10,0,1550,1551,1,0,0,0,1551,1552, + 6,172,3,0,1552,1553,6,172,11,0,1553,350,1,0,0,0,1554,1555,4,173, + 0,0,1555,1556,3,441,218,0,1556,352,1,0,0,0,1557,1558,4,174,1,0,1558, + 1559,5,34,0,0,1559,1560,5,34,0,0,1560,354,1,0,0,0,1561,1562,5,34, + 0,0,1562,1563,6,175,12,0,1563,1564,1,0,0,0,1564,1565,6,175,13,0, + 1565,356,1,0,0,0,1566,1568,4,176,2,0,1567,1569,8,9,0,0,1568,1567, + 1,0,0,0,1569,1570,1,0,0,0,1570,1568,1,0,0,0,1570,1571,1,0,0,0,1571, + 358,1,0,0,0,1572,1574,4,177,3,0,1573,1575,8,10,0,0,1574,1573,1,0, + 0,0,1575,1576,1,0,0,0,1576,1574,1,0,0,0,1576,1577,1,0,0,0,1577,360, + 1,0,0,0,1578,1579,5,125,0,0,1579,1580,5,125,0,0,1580,1581,1,0,0, + 0,1581,1582,6,178,14,0,1582,362,1,0,0,0,1583,1584,5,125,0,0,1584, + 1585,6,179,15,0,1585,1586,1,0,0,0,1586,1587,6,179,3,0,1587,1588, + 6,179,13,0,1588,364,1,0,0,0,1589,1591,8,11,0,0,1590,1589,1,0,0,0, + 1591,1592,1,0,0,0,1592,1590,1,0,0,0,1592,1593,1,0,0,0,1593,366,1, + 0,0,0,1594,1596,3,447,221,0,1595,1594,1,0,0,0,1596,1597,1,0,0,0, + 1597,1595,1,0,0,0,1597,1598,1,0,0,0,1598,1599,1,0,0,0,1599,1600, + 6,181,1,0,1600,368,1,0,0,0,1601,1603,7,1,0,0,1602,1601,1,0,0,0,1603, + 1604,1,0,0,0,1604,1602,1,0,0,0,1604,1605,1,0,0,0,1605,1606,1,0,0, + 0,1606,1607,6,182,16,0,1607,370,1,0,0,0,1608,1609,5,116,0,0,1609, + 1610,5,114,0,0,1610,1611,5,117,0,0,1611,1612,5,101,0,0,1612,1613, + 1,0,0,0,1613,1614,6,183,16,0,1614,1615,6,183,17,0,1615,372,1,0,0, + 0,1616,1617,5,102,0,0,1617,1618,5,97,0,0,1618,1619,5,108,0,0,1619, + 1620,5,115,0,0,1620,1621,5,101,0,0,1621,1622,1,0,0,0,1622,1623,6, + 184,16,0,1623,1624,6,184,18,0,1624,374,1,0,0,0,1625,1626,5,100,0, + 0,1626,1627,5,101,0,0,1627,1628,5,102,0,0,1628,1629,5,105,0,0,1629, + 1630,5,110,0,0,1630,1631,5,101,0,0,1631,1632,1,0,0,0,1632,1633,6, + 185,16,0,1633,376,1,0,0,0,1634,1635,5,117,0,0,1635,1636,5,110,0, + 0,1636,1637,5,100,0,0,1637,1638,5,101,0,0,1638,1639,5,102,0,0,1639, + 1640,1,0,0,0,1640,1641,6,186,16,0,1641,378,1,0,0,0,1642,1643,5,105, + 0,0,1643,1644,5,102,0,0,1644,1645,1,0,0,0,1645,1646,6,187,16,0,1646, + 1647,6,187,19,0,1647,380,1,0,0,0,1648,1649,5,101,0,0,1649,1650,5, + 108,0,0,1650,1651,5,105,0,0,1651,1652,5,102,0,0,1652,1653,1,0,0, + 0,1653,1654,6,188,16,0,1654,382,1,0,0,0,1655,1656,5,101,0,0,1656, + 1657,5,108,0,0,1657,1658,5,115,0,0,1658,1659,5,101,0,0,1659,1660, + 1,0,0,0,1660,1661,6,189,16,0,1661,1662,6,189,20,0,1662,384,1,0,0, + 0,1663,1664,5,101,0,0,1664,1665,5,110,0,0,1665,1666,5,100,0,0,1666, + 1667,5,105,0,0,1667,1668,5,102,0,0,1668,1669,1,0,0,0,1669,1670,6, + 190,16,0,1670,386,1,0,0,0,1671,1672,5,108,0,0,1672,1673,5,105,0, + 0,1673,1674,5,110,0,0,1674,1675,5,101,0,0,1675,1676,1,0,0,0,1676, + 1677,6,191,16,0,1677,388,1,0,0,0,1678,1679,5,101,0,0,1679,1680,5, + 114,0,0,1680,1681,5,114,0,0,1681,1682,5,111,0,0,1682,1683,5,114, + 0,0,1683,1685,1,0,0,0,1684,1686,3,447,221,0,1685,1684,1,0,0,0,1686, + 1687,1,0,0,0,1687,1685,1,0,0,0,1687,1688,1,0,0,0,1688,1689,1,0,0, + 0,1689,1690,6,192,16,0,1690,1691,6,192,21,0,1691,390,1,0,0,0,1692, + 1693,5,119,0,0,1693,1694,5,97,0,0,1694,1695,5,114,0,0,1695,1696, + 5,110,0,0,1696,1697,5,105,0,0,1697,1698,5,110,0,0,1698,1699,5,103, + 0,0,1699,1701,1,0,0,0,1700,1702,3,447,221,0,1701,1700,1,0,0,0,1702, + 1703,1,0,0,0,1703,1701,1,0,0,0,1703,1704,1,0,0,0,1704,1705,1,0,0, + 0,1705,1706,6,193,16,0,1706,1707,6,193,21,0,1707,392,1,0,0,0,1708, + 1709,5,114,0,0,1709,1710,5,101,0,0,1710,1711,5,103,0,0,1711,1712, + 5,105,0,0,1712,1713,5,111,0,0,1713,1714,5,110,0,0,1714,1718,1,0, + 0,0,1715,1717,3,447,221,0,1716,1715,1,0,0,0,1717,1720,1,0,0,0,1718, + 1716,1,0,0,0,1718,1719,1,0,0,0,1719,1721,1,0,0,0,1720,1718,1,0,0, + 0,1721,1722,6,194,16,0,1722,1723,6,194,21,0,1723,394,1,0,0,0,1724, + 1725,5,101,0,0,1725,1726,5,110,0,0,1726,1727,5,100,0,0,1727,1728, + 5,114,0,0,1728,1729,5,101,0,0,1729,1730,5,103,0,0,1730,1731,5,105, + 0,0,1731,1732,5,111,0,0,1732,1733,5,110,0,0,1733,1737,1,0,0,0,1734, + 1736,3,447,221,0,1735,1734,1,0,0,0,1736,1739,1,0,0,0,1737,1735,1, + 0,0,0,1737,1738,1,0,0,0,1738,1740,1,0,0,0,1739,1737,1,0,0,0,1740, + 1741,6,195,16,0,1741,1742,6,195,21,0,1742,396,1,0,0,0,1743,1744, + 5,112,0,0,1744,1745,5,114,0,0,1745,1746,5,97,0,0,1746,1747,5,103, + 0,0,1747,1748,5,109,0,0,1748,1749,5,97,0,0,1749,1751,1,0,0,0,1750, + 1752,3,447,221,0,1751,1750,1,0,0,0,1752,1753,1,0,0,0,1753,1751,1, + 0,0,0,1753,1754,1,0,0,0,1754,1755,1,0,0,0,1755,1756,6,196,16,0,1756, + 1757,6,196,21,0,1757,398,1,0,0,0,1758,1759,5,110,0,0,1759,1760,5, + 117,0,0,1760,1761,5,108,0,0,1761,1762,5,108,0,0,1762,1763,5,97,0, + 0,1763,1764,5,98,0,0,1764,1765,5,108,0,0,1765,1766,5,101,0,0,1766, + 1768,1,0,0,0,1767,1769,3,447,221,0,1768,1767,1,0,0,0,1769,1770,1, + 0,0,0,1770,1768,1,0,0,0,1770,1771,1,0,0,0,1771,1772,1,0,0,0,1772, + 1773,6,197,16,0,1773,1774,6,197,21,0,1774,400,1,0,0,0,1775,1776, + 5,100,0,0,1776,1777,5,101,0,0,1777,1778,5,102,0,0,1778,1779,5,97, + 0,0,1779,1780,5,117,0,0,1780,1781,5,108,0,0,1781,1782,5,116,0,0, + 1782,1783,1,0,0,0,1783,1784,6,198,16,0,1784,1785,6,198,22,0,1785, + 402,1,0,0,0,1786,1787,5,104,0,0,1787,1788,5,105,0,0,1788,1789,5, + 100,0,0,1789,1790,5,100,0,0,1790,1791,5,101,0,0,1791,1792,5,110, + 0,0,1792,1793,1,0,0,0,1793,1794,6,199,16,0,1794,404,1,0,0,0,1795, + 1796,5,40,0,0,1796,1797,1,0,0,0,1797,1798,6,200,16,0,1798,1799,6, + 200,23,0,1799,406,1,0,0,0,1800,1801,5,41,0,0,1801,1802,1,0,0,0,1802, + 1803,6,201,16,0,1803,1804,6,201,24,0,1804,408,1,0,0,0,1805,1806, + 5,33,0,0,1806,1807,1,0,0,0,1807,1808,6,202,16,0,1808,1809,6,202, + 25,0,1809,410,1,0,0,0,1810,1811,5,61,0,0,1811,1812,5,61,0,0,1812, + 1813,1,0,0,0,1813,1814,6,203,16,0,1814,1815,6,203,26,0,1815,412, + 1,0,0,0,1816,1817,5,33,0,0,1817,1818,5,61,0,0,1818,1819,1,0,0,0, + 1819,1820,6,204,16,0,1820,1821,6,204,27,0,1821,414,1,0,0,0,1822, + 1823,5,38,0,0,1823,1824,5,38,0,0,1824,1825,1,0,0,0,1825,1826,6,205, + 16,0,1826,1827,6,205,28,0,1827,416,1,0,0,0,1828,1829,5,124,0,0,1829, + 1830,5,124,0,0,1830,1831,1,0,0,0,1831,1832,6,206,16,0,1832,1833, + 6,206,29,0,1833,418,1,0,0,0,1834,1838,5,34,0,0,1835,1837,8,12,0, + 0,1836,1835,1,0,0,0,1837,1840,1,0,0,0,1838,1836,1,0,0,0,1838,1839, + 1,0,0,0,1839,1841,1,0,0,0,1840,1838,1,0,0,0,1841,1842,5,34,0,0,1842, + 1843,1,0,0,0,1843,1844,6,207,16,0,1844,1845,6,207,30,0,1845,420, + 1,0,0,0,1846,1847,3,451,223,0,1847,1848,1,0,0,0,1848,1849,6,208, + 16,0,1849,422,1,0,0,0,1850,1851,5,47,0,0,1851,1852,5,47,0,0,1852, + 1856,1,0,0,0,1853,1855,8,13,0,0,1854,1853,1,0,0,0,1855,1858,1,0, + 0,0,1856,1854,1,0,0,0,1856,1857,1,0,0,0,1857,1859,1,0,0,0,1858,1856, + 1,0,0,0,1859,1860,6,209,0,0,1860,1861,6,209,31,0,1861,424,1,0,0, + 0,1862,1863,3,445,220,0,1863,1864,1,0,0,0,1864,1865,6,210,16,0,1865, + 1866,6,210,32,0,1866,426,1,0,0,0,1867,1869,8,13,0,0,1868,1867,1, + 0,0,0,1869,1870,1,0,0,0,1870,1868,1,0,0,0,1870,1871,1,0,0,0,1871, + 1872,1,0,0,0,1872,1873,6,211,16,0,1873,428,1,0,0,0,1874,1875,3,445, + 220,0,1875,1876,1,0,0,0,1876,1877,6,212,16,0,1877,1878,6,212,33, + 0,1878,1879,6,212,32,0,1879,430,1,0,0,0,1880,1881,8,13,0,0,1881, + 432,1,0,0,0,1882,1883,7,13,0,0,1883,434,1,0,0,0,1884,1886,7,14,0, + 0,1885,1884,1,0,0,0,1885,1886,1,0,0,0,1886,1887,1,0,0,0,1887,1893, + 7,15,0,0,1888,1890,7,15,0,0,1889,1888,1,0,0,0,1889,1890,1,0,0,0, + 1890,1891,1,0,0,0,1891,1893,7,14,0,0,1892,1885,1,0,0,0,1892,1889, + 1,0,0,0,1893,436,1,0,0,0,1894,1896,7,16,0,0,1895,1897,7,17,0,0,1896, + 1895,1,0,0,0,1896,1897,1,0,0,0,1897,1898,1,0,0,0,1898,1908,7,1,0, + 0,1899,1901,5,95,0,0,1900,1899,1,0,0,0,1901,1904,1,0,0,0,1902,1900, + 1,0,0,0,1902,1903,1,0,0,0,1903,1905,1,0,0,0,1904,1902,1,0,0,0,1905, + 1907,7,1,0,0,1906,1902,1,0,0,0,1907,1910,1,0,0,0,1908,1906,1,0,0, + 0,1908,1909,1,0,0,0,1909,438,1,0,0,0,1910,1908,1,0,0,0,1911,1915, + 3,441,218,0,1912,1915,3,443,219,0,1913,1915,3,467,231,0,1914,1911, + 1,0,0,0,1914,1912,1,0,0,0,1914,1913,1,0,0,0,1915,440,1,0,0,0,1916, + 1917,5,92,0,0,1917,1939,5,39,0,0,1918,1919,5,92,0,0,1919,1939,5, + 34,0,0,1920,1921,5,92,0,0,1921,1939,5,92,0,0,1922,1923,5,92,0,0, + 1923,1939,5,48,0,0,1924,1925,5,92,0,0,1925,1939,5,97,0,0,1926,1927, + 5,92,0,0,1927,1939,5,98,0,0,1928,1929,5,92,0,0,1929,1939,5,102,0, + 0,1930,1931,5,92,0,0,1931,1939,5,110,0,0,1932,1933,5,92,0,0,1933, + 1939,5,114,0,0,1934,1935,5,92,0,0,1935,1939,5,116,0,0,1936,1937, + 5,92,0,0,1937,1939,5,118,0,0,1938,1916,1,0,0,0,1938,1918,1,0,0,0, + 1938,1920,1,0,0,0,1938,1922,1,0,0,0,1938,1924,1,0,0,0,1938,1926, + 1,0,0,0,1938,1928,1,0,0,0,1938,1930,1,0,0,0,1938,1932,1,0,0,0,1938, + 1934,1,0,0,0,1938,1936,1,0,0,0,1939,442,1,0,0,0,1940,1941,5,92,0, + 0,1941,1942,5,120,0,0,1942,1943,1,0,0,0,1943,1966,3,469,232,0,1944, + 1945,5,92,0,0,1945,1946,5,120,0,0,1946,1947,1,0,0,0,1947,1948,3, + 469,232,0,1948,1949,3,469,232,0,1949,1966,1,0,0,0,1950,1951,5,92, + 0,0,1951,1952,5,120,0,0,1952,1953,1,0,0,0,1953,1954,3,469,232,0, + 1954,1955,3,469,232,0,1955,1956,3,469,232,0,1956,1966,1,0,0,0,1957, + 1958,5,92,0,0,1958,1959,5,120,0,0,1959,1960,1,0,0,0,1960,1961,3, + 469,232,0,1961,1962,3,469,232,0,1962,1963,3,469,232,0,1963,1964, + 3,469,232,0,1964,1966,1,0,0,0,1965,1940,1,0,0,0,1965,1944,1,0,0, + 0,1965,1950,1,0,0,0,1965,1957,1,0,0,0,1966,444,1,0,0,0,1967,1968, + 5,13,0,0,1968,1971,5,10,0,0,1969,1971,7,13,0,0,1970,1967,1,0,0,0, + 1970,1969,1,0,0,0,1971,446,1,0,0,0,1972,1975,3,449,222,0,1973,1975, + 7,18,0,0,1974,1972,1,0,0,0,1974,1973,1,0,0,0,1975,448,1,0,0,0,1976, + 1977,7,19,0,0,1977,450,1,0,0,0,1978,1982,3,453,224,0,1979,1981,3, + 455,225,0,1980,1979,1,0,0,0,1981,1984,1,0,0,0,1982,1980,1,0,0,0, + 1982,1983,1,0,0,0,1983,452,1,0,0,0,1984,1982,1,0,0,0,1985,1988,3, + 457,226,0,1986,1988,5,95,0,0,1987,1985,1,0,0,0,1987,1986,1,0,0,0, + 1988,454,1,0,0,0,1989,1995,3,457,226,0,1990,1995,3,459,227,0,1991, + 1995,3,461,228,0,1992,1995,3,463,229,0,1993,1995,3,465,230,0,1994, + 1989,1,0,0,0,1994,1990,1,0,0,0,1994,1991,1,0,0,0,1994,1992,1,0,0, + 0,1994,1993,1,0,0,0,1995,456,1,0,0,0,1996,2004,3,471,233,0,1997, + 2004,3,473,234,0,1998,2004,3,475,235,0,1999,2004,3,477,236,0,2000, + 2004,3,479,237,0,2001,2004,3,481,238,0,2002,2004,3,467,231,0,2003, + 1996,1,0,0,0,2003,1997,1,0,0,0,2003,1998,1,0,0,0,2003,1999,1,0,0, + 0,2003,2000,1,0,0,0,2003,2001,1,0,0,0,2003,2002,1,0,0,0,2004,458, + 1,0,0,0,2005,2008,3,491,243,0,2006,2008,3,467,231,0,2007,2005,1, + 0,0,0,2007,2006,1,0,0,0,2008,460,1,0,0,0,2009,2012,3,489,242,0,2010, + 2012,3,467,231,0,2011,2009,1,0,0,0,2011,2010,1,0,0,0,2012,462,1, + 0,0,0,2013,2017,3,483,239,0,2014,2017,3,485,240,0,2015,2017,3,467, + 231,0,2016,2013,1,0,0,0,2016,2014,1,0,0,0,2016,2015,1,0,0,0,2017, + 464,1,0,0,0,2018,2021,3,487,241,0,2019,2021,3,467,231,0,2020,2018, + 1,0,0,0,2020,2019,1,0,0,0,2021,466,1,0,0,0,2022,2023,5,92,0,0,2023, + 2024,5,117,0,0,2024,2025,1,0,0,0,2025,2026,3,469,232,0,2026,2027, + 3,469,232,0,2027,2028,3,469,232,0,2028,2029,3,469,232,0,2029,2043, + 1,0,0,0,2030,2031,5,92,0,0,2031,2032,5,85,0,0,2032,2033,1,0,0,0, + 2033,2034,3,469,232,0,2034,2035,3,469,232,0,2035,2036,3,469,232, + 0,2036,2037,3,469,232,0,2037,2038,3,469,232,0,2038,2039,3,469,232, + 0,2039,2040,3,469,232,0,2040,2041,3,469,232,0,2041,2043,1,0,0,0, + 2042,2022,1,0,0,0,2042,2030,1,0,0,0,2043,468,1,0,0,0,2044,2046,7, + 20,0,0,2045,2044,1,0,0,0,2046,470,1,0,0,0,2047,2048,7,21,0,0,2048, + 472,1,0,0,0,2049,2050,7,22,0,0,2050,474,1,0,0,0,2051,2052,7,23,0, + 0,2052,476,1,0,0,0,2053,2054,7,24,0,0,2054,478,1,0,0,0,2055,2056, + 7,25,0,0,2056,480,1,0,0,0,2057,2058,7,26,0,0,2058,482,1,0,0,0,2059, + 2060,2,768,784,0,2060,484,1,0,0,0,2061,2062,7,27,0,0,2062,486,1, + 0,0,0,2063,2064,7,28,0,0,2064,488,1,0,0,0,2065,2066,7,29,0,0,2066, + 490,1,0,0,0,2067,2068,7,30,0,0,2068,492,1,0,0,0,77,0,1,2,3,4,504, + 525,539,550,560,562,1247,1255,1261,1265,1269,1277,1283,1287,1294, + 1300,1303,1310,1316,1319,1325,1331,1334,1341,1347,1351,1354,1360, + 1366,1372,1374,1376,1381,1388,1390,1401,1403,1570,1576,1592,1597, + 1604,1687,1703,1718,1737,1753,1770,1838,1856,1870,1885,1889,1892, + 1896,1902,1908,1914,1938,1965,1970,1974,1982,1987,1994,2003,2007, + 2011,2016,2020,2042,2045,34,0,2,0,0,1,0,2,3,0,6,0,0,1,122,0,5,1, + 0,1,123,1,1,124,2,1,125,3,1,132,4,1,172,5,5,0,0,1,175,6,4,0,0,7, + 180,0,1,179,7,0,3,0,7,96,0,7,42,0,7,52,0,7,36,0,2,4,0,7,30,0,7,129, + 0,7,130,0,7,143,0,7,156,0,7,157,0,7,153,0,7,154,0,7,91,0,7,5,0,2, + 0,0,7,196,0 + ] -class CSharpLexer(Lexer): - interpolatedStringLevel = 0 - interpolatedVerbatiums = [] - curlyLevels = [] - verbatium = False +class CSharpLexer(CSharpLexerBase): atn = ATNDeserializer().deserialize(serializedATN()) @@ -1151,201 +917,202 @@ class CSharpLexer(Lexer): BYTE_ORDER_MARK = 1 SINGLE_LINE_DOC_COMMENT = 2 - DELIMITED_DOC_COMMENT = 3 - SINGLE_LINE_COMMENT = 4 - DELIMITED_COMMENT = 5 - WHITESPACES = 6 - SHARP = 7 - ABSTRACT = 8 - ADD = 9 - ALIAS = 10 - ARGLIST = 11 - AS = 12 - ASCENDING = 13 - ASYNC = 14 - AWAIT = 15 - BASE = 16 - BOOL = 17 - BREAK = 18 - BY = 19 - BYTE = 20 - CASE = 21 - CATCH = 22 - CHAR = 23 - CHECKED = 24 - CLASS = 25 - CONST = 26 - CONTINUE = 27 - DECIMAL = 28 - DEFAULT = 29 - DELEGATE = 30 - DESCENDING = 31 - DO = 32 - DOUBLE = 33 - DYNAMIC = 34 - ELSE = 35 - ENUM = 36 - EQUALS = 37 - EVENT = 38 - EXPLICIT = 39 - EXTERN = 40 - FALSE = 41 - FINALLY = 42 - FIXED = 43 - FLOAT = 44 - FOR = 45 - FOREACH = 46 - FROM = 47 - GET = 48 - GOTO = 49 - GROUP = 50 - IF = 51 - IMPLICIT = 52 - IN = 53 - INT = 54 - INTERFACE = 55 - INTERNAL = 56 - INTO = 57 - IS = 58 - JOIN = 59 - LET = 60 - LOCK = 61 - LONG = 62 - NAMEOF = 63 - NAMESPACE = 64 - NEW = 65 - NULL = 66 - OBJECT = 67 - ON = 68 - OPERATOR = 69 - ORDERBY = 70 - OUT = 71 - OVERRIDE = 72 - PARAMS = 73 - PARTIAL = 74 - PRIVATE = 75 - PROTECTED = 76 - PUBLIC = 77 - READONLY = 78 - REF = 79 - REMOVE = 80 - RETURN = 81 - SBYTE = 82 - SEALED = 83 - SELECT = 84 - SET = 85 - SHORT = 86 - SIZEOF = 87 - STACKALLOC = 88 - STATIC = 89 - STRING = 90 - STRUCT = 91 - SWITCH = 92 - THIS = 93 - THROW = 94 - TRUE = 95 - TRY = 96 - TYPEOF = 97 - UINT = 98 - ULONG = 99 - UNCHECKED = 100 - UNMANAGED = 101 - UNSAFE = 102 - USHORT = 103 - USING = 104 - VAR = 105 - VIRTUAL = 106 - VOID = 107 - VOLATILE = 108 - WHEN = 109 - WHERE = 110 - WHILE = 111 - YIELD = 112 - IDENTIFIER = 113 - LITERAL_ACCESS = 114 - INTEGER_LITERAL = 115 - HEX_INTEGER_LITERAL = 116 - BIN_INTEGER_LITERAL = 117 - REAL_LITERAL = 118 - CHARACTER_LITERAL = 119 - REGULAR_STRING = 120 - VERBATIUM_STRING = 121 - INTERPOLATED_REGULAR_STRING_START = 122 - INTERPOLATED_VERBATIUM_STRING_START = 123 - OPEN_BRACE = 124 - CLOSE_BRACE = 125 - OPEN_BRACKET = 126 - CLOSE_BRACKET = 127 - OPEN_PARENS = 128 - CLOSE_PARENS = 129 - DOT = 130 - COMMA = 131 - COLON = 132 - SEMICOLON = 133 - PLUS = 134 - MINUS = 135 - STAR = 136 - DIV = 137 - PERCENT = 138 - AMP = 139 - BITWISE_OR = 140 - CARET = 141 - BANG = 142 - TILDE = 143 - ASSIGNMENT = 144 - LT = 145 - GT = 146 - INTERR = 147 - DOUBLE_COLON = 148 - OP_COALESCING = 149 - OP_INC = 150 - OP_DEC = 151 - OP_AND = 152 - OP_OR = 153 - OP_PTR = 154 - OP_EQ = 155 - OP_NE = 156 - OP_LE = 157 - OP_GE = 158 - OP_ADD_ASSIGNMENT = 159 - OP_SUB_ASSIGNMENT = 160 - OP_MULT_ASSIGNMENT = 161 - OP_DIV_ASSIGNMENT = 162 - OP_MOD_ASSIGNMENT = 163 - OP_AND_ASSIGNMENT = 164 - OP_OR_ASSIGNMENT = 165 - OP_XOR_ASSIGNMENT = 166 - OP_LEFT_SHIFT = 167 - OP_LEFT_SHIFT_ASSIGNMENT = 168 - OP_COALESCING_ASSIGNMENT = 169 - OP_RANGE = 170 - DOUBLE_CURLY_INSIDE = 171 - OPEN_BRACE_INSIDE = 172 - REGULAR_CHAR_INSIDE = 173 - VERBATIUM_DOUBLE_QUOTE_INSIDE = 174 - DOUBLE_QUOTE_INSIDE = 175 - REGULAR_STRING_INSIDE = 176 - VERBATIUM_INSIDE_STRING = 177 - CLOSE_BRACE_INSIDE = 178 - FORMAT_STRING = 179 - DIRECTIVE_WHITESPACES = 180 - DIGITS = 181 - DEFINE = 182 - UNDEF = 183 - ELIF = 184 - ENDIF = 185 - LINE = 186 - ERROR = 187 - WARNING = 188 - REGION = 189 - ENDREGION = 190 - PRAGMA = 191 - NULLABLE = 192 - DIRECTIVE_HIDDEN = 193 - CONDITIONAL_SYMBOL = 194 - DIRECTIVE_NEW_LINE = 195 - TEXT = 196 - DOUBLE_CURLY_CLOSE_INSIDE = 197 + EMPTY_DELIMITED_DOC_COMMENT = 3 + DELIMITED_DOC_COMMENT = 4 + SINGLE_LINE_COMMENT = 5 + DELIMITED_COMMENT = 6 + WHITESPACES = 7 + SHARP = 8 + ABSTRACT = 9 + ADD = 10 + ALIAS = 11 + ARGLIST = 12 + AS = 13 + ASCENDING = 14 + ASYNC = 15 + AWAIT = 16 + BASE = 17 + BOOL = 18 + BREAK = 19 + BY = 20 + BYTE = 21 + CASE = 22 + CATCH = 23 + CHAR = 24 + CHECKED = 25 + CLASS = 26 + CONST = 27 + CONTINUE = 28 + DECIMAL = 29 + DEFAULT = 30 + DELEGATE = 31 + DESCENDING = 32 + DO = 33 + DOUBLE = 34 + DYNAMIC = 35 + ELSE = 36 + ENUM = 37 + EQUALS = 38 + EVENT = 39 + EXPLICIT = 40 + EXTERN = 41 + FALSE = 42 + FINALLY = 43 + FIXED = 44 + FLOAT = 45 + FOR = 46 + FOREACH = 47 + FROM = 48 + GET = 49 + GOTO = 50 + GROUP = 51 + IF = 52 + IMPLICIT = 53 + IN = 54 + INT = 55 + INTERFACE = 56 + INTERNAL = 57 + INTO = 58 + IS = 59 + JOIN = 60 + LET = 61 + LOCK = 62 + LONG = 63 + NAMEOF = 64 + NAMESPACE = 65 + NEW = 66 + NULL_ = 67 + OBJECT = 68 + ON = 69 + OPERATOR = 70 + ORDERBY = 71 + OUT = 72 + OVERRIDE = 73 + PARAMS = 74 + PARTIAL = 75 + PRIVATE = 76 + PROTECTED = 77 + PUBLIC = 78 + READONLY = 79 + REF = 80 + REMOVE = 81 + RETURN = 82 + SBYTE = 83 + SEALED = 84 + SELECT = 85 + SET = 86 + SHORT = 87 + SIZEOF = 88 + STACKALLOC = 89 + STATIC = 90 + STRING = 91 + STRUCT = 92 + SWITCH = 93 + THIS = 94 + THROW = 95 + TRUE = 96 + TRY = 97 + TYPEOF = 98 + UINT = 99 + ULONG = 100 + UNCHECKED = 101 + UNMANAGED = 102 + UNSAFE = 103 + USHORT = 104 + USING = 105 + VAR = 106 + VIRTUAL = 107 + VOID = 108 + VOLATILE = 109 + WHEN = 110 + WHERE = 111 + WHILE = 112 + YIELD = 113 + IDENTIFIER = 114 + LITERAL_ACCESS = 115 + INTEGER_LITERAL = 116 + HEX_INTEGER_LITERAL = 117 + BIN_INTEGER_LITERAL = 118 + REAL_LITERAL = 119 + CHARACTER_LITERAL = 120 + REGULAR_STRING = 121 + VERBATIUM_STRING = 122 + INTERPOLATED_REGULAR_STRING_START = 123 + INTERPOLATED_VERBATIUM_STRING_START = 124 + OPEN_BRACE = 125 + CLOSE_BRACE = 126 + OPEN_BRACKET = 127 + CLOSE_BRACKET = 128 + OPEN_PARENS = 129 + CLOSE_PARENS = 130 + DOT = 131 + COMMA = 132 + COLON = 133 + SEMICOLON = 134 + PLUS = 135 + MINUS = 136 + STAR = 137 + DIV = 138 + PERCENT = 139 + AMP = 140 + BITWISE_OR = 141 + CARET = 142 + BANG = 143 + TILDE = 144 + ASSIGNMENT = 145 + LT = 146 + GT = 147 + INTERR = 148 + DOUBLE_COLON = 149 + OP_COALESCING = 150 + OP_INC = 151 + OP_DEC = 152 + OP_AND = 153 + OP_OR = 154 + OP_PTR = 155 + OP_EQ = 156 + OP_NE = 157 + OP_LE = 158 + OP_GE = 159 + OP_ADD_ASSIGNMENT = 160 + OP_SUB_ASSIGNMENT = 161 + OP_MULT_ASSIGNMENT = 162 + OP_DIV_ASSIGNMENT = 163 + OP_MOD_ASSIGNMENT = 164 + OP_AND_ASSIGNMENT = 165 + OP_OR_ASSIGNMENT = 166 + OP_XOR_ASSIGNMENT = 167 + OP_LEFT_SHIFT = 168 + OP_LEFT_SHIFT_ASSIGNMENT = 169 + OP_COALESCING_ASSIGNMENT = 170 + OP_RANGE = 171 + DOUBLE_CURLY_INSIDE = 172 + OPEN_BRACE_INSIDE = 173 + REGULAR_CHAR_INSIDE = 174 + VERBATIUM_DOUBLE_QUOTE_INSIDE = 175 + DOUBLE_QUOTE_INSIDE = 176 + REGULAR_STRING_INSIDE = 177 + VERBATIUM_INSIDE_STRING = 178 + CLOSE_BRACE_INSIDE = 179 + FORMAT_STRING = 180 + DIRECTIVE_WHITESPACES = 181 + DIGITS = 182 + DEFINE = 183 + UNDEF = 184 + ELIF = 185 + ENDIF = 186 + LINE = 187 + ERROR = 188 + WARNING = 189 + REGION = 190 + ENDREGION = 191 + PRAGMA = 192 + NULLABLE = 193 + DIRECTIVE_HIDDEN = 194 + CONDITIONAL_SYMBOL = 195 + DIRECTIVE_NEW_LINE = 196 + TEXT = 197 + DOUBLE_CURLY_CLOSE_INSIDE = 198 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN", u"COMMENTS_CHANNEL", u"DIRECTIVE" ] @@ -1354,54 +1121,55 @@ class CSharpLexer(Lexer): "DIRECTIVE_MODE", "DIRECTIVE_TEXT" ] literalNames = [ "", - "'\u00EF\u00BB\u00BF'", "'#'", "'abstract'", "'add'", "'alias'", - "'__arglist'", "'as'", "'ascending'", "'async'", "'await'", - "'base'", "'bool'", "'break'", "'by'", "'byte'", "'case'", "'catch'", - "'char'", "'checked'", "'class'", "'const'", "'continue'", "'decimal'", - "'default'", "'delegate'", "'descending'", "'do'", "'double'", - "'dynamic'", "'else'", "'enum'", "'equals'", "'event'", "'explicit'", - "'extern'", "'false'", "'finally'", "'fixed'", "'float'", "'for'", - "'foreach'", "'from'", "'get'", "'goto'", "'group'", "'if'", - "'implicit'", "'in'", "'int'", "'interface'", "'internal'", - "'into'", "'is'", "'join'", "'let'", "'lock'", "'long'", "'nameof'", - "'namespace'", "'new'", "'null'", "'object'", "'on'", "'operator'", - "'orderby'", "'out'", "'override'", "'params'", "'partial'", - "'private'", "'protected'", "'public'", "'readonly'", "'ref'", - "'remove'", "'return'", "'sbyte'", "'sealed'", "'select'", "'set'", - "'short'", "'sizeof'", "'stackalloc'", "'static'", "'string'", - "'struct'", "'switch'", "'this'", "'throw'", "'true'", "'try'", - "'typeof'", "'uint'", "'ulong'", "'unchecked'", "'unmanaged'", - "'unsafe'", "'ushort'", "'using'", "'var'", "'virtual'", "'void'", - "'volatile'", "'when'", "'where'", "'while'", "'yield'", "'{'", - "'}'", "'['", "']'", "'('", "')'", "'.'", "','", "':'", "';'", - "'+'", "'-'", "'*'", "'/'", "'%'", "'&'", "'|'", "'^'", "'!'", - "'~'", "'='", "'<'", "'>'", "'?'", "'::'", "'??'", "'++'", "'--'", - "'&&'", "'||'", "'->'", "'=='", "'!='", "'<='", "'>='", "'+='", - "'-='", "'*='", "'/='", "'%='", "'&='", "'|='", "'^='", "'<<'", - "'<<='", "'??='", "'..'", "'{{'", "'define'", "'undef'", "'elif'", - "'endif'", "'line'", "'hidden'", "'}}'" ] + "'\\u00EF\\u00BB\\u00BF'", "'/***/'", "'#'", "'abstract'", "'add'", + "'alias'", "'__arglist'", "'as'", "'ascending'", "'async'", + "'await'", "'base'", "'bool'", "'break'", "'by'", "'byte'", + "'case'", "'catch'", "'char'", "'checked'", "'class'", "'const'", + "'continue'", "'decimal'", "'default'", "'delegate'", "'descending'", + "'do'", "'double'", "'dynamic'", "'else'", "'enum'", "'equals'", + "'event'", "'explicit'", "'extern'", "'false'", "'finally'", + "'fixed'", "'float'", "'for'", "'foreach'", "'from'", "'get'", + "'goto'", "'group'", "'if'", "'implicit'", "'in'", "'int'", + "'interface'", "'internal'", "'into'", "'is'", "'join'", "'let'", + "'lock'", "'long'", "'nameof'", "'namespace'", "'new'", "'null'", + "'object'", "'on'", "'operator'", "'orderby'", "'out'", "'override'", + "'params'", "'partial'", "'private'", "'protected'", "'public'", + "'readonly'", "'ref'", "'remove'", "'return'", "'sbyte'", "'sealed'", + "'select'", "'set'", "'short'", "'sizeof'", "'stackalloc'", + "'static'", "'string'", "'struct'", "'switch'", "'this'", "'throw'", + "'true'", "'try'", "'typeof'", "'uint'", "'ulong'", "'unchecked'", + "'unmanaged'", "'unsafe'", "'ushort'", "'using'", "'var'", "'virtual'", + "'void'", "'volatile'", "'when'", "'where'", "'while'", "'yield'", + "'{'", "'}'", "'['", "']'", "'('", "')'", "'.'", "','", "':'", + "';'", "'+'", "'-'", "'*'", "'/'", "'%'", "'&'", "'|'", "'^'", + "'!'", "'~'", "'='", "'<'", "'>'", "'?'", "'::'", "'??'", "'++'", + "'--'", "'&&'", "'||'", "'->'", "'=='", "'!='", "'<='", "'>='", + "'+='", "'-='", "'*='", "'/='", "'%='", "'&='", "'|='", "'^='", + "'<<'", "'<<='", "'??='", "'..'", "'{{'", "'define'", "'undef'", + "'elif'", "'endif'", "'line'", "'hidden'", "'}}'" ] symbolicNames = [ "", - "BYTE_ORDER_MARK", "SINGLE_LINE_DOC_COMMENT", "DELIMITED_DOC_COMMENT", - "SINGLE_LINE_COMMENT", "DELIMITED_COMMENT", "WHITESPACES", "SHARP", - "ABSTRACT", "ADD", "ALIAS", "ARGLIST", "AS", "ASCENDING", "ASYNC", - "AWAIT", "BASE", "BOOL", "BREAK", "BY", "BYTE", "CASE", "CATCH", - "CHAR", "CHECKED", "CLASS", "CONST", "CONTINUE", "DECIMAL", - "DEFAULT", "DELEGATE", "DESCENDING", "DO", "DOUBLE", "DYNAMIC", - "ELSE", "ENUM", "EQUALS", "EVENT", "EXPLICIT", "EXTERN", "FALSE", - "FINALLY", "FIXED", "FLOAT", "FOR", "FOREACH", "FROM", "GET", - "GOTO", "GROUP", "IF", "IMPLICIT", "IN", "INT", "INTERFACE", - "INTERNAL", "INTO", "IS", "JOIN", "LET", "LOCK", "LONG", "NAMEOF", - "NAMESPACE", "NEW", "NULL", "OBJECT", "ON", "OPERATOR", "ORDERBY", - "OUT", "OVERRIDE", "PARAMS", "PARTIAL", "PRIVATE", "PROTECTED", - "PUBLIC", "READONLY", "REF", "REMOVE", "RETURN", "SBYTE", "SEALED", - "SELECT", "SET", "SHORT", "SIZEOF", "STACKALLOC", "STATIC", - "STRING", "STRUCT", "SWITCH", "THIS", "THROW", "TRUE", "TRY", - "TYPEOF", "UINT", "ULONG", "UNCHECKED", "UNMANAGED", "UNSAFE", - "USHORT", "USING", "VAR", "VIRTUAL", "VOID", "VOLATILE", "WHEN", - "WHERE", "WHILE", "YIELD", "IDENTIFIER", "LITERAL_ACCESS", "INTEGER_LITERAL", - "HEX_INTEGER_LITERAL", "BIN_INTEGER_LITERAL", "REAL_LITERAL", - "CHARACTER_LITERAL", "REGULAR_STRING", "VERBATIUM_STRING", "INTERPOLATED_REGULAR_STRING_START", + "BYTE_ORDER_MARK", "SINGLE_LINE_DOC_COMMENT", "EMPTY_DELIMITED_DOC_COMMENT", + "DELIMITED_DOC_COMMENT", "SINGLE_LINE_COMMENT", "DELIMITED_COMMENT", + "WHITESPACES", "SHARP", "ABSTRACT", "ADD", "ALIAS", "ARGLIST", + "AS", "ASCENDING", "ASYNC", "AWAIT", "BASE", "BOOL", "BREAK", + "BY", "BYTE", "CASE", "CATCH", "CHAR", "CHECKED", "CLASS", "CONST", + "CONTINUE", "DECIMAL", "DEFAULT", "DELEGATE", "DESCENDING", + "DO", "DOUBLE", "DYNAMIC", "ELSE", "ENUM", "EQUALS", "EVENT", + "EXPLICIT", "EXTERN", "FALSE", "FINALLY", "FIXED", "FLOAT", + "FOR", "FOREACH", "FROM", "GET", "GOTO", "GROUP", "IF", "IMPLICIT", + "IN", "INT", "INTERFACE", "INTERNAL", "INTO", "IS", "JOIN", + "LET", "LOCK", "LONG", "NAMEOF", "NAMESPACE", "NEW", "NULL_", + "OBJECT", "ON", "OPERATOR", "ORDERBY", "OUT", "OVERRIDE", "PARAMS", + "PARTIAL", "PRIVATE", "PROTECTED", "PUBLIC", "READONLY", "REF", + "REMOVE", "RETURN", "SBYTE", "SEALED", "SELECT", "SET", "SHORT", + "SIZEOF", "STACKALLOC", "STATIC", "STRING", "STRUCT", "SWITCH", + "THIS", "THROW", "TRUE", "TRY", "TYPEOF", "UINT", "ULONG", "UNCHECKED", + "UNMANAGED", "UNSAFE", "USHORT", "USING", "VAR", "VIRTUAL", + "VOID", "VOLATILE", "WHEN", "WHERE", "WHILE", "YIELD", "IDENTIFIER", + "LITERAL_ACCESS", "INTEGER_LITERAL", "HEX_INTEGER_LITERAL", + "BIN_INTEGER_LITERAL", "REAL_LITERAL", "CHARACTER_LITERAL", + "REGULAR_STRING", "VERBATIUM_STRING", "INTERPOLATED_REGULAR_STRING_START", "INTERPOLATED_VERBATIUM_STRING_START", "OPEN_BRACE", "CLOSE_BRACE", "OPEN_BRACKET", "CLOSE_BRACKET", "OPEN_PARENS", "CLOSE_PARENS", "DOT", "COMMA", "COLON", "SEMICOLON", "PLUS", "MINUS", "STAR", @@ -1420,10 +1188,10 @@ class CSharpLexer(Lexer): "PRAGMA", "NULLABLE", "DIRECTIVE_HIDDEN", "CONDITIONAL_SYMBOL", "DIRECTIVE_NEW_LINE", "TEXT", "DOUBLE_CURLY_CLOSE_INSIDE" ] - ruleNames = [ "BYTE_ORDER_MARK", "SINGLE_LINE_DOC_COMMENT", "DELIMITED_DOC_COMMENT", - "SINGLE_LINE_COMMENT", "DELIMITED_COMMENT", "WHITESPACES", - "SHARP", "ABSTRACT", "ADD", "ALIAS", "ARGLIST", "AS", - "ASCENDING", "ASYNC", "AWAIT", "BASE", "BOOL", "BREAK", + ruleNames = [ "BYTE_ORDER_MARK", "SINGLE_LINE_DOC_COMMENT", "EMPTY_DELIMITED_DOC_COMMENT", + "DELIMITED_DOC_COMMENT", "SINGLE_LINE_COMMENT", "DELIMITED_COMMENT", + "WHITESPACES", "SHARP", "ABSTRACT", "ADD", "ALIAS", "ARGLIST", + "AS", "ASCENDING", "ASYNC", "AWAIT", "BASE", "BOOL", "BREAK", "BY", "BYTE", "CASE", "CATCH", "CHAR", "CHECKED", "CLASS", "CONST", "CONTINUE", "DECIMAL", "DEFAULT", "DELEGATE", "DESCENDING", "DO", "DOUBLE", "DYNAMIC", "ELSE", "ENUM", @@ -1431,7 +1199,7 @@ class CSharpLexer(Lexer): "FIXED", "FLOAT", "FOR", "FOREACH", "FROM", "GET", "GOTO", "GROUP", "IF", "IMPLICIT", "IN", "INT", "INTERFACE", "INTERNAL", "INTO", "IS", "JOIN", "LET", "LOCK", "LONG", "NAMEOF", - "NAMESPACE", "NEW", "NULL", "OBJECT", "ON", "OPERATOR", + "NAMESPACE", "NEW", "NULL_", "OBJECT", "ON", "OPERATOR", "ORDERBY", "OUT", "OVERRIDE", "PARAMS", "PARTIAL", "PRIVATE", "PROTECTED", "PUBLIC", "READONLY", "REF", "REMOVE", "RETURN", "SBYTE", "SEALED", "SELECT", "SET", "SHORT", "SIZEOF", @@ -1481,22 +1249,23 @@ class CSharpLexer(Lexer): def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") 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[121] = self.INTERPOLATED_REGULAR_STRING_START_action - actions[122] = self.INTERPOLATED_VERBATIUM_STRING_START_action - actions[123] = self.OPEN_BRACE_action - actions[124] = self.CLOSE_BRACE_action - actions[131] = self.COLON_action - actions[171] = self.OPEN_BRACE_INSIDE_action - actions[174] = self.DOUBLE_QUOTE_INSIDE_action - actions[178] = self.CLOSE_BRACE_INSIDE_action + actions[122] = self.INTERPOLATED_REGULAR_STRING_START_action + actions[123] = self.INTERPOLATED_VERBATIUM_STRING_START_action + actions[124] = self.OPEN_BRACE_action + actions[125] = self.CLOSE_BRACE_action + actions[132] = self.COLON_action + actions[172] = self.OPEN_BRACE_INSIDE_action + actions[175] = self.DOUBLE_QUOTE_INSIDE_action + actions[179] = self.CLOSE_BRACE_INSIDE_action self._actions = actions action = self._actions.get(ruleIndex, None) if action is not None: @@ -1504,68 +1273,56 @@ def action(self, localctx:RuleContext, ruleIndex:int, actionIndex:int): else: raise Exception("No registered action for:" + str(ruleIndex)) + def INTERPOLATED_REGULAR_STRING_START_action(self, localctx:RuleContext , actionIndex:int): if actionIndex == 0: - self.interpolatedStringLevel+=1 - self.interpolatedVerbatiums.append(False) - self.verbatium = False + this.OnInterpolatedRegularStringStart(); + def INTERPOLATED_VERBATIUM_STRING_START_action(self, localctx:RuleContext , actionIndex:int): if actionIndex == 1: - self.interpolatedStringLevel+=1 - self.interpolatedVerbatiums.append(True) - self.verbatium = True + this.OnInterpolatedVerbatiumStringStart(); + def OPEN_BRACE_action(self, localctx:RuleContext , actionIndex:int): if actionIndex == 2: - if (self.interpolatedStringLevel > 0): - self.curlyLevels.append(curlyLevels.pop() + 1) - + this.OnOpenBrace(); + + def CLOSE_BRACE_action(self, localctx:RuleContext , actionIndex:int): if actionIndex == 3: - if (self.interpolatedStringLevel > 0): - self.curlyLevels.append(self.curlyLevels.pop() - 1) - if (self.curlyLevels[-1] == 0): - self.curlyLevels.pop() - self.skip(); - self.popMode(); - + this.OnCloseBrace(); + + def COLON_action(self, localctx:RuleContext , actionIndex:int): if actionIndex == 4: - if (self.interpolatedStringLevel > 0): - ind = 1 - switchToFormatString = True; - while (self._input.LA(ind) != '}'): - if (self._input.LA(ind) == ':' or self._input.LA(ind) == ')'): - switchToFormatString = False - break - ind+=1 - if (switchToFormatString): - self.mode(INTERPOLATION_FORMAT) - + this.OnColon(); + + def OPEN_BRACE_INSIDE_action(self, localctx:RuleContext , actionIndex:int): if actionIndex == 5: - self.curlyLevels.append(1); + this.OpenBraceInside(); + def DOUBLE_QUOTE_INSIDE_action(self, localctx:RuleContext , actionIndex:int): if actionIndex == 6: - self.interpolatedStringLevel-=1 - self.interpolatedVerbatiums.pop(); - self.verbatium = self.interpolatedVerbatiums[-1] if len(self.interpolatedVerbatiums) > 0 else False + this.OnDoubleQuoteInside(); + def CLOSE_BRACE_INSIDE_action(self, localctx:RuleContext , actionIndex:int): if actionIndex == 7: - self.curlyLevels.pop() + this.OnCloseBraceInside(); + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): if self._predicates is None: preds = dict() - preds[172] = self.REGULAR_CHAR_INSIDE_sempred - preds[173] = self.VERBATIUM_DOUBLE_QUOTE_INSIDE_sempred - preds[175] = self.REGULAR_STRING_INSIDE_sempred - preds[176] = self.VERBATIUM_INSIDE_STRING_sempred + preds[173] = self.REGULAR_CHAR_INSIDE_sempred + preds[174] = self.VERBATIUM_DOUBLE_QUOTE_INSIDE_sempred + preds[176] = self.REGULAR_STRING_INSIDE_sempred + preds[177] = self.VERBATIUM_INSIDE_STRING_sempred self._predicates = preds - pred = self._predicates.get(ruleIndex) + pred = self._predicates.get(ruleIndex, None) if pred is not None: return pred(localctx, predIndex) else: @@ -1573,21 +1330,22 @@ def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): def REGULAR_CHAR_INSIDE_sempred(self, localctx:RuleContext, predIndex:int): if predIndex == 0: - return not self.verbatium + return this.IsRegularCharInside() def VERBATIUM_DOUBLE_QUOTE_INSIDE_sempred(self, localctx:RuleContext, predIndex:int): if predIndex == 1: - return self.verbatium + return this.IsVerbatiumDoubleQuoteInside() def REGULAR_STRING_INSIDE_sempred(self, localctx:RuleContext, predIndex:int): if predIndex == 2: - return not self.verbatium + return this.IsRegularCharInside() def VERBATIUM_INSIDE_STRING_sempred(self, localctx:RuleContext, predIndex:int): if predIndex == 3: - return self.verbatium + return this.IsVerbatiumDoubleQuoteInside() + diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.tokens b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.tokens new file mode 100644 index 00000000..0fc73692 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexer.tokens @@ -0,0 +1,361 @@ +BYTE_ORDER_MARK=1 +SINGLE_LINE_DOC_COMMENT=2 +EMPTY_DELIMITED_DOC_COMMENT=3 +DELIMITED_DOC_COMMENT=4 +SINGLE_LINE_COMMENT=5 +DELIMITED_COMMENT=6 +WHITESPACES=7 +SHARP=8 +ABSTRACT=9 +ADD=10 +ALIAS=11 +ARGLIST=12 +AS=13 +ASCENDING=14 +ASYNC=15 +AWAIT=16 +BASE=17 +BOOL=18 +BREAK=19 +BY=20 +BYTE=21 +CASE=22 +CATCH=23 +CHAR=24 +CHECKED=25 +CLASS=26 +CONST=27 +CONTINUE=28 +DECIMAL=29 +DEFAULT=30 +DELEGATE=31 +DESCENDING=32 +DO=33 +DOUBLE=34 +DYNAMIC=35 +ELSE=36 +ENUM=37 +EQUALS=38 +EVENT=39 +EXPLICIT=40 +EXTERN=41 +FALSE=42 +FINALLY=43 +FIXED=44 +FLOAT=45 +FOR=46 +FOREACH=47 +FROM=48 +GET=49 +GOTO=50 +GROUP=51 +IF=52 +IMPLICIT=53 +IN=54 +INT=55 +INTERFACE=56 +INTERNAL=57 +INTO=58 +IS=59 +JOIN=60 +LET=61 +LOCK=62 +LONG=63 +NAMEOF=64 +NAMESPACE=65 +NEW=66 +NULL_=67 +OBJECT=68 +ON=69 +OPERATOR=70 +ORDERBY=71 +OUT=72 +OVERRIDE=73 +PARAMS=74 +PARTIAL=75 +PRIVATE=76 +PROTECTED=77 +PUBLIC=78 +READONLY=79 +REF=80 +REMOVE=81 +RETURN=82 +SBYTE=83 +SEALED=84 +SELECT=85 +SET=86 +SHORT=87 +SIZEOF=88 +STACKALLOC=89 +STATIC=90 +STRING=91 +STRUCT=92 +SWITCH=93 +THIS=94 +THROW=95 +TRUE=96 +TRY=97 +TYPEOF=98 +UINT=99 +ULONG=100 +UNCHECKED=101 +UNMANAGED=102 +UNSAFE=103 +USHORT=104 +USING=105 +VAR=106 +VIRTUAL=107 +VOID=108 +VOLATILE=109 +WHEN=110 +WHERE=111 +WHILE=112 +YIELD=113 +IDENTIFIER=114 +LITERAL_ACCESS=115 +INTEGER_LITERAL=116 +HEX_INTEGER_LITERAL=117 +BIN_INTEGER_LITERAL=118 +REAL_LITERAL=119 +CHARACTER_LITERAL=120 +REGULAR_STRING=121 +VERBATIUM_STRING=122 +INTERPOLATED_REGULAR_STRING_START=123 +INTERPOLATED_VERBATIUM_STRING_START=124 +OPEN_BRACE=125 +CLOSE_BRACE=126 +OPEN_BRACKET=127 +CLOSE_BRACKET=128 +OPEN_PARENS=129 +CLOSE_PARENS=130 +DOT=131 +COMMA=132 +COLON=133 +SEMICOLON=134 +PLUS=135 +MINUS=136 +STAR=137 +DIV=138 +PERCENT=139 +AMP=140 +BITWISE_OR=141 +CARET=142 +BANG=143 +TILDE=144 +ASSIGNMENT=145 +LT=146 +GT=147 +INTERR=148 +DOUBLE_COLON=149 +OP_COALESCING=150 +OP_INC=151 +OP_DEC=152 +OP_AND=153 +OP_OR=154 +OP_PTR=155 +OP_EQ=156 +OP_NE=157 +OP_LE=158 +OP_GE=159 +OP_ADD_ASSIGNMENT=160 +OP_SUB_ASSIGNMENT=161 +OP_MULT_ASSIGNMENT=162 +OP_DIV_ASSIGNMENT=163 +OP_MOD_ASSIGNMENT=164 +OP_AND_ASSIGNMENT=165 +OP_OR_ASSIGNMENT=166 +OP_XOR_ASSIGNMENT=167 +OP_LEFT_SHIFT=168 +OP_LEFT_SHIFT_ASSIGNMENT=169 +OP_COALESCING_ASSIGNMENT=170 +OP_RANGE=171 +DOUBLE_CURLY_INSIDE=172 +OPEN_BRACE_INSIDE=173 +REGULAR_CHAR_INSIDE=174 +VERBATIUM_DOUBLE_QUOTE_INSIDE=175 +DOUBLE_QUOTE_INSIDE=176 +REGULAR_STRING_INSIDE=177 +VERBATIUM_INSIDE_STRING=178 +CLOSE_BRACE_INSIDE=179 +FORMAT_STRING=180 +DIRECTIVE_WHITESPACES=181 +DIGITS=182 +DEFINE=183 +UNDEF=184 +ELIF=185 +ENDIF=186 +LINE=187 +ERROR=188 +WARNING=189 +REGION=190 +ENDREGION=191 +PRAGMA=192 +NULLABLE=193 +DIRECTIVE_HIDDEN=194 +CONDITIONAL_SYMBOL=195 +DIRECTIVE_NEW_LINE=196 +TEXT=197 +DOUBLE_CURLY_CLOSE_INSIDE=198 +'\u00EF\u00BB\u00BF'=1 +'/***/'=3 +'#'=8 +'abstract'=9 +'add'=10 +'alias'=11 +'__arglist'=12 +'as'=13 +'ascending'=14 +'async'=15 +'await'=16 +'base'=17 +'bool'=18 +'break'=19 +'by'=20 +'byte'=21 +'case'=22 +'catch'=23 +'char'=24 +'checked'=25 +'class'=26 +'const'=27 +'continue'=28 +'decimal'=29 +'default'=30 +'delegate'=31 +'descending'=32 +'do'=33 +'double'=34 +'dynamic'=35 +'else'=36 +'enum'=37 +'equals'=38 +'event'=39 +'explicit'=40 +'extern'=41 +'false'=42 +'finally'=43 +'fixed'=44 +'float'=45 +'for'=46 +'foreach'=47 +'from'=48 +'get'=49 +'goto'=50 +'group'=51 +'if'=52 +'implicit'=53 +'in'=54 +'int'=55 +'interface'=56 +'internal'=57 +'into'=58 +'is'=59 +'join'=60 +'let'=61 +'lock'=62 +'long'=63 +'nameof'=64 +'namespace'=65 +'new'=66 +'null'=67 +'object'=68 +'on'=69 +'operator'=70 +'orderby'=71 +'out'=72 +'override'=73 +'params'=74 +'partial'=75 +'private'=76 +'protected'=77 +'public'=78 +'readonly'=79 +'ref'=80 +'remove'=81 +'return'=82 +'sbyte'=83 +'sealed'=84 +'select'=85 +'set'=86 +'short'=87 +'sizeof'=88 +'stackalloc'=89 +'static'=90 +'string'=91 +'struct'=92 +'switch'=93 +'this'=94 +'throw'=95 +'true'=96 +'try'=97 +'typeof'=98 +'uint'=99 +'ulong'=100 +'unchecked'=101 +'unmanaged'=102 +'unsafe'=103 +'ushort'=104 +'using'=105 +'var'=106 +'virtual'=107 +'void'=108 +'volatile'=109 +'when'=110 +'where'=111 +'while'=112 +'yield'=113 +'{'=125 +'}'=126 +'['=127 +']'=128 +'('=129 +')'=130 +'.'=131 +','=132 +':'=133 +';'=134 +'+'=135 +'-'=136 +'*'=137 +'/'=138 +'%'=139 +'&'=140 +'|'=141 +'^'=142 +'!'=143 +'~'=144 +'='=145 +'<'=146 +'>'=147 +'?'=148 +'::'=149 +'??'=150 +'++'=151 +'--'=152 +'&&'=153 +'||'=154 +'->'=155 +'=='=156 +'!='=157 +'<='=158 +'>='=159 +'+='=160 +'-='=161 +'*='=162 +'/='=163 +'%='=164 +'&='=165 +'|='=166 +'^='=167 +'<<'=168 +'<<='=169 +'??='=170 +'..'=171 +'{{'=172 +'}}'=198 +'define'=183 +'undef'=184 +'elif'=185 +'endif'=186 +'line'=187 +'hidden'=194 diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpLexerBase.py b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexerBase.py new file mode 100644 index 00000000..8360a944 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpLexerBase.py @@ -0,0 +1,50 @@ +# Manually generated +# From https://github.com/sanskar-dalvi/Code-Nebula/blob/main/grammar + +from antlr4 import Lexer + +class CSharpLexerBase(Lexer): + def __init__(self, input, output=None): + super().__init__(input, output) + self.interpolatedStringLevel = 0 + self.interpolatedVerbatiums = [] + self.curlyLevels = [] + self.verbatium = False + + def OnInterpolatedRegularStringStart(self): + self.interpolatedStringLevel += 1 + self.verbatium = False + self.curlyLevels.append(0) + self.interpolatedVerbatiums.append(self.verbatium) + + def OnInterpolatedVerbatiumStringStart(self): + self.interpolatedStringLevel += 1 + self.verbatium = True + self.curlyLevels.append(0) + self.interpolatedVerbatiums.append(self.verbatium) + + def OnOpenBrace(self): + if self.interpolatedStringLevel > 0: + self.curlyLevels[-1] += 1 + + def OnCloseBrace(self): + if self.interpolatedStringLevel > 0: + self.curlyLevels[-1] -= 1 + if self.curlyLevels[-1] == 0: + self.curlyLevels.pop() + self.interpolatedVerbatiums.pop() + self.interpolatedStringLevel -= 1 + + def InterpolatedStringLevel(self): + return self.interpolatedStringLevel + + def IsVerbatiumString(self): + return self.verbatium + + def IsRegularCharInside(self): + return self.interpolatedStringLevel > 0 + + def PopMode(self): + super().popMode() + if self._modeStack: + self.verbatium = self.interpolatedVerbatiums[-1] diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.g4 b/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.g4 index f11cb580..ec37fb29 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.g4 +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.g4 @@ -2,35 +2,42 @@ // Copyright (c) 2013, Christian Wulf (chwchw@gmx.de) // Copyright (c) 2016-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. +// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging + parser grammar CSharpParser; -options { tokenVocab=CSharpLexer; } +options { + tokenVocab = CSharpLexer; + superClass = CSharpParserBase; +} // entry point compilation_unit - : BYTE_ORDER_MARK? extern_alias_directives? using_directives? - global_attribute_section* namespace_member_declarations? EOF - ; + : BYTE_ORDER_MARK? extern_alias_directives? using_directives? global_attribute_section* namespace_member_declarations? EOF + ; //B.2 Syntactic grammar //B.2.1 Basic concepts -namespace_or_type_name - : (identifier type_argument_list? | qualified_alias_member) ('.' identifier type_argument_list?)* - ; +namespace_or_type_name + : (identifier type_argument_list? | qualified_alias_member) ( + '.' identifier type_argument_list? + )* + ; //B.2.2 Types type_ - : base_type ('?' | rank_specifier | '*')* - ; + : base_type ('?' | rank_specifier | '*')* + ; base_type - : simple_type - | class_type // represents types: enum, class, interface, delegate, type_parameter - | VOID '*' - | tuple_type - ; + : simple_type + | class_type // represents types: enum, class, interface, delegate, type_parameter + | VOID '*' + | tuple_type + ; tuple_type : '(' tuple_element (',' tuple_element)+ ')' @@ -40,123 +47,133 @@ tuple_element : type_ identifier? ; -simple_type - : numeric_type - | BOOL - ; - -numeric_type - : integral_type - | floating_point_type - | DECIMAL - ; - -integral_type - : SBYTE - | BYTE - | SHORT - | USHORT - | INT - | UINT - | LONG - | ULONG - | CHAR - ; - -floating_point_type - : FLOAT - | DOUBLE - ; +simple_type + : numeric_type + | BOOL + ; + +numeric_type + : integral_type + | floating_point_type + | DECIMAL + ; + +integral_type + : SBYTE + | BYTE + | SHORT + | USHORT + | INT + | UINT + | LONG + | ULONG + | CHAR + ; + +floating_point_type + : FLOAT + | DOUBLE + ; /** namespace_or_type_name, OBJECT, STRING */ -class_type - : namespace_or_type_name - | OBJECT - | DYNAMIC - | STRING - ; +class_type + : namespace_or_type_name + | OBJECT + | DYNAMIC + | STRING + ; -type_argument_list - : '<' type_ ( ',' type_)* '>' - ; +type_argument_list + : '<' type_ (',' type_)* '>' + ; //B.2.4 Expressions -argument_list - : argument ( ',' argument)* - ; +argument_list + : argument (',' argument)* + ; argument - : (identifier ':')? refout=(REF | OUT | IN)? (VAR | type_)? expression - ; + : (identifier ':')? refout = (REF | OUT | IN)? (expression | (VAR | type_) expression) + ; expression - : assignment - | non_assignment_expression - | REF non_assignment_expression - ; + : assignment + | non_assignment_expression + | REF non_assignment_expression + ; non_assignment_expression - : lambda_expression - | query_expression - | conditional_expression - ; + : lambda_expression + | query_expression + | conditional_expression + ; assignment - : unary_expression assignment_operator expression - | unary_expression '??=' throwable_expression - ; + : unary_expression assignment_operator expression + | unary_expression '??=' throwable_expression + ; assignment_operator - : '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | right_shift_assignment - ; + : '=' + | '+=' + | '-=' + | '*=' + | '/=' + | '%=' + | '&=' + | '|=' + | '^=' + | '<<=' + | right_shift_assignment + ; conditional_expression - : null_coalescing_expression ('?' throwable_expression ':' throwable_expression)? - ; + : null_coalescing_expression ('?' throwable_expression ':' throwable_expression)? + ; null_coalescing_expression - : conditional_or_expression ('??' (null_coalescing_expression | throw_expression))? - ; + : conditional_or_expression ('??' (null_coalescing_expression | throw_expression))? + ; conditional_or_expression - : conditional_and_expression (OP_OR conditional_and_expression)* - ; + : conditional_and_expression (OP_OR conditional_and_expression)* + ; conditional_and_expression - : inclusive_or_expression (OP_AND inclusive_or_expression)* - ; + : inclusive_or_expression (OP_AND inclusive_or_expression)* + ; inclusive_or_expression - : exclusive_or_expression ('|' exclusive_or_expression)* - ; + : exclusive_or_expression ('|' exclusive_or_expression)* + ; exclusive_or_expression - : and_expression ('^' and_expression)* - ; + : and_expression ('^' and_expression)* + ; and_expression - : equality_expression ('&' equality_expression)* - ; + : equality_expression ('&' equality_expression)* + ; equality_expression - : relational_expression ((OP_EQ | OP_NE) relational_expression)* - ; + : relational_expression ((OP_EQ | OP_NE) relational_expression)* + ; relational_expression - : shift_expression (('<' | '>' | '<=' | '>=') shift_expression | IS isType | AS type_)* - ; + : shift_expression (('<' | '>' | '<=' | '>=') shift_expression | IS isType | AS type_)* + ; shift_expression - : additive_expression (('<<' | right_shift) additive_expression)* - ; + : additive_expression (('<<' | right_shift) additive_expression)* + ; additive_expression - : multiplicative_expression (('+' | '-') multiplicative_expression)* - ; + : multiplicative_expression (('+' | '-') multiplicative_expression)* + ; multiplicative_expression - : switch_expression (('*' | '/' | '%') switch_expression)* - ; + : switch_expression (('*' | '/' | '%') switch_expression)* + ; switch_expression : range_expression ('switch' '{' (switch_expression_arms ','?)? '}')? @@ -177,243 +194,266 @@ range_expression // https://msdn.microsoft.com/library/6a71f45d(v=vs.110).aspx unary_expression - : primary_expression - | '+' unary_expression - | '-' unary_expression - | BANG unary_expression - | '~' unary_expression - | '++' unary_expression - | '--' unary_expression - | OPEN_PARENS type_ CLOSE_PARENS unary_expression - | AWAIT unary_expression // C# 5 - | '&' unary_expression - | '*' unary_expression - | '^' unary_expression // C# 8 ranges - ; - -primary_expression // Null-conditional operators C# 6: https://msdn.microsoft.com/en-us/library/dn986595.aspx - : pe=primary_expression_start '!'? bracket_expression* '!'? - (((member_access | method_invocation | '++' | '--' | '->' identifier) '!'?) bracket_expression* '!'?)* - ; + : cast_expression + | primary_expression + | '+' unary_expression + | '-' unary_expression + | BANG unary_expression + | '~' unary_expression + | '++' unary_expression + | '--' unary_expression + | AWAIT unary_expression // C# 5 + | '&' unary_expression + | '*' unary_expression + | '^' unary_expression // C# 8 ranges + ; + +cast_expression + : OPEN_PARENS type_ CLOSE_PARENS unary_expression + ; + +primary_expression // Null-conditional operators C# 6: https://msdn.microsoft.com/en-us/library/dn986595.aspx + : pe = primary_expression_start '!'? bracket_expression* '!'? ( + (member_access | method_invocation | '++' | '--' | '->' identifier) '!'? bracket_expression* '!'? + )* + ; primary_expression_start - : literal #literalExpression - | identifier type_argument_list? #simpleNameExpression - | OPEN_PARENS expression CLOSE_PARENS #parenthesisExpressions - | predefined_type #memberAccessExpression - | qualified_alias_member #memberAccessExpression - | LITERAL_ACCESS #literalAccessExpression - | THIS #thisReferenceExpression - | BASE ('.' identifier type_argument_list? | '[' expression_list ']') #baseAccessExpression - | NEW (type_ (object_creation_expression - | object_or_collection_initializer - | '[' expression_list ']' rank_specifier* array_initializer? - | rank_specifier+ array_initializer) - | anonymous_object_initializer - | rank_specifier array_initializer) #objectCreationExpression - | OPEN_PARENS argument ( ',' argument )+ CLOSE_PARENS #tupleExpression - | TYPEOF OPEN_PARENS (unbound_type_name | type_ | VOID) CLOSE_PARENS #typeofExpression - | CHECKED OPEN_PARENS expression CLOSE_PARENS #checkedExpression - | UNCHECKED OPEN_PARENS expression CLOSE_PARENS #uncheckedExpression - | DEFAULT (OPEN_PARENS type_ CLOSE_PARENS)? #defaultValueExpression - | ASYNC? DELEGATE (OPEN_PARENS explicit_anonymous_function_parameter_list? CLOSE_PARENS)? block #anonymousMethodExpression - | SIZEOF OPEN_PARENS type_ CLOSE_PARENS #sizeofExpression - // C# 6: https://msdn.microsoft.com/en-us/library/dn986596.aspx - | NAMEOF OPEN_PARENS (identifier '.')* identifier CLOSE_PARENS #nameofExpression - ; + : literal # literalExpression + | identifier type_argument_list? # simpleNameExpression + | OPEN_PARENS expression CLOSE_PARENS # parenthesisExpressions + | predefined_type # memberAccessExpression + | qualified_alias_member # memberAccessExpression + | LITERAL_ACCESS # literalAccessExpression + | THIS # thisReferenceExpression + | BASE ('.' identifier type_argument_list? | '[' expression_list ']') # baseAccessExpression + | NEW ( + type_ ( + object_creation_expression + | object_or_collection_initializer + | '[' expression_list ']' rank_specifier* array_initializer? + | rank_specifier+ array_initializer + ) + | anonymous_object_initializer + | rank_specifier array_initializer + ) # objectCreationExpression + | OPEN_PARENS argument ( ',' argument)+ CLOSE_PARENS # tupleExpression + | TYPEOF OPEN_PARENS (unbound_type_name | type_ | VOID) CLOSE_PARENS # typeofExpression + | CHECKED OPEN_PARENS expression CLOSE_PARENS # checkedExpression + | UNCHECKED OPEN_PARENS expression CLOSE_PARENS # uncheckedExpression + | DEFAULT (OPEN_PARENS type_ CLOSE_PARENS)? # defaultValueExpression + | ASYNC? DELEGATE (OPEN_PARENS explicit_anonymous_function_parameter_list? CLOSE_PARENS)? block # anonymousMethodExpression + | SIZEOF OPEN_PARENS type_ CLOSE_PARENS # sizeofExpression + // C# 6: https://msdn.microsoft.com/en-us/library/dn986596.aspx + | NAMEOF OPEN_PARENS (identifier '.')* identifier CLOSE_PARENS # nameofExpression + ; throwable_expression - : expression - | throw_expression - ; + : expression + | throw_expression + ; throw_expression - : THROW expression - ; + : THROW expression + ; member_access - : '?'? '.' identifier type_argument_list? - ; + : '?'? '.' identifier type_argument_list? + ; bracket_expression - : '?'? '[' indexer_argument ( ',' indexer_argument)* ']' - ; + : '?'? '[' indexer_argument (',' indexer_argument)* ']' + ; indexer_argument - : (identifier ':')? expression - ; + : (identifier ':')? expression + ; predefined_type - : BOOL | BYTE | CHAR | DECIMAL | DOUBLE | FLOAT | INT | LONG - | OBJECT | SBYTE | SHORT | STRING | UINT | ULONG | USHORT - ; + : BOOL + | BYTE + | CHAR + | DECIMAL + | DOUBLE + | FLOAT + | INT + | LONG + | OBJECT + | SBYTE + | SHORT + | STRING + | UINT + | ULONG + | USHORT + ; expression_list - : expression (',' expression)* - ; + : expression (',' expression)* + ; object_or_collection_initializer - : object_initializer - | collection_initializer - ; + : object_initializer + | collection_initializer + ; object_initializer - : OPEN_BRACE (member_initializer_list ','?)? CLOSE_BRACE - ; + : OPEN_BRACE (member_initializer_list ','?)? CLOSE_BRACE + ; member_initializer_list - : member_initializer (',' member_initializer)* - ; + : member_initializer (',' member_initializer)* + ; member_initializer - : (identifier | '[' expression ']') '=' initializer_value // C# 6 - ; + : (identifier | '[' expression ']') '=' initializer_value // C# 6 + ; initializer_value - : expression - | object_or_collection_initializer - ; + : expression + | object_or_collection_initializer + ; collection_initializer - : OPEN_BRACE element_initializer (',' element_initializer)* ','? CLOSE_BRACE - ; + : OPEN_BRACE element_initializer (',' element_initializer)* ','? CLOSE_BRACE + ; element_initializer - : non_assignment_expression - | OPEN_BRACE expression_list CLOSE_BRACE - ; + : non_assignment_expression + | OPEN_BRACE expression_list CLOSE_BRACE + ; anonymous_object_initializer - : OPEN_BRACE (member_declarator_list ','?)? CLOSE_BRACE - ; + : OPEN_BRACE (member_declarator_list ','?)? CLOSE_BRACE + ; member_declarator_list - : member_declarator ( ',' member_declarator)* - ; + : member_declarator (',' member_declarator)* + ; member_declarator - : primary_expression - | identifier '=' expression - ; + : primary_expression + | identifier '=' expression + ; unbound_type_name - : identifier ( generic_dimension_specifier? | '::' identifier generic_dimension_specifier?) - ('.' identifier generic_dimension_specifier?)* - ; + : identifier (generic_dimension_specifier? | '::' identifier generic_dimension_specifier?) ( + '.' identifier generic_dimension_specifier? + )* + ; generic_dimension_specifier - : '<' ','* '>' - ; + : '<' ','* '>' + ; isType - : base_type (rank_specifier | '*')* '?'? isTypePatternArms? identifier? - ; + : base_type (rank_specifier | '*')* '?'? isTypePatternArms? identifier? + ; isTypePatternArms - : '{' isTypePatternArm (',' isTypePatternArm)* '}' - ; + : '{' isTypePatternArm (',' isTypePatternArm)* '}' + ; isTypePatternArm - : identifier ':' expression - ; + : identifier ':' expression + ; lambda_expression - : ASYNC? anonymous_function_signature right_arrow anonymous_function_body - ; + : ASYNC? anonymous_function_signature right_arrow anonymous_function_body + ; anonymous_function_signature - : OPEN_PARENS CLOSE_PARENS - | OPEN_PARENS explicit_anonymous_function_parameter_list CLOSE_PARENS - | OPEN_PARENS implicit_anonymous_function_parameter_list CLOSE_PARENS - | identifier - ; + : OPEN_PARENS CLOSE_PARENS + | OPEN_PARENS explicit_anonymous_function_parameter_list CLOSE_PARENS + | OPEN_PARENS implicit_anonymous_function_parameter_list CLOSE_PARENS + | identifier + ; explicit_anonymous_function_parameter_list - : explicit_anonymous_function_parameter ( ',' explicit_anonymous_function_parameter)* - ; + : explicit_anonymous_function_parameter (',' explicit_anonymous_function_parameter)* + ; explicit_anonymous_function_parameter - : refout=(REF | OUT | IN)? type_ identifier - ; + : refout = (REF | OUT | IN)? type_ identifier + ; implicit_anonymous_function_parameter_list - : identifier (',' identifier)* - ; + : identifier (',' identifier)* + ; anonymous_function_body - : throwable_expression - | block - ; + : throwable_expression + | block + ; query_expression - : from_clause query_body - ; + : from_clause query_body + ; from_clause - : FROM type_? identifier IN expression - ; + : FROM type_? identifier IN expression + ; query_body - : query_body_clause* select_or_group_clause query_continuation? - ; + : query_body_clause* select_or_group_clause query_continuation? + ; query_body_clause - : from_clause - | let_clause - | where_clause - | combined_join_clause - | orderby_clause - ; + : from_clause + | let_clause + | where_clause + | combined_join_clause + | orderby_clause + ; let_clause - : LET identifier '=' expression - ; + : LET identifier '=' expression + ; where_clause - : WHERE expression - ; + : WHERE expression + ; combined_join_clause - : JOIN type_? identifier IN expression ON expression EQUALS expression (INTO identifier)? - ; + : JOIN type_? identifier IN expression ON expression EQUALS expression (INTO identifier)? + ; orderby_clause - : ORDERBY ordering (',' ordering)* - ; + : ORDERBY ordering (',' ordering)* + ; ordering - : expression dire=(ASCENDING | DESCENDING)? - ; + : expression dir = (ASCENDING | DESCENDING)? + ; select_or_group_clause - : SELECT expression - | GROUP expression BY expression - ; + : SELECT expression + | GROUP expression BY expression + ; query_continuation - : INTO identifier query_body - ; + : INTO identifier query_body + ; //B.2.5 Statements statement - : labeled_Statement - | declarationStatement - | embedded_statement - ; + : labeled_Statement + | declarationStatement + | embedded_statement + ; declarationStatement - : local_variable_declaration ';' - | local_constant_declaration ';' - | local_function_declaration - ; + : local_variable_declaration ';' + | local_constant_declaration ';' + | local_function_declaration + ; local_function_declaration : local_function_header local_function_body ; local_function_header - : local_function_modifiers? return_type identifier type_parameter_list? - OPEN_PARENS formal_parameter_list? CLOSE_PARENS type_parameter_constraints_clauses? + : local_function_modifiers? return_type identifier type_parameter_list? OPEN_PARENS formal_parameter_list? CLOSE_PARENS + type_parameter_constraints_clauses? ; local_function_modifiers @@ -427,819 +467,843 @@ local_function_body ; labeled_Statement - : identifier ':' statement - ; + : identifier ':' statement + ; embedded_statement - : block - | simple_embedded_statement - ; + : block + | simple_embedded_statement + ; simple_embedded_statement - : ';' #theEmptyStatement - | expression ';' #expressionStatement + : ';' # theEmptyStatement + | expression ';' # expressionStatement - // selection statements - | IF OPEN_PARENS expression CLOSE_PARENS if_body (ELSE if_body)? #ifStatement - | SWITCH OPEN_PARENS expression CLOSE_PARENS OPEN_BRACE switch_section* CLOSE_BRACE #switchStatement + // selection statements + | IF OPEN_PARENS expression CLOSE_PARENS if_body (ELSE if_body)? # ifStatement + | SWITCH OPEN_PARENS expression CLOSE_PARENS OPEN_BRACE switch_section* CLOSE_BRACE # switchStatement // iteration statements - | WHILE OPEN_PARENS expression CLOSE_PARENS embedded_statement #whileStatement - | DO embedded_statement WHILE OPEN_PARENS expression CLOSE_PARENS ';' #doStatement - | FOR OPEN_PARENS for_initializer? ';' expression? ';' for_iterator? CLOSE_PARENS embedded_statement #forStatement - | AWAIT? FOREACH OPEN_PARENS local_variable_type identifier IN expression CLOSE_PARENS embedded_statement #foreachStatement + | WHILE OPEN_PARENS expression CLOSE_PARENS embedded_statement # whileStatement + | DO embedded_statement WHILE OPEN_PARENS expression CLOSE_PARENS ';' # doStatement + | FOR OPEN_PARENS for_initializer? ';' expression? ';' for_iterator? CLOSE_PARENS embedded_statement # forStatement + | AWAIT? FOREACH OPEN_PARENS local_variable_type identifier IN expression CLOSE_PARENS embedded_statement # foreachStatement // jump statements - | BREAK ';' #breakStatement - | CONTINUE ';' #continueStatement - | GOTO (identifier | CASE expression | DEFAULT) ';' #gotoStatement - | RETURN expression? ';' #returnStatement - | THROW expression? ';' #throwStatement - - | TRY block (catch_clauses finally_clause? | finally_clause) #tryStatement - | CHECKED block #checkedStatement - | UNCHECKED block #uncheckedStatement - | LOCK OPEN_PARENS expression CLOSE_PARENS embedded_statement #lockStatement - | USING OPEN_PARENS resource_acquisition CLOSE_PARENS embedded_statement #usingStatement - | YIELD (RETURN expression | BREAK) ';' #yieldStatement - - // unsafe statements - | UNSAFE block #unsafeStatement - | FIXED OPEN_PARENS pointer_type fixed_pointer_declarators CLOSE_PARENS embedded_statement #fixedStatement - ; + | BREAK ';' # breakStatement + | CONTINUE ';' # continueStatement + | GOTO (identifier | CASE expression | DEFAULT) ';' # gotoStatement + | RETURN expression? ';' # returnStatement + | THROW expression? ';' # throwStatement + | TRY block (catch_clauses finally_clause? | finally_clause) # tryStatement + | CHECKED block # checkedStatement + | UNCHECKED block # uncheckedStatement + | LOCK OPEN_PARENS expression CLOSE_PARENS embedded_statement # lockStatement + | USING OPEN_PARENS resource_acquisition CLOSE_PARENS embedded_statement # usingStatement + | YIELD (RETURN expression | BREAK) ';' # yieldStatement + + // unsafe statements + | UNSAFE block # unsafeStatement + | FIXED OPEN_PARENS pointer_type fixed_pointer_declarators CLOSE_PARENS embedded_statement # fixedStatement + ; block - : OPEN_BRACE statement_list? CLOSE_BRACE - ; + : OPEN_BRACE statement_list? CLOSE_BRACE + ; local_variable_declaration - : (USING | REF | REF READONLY)? local_variable_type local_variable_declarator ( ',' local_variable_declarator)* - | FIXED pointer_type fixed_pointer_declarators - ; + : (USING | REF | REF READONLY)? local_variable_type local_variable_declarator ( + ',' local_variable_declarator { this.IsLocalVariableDeclaration() }? + )* + | FIXED pointer_type fixed_pointer_declarators + ; -local_variable_type - : VAR - | type_ - ; +local_variable_type + : VAR + | type_ + ; local_variable_declarator - : identifier ('=' REF? local_variable_initializer)? - ; + : identifier ('=' REF? local_variable_initializer)? + ; local_variable_initializer - : expression - | array_initializer - | stackalloc_initializer - ; + : expression + | array_initializer + | stackalloc_initializer + ; local_constant_declaration - : CONST type_ constant_declarators - ; + : CONST type_ constant_declarators + ; if_body - : block - | simple_embedded_statement - ; + : block + | simple_embedded_statement + ; switch_section - : switch_label+ statement_list - ; + : switch_label+ statement_list + ; switch_label - : CASE expression case_guard? ':' - | DEFAULT ':' - ; + : CASE expression case_guard? ':' + | DEFAULT ':' + ; case_guard - : WHEN expression - ; + : WHEN expression + ; statement_list - : statement+ - ; + : statement+ + ; for_initializer - : local_variable_declaration - | expression (',' expression)* - ; + : local_variable_declaration + | expression (',' expression)* + ; for_iterator - : expression (',' expression)* - ; + : expression (',' expression)* + ; catch_clauses - : specific_catch_clause (specific_catch_clause)* general_catch_clause? - | general_catch_clause - ; + : specific_catch_clause specific_catch_clause* general_catch_clause? + | general_catch_clause + ; specific_catch_clause - : CATCH OPEN_PARENS class_type identifier? CLOSE_PARENS exception_filter? block - ; + : CATCH OPEN_PARENS class_type identifier? CLOSE_PARENS exception_filter? block + ; general_catch_clause - : CATCH exception_filter? block - ; + : CATCH exception_filter? block + ; exception_filter // C# 6 - : WHEN OPEN_PARENS expression CLOSE_PARENS - ; + : WHEN OPEN_PARENS expression CLOSE_PARENS + ; finally_clause - : FINALLY block - ; + : FINALLY block + ; resource_acquisition - : local_variable_declaration - | expression - ; + : local_variable_declaration + | expression + ; //B.2.6 Namespaces; namespace_declaration - : NAMESPACE qi=qualified_identifier namespace_body ';'? - ; + : NAMESPACE qi = qualified_identifier namespace_body ';'? + ; qualified_identifier - : identifier ( '.' identifier )* - ; + : identifier ('.' identifier)* + ; namespace_body - : OPEN_BRACE extern_alias_directives? using_directives? namespace_member_declarations? CLOSE_BRACE - ; + : OPEN_BRACE extern_alias_directives? using_directives? namespace_member_declarations? CLOSE_BRACE + ; extern_alias_directives - : extern_alias_directive+ - ; + : extern_alias_directive+ + ; extern_alias_directive - : EXTERN ALIAS identifier ';' - ; + : EXTERN ALIAS identifier ';' + ; using_directives - : using_directive+ - ; + : using_directive+ + ; using_directive - : USING identifier '=' namespace_or_type_name ';' #usingAliasDirective - | USING namespace_or_type_name ';' #usingNamespaceDirective - // C# 6: https://msdn.microsoft.com/en-us/library/ms228593.aspx - | USING STATIC namespace_or_type_name ';' #usingStaticDirective - ; + : USING identifier '=' namespace_or_type_name ';' # usingAliasDirective + | USING namespace_or_type_name ';' # usingNamespaceDirective + // C# 6: https://msdn.microsoft.com/en-us/library/ms228593.aspx + | USING STATIC namespace_or_type_name ';' # usingStaticDirective + ; namespace_member_declarations - : namespace_member_declaration+ - ; + : namespace_member_declaration+ + ; namespace_member_declaration - : namespace_declaration - | type_declaration - ; + : namespace_declaration + | type_declaration + ; type_declaration - : attributes? all_member_modifiers? - (class_definition | struct_definition | interface_definition | enum_definition | delegate_definition) - ; + : attributes? all_member_modifiers? ( + class_definition + | struct_definition + | interface_definition + | enum_definition + | delegate_definition + ) + ; qualified_alias_member - : identifier '::' identifier type_argument_list? - ; + : identifier '::' identifier type_argument_list? + ; //B.2.7 Classes; type_parameter_list - : '<' type_parameter (',' type_parameter)* '>' - ; + : '<' type_parameter (',' type_parameter)* '>' + ; type_parameter - : attributes? identifier - ; + : attributes? identifier + ; class_base - : ':' class_type (',' namespace_or_type_name)* - ; + : ':' class_type (',' namespace_or_type_name)* + ; interface_type_list - : namespace_or_type_name (',' namespace_or_type_name)* - ; + : namespace_or_type_name (',' namespace_or_type_name)* + ; type_parameter_constraints_clauses - : type_parameter_constraints_clause+ - ; + : type_parameter_constraints_clause+ + ; type_parameter_constraints_clause - : WHERE identifier ':' type_parameter_constraints - ; + : WHERE identifier ':' type_parameter_constraints + ; type_parameter_constraints - : constructor_constraint - | primary_constraint (',' secondary_constraints)? (',' constructor_constraint)? - ; + : constructor_constraint + | primary_constraint (',' secondary_constraints)? (',' constructor_constraint)? + ; primary_constraint - : class_type - | CLASS '?'? - | STRUCT - | UNMANAGED - ; + : class_type + | CLASS '?'? + | STRUCT + | UNMANAGED + ; // namespace_or_type_name includes identifier secondary_constraints - : namespace_or_type_name (',' namespace_or_type_name)* - ; + : namespace_or_type_name (',' namespace_or_type_name)* + ; constructor_constraint - : NEW OPEN_PARENS CLOSE_PARENS - ; + : NEW OPEN_PARENS CLOSE_PARENS + ; class_body - : OPEN_BRACE class_member_declarations? CLOSE_BRACE - ; + : OPEN_BRACE class_member_declarations? CLOSE_BRACE + ; class_member_declarations - : class_member_declaration+ - ; + : class_member_declaration+ + ; class_member_declaration - : attributes? all_member_modifiers? (common_member_declaration | destructor_definition) - ; + : attributes? all_member_modifiers? (common_member_declaration | destructor_definition) + ; all_member_modifiers - : all_member_modifier+ - ; + : all_member_modifier+ + ; all_member_modifier - : NEW - | PUBLIC - | PROTECTED - | INTERNAL - | PRIVATE - | READONLY - | VOLATILE - | VIRTUAL - | SEALED - | OVERRIDE - | ABSTRACT - | STATIC - | UNSAFE - | EXTERN - | PARTIAL - | ASYNC // C# 5 - ; + : NEW + | PUBLIC + | PROTECTED + | INTERNAL + | PRIVATE + | READONLY + | VOLATILE + | VIRTUAL + | SEALED + | OVERRIDE + | ABSTRACT + | STATIC + | UNSAFE + | EXTERN + | PARTIAL + | ASYNC // C# 5 + ; // represents the intersection of struct_member_declaration and class_member_declaration common_member_declaration - : constant_declaration - | typed_member_declaration - | event_declaration - | conversion_operator_declarator (body | right_arrow throwable_expression ';') // C# 6 - | constructor_declaration - | VOID method_declaration - | class_definition - | struct_definition - | interface_definition - | enum_definition - | delegate_definition - ; + : constant_declaration + | typed_member_declaration + | event_declaration + | conversion_operator_declarator (body | right_arrow throwable_expression ';') // C# 6 + | constructor_declaration + | VOID method_declaration + | class_definition + | struct_definition + | interface_definition + | enum_definition + | delegate_definition + ; typed_member_declaration - : (REF | READONLY REF | REF READONLY)? type_ - ( namespace_or_type_name '.' indexer_declaration - | method_declaration - | property_declaration - | indexer_declaration - | operator_declaration - | field_declaration - ) - ; + : (REF | READONLY REF | REF READONLY)? type_ ( + namespace_or_type_name '.' indexer_declaration + | method_declaration + | property_declaration + | indexer_declaration + | operator_declaration + | field_declaration + ) + ; constant_declarators - : constant_declarator (',' constant_declarator)* - ; + : constant_declarator (',' constant_declarator)* + ; constant_declarator - : identifier '=' expression - ; + : identifier '=' expression + ; variable_declarators - : variable_declarator (',' variable_declarator)* - ; + : variable_declarator (',' variable_declarator)* + ; variable_declarator - : identifier ('=' variable_initializer)? - ; + : identifier ('=' variable_initializer)? + ; variable_initializer - : expression - | array_initializer - ; + : expression + | array_initializer + ; return_type - : type_ - | VOID - ; + : type_ + | VOID + ; member_name - : namespace_or_type_name - ; + : namespace_or_type_name + ; method_body - : block - | ';' - ; + : block + | ';' + ; formal_parameter_list - : parameter_array - | fixed_parameters (',' parameter_array)? - ; + : parameter_array + | fixed_parameters (',' parameter_array)? + ; fixed_parameters - : fixed_parameter ( ',' fixed_parameter )* - ; + : fixed_parameter (',' fixed_parameter)* + ; fixed_parameter - : attributes? parameter_modifier? arg_declaration - | ARGLIST - ; + : attributes? parameter_modifier? arg_declaration + | ARGLIST + ; parameter_modifier - : REF - | OUT - | IN - | REF THIS - | IN THIS - | THIS - ; + : REF + | OUT + | IN + | REF THIS + | IN THIS + | THIS + ; parameter_array - : attributes? PARAMS array_type identifier - ; + : attributes? PARAMS array_type identifier + ; accessor_declarations - : attrs=attributes? mods=accessor_modifier? - (GET accessor_body set_accessor_declaration? | SET accessor_body get_accessor_declaration?) - ; + : attrs = attributes? mods = accessor_modifier? ( + GET accessor_body set_accessor_declaration? + | SET accessor_body get_accessor_declaration? + ) + ; get_accessor_declaration - : attributes? accessor_modifier? GET accessor_body - ; + : attributes? accessor_modifier? GET accessor_body + ; set_accessor_declaration - : attributes? accessor_modifier? SET accessor_body - ; + : attributes? accessor_modifier? SET accessor_body + ; accessor_modifier - : PROTECTED - | INTERNAL - | PRIVATE - | PROTECTED INTERNAL - | INTERNAL PROTECTED - ; + : PROTECTED + | INTERNAL + | PRIVATE + | PROTECTED INTERNAL + | INTERNAL PROTECTED + ; accessor_body - : block - | ';' - ; + : block + | ';' + ; event_accessor_declarations - : attributes? (ADD block remove_accessor_declaration | REMOVE block add_accessor_declaration) - ; + : attributes? (ADD block remove_accessor_declaration | REMOVE block add_accessor_declaration) + ; add_accessor_declaration - : attributes? ADD block - ; + : attributes? ADD block + ; remove_accessor_declaration - : attributes? REMOVE block - ; + : attributes? REMOVE block + ; overloadable_operator - : '+' - | '-' - | BANG - | '~' - | '++' - | '--' - | TRUE - | FALSE - | '*' - | '/' - | '%' - | '&' - | '|' - | '^' - | '<<' - | right_shift - | OP_EQ - | OP_NE - | '>' - | '<' - | '>=' - | '<=' - ; + : '+' + | '-' + | BANG + | '~' + | '++' + | '--' + | TRUE + | FALSE + | '*' + | '/' + | '%' + | '&' + | '|' + | '^' + | '<<' + | right_shift + | OP_EQ + | OP_NE + | '>' + | '<' + | '>=' + | '<=' + ; conversion_operator_declarator - : (IMPLICIT | EXPLICIT) OPERATOR type_ OPEN_PARENS arg_declaration CLOSE_PARENS - ; + : (IMPLICIT | EXPLICIT) OPERATOR type_ OPEN_PARENS arg_declaration CLOSE_PARENS + ; constructor_initializer - : ':' (BASE | THIS) OPEN_PARENS argument_list? CLOSE_PARENS - ; + : ':' (BASE | THIS) OPEN_PARENS argument_list? CLOSE_PARENS + ; body - : block - | ';' - ; + : block + | ';' + ; //B.2.8 Structs struct_interfaces - : ':' interface_type_list - ; + : ':' interface_type_list + ; struct_body - : OPEN_BRACE struct_member_declaration* CLOSE_BRACE - ; + : OPEN_BRACE struct_member_declaration* CLOSE_BRACE + ; struct_member_declaration - : attributes? all_member_modifiers? - (common_member_declaration | FIXED type_ fixed_size_buffer_declarator+ ';') - ; + : attributes? all_member_modifiers? ( + common_member_declaration + | FIXED type_ fixed_size_buffer_declarator+ ';' + ) + ; //B.2.9 Arrays array_type - : base_type (('*' | '?')* rank_specifier)+ - ; + : base_type (('*' | '?')* rank_specifier)+ + ; rank_specifier - : '[' ','* ']' - ; + : '[' ','* ']' + ; array_initializer - : OPEN_BRACE (variable_initializer (',' variable_initializer)* ','?)? CLOSE_BRACE - ; + : OPEN_BRACE (variable_initializer (',' variable_initializer)* ','?)? CLOSE_BRACE + ; //B.2.10 Interfaces variant_type_parameter_list - : '<' variant_type_parameter (',' variant_type_parameter)* '>' - ; + : '<' variant_type_parameter (',' variant_type_parameter)* '>' + ; variant_type_parameter - : attributes? variance_annotation? identifier - ; + : attributes? variance_annotation? identifier + ; variance_annotation - : IN | OUT - ; + : IN + | OUT + ; interface_base - : ':' interface_type_list - ; + : ':' interface_type_list + ; interface_body // ignored in csharp 8 - : OPEN_BRACE interface_member_declaration* CLOSE_BRACE - ; + : OPEN_BRACE interface_member_declaration* CLOSE_BRACE + ; interface_member_declaration - : attributes? NEW? - (UNSAFE? (REF | REF READONLY | READONLY REF)? type_ - ( identifier type_parameter_list? OPEN_PARENS formal_parameter_list? CLOSE_PARENS type_parameter_constraints_clauses? ';' - | identifier OPEN_BRACE interface_accessors CLOSE_BRACE - | THIS '[' formal_parameter_list ']' OPEN_BRACE interface_accessors CLOSE_BRACE) - | UNSAFE? VOID identifier type_parameter_list? OPEN_PARENS formal_parameter_list? CLOSE_PARENS type_parameter_constraints_clauses? ';' - | EVENT type_ identifier ';') - ; + : attributes? NEW? ( + UNSAFE? (REF | REF READONLY | READONLY REF)? type_ ( + identifier type_parameter_list? OPEN_PARENS formal_parameter_list? CLOSE_PARENS type_parameter_constraints_clauses? ';' + | identifier OPEN_BRACE interface_accessors CLOSE_BRACE + | THIS '[' formal_parameter_list ']' OPEN_BRACE interface_accessors CLOSE_BRACE + ) + | UNSAFE? VOID identifier type_parameter_list? OPEN_PARENS formal_parameter_list? CLOSE_PARENS type_parameter_constraints_clauses? ';' + | EVENT type_ identifier ';' + ) + ; interface_accessors - : attributes? (GET ';' (attributes? SET ';')? | SET ';' (attributes? GET ';')?) - ; + : attributes? (GET ';' (attributes? SET ';')? | SET ';' (attributes? GET ';')?) + ; //B.2.11 Enums enum_base - : ':' type_ - ; + : ':' type_ + ; enum_body - : OPEN_BRACE (enum_member_declaration (',' enum_member_declaration)* ','?)? CLOSE_BRACE - ; + : OPEN_BRACE (enum_member_declaration (',' enum_member_declaration)* ','?)? CLOSE_BRACE + ; enum_member_declaration - : attributes? identifier ('=' expression)? - ; + : attributes? identifier ('=' expression)? + ; //B.2.12 Delegates //B.2.13 Attributes global_attribute_section - : '[' global_attribute_target ':' attribute_list ','? ']' - ; + : '[' global_attribute_target ':' attribute_list ','? ']' + ; global_attribute_target - : keyword - | identifier - ; + : keyword + | identifier + ; attributes - : attribute_section+ - ; + : attribute_section+ + ; attribute_section - : '[' (attribute_target ':')? attribute_list ','? ']' - ; + : '[' (attribute_target ':')? attribute_list ','? ']' + ; attribute_target - : keyword - | identifier - ; + : keyword + | identifier + ; attribute_list - : attribute (',' attribute)* - ; + : attribute (',' attribute)* + ; attribute - : namespace_or_type_name (OPEN_PARENS (attribute_argument (',' attribute_argument)*)? CLOSE_PARENS)? - ; + : namespace_or_type_name ( + OPEN_PARENS (attribute_argument (',' attribute_argument)*)? CLOSE_PARENS + )? + ; attribute_argument - : (identifier ':')? expression - ; + : (identifier ':')? expression + ; //B.3 Grammar extensions for unsafe code pointer_type - : (simple_type | class_type) (rank_specifier | '?')* '*' - | VOID '*' - ; + : (simple_type | class_type) (rank_specifier | '?')* '*' + | VOID '*' + ; fixed_pointer_declarators - : fixed_pointer_declarator (',' fixed_pointer_declarator)* - ; + : fixed_pointer_declarator (',' fixed_pointer_declarator)* + ; fixed_pointer_declarator - : identifier '=' fixed_pointer_initializer - ; + : identifier '=' fixed_pointer_initializer + ; fixed_pointer_initializer - : '&'? expression - | stackalloc_initializer - ; + : '&'? expression + | stackalloc_initializer + ; fixed_size_buffer_declarator - : identifier '[' expression ']' - ; + : identifier '[' expression ']' + ; stackalloc_initializer - : STACKALLOC type_ '[' expression ']' - | STACKALLOC type_? '[' expression? ']' OPEN_BRACE expression (',' expression)* ','? CLOSE_BRACE - ; + : STACKALLOC type_ '[' expression ']' + | STACKALLOC type_? '[' expression? ']' OPEN_BRACE expression (',' expression)* ','? CLOSE_BRACE + ; right_arrow - : first='=' second='>' {$first.index + 1 == $second.index}? // Nothing between the tokens? - ; + : first = '=' second = '>' {$first.index + 1 == $second.index}? // Nothing between the tokens? + ; right_shift - : first='>' second='>' {$first.index + 1 == $second.index}? // Nothing between the tokens? - ; + : first = '>' second = '>' {$first.index + 1 == $second.index}? // Nothing between the tokens? + ; right_shift_assignment - : first='>' second='>=' {$first.index + 1 == $second.index}? // Nothing between the tokens? - ; + : first = '>' second = '>=' {$first.index + 1 == $second.index}? // Nothing between the tokens? + ; literal - : boolean_literal - | string_literal - | INTEGER_LITERAL - | HEX_INTEGER_LITERAL - | BIN_INTEGER_LITERAL - | REAL_LITERAL - | CHARACTER_LITERAL - | NULL - ; + : boolean_literal + | string_literal + | INTEGER_LITERAL + | HEX_INTEGER_LITERAL + | BIN_INTEGER_LITERAL + | REAL_LITERAL + | CHARACTER_LITERAL + | NULL_ + ; boolean_literal - : TRUE - | FALSE - ; + : TRUE + | FALSE + ; string_literal - : interpolated_regular_string - | interpolated_verbatium_string - | REGULAR_STRING - | VERBATIUM_STRING - ; + : interpolated_regular_string + | interpolated_verbatium_string + | REGULAR_STRING + | VERBATIUM_STRING + ; interpolated_regular_string - : INTERPOLATED_REGULAR_STRING_START interpolated_regular_string_part* DOUBLE_QUOTE_INSIDE - ; - + : INTERPOLATED_REGULAR_STRING_START interpolated_regular_string_part* DOUBLE_QUOTE_INSIDE + ; interpolated_verbatium_string - : INTERPOLATED_VERBATIUM_STRING_START interpolated_verbatium_string_part* DOUBLE_QUOTE_INSIDE - ; + : INTERPOLATED_VERBATIUM_STRING_START interpolated_verbatium_string_part* DOUBLE_QUOTE_INSIDE + ; interpolated_regular_string_part - : interpolated_string_expression - | DOUBLE_CURLY_INSIDE - | REGULAR_CHAR_INSIDE - | REGULAR_STRING_INSIDE - ; + : interpolated_string_expression + | DOUBLE_CURLY_INSIDE + | REGULAR_CHAR_INSIDE + | REGULAR_STRING_INSIDE + ; interpolated_verbatium_string_part - : interpolated_string_expression - | DOUBLE_CURLY_INSIDE - | VERBATIUM_DOUBLE_QUOTE_INSIDE - | VERBATIUM_INSIDE_STRING - ; + : interpolated_string_expression + | DOUBLE_CURLY_INSIDE + | VERBATIUM_DOUBLE_QUOTE_INSIDE + | VERBATIUM_INSIDE_STRING + ; interpolated_string_expression - : expression (',' expression)* (':' FORMAT_STRING+)? - ; + : expression (',' expression)* (':' FORMAT_STRING+)? + ; //B.1.7 Keywords keyword - : ABSTRACT - | AS - | BASE - | BOOL - | BREAK - | BYTE - | CASE - | CATCH - | CHAR - | CHECKED - | CLASS - | CONST - | CONTINUE - | DECIMAL - | DEFAULT - | DELEGATE - | DO - | DOUBLE - | ELSE - | ENUM - | EVENT - | EXPLICIT - | EXTERN - | FALSE - | FINALLY - | FIXED - | FLOAT - | FOR - | FOREACH - | GOTO - | IF - | IMPLICIT - | IN - | INT - | INTERFACE - | INTERNAL - | IS - | LOCK - | LONG - | NAMESPACE - | NEW - | NULL - | OBJECT - | OPERATOR - | OUT - | OVERRIDE - | PARAMS - | PRIVATE - | PROTECTED - | PUBLIC - | READONLY - | REF - | RETURN - | SBYTE - | SEALED - | SHORT - | SIZEOF - | STACKALLOC - | STATIC - | STRING - | STRUCT - | SWITCH - | THIS - | THROW - | TRUE - | TRY - | TYPEOF - | UINT - | ULONG - | UNCHECKED - | UNMANAGED - | UNSAFE - | USHORT - | USING - | VIRTUAL - | VOID - | VOLATILE - | WHILE - ; + : ABSTRACT + | AS + | BASE + | BOOL + | BREAK + | BYTE + | CASE + | CATCH + | CHAR + | CHECKED + | CLASS + | CONST + | CONTINUE + | DECIMAL + | DEFAULT + | DELEGATE + | DO + | DOUBLE + | ELSE + | ENUM + | EVENT + | EXPLICIT + | EXTERN + | FALSE + | FINALLY + | FIXED + | FLOAT + | FOR + | FOREACH + | GOTO + | IF + | IMPLICIT + | IN + | INT + | INTERFACE + | INTERNAL + | IS + | LOCK + | LONG + | NAMESPACE + | NEW + | NULL_ + | OBJECT + | OPERATOR + | OUT + | OVERRIDE + | PARAMS + | PRIVATE + | PROTECTED + | PUBLIC + | READONLY + | REF + | RETURN + | SBYTE + | SEALED + | SHORT + | SIZEOF + | STACKALLOC + | STATIC + | STRING + | STRUCT + | SWITCH + | THIS + | THROW + | TRUE + | TRY + | TYPEOF + | UINT + | ULONG + | UNCHECKED + | UNMANAGED + | UNSAFE + | USHORT + | USING + | VIRTUAL + | VOID + | VOLATILE + | WHILE + ; // -------------------- extra rules for modularization -------------------------------- class_definition - : CLASS identifier type_parameter_list? class_base? type_parameter_constraints_clauses? - class_body ';'? - ; + : CLASS identifier type_parameter_list? class_base? type_parameter_constraints_clauses? class_body ';'? + ; struct_definition - : (READONLY | REF)? STRUCT identifier type_parameter_list? struct_interfaces? type_parameter_constraints_clauses? - struct_body ';'? - ; + : (READONLY | REF)? STRUCT identifier type_parameter_list? struct_interfaces? type_parameter_constraints_clauses? struct_body ';'? + ; interface_definition - : INTERFACE identifier variant_type_parameter_list? interface_base? - type_parameter_constraints_clauses? class_body ';'? - ; + : INTERFACE identifier variant_type_parameter_list? interface_base? type_parameter_constraints_clauses? class_body ';'? + ; enum_definition - : ENUM identifier enum_base? enum_body ';'? - ; + : ENUM identifier enum_base? enum_body ';'? + ; delegate_definition - : DELEGATE return_type identifier variant_type_parameter_list? - OPEN_PARENS formal_parameter_list? CLOSE_PARENS type_parameter_constraints_clauses? ';' - ; + : DELEGATE return_type identifier variant_type_parameter_list? OPEN_PARENS formal_parameter_list? CLOSE_PARENS type_parameter_constraints_clauses? + ';' + ; event_declaration - : EVENT type_ (variable_declarators ';' | member_name OPEN_BRACE event_accessor_declarations CLOSE_BRACE) - ; + : EVENT type_ ( + variable_declarators ';' + | member_name OPEN_BRACE event_accessor_declarations CLOSE_BRACE + ) + ; field_declaration - : variable_declarators ';' - ; + : variable_declarators ';' + ; property_declaration // Property initializer & lambda in properties C# 6 - : member_name (OPEN_BRACE accessor_declarations CLOSE_BRACE ('=' variable_initializer ';')? | right_arrow throwable_expression ';') - ; + : member_name ( + OPEN_BRACE accessor_declarations CLOSE_BRACE ('=' variable_initializer ';')? + | right_arrow throwable_expression ';' + ) + ; constant_declaration - : CONST type_ constant_declarators ';' - ; + : CONST type_ constant_declarators ';' + ; indexer_declaration // lamdas from C# 6 - : THIS '[' formal_parameter_list ']' (OPEN_BRACE accessor_declarations CLOSE_BRACE | right_arrow throwable_expression ';') - ; + : THIS '[' formal_parameter_list ']' ( + OPEN_BRACE accessor_declarations CLOSE_BRACE + | right_arrow throwable_expression ';' + ) + ; destructor_definition - : '~' identifier OPEN_PARENS CLOSE_PARENS body - ; + : '~' identifier OPEN_PARENS CLOSE_PARENS body + ; constructor_declaration - : identifier OPEN_PARENS formal_parameter_list? CLOSE_PARENS constructor_initializer? body - ; + : identifier OPEN_PARENS formal_parameter_list? CLOSE_PARENS constructor_initializer? body + ; method_declaration // lamdas from C# 6 - : method_member_name type_parameter_list? OPEN_PARENS formal_parameter_list? CLOSE_PARENS - type_parameter_constraints_clauses? (method_body | right_arrow throwable_expression ';') - ; + : method_member_name type_parameter_list? OPEN_PARENS formal_parameter_list? CLOSE_PARENS type_parameter_constraints_clauses? ( + method_body + | right_arrow throwable_expression ';' + ) + ; method_member_name - : (identifier | identifier '::' identifier) (type_argument_list? '.' identifier)* - ; + : (identifier | identifier '::' identifier) (type_argument_list? '.' identifier)* + ; operator_declaration // lamdas form C# 6 - : OPERATOR overloadable_operator OPEN_PARENS IN? arg_declaration - (',' IN? arg_declaration)? CLOSE_PARENS (body | right_arrow throwable_expression ';') - ; + : OPERATOR overloadable_operator OPEN_PARENS IN? arg_declaration (',' IN? arg_declaration)? CLOSE_PARENS ( + body + | right_arrow throwable_expression ';' + ) + ; arg_declaration - : type_ identifier ('=' expression)? - ; + : type_ identifier ('=' expression)? + ; method_invocation - : OPEN_PARENS argument_list? CLOSE_PARENS - ; + : OPEN_PARENS argument_list? CLOSE_PARENS + ; object_creation_expression - : OPEN_PARENS argument_list? CLOSE_PARENS object_or_collection_initializer? - ; + : OPEN_PARENS argument_list? CLOSE_PARENS object_or_collection_initializer? + ; identifier - : IDENTIFIER - | ADD - | ALIAS - | ARGLIST - | ASCENDING - | ASYNC - | AWAIT - | BY - | DESCENDING - | DYNAMIC - | EQUALS - | FROM - | GET - | GROUP - | INTO - | JOIN - | LET - | NAMEOF - | ON - | ORDERBY - | PARTIAL - | REMOVE - | SELECT - | SET - | UNMANAGED - | VAR - | WHEN - | WHERE - | YIELD - ; \ No newline at end of file + : IDENTIFIER + | ADD + | ALIAS + | ARGLIST + | ASCENDING + | ASYNC + | AWAIT + | BY + | DESCENDING + | DYNAMIC + | EQUALS + | FROM + | GET + | GROUP + | INTO + | JOIN + | LET + | NAMEOF + | ON + | ORDERBY + | PARTIAL + | REMOVE + | SELECT + | SET + | UNMANAGED + | VAR + | WHEN + | WHERE + | YIELD + ; \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.interp b/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.interp new file mode 100644 index 00000000..293eec45 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.interp @@ -0,0 +1,626 @@ +token literal names: +null +'\u00EF\u00BB\u00BF' +null +'/***/' +null +null +null +null +'#' +'abstract' +'add' +'alias' +'__arglist' +'as' +'ascending' +'async' +'await' +'base' +'bool' +'break' +'by' +'byte' +'case' +'catch' +'char' +'checked' +'class' +'const' +'continue' +'decimal' +'default' +'delegate' +'descending' +'do' +'double' +'dynamic' +'else' +'enum' +'equals' +'event' +'explicit' +'extern' +'false' +'finally' +'fixed' +'float' +'for' +'foreach' +'from' +'get' +'goto' +'group' +'if' +'implicit' +'in' +'int' +'interface' +'internal' +'into' +'is' +'join' +'let' +'lock' +'long' +'nameof' +'namespace' +'new' +'null' +'object' +'on' +'operator' +'orderby' +'out' +'override' +'params' +'partial' +'private' +'protected' +'public' +'readonly' +'ref' +'remove' +'return' +'sbyte' +'sealed' +'select' +'set' +'short' +'sizeof' +'stackalloc' +'static' +'string' +'struct' +'switch' +'this' +'throw' +'true' +'try' +'typeof' +'uint' +'ulong' +'unchecked' +'unmanaged' +'unsafe' +'ushort' +'using' +'var' +'virtual' +'void' +'volatile' +'when' +'where' +'while' +'yield' +null +null +null +null +null +null +null +null +null +null +null +'{' +'}' +'[' +']' +'(' +')' +'.' +',' +':' +';' +'+' +'-' +'*' +'/' +'%' +'&' +'|' +'^' +'!' +'~' +'=' +'<' +'>' +'?' +'::' +'??' +'++' +'--' +'&&' +'||' +'->' +'==' +'!=' +'<=' +'>=' +'+=' +'-=' +'*=' +'/=' +'%=' +'&=' +'|=' +'^=' +'<<' +'<<=' +'??=' +'..' +'{{' +null +null +null +null +null +null +null +null +null +null +'define' +'undef' +'elif' +'endif' +'line' +null +null +null +null +null +null +'hidden' +null +null +null +'}}' + +token symbolic names: +null +BYTE_ORDER_MARK +SINGLE_LINE_DOC_COMMENT +EMPTY_DELIMITED_DOC_COMMENT +DELIMITED_DOC_COMMENT +SINGLE_LINE_COMMENT +DELIMITED_COMMENT +WHITESPACES +SHARP +ABSTRACT +ADD +ALIAS +ARGLIST +AS +ASCENDING +ASYNC +AWAIT +BASE +BOOL +BREAK +BY +BYTE +CASE +CATCH +CHAR +CHECKED +CLASS +CONST +CONTINUE +DECIMAL +DEFAULT +DELEGATE +DESCENDING +DO +DOUBLE +DYNAMIC +ELSE +ENUM +EQUALS +EVENT +EXPLICIT +EXTERN +FALSE +FINALLY +FIXED +FLOAT +FOR +FOREACH +FROM +GET +GOTO +GROUP +IF +IMPLICIT +IN +INT +INTERFACE +INTERNAL +INTO +IS +JOIN +LET +LOCK +LONG +NAMEOF +NAMESPACE +NEW +NULL_ +OBJECT +ON +OPERATOR +ORDERBY +OUT +OVERRIDE +PARAMS +PARTIAL +PRIVATE +PROTECTED +PUBLIC +READONLY +REF +REMOVE +RETURN +SBYTE +SEALED +SELECT +SET +SHORT +SIZEOF +STACKALLOC +STATIC +STRING +STRUCT +SWITCH +THIS +THROW +TRUE +TRY +TYPEOF +UINT +ULONG +UNCHECKED +UNMANAGED +UNSAFE +USHORT +USING +VAR +VIRTUAL +VOID +VOLATILE +WHEN +WHERE +WHILE +YIELD +IDENTIFIER +LITERAL_ACCESS +INTEGER_LITERAL +HEX_INTEGER_LITERAL +BIN_INTEGER_LITERAL +REAL_LITERAL +CHARACTER_LITERAL +REGULAR_STRING +VERBATIUM_STRING +INTERPOLATED_REGULAR_STRING_START +INTERPOLATED_VERBATIUM_STRING_START +OPEN_BRACE +CLOSE_BRACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_PARENS +CLOSE_PARENS +DOT +COMMA +COLON +SEMICOLON +PLUS +MINUS +STAR +DIV +PERCENT +AMP +BITWISE_OR +CARET +BANG +TILDE +ASSIGNMENT +LT +GT +INTERR +DOUBLE_COLON +OP_COALESCING +OP_INC +OP_DEC +OP_AND +OP_OR +OP_PTR +OP_EQ +OP_NE +OP_LE +OP_GE +OP_ADD_ASSIGNMENT +OP_SUB_ASSIGNMENT +OP_MULT_ASSIGNMENT +OP_DIV_ASSIGNMENT +OP_MOD_ASSIGNMENT +OP_AND_ASSIGNMENT +OP_OR_ASSIGNMENT +OP_XOR_ASSIGNMENT +OP_LEFT_SHIFT +OP_LEFT_SHIFT_ASSIGNMENT +OP_COALESCING_ASSIGNMENT +OP_RANGE +DOUBLE_CURLY_INSIDE +OPEN_BRACE_INSIDE +REGULAR_CHAR_INSIDE +VERBATIUM_DOUBLE_QUOTE_INSIDE +DOUBLE_QUOTE_INSIDE +REGULAR_STRING_INSIDE +VERBATIUM_INSIDE_STRING +CLOSE_BRACE_INSIDE +FORMAT_STRING +DIRECTIVE_WHITESPACES +DIGITS +DEFINE +UNDEF +ELIF +ENDIF +LINE +ERROR +WARNING +REGION +ENDREGION +PRAGMA +NULLABLE +DIRECTIVE_HIDDEN +CONDITIONAL_SYMBOL +DIRECTIVE_NEW_LINE +TEXT +DOUBLE_CURLY_CLOSE_INSIDE + +rule names: +compilation_unit +namespace_or_type_name +type_ +base_type +tuple_type +tuple_element +simple_type +numeric_type +integral_type +floating_point_type +class_type +type_argument_list +argument_list +argument +expression +non_assignment_expression +assignment +assignment_operator +conditional_expression +null_coalescing_expression +conditional_or_expression +conditional_and_expression +inclusive_or_expression +exclusive_or_expression +and_expression +equality_expression +relational_expression +shift_expression +additive_expression +multiplicative_expression +switch_expression +switch_expression_arms +switch_expression_arm +range_expression +unary_expression +cast_expression +primary_expression +primary_expression_start +throwable_expression +throw_expression +member_access +bracket_expression +indexer_argument +predefined_type +expression_list +object_or_collection_initializer +object_initializer +member_initializer_list +member_initializer +initializer_value +collection_initializer +element_initializer +anonymous_object_initializer +member_declarator_list +member_declarator +unbound_type_name +generic_dimension_specifier +isType +isTypePatternArms +isTypePatternArm +lambda_expression +anonymous_function_signature +explicit_anonymous_function_parameter_list +explicit_anonymous_function_parameter +implicit_anonymous_function_parameter_list +anonymous_function_body +query_expression +from_clause +query_body +query_body_clause +let_clause +where_clause +combined_join_clause +orderby_clause +ordering +select_or_group_clause +query_continuation +statement +declarationStatement +local_function_declaration +local_function_header +local_function_modifiers +local_function_body +labeled_Statement +embedded_statement +simple_embedded_statement +block +local_variable_declaration +local_variable_type +local_variable_declarator +local_variable_initializer +local_constant_declaration +if_body +switch_section +switch_label +case_guard +statement_list +for_initializer +for_iterator +catch_clauses +specific_catch_clause +general_catch_clause +exception_filter +finally_clause +resource_acquisition +namespace_declaration +qualified_identifier +namespace_body +extern_alias_directives +extern_alias_directive +using_directives +using_directive +namespace_member_declarations +namespace_member_declaration +type_declaration +qualified_alias_member +type_parameter_list +type_parameter +class_base +interface_type_list +type_parameter_constraints_clauses +type_parameter_constraints_clause +type_parameter_constraints +primary_constraint +secondary_constraints +constructor_constraint +class_body +class_member_declarations +class_member_declaration +all_member_modifiers +all_member_modifier +common_member_declaration +typed_member_declaration +constant_declarators +constant_declarator +variable_declarators +variable_declarator +variable_initializer +return_type +member_name +method_body +formal_parameter_list +fixed_parameters +fixed_parameter +parameter_modifier +parameter_array +accessor_declarations +get_accessor_declaration +set_accessor_declaration +accessor_modifier +accessor_body +event_accessor_declarations +add_accessor_declaration +remove_accessor_declaration +overloadable_operator +conversion_operator_declarator +constructor_initializer +body +struct_interfaces +struct_body +struct_member_declaration +array_type +rank_specifier +array_initializer +variant_type_parameter_list +variant_type_parameter +variance_annotation +interface_base +interface_body +interface_member_declaration +interface_accessors +enum_base +enum_body +enum_member_declaration +global_attribute_section +global_attribute_target +attributes +attribute_section +attribute_target +attribute_list +attribute +attribute_argument +pointer_type +fixed_pointer_declarators +fixed_pointer_declarator +fixed_pointer_initializer +fixed_size_buffer_declarator +stackalloc_initializer +right_arrow +right_shift +right_shift_assignment +literal +boolean_literal +string_literal +interpolated_regular_string +interpolated_verbatium_string +interpolated_regular_string_part +interpolated_verbatium_string_part +interpolated_string_expression +keyword +class_definition +struct_definition +interface_definition +enum_definition +delegate_definition +event_declaration +field_declaration +property_declaration +constant_declaration +indexer_declaration +destructor_definition +constructor_declaration +method_declaration +method_member_name +operator_declaration +arg_declaration +method_invocation +object_creation_expression +identifier + + +atn: +[4, 1, 198, 2649, 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, 1, 0, 3, 0, 440, 8, 0, 1, 0, 3, 0, 443, 8, 0, 1, 0, 3, 0, 446, 8, 0, 1, 0, 5, 0, 449, 8, 0, 10, 0, 12, 0, 452, 9, 0, 1, 0, 3, 0, 455, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 461, 8, 1, 1, 1, 3, 1, 464, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 469, 8, 1, 5, 1, 471, 8, 1, 10, 1, 12, 1, 474, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 480, 8, 2, 10, 2, 12, 2, 483, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 490, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 496, 8, 4, 11, 4, 12, 4, 497, 1, 4, 1, 4, 1, 5, 1, 5, 3, 5, 504, 8, 5, 1, 6, 1, 6, 3, 6, 508, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 513, 8, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 523, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 529, 8, 11, 10, 11, 12, 11, 532, 9, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 539, 8, 12, 10, 12, 12, 12, 542, 9, 12, 1, 13, 1, 13, 1, 13, 3, 13, 547, 8, 13, 1, 13, 3, 13, 550, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 555, 8, 13, 1, 13, 3, 13, 558, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 564, 8, 14, 1, 15, 1, 15, 1, 15, 3, 15, 569, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 579, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 592, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 600, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 606, 8, 19, 3, 19, 608, 8, 19, 1, 20, 1, 20, 1, 20, 5, 20, 613, 8, 20, 10, 20, 12, 20, 616, 9, 20, 1, 21, 1, 21, 1, 21, 5, 21, 621, 8, 21, 10, 21, 12, 21, 624, 9, 21, 1, 22, 1, 22, 1, 22, 5, 22, 629, 8, 22, 10, 22, 12, 22, 632, 9, 22, 1, 23, 1, 23, 1, 23, 5, 23, 637, 8, 23, 10, 23, 12, 23, 640, 9, 23, 1, 24, 1, 24, 1, 24, 5, 24, 645, 8, 24, 10, 24, 12, 24, 648, 9, 24, 1, 25, 1, 25, 1, 25, 5, 25, 653, 8, 25, 10, 25, 12, 25, 656, 9, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 665, 8, 26, 10, 26, 12, 26, 668, 9, 26, 1, 27, 1, 27, 1, 27, 3, 27, 673, 8, 27, 1, 27, 5, 27, 676, 8, 27, 10, 27, 12, 27, 679, 9, 27, 1, 28, 1, 28, 1, 28, 5, 28, 684, 8, 28, 10, 28, 12, 28, 687, 9, 28, 1, 29, 1, 29, 1, 29, 5, 29, 692, 8, 29, 10, 29, 12, 29, 695, 9, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 702, 8, 30, 3, 30, 704, 8, 30, 1, 30, 3, 30, 707, 8, 30, 1, 31, 1, 31, 1, 31, 5, 31, 712, 8, 31, 10, 31, 12, 31, 715, 9, 31, 1, 32, 1, 32, 3, 32, 719, 8, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 726, 8, 33, 1, 33, 1, 33, 3, 33, 730, 8, 33, 3, 33, 732, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 756, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 765, 8, 36, 1, 36, 5, 36, 768, 8, 36, 10, 36, 12, 36, 771, 9, 36, 1, 36, 3, 36, 774, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 782, 8, 36, 1, 36, 3, 36, 785, 8, 36, 1, 36, 5, 36, 788, 8, 36, 10, 36, 12, 36, 791, 9, 36, 1, 36, 3, 36, 794, 8, 36, 5, 36, 796, 8, 36, 10, 36, 12, 36, 799, 9, 36, 1, 37, 1, 37, 1, 37, 3, 37, 804, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 818, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 824, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 834, 8, 37, 10, 37, 12, 37, 837, 9, 37, 1, 37, 3, 37, 840, 8, 37, 1, 37, 4, 37, 843, 8, 37, 11, 37, 12, 37, 844, 1, 37, 1, 37, 3, 37, 849, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 855, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 4, 37, 861, 8, 37, 11, 37, 12, 37, 862, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 872, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 890, 8, 37, 1, 37, 3, 37, 893, 8, 37, 1, 37, 1, 37, 1, 37, 3, 37, 898, 8, 37, 1, 37, 3, 37, 901, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 914, 8, 37, 10, 37, 12, 37, 917, 9, 37, 1, 37, 1, 37, 1, 37, 3, 37, 922, 8, 37, 1, 38, 1, 38, 3, 38, 926, 8, 38, 1, 39, 1, 39, 1, 39, 1, 40, 3, 40, 932, 8, 40, 1, 40, 1, 40, 1, 40, 3, 40, 937, 8, 40, 1, 41, 3, 41, 940, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 946, 8, 41, 10, 41, 12, 41, 949, 9, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 956, 8, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 5, 44, 965, 8, 44, 10, 44, 12, 44, 968, 9, 44, 1, 45, 1, 45, 3, 45, 972, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 977, 8, 46, 3, 46, 979, 8, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 5, 47, 986, 8, 47, 10, 47, 12, 47, 989, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 996, 8, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 3, 49, 1003, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1009, 8, 50, 10, 50, 12, 50, 1012, 9, 50, 1, 50, 3, 50, 1015, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1024, 8, 51, 1, 52, 1, 52, 1, 52, 3, 52, 1029, 8, 52, 3, 52, 1031, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 5, 53, 1038, 8, 53, 10, 53, 12, 53, 1041, 9, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1048, 8, 54, 1, 55, 1, 55, 3, 55, 1052, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1057, 8, 55, 3, 55, 1059, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1064, 8, 55, 5, 55, 1066, 8, 55, 10, 55, 12, 55, 1069, 9, 55, 1, 56, 1, 56, 5, 56, 1073, 8, 56, 10, 56, 12, 56, 1076, 9, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 5, 57, 1083, 8, 57, 10, 57, 12, 57, 1086, 9, 57, 1, 57, 3, 57, 1089, 8, 57, 1, 57, 3, 57, 1092, 8, 57, 1, 57, 3, 57, 1095, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1101, 8, 58, 10, 58, 12, 58, 1104, 9, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 3, 60, 1113, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1130, 8, 61, 1, 62, 1, 62, 1, 62, 5, 62, 1135, 8, 62, 10, 62, 12, 62, 1138, 9, 62, 1, 63, 3, 63, 1141, 8, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 5, 64, 1149, 8, 64, 10, 64, 12, 64, 1152, 9, 64, 1, 65, 1, 65, 3, 65, 1156, 8, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 3, 67, 1163, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 5, 68, 1170, 8, 68, 10, 68, 12, 68, 1173, 9, 68, 1, 68, 1, 68, 3, 68, 1177, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1184, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 3, 72, 1196, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1207, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 1213, 8, 73, 10, 73, 12, 73, 1216, 9, 73, 1, 74, 1, 74, 3, 74, 1220, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1229, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 3, 77, 1238, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1247, 8, 78, 1, 79, 1, 79, 1, 79, 1, 80, 3, 80, 1253, 8, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1258, 8, 80, 1, 80, 1, 80, 3, 80, 1262, 8, 80, 1, 80, 1, 80, 3, 80, 1266, 8, 80, 1, 81, 1, 81, 3, 81, 1270, 8, 81, 1, 81, 1, 81, 3, 81, 1274, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1281, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 3, 84, 1289, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1302, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 5, 85, 1310, 8, 85, 10, 85, 12, 85, 1313, 9, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1334, 8, 85, 1, 85, 1, 85, 3, 85, 1338, 8, 85, 1, 85, 1, 85, 3, 85, 1342, 8, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1347, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1367, 8, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1372, 8, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1377, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1384, 8, 85, 1, 85, 3, 85, 1387, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1409, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1421, 8, 85, 1, 86, 1, 86, 3, 86, 1425, 8, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1433, 8, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 5, 87, 1441, 8, 87, 10, 87, 12, 87, 1444, 9, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1450, 8, 87, 1, 88, 1, 88, 3, 88, 1454, 8, 88, 1, 89, 1, 89, 1, 89, 3, 89, 1459, 8, 89, 1, 89, 3, 89, 1462, 8, 89, 1, 90, 1, 90, 1, 90, 3, 90, 1467, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 3, 92, 1475, 8, 92, 1, 93, 4, 93, 1478, 8, 93, 11, 93, 12, 93, 1479, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 3, 94, 1487, 8, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1493, 8, 94, 1, 95, 1, 95, 1, 95, 1, 96, 4, 96, 1499, 8, 96, 11, 96, 12, 96, 1500, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 1507, 8, 97, 10, 97, 12, 97, 1510, 9, 97, 3, 97, 1512, 8, 97, 1, 98, 1, 98, 1, 98, 5, 98, 1517, 8, 98, 10, 98, 12, 98, 1520, 9, 98, 1, 99, 1, 99, 5, 99, 1524, 8, 99, 10, 99, 12, 99, 1527, 9, 99, 1, 99, 3, 99, 1530, 8, 99, 1, 99, 3, 99, 1533, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1539, 8, 100, 1, 100, 1, 100, 3, 100, 1543, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 3, 101, 1549, 8, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 3, 104, 1563, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 1569, 8, 105, 1, 106, 1, 106, 1, 106, 5, 106, 1574, 8, 106, 10, 106, 12, 106, 1577, 9, 106, 1, 107, 1, 107, 3, 107, 1581, 8, 107, 1, 107, 3, 107, 1584, 8, 107, 1, 107, 3, 107, 1587, 8, 107, 1, 107, 1, 107, 1, 108, 4, 108, 1592, 8, 108, 11, 108, 12, 108, 1593, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 4, 110, 1602, 8, 110, 11, 110, 12, 110, 1603, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1621, 8, 111, 1, 112, 4, 112, 1624, 8, 112, 11, 112, 12, 112, 1625, 1, 113, 1, 113, 3, 113, 1630, 8, 113, 1, 114, 3, 114, 1633, 8, 114, 1, 114, 3, 114, 1636, 8, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 1643, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 1649, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 1655, 8, 116, 10, 116, 12, 116, 1658, 9, 116, 1, 116, 1, 116, 1, 117, 3, 117, 1663, 8, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1671, 8, 118, 10, 118, 12, 118, 1674, 9, 118, 1, 119, 1, 119, 1, 119, 5, 119, 1679, 8, 119, 10, 119, 12, 119, 1682, 9, 119, 1, 120, 4, 120, 1685, 8, 120, 11, 120, 12, 120, 1686, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1698, 8, 122, 1, 122, 1, 122, 3, 122, 1702, 8, 122, 3, 122, 1704, 8, 122, 1, 123, 1, 123, 1, 123, 3, 123, 1709, 8, 123, 1, 123, 1, 123, 3, 123, 1713, 8, 123, 1, 124, 1, 124, 1, 124, 5, 124, 1718, 8, 124, 10, 124, 12, 124, 1721, 9, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 3, 126, 1729, 8, 126, 1, 126, 1, 126, 1, 127, 4, 127, 1734, 8, 127, 11, 127, 12, 127, 1735, 1, 128, 3, 128, 1739, 8, 128, 1, 128, 3, 128, 1742, 8, 128, 1, 128, 1, 128, 3, 128, 1746, 8, 128, 1, 129, 4, 129, 1749, 8, 129, 11, 129, 12, 129, 1750, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1764, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1774, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1781, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1793, 8, 132, 1, 133, 1, 133, 1, 133, 5, 133, 1798, 8, 133, 10, 133, 12, 133, 1801, 9, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 5, 135, 1810, 8, 135, 10, 135, 12, 135, 1813, 9, 135, 1, 136, 1, 136, 1, 136, 3, 136, 1818, 8, 136, 1, 137, 1, 137, 3, 137, 1822, 8, 137, 1, 138, 1, 138, 3, 138, 1826, 8, 138, 1, 139, 1, 139, 1, 140, 1, 140, 3, 140, 1832, 8, 140, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 1838, 8, 141, 3, 141, 1840, 8, 141, 1, 142, 1, 142, 1, 142, 5, 142, 1845, 8, 142, 10, 142, 12, 142, 1848, 9, 142, 1, 143, 3, 143, 1851, 8, 143, 1, 143, 3, 143, 1854, 8, 143, 1, 143, 1, 143, 3, 143, 1858, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 1868, 8, 144, 1, 145, 3, 145, 1871, 8, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 3, 146, 1878, 8, 146, 1, 146, 3, 146, 1881, 8, 146, 1, 146, 1, 146, 1, 146, 3, 146, 1886, 8, 146, 1, 146, 1, 146, 1, 146, 3, 146, 1891, 8, 146, 3, 146, 1893, 8, 146, 1, 147, 3, 147, 1896, 8, 147, 1, 147, 3, 147, 1899, 8, 147, 1, 147, 1, 147, 1, 147, 1, 148, 3, 148, 1905, 8, 148, 1, 148, 3, 148, 1908, 8, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 1920, 8, 149, 1, 150, 1, 150, 3, 150, 1924, 8, 150, 1, 151, 3, 151, 1927, 8, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 1937, 8, 151, 1, 152, 3, 152, 1940, 8, 152, 1, 152, 1, 152, 1, 152, 1, 153, 3, 153, 1946, 8, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 1973, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 1986, 8, 156, 1, 156, 1, 156, 1, 157, 1, 157, 3, 157, 1992, 8, 157, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 5, 159, 1999, 8, 159, 10, 159, 12, 159, 2002, 9, 159, 1, 159, 1, 159, 1, 160, 3, 160, 2007, 8, 160, 1, 160, 3, 160, 2010, 8, 160, 1, 160, 1, 160, 1, 160, 1, 160, 4, 160, 2016, 8, 160, 11, 160, 12, 160, 2017, 1, 160, 1, 160, 3, 160, 2022, 8, 160, 1, 161, 1, 161, 5, 161, 2026, 8, 161, 10, 161, 12, 161, 2029, 9, 161, 1, 161, 4, 161, 2032, 8, 161, 11, 161, 12, 161, 2033, 1, 162, 1, 162, 5, 162, 2038, 8, 162, 10, 162, 12, 162, 2041, 9, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 5, 163, 2049, 8, 163, 10, 163, 12, 163, 2052, 9, 163, 1, 163, 3, 163, 2055, 8, 163, 3, 163, 2057, 8, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2065, 8, 164, 10, 164, 12, 164, 2068, 9, 164, 1, 164, 1, 164, 1, 165, 3, 165, 2073, 8, 165, 1, 165, 3, 165, 2076, 8, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 5, 168, 2087, 8, 168, 10, 168, 12, 168, 2090, 9, 168, 1, 168, 1, 168, 1, 169, 3, 169, 2095, 8, 169, 1, 169, 3, 169, 2098, 8, 169, 1, 169, 3, 169, 2101, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 2108, 8, 169, 1, 169, 1, 169, 1, 169, 3, 169, 2113, 8, 169, 1, 169, 1, 169, 3, 169, 2117, 8, 169, 1, 169, 1, 169, 3, 169, 2121, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 2138, 8, 169, 1, 169, 3, 169, 2141, 8, 169, 1, 169, 1, 169, 1, 169, 3, 169, 2146, 8, 169, 1, 169, 1, 169, 3, 169, 2150, 8, 169, 1, 169, 1, 169, 3, 169, 2154, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 2163, 8, 169, 1, 170, 3, 170, 2166, 8, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2171, 8, 170, 1, 170, 1, 170, 3, 170, 2175, 8, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2180, 8, 170, 1, 170, 1, 170, 3, 170, 2184, 8, 170, 3, 170, 2186, 8, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 5, 172, 2195, 8, 172, 10, 172, 12, 172, 2198, 9, 172, 1, 172, 3, 172, 2201, 8, 172, 3, 172, 2203, 8, 172, 1, 172, 1, 172, 1, 173, 3, 173, 2208, 8, 173, 1, 173, 1, 173, 1, 173, 3, 173, 2213, 8, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 2220, 8, 174, 1, 174, 1, 174, 1, 175, 1, 175, 3, 175, 2226, 8, 175, 1, 176, 4, 176, 2229, 8, 176, 11, 176, 12, 176, 2230, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 2237, 8, 177, 1, 177, 1, 177, 3, 177, 2241, 8, 177, 1, 177, 1, 177, 1, 178, 1, 178, 3, 178, 2247, 8, 178, 1, 179, 1, 179, 1, 179, 5, 179, 2252, 8, 179, 10, 179, 12, 179, 2255, 9, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 5, 180, 2262, 8, 180, 10, 180, 12, 180, 2265, 9, 180, 3, 180, 2267, 8, 180, 1, 180, 3, 180, 2270, 8, 180, 1, 181, 1, 181, 1, 181, 3, 181, 2275, 8, 181, 1, 181, 1, 181, 1, 182, 1, 182, 3, 182, 2281, 8, 182, 1, 182, 1, 182, 5, 182, 2285, 8, 182, 10, 182, 12, 182, 2288, 9, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 2294, 8, 182, 1, 183, 1, 183, 1, 183, 5, 183, 2299, 8, 183, 10, 183, 12, 183, 2302, 9, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 3, 185, 2309, 8, 185, 1, 185, 1, 185, 3, 185, 2313, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 2328, 8, 187, 1, 187, 1, 187, 3, 187, 2332, 8, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 5, 187, 2339, 8, 187, 10, 187, 12, 187, 2342, 9, 187, 1, 187, 3, 187, 2345, 8, 187, 1, 187, 1, 187, 3, 187, 2349, 8, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 2371, 8, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 3, 193, 2379, 8, 193, 1, 194, 1, 194, 5, 194, 2383, 8, 194, 10, 194, 12, 194, 2386, 9, 194, 1, 194, 1, 194, 1, 195, 1, 195, 5, 195, 2392, 8, 195, 10, 195, 12, 195, 2395, 9, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2403, 8, 196, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2409, 8, 197, 1, 198, 1, 198, 1, 198, 5, 198, 2414, 8, 198, 10, 198, 12, 198, 2417, 9, 198, 1, 198, 1, 198, 4, 198, 2421, 8, 198, 11, 198, 12, 198, 2422, 3, 198, 2425, 8, 198, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 3, 200, 2432, 8, 200, 1, 200, 3, 200, 2435, 8, 200, 1, 200, 3, 200, 2438, 8, 200, 1, 200, 1, 200, 3, 200, 2442, 8, 200, 1, 201, 3, 201, 2445, 8, 201, 1, 201, 1, 201, 1, 201, 3, 201, 2450, 8, 201, 1, 201, 3, 201, 2453, 8, 201, 1, 201, 3, 201, 2456, 8, 201, 1, 201, 1, 201, 3, 201, 2460, 8, 201, 1, 202, 1, 202, 1, 202, 3, 202, 2465, 8, 202, 1, 202, 3, 202, 2468, 8, 202, 1, 202, 3, 202, 2471, 8, 202, 1, 202, 1, 202, 3, 202, 2475, 8, 202, 1, 203, 1, 203, 1, 203, 3, 203, 2480, 8, 203, 1, 203, 1, 203, 3, 203, 2484, 8, 203, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 2490, 8, 204, 1, 204, 1, 204, 3, 204, 2494, 8, 204, 1, 204, 1, 204, 3, 204, 2498, 8, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 2512, 8, 205, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2525, 8, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2531, 8, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 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, 3, 209, 2550, 8, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 3, 211, 2561, 8, 211, 1, 211, 1, 211, 3, 211, 2565, 8, 211, 1, 211, 1, 211, 1, 212, 1, 212, 3, 212, 2571, 8, 212, 1, 212, 1, 212, 3, 212, 2575, 8, 212, 1, 212, 1, 212, 3, 212, 2579, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2586, 8, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 3, 213, 2593, 8, 213, 1, 213, 3, 213, 2596, 8, 213, 1, 213, 1, 213, 5, 213, 2600, 8, 213, 10, 213, 12, 213, 2603, 9, 213, 1, 214, 1, 214, 1, 214, 1, 214, 3, 214, 2609, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 2614, 8, 214, 1, 214, 3, 214, 2617, 8, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 3, 214, 2625, 8, 214, 1, 215, 1, 215, 1, 215, 1, 215, 3, 215, 2631, 8, 215, 1, 216, 1, 216, 3, 216, 2635, 8, 216, 1, 216, 1, 216, 1, 217, 1, 217, 3, 217, 2641, 8, 217, 1, 217, 1, 217, 3, 217, 2645, 8, 217, 1, 218, 1, 218, 1, 218, 0, 0, 219, 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, 0, 19, 8, 0, 21, 21, 24, 24, 55, 55, 63, 63, 83, 83, 87, 87, 99, 100, 104, 104, 2, 0, 34, 34, 45, 45, 3, 0, 54, 54, 72, 72, 80, 80, 1, 0, 156, 157, 2, 0, 146, 147, 158, 159, 1, 0, 135, 136, 1, 0, 137, 139, 14, 0, 18, 18, 21, 21, 24, 24, 29, 29, 34, 34, 45, 45, 55, 55, 63, 63, 68, 68, 83, 83, 87, 87, 91, 91, 99, 100, 104, 104, 2, 0, 14, 14, 32, 32, 2, 0, 15, 15, 103, 103, 12, 0, 9, 9, 15, 15, 41, 41, 57, 57, 66, 66, 73, 73, 75, 79, 84, 84, 90, 90, 103, 103, 107, 107, 109, 109, 2, 0, 40, 40, 53, 53, 2, 0, 17, 17, 94, 94, 2, 0, 137, 137, 148, 148, 2, 0, 54, 54, 72, 72, 2, 0, 42, 42, 96, 96, 19, 0, 9, 9, 13, 13, 17, 19, 21, 31, 33, 34, 36, 37, 39, 47, 50, 50, 52, 57, 59, 59, 62, 63, 65, 68, 70, 70, 72, 74, 76, 80, 82, 84, 87, 105, 107, 109, 112, 112, 1, 0, 79, 80, 20, 0, 10, 12, 14, 16, 20, 20, 32, 32, 35, 35, 38, 38, 48, 49, 51, 51, 58, 58, 60, 61, 64, 64, 69, 69, 71, 71, 75, 75, 81, 81, 85, 86, 102, 102, 106, 106, 110, 111, 113, 114, 2918, 0, 439, 1, 0, 0, 0, 2, 463, 1, 0, 0, 0, 4, 475, 1, 0, 0, 0, 6, 489, 1, 0, 0, 0, 8, 491, 1, 0, 0, 0, 10, 501, 1, 0, 0, 0, 12, 507, 1, 0, 0, 0, 14, 512, 1, 0, 0, 0, 16, 514, 1, 0, 0, 0, 18, 516, 1, 0, 0, 0, 20, 522, 1, 0, 0, 0, 22, 524, 1, 0, 0, 0, 24, 535, 1, 0, 0, 0, 26, 546, 1, 0, 0, 0, 28, 563, 1, 0, 0, 0, 30, 568, 1, 0, 0, 0, 32, 578, 1, 0, 0, 0, 34, 591, 1, 0, 0, 0, 36, 593, 1, 0, 0, 0, 38, 601, 1, 0, 0, 0, 40, 609, 1, 0, 0, 0, 42, 617, 1, 0, 0, 0, 44, 625, 1, 0, 0, 0, 46, 633, 1, 0, 0, 0, 48, 641, 1, 0, 0, 0, 50, 649, 1, 0, 0, 0, 52, 657, 1, 0, 0, 0, 54, 669, 1, 0, 0, 0, 56, 680, 1, 0, 0, 0, 58, 688, 1, 0, 0, 0, 60, 696, 1, 0, 0, 0, 62, 708, 1, 0, 0, 0, 64, 716, 1, 0, 0, 0, 66, 731, 1, 0, 0, 0, 68, 755, 1, 0, 0, 0, 70, 757, 1, 0, 0, 0, 72, 762, 1, 0, 0, 0, 74, 921, 1, 0, 0, 0, 76, 925, 1, 0, 0, 0, 78, 927, 1, 0, 0, 0, 80, 931, 1, 0, 0, 0, 82, 939, 1, 0, 0, 0, 84, 955, 1, 0, 0, 0, 86, 959, 1, 0, 0, 0, 88, 961, 1, 0, 0, 0, 90, 971, 1, 0, 0, 0, 92, 973, 1, 0, 0, 0, 94, 982, 1, 0, 0, 0, 96, 995, 1, 0, 0, 0, 98, 1002, 1, 0, 0, 0, 100, 1004, 1, 0, 0, 0, 102, 1023, 1, 0, 0, 0, 104, 1025, 1, 0, 0, 0, 106, 1034, 1, 0, 0, 0, 108, 1047, 1, 0, 0, 0, 110, 1049, 1, 0, 0, 0, 112, 1070, 1, 0, 0, 0, 114, 1079, 1, 0, 0, 0, 116, 1096, 1, 0, 0, 0, 118, 1107, 1, 0, 0, 0, 120, 1112, 1, 0, 0, 0, 122, 1129, 1, 0, 0, 0, 124, 1131, 1, 0, 0, 0, 126, 1140, 1, 0, 0, 0, 128, 1145, 1, 0, 0, 0, 130, 1155, 1, 0, 0, 0, 132, 1157, 1, 0, 0, 0, 134, 1160, 1, 0, 0, 0, 136, 1171, 1, 0, 0, 0, 138, 1183, 1, 0, 0, 0, 140, 1185, 1, 0, 0, 0, 142, 1190, 1, 0, 0, 0, 144, 1193, 1, 0, 0, 0, 146, 1208, 1, 0, 0, 0, 148, 1217, 1, 0, 0, 0, 150, 1228, 1, 0, 0, 0, 152, 1230, 1, 0, 0, 0, 154, 1237, 1, 0, 0, 0, 156, 1246, 1, 0, 0, 0, 158, 1248, 1, 0, 0, 0, 160, 1252, 1, 0, 0, 0, 162, 1273, 1, 0, 0, 0, 164, 1280, 1, 0, 0, 0, 166, 1282, 1, 0, 0, 0, 168, 1288, 1, 0, 0, 0, 170, 1420, 1, 0, 0, 0, 172, 1422, 1, 0, 0, 0, 174, 1449, 1, 0, 0, 0, 176, 1453, 1, 0, 0, 0, 178, 1455, 1, 0, 0, 0, 180, 1466, 1, 0, 0, 0, 182, 1468, 1, 0, 0, 0, 184, 1474, 1, 0, 0, 0, 186, 1477, 1, 0, 0, 0, 188, 1492, 1, 0, 0, 0, 190, 1494, 1, 0, 0, 0, 192, 1498, 1, 0, 0, 0, 194, 1511, 1, 0, 0, 0, 196, 1513, 1, 0, 0, 0, 198, 1532, 1, 0, 0, 0, 200, 1534, 1, 0, 0, 0, 202, 1546, 1, 0, 0, 0, 204, 1552, 1, 0, 0, 0, 206, 1557, 1, 0, 0, 0, 208, 1562, 1, 0, 0, 0, 210, 1564, 1, 0, 0, 0, 212, 1570, 1, 0, 0, 0, 214, 1578, 1, 0, 0, 0, 216, 1591, 1, 0, 0, 0, 218, 1595, 1, 0, 0, 0, 220, 1601, 1, 0, 0, 0, 222, 1620, 1, 0, 0, 0, 224, 1623, 1, 0, 0, 0, 226, 1629, 1, 0, 0, 0, 228, 1632, 1, 0, 0, 0, 230, 1644, 1, 0, 0, 0, 232, 1650, 1, 0, 0, 0, 234, 1662, 1, 0, 0, 0, 236, 1666, 1, 0, 0, 0, 238, 1675, 1, 0, 0, 0, 240, 1684, 1, 0, 0, 0, 242, 1688, 1, 0, 0, 0, 244, 1703, 1, 0, 0, 0, 246, 1712, 1, 0, 0, 0, 248, 1714, 1, 0, 0, 0, 250, 1722, 1, 0, 0, 0, 252, 1726, 1, 0, 0, 0, 254, 1733, 1, 0, 0, 0, 256, 1738, 1, 0, 0, 0, 258, 1748, 1, 0, 0, 0, 260, 1752, 1, 0, 0, 0, 262, 1773, 1, 0, 0, 0, 264, 1780, 1, 0, 0, 0, 266, 1794, 1, 0, 0, 0, 268, 1802, 1, 0, 0, 0, 270, 1806, 1, 0, 0, 0, 272, 1814, 1, 0, 0, 0, 274, 1821, 1, 0, 0, 0, 276, 1825, 1, 0, 0, 0, 278, 1827, 1, 0, 0, 0, 280, 1831, 1, 0, 0, 0, 282, 1839, 1, 0, 0, 0, 284, 1841, 1, 0, 0, 0, 286, 1857, 1, 0, 0, 0, 288, 1867, 1, 0, 0, 0, 290, 1870, 1, 0, 0, 0, 292, 1877, 1, 0, 0, 0, 294, 1895, 1, 0, 0, 0, 296, 1904, 1, 0, 0, 0, 298, 1919, 1, 0, 0, 0, 300, 1923, 1, 0, 0, 0, 302, 1926, 1, 0, 0, 0, 304, 1939, 1, 0, 0, 0, 306, 1945, 1, 0, 0, 0, 308, 1972, 1, 0, 0, 0, 310, 1974, 1, 0, 0, 0, 312, 1981, 1, 0, 0, 0, 314, 1991, 1, 0, 0, 0, 316, 1993, 1, 0, 0, 0, 318, 1996, 1, 0, 0, 0, 320, 2006, 1, 0, 0, 0, 322, 2023, 1, 0, 0, 0, 324, 2035, 1, 0, 0, 0, 326, 2044, 1, 0, 0, 0, 328, 2060, 1, 0, 0, 0, 330, 2072, 1, 0, 0, 0, 332, 2079, 1, 0, 0, 0, 334, 2081, 1, 0, 0, 0, 336, 2084, 1, 0, 0, 0, 338, 2094, 1, 0, 0, 0, 340, 2165, 1, 0, 0, 0, 342, 2187, 1, 0, 0, 0, 344, 2190, 1, 0, 0, 0, 346, 2207, 1, 0, 0, 0, 348, 2214, 1, 0, 0, 0, 350, 2225, 1, 0, 0, 0, 352, 2228, 1, 0, 0, 0, 354, 2232, 1, 0, 0, 0, 356, 2246, 1, 0, 0, 0, 358, 2248, 1, 0, 0, 0, 360, 2256, 1, 0, 0, 0, 362, 2274, 1, 0, 0, 0, 364, 2293, 1, 0, 0, 0, 366, 2295, 1, 0, 0, 0, 368, 2303, 1, 0, 0, 0, 370, 2312, 1, 0, 0, 0, 372, 2314, 1, 0, 0, 0, 374, 2348, 1, 0, 0, 0, 376, 2350, 1, 0, 0, 0, 378, 2354, 1, 0, 0, 0, 380, 2358, 1, 0, 0, 0, 382, 2370, 1, 0, 0, 0, 384, 2372, 1, 0, 0, 0, 386, 2378, 1, 0, 0, 0, 388, 2380, 1, 0, 0, 0, 390, 2389, 1, 0, 0, 0, 392, 2402, 1, 0, 0, 0, 394, 2408, 1, 0, 0, 0, 396, 2410, 1, 0, 0, 0, 398, 2426, 1, 0, 0, 0, 400, 2428, 1, 0, 0, 0, 402, 2444, 1, 0, 0, 0, 404, 2461, 1, 0, 0, 0, 406, 2476, 1, 0, 0, 0, 408, 2485, 1, 0, 0, 0, 410, 2501, 1, 0, 0, 0, 412, 2513, 1, 0, 0, 0, 414, 2516, 1, 0, 0, 0, 416, 2532, 1, 0, 0, 0, 418, 2537, 1, 0, 0, 0, 420, 2551, 1, 0, 0, 0, 422, 2557, 1, 0, 0, 0, 424, 2568, 1, 0, 0, 0, 426, 2592, 1, 0, 0, 0, 428, 2604, 1, 0, 0, 0, 430, 2626, 1, 0, 0, 0, 432, 2632, 1, 0, 0, 0, 434, 2638, 1, 0, 0, 0, 436, 2646, 1, 0, 0, 0, 438, 440, 5, 1, 0, 0, 439, 438, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 442, 1, 0, 0, 0, 441, 443, 3, 216, 108, 0, 442, 441, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 445, 1, 0, 0, 0, 444, 446, 3, 220, 110, 0, 445, 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 450, 1, 0, 0, 0, 447, 449, 3, 348, 174, 0, 448, 447, 1, 0, 0, 0, 449, 452, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 454, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 453, 455, 3, 224, 112, 0, 454, 453, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 457, 5, 0, 0, 1, 457, 1, 1, 0, 0, 0, 458, 460, 3, 436, 218, 0, 459, 461, 3, 22, 11, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 464, 1, 0, 0, 0, 462, 464, 3, 230, 115, 0, 463, 458, 1, 0, 0, 0, 463, 462, 1, 0, 0, 0, 464, 472, 1, 0, 0, 0, 465, 466, 5, 131, 0, 0, 466, 468, 3, 436, 218, 0, 467, 469, 3, 22, 11, 0, 468, 467, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 471, 1, 0, 0, 0, 470, 465, 1, 0, 0, 0, 471, 474, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 3, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 475, 481, 3, 6, 3, 0, 476, 480, 5, 148, 0, 0, 477, 480, 3, 324, 162, 0, 478, 480, 5, 137, 0, 0, 479, 476, 1, 0, 0, 0, 479, 477, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 483, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 5, 1, 0, 0, 0, 483, 481, 1, 0, 0, 0, 484, 490, 3, 12, 6, 0, 485, 490, 3, 20, 10, 0, 486, 487, 5, 108, 0, 0, 487, 490, 5, 137, 0, 0, 488, 490, 3, 8, 4, 0, 489, 484, 1, 0, 0, 0, 489, 485, 1, 0, 0, 0, 489, 486, 1, 0, 0, 0, 489, 488, 1, 0, 0, 0, 490, 7, 1, 0, 0, 0, 491, 492, 5, 129, 0, 0, 492, 495, 3, 10, 5, 0, 493, 494, 5, 132, 0, 0, 494, 496, 3, 10, 5, 0, 495, 493, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 500, 5, 130, 0, 0, 500, 9, 1, 0, 0, 0, 501, 503, 3, 4, 2, 0, 502, 504, 3, 436, 218, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 11, 1, 0, 0, 0, 505, 508, 3, 14, 7, 0, 506, 508, 5, 18, 0, 0, 507, 505, 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 13, 1, 0, 0, 0, 509, 513, 3, 16, 8, 0, 510, 513, 3, 18, 9, 0, 511, 513, 5, 29, 0, 0, 512, 509, 1, 0, 0, 0, 512, 510, 1, 0, 0, 0, 512, 511, 1, 0, 0, 0, 513, 15, 1, 0, 0, 0, 514, 515, 7, 0, 0, 0, 515, 17, 1, 0, 0, 0, 516, 517, 7, 1, 0, 0, 517, 19, 1, 0, 0, 0, 518, 523, 3, 2, 1, 0, 519, 523, 5, 68, 0, 0, 520, 523, 5, 35, 0, 0, 521, 523, 5, 91, 0, 0, 522, 518, 1, 0, 0, 0, 522, 519, 1, 0, 0, 0, 522, 520, 1, 0, 0, 0, 522, 521, 1, 0, 0, 0, 523, 21, 1, 0, 0, 0, 524, 525, 5, 146, 0, 0, 525, 530, 3, 4, 2, 0, 526, 527, 5, 132, 0, 0, 527, 529, 3, 4, 2, 0, 528, 526, 1, 0, 0, 0, 529, 532, 1, 0, 0, 0, 530, 528, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 533, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 533, 534, 5, 147, 0, 0, 534, 23, 1, 0, 0, 0, 535, 540, 3, 26, 13, 0, 536, 537, 5, 132, 0, 0, 537, 539, 3, 26, 13, 0, 538, 536, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 25, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 544, 3, 436, 218, 0, 544, 545, 5, 133, 0, 0, 545, 547, 1, 0, 0, 0, 546, 543, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 549, 1, 0, 0, 0, 548, 550, 7, 2, 0, 0, 549, 548, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 557, 1, 0, 0, 0, 551, 558, 3, 28, 14, 0, 552, 555, 5, 106, 0, 0, 553, 555, 3, 4, 2, 0, 554, 552, 1, 0, 0, 0, 554, 553, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 558, 3, 28, 14, 0, 557, 551, 1, 0, 0, 0, 557, 554, 1, 0, 0, 0, 558, 27, 1, 0, 0, 0, 559, 564, 3, 32, 16, 0, 560, 564, 3, 30, 15, 0, 561, 562, 5, 80, 0, 0, 562, 564, 3, 30, 15, 0, 563, 559, 1, 0, 0, 0, 563, 560, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 564, 29, 1, 0, 0, 0, 565, 569, 3, 120, 60, 0, 566, 569, 3, 132, 66, 0, 567, 569, 3, 36, 18, 0, 568, 565, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 568, 567, 1, 0, 0, 0, 569, 31, 1, 0, 0, 0, 570, 571, 3, 68, 34, 0, 571, 572, 3, 34, 17, 0, 572, 573, 3, 28, 14, 0, 573, 579, 1, 0, 0, 0, 574, 575, 3, 68, 34, 0, 575, 576, 5, 170, 0, 0, 576, 577, 3, 76, 38, 0, 577, 579, 1, 0, 0, 0, 578, 570, 1, 0, 0, 0, 578, 574, 1, 0, 0, 0, 579, 33, 1, 0, 0, 0, 580, 592, 5, 145, 0, 0, 581, 592, 5, 160, 0, 0, 582, 592, 5, 161, 0, 0, 583, 592, 5, 162, 0, 0, 584, 592, 5, 163, 0, 0, 585, 592, 5, 164, 0, 0, 586, 592, 5, 165, 0, 0, 587, 592, 5, 166, 0, 0, 588, 592, 5, 167, 0, 0, 589, 592, 5, 169, 0, 0, 590, 592, 3, 380, 190, 0, 591, 580, 1, 0, 0, 0, 591, 581, 1, 0, 0, 0, 591, 582, 1, 0, 0, 0, 591, 583, 1, 0, 0, 0, 591, 584, 1, 0, 0, 0, 591, 585, 1, 0, 0, 0, 591, 586, 1, 0, 0, 0, 591, 587, 1, 0, 0, 0, 591, 588, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 591, 590, 1, 0, 0, 0, 592, 35, 1, 0, 0, 0, 593, 599, 3, 38, 19, 0, 594, 595, 5, 148, 0, 0, 595, 596, 3, 76, 38, 0, 596, 597, 5, 133, 0, 0, 597, 598, 3, 76, 38, 0, 598, 600, 1, 0, 0, 0, 599, 594, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 37, 1, 0, 0, 0, 601, 607, 3, 40, 20, 0, 602, 605, 5, 150, 0, 0, 603, 606, 3, 38, 19, 0, 604, 606, 3, 78, 39, 0, 605, 603, 1, 0, 0, 0, 605, 604, 1, 0, 0, 0, 606, 608, 1, 0, 0, 0, 607, 602, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 39, 1, 0, 0, 0, 609, 614, 3, 42, 21, 0, 610, 611, 5, 154, 0, 0, 611, 613, 3, 42, 21, 0, 612, 610, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 41, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 622, 3, 44, 22, 0, 618, 619, 5, 153, 0, 0, 619, 621, 3, 44, 22, 0, 620, 618, 1, 0, 0, 0, 621, 624, 1, 0, 0, 0, 622, 620, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 43, 1, 0, 0, 0, 624, 622, 1, 0, 0, 0, 625, 630, 3, 46, 23, 0, 626, 627, 5, 141, 0, 0, 627, 629, 3, 46, 23, 0, 628, 626, 1, 0, 0, 0, 629, 632, 1, 0, 0, 0, 630, 628, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 45, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, 633, 638, 3, 48, 24, 0, 634, 635, 5, 142, 0, 0, 635, 637, 3, 48, 24, 0, 636, 634, 1, 0, 0, 0, 637, 640, 1, 0, 0, 0, 638, 636, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 47, 1, 0, 0, 0, 640, 638, 1, 0, 0, 0, 641, 646, 3, 50, 25, 0, 642, 643, 5, 140, 0, 0, 643, 645, 3, 50, 25, 0, 644, 642, 1, 0, 0, 0, 645, 648, 1, 0, 0, 0, 646, 644, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 49, 1, 0, 0, 0, 648, 646, 1, 0, 0, 0, 649, 654, 3, 52, 26, 0, 650, 651, 7, 3, 0, 0, 651, 653, 3, 52, 26, 0, 652, 650, 1, 0, 0, 0, 653, 656, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 51, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 657, 666, 3, 54, 27, 0, 658, 659, 7, 4, 0, 0, 659, 665, 3, 54, 27, 0, 660, 661, 5, 59, 0, 0, 661, 665, 3, 114, 57, 0, 662, 663, 5, 13, 0, 0, 663, 665, 3, 4, 2, 0, 664, 658, 1, 0, 0, 0, 664, 660, 1, 0, 0, 0, 664, 662, 1, 0, 0, 0, 665, 668, 1, 0, 0, 0, 666, 664, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 53, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 669, 677, 3, 56, 28, 0, 670, 673, 5, 168, 0, 0, 671, 673, 3, 378, 189, 0, 672, 670, 1, 0, 0, 0, 672, 671, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 676, 3, 56, 28, 0, 675, 672, 1, 0, 0, 0, 676, 679, 1, 0, 0, 0, 677, 675, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 55, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 680, 685, 3, 58, 29, 0, 681, 682, 7, 5, 0, 0, 682, 684, 3, 58, 29, 0, 683, 681, 1, 0, 0, 0, 684, 687, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 57, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 693, 3, 60, 30, 0, 689, 690, 7, 6, 0, 0, 690, 692, 3, 60, 30, 0, 691, 689, 1, 0, 0, 0, 692, 695, 1, 0, 0, 0, 693, 691, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 59, 1, 0, 0, 0, 695, 693, 1, 0, 0, 0, 696, 706, 3, 66, 33, 0, 697, 698, 5, 93, 0, 0, 698, 703, 5, 125, 0, 0, 699, 701, 3, 62, 31, 0, 700, 702, 5, 132, 0, 0, 701, 700, 1, 0, 0, 0, 701, 702, 1, 0, 0, 0, 702, 704, 1, 0, 0, 0, 703, 699, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 707, 5, 126, 0, 0, 706, 697, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 61, 1, 0, 0, 0, 708, 713, 3, 64, 32, 0, 709, 710, 5, 132, 0, 0, 710, 712, 3, 64, 32, 0, 711, 709, 1, 0, 0, 0, 712, 715, 1, 0, 0, 0, 713, 711, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 63, 1, 0, 0, 0, 715, 713, 1, 0, 0, 0, 716, 718, 3, 28, 14, 0, 717, 719, 3, 190, 95, 0, 718, 717, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 721, 3, 376, 188, 0, 721, 722, 3, 76, 38, 0, 722, 65, 1, 0, 0, 0, 723, 732, 3, 68, 34, 0, 724, 726, 3, 68, 34, 0, 725, 724, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 729, 5, 171, 0, 0, 728, 730, 3, 68, 34, 0, 729, 728, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 732, 1, 0, 0, 0, 731, 723, 1, 0, 0, 0, 731, 725, 1, 0, 0, 0, 732, 67, 1, 0, 0, 0, 733, 756, 3, 70, 35, 0, 734, 756, 3, 72, 36, 0, 735, 736, 5, 135, 0, 0, 736, 756, 3, 68, 34, 0, 737, 738, 5, 136, 0, 0, 738, 756, 3, 68, 34, 0, 739, 740, 5, 143, 0, 0, 740, 756, 3, 68, 34, 0, 741, 742, 5, 144, 0, 0, 742, 756, 3, 68, 34, 0, 743, 744, 5, 151, 0, 0, 744, 756, 3, 68, 34, 0, 745, 746, 5, 152, 0, 0, 746, 756, 3, 68, 34, 0, 747, 748, 5, 16, 0, 0, 748, 756, 3, 68, 34, 0, 749, 750, 5, 140, 0, 0, 750, 756, 3, 68, 34, 0, 751, 752, 5, 137, 0, 0, 752, 756, 3, 68, 34, 0, 753, 754, 5, 142, 0, 0, 754, 756, 3, 68, 34, 0, 755, 733, 1, 0, 0, 0, 755, 734, 1, 0, 0, 0, 755, 735, 1, 0, 0, 0, 755, 737, 1, 0, 0, 0, 755, 739, 1, 0, 0, 0, 755, 741, 1, 0, 0, 0, 755, 743, 1, 0, 0, 0, 755, 745, 1, 0, 0, 0, 755, 747, 1, 0, 0, 0, 755, 749, 1, 0, 0, 0, 755, 751, 1, 0, 0, 0, 755, 753, 1, 0, 0, 0, 756, 69, 1, 0, 0, 0, 757, 758, 5, 129, 0, 0, 758, 759, 3, 4, 2, 0, 759, 760, 5, 130, 0, 0, 760, 761, 3, 68, 34, 0, 761, 71, 1, 0, 0, 0, 762, 764, 3, 74, 37, 0, 763, 765, 5, 143, 0, 0, 764, 763, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 769, 1, 0, 0, 0, 766, 768, 3, 82, 41, 0, 767, 766, 1, 0, 0, 0, 768, 771, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 773, 1, 0, 0, 0, 771, 769, 1, 0, 0, 0, 772, 774, 5, 143, 0, 0, 773, 772, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 797, 1, 0, 0, 0, 775, 782, 3, 80, 40, 0, 776, 782, 3, 432, 216, 0, 777, 782, 5, 151, 0, 0, 778, 782, 5, 152, 0, 0, 779, 780, 5, 155, 0, 0, 780, 782, 3, 436, 218, 0, 781, 775, 1, 0, 0, 0, 781, 776, 1, 0, 0, 0, 781, 777, 1, 0, 0, 0, 781, 778, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 784, 1, 0, 0, 0, 783, 785, 5, 143, 0, 0, 784, 783, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 789, 1, 0, 0, 0, 786, 788, 3, 82, 41, 0, 787, 786, 1, 0, 0, 0, 788, 791, 1, 0, 0, 0, 789, 787, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 793, 1, 0, 0, 0, 791, 789, 1, 0, 0, 0, 792, 794, 5, 143, 0, 0, 793, 792, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 796, 1, 0, 0, 0, 795, 781, 1, 0, 0, 0, 796, 799, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 73, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 800, 922, 3, 382, 191, 0, 801, 803, 3, 436, 218, 0, 802, 804, 3, 22, 11, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 922, 1, 0, 0, 0, 805, 806, 5, 129, 0, 0, 806, 807, 3, 28, 14, 0, 807, 808, 5, 130, 0, 0, 808, 922, 1, 0, 0, 0, 809, 922, 3, 86, 43, 0, 810, 922, 3, 230, 115, 0, 811, 922, 5, 115, 0, 0, 812, 922, 5, 94, 0, 0, 813, 823, 5, 17, 0, 0, 814, 815, 5, 131, 0, 0, 815, 817, 3, 436, 218, 0, 816, 818, 3, 22, 11, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 824, 1, 0, 0, 0, 819, 820, 5, 127, 0, 0, 820, 821, 3, 88, 44, 0, 821, 822, 5, 128, 0, 0, 822, 824, 1, 0, 0, 0, 823, 814, 1, 0, 0, 0, 823, 819, 1, 0, 0, 0, 824, 922, 1, 0, 0, 0, 825, 854, 5, 66, 0, 0, 826, 848, 3, 4, 2, 0, 827, 849, 3, 434, 217, 0, 828, 849, 3, 90, 45, 0, 829, 830, 5, 127, 0, 0, 830, 831, 3, 88, 44, 0, 831, 835, 5, 128, 0, 0, 832, 834, 3, 324, 162, 0, 833, 832, 1, 0, 0, 0, 834, 837, 1, 0, 0, 0, 835, 833, 1, 0, 0, 0, 835, 836, 1, 0, 0, 0, 836, 839, 1, 0, 0, 0, 837, 835, 1, 0, 0, 0, 838, 840, 3, 326, 163, 0, 839, 838, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 849, 1, 0, 0, 0, 841, 843, 3, 324, 162, 0, 842, 841, 1, 0, 0, 0, 843, 844, 1, 0, 0, 0, 844, 842, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 846, 1, 0, 0, 0, 846, 847, 3, 326, 163, 0, 847, 849, 1, 0, 0, 0, 848, 827, 1, 0, 0, 0, 848, 828, 1, 0, 0, 0, 848, 829, 1, 0, 0, 0, 848, 842, 1, 0, 0, 0, 849, 855, 1, 0, 0, 0, 850, 855, 3, 104, 52, 0, 851, 852, 3, 324, 162, 0, 852, 853, 3, 326, 163, 0, 853, 855, 1, 0, 0, 0, 854, 826, 1, 0, 0, 0, 854, 850, 1, 0, 0, 0, 854, 851, 1, 0, 0, 0, 855, 922, 1, 0, 0, 0, 856, 857, 5, 129, 0, 0, 857, 860, 3, 26, 13, 0, 858, 859, 5, 132, 0, 0, 859, 861, 3, 26, 13, 0, 860, 858, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 860, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 864, 1, 0, 0, 0, 864, 865, 5, 130, 0, 0, 865, 922, 1, 0, 0, 0, 866, 867, 5, 98, 0, 0, 867, 871, 5, 129, 0, 0, 868, 872, 3, 110, 55, 0, 869, 872, 3, 4, 2, 0, 870, 872, 5, 108, 0, 0, 871, 868, 1, 0, 0, 0, 871, 869, 1, 0, 0, 0, 871, 870, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 922, 5, 130, 0, 0, 874, 875, 5, 25, 0, 0, 875, 876, 5, 129, 0, 0, 876, 877, 3, 28, 14, 0, 877, 878, 5, 130, 0, 0, 878, 922, 1, 0, 0, 0, 879, 880, 5, 101, 0, 0, 880, 881, 5, 129, 0, 0, 881, 882, 3, 28, 14, 0, 882, 883, 5, 130, 0, 0, 883, 922, 1, 0, 0, 0, 884, 889, 5, 30, 0, 0, 885, 886, 5, 129, 0, 0, 886, 887, 3, 4, 2, 0, 887, 888, 5, 130, 0, 0, 888, 890, 1, 0, 0, 0, 889, 885, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 922, 1, 0, 0, 0, 891, 893, 5, 15, 0, 0, 892, 891, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 900, 5, 31, 0, 0, 895, 897, 5, 129, 0, 0, 896, 898, 3, 124, 62, 0, 897, 896, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 901, 5, 130, 0, 0, 900, 895, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 922, 3, 172, 86, 0, 903, 904, 5, 88, 0, 0, 904, 905, 5, 129, 0, 0, 905, 906, 3, 4, 2, 0, 906, 907, 5, 130, 0, 0, 907, 922, 1, 0, 0, 0, 908, 909, 5, 64, 0, 0, 909, 915, 5, 129, 0, 0, 910, 911, 3, 436, 218, 0, 911, 912, 5, 131, 0, 0, 912, 914, 1, 0, 0, 0, 913, 910, 1, 0, 0, 0, 914, 917, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 918, 1, 0, 0, 0, 917, 915, 1, 0, 0, 0, 918, 919, 3, 436, 218, 0, 919, 920, 5, 130, 0, 0, 920, 922, 1, 0, 0, 0, 921, 800, 1, 0, 0, 0, 921, 801, 1, 0, 0, 0, 921, 805, 1, 0, 0, 0, 921, 809, 1, 0, 0, 0, 921, 810, 1, 0, 0, 0, 921, 811, 1, 0, 0, 0, 921, 812, 1, 0, 0, 0, 921, 813, 1, 0, 0, 0, 921, 825, 1, 0, 0, 0, 921, 856, 1, 0, 0, 0, 921, 866, 1, 0, 0, 0, 921, 874, 1, 0, 0, 0, 921, 879, 1, 0, 0, 0, 921, 884, 1, 0, 0, 0, 921, 892, 1, 0, 0, 0, 921, 903, 1, 0, 0, 0, 921, 908, 1, 0, 0, 0, 922, 75, 1, 0, 0, 0, 923, 926, 3, 28, 14, 0, 924, 926, 3, 78, 39, 0, 925, 923, 1, 0, 0, 0, 925, 924, 1, 0, 0, 0, 926, 77, 1, 0, 0, 0, 927, 928, 5, 95, 0, 0, 928, 929, 3, 28, 14, 0, 929, 79, 1, 0, 0, 0, 930, 932, 5, 148, 0, 0, 931, 930, 1, 0, 0, 0, 931, 932, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 934, 5, 131, 0, 0, 934, 936, 3, 436, 218, 0, 935, 937, 3, 22, 11, 0, 936, 935, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 81, 1, 0, 0, 0, 938, 940, 5, 148, 0, 0, 939, 938, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 941, 1, 0, 0, 0, 941, 942, 5, 127, 0, 0, 942, 947, 3, 84, 42, 0, 943, 944, 5, 132, 0, 0, 944, 946, 3, 84, 42, 0, 945, 943, 1, 0, 0, 0, 946, 949, 1, 0, 0, 0, 947, 945, 1, 0, 0, 0, 947, 948, 1, 0, 0, 0, 948, 950, 1, 0, 0, 0, 949, 947, 1, 0, 0, 0, 950, 951, 5, 128, 0, 0, 951, 83, 1, 0, 0, 0, 952, 953, 3, 436, 218, 0, 953, 954, 5, 133, 0, 0, 954, 956, 1, 0, 0, 0, 955, 952, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 958, 3, 28, 14, 0, 958, 85, 1, 0, 0, 0, 959, 960, 7, 7, 0, 0, 960, 87, 1, 0, 0, 0, 961, 966, 3, 28, 14, 0, 962, 963, 5, 132, 0, 0, 963, 965, 3, 28, 14, 0, 964, 962, 1, 0, 0, 0, 965, 968, 1, 0, 0, 0, 966, 964, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 89, 1, 0, 0, 0, 968, 966, 1, 0, 0, 0, 969, 972, 3, 92, 46, 0, 970, 972, 3, 100, 50, 0, 971, 969, 1, 0, 0, 0, 971, 970, 1, 0, 0, 0, 972, 91, 1, 0, 0, 0, 973, 978, 5, 125, 0, 0, 974, 976, 3, 94, 47, 0, 975, 977, 5, 132, 0, 0, 976, 975, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 979, 1, 0, 0, 0, 978, 974, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 981, 5, 126, 0, 0, 981, 93, 1, 0, 0, 0, 982, 987, 3, 96, 48, 0, 983, 984, 5, 132, 0, 0, 984, 986, 3, 96, 48, 0, 985, 983, 1, 0, 0, 0, 986, 989, 1, 0, 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 95, 1, 0, 0, 0, 989, 987, 1, 0, 0, 0, 990, 996, 3, 436, 218, 0, 991, 992, 5, 127, 0, 0, 992, 993, 3, 28, 14, 0, 993, 994, 5, 128, 0, 0, 994, 996, 1, 0, 0, 0, 995, 990, 1, 0, 0, 0, 995, 991, 1, 0, 0, 0, 996, 997, 1, 0, 0, 0, 997, 998, 5, 145, 0, 0, 998, 999, 3, 98, 49, 0, 999, 97, 1, 0, 0, 0, 1000, 1003, 3, 28, 14, 0, 1001, 1003, 3, 90, 45, 0, 1002, 1000, 1, 0, 0, 0, 1002, 1001, 1, 0, 0, 0, 1003, 99, 1, 0, 0, 0, 1004, 1005, 5, 125, 0, 0, 1005, 1010, 3, 102, 51, 0, 1006, 1007, 5, 132, 0, 0, 1007, 1009, 3, 102, 51, 0, 1008, 1006, 1, 0, 0, 0, 1009, 1012, 1, 0, 0, 0, 1010, 1008, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1014, 1, 0, 0, 0, 1012, 1010, 1, 0, 0, 0, 1013, 1015, 5, 132, 0, 0, 1014, 1013, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1016, 1, 0, 0, 0, 1016, 1017, 5, 126, 0, 0, 1017, 101, 1, 0, 0, 0, 1018, 1024, 3, 30, 15, 0, 1019, 1020, 5, 125, 0, 0, 1020, 1021, 3, 88, 44, 0, 1021, 1022, 5, 126, 0, 0, 1022, 1024, 1, 0, 0, 0, 1023, 1018, 1, 0, 0, 0, 1023, 1019, 1, 0, 0, 0, 1024, 103, 1, 0, 0, 0, 1025, 1030, 5, 125, 0, 0, 1026, 1028, 3, 106, 53, 0, 1027, 1029, 5, 132, 0, 0, 1028, 1027, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1031, 1, 0, 0, 0, 1030, 1026, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1033, 5, 126, 0, 0, 1033, 105, 1, 0, 0, 0, 1034, 1039, 3, 108, 54, 0, 1035, 1036, 5, 132, 0, 0, 1036, 1038, 3, 108, 54, 0, 1037, 1035, 1, 0, 0, 0, 1038, 1041, 1, 0, 0, 0, 1039, 1037, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 107, 1, 0, 0, 0, 1041, 1039, 1, 0, 0, 0, 1042, 1048, 3, 72, 36, 0, 1043, 1044, 3, 436, 218, 0, 1044, 1045, 5, 145, 0, 0, 1045, 1046, 3, 28, 14, 0, 1046, 1048, 1, 0, 0, 0, 1047, 1042, 1, 0, 0, 0, 1047, 1043, 1, 0, 0, 0, 1048, 109, 1, 0, 0, 0, 1049, 1058, 3, 436, 218, 0, 1050, 1052, 3, 112, 56, 0, 1051, 1050, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1059, 1, 0, 0, 0, 1053, 1054, 5, 149, 0, 0, 1054, 1056, 3, 436, 218, 0, 1055, 1057, 3, 112, 56, 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1059, 1, 0, 0, 0, 1058, 1051, 1, 0, 0, 0, 1058, 1053, 1, 0, 0, 0, 1059, 1067, 1, 0, 0, 0, 1060, 1061, 5, 131, 0, 0, 1061, 1063, 3, 436, 218, 0, 1062, 1064, 3, 112, 56, 0, 1063, 1062, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1066, 1, 0, 0, 0, 1065, 1060, 1, 0, 0, 0, 1066, 1069, 1, 0, 0, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 111, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, 1070, 1074, 5, 146, 0, 0, 1071, 1073, 5, 132, 0, 0, 1072, 1071, 1, 0, 0, 0, 1073, 1076, 1, 0, 0, 0, 1074, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1077, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1077, 1078, 5, 147, 0, 0, 1078, 113, 1, 0, 0, 0, 1079, 1084, 3, 6, 3, 0, 1080, 1083, 3, 324, 162, 0, 1081, 1083, 5, 137, 0, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1081, 1, 0, 0, 0, 1083, 1086, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1088, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1087, 1089, 5, 148, 0, 0, 1088, 1087, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1091, 1, 0, 0, 0, 1090, 1092, 3, 116, 58, 0, 1091, 1090, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1094, 1, 0, 0, 0, 1093, 1095, 3, 436, 218, 0, 1094, 1093, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095, 115, 1, 0, 0, 0, 1096, 1097, 5, 125, 0, 0, 1097, 1102, 3, 118, 59, 0, 1098, 1099, 5, 132, 0, 0, 1099, 1101, 3, 118, 59, 0, 1100, 1098, 1, 0, 0, 0, 1101, 1104, 1, 0, 0, 0, 1102, 1100, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1105, 1, 0, 0, 0, 1104, 1102, 1, 0, 0, 0, 1105, 1106, 5, 126, 0, 0, 1106, 117, 1, 0, 0, 0, 1107, 1108, 3, 436, 218, 0, 1108, 1109, 5, 133, 0, 0, 1109, 1110, 3, 28, 14, 0, 1110, 119, 1, 0, 0, 0, 1111, 1113, 5, 15, 0, 0, 1112, 1111, 1, 0, 0, 0, 1112, 1113, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1115, 3, 122, 61, 0, 1115, 1116, 3, 376, 188, 0, 1116, 1117, 3, 130, 65, 0, 1117, 121, 1, 0, 0, 0, 1118, 1119, 5, 129, 0, 0, 1119, 1130, 5, 130, 0, 0, 1120, 1121, 5, 129, 0, 0, 1121, 1122, 3, 124, 62, 0, 1122, 1123, 5, 130, 0, 0, 1123, 1130, 1, 0, 0, 0, 1124, 1125, 5, 129, 0, 0, 1125, 1126, 3, 128, 64, 0, 1126, 1127, 5, 130, 0, 0, 1127, 1130, 1, 0, 0, 0, 1128, 1130, 3, 436, 218, 0, 1129, 1118, 1, 0, 0, 0, 1129, 1120, 1, 0, 0, 0, 1129, 1124, 1, 0, 0, 0, 1129, 1128, 1, 0, 0, 0, 1130, 123, 1, 0, 0, 0, 1131, 1136, 3, 126, 63, 0, 1132, 1133, 5, 132, 0, 0, 1133, 1135, 3, 126, 63, 0, 1134, 1132, 1, 0, 0, 0, 1135, 1138, 1, 0, 0, 0, 1136, 1134, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 125, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1139, 1141, 7, 2, 0, 0, 1140, 1139, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1143, 3, 4, 2, 0, 1143, 1144, 3, 436, 218, 0, 1144, 127, 1, 0, 0, 0, 1145, 1150, 3, 436, 218, 0, 1146, 1147, 5, 132, 0, 0, 1147, 1149, 3, 436, 218, 0, 1148, 1146, 1, 0, 0, 0, 1149, 1152, 1, 0, 0, 0, 1150, 1148, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 129, 1, 0, 0, 0, 1152, 1150, 1, 0, 0, 0, 1153, 1156, 3, 76, 38, 0, 1154, 1156, 3, 172, 86, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1154, 1, 0, 0, 0, 1156, 131, 1, 0, 0, 0, 1157, 1158, 3, 134, 67, 0, 1158, 1159, 3, 136, 68, 0, 1159, 133, 1, 0, 0, 0, 1160, 1162, 5, 48, 0, 0, 1161, 1163, 3, 4, 2, 0, 1162, 1161, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, 1165, 3, 436, 218, 0, 1165, 1166, 5, 54, 0, 0, 1166, 1167, 3, 28, 14, 0, 1167, 135, 1, 0, 0, 0, 1168, 1170, 3, 138, 69, 0, 1169, 1168, 1, 0, 0, 0, 1170, 1173, 1, 0, 0, 0, 1171, 1169, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1174, 1, 0, 0, 0, 1173, 1171, 1, 0, 0, 0, 1174, 1176, 3, 150, 75, 0, 1175, 1177, 3, 152, 76, 0, 1176, 1175, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 137, 1, 0, 0, 0, 1178, 1184, 3, 134, 67, 0, 1179, 1184, 3, 140, 70, 0, 1180, 1184, 3, 142, 71, 0, 1181, 1184, 3, 144, 72, 0, 1182, 1184, 3, 146, 73, 0, 1183, 1178, 1, 0, 0, 0, 1183, 1179, 1, 0, 0, 0, 1183, 1180, 1, 0, 0, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 139, 1, 0, 0, 0, 1185, 1186, 5, 61, 0, 0, 1186, 1187, 3, 436, 218, 0, 1187, 1188, 5, 145, 0, 0, 1188, 1189, 3, 28, 14, 0, 1189, 141, 1, 0, 0, 0, 1190, 1191, 5, 111, 0, 0, 1191, 1192, 3, 28, 14, 0, 1192, 143, 1, 0, 0, 0, 1193, 1195, 5, 60, 0, 0, 1194, 1196, 3, 4, 2, 0, 1195, 1194, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 3, 436, 218, 0, 1198, 1199, 5, 54, 0, 0, 1199, 1200, 3, 28, 14, 0, 1200, 1201, 5, 69, 0, 0, 1201, 1202, 3, 28, 14, 0, 1202, 1203, 5, 38, 0, 0, 1203, 1206, 3, 28, 14, 0, 1204, 1205, 5, 58, 0, 0, 1205, 1207, 3, 436, 218, 0, 1206, 1204, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 145, 1, 0, 0, 0, 1208, 1209, 5, 71, 0, 0, 1209, 1214, 3, 148, 74, 0, 1210, 1211, 5, 132, 0, 0, 1211, 1213, 3, 148, 74, 0, 1212, 1210, 1, 0, 0, 0, 1213, 1216, 1, 0, 0, 0, 1214, 1212, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 147, 1, 0, 0, 0, 1216, 1214, 1, 0, 0, 0, 1217, 1219, 3, 28, 14, 0, 1218, 1220, 7, 8, 0, 0, 1219, 1218, 1, 0, 0, 0, 1219, 1220, 1, 0, 0, 0, 1220, 149, 1, 0, 0, 0, 1221, 1222, 5, 85, 0, 0, 1222, 1229, 3, 28, 14, 0, 1223, 1224, 5, 51, 0, 0, 1224, 1225, 3, 28, 14, 0, 1225, 1226, 5, 20, 0, 0, 1226, 1227, 3, 28, 14, 0, 1227, 1229, 1, 0, 0, 0, 1228, 1221, 1, 0, 0, 0, 1228, 1223, 1, 0, 0, 0, 1229, 151, 1, 0, 0, 0, 1230, 1231, 5, 58, 0, 0, 1231, 1232, 3, 436, 218, 0, 1232, 1233, 3, 136, 68, 0, 1233, 153, 1, 0, 0, 0, 1234, 1238, 3, 166, 83, 0, 1235, 1238, 3, 156, 78, 0, 1236, 1238, 3, 168, 84, 0, 1237, 1234, 1, 0, 0, 0, 1237, 1235, 1, 0, 0, 0, 1237, 1236, 1, 0, 0, 0, 1238, 155, 1, 0, 0, 0, 1239, 1240, 3, 174, 87, 0, 1240, 1241, 5, 134, 0, 0, 1241, 1247, 1, 0, 0, 0, 1242, 1243, 3, 182, 91, 0, 1243, 1244, 5, 134, 0, 0, 1244, 1247, 1, 0, 0, 0, 1245, 1247, 3, 158, 79, 0, 1246, 1239, 1, 0, 0, 0, 1246, 1242, 1, 0, 0, 0, 1246, 1245, 1, 0, 0, 0, 1247, 157, 1, 0, 0, 0, 1248, 1249, 3, 160, 80, 0, 1249, 1250, 3, 164, 82, 0, 1250, 159, 1, 0, 0, 0, 1251, 1253, 3, 162, 81, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1255, 3, 276, 138, 0, 1255, 1257, 3, 436, 218, 0, 1256, 1258, 3, 232, 116, 0, 1257, 1256, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1261, 5, 129, 0, 0, 1260, 1262, 3, 282, 141, 0, 1261, 1260, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1265, 5, 130, 0, 0, 1264, 1266, 3, 240, 120, 0, 1265, 1264, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 161, 1, 0, 0, 0, 1267, 1269, 7, 9, 0, 0, 1268, 1270, 5, 90, 0, 0, 1269, 1268, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1274, 1, 0, 0, 0, 1271, 1272, 5, 90, 0, 0, 1272, 1274, 7, 9, 0, 0, 1273, 1267, 1, 0, 0, 0, 1273, 1271, 1, 0, 0, 0, 1274, 163, 1, 0, 0, 0, 1275, 1281, 3, 172, 86, 0, 1276, 1277, 3, 376, 188, 0, 1277, 1278, 3, 76, 38, 0, 1278, 1279, 5, 134, 0, 0, 1279, 1281, 1, 0, 0, 0, 1280, 1275, 1, 0, 0, 0, 1280, 1276, 1, 0, 0, 0, 1281, 165, 1, 0, 0, 0, 1282, 1283, 3, 436, 218, 0, 1283, 1284, 5, 133, 0, 0, 1284, 1285, 3, 154, 77, 0, 1285, 167, 1, 0, 0, 0, 1286, 1289, 3, 172, 86, 0, 1287, 1289, 3, 170, 85, 0, 1288, 1286, 1, 0, 0, 0, 1288, 1287, 1, 0, 0, 0, 1289, 169, 1, 0, 0, 0, 1290, 1421, 5, 134, 0, 0, 1291, 1292, 3, 28, 14, 0, 1292, 1293, 5, 134, 0, 0, 1293, 1421, 1, 0, 0, 0, 1294, 1295, 5, 52, 0, 0, 1295, 1296, 5, 129, 0, 0, 1296, 1297, 3, 28, 14, 0, 1297, 1298, 5, 130, 0, 0, 1298, 1301, 3, 184, 92, 0, 1299, 1300, 5, 36, 0, 0, 1300, 1302, 3, 184, 92, 0, 1301, 1299, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1421, 1, 0, 0, 0, 1303, 1304, 5, 93, 0, 0, 1304, 1305, 5, 129, 0, 0, 1305, 1306, 3, 28, 14, 0, 1306, 1307, 5, 130, 0, 0, 1307, 1311, 5, 125, 0, 0, 1308, 1310, 3, 186, 93, 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, 126, 0, 0, 1315, 1421, 1, 0, 0, 0, 1316, 1317, 5, 112, 0, 0, 1317, 1318, 5, 129, 0, 0, 1318, 1319, 3, 28, 14, 0, 1319, 1320, 5, 130, 0, 0, 1320, 1321, 3, 168, 84, 0, 1321, 1421, 1, 0, 0, 0, 1322, 1323, 5, 33, 0, 0, 1323, 1324, 3, 168, 84, 0, 1324, 1325, 5, 112, 0, 0, 1325, 1326, 5, 129, 0, 0, 1326, 1327, 3, 28, 14, 0, 1327, 1328, 5, 130, 0, 0, 1328, 1329, 5, 134, 0, 0, 1329, 1421, 1, 0, 0, 0, 1330, 1331, 5, 46, 0, 0, 1331, 1333, 5, 129, 0, 0, 1332, 1334, 3, 194, 97, 0, 1333, 1332, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 1337, 5, 134, 0, 0, 1336, 1338, 3, 28, 14, 0, 1337, 1336, 1, 0, 0, 0, 1337, 1338, 1, 0, 0, 0, 1338, 1339, 1, 0, 0, 0, 1339, 1341, 5, 134, 0, 0, 1340, 1342, 3, 196, 98, 0, 1341, 1340, 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1344, 5, 130, 0, 0, 1344, 1421, 3, 168, 84, 0, 1345, 1347, 5, 16, 0, 0, 1346, 1345, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1349, 5, 47, 0, 0, 1349, 1350, 5, 129, 0, 0, 1350, 1351, 3, 176, 88, 0, 1351, 1352, 3, 436, 218, 0, 1352, 1353, 5, 54, 0, 0, 1353, 1354, 3, 28, 14, 0, 1354, 1355, 5, 130, 0, 0, 1355, 1356, 3, 168, 84, 0, 1356, 1421, 1, 0, 0, 0, 1357, 1358, 5, 19, 0, 0, 1358, 1421, 5, 134, 0, 0, 1359, 1360, 5, 28, 0, 0, 1360, 1421, 5, 134, 0, 0, 1361, 1366, 5, 50, 0, 0, 1362, 1367, 3, 436, 218, 0, 1363, 1364, 5, 22, 0, 0, 1364, 1367, 3, 28, 14, 0, 1365, 1367, 5, 30, 0, 0, 1366, 1362, 1, 0, 0, 0, 1366, 1363, 1, 0, 0, 0, 1366, 1365, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1421, 5, 134, 0, 0, 1369, 1371, 5, 82, 0, 0, 1370, 1372, 3, 28, 14, 0, 1371, 1370, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 1, 0, 0, 0, 1373, 1421, 5, 134, 0, 0, 1374, 1376, 5, 95, 0, 0, 1375, 1377, 3, 28, 14, 0, 1376, 1375, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1421, 5, 134, 0, 0, 1379, 1380, 5, 97, 0, 0, 1380, 1386, 3, 172, 86, 0, 1381, 1383, 3, 198, 99, 0, 1382, 1384, 3, 206, 103, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1387, 1, 0, 0, 0, 1385, 1387, 3, 206, 103, 0, 1386, 1381, 1, 0, 0, 0, 1386, 1385, 1, 0, 0, 0, 1387, 1421, 1, 0, 0, 0, 1388, 1389, 5, 25, 0, 0, 1389, 1421, 3, 172, 86, 0, 1390, 1391, 5, 101, 0, 0, 1391, 1421, 3, 172, 86, 0, 1392, 1393, 5, 62, 0, 0, 1393, 1394, 5, 129, 0, 0, 1394, 1395, 3, 28, 14, 0, 1395, 1396, 5, 130, 0, 0, 1396, 1397, 3, 168, 84, 0, 1397, 1421, 1, 0, 0, 0, 1398, 1399, 5, 105, 0, 0, 1399, 1400, 5, 129, 0, 0, 1400, 1401, 3, 208, 104, 0, 1401, 1402, 5, 130, 0, 0, 1402, 1403, 3, 168, 84, 0, 1403, 1421, 1, 0, 0, 0, 1404, 1408, 5, 113, 0, 0, 1405, 1406, 5, 82, 0, 0, 1406, 1409, 3, 28, 14, 0, 1407, 1409, 5, 19, 0, 0, 1408, 1405, 1, 0, 0, 0, 1408, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1421, 5, 134, 0, 0, 1411, 1412, 5, 103, 0, 0, 1412, 1421, 3, 172, 86, 0, 1413, 1414, 5, 44, 0, 0, 1414, 1415, 5, 129, 0, 0, 1415, 1416, 3, 364, 182, 0, 1416, 1417, 3, 366, 183, 0, 1417, 1418, 5, 130, 0, 0, 1418, 1419, 3, 168, 84, 0, 1419, 1421, 1, 0, 0, 0, 1420, 1290, 1, 0, 0, 0, 1420, 1291, 1, 0, 0, 0, 1420, 1294, 1, 0, 0, 0, 1420, 1303, 1, 0, 0, 0, 1420, 1316, 1, 0, 0, 0, 1420, 1322, 1, 0, 0, 0, 1420, 1330, 1, 0, 0, 0, 1420, 1346, 1, 0, 0, 0, 1420, 1357, 1, 0, 0, 0, 1420, 1359, 1, 0, 0, 0, 1420, 1361, 1, 0, 0, 0, 1420, 1369, 1, 0, 0, 0, 1420, 1374, 1, 0, 0, 0, 1420, 1379, 1, 0, 0, 0, 1420, 1388, 1, 0, 0, 0, 1420, 1390, 1, 0, 0, 0, 1420, 1392, 1, 0, 0, 0, 1420, 1398, 1, 0, 0, 0, 1420, 1404, 1, 0, 0, 0, 1420, 1411, 1, 0, 0, 0, 1420, 1413, 1, 0, 0, 0, 1421, 171, 1, 0, 0, 0, 1422, 1424, 5, 125, 0, 0, 1423, 1425, 3, 192, 96, 0, 1424, 1423, 1, 0, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1427, 5, 126, 0, 0, 1427, 173, 1, 0, 0, 0, 1428, 1433, 5, 105, 0, 0, 1429, 1433, 5, 80, 0, 0, 1430, 1431, 5, 80, 0, 0, 1431, 1433, 5, 79, 0, 0, 1432, 1428, 1, 0, 0, 0, 1432, 1429, 1, 0, 0, 0, 1432, 1430, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1434, 1, 0, 0, 0, 1434, 1435, 3, 176, 88, 0, 1435, 1442, 3, 178, 89, 0, 1436, 1437, 5, 132, 0, 0, 1437, 1438, 3, 178, 89, 0, 1438, 1439, 4, 87, 0, 0, 1439, 1441, 1, 0, 0, 0, 1440, 1436, 1, 0, 0, 0, 1441, 1444, 1, 0, 0, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1450, 1, 0, 0, 0, 1444, 1442, 1, 0, 0, 0, 1445, 1446, 5, 44, 0, 0, 1446, 1447, 3, 364, 182, 0, 1447, 1448, 3, 366, 183, 0, 1448, 1450, 1, 0, 0, 0, 1449, 1432, 1, 0, 0, 0, 1449, 1445, 1, 0, 0, 0, 1450, 175, 1, 0, 0, 0, 1451, 1454, 5, 106, 0, 0, 1452, 1454, 3, 4, 2, 0, 1453, 1451, 1, 0, 0, 0, 1453, 1452, 1, 0, 0, 0, 1454, 177, 1, 0, 0, 0, 1455, 1461, 3, 436, 218, 0, 1456, 1458, 5, 145, 0, 0, 1457, 1459, 5, 80, 0, 0, 1458, 1457, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1462, 3, 180, 90, 0, 1461, 1456, 1, 0, 0, 0, 1461, 1462, 1, 0, 0, 0, 1462, 179, 1, 0, 0, 0, 1463, 1467, 3, 28, 14, 0, 1464, 1467, 3, 326, 163, 0, 1465, 1467, 3, 374, 187, 0, 1466, 1463, 1, 0, 0, 0, 1466, 1464, 1, 0, 0, 0, 1466, 1465, 1, 0, 0, 0, 1467, 181, 1, 0, 0, 0, 1468, 1469, 5, 27, 0, 0, 1469, 1470, 3, 4, 2, 0, 1470, 1471, 3, 266, 133, 0, 1471, 183, 1, 0, 0, 0, 1472, 1475, 3, 172, 86, 0, 1473, 1475, 3, 170, 85, 0, 1474, 1472, 1, 0, 0, 0, 1474, 1473, 1, 0, 0, 0, 1475, 185, 1, 0, 0, 0, 1476, 1478, 3, 188, 94, 0, 1477, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 3, 192, 96, 0, 1482, 187, 1, 0, 0, 0, 1483, 1484, 5, 22, 0, 0, 1484, 1486, 3, 28, 14, 0, 1485, 1487, 3, 190, 95, 0, 1486, 1485, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1489, 5, 133, 0, 0, 1489, 1493, 1, 0, 0, 0, 1490, 1491, 5, 30, 0, 0, 1491, 1493, 5, 133, 0, 0, 1492, 1483, 1, 0, 0, 0, 1492, 1490, 1, 0, 0, 0, 1493, 189, 1, 0, 0, 0, 1494, 1495, 5, 110, 0, 0, 1495, 1496, 3, 28, 14, 0, 1496, 191, 1, 0, 0, 0, 1497, 1499, 3, 154, 77, 0, 1498, 1497, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 193, 1, 0, 0, 0, 1502, 1512, 3, 174, 87, 0, 1503, 1508, 3, 28, 14, 0, 1504, 1505, 5, 132, 0, 0, 1505, 1507, 3, 28, 14, 0, 1506, 1504, 1, 0, 0, 0, 1507, 1510, 1, 0, 0, 0, 1508, 1506, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1512, 1, 0, 0, 0, 1510, 1508, 1, 0, 0, 0, 1511, 1502, 1, 0, 0, 0, 1511, 1503, 1, 0, 0, 0, 1512, 195, 1, 0, 0, 0, 1513, 1518, 3, 28, 14, 0, 1514, 1515, 5, 132, 0, 0, 1515, 1517, 3, 28, 14, 0, 1516, 1514, 1, 0, 0, 0, 1517, 1520, 1, 0, 0, 0, 1518, 1516, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 197, 1, 0, 0, 0, 1520, 1518, 1, 0, 0, 0, 1521, 1525, 3, 200, 100, 0, 1522, 1524, 3, 200, 100, 0, 1523, 1522, 1, 0, 0, 0, 1524, 1527, 1, 0, 0, 0, 1525, 1523, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1529, 1, 0, 0, 0, 1527, 1525, 1, 0, 0, 0, 1528, 1530, 3, 202, 101, 0, 1529, 1528, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531, 1533, 3, 202, 101, 0, 1532, 1521, 1, 0, 0, 0, 1532, 1531, 1, 0, 0, 0, 1533, 199, 1, 0, 0, 0, 1534, 1535, 5, 23, 0, 0, 1535, 1536, 5, 129, 0, 0, 1536, 1538, 3, 20, 10, 0, 1537, 1539, 3, 436, 218, 0, 1538, 1537, 1, 0, 0, 0, 1538, 1539, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1542, 5, 130, 0, 0, 1541, 1543, 3, 204, 102, 0, 1542, 1541, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1545, 3, 172, 86, 0, 1545, 201, 1, 0, 0, 0, 1546, 1548, 5, 23, 0, 0, 1547, 1549, 3, 204, 102, 0, 1548, 1547, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1551, 3, 172, 86, 0, 1551, 203, 1, 0, 0, 0, 1552, 1553, 5, 110, 0, 0, 1553, 1554, 5, 129, 0, 0, 1554, 1555, 3, 28, 14, 0, 1555, 1556, 5, 130, 0, 0, 1556, 205, 1, 0, 0, 0, 1557, 1558, 5, 43, 0, 0, 1558, 1559, 3, 172, 86, 0, 1559, 207, 1, 0, 0, 0, 1560, 1563, 3, 174, 87, 0, 1561, 1563, 3, 28, 14, 0, 1562, 1560, 1, 0, 0, 0, 1562, 1561, 1, 0, 0, 0, 1563, 209, 1, 0, 0, 0, 1564, 1565, 5, 65, 0, 0, 1565, 1566, 3, 212, 106, 0, 1566, 1568, 3, 214, 107, 0, 1567, 1569, 5, 134, 0, 0, 1568, 1567, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569, 211, 1, 0, 0, 0, 1570, 1575, 3, 436, 218, 0, 1571, 1572, 5, 131, 0, 0, 1572, 1574, 3, 436, 218, 0, 1573, 1571, 1, 0, 0, 0, 1574, 1577, 1, 0, 0, 0, 1575, 1573, 1, 0, 0, 0, 1575, 1576, 1, 0, 0, 0, 1576, 213, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1578, 1580, 5, 125, 0, 0, 1579, 1581, 3, 216, 108, 0, 1580, 1579, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 1583, 1, 0, 0, 0, 1582, 1584, 3, 220, 110, 0, 1583, 1582, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 1586, 1, 0, 0, 0, 1585, 1587, 3, 224, 112, 0, 1586, 1585, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 5, 126, 0, 0, 1589, 215, 1, 0, 0, 0, 1590, 1592, 3, 218, 109, 0, 1591, 1590, 1, 0, 0, 0, 1592, 1593, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 217, 1, 0, 0, 0, 1595, 1596, 5, 41, 0, 0, 1596, 1597, 5, 11, 0, 0, 1597, 1598, 3, 436, 218, 0, 1598, 1599, 5, 134, 0, 0, 1599, 219, 1, 0, 0, 0, 1600, 1602, 3, 222, 111, 0, 1601, 1600, 1, 0, 0, 0, 1602, 1603, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 221, 1, 0, 0, 0, 1605, 1606, 5, 105, 0, 0, 1606, 1607, 3, 436, 218, 0, 1607, 1608, 5, 145, 0, 0, 1608, 1609, 3, 2, 1, 0, 1609, 1610, 5, 134, 0, 0, 1610, 1621, 1, 0, 0, 0, 1611, 1612, 5, 105, 0, 0, 1612, 1613, 3, 2, 1, 0, 1613, 1614, 5, 134, 0, 0, 1614, 1621, 1, 0, 0, 0, 1615, 1616, 5, 105, 0, 0, 1616, 1617, 5, 90, 0, 0, 1617, 1618, 3, 2, 1, 0, 1618, 1619, 5, 134, 0, 0, 1619, 1621, 1, 0, 0, 0, 1620, 1605, 1, 0, 0, 0, 1620, 1611, 1, 0, 0, 0, 1620, 1615, 1, 0, 0, 0, 1621, 223, 1, 0, 0, 0, 1622, 1624, 3, 226, 113, 0, 1623, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1623, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 225, 1, 0, 0, 0, 1627, 1630, 3, 210, 105, 0, 1628, 1630, 3, 228, 114, 0, 1629, 1627, 1, 0, 0, 0, 1629, 1628, 1, 0, 0, 0, 1630, 227, 1, 0, 0, 0, 1631, 1633, 3, 352, 176, 0, 1632, 1631, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1635, 1, 0, 0, 0, 1634, 1636, 3, 258, 129, 0, 1635, 1634, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1642, 1, 0, 0, 0, 1637, 1643, 3, 400, 200, 0, 1638, 1643, 3, 402, 201, 0, 1639, 1643, 3, 404, 202, 0, 1640, 1643, 3, 406, 203, 0, 1641, 1643, 3, 408, 204, 0, 1642, 1637, 1, 0, 0, 0, 1642, 1638, 1, 0, 0, 0, 1642, 1639, 1, 0, 0, 0, 1642, 1640, 1, 0, 0, 0, 1642, 1641, 1, 0, 0, 0, 1643, 229, 1, 0, 0, 0, 1644, 1645, 3, 436, 218, 0, 1645, 1646, 5, 149, 0, 0, 1646, 1648, 3, 436, 218, 0, 1647, 1649, 3, 22, 11, 0, 1648, 1647, 1, 0, 0, 0, 1648, 1649, 1, 0, 0, 0, 1649, 231, 1, 0, 0, 0, 1650, 1651, 5, 146, 0, 0, 1651, 1656, 3, 234, 117, 0, 1652, 1653, 5, 132, 0, 0, 1653, 1655, 3, 234, 117, 0, 1654, 1652, 1, 0, 0, 0, 1655, 1658, 1, 0, 0, 0, 1656, 1654, 1, 0, 0, 0, 1656, 1657, 1, 0, 0, 0, 1657, 1659, 1, 0, 0, 0, 1658, 1656, 1, 0, 0, 0, 1659, 1660, 5, 147, 0, 0, 1660, 233, 1, 0, 0, 0, 1661, 1663, 3, 352, 176, 0, 1662, 1661, 1, 0, 0, 0, 1662, 1663, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 1665, 3, 436, 218, 0, 1665, 235, 1, 0, 0, 0, 1666, 1667, 5, 133, 0, 0, 1667, 1672, 3, 20, 10, 0, 1668, 1669, 5, 132, 0, 0, 1669, 1671, 3, 2, 1, 0, 1670, 1668, 1, 0, 0, 0, 1671, 1674, 1, 0, 0, 0, 1672, 1670, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 237, 1, 0, 0, 0, 1674, 1672, 1, 0, 0, 0, 1675, 1680, 3, 2, 1, 0, 1676, 1677, 5, 132, 0, 0, 1677, 1679, 3, 2, 1, 0, 1678, 1676, 1, 0, 0, 0, 1679, 1682, 1, 0, 0, 0, 1680, 1678, 1, 0, 0, 0, 1680, 1681, 1, 0, 0, 0, 1681, 239, 1, 0, 0, 0, 1682, 1680, 1, 0, 0, 0, 1683, 1685, 3, 242, 121, 0, 1684, 1683, 1, 0, 0, 0, 1685, 1686, 1, 0, 0, 0, 1686, 1684, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1687, 241, 1, 0, 0, 0, 1688, 1689, 5, 111, 0, 0, 1689, 1690, 3, 436, 218, 0, 1690, 1691, 5, 133, 0, 0, 1691, 1692, 3, 244, 122, 0, 1692, 243, 1, 0, 0, 0, 1693, 1704, 3, 250, 125, 0, 1694, 1697, 3, 246, 123, 0, 1695, 1696, 5, 132, 0, 0, 1696, 1698, 3, 248, 124, 0, 1697, 1695, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1701, 1, 0, 0, 0, 1699, 1700, 5, 132, 0, 0, 1700, 1702, 3, 250, 125, 0, 1701, 1699, 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1704, 1, 0, 0, 0, 1703, 1693, 1, 0, 0, 0, 1703, 1694, 1, 0, 0, 0, 1704, 245, 1, 0, 0, 0, 1705, 1713, 3, 20, 10, 0, 1706, 1708, 5, 26, 0, 0, 1707, 1709, 5, 148, 0, 0, 1708, 1707, 1, 0, 0, 0, 1708, 1709, 1, 0, 0, 0, 1709, 1713, 1, 0, 0, 0, 1710, 1713, 5, 92, 0, 0, 1711, 1713, 5, 102, 0, 0, 1712, 1705, 1, 0, 0, 0, 1712, 1706, 1, 0, 0, 0, 1712, 1710, 1, 0, 0, 0, 1712, 1711, 1, 0, 0, 0, 1713, 247, 1, 0, 0, 0, 1714, 1719, 3, 2, 1, 0, 1715, 1716, 5, 132, 0, 0, 1716, 1718, 3, 2, 1, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1721, 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 249, 1, 0, 0, 0, 1721, 1719, 1, 0, 0, 0, 1722, 1723, 5, 66, 0, 0, 1723, 1724, 5, 129, 0, 0, 1724, 1725, 5, 130, 0, 0, 1725, 251, 1, 0, 0, 0, 1726, 1728, 5, 125, 0, 0, 1727, 1729, 3, 254, 127, 0, 1728, 1727, 1, 0, 0, 0, 1728, 1729, 1, 0, 0, 0, 1729, 1730, 1, 0, 0, 0, 1730, 1731, 5, 126, 0, 0, 1731, 253, 1, 0, 0, 0, 1732, 1734, 3, 256, 128, 0, 1733, 1732, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1733, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 255, 1, 0, 0, 0, 1737, 1739, 3, 352, 176, 0, 1738, 1737, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1741, 1, 0, 0, 0, 1740, 1742, 3, 258, 129, 0, 1741, 1740, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1745, 1, 0, 0, 0, 1743, 1746, 3, 262, 131, 0, 1744, 1746, 3, 420, 210, 0, 1745, 1743, 1, 0, 0, 0, 1745, 1744, 1, 0, 0, 0, 1746, 257, 1, 0, 0, 0, 1747, 1749, 3, 260, 130, 0, 1748, 1747, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1748, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 259, 1, 0, 0, 0, 1752, 1753, 7, 10, 0, 0, 1753, 261, 1, 0, 0, 0, 1754, 1774, 3, 416, 208, 0, 1755, 1774, 3, 264, 132, 0, 1756, 1774, 3, 410, 205, 0, 1757, 1763, 3, 310, 155, 0, 1758, 1764, 3, 314, 157, 0, 1759, 1760, 3, 376, 188, 0, 1760, 1761, 3, 76, 38, 0, 1761, 1762, 5, 134, 0, 0, 1762, 1764, 1, 0, 0, 0, 1763, 1758, 1, 0, 0, 0, 1763, 1759, 1, 0, 0, 0, 1764, 1774, 1, 0, 0, 0, 1765, 1774, 3, 422, 211, 0, 1766, 1767, 5, 108, 0, 0, 1767, 1774, 3, 424, 212, 0, 1768, 1774, 3, 400, 200, 0, 1769, 1774, 3, 402, 201, 0, 1770, 1774, 3, 404, 202, 0, 1771, 1774, 3, 406, 203, 0, 1772, 1774, 3, 408, 204, 0, 1773, 1754, 1, 0, 0, 0, 1773, 1755, 1, 0, 0, 0, 1773, 1756, 1, 0, 0, 0, 1773, 1757, 1, 0, 0, 0, 1773, 1765, 1, 0, 0, 0, 1773, 1766, 1, 0, 0, 0, 1773, 1768, 1, 0, 0, 0, 1773, 1769, 1, 0, 0, 0, 1773, 1770, 1, 0, 0, 0, 1773, 1771, 1, 0, 0, 0, 1773, 1772, 1, 0, 0, 0, 1774, 263, 1, 0, 0, 0, 1775, 1781, 5, 80, 0, 0, 1776, 1777, 5, 79, 0, 0, 1777, 1781, 5, 80, 0, 0, 1778, 1779, 5, 80, 0, 0, 1779, 1781, 5, 79, 0, 0, 1780, 1775, 1, 0, 0, 0, 1780, 1776, 1, 0, 0, 0, 1780, 1778, 1, 0, 0, 0, 1780, 1781, 1, 0, 0, 0, 1781, 1782, 1, 0, 0, 0, 1782, 1792, 3, 4, 2, 0, 1783, 1784, 3, 2, 1, 0, 1784, 1785, 5, 131, 0, 0, 1785, 1786, 3, 418, 209, 0, 1786, 1793, 1, 0, 0, 0, 1787, 1793, 3, 424, 212, 0, 1788, 1793, 3, 414, 207, 0, 1789, 1793, 3, 418, 209, 0, 1790, 1793, 3, 428, 214, 0, 1791, 1793, 3, 412, 206, 0, 1792, 1783, 1, 0, 0, 0, 1792, 1787, 1, 0, 0, 0, 1792, 1788, 1, 0, 0, 0, 1792, 1789, 1, 0, 0, 0, 1792, 1790, 1, 0, 0, 0, 1792, 1791, 1, 0, 0, 0, 1793, 265, 1, 0, 0, 0, 1794, 1799, 3, 268, 134, 0, 1795, 1796, 5, 132, 0, 0, 1796, 1798, 3, 268, 134, 0, 1797, 1795, 1, 0, 0, 0, 1798, 1801, 1, 0, 0, 0, 1799, 1797, 1, 0, 0, 0, 1799, 1800, 1, 0, 0, 0, 1800, 267, 1, 0, 0, 0, 1801, 1799, 1, 0, 0, 0, 1802, 1803, 3, 436, 218, 0, 1803, 1804, 5, 145, 0, 0, 1804, 1805, 3, 28, 14, 0, 1805, 269, 1, 0, 0, 0, 1806, 1811, 3, 272, 136, 0, 1807, 1808, 5, 132, 0, 0, 1808, 1810, 3, 272, 136, 0, 1809, 1807, 1, 0, 0, 0, 1810, 1813, 1, 0, 0, 0, 1811, 1809, 1, 0, 0, 0, 1811, 1812, 1, 0, 0, 0, 1812, 271, 1, 0, 0, 0, 1813, 1811, 1, 0, 0, 0, 1814, 1817, 3, 436, 218, 0, 1815, 1816, 5, 145, 0, 0, 1816, 1818, 3, 274, 137, 0, 1817, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 273, 1, 0, 0, 0, 1819, 1822, 3, 28, 14, 0, 1820, 1822, 3, 326, 163, 0, 1821, 1819, 1, 0, 0, 0, 1821, 1820, 1, 0, 0, 0, 1822, 275, 1, 0, 0, 0, 1823, 1826, 3, 4, 2, 0, 1824, 1826, 5, 108, 0, 0, 1825, 1823, 1, 0, 0, 0, 1825, 1824, 1, 0, 0, 0, 1826, 277, 1, 0, 0, 0, 1827, 1828, 3, 2, 1, 0, 1828, 279, 1, 0, 0, 0, 1829, 1832, 3, 172, 86, 0, 1830, 1832, 5, 134, 0, 0, 1831, 1829, 1, 0, 0, 0, 1831, 1830, 1, 0, 0, 0, 1832, 281, 1, 0, 0, 0, 1833, 1840, 3, 290, 145, 0, 1834, 1837, 3, 284, 142, 0, 1835, 1836, 5, 132, 0, 0, 1836, 1838, 3, 290, 145, 0, 1837, 1835, 1, 0, 0, 0, 1837, 1838, 1, 0, 0, 0, 1838, 1840, 1, 0, 0, 0, 1839, 1833, 1, 0, 0, 0, 1839, 1834, 1, 0, 0, 0, 1840, 283, 1, 0, 0, 0, 1841, 1846, 3, 286, 143, 0, 1842, 1843, 5, 132, 0, 0, 1843, 1845, 3, 286, 143, 0, 1844, 1842, 1, 0, 0, 0, 1845, 1848, 1, 0, 0, 0, 1846, 1844, 1, 0, 0, 0, 1846, 1847, 1, 0, 0, 0, 1847, 285, 1, 0, 0, 0, 1848, 1846, 1, 0, 0, 0, 1849, 1851, 3, 352, 176, 0, 1850, 1849, 1, 0, 0, 0, 1850, 1851, 1, 0, 0, 0, 1851, 1853, 1, 0, 0, 0, 1852, 1854, 3, 288, 144, 0, 1853, 1852, 1, 0, 0, 0, 1853, 1854, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1858, 3, 430, 215, 0, 1856, 1858, 5, 12, 0, 0, 1857, 1850, 1, 0, 0, 0, 1857, 1856, 1, 0, 0, 0, 1858, 287, 1, 0, 0, 0, 1859, 1868, 5, 80, 0, 0, 1860, 1868, 5, 72, 0, 0, 1861, 1868, 5, 54, 0, 0, 1862, 1863, 5, 80, 0, 0, 1863, 1868, 5, 94, 0, 0, 1864, 1865, 5, 54, 0, 0, 1865, 1868, 5, 94, 0, 0, 1866, 1868, 5, 94, 0, 0, 1867, 1859, 1, 0, 0, 0, 1867, 1860, 1, 0, 0, 0, 1867, 1861, 1, 0, 0, 0, 1867, 1862, 1, 0, 0, 0, 1867, 1864, 1, 0, 0, 0, 1867, 1866, 1, 0, 0, 0, 1868, 289, 1, 0, 0, 0, 1869, 1871, 3, 352, 176, 0, 1870, 1869, 1, 0, 0, 0, 1870, 1871, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1873, 5, 74, 0, 0, 1873, 1874, 3, 322, 161, 0, 1874, 1875, 3, 436, 218, 0, 1875, 291, 1, 0, 0, 0, 1876, 1878, 3, 352, 176, 0, 1877, 1876, 1, 0, 0, 0, 1877, 1878, 1, 0, 0, 0, 1878, 1880, 1, 0, 0, 0, 1879, 1881, 3, 298, 149, 0, 1880, 1879, 1, 0, 0, 0, 1880, 1881, 1, 0, 0, 0, 1881, 1892, 1, 0, 0, 0, 1882, 1883, 5, 49, 0, 0, 1883, 1885, 3, 300, 150, 0, 1884, 1886, 3, 296, 148, 0, 1885, 1884, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1893, 1, 0, 0, 0, 1887, 1888, 5, 86, 0, 0, 1888, 1890, 3, 300, 150, 0, 1889, 1891, 3, 294, 147, 0, 1890, 1889, 1, 0, 0, 0, 1890, 1891, 1, 0, 0, 0, 1891, 1893, 1, 0, 0, 0, 1892, 1882, 1, 0, 0, 0, 1892, 1887, 1, 0, 0, 0, 1893, 293, 1, 0, 0, 0, 1894, 1896, 3, 352, 176, 0, 1895, 1894, 1, 0, 0, 0, 1895, 1896, 1, 0, 0, 0, 1896, 1898, 1, 0, 0, 0, 1897, 1899, 3, 298, 149, 0, 1898, 1897, 1, 0, 0, 0, 1898, 1899, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 1901, 5, 49, 0, 0, 1901, 1902, 3, 300, 150, 0, 1902, 295, 1, 0, 0, 0, 1903, 1905, 3, 352, 176, 0, 1904, 1903, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 1907, 1, 0, 0, 0, 1906, 1908, 3, 298, 149, 0, 1907, 1906, 1, 0, 0, 0, 1907, 1908, 1, 0, 0, 0, 1908, 1909, 1, 0, 0, 0, 1909, 1910, 5, 86, 0, 0, 1910, 1911, 3, 300, 150, 0, 1911, 297, 1, 0, 0, 0, 1912, 1920, 5, 77, 0, 0, 1913, 1920, 5, 57, 0, 0, 1914, 1920, 5, 76, 0, 0, 1915, 1916, 5, 77, 0, 0, 1916, 1920, 5, 57, 0, 0, 1917, 1918, 5, 57, 0, 0, 1918, 1920, 5, 77, 0, 0, 1919, 1912, 1, 0, 0, 0, 1919, 1913, 1, 0, 0, 0, 1919, 1914, 1, 0, 0, 0, 1919, 1915, 1, 0, 0, 0, 1919, 1917, 1, 0, 0, 0, 1920, 299, 1, 0, 0, 0, 1921, 1924, 3, 172, 86, 0, 1922, 1924, 5, 134, 0, 0, 1923, 1921, 1, 0, 0, 0, 1923, 1922, 1, 0, 0, 0, 1924, 301, 1, 0, 0, 0, 1925, 1927, 3, 352, 176, 0, 1926, 1925, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1936, 1, 0, 0, 0, 1928, 1929, 5, 10, 0, 0, 1929, 1930, 3, 172, 86, 0, 1930, 1931, 3, 306, 153, 0, 1931, 1937, 1, 0, 0, 0, 1932, 1933, 5, 81, 0, 0, 1933, 1934, 3, 172, 86, 0, 1934, 1935, 3, 304, 152, 0, 1935, 1937, 1, 0, 0, 0, 1936, 1928, 1, 0, 0, 0, 1936, 1932, 1, 0, 0, 0, 1937, 303, 1, 0, 0, 0, 1938, 1940, 3, 352, 176, 0, 1939, 1938, 1, 0, 0, 0, 1939, 1940, 1, 0, 0, 0, 1940, 1941, 1, 0, 0, 0, 1941, 1942, 5, 10, 0, 0, 1942, 1943, 3, 172, 86, 0, 1943, 305, 1, 0, 0, 0, 1944, 1946, 3, 352, 176, 0, 1945, 1944, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 1948, 5, 81, 0, 0, 1948, 1949, 3, 172, 86, 0, 1949, 307, 1, 0, 0, 0, 1950, 1973, 5, 135, 0, 0, 1951, 1973, 5, 136, 0, 0, 1952, 1973, 5, 143, 0, 0, 1953, 1973, 5, 144, 0, 0, 1954, 1973, 5, 151, 0, 0, 1955, 1973, 5, 152, 0, 0, 1956, 1973, 5, 96, 0, 0, 1957, 1973, 5, 42, 0, 0, 1958, 1973, 5, 137, 0, 0, 1959, 1973, 5, 138, 0, 0, 1960, 1973, 5, 139, 0, 0, 1961, 1973, 5, 140, 0, 0, 1962, 1973, 5, 141, 0, 0, 1963, 1973, 5, 142, 0, 0, 1964, 1973, 5, 168, 0, 0, 1965, 1973, 3, 378, 189, 0, 1966, 1973, 5, 156, 0, 0, 1967, 1973, 5, 157, 0, 0, 1968, 1973, 5, 147, 0, 0, 1969, 1973, 5, 146, 0, 0, 1970, 1973, 5, 159, 0, 0, 1971, 1973, 5, 158, 0, 0, 1972, 1950, 1, 0, 0, 0, 1972, 1951, 1, 0, 0, 0, 1972, 1952, 1, 0, 0, 0, 1972, 1953, 1, 0, 0, 0, 1972, 1954, 1, 0, 0, 0, 1972, 1955, 1, 0, 0, 0, 1972, 1956, 1, 0, 0, 0, 1972, 1957, 1, 0, 0, 0, 1972, 1958, 1, 0, 0, 0, 1972, 1959, 1, 0, 0, 0, 1972, 1960, 1, 0, 0, 0, 1972, 1961, 1, 0, 0, 0, 1972, 1962, 1, 0, 0, 0, 1972, 1963, 1, 0, 0, 0, 1972, 1964, 1, 0, 0, 0, 1972, 1965, 1, 0, 0, 0, 1972, 1966, 1, 0, 0, 0, 1972, 1967, 1, 0, 0, 0, 1972, 1968, 1, 0, 0, 0, 1972, 1969, 1, 0, 0, 0, 1972, 1970, 1, 0, 0, 0, 1972, 1971, 1, 0, 0, 0, 1973, 309, 1, 0, 0, 0, 1974, 1975, 7, 11, 0, 0, 1975, 1976, 5, 70, 0, 0, 1976, 1977, 3, 4, 2, 0, 1977, 1978, 5, 129, 0, 0, 1978, 1979, 3, 430, 215, 0, 1979, 1980, 5, 130, 0, 0, 1980, 311, 1, 0, 0, 0, 1981, 1982, 5, 133, 0, 0, 1982, 1983, 7, 12, 0, 0, 1983, 1985, 5, 129, 0, 0, 1984, 1986, 3, 24, 12, 0, 1985, 1984, 1, 0, 0, 0, 1985, 1986, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 1988, 5, 130, 0, 0, 1988, 313, 1, 0, 0, 0, 1989, 1992, 3, 172, 86, 0, 1990, 1992, 5, 134, 0, 0, 1991, 1989, 1, 0, 0, 0, 1991, 1990, 1, 0, 0, 0, 1992, 315, 1, 0, 0, 0, 1993, 1994, 5, 133, 0, 0, 1994, 1995, 3, 238, 119, 0, 1995, 317, 1, 0, 0, 0, 1996, 2000, 5, 125, 0, 0, 1997, 1999, 3, 320, 160, 0, 1998, 1997, 1, 0, 0, 0, 1999, 2002, 1, 0, 0, 0, 2000, 1998, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 2003, 1, 0, 0, 0, 2002, 2000, 1, 0, 0, 0, 2003, 2004, 5, 126, 0, 0, 2004, 319, 1, 0, 0, 0, 2005, 2007, 3, 352, 176, 0, 2006, 2005, 1, 0, 0, 0, 2006, 2007, 1, 0, 0, 0, 2007, 2009, 1, 0, 0, 0, 2008, 2010, 3, 258, 129, 0, 2009, 2008, 1, 0, 0, 0, 2009, 2010, 1, 0, 0, 0, 2010, 2021, 1, 0, 0, 0, 2011, 2022, 3, 262, 131, 0, 2012, 2013, 5, 44, 0, 0, 2013, 2015, 3, 4, 2, 0, 2014, 2016, 3, 372, 186, 0, 2015, 2014, 1, 0, 0, 0, 2016, 2017, 1, 0, 0, 0, 2017, 2015, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2020, 5, 134, 0, 0, 2020, 2022, 1, 0, 0, 0, 2021, 2011, 1, 0, 0, 0, 2021, 2012, 1, 0, 0, 0, 2022, 321, 1, 0, 0, 0, 2023, 2031, 3, 6, 3, 0, 2024, 2026, 7, 13, 0, 0, 2025, 2024, 1, 0, 0, 0, 2026, 2029, 1, 0, 0, 0, 2027, 2025, 1, 0, 0, 0, 2027, 2028, 1, 0, 0, 0, 2028, 2030, 1, 0, 0, 0, 2029, 2027, 1, 0, 0, 0, 2030, 2032, 3, 324, 162, 0, 2031, 2027, 1, 0, 0, 0, 2032, 2033, 1, 0, 0, 0, 2033, 2031, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 323, 1, 0, 0, 0, 2035, 2039, 5, 127, 0, 0, 2036, 2038, 5, 132, 0, 0, 2037, 2036, 1, 0, 0, 0, 2038, 2041, 1, 0, 0, 0, 2039, 2037, 1, 0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 2042, 1, 0, 0, 0, 2041, 2039, 1, 0, 0, 0, 2042, 2043, 5, 128, 0, 0, 2043, 325, 1, 0, 0, 0, 2044, 2056, 5, 125, 0, 0, 2045, 2050, 3, 274, 137, 0, 2046, 2047, 5, 132, 0, 0, 2047, 2049, 3, 274, 137, 0, 2048, 2046, 1, 0, 0, 0, 2049, 2052, 1, 0, 0, 0, 2050, 2048, 1, 0, 0, 0, 2050, 2051, 1, 0, 0, 0, 2051, 2054, 1, 0, 0, 0, 2052, 2050, 1, 0, 0, 0, 2053, 2055, 5, 132, 0, 0, 2054, 2053, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2057, 1, 0, 0, 0, 2056, 2045, 1, 0, 0, 0, 2056, 2057, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2059, 5, 126, 0, 0, 2059, 327, 1, 0, 0, 0, 2060, 2061, 5, 146, 0, 0, 2061, 2066, 3, 330, 165, 0, 2062, 2063, 5, 132, 0, 0, 2063, 2065, 3, 330, 165, 0, 2064, 2062, 1, 0, 0, 0, 2065, 2068, 1, 0, 0, 0, 2066, 2064, 1, 0, 0, 0, 2066, 2067, 1, 0, 0, 0, 2067, 2069, 1, 0, 0, 0, 2068, 2066, 1, 0, 0, 0, 2069, 2070, 5, 147, 0, 0, 2070, 329, 1, 0, 0, 0, 2071, 2073, 3, 352, 176, 0, 2072, 2071, 1, 0, 0, 0, 2072, 2073, 1, 0, 0, 0, 2073, 2075, 1, 0, 0, 0, 2074, 2076, 3, 332, 166, 0, 2075, 2074, 1, 0, 0, 0, 2075, 2076, 1, 0, 0, 0, 2076, 2077, 1, 0, 0, 0, 2077, 2078, 3, 436, 218, 0, 2078, 331, 1, 0, 0, 0, 2079, 2080, 7, 14, 0, 0, 2080, 333, 1, 0, 0, 0, 2081, 2082, 5, 133, 0, 0, 2082, 2083, 3, 238, 119, 0, 2083, 335, 1, 0, 0, 0, 2084, 2088, 5, 125, 0, 0, 2085, 2087, 3, 338, 169, 0, 2086, 2085, 1, 0, 0, 0, 2087, 2090, 1, 0, 0, 0, 2088, 2086, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2091, 1, 0, 0, 0, 2090, 2088, 1, 0, 0, 0, 2091, 2092, 5, 126, 0, 0, 2092, 337, 1, 0, 0, 0, 2093, 2095, 3, 352, 176, 0, 2094, 2093, 1, 0, 0, 0, 2094, 2095, 1, 0, 0, 0, 2095, 2097, 1, 0, 0, 0, 2096, 2098, 5, 66, 0, 0, 2097, 2096, 1, 0, 0, 0, 2097, 2098, 1, 0, 0, 0, 2098, 2162, 1, 0, 0, 0, 2099, 2101, 5, 103, 0, 0, 2100, 2099, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2107, 1, 0, 0, 0, 2102, 2108, 5, 80, 0, 0, 2103, 2104, 5, 80, 0, 0, 2104, 2108, 5, 79, 0, 0, 2105, 2106, 5, 79, 0, 0, 2106, 2108, 5, 80, 0, 0, 2107, 2102, 1, 0, 0, 0, 2107, 2103, 1, 0, 0, 0, 2107, 2105, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2137, 3, 4, 2, 0, 2110, 2112, 3, 436, 218, 0, 2111, 2113, 3, 232, 116, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2116, 5, 129, 0, 0, 2115, 2117, 3, 282, 141, 0, 2116, 2115, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 2118, 1, 0, 0, 0, 2118, 2120, 5, 130, 0, 0, 2119, 2121, 3, 240, 120, 0, 2120, 2119, 1, 0, 0, 0, 2120, 2121, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2123, 5, 134, 0, 0, 2123, 2138, 1, 0, 0, 0, 2124, 2125, 3, 436, 218, 0, 2125, 2126, 5, 125, 0, 0, 2126, 2127, 3, 340, 170, 0, 2127, 2128, 5, 126, 0, 0, 2128, 2138, 1, 0, 0, 0, 2129, 2130, 5, 94, 0, 0, 2130, 2131, 5, 127, 0, 0, 2131, 2132, 3, 282, 141, 0, 2132, 2133, 5, 128, 0, 0, 2133, 2134, 5, 125, 0, 0, 2134, 2135, 3, 340, 170, 0, 2135, 2136, 5, 126, 0, 0, 2136, 2138, 1, 0, 0, 0, 2137, 2110, 1, 0, 0, 0, 2137, 2124, 1, 0, 0, 0, 2137, 2129, 1, 0, 0, 0, 2138, 2163, 1, 0, 0, 0, 2139, 2141, 5, 103, 0, 0, 2140, 2139, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 2143, 5, 108, 0, 0, 2143, 2145, 3, 436, 218, 0, 2144, 2146, 3, 232, 116, 0, 2145, 2144, 1, 0, 0, 0, 2145, 2146, 1, 0, 0, 0, 2146, 2147, 1, 0, 0, 0, 2147, 2149, 5, 129, 0, 0, 2148, 2150, 3, 282, 141, 0, 2149, 2148, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2153, 5, 130, 0, 0, 2152, 2154, 3, 240, 120, 0, 2153, 2152, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 2156, 5, 134, 0, 0, 2156, 2163, 1, 0, 0, 0, 2157, 2158, 5, 39, 0, 0, 2158, 2159, 3, 4, 2, 0, 2159, 2160, 3, 436, 218, 0, 2160, 2161, 5, 134, 0, 0, 2161, 2163, 1, 0, 0, 0, 2162, 2100, 1, 0, 0, 0, 2162, 2140, 1, 0, 0, 0, 2162, 2157, 1, 0, 0, 0, 2163, 339, 1, 0, 0, 0, 2164, 2166, 3, 352, 176, 0, 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2185, 1, 0, 0, 0, 2167, 2168, 5, 49, 0, 0, 2168, 2174, 5, 134, 0, 0, 2169, 2171, 3, 352, 176, 0, 2170, 2169, 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2172, 1, 0, 0, 0, 2172, 2173, 5, 86, 0, 0, 2173, 2175, 5, 134, 0, 0, 2174, 2170, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2186, 1, 0, 0, 0, 2176, 2177, 5, 86, 0, 0, 2177, 2183, 5, 134, 0, 0, 2178, 2180, 3, 352, 176, 0, 2179, 2178, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2182, 5, 49, 0, 0, 2182, 2184, 5, 134, 0, 0, 2183, 2179, 1, 0, 0, 0, 2183, 2184, 1, 0, 0, 0, 2184, 2186, 1, 0, 0, 0, 2185, 2167, 1, 0, 0, 0, 2185, 2176, 1, 0, 0, 0, 2186, 341, 1, 0, 0, 0, 2187, 2188, 5, 133, 0, 0, 2188, 2189, 3, 4, 2, 0, 2189, 343, 1, 0, 0, 0, 2190, 2202, 5, 125, 0, 0, 2191, 2196, 3, 346, 173, 0, 2192, 2193, 5, 132, 0, 0, 2193, 2195, 3, 346, 173, 0, 2194, 2192, 1, 0, 0, 0, 2195, 2198, 1, 0, 0, 0, 2196, 2194, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2200, 1, 0, 0, 0, 2198, 2196, 1, 0, 0, 0, 2199, 2201, 5, 132, 0, 0, 2200, 2199, 1, 0, 0, 0, 2200, 2201, 1, 0, 0, 0, 2201, 2203, 1, 0, 0, 0, 2202, 2191, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2204, 1, 0, 0, 0, 2204, 2205, 5, 126, 0, 0, 2205, 345, 1, 0, 0, 0, 2206, 2208, 3, 352, 176, 0, 2207, 2206, 1, 0, 0, 0, 2207, 2208, 1, 0, 0, 0, 2208, 2209, 1, 0, 0, 0, 2209, 2212, 3, 436, 218, 0, 2210, 2211, 5, 145, 0, 0, 2211, 2213, 3, 28, 14, 0, 2212, 2210, 1, 0, 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 347, 1, 0, 0, 0, 2214, 2215, 5, 127, 0, 0, 2215, 2216, 3, 350, 175, 0, 2216, 2217, 5, 133, 0, 0, 2217, 2219, 3, 358, 179, 0, 2218, 2220, 5, 132, 0, 0, 2219, 2218, 1, 0, 0, 0, 2219, 2220, 1, 0, 0, 0, 2220, 2221, 1, 0, 0, 0, 2221, 2222, 5, 128, 0, 0, 2222, 349, 1, 0, 0, 0, 2223, 2226, 3, 398, 199, 0, 2224, 2226, 3, 436, 218, 0, 2225, 2223, 1, 0, 0, 0, 2225, 2224, 1, 0, 0, 0, 2226, 351, 1, 0, 0, 0, 2227, 2229, 3, 354, 177, 0, 2228, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2228, 1, 0, 0, 0, 2230, 2231, 1, 0, 0, 0, 2231, 353, 1, 0, 0, 0, 2232, 2236, 5, 127, 0, 0, 2233, 2234, 3, 356, 178, 0, 2234, 2235, 5, 133, 0, 0, 2235, 2237, 1, 0, 0, 0, 2236, 2233, 1, 0, 0, 0, 2236, 2237, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2240, 3, 358, 179, 0, 2239, 2241, 5, 132, 0, 0, 2240, 2239, 1, 0, 0, 0, 2240, 2241, 1, 0, 0, 0, 2241, 2242, 1, 0, 0, 0, 2242, 2243, 5, 128, 0, 0, 2243, 355, 1, 0, 0, 0, 2244, 2247, 3, 398, 199, 0, 2245, 2247, 3, 436, 218, 0, 2246, 2244, 1, 0, 0, 0, 2246, 2245, 1, 0, 0, 0, 2247, 357, 1, 0, 0, 0, 2248, 2253, 3, 360, 180, 0, 2249, 2250, 5, 132, 0, 0, 2250, 2252, 3, 360, 180, 0, 2251, 2249, 1, 0, 0, 0, 2252, 2255, 1, 0, 0, 0, 2253, 2251, 1, 0, 0, 0, 2253, 2254, 1, 0, 0, 0, 2254, 359, 1, 0, 0, 0, 2255, 2253, 1, 0, 0, 0, 2256, 2269, 3, 2, 1, 0, 2257, 2266, 5, 129, 0, 0, 2258, 2263, 3, 362, 181, 0, 2259, 2260, 5, 132, 0, 0, 2260, 2262, 3, 362, 181, 0, 2261, 2259, 1, 0, 0, 0, 2262, 2265, 1, 0, 0, 0, 2263, 2261, 1, 0, 0, 0, 2263, 2264, 1, 0, 0, 0, 2264, 2267, 1, 0, 0, 0, 2265, 2263, 1, 0, 0, 0, 2266, 2258, 1, 0, 0, 0, 2266, 2267, 1, 0, 0, 0, 2267, 2268, 1, 0, 0, 0, 2268, 2270, 5, 130, 0, 0, 2269, 2257, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 361, 1, 0, 0, 0, 2271, 2272, 3, 436, 218, 0, 2272, 2273, 5, 133, 0, 0, 2273, 2275, 1, 0, 0, 0, 2274, 2271, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2277, 3, 28, 14, 0, 2277, 363, 1, 0, 0, 0, 2278, 2281, 3, 12, 6, 0, 2279, 2281, 3, 20, 10, 0, 2280, 2278, 1, 0, 0, 0, 2280, 2279, 1, 0, 0, 0, 2281, 2286, 1, 0, 0, 0, 2282, 2285, 3, 324, 162, 0, 2283, 2285, 5, 148, 0, 0, 2284, 2282, 1, 0, 0, 0, 2284, 2283, 1, 0, 0, 0, 2285, 2288, 1, 0, 0, 0, 2286, 2284, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 2289, 1, 0, 0, 0, 2288, 2286, 1, 0, 0, 0, 2289, 2290, 5, 137, 0, 0, 2290, 2294, 1, 0, 0, 0, 2291, 2292, 5, 108, 0, 0, 2292, 2294, 5, 137, 0, 0, 2293, 2280, 1, 0, 0, 0, 2293, 2291, 1, 0, 0, 0, 2294, 365, 1, 0, 0, 0, 2295, 2300, 3, 368, 184, 0, 2296, 2297, 5, 132, 0, 0, 2297, 2299, 3, 368, 184, 0, 2298, 2296, 1, 0, 0, 0, 2299, 2302, 1, 0, 0, 0, 2300, 2298, 1, 0, 0, 0, 2300, 2301, 1, 0, 0, 0, 2301, 367, 1, 0, 0, 0, 2302, 2300, 1, 0, 0, 0, 2303, 2304, 3, 436, 218, 0, 2304, 2305, 5, 145, 0, 0, 2305, 2306, 3, 370, 185, 0, 2306, 369, 1, 0, 0, 0, 2307, 2309, 5, 140, 0, 0, 2308, 2307, 1, 0, 0, 0, 2308, 2309, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2313, 3, 28, 14, 0, 2311, 2313, 3, 374, 187, 0, 2312, 2308, 1, 0, 0, 0, 2312, 2311, 1, 0, 0, 0, 2313, 371, 1, 0, 0, 0, 2314, 2315, 3, 436, 218, 0, 2315, 2316, 5, 127, 0, 0, 2316, 2317, 3, 28, 14, 0, 2317, 2318, 5, 128, 0, 0, 2318, 373, 1, 0, 0, 0, 2319, 2320, 5, 89, 0, 0, 2320, 2321, 3, 4, 2, 0, 2321, 2322, 5, 127, 0, 0, 2322, 2323, 3, 28, 14, 0, 2323, 2324, 5, 128, 0, 0, 2324, 2349, 1, 0, 0, 0, 2325, 2327, 5, 89, 0, 0, 2326, 2328, 3, 4, 2, 0, 2327, 2326, 1, 0, 0, 0, 2327, 2328, 1, 0, 0, 0, 2328, 2329, 1, 0, 0, 0, 2329, 2331, 5, 127, 0, 0, 2330, 2332, 3, 28, 14, 0, 2331, 2330, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2334, 5, 128, 0, 0, 2334, 2335, 5, 125, 0, 0, 2335, 2340, 3, 28, 14, 0, 2336, 2337, 5, 132, 0, 0, 2337, 2339, 3, 28, 14, 0, 2338, 2336, 1, 0, 0, 0, 2339, 2342, 1, 0, 0, 0, 2340, 2338, 1, 0, 0, 0, 2340, 2341, 1, 0, 0, 0, 2341, 2344, 1, 0, 0, 0, 2342, 2340, 1, 0, 0, 0, 2343, 2345, 5, 132, 0, 0, 2344, 2343, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 2346, 1, 0, 0, 0, 2346, 2347, 5, 126, 0, 0, 2347, 2349, 1, 0, 0, 0, 2348, 2319, 1, 0, 0, 0, 2348, 2325, 1, 0, 0, 0, 2349, 375, 1, 0, 0, 0, 2350, 2351, 5, 145, 0, 0, 2351, 2352, 5, 147, 0, 0, 2352, 2353, 4, 188, 1, 1, 2353, 377, 1, 0, 0, 0, 2354, 2355, 5, 147, 0, 0, 2355, 2356, 5, 147, 0, 0, 2356, 2357, 4, 189, 2, 1, 2357, 379, 1, 0, 0, 0, 2358, 2359, 5, 147, 0, 0, 2359, 2360, 5, 159, 0, 0, 2360, 2361, 4, 190, 3, 1, 2361, 381, 1, 0, 0, 0, 2362, 2371, 3, 384, 192, 0, 2363, 2371, 3, 386, 193, 0, 2364, 2371, 5, 116, 0, 0, 2365, 2371, 5, 117, 0, 0, 2366, 2371, 5, 118, 0, 0, 2367, 2371, 5, 119, 0, 0, 2368, 2371, 5, 120, 0, 0, 2369, 2371, 5, 67, 0, 0, 2370, 2362, 1, 0, 0, 0, 2370, 2363, 1, 0, 0, 0, 2370, 2364, 1, 0, 0, 0, 2370, 2365, 1, 0, 0, 0, 2370, 2366, 1, 0, 0, 0, 2370, 2367, 1, 0, 0, 0, 2370, 2368, 1, 0, 0, 0, 2370, 2369, 1, 0, 0, 0, 2371, 383, 1, 0, 0, 0, 2372, 2373, 7, 15, 0, 0, 2373, 385, 1, 0, 0, 0, 2374, 2379, 3, 388, 194, 0, 2375, 2379, 3, 390, 195, 0, 2376, 2379, 5, 121, 0, 0, 2377, 2379, 5, 122, 0, 0, 2378, 2374, 1, 0, 0, 0, 2378, 2375, 1, 0, 0, 0, 2378, 2376, 1, 0, 0, 0, 2378, 2377, 1, 0, 0, 0, 2379, 387, 1, 0, 0, 0, 2380, 2384, 5, 123, 0, 0, 2381, 2383, 3, 392, 196, 0, 2382, 2381, 1, 0, 0, 0, 2383, 2386, 1, 0, 0, 0, 2384, 2382, 1, 0, 0, 0, 2384, 2385, 1, 0, 0, 0, 2385, 2387, 1, 0, 0, 0, 2386, 2384, 1, 0, 0, 0, 2387, 2388, 5, 176, 0, 0, 2388, 389, 1, 0, 0, 0, 2389, 2393, 5, 124, 0, 0, 2390, 2392, 3, 394, 197, 0, 2391, 2390, 1, 0, 0, 0, 2392, 2395, 1, 0, 0, 0, 2393, 2391, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2396, 1, 0, 0, 0, 2395, 2393, 1, 0, 0, 0, 2396, 2397, 5, 176, 0, 0, 2397, 391, 1, 0, 0, 0, 2398, 2403, 3, 396, 198, 0, 2399, 2403, 5, 172, 0, 0, 2400, 2403, 5, 174, 0, 0, 2401, 2403, 5, 177, 0, 0, 2402, 2398, 1, 0, 0, 0, 2402, 2399, 1, 0, 0, 0, 2402, 2400, 1, 0, 0, 0, 2402, 2401, 1, 0, 0, 0, 2403, 393, 1, 0, 0, 0, 2404, 2409, 3, 396, 198, 0, 2405, 2409, 5, 172, 0, 0, 2406, 2409, 5, 175, 0, 0, 2407, 2409, 5, 178, 0, 0, 2408, 2404, 1, 0, 0, 0, 2408, 2405, 1, 0, 0, 0, 2408, 2406, 1, 0, 0, 0, 2408, 2407, 1, 0, 0, 0, 2409, 395, 1, 0, 0, 0, 2410, 2415, 3, 28, 14, 0, 2411, 2412, 5, 132, 0, 0, 2412, 2414, 3, 28, 14, 0, 2413, 2411, 1, 0, 0, 0, 2414, 2417, 1, 0, 0, 0, 2415, 2413, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2424, 1, 0, 0, 0, 2417, 2415, 1, 0, 0, 0, 2418, 2420, 5, 133, 0, 0, 2419, 2421, 5, 180, 0, 0, 2420, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 2420, 1, 0, 0, 0, 2422, 2423, 1, 0, 0, 0, 2423, 2425, 1, 0, 0, 0, 2424, 2418, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 397, 1, 0, 0, 0, 2426, 2427, 7, 16, 0, 0, 2427, 399, 1, 0, 0, 0, 2428, 2429, 5, 26, 0, 0, 2429, 2431, 3, 436, 218, 0, 2430, 2432, 3, 232, 116, 0, 2431, 2430, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2434, 1, 0, 0, 0, 2433, 2435, 3, 236, 118, 0, 2434, 2433, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2437, 1, 0, 0, 0, 2436, 2438, 3, 240, 120, 0, 2437, 2436, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2439, 1, 0, 0, 0, 2439, 2441, 3, 252, 126, 0, 2440, 2442, 5, 134, 0, 0, 2441, 2440, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 401, 1, 0, 0, 0, 2443, 2445, 7, 17, 0, 0, 2444, 2443, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2446, 1, 0, 0, 0, 2446, 2447, 5, 92, 0, 0, 2447, 2449, 3, 436, 218, 0, 2448, 2450, 3, 232, 116, 0, 2449, 2448, 1, 0, 0, 0, 2449, 2450, 1, 0, 0, 0, 2450, 2452, 1, 0, 0, 0, 2451, 2453, 3, 316, 158, 0, 2452, 2451, 1, 0, 0, 0, 2452, 2453, 1, 0, 0, 0, 2453, 2455, 1, 0, 0, 0, 2454, 2456, 3, 240, 120, 0, 2455, 2454, 1, 0, 0, 0, 2455, 2456, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 2459, 3, 318, 159, 0, 2458, 2460, 5, 134, 0, 0, 2459, 2458, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 403, 1, 0, 0, 0, 2461, 2462, 5, 56, 0, 0, 2462, 2464, 3, 436, 218, 0, 2463, 2465, 3, 328, 164, 0, 2464, 2463, 1, 0, 0, 0, 2464, 2465, 1, 0, 0, 0, 2465, 2467, 1, 0, 0, 0, 2466, 2468, 3, 334, 167, 0, 2467, 2466, 1, 0, 0, 0, 2467, 2468, 1, 0, 0, 0, 2468, 2470, 1, 0, 0, 0, 2469, 2471, 3, 240, 120, 0, 2470, 2469, 1, 0, 0, 0, 2470, 2471, 1, 0, 0, 0, 2471, 2472, 1, 0, 0, 0, 2472, 2474, 3, 252, 126, 0, 2473, 2475, 5, 134, 0, 0, 2474, 2473, 1, 0, 0, 0, 2474, 2475, 1, 0, 0, 0, 2475, 405, 1, 0, 0, 0, 2476, 2477, 5, 37, 0, 0, 2477, 2479, 3, 436, 218, 0, 2478, 2480, 3, 342, 171, 0, 2479, 2478, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2481, 1, 0, 0, 0, 2481, 2483, 3, 344, 172, 0, 2482, 2484, 5, 134, 0, 0, 2483, 2482, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 407, 1, 0, 0, 0, 2485, 2486, 5, 31, 0, 0, 2486, 2487, 3, 276, 138, 0, 2487, 2489, 3, 436, 218, 0, 2488, 2490, 3, 328, 164, 0, 2489, 2488, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 2491, 1, 0, 0, 0, 2491, 2493, 5, 129, 0, 0, 2492, 2494, 3, 282, 141, 0, 2493, 2492, 1, 0, 0, 0, 2493, 2494, 1, 0, 0, 0, 2494, 2495, 1, 0, 0, 0, 2495, 2497, 5, 130, 0, 0, 2496, 2498, 3, 240, 120, 0, 2497, 2496, 1, 0, 0, 0, 2497, 2498, 1, 0, 0, 0, 2498, 2499, 1, 0, 0, 0, 2499, 2500, 5, 134, 0, 0, 2500, 409, 1, 0, 0, 0, 2501, 2502, 5, 39, 0, 0, 2502, 2511, 3, 4, 2, 0, 2503, 2504, 3, 270, 135, 0, 2504, 2505, 5, 134, 0, 0, 2505, 2512, 1, 0, 0, 0, 2506, 2507, 3, 278, 139, 0, 2507, 2508, 5, 125, 0, 0, 2508, 2509, 3, 302, 151, 0, 2509, 2510, 5, 126, 0, 0, 2510, 2512, 1, 0, 0, 0, 2511, 2503, 1, 0, 0, 0, 2511, 2506, 1, 0, 0, 0, 2512, 411, 1, 0, 0, 0, 2513, 2514, 3, 270, 135, 0, 2514, 2515, 5, 134, 0, 0, 2515, 413, 1, 0, 0, 0, 2516, 2530, 3, 278, 139, 0, 2517, 2518, 5, 125, 0, 0, 2518, 2519, 3, 292, 146, 0, 2519, 2524, 5, 126, 0, 0, 2520, 2521, 5, 145, 0, 0, 2521, 2522, 3, 274, 137, 0, 2522, 2523, 5, 134, 0, 0, 2523, 2525, 1, 0, 0, 0, 2524, 2520, 1, 0, 0, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2531, 1, 0, 0, 0, 2526, 2527, 3, 376, 188, 0, 2527, 2528, 3, 76, 38, 0, 2528, 2529, 5, 134, 0, 0, 2529, 2531, 1, 0, 0, 0, 2530, 2517, 1, 0, 0, 0, 2530, 2526, 1, 0, 0, 0, 2531, 415, 1, 0, 0, 0, 2532, 2533, 5, 27, 0, 0, 2533, 2534, 3, 4, 2, 0, 2534, 2535, 3, 266, 133, 0, 2535, 2536, 5, 134, 0, 0, 2536, 417, 1, 0, 0, 0, 2537, 2538, 5, 94, 0, 0, 2538, 2539, 5, 127, 0, 0, 2539, 2540, 3, 282, 141, 0, 2540, 2549, 5, 128, 0, 0, 2541, 2542, 5, 125, 0, 0, 2542, 2543, 3, 292, 146, 0, 2543, 2544, 5, 126, 0, 0, 2544, 2550, 1, 0, 0, 0, 2545, 2546, 3, 376, 188, 0, 2546, 2547, 3, 76, 38, 0, 2547, 2548, 5, 134, 0, 0, 2548, 2550, 1, 0, 0, 0, 2549, 2541, 1, 0, 0, 0, 2549, 2545, 1, 0, 0, 0, 2550, 419, 1, 0, 0, 0, 2551, 2552, 5, 144, 0, 0, 2552, 2553, 3, 436, 218, 0, 2553, 2554, 5, 129, 0, 0, 2554, 2555, 5, 130, 0, 0, 2555, 2556, 3, 314, 157, 0, 2556, 421, 1, 0, 0, 0, 2557, 2558, 3, 436, 218, 0, 2558, 2560, 5, 129, 0, 0, 2559, 2561, 3, 282, 141, 0, 2560, 2559, 1, 0, 0, 0, 2560, 2561, 1, 0, 0, 0, 2561, 2562, 1, 0, 0, 0, 2562, 2564, 5, 130, 0, 0, 2563, 2565, 3, 312, 156, 0, 2564, 2563, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2566, 1, 0, 0, 0, 2566, 2567, 3, 314, 157, 0, 2567, 423, 1, 0, 0, 0, 2568, 2570, 3, 426, 213, 0, 2569, 2571, 3, 232, 116, 0, 2570, 2569, 1, 0, 0, 0, 2570, 2571, 1, 0, 0, 0, 2571, 2572, 1, 0, 0, 0, 2572, 2574, 5, 129, 0, 0, 2573, 2575, 3, 282, 141, 0, 2574, 2573, 1, 0, 0, 0, 2574, 2575, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 2578, 5, 130, 0, 0, 2577, 2579, 3, 240, 120, 0, 2578, 2577, 1, 0, 0, 0, 2578, 2579, 1, 0, 0, 0, 2579, 2585, 1, 0, 0, 0, 2580, 2586, 3, 280, 140, 0, 2581, 2582, 3, 376, 188, 0, 2582, 2583, 3, 76, 38, 0, 2583, 2584, 5, 134, 0, 0, 2584, 2586, 1, 0, 0, 0, 2585, 2580, 1, 0, 0, 0, 2585, 2581, 1, 0, 0, 0, 2586, 425, 1, 0, 0, 0, 2587, 2593, 3, 436, 218, 0, 2588, 2589, 3, 436, 218, 0, 2589, 2590, 5, 149, 0, 0, 2590, 2591, 3, 436, 218, 0, 2591, 2593, 1, 0, 0, 0, 2592, 2587, 1, 0, 0, 0, 2592, 2588, 1, 0, 0, 0, 2593, 2601, 1, 0, 0, 0, 2594, 2596, 3, 22, 11, 0, 2595, 2594, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 2597, 1, 0, 0, 0, 2597, 2598, 5, 131, 0, 0, 2598, 2600, 3, 436, 218, 0, 2599, 2595, 1, 0, 0, 0, 2600, 2603, 1, 0, 0, 0, 2601, 2599, 1, 0, 0, 0, 2601, 2602, 1, 0, 0, 0, 2602, 427, 1, 0, 0, 0, 2603, 2601, 1, 0, 0, 0, 2604, 2605, 5, 70, 0, 0, 2605, 2606, 3, 308, 154, 0, 2606, 2608, 5, 129, 0, 0, 2607, 2609, 5, 54, 0, 0, 2608, 2607, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 2610, 1, 0, 0, 0, 2610, 2616, 3, 430, 215, 0, 2611, 2613, 5, 132, 0, 0, 2612, 2614, 5, 54, 0, 0, 2613, 2612, 1, 0, 0, 0, 2613, 2614, 1, 0, 0, 0, 2614, 2615, 1, 0, 0, 0, 2615, 2617, 3, 430, 215, 0, 2616, 2611, 1, 0, 0, 0, 2616, 2617, 1, 0, 0, 0, 2617, 2618, 1, 0, 0, 0, 2618, 2624, 5, 130, 0, 0, 2619, 2625, 3, 314, 157, 0, 2620, 2621, 3, 376, 188, 0, 2621, 2622, 3, 76, 38, 0, 2622, 2623, 5, 134, 0, 0, 2623, 2625, 1, 0, 0, 0, 2624, 2619, 1, 0, 0, 0, 2624, 2620, 1, 0, 0, 0, 2625, 429, 1, 0, 0, 0, 2626, 2627, 3, 4, 2, 0, 2627, 2630, 3, 436, 218, 0, 2628, 2629, 5, 145, 0, 0, 2629, 2631, 3, 28, 14, 0, 2630, 2628, 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 431, 1, 0, 0, 0, 2632, 2634, 5, 129, 0, 0, 2633, 2635, 3, 24, 12, 0, 2634, 2633, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 2636, 1, 0, 0, 0, 2636, 2637, 5, 130, 0, 0, 2637, 433, 1, 0, 0, 0, 2638, 2640, 5, 129, 0, 0, 2639, 2641, 3, 24, 12, 0, 2640, 2639, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2644, 5, 130, 0, 0, 2643, 2645, 3, 90, 45, 0, 2644, 2643, 1, 0, 0, 0, 2644, 2645, 1, 0, 0, 0, 2645, 435, 1, 0, 0, 0, 2646, 2647, 7, 18, 0, 0, 2647, 437, 1, 0, 0, 0, 345, 439, 442, 445, 450, 454, 460, 463, 468, 472, 479, 481, 489, 497, 503, 507, 512, 522, 530, 540, 546, 549, 554, 557, 563, 568, 578, 591, 599, 605, 607, 614, 622, 630, 638, 646, 654, 664, 666, 672, 677, 685, 693, 701, 703, 706, 713, 718, 725, 729, 731, 755, 764, 769, 773, 781, 784, 789, 793, 797, 803, 817, 823, 835, 839, 844, 848, 854, 862, 871, 889, 892, 897, 900, 915, 921, 925, 931, 936, 939, 947, 955, 966, 971, 976, 978, 987, 995, 1002, 1010, 1014, 1023, 1028, 1030, 1039, 1047, 1051, 1056, 1058, 1063, 1067, 1074, 1082, 1084, 1088, 1091, 1094, 1102, 1112, 1129, 1136, 1140, 1150, 1155, 1162, 1171, 1176, 1183, 1195, 1206, 1214, 1219, 1228, 1237, 1246, 1252, 1257, 1261, 1265, 1269, 1273, 1280, 1288, 1301, 1311, 1333, 1337, 1341, 1346, 1366, 1371, 1376, 1383, 1386, 1408, 1420, 1424, 1432, 1442, 1449, 1453, 1458, 1461, 1466, 1474, 1479, 1486, 1492, 1500, 1508, 1511, 1518, 1525, 1529, 1532, 1538, 1542, 1548, 1562, 1568, 1575, 1580, 1583, 1586, 1593, 1603, 1620, 1625, 1629, 1632, 1635, 1642, 1648, 1656, 1662, 1672, 1680, 1686, 1697, 1701, 1703, 1708, 1712, 1719, 1728, 1735, 1738, 1741, 1745, 1750, 1763, 1773, 1780, 1792, 1799, 1811, 1817, 1821, 1825, 1831, 1837, 1839, 1846, 1850, 1853, 1857, 1867, 1870, 1877, 1880, 1885, 1890, 1892, 1895, 1898, 1904, 1907, 1919, 1923, 1926, 1936, 1939, 1945, 1972, 1985, 1991, 2000, 2006, 2009, 2017, 2021, 2027, 2033, 2039, 2050, 2054, 2056, 2066, 2072, 2075, 2088, 2094, 2097, 2100, 2107, 2112, 2116, 2120, 2137, 2140, 2145, 2149, 2153, 2162, 2165, 2170, 2174, 2179, 2183, 2185, 2196, 2200, 2202, 2207, 2212, 2219, 2225, 2230, 2236, 2240, 2246, 2253, 2263, 2266, 2269, 2274, 2280, 2284, 2286, 2293, 2300, 2308, 2312, 2327, 2331, 2340, 2344, 2348, 2370, 2378, 2384, 2393, 2402, 2408, 2415, 2422, 2424, 2431, 2434, 2437, 2441, 2444, 2449, 2452, 2455, 2459, 2464, 2467, 2470, 2474, 2479, 2483, 2489, 2493, 2497, 2511, 2524, 2530, 2549, 2560, 2564, 2570, 2574, 2578, 2585, 2592, 2595, 2601, 2608, 2613, 2616, 2624, 2630, 2634, 2640, 2644] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.py b/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.py index d3985fd4..83013b05 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.py @@ -1,4 +1,4 @@ -# Generated from javalib\gram\CSharpParser.g4 by ANTLR 4.8 +# Generated from CSharpParser.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,1503 +8,1138 @@ else: from typing.io import TextIO +if "." in __name__: + from .CSharpParserBase import CSharpParserBase +else: + from CSharpParserBase import CSharpParserBase def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u00c7") - buf.write("\u0a50\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") - buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") - buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") - buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") - buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") - buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") - buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") - buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") - buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") - buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") - buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") - buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4") - buf.write("_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4") - buf.write("h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4") - buf.write("q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4") - buf.write("z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080") - buf.write("\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084") - buf.write("\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087") - buf.write("\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b") - buf.write("\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e\t\u008e") - buf.write("\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092") - buf.write("\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095") - buf.write("\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099") - buf.write("\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c") - buf.write("\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0") - buf.write("\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3") - buf.write("\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7") - buf.write("\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa\t\u00aa") - buf.write("\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad\4\u00ae") - buf.write("\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1") - buf.write("\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5") - buf.write("\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8\t\u00b8") - buf.write("\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb\t\u00bb\4\u00bc") - buf.write("\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf") - buf.write("\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3") - buf.write("\t\u00c3\4\u00c4\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6") - buf.write("\4\u00c7\t\u00c7\4\u00c8\t\u00c8\4\u00c9\t\u00c9\4\u00ca") - buf.write("\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd\t\u00cd") - buf.write("\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0\4\u00d1") - buf.write("\t\u00d1\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4\t\u00d4") - buf.write("\4\u00d5\t\u00d5\4\u00d6\t\u00d6\4\u00d7\t\u00d7\4\u00d8") - buf.write("\t\u00d8\4\u00d9\t\u00d9\4\u00da\t\u00da\4\u00db\t\u00db") - buf.write("\3\2\5\2\u01b8\n\2\3\2\5\2\u01bb\n\2\3\2\5\2\u01be\n\2") - buf.write("\3\2\7\2\u01c1\n\2\f\2\16\2\u01c4\13\2\3\2\5\2\u01c7\n") - buf.write("\2\3\2\3\2\3\3\3\3\5\3\u01cd\n\3\3\3\5\3\u01d0\n\3\3\3") - buf.write("\3\3\3\3\5\3\u01d5\n\3\7\3\u01d7\n\3\f\3\16\3\u01da\13") - buf.write("\3\3\4\3\4\3\4\3\4\7\4\u01e0\n\4\f\4\16\4\u01e3\13\4\3") - buf.write("\5\3\5\3\5\3\5\3\5\5\5\u01ea\n\5\3\6\3\6\3\6\3\6\6\6\u01f0") - buf.write("\n\6\r\6\16\6\u01f1\3\6\3\6\3\7\3\7\5\7\u01f8\n\7\3\b") - buf.write("\3\b\5\b\u01fc\n\b\3\t\3\t\3\t\5\t\u0201\n\t\3\n\3\n\3") - buf.write("\13\3\13\3\f\3\f\3\f\3\f\5\f\u020b\n\f\3\r\3\r\3\r\3\r") - buf.write("\7\r\u0211\n\r\f\r\16\r\u0214\13\r\3\r\3\r\3\16\3\16\3") - buf.write("\16\7\16\u021b\n\16\f\16\16\16\u021e\13\16\3\17\3\17\3") - buf.write("\17\5\17\u0223\n\17\3\17\5\17\u0226\n\17\3\17\3\17\3\20") - buf.write("\3\20\3\20\3\20\5\20\u022e\n\20\3\21\3\21\3\21\5\21\u0233") - buf.write("\n\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u023d") - buf.write("\n\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23") - buf.write("\3\23\5\23\u024a\n\23\3\24\3\24\3\24\3\24\3\24\3\24\5") - buf.write("\24\u0252\n\24\3\25\3\25\3\25\3\25\5\25\u0258\n\25\5\25") - buf.write("\u025a\n\25\3\26\3\26\3\26\7\26\u025f\n\26\f\26\16\26") - buf.write("\u0262\13\26\3\27\3\27\3\27\7\27\u0267\n\27\f\27\16\27") - buf.write("\u026a\13\27\3\30\3\30\3\30\7\30\u026f\n\30\f\30\16\30") - buf.write("\u0272\13\30\3\31\3\31\3\31\7\31\u0277\n\31\f\31\16\31") - buf.write("\u027a\13\31\3\32\3\32\3\32\7\32\u027f\n\32\f\32\16\32") - buf.write("\u0282\13\32\3\33\3\33\3\33\7\33\u0287\n\33\f\33\16\33") - buf.write("\u028a\13\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34\7\34\u0293") - buf.write("\n\34\f\34\16\34\u0296\13\34\3\35\3\35\3\35\5\35\u029b") - buf.write("\n\35\3\35\7\35\u029e\n\35\f\35\16\35\u02a1\13\35\3\36") - buf.write("\3\36\3\36\7\36\u02a6\n\36\f\36\16\36\u02a9\13\36\3\37") - buf.write("\3\37\3\37\7\37\u02ae\n\37\f\37\16\37\u02b1\13\37\3 \3") - buf.write(" \3 \3 \3 \5 \u02b8\n \5 \u02ba\n \3 \5 \u02bd\n \3!\3") - buf.write("!\3!\7!\u02c2\n!\f!\16!\u02c5\13!\3\"\3\"\5\"\u02c9\n") - buf.write("\"\3\"\3\"\3\"\3#\3#\5#\u02d0\n#\3#\3#\5#\u02d4\n#\5#") - buf.write("\u02d6\n#\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3") - buf.write("$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\5$\u02f2\n$\3%\3%\5") - buf.write("%\u02f6\n%\3%\7%\u02f9\n%\f%\16%\u02fc\13%\3%\5%\u02ff") - buf.write("\n%\3%\3%\3%\3%\3%\3%\5%\u0307\n%\3%\5%\u030a\n%\3%\7") - buf.write("%\u030d\n%\f%\16%\u0310\13%\3%\5%\u0313\n%\7%\u0315\n") - buf.write("%\f%\16%\u0318\13%\3&\3&\3&\5&\u031d\n&\3&\3&\3&\3&\3") - buf.write("&\3&\3&\3&\3&\3&\3&\3&\5&\u032b\n&\3&\3&\3&\3&\5&\u0331") - buf.write("\n&\3&\3&\3&\3&\3&\3&\3&\3&\7&\u033b\n&\f&\16&\u033e\13") - buf.write("&\3&\5&\u0341\n&\3&\6&\u0344\n&\r&\16&\u0345\3&\3&\5&") - buf.write("\u034a\n&\3&\3&\3&\3&\5&\u0350\n&\3&\3&\3&\3&\6&\u0356") - buf.write("\n&\r&\16&\u0357\3&\3&\3&\3&\3&\3&\3&\5&\u0361\n&\3&\3") - buf.write("&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\5&\u0373\n") - buf.write("&\3&\5&\u0376\n&\3&\3&\3&\5&\u037b\n&\3&\5&\u037e\n&\3") - buf.write("&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\7&\u038b\n&\f&\16&\u038e") - buf.write("\13&\3&\3&\3&\5&\u0393\n&\3\'\3\'\5\'\u0397\n\'\3(\3(") - buf.write("\3(\3)\5)\u039d\n)\3)\3)\3)\5)\u03a2\n)\3*\5*\u03a5\n") - buf.write("*\3*\3*\3*\3*\7*\u03ab\n*\f*\16*\u03ae\13*\3*\3*\3+\3") - buf.write("+\3+\5+\u03b5\n+\3+\3+\3,\3,\3-\3-\3-\7-\u03be\n-\f-\16") - buf.write("-\u03c1\13-\3.\3.\5.\u03c5\n.\3/\3/\3/\5/\u03ca\n/\5/") - buf.write("\u03cc\n/\3/\3/\3\60\3\60\3\60\7\60\u03d3\n\60\f\60\16") - buf.write("\60\u03d6\13\60\3\61\3\61\3\61\3\61\3\61\5\61\u03dd\n") - buf.write("\61\3\61\3\61\3\61\3\62\3\62\5\62\u03e4\n\62\3\63\3\63") - buf.write("\3\63\3\63\7\63\u03ea\n\63\f\63\16\63\u03ed\13\63\3\63") - buf.write("\5\63\u03f0\n\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\5") - buf.write("\64\u03f9\n\64\3\65\3\65\3\65\5\65\u03fe\n\65\5\65\u0400") - buf.write("\n\65\3\65\3\65\3\66\3\66\3\66\7\66\u0407\n\66\f\66\16") - buf.write("\66\u040a\13\66\3\67\3\67\3\67\3\67\3\67\5\67\u0411\n") - buf.write("\67\38\38\58\u0415\n8\38\38\38\58\u041a\n8\58\u041c\n") - buf.write("8\38\38\38\58\u0421\n8\78\u0423\n8\f8\168\u0426\138\3") - buf.write("9\39\79\u042a\n9\f9\169\u042d\139\39\39\3:\3:\3:\7:\u0434") - buf.write("\n:\f:\16:\u0437\13:\3:\5:\u043a\n:\3:\5:\u043d\n:\3:") - buf.write("\5:\u0440\n:\3;\3;\3;\3;\7;\u0446\n;\f;\16;\u0449\13;") - buf.write("\3;\3;\3<\3<\3<\3<\3=\5=\u0452\n=\3=\3=\3=\3=\3>\3>\3") - buf.write(">\3>\3>\3>\3>\3>\3>\3>\3>\5>\u0463\n>\3?\3?\3?\7?\u0468") - buf.write("\n?\f?\16?\u046b\13?\3@\5@\u046e\n@\3@\3@\3@\3A\3A\3A") - buf.write("\7A\u0476\nA\fA\16A\u0479\13A\3B\3B\5B\u047d\nB\3C\3C") - buf.write("\3C\3D\3D\5D\u0484\nD\3D\3D\3D\3D\3E\7E\u048b\nE\fE\16") - buf.write("E\u048e\13E\3E\3E\5E\u0492\nE\3F\3F\3F\3F\3F\5F\u0499") - buf.write("\nF\3G\3G\3G\3G\3G\3H\3H\3H\3I\3I\5I\u04a5\nI\3I\3I\3") - buf.write("I\3I\3I\3I\3I\3I\3I\5I\u04b0\nI\3J\3J\3J\3J\7J\u04b6\n") - buf.write("J\fJ\16J\u04b9\13J\3K\3K\5K\u04bd\nK\3L\3L\3L\3L\3L\3") - buf.write("L\3L\5L\u04c6\nL\3M\3M\3M\3M\3N\3N\3N\5N\u04cf\nN\3O\3") - buf.write("O\3O\3O\3O\3O\3O\5O\u04d8\nO\3P\3P\3P\3Q\5Q\u04de\nQ\3") - buf.write("Q\3Q\3Q\5Q\u04e3\nQ\3Q\3Q\5Q\u04e7\nQ\3Q\3Q\5Q\u04eb\n") - buf.write("Q\3R\3R\5R\u04ef\nR\3R\3R\5R\u04f3\nR\3S\3S\3S\3S\3S\5") - buf.write("S\u04fa\nS\3T\3T\3T\3T\3U\3U\5U\u0502\nU\3V\3V\3V\3V\3") - buf.write("V\3V\3V\3V\3V\3V\3V\5V\u050f\nV\3V\3V\3V\3V\3V\3V\7V\u0517") - buf.write("\nV\fV\16V\u051a\13V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V") - buf.write("\3V\3V\3V\3V\3V\3V\3V\3V\5V\u052f\nV\3V\3V\5V\u0533\n") - buf.write("V\3V\3V\5V\u0537\nV\3V\3V\3V\5V\u053c\nV\3V\3V\3V\3V\3") - buf.write("V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\5V\u0550\nV\3") - buf.write("V\3V\3V\5V\u0555\nV\3V\3V\3V\5V\u055a\nV\3V\3V\3V\3V\3") - buf.write("V\5V\u0561\nV\3V\5V\u0564\nV\3V\3V\3V\3V\3V\3V\3V\3V\3") - buf.write("V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\5V\u057a\nV\3V\3V\3") - buf.write("V\3V\3V\3V\3V\3V\3V\3V\5V\u0586\nV\3W\3W\5W\u058a\nW\3") - buf.write("W\3W\3X\3X\3X\3X\5X\u0592\nX\3X\3X\3X\3X\7X\u0598\nX\f") - buf.write("X\16X\u059b\13X\3X\3X\3X\3X\5X\u05a1\nX\3Y\3Y\5Y\u05a5") - buf.write("\nY\3Z\3Z\3Z\5Z\u05aa\nZ\3Z\5Z\u05ad\nZ\3[\3[\3[\5[\u05b2") - buf.write("\n[\3\\\3\\\3\\\3\\\3]\3]\5]\u05ba\n]\3^\6^\u05bd\n^\r") - buf.write("^\16^\u05be\3^\3^\3_\3_\3_\5_\u05c6\n_\3_\3_\3_\3_\5_") - buf.write("\u05cc\n_\3`\3`\3`\3a\6a\u05d2\na\ra\16a\u05d3\3b\3b\3") - buf.write("b\3b\7b\u05da\nb\fb\16b\u05dd\13b\5b\u05df\nb\3c\3c\3") - buf.write("c\7c\u05e4\nc\fc\16c\u05e7\13c\3d\3d\7d\u05eb\nd\fd\16") - buf.write("d\u05ee\13d\3d\5d\u05f1\nd\3d\5d\u05f4\nd\3e\3e\3e\3e") - buf.write("\5e\u05fa\ne\3e\3e\5e\u05fe\ne\3e\3e\3f\3f\5f\u0604\n") - buf.write("f\3f\3f\3g\3g\3g\3g\3g\3h\3h\3h\3i\3i\5i\u0612\ni\3j\3") - buf.write("j\3j\3j\5j\u0618\nj\3k\3k\3k\7k\u061d\nk\fk\16k\u0620") - buf.write("\13k\3l\3l\5l\u0624\nl\3l\5l\u0627\nl\3l\5l\u062a\nl\3") - buf.write("l\3l\3m\6m\u062f\nm\rm\16m\u0630\3n\3n\3n\3n\3n\3o\6o") - buf.write("\u0639\no\ro\16o\u063a\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3") - buf.write("p\3p\3p\3p\3p\5p\u064c\np\3q\6q\u064f\nq\rq\16q\u0650") - buf.write("\3r\3r\5r\u0655\nr\3s\5s\u0658\ns\3s\5s\u065b\ns\3s\3") - buf.write("s\3s\3s\3s\5s\u0662\ns\3t\3t\3t\3t\5t\u0668\nt\3u\3u\3") - buf.write("u\3u\7u\u066e\nu\fu\16u\u0671\13u\3u\3u\3v\5v\u0676\n") - buf.write("v\3v\3v\3w\3w\3w\3w\7w\u067e\nw\fw\16w\u0681\13w\3x\3") - buf.write("x\3x\7x\u0686\nx\fx\16x\u0689\13x\3y\6y\u068c\ny\ry\16") - buf.write("y\u068d\3z\3z\3z\3z\3z\3{\3{\3{\3{\5{\u0699\n{\3{\3{\5") - buf.write("{\u069d\n{\5{\u069f\n{\3|\3|\3|\5|\u06a4\n|\3|\3|\5|\u06a8") - buf.write("\n|\3}\3}\3}\7}\u06ad\n}\f}\16}\u06b0\13}\3~\3~\3~\3~") - buf.write("\3\177\3\177\5\177\u06b8\n\177\3\177\3\177\3\u0080\6\u0080") - buf.write("\u06bd\n\u0080\r\u0080\16\u0080\u06be\3\u0081\5\u0081") - buf.write("\u06c2\n\u0081\3\u0081\5\u0081\u06c5\n\u0081\3\u0081\3") - buf.write("\u0081\5\u0081\u06c9\n\u0081\3\u0082\6\u0082\u06cc\n\u0082") - buf.write("\r\u0082\16\u0082\u06cd\3\u0083\3\u0083\3\u0084\3\u0084") - buf.write("\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084") - buf.write("\5\u0084\u06db\n\u0084\3\u0084\3\u0084\3\u0084\3\u0084") - buf.write("\3\u0084\3\u0084\3\u0084\3\u0084\5\u0084\u06e5\n\u0084") - buf.write("\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\5\u0085\u06ec") - buf.write("\n\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085") - buf.write("\3\u0085\3\u0085\3\u0085\3\u0085\5\u0085\u06f8\n\u0085") - buf.write("\3\u0086\3\u0086\3\u0086\7\u0086\u06fd\n\u0086\f\u0086") - buf.write("\16\u0086\u0700\13\u0086\3\u0087\3\u0087\3\u0087\3\u0087") - buf.write("\3\u0088\3\u0088\3\u0088\7\u0088\u0709\n\u0088\f\u0088") - buf.write("\16\u0088\u070c\13\u0088\3\u0089\3\u0089\3\u0089\5\u0089") - buf.write("\u0711\n\u0089\3\u008a\3\u008a\5\u008a\u0715\n\u008a\3") - buf.write("\u008b\3\u008b\5\u008b\u0719\n\u008b\3\u008c\3\u008c\3") - buf.write("\u008d\3\u008d\5\u008d\u071f\n\u008d\3\u008e\3\u008e\3") - buf.write("\u008e\3\u008e\5\u008e\u0725\n\u008e\5\u008e\u0727\n\u008e") - buf.write("\3\u008f\3\u008f\3\u008f\7\u008f\u072c\n\u008f\f\u008f") - buf.write("\16\u008f\u072f\13\u008f\3\u0090\5\u0090\u0732\n\u0090") - buf.write("\3\u0090\5\u0090\u0735\n\u0090\3\u0090\3\u0090\5\u0090") - buf.write("\u0739\n\u0090\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091") - buf.write("\3\u0091\3\u0091\3\u0091\5\u0091\u0743\n\u0091\3\u0092") - buf.write("\5\u0092\u0746\n\u0092\3\u0092\3\u0092\3\u0092\3\u0092") - buf.write("\3\u0093\5\u0093\u074d\n\u0093\3\u0093\5\u0093\u0750\n") - buf.write("\u0093\3\u0093\3\u0093\3\u0093\5\u0093\u0755\n\u0093\3") - buf.write("\u0093\3\u0093\3\u0093\5\u0093\u075a\n\u0093\5\u0093\u075c") - buf.write("\n\u0093\3\u0094\5\u0094\u075f\n\u0094\3\u0094\5\u0094") - buf.write("\u0762\n\u0094\3\u0094\3\u0094\3\u0094\3\u0095\5\u0095") - buf.write("\u0768\n\u0095\3\u0095\5\u0095\u076b\n\u0095\3\u0095\3") - buf.write("\u0095\3\u0095\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096") - buf.write("\3\u0096\3\u0096\5\u0096\u0777\n\u0096\3\u0097\3\u0097") - buf.write("\5\u0097\u077b\n\u0097\3\u0098\5\u0098\u077e\n\u0098\3") - buf.write("\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098") - buf.write("\3\u0098\5\u0098\u0788\n\u0098\3\u0099\5\u0099\u078b\n") - buf.write("\u0099\3\u0099\3\u0099\3\u0099\3\u009a\5\u009a\u0791\n") - buf.write("\u009a\3\u009a\3\u009a\3\u009a\3\u009b\3\u009b\3\u009b") - buf.write("\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b") - buf.write("\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b") - buf.write("\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\5\u009b\u07ac") - buf.write("\n\u009b\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c") - buf.write("\3\u009c\3\u009d\3\u009d\3\u009d\3\u009d\5\u009d\u07b9") - buf.write("\n\u009d\3\u009d\3\u009d\3\u009e\3\u009e\5\u009e\u07bf") - buf.write("\n\u009e\3\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0\7\u00a0") - buf.write("\u07c6\n\u00a0\f\u00a0\16\u00a0\u07c9\13\u00a0\3\u00a0") - buf.write("\3\u00a0\3\u00a1\5\u00a1\u07ce\n\u00a1\3\u00a1\5\u00a1") - buf.write("\u07d1\n\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\6\u00a1") - buf.write("\u07d7\n\u00a1\r\u00a1\16\u00a1\u07d8\3\u00a1\3\u00a1") - buf.write("\5\u00a1\u07dd\n\u00a1\3\u00a2\3\u00a2\7\u00a2\u07e1\n") - buf.write("\u00a2\f\u00a2\16\u00a2\u07e4\13\u00a2\3\u00a2\6\u00a2") - buf.write("\u07e7\n\u00a2\r\u00a2\16\u00a2\u07e8\3\u00a3\3\u00a3") - buf.write("\7\u00a3\u07ed\n\u00a3\f\u00a3\16\u00a3\u07f0\13\u00a3") - buf.write("\3\u00a3\3\u00a3\3\u00a4\3\u00a4\3\u00a4\3\u00a4\7\u00a4") - buf.write("\u07f8\n\u00a4\f\u00a4\16\u00a4\u07fb\13\u00a4\3\u00a4") - buf.write("\5\u00a4\u07fe\n\u00a4\5\u00a4\u0800\n\u00a4\3\u00a4\3") - buf.write("\u00a4\3\u00a5\3\u00a5\3\u00a5\3\u00a5\7\u00a5\u0808\n") - buf.write("\u00a5\f\u00a5\16\u00a5\u080b\13\u00a5\3\u00a5\3\u00a5") - buf.write("\3\u00a6\5\u00a6\u0810\n\u00a6\3\u00a6\5\u00a6\u0813\n") - buf.write("\u00a6\3\u00a6\3\u00a6\3\u00a7\3\u00a7\3\u00a8\3\u00a8") - buf.write("\3\u00a8\3\u00a9\3\u00a9\7\u00a9\u081e\n\u00a9\f\u00a9") - buf.write("\16\u00a9\u0821\13\u00a9\3\u00a9\3\u00a9\3\u00aa\5\u00aa") - buf.write("\u0826\n\u00aa\3\u00aa\5\u00aa\u0829\n\u00aa\3\u00aa\5") - buf.write("\u00aa\u082c\n\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3") - buf.write("\u00aa\5\u00aa\u0833\n\u00aa\3\u00aa\3\u00aa\3\u00aa\5") - buf.write("\u00aa\u0838\n\u00aa\3\u00aa\3\u00aa\5\u00aa\u083c\n\u00aa") - buf.write("\3\u00aa\3\u00aa\5\u00aa\u0840\n\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\5\u00aa") - buf.write("\u0851\n\u00aa\3\u00aa\5\u00aa\u0854\n\u00aa\3\u00aa\3") - buf.write("\u00aa\3\u00aa\5\u00aa\u0859\n\u00aa\3\u00aa\3\u00aa\5") - buf.write("\u00aa\u085d\n\u00aa\3\u00aa\3\u00aa\5\u00aa\u0861\n\u00aa") - buf.write("\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\5\u00aa\u086a\n\u00aa\3\u00ab\5\u00ab\u086d\n\u00ab\3") - buf.write("\u00ab\3\u00ab\3\u00ab\5\u00ab\u0872\n\u00ab\3\u00ab\3") - buf.write("\u00ab\5\u00ab\u0876\n\u00ab\3\u00ab\3\u00ab\3\u00ab\5") - buf.write("\u00ab\u087b\n\u00ab\3\u00ab\3\u00ab\5\u00ab\u087f\n\u00ab") - buf.write("\5\u00ab\u0881\n\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ad") - buf.write("\3\u00ad\3\u00ad\3\u00ad\7\u00ad\u088a\n\u00ad\f\u00ad") - buf.write("\16\u00ad\u088d\13\u00ad\3\u00ad\5\u00ad\u0890\n\u00ad") - buf.write("\5\u00ad\u0892\n\u00ad\3\u00ad\3\u00ad\3\u00ae\5\u00ae") - buf.write("\u0897\n\u00ae\3\u00ae\3\u00ae\3\u00ae\5\u00ae\u089c\n") - buf.write("\u00ae\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af\5\u00af") - buf.write("\u08a3\n\u00af\3\u00af\3\u00af\3\u00b0\3\u00b0\5\u00b0") - buf.write("\u08a9\n\u00b0\3\u00b1\6\u00b1\u08ac\n\u00b1\r\u00b1\16") - buf.write("\u00b1\u08ad\3\u00b2\3\u00b2\3\u00b2\3\u00b2\5\u00b2\u08b4") - buf.write("\n\u00b2\3\u00b2\3\u00b2\5\u00b2\u08b8\n\u00b2\3\u00b2") - buf.write("\3\u00b2\3\u00b3\3\u00b3\5\u00b3\u08be\n\u00b3\3\u00b4") - buf.write("\3\u00b4\3\u00b4\7\u00b4\u08c3\n\u00b4\f\u00b4\16\u00b4") - buf.write("\u08c6\13\u00b4\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5") - buf.write("\7\u00b5\u08cd\n\u00b5\f\u00b5\16\u00b5\u08d0\13\u00b5") - buf.write("\5\u00b5\u08d2\n\u00b5\3\u00b5\5\u00b5\u08d5\n\u00b5\3") - buf.write("\u00b6\3\u00b6\3\u00b6\5\u00b6\u08da\n\u00b6\3\u00b6\3") - buf.write("\u00b6\3\u00b7\3\u00b7\5\u00b7\u08e0\n\u00b7\3\u00b7\3") - buf.write("\u00b7\7\u00b7\u08e4\n\u00b7\f\u00b7\16\u00b7\u08e7\13") - buf.write("\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7\5\u00b7\u08ed\n") - buf.write("\u00b7\3\u00b8\3\u00b8\3\u00b8\7\u00b8\u08f2\n\u00b8\f") - buf.write("\u00b8\16\u00b8\u08f5\13\u00b8\3\u00b9\3\u00b9\3\u00b9") - buf.write("\3\u00b9\3\u00ba\5\u00ba\u08fc\n\u00ba\3\u00ba\3\u00ba") - buf.write("\5\u00ba\u0900\n\u00ba\3\u00bb\3\u00bb\3\u00bb\3\u00bb") - buf.write("\3\u00bb\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc") - buf.write("\3\u00bc\3\u00bc\5\u00bc\u090f\n\u00bc\3\u00bc\3\u00bc") - buf.write("\5\u00bc\u0913\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc") - buf.write("\3\u00bc\7\u00bc\u091a\n\u00bc\f\u00bc\16\u00bc\u091d") - buf.write("\13\u00bc\3\u00bc\5\u00bc\u0920\n\u00bc\3\u00bc\3\u00bc") - buf.write("\5\u00bc\u0924\n\u00bc\3\u00bd\3\u00bd\3\u00bd\3\u00bd") - buf.write("\3\u00be\3\u00be\3\u00be\3\u00be\3\u00bf\3\u00bf\3\u00bf") - buf.write("\3\u00bf\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0") - buf.write("\3\u00c0\3\u00c0\5\u00c0\u093a\n\u00c0\3\u00c1\3\u00c1") - buf.write("\3\u00c2\3\u00c2\3\u00c2\3\u00c2\5\u00c2\u0942\n\u00c2") - buf.write("\3\u00c3\3\u00c3\7\u00c3\u0946\n\u00c3\f\u00c3\16\u00c3") - buf.write("\u0949\13\u00c3\3\u00c3\3\u00c3\3\u00c4\3\u00c4\7\u00c4") - buf.write("\u094f\n\u00c4\f\u00c4\16\u00c4\u0952\13\u00c4\3\u00c4") - buf.write("\3\u00c4\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u095a") - buf.write("\n\u00c5\3\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0960") - buf.write("\n\u00c6\3\u00c7\3\u00c7\3\u00c7\7\u00c7\u0965\n\u00c7") - buf.write("\f\u00c7\16\u00c7\u0968\13\u00c7\3\u00c7\3\u00c7\6\u00c7") - buf.write("\u096c\n\u00c7\r\u00c7\16\u00c7\u096d\5\u00c7\u0970\n") - buf.write("\u00c7\3\u00c8\3\u00c8\3\u00c9\3\u00c9\3\u00c9\5\u00c9") - buf.write("\u0977\n\u00c9\3\u00c9\5\u00c9\u097a\n\u00c9\3\u00c9\5") - buf.write("\u00c9\u097d\n\u00c9\3\u00c9\3\u00c9\5\u00c9\u0981\n\u00c9") - buf.write("\3\u00ca\5\u00ca\u0984\n\u00ca\3\u00ca\3\u00ca\3\u00ca") - buf.write("\5\u00ca\u0989\n\u00ca\3\u00ca\5\u00ca\u098c\n\u00ca\3") - buf.write("\u00ca\5\u00ca\u098f\n\u00ca\3\u00ca\3\u00ca\5\u00ca\u0993") - buf.write("\n\u00ca\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u0998\n\u00cb") - buf.write("\3\u00cb\5\u00cb\u099b\n\u00cb\3\u00cb\5\u00cb\u099e\n") - buf.write("\u00cb\3\u00cb\3\u00cb\5\u00cb\u09a2\n\u00cb\3\u00cc\3") - buf.write("\u00cc\3\u00cc\5\u00cc\u09a7\n\u00cc\3\u00cc\3\u00cc\5") - buf.write("\u00cc\u09ab\n\u00cc\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5") - buf.write("\u00cd\u09b1\n\u00cd\3\u00cd\3\u00cd\5\u00cd\u09b5\n\u00cd") - buf.write("\3\u00cd\3\u00cd\5\u00cd\u09b9\n\u00cd\3\u00cd\3\u00cd") - buf.write("\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce") - buf.write("\3\u00ce\3\u00ce\3\u00ce\5\u00ce\u09c7\n\u00ce\3\u00cf") - buf.write("\3\u00cf\3\u00cf\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d0") - buf.write("\3\u00d0\3\u00d0\3\u00d0\5\u00d0\u09d4\n\u00d0\3\u00d0") - buf.write("\3\u00d0\3\u00d0\3\u00d0\5\u00d0\u09da\n\u00d0\3\u00d1") - buf.write("\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d2\3\u00d2\3\u00d2") - buf.write("\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2") - buf.write("\3\u00d2\3\u00d2\5\u00d2\u09ed\n\u00d2\3\u00d3\3\u00d3") - buf.write("\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d4\3\u00d4\3\u00d4") - buf.write("\5\u00d4\u09f8\n\u00d4\3\u00d4\3\u00d4\5\u00d4\u09fc\n") - buf.write("\u00d4\3\u00d4\3\u00d4\3\u00d5\3\u00d5\5\u00d5\u0a02\n") - buf.write("\u00d5\3\u00d5\3\u00d5\5\u00d5\u0a06\n\u00d5\3\u00d5\3") - buf.write("\u00d5\5\u00d5\u0a0a\n\u00d5\3\u00d5\3\u00d5\3\u00d5\3") - buf.write("\u00d5\3\u00d5\5\u00d5\u0a11\n\u00d5\3\u00d6\3\u00d6\3") - buf.write("\u00d6\3\u00d6\3\u00d6\5\u00d6\u0a18\n\u00d6\3\u00d6\5") - buf.write("\u00d6\u0a1b\n\u00d6\3\u00d6\3\u00d6\7\u00d6\u0a1f\n\u00d6") - buf.write("\f\u00d6\16\u00d6\u0a22\13\u00d6\3\u00d7\3\u00d7\3\u00d7") - buf.write("\3\u00d7\5\u00d7\u0a28\n\u00d7\3\u00d7\3\u00d7\3\u00d7") - buf.write("\5\u00d7\u0a2d\n\u00d7\3\u00d7\5\u00d7\u0a30\n\u00d7\3") - buf.write("\u00d7\3\u00d7\3\u00d7\3\u00d7\3\u00d7\3\u00d7\5\u00d7") - buf.write("\u0a38\n\u00d7\3\u00d8\3\u00d8\3\u00d8\3\u00d8\5\u00d8") - buf.write("\u0a3e\n\u00d8\3\u00d9\3\u00d9\5\u00d9\u0a42\n\u00d9\3") - buf.write("\u00d9\3\u00d9\3\u00da\3\u00da\5\u00da\u0a48\n\u00da\3") - buf.write("\u00da\3\u00da\5\u00da\u0a4c\n\u00da\3\u00db\3\u00db\3") - buf.write("\u00db\2\2\u00dc\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36") - buf.write(" \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprt") - buf.write("vxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e") - buf.write("\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0") - buf.write("\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2") - buf.write("\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4") - buf.write("\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6") - buf.write("\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8") - buf.write("\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa") - buf.write("\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a\u010c") - buf.write("\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e") - buf.write("\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130") - buf.write("\u0132\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142") - buf.write("\u0144\u0146\u0148\u014a\u014c\u014e\u0150\u0152\u0154") - buf.write("\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166") - buf.write("\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178") - buf.write("\u017a\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a") - buf.write("\u018c\u018e\u0190\u0192\u0194\u0196\u0198\u019a\u019c") - buf.write("\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae") - buf.write("\u01b0\u01b2\u01b4\2\25\n\2\26\26\31\3188@@TTXXdeii\4") - buf.write("\2##..\5\2\67\67IIQQ\3\2\u009d\u009e\4\2\u0093\u0094\u009f") - buf.write("\u00a0\3\2\u0088\u0089\3\2\u008a\u008c\20\2\23\23\26\26") - buf.write("\31\31\36\36##..88@@EETTXX\\\\deii\4\2\17\17!!\4\2\20") - buf.write("\20hh\16\2\n\n\20\20**::CCJJLPUU[[hhllnn\4\2))\66\66\4") - buf.write("\2\22\22__\4\2\u008a\u008a\u0095\u0095\4\2\67\67II\4\2") - buf.write("++aa\25\2\n\n\16\16\22\24\26 \"#%&(\60\63\63\65:<AAFFHHLLRRVWggkkoprs\2\u0b5c\2\u01b7\3\2") - buf.write("\2\2\4\u01cf\3\2\2\2\6\u01db\3\2\2\2\b\u01e9\3\2\2\2\n") - buf.write("\u01eb\3\2\2\2\f\u01f5\3\2\2\2\16\u01fb\3\2\2\2\20\u0200") - buf.write("\3\2\2\2\22\u0202\3\2\2\2\24\u0204\3\2\2\2\26\u020a\3") - buf.write("\2\2\2\30\u020c\3\2\2\2\32\u0217\3\2\2\2\34\u0222\3\2") - buf.write("\2\2\36\u022d\3\2\2\2 \u0232\3\2\2\2\"\u023c\3\2\2\2$") - buf.write("\u0249\3\2\2\2&\u024b\3\2\2\2(\u0253\3\2\2\2*\u025b\3") - buf.write("\2\2\2,\u0263\3\2\2\2.\u026b\3\2\2\2\60\u0273\3\2\2\2") - buf.write("\62\u027b\3\2\2\2\64\u0283\3\2\2\2\66\u028b\3\2\2\28\u0297") - buf.write("\3\2\2\2:\u02a2\3\2\2\2<\u02aa\3\2\2\2>\u02b2\3\2\2\2") - buf.write("@\u02be\3\2\2\2B\u02c6\3\2\2\2D\u02d5\3\2\2\2F\u02f1\3") - buf.write("\2\2\2H\u02f3\3\2\2\2J\u0392\3\2\2\2L\u0396\3\2\2\2N\u0398") - buf.write("\3\2\2\2P\u039c\3\2\2\2R\u03a4\3\2\2\2T\u03b4\3\2\2\2") - buf.write("V\u03b8\3\2\2\2X\u03ba\3\2\2\2Z\u03c4\3\2\2\2\\\u03c6") - buf.write("\3\2\2\2^\u03cf\3\2\2\2`\u03dc\3\2\2\2b\u03e3\3\2\2\2") - buf.write("d\u03e5\3\2\2\2f\u03f8\3\2\2\2h\u03fa\3\2\2\2j\u0403\3") - buf.write("\2\2\2l\u0410\3\2\2\2n\u0412\3\2\2\2p\u0427\3\2\2\2r\u0430") - buf.write("\3\2\2\2t\u0441\3\2\2\2v\u044c\3\2\2\2x\u0451\3\2\2\2") - buf.write("z\u0462\3\2\2\2|\u0464\3\2\2\2~\u046d\3\2\2\2\u0080\u0472") - buf.write("\3\2\2\2\u0082\u047c\3\2\2\2\u0084\u047e\3\2\2\2\u0086") - buf.write("\u0481\3\2\2\2\u0088\u048c\3\2\2\2\u008a\u0498\3\2\2\2") - buf.write("\u008c\u049a\3\2\2\2\u008e\u049f\3\2\2\2\u0090\u04a2\3") - buf.write("\2\2\2\u0092\u04b1\3\2\2\2\u0094\u04ba\3\2\2\2\u0096\u04c5") - buf.write("\3\2\2\2\u0098\u04c7\3\2\2\2\u009a\u04ce\3\2\2\2\u009c") - buf.write("\u04d7\3\2\2\2\u009e\u04d9\3\2\2\2\u00a0\u04dd\3\2\2\2") - buf.write("\u00a2\u04f2\3\2\2\2\u00a4\u04f9\3\2\2\2\u00a6\u04fb\3") - buf.write("\2\2\2\u00a8\u0501\3\2\2\2\u00aa\u0585\3\2\2\2\u00ac\u0587") - buf.write("\3\2\2\2\u00ae\u05a0\3\2\2\2\u00b0\u05a4\3\2\2\2\u00b2") - buf.write("\u05a6\3\2\2\2\u00b4\u05b1\3\2\2\2\u00b6\u05b3\3\2\2\2") - buf.write("\u00b8\u05b9\3\2\2\2\u00ba\u05bc\3\2\2\2\u00bc\u05cb\3") - buf.write("\2\2\2\u00be\u05cd\3\2\2\2\u00c0\u05d1\3\2\2\2\u00c2\u05de") - buf.write("\3\2\2\2\u00c4\u05e0\3\2\2\2\u00c6\u05f3\3\2\2\2\u00c8") - buf.write("\u05f5\3\2\2\2\u00ca\u0601\3\2\2\2\u00cc\u0607\3\2\2\2") - buf.write("\u00ce\u060c\3\2\2\2\u00d0\u0611\3\2\2\2\u00d2\u0613\3") - buf.write("\2\2\2\u00d4\u0619\3\2\2\2\u00d6\u0621\3\2\2\2\u00d8\u062e") - buf.write("\3\2\2\2\u00da\u0632\3\2\2\2\u00dc\u0638\3\2\2\2\u00de") - buf.write("\u064b\3\2\2\2\u00e0\u064e\3\2\2\2\u00e2\u0654\3\2\2\2") - buf.write("\u00e4\u0657\3\2\2\2\u00e6\u0663\3\2\2\2\u00e8\u0669\3") - buf.write("\2\2\2\u00ea\u0675\3\2\2\2\u00ec\u0679\3\2\2\2\u00ee\u0682") - buf.write("\3\2\2\2\u00f0\u068b\3\2\2\2\u00f2\u068f\3\2\2\2\u00f4") - buf.write("\u069e\3\2\2\2\u00f6\u06a7\3\2\2\2\u00f8\u06a9\3\2\2\2") - buf.write("\u00fa\u06b1\3\2\2\2\u00fc\u06b5\3\2\2\2\u00fe\u06bc\3") - buf.write("\2\2\2\u0100\u06c1\3\2\2\2\u0102\u06cb\3\2\2\2\u0104\u06cf") - buf.write("\3\2\2\2\u0106\u06e4\3\2\2\2\u0108\u06eb\3\2\2\2\u010a") - buf.write("\u06f9\3\2\2\2\u010c\u0701\3\2\2\2\u010e\u0705\3\2\2\2") - buf.write("\u0110\u070d\3\2\2\2\u0112\u0714\3\2\2\2\u0114\u0718\3") - buf.write("\2\2\2\u0116\u071a\3\2\2\2\u0118\u071e\3\2\2\2\u011a\u0726") - buf.write("\3\2\2\2\u011c\u0728\3\2\2\2\u011e\u0738\3\2\2\2\u0120") - buf.write("\u0742\3\2\2\2\u0122\u0745\3\2\2\2\u0124\u074c\3\2\2\2") - buf.write("\u0126\u075e\3\2\2\2\u0128\u0767\3\2\2\2\u012a\u0776\3") - buf.write("\2\2\2\u012c\u077a\3\2\2\2\u012e\u077d\3\2\2\2\u0130\u078a") - buf.write("\3\2\2\2\u0132\u0790\3\2\2\2\u0134\u07ab\3\2\2\2\u0136") - buf.write("\u07ad\3\2\2\2\u0138\u07b4\3\2\2\2\u013a\u07be\3\2\2\2") - buf.write("\u013c\u07c0\3\2\2\2\u013e\u07c3\3\2\2\2\u0140\u07cd\3") - buf.write("\2\2\2\u0142\u07de\3\2\2\2\u0144\u07ea\3\2\2\2\u0146\u07f3") - buf.write("\3\2\2\2\u0148\u0803\3\2\2\2\u014a\u080f\3\2\2\2\u014c") - buf.write("\u0816\3\2\2\2\u014e\u0818\3\2\2\2\u0150\u081b\3\2\2\2") - buf.write("\u0152\u0825\3\2\2\2\u0154\u086c\3\2\2\2\u0156\u0882\3") - buf.write("\2\2\2\u0158\u0885\3\2\2\2\u015a\u0896\3\2\2\2\u015c\u089d") - buf.write("\3\2\2\2\u015e\u08a8\3\2\2\2\u0160\u08ab\3\2\2\2\u0162") - buf.write("\u08af\3\2\2\2\u0164\u08bd\3\2\2\2\u0166\u08bf\3\2\2\2") - buf.write("\u0168\u08c7\3\2\2\2\u016a\u08d9\3\2\2\2\u016c\u08ec\3") - buf.write("\2\2\2\u016e\u08ee\3\2\2\2\u0170\u08f6\3\2\2\2\u0172\u08ff") - buf.write("\3\2\2\2\u0174\u0901\3\2\2\2\u0176\u0923\3\2\2\2\u0178") - buf.write("\u0925\3\2\2\2\u017a\u0929\3\2\2\2\u017c\u092d\3\2\2\2") - buf.write("\u017e\u0939\3\2\2\2\u0180\u093b\3\2\2\2\u0182\u0941\3") - buf.write("\2\2\2\u0184\u0943\3\2\2\2\u0186\u094c\3\2\2\2\u0188\u0959") - buf.write("\3\2\2\2\u018a\u095f\3\2\2\2\u018c\u0961\3\2\2\2\u018e") - buf.write("\u0971\3\2\2\2\u0190\u0973\3\2\2\2\u0192\u0983\3\2\2\2") - buf.write("\u0194\u0994\3\2\2\2\u0196\u09a3\3\2\2\2\u0198\u09ac\3") - buf.write("\2\2\2\u019a\u09bc\3\2\2\2\u019c\u09c8\3\2\2\2\u019e\u09cb") - buf.write("\3\2\2\2\u01a0\u09db\3\2\2\2\u01a2\u09e0\3\2\2\2\u01a4") - buf.write("\u09ee\3\2\2\2\u01a6\u09f4\3\2\2\2\u01a8\u09ff\3\2\2\2") - buf.write("\u01aa\u0a17\3\2\2\2\u01ac\u0a23\3\2\2\2\u01ae\u0a39\3") - buf.write("\2\2\2\u01b0\u0a3f\3\2\2\2\u01b2\u0a45\3\2\2\2\u01b4\u0a4d") - buf.write("\3\2\2\2\u01b6\u01b8\7\3\2\2\u01b7\u01b6\3\2\2\2\u01b7") - buf.write("\u01b8\3\2\2\2\u01b8\u01ba\3\2\2\2\u01b9\u01bb\5\u00d8") - buf.write("m\2\u01ba\u01b9\3\2\2\2\u01ba\u01bb\3\2\2\2\u01bb\u01bd") - buf.write("\3\2\2\2\u01bc\u01be\5\u00dco\2\u01bd\u01bc\3\2\2\2\u01bd") - buf.write("\u01be\3\2\2\2\u01be\u01c2\3\2\2\2\u01bf\u01c1\5\u015c") - buf.write("\u00af\2\u01c0\u01bf\3\2\2\2\u01c1\u01c4\3\2\2\2\u01c2") - buf.write("\u01c0\3\2\2\2\u01c2\u01c3\3\2\2\2\u01c3\u01c6\3\2\2\2") - buf.write("\u01c4\u01c2\3\2\2\2\u01c5\u01c7\5\u00e0q\2\u01c6\u01c5") - buf.write("\3\2\2\2\u01c6\u01c7\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8") - buf.write("\u01c9\7\2\2\3\u01c9\3\3\2\2\2\u01ca\u01cc\5\u01b4\u00db") - buf.write("\2\u01cb\u01cd\5\30\r\2\u01cc\u01cb\3\2\2\2\u01cc\u01cd") - buf.write("\3\2\2\2\u01cd\u01d0\3\2\2\2\u01ce\u01d0\5\u00e6t\2\u01cf") - buf.write("\u01ca\3\2\2\2\u01cf\u01ce\3\2\2\2\u01d0\u01d8\3\2\2\2") - buf.write("\u01d1\u01d2\7\u0084\2\2\u01d2\u01d4\5\u01b4\u00db\2\u01d3") - buf.write("\u01d5\5\30\r\2\u01d4\u01d3\3\2\2\2\u01d4\u01d5\3\2\2") - buf.write("\2\u01d5\u01d7\3\2\2\2\u01d6\u01d1\3\2\2\2\u01d7\u01da") - buf.write("\3\2\2\2\u01d8\u01d6\3\2\2\2\u01d8\u01d9\3\2\2\2\u01d9") - buf.write("\5\3\2\2\2\u01da\u01d8\3\2\2\2\u01db\u01e1\5\b\5\2\u01dc") - buf.write("\u01e0\7\u0095\2\2\u01dd\u01e0\5\u0144\u00a3\2\u01de\u01e0") - buf.write("\7\u008a\2\2\u01df\u01dc\3\2\2\2\u01df\u01dd\3\2\2\2\u01df") - buf.write("\u01de\3\2\2\2\u01e0\u01e3\3\2\2\2\u01e1\u01df\3\2\2\2") - buf.write("\u01e1\u01e2\3\2\2\2\u01e2\7\3\2\2\2\u01e3\u01e1\3\2\2") - buf.write("\2\u01e4\u01ea\5\16\b\2\u01e5\u01ea\5\26\f\2\u01e6\u01e7") - buf.write("\7m\2\2\u01e7\u01ea\7\u008a\2\2\u01e8\u01ea\5\n\6\2\u01e9") - buf.write("\u01e4\3\2\2\2\u01e9\u01e5\3\2\2\2\u01e9\u01e6\3\2\2\2") - buf.write("\u01e9\u01e8\3\2\2\2\u01ea\t\3\2\2\2\u01eb\u01ec\7\u0082") - buf.write("\2\2\u01ec\u01ef\5\f\7\2\u01ed\u01ee\7\u0085\2\2\u01ee") - buf.write("\u01f0\5\f\7\2\u01ef\u01ed\3\2\2\2\u01f0\u01f1\3\2\2\2") - buf.write("\u01f1\u01ef\3\2\2\2\u01f1\u01f2\3\2\2\2\u01f2\u01f3\3") - buf.write("\2\2\2\u01f3\u01f4\7\u0083\2\2\u01f4\13\3\2\2\2\u01f5") - buf.write("\u01f7\5\6\4\2\u01f6\u01f8\5\u01b4\u00db\2\u01f7\u01f6") - buf.write("\3\2\2\2\u01f7\u01f8\3\2\2\2\u01f8\r\3\2\2\2\u01f9\u01fc") - buf.write("\5\20\t\2\u01fa\u01fc\7\23\2\2\u01fb\u01f9\3\2\2\2\u01fb") - buf.write("\u01fa\3\2\2\2\u01fc\17\3\2\2\2\u01fd\u0201\5\22\n\2\u01fe") - buf.write("\u0201\5\24\13\2\u01ff\u0201\7\36\2\2\u0200\u01fd\3\2") - buf.write("\2\2\u0200\u01fe\3\2\2\2\u0200\u01ff\3\2\2\2\u0201\21") - buf.write("\3\2\2\2\u0202\u0203\t\2\2\2\u0203\23\3\2\2\2\u0204\u0205") - buf.write("\t\3\2\2\u0205\25\3\2\2\2\u0206\u020b\5\4\3\2\u0207\u020b") - buf.write("\7E\2\2\u0208\u020b\7$\2\2\u0209\u020b\7\\\2\2\u020a\u0206") - buf.write("\3\2\2\2\u020a\u0207\3\2\2\2\u020a\u0208\3\2\2\2\u020a") - buf.write("\u0209\3\2\2\2\u020b\27\3\2\2\2\u020c\u020d\7\u0093\2") - buf.write("\2\u020d\u0212\5\6\4\2\u020e\u020f\7\u0085\2\2\u020f\u0211") - buf.write("\5\6\4\2\u0210\u020e\3\2\2\2\u0211\u0214\3\2\2\2\u0212") - buf.write("\u0210\3\2\2\2\u0212\u0213\3\2\2\2\u0213\u0215\3\2\2\2") - buf.write("\u0214\u0212\3\2\2\2\u0215\u0216\7\u0094\2\2\u0216\31") - buf.write("\3\2\2\2\u0217\u021c\5\34\17\2\u0218\u0219\7\u0085\2\2") - buf.write("\u0219\u021b\5\34\17\2\u021a\u0218\3\2\2\2\u021b\u021e") - buf.write("\3\2\2\2\u021c\u021a\3\2\2\2\u021c\u021d\3\2\2\2\u021d") - buf.write("\33\3\2\2\2\u021e\u021c\3\2\2\2\u021f\u0220\5\u01b4\u00db") - buf.write("\2\u0220\u0221\7\u0086\2\2\u0221\u0223\3\2\2\2\u0222\u021f") - buf.write("\3\2\2\2\u0222\u0223\3\2\2\2\u0223\u0225\3\2\2\2\u0224") - buf.write("\u0226\t\4\2\2\u0225\u0224\3\2\2\2\u0225\u0226\3\2\2\2") - buf.write("\u0226\u0227\3\2\2\2\u0227\u0228\5\36\20\2\u0228\35\3") - buf.write("\2\2\2\u0229\u022e\5\"\22\2\u022a\u022e\5 \21\2\u022b") - buf.write("\u022c\7Q\2\2\u022c\u022e\5 \21\2\u022d\u0229\3\2\2\2") - buf.write("\u022d\u022a\3\2\2\2\u022d\u022b\3\2\2\2\u022e\37\3\2") - buf.write("\2\2\u022f\u0233\5x=\2\u0230\u0233\5\u0084C\2\u0231\u0233") - buf.write("\5&\24\2\u0232\u022f\3\2\2\2\u0232\u0230\3\2\2\2\u0232") - buf.write("\u0231\3\2\2\2\u0233!\3\2\2\2\u0234\u0235\5F$\2\u0235") - buf.write("\u0236\5$\23\2\u0236\u0237\5\36\20\2\u0237\u023d\3\2\2") - buf.write("\2\u0238\u0239\5F$\2\u0239\u023a\7\u00ab\2\2\u023a\u023b") - buf.write("\5L\'\2\u023b\u023d\3\2\2\2\u023c\u0234\3\2\2\2\u023c") - buf.write("\u0238\3\2\2\2\u023d#\3\2\2\2\u023e\u024a\7\u0092\2\2") - buf.write("\u023f\u024a\7\u00a1\2\2\u0240\u024a\7\u00a2\2\2\u0241") - buf.write("\u024a\7\u00a3\2\2\u0242\u024a\7\u00a4\2\2\u0243\u024a") - buf.write("\7\u00a5\2\2\u0244\u024a\7\u00a6\2\2\u0245\u024a\7\u00a7") - buf.write("\2\2\u0246\u024a\7\u00a8\2\2\u0247\u024a\7\u00aa\2\2\u0248") - buf.write("\u024a\5\u017c\u00bf\2\u0249\u023e\3\2\2\2\u0249\u023f") - buf.write("\3\2\2\2\u0249\u0240\3\2\2\2\u0249\u0241\3\2\2\2\u0249") - buf.write("\u0242\3\2\2\2\u0249\u0243\3\2\2\2\u0249\u0244\3\2\2\2") - buf.write("\u0249\u0245\3\2\2\2\u0249\u0246\3\2\2\2\u0249\u0247\3") - buf.write("\2\2\2\u0249\u0248\3\2\2\2\u024a%\3\2\2\2\u024b\u0251") - buf.write("\5(\25\2\u024c\u024d\7\u0095\2\2\u024d\u024e\5L\'\2\u024e") - buf.write("\u024f\7\u0086\2\2\u024f\u0250\5L\'\2\u0250\u0252\3\2") - buf.write("\2\2\u0251\u024c\3\2\2\2\u0251\u0252\3\2\2\2\u0252\'\3") - buf.write("\2\2\2\u0253\u0259\5*\26\2\u0254\u0257\7\u0097\2\2\u0255") - buf.write("\u0258\5(\25\2\u0256\u0258\5N(\2\u0257\u0255\3\2\2\2\u0257") - buf.write("\u0256\3\2\2\2\u0258\u025a\3\2\2\2\u0259\u0254\3\2\2\2") - buf.write("\u0259\u025a\3\2\2\2\u025a)\3\2\2\2\u025b\u0260\5,\27") - buf.write("\2\u025c\u025d\7\u009b\2\2\u025d\u025f\5,\27\2\u025e\u025c") - buf.write("\3\2\2\2\u025f\u0262\3\2\2\2\u0260\u025e\3\2\2\2\u0260") - buf.write("\u0261\3\2\2\2\u0261+\3\2\2\2\u0262\u0260\3\2\2\2\u0263") - buf.write("\u0268\5.\30\2\u0264\u0265\7\u009a\2\2\u0265\u0267\5.") - buf.write("\30\2\u0266\u0264\3\2\2\2\u0267\u026a\3\2\2\2\u0268\u0266") - buf.write("\3\2\2\2\u0268\u0269\3\2\2\2\u0269-\3\2\2\2\u026a\u0268") - buf.write("\3\2\2\2\u026b\u0270\5\60\31\2\u026c\u026d\7\u008e\2\2") - buf.write("\u026d\u026f\5\60\31\2\u026e\u026c\3\2\2\2\u026f\u0272") - buf.write("\3\2\2\2\u0270\u026e\3\2\2\2\u0270\u0271\3\2\2\2\u0271") - buf.write("/\3\2\2\2\u0272\u0270\3\2\2\2\u0273\u0278\5\62\32\2\u0274") - buf.write("\u0275\7\u008f\2\2\u0275\u0277\5\62\32\2\u0276\u0274\3") - buf.write("\2\2\2\u0277\u027a\3\2\2\2\u0278\u0276\3\2\2\2\u0278\u0279") - buf.write("\3\2\2\2\u0279\61\3\2\2\2\u027a\u0278\3\2\2\2\u027b\u0280") - buf.write("\5\64\33\2\u027c\u027d\7\u008d\2\2\u027d\u027f\5\64\33") - buf.write("\2\u027e\u027c\3\2\2\2\u027f\u0282\3\2\2\2\u0280\u027e") - buf.write("\3\2\2\2\u0280\u0281\3\2\2\2\u0281\63\3\2\2\2\u0282\u0280") - buf.write("\3\2\2\2\u0283\u0288\5\66\34\2\u0284\u0285\t\5\2\2\u0285") - buf.write("\u0287\5\66\34\2\u0286\u0284\3\2\2\2\u0287\u028a\3\2\2") - buf.write("\2\u0288\u0286\3\2\2\2\u0288\u0289\3\2\2\2\u0289\65\3") - buf.write("\2\2\2\u028a\u0288\3\2\2\2\u028b\u0294\58\35\2\u028c\u028d") - buf.write("\t\6\2\2\u028d\u0293\58\35\2\u028e\u028f\7<\2\2\u028f") - buf.write("\u0293\5r:\2\u0290\u0291\7\16\2\2\u0291\u0293\5\6\4\2") - buf.write("\u0292\u028c\3\2\2\2\u0292\u028e\3\2\2\2\u0292\u0290\3") - buf.write("\2\2\2\u0293\u0296\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0295") - buf.write("\3\2\2\2\u0295\67\3\2\2\2\u0296\u0294\3\2\2\2\u0297\u029f") - buf.write("\5:\36\2\u0298\u029b\7\u00a9\2\2\u0299\u029b\5\u017a\u00be") - buf.write("\2\u029a\u0298\3\2\2\2\u029a\u0299\3\2\2\2\u029b\u029c") - buf.write("\3\2\2\2\u029c\u029e\5:\36\2\u029d\u029a\3\2\2\2\u029e") - buf.write("\u02a1\3\2\2\2\u029f\u029d\3\2\2\2\u029f\u02a0\3\2\2\2") - buf.write("\u02a09\3\2\2\2\u02a1\u029f\3\2\2\2\u02a2\u02a7\5<\37") - buf.write("\2\u02a3\u02a4\t\7\2\2\u02a4\u02a6\5<\37\2\u02a5\u02a3") - buf.write("\3\2\2\2\u02a6\u02a9\3\2\2\2\u02a7\u02a5\3\2\2\2\u02a7") - buf.write("\u02a8\3\2\2\2\u02a8;\3\2\2\2\u02a9\u02a7\3\2\2\2\u02aa") - buf.write("\u02af\5> \2\u02ab\u02ac\t\b\2\2\u02ac\u02ae\5> \2\u02ad") - buf.write("\u02ab\3\2\2\2\u02ae\u02b1\3\2\2\2\u02af\u02ad\3\2\2\2") - buf.write("\u02af\u02b0\3\2\2\2\u02b0=\3\2\2\2\u02b1\u02af\3\2\2") - buf.write("\2\u02b2\u02bc\5D#\2\u02b3\u02b4\7^\2\2\u02b4\u02b9\7") - buf.write("~\2\2\u02b5\u02b7\5@!\2\u02b6\u02b8\7\u0085\2\2\u02b7") - buf.write("\u02b6\3\2\2\2\u02b7\u02b8\3\2\2\2\u02b8\u02ba\3\2\2\2") - buf.write("\u02b9\u02b5\3\2\2\2\u02b9\u02ba\3\2\2\2\u02ba\u02bb\3") - buf.write("\2\2\2\u02bb\u02bd\7\177\2\2\u02bc\u02b3\3\2\2\2\u02bc") - buf.write("\u02bd\3\2\2\2\u02bd?\3\2\2\2\u02be\u02c3\5B\"\2\u02bf") - buf.write("\u02c0\7\u0085\2\2\u02c0\u02c2\5B\"\2\u02c1\u02bf\3\2") - buf.write("\2\2\u02c2\u02c5\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c3\u02c4") - buf.write("\3\2\2\2\u02c4A\3\2\2\2\u02c5\u02c3\3\2\2\2\u02c6\u02c8") - buf.write("\5\36\20\2\u02c7\u02c9\5\u00be`\2\u02c8\u02c7\3\2\2\2") - buf.write("\u02c8\u02c9\3\2\2\2\u02c9\u02ca\3\2\2\2\u02ca\u02cb\5") - buf.write("\u0178\u00bd\2\u02cb\u02cc\5L\'\2\u02ccC\3\2\2\2\u02cd") - buf.write("\u02d6\5F$\2\u02ce\u02d0\5F$\2\u02cf\u02ce\3\2\2\2\u02cf") - buf.write("\u02d0\3\2\2\2\u02d0\u02d1\3\2\2\2\u02d1\u02d3\7\u00ac") - buf.write("\2\2\u02d2\u02d4\5F$\2\u02d3\u02d2\3\2\2\2\u02d3\u02d4") - buf.write("\3\2\2\2\u02d4\u02d6\3\2\2\2\u02d5\u02cd\3\2\2\2\u02d5") - buf.write("\u02cf\3\2\2\2\u02d6E\3\2\2\2\u02d7\u02f2\5H%\2\u02d8") - buf.write("\u02d9\7\u0088\2\2\u02d9\u02f2\5F$\2\u02da\u02db\7\u0089") - buf.write("\2\2\u02db\u02f2\5F$\2\u02dc\u02dd\7\u0090\2\2\u02dd\u02f2") - buf.write("\5F$\2\u02de\u02df\7\u0091\2\2\u02df\u02f2\5F$\2\u02e0") - buf.write("\u02e1\7\u0098\2\2\u02e1\u02f2\5F$\2\u02e2\u02e3\7\u0099") - buf.write("\2\2\u02e3\u02f2\5F$\2\u02e4\u02e5\7\u0082\2\2\u02e5\u02e6") - buf.write("\5\6\4\2\u02e6\u02e7\7\u0083\2\2\u02e7\u02e8\5F$\2\u02e8") - buf.write("\u02f2\3\2\2\2\u02e9\u02ea\7\21\2\2\u02ea\u02f2\5F$\2") - buf.write("\u02eb\u02ec\7\u008d\2\2\u02ec\u02f2\5F$\2\u02ed\u02ee") - buf.write("\7\u008a\2\2\u02ee\u02f2\5F$\2\u02ef\u02f0\7\u008f\2\2") - buf.write("\u02f0\u02f2\5F$\2\u02f1\u02d7\3\2\2\2\u02f1\u02d8\3\2") - buf.write("\2\2\u02f1\u02da\3\2\2\2\u02f1\u02dc\3\2\2\2\u02f1\u02de") - buf.write("\3\2\2\2\u02f1\u02e0\3\2\2\2\u02f1\u02e2\3\2\2\2\u02f1") - buf.write("\u02e4\3\2\2\2\u02f1\u02e9\3\2\2\2\u02f1\u02eb\3\2\2\2") - buf.write("\u02f1\u02ed\3\2\2\2\u02f1\u02ef\3\2\2\2\u02f2G\3\2\2") - buf.write("\2\u02f3\u02f5\5J&\2\u02f4\u02f6\7\u0090\2\2\u02f5\u02f4") - buf.write("\3\2\2\2\u02f5\u02f6\3\2\2\2\u02f6\u02fa\3\2\2\2\u02f7") - buf.write("\u02f9\5R*\2\u02f8\u02f7\3\2\2\2\u02f9\u02fc\3\2\2\2\u02fa") - buf.write("\u02f8\3\2\2\2\u02fa\u02fb\3\2\2\2\u02fb\u02fe\3\2\2\2") - buf.write("\u02fc\u02fa\3\2\2\2\u02fd\u02ff\7\u0090\2\2\u02fe\u02fd") - buf.write("\3\2\2\2\u02fe\u02ff\3\2\2\2\u02ff\u0316\3\2\2\2\u0300") - buf.write("\u0307\5P)\2\u0301\u0307\5\u01b0\u00d9\2\u0302\u0307\7") - buf.write("\u0098\2\2\u0303\u0307\7\u0099\2\2\u0304\u0305\7\u009c") - buf.write("\2\2\u0305\u0307\5\u01b4\u00db\2\u0306\u0300\3\2\2\2\u0306") - buf.write("\u0301\3\2\2\2\u0306\u0302\3\2\2\2\u0306\u0303\3\2\2\2") - buf.write("\u0306\u0304\3\2\2\2\u0307\u0309\3\2\2\2\u0308\u030a\7") - buf.write("\u0090\2\2\u0309\u0308\3\2\2\2\u0309\u030a\3\2\2\2\u030a") - buf.write("\u030e\3\2\2\2\u030b\u030d\5R*\2\u030c\u030b\3\2\2\2\u030d") - buf.write("\u0310\3\2\2\2\u030e\u030c\3\2\2\2\u030e\u030f\3\2\2\2") - buf.write("\u030f\u0312\3\2\2\2\u0310\u030e\3\2\2\2\u0311\u0313\7") - buf.write("\u0090\2\2\u0312\u0311\3\2\2\2\u0312\u0313\3\2\2\2\u0313") - buf.write("\u0315\3\2\2\2\u0314\u0306\3\2\2\2\u0315\u0318\3\2\2\2") - buf.write("\u0316\u0314\3\2\2\2\u0316\u0317\3\2\2\2\u0317I\3\2\2") - buf.write("\2\u0318\u0316\3\2\2\2\u0319\u0393\5\u017e\u00c0\2\u031a") - buf.write("\u031c\5\u01b4\u00db\2\u031b\u031d\5\30\r\2\u031c\u031b") - buf.write("\3\2\2\2\u031c\u031d\3\2\2\2\u031d\u0393\3\2\2\2\u031e") - buf.write("\u031f\7\u0082\2\2\u031f\u0320\5\36\20\2\u0320\u0321\7") - buf.write("\u0083\2\2\u0321\u0393\3\2\2\2\u0322\u0393\5V,\2\u0323") - buf.write("\u0393\5\u00e6t\2\u0324\u0393\7t\2\2\u0325\u0393\7_\2") - buf.write("\2\u0326\u0330\7\22\2\2\u0327\u0328\7\u0084\2\2\u0328") - buf.write("\u032a\5\u01b4\u00db\2\u0329\u032b\5\30\r\2\u032a\u0329") - buf.write("\3\2\2\2\u032a\u032b\3\2\2\2\u032b\u0331\3\2\2\2\u032c") - buf.write("\u032d\7\u0080\2\2\u032d\u032e\5X-\2\u032e\u032f\7\u0081") - buf.write("\2\2\u032f\u0331\3\2\2\2\u0330\u0327\3\2\2\2\u0330\u032c") - buf.write("\3\2\2\2\u0331\u0393\3\2\2\2\u0332\u034f\7C\2\2\u0333") - buf.write("\u0349\5\6\4\2\u0334\u034a\5\u01b2\u00da\2\u0335\u034a") - buf.write("\5Z.\2\u0336\u0337\7\u0080\2\2\u0337\u0338\5X-\2\u0338") - buf.write("\u033c\7\u0081\2\2\u0339\u033b\5\u0144\u00a3\2\u033a\u0339") - buf.write("\3\2\2\2\u033b\u033e\3\2\2\2\u033c\u033a\3\2\2\2\u033c") - buf.write("\u033d\3\2\2\2\u033d\u0340\3\2\2\2\u033e\u033c\3\2\2\2") - buf.write("\u033f\u0341\5\u0146\u00a4\2\u0340\u033f\3\2\2\2\u0340") - buf.write("\u0341\3\2\2\2\u0341\u034a\3\2\2\2\u0342\u0344\5\u0144") - buf.write("\u00a3\2\u0343\u0342\3\2\2\2\u0344\u0345\3\2\2\2\u0345") - buf.write("\u0343\3\2\2\2\u0345\u0346\3\2\2\2\u0346\u0347\3\2\2\2") - buf.write("\u0347\u0348\5\u0146\u00a4\2\u0348\u034a\3\2\2\2\u0349") - buf.write("\u0334\3\2\2\2\u0349\u0335\3\2\2\2\u0349\u0336\3\2\2\2") - buf.write("\u0349\u0343\3\2\2\2\u034a\u0350\3\2\2\2\u034b\u0350\5") - buf.write("h\65\2\u034c\u034d\5\u0144\u00a3\2\u034d\u034e\5\u0146") - buf.write("\u00a4\2\u034e\u0350\3\2\2\2\u034f\u0333\3\2\2\2\u034f") - buf.write("\u034b\3\2\2\2\u034f\u034c\3\2\2\2\u0350\u0393\3\2\2\2") - buf.write("\u0351\u0352\7\u0082\2\2\u0352\u0355\5\34\17\2\u0353\u0354") - buf.write("\7\u0085\2\2\u0354\u0356\5\34\17\2\u0355\u0353\3\2\2\2") - buf.write("\u0356\u0357\3\2\2\2\u0357\u0355\3\2\2\2\u0357\u0358\3") - buf.write("\2\2\2\u0358\u0359\3\2\2\2\u0359\u035a\7\u0083\2\2\u035a") - buf.write("\u0393\3\2\2\2\u035b\u035c\7c\2\2\u035c\u0360\7\u0082") - buf.write("\2\2\u035d\u0361\5n8\2\u035e\u0361\5\6\4\2\u035f\u0361") - buf.write("\7m\2\2\u0360\u035d\3\2\2\2\u0360\u035e\3\2\2\2\u0360") - buf.write("\u035f\3\2\2\2\u0361\u0362\3\2\2\2\u0362\u0393\7\u0083") - buf.write("\2\2\u0363\u0364\7\32\2\2\u0364\u0365\7\u0082\2\2\u0365") - buf.write("\u0366\5\36\20\2\u0366\u0367\7\u0083\2\2\u0367\u0393\3") - buf.write("\2\2\2\u0368\u0369\7f\2\2\u0369\u036a\7\u0082\2\2\u036a") - buf.write("\u036b\5\36\20\2\u036b\u036c\7\u0083\2\2\u036c\u0393\3") - buf.write("\2\2\2\u036d\u0372\7\37\2\2\u036e\u036f\7\u0082\2\2\u036f") - buf.write("\u0370\5\6\4\2\u0370\u0371\7\u0083\2\2\u0371\u0373\3\2") - buf.write("\2\2\u0372\u036e\3\2\2\2\u0372\u0373\3\2\2\2\u0373\u0393") - buf.write("\3\2\2\2\u0374\u0376\7\20\2\2\u0375\u0374\3\2\2\2\u0375") - buf.write("\u0376\3\2\2\2\u0376\u0377\3\2\2\2\u0377\u037d\7 \2\2") - buf.write("\u0378\u037a\7\u0082\2\2\u0379\u037b\5|?\2\u037a\u0379") - buf.write("\3\2\2\2\u037a\u037b\3\2\2\2\u037b\u037c\3\2\2\2\u037c") - buf.write("\u037e\7\u0083\2\2\u037d\u0378\3\2\2\2\u037d\u037e\3\2") - buf.write("\2\2\u037e\u037f\3\2\2\2\u037f\u0393\5\u00acW\2\u0380") - buf.write("\u0381\7Y\2\2\u0381\u0382\7\u0082\2\2\u0382\u0383\5\6") - buf.write("\4\2\u0383\u0384\7\u0083\2\2\u0384\u0393\3\2\2\2\u0385") - buf.write("\u0386\7A\2\2\u0386\u038c\7\u0082\2\2\u0387\u0388\5\u01b4") - buf.write("\u00db\2\u0388\u0389\7\u0084\2\2\u0389\u038b\3\2\2\2\u038a") - buf.write("\u0387\3\2\2\2\u038b\u038e\3\2\2\2\u038c\u038a\3\2\2\2") - buf.write("\u038c\u038d\3\2\2\2\u038d\u038f\3\2\2\2\u038e\u038c\3") - buf.write("\2\2\2\u038f\u0390\5\u01b4\u00db\2\u0390\u0391\7\u0083") - buf.write("\2\2\u0391\u0393\3\2\2\2\u0392\u0319\3\2\2\2\u0392\u031a") - buf.write("\3\2\2\2\u0392\u031e\3\2\2\2\u0392\u0322\3\2\2\2\u0392") - buf.write("\u0323\3\2\2\2\u0392\u0324\3\2\2\2\u0392\u0325\3\2\2\2") - buf.write("\u0392\u0326\3\2\2\2\u0392\u0332\3\2\2\2\u0392\u0351\3") - buf.write("\2\2\2\u0392\u035b\3\2\2\2\u0392\u0363\3\2\2\2\u0392\u0368") - buf.write("\3\2\2\2\u0392\u036d\3\2\2\2\u0392\u0375\3\2\2\2\u0392") - buf.write("\u0380\3\2\2\2\u0392\u0385\3\2\2\2\u0393K\3\2\2\2\u0394") - buf.write("\u0397\5\36\20\2\u0395\u0397\5N(\2\u0396\u0394\3\2\2\2") - buf.write("\u0396\u0395\3\2\2\2\u0397M\3\2\2\2\u0398\u0399\7`\2\2") - buf.write("\u0399\u039a\5\36\20\2\u039aO\3\2\2\2\u039b\u039d\7\u0095") - buf.write("\2\2\u039c\u039b\3\2\2\2\u039c\u039d\3\2\2\2\u039d\u039e") - buf.write("\3\2\2\2\u039e\u039f\7\u0084\2\2\u039f\u03a1\5\u01b4\u00db") - buf.write("\2\u03a0\u03a2\5\30\r\2\u03a1\u03a0\3\2\2\2\u03a1\u03a2") - buf.write("\3\2\2\2\u03a2Q\3\2\2\2\u03a3\u03a5\7\u0095\2\2\u03a4") - buf.write("\u03a3\3\2\2\2\u03a4\u03a5\3\2\2\2\u03a5\u03a6\3\2\2\2") - buf.write("\u03a6\u03a7\7\u0080\2\2\u03a7\u03ac\5T+\2\u03a8\u03a9") - buf.write("\7\u0085\2\2\u03a9\u03ab\5T+\2\u03aa\u03a8\3\2\2\2\u03ab") - buf.write("\u03ae\3\2\2\2\u03ac\u03aa\3\2\2\2\u03ac\u03ad\3\2\2\2") - buf.write("\u03ad\u03af\3\2\2\2\u03ae\u03ac\3\2\2\2\u03af\u03b0\7") - buf.write("\u0081\2\2\u03b0S\3\2\2\2\u03b1\u03b2\5\u01b4\u00db\2") - buf.write("\u03b2\u03b3\7\u0086\2\2\u03b3\u03b5\3\2\2\2\u03b4\u03b1") - buf.write("\3\2\2\2\u03b4\u03b5\3\2\2\2\u03b5\u03b6\3\2\2\2\u03b6") - buf.write("\u03b7\5\36\20\2\u03b7U\3\2\2\2\u03b8\u03b9\t\t\2\2\u03b9") - buf.write("W\3\2\2\2\u03ba\u03bf\5\36\20\2\u03bb\u03bc\7\u0085\2") - buf.write("\2\u03bc\u03be\5\36\20\2\u03bd\u03bb\3\2\2\2\u03be\u03c1") - buf.write("\3\2\2\2\u03bf\u03bd\3\2\2\2\u03bf\u03c0\3\2\2\2\u03c0") - buf.write("Y\3\2\2\2\u03c1\u03bf\3\2\2\2\u03c2\u03c5\5\\/\2\u03c3") - buf.write("\u03c5\5d\63\2\u03c4\u03c2\3\2\2\2\u03c4\u03c3\3\2\2\2") - buf.write("\u03c5[\3\2\2\2\u03c6\u03cb\7~\2\2\u03c7\u03c9\5^\60\2") - buf.write("\u03c8\u03ca\7\u0085\2\2\u03c9\u03c8\3\2\2\2\u03c9\u03ca") - buf.write("\3\2\2\2\u03ca\u03cc\3\2\2\2\u03cb\u03c7\3\2\2\2\u03cb") - buf.write("\u03cc\3\2\2\2\u03cc\u03cd\3\2\2\2\u03cd\u03ce\7\177\2") - buf.write("\2\u03ce]\3\2\2\2\u03cf\u03d4\5`\61\2\u03d0\u03d1\7\u0085") - buf.write("\2\2\u03d1\u03d3\5`\61\2\u03d2\u03d0\3\2\2\2\u03d3\u03d6") - buf.write("\3\2\2\2\u03d4\u03d2\3\2\2\2\u03d4\u03d5\3\2\2\2\u03d5") - buf.write("_\3\2\2\2\u03d6\u03d4\3\2\2\2\u03d7\u03dd\5\u01b4\u00db") - buf.write("\2\u03d8\u03d9\7\u0080\2\2\u03d9\u03da\5\36\20\2\u03da") - buf.write("\u03db\7\u0081\2\2\u03db\u03dd\3\2\2\2\u03dc\u03d7\3\2") - buf.write("\2\2\u03dc\u03d8\3\2\2\2\u03dd\u03de\3\2\2\2\u03de\u03df") - buf.write("\7\u0092\2\2\u03df\u03e0\5b\62\2\u03e0a\3\2\2\2\u03e1") - buf.write("\u03e4\5\36\20\2\u03e2\u03e4\5Z.\2\u03e3\u03e1\3\2\2\2") - buf.write("\u03e3\u03e2\3\2\2\2\u03e4c\3\2\2\2\u03e5\u03e6\7~\2\2") - buf.write("\u03e6\u03eb\5f\64\2\u03e7\u03e8\7\u0085\2\2\u03e8\u03ea") - buf.write("\5f\64\2\u03e9\u03e7\3\2\2\2\u03ea\u03ed\3\2\2\2\u03eb") - buf.write("\u03e9\3\2\2\2\u03eb\u03ec\3\2\2\2\u03ec\u03ef\3\2\2\2") - buf.write("\u03ed\u03eb\3\2\2\2\u03ee\u03f0\7\u0085\2\2\u03ef\u03ee") - buf.write("\3\2\2\2\u03ef\u03f0\3\2\2\2\u03f0\u03f1\3\2\2\2\u03f1") - buf.write("\u03f2\7\177\2\2\u03f2e\3\2\2\2\u03f3\u03f9\5 \21\2\u03f4") - buf.write("\u03f5\7~\2\2\u03f5\u03f6\5X-\2\u03f6\u03f7\7\177\2\2") - buf.write("\u03f7\u03f9\3\2\2\2\u03f8\u03f3\3\2\2\2\u03f8\u03f4\3") - buf.write("\2\2\2\u03f9g\3\2\2\2\u03fa\u03ff\7~\2\2\u03fb\u03fd\5") - buf.write("j\66\2\u03fc\u03fe\7\u0085\2\2\u03fd\u03fc\3\2\2\2\u03fd") - buf.write("\u03fe\3\2\2\2\u03fe\u0400\3\2\2\2\u03ff\u03fb\3\2\2\2") - buf.write("\u03ff\u0400\3\2\2\2\u0400\u0401\3\2\2\2\u0401\u0402\7") - buf.write("\177\2\2\u0402i\3\2\2\2\u0403\u0408\5l\67\2\u0404\u0405") - buf.write("\7\u0085\2\2\u0405\u0407\5l\67\2\u0406\u0404\3\2\2\2\u0407") - buf.write("\u040a\3\2\2\2\u0408\u0406\3\2\2\2\u0408\u0409\3\2\2\2") - buf.write("\u0409k\3\2\2\2\u040a\u0408\3\2\2\2\u040b\u0411\5H%\2") - buf.write("\u040c\u040d\5\u01b4\u00db\2\u040d\u040e\7\u0092\2\2\u040e") - buf.write("\u040f\5\36\20\2\u040f\u0411\3\2\2\2\u0410\u040b\3\2\2") - buf.write("\2\u0410\u040c\3\2\2\2\u0411m\3\2\2\2\u0412\u041b\5\u01b4") - buf.write("\u00db\2\u0413\u0415\5p9\2\u0414\u0413\3\2\2\2\u0414\u0415") - buf.write("\3\2\2\2\u0415\u041c\3\2\2\2\u0416\u0417\7\u0096\2\2\u0417") - buf.write("\u0419\5\u01b4\u00db\2\u0418\u041a\5p9\2\u0419\u0418\3") - buf.write("\2\2\2\u0419\u041a\3\2\2\2\u041a\u041c\3\2\2\2\u041b\u0414") - buf.write("\3\2\2\2\u041b\u0416\3\2\2\2\u041c\u0424\3\2\2\2\u041d") - buf.write("\u041e\7\u0084\2\2\u041e\u0420\5\u01b4\u00db\2\u041f\u0421") - buf.write("\5p9\2\u0420\u041f\3\2\2\2\u0420\u0421\3\2\2\2\u0421\u0423") - buf.write("\3\2\2\2\u0422\u041d\3\2\2\2\u0423\u0426\3\2\2\2\u0424") - buf.write("\u0422\3\2\2\2\u0424\u0425\3\2\2\2\u0425o\3\2\2\2\u0426") - buf.write("\u0424\3\2\2\2\u0427\u042b\7\u0093\2\2\u0428\u042a\7\u0085") - buf.write("\2\2\u0429\u0428\3\2\2\2\u042a\u042d\3\2\2\2\u042b\u0429") - buf.write("\3\2\2\2\u042b\u042c\3\2\2\2\u042c\u042e\3\2\2\2\u042d") - buf.write("\u042b\3\2\2\2\u042e\u042f\7\u0094\2\2\u042fq\3\2\2\2") - buf.write("\u0430\u0435\5\b\5\2\u0431\u0434\5\u0144\u00a3\2\u0432") - buf.write("\u0434\7\u008a\2\2\u0433\u0431\3\2\2\2\u0433\u0432\3\2") - buf.write("\2\2\u0434\u0437\3\2\2\2\u0435\u0433\3\2\2\2\u0435\u0436") - buf.write("\3\2\2\2\u0436\u0439\3\2\2\2\u0437\u0435\3\2\2\2\u0438") - buf.write("\u043a\7\u0095\2\2\u0439\u0438\3\2\2\2\u0439\u043a\3\2") - buf.write("\2\2\u043a\u043c\3\2\2\2\u043b\u043d\5t;\2\u043c\u043b") - buf.write("\3\2\2\2\u043c\u043d\3\2\2\2\u043d\u043f\3\2\2\2\u043e") - buf.write("\u0440\5\u01b4\u00db\2\u043f\u043e\3\2\2\2\u043f\u0440") - buf.write("\3\2\2\2\u0440s\3\2\2\2\u0441\u0442\7~\2\2\u0442\u0447") - buf.write("\5v<\2\u0443\u0444\7\u0085\2\2\u0444\u0446\5v<\2\u0445") - buf.write("\u0443\3\2\2\2\u0446\u0449\3\2\2\2\u0447\u0445\3\2\2\2") - buf.write("\u0447\u0448\3\2\2\2\u0448\u044a\3\2\2\2\u0449\u0447\3") - buf.write("\2\2\2\u044a\u044b\7\177\2\2\u044bu\3\2\2\2\u044c\u044d") - buf.write("\5\u01b4\u00db\2\u044d\u044e\7\u0086\2\2\u044e\u044f\5") - buf.write("\36\20\2\u044fw\3\2\2\2\u0450\u0452\7\20\2\2\u0451\u0450") - buf.write("\3\2\2\2\u0451\u0452\3\2\2\2\u0452\u0453\3\2\2\2\u0453") - buf.write("\u0454\5z>\2\u0454\u0455\5\u0178\u00bd\2\u0455\u0456\5") - buf.write("\u0082B\2\u0456y\3\2\2\2\u0457\u0458\7\u0082\2\2\u0458") - buf.write("\u0463\7\u0083\2\2\u0459\u045a\7\u0082\2\2\u045a\u045b") - buf.write("\5|?\2\u045b\u045c\7\u0083\2\2\u045c\u0463\3\2\2\2\u045d") - buf.write("\u045e\7\u0082\2\2\u045e\u045f\5\u0080A\2\u045f\u0460") - buf.write("\7\u0083\2\2\u0460\u0463\3\2\2\2\u0461\u0463\5\u01b4\u00db") - buf.write("\2\u0462\u0457\3\2\2\2\u0462\u0459\3\2\2\2\u0462\u045d") - buf.write("\3\2\2\2\u0462\u0461\3\2\2\2\u0463{\3\2\2\2\u0464\u0469") - buf.write("\5~@\2\u0465\u0466\7\u0085\2\2\u0466\u0468\5~@\2\u0467") - buf.write("\u0465\3\2\2\2\u0468\u046b\3\2\2\2\u0469\u0467\3\2\2\2") - buf.write("\u0469\u046a\3\2\2\2\u046a}\3\2\2\2\u046b\u0469\3\2\2") - buf.write("\2\u046c\u046e\t\4\2\2\u046d\u046c\3\2\2\2\u046d\u046e") - buf.write("\3\2\2\2\u046e\u046f\3\2\2\2\u046f\u0470\5\6\4\2\u0470") - buf.write("\u0471\5\u01b4\u00db\2\u0471\177\3\2\2\2\u0472\u0477\5") - buf.write("\u01b4\u00db\2\u0473\u0474\7\u0085\2\2\u0474\u0476\5\u01b4") - buf.write("\u00db\2\u0475\u0473\3\2\2\2\u0476\u0479\3\2\2\2\u0477") - buf.write("\u0475\3\2\2\2\u0477\u0478\3\2\2\2\u0478\u0081\3\2\2\2") - buf.write("\u0479\u0477\3\2\2\2\u047a\u047d\5L\'\2\u047b\u047d\5") - buf.write("\u00acW\2\u047c\u047a\3\2\2\2\u047c\u047b\3\2\2\2\u047d") - buf.write("\u0083\3\2\2\2\u047e\u047f\5\u0086D\2\u047f\u0480\5\u0088") - buf.write("E\2\u0480\u0085\3\2\2\2\u0481\u0483\7\61\2\2\u0482\u0484") - buf.write("\5\6\4\2\u0483\u0482\3\2\2\2\u0483\u0484\3\2\2\2\u0484") - buf.write("\u0485\3\2\2\2\u0485\u0486\5\u01b4\u00db\2\u0486\u0487") - buf.write("\7\67\2\2\u0487\u0488\5\36\20\2\u0488\u0087\3\2\2\2\u0489") - buf.write("\u048b\5\u008aF\2\u048a\u0489\3\2\2\2\u048b\u048e\3\2") - buf.write("\2\2\u048c\u048a\3\2\2\2\u048c\u048d\3\2\2\2\u048d\u048f") - buf.write("\3\2\2\2\u048e\u048c\3\2\2\2\u048f\u0491\5\u0096L\2\u0490") - buf.write("\u0492\5\u0098M\2\u0491\u0490\3\2\2\2\u0491\u0492\3\2") - buf.write("\2\2\u0492\u0089\3\2\2\2\u0493\u0499\5\u0086D\2\u0494") - buf.write("\u0499\5\u008cG\2\u0495\u0499\5\u008eH\2\u0496\u0499\5") - buf.write("\u0090I\2\u0497\u0499\5\u0092J\2\u0498\u0493\3\2\2\2\u0498") - buf.write("\u0494\3\2\2\2\u0498\u0495\3\2\2\2\u0498\u0496\3\2\2\2") - buf.write("\u0498\u0497\3\2\2\2\u0499\u008b\3\2\2\2\u049a\u049b\7") - buf.write(">\2\2\u049b\u049c\5\u01b4\u00db\2\u049c\u049d\7\u0092") - buf.write("\2\2\u049d\u049e\5\36\20\2\u049e\u008d\3\2\2\2\u049f\u04a0") - buf.write("\7p\2\2\u04a0\u04a1\5\36\20\2\u04a1\u008f\3\2\2\2\u04a2") - buf.write("\u04a4\7=\2\2\u04a3\u04a5\5\6\4\2\u04a4\u04a3\3\2\2\2") - buf.write("\u04a4\u04a5\3\2\2\2\u04a5\u04a6\3\2\2\2\u04a6\u04a7\5") - buf.write("\u01b4\u00db\2\u04a7\u04a8\7\67\2\2\u04a8\u04a9\5\36\20") - buf.write("\2\u04a9\u04aa\7F\2\2\u04aa\u04ab\5\36\20\2\u04ab\u04ac") - buf.write("\7\'\2\2\u04ac\u04af\5\36\20\2\u04ad\u04ae\7;\2\2\u04ae") - buf.write("\u04b0\5\u01b4\u00db\2\u04af\u04ad\3\2\2\2\u04af\u04b0") - buf.write("\3\2\2\2\u04b0\u0091\3\2\2\2\u04b1\u04b2\7H\2\2\u04b2") - buf.write("\u04b7\5\u0094K\2\u04b3\u04b4\7\u0085\2\2\u04b4\u04b6") - buf.write("\5\u0094K\2\u04b5\u04b3\3\2\2\2\u04b6\u04b9\3\2\2\2\u04b7") - buf.write("\u04b5\3\2\2\2\u04b7\u04b8\3\2\2\2\u04b8\u0093\3\2\2\2") - buf.write("\u04b9\u04b7\3\2\2\2\u04ba\u04bc\5\36\20\2\u04bb\u04bd") - buf.write("\t\n\2\2\u04bc\u04bb\3\2\2\2\u04bc\u04bd\3\2\2\2\u04bd") - buf.write("\u0095\3\2\2\2\u04be\u04bf\7V\2\2\u04bf\u04c6\5\36\20") - buf.write("\2\u04c0\u04c1\7\64\2\2\u04c1\u04c2\5\36\20\2\u04c2\u04c3") - buf.write("\7\25\2\2\u04c3\u04c4\5\36\20\2\u04c4\u04c6\3\2\2\2\u04c5") - buf.write("\u04be\3\2\2\2\u04c5\u04c0\3\2\2\2\u04c6\u0097\3\2\2\2") - buf.write("\u04c7\u04c8\7;\2\2\u04c8\u04c9\5\u01b4\u00db\2\u04c9") - buf.write("\u04ca\5\u0088E\2\u04ca\u0099\3\2\2\2\u04cb\u04cf\5\u00a6") - buf.write("T\2\u04cc\u04cf\5\u009cO\2\u04cd\u04cf\5\u00a8U\2\u04ce") - buf.write("\u04cb\3\2\2\2\u04ce\u04cc\3\2\2\2\u04ce\u04cd\3\2\2\2") - buf.write("\u04cf\u009b\3\2\2\2\u04d0\u04d1\5\u00aeX\2\u04d1\u04d2") - buf.write("\7\u0087\2\2\u04d2\u04d8\3\2\2\2\u04d3\u04d4\5\u00b6\\") - buf.write("\2\u04d4\u04d5\7\u0087\2\2\u04d5\u04d8\3\2\2\2\u04d6\u04d8") - buf.write("\5\u009eP\2\u04d7\u04d0\3\2\2\2\u04d7\u04d3\3\2\2\2\u04d7") - buf.write("\u04d6\3\2\2\2\u04d8\u009d\3\2\2\2\u04d9\u04da\5\u00a0") - buf.write("Q\2\u04da\u04db\5\u00a4S\2\u04db\u009f\3\2\2\2\u04dc\u04de") - buf.write("\5\u00a2R\2\u04dd\u04dc\3\2\2\2\u04dd\u04de\3\2\2\2\u04de") - buf.write("\u04df\3\2\2\2\u04df\u04e0\5\u0114\u008b\2\u04e0\u04e2") - buf.write("\5\u01b4\u00db\2\u04e1\u04e3\5\u00e8u\2\u04e2\u04e1\3") - buf.write("\2\2\2\u04e2\u04e3\3\2\2\2\u04e3\u04e4\3\2\2\2\u04e4\u04e6") - buf.write("\7\u0082\2\2\u04e5\u04e7\5\u011a\u008e\2\u04e6\u04e5\3") - buf.write("\2\2\2\u04e6\u04e7\3\2\2\2\u04e7\u04e8\3\2\2\2\u04e8\u04ea") - buf.write("\7\u0083\2\2\u04e9\u04eb\5\u00f0y\2\u04ea\u04e9\3\2\2") - buf.write("\2\u04ea\u04eb\3\2\2\2\u04eb\u00a1\3\2\2\2\u04ec\u04ee") - buf.write("\t\13\2\2\u04ed\u04ef\7[\2\2\u04ee\u04ed\3\2\2\2\u04ee") - buf.write("\u04ef\3\2\2\2\u04ef\u04f3\3\2\2\2\u04f0\u04f1\7[\2\2") - buf.write("\u04f1\u04f3\t\13\2\2\u04f2\u04ec\3\2\2\2\u04f2\u04f0") - buf.write("\3\2\2\2\u04f3\u00a3\3\2\2\2\u04f4\u04fa\5\u00acW\2\u04f5") - buf.write("\u04f6\5\u0178\u00bd\2\u04f6\u04f7\5L\'\2\u04f7\u04f8") - buf.write("\7\u0087\2\2\u04f8\u04fa\3\2\2\2\u04f9\u04f4\3\2\2\2\u04f9") - buf.write("\u04f5\3\2\2\2\u04fa\u00a5\3\2\2\2\u04fb\u04fc\5\u01b4") - buf.write("\u00db\2\u04fc\u04fd\7\u0086\2\2\u04fd\u04fe\5\u009aN") - buf.write("\2\u04fe\u00a7\3\2\2\2\u04ff\u0502\5\u00acW\2\u0500\u0502") - buf.write("\5\u00aaV\2\u0501\u04ff\3\2\2\2\u0501\u0500\3\2\2\2\u0502") - buf.write("\u00a9\3\2\2\2\u0503\u0586\7\u0087\2\2\u0504\u0505\5\36") - buf.write("\20\2\u0505\u0506\7\u0087\2\2\u0506\u0586\3\2\2\2\u0507") - buf.write("\u0508\7\65\2\2\u0508\u0509\7\u0082\2\2\u0509\u050a\5") - buf.write("\36\20\2\u050a\u050b\7\u0083\2\2\u050b\u050e\5\u00b8]") - buf.write("\2\u050c\u050d\7%\2\2\u050d\u050f\5\u00b8]\2\u050e\u050c") - buf.write("\3\2\2\2\u050e\u050f\3\2\2\2\u050f\u0586\3\2\2\2\u0510") - buf.write("\u0511\7^\2\2\u0511\u0512\7\u0082\2\2\u0512\u0513\5\36") - buf.write("\20\2\u0513\u0514\7\u0083\2\2\u0514\u0518\7~\2\2\u0515") - buf.write("\u0517\5\u00ba^\2\u0516\u0515\3\2\2\2\u0517\u051a\3\2") - buf.write("\2\2\u0518\u0516\3\2\2\2\u0518\u0519\3\2\2\2\u0519\u051b") - buf.write("\3\2\2\2\u051a\u0518\3\2\2\2\u051b\u051c\7\177\2\2\u051c") - buf.write("\u0586\3\2\2\2\u051d\u051e\7q\2\2\u051e\u051f\7\u0082") - buf.write("\2\2\u051f\u0520\5\36\20\2\u0520\u0521\7\u0083\2\2\u0521") - buf.write("\u0522\5\u00a8U\2\u0522\u0586\3\2\2\2\u0523\u0524\7\"") - buf.write("\2\2\u0524\u0525\5\u00a8U\2\u0525\u0526\7q\2\2\u0526\u0527") - buf.write("\7\u0082\2\2\u0527\u0528\5\36\20\2\u0528\u0529\7\u0083") - buf.write("\2\2\u0529\u052a\7\u0087\2\2\u052a\u0586\3\2\2\2\u052b") - buf.write("\u052c\7/\2\2\u052c\u052e\7\u0082\2\2\u052d\u052f\5\u00c2") - buf.write("b\2\u052e\u052d\3\2\2\2\u052e\u052f\3\2\2\2\u052f\u0530") - buf.write("\3\2\2\2\u0530\u0532\7\u0087\2\2\u0531\u0533\5\36\20\2") - buf.write("\u0532\u0531\3\2\2\2\u0532\u0533\3\2\2\2\u0533\u0534\3") - buf.write("\2\2\2\u0534\u0536\7\u0087\2\2\u0535\u0537\5\u00c4c\2") - buf.write("\u0536\u0535\3\2\2\2\u0536\u0537\3\2\2\2\u0537\u0538\3") - buf.write("\2\2\2\u0538\u0539\7\u0083\2\2\u0539\u0586\5\u00a8U\2") - buf.write("\u053a\u053c\7\21\2\2\u053b\u053a\3\2\2\2\u053b\u053c") - buf.write("\3\2\2\2\u053c\u053d\3\2\2\2\u053d\u053e\7\60\2\2\u053e") - buf.write("\u053f\7\u0082\2\2\u053f\u0540\5\u00b0Y\2\u0540\u0541") - buf.write("\5\u01b4\u00db\2\u0541\u0542\7\67\2\2\u0542\u0543\5\36") - buf.write("\20\2\u0543\u0544\7\u0083\2\2\u0544\u0545\5\u00a8U\2\u0545") - buf.write("\u0586\3\2\2\2\u0546\u0547\7\24\2\2\u0547\u0586\7\u0087") - buf.write("\2\2\u0548\u0549\7\35\2\2\u0549\u0586\7\u0087\2\2\u054a") - buf.write("\u054f\7\63\2\2\u054b\u0550\5\u01b4\u00db\2\u054c\u054d") - buf.write("\7\27\2\2\u054d\u0550\5\36\20\2\u054e\u0550\7\37\2\2\u054f") - buf.write("\u054b\3\2\2\2\u054f\u054c\3\2\2\2\u054f\u054e\3\2\2\2") - buf.write("\u0550\u0551\3\2\2\2\u0551\u0586\7\u0087\2\2\u0552\u0554") - buf.write("\7S\2\2\u0553\u0555\5\36\20\2\u0554\u0553\3\2\2\2\u0554") - buf.write("\u0555\3\2\2\2\u0555\u0556\3\2\2\2\u0556\u0586\7\u0087") - buf.write("\2\2\u0557\u0559\7`\2\2\u0558\u055a\5\36\20\2\u0559\u0558") - buf.write("\3\2\2\2\u0559\u055a\3\2\2\2\u055a\u055b\3\2\2\2\u055b") - buf.write("\u0586\7\u0087\2\2\u055c\u055d\7b\2\2\u055d\u0563\5\u00ac") - buf.write("W\2\u055e\u0560\5\u00c6d\2\u055f\u0561\5\u00ceh\2\u0560") - buf.write("\u055f\3\2\2\2\u0560\u0561\3\2\2\2\u0561\u0564\3\2\2\2") - buf.write("\u0562\u0564\5\u00ceh\2\u0563\u055e\3\2\2\2\u0563\u0562") - buf.write("\3\2\2\2\u0564\u0586\3\2\2\2\u0565\u0566\7\32\2\2\u0566") - buf.write("\u0586\5\u00acW\2\u0567\u0568\7f\2\2\u0568\u0586\5\u00ac") - buf.write("W\2\u0569\u056a\7?\2\2\u056a\u056b\7\u0082\2\2\u056b\u056c") - buf.write("\5\36\20\2\u056c\u056d\7\u0083\2\2\u056d\u056e\5\u00a8") - buf.write("U\2\u056e\u0586\3\2\2\2\u056f\u0570\7j\2\2\u0570\u0571") - buf.write("\7\u0082\2\2\u0571\u0572\5\u00d0i\2\u0572\u0573\7\u0083") - buf.write("\2\2\u0573\u0574\5\u00a8U\2\u0574\u0586\3\2\2\2\u0575") - buf.write("\u0579\7r\2\2\u0576\u0577\7S\2\2\u0577\u057a\5\36\20\2") - buf.write("\u0578\u057a\7\24\2\2\u0579\u0576\3\2\2\2\u0579\u0578") - buf.write("\3\2\2\2\u057a\u057b\3\2\2\2\u057b\u0586\7\u0087\2\2\u057c") - buf.write("\u057d\7h\2\2\u057d\u0586\5\u00acW\2\u057e\u057f\7-\2") - buf.write("\2\u057f\u0580\7\u0082\2\2\u0580\u0581\5\u016c\u00b7\2") - buf.write("\u0581\u0582\5\u016e\u00b8\2\u0582\u0583\7\u0083\2\2\u0583") - buf.write("\u0584\5\u00a8U\2\u0584\u0586\3\2\2\2\u0585\u0503\3\2") - buf.write("\2\2\u0585\u0504\3\2\2\2\u0585\u0507\3\2\2\2\u0585\u0510") - buf.write("\3\2\2\2\u0585\u051d\3\2\2\2\u0585\u0523\3\2\2\2\u0585") - buf.write("\u052b\3\2\2\2\u0585\u053b\3\2\2\2\u0585\u0546\3\2\2\2") - buf.write("\u0585\u0548\3\2\2\2\u0585\u054a\3\2\2\2\u0585\u0552\3") - buf.write("\2\2\2\u0585\u0557\3\2\2\2\u0585\u055c\3\2\2\2\u0585\u0565") - buf.write("\3\2\2\2\u0585\u0567\3\2\2\2\u0585\u0569\3\2\2\2\u0585") - buf.write("\u056f\3\2\2\2\u0585\u0575\3\2\2\2\u0585\u057c\3\2\2\2") - buf.write("\u0585\u057e\3\2\2\2\u0586\u00ab\3\2\2\2\u0587\u0589\7") - buf.write("~\2\2\u0588\u058a\5\u00c0a\2\u0589\u0588\3\2\2\2\u0589") - buf.write("\u058a\3\2\2\2\u058a\u058b\3\2\2\2\u058b\u058c\7\177\2") - buf.write("\2\u058c\u00ad\3\2\2\2\u058d\u0592\7j\2\2\u058e\u0592") - buf.write("\7Q\2\2\u058f\u0590\7Q\2\2\u0590\u0592\7P\2\2\u0591\u058d") - buf.write("\3\2\2\2\u0591\u058e\3\2\2\2\u0591\u058f\3\2\2\2\u0591") - buf.write("\u0592\3\2\2\2\u0592\u0593\3\2\2\2\u0593\u0594\5\u00b0") - buf.write("Y\2\u0594\u0599\5\u00b2Z\2\u0595\u0596\7\u0085\2\2\u0596") - buf.write("\u0598\5\u00b2Z\2\u0597\u0595\3\2\2\2\u0598\u059b\3\2") - buf.write("\2\2\u0599\u0597\3\2\2\2\u0599\u059a\3\2\2\2\u059a\u05a1") - buf.write("\3\2\2\2\u059b\u0599\3\2\2\2\u059c\u059d\7-\2\2\u059d") - buf.write("\u059e\5\u016c\u00b7\2\u059e\u059f\5\u016e\u00b8\2\u059f") - buf.write("\u05a1\3\2\2\2\u05a0\u0591\3\2\2\2\u05a0\u059c\3\2\2\2") - buf.write("\u05a1\u00af\3\2\2\2\u05a2\u05a5\7k\2\2\u05a3\u05a5\5") - buf.write("\6\4\2\u05a4\u05a2\3\2\2\2\u05a4\u05a3\3\2\2\2\u05a5\u00b1") - buf.write("\3\2\2\2\u05a6\u05ac\5\u01b4\u00db\2\u05a7\u05a9\7\u0092") - buf.write("\2\2\u05a8\u05aa\7Q\2\2\u05a9\u05a8\3\2\2\2\u05a9\u05aa") - buf.write("\3\2\2\2\u05aa\u05ab\3\2\2\2\u05ab\u05ad\5\u00b4[\2\u05ac") - buf.write("\u05a7\3\2\2\2\u05ac\u05ad\3\2\2\2\u05ad\u00b3\3\2\2\2") - buf.write("\u05ae\u05b2\5\36\20\2\u05af\u05b2\5\u0146\u00a4\2\u05b0") - buf.write("\u05b2\5\u0176\u00bc\2\u05b1\u05ae\3\2\2\2\u05b1\u05af") - buf.write("\3\2\2\2\u05b1\u05b0\3\2\2\2\u05b2\u00b5\3\2\2\2\u05b3") - buf.write("\u05b4\7\34\2\2\u05b4\u05b5\5\6\4\2\u05b5\u05b6\5\u010a") - buf.write("\u0086\2\u05b6\u00b7\3\2\2\2\u05b7\u05ba\5\u00acW\2\u05b8") - buf.write("\u05ba\5\u00aaV\2\u05b9\u05b7\3\2\2\2\u05b9\u05b8\3\2") - buf.write("\2\2\u05ba\u00b9\3\2\2\2\u05bb\u05bd\5\u00bc_\2\u05bc") - buf.write("\u05bb\3\2\2\2\u05bd\u05be\3\2\2\2\u05be\u05bc\3\2\2\2") - buf.write("\u05be\u05bf\3\2\2\2\u05bf\u05c0\3\2\2\2\u05c0\u05c1\5") - buf.write("\u00c0a\2\u05c1\u00bb\3\2\2\2\u05c2\u05c3\7\27\2\2\u05c3") - buf.write("\u05c5\5\36\20\2\u05c4\u05c6\5\u00be`\2\u05c5\u05c4\3") - buf.write("\2\2\2\u05c5\u05c6\3\2\2\2\u05c6\u05c7\3\2\2\2\u05c7\u05c8") - buf.write("\7\u0086\2\2\u05c8\u05cc\3\2\2\2\u05c9\u05ca\7\37\2\2") - buf.write("\u05ca\u05cc\7\u0086\2\2\u05cb\u05c2\3\2\2\2\u05cb\u05c9") - buf.write("\3\2\2\2\u05cc\u00bd\3\2\2\2\u05cd\u05ce\7o\2\2\u05ce") - buf.write("\u05cf\5\36\20\2\u05cf\u00bf\3\2\2\2\u05d0\u05d2\5\u009a") - buf.write("N\2\u05d1\u05d0\3\2\2\2\u05d2\u05d3\3\2\2\2\u05d3\u05d1") - buf.write("\3\2\2\2\u05d3\u05d4\3\2\2\2\u05d4\u00c1\3\2\2\2\u05d5") - buf.write("\u05df\5\u00aeX\2\u05d6\u05db\5\36\20\2\u05d7\u05d8\7") - buf.write("\u0085\2\2\u05d8\u05da\5\36\20\2\u05d9\u05d7\3\2\2\2\u05da") - buf.write("\u05dd\3\2\2\2\u05db\u05d9\3\2\2\2\u05db\u05dc\3\2\2\2") - buf.write("\u05dc\u05df\3\2\2\2\u05dd\u05db\3\2\2\2\u05de\u05d5\3") - buf.write("\2\2\2\u05de\u05d6\3\2\2\2\u05df\u00c3\3\2\2\2\u05e0\u05e5") - buf.write("\5\36\20\2\u05e1\u05e2\7\u0085\2\2\u05e2\u05e4\5\36\20") - buf.write("\2\u05e3\u05e1\3\2\2\2\u05e4\u05e7\3\2\2\2\u05e5\u05e3") - buf.write("\3\2\2\2\u05e5\u05e6\3\2\2\2\u05e6\u00c5\3\2\2\2\u05e7") - buf.write("\u05e5\3\2\2\2\u05e8\u05ec\5\u00c8e\2\u05e9\u05eb\5\u00c8") - buf.write("e\2\u05ea\u05e9\3\2\2\2\u05eb\u05ee\3\2\2\2\u05ec\u05ea") - buf.write("\3\2\2\2\u05ec\u05ed\3\2\2\2\u05ed\u05f0\3\2\2\2\u05ee") - buf.write("\u05ec\3\2\2\2\u05ef\u05f1\5\u00caf\2\u05f0\u05ef\3\2") - buf.write("\2\2\u05f0\u05f1\3\2\2\2\u05f1\u05f4\3\2\2\2\u05f2\u05f4") - buf.write("\5\u00caf\2\u05f3\u05e8\3\2\2\2\u05f3\u05f2\3\2\2\2\u05f4") - buf.write("\u00c7\3\2\2\2\u05f5\u05f6\7\30\2\2\u05f6\u05f7\7\u0082") - buf.write("\2\2\u05f7\u05f9\5\26\f\2\u05f8\u05fa\5\u01b4\u00db\2") - buf.write("\u05f9\u05f8\3\2\2\2\u05f9\u05fa\3\2\2\2\u05fa\u05fb\3") - buf.write("\2\2\2\u05fb\u05fd\7\u0083\2\2\u05fc\u05fe\5\u00ccg\2") - buf.write("\u05fd\u05fc\3\2\2\2\u05fd\u05fe\3\2\2\2\u05fe\u05ff\3") - buf.write("\2\2\2\u05ff\u0600\5\u00acW\2\u0600\u00c9\3\2\2\2\u0601") - buf.write("\u0603\7\30\2\2\u0602\u0604\5\u00ccg\2\u0603\u0602\3\2") - buf.write("\2\2\u0603\u0604\3\2\2\2\u0604\u0605\3\2\2\2\u0605\u0606") - buf.write("\5\u00acW\2\u0606\u00cb\3\2\2\2\u0607\u0608\7o\2\2\u0608") - buf.write("\u0609\7\u0082\2\2\u0609\u060a\5\36\20\2\u060a\u060b\7") - buf.write("\u0083\2\2\u060b\u00cd\3\2\2\2\u060c\u060d\7,\2\2\u060d") - buf.write("\u060e\5\u00acW\2\u060e\u00cf\3\2\2\2\u060f\u0612\5\u00ae") - buf.write("X\2\u0610\u0612\5\36\20\2\u0611\u060f\3\2\2\2\u0611\u0610") - buf.write("\3\2\2\2\u0612\u00d1\3\2\2\2\u0613\u0614\7B\2\2\u0614") - buf.write("\u0615\5\u00d4k\2\u0615\u0617\5\u00d6l\2\u0616\u0618\7") - buf.write("\u0087\2\2\u0617\u0616\3\2\2\2\u0617\u0618\3\2\2\2\u0618") - buf.write("\u00d3\3\2\2\2\u0619\u061e\5\u01b4\u00db\2\u061a\u061b") - buf.write("\7\u0084\2\2\u061b\u061d\5\u01b4\u00db\2\u061c\u061a\3") - buf.write("\2\2\2\u061d\u0620\3\2\2\2\u061e\u061c\3\2\2\2\u061e\u061f") - buf.write("\3\2\2\2\u061f\u00d5\3\2\2\2\u0620\u061e\3\2\2\2\u0621") - buf.write("\u0623\7~\2\2\u0622\u0624\5\u00d8m\2\u0623\u0622\3\2\2") - buf.write("\2\u0623\u0624\3\2\2\2\u0624\u0626\3\2\2\2\u0625\u0627") - buf.write("\5\u00dco\2\u0626\u0625\3\2\2\2\u0626\u0627\3\2\2\2\u0627") - buf.write("\u0629\3\2\2\2\u0628\u062a\5\u00e0q\2\u0629\u0628\3\2") - buf.write("\2\2\u0629\u062a\3\2\2\2\u062a\u062b\3\2\2\2\u062b\u062c") - buf.write("\7\177\2\2\u062c\u00d7\3\2\2\2\u062d\u062f\5\u00dan\2") - buf.write("\u062e\u062d\3\2\2\2\u062f\u0630\3\2\2\2\u0630\u062e\3") - buf.write("\2\2\2\u0630\u0631\3\2\2\2\u0631\u00d9\3\2\2\2\u0632\u0633") - buf.write("\7*\2\2\u0633\u0634\7\f\2\2\u0634\u0635\5\u01b4\u00db") - buf.write("\2\u0635\u0636\7\u0087\2\2\u0636\u00db\3\2\2\2\u0637\u0639") - buf.write("\5\u00dep\2\u0638\u0637\3\2\2\2\u0639\u063a\3\2\2\2\u063a") - buf.write("\u0638\3\2\2\2\u063a\u063b\3\2\2\2\u063b\u00dd\3\2\2\2") - buf.write("\u063c\u063d\7j\2\2\u063d\u063e\5\u01b4\u00db\2\u063e") - buf.write("\u063f\7\u0092\2\2\u063f\u0640\5\4\3\2\u0640\u0641\7\u0087") - buf.write("\2\2\u0641\u064c\3\2\2\2\u0642\u0643\7j\2\2\u0643\u0644") - buf.write("\5\4\3\2\u0644\u0645\7\u0087\2\2\u0645\u064c\3\2\2\2\u0646") - buf.write("\u0647\7j\2\2\u0647\u0648\7[\2\2\u0648\u0649\5\4\3\2\u0649") - buf.write("\u064a\7\u0087\2\2\u064a\u064c\3\2\2\2\u064b\u063c\3\2") - buf.write("\2\2\u064b\u0642\3\2\2\2\u064b\u0646\3\2\2\2\u064c\u00df") - buf.write("\3\2\2\2\u064d\u064f\5\u00e2r\2\u064e\u064d\3\2\2\2\u064f") - buf.write("\u0650\3\2\2\2\u0650\u064e\3\2\2\2\u0650\u0651\3\2\2\2") - buf.write("\u0651\u00e1\3\2\2\2\u0652\u0655\5\u00d2j\2\u0653\u0655") - buf.write("\5\u00e4s\2\u0654\u0652\3\2\2\2\u0654\u0653\3\2\2\2\u0655") - buf.write("\u00e3\3\2\2\2\u0656\u0658\5\u0160\u00b1\2\u0657\u0656") - buf.write("\3\2\2\2\u0657\u0658\3\2\2\2\u0658\u065a\3\2\2\2\u0659") - buf.write("\u065b\5\u0102\u0082\2\u065a\u0659\3\2\2\2\u065a\u065b") - buf.write("\3\2\2\2\u065b\u0661\3\2\2\2\u065c\u0662\5\u0190\u00c9") - buf.write("\2\u065d\u0662\5\u0192\u00ca\2\u065e\u0662\5\u0194\u00cb") - buf.write("\2\u065f\u0662\5\u0196\u00cc\2\u0660\u0662\5\u0198\u00cd") - buf.write("\2\u0661\u065c\3\2\2\2\u0661\u065d\3\2\2\2\u0661\u065e") - buf.write("\3\2\2\2\u0661\u065f\3\2\2\2\u0661\u0660\3\2\2\2\u0662") - buf.write("\u00e5\3\2\2\2\u0663\u0664\5\u01b4\u00db\2\u0664\u0665") - buf.write("\7\u0096\2\2\u0665\u0667\5\u01b4\u00db\2\u0666\u0668\5") - buf.write("\30\r\2\u0667\u0666\3\2\2\2\u0667\u0668\3\2\2\2\u0668") - buf.write("\u00e7\3\2\2\2\u0669\u066a\7\u0093\2\2\u066a\u066f\5\u00ea") - buf.write("v\2\u066b\u066c\7\u0085\2\2\u066c\u066e\5\u00eav\2\u066d") - buf.write("\u066b\3\2\2\2\u066e\u0671\3\2\2\2\u066f\u066d\3\2\2\2") - buf.write("\u066f\u0670\3\2\2\2\u0670\u0672\3\2\2\2\u0671\u066f\3") - buf.write("\2\2\2\u0672\u0673\7\u0094\2\2\u0673\u00e9\3\2\2\2\u0674") - buf.write("\u0676\5\u0160\u00b1\2\u0675\u0674\3\2\2\2\u0675\u0676") - buf.write("\3\2\2\2\u0676\u0677\3\2\2\2\u0677\u0678\5\u01b4\u00db") - buf.write("\2\u0678\u00eb\3\2\2\2\u0679\u067a\7\u0086\2\2\u067a\u067f") - buf.write("\5\26\f\2\u067b\u067c\7\u0085\2\2\u067c\u067e\5\4\3\2") - buf.write("\u067d\u067b\3\2\2\2\u067e\u0681\3\2\2\2\u067f\u067d\3") - buf.write("\2\2\2\u067f\u0680\3\2\2\2\u0680\u00ed\3\2\2\2\u0681\u067f") - buf.write("\3\2\2\2\u0682\u0687\5\4\3\2\u0683\u0684\7\u0085\2\2\u0684") - buf.write("\u0686\5\4\3\2\u0685\u0683\3\2\2\2\u0686\u0689\3\2\2\2") - buf.write("\u0687\u0685\3\2\2\2\u0687\u0688\3\2\2\2\u0688\u00ef\3") - buf.write("\2\2\2\u0689\u0687\3\2\2\2\u068a\u068c\5\u00f2z\2\u068b") - buf.write("\u068a\3\2\2\2\u068c\u068d\3\2\2\2\u068d\u068b\3\2\2\2") - buf.write("\u068d\u068e\3\2\2\2\u068e\u00f1\3\2\2\2\u068f\u0690\7") - buf.write("p\2\2\u0690\u0691\5\u01b4\u00db\2\u0691\u0692\7\u0086") - buf.write("\2\2\u0692\u0693\5\u00f4{\2\u0693\u00f3\3\2\2\2\u0694") - buf.write("\u069f\5\u00fa~\2\u0695\u0698\5\u00f6|\2\u0696\u0697\7") - buf.write("\u0085\2\2\u0697\u0699\5\u00f8}\2\u0698\u0696\3\2\2\2") - buf.write("\u0698\u0699\3\2\2\2\u0699\u069c\3\2\2\2\u069a\u069b\7") - buf.write("\u0085\2\2\u069b\u069d\5\u00fa~\2\u069c\u069a\3\2\2\2") - buf.write("\u069c\u069d\3\2\2\2\u069d\u069f\3\2\2\2\u069e\u0694\3") - buf.write("\2\2\2\u069e\u0695\3\2\2\2\u069f\u00f5\3\2\2\2\u06a0\u06a8") - buf.write("\5\26\f\2\u06a1\u06a3\7\33\2\2\u06a2\u06a4\7\u0095\2\2") - buf.write("\u06a3\u06a2\3\2\2\2\u06a3\u06a4\3\2\2\2\u06a4\u06a8\3") - buf.write("\2\2\2\u06a5\u06a8\7]\2\2\u06a6\u06a8\7g\2\2\u06a7\u06a0") - buf.write("\3\2\2\2\u06a7\u06a1\3\2\2\2\u06a7\u06a5\3\2\2\2\u06a7") - buf.write("\u06a6\3\2\2\2\u06a8\u00f7\3\2\2\2\u06a9\u06ae\5\4\3\2") - buf.write("\u06aa\u06ab\7\u0085\2\2\u06ab\u06ad\5\4\3\2\u06ac\u06aa") - buf.write("\3\2\2\2\u06ad\u06b0\3\2\2\2\u06ae\u06ac\3\2\2\2\u06ae") - buf.write("\u06af\3\2\2\2\u06af\u00f9\3\2\2\2\u06b0\u06ae\3\2\2\2") - buf.write("\u06b1\u06b2\7C\2\2\u06b2\u06b3\7\u0082\2\2\u06b3\u06b4") - buf.write("\7\u0083\2\2\u06b4\u00fb\3\2\2\2\u06b5\u06b7\7~\2\2\u06b6") - buf.write("\u06b8\5\u00fe\u0080\2\u06b7\u06b6\3\2\2\2\u06b7\u06b8") - buf.write("\3\2\2\2\u06b8\u06b9\3\2\2\2\u06b9\u06ba\7\177\2\2\u06ba") - buf.write("\u00fd\3\2\2\2\u06bb\u06bd\5\u0100\u0081\2\u06bc\u06bb") - buf.write("\3\2\2\2\u06bd\u06be\3\2\2\2\u06be\u06bc\3\2\2\2\u06be") - buf.write("\u06bf\3\2\2\2\u06bf\u00ff\3\2\2\2\u06c0\u06c2\5\u0160") - buf.write("\u00b1\2\u06c1\u06c0\3\2\2\2\u06c1\u06c2\3\2\2\2\u06c2") - buf.write("\u06c4\3\2\2\2\u06c3\u06c5\5\u0102\u0082\2\u06c4\u06c3") - buf.write("\3\2\2\2\u06c4\u06c5\3\2\2\2\u06c5\u06c8\3\2\2\2\u06c6") - buf.write("\u06c9\5\u0106\u0084\2\u06c7\u06c9\5\u01a4\u00d3\2\u06c8") - buf.write("\u06c6\3\2\2\2\u06c8\u06c7\3\2\2\2\u06c9\u0101\3\2\2\2") - buf.write("\u06ca\u06cc\5\u0104\u0083\2\u06cb\u06ca\3\2\2\2\u06cc") - buf.write("\u06cd\3\2\2\2\u06cd\u06cb\3\2\2\2\u06cd\u06ce\3\2\2\2") - buf.write("\u06ce\u0103\3\2\2\2\u06cf\u06d0\t\f\2\2\u06d0\u0105\3") - buf.write("\2\2\2\u06d1\u06e5\5\u01a0\u00d1\2\u06d2\u06e5\5\u0108") - buf.write("\u0085\2\u06d3\u06e5\5\u019a\u00ce\2\u06d4\u06da\5\u0136") - buf.write("\u009c\2\u06d5\u06db\5\u013a\u009e\2\u06d6\u06d7\5\u0178") - buf.write("\u00bd\2\u06d7\u06d8\5L\'\2\u06d8\u06d9\7\u0087\2\2\u06d9") - buf.write("\u06db\3\2\2\2\u06da\u06d5\3\2\2\2\u06da\u06d6\3\2\2\2") - buf.write("\u06db\u06e5\3\2\2\2\u06dc\u06e5\5\u01a6\u00d4\2\u06dd") - buf.write("\u06de\7m\2\2\u06de\u06e5\5\u01a8\u00d5\2\u06df\u06e5") - buf.write("\5\u0190\u00c9\2\u06e0\u06e5\5\u0192\u00ca\2\u06e1\u06e5") - buf.write("\5\u0194\u00cb\2\u06e2\u06e5\5\u0196\u00cc\2\u06e3\u06e5") - buf.write("\5\u0198\u00cd\2\u06e4\u06d1\3\2\2\2\u06e4\u06d2\3\2\2") - buf.write("\2\u06e4\u06d3\3\2\2\2\u06e4\u06d4\3\2\2\2\u06e4\u06dc") - buf.write("\3\2\2\2\u06e4\u06dd\3\2\2\2\u06e4\u06df\3\2\2\2\u06e4") - buf.write("\u06e0\3\2\2\2\u06e4\u06e1\3\2\2\2\u06e4\u06e2\3\2\2\2") - buf.write("\u06e4\u06e3\3\2\2\2\u06e5\u0107\3\2\2\2\u06e6\u06ec\7") - buf.write("Q\2\2\u06e7\u06e8\7P\2\2\u06e8\u06ec\7Q\2\2\u06e9\u06ea") - buf.write("\7Q\2\2\u06ea\u06ec\7P\2\2\u06eb\u06e6\3\2\2\2\u06eb\u06e7") - buf.write("\3\2\2\2\u06eb\u06e9\3\2\2\2\u06eb\u06ec\3\2\2\2\u06ec") - buf.write("\u06ed\3\2\2\2\u06ed\u06f7\5\6\4\2\u06ee\u06ef\5\4\3\2") - buf.write("\u06ef\u06f0\7\u0084\2\2\u06f0\u06f1\5\u01a2\u00d2\2\u06f1") - buf.write("\u06f8\3\2\2\2\u06f2\u06f8\5\u01a8\u00d5\2\u06f3\u06f8") - buf.write("\5\u019e\u00d0\2\u06f4\u06f8\5\u01a2\u00d2\2\u06f5\u06f8") - buf.write("\5\u01ac\u00d7\2\u06f6\u06f8\5\u019c\u00cf\2\u06f7\u06ee") - buf.write("\3\2\2\2\u06f7\u06f2\3\2\2\2\u06f7\u06f3\3\2\2\2\u06f7") - buf.write("\u06f4\3\2\2\2\u06f7\u06f5\3\2\2\2\u06f7\u06f6\3\2\2\2") - buf.write("\u06f8\u0109\3\2\2\2\u06f9\u06fe\5\u010c\u0087\2\u06fa") - buf.write("\u06fb\7\u0085\2\2\u06fb\u06fd\5\u010c\u0087\2\u06fc\u06fa") - buf.write("\3\2\2\2\u06fd\u0700\3\2\2\2\u06fe\u06fc\3\2\2\2\u06fe") - buf.write("\u06ff\3\2\2\2\u06ff\u010b\3\2\2\2\u0700\u06fe\3\2\2\2") - buf.write("\u0701\u0702\5\u01b4\u00db\2\u0702\u0703\7\u0092\2\2\u0703") - buf.write("\u0704\5\36\20\2\u0704\u010d\3\2\2\2\u0705\u070a\5\u0110") - buf.write("\u0089\2\u0706\u0707\7\u0085\2\2\u0707\u0709\5\u0110\u0089") - buf.write("\2\u0708\u0706\3\2\2\2\u0709\u070c\3\2\2\2\u070a\u0708") - buf.write("\3\2\2\2\u070a\u070b\3\2\2\2\u070b\u010f\3\2\2\2\u070c") - buf.write("\u070a\3\2\2\2\u070d\u0710\5\u01b4\u00db\2\u070e\u070f") - buf.write("\7\u0092\2\2\u070f\u0711\5\u0112\u008a\2\u0710\u070e\3") - buf.write("\2\2\2\u0710\u0711\3\2\2\2\u0711\u0111\3\2\2\2\u0712\u0715") - buf.write("\5\36\20\2\u0713\u0715\5\u0146\u00a4\2\u0714\u0712\3\2") - buf.write("\2\2\u0714\u0713\3\2\2\2\u0715\u0113\3\2\2\2\u0716\u0719") - buf.write("\5\6\4\2\u0717\u0719\7m\2\2\u0718\u0716\3\2\2\2\u0718") - buf.write("\u0717\3\2\2\2\u0719\u0115\3\2\2\2\u071a\u071b\5\4\3\2") - buf.write("\u071b\u0117\3\2\2\2\u071c\u071f\5\u00acW\2\u071d\u071f") - buf.write("\7\u0087\2\2\u071e\u071c\3\2\2\2\u071e\u071d\3\2\2\2\u071f") - buf.write("\u0119\3\2\2\2\u0720\u0727\5\u0122\u0092\2\u0721\u0724") - buf.write("\5\u011c\u008f\2\u0722\u0723\7\u0085\2\2\u0723\u0725\5") - buf.write("\u0122\u0092\2\u0724\u0722\3\2\2\2\u0724\u0725\3\2\2\2") - buf.write("\u0725\u0727\3\2\2\2\u0726\u0720\3\2\2\2\u0726\u0721\3") - buf.write("\2\2\2\u0727\u011b\3\2\2\2\u0728\u072d\5\u011e\u0090\2") - buf.write("\u0729\u072a\7\u0085\2\2\u072a\u072c\5\u011e\u0090\2\u072b") - buf.write("\u0729\3\2\2\2\u072c\u072f\3\2\2\2\u072d\u072b\3\2\2\2") - buf.write("\u072d\u072e\3\2\2\2\u072e\u011d\3\2\2\2\u072f\u072d\3") - buf.write("\2\2\2\u0730\u0732\5\u0160\u00b1\2\u0731\u0730\3\2\2\2") - buf.write("\u0731\u0732\3\2\2\2\u0732\u0734\3\2\2\2\u0733\u0735\5") - buf.write("\u0120\u0091\2\u0734\u0733\3\2\2\2\u0734\u0735\3\2\2\2") - buf.write("\u0735\u0736\3\2\2\2\u0736\u0739\5\u01ae\u00d8\2\u0737") - buf.write("\u0739\7\r\2\2\u0738\u0731\3\2\2\2\u0738\u0737\3\2\2\2") - buf.write("\u0739\u011f\3\2\2\2\u073a\u0743\7Q\2\2\u073b\u0743\7") - buf.write("I\2\2\u073c\u0743\7\67\2\2\u073d\u073e\7Q\2\2\u073e\u0743") - buf.write("\7_\2\2\u073f\u0740\7\67\2\2\u0740\u0743\7_\2\2\u0741") - buf.write("\u0743\7_\2\2\u0742\u073a\3\2\2\2\u0742\u073b\3\2\2\2") - buf.write("\u0742\u073c\3\2\2\2\u0742\u073d\3\2\2\2\u0742\u073f\3") - buf.write("\2\2\2\u0742\u0741\3\2\2\2\u0743\u0121\3\2\2\2\u0744\u0746") - buf.write("\5\u0160\u00b1\2\u0745\u0744\3\2\2\2\u0745\u0746\3\2\2") - buf.write("\2\u0746\u0747\3\2\2\2\u0747\u0748\7K\2\2\u0748\u0749") - buf.write("\5\u0142\u00a2\2\u0749\u074a\5\u01b4\u00db\2\u074a\u0123") - buf.write("\3\2\2\2\u074b\u074d\5\u0160\u00b1\2\u074c\u074b\3\2\2") - buf.write("\2\u074c\u074d\3\2\2\2\u074d\u074f\3\2\2\2\u074e\u0750") - buf.write("\5\u012a\u0096\2\u074f\u074e\3\2\2\2\u074f\u0750\3\2\2") - buf.write("\2\u0750\u075b\3\2\2\2\u0751\u0752\7\62\2\2\u0752\u0754") - buf.write("\5\u012c\u0097\2\u0753\u0755\5\u0128\u0095\2\u0754\u0753") - buf.write("\3\2\2\2\u0754\u0755\3\2\2\2\u0755\u075c\3\2\2\2\u0756") - buf.write("\u0757\7W\2\2\u0757\u0759\5\u012c\u0097\2\u0758\u075a") - buf.write("\5\u0126\u0094\2\u0759\u0758\3\2\2\2\u0759\u075a\3\2\2") - buf.write("\2\u075a\u075c\3\2\2\2\u075b\u0751\3\2\2\2\u075b\u0756") - buf.write("\3\2\2\2\u075c\u0125\3\2\2\2\u075d\u075f\5\u0160\u00b1") - buf.write("\2\u075e\u075d\3\2\2\2\u075e\u075f\3\2\2\2\u075f\u0761") - buf.write("\3\2\2\2\u0760\u0762\5\u012a\u0096\2\u0761\u0760\3\2\2") - buf.write("\2\u0761\u0762\3\2\2\2\u0762\u0763\3\2\2\2\u0763\u0764") - buf.write("\7\62\2\2\u0764\u0765\5\u012c\u0097\2\u0765\u0127\3\2") - buf.write("\2\2\u0766\u0768\5\u0160\u00b1\2\u0767\u0766\3\2\2\2\u0767") - buf.write("\u0768\3\2\2\2\u0768\u076a\3\2\2\2\u0769\u076b\5\u012a") - buf.write("\u0096\2\u076a\u0769\3\2\2\2\u076a\u076b\3\2\2\2\u076b") - buf.write("\u076c\3\2\2\2\u076c\u076d\7W\2\2\u076d\u076e\5\u012c") - buf.write("\u0097\2\u076e\u0129\3\2\2\2\u076f\u0777\7N\2\2\u0770") - buf.write("\u0777\7:\2\2\u0771\u0777\7M\2\2\u0772\u0773\7N\2\2\u0773") - buf.write("\u0777\7:\2\2\u0774\u0775\7:\2\2\u0775\u0777\7N\2\2\u0776") - buf.write("\u076f\3\2\2\2\u0776\u0770\3\2\2\2\u0776\u0771\3\2\2\2") - buf.write("\u0776\u0772\3\2\2\2\u0776\u0774\3\2\2\2\u0777\u012b\3") - buf.write("\2\2\2\u0778\u077b\5\u00acW\2\u0779\u077b\7\u0087\2\2") - buf.write("\u077a\u0778\3\2\2\2\u077a\u0779\3\2\2\2\u077b\u012d\3") - buf.write("\2\2\2\u077c\u077e\5\u0160\u00b1\2\u077d\u077c\3\2\2\2") - buf.write("\u077d\u077e\3\2\2\2\u077e\u0787\3\2\2\2\u077f\u0780\7") - buf.write("\13\2\2\u0780\u0781\5\u00acW\2\u0781\u0782\5\u0132\u009a") - buf.write("\2\u0782\u0788\3\2\2\2\u0783\u0784\7R\2\2\u0784\u0785") - buf.write("\5\u00acW\2\u0785\u0786\5\u0130\u0099\2\u0786\u0788\3") - buf.write("\2\2\2\u0787\u077f\3\2\2\2\u0787\u0783\3\2\2\2\u0788\u012f") - buf.write("\3\2\2\2\u0789\u078b\5\u0160\u00b1\2\u078a\u0789\3\2\2") - buf.write("\2\u078a\u078b\3\2\2\2\u078b\u078c\3\2\2\2\u078c\u078d") - buf.write("\7\13\2\2\u078d\u078e\5\u00acW\2\u078e\u0131\3\2\2\2\u078f") - buf.write("\u0791\5\u0160\u00b1\2\u0790\u078f\3\2\2\2\u0790\u0791") - buf.write("\3\2\2\2\u0791\u0792\3\2\2\2\u0792\u0793\7R\2\2\u0793") - buf.write("\u0794\5\u00acW\2\u0794\u0133\3\2\2\2\u0795\u07ac\7\u0088") - buf.write("\2\2\u0796\u07ac\7\u0089\2\2\u0797\u07ac\7\u0090\2\2\u0798") - buf.write("\u07ac\7\u0091\2\2\u0799\u07ac\7\u0098\2\2\u079a\u07ac") - buf.write("\7\u0099\2\2\u079b\u07ac\7a\2\2\u079c\u07ac\7+\2\2\u079d") - buf.write("\u07ac\7\u008a\2\2\u079e\u07ac\7\u008b\2\2\u079f\u07ac") - buf.write("\7\u008c\2\2\u07a0\u07ac\7\u008d\2\2\u07a1\u07ac\7\u008e") - buf.write("\2\2\u07a2\u07ac\7\u008f\2\2\u07a3\u07ac\7\u00a9\2\2\u07a4") - buf.write("\u07ac\5\u017a\u00be\2\u07a5\u07ac\7\u009d\2\2\u07a6\u07ac") - buf.write("\7\u009e\2\2\u07a7\u07ac\7\u0094\2\2\u07a8\u07ac\7\u0093") - buf.write("\2\2\u07a9\u07ac\7\u00a0\2\2\u07aa\u07ac\7\u009f\2\2\u07ab") - buf.write("\u0795\3\2\2\2\u07ab\u0796\3\2\2\2\u07ab\u0797\3\2\2\2") - buf.write("\u07ab\u0798\3\2\2\2\u07ab\u0799\3\2\2\2\u07ab\u079a\3") - buf.write("\2\2\2\u07ab\u079b\3\2\2\2\u07ab\u079c\3\2\2\2\u07ab\u079d") - buf.write("\3\2\2\2\u07ab\u079e\3\2\2\2\u07ab\u079f\3\2\2\2\u07ab") - buf.write("\u07a0\3\2\2\2\u07ab\u07a1\3\2\2\2\u07ab\u07a2\3\2\2\2") - buf.write("\u07ab\u07a3\3\2\2\2\u07ab\u07a4\3\2\2\2\u07ab\u07a5\3") - buf.write("\2\2\2\u07ab\u07a6\3\2\2\2\u07ab\u07a7\3\2\2\2\u07ab\u07a8") - buf.write("\3\2\2\2\u07ab\u07a9\3\2\2\2\u07ab\u07aa\3\2\2\2\u07ac") - buf.write("\u0135\3\2\2\2\u07ad\u07ae\t\r\2\2\u07ae\u07af\7G\2\2") - buf.write("\u07af\u07b0\5\6\4\2\u07b0\u07b1\7\u0082\2\2\u07b1\u07b2") - buf.write("\5\u01ae\u00d8\2\u07b2\u07b3\7\u0083\2\2\u07b3\u0137\3") - buf.write("\2\2\2\u07b4\u07b5\7\u0086\2\2\u07b5\u07b6\t\16\2\2\u07b6") - buf.write("\u07b8\7\u0082\2\2\u07b7\u07b9\5\32\16\2\u07b8\u07b7\3") - buf.write("\2\2\2\u07b8\u07b9\3\2\2\2\u07b9\u07ba\3\2\2\2\u07ba\u07bb") - buf.write("\7\u0083\2\2\u07bb\u0139\3\2\2\2\u07bc\u07bf\5\u00acW") - buf.write("\2\u07bd\u07bf\7\u0087\2\2\u07be\u07bc\3\2\2\2\u07be\u07bd") - buf.write("\3\2\2\2\u07bf\u013b\3\2\2\2\u07c0\u07c1\7\u0086\2\2\u07c1") - buf.write("\u07c2\5\u00eex\2\u07c2\u013d\3\2\2\2\u07c3\u07c7\7~\2") - buf.write("\2\u07c4\u07c6\5\u0140\u00a1\2\u07c5\u07c4\3\2\2\2\u07c6") - buf.write("\u07c9\3\2\2\2\u07c7\u07c5\3\2\2\2\u07c7\u07c8\3\2\2\2") - buf.write("\u07c8\u07ca\3\2\2\2\u07c9\u07c7\3\2\2\2\u07ca\u07cb\7") - buf.write("\177\2\2\u07cb\u013f\3\2\2\2\u07cc\u07ce\5\u0160\u00b1") - buf.write("\2\u07cd\u07cc\3\2\2\2\u07cd\u07ce\3\2\2\2\u07ce\u07d0") - buf.write("\3\2\2\2\u07cf\u07d1\5\u0102\u0082\2\u07d0\u07cf\3\2\2") - buf.write("\2\u07d0\u07d1\3\2\2\2\u07d1\u07dc\3\2\2\2\u07d2\u07dd") - buf.write("\5\u0106\u0084\2\u07d3\u07d4\7-\2\2\u07d4\u07d6\5\6\4") - buf.write("\2\u07d5\u07d7\5\u0174\u00bb\2\u07d6\u07d5\3\2\2\2\u07d7") - buf.write("\u07d8\3\2\2\2\u07d8\u07d6\3\2\2\2\u07d8\u07d9\3\2\2\2") - buf.write("\u07d9\u07da\3\2\2\2\u07da\u07db\7\u0087\2\2\u07db\u07dd") - buf.write("\3\2\2\2\u07dc\u07d2\3\2\2\2\u07dc\u07d3\3\2\2\2\u07dd") - buf.write("\u0141\3\2\2\2\u07de\u07e6\5\b\5\2\u07df\u07e1\t\17\2") - buf.write("\2\u07e0\u07df\3\2\2\2\u07e1\u07e4\3\2\2\2\u07e2\u07e0") - buf.write("\3\2\2\2\u07e2\u07e3\3\2\2\2\u07e3\u07e5\3\2\2\2\u07e4") - buf.write("\u07e2\3\2\2\2\u07e5\u07e7\5\u0144\u00a3\2\u07e6\u07e2") - buf.write("\3\2\2\2\u07e7\u07e8\3\2\2\2\u07e8\u07e6\3\2\2\2\u07e8") - buf.write("\u07e9\3\2\2\2\u07e9\u0143\3\2\2\2\u07ea\u07ee\7\u0080") - buf.write("\2\2\u07eb\u07ed\7\u0085\2\2\u07ec\u07eb\3\2\2\2\u07ed") - buf.write("\u07f0\3\2\2\2\u07ee\u07ec\3\2\2\2\u07ee\u07ef\3\2\2\2") - buf.write("\u07ef\u07f1\3\2\2\2\u07f0\u07ee\3\2\2\2\u07f1\u07f2\7") - buf.write("\u0081\2\2\u07f2\u0145\3\2\2\2\u07f3\u07ff\7~\2\2\u07f4") - buf.write("\u07f9\5\u0112\u008a\2\u07f5\u07f6\7\u0085\2\2\u07f6\u07f8") - buf.write("\5\u0112\u008a\2\u07f7\u07f5\3\2\2\2\u07f8\u07fb\3\2\2") - buf.write("\2\u07f9\u07f7\3\2\2\2\u07f9\u07fa\3\2\2\2\u07fa\u07fd") - buf.write("\3\2\2\2\u07fb\u07f9\3\2\2\2\u07fc\u07fe\7\u0085\2\2\u07fd") - buf.write("\u07fc\3\2\2\2\u07fd\u07fe\3\2\2\2\u07fe\u0800\3\2\2\2") - buf.write("\u07ff\u07f4\3\2\2\2\u07ff\u0800\3\2\2\2\u0800\u0801\3") - buf.write("\2\2\2\u0801\u0802\7\177\2\2\u0802\u0147\3\2\2\2\u0803") - buf.write("\u0804\7\u0093\2\2\u0804\u0809\5\u014a\u00a6\2\u0805\u0806") - buf.write("\7\u0085\2\2\u0806\u0808\5\u014a\u00a6\2\u0807\u0805\3") - buf.write("\2\2\2\u0808\u080b\3\2\2\2\u0809\u0807\3\2\2\2\u0809\u080a") - buf.write("\3\2\2\2\u080a\u080c\3\2\2\2\u080b\u0809\3\2\2\2\u080c") - buf.write("\u080d\7\u0094\2\2\u080d\u0149\3\2\2\2\u080e\u0810\5\u0160") - buf.write("\u00b1\2\u080f\u080e\3\2\2\2\u080f\u0810\3\2\2\2\u0810") - buf.write("\u0812\3\2\2\2\u0811\u0813\5\u014c\u00a7\2\u0812\u0811") - buf.write("\3\2\2\2\u0812\u0813\3\2\2\2\u0813\u0814\3\2\2\2\u0814") - buf.write("\u0815\5\u01b4\u00db\2\u0815\u014b\3\2\2\2\u0816\u0817") - buf.write("\t\20\2\2\u0817\u014d\3\2\2\2\u0818\u0819\7\u0086\2\2") - buf.write("\u0819\u081a\5\u00eex\2\u081a\u014f\3\2\2\2\u081b\u081f") - buf.write("\7~\2\2\u081c\u081e\5\u0152\u00aa\2\u081d\u081c\3\2\2") - buf.write("\2\u081e\u0821\3\2\2\2\u081f\u081d\3\2\2\2\u081f\u0820") - buf.write("\3\2\2\2\u0820\u0822\3\2\2\2\u0821\u081f\3\2\2\2\u0822") - buf.write("\u0823\7\177\2\2\u0823\u0151\3\2\2\2\u0824\u0826\5\u0160") - buf.write("\u00b1\2\u0825\u0824\3\2\2\2\u0825\u0826\3\2\2\2\u0826") - buf.write("\u0828\3\2\2\2\u0827\u0829\7C\2\2\u0828\u0827\3\2\2\2") - buf.write("\u0828\u0829\3\2\2\2\u0829\u0869\3\2\2\2\u082a\u082c\7") - buf.write("h\2\2\u082b\u082a\3\2\2\2\u082b\u082c\3\2\2\2\u082c\u0832") - buf.write("\3\2\2\2\u082d\u0833\7Q\2\2\u082e\u082f\7Q\2\2\u082f\u0833") - buf.write("\7P\2\2\u0830\u0831\7P\2\2\u0831\u0833\7Q\2\2\u0832\u082d") - buf.write("\3\2\2\2\u0832\u082e\3\2\2\2\u0832\u0830\3\2\2\2\u0832") - buf.write("\u0833\3\2\2\2\u0833\u0834\3\2\2\2\u0834\u0850\5\6\4\2") - buf.write("\u0835\u0837\5\u01b4\u00db\2\u0836\u0838\5\u00e8u\2\u0837") - buf.write("\u0836\3\2\2\2\u0837\u0838\3\2\2\2\u0838\u0839\3\2\2\2") - buf.write("\u0839\u083b\7\u0082\2\2\u083a\u083c\5\u011a\u008e\2\u083b") - buf.write("\u083a\3\2\2\2\u083b\u083c\3\2\2\2\u083c\u083d\3\2\2\2") - buf.write("\u083d\u083f\7\u0083\2\2\u083e\u0840\5\u00f0y\2\u083f") - buf.write("\u083e\3\2\2\2\u083f\u0840\3\2\2\2\u0840\u0841\3\2\2\2") - buf.write("\u0841\u0842\7\u0087\2\2\u0842\u0851\3\2\2\2\u0843\u0844") - buf.write("\5\u01b4\u00db\2\u0844\u0845\7~\2\2\u0845\u0846\5\u0154") - buf.write("\u00ab\2\u0846\u0847\7\177\2\2\u0847\u0851\3\2\2\2\u0848") - buf.write("\u0849\7_\2\2\u0849\u084a\7\u0080\2\2\u084a\u084b\5\u011a") - buf.write("\u008e\2\u084b\u084c\7\u0081\2\2\u084c\u084d\7~\2\2\u084d") - buf.write("\u084e\5\u0154\u00ab\2\u084e\u084f\7\177\2\2\u084f\u0851") - buf.write("\3\2\2\2\u0850\u0835\3\2\2\2\u0850\u0843\3\2\2\2\u0850") - buf.write("\u0848\3\2\2\2\u0851\u086a\3\2\2\2\u0852\u0854\7h\2\2") - buf.write("\u0853\u0852\3\2\2\2\u0853\u0854\3\2\2\2\u0854\u0855\3") - buf.write("\2\2\2\u0855\u0856\7m\2\2\u0856\u0858\5\u01b4\u00db\2") - buf.write("\u0857\u0859\5\u00e8u\2\u0858\u0857\3\2\2\2\u0858\u0859") - buf.write("\3\2\2\2\u0859\u085a\3\2\2\2\u085a\u085c\7\u0082\2\2\u085b") - buf.write("\u085d\5\u011a\u008e\2\u085c\u085b\3\2\2\2\u085c\u085d") - buf.write("\3\2\2\2\u085d\u085e\3\2\2\2\u085e\u0860\7\u0083\2\2\u085f") - buf.write("\u0861\5\u00f0y\2\u0860\u085f\3\2\2\2\u0860\u0861\3\2") - buf.write("\2\2\u0861\u0862\3\2\2\2\u0862\u0863\7\u0087\2\2\u0863") - buf.write("\u086a\3\2\2\2\u0864\u0865\7(\2\2\u0865\u0866\5\6\4\2") - buf.write("\u0866\u0867\5\u01b4\u00db\2\u0867\u0868\7\u0087\2\2\u0868") - buf.write("\u086a\3\2\2\2\u0869\u082b\3\2\2\2\u0869\u0853\3\2\2\2") - buf.write("\u0869\u0864\3\2\2\2\u086a\u0153\3\2\2\2\u086b\u086d\5") - buf.write("\u0160\u00b1\2\u086c\u086b\3\2\2\2\u086c\u086d\3\2\2\2") - buf.write("\u086d\u0880\3\2\2\2\u086e\u086f\7\62\2\2\u086f\u0875") - buf.write("\7\u0087\2\2\u0870\u0872\5\u0160\u00b1\2\u0871\u0870\3") - buf.write("\2\2\2\u0871\u0872\3\2\2\2\u0872\u0873\3\2\2\2\u0873\u0874") - buf.write("\7W\2\2\u0874\u0876\7\u0087\2\2\u0875\u0871\3\2\2\2\u0875") - buf.write("\u0876\3\2\2\2\u0876\u0881\3\2\2\2\u0877\u0878\7W\2\2") - buf.write("\u0878\u087e\7\u0087\2\2\u0879\u087b\5\u0160\u00b1\2\u087a") - buf.write("\u0879\3\2\2\2\u087a\u087b\3\2\2\2\u087b\u087c\3\2\2\2") - buf.write("\u087c\u087d\7\62\2\2\u087d\u087f\7\u0087\2\2\u087e\u087a") - buf.write("\3\2\2\2\u087e\u087f\3\2\2\2\u087f\u0881\3\2\2\2\u0880") - buf.write("\u086e\3\2\2\2\u0880\u0877\3\2\2\2\u0881\u0155\3\2\2\2") - buf.write("\u0882\u0883\7\u0086\2\2\u0883\u0884\5\6\4\2\u0884\u0157") - buf.write("\3\2\2\2\u0885\u0891\7~\2\2\u0886\u088b\5\u015a\u00ae") - buf.write("\2\u0887\u0888\7\u0085\2\2\u0888\u088a\5\u015a\u00ae\2") - buf.write("\u0889\u0887\3\2\2\2\u088a\u088d\3\2\2\2\u088b\u0889\3") - buf.write("\2\2\2\u088b\u088c\3\2\2\2\u088c\u088f\3\2\2\2\u088d\u088b") - buf.write("\3\2\2\2\u088e\u0890\7\u0085\2\2\u088f\u088e\3\2\2\2\u088f") - buf.write("\u0890\3\2\2\2\u0890\u0892\3\2\2\2\u0891\u0886\3\2\2\2") - buf.write("\u0891\u0892\3\2\2\2\u0892\u0893\3\2\2\2\u0893\u0894\7") - buf.write("\177\2\2\u0894\u0159\3\2\2\2\u0895\u0897\5\u0160\u00b1") - buf.write("\2\u0896\u0895\3\2\2\2\u0896\u0897\3\2\2\2\u0897\u0898") - buf.write("\3\2\2\2\u0898\u089b\5\u01b4\u00db\2\u0899\u089a\7\u0092") - buf.write("\2\2\u089a\u089c\5\36\20\2\u089b\u0899\3\2\2\2\u089b\u089c") - buf.write("\3\2\2\2\u089c\u015b\3\2\2\2\u089d\u089e\7\u0080\2\2\u089e") - buf.write("\u089f\5\u015e\u00b0\2\u089f\u08a0\7\u0086\2\2\u08a0\u08a2") - buf.write("\5\u0166\u00b4\2\u08a1\u08a3\7\u0085\2\2\u08a2\u08a1\3") - buf.write("\2\2\2\u08a2\u08a3\3\2\2\2\u08a3\u08a4\3\2\2\2\u08a4\u08a5") - buf.write("\7\u0081\2\2\u08a5\u015d\3\2\2\2\u08a6\u08a9\5\u018e\u00c8") - buf.write("\2\u08a7\u08a9\5\u01b4\u00db\2\u08a8\u08a6\3\2\2\2\u08a8") - buf.write("\u08a7\3\2\2\2\u08a9\u015f\3\2\2\2\u08aa\u08ac\5\u0162") - buf.write("\u00b2\2\u08ab\u08aa\3\2\2\2\u08ac\u08ad\3\2\2\2\u08ad") - buf.write("\u08ab\3\2\2\2\u08ad\u08ae\3\2\2\2\u08ae\u0161\3\2\2\2") - buf.write("\u08af\u08b3\7\u0080\2\2\u08b0\u08b1\5\u0164\u00b3\2\u08b1") - buf.write("\u08b2\7\u0086\2\2\u08b2\u08b4\3\2\2\2\u08b3\u08b0\3\2") - buf.write("\2\2\u08b3\u08b4\3\2\2\2\u08b4\u08b5\3\2\2\2\u08b5\u08b7") - buf.write("\5\u0166\u00b4\2\u08b6\u08b8\7\u0085\2\2\u08b7\u08b6\3") - buf.write("\2\2\2\u08b7\u08b8\3\2\2\2\u08b8\u08b9\3\2\2\2\u08b9\u08ba") - buf.write("\7\u0081\2\2\u08ba\u0163\3\2\2\2\u08bb\u08be\5\u018e\u00c8") - buf.write("\2\u08bc\u08be\5\u01b4\u00db\2\u08bd\u08bb\3\2\2\2\u08bd") - buf.write("\u08bc\3\2\2\2\u08be\u0165\3\2\2\2\u08bf\u08c4\5\u0168") - buf.write("\u00b5\2\u08c0\u08c1\7\u0085\2\2\u08c1\u08c3\5\u0168\u00b5") - buf.write("\2\u08c2\u08c0\3\2\2\2\u08c3\u08c6\3\2\2\2\u08c4\u08c2") - buf.write("\3\2\2\2\u08c4\u08c5\3\2\2\2\u08c5\u0167\3\2\2\2\u08c6") - buf.write("\u08c4\3\2\2\2\u08c7\u08d4\5\4\3\2\u08c8\u08d1\7\u0082") - buf.write("\2\2\u08c9\u08ce\5\u016a\u00b6\2\u08ca\u08cb\7\u0085\2") - buf.write("\2\u08cb\u08cd\5\u016a\u00b6\2\u08cc\u08ca\3\2\2\2\u08cd") - buf.write("\u08d0\3\2\2\2\u08ce\u08cc\3\2\2\2\u08ce\u08cf\3\2\2\2") - buf.write("\u08cf\u08d2\3\2\2\2\u08d0\u08ce\3\2\2\2\u08d1\u08c9\3") - buf.write("\2\2\2\u08d1\u08d2\3\2\2\2\u08d2\u08d3\3\2\2\2\u08d3\u08d5") - buf.write("\7\u0083\2\2\u08d4\u08c8\3\2\2\2\u08d4\u08d5\3\2\2\2\u08d5") - buf.write("\u0169\3\2\2\2\u08d6\u08d7\5\u01b4\u00db\2\u08d7\u08d8") - buf.write("\7\u0086\2\2\u08d8\u08da\3\2\2\2\u08d9\u08d6\3\2\2\2\u08d9") - buf.write("\u08da\3\2\2\2\u08da\u08db\3\2\2\2\u08db\u08dc\5\36\20") - buf.write("\2\u08dc\u016b\3\2\2\2\u08dd\u08e0\5\16\b\2\u08de\u08e0") - buf.write("\5\26\f\2\u08df\u08dd\3\2\2\2\u08df\u08de\3\2\2\2\u08e0") - buf.write("\u08e5\3\2\2\2\u08e1\u08e4\5\u0144\u00a3\2\u08e2\u08e4") - buf.write("\7\u0095\2\2\u08e3\u08e1\3\2\2\2\u08e3\u08e2\3\2\2\2\u08e4") - buf.write("\u08e7\3\2\2\2\u08e5\u08e3\3\2\2\2\u08e5\u08e6\3\2\2\2") - buf.write("\u08e6\u08e8\3\2\2\2\u08e7\u08e5\3\2\2\2\u08e8\u08e9\7") - buf.write("\u008a\2\2\u08e9\u08ed\3\2\2\2\u08ea\u08eb\7m\2\2\u08eb") - buf.write("\u08ed\7\u008a\2\2\u08ec\u08df\3\2\2\2\u08ec\u08ea\3\2") - buf.write("\2\2\u08ed\u016d\3\2\2\2\u08ee\u08f3\5\u0170\u00b9\2\u08ef") - buf.write("\u08f0\7\u0085\2\2\u08f0\u08f2\5\u0170\u00b9\2\u08f1\u08ef") - buf.write("\3\2\2\2\u08f2\u08f5\3\2\2\2\u08f3\u08f1\3\2\2\2\u08f3") - buf.write("\u08f4\3\2\2\2\u08f4\u016f\3\2\2\2\u08f5\u08f3\3\2\2\2") - buf.write("\u08f6\u08f7\5\u01b4\u00db\2\u08f7\u08f8\7\u0092\2\2\u08f8") - buf.write("\u08f9\5\u0172\u00ba\2\u08f9\u0171\3\2\2\2\u08fa\u08fc") - buf.write("\7\u008d\2\2\u08fb\u08fa\3\2\2\2\u08fb\u08fc\3\2\2\2\u08fc") - buf.write("\u08fd\3\2\2\2\u08fd\u0900\5\36\20\2\u08fe\u0900\5\u0176") - buf.write("\u00bc\2\u08ff\u08fb\3\2\2\2\u08ff\u08fe\3\2\2\2\u0900") - buf.write("\u0173\3\2\2\2\u0901\u0902\5\u01b4\u00db\2\u0902\u0903") - buf.write("\7\u0080\2\2\u0903\u0904\5\36\20\2\u0904\u0905\7\u0081") - buf.write("\2\2\u0905\u0175\3\2\2\2\u0906\u0907\7Z\2\2\u0907\u0908") - buf.write("\5\6\4\2\u0908\u0909\7\u0080\2\2\u0909\u090a\5\36\20\2") - buf.write("\u090a\u090b\7\u0081\2\2\u090b\u0924\3\2\2\2\u090c\u090e") - buf.write("\7Z\2\2\u090d\u090f\5\6\4\2\u090e\u090d\3\2\2\2\u090e") - buf.write("\u090f\3\2\2\2\u090f\u0910\3\2\2\2\u0910\u0912\7\u0080") - buf.write("\2\2\u0911\u0913\5\36\20\2\u0912\u0911\3\2\2\2\u0912\u0913") - buf.write("\3\2\2\2\u0913\u0914\3\2\2\2\u0914\u0915\7\u0081\2\2\u0915") - buf.write("\u0916\7~\2\2\u0916\u091b\5\36\20\2\u0917\u0918\7\u0085") - buf.write("\2\2\u0918\u091a\5\36\20\2\u0919\u0917\3\2\2\2\u091a\u091d") - buf.write("\3\2\2\2\u091b\u0919\3\2\2\2\u091b\u091c\3\2\2\2\u091c") - buf.write("\u091f\3\2\2\2\u091d\u091b\3\2\2\2\u091e\u0920\7\u0085") - buf.write("\2\2\u091f\u091e\3\2\2\2\u091f\u0920\3\2\2\2\u0920\u0921") - buf.write("\3\2\2\2\u0921\u0922\7\177\2\2\u0922\u0924\3\2\2\2\u0923") - buf.write("\u0906\3\2\2\2\u0923\u090c\3\2\2\2\u0924\u0177\3\2\2\2") - buf.write("\u0925\u0926\7\u0092\2\2\u0926\u0927\7\u0094\2\2\u0927") - buf.write("\u0928\6\u00bd\2\3\u0928\u0179\3\2\2\2\u0929\u092a\7\u0094") - buf.write("\2\2\u092a\u092b\7\u0094\2\2\u092b\u092c\6\u00be\3\3\u092c") - buf.write("\u017b\3\2\2\2\u092d\u092e\7\u0094\2\2\u092e\u092f\7\u00a0") - buf.write("\2\2\u092f\u0930\6\u00bf\4\3\u0930\u017d\3\2\2\2\u0931") - buf.write("\u093a\5\u0180\u00c1\2\u0932\u093a\5\u0182\u00c2\2\u0933") - buf.write("\u093a\7u\2\2\u0934\u093a\7v\2\2\u0935\u093a\7w\2\2\u0936") - buf.write("\u093a\7x\2\2\u0937\u093a\7y\2\2\u0938\u093a\7D\2\2\u0939") - buf.write("\u0931\3\2\2\2\u0939\u0932\3\2\2\2\u0939\u0933\3\2\2\2") - buf.write("\u0939\u0934\3\2\2\2\u0939\u0935\3\2\2\2\u0939\u0936\3") - buf.write("\2\2\2\u0939\u0937\3\2\2\2\u0939\u0938\3\2\2\2\u093a\u017f") - buf.write("\3\2\2\2\u093b\u093c\t\21\2\2\u093c\u0181\3\2\2\2\u093d") - buf.write("\u0942\5\u0184\u00c3\2\u093e\u0942\5\u0186\u00c4\2\u093f") - buf.write("\u0942\7z\2\2\u0940\u0942\7{\2\2\u0941\u093d\3\2\2\2\u0941") - buf.write("\u093e\3\2\2\2\u0941\u093f\3\2\2\2\u0941\u0940\3\2\2\2") - buf.write("\u0942\u0183\3\2\2\2\u0943\u0947\7|\2\2\u0944\u0946\5") - buf.write("\u0188\u00c5\2\u0945\u0944\3\2\2\2\u0946\u0949\3\2\2\2") - buf.write("\u0947\u0945\3\2\2\2\u0947\u0948\3\2\2\2\u0948\u094a\3") - buf.write("\2\2\2\u0949\u0947\3\2\2\2\u094a\u094b\7\u00b1\2\2\u094b") - buf.write("\u0185\3\2\2\2\u094c\u0950\7}\2\2\u094d\u094f\5\u018a") - buf.write("\u00c6\2\u094e\u094d\3\2\2\2\u094f\u0952\3\2\2\2\u0950") - buf.write("\u094e\3\2\2\2\u0950\u0951\3\2\2\2\u0951\u0953\3\2\2\2") - buf.write("\u0952\u0950\3\2\2\2\u0953\u0954\7\u00b1\2\2\u0954\u0187") - buf.write("\3\2\2\2\u0955\u095a\5\u018c\u00c7\2\u0956\u095a\7\u00ad") - buf.write("\2\2\u0957\u095a\7\u00af\2\2\u0958\u095a\7\u00b2\2\2\u0959") - buf.write("\u0955\3\2\2\2\u0959\u0956\3\2\2\2\u0959\u0957\3\2\2\2") - buf.write("\u0959\u0958\3\2\2\2\u095a\u0189\3\2\2\2\u095b\u0960\5") - buf.write("\u018c\u00c7\2\u095c\u0960\7\u00ad\2\2\u095d\u0960\7\u00b0") - buf.write("\2\2\u095e\u0960\7\u00b3\2\2\u095f\u095b\3\2\2\2\u095f") - buf.write("\u095c\3\2\2\2\u095f\u095d\3\2\2\2\u095f\u095e\3\2\2\2") - buf.write("\u0960\u018b\3\2\2\2\u0961\u0966\5\36\20\2\u0962\u0963") - buf.write("\7\u0085\2\2\u0963\u0965\5\36\20\2\u0964\u0962\3\2\2\2") - buf.write("\u0965\u0968\3\2\2\2\u0966\u0964\3\2\2\2\u0966\u0967\3") - buf.write("\2\2\2\u0967\u096f\3\2\2\2\u0968\u0966\3\2\2\2\u0969\u096b") - buf.write("\7\u0086\2\2\u096a\u096c\7\u00b5\2\2\u096b\u096a\3\2\2") - buf.write("\2\u096c\u096d\3\2\2\2\u096d\u096b\3\2\2\2\u096d\u096e") - buf.write("\3\2\2\2\u096e\u0970\3\2\2\2\u096f\u0969\3\2\2\2\u096f") - buf.write("\u0970\3\2\2\2\u0970\u018d\3\2\2\2\u0971\u0972\t\22\2") - buf.write("\2\u0972\u018f\3\2\2\2\u0973\u0974\7\33\2\2\u0974\u0976") - buf.write("\5\u01b4\u00db\2\u0975\u0977\5\u00e8u\2\u0976\u0975\3") - buf.write("\2\2\2\u0976\u0977\3\2\2\2\u0977\u0979\3\2\2\2\u0978\u097a") - buf.write("\5\u00ecw\2\u0979\u0978\3\2\2\2\u0979\u097a\3\2\2\2\u097a") - buf.write("\u097c\3\2\2\2\u097b\u097d\5\u00f0y\2\u097c\u097b\3\2") - buf.write("\2\2\u097c\u097d\3\2\2\2\u097d\u097e\3\2\2\2\u097e\u0980") - buf.write("\5\u00fc\177\2\u097f\u0981\7\u0087\2\2\u0980\u097f\3\2") - buf.write("\2\2\u0980\u0981\3\2\2\2\u0981\u0191\3\2\2\2\u0982\u0984") - buf.write("\t\23\2\2\u0983\u0982\3\2\2\2\u0983\u0984\3\2\2\2\u0984") - buf.write("\u0985\3\2\2\2\u0985\u0986\7]\2\2\u0986\u0988\5\u01b4") - buf.write("\u00db\2\u0987\u0989\5\u00e8u\2\u0988\u0987\3\2\2\2\u0988") - buf.write("\u0989\3\2\2\2\u0989\u098b\3\2\2\2\u098a\u098c\5\u013c") - buf.write("\u009f\2\u098b\u098a\3\2\2\2\u098b\u098c\3\2\2\2\u098c") - buf.write("\u098e\3\2\2\2\u098d\u098f\5\u00f0y\2\u098e\u098d\3\2") - buf.write("\2\2\u098e\u098f\3\2\2\2\u098f\u0990\3\2\2\2\u0990\u0992") - buf.write("\5\u013e\u00a0\2\u0991\u0993\7\u0087\2\2\u0992\u0991\3") - buf.write("\2\2\2\u0992\u0993\3\2\2\2\u0993\u0193\3\2\2\2\u0994\u0995") - buf.write("\79\2\2\u0995\u0997\5\u01b4\u00db\2\u0996\u0998\5\u0148") - buf.write("\u00a5\2\u0997\u0996\3\2\2\2\u0997\u0998\3\2\2\2\u0998") - buf.write("\u099a\3\2\2\2\u0999\u099b\5\u014e\u00a8\2\u099a\u0999") - buf.write("\3\2\2\2\u099a\u099b\3\2\2\2\u099b\u099d\3\2\2\2\u099c") - buf.write("\u099e\5\u00f0y\2\u099d\u099c\3\2\2\2\u099d\u099e\3\2") - buf.write("\2\2\u099e\u099f\3\2\2\2\u099f\u09a1\5\u00fc\177\2\u09a0") - buf.write("\u09a2\7\u0087\2\2\u09a1\u09a0\3\2\2\2\u09a1\u09a2\3\2") - buf.write("\2\2\u09a2\u0195\3\2\2\2\u09a3\u09a4\7&\2\2\u09a4\u09a6") - buf.write("\5\u01b4\u00db\2\u09a5\u09a7\5\u0156\u00ac\2\u09a6\u09a5") - buf.write("\3\2\2\2\u09a6\u09a7\3\2\2\2\u09a7\u09a8\3\2\2\2\u09a8") - buf.write("\u09aa\5\u0158\u00ad\2\u09a9\u09ab\7\u0087\2\2\u09aa\u09a9") - buf.write("\3\2\2\2\u09aa\u09ab\3\2\2\2\u09ab\u0197\3\2\2\2\u09ac") - buf.write("\u09ad\7 \2\2\u09ad\u09ae\5\u0114\u008b\2\u09ae\u09b0") - buf.write("\5\u01b4\u00db\2\u09af\u09b1\5\u0148\u00a5\2\u09b0\u09af") - buf.write("\3\2\2\2\u09b0\u09b1\3\2\2\2\u09b1\u09b2\3\2\2\2\u09b2") - buf.write("\u09b4\7\u0082\2\2\u09b3\u09b5\5\u011a\u008e\2\u09b4\u09b3") - buf.write("\3\2\2\2\u09b4\u09b5\3\2\2\2\u09b5\u09b6\3\2\2\2\u09b6") - buf.write("\u09b8\7\u0083\2\2\u09b7\u09b9\5\u00f0y\2\u09b8\u09b7") - buf.write("\3\2\2\2\u09b8\u09b9\3\2\2\2\u09b9\u09ba\3\2\2\2\u09ba") - buf.write("\u09bb\7\u0087\2\2\u09bb\u0199\3\2\2\2\u09bc\u09bd\7(") - buf.write("\2\2\u09bd\u09c6\5\6\4\2\u09be\u09bf\5\u010e\u0088\2\u09bf") - buf.write("\u09c0\7\u0087\2\2\u09c0\u09c7\3\2\2\2\u09c1\u09c2\5\u0116") - buf.write("\u008c\2\u09c2\u09c3\7~\2\2\u09c3\u09c4\5\u012e\u0098") - buf.write("\2\u09c4\u09c5\7\177\2\2\u09c5\u09c7\3\2\2\2\u09c6\u09be") - buf.write("\3\2\2\2\u09c6\u09c1\3\2\2\2\u09c7\u019b\3\2\2\2\u09c8") - buf.write("\u09c9\5\u010e\u0088\2\u09c9\u09ca\7\u0087\2\2\u09ca\u019d") - buf.write("\3\2\2\2\u09cb\u09d9\5\u0116\u008c\2\u09cc\u09cd\7~\2") - buf.write("\2\u09cd\u09ce\5\u0124\u0093\2\u09ce\u09d3\7\177\2\2\u09cf") - buf.write("\u09d0\7\u0092\2\2\u09d0\u09d1\5\u0112\u008a\2\u09d1\u09d2") - buf.write("\7\u0087\2\2\u09d2\u09d4\3\2\2\2\u09d3\u09cf\3\2\2\2\u09d3") - buf.write("\u09d4\3\2\2\2\u09d4\u09da\3\2\2\2\u09d5\u09d6\5\u0178") - buf.write("\u00bd\2\u09d6\u09d7\5L\'\2\u09d7\u09d8\7\u0087\2\2\u09d8") - buf.write("\u09da\3\2\2\2\u09d9\u09cc\3\2\2\2\u09d9\u09d5\3\2\2\2") - buf.write("\u09da\u019f\3\2\2\2\u09db\u09dc\7\34\2\2\u09dc\u09dd") - buf.write("\5\6\4\2\u09dd\u09de\5\u010a\u0086\2\u09de\u09df\7\u0087") - buf.write("\2\2\u09df\u01a1\3\2\2\2\u09e0\u09e1\7_\2\2\u09e1\u09e2") - buf.write("\7\u0080\2\2\u09e2\u09e3\5\u011a\u008e\2\u09e3\u09ec\7") - buf.write("\u0081\2\2\u09e4\u09e5\7~\2\2\u09e5\u09e6\5\u0124\u0093") - buf.write("\2\u09e6\u09e7\7\177\2\2\u09e7\u09ed\3\2\2\2\u09e8\u09e9") - buf.write("\5\u0178\u00bd\2\u09e9\u09ea\5L\'\2\u09ea\u09eb\7\u0087") - buf.write("\2\2\u09eb\u09ed\3\2\2\2\u09ec\u09e4\3\2\2\2\u09ec\u09e8") - buf.write("\3\2\2\2\u09ed\u01a3\3\2\2\2\u09ee\u09ef\7\u0091\2\2\u09ef") - buf.write("\u09f0\5\u01b4\u00db\2\u09f0\u09f1\7\u0082\2\2\u09f1\u09f2") - buf.write("\7\u0083\2\2\u09f2\u09f3\5\u013a\u009e\2\u09f3\u01a5\3") - buf.write("\2\2\2\u09f4\u09f5\5\u01b4\u00db\2\u09f5\u09f7\7\u0082") - buf.write("\2\2\u09f6\u09f8\5\u011a\u008e\2\u09f7\u09f6\3\2\2\2\u09f7") - buf.write("\u09f8\3\2\2\2\u09f8\u09f9\3\2\2\2\u09f9\u09fb\7\u0083") - buf.write("\2\2\u09fa\u09fc\5\u0138\u009d\2\u09fb\u09fa\3\2\2\2\u09fb") - buf.write("\u09fc\3\2\2\2\u09fc\u09fd\3\2\2\2\u09fd\u09fe\5\u013a") - buf.write("\u009e\2\u09fe\u01a7\3\2\2\2\u09ff\u0a01\5\u01aa\u00d6") - buf.write("\2\u0a00\u0a02\5\u00e8u\2\u0a01\u0a00\3\2\2\2\u0a01\u0a02") - buf.write("\3\2\2\2\u0a02\u0a03\3\2\2\2\u0a03\u0a05\7\u0082\2\2\u0a04") - buf.write("\u0a06\5\u011a\u008e\2\u0a05\u0a04\3\2\2\2\u0a05\u0a06") - buf.write("\3\2\2\2\u0a06\u0a07\3\2\2\2\u0a07\u0a09\7\u0083\2\2\u0a08") - buf.write("\u0a0a\5\u00f0y\2\u0a09\u0a08\3\2\2\2\u0a09\u0a0a\3\2") - buf.write("\2\2\u0a0a\u0a10\3\2\2\2\u0a0b\u0a11\5\u0118\u008d\2\u0a0c") - buf.write("\u0a0d\5\u0178\u00bd\2\u0a0d\u0a0e\5L\'\2\u0a0e\u0a0f") - buf.write("\7\u0087\2\2\u0a0f\u0a11\3\2\2\2\u0a10\u0a0b\3\2\2\2\u0a10") - buf.write("\u0a0c\3\2\2\2\u0a11\u01a9\3\2\2\2\u0a12\u0a18\5\u01b4") - buf.write("\u00db\2\u0a13\u0a14\5\u01b4\u00db\2\u0a14\u0a15\7\u0096") - buf.write("\2\2\u0a15\u0a16\5\u01b4\u00db\2\u0a16\u0a18\3\2\2\2\u0a17") - buf.write("\u0a12\3\2\2\2\u0a17\u0a13\3\2\2\2\u0a18\u0a20\3\2\2\2") - buf.write("\u0a19\u0a1b\5\30\r\2\u0a1a\u0a19\3\2\2\2\u0a1a\u0a1b") - buf.write("\3\2\2\2\u0a1b\u0a1c\3\2\2\2\u0a1c\u0a1d\7\u0084\2\2\u0a1d") - buf.write("\u0a1f\5\u01b4\u00db\2\u0a1e\u0a1a\3\2\2\2\u0a1f\u0a22") - buf.write("\3\2\2\2\u0a20\u0a1e\3\2\2\2\u0a20\u0a21\3\2\2\2\u0a21") - buf.write("\u01ab\3\2\2\2\u0a22\u0a20\3\2\2\2\u0a23\u0a24\7G\2\2") - buf.write("\u0a24\u0a25\5\u0134\u009b\2\u0a25\u0a27\7\u0082\2\2\u0a26") - buf.write("\u0a28\7\67\2\2\u0a27\u0a26\3\2\2\2\u0a27\u0a28\3\2\2") - buf.write("\2\u0a28\u0a29\3\2\2\2\u0a29\u0a2f\5\u01ae\u00d8\2\u0a2a") - buf.write("\u0a2c\7\u0085\2\2\u0a2b\u0a2d\7\67\2\2\u0a2c\u0a2b\3") - buf.write("\2\2\2\u0a2c\u0a2d\3\2\2\2\u0a2d\u0a2e\3\2\2\2\u0a2e\u0a30") - buf.write("\5\u01ae\u00d8\2\u0a2f\u0a2a\3\2\2\2\u0a2f\u0a30\3\2\2") - buf.write("\2\u0a30\u0a31\3\2\2\2\u0a31\u0a37\7\u0083\2\2\u0a32\u0a38") - buf.write("\5\u013a\u009e\2\u0a33\u0a34\5\u0178\u00bd\2\u0a34\u0a35") - buf.write("\5L\'\2\u0a35\u0a36\7\u0087\2\2\u0a36\u0a38\3\2\2\2\u0a37") - buf.write("\u0a32\3\2\2\2\u0a37\u0a33\3\2\2\2\u0a38\u01ad\3\2\2\2") - buf.write("\u0a39\u0a3a\5\6\4\2\u0a3a\u0a3d\5\u01b4\u00db\2\u0a3b") - buf.write("\u0a3c\7\u0092\2\2\u0a3c\u0a3e\5\36\20\2\u0a3d\u0a3b\3") - buf.write("\2\2\2\u0a3d\u0a3e\3\2\2\2\u0a3e\u01af\3\2\2\2\u0a3f\u0a41") - buf.write("\7\u0082\2\2\u0a40\u0a42\5\32\16\2\u0a41\u0a40\3\2\2\2") - buf.write("\u0a41\u0a42\3\2\2\2\u0a42\u0a43\3\2\2\2\u0a43\u0a44\7") - buf.write("\u0083\2\2\u0a44\u01b1\3\2\2\2\u0a45\u0a47\7\u0082\2\2") - buf.write("\u0a46\u0a48\5\32\16\2\u0a47\u0a46\3\2\2\2\u0a47\u0a48") - buf.write("\3\2\2\2\u0a48\u0a49\3\2\2\2\u0a49\u0a4b\7\u0083\2\2\u0a4a") - buf.write("\u0a4c\5Z.\2\u0a4b\u0a4a\3\2\2\2\u0a4b\u0a4c\3\2\2\2\u0a4c") - buf.write("\u01b3\3\2\2\2\u0a4d\u0a4e\t\24\2\2\u0a4e\u01b5\3\2\2") - buf.write("\2\u0159\u01b7\u01ba\u01bd\u01c2\u01c6\u01cc\u01cf\u01d4") - buf.write("\u01d8\u01df\u01e1\u01e9\u01f1\u01f7\u01fb\u0200\u020a") - buf.write("\u0212\u021c\u0222\u0225\u022d\u0232\u023c\u0249\u0251") - buf.write("\u0257\u0259\u0260\u0268\u0270\u0278\u0280\u0288\u0292") - buf.write("\u0294\u029a\u029f\u02a7\u02af\u02b7\u02b9\u02bc\u02c3") - buf.write("\u02c8\u02cf\u02d3\u02d5\u02f1\u02f5\u02fa\u02fe\u0306") - buf.write("\u0309\u030e\u0312\u0316\u031c\u032a\u0330\u033c\u0340") - buf.write("\u0345\u0349\u034f\u0357\u0360\u0372\u0375\u037a\u037d") - buf.write("\u038c\u0392\u0396\u039c\u03a1\u03a4\u03ac\u03b4\u03bf") - buf.write("\u03c4\u03c9\u03cb\u03d4\u03dc\u03e3\u03eb\u03ef\u03f8") - buf.write("\u03fd\u03ff\u0408\u0410\u0414\u0419\u041b\u0420\u0424") - buf.write("\u042b\u0433\u0435\u0439\u043c\u043f\u0447\u0451\u0462") - buf.write("\u0469\u046d\u0477\u047c\u0483\u048c\u0491\u0498\u04a4") - buf.write("\u04af\u04b7\u04bc\u04c5\u04ce\u04d7\u04dd\u04e2\u04e6") - buf.write("\u04ea\u04ee\u04f2\u04f9\u0501\u050e\u0518\u052e\u0532") - buf.write("\u0536\u053b\u054f\u0554\u0559\u0560\u0563\u0579\u0585") - buf.write("\u0589\u0591\u0599\u05a0\u05a4\u05a9\u05ac\u05b1\u05b9") - buf.write("\u05be\u05c5\u05cb\u05d3\u05db\u05de\u05e5\u05ec\u05f0") - buf.write("\u05f3\u05f9\u05fd\u0603\u0611\u0617\u061e\u0623\u0626") - buf.write("\u0629\u0630\u063a\u064b\u0650\u0654\u0657\u065a\u0661") - buf.write("\u0667\u066f\u0675\u067f\u0687\u068d\u0698\u069c\u069e") - buf.write("\u06a3\u06a7\u06ae\u06b7\u06be\u06c1\u06c4\u06c8\u06cd") - buf.write("\u06da\u06e4\u06eb\u06f7\u06fe\u070a\u0710\u0714\u0718") - buf.write("\u071e\u0724\u0726\u072d\u0731\u0734\u0738\u0742\u0745") - buf.write("\u074c\u074f\u0754\u0759\u075b\u075e\u0761\u0767\u076a") - buf.write("\u0776\u077a\u077d\u0787\u078a\u0790\u07ab\u07b8\u07be") - buf.write("\u07c7\u07cd\u07d0\u07d8\u07dc\u07e2\u07e8\u07ee\u07f9") - buf.write("\u07fd\u07ff\u0809\u080f\u0812\u081f\u0825\u0828\u082b") - buf.write("\u0832\u0837\u083b\u083f\u0850\u0853\u0858\u085c\u0860") - buf.write("\u0869\u086c\u0871\u0875\u087a\u087e\u0880\u088b\u088f") - buf.write("\u0891\u0896\u089b\u08a2\u08a8\u08ad\u08b3\u08b7\u08bd") - buf.write("\u08c4\u08ce\u08d1\u08d4\u08d9\u08df\u08e3\u08e5\u08ec") - buf.write("\u08f3\u08fb\u08ff\u090e\u0912\u091b\u091f\u0923\u0939") - buf.write("\u0941\u0947\u0950\u0959\u095f\u0966\u096d\u096f\u0976") - buf.write("\u0979\u097c\u0980\u0983\u0988\u098b\u098e\u0992\u0997") - buf.write("\u099a\u099d\u09a1\u09a6\u09aa\u09b0\u09b4\u09b8\u09c6") - buf.write("\u09d3\u09d9\u09ec\u09f7\u09fb\u0a01\u0a05\u0a09\u0a10") - buf.write("\u0a17\u0a1a\u0a20\u0a27\u0a2c\u0a2f\u0a37\u0a3d\u0a41") - buf.write("\u0a47\u0a4b") - return buf.getvalue() - - -class CSharpParser ( Parser ): + return [ + 4,1,198,2649,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,1,0, + 3,0,440,8,0,1,0,3,0,443,8,0,1,0,3,0,446,8,0,1,0,5,0,449,8,0,10,0, + 12,0,452,9,0,1,0,3,0,455,8,0,1,0,1,0,1,1,1,1,3,1,461,8,1,1,1,3,1, + 464,8,1,1,1,1,1,1,1,3,1,469,8,1,5,1,471,8,1,10,1,12,1,474,9,1,1, + 2,1,2,1,2,1,2,5,2,480,8,2,10,2,12,2,483,9,2,1,3,1,3,1,3,1,3,1,3, + 3,3,490,8,3,1,4,1,4,1,4,1,4,4,4,496,8,4,11,4,12,4,497,1,4,1,4,1, + 5,1,5,3,5,504,8,5,1,6,1,6,3,6,508,8,6,1,7,1,7,1,7,3,7,513,8,7,1, + 8,1,8,1,9,1,9,1,10,1,10,1,10,1,10,3,10,523,8,10,1,11,1,11,1,11,1, + 11,5,11,529,8,11,10,11,12,11,532,9,11,1,11,1,11,1,12,1,12,1,12,5, + 12,539,8,12,10,12,12,12,542,9,12,1,13,1,13,1,13,3,13,547,8,13,1, + 13,3,13,550,8,13,1,13,1,13,1,13,3,13,555,8,13,1,13,3,13,558,8,13, + 1,14,1,14,1,14,1,14,3,14,564,8,14,1,15,1,15,1,15,3,15,569,8,15,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,3,16,579,8,16,1,17,1,17,1, + 17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,592,8,17,1,18,1, + 18,1,18,1,18,1,18,1,18,3,18,600,8,18,1,19,1,19,1,19,1,19,3,19,606, + 8,19,3,19,608,8,19,1,20,1,20,1,20,5,20,613,8,20,10,20,12,20,616, + 9,20,1,21,1,21,1,21,5,21,621,8,21,10,21,12,21,624,9,21,1,22,1,22, + 1,22,5,22,629,8,22,10,22,12,22,632,9,22,1,23,1,23,1,23,5,23,637, + 8,23,10,23,12,23,640,9,23,1,24,1,24,1,24,5,24,645,8,24,10,24,12, + 24,648,9,24,1,25,1,25,1,25,5,25,653,8,25,10,25,12,25,656,9,25,1, + 26,1,26,1,26,1,26,1,26,1,26,1,26,5,26,665,8,26,10,26,12,26,668,9, + 26,1,27,1,27,1,27,3,27,673,8,27,1,27,5,27,676,8,27,10,27,12,27,679, + 9,27,1,28,1,28,1,28,5,28,684,8,28,10,28,12,28,687,9,28,1,29,1,29, + 1,29,5,29,692,8,29,10,29,12,29,695,9,29,1,30,1,30,1,30,1,30,1,30, + 3,30,702,8,30,3,30,704,8,30,1,30,3,30,707,8,30,1,31,1,31,1,31,5, + 31,712,8,31,10,31,12,31,715,9,31,1,32,1,32,3,32,719,8,32,1,32,1, + 32,1,32,1,33,1,33,3,33,726,8,33,1,33,1,33,3,33,730,8,33,3,33,732, + 8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34, + 1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34,756,8,34, + 1,35,1,35,1,35,1,35,1,35,1,36,1,36,3,36,765,8,36,1,36,5,36,768,8, + 36,10,36,12,36,771,9,36,1,36,3,36,774,8,36,1,36,1,36,1,36,1,36,1, + 36,1,36,3,36,782,8,36,1,36,3,36,785,8,36,1,36,5,36,788,8,36,10,36, + 12,36,791,9,36,1,36,3,36,794,8,36,5,36,796,8,36,10,36,12,36,799, + 9,36,1,37,1,37,1,37,3,37,804,8,37,1,37,1,37,1,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,3,37,818,8,37,1,37,1,37,1,37,1,37, + 3,37,824,8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,5,37,834,8, + 37,10,37,12,37,837,9,37,1,37,3,37,840,8,37,1,37,4,37,843,8,37,11, + 37,12,37,844,1,37,1,37,3,37,849,8,37,1,37,1,37,1,37,1,37,3,37,855, + 8,37,1,37,1,37,1,37,1,37,4,37,861,8,37,11,37,12,37,862,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,3,37,872,8,37,1,37,1,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,890, + 8,37,1,37,3,37,893,8,37,1,37,1,37,1,37,3,37,898,8,37,1,37,3,37,901, + 8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,5,37, + 914,8,37,10,37,12,37,917,9,37,1,37,1,37,1,37,3,37,922,8,37,1,38, + 1,38,3,38,926,8,38,1,39,1,39,1,39,1,40,3,40,932,8,40,1,40,1,40,1, + 40,3,40,937,8,40,1,41,3,41,940,8,41,1,41,1,41,1,41,1,41,5,41,946, + 8,41,10,41,12,41,949,9,41,1,41,1,41,1,42,1,42,1,42,3,42,956,8,42, + 1,42,1,42,1,43,1,43,1,44,1,44,1,44,5,44,965,8,44,10,44,12,44,968, + 9,44,1,45,1,45,3,45,972,8,45,1,46,1,46,1,46,3,46,977,8,46,3,46,979, + 8,46,1,46,1,46,1,47,1,47,1,47,5,47,986,8,47,10,47,12,47,989,9,47, + 1,48,1,48,1,48,1,48,1,48,3,48,996,8,48,1,48,1,48,1,48,1,49,1,49, + 3,49,1003,8,49,1,50,1,50,1,50,1,50,5,50,1009,8,50,10,50,12,50,1012, + 9,50,1,50,3,50,1015,8,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,3,51, + 1024,8,51,1,52,1,52,1,52,3,52,1029,8,52,3,52,1031,8,52,1,52,1,52, + 1,53,1,53,1,53,5,53,1038,8,53,10,53,12,53,1041,9,53,1,54,1,54,1, + 54,1,54,1,54,3,54,1048,8,54,1,55,1,55,3,55,1052,8,55,1,55,1,55,1, + 55,3,55,1057,8,55,3,55,1059,8,55,1,55,1,55,1,55,3,55,1064,8,55,5, + 55,1066,8,55,10,55,12,55,1069,9,55,1,56,1,56,5,56,1073,8,56,10,56, + 12,56,1076,9,56,1,56,1,56,1,57,1,57,1,57,5,57,1083,8,57,10,57,12, + 57,1086,9,57,1,57,3,57,1089,8,57,1,57,3,57,1092,8,57,1,57,3,57,1095, + 8,57,1,58,1,58,1,58,1,58,5,58,1101,8,58,10,58,12,58,1104,9,58,1, + 58,1,58,1,59,1,59,1,59,1,59,1,60,3,60,1113,8,60,1,60,1,60,1,60,1, + 60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,3,61,1130, + 8,61,1,62,1,62,1,62,5,62,1135,8,62,10,62,12,62,1138,9,62,1,63,3, + 63,1141,8,63,1,63,1,63,1,63,1,64,1,64,1,64,5,64,1149,8,64,10,64, + 12,64,1152,9,64,1,65,1,65,3,65,1156,8,65,1,66,1,66,1,66,1,67,1,67, + 3,67,1163,8,67,1,67,1,67,1,67,1,67,1,68,5,68,1170,8,68,10,68,12, + 68,1173,9,68,1,68,1,68,3,68,1177,8,68,1,69,1,69,1,69,1,69,1,69,3, + 69,1184,8,69,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,72,1,72,3, + 72,1196,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,1207, + 8,72,1,73,1,73,1,73,1,73,5,73,1213,8,73,10,73,12,73,1216,9,73,1, + 74,1,74,3,74,1220,8,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,1229, + 8,75,1,76,1,76,1,76,1,76,1,77,1,77,1,77,3,77,1238,8,77,1,78,1,78, + 1,78,1,78,1,78,1,78,1,78,3,78,1247,8,78,1,79,1,79,1,79,1,80,3,80, + 1253,8,80,1,80,1,80,1,80,3,80,1258,8,80,1,80,1,80,3,80,1262,8,80, + 1,80,1,80,3,80,1266,8,80,1,81,1,81,3,81,1270,8,81,1,81,1,81,3,81, + 1274,8,81,1,82,1,82,1,82,1,82,1,82,3,82,1281,8,82,1,83,1,83,1,83, + 1,83,1,84,1,84,3,84,1289,8,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85, + 1,85,1,85,1,85,1,85,3,85,1302,8,85,1,85,1,85,1,85,1,85,1,85,1,85, + 5,85,1310,8,85,10,85,12,85,1313,9,85,1,85,1,85,1,85,1,85,1,85,1, + 85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1, + 85,3,85,1334,8,85,1,85,1,85,3,85,1338,8,85,1,85,1,85,3,85,1342,8, + 85,1,85,1,85,1,85,3,85,1347,8,85,1,85,1,85,1,85,1,85,1,85,1,85,1, + 85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,3,85,1367, + 8,85,1,85,1,85,1,85,3,85,1372,8,85,1,85,1,85,1,85,3,85,1377,8,85, + 1,85,1,85,1,85,1,85,1,85,3,85,1384,8,85,1,85,3,85,1387,8,85,1,85, + 1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85, + 1,85,1,85,1,85,1,85,1,85,1,85,3,85,1409,8,85,1,85,1,85,1,85,1,85, + 1,85,1,85,1,85,1,85,1,85,1,85,3,85,1421,8,85,1,86,1,86,3,86,1425, + 8,86,1,86,1,86,1,87,1,87,1,87,1,87,3,87,1433,8,87,1,87,1,87,1,87, + 1,87,1,87,1,87,5,87,1441,8,87,10,87,12,87,1444,9,87,1,87,1,87,1, + 87,1,87,3,87,1450,8,87,1,88,1,88,3,88,1454,8,88,1,89,1,89,1,89,3, + 89,1459,8,89,1,89,3,89,1462,8,89,1,90,1,90,1,90,3,90,1467,8,90,1, + 91,1,91,1,91,1,91,1,92,1,92,3,92,1475,8,92,1,93,4,93,1478,8,93,11, + 93,12,93,1479,1,93,1,93,1,94,1,94,1,94,3,94,1487,8,94,1,94,1,94, + 1,94,1,94,3,94,1493,8,94,1,95,1,95,1,95,1,96,4,96,1499,8,96,11,96, + 12,96,1500,1,97,1,97,1,97,1,97,5,97,1507,8,97,10,97,12,97,1510,9, + 97,3,97,1512,8,97,1,98,1,98,1,98,5,98,1517,8,98,10,98,12,98,1520, + 9,98,1,99,1,99,5,99,1524,8,99,10,99,12,99,1527,9,99,1,99,3,99,1530, + 8,99,1,99,3,99,1533,8,99,1,100,1,100,1,100,1,100,3,100,1539,8,100, + 1,100,1,100,3,100,1543,8,100,1,100,1,100,1,101,1,101,3,101,1549, + 8,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103, + 1,104,1,104,3,104,1563,8,104,1,105,1,105,1,105,1,105,3,105,1569, + 8,105,1,106,1,106,1,106,5,106,1574,8,106,10,106,12,106,1577,9,106, + 1,107,1,107,3,107,1581,8,107,1,107,3,107,1584,8,107,1,107,3,107, + 1587,8,107,1,107,1,107,1,108,4,108,1592,8,108,11,108,12,108,1593, + 1,109,1,109,1,109,1,109,1,109,1,110,4,110,1602,8,110,11,110,12,110, + 1603,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,3,111,1621,8,111,1,112,4,112,1624, + 8,112,11,112,12,112,1625,1,113,1,113,3,113,1630,8,113,1,114,3,114, + 1633,8,114,1,114,3,114,1636,8,114,1,114,1,114,1,114,1,114,1,114, + 3,114,1643,8,114,1,115,1,115,1,115,1,115,3,115,1649,8,115,1,116, + 1,116,1,116,1,116,5,116,1655,8,116,10,116,12,116,1658,9,116,1,116, + 1,116,1,117,3,117,1663,8,117,1,117,1,117,1,118,1,118,1,118,1,118, + 5,118,1671,8,118,10,118,12,118,1674,9,118,1,119,1,119,1,119,5,119, + 1679,8,119,10,119,12,119,1682,9,119,1,120,4,120,1685,8,120,11,120, + 12,120,1686,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122, + 3,122,1698,8,122,1,122,1,122,3,122,1702,8,122,3,122,1704,8,122,1, + 123,1,123,1,123,3,123,1709,8,123,1,123,1,123,3,123,1713,8,123,1, + 124,1,124,1,124,5,124,1718,8,124,10,124,12,124,1721,9,124,1,125, + 1,125,1,125,1,125,1,126,1,126,3,126,1729,8,126,1,126,1,126,1,127, + 4,127,1734,8,127,11,127,12,127,1735,1,128,3,128,1739,8,128,1,128, + 3,128,1742,8,128,1,128,1,128,3,128,1746,8,128,1,129,4,129,1749,8, + 129,11,129,12,129,1750,1,130,1,130,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,3,131,1764,8,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,3,131,1774,8,131,1,132,1,132,1,132,1,132, + 1,132,3,132,1781,8,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, + 1,132,1,132,1,132,3,132,1793,8,132,1,133,1,133,1,133,5,133,1798, + 8,133,10,133,12,133,1801,9,133,1,134,1,134,1,134,1,134,1,135,1,135, + 1,135,5,135,1810,8,135,10,135,12,135,1813,9,135,1,136,1,136,1,136, + 3,136,1818,8,136,1,137,1,137,3,137,1822,8,137,1,138,1,138,3,138, + 1826,8,138,1,139,1,139,1,140,1,140,3,140,1832,8,140,1,141,1,141, + 1,141,1,141,3,141,1838,8,141,3,141,1840,8,141,1,142,1,142,1,142, + 5,142,1845,8,142,10,142,12,142,1848,9,142,1,143,3,143,1851,8,143, + 1,143,3,143,1854,8,143,1,143,1,143,3,143,1858,8,143,1,144,1,144, + 1,144,1,144,1,144,1,144,1,144,1,144,3,144,1868,8,144,1,145,3,145, + 1871,8,145,1,145,1,145,1,145,1,145,1,146,3,146,1878,8,146,1,146, + 3,146,1881,8,146,1,146,1,146,1,146,3,146,1886,8,146,1,146,1,146, + 1,146,3,146,1891,8,146,3,146,1893,8,146,1,147,3,147,1896,8,147,1, + 147,3,147,1899,8,147,1,147,1,147,1,147,1,148,3,148,1905,8,148,1, + 148,3,148,1908,8,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1, + 149,1,149,1,149,3,149,1920,8,149,1,150,1,150,3,150,1924,8,150,1, + 151,3,151,1927,8,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1, + 151,3,151,1937,8,151,1,152,3,152,1940,8,152,1,152,1,152,1,152,1, + 153,3,153,1946,8,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1, + 154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,1,154,3,154,1973,8,154,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,3,156, + 1986,8,156,1,156,1,156,1,157,1,157,3,157,1992,8,157,1,158,1,158, + 1,158,1,159,1,159,5,159,1999,8,159,10,159,12,159,2002,9,159,1,159, + 1,159,1,160,3,160,2007,8,160,1,160,3,160,2010,8,160,1,160,1,160, + 1,160,1,160,4,160,2016,8,160,11,160,12,160,2017,1,160,1,160,3,160, + 2022,8,160,1,161,1,161,5,161,2026,8,161,10,161,12,161,2029,9,161, + 1,161,4,161,2032,8,161,11,161,12,161,2033,1,162,1,162,5,162,2038, + 8,162,10,162,12,162,2041,9,162,1,162,1,162,1,163,1,163,1,163,1,163, + 5,163,2049,8,163,10,163,12,163,2052,9,163,1,163,3,163,2055,8,163, + 3,163,2057,8,163,1,163,1,163,1,164,1,164,1,164,1,164,5,164,2065, + 8,164,10,164,12,164,2068,9,164,1,164,1,164,1,165,3,165,2073,8,165, + 1,165,3,165,2076,8,165,1,165,1,165,1,166,1,166,1,167,1,167,1,167, + 1,168,1,168,5,168,2087,8,168,10,168,12,168,2090,9,168,1,168,1,168, + 1,169,3,169,2095,8,169,1,169,3,169,2098,8,169,1,169,3,169,2101,8, + 169,1,169,1,169,1,169,1,169,1,169,3,169,2108,8,169,1,169,1,169,1, + 169,3,169,2113,8,169,1,169,1,169,3,169,2117,8,169,1,169,1,169,3, + 169,2121,8,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1, + 169,1,169,1,169,1,169,1,169,1,169,1,169,3,169,2138,8,169,1,169,3, + 169,2141,8,169,1,169,1,169,1,169,3,169,2146,8,169,1,169,1,169,3, + 169,2150,8,169,1,169,1,169,3,169,2154,8,169,1,169,1,169,1,169,1, + 169,1,169,1,169,1,169,3,169,2163,8,169,1,170,3,170,2166,8,170,1, + 170,1,170,1,170,3,170,2171,8,170,1,170,1,170,3,170,2175,8,170,1, + 170,1,170,1,170,3,170,2180,8,170,1,170,1,170,3,170,2184,8,170,3, + 170,2186,8,170,1,171,1,171,1,171,1,172,1,172,1,172,1,172,5,172,2195, + 8,172,10,172,12,172,2198,9,172,1,172,3,172,2201,8,172,3,172,2203, + 8,172,1,172,1,172,1,173,3,173,2208,8,173,1,173,1,173,1,173,3,173, + 2213,8,173,1,174,1,174,1,174,1,174,1,174,3,174,2220,8,174,1,174, + 1,174,1,175,1,175,3,175,2226,8,175,1,176,4,176,2229,8,176,11,176, + 12,176,2230,1,177,1,177,1,177,1,177,3,177,2237,8,177,1,177,1,177, + 3,177,2241,8,177,1,177,1,177,1,178,1,178,3,178,2247,8,178,1,179, + 1,179,1,179,5,179,2252,8,179,10,179,12,179,2255,9,179,1,180,1,180, + 1,180,1,180,1,180,5,180,2262,8,180,10,180,12,180,2265,9,180,3,180, + 2267,8,180,1,180,3,180,2270,8,180,1,181,1,181,1,181,3,181,2275,8, + 181,1,181,1,181,1,182,1,182,3,182,2281,8,182,1,182,1,182,5,182,2285, + 8,182,10,182,12,182,2288,9,182,1,182,1,182,1,182,1,182,3,182,2294, + 8,182,1,183,1,183,1,183,5,183,2299,8,183,10,183,12,183,2302,9,183, + 1,184,1,184,1,184,1,184,1,185,3,185,2309,8,185,1,185,1,185,3,185, + 2313,8,185,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187, + 1,187,1,187,1,187,1,187,3,187,2328,8,187,1,187,1,187,3,187,2332, + 8,187,1,187,1,187,1,187,1,187,1,187,5,187,2339,8,187,10,187,12,187, + 2342,9,187,1,187,3,187,2345,8,187,1,187,1,187,3,187,2349,8,187,1, + 188,1,188,1,188,1,188,1,189,1,189,1,189,1,189,1,190,1,190,1,190, + 1,190,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,3,191,2371, + 8,191,1,192,1,192,1,193,1,193,1,193,1,193,3,193,2379,8,193,1,194, + 1,194,5,194,2383,8,194,10,194,12,194,2386,9,194,1,194,1,194,1,195, + 1,195,5,195,2392,8,195,10,195,12,195,2395,9,195,1,195,1,195,1,196, + 1,196,1,196,1,196,3,196,2403,8,196,1,197,1,197,1,197,1,197,3,197, + 2409,8,197,1,198,1,198,1,198,5,198,2414,8,198,10,198,12,198,2417, + 9,198,1,198,1,198,4,198,2421,8,198,11,198,12,198,2422,3,198,2425, + 8,198,1,199,1,199,1,200,1,200,1,200,3,200,2432,8,200,1,200,3,200, + 2435,8,200,1,200,3,200,2438,8,200,1,200,1,200,3,200,2442,8,200,1, + 201,3,201,2445,8,201,1,201,1,201,1,201,3,201,2450,8,201,1,201,3, + 201,2453,8,201,1,201,3,201,2456,8,201,1,201,1,201,3,201,2460,8,201, + 1,202,1,202,1,202,3,202,2465,8,202,1,202,3,202,2468,8,202,1,202, + 3,202,2471,8,202,1,202,1,202,3,202,2475,8,202,1,203,1,203,1,203, + 3,203,2480,8,203,1,203,1,203,3,203,2484,8,203,1,204,1,204,1,204, + 1,204,3,204,2490,8,204,1,204,1,204,3,204,2494,8,204,1,204,1,204, + 3,204,2498,8,204,1,204,1,204,1,205,1,205,1,205,1,205,1,205,1,205, + 1,205,1,205,1,205,1,205,3,205,2512,8,205,1,206,1,206,1,206,1,207, + 1,207,1,207,1,207,1,207,1,207,1,207,1,207,3,207,2525,8,207,1,207, + 1,207,1,207,1,207,3,207,2531,8,207,1,208,1,208,1,208,1,208,1,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,3,209,2550,8,209,1,210,1,210,1,210,1,210,1,210,1,210,1,211, + 1,211,1,211,3,211,2561,8,211,1,211,1,211,3,211,2565,8,211,1,211, + 1,211,1,212,1,212,3,212,2571,8,212,1,212,1,212,3,212,2575,8,212, + 1,212,1,212,3,212,2579,8,212,1,212,1,212,1,212,1,212,1,212,3,212, + 2586,8,212,1,213,1,213,1,213,1,213,1,213,3,213,2593,8,213,1,213, + 3,213,2596,8,213,1,213,1,213,5,213,2600,8,213,10,213,12,213,2603, + 9,213,1,214,1,214,1,214,1,214,3,214,2609,8,214,1,214,1,214,1,214, + 3,214,2614,8,214,1,214,3,214,2617,8,214,1,214,1,214,1,214,1,214, + 1,214,1,214,3,214,2625,8,214,1,215,1,215,1,215,1,215,3,215,2631, + 8,215,1,216,1,216,3,216,2635,8,216,1,216,1,216,1,217,1,217,3,217, + 2641,8,217,1,217,1,217,3,217,2645,8,217,1,218,1,218,1,218,0,0,219, + 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,0,19,8,0,21,21,24, + 24,55,55,63,63,83,83,87,87,99,100,104,104,2,0,34,34,45,45,3,0,54, + 54,72,72,80,80,1,0,156,157,2,0,146,147,158,159,1,0,135,136,1,0,137, + 139,14,0,18,18,21,21,24,24,29,29,34,34,45,45,55,55,63,63,68,68,83, + 83,87,87,91,91,99,100,104,104,2,0,14,14,32,32,2,0,15,15,103,103, + 12,0,9,9,15,15,41,41,57,57,66,66,73,73,75,79,84,84,90,90,103,103, + 107,107,109,109,2,0,40,40,53,53,2,0,17,17,94,94,2,0,137,137,148, + 148,2,0,54,54,72,72,2,0,42,42,96,96,19,0,9,9,13,13,17,19,21,31,33, + 34,36,37,39,47,50,50,52,57,59,59,62,63,65,68,70,70,72,74,76,80,82, + 84,87,105,107,109,112,112,1,0,79,80,20,0,10,12,14,16,20,20,32,32, + 35,35,38,38,48,49,51,51,58,58,60,61,64,64,69,69,71,71,75,75,81,81, + 85,86,102,102,106,106,110,111,113,114,2918,0,439,1,0,0,0,2,463,1, + 0,0,0,4,475,1,0,0,0,6,489,1,0,0,0,8,491,1,0,0,0,10,501,1,0,0,0,12, + 507,1,0,0,0,14,512,1,0,0,0,16,514,1,0,0,0,18,516,1,0,0,0,20,522, + 1,0,0,0,22,524,1,0,0,0,24,535,1,0,0,0,26,546,1,0,0,0,28,563,1,0, + 0,0,30,568,1,0,0,0,32,578,1,0,0,0,34,591,1,0,0,0,36,593,1,0,0,0, + 38,601,1,0,0,0,40,609,1,0,0,0,42,617,1,0,0,0,44,625,1,0,0,0,46,633, + 1,0,0,0,48,641,1,0,0,0,50,649,1,0,0,0,52,657,1,0,0,0,54,669,1,0, + 0,0,56,680,1,0,0,0,58,688,1,0,0,0,60,696,1,0,0,0,62,708,1,0,0,0, + 64,716,1,0,0,0,66,731,1,0,0,0,68,755,1,0,0,0,70,757,1,0,0,0,72,762, + 1,0,0,0,74,921,1,0,0,0,76,925,1,0,0,0,78,927,1,0,0,0,80,931,1,0, + 0,0,82,939,1,0,0,0,84,955,1,0,0,0,86,959,1,0,0,0,88,961,1,0,0,0, + 90,971,1,0,0,0,92,973,1,0,0,0,94,982,1,0,0,0,96,995,1,0,0,0,98,1002, + 1,0,0,0,100,1004,1,0,0,0,102,1023,1,0,0,0,104,1025,1,0,0,0,106,1034, + 1,0,0,0,108,1047,1,0,0,0,110,1049,1,0,0,0,112,1070,1,0,0,0,114,1079, + 1,0,0,0,116,1096,1,0,0,0,118,1107,1,0,0,0,120,1112,1,0,0,0,122,1129, + 1,0,0,0,124,1131,1,0,0,0,126,1140,1,0,0,0,128,1145,1,0,0,0,130,1155, + 1,0,0,0,132,1157,1,0,0,0,134,1160,1,0,0,0,136,1171,1,0,0,0,138,1183, + 1,0,0,0,140,1185,1,0,0,0,142,1190,1,0,0,0,144,1193,1,0,0,0,146,1208, + 1,0,0,0,148,1217,1,0,0,0,150,1228,1,0,0,0,152,1230,1,0,0,0,154,1237, + 1,0,0,0,156,1246,1,0,0,0,158,1248,1,0,0,0,160,1252,1,0,0,0,162,1273, + 1,0,0,0,164,1280,1,0,0,0,166,1282,1,0,0,0,168,1288,1,0,0,0,170,1420, + 1,0,0,0,172,1422,1,0,0,0,174,1449,1,0,0,0,176,1453,1,0,0,0,178,1455, + 1,0,0,0,180,1466,1,0,0,0,182,1468,1,0,0,0,184,1474,1,0,0,0,186,1477, + 1,0,0,0,188,1492,1,0,0,0,190,1494,1,0,0,0,192,1498,1,0,0,0,194,1511, + 1,0,0,0,196,1513,1,0,0,0,198,1532,1,0,0,0,200,1534,1,0,0,0,202,1546, + 1,0,0,0,204,1552,1,0,0,0,206,1557,1,0,0,0,208,1562,1,0,0,0,210,1564, + 1,0,0,0,212,1570,1,0,0,0,214,1578,1,0,0,0,216,1591,1,0,0,0,218,1595, + 1,0,0,0,220,1601,1,0,0,0,222,1620,1,0,0,0,224,1623,1,0,0,0,226,1629, + 1,0,0,0,228,1632,1,0,0,0,230,1644,1,0,0,0,232,1650,1,0,0,0,234,1662, + 1,0,0,0,236,1666,1,0,0,0,238,1675,1,0,0,0,240,1684,1,0,0,0,242,1688, + 1,0,0,0,244,1703,1,0,0,0,246,1712,1,0,0,0,248,1714,1,0,0,0,250,1722, + 1,0,0,0,252,1726,1,0,0,0,254,1733,1,0,0,0,256,1738,1,0,0,0,258,1748, + 1,0,0,0,260,1752,1,0,0,0,262,1773,1,0,0,0,264,1780,1,0,0,0,266,1794, + 1,0,0,0,268,1802,1,0,0,0,270,1806,1,0,0,0,272,1814,1,0,0,0,274,1821, + 1,0,0,0,276,1825,1,0,0,0,278,1827,1,0,0,0,280,1831,1,0,0,0,282,1839, + 1,0,0,0,284,1841,1,0,0,0,286,1857,1,0,0,0,288,1867,1,0,0,0,290,1870, + 1,0,0,0,292,1877,1,0,0,0,294,1895,1,0,0,0,296,1904,1,0,0,0,298,1919, + 1,0,0,0,300,1923,1,0,0,0,302,1926,1,0,0,0,304,1939,1,0,0,0,306,1945, + 1,0,0,0,308,1972,1,0,0,0,310,1974,1,0,0,0,312,1981,1,0,0,0,314,1991, + 1,0,0,0,316,1993,1,0,0,0,318,1996,1,0,0,0,320,2006,1,0,0,0,322,2023, + 1,0,0,0,324,2035,1,0,0,0,326,2044,1,0,0,0,328,2060,1,0,0,0,330,2072, + 1,0,0,0,332,2079,1,0,0,0,334,2081,1,0,0,0,336,2084,1,0,0,0,338,2094, + 1,0,0,0,340,2165,1,0,0,0,342,2187,1,0,0,0,344,2190,1,0,0,0,346,2207, + 1,0,0,0,348,2214,1,0,0,0,350,2225,1,0,0,0,352,2228,1,0,0,0,354,2232, + 1,0,0,0,356,2246,1,0,0,0,358,2248,1,0,0,0,360,2256,1,0,0,0,362,2274, + 1,0,0,0,364,2293,1,0,0,0,366,2295,1,0,0,0,368,2303,1,0,0,0,370,2312, + 1,0,0,0,372,2314,1,0,0,0,374,2348,1,0,0,0,376,2350,1,0,0,0,378,2354, + 1,0,0,0,380,2358,1,0,0,0,382,2370,1,0,0,0,384,2372,1,0,0,0,386,2378, + 1,0,0,0,388,2380,1,0,0,0,390,2389,1,0,0,0,392,2402,1,0,0,0,394,2408, + 1,0,0,0,396,2410,1,0,0,0,398,2426,1,0,0,0,400,2428,1,0,0,0,402,2444, + 1,0,0,0,404,2461,1,0,0,0,406,2476,1,0,0,0,408,2485,1,0,0,0,410,2501, + 1,0,0,0,412,2513,1,0,0,0,414,2516,1,0,0,0,416,2532,1,0,0,0,418,2537, + 1,0,0,0,420,2551,1,0,0,0,422,2557,1,0,0,0,424,2568,1,0,0,0,426,2592, + 1,0,0,0,428,2604,1,0,0,0,430,2626,1,0,0,0,432,2632,1,0,0,0,434,2638, + 1,0,0,0,436,2646,1,0,0,0,438,440,5,1,0,0,439,438,1,0,0,0,439,440, + 1,0,0,0,440,442,1,0,0,0,441,443,3,216,108,0,442,441,1,0,0,0,442, + 443,1,0,0,0,443,445,1,0,0,0,444,446,3,220,110,0,445,444,1,0,0,0, + 445,446,1,0,0,0,446,450,1,0,0,0,447,449,3,348,174,0,448,447,1,0, + 0,0,449,452,1,0,0,0,450,448,1,0,0,0,450,451,1,0,0,0,451,454,1,0, + 0,0,452,450,1,0,0,0,453,455,3,224,112,0,454,453,1,0,0,0,454,455, + 1,0,0,0,455,456,1,0,0,0,456,457,5,0,0,1,457,1,1,0,0,0,458,460,3, + 436,218,0,459,461,3,22,11,0,460,459,1,0,0,0,460,461,1,0,0,0,461, + 464,1,0,0,0,462,464,3,230,115,0,463,458,1,0,0,0,463,462,1,0,0,0, + 464,472,1,0,0,0,465,466,5,131,0,0,466,468,3,436,218,0,467,469,3, + 22,11,0,468,467,1,0,0,0,468,469,1,0,0,0,469,471,1,0,0,0,470,465, + 1,0,0,0,471,474,1,0,0,0,472,470,1,0,0,0,472,473,1,0,0,0,473,3,1, + 0,0,0,474,472,1,0,0,0,475,481,3,6,3,0,476,480,5,148,0,0,477,480, + 3,324,162,0,478,480,5,137,0,0,479,476,1,0,0,0,479,477,1,0,0,0,479, + 478,1,0,0,0,480,483,1,0,0,0,481,479,1,0,0,0,481,482,1,0,0,0,482, + 5,1,0,0,0,483,481,1,0,0,0,484,490,3,12,6,0,485,490,3,20,10,0,486, + 487,5,108,0,0,487,490,5,137,0,0,488,490,3,8,4,0,489,484,1,0,0,0, + 489,485,1,0,0,0,489,486,1,0,0,0,489,488,1,0,0,0,490,7,1,0,0,0,491, + 492,5,129,0,0,492,495,3,10,5,0,493,494,5,132,0,0,494,496,3,10,5, + 0,495,493,1,0,0,0,496,497,1,0,0,0,497,495,1,0,0,0,497,498,1,0,0, + 0,498,499,1,0,0,0,499,500,5,130,0,0,500,9,1,0,0,0,501,503,3,4,2, + 0,502,504,3,436,218,0,503,502,1,0,0,0,503,504,1,0,0,0,504,11,1,0, + 0,0,505,508,3,14,7,0,506,508,5,18,0,0,507,505,1,0,0,0,507,506,1, + 0,0,0,508,13,1,0,0,0,509,513,3,16,8,0,510,513,3,18,9,0,511,513,5, + 29,0,0,512,509,1,0,0,0,512,510,1,0,0,0,512,511,1,0,0,0,513,15,1, + 0,0,0,514,515,7,0,0,0,515,17,1,0,0,0,516,517,7,1,0,0,517,19,1,0, + 0,0,518,523,3,2,1,0,519,523,5,68,0,0,520,523,5,35,0,0,521,523,5, + 91,0,0,522,518,1,0,0,0,522,519,1,0,0,0,522,520,1,0,0,0,522,521,1, + 0,0,0,523,21,1,0,0,0,524,525,5,146,0,0,525,530,3,4,2,0,526,527,5, + 132,0,0,527,529,3,4,2,0,528,526,1,0,0,0,529,532,1,0,0,0,530,528, + 1,0,0,0,530,531,1,0,0,0,531,533,1,0,0,0,532,530,1,0,0,0,533,534, + 5,147,0,0,534,23,1,0,0,0,535,540,3,26,13,0,536,537,5,132,0,0,537, + 539,3,26,13,0,538,536,1,0,0,0,539,542,1,0,0,0,540,538,1,0,0,0,540, + 541,1,0,0,0,541,25,1,0,0,0,542,540,1,0,0,0,543,544,3,436,218,0,544, + 545,5,133,0,0,545,547,1,0,0,0,546,543,1,0,0,0,546,547,1,0,0,0,547, + 549,1,0,0,0,548,550,7,2,0,0,549,548,1,0,0,0,549,550,1,0,0,0,550, + 557,1,0,0,0,551,558,3,28,14,0,552,555,5,106,0,0,553,555,3,4,2,0, + 554,552,1,0,0,0,554,553,1,0,0,0,555,556,1,0,0,0,556,558,3,28,14, + 0,557,551,1,0,0,0,557,554,1,0,0,0,558,27,1,0,0,0,559,564,3,32,16, + 0,560,564,3,30,15,0,561,562,5,80,0,0,562,564,3,30,15,0,563,559,1, + 0,0,0,563,560,1,0,0,0,563,561,1,0,0,0,564,29,1,0,0,0,565,569,3,120, + 60,0,566,569,3,132,66,0,567,569,3,36,18,0,568,565,1,0,0,0,568,566, + 1,0,0,0,568,567,1,0,0,0,569,31,1,0,0,0,570,571,3,68,34,0,571,572, + 3,34,17,0,572,573,3,28,14,0,573,579,1,0,0,0,574,575,3,68,34,0,575, + 576,5,170,0,0,576,577,3,76,38,0,577,579,1,0,0,0,578,570,1,0,0,0, + 578,574,1,0,0,0,579,33,1,0,0,0,580,592,5,145,0,0,581,592,5,160,0, + 0,582,592,5,161,0,0,583,592,5,162,0,0,584,592,5,163,0,0,585,592, + 5,164,0,0,586,592,5,165,0,0,587,592,5,166,0,0,588,592,5,167,0,0, + 589,592,5,169,0,0,590,592,3,380,190,0,591,580,1,0,0,0,591,581,1, + 0,0,0,591,582,1,0,0,0,591,583,1,0,0,0,591,584,1,0,0,0,591,585,1, + 0,0,0,591,586,1,0,0,0,591,587,1,0,0,0,591,588,1,0,0,0,591,589,1, + 0,0,0,591,590,1,0,0,0,592,35,1,0,0,0,593,599,3,38,19,0,594,595,5, + 148,0,0,595,596,3,76,38,0,596,597,5,133,0,0,597,598,3,76,38,0,598, + 600,1,0,0,0,599,594,1,0,0,0,599,600,1,0,0,0,600,37,1,0,0,0,601,607, + 3,40,20,0,602,605,5,150,0,0,603,606,3,38,19,0,604,606,3,78,39,0, + 605,603,1,0,0,0,605,604,1,0,0,0,606,608,1,0,0,0,607,602,1,0,0,0, + 607,608,1,0,0,0,608,39,1,0,0,0,609,614,3,42,21,0,610,611,5,154,0, + 0,611,613,3,42,21,0,612,610,1,0,0,0,613,616,1,0,0,0,614,612,1,0, + 0,0,614,615,1,0,0,0,615,41,1,0,0,0,616,614,1,0,0,0,617,622,3,44, + 22,0,618,619,5,153,0,0,619,621,3,44,22,0,620,618,1,0,0,0,621,624, + 1,0,0,0,622,620,1,0,0,0,622,623,1,0,0,0,623,43,1,0,0,0,624,622,1, + 0,0,0,625,630,3,46,23,0,626,627,5,141,0,0,627,629,3,46,23,0,628, + 626,1,0,0,0,629,632,1,0,0,0,630,628,1,0,0,0,630,631,1,0,0,0,631, + 45,1,0,0,0,632,630,1,0,0,0,633,638,3,48,24,0,634,635,5,142,0,0,635, + 637,3,48,24,0,636,634,1,0,0,0,637,640,1,0,0,0,638,636,1,0,0,0,638, + 639,1,0,0,0,639,47,1,0,0,0,640,638,1,0,0,0,641,646,3,50,25,0,642, + 643,5,140,0,0,643,645,3,50,25,0,644,642,1,0,0,0,645,648,1,0,0,0, + 646,644,1,0,0,0,646,647,1,0,0,0,647,49,1,0,0,0,648,646,1,0,0,0,649, + 654,3,52,26,0,650,651,7,3,0,0,651,653,3,52,26,0,652,650,1,0,0,0, + 653,656,1,0,0,0,654,652,1,0,0,0,654,655,1,0,0,0,655,51,1,0,0,0,656, + 654,1,0,0,0,657,666,3,54,27,0,658,659,7,4,0,0,659,665,3,54,27,0, + 660,661,5,59,0,0,661,665,3,114,57,0,662,663,5,13,0,0,663,665,3,4, + 2,0,664,658,1,0,0,0,664,660,1,0,0,0,664,662,1,0,0,0,665,668,1,0, + 0,0,666,664,1,0,0,0,666,667,1,0,0,0,667,53,1,0,0,0,668,666,1,0,0, + 0,669,677,3,56,28,0,670,673,5,168,0,0,671,673,3,378,189,0,672,670, + 1,0,0,0,672,671,1,0,0,0,673,674,1,0,0,0,674,676,3,56,28,0,675,672, + 1,0,0,0,676,679,1,0,0,0,677,675,1,0,0,0,677,678,1,0,0,0,678,55,1, + 0,0,0,679,677,1,0,0,0,680,685,3,58,29,0,681,682,7,5,0,0,682,684, + 3,58,29,0,683,681,1,0,0,0,684,687,1,0,0,0,685,683,1,0,0,0,685,686, + 1,0,0,0,686,57,1,0,0,0,687,685,1,0,0,0,688,693,3,60,30,0,689,690, + 7,6,0,0,690,692,3,60,30,0,691,689,1,0,0,0,692,695,1,0,0,0,693,691, + 1,0,0,0,693,694,1,0,0,0,694,59,1,0,0,0,695,693,1,0,0,0,696,706,3, + 66,33,0,697,698,5,93,0,0,698,703,5,125,0,0,699,701,3,62,31,0,700, + 702,5,132,0,0,701,700,1,0,0,0,701,702,1,0,0,0,702,704,1,0,0,0,703, + 699,1,0,0,0,703,704,1,0,0,0,704,705,1,0,0,0,705,707,5,126,0,0,706, + 697,1,0,0,0,706,707,1,0,0,0,707,61,1,0,0,0,708,713,3,64,32,0,709, + 710,5,132,0,0,710,712,3,64,32,0,711,709,1,0,0,0,712,715,1,0,0,0, + 713,711,1,0,0,0,713,714,1,0,0,0,714,63,1,0,0,0,715,713,1,0,0,0,716, + 718,3,28,14,0,717,719,3,190,95,0,718,717,1,0,0,0,718,719,1,0,0,0, + 719,720,1,0,0,0,720,721,3,376,188,0,721,722,3,76,38,0,722,65,1,0, + 0,0,723,732,3,68,34,0,724,726,3,68,34,0,725,724,1,0,0,0,725,726, + 1,0,0,0,726,727,1,0,0,0,727,729,5,171,0,0,728,730,3,68,34,0,729, + 728,1,0,0,0,729,730,1,0,0,0,730,732,1,0,0,0,731,723,1,0,0,0,731, + 725,1,0,0,0,732,67,1,0,0,0,733,756,3,70,35,0,734,756,3,72,36,0,735, + 736,5,135,0,0,736,756,3,68,34,0,737,738,5,136,0,0,738,756,3,68,34, + 0,739,740,5,143,0,0,740,756,3,68,34,0,741,742,5,144,0,0,742,756, + 3,68,34,0,743,744,5,151,0,0,744,756,3,68,34,0,745,746,5,152,0,0, + 746,756,3,68,34,0,747,748,5,16,0,0,748,756,3,68,34,0,749,750,5,140, + 0,0,750,756,3,68,34,0,751,752,5,137,0,0,752,756,3,68,34,0,753,754, + 5,142,0,0,754,756,3,68,34,0,755,733,1,0,0,0,755,734,1,0,0,0,755, + 735,1,0,0,0,755,737,1,0,0,0,755,739,1,0,0,0,755,741,1,0,0,0,755, + 743,1,0,0,0,755,745,1,0,0,0,755,747,1,0,0,0,755,749,1,0,0,0,755, + 751,1,0,0,0,755,753,1,0,0,0,756,69,1,0,0,0,757,758,5,129,0,0,758, + 759,3,4,2,0,759,760,5,130,0,0,760,761,3,68,34,0,761,71,1,0,0,0,762, + 764,3,74,37,0,763,765,5,143,0,0,764,763,1,0,0,0,764,765,1,0,0,0, + 765,769,1,0,0,0,766,768,3,82,41,0,767,766,1,0,0,0,768,771,1,0,0, + 0,769,767,1,0,0,0,769,770,1,0,0,0,770,773,1,0,0,0,771,769,1,0,0, + 0,772,774,5,143,0,0,773,772,1,0,0,0,773,774,1,0,0,0,774,797,1,0, + 0,0,775,782,3,80,40,0,776,782,3,432,216,0,777,782,5,151,0,0,778, + 782,5,152,0,0,779,780,5,155,0,0,780,782,3,436,218,0,781,775,1,0, + 0,0,781,776,1,0,0,0,781,777,1,0,0,0,781,778,1,0,0,0,781,779,1,0, + 0,0,782,784,1,0,0,0,783,785,5,143,0,0,784,783,1,0,0,0,784,785,1, + 0,0,0,785,789,1,0,0,0,786,788,3,82,41,0,787,786,1,0,0,0,788,791, + 1,0,0,0,789,787,1,0,0,0,789,790,1,0,0,0,790,793,1,0,0,0,791,789, + 1,0,0,0,792,794,5,143,0,0,793,792,1,0,0,0,793,794,1,0,0,0,794,796, + 1,0,0,0,795,781,1,0,0,0,796,799,1,0,0,0,797,795,1,0,0,0,797,798, + 1,0,0,0,798,73,1,0,0,0,799,797,1,0,0,0,800,922,3,382,191,0,801,803, + 3,436,218,0,802,804,3,22,11,0,803,802,1,0,0,0,803,804,1,0,0,0,804, + 922,1,0,0,0,805,806,5,129,0,0,806,807,3,28,14,0,807,808,5,130,0, + 0,808,922,1,0,0,0,809,922,3,86,43,0,810,922,3,230,115,0,811,922, + 5,115,0,0,812,922,5,94,0,0,813,823,5,17,0,0,814,815,5,131,0,0,815, + 817,3,436,218,0,816,818,3,22,11,0,817,816,1,0,0,0,817,818,1,0,0, + 0,818,824,1,0,0,0,819,820,5,127,0,0,820,821,3,88,44,0,821,822,5, + 128,0,0,822,824,1,0,0,0,823,814,1,0,0,0,823,819,1,0,0,0,824,922, + 1,0,0,0,825,854,5,66,0,0,826,848,3,4,2,0,827,849,3,434,217,0,828, + 849,3,90,45,0,829,830,5,127,0,0,830,831,3,88,44,0,831,835,5,128, + 0,0,832,834,3,324,162,0,833,832,1,0,0,0,834,837,1,0,0,0,835,833, + 1,0,0,0,835,836,1,0,0,0,836,839,1,0,0,0,837,835,1,0,0,0,838,840, + 3,326,163,0,839,838,1,0,0,0,839,840,1,0,0,0,840,849,1,0,0,0,841, + 843,3,324,162,0,842,841,1,0,0,0,843,844,1,0,0,0,844,842,1,0,0,0, + 844,845,1,0,0,0,845,846,1,0,0,0,846,847,3,326,163,0,847,849,1,0, + 0,0,848,827,1,0,0,0,848,828,1,0,0,0,848,829,1,0,0,0,848,842,1,0, + 0,0,849,855,1,0,0,0,850,855,3,104,52,0,851,852,3,324,162,0,852,853, + 3,326,163,0,853,855,1,0,0,0,854,826,1,0,0,0,854,850,1,0,0,0,854, + 851,1,0,0,0,855,922,1,0,0,0,856,857,5,129,0,0,857,860,3,26,13,0, + 858,859,5,132,0,0,859,861,3,26,13,0,860,858,1,0,0,0,861,862,1,0, + 0,0,862,860,1,0,0,0,862,863,1,0,0,0,863,864,1,0,0,0,864,865,5,130, + 0,0,865,922,1,0,0,0,866,867,5,98,0,0,867,871,5,129,0,0,868,872,3, + 110,55,0,869,872,3,4,2,0,870,872,5,108,0,0,871,868,1,0,0,0,871,869, + 1,0,0,0,871,870,1,0,0,0,872,873,1,0,0,0,873,922,5,130,0,0,874,875, + 5,25,0,0,875,876,5,129,0,0,876,877,3,28,14,0,877,878,5,130,0,0,878, + 922,1,0,0,0,879,880,5,101,0,0,880,881,5,129,0,0,881,882,3,28,14, + 0,882,883,5,130,0,0,883,922,1,0,0,0,884,889,5,30,0,0,885,886,5,129, + 0,0,886,887,3,4,2,0,887,888,5,130,0,0,888,890,1,0,0,0,889,885,1, + 0,0,0,889,890,1,0,0,0,890,922,1,0,0,0,891,893,5,15,0,0,892,891,1, + 0,0,0,892,893,1,0,0,0,893,894,1,0,0,0,894,900,5,31,0,0,895,897,5, + 129,0,0,896,898,3,124,62,0,897,896,1,0,0,0,897,898,1,0,0,0,898,899, + 1,0,0,0,899,901,5,130,0,0,900,895,1,0,0,0,900,901,1,0,0,0,901,902, + 1,0,0,0,902,922,3,172,86,0,903,904,5,88,0,0,904,905,5,129,0,0,905, + 906,3,4,2,0,906,907,5,130,0,0,907,922,1,0,0,0,908,909,5,64,0,0,909, + 915,5,129,0,0,910,911,3,436,218,0,911,912,5,131,0,0,912,914,1,0, + 0,0,913,910,1,0,0,0,914,917,1,0,0,0,915,913,1,0,0,0,915,916,1,0, + 0,0,916,918,1,0,0,0,917,915,1,0,0,0,918,919,3,436,218,0,919,920, + 5,130,0,0,920,922,1,0,0,0,921,800,1,0,0,0,921,801,1,0,0,0,921,805, + 1,0,0,0,921,809,1,0,0,0,921,810,1,0,0,0,921,811,1,0,0,0,921,812, + 1,0,0,0,921,813,1,0,0,0,921,825,1,0,0,0,921,856,1,0,0,0,921,866, + 1,0,0,0,921,874,1,0,0,0,921,879,1,0,0,0,921,884,1,0,0,0,921,892, + 1,0,0,0,921,903,1,0,0,0,921,908,1,0,0,0,922,75,1,0,0,0,923,926,3, + 28,14,0,924,926,3,78,39,0,925,923,1,0,0,0,925,924,1,0,0,0,926,77, + 1,0,0,0,927,928,5,95,0,0,928,929,3,28,14,0,929,79,1,0,0,0,930,932, + 5,148,0,0,931,930,1,0,0,0,931,932,1,0,0,0,932,933,1,0,0,0,933,934, + 5,131,0,0,934,936,3,436,218,0,935,937,3,22,11,0,936,935,1,0,0,0, + 936,937,1,0,0,0,937,81,1,0,0,0,938,940,5,148,0,0,939,938,1,0,0,0, + 939,940,1,0,0,0,940,941,1,0,0,0,941,942,5,127,0,0,942,947,3,84,42, + 0,943,944,5,132,0,0,944,946,3,84,42,0,945,943,1,0,0,0,946,949,1, + 0,0,0,947,945,1,0,0,0,947,948,1,0,0,0,948,950,1,0,0,0,949,947,1, + 0,0,0,950,951,5,128,0,0,951,83,1,0,0,0,952,953,3,436,218,0,953,954, + 5,133,0,0,954,956,1,0,0,0,955,952,1,0,0,0,955,956,1,0,0,0,956,957, + 1,0,0,0,957,958,3,28,14,0,958,85,1,0,0,0,959,960,7,7,0,0,960,87, + 1,0,0,0,961,966,3,28,14,0,962,963,5,132,0,0,963,965,3,28,14,0,964, + 962,1,0,0,0,965,968,1,0,0,0,966,964,1,0,0,0,966,967,1,0,0,0,967, + 89,1,0,0,0,968,966,1,0,0,0,969,972,3,92,46,0,970,972,3,100,50,0, + 971,969,1,0,0,0,971,970,1,0,0,0,972,91,1,0,0,0,973,978,5,125,0,0, + 974,976,3,94,47,0,975,977,5,132,0,0,976,975,1,0,0,0,976,977,1,0, + 0,0,977,979,1,0,0,0,978,974,1,0,0,0,978,979,1,0,0,0,979,980,1,0, + 0,0,980,981,5,126,0,0,981,93,1,0,0,0,982,987,3,96,48,0,983,984,5, + 132,0,0,984,986,3,96,48,0,985,983,1,0,0,0,986,989,1,0,0,0,987,985, + 1,0,0,0,987,988,1,0,0,0,988,95,1,0,0,0,989,987,1,0,0,0,990,996,3, + 436,218,0,991,992,5,127,0,0,992,993,3,28,14,0,993,994,5,128,0,0, + 994,996,1,0,0,0,995,990,1,0,0,0,995,991,1,0,0,0,996,997,1,0,0,0, + 997,998,5,145,0,0,998,999,3,98,49,0,999,97,1,0,0,0,1000,1003,3,28, + 14,0,1001,1003,3,90,45,0,1002,1000,1,0,0,0,1002,1001,1,0,0,0,1003, + 99,1,0,0,0,1004,1005,5,125,0,0,1005,1010,3,102,51,0,1006,1007,5, + 132,0,0,1007,1009,3,102,51,0,1008,1006,1,0,0,0,1009,1012,1,0,0,0, + 1010,1008,1,0,0,0,1010,1011,1,0,0,0,1011,1014,1,0,0,0,1012,1010, + 1,0,0,0,1013,1015,5,132,0,0,1014,1013,1,0,0,0,1014,1015,1,0,0,0, + 1015,1016,1,0,0,0,1016,1017,5,126,0,0,1017,101,1,0,0,0,1018,1024, + 3,30,15,0,1019,1020,5,125,0,0,1020,1021,3,88,44,0,1021,1022,5,126, + 0,0,1022,1024,1,0,0,0,1023,1018,1,0,0,0,1023,1019,1,0,0,0,1024,103, + 1,0,0,0,1025,1030,5,125,0,0,1026,1028,3,106,53,0,1027,1029,5,132, + 0,0,1028,1027,1,0,0,0,1028,1029,1,0,0,0,1029,1031,1,0,0,0,1030,1026, + 1,0,0,0,1030,1031,1,0,0,0,1031,1032,1,0,0,0,1032,1033,5,126,0,0, + 1033,105,1,0,0,0,1034,1039,3,108,54,0,1035,1036,5,132,0,0,1036,1038, + 3,108,54,0,1037,1035,1,0,0,0,1038,1041,1,0,0,0,1039,1037,1,0,0,0, + 1039,1040,1,0,0,0,1040,107,1,0,0,0,1041,1039,1,0,0,0,1042,1048,3, + 72,36,0,1043,1044,3,436,218,0,1044,1045,5,145,0,0,1045,1046,3,28, + 14,0,1046,1048,1,0,0,0,1047,1042,1,0,0,0,1047,1043,1,0,0,0,1048, + 109,1,0,0,0,1049,1058,3,436,218,0,1050,1052,3,112,56,0,1051,1050, + 1,0,0,0,1051,1052,1,0,0,0,1052,1059,1,0,0,0,1053,1054,5,149,0,0, + 1054,1056,3,436,218,0,1055,1057,3,112,56,0,1056,1055,1,0,0,0,1056, + 1057,1,0,0,0,1057,1059,1,0,0,0,1058,1051,1,0,0,0,1058,1053,1,0,0, + 0,1059,1067,1,0,0,0,1060,1061,5,131,0,0,1061,1063,3,436,218,0,1062, + 1064,3,112,56,0,1063,1062,1,0,0,0,1063,1064,1,0,0,0,1064,1066,1, + 0,0,0,1065,1060,1,0,0,0,1066,1069,1,0,0,0,1067,1065,1,0,0,0,1067, + 1068,1,0,0,0,1068,111,1,0,0,0,1069,1067,1,0,0,0,1070,1074,5,146, + 0,0,1071,1073,5,132,0,0,1072,1071,1,0,0,0,1073,1076,1,0,0,0,1074, + 1072,1,0,0,0,1074,1075,1,0,0,0,1075,1077,1,0,0,0,1076,1074,1,0,0, + 0,1077,1078,5,147,0,0,1078,113,1,0,0,0,1079,1084,3,6,3,0,1080,1083, + 3,324,162,0,1081,1083,5,137,0,0,1082,1080,1,0,0,0,1082,1081,1,0, + 0,0,1083,1086,1,0,0,0,1084,1082,1,0,0,0,1084,1085,1,0,0,0,1085,1088, + 1,0,0,0,1086,1084,1,0,0,0,1087,1089,5,148,0,0,1088,1087,1,0,0,0, + 1088,1089,1,0,0,0,1089,1091,1,0,0,0,1090,1092,3,116,58,0,1091,1090, + 1,0,0,0,1091,1092,1,0,0,0,1092,1094,1,0,0,0,1093,1095,3,436,218, + 0,1094,1093,1,0,0,0,1094,1095,1,0,0,0,1095,115,1,0,0,0,1096,1097, + 5,125,0,0,1097,1102,3,118,59,0,1098,1099,5,132,0,0,1099,1101,3,118, + 59,0,1100,1098,1,0,0,0,1101,1104,1,0,0,0,1102,1100,1,0,0,0,1102, + 1103,1,0,0,0,1103,1105,1,0,0,0,1104,1102,1,0,0,0,1105,1106,5,126, + 0,0,1106,117,1,0,0,0,1107,1108,3,436,218,0,1108,1109,5,133,0,0,1109, + 1110,3,28,14,0,1110,119,1,0,0,0,1111,1113,5,15,0,0,1112,1111,1,0, + 0,0,1112,1113,1,0,0,0,1113,1114,1,0,0,0,1114,1115,3,122,61,0,1115, + 1116,3,376,188,0,1116,1117,3,130,65,0,1117,121,1,0,0,0,1118,1119, + 5,129,0,0,1119,1130,5,130,0,0,1120,1121,5,129,0,0,1121,1122,3,124, + 62,0,1122,1123,5,130,0,0,1123,1130,1,0,0,0,1124,1125,5,129,0,0,1125, + 1126,3,128,64,0,1126,1127,5,130,0,0,1127,1130,1,0,0,0,1128,1130, + 3,436,218,0,1129,1118,1,0,0,0,1129,1120,1,0,0,0,1129,1124,1,0,0, + 0,1129,1128,1,0,0,0,1130,123,1,0,0,0,1131,1136,3,126,63,0,1132,1133, + 5,132,0,0,1133,1135,3,126,63,0,1134,1132,1,0,0,0,1135,1138,1,0,0, + 0,1136,1134,1,0,0,0,1136,1137,1,0,0,0,1137,125,1,0,0,0,1138,1136, + 1,0,0,0,1139,1141,7,2,0,0,1140,1139,1,0,0,0,1140,1141,1,0,0,0,1141, + 1142,1,0,0,0,1142,1143,3,4,2,0,1143,1144,3,436,218,0,1144,127,1, + 0,0,0,1145,1150,3,436,218,0,1146,1147,5,132,0,0,1147,1149,3,436, + 218,0,1148,1146,1,0,0,0,1149,1152,1,0,0,0,1150,1148,1,0,0,0,1150, + 1151,1,0,0,0,1151,129,1,0,0,0,1152,1150,1,0,0,0,1153,1156,3,76,38, + 0,1154,1156,3,172,86,0,1155,1153,1,0,0,0,1155,1154,1,0,0,0,1156, + 131,1,0,0,0,1157,1158,3,134,67,0,1158,1159,3,136,68,0,1159,133,1, + 0,0,0,1160,1162,5,48,0,0,1161,1163,3,4,2,0,1162,1161,1,0,0,0,1162, + 1163,1,0,0,0,1163,1164,1,0,0,0,1164,1165,3,436,218,0,1165,1166,5, + 54,0,0,1166,1167,3,28,14,0,1167,135,1,0,0,0,1168,1170,3,138,69,0, + 1169,1168,1,0,0,0,1170,1173,1,0,0,0,1171,1169,1,0,0,0,1171,1172, + 1,0,0,0,1172,1174,1,0,0,0,1173,1171,1,0,0,0,1174,1176,3,150,75,0, + 1175,1177,3,152,76,0,1176,1175,1,0,0,0,1176,1177,1,0,0,0,1177,137, + 1,0,0,0,1178,1184,3,134,67,0,1179,1184,3,140,70,0,1180,1184,3,142, + 71,0,1181,1184,3,144,72,0,1182,1184,3,146,73,0,1183,1178,1,0,0,0, + 1183,1179,1,0,0,0,1183,1180,1,0,0,0,1183,1181,1,0,0,0,1183,1182, + 1,0,0,0,1184,139,1,0,0,0,1185,1186,5,61,0,0,1186,1187,3,436,218, + 0,1187,1188,5,145,0,0,1188,1189,3,28,14,0,1189,141,1,0,0,0,1190, + 1191,5,111,0,0,1191,1192,3,28,14,0,1192,143,1,0,0,0,1193,1195,5, + 60,0,0,1194,1196,3,4,2,0,1195,1194,1,0,0,0,1195,1196,1,0,0,0,1196, + 1197,1,0,0,0,1197,1198,3,436,218,0,1198,1199,5,54,0,0,1199,1200, + 3,28,14,0,1200,1201,5,69,0,0,1201,1202,3,28,14,0,1202,1203,5,38, + 0,0,1203,1206,3,28,14,0,1204,1205,5,58,0,0,1205,1207,3,436,218,0, + 1206,1204,1,0,0,0,1206,1207,1,0,0,0,1207,145,1,0,0,0,1208,1209,5, + 71,0,0,1209,1214,3,148,74,0,1210,1211,5,132,0,0,1211,1213,3,148, + 74,0,1212,1210,1,0,0,0,1213,1216,1,0,0,0,1214,1212,1,0,0,0,1214, + 1215,1,0,0,0,1215,147,1,0,0,0,1216,1214,1,0,0,0,1217,1219,3,28,14, + 0,1218,1220,7,8,0,0,1219,1218,1,0,0,0,1219,1220,1,0,0,0,1220,149, + 1,0,0,0,1221,1222,5,85,0,0,1222,1229,3,28,14,0,1223,1224,5,51,0, + 0,1224,1225,3,28,14,0,1225,1226,5,20,0,0,1226,1227,3,28,14,0,1227, + 1229,1,0,0,0,1228,1221,1,0,0,0,1228,1223,1,0,0,0,1229,151,1,0,0, + 0,1230,1231,5,58,0,0,1231,1232,3,436,218,0,1232,1233,3,136,68,0, + 1233,153,1,0,0,0,1234,1238,3,166,83,0,1235,1238,3,156,78,0,1236, + 1238,3,168,84,0,1237,1234,1,0,0,0,1237,1235,1,0,0,0,1237,1236,1, + 0,0,0,1238,155,1,0,0,0,1239,1240,3,174,87,0,1240,1241,5,134,0,0, + 1241,1247,1,0,0,0,1242,1243,3,182,91,0,1243,1244,5,134,0,0,1244, + 1247,1,0,0,0,1245,1247,3,158,79,0,1246,1239,1,0,0,0,1246,1242,1, + 0,0,0,1246,1245,1,0,0,0,1247,157,1,0,0,0,1248,1249,3,160,80,0,1249, + 1250,3,164,82,0,1250,159,1,0,0,0,1251,1253,3,162,81,0,1252,1251, + 1,0,0,0,1252,1253,1,0,0,0,1253,1254,1,0,0,0,1254,1255,3,276,138, + 0,1255,1257,3,436,218,0,1256,1258,3,232,116,0,1257,1256,1,0,0,0, + 1257,1258,1,0,0,0,1258,1259,1,0,0,0,1259,1261,5,129,0,0,1260,1262, + 3,282,141,0,1261,1260,1,0,0,0,1261,1262,1,0,0,0,1262,1263,1,0,0, + 0,1263,1265,5,130,0,0,1264,1266,3,240,120,0,1265,1264,1,0,0,0,1265, + 1266,1,0,0,0,1266,161,1,0,0,0,1267,1269,7,9,0,0,1268,1270,5,90,0, + 0,1269,1268,1,0,0,0,1269,1270,1,0,0,0,1270,1274,1,0,0,0,1271,1272, + 5,90,0,0,1272,1274,7,9,0,0,1273,1267,1,0,0,0,1273,1271,1,0,0,0,1274, + 163,1,0,0,0,1275,1281,3,172,86,0,1276,1277,3,376,188,0,1277,1278, + 3,76,38,0,1278,1279,5,134,0,0,1279,1281,1,0,0,0,1280,1275,1,0,0, + 0,1280,1276,1,0,0,0,1281,165,1,0,0,0,1282,1283,3,436,218,0,1283, + 1284,5,133,0,0,1284,1285,3,154,77,0,1285,167,1,0,0,0,1286,1289,3, + 172,86,0,1287,1289,3,170,85,0,1288,1286,1,0,0,0,1288,1287,1,0,0, + 0,1289,169,1,0,0,0,1290,1421,5,134,0,0,1291,1292,3,28,14,0,1292, + 1293,5,134,0,0,1293,1421,1,0,0,0,1294,1295,5,52,0,0,1295,1296,5, + 129,0,0,1296,1297,3,28,14,0,1297,1298,5,130,0,0,1298,1301,3,184, + 92,0,1299,1300,5,36,0,0,1300,1302,3,184,92,0,1301,1299,1,0,0,0,1301, + 1302,1,0,0,0,1302,1421,1,0,0,0,1303,1304,5,93,0,0,1304,1305,5,129, + 0,0,1305,1306,3,28,14,0,1306,1307,5,130,0,0,1307,1311,5,125,0,0, + 1308,1310,3,186,93,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,126,0,0,1315,1421,1,0,0,0,1316,1317,5,112,0,0,1317,1318,5, + 129,0,0,1318,1319,3,28,14,0,1319,1320,5,130,0,0,1320,1321,3,168, + 84,0,1321,1421,1,0,0,0,1322,1323,5,33,0,0,1323,1324,3,168,84,0,1324, + 1325,5,112,0,0,1325,1326,5,129,0,0,1326,1327,3,28,14,0,1327,1328, + 5,130,0,0,1328,1329,5,134,0,0,1329,1421,1,0,0,0,1330,1331,5,46,0, + 0,1331,1333,5,129,0,0,1332,1334,3,194,97,0,1333,1332,1,0,0,0,1333, + 1334,1,0,0,0,1334,1335,1,0,0,0,1335,1337,5,134,0,0,1336,1338,3,28, + 14,0,1337,1336,1,0,0,0,1337,1338,1,0,0,0,1338,1339,1,0,0,0,1339, + 1341,5,134,0,0,1340,1342,3,196,98,0,1341,1340,1,0,0,0,1341,1342, + 1,0,0,0,1342,1343,1,0,0,0,1343,1344,5,130,0,0,1344,1421,3,168,84, + 0,1345,1347,5,16,0,0,1346,1345,1,0,0,0,1346,1347,1,0,0,0,1347,1348, + 1,0,0,0,1348,1349,5,47,0,0,1349,1350,5,129,0,0,1350,1351,3,176,88, + 0,1351,1352,3,436,218,0,1352,1353,5,54,0,0,1353,1354,3,28,14,0,1354, + 1355,5,130,0,0,1355,1356,3,168,84,0,1356,1421,1,0,0,0,1357,1358, + 5,19,0,0,1358,1421,5,134,0,0,1359,1360,5,28,0,0,1360,1421,5,134, + 0,0,1361,1366,5,50,0,0,1362,1367,3,436,218,0,1363,1364,5,22,0,0, + 1364,1367,3,28,14,0,1365,1367,5,30,0,0,1366,1362,1,0,0,0,1366,1363, + 1,0,0,0,1366,1365,1,0,0,0,1367,1368,1,0,0,0,1368,1421,5,134,0,0, + 1369,1371,5,82,0,0,1370,1372,3,28,14,0,1371,1370,1,0,0,0,1371,1372, + 1,0,0,0,1372,1373,1,0,0,0,1373,1421,5,134,0,0,1374,1376,5,95,0,0, + 1375,1377,3,28,14,0,1376,1375,1,0,0,0,1376,1377,1,0,0,0,1377,1378, + 1,0,0,0,1378,1421,5,134,0,0,1379,1380,5,97,0,0,1380,1386,3,172,86, + 0,1381,1383,3,198,99,0,1382,1384,3,206,103,0,1383,1382,1,0,0,0,1383, + 1384,1,0,0,0,1384,1387,1,0,0,0,1385,1387,3,206,103,0,1386,1381,1, + 0,0,0,1386,1385,1,0,0,0,1387,1421,1,0,0,0,1388,1389,5,25,0,0,1389, + 1421,3,172,86,0,1390,1391,5,101,0,0,1391,1421,3,172,86,0,1392,1393, + 5,62,0,0,1393,1394,5,129,0,0,1394,1395,3,28,14,0,1395,1396,5,130, + 0,0,1396,1397,3,168,84,0,1397,1421,1,0,0,0,1398,1399,5,105,0,0,1399, + 1400,5,129,0,0,1400,1401,3,208,104,0,1401,1402,5,130,0,0,1402,1403, + 3,168,84,0,1403,1421,1,0,0,0,1404,1408,5,113,0,0,1405,1406,5,82, + 0,0,1406,1409,3,28,14,0,1407,1409,5,19,0,0,1408,1405,1,0,0,0,1408, + 1407,1,0,0,0,1409,1410,1,0,0,0,1410,1421,5,134,0,0,1411,1412,5,103, + 0,0,1412,1421,3,172,86,0,1413,1414,5,44,0,0,1414,1415,5,129,0,0, + 1415,1416,3,364,182,0,1416,1417,3,366,183,0,1417,1418,5,130,0,0, + 1418,1419,3,168,84,0,1419,1421,1,0,0,0,1420,1290,1,0,0,0,1420,1291, + 1,0,0,0,1420,1294,1,0,0,0,1420,1303,1,0,0,0,1420,1316,1,0,0,0,1420, + 1322,1,0,0,0,1420,1330,1,0,0,0,1420,1346,1,0,0,0,1420,1357,1,0,0, + 0,1420,1359,1,0,0,0,1420,1361,1,0,0,0,1420,1369,1,0,0,0,1420,1374, + 1,0,0,0,1420,1379,1,0,0,0,1420,1388,1,0,0,0,1420,1390,1,0,0,0,1420, + 1392,1,0,0,0,1420,1398,1,0,0,0,1420,1404,1,0,0,0,1420,1411,1,0,0, + 0,1420,1413,1,0,0,0,1421,171,1,0,0,0,1422,1424,5,125,0,0,1423,1425, + 3,192,96,0,1424,1423,1,0,0,0,1424,1425,1,0,0,0,1425,1426,1,0,0,0, + 1426,1427,5,126,0,0,1427,173,1,0,0,0,1428,1433,5,105,0,0,1429,1433, + 5,80,0,0,1430,1431,5,80,0,0,1431,1433,5,79,0,0,1432,1428,1,0,0,0, + 1432,1429,1,0,0,0,1432,1430,1,0,0,0,1432,1433,1,0,0,0,1433,1434, + 1,0,0,0,1434,1435,3,176,88,0,1435,1442,3,178,89,0,1436,1437,5,132, + 0,0,1437,1438,3,178,89,0,1438,1439,4,87,0,0,1439,1441,1,0,0,0,1440, + 1436,1,0,0,0,1441,1444,1,0,0,0,1442,1440,1,0,0,0,1442,1443,1,0,0, + 0,1443,1450,1,0,0,0,1444,1442,1,0,0,0,1445,1446,5,44,0,0,1446,1447, + 3,364,182,0,1447,1448,3,366,183,0,1448,1450,1,0,0,0,1449,1432,1, + 0,0,0,1449,1445,1,0,0,0,1450,175,1,0,0,0,1451,1454,5,106,0,0,1452, + 1454,3,4,2,0,1453,1451,1,0,0,0,1453,1452,1,0,0,0,1454,177,1,0,0, + 0,1455,1461,3,436,218,0,1456,1458,5,145,0,0,1457,1459,5,80,0,0,1458, + 1457,1,0,0,0,1458,1459,1,0,0,0,1459,1460,1,0,0,0,1460,1462,3,180, + 90,0,1461,1456,1,0,0,0,1461,1462,1,0,0,0,1462,179,1,0,0,0,1463,1467, + 3,28,14,0,1464,1467,3,326,163,0,1465,1467,3,374,187,0,1466,1463, + 1,0,0,0,1466,1464,1,0,0,0,1466,1465,1,0,0,0,1467,181,1,0,0,0,1468, + 1469,5,27,0,0,1469,1470,3,4,2,0,1470,1471,3,266,133,0,1471,183,1, + 0,0,0,1472,1475,3,172,86,0,1473,1475,3,170,85,0,1474,1472,1,0,0, + 0,1474,1473,1,0,0,0,1475,185,1,0,0,0,1476,1478,3,188,94,0,1477,1476, + 1,0,0,0,1478,1479,1,0,0,0,1479,1477,1,0,0,0,1479,1480,1,0,0,0,1480, + 1481,1,0,0,0,1481,1482,3,192,96,0,1482,187,1,0,0,0,1483,1484,5,22, + 0,0,1484,1486,3,28,14,0,1485,1487,3,190,95,0,1486,1485,1,0,0,0,1486, + 1487,1,0,0,0,1487,1488,1,0,0,0,1488,1489,5,133,0,0,1489,1493,1,0, + 0,0,1490,1491,5,30,0,0,1491,1493,5,133,0,0,1492,1483,1,0,0,0,1492, + 1490,1,0,0,0,1493,189,1,0,0,0,1494,1495,5,110,0,0,1495,1496,3,28, + 14,0,1496,191,1,0,0,0,1497,1499,3,154,77,0,1498,1497,1,0,0,0,1499, + 1500,1,0,0,0,1500,1498,1,0,0,0,1500,1501,1,0,0,0,1501,193,1,0,0, + 0,1502,1512,3,174,87,0,1503,1508,3,28,14,0,1504,1505,5,132,0,0,1505, + 1507,3,28,14,0,1506,1504,1,0,0,0,1507,1510,1,0,0,0,1508,1506,1,0, + 0,0,1508,1509,1,0,0,0,1509,1512,1,0,0,0,1510,1508,1,0,0,0,1511,1502, + 1,0,0,0,1511,1503,1,0,0,0,1512,195,1,0,0,0,1513,1518,3,28,14,0,1514, + 1515,5,132,0,0,1515,1517,3,28,14,0,1516,1514,1,0,0,0,1517,1520,1, + 0,0,0,1518,1516,1,0,0,0,1518,1519,1,0,0,0,1519,197,1,0,0,0,1520, + 1518,1,0,0,0,1521,1525,3,200,100,0,1522,1524,3,200,100,0,1523,1522, + 1,0,0,0,1524,1527,1,0,0,0,1525,1523,1,0,0,0,1525,1526,1,0,0,0,1526, + 1529,1,0,0,0,1527,1525,1,0,0,0,1528,1530,3,202,101,0,1529,1528,1, + 0,0,0,1529,1530,1,0,0,0,1530,1533,1,0,0,0,1531,1533,3,202,101,0, + 1532,1521,1,0,0,0,1532,1531,1,0,0,0,1533,199,1,0,0,0,1534,1535,5, + 23,0,0,1535,1536,5,129,0,0,1536,1538,3,20,10,0,1537,1539,3,436,218, + 0,1538,1537,1,0,0,0,1538,1539,1,0,0,0,1539,1540,1,0,0,0,1540,1542, + 5,130,0,0,1541,1543,3,204,102,0,1542,1541,1,0,0,0,1542,1543,1,0, + 0,0,1543,1544,1,0,0,0,1544,1545,3,172,86,0,1545,201,1,0,0,0,1546, + 1548,5,23,0,0,1547,1549,3,204,102,0,1548,1547,1,0,0,0,1548,1549, + 1,0,0,0,1549,1550,1,0,0,0,1550,1551,3,172,86,0,1551,203,1,0,0,0, + 1552,1553,5,110,0,0,1553,1554,5,129,0,0,1554,1555,3,28,14,0,1555, + 1556,5,130,0,0,1556,205,1,0,0,0,1557,1558,5,43,0,0,1558,1559,3,172, + 86,0,1559,207,1,0,0,0,1560,1563,3,174,87,0,1561,1563,3,28,14,0,1562, + 1560,1,0,0,0,1562,1561,1,0,0,0,1563,209,1,0,0,0,1564,1565,5,65,0, + 0,1565,1566,3,212,106,0,1566,1568,3,214,107,0,1567,1569,5,134,0, + 0,1568,1567,1,0,0,0,1568,1569,1,0,0,0,1569,211,1,0,0,0,1570,1575, + 3,436,218,0,1571,1572,5,131,0,0,1572,1574,3,436,218,0,1573,1571, + 1,0,0,0,1574,1577,1,0,0,0,1575,1573,1,0,0,0,1575,1576,1,0,0,0,1576, + 213,1,0,0,0,1577,1575,1,0,0,0,1578,1580,5,125,0,0,1579,1581,3,216, + 108,0,1580,1579,1,0,0,0,1580,1581,1,0,0,0,1581,1583,1,0,0,0,1582, + 1584,3,220,110,0,1583,1582,1,0,0,0,1583,1584,1,0,0,0,1584,1586,1, + 0,0,0,1585,1587,3,224,112,0,1586,1585,1,0,0,0,1586,1587,1,0,0,0, + 1587,1588,1,0,0,0,1588,1589,5,126,0,0,1589,215,1,0,0,0,1590,1592, + 3,218,109,0,1591,1590,1,0,0,0,1592,1593,1,0,0,0,1593,1591,1,0,0, + 0,1593,1594,1,0,0,0,1594,217,1,0,0,0,1595,1596,5,41,0,0,1596,1597, + 5,11,0,0,1597,1598,3,436,218,0,1598,1599,5,134,0,0,1599,219,1,0, + 0,0,1600,1602,3,222,111,0,1601,1600,1,0,0,0,1602,1603,1,0,0,0,1603, + 1601,1,0,0,0,1603,1604,1,0,0,0,1604,221,1,0,0,0,1605,1606,5,105, + 0,0,1606,1607,3,436,218,0,1607,1608,5,145,0,0,1608,1609,3,2,1,0, + 1609,1610,5,134,0,0,1610,1621,1,0,0,0,1611,1612,5,105,0,0,1612,1613, + 3,2,1,0,1613,1614,5,134,0,0,1614,1621,1,0,0,0,1615,1616,5,105,0, + 0,1616,1617,5,90,0,0,1617,1618,3,2,1,0,1618,1619,5,134,0,0,1619, + 1621,1,0,0,0,1620,1605,1,0,0,0,1620,1611,1,0,0,0,1620,1615,1,0,0, + 0,1621,223,1,0,0,0,1622,1624,3,226,113,0,1623,1622,1,0,0,0,1624, + 1625,1,0,0,0,1625,1623,1,0,0,0,1625,1626,1,0,0,0,1626,225,1,0,0, + 0,1627,1630,3,210,105,0,1628,1630,3,228,114,0,1629,1627,1,0,0,0, + 1629,1628,1,0,0,0,1630,227,1,0,0,0,1631,1633,3,352,176,0,1632,1631, + 1,0,0,0,1632,1633,1,0,0,0,1633,1635,1,0,0,0,1634,1636,3,258,129, + 0,1635,1634,1,0,0,0,1635,1636,1,0,0,0,1636,1642,1,0,0,0,1637,1643, + 3,400,200,0,1638,1643,3,402,201,0,1639,1643,3,404,202,0,1640,1643, + 3,406,203,0,1641,1643,3,408,204,0,1642,1637,1,0,0,0,1642,1638,1, + 0,0,0,1642,1639,1,0,0,0,1642,1640,1,0,0,0,1642,1641,1,0,0,0,1643, + 229,1,0,0,0,1644,1645,3,436,218,0,1645,1646,5,149,0,0,1646,1648, + 3,436,218,0,1647,1649,3,22,11,0,1648,1647,1,0,0,0,1648,1649,1,0, + 0,0,1649,231,1,0,0,0,1650,1651,5,146,0,0,1651,1656,3,234,117,0,1652, + 1653,5,132,0,0,1653,1655,3,234,117,0,1654,1652,1,0,0,0,1655,1658, + 1,0,0,0,1656,1654,1,0,0,0,1656,1657,1,0,0,0,1657,1659,1,0,0,0,1658, + 1656,1,0,0,0,1659,1660,5,147,0,0,1660,233,1,0,0,0,1661,1663,3,352, + 176,0,1662,1661,1,0,0,0,1662,1663,1,0,0,0,1663,1664,1,0,0,0,1664, + 1665,3,436,218,0,1665,235,1,0,0,0,1666,1667,5,133,0,0,1667,1672, + 3,20,10,0,1668,1669,5,132,0,0,1669,1671,3,2,1,0,1670,1668,1,0,0, + 0,1671,1674,1,0,0,0,1672,1670,1,0,0,0,1672,1673,1,0,0,0,1673,237, + 1,0,0,0,1674,1672,1,0,0,0,1675,1680,3,2,1,0,1676,1677,5,132,0,0, + 1677,1679,3,2,1,0,1678,1676,1,0,0,0,1679,1682,1,0,0,0,1680,1678, + 1,0,0,0,1680,1681,1,0,0,0,1681,239,1,0,0,0,1682,1680,1,0,0,0,1683, + 1685,3,242,121,0,1684,1683,1,0,0,0,1685,1686,1,0,0,0,1686,1684,1, + 0,0,0,1686,1687,1,0,0,0,1687,241,1,0,0,0,1688,1689,5,111,0,0,1689, + 1690,3,436,218,0,1690,1691,5,133,0,0,1691,1692,3,244,122,0,1692, + 243,1,0,0,0,1693,1704,3,250,125,0,1694,1697,3,246,123,0,1695,1696, + 5,132,0,0,1696,1698,3,248,124,0,1697,1695,1,0,0,0,1697,1698,1,0, + 0,0,1698,1701,1,0,0,0,1699,1700,5,132,0,0,1700,1702,3,250,125,0, + 1701,1699,1,0,0,0,1701,1702,1,0,0,0,1702,1704,1,0,0,0,1703,1693, + 1,0,0,0,1703,1694,1,0,0,0,1704,245,1,0,0,0,1705,1713,3,20,10,0,1706, + 1708,5,26,0,0,1707,1709,5,148,0,0,1708,1707,1,0,0,0,1708,1709,1, + 0,0,0,1709,1713,1,0,0,0,1710,1713,5,92,0,0,1711,1713,5,102,0,0,1712, + 1705,1,0,0,0,1712,1706,1,0,0,0,1712,1710,1,0,0,0,1712,1711,1,0,0, + 0,1713,247,1,0,0,0,1714,1719,3,2,1,0,1715,1716,5,132,0,0,1716,1718, + 3,2,1,0,1717,1715,1,0,0,0,1718,1721,1,0,0,0,1719,1717,1,0,0,0,1719, + 1720,1,0,0,0,1720,249,1,0,0,0,1721,1719,1,0,0,0,1722,1723,5,66,0, + 0,1723,1724,5,129,0,0,1724,1725,5,130,0,0,1725,251,1,0,0,0,1726, + 1728,5,125,0,0,1727,1729,3,254,127,0,1728,1727,1,0,0,0,1728,1729, + 1,0,0,0,1729,1730,1,0,0,0,1730,1731,5,126,0,0,1731,253,1,0,0,0,1732, + 1734,3,256,128,0,1733,1732,1,0,0,0,1734,1735,1,0,0,0,1735,1733,1, + 0,0,0,1735,1736,1,0,0,0,1736,255,1,0,0,0,1737,1739,3,352,176,0,1738, + 1737,1,0,0,0,1738,1739,1,0,0,0,1739,1741,1,0,0,0,1740,1742,3,258, + 129,0,1741,1740,1,0,0,0,1741,1742,1,0,0,0,1742,1745,1,0,0,0,1743, + 1746,3,262,131,0,1744,1746,3,420,210,0,1745,1743,1,0,0,0,1745,1744, + 1,0,0,0,1746,257,1,0,0,0,1747,1749,3,260,130,0,1748,1747,1,0,0,0, + 1749,1750,1,0,0,0,1750,1748,1,0,0,0,1750,1751,1,0,0,0,1751,259,1, + 0,0,0,1752,1753,7,10,0,0,1753,261,1,0,0,0,1754,1774,3,416,208,0, + 1755,1774,3,264,132,0,1756,1774,3,410,205,0,1757,1763,3,310,155, + 0,1758,1764,3,314,157,0,1759,1760,3,376,188,0,1760,1761,3,76,38, + 0,1761,1762,5,134,0,0,1762,1764,1,0,0,0,1763,1758,1,0,0,0,1763,1759, + 1,0,0,0,1764,1774,1,0,0,0,1765,1774,3,422,211,0,1766,1767,5,108, + 0,0,1767,1774,3,424,212,0,1768,1774,3,400,200,0,1769,1774,3,402, + 201,0,1770,1774,3,404,202,0,1771,1774,3,406,203,0,1772,1774,3,408, + 204,0,1773,1754,1,0,0,0,1773,1755,1,0,0,0,1773,1756,1,0,0,0,1773, + 1757,1,0,0,0,1773,1765,1,0,0,0,1773,1766,1,0,0,0,1773,1768,1,0,0, + 0,1773,1769,1,0,0,0,1773,1770,1,0,0,0,1773,1771,1,0,0,0,1773,1772, + 1,0,0,0,1774,263,1,0,0,0,1775,1781,5,80,0,0,1776,1777,5,79,0,0,1777, + 1781,5,80,0,0,1778,1779,5,80,0,0,1779,1781,5,79,0,0,1780,1775,1, + 0,0,0,1780,1776,1,0,0,0,1780,1778,1,0,0,0,1780,1781,1,0,0,0,1781, + 1782,1,0,0,0,1782,1792,3,4,2,0,1783,1784,3,2,1,0,1784,1785,5,131, + 0,0,1785,1786,3,418,209,0,1786,1793,1,0,0,0,1787,1793,3,424,212, + 0,1788,1793,3,414,207,0,1789,1793,3,418,209,0,1790,1793,3,428,214, + 0,1791,1793,3,412,206,0,1792,1783,1,0,0,0,1792,1787,1,0,0,0,1792, + 1788,1,0,0,0,1792,1789,1,0,0,0,1792,1790,1,0,0,0,1792,1791,1,0,0, + 0,1793,265,1,0,0,0,1794,1799,3,268,134,0,1795,1796,5,132,0,0,1796, + 1798,3,268,134,0,1797,1795,1,0,0,0,1798,1801,1,0,0,0,1799,1797,1, + 0,0,0,1799,1800,1,0,0,0,1800,267,1,0,0,0,1801,1799,1,0,0,0,1802, + 1803,3,436,218,0,1803,1804,5,145,0,0,1804,1805,3,28,14,0,1805,269, + 1,0,0,0,1806,1811,3,272,136,0,1807,1808,5,132,0,0,1808,1810,3,272, + 136,0,1809,1807,1,0,0,0,1810,1813,1,0,0,0,1811,1809,1,0,0,0,1811, + 1812,1,0,0,0,1812,271,1,0,0,0,1813,1811,1,0,0,0,1814,1817,3,436, + 218,0,1815,1816,5,145,0,0,1816,1818,3,274,137,0,1817,1815,1,0,0, + 0,1817,1818,1,0,0,0,1818,273,1,0,0,0,1819,1822,3,28,14,0,1820,1822, + 3,326,163,0,1821,1819,1,0,0,0,1821,1820,1,0,0,0,1822,275,1,0,0,0, + 1823,1826,3,4,2,0,1824,1826,5,108,0,0,1825,1823,1,0,0,0,1825,1824, + 1,0,0,0,1826,277,1,0,0,0,1827,1828,3,2,1,0,1828,279,1,0,0,0,1829, + 1832,3,172,86,0,1830,1832,5,134,0,0,1831,1829,1,0,0,0,1831,1830, + 1,0,0,0,1832,281,1,0,0,0,1833,1840,3,290,145,0,1834,1837,3,284,142, + 0,1835,1836,5,132,0,0,1836,1838,3,290,145,0,1837,1835,1,0,0,0,1837, + 1838,1,0,0,0,1838,1840,1,0,0,0,1839,1833,1,0,0,0,1839,1834,1,0,0, + 0,1840,283,1,0,0,0,1841,1846,3,286,143,0,1842,1843,5,132,0,0,1843, + 1845,3,286,143,0,1844,1842,1,0,0,0,1845,1848,1,0,0,0,1846,1844,1, + 0,0,0,1846,1847,1,0,0,0,1847,285,1,0,0,0,1848,1846,1,0,0,0,1849, + 1851,3,352,176,0,1850,1849,1,0,0,0,1850,1851,1,0,0,0,1851,1853,1, + 0,0,0,1852,1854,3,288,144,0,1853,1852,1,0,0,0,1853,1854,1,0,0,0, + 1854,1855,1,0,0,0,1855,1858,3,430,215,0,1856,1858,5,12,0,0,1857, + 1850,1,0,0,0,1857,1856,1,0,0,0,1858,287,1,0,0,0,1859,1868,5,80,0, + 0,1860,1868,5,72,0,0,1861,1868,5,54,0,0,1862,1863,5,80,0,0,1863, + 1868,5,94,0,0,1864,1865,5,54,0,0,1865,1868,5,94,0,0,1866,1868,5, + 94,0,0,1867,1859,1,0,0,0,1867,1860,1,0,0,0,1867,1861,1,0,0,0,1867, + 1862,1,0,0,0,1867,1864,1,0,0,0,1867,1866,1,0,0,0,1868,289,1,0,0, + 0,1869,1871,3,352,176,0,1870,1869,1,0,0,0,1870,1871,1,0,0,0,1871, + 1872,1,0,0,0,1872,1873,5,74,0,0,1873,1874,3,322,161,0,1874,1875, + 3,436,218,0,1875,291,1,0,0,0,1876,1878,3,352,176,0,1877,1876,1,0, + 0,0,1877,1878,1,0,0,0,1878,1880,1,0,0,0,1879,1881,3,298,149,0,1880, + 1879,1,0,0,0,1880,1881,1,0,0,0,1881,1892,1,0,0,0,1882,1883,5,49, + 0,0,1883,1885,3,300,150,0,1884,1886,3,296,148,0,1885,1884,1,0,0, + 0,1885,1886,1,0,0,0,1886,1893,1,0,0,0,1887,1888,5,86,0,0,1888,1890, + 3,300,150,0,1889,1891,3,294,147,0,1890,1889,1,0,0,0,1890,1891,1, + 0,0,0,1891,1893,1,0,0,0,1892,1882,1,0,0,0,1892,1887,1,0,0,0,1893, + 293,1,0,0,0,1894,1896,3,352,176,0,1895,1894,1,0,0,0,1895,1896,1, + 0,0,0,1896,1898,1,0,0,0,1897,1899,3,298,149,0,1898,1897,1,0,0,0, + 1898,1899,1,0,0,0,1899,1900,1,0,0,0,1900,1901,5,49,0,0,1901,1902, + 3,300,150,0,1902,295,1,0,0,0,1903,1905,3,352,176,0,1904,1903,1,0, + 0,0,1904,1905,1,0,0,0,1905,1907,1,0,0,0,1906,1908,3,298,149,0,1907, + 1906,1,0,0,0,1907,1908,1,0,0,0,1908,1909,1,0,0,0,1909,1910,5,86, + 0,0,1910,1911,3,300,150,0,1911,297,1,0,0,0,1912,1920,5,77,0,0,1913, + 1920,5,57,0,0,1914,1920,5,76,0,0,1915,1916,5,77,0,0,1916,1920,5, + 57,0,0,1917,1918,5,57,0,0,1918,1920,5,77,0,0,1919,1912,1,0,0,0,1919, + 1913,1,0,0,0,1919,1914,1,0,0,0,1919,1915,1,0,0,0,1919,1917,1,0,0, + 0,1920,299,1,0,0,0,1921,1924,3,172,86,0,1922,1924,5,134,0,0,1923, + 1921,1,0,0,0,1923,1922,1,0,0,0,1924,301,1,0,0,0,1925,1927,3,352, + 176,0,1926,1925,1,0,0,0,1926,1927,1,0,0,0,1927,1936,1,0,0,0,1928, + 1929,5,10,0,0,1929,1930,3,172,86,0,1930,1931,3,306,153,0,1931,1937, + 1,0,0,0,1932,1933,5,81,0,0,1933,1934,3,172,86,0,1934,1935,3,304, + 152,0,1935,1937,1,0,0,0,1936,1928,1,0,0,0,1936,1932,1,0,0,0,1937, + 303,1,0,0,0,1938,1940,3,352,176,0,1939,1938,1,0,0,0,1939,1940,1, + 0,0,0,1940,1941,1,0,0,0,1941,1942,5,10,0,0,1942,1943,3,172,86,0, + 1943,305,1,0,0,0,1944,1946,3,352,176,0,1945,1944,1,0,0,0,1945,1946, + 1,0,0,0,1946,1947,1,0,0,0,1947,1948,5,81,0,0,1948,1949,3,172,86, + 0,1949,307,1,0,0,0,1950,1973,5,135,0,0,1951,1973,5,136,0,0,1952, + 1973,5,143,0,0,1953,1973,5,144,0,0,1954,1973,5,151,0,0,1955,1973, + 5,152,0,0,1956,1973,5,96,0,0,1957,1973,5,42,0,0,1958,1973,5,137, + 0,0,1959,1973,5,138,0,0,1960,1973,5,139,0,0,1961,1973,5,140,0,0, + 1962,1973,5,141,0,0,1963,1973,5,142,0,0,1964,1973,5,168,0,0,1965, + 1973,3,378,189,0,1966,1973,5,156,0,0,1967,1973,5,157,0,0,1968,1973, + 5,147,0,0,1969,1973,5,146,0,0,1970,1973,5,159,0,0,1971,1973,5,158, + 0,0,1972,1950,1,0,0,0,1972,1951,1,0,0,0,1972,1952,1,0,0,0,1972,1953, + 1,0,0,0,1972,1954,1,0,0,0,1972,1955,1,0,0,0,1972,1956,1,0,0,0,1972, + 1957,1,0,0,0,1972,1958,1,0,0,0,1972,1959,1,0,0,0,1972,1960,1,0,0, + 0,1972,1961,1,0,0,0,1972,1962,1,0,0,0,1972,1963,1,0,0,0,1972,1964, + 1,0,0,0,1972,1965,1,0,0,0,1972,1966,1,0,0,0,1972,1967,1,0,0,0,1972, + 1968,1,0,0,0,1972,1969,1,0,0,0,1972,1970,1,0,0,0,1972,1971,1,0,0, + 0,1973,309,1,0,0,0,1974,1975,7,11,0,0,1975,1976,5,70,0,0,1976,1977, + 3,4,2,0,1977,1978,5,129,0,0,1978,1979,3,430,215,0,1979,1980,5,130, + 0,0,1980,311,1,0,0,0,1981,1982,5,133,0,0,1982,1983,7,12,0,0,1983, + 1985,5,129,0,0,1984,1986,3,24,12,0,1985,1984,1,0,0,0,1985,1986,1, + 0,0,0,1986,1987,1,0,0,0,1987,1988,5,130,0,0,1988,313,1,0,0,0,1989, + 1992,3,172,86,0,1990,1992,5,134,0,0,1991,1989,1,0,0,0,1991,1990, + 1,0,0,0,1992,315,1,0,0,0,1993,1994,5,133,0,0,1994,1995,3,238,119, + 0,1995,317,1,0,0,0,1996,2000,5,125,0,0,1997,1999,3,320,160,0,1998, + 1997,1,0,0,0,1999,2002,1,0,0,0,2000,1998,1,0,0,0,2000,2001,1,0,0, + 0,2001,2003,1,0,0,0,2002,2000,1,0,0,0,2003,2004,5,126,0,0,2004,319, + 1,0,0,0,2005,2007,3,352,176,0,2006,2005,1,0,0,0,2006,2007,1,0,0, + 0,2007,2009,1,0,0,0,2008,2010,3,258,129,0,2009,2008,1,0,0,0,2009, + 2010,1,0,0,0,2010,2021,1,0,0,0,2011,2022,3,262,131,0,2012,2013,5, + 44,0,0,2013,2015,3,4,2,0,2014,2016,3,372,186,0,2015,2014,1,0,0,0, + 2016,2017,1,0,0,0,2017,2015,1,0,0,0,2017,2018,1,0,0,0,2018,2019, + 1,0,0,0,2019,2020,5,134,0,0,2020,2022,1,0,0,0,2021,2011,1,0,0,0, + 2021,2012,1,0,0,0,2022,321,1,0,0,0,2023,2031,3,6,3,0,2024,2026,7, + 13,0,0,2025,2024,1,0,0,0,2026,2029,1,0,0,0,2027,2025,1,0,0,0,2027, + 2028,1,0,0,0,2028,2030,1,0,0,0,2029,2027,1,0,0,0,2030,2032,3,324, + 162,0,2031,2027,1,0,0,0,2032,2033,1,0,0,0,2033,2031,1,0,0,0,2033, + 2034,1,0,0,0,2034,323,1,0,0,0,2035,2039,5,127,0,0,2036,2038,5,132, + 0,0,2037,2036,1,0,0,0,2038,2041,1,0,0,0,2039,2037,1,0,0,0,2039,2040, + 1,0,0,0,2040,2042,1,0,0,0,2041,2039,1,0,0,0,2042,2043,5,128,0,0, + 2043,325,1,0,0,0,2044,2056,5,125,0,0,2045,2050,3,274,137,0,2046, + 2047,5,132,0,0,2047,2049,3,274,137,0,2048,2046,1,0,0,0,2049,2052, + 1,0,0,0,2050,2048,1,0,0,0,2050,2051,1,0,0,0,2051,2054,1,0,0,0,2052, + 2050,1,0,0,0,2053,2055,5,132,0,0,2054,2053,1,0,0,0,2054,2055,1,0, + 0,0,2055,2057,1,0,0,0,2056,2045,1,0,0,0,2056,2057,1,0,0,0,2057,2058, + 1,0,0,0,2058,2059,5,126,0,0,2059,327,1,0,0,0,2060,2061,5,146,0,0, + 2061,2066,3,330,165,0,2062,2063,5,132,0,0,2063,2065,3,330,165,0, + 2064,2062,1,0,0,0,2065,2068,1,0,0,0,2066,2064,1,0,0,0,2066,2067, + 1,0,0,0,2067,2069,1,0,0,0,2068,2066,1,0,0,0,2069,2070,5,147,0,0, + 2070,329,1,0,0,0,2071,2073,3,352,176,0,2072,2071,1,0,0,0,2072,2073, + 1,0,0,0,2073,2075,1,0,0,0,2074,2076,3,332,166,0,2075,2074,1,0,0, + 0,2075,2076,1,0,0,0,2076,2077,1,0,0,0,2077,2078,3,436,218,0,2078, + 331,1,0,0,0,2079,2080,7,14,0,0,2080,333,1,0,0,0,2081,2082,5,133, + 0,0,2082,2083,3,238,119,0,2083,335,1,0,0,0,2084,2088,5,125,0,0,2085, + 2087,3,338,169,0,2086,2085,1,0,0,0,2087,2090,1,0,0,0,2088,2086,1, + 0,0,0,2088,2089,1,0,0,0,2089,2091,1,0,0,0,2090,2088,1,0,0,0,2091, + 2092,5,126,0,0,2092,337,1,0,0,0,2093,2095,3,352,176,0,2094,2093, + 1,0,0,0,2094,2095,1,0,0,0,2095,2097,1,0,0,0,2096,2098,5,66,0,0,2097, + 2096,1,0,0,0,2097,2098,1,0,0,0,2098,2162,1,0,0,0,2099,2101,5,103, + 0,0,2100,2099,1,0,0,0,2100,2101,1,0,0,0,2101,2107,1,0,0,0,2102,2108, + 5,80,0,0,2103,2104,5,80,0,0,2104,2108,5,79,0,0,2105,2106,5,79,0, + 0,2106,2108,5,80,0,0,2107,2102,1,0,0,0,2107,2103,1,0,0,0,2107,2105, + 1,0,0,0,2107,2108,1,0,0,0,2108,2109,1,0,0,0,2109,2137,3,4,2,0,2110, + 2112,3,436,218,0,2111,2113,3,232,116,0,2112,2111,1,0,0,0,2112,2113, + 1,0,0,0,2113,2114,1,0,0,0,2114,2116,5,129,0,0,2115,2117,3,282,141, + 0,2116,2115,1,0,0,0,2116,2117,1,0,0,0,2117,2118,1,0,0,0,2118,2120, + 5,130,0,0,2119,2121,3,240,120,0,2120,2119,1,0,0,0,2120,2121,1,0, + 0,0,2121,2122,1,0,0,0,2122,2123,5,134,0,0,2123,2138,1,0,0,0,2124, + 2125,3,436,218,0,2125,2126,5,125,0,0,2126,2127,3,340,170,0,2127, + 2128,5,126,0,0,2128,2138,1,0,0,0,2129,2130,5,94,0,0,2130,2131,5, + 127,0,0,2131,2132,3,282,141,0,2132,2133,5,128,0,0,2133,2134,5,125, + 0,0,2134,2135,3,340,170,0,2135,2136,5,126,0,0,2136,2138,1,0,0,0, + 2137,2110,1,0,0,0,2137,2124,1,0,0,0,2137,2129,1,0,0,0,2138,2163, + 1,0,0,0,2139,2141,5,103,0,0,2140,2139,1,0,0,0,2140,2141,1,0,0,0, + 2141,2142,1,0,0,0,2142,2143,5,108,0,0,2143,2145,3,436,218,0,2144, + 2146,3,232,116,0,2145,2144,1,0,0,0,2145,2146,1,0,0,0,2146,2147,1, + 0,0,0,2147,2149,5,129,0,0,2148,2150,3,282,141,0,2149,2148,1,0,0, + 0,2149,2150,1,0,0,0,2150,2151,1,0,0,0,2151,2153,5,130,0,0,2152,2154, + 3,240,120,0,2153,2152,1,0,0,0,2153,2154,1,0,0,0,2154,2155,1,0,0, + 0,2155,2156,5,134,0,0,2156,2163,1,0,0,0,2157,2158,5,39,0,0,2158, + 2159,3,4,2,0,2159,2160,3,436,218,0,2160,2161,5,134,0,0,2161,2163, + 1,0,0,0,2162,2100,1,0,0,0,2162,2140,1,0,0,0,2162,2157,1,0,0,0,2163, + 339,1,0,0,0,2164,2166,3,352,176,0,2165,2164,1,0,0,0,2165,2166,1, + 0,0,0,2166,2185,1,0,0,0,2167,2168,5,49,0,0,2168,2174,5,134,0,0,2169, + 2171,3,352,176,0,2170,2169,1,0,0,0,2170,2171,1,0,0,0,2171,2172,1, + 0,0,0,2172,2173,5,86,0,0,2173,2175,5,134,0,0,2174,2170,1,0,0,0,2174, + 2175,1,0,0,0,2175,2186,1,0,0,0,2176,2177,5,86,0,0,2177,2183,5,134, + 0,0,2178,2180,3,352,176,0,2179,2178,1,0,0,0,2179,2180,1,0,0,0,2180, + 2181,1,0,0,0,2181,2182,5,49,0,0,2182,2184,5,134,0,0,2183,2179,1, + 0,0,0,2183,2184,1,0,0,0,2184,2186,1,0,0,0,2185,2167,1,0,0,0,2185, + 2176,1,0,0,0,2186,341,1,0,0,0,2187,2188,5,133,0,0,2188,2189,3,4, + 2,0,2189,343,1,0,0,0,2190,2202,5,125,0,0,2191,2196,3,346,173,0,2192, + 2193,5,132,0,0,2193,2195,3,346,173,0,2194,2192,1,0,0,0,2195,2198, + 1,0,0,0,2196,2194,1,0,0,0,2196,2197,1,0,0,0,2197,2200,1,0,0,0,2198, + 2196,1,0,0,0,2199,2201,5,132,0,0,2200,2199,1,0,0,0,2200,2201,1,0, + 0,0,2201,2203,1,0,0,0,2202,2191,1,0,0,0,2202,2203,1,0,0,0,2203,2204, + 1,0,0,0,2204,2205,5,126,0,0,2205,345,1,0,0,0,2206,2208,3,352,176, + 0,2207,2206,1,0,0,0,2207,2208,1,0,0,0,2208,2209,1,0,0,0,2209,2212, + 3,436,218,0,2210,2211,5,145,0,0,2211,2213,3,28,14,0,2212,2210,1, + 0,0,0,2212,2213,1,0,0,0,2213,347,1,0,0,0,2214,2215,5,127,0,0,2215, + 2216,3,350,175,0,2216,2217,5,133,0,0,2217,2219,3,358,179,0,2218, + 2220,5,132,0,0,2219,2218,1,0,0,0,2219,2220,1,0,0,0,2220,2221,1,0, + 0,0,2221,2222,5,128,0,0,2222,349,1,0,0,0,2223,2226,3,398,199,0,2224, + 2226,3,436,218,0,2225,2223,1,0,0,0,2225,2224,1,0,0,0,2226,351,1, + 0,0,0,2227,2229,3,354,177,0,2228,2227,1,0,0,0,2229,2230,1,0,0,0, + 2230,2228,1,0,0,0,2230,2231,1,0,0,0,2231,353,1,0,0,0,2232,2236,5, + 127,0,0,2233,2234,3,356,178,0,2234,2235,5,133,0,0,2235,2237,1,0, + 0,0,2236,2233,1,0,0,0,2236,2237,1,0,0,0,2237,2238,1,0,0,0,2238,2240, + 3,358,179,0,2239,2241,5,132,0,0,2240,2239,1,0,0,0,2240,2241,1,0, + 0,0,2241,2242,1,0,0,0,2242,2243,5,128,0,0,2243,355,1,0,0,0,2244, + 2247,3,398,199,0,2245,2247,3,436,218,0,2246,2244,1,0,0,0,2246,2245, + 1,0,0,0,2247,357,1,0,0,0,2248,2253,3,360,180,0,2249,2250,5,132,0, + 0,2250,2252,3,360,180,0,2251,2249,1,0,0,0,2252,2255,1,0,0,0,2253, + 2251,1,0,0,0,2253,2254,1,0,0,0,2254,359,1,0,0,0,2255,2253,1,0,0, + 0,2256,2269,3,2,1,0,2257,2266,5,129,0,0,2258,2263,3,362,181,0,2259, + 2260,5,132,0,0,2260,2262,3,362,181,0,2261,2259,1,0,0,0,2262,2265, + 1,0,0,0,2263,2261,1,0,0,0,2263,2264,1,0,0,0,2264,2267,1,0,0,0,2265, + 2263,1,0,0,0,2266,2258,1,0,0,0,2266,2267,1,0,0,0,2267,2268,1,0,0, + 0,2268,2270,5,130,0,0,2269,2257,1,0,0,0,2269,2270,1,0,0,0,2270,361, + 1,0,0,0,2271,2272,3,436,218,0,2272,2273,5,133,0,0,2273,2275,1,0, + 0,0,2274,2271,1,0,0,0,2274,2275,1,0,0,0,2275,2276,1,0,0,0,2276,2277, + 3,28,14,0,2277,363,1,0,0,0,2278,2281,3,12,6,0,2279,2281,3,20,10, + 0,2280,2278,1,0,0,0,2280,2279,1,0,0,0,2281,2286,1,0,0,0,2282,2285, + 3,324,162,0,2283,2285,5,148,0,0,2284,2282,1,0,0,0,2284,2283,1,0, + 0,0,2285,2288,1,0,0,0,2286,2284,1,0,0,0,2286,2287,1,0,0,0,2287,2289, + 1,0,0,0,2288,2286,1,0,0,0,2289,2290,5,137,0,0,2290,2294,1,0,0,0, + 2291,2292,5,108,0,0,2292,2294,5,137,0,0,2293,2280,1,0,0,0,2293,2291, + 1,0,0,0,2294,365,1,0,0,0,2295,2300,3,368,184,0,2296,2297,5,132,0, + 0,2297,2299,3,368,184,0,2298,2296,1,0,0,0,2299,2302,1,0,0,0,2300, + 2298,1,0,0,0,2300,2301,1,0,0,0,2301,367,1,0,0,0,2302,2300,1,0,0, + 0,2303,2304,3,436,218,0,2304,2305,5,145,0,0,2305,2306,3,370,185, + 0,2306,369,1,0,0,0,2307,2309,5,140,0,0,2308,2307,1,0,0,0,2308,2309, + 1,0,0,0,2309,2310,1,0,0,0,2310,2313,3,28,14,0,2311,2313,3,374,187, + 0,2312,2308,1,0,0,0,2312,2311,1,0,0,0,2313,371,1,0,0,0,2314,2315, + 3,436,218,0,2315,2316,5,127,0,0,2316,2317,3,28,14,0,2317,2318,5, + 128,0,0,2318,373,1,0,0,0,2319,2320,5,89,0,0,2320,2321,3,4,2,0,2321, + 2322,5,127,0,0,2322,2323,3,28,14,0,2323,2324,5,128,0,0,2324,2349, + 1,0,0,0,2325,2327,5,89,0,0,2326,2328,3,4,2,0,2327,2326,1,0,0,0,2327, + 2328,1,0,0,0,2328,2329,1,0,0,0,2329,2331,5,127,0,0,2330,2332,3,28, + 14,0,2331,2330,1,0,0,0,2331,2332,1,0,0,0,2332,2333,1,0,0,0,2333, + 2334,5,128,0,0,2334,2335,5,125,0,0,2335,2340,3,28,14,0,2336,2337, + 5,132,0,0,2337,2339,3,28,14,0,2338,2336,1,0,0,0,2339,2342,1,0,0, + 0,2340,2338,1,0,0,0,2340,2341,1,0,0,0,2341,2344,1,0,0,0,2342,2340, + 1,0,0,0,2343,2345,5,132,0,0,2344,2343,1,0,0,0,2344,2345,1,0,0,0, + 2345,2346,1,0,0,0,2346,2347,5,126,0,0,2347,2349,1,0,0,0,2348,2319, + 1,0,0,0,2348,2325,1,0,0,0,2349,375,1,0,0,0,2350,2351,5,145,0,0,2351, + 2352,5,147,0,0,2352,2353,4,188,1,1,2353,377,1,0,0,0,2354,2355,5, + 147,0,0,2355,2356,5,147,0,0,2356,2357,4,189,2,1,2357,379,1,0,0,0, + 2358,2359,5,147,0,0,2359,2360,5,159,0,0,2360,2361,4,190,3,1,2361, + 381,1,0,0,0,2362,2371,3,384,192,0,2363,2371,3,386,193,0,2364,2371, + 5,116,0,0,2365,2371,5,117,0,0,2366,2371,5,118,0,0,2367,2371,5,119, + 0,0,2368,2371,5,120,0,0,2369,2371,5,67,0,0,2370,2362,1,0,0,0,2370, + 2363,1,0,0,0,2370,2364,1,0,0,0,2370,2365,1,0,0,0,2370,2366,1,0,0, + 0,2370,2367,1,0,0,0,2370,2368,1,0,0,0,2370,2369,1,0,0,0,2371,383, + 1,0,0,0,2372,2373,7,15,0,0,2373,385,1,0,0,0,2374,2379,3,388,194, + 0,2375,2379,3,390,195,0,2376,2379,5,121,0,0,2377,2379,5,122,0,0, + 2378,2374,1,0,0,0,2378,2375,1,0,0,0,2378,2376,1,0,0,0,2378,2377, + 1,0,0,0,2379,387,1,0,0,0,2380,2384,5,123,0,0,2381,2383,3,392,196, + 0,2382,2381,1,0,0,0,2383,2386,1,0,0,0,2384,2382,1,0,0,0,2384,2385, + 1,0,0,0,2385,2387,1,0,0,0,2386,2384,1,0,0,0,2387,2388,5,176,0,0, + 2388,389,1,0,0,0,2389,2393,5,124,0,0,2390,2392,3,394,197,0,2391, + 2390,1,0,0,0,2392,2395,1,0,0,0,2393,2391,1,0,0,0,2393,2394,1,0,0, + 0,2394,2396,1,0,0,0,2395,2393,1,0,0,0,2396,2397,5,176,0,0,2397,391, + 1,0,0,0,2398,2403,3,396,198,0,2399,2403,5,172,0,0,2400,2403,5,174, + 0,0,2401,2403,5,177,0,0,2402,2398,1,0,0,0,2402,2399,1,0,0,0,2402, + 2400,1,0,0,0,2402,2401,1,0,0,0,2403,393,1,0,0,0,2404,2409,3,396, + 198,0,2405,2409,5,172,0,0,2406,2409,5,175,0,0,2407,2409,5,178,0, + 0,2408,2404,1,0,0,0,2408,2405,1,0,0,0,2408,2406,1,0,0,0,2408,2407, + 1,0,0,0,2409,395,1,0,0,0,2410,2415,3,28,14,0,2411,2412,5,132,0,0, + 2412,2414,3,28,14,0,2413,2411,1,0,0,0,2414,2417,1,0,0,0,2415,2413, + 1,0,0,0,2415,2416,1,0,0,0,2416,2424,1,0,0,0,2417,2415,1,0,0,0,2418, + 2420,5,133,0,0,2419,2421,5,180,0,0,2420,2419,1,0,0,0,2421,2422,1, + 0,0,0,2422,2420,1,0,0,0,2422,2423,1,0,0,0,2423,2425,1,0,0,0,2424, + 2418,1,0,0,0,2424,2425,1,0,0,0,2425,397,1,0,0,0,2426,2427,7,16,0, + 0,2427,399,1,0,0,0,2428,2429,5,26,0,0,2429,2431,3,436,218,0,2430, + 2432,3,232,116,0,2431,2430,1,0,0,0,2431,2432,1,0,0,0,2432,2434,1, + 0,0,0,2433,2435,3,236,118,0,2434,2433,1,0,0,0,2434,2435,1,0,0,0, + 2435,2437,1,0,0,0,2436,2438,3,240,120,0,2437,2436,1,0,0,0,2437,2438, + 1,0,0,0,2438,2439,1,0,0,0,2439,2441,3,252,126,0,2440,2442,5,134, + 0,0,2441,2440,1,0,0,0,2441,2442,1,0,0,0,2442,401,1,0,0,0,2443,2445, + 7,17,0,0,2444,2443,1,0,0,0,2444,2445,1,0,0,0,2445,2446,1,0,0,0,2446, + 2447,5,92,0,0,2447,2449,3,436,218,0,2448,2450,3,232,116,0,2449,2448, + 1,0,0,0,2449,2450,1,0,0,0,2450,2452,1,0,0,0,2451,2453,3,316,158, + 0,2452,2451,1,0,0,0,2452,2453,1,0,0,0,2453,2455,1,0,0,0,2454,2456, + 3,240,120,0,2455,2454,1,0,0,0,2455,2456,1,0,0,0,2456,2457,1,0,0, + 0,2457,2459,3,318,159,0,2458,2460,5,134,0,0,2459,2458,1,0,0,0,2459, + 2460,1,0,0,0,2460,403,1,0,0,0,2461,2462,5,56,0,0,2462,2464,3,436, + 218,0,2463,2465,3,328,164,0,2464,2463,1,0,0,0,2464,2465,1,0,0,0, + 2465,2467,1,0,0,0,2466,2468,3,334,167,0,2467,2466,1,0,0,0,2467,2468, + 1,0,0,0,2468,2470,1,0,0,0,2469,2471,3,240,120,0,2470,2469,1,0,0, + 0,2470,2471,1,0,0,0,2471,2472,1,0,0,0,2472,2474,3,252,126,0,2473, + 2475,5,134,0,0,2474,2473,1,0,0,0,2474,2475,1,0,0,0,2475,405,1,0, + 0,0,2476,2477,5,37,0,0,2477,2479,3,436,218,0,2478,2480,3,342,171, + 0,2479,2478,1,0,0,0,2479,2480,1,0,0,0,2480,2481,1,0,0,0,2481,2483, + 3,344,172,0,2482,2484,5,134,0,0,2483,2482,1,0,0,0,2483,2484,1,0, + 0,0,2484,407,1,0,0,0,2485,2486,5,31,0,0,2486,2487,3,276,138,0,2487, + 2489,3,436,218,0,2488,2490,3,328,164,0,2489,2488,1,0,0,0,2489,2490, + 1,0,0,0,2490,2491,1,0,0,0,2491,2493,5,129,0,0,2492,2494,3,282,141, + 0,2493,2492,1,0,0,0,2493,2494,1,0,0,0,2494,2495,1,0,0,0,2495,2497, + 5,130,0,0,2496,2498,3,240,120,0,2497,2496,1,0,0,0,2497,2498,1,0, + 0,0,2498,2499,1,0,0,0,2499,2500,5,134,0,0,2500,409,1,0,0,0,2501, + 2502,5,39,0,0,2502,2511,3,4,2,0,2503,2504,3,270,135,0,2504,2505, + 5,134,0,0,2505,2512,1,0,0,0,2506,2507,3,278,139,0,2507,2508,5,125, + 0,0,2508,2509,3,302,151,0,2509,2510,5,126,0,0,2510,2512,1,0,0,0, + 2511,2503,1,0,0,0,2511,2506,1,0,0,0,2512,411,1,0,0,0,2513,2514,3, + 270,135,0,2514,2515,5,134,0,0,2515,413,1,0,0,0,2516,2530,3,278,139, + 0,2517,2518,5,125,0,0,2518,2519,3,292,146,0,2519,2524,5,126,0,0, + 2520,2521,5,145,0,0,2521,2522,3,274,137,0,2522,2523,5,134,0,0,2523, + 2525,1,0,0,0,2524,2520,1,0,0,0,2524,2525,1,0,0,0,2525,2531,1,0,0, + 0,2526,2527,3,376,188,0,2527,2528,3,76,38,0,2528,2529,5,134,0,0, + 2529,2531,1,0,0,0,2530,2517,1,0,0,0,2530,2526,1,0,0,0,2531,415,1, + 0,0,0,2532,2533,5,27,0,0,2533,2534,3,4,2,0,2534,2535,3,266,133,0, + 2535,2536,5,134,0,0,2536,417,1,0,0,0,2537,2538,5,94,0,0,2538,2539, + 5,127,0,0,2539,2540,3,282,141,0,2540,2549,5,128,0,0,2541,2542,5, + 125,0,0,2542,2543,3,292,146,0,2543,2544,5,126,0,0,2544,2550,1,0, + 0,0,2545,2546,3,376,188,0,2546,2547,3,76,38,0,2547,2548,5,134,0, + 0,2548,2550,1,0,0,0,2549,2541,1,0,0,0,2549,2545,1,0,0,0,2550,419, + 1,0,0,0,2551,2552,5,144,0,0,2552,2553,3,436,218,0,2553,2554,5,129, + 0,0,2554,2555,5,130,0,0,2555,2556,3,314,157,0,2556,421,1,0,0,0,2557, + 2558,3,436,218,0,2558,2560,5,129,0,0,2559,2561,3,282,141,0,2560, + 2559,1,0,0,0,2560,2561,1,0,0,0,2561,2562,1,0,0,0,2562,2564,5,130, + 0,0,2563,2565,3,312,156,0,2564,2563,1,0,0,0,2564,2565,1,0,0,0,2565, + 2566,1,0,0,0,2566,2567,3,314,157,0,2567,423,1,0,0,0,2568,2570,3, + 426,213,0,2569,2571,3,232,116,0,2570,2569,1,0,0,0,2570,2571,1,0, + 0,0,2571,2572,1,0,0,0,2572,2574,5,129,0,0,2573,2575,3,282,141,0, + 2574,2573,1,0,0,0,2574,2575,1,0,0,0,2575,2576,1,0,0,0,2576,2578, + 5,130,0,0,2577,2579,3,240,120,0,2578,2577,1,0,0,0,2578,2579,1,0, + 0,0,2579,2585,1,0,0,0,2580,2586,3,280,140,0,2581,2582,3,376,188, + 0,2582,2583,3,76,38,0,2583,2584,5,134,0,0,2584,2586,1,0,0,0,2585, + 2580,1,0,0,0,2585,2581,1,0,0,0,2586,425,1,0,0,0,2587,2593,3,436, + 218,0,2588,2589,3,436,218,0,2589,2590,5,149,0,0,2590,2591,3,436, + 218,0,2591,2593,1,0,0,0,2592,2587,1,0,0,0,2592,2588,1,0,0,0,2593, + 2601,1,0,0,0,2594,2596,3,22,11,0,2595,2594,1,0,0,0,2595,2596,1,0, + 0,0,2596,2597,1,0,0,0,2597,2598,5,131,0,0,2598,2600,3,436,218,0, + 2599,2595,1,0,0,0,2600,2603,1,0,0,0,2601,2599,1,0,0,0,2601,2602, + 1,0,0,0,2602,427,1,0,0,0,2603,2601,1,0,0,0,2604,2605,5,70,0,0,2605, + 2606,3,308,154,0,2606,2608,5,129,0,0,2607,2609,5,54,0,0,2608,2607, + 1,0,0,0,2608,2609,1,0,0,0,2609,2610,1,0,0,0,2610,2616,3,430,215, + 0,2611,2613,5,132,0,0,2612,2614,5,54,0,0,2613,2612,1,0,0,0,2613, + 2614,1,0,0,0,2614,2615,1,0,0,0,2615,2617,3,430,215,0,2616,2611,1, + 0,0,0,2616,2617,1,0,0,0,2617,2618,1,0,0,0,2618,2624,5,130,0,0,2619, + 2625,3,314,157,0,2620,2621,3,376,188,0,2621,2622,3,76,38,0,2622, + 2623,5,134,0,0,2623,2625,1,0,0,0,2624,2619,1,0,0,0,2624,2620,1,0, + 0,0,2625,429,1,0,0,0,2626,2627,3,4,2,0,2627,2630,3,436,218,0,2628, + 2629,5,145,0,0,2629,2631,3,28,14,0,2630,2628,1,0,0,0,2630,2631,1, + 0,0,0,2631,431,1,0,0,0,2632,2634,5,129,0,0,2633,2635,3,24,12,0,2634, + 2633,1,0,0,0,2634,2635,1,0,0,0,2635,2636,1,0,0,0,2636,2637,5,130, + 0,0,2637,433,1,0,0,0,2638,2640,5,129,0,0,2639,2641,3,24,12,0,2640, + 2639,1,0,0,0,2640,2641,1,0,0,0,2641,2642,1,0,0,0,2642,2644,5,130, + 0,0,2643,2645,3,90,45,0,2644,2643,1,0,0,0,2644,2645,1,0,0,0,2645, + 435,1,0,0,0,2646,2647,7,18,0,0,2647,437,1,0,0,0,345,439,442,445, + 450,454,460,463,468,472,479,481,489,497,503,507,512,522,530,540, + 546,549,554,557,563,568,578,591,599,605,607,614,622,630,638,646, + 654,664,666,672,677,685,693,701,703,706,713,718,725,729,731,755, + 764,769,773,781,784,789,793,797,803,817,823,835,839,844,848,854, + 862,871,889,892,897,900,915,921,925,931,936,939,947,955,966,971, + 976,978,987,995,1002,1010,1014,1023,1028,1030,1039,1047,1051,1056, + 1058,1063,1067,1074,1082,1084,1088,1091,1094,1102,1112,1129,1136, + 1140,1150,1155,1162,1171,1176,1183,1195,1206,1214,1219,1228,1237, + 1246,1252,1257,1261,1265,1269,1273,1280,1288,1301,1311,1333,1337, + 1341,1346,1366,1371,1376,1383,1386,1408,1420,1424,1432,1442,1449, + 1453,1458,1461,1466,1474,1479,1486,1492,1500,1508,1511,1518,1525, + 1529,1532,1538,1542,1548,1562,1568,1575,1580,1583,1586,1593,1603, + 1620,1625,1629,1632,1635,1642,1648,1656,1662,1672,1680,1686,1697, + 1701,1703,1708,1712,1719,1728,1735,1738,1741,1745,1750,1763,1773, + 1780,1792,1799,1811,1817,1821,1825,1831,1837,1839,1846,1850,1853, + 1857,1867,1870,1877,1880,1885,1890,1892,1895,1898,1904,1907,1919, + 1923,1926,1936,1939,1945,1972,1985,1991,2000,2006,2009,2017,2021, + 2027,2033,2039,2050,2054,2056,2066,2072,2075,2088,2094,2097,2100, + 2107,2112,2116,2120,2137,2140,2145,2149,2153,2162,2165,2170,2174, + 2179,2183,2185,2196,2200,2202,2207,2212,2219,2225,2230,2236,2240, + 2246,2253,2263,2266,2269,2274,2280,2284,2286,2293,2300,2308,2312, + 2327,2331,2340,2344,2348,2370,2378,2384,2393,2402,2408,2415,2422, + 2424,2431,2434,2437,2441,2444,2449,2452,2455,2459,2464,2467,2470, + 2474,2479,2483,2489,2493,2497,2511,2524,2530,2549,2560,2564,2570, + 2574,2578,2585,2592,2595,2601,2608,2613,2616,2624,2630,2634,2640, + 2644 + ] + +class CSharpParser ( CSharpParserBase ): grammarFileName = "CSharpParser.g4" @@ -1514,39 +1149,39 @@ class CSharpParser ( Parser ): sharedContextCache = PredictionContextCache() - literalNames = [ "", "'\u00EF\u00BB\u00BF'", "", "", - "", "", "", "'#'", "'abstract'", - "'add'", "'alias'", "'__arglist'", "'as'", "'ascending'", - "'async'", "'await'", "'base'", "'bool'", "'break'", - "'by'", "'byte'", "'case'", "'catch'", "'char'", "'checked'", - "'class'", "'const'", "'continue'", "'decimal'", "'default'", - "'delegate'", "'descending'", "'do'", "'double'", "'dynamic'", - "'else'", "'enum'", "'equals'", "'event'", "'explicit'", - "'extern'", "'false'", "'finally'", "'fixed'", "'float'", - "'for'", "'foreach'", "'from'", "'get'", "'goto'", - "'group'", "'if'", "'implicit'", "'in'", "'int'", "'interface'", - "'internal'", "'into'", "'is'", "'join'", "'let'", - "'lock'", "'long'", "'nameof'", "'namespace'", "'new'", - "'null'", "'object'", "'on'", "'operator'", "'orderby'", - "'out'", "'override'", "'params'", "'partial'", "'private'", - "'protected'", "'public'", "'readonly'", "'ref'", "'remove'", - "'return'", "'sbyte'", "'sealed'", "'select'", "'set'", - "'short'", "'sizeof'", "'stackalloc'", "'static'", - "'string'", "'struct'", "'switch'", "'this'", "'throw'", - "'true'", "'try'", "'typeof'", "'uint'", "'ulong'", - "'unchecked'", "'unmanaged'", "'unsafe'", "'ushort'", - "'using'", "'var'", "'virtual'", "'void'", "'volatile'", - "'when'", "'where'", "'while'", "'yield'", "", - "", "", "", "", - "", "", "", "", - "", "", "'{'", "'}'", "'['", "']'", - "'('", "')'", "'.'", "','", "':'", "';'", "'+'", "'-'", - "'*'", "'/'", "'%'", "'&'", "'|'", "'^'", "'!'", "'~'", - "'='", "'<'", "'>'", "'?'", "'::'", "'??'", "'++'", - "'--'", "'&&'", "'||'", "'->'", "'=='", "'!='", "'<='", - "'>='", "'+='", "'-='", "'*='", "'/='", "'%='", "'&='", - "'|='", "'^='", "'<<'", "'<<='", "'??='", "'..'", "'{{'", + literalNames = [ "", "'\\u00EF\\u00BB\\u00BF'", "", + "'/***/'", "", "", "", "", + "'#'", "'abstract'", "'add'", "'alias'", "'__arglist'", + "'as'", "'ascending'", "'async'", "'await'", "'base'", + "'bool'", "'break'", "'by'", "'byte'", "'case'", "'catch'", + "'char'", "'checked'", "'class'", "'const'", "'continue'", + "'decimal'", "'default'", "'delegate'", "'descending'", + "'do'", "'double'", "'dynamic'", "'else'", "'enum'", + "'equals'", "'event'", "'explicit'", "'extern'", "'false'", + "'finally'", "'fixed'", "'float'", "'for'", "'foreach'", + "'from'", "'get'", "'goto'", "'group'", "'if'", "'implicit'", + "'in'", "'int'", "'interface'", "'internal'", "'into'", + "'is'", "'join'", "'let'", "'lock'", "'long'", "'nameof'", + "'namespace'", "'new'", "'null'", "'object'", "'on'", + "'operator'", "'orderby'", "'out'", "'override'", "'params'", + "'partial'", "'private'", "'protected'", "'public'", + "'readonly'", "'ref'", "'remove'", "'return'", "'sbyte'", + "'sealed'", "'select'", "'set'", "'short'", "'sizeof'", + "'stackalloc'", "'static'", "'string'", "'struct'", + "'switch'", "'this'", "'throw'", "'true'", "'try'", + "'typeof'", "'uint'", "'ulong'", "'unchecked'", "'unmanaged'", + "'unsafe'", "'ushort'", "'using'", "'var'", "'virtual'", + "'void'", "'volatile'", "'when'", "'where'", "'while'", + "'yield'", "", "", "", "", "", "", "", "", + "", "", "", "'{'", "'}'", + "'['", "']'", "'('", "')'", "'.'", "','", "':'", "';'", + "'+'", "'-'", "'*'", "'/'", "'%'", "'&'", "'|'", "'^'", + "'!'", "'~'", "'='", "'<'", "'>'", "'?'", "'::'", "'??'", + "'++'", "'--'", "'&&'", "'||'", "'->'", "'=='", "'!='", + "'<='", "'>='", "'+='", "'-='", "'*='", "'/='", "'%='", + "'&='", "'|='", "'^='", "'<<'", "'<<='", "'??='", "'..'", + "'{{'", "", "", "", "", "", "", "", "", "", "", "'define'", "'undef'", "'elif'", "'endif'", "'line'", "", "", "", @@ -1554,18 +1189,19 @@ class CSharpParser ( Parser ): "", "", "", "'}}'" ] symbolicNames = [ "", "BYTE_ORDER_MARK", "SINGLE_LINE_DOC_COMMENT", - "DELIMITED_DOC_COMMENT", "SINGLE_LINE_COMMENT", "DELIMITED_COMMENT", - "WHITESPACES", "SHARP", "ABSTRACT", "ADD", "ALIAS", - "ARGLIST", "AS", "ASCENDING", "ASYNC", "AWAIT", "BASE", - "BOOL", "BREAK", "BY", "BYTE", "CASE", "CATCH", "CHAR", - "CHECKED", "CLASS", "CONST", "CONTINUE", "DECIMAL", - "DEFAULT", "DELEGATE", "DESCENDING", "DO", "DOUBLE", - "DYNAMIC", "ELSE", "ENUM", "EQUALS", "EVENT", "EXPLICIT", - "EXTERN", "FALSE", "FINALLY", "FIXED", "FLOAT", "FOR", - "FOREACH", "FROM", "GET", "GOTO", "GROUP", "IF", "IMPLICIT", + "EMPTY_DELIMITED_DOC_COMMENT", "DELIMITED_DOC_COMMENT", + "SINGLE_LINE_COMMENT", "DELIMITED_COMMENT", "WHITESPACES", + "SHARP", "ABSTRACT", "ADD", "ALIAS", "ARGLIST", "AS", + "ASCENDING", "ASYNC", "AWAIT", "BASE", "BOOL", "BREAK", + "BY", "BYTE", "CASE", "CATCH", "CHAR", "CHECKED", + "CLASS", "CONST", "CONTINUE", "DECIMAL", "DEFAULT", + "DELEGATE", "DESCENDING", "DO", "DOUBLE", "DYNAMIC", + "ELSE", "ENUM", "EQUALS", "EVENT", "EXPLICIT", "EXTERN", + "FALSE", "FINALLY", "FIXED", "FLOAT", "FOR", "FOREACH", + "FROM", "GET", "GOTO", "GROUP", "IF", "IMPLICIT", "IN", "INT", "INTERFACE", "INTERNAL", "INTO", "IS", "JOIN", "LET", "LOCK", "LONG", "NAMEOF", "NAMESPACE", - "NEW", "NULL", "OBJECT", "ON", "OPERATOR", "ORDERBY", + "NEW", "NULL_", "OBJECT", "ON", "OPERATOR", "ORDERBY", "OUT", "OVERRIDE", "PARAMS", "PARTIAL", "PRIVATE", "PROTECTED", "PUBLIC", "READONLY", "REF", "REMOVE", "RETURN", "SBYTE", "SEALED", "SELECT", "SET", "SHORT", @@ -1632,189 +1268,190 @@ class CSharpParser ( Parser ): RULE_switch_expression_arm = 32 RULE_range_expression = 33 RULE_unary_expression = 34 - RULE_primary_expression = 35 - RULE_primary_expression_start = 36 - RULE_throwable_expression = 37 - RULE_throw_expression = 38 - RULE_member_access = 39 - RULE_bracket_expression = 40 - RULE_indexer_argument = 41 - RULE_predefined_type = 42 - RULE_expression_list = 43 - RULE_object_or_collection_initializer = 44 - RULE_object_initializer = 45 - RULE_member_initializer_list = 46 - RULE_member_initializer = 47 - RULE_initializer_value = 48 - RULE_collection_initializer = 49 - RULE_element_initializer = 50 - RULE_anonymous_object_initializer = 51 - RULE_member_declarator_list = 52 - RULE_member_declarator = 53 - RULE_unbound_type_name = 54 - RULE_generic_dimension_specifier = 55 - RULE_isType = 56 - RULE_isTypePatternArms = 57 - RULE_isTypePatternArm = 58 - RULE_lambda_expression = 59 - RULE_anonymous_function_signature = 60 - RULE_explicit_anonymous_function_parameter_list = 61 - RULE_explicit_anonymous_function_parameter = 62 - RULE_implicit_anonymous_function_parameter_list = 63 - RULE_anonymous_function_body = 64 - RULE_query_expression = 65 - RULE_from_clause = 66 - RULE_query_body = 67 - RULE_query_body_clause = 68 - RULE_let_clause = 69 - RULE_where_clause = 70 - RULE_combined_join_clause = 71 - RULE_orderby_clause = 72 - RULE_ordering = 73 - RULE_select_or_group_clause = 74 - RULE_query_continuation = 75 - RULE_statement = 76 - RULE_declarationStatement = 77 - RULE_local_function_declaration = 78 - RULE_local_function_header = 79 - RULE_local_function_modifiers = 80 - RULE_local_function_body = 81 - RULE_labeled_Statement = 82 - RULE_embedded_statement = 83 - RULE_simple_embedded_statement = 84 - RULE_block = 85 - RULE_local_variable_declaration = 86 - RULE_local_variable_type = 87 - RULE_local_variable_declarator = 88 - RULE_local_variable_initializer = 89 - RULE_local_constant_declaration = 90 - RULE_if_body = 91 - RULE_switch_section = 92 - RULE_switch_label = 93 - RULE_case_guard = 94 - RULE_statement_list = 95 - RULE_for_initializer = 96 - RULE_for_iterator = 97 - RULE_catch_clauses = 98 - RULE_specific_catch_clause = 99 - RULE_general_catch_clause = 100 - RULE_exception_filter = 101 - RULE_finally_clause = 102 - RULE_resource_acquisition = 103 - RULE_namespace_declaration = 104 - RULE_qualified_identifier = 105 - RULE_namespace_body = 106 - RULE_extern_alias_directives = 107 - RULE_extern_alias_directive = 108 - RULE_using_directives = 109 - RULE_using_directive = 110 - RULE_namespace_member_declarations = 111 - RULE_namespace_member_declaration = 112 - RULE_type_declaration = 113 - RULE_qualified_alias_member = 114 - RULE_type_parameter_list = 115 - RULE_type_parameter = 116 - RULE_class_base = 117 - RULE_interface_type_list = 118 - RULE_type_parameter_constraints_clauses = 119 - RULE_type_parameter_constraints_clause = 120 - RULE_type_parameter_constraints = 121 - RULE_primary_constraint = 122 - RULE_secondary_constraints = 123 - RULE_constructor_constraint = 124 - RULE_class_body = 125 - RULE_class_member_declarations = 126 - RULE_class_member_declaration = 127 - RULE_all_member_modifiers = 128 - RULE_all_member_modifier = 129 - RULE_common_member_declaration = 130 - RULE_typed_member_declaration = 131 - RULE_constant_declarators = 132 - RULE_constant_declarator = 133 - RULE_variable_declarators = 134 - RULE_variable_declarator = 135 - RULE_variable_initializer = 136 - RULE_return_type = 137 - RULE_member_name = 138 - RULE_method_body = 139 - RULE_formal_parameter_list = 140 - RULE_fixed_parameters = 141 - RULE_fixed_parameter = 142 - RULE_parameter_modifier = 143 - RULE_parameter_array = 144 - RULE_accessor_declarations = 145 - RULE_get_accessor_declaration = 146 - RULE_set_accessor_declaration = 147 - RULE_accessor_modifier = 148 - RULE_accessor_body = 149 - RULE_event_accessor_declarations = 150 - RULE_add_accessor_declaration = 151 - RULE_remove_accessor_declaration = 152 - RULE_overloadable_operator = 153 - RULE_conversion_operator_declarator = 154 - RULE_constructor_initializer = 155 - RULE_body = 156 - RULE_struct_interfaces = 157 - RULE_struct_body = 158 - RULE_struct_member_declaration = 159 - RULE_array_type = 160 - RULE_rank_specifier = 161 - RULE_array_initializer = 162 - RULE_variant_type_parameter_list = 163 - RULE_variant_type_parameter = 164 - RULE_variance_annotation = 165 - RULE_interface_base = 166 - RULE_interface_body = 167 - RULE_interface_member_declaration = 168 - RULE_interface_accessors = 169 - RULE_enum_base = 170 - RULE_enum_body = 171 - RULE_enum_member_declaration = 172 - RULE_global_attribute_section = 173 - RULE_global_attribute_target = 174 - RULE_attributes = 175 - RULE_attribute_section = 176 - RULE_attribute_target = 177 - RULE_attribute_list = 178 - RULE_attribute = 179 - RULE_attribute_argument = 180 - RULE_pointer_type = 181 - RULE_fixed_pointer_declarators = 182 - RULE_fixed_pointer_declarator = 183 - RULE_fixed_pointer_initializer = 184 - RULE_fixed_size_buffer_declarator = 185 - RULE_stackalloc_initializer = 186 - RULE_right_arrow = 187 - RULE_right_shift = 188 - RULE_right_shift_assignment = 189 - RULE_literal = 190 - RULE_boolean_literal = 191 - RULE_string_literal = 192 - RULE_interpolated_regular_string = 193 - RULE_interpolated_verbatium_string = 194 - RULE_interpolated_regular_string_part = 195 - RULE_interpolated_verbatium_string_part = 196 - RULE_interpolated_string_expression = 197 - RULE_keyword = 198 - RULE_class_definition = 199 - RULE_struct_definition = 200 - RULE_interface_definition = 201 - RULE_enum_definition = 202 - RULE_delegate_definition = 203 - RULE_event_declaration = 204 - RULE_field_declaration = 205 - RULE_property_declaration = 206 - RULE_constant_declaration = 207 - RULE_indexer_declaration = 208 - RULE_destructor_definition = 209 - RULE_constructor_declaration = 210 - RULE_method_declaration = 211 - RULE_method_member_name = 212 - RULE_operator_declaration = 213 - RULE_arg_declaration = 214 - RULE_method_invocation = 215 - RULE_object_creation_expression = 216 - RULE_identifier = 217 + RULE_cast_expression = 35 + RULE_primary_expression = 36 + RULE_primary_expression_start = 37 + RULE_throwable_expression = 38 + RULE_throw_expression = 39 + RULE_member_access = 40 + RULE_bracket_expression = 41 + RULE_indexer_argument = 42 + RULE_predefined_type = 43 + RULE_expression_list = 44 + RULE_object_or_collection_initializer = 45 + RULE_object_initializer = 46 + RULE_member_initializer_list = 47 + RULE_member_initializer = 48 + RULE_initializer_value = 49 + RULE_collection_initializer = 50 + RULE_element_initializer = 51 + RULE_anonymous_object_initializer = 52 + RULE_member_declarator_list = 53 + RULE_member_declarator = 54 + RULE_unbound_type_name = 55 + RULE_generic_dimension_specifier = 56 + RULE_isType = 57 + RULE_isTypePatternArms = 58 + RULE_isTypePatternArm = 59 + RULE_lambda_expression = 60 + RULE_anonymous_function_signature = 61 + RULE_explicit_anonymous_function_parameter_list = 62 + RULE_explicit_anonymous_function_parameter = 63 + RULE_implicit_anonymous_function_parameter_list = 64 + RULE_anonymous_function_body = 65 + RULE_query_expression = 66 + RULE_from_clause = 67 + RULE_query_body = 68 + RULE_query_body_clause = 69 + RULE_let_clause = 70 + RULE_where_clause = 71 + RULE_combined_join_clause = 72 + RULE_orderby_clause = 73 + RULE_ordering = 74 + RULE_select_or_group_clause = 75 + RULE_query_continuation = 76 + RULE_statement = 77 + RULE_declarationStatement = 78 + RULE_local_function_declaration = 79 + RULE_local_function_header = 80 + RULE_local_function_modifiers = 81 + RULE_local_function_body = 82 + RULE_labeled_Statement = 83 + RULE_embedded_statement = 84 + RULE_simple_embedded_statement = 85 + RULE_block = 86 + RULE_local_variable_declaration = 87 + RULE_local_variable_type = 88 + RULE_local_variable_declarator = 89 + RULE_local_variable_initializer = 90 + RULE_local_constant_declaration = 91 + RULE_if_body = 92 + RULE_switch_section = 93 + RULE_switch_label = 94 + RULE_case_guard = 95 + RULE_statement_list = 96 + RULE_for_initializer = 97 + RULE_for_iterator = 98 + RULE_catch_clauses = 99 + RULE_specific_catch_clause = 100 + RULE_general_catch_clause = 101 + RULE_exception_filter = 102 + RULE_finally_clause = 103 + RULE_resource_acquisition = 104 + RULE_namespace_declaration = 105 + RULE_qualified_identifier = 106 + RULE_namespace_body = 107 + RULE_extern_alias_directives = 108 + RULE_extern_alias_directive = 109 + RULE_using_directives = 110 + RULE_using_directive = 111 + RULE_namespace_member_declarations = 112 + RULE_namespace_member_declaration = 113 + RULE_type_declaration = 114 + RULE_qualified_alias_member = 115 + RULE_type_parameter_list = 116 + RULE_type_parameter = 117 + RULE_class_base = 118 + RULE_interface_type_list = 119 + RULE_type_parameter_constraints_clauses = 120 + RULE_type_parameter_constraints_clause = 121 + RULE_type_parameter_constraints = 122 + RULE_primary_constraint = 123 + RULE_secondary_constraints = 124 + RULE_constructor_constraint = 125 + RULE_class_body = 126 + RULE_class_member_declarations = 127 + RULE_class_member_declaration = 128 + RULE_all_member_modifiers = 129 + RULE_all_member_modifier = 130 + RULE_common_member_declaration = 131 + RULE_typed_member_declaration = 132 + RULE_constant_declarators = 133 + RULE_constant_declarator = 134 + RULE_variable_declarators = 135 + RULE_variable_declarator = 136 + RULE_variable_initializer = 137 + RULE_return_type = 138 + RULE_member_name = 139 + RULE_method_body = 140 + RULE_formal_parameter_list = 141 + RULE_fixed_parameters = 142 + RULE_fixed_parameter = 143 + RULE_parameter_modifier = 144 + RULE_parameter_array = 145 + RULE_accessor_declarations = 146 + RULE_get_accessor_declaration = 147 + RULE_set_accessor_declaration = 148 + RULE_accessor_modifier = 149 + RULE_accessor_body = 150 + RULE_event_accessor_declarations = 151 + RULE_add_accessor_declaration = 152 + RULE_remove_accessor_declaration = 153 + RULE_overloadable_operator = 154 + RULE_conversion_operator_declarator = 155 + RULE_constructor_initializer = 156 + RULE_body = 157 + RULE_struct_interfaces = 158 + RULE_struct_body = 159 + RULE_struct_member_declaration = 160 + RULE_array_type = 161 + RULE_rank_specifier = 162 + RULE_array_initializer = 163 + RULE_variant_type_parameter_list = 164 + RULE_variant_type_parameter = 165 + RULE_variance_annotation = 166 + RULE_interface_base = 167 + RULE_interface_body = 168 + RULE_interface_member_declaration = 169 + RULE_interface_accessors = 170 + RULE_enum_base = 171 + RULE_enum_body = 172 + RULE_enum_member_declaration = 173 + RULE_global_attribute_section = 174 + RULE_global_attribute_target = 175 + RULE_attributes = 176 + RULE_attribute_section = 177 + RULE_attribute_target = 178 + RULE_attribute_list = 179 + RULE_attribute = 180 + RULE_attribute_argument = 181 + RULE_pointer_type = 182 + RULE_fixed_pointer_declarators = 183 + RULE_fixed_pointer_declarator = 184 + RULE_fixed_pointer_initializer = 185 + RULE_fixed_size_buffer_declarator = 186 + RULE_stackalloc_initializer = 187 + RULE_right_arrow = 188 + RULE_right_shift = 189 + RULE_right_shift_assignment = 190 + RULE_literal = 191 + RULE_boolean_literal = 192 + RULE_string_literal = 193 + RULE_interpolated_regular_string = 194 + RULE_interpolated_verbatium_string = 195 + RULE_interpolated_regular_string_part = 196 + RULE_interpolated_verbatium_string_part = 197 + RULE_interpolated_string_expression = 198 + RULE_keyword = 199 + RULE_class_definition = 200 + RULE_struct_definition = 201 + RULE_interface_definition = 202 + RULE_enum_definition = 203 + RULE_delegate_definition = 204 + RULE_event_declaration = 205 + RULE_field_declaration = 206 + RULE_property_declaration = 207 + RULE_constant_declaration = 208 + RULE_indexer_declaration = 209 + RULE_destructor_definition = 210 + RULE_constructor_declaration = 211 + RULE_method_declaration = 212 + RULE_method_member_name = 213 + RULE_operator_declaration = 214 + RULE_arg_declaration = 215 + RULE_method_invocation = 216 + RULE_object_creation_expression = 217 + RULE_identifier = 218 ruleNames = [ "compilation_unit", "namespace_or_type_name", "type_", "base_type", "tuple_type", "tuple_element", "simple_type", @@ -1828,26 +1465,26 @@ class CSharpParser ( Parser ): "relational_expression", "shift_expression", "additive_expression", "multiplicative_expression", "switch_expression", "switch_expression_arms", "switch_expression_arm", "range_expression", "unary_expression", - "primary_expression", "primary_expression_start", "throwable_expression", - "throw_expression", "member_access", "bracket_expression", - "indexer_argument", "predefined_type", "expression_list", - "object_or_collection_initializer", "object_initializer", - "member_initializer_list", "member_initializer", "initializer_value", - "collection_initializer", "element_initializer", "anonymous_object_initializer", - "member_declarator_list", "member_declarator", "unbound_type_name", - "generic_dimension_specifier", "isType", "isTypePatternArms", - "isTypePatternArm", "lambda_expression", "anonymous_function_signature", - "explicit_anonymous_function_parameter_list", "explicit_anonymous_function_parameter", - "implicit_anonymous_function_parameter_list", "anonymous_function_body", - "query_expression", "from_clause", "query_body", "query_body_clause", - "let_clause", "where_clause", "combined_join_clause", - "orderby_clause", "ordering", "select_or_group_clause", - "query_continuation", "statement", "declarationStatement", - "local_function_declaration", "local_function_header", - "local_function_modifiers", "local_function_body", "labeled_Statement", - "embedded_statement", "simple_embedded_statement", "block", - "local_variable_declaration", "local_variable_type", - "local_variable_declarator", "local_variable_initializer", + "cast_expression", "primary_expression", "primary_expression_start", + "throwable_expression", "throw_expression", "member_access", + "bracket_expression", "indexer_argument", "predefined_type", + "expression_list", "object_or_collection_initializer", + "object_initializer", "member_initializer_list", "member_initializer", + "initializer_value", "collection_initializer", "element_initializer", + "anonymous_object_initializer", "member_declarator_list", + "member_declarator", "unbound_type_name", "generic_dimension_specifier", + "isType", "isTypePatternArms", "isTypePatternArm", "lambda_expression", + "anonymous_function_signature", "explicit_anonymous_function_parameter_list", + "explicit_anonymous_function_parameter", "implicit_anonymous_function_parameter_list", + "anonymous_function_body", "query_expression", "from_clause", + "query_body", "query_body_clause", "let_clause", "where_clause", + "combined_join_clause", "orderby_clause", "ordering", + "select_or_group_clause", "query_continuation", "statement", + "declarationStatement", "local_function_declaration", + "local_function_header", "local_function_modifiers", + "local_function_body", "labeled_Statement", "embedded_statement", + "simple_embedded_statement", "block", "local_variable_declaration", + "local_variable_type", "local_variable_declarator", "local_variable_initializer", "local_constant_declaration", "if_body", "switch_section", "switch_label", "case_guard", "statement_list", "for_initializer", "for_iterator", "catch_clauses", "specific_catch_clause", @@ -1897,205 +1534,206 @@ class CSharpParser ( Parser ): EOF = Token.EOF BYTE_ORDER_MARK=1 SINGLE_LINE_DOC_COMMENT=2 - DELIMITED_DOC_COMMENT=3 - SINGLE_LINE_COMMENT=4 - DELIMITED_COMMENT=5 - WHITESPACES=6 - SHARP=7 - ABSTRACT=8 - ADD=9 - ALIAS=10 - ARGLIST=11 - AS=12 - ASCENDING=13 - ASYNC=14 - AWAIT=15 - BASE=16 - BOOL=17 - BREAK=18 - BY=19 - BYTE=20 - CASE=21 - CATCH=22 - CHAR=23 - CHECKED=24 - CLASS=25 - CONST=26 - CONTINUE=27 - DECIMAL=28 - DEFAULT=29 - DELEGATE=30 - DESCENDING=31 - DO=32 - DOUBLE=33 - DYNAMIC=34 - ELSE=35 - ENUM=36 - EQUALS=37 - EVENT=38 - EXPLICIT=39 - EXTERN=40 - FALSE=41 - FINALLY=42 - FIXED=43 - FLOAT=44 - FOR=45 - FOREACH=46 - FROM=47 - GET=48 - GOTO=49 - GROUP=50 - IF=51 - IMPLICIT=52 - IN=53 - INT=54 - INTERFACE=55 - INTERNAL=56 - INTO=57 - IS=58 - JOIN=59 - LET=60 - LOCK=61 - LONG=62 - NAMEOF=63 - NAMESPACE=64 - NEW=65 - NULL=66 - OBJECT=67 - ON=68 - OPERATOR=69 - ORDERBY=70 - OUT=71 - OVERRIDE=72 - PARAMS=73 - PARTIAL=74 - PRIVATE=75 - PROTECTED=76 - PUBLIC=77 - READONLY=78 - REF=79 - REMOVE=80 - RETURN=81 - SBYTE=82 - SEALED=83 - SELECT=84 - SET=85 - SHORT=86 - SIZEOF=87 - STACKALLOC=88 - STATIC=89 - STRING=90 - STRUCT=91 - SWITCH=92 - THIS=93 - THROW=94 - TRUE=95 - TRY=96 - TYPEOF=97 - UINT=98 - ULONG=99 - UNCHECKED=100 - UNMANAGED=101 - UNSAFE=102 - USHORT=103 - USING=104 - VAR=105 - VIRTUAL=106 - VOID=107 - VOLATILE=108 - WHEN=109 - WHERE=110 - WHILE=111 - YIELD=112 - IDENTIFIER=113 - LITERAL_ACCESS=114 - INTEGER_LITERAL=115 - HEX_INTEGER_LITERAL=116 - BIN_INTEGER_LITERAL=117 - REAL_LITERAL=118 - CHARACTER_LITERAL=119 - REGULAR_STRING=120 - VERBATIUM_STRING=121 - INTERPOLATED_REGULAR_STRING_START=122 - INTERPOLATED_VERBATIUM_STRING_START=123 - OPEN_BRACE=124 - CLOSE_BRACE=125 - OPEN_BRACKET=126 - CLOSE_BRACKET=127 - OPEN_PARENS=128 - CLOSE_PARENS=129 - DOT=130 - COMMA=131 - COLON=132 - SEMICOLON=133 - PLUS=134 - MINUS=135 - STAR=136 - DIV=137 - PERCENT=138 - AMP=139 - BITWISE_OR=140 - CARET=141 - BANG=142 - TILDE=143 - ASSIGNMENT=144 - LT=145 - GT=146 - INTERR=147 - DOUBLE_COLON=148 - OP_COALESCING=149 - OP_INC=150 - OP_DEC=151 - OP_AND=152 - OP_OR=153 - OP_PTR=154 - OP_EQ=155 - OP_NE=156 - OP_LE=157 - OP_GE=158 - OP_ADD_ASSIGNMENT=159 - OP_SUB_ASSIGNMENT=160 - OP_MULT_ASSIGNMENT=161 - OP_DIV_ASSIGNMENT=162 - OP_MOD_ASSIGNMENT=163 - OP_AND_ASSIGNMENT=164 - OP_OR_ASSIGNMENT=165 - OP_XOR_ASSIGNMENT=166 - OP_LEFT_SHIFT=167 - OP_LEFT_SHIFT_ASSIGNMENT=168 - OP_COALESCING_ASSIGNMENT=169 - OP_RANGE=170 - DOUBLE_CURLY_INSIDE=171 - OPEN_BRACE_INSIDE=172 - REGULAR_CHAR_INSIDE=173 - VERBATIUM_DOUBLE_QUOTE_INSIDE=174 - DOUBLE_QUOTE_INSIDE=175 - REGULAR_STRING_INSIDE=176 - VERBATIUM_INSIDE_STRING=177 - CLOSE_BRACE_INSIDE=178 - FORMAT_STRING=179 - DIRECTIVE_WHITESPACES=180 - DIGITS=181 - DEFINE=182 - UNDEF=183 - ELIF=184 - ENDIF=185 - LINE=186 - ERROR=187 - WARNING=188 - REGION=189 - ENDREGION=190 - PRAGMA=191 - NULLABLE=192 - DIRECTIVE_HIDDEN=193 - CONDITIONAL_SYMBOL=194 - DIRECTIVE_NEW_LINE=195 - TEXT=196 - DOUBLE_CURLY_CLOSE_INSIDE=197 + EMPTY_DELIMITED_DOC_COMMENT=3 + DELIMITED_DOC_COMMENT=4 + SINGLE_LINE_COMMENT=5 + DELIMITED_COMMENT=6 + WHITESPACES=7 + SHARP=8 + ABSTRACT=9 + ADD=10 + ALIAS=11 + ARGLIST=12 + AS=13 + ASCENDING=14 + ASYNC=15 + AWAIT=16 + BASE=17 + BOOL=18 + BREAK=19 + BY=20 + BYTE=21 + CASE=22 + CATCH=23 + CHAR=24 + CHECKED=25 + CLASS=26 + CONST=27 + CONTINUE=28 + DECIMAL=29 + DEFAULT=30 + DELEGATE=31 + DESCENDING=32 + DO=33 + DOUBLE=34 + DYNAMIC=35 + ELSE=36 + ENUM=37 + EQUALS=38 + EVENT=39 + EXPLICIT=40 + EXTERN=41 + FALSE=42 + FINALLY=43 + FIXED=44 + FLOAT=45 + FOR=46 + FOREACH=47 + FROM=48 + GET=49 + GOTO=50 + GROUP=51 + IF=52 + IMPLICIT=53 + IN=54 + INT=55 + INTERFACE=56 + INTERNAL=57 + INTO=58 + IS=59 + JOIN=60 + LET=61 + LOCK=62 + LONG=63 + NAMEOF=64 + NAMESPACE=65 + NEW=66 + NULL_=67 + OBJECT=68 + ON=69 + OPERATOR=70 + ORDERBY=71 + OUT=72 + OVERRIDE=73 + PARAMS=74 + PARTIAL=75 + PRIVATE=76 + PROTECTED=77 + PUBLIC=78 + READONLY=79 + REF=80 + REMOVE=81 + RETURN=82 + SBYTE=83 + SEALED=84 + SELECT=85 + SET=86 + SHORT=87 + SIZEOF=88 + STACKALLOC=89 + STATIC=90 + STRING=91 + STRUCT=92 + SWITCH=93 + THIS=94 + THROW=95 + TRUE=96 + TRY=97 + TYPEOF=98 + UINT=99 + ULONG=100 + UNCHECKED=101 + UNMANAGED=102 + UNSAFE=103 + USHORT=104 + USING=105 + VAR=106 + VIRTUAL=107 + VOID=108 + VOLATILE=109 + WHEN=110 + WHERE=111 + WHILE=112 + YIELD=113 + IDENTIFIER=114 + LITERAL_ACCESS=115 + INTEGER_LITERAL=116 + HEX_INTEGER_LITERAL=117 + BIN_INTEGER_LITERAL=118 + REAL_LITERAL=119 + CHARACTER_LITERAL=120 + REGULAR_STRING=121 + VERBATIUM_STRING=122 + INTERPOLATED_REGULAR_STRING_START=123 + INTERPOLATED_VERBATIUM_STRING_START=124 + OPEN_BRACE=125 + CLOSE_BRACE=126 + OPEN_BRACKET=127 + CLOSE_BRACKET=128 + OPEN_PARENS=129 + CLOSE_PARENS=130 + DOT=131 + COMMA=132 + COLON=133 + SEMICOLON=134 + PLUS=135 + MINUS=136 + STAR=137 + DIV=138 + PERCENT=139 + AMP=140 + BITWISE_OR=141 + CARET=142 + BANG=143 + TILDE=144 + ASSIGNMENT=145 + LT=146 + GT=147 + INTERR=148 + DOUBLE_COLON=149 + OP_COALESCING=150 + OP_INC=151 + OP_DEC=152 + OP_AND=153 + OP_OR=154 + OP_PTR=155 + OP_EQ=156 + OP_NE=157 + OP_LE=158 + OP_GE=159 + OP_ADD_ASSIGNMENT=160 + OP_SUB_ASSIGNMENT=161 + OP_MULT_ASSIGNMENT=162 + OP_DIV_ASSIGNMENT=163 + OP_MOD_ASSIGNMENT=164 + OP_AND_ASSIGNMENT=165 + OP_OR_ASSIGNMENT=166 + OP_XOR_ASSIGNMENT=167 + OP_LEFT_SHIFT=168 + OP_LEFT_SHIFT_ASSIGNMENT=169 + OP_COALESCING_ASSIGNMENT=170 + OP_RANGE=171 + DOUBLE_CURLY_INSIDE=172 + OPEN_BRACE_INSIDE=173 + REGULAR_CHAR_INSIDE=174 + VERBATIUM_DOUBLE_QUOTE_INSIDE=175 + DOUBLE_QUOTE_INSIDE=176 + REGULAR_STRING_INSIDE=177 + VERBATIUM_INSIDE_STRING=178 + CLOSE_BRACE_INSIDE=179 + FORMAT_STRING=180 + DIRECTIVE_WHITESPACES=181 + DIGITS=182 + DEFINE=183 + UNDEF=184 + ELIF=185 + ENDIF=186 + LINE=187 + ERROR=188 + WARNING=189 + REGION=190 + ENDREGION=191 + PRAGMA=192 + NULLABLE=193 + DIRECTIVE_HIDDEN=194 + CONDITIONAL_SYMBOL=195 + DIRECTIVE_NEW_LINE=196 + TEXT=197 + DOUBLE_CURLY_CLOSE_INSIDE=198 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None @@ -2103,6 +1741,7 @@ def __init__(self, input:TokenStream, output:TextIO = sys.stdout): class Compilation_unitContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2144,6 +1783,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCompilation_unit" ): listener.exitCompilation_unit(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCompilation_unit" ): + return visitor.visitCompilation_unit(self) + else: + return visitor.visitChildren(self) + @@ -2154,50 +1799,50 @@ def compilation_unit(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 437 + self.state = 439 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.BYTE_ORDER_MARK: - self.state = 436 + if _la==1: + self.state = 438 self.match(CSharpParser.BYTE_ORDER_MARK) - self.state = 440 + self.state = 442 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,1,self._ctx) if la_ == 1: - self.state = 439 + self.state = 441 self.extern_alias_directives() - self.state = 443 + self.state = 445 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.USING: - self.state = 442 + if _la==105: + self.state = 444 self.using_directives() - self.state = 448 + self.state = 450 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,3,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 445 + self.state = 447 self.global_attribute_section() - self.state = 450 + self.state = 452 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,3,self._ctx) - self.state = 452 + self.state = 454 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ABSTRACT) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.CLASS) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.ENUM) | (1 << CSharpParser.EXTERN) | (1 << CSharpParser.INTERFACE) | (1 << CSharpParser.INTERNAL))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CSharpParser.NAMESPACE - 64)) | (1 << (CSharpParser.NEW - 64)) | (1 << (CSharpParser.OVERRIDE - 64)) | (1 << (CSharpParser.PARTIAL - 64)) | (1 << (CSharpParser.PRIVATE - 64)) | (1 << (CSharpParser.PROTECTED - 64)) | (1 << (CSharpParser.PUBLIC - 64)) | (1 << (CSharpParser.READONLY - 64)) | (1 << (CSharpParser.REF - 64)) | (1 << (CSharpParser.SEALED - 64)) | (1 << (CSharpParser.STATIC - 64)) | (1 << (CSharpParser.STRUCT - 64)) | (1 << (CSharpParser.UNSAFE - 64)) | (1 << (CSharpParser.VIRTUAL - 64)) | (1 << (CSharpParser.VOLATILE - 64)) | (1 << (CSharpParser.OPEN_BRACKET - 64)))) != 0): - self.state = 451 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216175120790618624) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4611708283706211587) != 0): + self.state = 453 self.namespace_member_declarations() - self.state = 454 + self.state = 456 self.match(CSharpParser.EOF) except RecognitionException as re: localctx.exception = re @@ -2209,6 +1854,7 @@ def compilation_unit(self): class Namespace_or_type_nameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2249,6 +1895,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNamespace_or_type_name" ): listener.exitNamespace_or_type_name(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNamespace_or_type_name" ): + return visitor.visitNamespace_or_type_name(self) + else: + return visitor.visitChildren(self) + @@ -2258,46 +1910,46 @@ def namespace_or_type_name(self): self.enterRule(localctx, 2, self.RULE_namespace_or_type_name) try: self.enterOuterAlt(localctx, 1) - self.state = 461 + self.state = 463 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,6,self._ctx) if la_ == 1: - self.state = 456 - self.identifier() self.state = 458 + self.identifier() + self.state = 460 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,5,self._ctx) if la_ == 1: - self.state = 457 + self.state = 459 self.type_argument_list() pass elif la_ == 2: - self.state = 460 + self.state = 462 self.qualified_alias_member() pass - self.state = 470 + self.state = 472 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,8,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 463 + self.state = 465 self.match(CSharpParser.DOT) - self.state = 464 - self.identifier() self.state = 466 + self.identifier() + self.state = 468 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,7,self._ctx) if la_ == 1: - self.state = 465 + self.state = 467 self.type_argument_list() - self.state = 472 + self.state = 474 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,8,self._ctx) @@ -2311,6 +1963,7 @@ def namespace_or_type_name(self): class Type_Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2350,6 +2003,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_" ): listener.exitType_(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitType_" ): + return visitor.visitType_(self) + else: + return visitor.visitChildren(self) + @@ -2359,32 +2018,32 @@ def type_(self): self.enterRule(localctx, 4, self.RULE_type_) try: self.enterOuterAlt(localctx, 1) - self.state = 473 + self.state = 475 self.base_type() - self.state = 479 + self.state = 481 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,10,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 477 + self.state = 479 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.INTERR]: - self.state = 474 + if token in [148]: + self.state = 476 self.match(CSharpParser.INTERR) pass - elif token in [CSharpParser.OPEN_BRACKET]: - self.state = 475 + elif token in [127]: + self.state = 477 self.rank_specifier() pass - elif token in [CSharpParser.STAR]: - self.state = 476 + elif token in [137]: + self.state = 478 self.match(CSharpParser.STAR) pass else: raise NoViableAltException(self) - self.state = 481 + self.state = 483 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,10,self._ctx) @@ -2398,6 +2057,7 @@ def type_(self): class Base_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2432,6 +2092,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitBase_type" ): listener.exitBase_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitBase_type" ): + return visitor.visitBase_type(self) + else: + return visitor.visitChildren(self) + @@ -2440,29 +2106,29 @@ def base_type(self): localctx = CSharpParser.Base_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 6, self.RULE_base_type) try: - self.state = 487 + self.state = 489 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.BOOL, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.DECIMAL, CSharpParser.DOUBLE, CSharpParser.FLOAT, CSharpParser.INT, CSharpParser.LONG, CSharpParser.SBYTE, CSharpParser.SHORT, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.USHORT]: + if token in [18, 21, 24, 29, 34, 45, 55, 63, 83, 87, 99, 100, 104]: self.enterOuterAlt(localctx, 1) - self.state = 482 + self.state = 484 self.simple_type() pass - elif token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BY, CSharpParser.DESCENDING, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.NAMEOF, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REMOVE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.STRING, CSharpParser.UNMANAGED, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER]: + elif token in [10, 11, 12, 14, 15, 16, 20, 32, 35, 38, 48, 49, 51, 58, 60, 61, 64, 68, 69, 71, 75, 81, 85, 86, 91, 102, 106, 110, 111, 113, 114]: self.enterOuterAlt(localctx, 2) - self.state = 483 + self.state = 485 self.class_type() pass - elif token in [CSharpParser.VOID]: + elif token in [108]: self.enterOuterAlt(localctx, 3) - self.state = 484 + self.state = 486 self.match(CSharpParser.VOID) - self.state = 485 + self.state = 487 self.match(CSharpParser.STAR) pass - elif token in [CSharpParser.OPEN_PARENS]: + elif token in [129]: self.enterOuterAlt(localctx, 4) - self.state = 486 + self.state = 488 self.tuple_type() pass else: @@ -2478,6 +2144,7 @@ def base_type(self): class Tuple_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2513,6 +2180,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTuple_type" ): listener.exitTuple_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTuple_type" ): + return visitor.visitTuple_type(self) + else: + return visitor.visitChildren(self) + @@ -2523,25 +2196,25 @@ def tuple_type(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 489 + self.state = 491 self.match(CSharpParser.OPEN_PARENS) - self.state = 490 + self.state = 492 self.tuple_element() - self.state = 493 + self.state = 495 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 491 + self.state = 493 self.match(CSharpParser.COMMA) - self.state = 492 + self.state = 494 self.tuple_element() - self.state = 495 + self.state = 497 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==CSharpParser.COMMA): + if not (_la==132): break - self.state = 497 + self.state = 499 self.match(CSharpParser.CLOSE_PARENS) except RecognitionException as re: localctx.exception = re @@ -2553,6 +2226,7 @@ def tuple_type(self): class Tuple_elementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2577,6 +2251,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTuple_element" ): listener.exitTuple_element(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTuple_element" ): + return visitor.visitTuple_element(self) + else: + return visitor.visitChildren(self) + @@ -2587,13 +2267,13 @@ def tuple_element(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 499 - self.type_() self.state = 501 + self.type_() + self.state = 503 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BY) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (CSharpParser.ON - 68)) | (1 << (CSharpParser.ORDERBY - 68)) | (1 << (CSharpParser.PARTIAL - 68)) | (1 << (CSharpParser.REMOVE - 68)) | (1 << (CSharpParser.SELECT - 68)) | (1 << (CSharpParser.SET - 68)) | (1 << (CSharpParser.UNMANAGED - 68)) | (1 << (CSharpParser.VAR - 68)) | (1 << (CSharpParser.WHEN - 68)) | (1 << (CSharpParser.WHERE - 68)) | (1 << (CSharpParser.YIELD - 68)) | (1 << (CSharpParser.IDENTIFIER - 68)))) != 0): - self.state = 500 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 3750091428249852928) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 1904629023639713) != 0): + self.state = 502 self.identifier() @@ -2607,6 +2287,7 @@ def tuple_element(self): class Simple_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2630,6 +2311,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSimple_type" ): listener.exitSimple_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSimple_type" ): + return visitor.visitSimple_type(self) + else: + return visitor.visitChildren(self) + @@ -2638,17 +2325,17 @@ def simple_type(self): localctx = CSharpParser.Simple_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 12, self.RULE_simple_type) try: - self.state = 505 + self.state = 507 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.DECIMAL, CSharpParser.DOUBLE, CSharpParser.FLOAT, CSharpParser.INT, CSharpParser.LONG, CSharpParser.SBYTE, CSharpParser.SHORT, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.USHORT]: + if token in [21, 24, 29, 34, 45, 55, 63, 83, 87, 99, 100, 104]: self.enterOuterAlt(localctx, 1) - self.state = 503 + self.state = 505 self.numeric_type() pass - elif token in [CSharpParser.BOOL]: + elif token in [18]: self.enterOuterAlt(localctx, 2) - self.state = 504 + self.state = 506 self.match(CSharpParser.BOOL) pass else: @@ -2664,6 +2351,7 @@ def simple_type(self): class Numeric_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2691,6 +2379,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNumeric_type" ): listener.exitNumeric_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNumeric_type" ): + return visitor.visitNumeric_type(self) + else: + return visitor.visitChildren(self) + @@ -2699,22 +2393,22 @@ def numeric_type(self): localctx = CSharpParser.Numeric_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 14, self.RULE_numeric_type) try: - self.state = 510 + self.state = 512 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.INT, CSharpParser.LONG, CSharpParser.SBYTE, CSharpParser.SHORT, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.USHORT]: + if token in [21, 24, 55, 63, 83, 87, 99, 100, 104]: self.enterOuterAlt(localctx, 1) - self.state = 507 + self.state = 509 self.integral_type() pass - elif token in [CSharpParser.DOUBLE, CSharpParser.FLOAT]: + elif token in [34, 45]: self.enterOuterAlt(localctx, 2) - self.state = 508 + self.state = 510 self.floating_point_type() pass - elif token in [CSharpParser.DECIMAL]: + elif token in [29]: self.enterOuterAlt(localctx, 3) - self.state = 509 + self.state = 511 self.match(CSharpParser.DECIMAL) pass else: @@ -2730,6 +2424,7 @@ def numeric_type(self): class Integral_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2773,6 +2468,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIntegral_type" ): listener.exitIntegral_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIntegral_type" ): + return visitor.visitIntegral_type(self) + else: + return visitor.visitChildren(self) + @@ -2783,9 +2484,9 @@ def integral_type(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 512 + self.state = 514 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.INT) | (1 << CSharpParser.LONG))) != 0) or ((((_la - 82)) & ~0x3f) == 0 and ((1 << (_la - 82)) & ((1 << (CSharpParser.SBYTE - 82)) | (1 << (CSharpParser.SHORT - 82)) | (1 << (CSharpParser.UINT - 82)) | (1 << (CSharpParser.ULONG - 82)) | (1 << (CSharpParser.USHORT - 82)))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & -9187343239816937472) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 2293777) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2800,6 +2501,7 @@ def integral_type(self): class Floating_point_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2822,6 +2524,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFloating_point_type" ): listener.exitFloating_point_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFloating_point_type" ): + return visitor.visitFloating_point_type(self) + else: + return visitor.visitChildren(self) + @@ -2832,9 +2540,9 @@ def floating_point_type(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 514 + self.state = 516 _la = self._input.LA(1) - if not(_la==CSharpParser.DOUBLE or _la==CSharpParser.FLOAT): + if not(_la==34 or _la==45): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2849,6 +2557,7 @@ def floating_point_type(self): class Class_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2878,6 +2587,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitClass_type" ): listener.exitClass_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitClass_type" ): + return visitor.visitClass_type(self) + else: + return visitor.visitChildren(self) + @@ -2886,30 +2601,30 @@ def class_type(self): localctx = CSharpParser.Class_typeContext(self, self._ctx, self.state) self.enterRule(localctx, 20, self.RULE_class_type) try: - self.state = 520 + self.state = 522 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,16,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 516 + self.state = 518 self.namespace_or_type_name() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 517 + self.state = 519 self.match(CSharpParser.OBJECT) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 518 + self.state = 520 self.match(CSharpParser.DYNAMIC) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 519 + self.state = 521 self.match(CSharpParser.STRING) pass @@ -2924,6 +2639,7 @@ def class_type(self): class Type_argument_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2959,6 +2675,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_argument_list" ): listener.exitType_argument_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitType_argument_list" ): + return visitor.visitType_argument_list(self) + else: + return visitor.visitChildren(self) + @@ -2969,23 +2691,23 @@ def type_argument_list(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 522 + self.state = 524 self.match(CSharpParser.LT) - self.state = 523 + self.state = 525 self.type_() - self.state = 528 + self.state = 530 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 524 + while _la==132: + self.state = 526 self.match(CSharpParser.COMMA) - self.state = 525 + self.state = 527 self.type_() - self.state = 530 + self.state = 532 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 531 + self.state = 533 self.match(CSharpParser.GT) except RecognitionException as re: localctx.exception = re @@ -2997,6 +2719,7 @@ def type_argument_list(self): class Argument_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3026,6 +2749,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitArgument_list" ): listener.exitArgument_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitArgument_list" ): + return visitor.visitArgument_list(self) + else: + return visitor.visitChildren(self) + @@ -3036,17 +2765,17 @@ def argument_list(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 533 + self.state = 535 self.argument() - self.state = 538 + self.state = 540 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 534 + while _la==132: + self.state = 536 self.match(CSharpParser.COMMA) - self.state = 535 + self.state = 537 self.argument() - self.state = 540 + self.state = 542 self._errHandler.sync(self) _la = self._input.LA(1) @@ -3060,6 +2789,7 @@ def argument_list(self): class ArgumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3077,6 +2807,13 @@ def identifier(self): def COLON(self): return self.getToken(CSharpParser.COLON, 0) + def VAR(self): + return self.getToken(CSharpParser.VAR, 0) + + def type_(self): + return self.getTypedRuleContext(CSharpParser.Type_Context,0) + + def REF(self): return self.getToken(CSharpParser.REF, 0) @@ -3097,6 +2834,12 @@ 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) + @@ -3107,32 +2850,58 @@ def argument(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 544 + self.state = 546 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,19,self._ctx) if la_ == 1: - self.state = 541 + self.state = 543 self.identifier() - self.state = 542 + self.state = 544 self.match(CSharpParser.COLON) - self.state = 547 + self.state = 549 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,20,self._ctx) if la_ == 1: - self.state = 546 + self.state = 548 localctx.refout = self._input.LT(1) _la = self._input.LA(1) - if not(((((_la - 53)) & ~0x3f) == 0 and ((1 << (_la - 53)) & ((1 << (CSharpParser.IN - 53)) | (1 << (CSharpParser.OUT - 53)) | (1 << (CSharpParser.REF - 53)))) != 0)): + if not(((((_la - 54)) & ~0x3f) == 0 and ((1 << (_la - 54)) & 67371009) != 0)): localctx.refout = self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 549 - self.expression() + self.state = 557 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,22,self._ctx) + if la_ == 1: + self.state = 551 + self.expression() + pass + + elif la_ == 2: + self.state = 554 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,21,self._ctx) + if la_ == 1: + self.state = 552 + self.match(CSharpParser.VAR) + pass + + elif la_ == 2: + self.state = 553 + self.type_() + pass + + + self.state = 556 + self.expression() + pass + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3143,6 +2912,7 @@ def argument(self): class ExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3170,6 +2940,12 @@ 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) + @@ -3178,26 +2954,26 @@ def expression(self): localctx = CSharpParser.ExpressionContext(self, self._ctx, self.state) self.enterRule(localctx, 28, self.RULE_expression) try: - self.state = 555 + self.state = 563 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,21,self._ctx) + la_ = self._interp.adaptivePredict(self._input,23,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 551 + self.state = 559 self.assignment() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 552 + self.state = 560 self.non_assignment_expression() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 553 + self.state = 561 self.match(CSharpParser.REF) - self.state = 554 + self.state = 562 self.non_assignment_expression() pass @@ -3212,6 +2988,7 @@ def expression(self): class Non_assignment_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3240,6 +3017,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNon_assignment_expression" ): listener.exitNon_assignment_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNon_assignment_expression" ): + return visitor.visitNon_assignment_expression(self) + else: + return visitor.visitChildren(self) + @@ -3248,24 +3031,24 @@ def non_assignment_expression(self): localctx = CSharpParser.Non_assignment_expressionContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_non_assignment_expression) try: - self.state = 560 + self.state = 568 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,22,self._ctx) + la_ = self._interp.adaptivePredict(self._input,24,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 557 + self.state = 565 self.lambda_expression() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 558 + self.state = 566 self.query_expression() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 559 + self.state = 567 self.conditional_expression() pass @@ -3280,6 +3063,7 @@ def non_assignment_expression(self): class AssignmentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3315,6 +3099,12 @@ 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) + @@ -3323,26 +3113,26 @@ def assignment(self): localctx = CSharpParser.AssignmentContext(self, self._ctx, self.state) self.enterRule(localctx, 32, self.RULE_assignment) try: - self.state = 570 + self.state = 578 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,23,self._ctx) + la_ = self._interp.adaptivePredict(self._input,25,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 562 + self.state = 570 self.unary_expression() - self.state = 563 + self.state = 571 self.assignment_operator() - self.state = 564 + self.state = 572 self.expression() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 566 + self.state = 574 self.unary_expression() - self.state = 567 + self.state = 575 self.match(CSharpParser.OP_COALESCING_ASSIGNMENT) - self.state = 568 + self.state = 576 self.throwable_expression() pass @@ -3357,6 +3147,7 @@ def assignment(self): class Assignment_operatorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3407,6 +3198,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAssignment_operator" ): listener.exitAssignment_operator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAssignment_operator" ): + return visitor.visitAssignment_operator(self) + else: + return visitor.visitChildren(self) + @@ -3415,62 +3212,62 @@ def assignment_operator(self): localctx = CSharpParser.Assignment_operatorContext(self, self._ctx, self.state) self.enterRule(localctx, 34, self.RULE_assignment_operator) try: - self.state = 583 + self.state = 591 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ASSIGNMENT]: + if token in [145]: self.enterOuterAlt(localctx, 1) - self.state = 572 + self.state = 580 self.match(CSharpParser.ASSIGNMENT) pass - elif token in [CSharpParser.OP_ADD_ASSIGNMENT]: + elif token in [160]: self.enterOuterAlt(localctx, 2) - self.state = 573 + self.state = 581 self.match(CSharpParser.OP_ADD_ASSIGNMENT) pass - elif token in [CSharpParser.OP_SUB_ASSIGNMENT]: + elif token in [161]: self.enterOuterAlt(localctx, 3) - self.state = 574 + self.state = 582 self.match(CSharpParser.OP_SUB_ASSIGNMENT) pass - elif token in [CSharpParser.OP_MULT_ASSIGNMENT]: + elif token in [162]: self.enterOuterAlt(localctx, 4) - self.state = 575 + self.state = 583 self.match(CSharpParser.OP_MULT_ASSIGNMENT) pass - elif token in [CSharpParser.OP_DIV_ASSIGNMENT]: + elif token in [163]: self.enterOuterAlt(localctx, 5) - self.state = 576 + self.state = 584 self.match(CSharpParser.OP_DIV_ASSIGNMENT) pass - elif token in [CSharpParser.OP_MOD_ASSIGNMENT]: + elif token in [164]: self.enterOuterAlt(localctx, 6) - self.state = 577 + self.state = 585 self.match(CSharpParser.OP_MOD_ASSIGNMENT) pass - elif token in [CSharpParser.OP_AND_ASSIGNMENT]: + elif token in [165]: self.enterOuterAlt(localctx, 7) - self.state = 578 + self.state = 586 self.match(CSharpParser.OP_AND_ASSIGNMENT) pass - elif token in [CSharpParser.OP_OR_ASSIGNMENT]: + elif token in [166]: self.enterOuterAlt(localctx, 8) - self.state = 579 + self.state = 587 self.match(CSharpParser.OP_OR_ASSIGNMENT) pass - elif token in [CSharpParser.OP_XOR_ASSIGNMENT]: + elif token in [167]: self.enterOuterAlt(localctx, 9) - self.state = 580 + self.state = 588 self.match(CSharpParser.OP_XOR_ASSIGNMENT) pass - elif token in [CSharpParser.OP_LEFT_SHIFT_ASSIGNMENT]: + elif token in [169]: self.enterOuterAlt(localctx, 10) - self.state = 581 + self.state = 589 self.match(CSharpParser.OP_LEFT_SHIFT_ASSIGNMENT) pass - elif token in [CSharpParser.GT]: + elif token in [147]: self.enterOuterAlt(localctx, 11) - self.state = 582 + self.state = 590 self.right_shift_assignment() pass else: @@ -3486,6 +3283,7 @@ def assignment_operator(self): class Conditional_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3519,6 +3317,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConditional_expression" ): listener.exitConditional_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConditional_expression" ): + return visitor.visitConditional_expression(self) + else: + return visitor.visitChildren(self) + @@ -3528,19 +3332,19 @@ def conditional_expression(self): self.enterRule(localctx, 36, self.RULE_conditional_expression) try: self.enterOuterAlt(localctx, 1) - self.state = 585 + self.state = 593 self.null_coalescing_expression() - self.state = 591 + self.state = 599 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,25,self._ctx) + la_ = self._interp.adaptivePredict(self._input,27,self._ctx) if la_ == 1: - self.state = 586 + self.state = 594 self.match(CSharpParser.INTERR) - self.state = 587 + self.state = 595 self.throwable_expression() - self.state = 588 + self.state = 596 self.match(CSharpParser.COLON) - self.state = 589 + self.state = 597 self.throwable_expression() @@ -3554,6 +3358,7 @@ def conditional_expression(self): class Null_coalescing_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3585,6 +3390,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNull_coalescing_expression" ): listener.exitNull_coalescing_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNull_coalescing_expression" ): + return visitor.visitNull_coalescing_expression(self) + else: + return visitor.visitChildren(self) + @@ -3592,26 +3403,25 @@ def null_coalescing_expression(self): localctx = CSharpParser.Null_coalescing_expressionContext(self, self._ctx, self.state) self.enterRule(localctx, 38, self.RULE_null_coalescing_expression) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 593 + self.state = 601 self.conditional_or_expression() - self.state = 599 + self.state = 607 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CSharpParser.OP_COALESCING: - self.state = 594 + la_ = self._interp.adaptivePredict(self._input,29,self._ctx) + if la_ == 1: + self.state = 602 self.match(CSharpParser.OP_COALESCING) - self.state = 597 + self.state = 605 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: - self.state = 595 + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 81, 83, 85, 86, 87, 88, 91, 94, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: + self.state = 603 self.null_coalescing_expression() pass - elif token in [CSharpParser.THROW]: - self.state = 596 + elif token in [95]: + self.state = 604 self.throw_expression() pass else: @@ -3629,6 +3439,7 @@ def null_coalescing_expression(self): class Conditional_or_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3658,6 +3469,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConditional_or_expression" ): listener.exitConditional_or_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConditional_or_expression" ): + return visitor.visitConditional_or_expression(self) + else: + return visitor.visitChildren(self) + @@ -3665,22 +3482,22 @@ def conditional_or_expression(self): localctx = CSharpParser.Conditional_or_expressionContext(self, self._ctx, self.state) self.enterRule(localctx, 40, self.RULE_conditional_or_expression) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 601 + self.state = 609 self.conditional_and_expression() - self.state = 606 + self.state = 614 self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==CSharpParser.OP_OR: - self.state = 602 - self.match(CSharpParser.OP_OR) - self.state = 603 - self.conditional_and_expression() - self.state = 608 + _alt = self._interp.adaptivePredict(self._input,30,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 610 + self.match(CSharpParser.OP_OR) + self.state = 611 + self.conditional_and_expression() + self.state = 616 self._errHandler.sync(self) - _la = self._input.LA(1) + _alt = self._interp.adaptivePredict(self._input,30,self._ctx) except RecognitionException as re: localctx.exception = re @@ -3692,6 +3509,7 @@ def conditional_or_expression(self): class Conditional_and_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3721,6 +3539,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConditional_and_expression" ): listener.exitConditional_and_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConditional_and_expression" ): + return visitor.visitConditional_and_expression(self) + else: + return visitor.visitChildren(self) + @@ -3728,22 +3552,22 @@ def conditional_and_expression(self): localctx = CSharpParser.Conditional_and_expressionContext(self, self._ctx, self.state) self.enterRule(localctx, 42, self.RULE_conditional_and_expression) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 609 + self.state = 617 self.inclusive_or_expression() - self.state = 614 + self.state = 622 self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==CSharpParser.OP_AND: - self.state = 610 - self.match(CSharpParser.OP_AND) - self.state = 611 - self.inclusive_or_expression() - self.state = 616 + _alt = self._interp.adaptivePredict(self._input,31,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 618 + self.match(CSharpParser.OP_AND) + self.state = 619 + self.inclusive_or_expression() + self.state = 624 self._errHandler.sync(self) - _la = self._input.LA(1) + _alt = self._interp.adaptivePredict(self._input,31,self._ctx) except RecognitionException as re: localctx.exception = re @@ -3755,6 +3579,7 @@ def conditional_and_expression(self): class Inclusive_or_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3784,6 +3609,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInclusive_or_expression" ): listener.exitInclusive_or_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInclusive_or_expression" ): + return visitor.visitInclusive_or_expression(self) + else: + return visitor.visitChildren(self) + @@ -3791,22 +3622,22 @@ def inclusive_or_expression(self): localctx = CSharpParser.Inclusive_or_expressionContext(self, self._ctx, self.state) self.enterRule(localctx, 44, self.RULE_inclusive_or_expression) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 617 + self.state = 625 self.exclusive_or_expression() - self.state = 622 + self.state = 630 self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==CSharpParser.BITWISE_OR: - self.state = 618 - self.match(CSharpParser.BITWISE_OR) - self.state = 619 - self.exclusive_or_expression() - self.state = 624 + _alt = self._interp.adaptivePredict(self._input,32,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 626 + self.match(CSharpParser.BITWISE_OR) + self.state = 627 + self.exclusive_or_expression() + self.state = 632 self._errHandler.sync(self) - _la = self._input.LA(1) + _alt = self._interp.adaptivePredict(self._input,32,self._ctx) except RecognitionException as re: localctx.exception = re @@ -3818,6 +3649,7 @@ def inclusive_or_expression(self): class Exclusive_or_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3847,6 +3679,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExclusive_or_expression" ): listener.exitExclusive_or_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExclusive_or_expression" ): + return visitor.visitExclusive_or_expression(self) + else: + return visitor.visitChildren(self) + @@ -3856,20 +3694,20 @@ def exclusive_or_expression(self): self.enterRule(localctx, 46, self.RULE_exclusive_or_expression) try: self.enterOuterAlt(localctx, 1) - self.state = 625 + self.state = 633 self.and_expression() - self.state = 630 + self.state = 638 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,31,self._ctx) + _alt = self._interp.adaptivePredict(self._input,33,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 626 + self.state = 634 self.match(CSharpParser.CARET) - self.state = 627 + self.state = 635 self.and_expression() - self.state = 632 + self.state = 640 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,31,self._ctx) + _alt = self._interp.adaptivePredict(self._input,33,self._ctx) except RecognitionException as re: localctx.exception = re @@ -3881,6 +3719,7 @@ def exclusive_or_expression(self): class And_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3910,6 +3749,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAnd_expression" ): listener.exitAnd_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAnd_expression" ): + return visitor.visitAnd_expression(self) + else: + return visitor.visitChildren(self) + @@ -3919,20 +3764,20 @@ def and_expression(self): self.enterRule(localctx, 48, self.RULE_and_expression) try: self.enterOuterAlt(localctx, 1) - self.state = 633 + self.state = 641 self.equality_expression() - self.state = 638 + self.state = 646 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,32,self._ctx) + _alt = self._interp.adaptivePredict(self._input,34,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 634 + self.state = 642 self.match(CSharpParser.AMP) - self.state = 635 + self.state = 643 self.equality_expression() - self.state = 640 + self.state = 648 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,32,self._ctx) + _alt = self._interp.adaptivePredict(self._input,34,self._ctx) except RecognitionException as re: localctx.exception = re @@ -3944,6 +3789,7 @@ def and_expression(self): class Equality_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3979,6 +3825,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEquality_expression" ): listener.exitEquality_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEquality_expression" ): + return visitor.visitEquality_expression(self) + else: + return visitor.visitChildren(self) + @@ -3989,24 +3841,25 @@ def equality_expression(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 641 + self.state = 649 self.relational_expression() - self.state = 646 + self.state = 654 self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==CSharpParser.OP_EQ or _la==CSharpParser.OP_NE: - self.state = 642 - _la = self._input.LA(1) - if not(_la==CSharpParser.OP_EQ or _la==CSharpParser.OP_NE): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 643 - self.relational_expression() - self.state = 648 + _alt = self._interp.adaptivePredict(self._input,35,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 650 + _la = self._input.LA(1) + if not(_la==156 or _la==157): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 651 + self.relational_expression() + self.state = 656 self._errHandler.sync(self) - _la = self._input.LA(1) + _alt = self._interp.adaptivePredict(self._input,35,self._ctx) except RecognitionException as re: localctx.exception = re @@ -4018,6 +3871,7 @@ def equality_expression(self): class Relational_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4091,6 +3945,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitRelational_expression" ): listener.exitRelational_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRelational_expression" ): + return visitor.visitRelational_expression(self) + else: + return visitor.visitChildren(self) + @@ -4101,44 +3961,45 @@ def relational_expression(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 649 + self.state = 657 self.shift_expression() - self.state = 658 + self.state = 666 self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==CSharpParser.AS or _la==CSharpParser.IS or ((((_la - 145)) & ~0x3f) == 0 and ((1 << (_la - 145)) & ((1 << (CSharpParser.LT - 145)) | (1 << (CSharpParser.GT - 145)) | (1 << (CSharpParser.OP_LE - 145)) | (1 << (CSharpParser.OP_GE - 145)))) != 0): - self.state = 656 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [CSharpParser.LT, CSharpParser.GT, CSharpParser.OP_LE, CSharpParser.OP_GE]: - self.state = 650 - _la = self._input.LA(1) - if not(((((_la - 145)) & ~0x3f) == 0 and ((1 << (_la - 145)) & ((1 << (CSharpParser.LT - 145)) | (1 << (CSharpParser.GT - 145)) | (1 << (CSharpParser.OP_LE - 145)) | (1 << (CSharpParser.OP_GE - 145)))) != 0)): - self._errHandler.recoverInline(self) + _alt = self._interp.adaptivePredict(self._input,37,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: + self.state = 664 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [146, 147, 158, 159]: + self.state = 658 + _la = self._input.LA(1) + if not(((((_la - 146)) & ~0x3f) == 0 and ((1 << (_la - 146)) & 12291) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 659 + self.shift_expression() + pass + elif token in [59]: + self.state = 660 + self.match(CSharpParser.IS) + self.state = 661 + self.isType() + pass + elif token in [13]: + self.state = 662 + self.match(CSharpParser.AS) + self.state = 663 + self.type_() + pass else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 651 - self.shift_expression() - pass - elif token in [CSharpParser.IS]: - self.state = 652 - self.match(CSharpParser.IS) - self.state = 653 - self.isType() - pass - elif token in [CSharpParser.AS]: - self.state = 654 - self.match(CSharpParser.AS) - self.state = 655 - self.type_() - pass - else: - raise NoViableAltException(self) - - self.state = 660 + raise NoViableAltException(self) + + self.state = 668 self._errHandler.sync(self) - _la = self._input.LA(1) + _alt = self._interp.adaptivePredict(self._input,37,self._ctx) except RecognitionException as re: localctx.exception = re @@ -4150,6 +4011,7 @@ def relational_expression(self): class Shift_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4186,6 +4048,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitShift_expression" ): listener.exitShift_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitShift_expression" ): + return visitor.visitShift_expression(self) + else: + return visitor.visitChildren(self) + @@ -4195,32 +4063,32 @@ def shift_expression(self): self.enterRule(localctx, 54, self.RULE_shift_expression) try: self.enterOuterAlt(localctx, 1) - self.state = 661 - self.additive_expression() self.state = 669 + self.additive_expression() + self.state = 677 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,37,self._ctx) + _alt = self._interp.adaptivePredict(self._input,39,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 664 + self.state = 672 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OP_LEFT_SHIFT]: - self.state = 662 + if token in [168]: + self.state = 670 self.match(CSharpParser.OP_LEFT_SHIFT) pass - elif token in [CSharpParser.GT]: - self.state = 663 + elif token in [147]: + self.state = 671 self.right_shift() pass else: raise NoViableAltException(self) - self.state = 666 + self.state = 674 self.additive_expression() - self.state = 671 + self.state = 679 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,37,self._ctx) + _alt = self._interp.adaptivePredict(self._input,39,self._ctx) except RecognitionException as re: localctx.exception = re @@ -4232,6 +4100,7 @@ def shift_expression(self): class Additive_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4267,6 +4136,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAdditive_expression" ): listener.exitAdditive_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAdditive_expression" ): + return visitor.visitAdditive_expression(self) + else: + return visitor.visitChildren(self) + @@ -4277,25 +4152,25 @@ def additive_expression(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 672 + self.state = 680 self.multiplicative_expression() - self.state = 677 + self.state = 685 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,38,self._ctx) + _alt = self._interp.adaptivePredict(self._input,40,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 673 + self.state = 681 _la = self._input.LA(1) - if not(_la==CSharpParser.PLUS or _la==CSharpParser.MINUS): + if not(_la==135 or _la==136): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 674 + self.state = 682 self.multiplicative_expression() - self.state = 679 + self.state = 687 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,38,self._ctx) + _alt = self._interp.adaptivePredict(self._input,40,self._ctx) except RecognitionException as re: localctx.exception = re @@ -4307,6 +4182,7 @@ def additive_expression(self): class Multiplicative_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4348,6 +4224,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMultiplicative_expression" ): listener.exitMultiplicative_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMultiplicative_expression" ): + return visitor.visitMultiplicative_expression(self) + else: + return visitor.visitChildren(self) + @@ -4358,25 +4240,25 @@ def multiplicative_expression(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 680 + self.state = 688 self.switch_expression() - self.state = 685 + self.state = 693 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,39,self._ctx) + _alt = self._interp.adaptivePredict(self._input,41,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 681 + self.state = 689 _la = self._input.LA(1) - if not(((((_la - 136)) & ~0x3f) == 0 and ((1 << (_la - 136)) & ((1 << (CSharpParser.STAR - 136)) | (1 << (CSharpParser.DIV - 136)) | (1 << (CSharpParser.PERCENT - 136)))) != 0)): + if not(((((_la - 137)) & ~0x3f) == 0 and ((1 << (_la - 137)) & 7) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 682 + self.state = 690 self.switch_expression() - self.state = 687 + self.state = 695 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,39,self._ctx) + _alt = self._interp.adaptivePredict(self._input,41,self._ctx) except RecognitionException as re: localctx.exception = re @@ -4388,6 +4270,7 @@ def multiplicative_expression(self): class Switch_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4424,6 +4307,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSwitch_expression" ): listener.exitSwitch_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSwitch_expression" ): + return visitor.visitSwitch_expression(self) + else: + return visitor.visitChildren(self) + @@ -4434,33 +4323,33 @@ def switch_expression(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 688 + self.state = 696 self.range_expression() - self.state = 698 + self.state = 706 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CSharpParser.SWITCH: - self.state = 689 + la_ = self._interp.adaptivePredict(self._input,44,self._ctx) + if la_ == 1: + self.state = 697 self.match(CSharpParser.SWITCH) - self.state = 690 + self.state = 698 self.match(CSharpParser.OPEN_BRACE) - self.state = 695 + self.state = 703 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 691 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161996477) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 699 self.switch_expression_arms() - self.state = 693 + self.state = 701 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 692 + if _la==132: + self.state = 700 self.match(CSharpParser.COMMA) - self.state = 697 + self.state = 705 self.match(CSharpParser.CLOSE_BRACE) @@ -4474,6 +4363,7 @@ def switch_expression(self): class Switch_expression_armsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4503,6 +4393,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSwitch_expression_arms" ): listener.exitSwitch_expression_arms(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSwitch_expression_arms" ): + return visitor.visitSwitch_expression_arms(self) + else: + return visitor.visitChildren(self) + @@ -4512,20 +4408,20 @@ def switch_expression_arms(self): self.enterRule(localctx, 62, self.RULE_switch_expression_arms) try: self.enterOuterAlt(localctx, 1) - self.state = 700 + self.state = 708 self.switch_expression_arm() - self.state = 705 + self.state = 713 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,43,self._ctx) + _alt = self._interp.adaptivePredict(self._input,45,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 701 + self.state = 709 self.match(CSharpParser.COMMA) - self.state = 702 + self.state = 710 self.switch_expression_arm() - self.state = 707 + self.state = 715 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,43,self._ctx) + _alt = self._interp.adaptivePredict(self._input,45,self._ctx) except RecognitionException as re: localctx.exception = re @@ -4537,6 +4433,7 @@ def switch_expression_arms(self): class Switch_expression_armContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4569,6 +4466,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSwitch_expression_arm" ): listener.exitSwitch_expression_arm(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSwitch_expression_arm" ): + return visitor.visitSwitch_expression_arm(self) + else: + return visitor.visitChildren(self) + @@ -4579,19 +4482,19 @@ def switch_expression_arm(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 708 + self.state = 716 self.expression() - self.state = 710 + self.state = 718 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHEN: - self.state = 709 + if _la==110: + self.state = 717 self.case_guard() - self.state = 712 + self.state = 720 self.right_arrow() - self.state = 713 + self.state = 721 self.throwable_expression() except RecognitionException as re: localctx.exception = re @@ -4603,6 +4506,7 @@ def switch_expression_arm(self): class Range_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4629,6 +4533,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitRange_expression" ): listener.exitRange_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRange_expression" ): + return visitor.visitRange_expression(self) + else: + return visitor.visitChildren(self) + @@ -4638,32 +4548,32 @@ def range_expression(self): self.enterRule(localctx, 66, self.RULE_range_expression) self._la = 0 # Token type try: - self.state = 723 + self.state = 731 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,47,self._ctx) + la_ = self._interp.adaptivePredict(self._input,49,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 715 + self.state = 723 self.unary_expression() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 717 + self.state = 725 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)))) != 0): - self.state = 716 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161930941) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 12642753) != 0): + self.state = 724 self.unary_expression() - self.state = 719 + self.state = 727 self.match(CSharpParser.OP_RANGE) - self.state = 721 + self.state = 729 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,46,self._ctx) + la_ = self._interp.adaptivePredict(self._input,48,self._ctx) if la_ == 1: - self.state = 720 + self.state = 728 self.unary_expression() @@ -4680,11 +4590,16 @@ def range_expression(self): class Unary_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def cast_expression(self): + return self.getTypedRuleContext(CSharpParser.Cast_expressionContext,0) + + def primary_expression(self): return self.getTypedRuleContext(CSharpParser.Primary_expressionContext,0) @@ -4711,16 +4626,6 @@ def OP_INC(self): def OP_DEC(self): return self.getToken(CSharpParser.OP_DEC, 0) - def OPEN_PARENS(self): - return self.getToken(CSharpParser.OPEN_PARENS, 0) - - def type_(self): - return self.getTypedRuleContext(CSharpParser.Type_Context,0) - - - def CLOSE_PARENS(self): - return self.getToken(CSharpParser.CLOSE_PARENS, 0) - def AWAIT(self): return self.getToken(CSharpParser.AWAIT, 0) @@ -4744,6 +4649,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUnary_expression" ): listener.exitUnary_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUnary_expression" ): + return visitor.visitUnary_expression(self) + else: + return visitor.visitChildren(self) + @@ -4752,104 +4663,98 @@ def unary_expression(self): localctx = CSharpParser.Unary_expressionContext(self, self._ctx, self.state) self.enterRule(localctx, 68, self.RULE_unary_expression) try: - self.state = 751 + self.state = 755 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,48,self._ctx) + la_ = self._interp.adaptivePredict(self._input,50,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 725 - self.primary_expression() + self.state = 733 + self.cast_expression() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 726 - self.match(CSharpParser.PLUS) - self.state = 727 - self.unary_expression() + self.state = 734 + self.primary_expression() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 728 - self.match(CSharpParser.MINUS) - self.state = 729 + self.state = 735 + self.match(CSharpParser.PLUS) + self.state = 736 self.unary_expression() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 730 - self.match(CSharpParser.BANG) - self.state = 731 + self.state = 737 + self.match(CSharpParser.MINUS) + self.state = 738 self.unary_expression() pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 732 - self.match(CSharpParser.TILDE) - self.state = 733 + self.state = 739 + self.match(CSharpParser.BANG) + self.state = 740 self.unary_expression() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 734 - self.match(CSharpParser.OP_INC) - self.state = 735 + self.state = 741 + self.match(CSharpParser.TILDE) + self.state = 742 self.unary_expression() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 736 - self.match(CSharpParser.OP_DEC) - self.state = 737 + self.state = 743 + self.match(CSharpParser.OP_INC) + self.state = 744 self.unary_expression() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 738 - self.match(CSharpParser.OPEN_PARENS) - self.state = 739 - self.type_() - self.state = 740 - self.match(CSharpParser.CLOSE_PARENS) - self.state = 741 + self.state = 745 + self.match(CSharpParser.OP_DEC) + self.state = 746 self.unary_expression() pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 743 + self.state = 747 self.match(CSharpParser.AWAIT) - self.state = 744 + self.state = 748 self.unary_expression() pass elif la_ == 10: self.enterOuterAlt(localctx, 10) - self.state = 745 + self.state = 749 self.match(CSharpParser.AMP) - self.state = 746 + self.state = 750 self.unary_expression() pass elif la_ == 11: self.enterOuterAlt(localctx, 11) - self.state = 747 + self.state = 751 self.match(CSharpParser.STAR) - self.state = 748 + self.state = 752 self.unary_expression() pass elif la_ == 12: self.enterOuterAlt(localctx, 12) - self.state = 749 + self.state = 753 self.match(CSharpParser.CARET) - self.state = 750 + self.state = 754 self.unary_expression() pass @@ -4863,7 +4768,72 @@ def unary_expression(self): return localctx + class Cast_expressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def OPEN_PARENS(self): + return self.getToken(CSharpParser.OPEN_PARENS, 0) + + def type_(self): + return self.getTypedRuleContext(CSharpParser.Type_Context,0) + + + def CLOSE_PARENS(self): + return self.getToken(CSharpParser.CLOSE_PARENS, 0) + + def unary_expression(self): + return self.getTypedRuleContext(CSharpParser.Unary_expressionContext,0) + + + def getRuleIndex(self): + return CSharpParser.RULE_cast_expression + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCast_expression" ): + listener.enterCast_expression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCast_expression" ): + listener.exitCast_expression(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCast_expression" ): + return visitor.visitCast_expression(self) + else: + return visitor.visitChildren(self) + + + + + def cast_expression(self): + + localctx = CSharpParser.Cast_expressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 70, self.RULE_cast_expression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 757 + self.match(CSharpParser.OPEN_PARENS) + self.state = 758 + self.type_() + self.state = 759 + self.match(CSharpParser.CLOSE_PARENS) + self.state = 760 + self.unary_expression() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Primary_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4937,107 +4907,113 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPrimary_expression" ): listener.exitPrimary_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPrimary_expression" ): + return visitor.visitPrimary_expression(self) + else: + return visitor.visitChildren(self) + def primary_expression(self): localctx = CSharpParser.Primary_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 70, self.RULE_primary_expression) + self.enterRule(localctx, 72, self.RULE_primary_expression) try: self.enterOuterAlt(localctx, 1) - self.state = 753 + self.state = 762 localctx.pe = self.primary_expression_start() - self.state = 755 + self.state = 764 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,49,self._ctx) + la_ = self._interp.adaptivePredict(self._input,51,self._ctx) if la_ == 1: - self.state = 754 + self.state = 763 self.match(CSharpParser.BANG) - self.state = 760 + self.state = 769 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,50,self._ctx) + _alt = self._interp.adaptivePredict(self._input,52,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 757 + self.state = 766 self.bracket_expression() - self.state = 762 + self.state = 771 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,50,self._ctx) + _alt = self._interp.adaptivePredict(self._input,52,self._ctx) - self.state = 764 + self.state = 773 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,51,self._ctx) + la_ = self._interp.adaptivePredict(self._input,53,self._ctx) if la_ == 1: - self.state = 763 + self.state = 772 self.match(CSharpParser.BANG) - self.state = 788 + self.state = 797 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,56,self._ctx) + _alt = self._interp.adaptivePredict(self._input,58,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 772 + self.state = 781 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.DOT, CSharpParser.INTERR]: - self.state = 766 + if token in [131, 148]: + self.state = 775 self.member_access() pass - elif token in [CSharpParser.OPEN_PARENS]: - self.state = 767 + elif token in [129]: + self.state = 776 self.method_invocation() pass - elif token in [CSharpParser.OP_INC]: - self.state = 768 + elif token in [151]: + self.state = 777 self.match(CSharpParser.OP_INC) pass - elif token in [CSharpParser.OP_DEC]: - self.state = 769 + elif token in [152]: + self.state = 778 self.match(CSharpParser.OP_DEC) pass - elif token in [CSharpParser.OP_PTR]: - self.state = 770 + elif token in [155]: + self.state = 779 self.match(CSharpParser.OP_PTR) - self.state = 771 + self.state = 780 self.identifier() pass else: raise NoViableAltException(self) - self.state = 775 + self.state = 784 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,53,self._ctx) + la_ = self._interp.adaptivePredict(self._input,55,self._ctx) if la_ == 1: - self.state = 774 + self.state = 783 self.match(CSharpParser.BANG) - self.state = 780 + self.state = 789 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,54,self._ctx) + _alt = self._interp.adaptivePredict(self._input,56,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 777 + self.state = 786 self.bracket_expression() - self.state = 782 + self.state = 791 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,54,self._ctx) + _alt = self._interp.adaptivePredict(self._input,56,self._ctx) - self.state = 784 + self.state = 793 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,55,self._ctx) + la_ = self._interp.adaptivePredict(self._input,57,self._ctx) if la_ == 1: - self.state = 783 + self.state = 792 self.match(CSharpParser.BANG) - self.state = 790 + self.state = 799 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,56,self._ctx) + _alt = self._interp.adaptivePredict(self._input,58,self._ctx) except RecognitionException as re: localctx.exception = re @@ -5049,6 +5025,7 @@ def primary_expression(self): class Primary_expression_startContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5081,6 +5058,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLiteralAccessExpression" ): listener.exitLiteralAccessExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLiteralAccessExpression" ): + return visitor.visitLiteralAccessExpression(self) + else: + return visitor.visitChildren(self) + class DefaultValueExpressionContext(Primary_expression_startContext): @@ -5106,6 +5089,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDefaultValueExpression" ): listener.exitDefaultValueExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDefaultValueExpression" ): + return visitor.visitDefaultValueExpression(self) + else: + return visitor.visitChildren(self) + class BaseAccessExpressionContext(Primary_expression_startContext): @@ -5139,6 +5128,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitBaseAccessExpression" ): listener.exitBaseAccessExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitBaseAccessExpression" ): + return visitor.visitBaseAccessExpression(self) + else: + return visitor.visitChildren(self) + class SizeofExpressionContext(Primary_expression_startContext): @@ -5164,6 +5159,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSizeofExpression" ): listener.exitSizeofExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSizeofExpression" ): + return visitor.visitSizeofExpression(self) + else: + return visitor.visitChildren(self) + class ParenthesisExpressionsContext(Primary_expression_startContext): @@ -5187,6 +5188,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitParenthesisExpressions" ): listener.exitParenthesisExpressions(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitParenthesisExpressions" ): + return visitor.visitParenthesisExpressions(self) + else: + return visitor.visitChildren(self) + class ThisReferenceExpressionContext(Primary_expression_startContext): @@ -5205,6 +5212,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitThisReferenceExpression" ): listener.exitThisReferenceExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitThisReferenceExpression" ): + return visitor.visitThisReferenceExpression(self) + else: + return visitor.visitChildren(self) + class ObjectCreationExpressionContext(Primary_expression_startContext): @@ -5251,6 +5264,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitObjectCreationExpression" ): listener.exitObjectCreationExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitObjectCreationExpression" ): + return visitor.visitObjectCreationExpression(self) + else: + return visitor.visitChildren(self) + class AnonymousMethodExpressionContext(Primary_expression_startContext): @@ -5281,6 +5300,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAnonymousMethodExpression" ): listener.exitAnonymousMethodExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAnonymousMethodExpression" ): + return visitor.visitAnonymousMethodExpression(self) + else: + return visitor.visitChildren(self) + class TypeofExpressionContext(Primary_expression_startContext): @@ -5311,6 +5336,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTypeofExpression" ): listener.exitTypeofExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTypeofExpression" ): + return visitor.visitTypeofExpression(self) + else: + return visitor.visitChildren(self) + class TupleExpressionContext(Primary_expression_startContext): @@ -5342,6 +5373,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTupleExpression" ): listener.exitTupleExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTupleExpression" ): + return visitor.visitTupleExpression(self) + else: + return visitor.visitChildren(self) + class UncheckedExpressionContext(Primary_expression_startContext): @@ -5367,6 +5404,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUncheckedExpression" ): listener.exitUncheckedExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUncheckedExpression" ): + return visitor.visitUncheckedExpression(self) + else: + return visitor.visitChildren(self) + class SimpleNameExpressionContext(Primary_expression_startContext): @@ -5389,6 +5432,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSimpleNameExpression" ): listener.exitSimpleNameExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSimpleNameExpression" ): + return visitor.visitSimpleNameExpression(self) + else: + return visitor.visitChildren(self) + class MemberAccessExpressionContext(Primary_expression_startContext): @@ -5411,6 +5460,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMemberAccessExpression" ): listener.exitMemberAccessExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMemberAccessExpression" ): + return visitor.visitMemberAccessExpression(self) + else: + return visitor.visitChildren(self) + class CheckedExpressionContext(Primary_expression_startContext): @@ -5436,6 +5491,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCheckedExpression" ): listener.exitCheckedExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCheckedExpression" ): + return visitor.visitCheckedExpression(self) + else: + return visitor.visitChildren(self) + class LiteralExpressionContext(Primary_expression_startContext): @@ -5455,6 +5516,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLiteralExpression" ): listener.exitLiteralExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLiteralExpression" ): + return visitor.visitLiteralExpression(self) + else: + return visitor.visitChildren(self) + class NameofExpressionContext(Primary_expression_startContext): @@ -5488,34 +5555,40 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNameofExpression" ): listener.exitNameofExpression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNameofExpression" ): + return visitor.visitNameofExpression(self) + else: + return visitor.visitChildren(self) + def primary_expression_start(self): localctx = CSharpParser.Primary_expression_startContext(self, self._ctx, self.state) - self.enterRule(localctx, 72, self.RULE_primary_expression_start) + self.enterRule(localctx, 74, self.RULE_primary_expression_start) self._la = 0 # Token type try: - self.state = 912 + self.state = 921 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,72,self._ctx) + la_ = self._interp.adaptivePredict(self._input,74,self._ctx) if la_ == 1: localctx = CSharpParser.LiteralExpressionContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 791 + self.state = 800 self.literal() pass elif la_ == 2: localctx = CSharpParser.SimpleNameExpressionContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 792 + self.state = 801 self.identifier() - self.state = 794 + self.state = 803 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,57,self._ctx) + la_ = self._interp.adaptivePredict(self._input,59,self._ctx) if la_ == 1: - self.state = 793 + self.state = 802 self.type_argument_list() @@ -5524,70 +5597,70 @@ def primary_expression_start(self): elif la_ == 3: localctx = CSharpParser.ParenthesisExpressionsContext(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 796 + self.state = 805 self.match(CSharpParser.OPEN_PARENS) - self.state = 797 + self.state = 806 self.expression() - self.state = 798 + self.state = 807 self.match(CSharpParser.CLOSE_PARENS) pass elif la_ == 4: localctx = CSharpParser.MemberAccessExpressionContext(self, localctx) self.enterOuterAlt(localctx, 4) - self.state = 800 + self.state = 809 self.predefined_type() pass elif la_ == 5: localctx = CSharpParser.MemberAccessExpressionContext(self, localctx) self.enterOuterAlt(localctx, 5) - self.state = 801 + self.state = 810 self.qualified_alias_member() pass elif la_ == 6: localctx = CSharpParser.LiteralAccessExpressionContext(self, localctx) self.enterOuterAlt(localctx, 6) - self.state = 802 + self.state = 811 self.match(CSharpParser.LITERAL_ACCESS) pass elif la_ == 7: localctx = CSharpParser.ThisReferenceExpressionContext(self, localctx) self.enterOuterAlt(localctx, 7) - self.state = 803 + self.state = 812 self.match(CSharpParser.THIS) pass elif la_ == 8: localctx = CSharpParser.BaseAccessExpressionContext(self, localctx) self.enterOuterAlt(localctx, 8) - self.state = 804 + self.state = 813 self.match(CSharpParser.BASE) - self.state = 814 + self.state = 823 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.DOT]: - self.state = 805 + if token in [131]: + self.state = 814 self.match(CSharpParser.DOT) - self.state = 806 + self.state = 815 self.identifier() - self.state = 808 + self.state = 817 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,58,self._ctx) + la_ = self._interp.adaptivePredict(self._input,60,self._ctx) if la_ == 1: - self.state = 807 + self.state = 816 self.type_argument_list() pass - elif token in [CSharpParser.OPEN_BRACKET]: - self.state = 810 + elif token in [127]: + self.state = 819 self.match(CSharpParser.OPEN_BRACKET) - self.state = 811 + self.state = 820 self.expression_list() - self.state = 812 + self.state = 821 self.match(CSharpParser.CLOSE_BRACKET) pass else: @@ -5598,82 +5671,82 @@ def primary_expression_start(self): elif la_ == 9: localctx = CSharpParser.ObjectCreationExpressionContext(self, localctx) self.enterOuterAlt(localctx, 9) - self.state = 816 + self.state = 825 self.match(CSharpParser.NEW) - self.state = 845 + self.state = 854 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.DECIMAL, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.STRING, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.VOID, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.OPEN_PARENS]: - self.state = 817 + if token in [10, 11, 12, 14, 15, 16, 18, 20, 21, 24, 29, 32, 34, 35, 38, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 68, 69, 71, 75, 81, 83, 85, 86, 87, 91, 99, 100, 102, 104, 106, 108, 110, 111, 113, 114, 129]: + self.state = 826 self.type_() - self.state = 839 + self.state = 848 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,63,self._ctx) + la_ = self._interp.adaptivePredict(self._input,65,self._ctx) if la_ == 1: - self.state = 818 + self.state = 827 self.object_creation_expression() pass elif la_ == 2: - self.state = 819 + self.state = 828 self.object_or_collection_initializer() pass elif la_ == 3: - self.state = 820 + self.state = 829 self.match(CSharpParser.OPEN_BRACKET) - self.state = 821 + self.state = 830 self.expression_list() - self.state = 822 + self.state = 831 self.match(CSharpParser.CLOSE_BRACKET) - self.state = 826 + self.state = 835 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,60,self._ctx) + _alt = self._interp.adaptivePredict(self._input,62,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 823 + self.state = 832 self.rank_specifier() - self.state = 828 + self.state = 837 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,60,self._ctx) + _alt = self._interp.adaptivePredict(self._input,62,self._ctx) - self.state = 830 + self.state = 839 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACE: - self.state = 829 + la_ = self._interp.adaptivePredict(self._input,63,self._ctx) + if la_ == 1: + self.state = 838 self.array_initializer() pass elif la_ == 4: - self.state = 833 + self.state = 842 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 832 + self.state = 841 self.rank_specifier() - self.state = 835 + self.state = 844 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==CSharpParser.OPEN_BRACKET): + if not (_la==127): break - self.state = 837 + self.state = 846 self.array_initializer() pass pass - elif token in [CSharpParser.OPEN_BRACE]: - self.state = 841 + elif token in [125]: + self.state = 850 self.anonymous_object_initializer() pass - elif token in [CSharpParser.OPEN_BRACKET]: - self.state = 842 + elif token in [127]: + self.state = 851 self.rank_specifier() - self.state = 843 + self.state = 852 self.array_initializer() pass else: @@ -5684,98 +5757,98 @@ def primary_expression_start(self): elif la_ == 10: localctx = CSharpParser.TupleExpressionContext(self, localctx) self.enterOuterAlt(localctx, 10) - self.state = 847 + self.state = 856 self.match(CSharpParser.OPEN_PARENS) - self.state = 848 + self.state = 857 self.argument() - self.state = 851 + self.state = 860 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 849 + self.state = 858 self.match(CSharpParser.COMMA) - self.state = 850 + self.state = 859 self.argument() - self.state = 853 + self.state = 862 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==CSharpParser.COMMA): + if not (_la==132): break - self.state = 855 + self.state = 864 self.match(CSharpParser.CLOSE_PARENS) pass elif la_ == 11: localctx = CSharpParser.TypeofExpressionContext(self, localctx) self.enterOuterAlt(localctx, 11) - self.state = 857 + self.state = 866 self.match(CSharpParser.TYPEOF) - self.state = 858 + self.state = 867 self.match(CSharpParser.OPEN_PARENS) - self.state = 862 + self.state = 871 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,66,self._ctx) + la_ = self._interp.adaptivePredict(self._input,68,self._ctx) if la_ == 1: - self.state = 859 + self.state = 868 self.unbound_type_name() pass elif la_ == 2: - self.state = 860 + self.state = 869 self.type_() pass elif la_ == 3: - self.state = 861 + self.state = 870 self.match(CSharpParser.VOID) pass - self.state = 864 + self.state = 873 self.match(CSharpParser.CLOSE_PARENS) pass elif la_ == 12: localctx = CSharpParser.CheckedExpressionContext(self, localctx) self.enterOuterAlt(localctx, 12) - self.state = 865 + self.state = 874 self.match(CSharpParser.CHECKED) - self.state = 866 + self.state = 875 self.match(CSharpParser.OPEN_PARENS) - self.state = 867 + self.state = 876 self.expression() - self.state = 868 + self.state = 877 self.match(CSharpParser.CLOSE_PARENS) pass elif la_ == 13: localctx = CSharpParser.UncheckedExpressionContext(self, localctx) self.enterOuterAlt(localctx, 13) - self.state = 870 + self.state = 879 self.match(CSharpParser.UNCHECKED) - self.state = 871 + self.state = 880 self.match(CSharpParser.OPEN_PARENS) - self.state = 872 + self.state = 881 self.expression() - self.state = 873 + self.state = 882 self.match(CSharpParser.CLOSE_PARENS) pass elif la_ == 14: localctx = CSharpParser.DefaultValueExpressionContext(self, localctx) self.enterOuterAlt(localctx, 14) - self.state = 875 + self.state = 884 self.match(CSharpParser.DEFAULT) - self.state = 880 + self.state = 889 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,67,self._ctx) + la_ = self._interp.adaptivePredict(self._input,69,self._ctx) if la_ == 1: - self.state = 876 + self.state = 885 self.match(CSharpParser.OPEN_PARENS) - self.state = 877 + self.state = 886 self.type_() - self.state = 878 + self.state = 887 self.match(CSharpParser.CLOSE_PARENS) @@ -5784,74 +5857,74 @@ def primary_expression_start(self): elif la_ == 15: localctx = CSharpParser.AnonymousMethodExpressionContext(self, localctx) self.enterOuterAlt(localctx, 15) - self.state = 883 + self.state = 892 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.ASYNC: - self.state = 882 + if _la==15: + self.state = 891 self.match(CSharpParser.ASYNC) - self.state = 885 + self.state = 894 self.match(CSharpParser.DELEGATE) - self.state = 891 + self.state = 900 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_PARENS: - self.state = 886 + if _la==129: + self.state = 895 self.match(CSharpParser.OPEN_PARENS) - self.state = 888 + self.state = 897 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (CSharpParser.OBJECT - 67)) | (1 << (CSharpParser.ON - 67)) | (1 << (CSharpParser.ORDERBY - 67)) | (1 << (CSharpParser.OUT - 67)) | (1 << (CSharpParser.PARTIAL - 67)) | (1 << (CSharpParser.REF - 67)) | (1 << (CSharpParser.REMOVE - 67)) | (1 << (CSharpParser.SBYTE - 67)) | (1 << (CSharpParser.SELECT - 67)) | (1 << (CSharpParser.SET - 67)) | (1 << (CSharpParser.SHORT - 67)) | (1 << (CSharpParser.STRING - 67)) | (1 << (CSharpParser.UINT - 67)) | (1 << (CSharpParser.ULONG - 67)) | (1 << (CSharpParser.UNMANAGED - 67)) | (1 << (CSharpParser.USHORT - 67)) | (1 << (CSharpParser.VAR - 67)) | (1 << (CSharpParser.VOID - 67)) | (1 << (CSharpParser.WHEN - 67)) | (1 << (CSharpParser.WHERE - 67)) | (1 << (CSharpParser.YIELD - 67)) | (1 << (CSharpParser.IDENTIFIER - 67)) | (1 << (CSharpParser.OPEN_PARENS - 67)))) != 0): - self.state = 887 + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 7812956763456032119) != 0) or ((((_la - 75)) & ~0x3f) == 0 and ((1 << (_la - 75)) & 18015337681329505) != 0): + self.state = 896 self.explicit_anonymous_function_parameter_list() - self.state = 890 + self.state = 899 self.match(CSharpParser.CLOSE_PARENS) - self.state = 893 + self.state = 902 self.block() pass elif la_ == 16: localctx = CSharpParser.SizeofExpressionContext(self, localctx) self.enterOuterAlt(localctx, 16) - self.state = 894 + self.state = 903 self.match(CSharpParser.SIZEOF) - self.state = 895 + self.state = 904 self.match(CSharpParser.OPEN_PARENS) - self.state = 896 + self.state = 905 self.type_() - self.state = 897 + self.state = 906 self.match(CSharpParser.CLOSE_PARENS) pass elif la_ == 17: localctx = CSharpParser.NameofExpressionContext(self, localctx) self.enterOuterAlt(localctx, 17) - self.state = 899 + self.state = 908 self.match(CSharpParser.NAMEOF) - self.state = 900 + self.state = 909 self.match(CSharpParser.OPEN_PARENS) - self.state = 906 + self.state = 915 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,71,self._ctx) + _alt = self._interp.adaptivePredict(self._input,73,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 901 + self.state = 910 self.identifier() - self.state = 902 + self.state = 911 self.match(CSharpParser.DOT) - self.state = 908 + self.state = 917 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,71,self._ctx) + _alt = self._interp.adaptivePredict(self._input,73,self._ctx) - self.state = 909 + self.state = 918 self.identifier() - self.state = 910 + self.state = 919 self.match(CSharpParser.CLOSE_PARENS) pass @@ -5866,6 +5939,7 @@ def primary_expression_start(self): class Throwable_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5890,25 +5964,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitThrowable_expression" ): listener.exitThrowable_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitThrowable_expression" ): + return visitor.visitThrowable_expression(self) + else: + return visitor.visitChildren(self) + def throwable_expression(self): localctx = CSharpParser.Throwable_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 74, self.RULE_throwable_expression) + self.enterRule(localctx, 76, self.RULE_throwable_expression) try: - self.state = 916 + self.state = 925 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 83, 85, 86, 87, 88, 91, 94, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 1) - self.state = 914 + self.state = 923 self.expression() pass - elif token in [CSharpParser.THROW]: + elif token in [95]: self.enterOuterAlt(localctx, 2) - self.state = 915 + self.state = 924 self.throw_expression() pass else: @@ -5924,6 +6004,7 @@ def throwable_expression(self): class Throw_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5947,18 +6028,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitThrow_expression" ): listener.exitThrow_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitThrow_expression" ): + return visitor.visitThrow_expression(self) + else: + return visitor.visitChildren(self) + def throw_expression(self): localctx = CSharpParser.Throw_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 76, self.RULE_throw_expression) + self.enterRule(localctx, 78, self.RULE_throw_expression) try: self.enterOuterAlt(localctx, 1) - self.state = 918 + self.state = 927 self.match(CSharpParser.THROW) - self.state = 919 + self.state = 928 self.expression() except RecognitionException as re: localctx.exception = re @@ -5970,6 +6057,7 @@ def throw_expression(self): class Member_accessContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6000,33 +6088,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMember_access" ): listener.exitMember_access(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMember_access" ): + return visitor.visitMember_access(self) + else: + return visitor.visitChildren(self) + def member_access(self): localctx = CSharpParser.Member_accessContext(self, self._ctx, self.state) - self.enterRule(localctx, 78, self.RULE_member_access) + self.enterRule(localctx, 80, self.RULE_member_access) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 922 + self.state = 931 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.INTERR: - self.state = 921 + if _la==148: + self.state = 930 self.match(CSharpParser.INTERR) - self.state = 924 + self.state = 933 self.match(CSharpParser.DOT) - self.state = 925 + self.state = 934 self.identifier() - self.state = 927 + self.state = 936 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,75,self._ctx) + la_ = self._interp.adaptivePredict(self._input,77,self._ctx) if la_ == 1: - self.state = 926 + self.state = 935 self.type_argument_list() @@ -6040,6 +6134,7 @@ def member_access(self): class Bracket_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6078,41 +6173,47 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitBracket_expression" ): listener.exitBracket_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitBracket_expression" ): + return visitor.visitBracket_expression(self) + else: + return visitor.visitChildren(self) + def bracket_expression(self): localctx = CSharpParser.Bracket_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 80, self.RULE_bracket_expression) + self.enterRule(localctx, 82, self.RULE_bracket_expression) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 930 + self.state = 939 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.INTERR: - self.state = 929 + if _la==148: + self.state = 938 self.match(CSharpParser.INTERR) - self.state = 932 + self.state = 941 self.match(CSharpParser.OPEN_BRACKET) - self.state = 933 + self.state = 942 self.indexer_argument() - self.state = 938 + self.state = 947 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 934 + while _la==132: + self.state = 943 self.match(CSharpParser.COMMA) - self.state = 935 + self.state = 944 self.indexer_argument() - self.state = 940 + self.state = 949 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 941 + self.state = 950 self.match(CSharpParser.CLOSE_BRACKET) except RecognitionException as re: localctx.exception = re @@ -6124,6 +6225,7 @@ def bracket_expression(self): class Indexer_argumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6151,26 +6253,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIndexer_argument" ): listener.exitIndexer_argument(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIndexer_argument" ): + return visitor.visitIndexer_argument(self) + else: + return visitor.visitChildren(self) + def indexer_argument(self): localctx = CSharpParser.Indexer_argumentContext(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_indexer_argument) + self.enterRule(localctx, 84, self.RULE_indexer_argument) try: self.enterOuterAlt(localctx, 1) - self.state = 946 + self.state = 955 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,78,self._ctx) + la_ = self._interp.adaptivePredict(self._input,80,self._ctx) if la_ == 1: - self.state = 943 + self.state = 952 self.identifier() - self.state = 944 + self.state = 953 self.match(CSharpParser.COLON) - self.state = 948 + self.state = 957 self.expression() except RecognitionException as re: localctx.exception = re @@ -6182,6 +6290,7 @@ def indexer_argument(self): class Predefined_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6243,19 +6352,25 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPredefined_type" ): listener.exitPredefined_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPredefined_type" ): + return visitor.visitPredefined_type(self) + else: + return visitor.visitChildren(self) + def predefined_type(self): localctx = CSharpParser.Predefined_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_predefined_type) + self.enterRule(localctx, 86, self.RULE_predefined_type) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 950 + self.state = 959 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.BOOL) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.INT) | (1 << CSharpParser.LONG))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (CSharpParser.OBJECT - 67)) | (1 << (CSharpParser.SBYTE - 67)) | (1 << (CSharpParser.SHORT - 67)) | (1 << (CSharpParser.STRING - 67)) | (1 << (CSharpParser.UINT - 67)) | (1 << (CSharpParser.ULONG - 67)) | (1 << (CSharpParser.USHORT - 67)))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & -9187308037727846400) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 75170873345) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -6270,6 +6385,7 @@ def predefined_type(self): class Expression_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6299,27 +6415,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExpression_list" ): listener.exitExpression_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExpression_list" ): + return visitor.visitExpression_list(self) + else: + return visitor.visitChildren(self) + def expression_list(self): localctx = CSharpParser.Expression_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 86, self.RULE_expression_list) + self.enterRule(localctx, 88, self.RULE_expression_list) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 952 + self.state = 961 self.expression() - self.state = 957 + self.state = 966 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 953 + while _la==132: + self.state = 962 self.match(CSharpParser.COMMA) - self.state = 954 + self.state = 963 self.expression() - self.state = 959 + self.state = 968 self._errHandler.sync(self) _la = self._input.LA(1) @@ -6333,6 +6455,7 @@ def expression_list(self): class Object_or_collection_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6357,26 +6480,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitObject_or_collection_initializer" ): listener.exitObject_or_collection_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitObject_or_collection_initializer" ): + return visitor.visitObject_or_collection_initializer(self) + else: + return visitor.visitChildren(self) + def object_or_collection_initializer(self): localctx = CSharpParser.Object_or_collection_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 88, self.RULE_object_or_collection_initializer) + self.enterRule(localctx, 90, self.RULE_object_or_collection_initializer) try: - self.state = 962 + self.state = 971 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,80,self._ctx) + la_ = self._interp.adaptivePredict(self._input,82,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 960 + self.state = 969 self.object_initializer() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 961 + self.state = 970 self.collection_initializer() pass @@ -6391,6 +6520,7 @@ def object_or_collection_initializer(self): class Object_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6420,35 +6550,41 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitObject_initializer" ): listener.exitObject_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitObject_initializer" ): + return visitor.visitObject_initializer(self) + else: + return visitor.visitChildren(self) + def object_initializer(self): localctx = CSharpParser.Object_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 90, self.RULE_object_initializer) + self.enterRule(localctx, 92, self.RULE_object_initializer) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 964 + self.state = 973 self.match(CSharpParser.OPEN_BRACE) - self.state = 969 + self.state = 978 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BY) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (CSharpParser.ON - 68)) | (1 << (CSharpParser.ORDERBY - 68)) | (1 << (CSharpParser.PARTIAL - 68)) | (1 << (CSharpParser.REMOVE - 68)) | (1 << (CSharpParser.SELECT - 68)) | (1 << (CSharpParser.SET - 68)) | (1 << (CSharpParser.UNMANAGED - 68)) | (1 << (CSharpParser.VAR - 68)) | (1 << (CSharpParser.WHEN - 68)) | (1 << (CSharpParser.WHERE - 68)) | (1 << (CSharpParser.YIELD - 68)) | (1 << (CSharpParser.IDENTIFIER - 68)) | (1 << (CSharpParser.OPEN_BRACKET - 68)))) != 0): - self.state = 965 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 3750091428249852928) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -9221467407831136095) != 0): + self.state = 974 self.member_initializer_list() - self.state = 967 + self.state = 976 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 966 + if _la==132: + self.state = 975 self.match(CSharpParser.COMMA) - self.state = 971 + self.state = 980 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -6460,6 +6596,7 @@ def object_initializer(self): class Member_initializer_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6489,29 +6626,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMember_initializer_list" ): listener.exitMember_initializer_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMember_initializer_list" ): + return visitor.visitMember_initializer_list(self) + else: + return visitor.visitChildren(self) + def member_initializer_list(self): localctx = CSharpParser.Member_initializer_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 92, self.RULE_member_initializer_list) + self.enterRule(localctx, 94, self.RULE_member_initializer_list) try: self.enterOuterAlt(localctx, 1) - self.state = 973 + self.state = 982 self.member_initializer() - self.state = 978 + self.state = 987 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,83,self._ctx) + _alt = self._interp.adaptivePredict(self._input,85,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 974 + self.state = 983 self.match(CSharpParser.COMMA) - self.state = 975 + self.state = 984 self.member_initializer() - self.state = 980 + self.state = 989 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,83,self._ctx) + _alt = self._interp.adaptivePredict(self._input,85,self._ctx) except RecognitionException as re: localctx.exception = re @@ -6523,6 +6666,7 @@ def member_initializer_list(self): class Member_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6560,36 +6704,42 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMember_initializer" ): listener.exitMember_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMember_initializer" ): + return visitor.visitMember_initializer(self) + else: + return visitor.visitChildren(self) + def member_initializer(self): localctx = CSharpParser.Member_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 94, self.RULE_member_initializer) + self.enterRule(localctx, 96, self.RULE_member_initializer) try: self.enterOuterAlt(localctx, 1) - self.state = 986 + self.state = 995 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BY, CSharpParser.DESCENDING, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.NAMEOF, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REMOVE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.UNMANAGED, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER]: - self.state = 981 + if token in [10, 11, 12, 14, 15, 16, 20, 32, 35, 38, 48, 49, 51, 58, 60, 61, 64, 69, 71, 75, 81, 85, 86, 102, 106, 110, 111, 113, 114]: + self.state = 990 self.identifier() pass - elif token in [CSharpParser.OPEN_BRACKET]: - self.state = 982 + elif token in [127]: + self.state = 991 self.match(CSharpParser.OPEN_BRACKET) - self.state = 983 + self.state = 992 self.expression() - self.state = 984 + self.state = 993 self.match(CSharpParser.CLOSE_BRACKET) pass else: raise NoViableAltException(self) - self.state = 988 + self.state = 997 self.match(CSharpParser.ASSIGNMENT) - self.state = 989 + self.state = 998 self.initializer_value() except RecognitionException as re: localctx.exception = re @@ -6601,6 +6751,7 @@ def member_initializer(self): class Initializer_valueContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6625,25 +6776,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInitializer_value" ): listener.exitInitializer_value(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInitializer_value" ): + return visitor.visitInitializer_value(self) + else: + return visitor.visitChildren(self) + def initializer_value(self): localctx = CSharpParser.Initializer_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 96, self.RULE_initializer_value) + self.enterRule(localctx, 98, self.RULE_initializer_value) try: - self.state = 993 + self.state = 1002 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 83, 85, 86, 87, 88, 91, 94, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 1) - self.state = 991 + self.state = 1000 self.expression() pass - elif token in [CSharpParser.OPEN_BRACE]: + elif token in [125]: self.enterOuterAlt(localctx, 2) - self.state = 992 + self.state = 1001 self.object_or_collection_initializer() pass else: @@ -6659,6 +6816,7 @@ def initializer_value(self): class Collection_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6694,42 +6852,48 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCollection_initializer" ): listener.exitCollection_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCollection_initializer" ): + return visitor.visitCollection_initializer(self) + else: + return visitor.visitChildren(self) + def collection_initializer(self): localctx = CSharpParser.Collection_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 98, self.RULE_collection_initializer) + self.enterRule(localctx, 100, self.RULE_collection_initializer) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 995 + self.state = 1004 self.match(CSharpParser.OPEN_BRACE) - self.state = 996 + self.state = 1005 self.element_initializer() - self.state = 1001 + self.state = 1010 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,86,self._ctx) + _alt = self._interp.adaptivePredict(self._input,88,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 997 + self.state = 1006 self.match(CSharpParser.COMMA) - self.state = 998 + self.state = 1007 self.element_initializer() - self.state = 1003 + self.state = 1012 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,86,self._ctx) + _alt = self._interp.adaptivePredict(self._input,88,self._ctx) - self.state = 1005 + self.state = 1014 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 1004 + if _la==132: + self.state = 1013 self.match(CSharpParser.COMMA) - self.state = 1007 + self.state = 1016 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -6741,6 +6905,7 @@ def collection_initializer(self): class Element_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6771,29 +6936,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitElement_initializer" ): listener.exitElement_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitElement_initializer" ): + return visitor.visitElement_initializer(self) + else: + return visitor.visitChildren(self) + def element_initializer(self): localctx = CSharpParser.Element_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 100, self.RULE_element_initializer) + self.enterRule(localctx, 102, self.RULE_element_initializer) try: - self.state = 1014 + self.state = 1023 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 81, 83, 85, 86, 87, 88, 91, 94, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 1) - self.state = 1009 + self.state = 1018 self.non_assignment_expression() pass - elif token in [CSharpParser.OPEN_BRACE]: + elif token in [125]: self.enterOuterAlt(localctx, 2) - self.state = 1010 + self.state = 1019 self.match(CSharpParser.OPEN_BRACE) - self.state = 1011 + self.state = 1020 self.expression_list() - self.state = 1012 + self.state = 1021 self.match(CSharpParser.CLOSE_BRACE) pass else: @@ -6809,6 +6980,7 @@ def element_initializer(self): class Anonymous_object_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6838,35 +7010,41 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAnonymous_object_initializer" ): listener.exitAnonymous_object_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAnonymous_object_initializer" ): + return visitor.visitAnonymous_object_initializer(self) + else: + return visitor.visitChildren(self) + def anonymous_object_initializer(self): localctx = CSharpParser.Anonymous_object_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 102, self.RULE_anonymous_object_initializer) + self.enterRule(localctx, 104, self.RULE_anonymous_object_initializer) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1016 + self.state = 1025 self.match(CSharpParser.OPEN_BRACE) - self.state = 1021 + self.state = 1030 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0): - self.state = 1017 + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 3417425939254529527) != 0) or ((((_la - 75)) & ~0x3f) == 0 and ((1 << (_la - 75)) & 19140129564736833) != 0): + self.state = 1026 self.member_declarator_list() - self.state = 1019 + self.state = 1028 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 1018 + if _la==132: + self.state = 1027 self.match(CSharpParser.COMMA) - self.state = 1023 + self.state = 1032 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -6878,6 +7056,7 @@ def anonymous_object_initializer(self): class Member_declarator_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6907,29 +7086,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMember_declarator_list" ): listener.exitMember_declarator_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMember_declarator_list" ): + return visitor.visitMember_declarator_list(self) + else: + return visitor.visitChildren(self) + def member_declarator_list(self): localctx = CSharpParser.Member_declarator_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 104, self.RULE_member_declarator_list) + self.enterRule(localctx, 106, self.RULE_member_declarator_list) try: self.enterOuterAlt(localctx, 1) - self.state = 1025 + self.state = 1034 self.member_declarator() - self.state = 1030 + self.state = 1039 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,91,self._ctx) + _alt = self._interp.adaptivePredict(self._input,93,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 1026 + self.state = 1035 self.match(CSharpParser.COMMA) - self.state = 1027 + self.state = 1036 self.member_declarator() - self.state = 1032 + self.state = 1041 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,91,self._ctx) + _alt = self._interp.adaptivePredict(self._input,93,self._ctx) except RecognitionException as re: localctx.exception = re @@ -6941,6 +7126,7 @@ def member_declarator_list(self): class Member_declaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6972,30 +7158,36 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMember_declarator" ): listener.exitMember_declarator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMember_declarator" ): + return visitor.visitMember_declarator(self) + else: + return visitor.visitChildren(self) + def member_declarator(self): localctx = CSharpParser.Member_declaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 106, self.RULE_member_declarator) + self.enterRule(localctx, 108, self.RULE_member_declarator) try: - self.state = 1038 + self.state = 1047 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,92,self._ctx) + la_ = self._interp.adaptivePredict(self._input,94,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1033 + self.state = 1042 self.primary_expression() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1034 + self.state = 1043 self.identifier() - self.state = 1035 + self.state = 1044 self.match(CSharpParser.ASSIGNMENT) - self.state = 1036 + self.state = 1045 self.expression() pass @@ -7010,6 +7202,7 @@ def member_declarator(self): class Unbound_type_nameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7049,41 +7242,47 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUnbound_type_name" ): listener.exitUnbound_type_name(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUnbound_type_name" ): + return visitor.visitUnbound_type_name(self) + else: + return visitor.visitChildren(self) + def unbound_type_name(self): localctx = CSharpParser.Unbound_type_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 108, self.RULE_unbound_type_name) + self.enterRule(localctx, 110, self.RULE_unbound_type_name) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1040 - self.identifier() self.state = 1049 + self.identifier() + self.state = 1058 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.CLOSE_PARENS, CSharpParser.DOT, CSharpParser.LT]: - self.state = 1042 + if token in [130, 131, 146]: + self.state = 1051 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 1041 + if _la==146: + self.state = 1050 self.generic_dimension_specifier() pass - elif token in [CSharpParser.DOUBLE_COLON]: - self.state = 1044 + elif token in [149]: + self.state = 1053 self.match(CSharpParser.DOUBLE_COLON) - self.state = 1045 + self.state = 1054 self.identifier() - self.state = 1047 + self.state = 1056 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 1046 + if _la==146: + self.state = 1055 self.generic_dimension_specifier() @@ -7091,23 +7290,23 @@ def unbound_type_name(self): else: raise NoViableAltException(self) - self.state = 1058 + self.state = 1067 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.DOT: - self.state = 1051 + while _la==131: + self.state = 1060 self.match(CSharpParser.DOT) - self.state = 1052 + self.state = 1061 self.identifier() - self.state = 1054 + self.state = 1063 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 1053 + if _la==146: + self.state = 1062 self.generic_dimension_specifier() - self.state = 1060 + self.state = 1069 self._errHandler.sync(self) _la = self._input.LA(1) @@ -7121,6 +7320,7 @@ def unbound_type_name(self): class Generic_dimension_specifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7149,29 +7349,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGeneric_dimension_specifier" ): listener.exitGeneric_dimension_specifier(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGeneric_dimension_specifier" ): + return visitor.visitGeneric_dimension_specifier(self) + else: + return visitor.visitChildren(self) + def generic_dimension_specifier(self): localctx = CSharpParser.Generic_dimension_specifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 110, self.RULE_generic_dimension_specifier) + self.enterRule(localctx, 112, self.RULE_generic_dimension_specifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1061 + self.state = 1070 self.match(CSharpParser.LT) - self.state = 1065 + self.state = 1074 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1062 + while _la==132: + self.state = 1071 self.match(CSharpParser.COMMA) - self.state = 1067 + self.state = 1076 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1068 + self.state = 1077 self.match(CSharpParser.GT) except RecognitionException as re: localctx.exception = re @@ -7183,6 +7389,7 @@ def generic_dimension_specifier(self): class IsTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7227,62 +7434,67 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIsType" ): listener.exitIsType(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIsType" ): + return visitor.visitIsType(self) + else: + return visitor.visitChildren(self) + def isType(self): localctx = CSharpParser.IsTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 112, self.RULE_isType) - self._la = 0 # Token type + self.enterRule(localctx, 114, self.RULE_isType) try: self.enterOuterAlt(localctx, 1) - self.state = 1070 + self.state = 1079 self.base_type() - self.state = 1075 + self.state = 1084 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,100,self._ctx) + _alt = self._interp.adaptivePredict(self._input,102,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 1073 + self.state = 1082 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACKET]: - self.state = 1071 + if token in [127]: + self.state = 1080 self.rank_specifier() pass - elif token in [CSharpParser.STAR]: - self.state = 1072 + elif token in [137]: + self.state = 1081 self.match(CSharpParser.STAR) pass else: raise NoViableAltException(self) - self.state = 1077 + self.state = 1086 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,100,self._ctx) + _alt = self._interp.adaptivePredict(self._input,102,self._ctx) - self.state = 1079 + self.state = 1088 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,101,self._ctx) + la_ = self._interp.adaptivePredict(self._input,103,self._ctx) if la_ == 1: - self.state = 1078 + self.state = 1087 self.match(CSharpParser.INTERR) - self.state = 1082 + self.state = 1091 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACE: - self.state = 1081 + la_ = self._interp.adaptivePredict(self._input,104,self._ctx) + if la_ == 1: + self.state = 1090 self.isTypePatternArms() - self.state = 1085 + self.state = 1094 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,103,self._ctx) + la_ = self._interp.adaptivePredict(self._input,105,self._ctx) if la_ == 1: - self.state = 1084 + self.state = 1093 self.identifier() @@ -7296,6 +7508,7 @@ def isType(self): class IsTypePatternArmsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7331,33 +7544,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIsTypePatternArms" ): listener.exitIsTypePatternArms(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIsTypePatternArms" ): + return visitor.visitIsTypePatternArms(self) + else: + return visitor.visitChildren(self) + def isTypePatternArms(self): localctx = CSharpParser.IsTypePatternArmsContext(self, self._ctx, self.state) - self.enterRule(localctx, 114, self.RULE_isTypePatternArms) + self.enterRule(localctx, 116, self.RULE_isTypePatternArms) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1087 + self.state = 1096 self.match(CSharpParser.OPEN_BRACE) - self.state = 1088 + self.state = 1097 self.isTypePatternArm() - self.state = 1093 + self.state = 1102 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1089 + while _la==132: + self.state = 1098 self.match(CSharpParser.COMMA) - self.state = 1090 + self.state = 1099 self.isTypePatternArm() - self.state = 1095 + self.state = 1104 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1096 + self.state = 1105 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -7369,6 +7588,7 @@ def isTypePatternArms(self): class IsTypePatternArmContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7396,20 +7616,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIsTypePatternArm" ): listener.exitIsTypePatternArm(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIsTypePatternArm" ): + return visitor.visitIsTypePatternArm(self) + else: + return visitor.visitChildren(self) + def isTypePatternArm(self): localctx = CSharpParser.IsTypePatternArmContext(self, self._ctx, self.state) - self.enterRule(localctx, 116, self.RULE_isTypePatternArm) + self.enterRule(localctx, 118, self.RULE_isTypePatternArm) try: self.enterOuterAlt(localctx, 1) - self.state = 1098 + self.state = 1107 self.identifier() - self.state = 1099 + self.state = 1108 self.match(CSharpParser.COLON) - self.state = 1100 + self.state = 1109 self.expression() except RecognitionException as re: localctx.exception = re @@ -7421,6 +7647,7 @@ def isTypePatternArm(self): class Lambda_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7452,28 +7679,34 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLambda_expression" ): listener.exitLambda_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLambda_expression" ): + return visitor.visitLambda_expression(self) + else: + return visitor.visitChildren(self) + def lambda_expression(self): localctx = CSharpParser.Lambda_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 118, self.RULE_lambda_expression) + self.enterRule(localctx, 120, self.RULE_lambda_expression) try: self.enterOuterAlt(localctx, 1) - self.state = 1103 + self.state = 1112 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,105,self._ctx) + la_ = self._interp.adaptivePredict(self._input,107,self._ctx) if la_ == 1: - self.state = 1102 + self.state = 1111 self.match(CSharpParser.ASYNC) - self.state = 1105 + self.state = 1114 self.anonymous_function_signature() - self.state = 1106 + self.state = 1115 self.right_arrow() - self.state = 1107 + self.state = 1116 self.anonymous_function_body() except RecognitionException as re: localctx.exception = re @@ -7485,6 +7718,7 @@ def lambda_expression(self): class Anonymous_function_signatureContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7519,48 +7753,54 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAnonymous_function_signature" ): listener.exitAnonymous_function_signature(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAnonymous_function_signature" ): + return visitor.visitAnonymous_function_signature(self) + else: + return visitor.visitChildren(self) + def anonymous_function_signature(self): localctx = CSharpParser.Anonymous_function_signatureContext(self, self._ctx, self.state) - self.enterRule(localctx, 120, self.RULE_anonymous_function_signature) + self.enterRule(localctx, 122, self.RULE_anonymous_function_signature) try: - self.state = 1120 + self.state = 1129 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,106,self._ctx) + la_ = self._interp.adaptivePredict(self._input,108,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1109 + self.state = 1118 self.match(CSharpParser.OPEN_PARENS) - self.state = 1110 + self.state = 1119 self.match(CSharpParser.CLOSE_PARENS) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1111 + self.state = 1120 self.match(CSharpParser.OPEN_PARENS) - self.state = 1112 + self.state = 1121 self.explicit_anonymous_function_parameter_list() - self.state = 1113 + self.state = 1122 self.match(CSharpParser.CLOSE_PARENS) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1115 + self.state = 1124 self.match(CSharpParser.OPEN_PARENS) - self.state = 1116 + self.state = 1125 self.implicit_anonymous_function_parameter_list() - self.state = 1117 + self.state = 1126 self.match(CSharpParser.CLOSE_PARENS) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1119 + self.state = 1128 self.identifier() pass @@ -7575,6 +7815,7 @@ def anonymous_function_signature(self): class Explicit_anonymous_function_parameter_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7604,27 +7845,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExplicit_anonymous_function_parameter_list" ): listener.exitExplicit_anonymous_function_parameter_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExplicit_anonymous_function_parameter_list" ): + return visitor.visitExplicit_anonymous_function_parameter_list(self) + else: + return visitor.visitChildren(self) + def explicit_anonymous_function_parameter_list(self): localctx = CSharpParser.Explicit_anonymous_function_parameter_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 122, self.RULE_explicit_anonymous_function_parameter_list) + self.enterRule(localctx, 124, self.RULE_explicit_anonymous_function_parameter_list) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1122 + self.state = 1131 self.explicit_anonymous_function_parameter() - self.state = 1127 + self.state = 1136 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1123 + while _la==132: + self.state = 1132 self.match(CSharpParser.COMMA) - self.state = 1124 + self.state = 1133 self.explicit_anonymous_function_parameter() - self.state = 1129 + self.state = 1138 self._errHandler.sync(self) _la = self._input.LA(1) @@ -7638,6 +7885,7 @@ def explicit_anonymous_function_parameter_list(self): class Explicit_anonymous_function_parameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7672,33 +7920,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExplicit_anonymous_function_parameter" ): listener.exitExplicit_anonymous_function_parameter(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExplicit_anonymous_function_parameter" ): + return visitor.visitExplicit_anonymous_function_parameter(self) + else: + return visitor.visitChildren(self) + def explicit_anonymous_function_parameter(self): localctx = CSharpParser.Explicit_anonymous_function_parameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 124, self.RULE_explicit_anonymous_function_parameter) + self.enterRule(localctx, 126, self.RULE_explicit_anonymous_function_parameter) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1131 + self.state = 1140 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 53)) & ~0x3f) == 0 and ((1 << (_la - 53)) & ((1 << (CSharpParser.IN - 53)) | (1 << (CSharpParser.OUT - 53)) | (1 << (CSharpParser.REF - 53)))) != 0): - self.state = 1130 + if ((((_la - 54)) & ~0x3f) == 0 and ((1 << (_la - 54)) & 67371009) != 0): + self.state = 1139 localctx.refout = self._input.LT(1) _la = self._input.LA(1) - if not(((((_la - 53)) & ~0x3f) == 0 and ((1 << (_la - 53)) & ((1 << (CSharpParser.IN - 53)) | (1 << (CSharpParser.OUT - 53)) | (1 << (CSharpParser.REF - 53)))) != 0)): + if not(((((_la - 54)) & ~0x3f) == 0 and ((1 << (_la - 54)) & 67371009) != 0)): localctx.refout = self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 1133 + self.state = 1142 self.type_() - self.state = 1134 + self.state = 1143 self.identifier() except RecognitionException as re: localctx.exception = re @@ -7710,6 +7964,7 @@ def explicit_anonymous_function_parameter(self): class Implicit_anonymous_function_parameter_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7739,27 +7994,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitImplicit_anonymous_function_parameter_list" ): listener.exitImplicit_anonymous_function_parameter_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitImplicit_anonymous_function_parameter_list" ): + return visitor.visitImplicit_anonymous_function_parameter_list(self) + else: + return visitor.visitChildren(self) + def implicit_anonymous_function_parameter_list(self): localctx = CSharpParser.Implicit_anonymous_function_parameter_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 126, self.RULE_implicit_anonymous_function_parameter_list) + self.enterRule(localctx, 128, self.RULE_implicit_anonymous_function_parameter_list) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1136 + self.state = 1145 self.identifier() - self.state = 1141 + self.state = 1150 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1137 + while _la==132: + self.state = 1146 self.match(CSharpParser.COMMA) - self.state = 1138 + self.state = 1147 self.identifier() - self.state = 1143 + self.state = 1152 self._errHandler.sync(self) _la = self._input.LA(1) @@ -7773,6 +8034,7 @@ def implicit_anonymous_function_parameter_list(self): class Anonymous_function_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7797,25 +8059,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAnonymous_function_body" ): listener.exitAnonymous_function_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAnonymous_function_body" ): + return visitor.visitAnonymous_function_body(self) + else: + return visitor.visitChildren(self) + def anonymous_function_body(self): localctx = CSharpParser.Anonymous_function_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 128, self.RULE_anonymous_function_body) + self.enterRule(localctx, 130, self.RULE_anonymous_function_body) try: - self.state = 1146 + self.state = 1155 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.THROW, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 83, 85, 86, 87, 88, 91, 94, 95, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 1) - self.state = 1144 + self.state = 1153 self.throwable_expression() pass - elif token in [CSharpParser.OPEN_BRACE]: + elif token in [125]: self.enterOuterAlt(localctx, 2) - self.state = 1145 + self.state = 1154 self.block() pass else: @@ -7831,6 +8099,7 @@ def anonymous_function_body(self): class Query_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7855,18 +8124,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitQuery_expression" ): listener.exitQuery_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitQuery_expression" ): + return visitor.visitQuery_expression(self) + else: + return visitor.visitChildren(self) + def query_expression(self): localctx = CSharpParser.Query_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 130, self.RULE_query_expression) + self.enterRule(localctx, 132, self.RULE_query_expression) try: self.enterOuterAlt(localctx, 1) - self.state = 1148 + self.state = 1157 self.from_clause() - self.state = 1149 + self.state = 1158 self.query_body() except RecognitionException as re: localctx.exception = re @@ -7878,6 +8153,7 @@ def query_expression(self): class From_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7912,30 +8188,36 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFrom_clause" ): listener.exitFrom_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFrom_clause" ): + return visitor.visitFrom_clause(self) + else: + return visitor.visitChildren(self) + def from_clause(self): localctx = CSharpParser.From_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 132, self.RULE_from_clause) + self.enterRule(localctx, 134, self.RULE_from_clause) try: self.enterOuterAlt(localctx, 1) - self.state = 1151 + self.state = 1160 self.match(CSharpParser.FROM) - self.state = 1153 + self.state = 1162 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,111,self._ctx) + la_ = self._interp.adaptivePredict(self._input,113,self._ctx) if la_ == 1: - self.state = 1152 + self.state = 1161 self.type_() - self.state = 1155 + self.state = 1164 self.identifier() - self.state = 1156 + self.state = 1165 self.match(CSharpParser.IN) - self.state = 1157 + self.state = 1166 self.expression() except RecognitionException as re: localctx.exception = re @@ -7947,6 +8229,7 @@ def from_clause(self): class Query_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7978,33 +8261,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitQuery_body" ): listener.exitQuery_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitQuery_body" ): + return visitor.visitQuery_body(self) + else: + return visitor.visitChildren(self) + def query_body(self): localctx = CSharpParser.Query_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 134, self.RULE_query_body) + self.enterRule(localctx, 136, self.RULE_query_body) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1162 + self.state = 1171 self._errHandler.sync(self) _la = self._input.LA(1) - while ((((_la - 47)) & ~0x3f) == 0 and ((1 << (_la - 47)) & ((1 << (CSharpParser.FROM - 47)) | (1 << (CSharpParser.JOIN - 47)) | (1 << (CSharpParser.LET - 47)) | (1 << (CSharpParser.ORDERBY - 47)) | (1 << (CSharpParser.WHERE - 47)))) != 0): - self.state = 1159 + while ((((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & -9223372036846374911) != 0): + self.state = 1168 self.query_body_clause() - self.state = 1164 + self.state = 1173 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1165 + self.state = 1174 self.select_or_group_clause() - self.state = 1167 + self.state = 1176 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,113,self._ctx) + la_ = self._interp.adaptivePredict(self._input,115,self._ctx) if la_ == 1: - self.state = 1166 + self.state = 1175 self.query_continuation() @@ -8018,6 +8307,7 @@ def query_body(self): class Query_body_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8054,40 +8344,46 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitQuery_body_clause" ): listener.exitQuery_body_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitQuery_body_clause" ): + return visitor.visitQuery_body_clause(self) + else: + return visitor.visitChildren(self) + def query_body_clause(self): localctx = CSharpParser.Query_body_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 136, self.RULE_query_body_clause) + self.enterRule(localctx, 138, self.RULE_query_body_clause) try: - self.state = 1174 + self.state = 1183 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.FROM]: + if token in [48]: self.enterOuterAlt(localctx, 1) - self.state = 1169 + self.state = 1178 self.from_clause() pass - elif token in [CSharpParser.LET]: + elif token in [61]: self.enterOuterAlt(localctx, 2) - self.state = 1170 + self.state = 1179 self.let_clause() pass - elif token in [CSharpParser.WHERE]: + elif token in [111]: self.enterOuterAlt(localctx, 3) - self.state = 1171 + self.state = 1180 self.where_clause() pass - elif token in [CSharpParser.JOIN]: + elif token in [60]: self.enterOuterAlt(localctx, 4) - self.state = 1172 + self.state = 1181 self.combined_join_clause() pass - elif token in [CSharpParser.ORDERBY]: + elif token in [71]: self.enterOuterAlt(localctx, 5) - self.state = 1173 + self.state = 1182 self.orderby_clause() pass else: @@ -8103,6 +8399,7 @@ def query_body_clause(self): class Let_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8133,22 +8430,28 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLet_clause" ): listener.exitLet_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLet_clause" ): + return visitor.visitLet_clause(self) + else: + return visitor.visitChildren(self) + def let_clause(self): localctx = CSharpParser.Let_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 138, self.RULE_let_clause) + self.enterRule(localctx, 140, self.RULE_let_clause) try: self.enterOuterAlt(localctx, 1) - self.state = 1176 + self.state = 1185 self.match(CSharpParser.LET) - self.state = 1177 + self.state = 1186 self.identifier() - self.state = 1178 + self.state = 1187 self.match(CSharpParser.ASSIGNMENT) - self.state = 1179 + self.state = 1188 self.expression() except RecognitionException as re: localctx.exception = re @@ -8160,6 +8463,7 @@ def let_clause(self): class Where_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8183,18 +8487,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitWhere_clause" ): listener.exitWhere_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWhere_clause" ): + return visitor.visitWhere_clause(self) + else: + return visitor.visitChildren(self) + def where_clause(self): localctx = CSharpParser.Where_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 140, self.RULE_where_clause) + self.enterRule(localctx, 142, self.RULE_where_clause) try: self.enterOuterAlt(localctx, 1) - self.state = 1181 + self.state = 1190 self.match(CSharpParser.WHERE) - self.state = 1182 + self.state = 1191 self.expression() except RecognitionException as re: localctx.exception = re @@ -8206,6 +8516,7 @@ def where_clause(self): class Combined_join_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8255,47 +8566,53 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCombined_join_clause" ): listener.exitCombined_join_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCombined_join_clause" ): + return visitor.visitCombined_join_clause(self) + else: + return visitor.visitChildren(self) + def combined_join_clause(self): localctx = CSharpParser.Combined_join_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 142, self.RULE_combined_join_clause) + self.enterRule(localctx, 144, self.RULE_combined_join_clause) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1184 + self.state = 1193 self.match(CSharpParser.JOIN) - self.state = 1186 + self.state = 1195 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,115,self._ctx) + la_ = self._interp.adaptivePredict(self._input,117,self._ctx) if la_ == 1: - self.state = 1185 + self.state = 1194 self.type_() - self.state = 1188 + self.state = 1197 self.identifier() - self.state = 1189 + self.state = 1198 self.match(CSharpParser.IN) - self.state = 1190 + self.state = 1199 self.expression() - self.state = 1191 + self.state = 1200 self.match(CSharpParser.ON) - self.state = 1192 + self.state = 1201 self.expression() - self.state = 1193 + self.state = 1202 self.match(CSharpParser.EQUALS) - self.state = 1194 + self.state = 1203 self.expression() - self.state = 1197 + self.state = 1206 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.INTO: - self.state = 1195 + if _la==58: + self.state = 1204 self.match(CSharpParser.INTO) - self.state = 1196 + self.state = 1205 self.identifier() @@ -8309,6 +8626,7 @@ def combined_join_clause(self): class Orderby_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8341,29 +8659,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitOrderby_clause" ): listener.exitOrderby_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitOrderby_clause" ): + return visitor.visitOrderby_clause(self) + else: + return visitor.visitChildren(self) + def orderby_clause(self): localctx = CSharpParser.Orderby_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 144, self.RULE_orderby_clause) + self.enterRule(localctx, 146, self.RULE_orderby_clause) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1199 + self.state = 1208 self.match(CSharpParser.ORDERBY) - self.state = 1200 + self.state = 1209 self.ordering() - self.state = 1205 + self.state = 1214 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1201 + while _la==132: + self.state = 1210 self.match(CSharpParser.COMMA) - self.state = 1202 + self.state = 1211 self.ordering() - self.state = 1207 + self.state = 1216 self._errHandler.sync(self) _la = self._input.LA(1) @@ -8377,11 +8701,12 @@ def orderby_clause(self): class OrderingContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.dire = None # Token + self.dir_ = None # Token def expression(self): return self.getTypedRuleContext(CSharpParser.ExpressionContext,0) @@ -8404,27 +8729,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitOrdering" ): listener.exitOrdering(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitOrdering" ): + return visitor.visitOrdering(self) + else: + return visitor.visitChildren(self) + def ordering(self): localctx = CSharpParser.OrderingContext(self, self._ctx, self.state) - self.enterRule(localctx, 146, self.RULE_ordering) + self.enterRule(localctx, 148, self.RULE_ordering) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1208 + self.state = 1217 self.expression() - self.state = 1210 + self.state = 1219 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.ASCENDING or _la==CSharpParser.DESCENDING: - self.state = 1209 - localctx.dire = self._input.LT(1) + if _la==14 or _la==32: + self.state = 1218 + localctx.dir_ = self._input.LT(1) _la = self._input.LA(1) - if not(_la==CSharpParser.ASCENDING or _la==CSharpParser.DESCENDING): - localctx.dire = self._errHandler.recoverInline(self) + if not(_la==14 or _la==32): + localctx.dir_ = self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() @@ -8440,6 +8771,7 @@ def ordering(self): class Select_or_group_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8472,33 +8804,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSelect_or_group_clause" ): listener.exitSelect_or_group_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSelect_or_group_clause" ): + return visitor.visitSelect_or_group_clause(self) + else: + return visitor.visitChildren(self) + def select_or_group_clause(self): localctx = CSharpParser.Select_or_group_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 148, self.RULE_select_or_group_clause) + self.enterRule(localctx, 150, self.RULE_select_or_group_clause) try: - self.state = 1219 + self.state = 1228 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.SELECT]: + if token in [85]: self.enterOuterAlt(localctx, 1) - self.state = 1212 + self.state = 1221 self.match(CSharpParser.SELECT) - self.state = 1213 + self.state = 1222 self.expression() pass - elif token in [CSharpParser.GROUP]: + elif token in [51]: self.enterOuterAlt(localctx, 2) - self.state = 1214 + self.state = 1223 self.match(CSharpParser.GROUP) - self.state = 1215 + self.state = 1224 self.expression() - self.state = 1216 + self.state = 1225 self.match(CSharpParser.BY) - self.state = 1217 + self.state = 1226 self.expression() pass else: @@ -8514,6 +8852,7 @@ def select_or_group_clause(self): class Query_continuationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8541,20 +8880,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitQuery_continuation" ): listener.exitQuery_continuation(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitQuery_continuation" ): + return visitor.visitQuery_continuation(self) + else: + return visitor.visitChildren(self) + def query_continuation(self): localctx = CSharpParser.Query_continuationContext(self, self._ctx, self.state) - self.enterRule(localctx, 150, self.RULE_query_continuation) + self.enterRule(localctx, 152, self.RULE_query_continuation) try: self.enterOuterAlt(localctx, 1) - self.state = 1221 + self.state = 1230 self.match(CSharpParser.INTO) - self.state = 1222 + self.state = 1231 self.identifier() - self.state = 1223 + self.state = 1232 self.query_body() except RecognitionException as re: localctx.exception = re @@ -8566,6 +8911,7 @@ def query_continuation(self): class StatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8594,32 +8940,38 @@ 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 = CSharpParser.StatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 152, self.RULE_statement) + self.enterRule(localctx, 154, self.RULE_statement) try: - self.state = 1228 + self.state = 1237 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,120,self._ctx) + la_ = self._interp.adaptivePredict(self._input,122,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1225 + self.state = 1234 self.labeled_Statement() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1226 + self.state = 1235 self.declarationStatement() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1227 + self.state = 1236 self.embedded_statement() pass @@ -8634,6 +8986,7 @@ def statement(self): class DeclarationStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8665,36 +9018,42 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDeclarationStatement" ): listener.exitDeclarationStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDeclarationStatement" ): + return visitor.visitDeclarationStatement(self) + else: + return visitor.visitChildren(self) + def declarationStatement(self): localctx = CSharpParser.DeclarationStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 154, self.RULE_declarationStatement) + self.enterRule(localctx, 156, self.RULE_declarationStatement) try: - self.state = 1237 + self.state = 1246 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,121,self._ctx) + la_ = self._interp.adaptivePredict(self._input,123,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1230 + self.state = 1239 self.local_variable_declaration() - self.state = 1231 + self.state = 1240 self.match(CSharpParser.SEMICOLON) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1233 + self.state = 1242 self.local_constant_declaration() - self.state = 1234 + self.state = 1243 self.match(CSharpParser.SEMICOLON) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1236 + self.state = 1245 self.local_function_declaration() pass @@ -8709,6 +9068,7 @@ def declarationStatement(self): class Local_function_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8733,18 +9093,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLocal_function_declaration" ): listener.exitLocal_function_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLocal_function_declaration" ): + return visitor.visitLocal_function_declaration(self) + else: + return visitor.visitChildren(self) + def local_function_declaration(self): localctx = CSharpParser.Local_function_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 156, self.RULE_local_function_declaration) + self.enterRule(localctx, 158, self.RULE_local_function_declaration) try: self.enterOuterAlt(localctx, 1) - self.state = 1239 + self.state = 1248 self.local_function_header() - self.state = 1240 + self.state = 1249 self.local_function_body() except RecognitionException as re: localctx.exception = re @@ -8756,6 +9122,7 @@ def local_function_declaration(self): class Local_function_headerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8802,53 +9169,59 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLocal_function_header" ): listener.exitLocal_function_header(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLocal_function_header" ): + return visitor.visitLocal_function_header(self) + else: + return visitor.visitChildren(self) + def local_function_header(self): localctx = CSharpParser.Local_function_headerContext(self, self._ctx, self.state) - self.enterRule(localctx, 158, self.RULE_local_function_header) + self.enterRule(localctx, 160, self.RULE_local_function_header) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1243 + self.state = 1252 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,122,self._ctx) + la_ = self._interp.adaptivePredict(self._input,124,self._ctx) if la_ == 1: - self.state = 1242 + self.state = 1251 self.local_function_modifiers() - self.state = 1245 + self.state = 1254 self.return_type() - self.state = 1246 + self.state = 1255 self.identifier() - self.state = 1248 + self.state = 1257 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 1247 + if _la==146: + self.state = 1256 self.type_parameter_list() - self.state = 1250 + self.state = 1259 self.match(CSharpParser.OPEN_PARENS) - self.state = 1252 + self.state = 1261 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (CSharpParser.OBJECT - 67)) | (1 << (CSharpParser.ON - 67)) | (1 << (CSharpParser.ORDERBY - 67)) | (1 << (CSharpParser.OUT - 67)) | (1 << (CSharpParser.PARAMS - 67)) | (1 << (CSharpParser.PARTIAL - 67)) | (1 << (CSharpParser.REF - 67)) | (1 << (CSharpParser.REMOVE - 67)) | (1 << (CSharpParser.SBYTE - 67)) | (1 << (CSharpParser.SELECT - 67)) | (1 << (CSharpParser.SET - 67)) | (1 << (CSharpParser.SHORT - 67)) | (1 << (CSharpParser.STRING - 67)) | (1 << (CSharpParser.THIS - 67)) | (1 << (CSharpParser.UINT - 67)) | (1 << (CSharpParser.ULONG - 67)) | (1 << (CSharpParser.UNMANAGED - 67)) | (1 << (CSharpParser.USHORT - 67)) | (1 << (CSharpParser.VAR - 67)) | (1 << (CSharpParser.VOID - 67)) | (1 << (CSharpParser.WHEN - 67)) | (1 << (CSharpParser.WHERE - 67)) | (1 << (CSharpParser.YIELD - 67)) | (1 << (CSharpParser.IDENTIFIER - 67)) | (1 << (CSharpParser.OPEN_BRACKET - 67)) | (1 << (CSharpParser.OPEN_PARENS - 67)))) != 0): - self.state = 1251 + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 7812956763456032119) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 45037874618448579) != 0): + self.state = 1260 self.formal_parameter_list() - self.state = 1254 + self.state = 1263 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1256 + self.state = 1265 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHERE: - self.state = 1255 + if _la==111: + self.state = 1264 self.type_parameter_constraints_clauses() @@ -8862,6 +9235,7 @@ def local_function_header(self): class Local_function_modifiersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8887,43 +9261,49 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLocal_function_modifiers" ): listener.exitLocal_function_modifiers(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLocal_function_modifiers" ): + return visitor.visitLocal_function_modifiers(self) + else: + return visitor.visitChildren(self) + def local_function_modifiers(self): localctx = CSharpParser.Local_function_modifiersContext(self, self._ctx, self.state) - self.enterRule(localctx, 160, self.RULE_local_function_modifiers) + self.enterRule(localctx, 162, self.RULE_local_function_modifiers) self._la = 0 # Token type try: - self.state = 1264 + self.state = 1273 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ASYNC, CSharpParser.UNSAFE]: + if token in [15, 103]: self.enterOuterAlt(localctx, 1) - self.state = 1258 + self.state = 1267 _la = self._input.LA(1) - if not(_la==CSharpParser.ASYNC or _la==CSharpParser.UNSAFE): + if not(_la==15 or _la==103): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 1260 + self.state = 1269 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.STATIC: - self.state = 1259 + if _la==90: + self.state = 1268 self.match(CSharpParser.STATIC) pass - elif token in [CSharpParser.STATIC]: + elif token in [90]: self.enterOuterAlt(localctx, 2) - self.state = 1262 + self.state = 1271 self.match(CSharpParser.STATIC) - self.state = 1263 + self.state = 1272 _la = self._input.LA(1) - if not(_la==CSharpParser.ASYNC or _la==CSharpParser.UNSAFE): + if not(_la==15 or _la==103): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -8942,6 +9322,7 @@ def local_function_modifiers(self): class Local_function_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8973,29 +9354,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLocal_function_body" ): listener.exitLocal_function_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLocal_function_body" ): + return visitor.visitLocal_function_body(self) + else: + return visitor.visitChildren(self) + def local_function_body(self): localctx = CSharpParser.Local_function_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 162, self.RULE_local_function_body) + self.enterRule(localctx, 164, self.RULE_local_function_body) try: - self.state = 1271 + self.state = 1280 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE]: + if token in [125]: self.enterOuterAlt(localctx, 1) - self.state = 1266 + self.state = 1275 self.block() pass - elif token in [CSharpParser.ASSIGNMENT]: + elif token in [145]: self.enterOuterAlt(localctx, 2) - self.state = 1267 + self.state = 1276 self.right_arrow() - self.state = 1268 + self.state = 1277 self.throwable_expression() - self.state = 1269 + self.state = 1278 self.match(CSharpParser.SEMICOLON) pass else: @@ -9011,6 +9398,7 @@ def local_function_body(self): class Labeled_StatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9038,20 +9426,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLabeled_Statement" ): listener.exitLabeled_Statement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLabeled_Statement" ): + return visitor.visitLabeled_Statement(self) + else: + return visitor.visitChildren(self) + def labeled_Statement(self): localctx = CSharpParser.Labeled_StatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 164, self.RULE_labeled_Statement) + self.enterRule(localctx, 166, self.RULE_labeled_Statement) try: self.enterOuterAlt(localctx, 1) - self.state = 1273 + self.state = 1282 self.identifier() - self.state = 1274 + self.state = 1283 self.match(CSharpParser.COLON) - self.state = 1275 + self.state = 1284 self.statement() except RecognitionException as re: localctx.exception = re @@ -9063,6 +9457,7 @@ def labeled_Statement(self): class Embedded_statementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9087,25 +9482,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEmbedded_statement" ): listener.exitEmbedded_statement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEmbedded_statement" ): + return visitor.visitEmbedded_statement(self) + else: + return visitor.visitChildren(self) + def embedded_statement(self): localctx = CSharpParser.Embedded_statementContext(self, self._ctx, self.state) - self.enterRule(localctx, 166, self.RULE_embedded_statement) + self.enterRule(localctx, 168, self.RULE_embedded_statement) try: - self.state = 1279 + self.state = 1288 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE]: + if token in [125]: self.enterOuterAlt(localctx, 1) - self.state = 1277 + self.state = 1286 self.block() pass - elif token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BREAK, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.CONTINUE, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DO, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FIXED, CSharpParser.FLOAT, CSharpParser.FOR, CSharpParser.FOREACH, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GOTO, CSharpParser.GROUP, CSharpParser.IF, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LOCK, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.RETURN, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.SWITCH, CSharpParser.THIS, CSharpParser.THROW, CSharpParser.TRUE, CSharpParser.TRY, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.UNSAFE, CSharpParser.USHORT, CSharpParser.USING, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.WHILE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.SEMICOLON, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + elif token in [10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 24, 25, 28, 29, 30, 31, 32, 33, 34, 35, 38, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 58, 60, 61, 62, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 82, 83, 85, 86, 87, 88, 91, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 134, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 2) - self.state = 1278 + self.state = 1287 self.simple_embedded_statement() pass else: @@ -9121,6 +9522,7 @@ def embedded_statement(self): class Simple_embedded_statementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9162,6 +9564,12 @@ 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) + class CheckedStatementContext(Simple_embedded_statementContext): @@ -9183,6 +9591,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCheckedStatement" ): listener.exitCheckedStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCheckedStatement" ): + return visitor.visitCheckedStatement(self) + else: + return visitor.visitChildren(self) + class ThrowStatementContext(Simple_embedded_statementContext): @@ -9206,6 +9620,12 @@ 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) + class TheEmptyStatementContext(Simple_embedded_statementContext): @@ -9224,6 +9644,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTheEmptyStatement" ): listener.exitTheEmptyStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTheEmptyStatement" ): + return visitor.visitTheEmptyStatement(self) + else: + return visitor.visitChildren(self) + class UnsafeStatementContext(Simple_embedded_statementContext): @@ -9245,6 +9671,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUnsafeStatement" ): listener.exitUnsafeStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUnsafeStatement" ): + return visitor.visitUnsafeStatement(self) + else: + return visitor.visitChildren(self) + class ForStatementContext(Simple_embedded_statementContext): @@ -9284,6 +9716,12 @@ 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) + class BreakStatementContext(Simple_embedded_statementContext): @@ -9304,6 +9742,12 @@ 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) + class IfStatementContext(Simple_embedded_statementContext): @@ -9337,6 +9781,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIfStatement" ): listener.exitIfStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIfStatement" ): + return visitor.visitIfStatement(self) + else: + return visitor.visitChildren(self) + class ReturnStatementContext(Simple_embedded_statementContext): @@ -9360,6 +9810,12 @@ 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) + class GotoStatementContext(Simple_embedded_statementContext): @@ -9390,6 +9846,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGotoStatement" ): listener.exitGotoStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGotoStatement" ): + return visitor.visitGotoStatement(self) + else: + return visitor.visitChildren(self) + class SwitchStatementContext(Simple_embedded_statementContext): @@ -9425,6 +9887,12 @@ 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) + class FixedStatementContext(Simple_embedded_statementContext): @@ -9456,6 +9924,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFixedStatement" ): listener.exitFixedStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFixedStatement" ): + return visitor.visitFixedStatement(self) + else: + return visitor.visitChildren(self) + class WhileStatementContext(Simple_embedded_statementContext): @@ -9484,6 +9958,12 @@ 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) + class DoStatementContext(Simple_embedded_statementContext): @@ -9516,6 +9996,12 @@ 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) + class ForeachStatementContext(Simple_embedded_statementContext): @@ -9554,6 +10040,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitForeachStatement" ): listener.exitForeachStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitForeachStatement" ): + return visitor.visitForeachStatement(self) + else: + return visitor.visitChildren(self) + class UncheckedStatementContext(Simple_embedded_statementContext): @@ -9575,6 +10067,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUncheckedStatement" ): listener.exitUncheckedStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUncheckedStatement" ): + return visitor.visitUncheckedStatement(self) + else: + return visitor.visitChildren(self) + class ExpressionStatementContext(Simple_embedded_statementContext): @@ -9596,6 +10094,12 @@ 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) + class ContinueStatementContext(Simple_embedded_statementContext): @@ -9616,6 +10120,12 @@ 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) + class UsingStatementContext(Simple_embedded_statementContext): @@ -9644,6 +10154,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUsingStatement" ): listener.exitUsingStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUsingStatement" ): + return visitor.visitUsingStatement(self) + else: + return visitor.visitChildren(self) + class LockStatementContext(Simple_embedded_statementContext): @@ -9672,6 +10188,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLockStatement" ): listener.exitLockStatement(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLockStatement" ): + return visitor.visitLockStatement(self) + else: + return visitor.visitChildren(self) + class YieldStatementContext(Simple_embedded_statementContext): @@ -9699,53 +10221,59 @@ 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 simple_embedded_statement(self): localctx = CSharpParser.Simple_embedded_statementContext(self, self._ctx, self.state) - self.enterRule(localctx, 168, self.RULE_simple_embedded_statement) + self.enterRule(localctx, 170, self.RULE_simple_embedded_statement) self._la = 0 # Token type try: - self.state = 1411 + self.state = 1420 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,142,self._ctx) + la_ = self._interp.adaptivePredict(self._input,144,self._ctx) if la_ == 1: localctx = CSharpParser.TheEmptyStatementContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 1281 + self.state = 1290 self.match(CSharpParser.SEMICOLON) pass elif la_ == 2: localctx = CSharpParser.ExpressionStatementContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 1282 + self.state = 1291 self.expression() - self.state = 1283 + self.state = 1292 self.match(CSharpParser.SEMICOLON) pass elif la_ == 3: localctx = CSharpParser.IfStatementContext(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 1285 + self.state = 1294 self.match(CSharpParser.IF) - self.state = 1286 + self.state = 1295 self.match(CSharpParser.OPEN_PARENS) - self.state = 1287 + self.state = 1296 self.expression() - self.state = 1288 + self.state = 1297 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1289 + self.state = 1298 self.if_body() - self.state = 1292 + self.state = 1301 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,130,self._ctx) + la_ = self._interp.adaptivePredict(self._input,132,self._ctx) if la_ == 1: - self.state = 1290 + self.state = 1299 self.match(CSharpParser.ELSE) - self.state = 1291 + self.state = 1300 self.if_body() @@ -9754,239 +10282,239 @@ def simple_embedded_statement(self): elif la_ == 4: localctx = CSharpParser.SwitchStatementContext(self, localctx) self.enterOuterAlt(localctx, 4) - self.state = 1294 + self.state = 1303 self.match(CSharpParser.SWITCH) - self.state = 1295 + self.state = 1304 self.match(CSharpParser.OPEN_PARENS) - self.state = 1296 + self.state = 1305 self.expression() - self.state = 1297 + self.state = 1306 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1298 + self.state = 1307 self.match(CSharpParser.OPEN_BRACE) - self.state = 1302 + self.state = 1311 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.CASE or _la==CSharpParser.DEFAULT: - self.state = 1299 + while _la==22 or _la==30: + self.state = 1308 self.switch_section() - self.state = 1304 + self.state = 1313 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1305 + self.state = 1314 self.match(CSharpParser.CLOSE_BRACE) pass elif la_ == 5: localctx = CSharpParser.WhileStatementContext(self, localctx) self.enterOuterAlt(localctx, 5) - self.state = 1307 + self.state = 1316 self.match(CSharpParser.WHILE) - self.state = 1308 + self.state = 1317 self.match(CSharpParser.OPEN_PARENS) - self.state = 1309 + self.state = 1318 self.expression() - self.state = 1310 + self.state = 1319 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1311 + self.state = 1320 self.embedded_statement() pass elif la_ == 6: localctx = CSharpParser.DoStatementContext(self, localctx) self.enterOuterAlt(localctx, 6) - self.state = 1313 + self.state = 1322 self.match(CSharpParser.DO) - self.state = 1314 + self.state = 1323 self.embedded_statement() - self.state = 1315 + self.state = 1324 self.match(CSharpParser.WHILE) - self.state = 1316 + self.state = 1325 self.match(CSharpParser.OPEN_PARENS) - self.state = 1317 + self.state = 1326 self.expression() - self.state = 1318 + self.state = 1327 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1319 + self.state = 1328 self.match(CSharpParser.SEMICOLON) pass elif la_ == 7: localctx = CSharpParser.ForStatementContext(self, localctx) self.enterOuterAlt(localctx, 7) - self.state = 1321 + self.state = 1330 self.match(CSharpParser.FOR) - self.state = 1322 + self.state = 1331 self.match(CSharpParser.OPEN_PARENS) - self.state = 1324 + self.state = 1333 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FIXED) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.USING - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.VOID - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 1323 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437194615990526976) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305516992371296445) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 1332 self.for_initializer() - self.state = 1326 + self.state = 1335 self.match(CSharpParser.SEMICOLON) - self.state = 1328 + self.state = 1337 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 1327 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161996477) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 1336 self.expression() - self.state = 1330 + self.state = 1339 self.match(CSharpParser.SEMICOLON) - self.state = 1332 + self.state = 1341 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 1331 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161996477) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 1340 self.for_iterator() - self.state = 1334 + self.state = 1343 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1335 + self.state = 1344 self.embedded_statement() pass elif la_ == 8: localctx = CSharpParser.ForeachStatementContext(self, localctx) self.enterOuterAlt(localctx, 8) - self.state = 1337 + self.state = 1346 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.AWAIT: - self.state = 1336 + if _la==16: + self.state = 1345 self.match(CSharpParser.AWAIT) - self.state = 1339 + self.state = 1348 self.match(CSharpParser.FOREACH) - self.state = 1340 + self.state = 1349 self.match(CSharpParser.OPEN_PARENS) - self.state = 1341 + self.state = 1350 self.local_variable_type() - self.state = 1342 + self.state = 1351 self.identifier() - self.state = 1343 + self.state = 1352 self.match(CSharpParser.IN) - self.state = 1344 + self.state = 1353 self.expression() - self.state = 1345 + self.state = 1354 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1346 + self.state = 1355 self.embedded_statement() pass elif la_ == 9: localctx = CSharpParser.BreakStatementContext(self, localctx) self.enterOuterAlt(localctx, 9) - self.state = 1348 + self.state = 1357 self.match(CSharpParser.BREAK) - self.state = 1349 + self.state = 1358 self.match(CSharpParser.SEMICOLON) pass elif la_ == 10: localctx = CSharpParser.ContinueStatementContext(self, localctx) self.enterOuterAlt(localctx, 10) - self.state = 1350 + self.state = 1359 self.match(CSharpParser.CONTINUE) - self.state = 1351 + self.state = 1360 self.match(CSharpParser.SEMICOLON) pass elif la_ == 11: localctx = CSharpParser.GotoStatementContext(self, localctx) self.enterOuterAlt(localctx, 11) - self.state = 1352 + self.state = 1361 self.match(CSharpParser.GOTO) - self.state = 1357 + self.state = 1366 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BY, CSharpParser.DESCENDING, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.NAMEOF, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REMOVE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.UNMANAGED, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER]: - self.state = 1353 + if token in [10, 11, 12, 14, 15, 16, 20, 32, 35, 38, 48, 49, 51, 58, 60, 61, 64, 69, 71, 75, 81, 85, 86, 102, 106, 110, 111, 113, 114]: + self.state = 1362 self.identifier() pass - elif token in [CSharpParser.CASE]: - self.state = 1354 + elif token in [22]: + self.state = 1363 self.match(CSharpParser.CASE) - self.state = 1355 + self.state = 1364 self.expression() pass - elif token in [CSharpParser.DEFAULT]: - self.state = 1356 + elif token in [30]: + self.state = 1365 self.match(CSharpParser.DEFAULT) pass else: raise NoViableAltException(self) - self.state = 1359 + self.state = 1368 self.match(CSharpParser.SEMICOLON) pass elif la_ == 12: localctx = CSharpParser.ReturnStatementContext(self, localctx) self.enterOuterAlt(localctx, 12) - self.state = 1360 + self.state = 1369 self.match(CSharpParser.RETURN) - self.state = 1362 + self.state = 1371 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 1361 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161996477) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 1370 self.expression() - self.state = 1364 + self.state = 1373 self.match(CSharpParser.SEMICOLON) pass elif la_ == 13: localctx = CSharpParser.ThrowStatementContext(self, localctx) self.enterOuterAlt(localctx, 13) - self.state = 1365 + self.state = 1374 self.match(CSharpParser.THROW) - self.state = 1367 + self.state = 1376 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 1366 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161996477) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 1375 self.expression() - self.state = 1369 + self.state = 1378 self.match(CSharpParser.SEMICOLON) pass elif la_ == 14: localctx = CSharpParser.TryStatementContext(self, localctx) self.enterOuterAlt(localctx, 14) - self.state = 1370 + self.state = 1379 self.match(CSharpParser.TRY) - self.state = 1371 + self.state = 1380 self.block() - self.state = 1377 + self.state = 1386 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.CATCH]: - self.state = 1372 + if token in [23]: + self.state = 1381 self.catch_clauses() - self.state = 1374 + self.state = 1383 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.FINALLY: - self.state = 1373 + if _la==43: + self.state = 1382 self.finally_clause() pass - elif token in [CSharpParser.FINALLY]: - self.state = 1376 + elif token in [43]: + self.state = 1385 self.finally_clause() pass else: @@ -9997,99 +10525,99 @@ def simple_embedded_statement(self): elif la_ == 15: localctx = CSharpParser.CheckedStatementContext(self, localctx) self.enterOuterAlt(localctx, 15) - self.state = 1379 + self.state = 1388 self.match(CSharpParser.CHECKED) - self.state = 1380 + self.state = 1389 self.block() pass elif la_ == 16: localctx = CSharpParser.UncheckedStatementContext(self, localctx) self.enterOuterAlt(localctx, 16) - self.state = 1381 + self.state = 1390 self.match(CSharpParser.UNCHECKED) - self.state = 1382 + self.state = 1391 self.block() pass elif la_ == 17: localctx = CSharpParser.LockStatementContext(self, localctx) self.enterOuterAlt(localctx, 17) - self.state = 1383 + self.state = 1392 self.match(CSharpParser.LOCK) - self.state = 1384 + self.state = 1393 self.match(CSharpParser.OPEN_PARENS) - self.state = 1385 + self.state = 1394 self.expression() - self.state = 1386 + self.state = 1395 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1387 + self.state = 1396 self.embedded_statement() pass elif la_ == 18: localctx = CSharpParser.UsingStatementContext(self, localctx) self.enterOuterAlt(localctx, 18) - self.state = 1389 + self.state = 1398 self.match(CSharpParser.USING) - self.state = 1390 + self.state = 1399 self.match(CSharpParser.OPEN_PARENS) - self.state = 1391 + self.state = 1400 self.resource_acquisition() - self.state = 1392 + self.state = 1401 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1393 + self.state = 1402 self.embedded_statement() pass elif la_ == 19: localctx = CSharpParser.YieldStatementContext(self, localctx) self.enterOuterAlt(localctx, 19) - self.state = 1395 + self.state = 1404 self.match(CSharpParser.YIELD) - self.state = 1399 + self.state = 1408 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.RETURN]: - self.state = 1396 + if token in [82]: + self.state = 1405 self.match(CSharpParser.RETURN) - self.state = 1397 + self.state = 1406 self.expression() pass - elif token in [CSharpParser.BREAK]: - self.state = 1398 + elif token in [19]: + self.state = 1407 self.match(CSharpParser.BREAK) pass else: raise NoViableAltException(self) - self.state = 1401 + self.state = 1410 self.match(CSharpParser.SEMICOLON) pass elif la_ == 20: localctx = CSharpParser.UnsafeStatementContext(self, localctx) self.enterOuterAlt(localctx, 20) - self.state = 1402 + self.state = 1411 self.match(CSharpParser.UNSAFE) - self.state = 1403 + self.state = 1412 self.block() pass elif la_ == 21: localctx = CSharpParser.FixedStatementContext(self, localctx) self.enterOuterAlt(localctx, 21) - self.state = 1404 + self.state = 1413 self.match(CSharpParser.FIXED) - self.state = 1405 + self.state = 1414 self.match(CSharpParser.OPEN_PARENS) - self.state = 1406 + self.state = 1415 self.pointer_type() - self.state = 1407 + self.state = 1416 self.fixed_pointer_declarators() - self.state = 1408 + self.state = 1417 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1409 + self.state = 1418 self.embedded_statement() pass @@ -10104,6 +10632,7 @@ def simple_embedded_statement(self): class BlockContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10130,27 +10659,33 @@ 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 = CSharpParser.BlockContext(self, self._ctx, self.state) - self.enterRule(localctx, 170, self.RULE_block) + self.enterRule(localctx, 172, self.RULE_block) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1413 + self.state = 1422 self.match(CSharpParser.OPEN_BRACE) - self.state = 1415 + self.state = 1424 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BREAK) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.CONST) | (1 << CSharpParser.CONTINUE) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DO) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FIXED) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FOR) | (1 << CSharpParser.FOREACH) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GOTO) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IF) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LOCK) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.RETURN - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STATIC - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.SWITCH - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.THROW - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TRY - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.UNSAFE - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.USING - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.VOID - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.WHILE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_BRACE - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & ((1 << (CSharpParser.SEMICOLON - 133)) | (1 << (CSharpParser.PLUS - 133)) | (1 << (CSharpParser.MINUS - 133)) | (1 << (CSharpParser.STAR - 133)) | (1 << (CSharpParser.AMP - 133)) | (1 << (CSharpParser.CARET - 133)) | (1 << (CSharpParser.BANG - 133)) | (1 << (CSharpParser.TILDE - 133)) | (1 << (CSharpParser.OP_INC - 133)) | (1 << (CSharpParser.OP_DEC - 133)) | (1 << (CSharpParser.OP_RANGE - 133)))) != 0): - self.state = 1414 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -819667982803280896) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4611642037659175101) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153889) != 0): + self.state = 1423 self.statement_list() - self.state = 1417 + self.state = 1426 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -10162,6 +10697,7 @@ def block(self): class Local_variable_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10215,62 +10751,72 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLocal_variable_declaration" ): listener.exitLocal_variable_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLocal_variable_declaration" ): + return visitor.visitLocal_variable_declaration(self) + else: + return visitor.visitChildren(self) + def local_variable_declaration(self): localctx = CSharpParser.Local_variable_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 172, self.RULE_local_variable_declaration) + self.enterRule(localctx, 174, self.RULE_local_variable_declaration) self._la = 0 # Token type try: - self.state = 1438 + self.state = 1449 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.DECIMAL, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.STRING, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.USING, CSharpParser.VAR, CSharpParser.VOID, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.OPEN_PARENS]: + if token in [10, 11, 12, 14, 15, 16, 18, 20, 21, 24, 29, 32, 34, 35, 38, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 68, 69, 71, 75, 80, 81, 83, 85, 86, 87, 91, 99, 100, 102, 104, 105, 106, 108, 110, 111, 113, 114, 129]: self.enterOuterAlt(localctx, 1) - self.state = 1423 + self.state = 1432 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,144,self._ctx) + la_ = self._interp.adaptivePredict(self._input,146,self._ctx) if la_ == 1: - self.state = 1419 + self.state = 1428 self.match(CSharpParser.USING) elif la_ == 2: - self.state = 1420 + self.state = 1429 self.match(CSharpParser.REF) elif la_ == 3: - self.state = 1421 + self.state = 1430 self.match(CSharpParser.REF) - self.state = 1422 + self.state = 1431 self.match(CSharpParser.READONLY) - self.state = 1425 + self.state = 1434 self.local_variable_type() - self.state = 1426 + self.state = 1435 self.local_variable_declarator() - self.state = 1431 + self.state = 1442 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1427 + while _la==132: + self.state = 1436 self.match(CSharpParser.COMMA) - self.state = 1428 + self.state = 1437 self.local_variable_declarator() - self.state = 1433 + self.state = 1438 + if not this.IsLocalVariableDeclaration() : + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, " this.IsLocalVariableDeclaration() ") + self.state = 1444 self._errHandler.sync(self) _la = self._input.LA(1) pass - elif token in [CSharpParser.FIXED]: + elif token in [44]: self.enterOuterAlt(localctx, 2) - self.state = 1434 + self.state = 1445 self.match(CSharpParser.FIXED) - self.state = 1435 + self.state = 1446 self.pointer_type() - self.state = 1436 + self.state = 1447 self.fixed_pointer_declarators() pass else: @@ -10286,6 +10832,7 @@ def local_variable_declaration(self): class Local_variable_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10309,26 +10856,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLocal_variable_type" ): listener.exitLocal_variable_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLocal_variable_type" ): + return visitor.visitLocal_variable_type(self) + else: + return visitor.visitChildren(self) + def local_variable_type(self): localctx = CSharpParser.Local_variable_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 174, self.RULE_local_variable_type) + self.enterRule(localctx, 176, self.RULE_local_variable_type) try: - self.state = 1442 + self.state = 1453 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,147,self._ctx) + la_ = self._interp.adaptivePredict(self._input,149,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1440 + self.state = 1451 self.match(CSharpParser.VAR) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1441 + self.state = 1452 self.type_() pass @@ -10343,6 +10896,7 @@ def local_variable_type(self): class Local_variable_declaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10373,33 +10927,38 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLocal_variable_declarator" ): listener.exitLocal_variable_declarator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLocal_variable_declarator" ): + return visitor.visitLocal_variable_declarator(self) + else: + return visitor.visitChildren(self) + def local_variable_declarator(self): localctx = CSharpParser.Local_variable_declaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 176, self.RULE_local_variable_declarator) - self._la = 0 # Token type + self.enterRule(localctx, 178, self.RULE_local_variable_declarator) try: self.enterOuterAlt(localctx, 1) - self.state = 1444 + self.state = 1455 self.identifier() - self.state = 1450 + self.state = 1461 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CSharpParser.ASSIGNMENT: - self.state = 1445 + la_ = self._interp.adaptivePredict(self._input,151,self._ctx) + if la_ == 1: + self.state = 1456 self.match(CSharpParser.ASSIGNMENT) - self.state = 1447 + self.state = 1458 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,148,self._ctx) + la_ = self._interp.adaptivePredict(self._input,150,self._ctx) if la_ == 1: - self.state = 1446 + self.state = 1457 self.match(CSharpParser.REF) - self.state = 1449 + self.state = 1460 self.local_variable_initializer() @@ -10413,6 +10972,7 @@ def local_variable_declarator(self): class Local_variable_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10441,30 +11001,36 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLocal_variable_initializer" ): listener.exitLocal_variable_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLocal_variable_initializer" ): + return visitor.visitLocal_variable_initializer(self) + else: + return visitor.visitChildren(self) + def local_variable_initializer(self): localctx = CSharpParser.Local_variable_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 178, self.RULE_local_variable_initializer) + self.enterRule(localctx, 180, self.RULE_local_variable_initializer) try: - self.state = 1455 + self.state = 1466 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 83, 85, 86, 87, 88, 91, 94, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 1) - self.state = 1452 + self.state = 1463 self.expression() pass - elif token in [CSharpParser.OPEN_BRACE]: + elif token in [125]: self.enterOuterAlt(localctx, 2) - self.state = 1453 + self.state = 1464 self.array_initializer() pass - elif token in [CSharpParser.STACKALLOC]: + elif token in [89]: self.enterOuterAlt(localctx, 3) - self.state = 1454 + self.state = 1465 self.stackalloc_initializer() pass else: @@ -10480,6 +11046,7 @@ def local_variable_initializer(self): class Local_constant_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10507,20 +11074,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitLocal_constant_declaration" ): listener.exitLocal_constant_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLocal_constant_declaration" ): + return visitor.visitLocal_constant_declaration(self) + else: + return visitor.visitChildren(self) + def local_constant_declaration(self): localctx = CSharpParser.Local_constant_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 180, self.RULE_local_constant_declaration) + self.enterRule(localctx, 182, self.RULE_local_constant_declaration) try: self.enterOuterAlt(localctx, 1) - self.state = 1457 + self.state = 1468 self.match(CSharpParser.CONST) - self.state = 1458 + self.state = 1469 self.type_() - self.state = 1459 + self.state = 1470 self.constant_declarators() except RecognitionException as re: localctx.exception = re @@ -10532,6 +11105,7 @@ def local_constant_declaration(self): class If_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10556,25 +11130,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIf_body" ): listener.exitIf_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIf_body" ): + return visitor.visitIf_body(self) + else: + return visitor.visitChildren(self) + def if_body(self): localctx = CSharpParser.If_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 182, self.RULE_if_body) + self.enterRule(localctx, 184, self.RULE_if_body) try: - self.state = 1463 + self.state = 1474 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE]: + if token in [125]: self.enterOuterAlt(localctx, 1) - self.state = 1461 + self.state = 1472 self.block() pass - elif token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BREAK, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.CONTINUE, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DO, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FIXED, CSharpParser.FLOAT, CSharpParser.FOR, CSharpParser.FOREACH, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GOTO, CSharpParser.GROUP, CSharpParser.IF, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LOCK, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.RETURN, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.SWITCH, CSharpParser.THIS, CSharpParser.THROW, CSharpParser.TRUE, CSharpParser.TRY, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.UNSAFE, CSharpParser.USHORT, CSharpParser.USING, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.WHILE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.SEMICOLON, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + elif token in [10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 24, 25, 28, 29, 30, 31, 32, 33, 34, 35, 38, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 58, 60, 61, 62, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 82, 83, 85, 86, 87, 88, 91, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 134, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 2) - self.state = 1462 + self.state = 1473 self.simple_embedded_statement() pass else: @@ -10590,6 +11170,7 @@ def if_body(self): class Switch_sectionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10617,30 +11198,36 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSwitch_section" ): listener.exitSwitch_section(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSwitch_section" ): + return visitor.visitSwitch_section(self) + else: + return visitor.visitChildren(self) + def switch_section(self): localctx = CSharpParser.Switch_sectionContext(self, self._ctx, self.state) - self.enterRule(localctx, 184, self.RULE_switch_section) + self.enterRule(localctx, 186, self.RULE_switch_section) try: self.enterOuterAlt(localctx, 1) - self.state = 1466 + self.state = 1477 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 1465 + self.state = 1476 self.switch_label() else: raise NoViableAltException(self) - self.state = 1468 + self.state = 1479 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,152,self._ctx) + _alt = self._interp.adaptivePredict(self._input,154,self._ctx) - self.state = 1470 + self.state = 1481 self.statement_list() except RecognitionException as re: localctx.exception = re @@ -10652,6 +11239,7 @@ def switch_section(self): class Switch_labelContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10685,40 +11273,46 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSwitch_label" ): listener.exitSwitch_label(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSwitch_label" ): + return visitor.visitSwitch_label(self) + else: + return visitor.visitChildren(self) + def switch_label(self): localctx = CSharpParser.Switch_labelContext(self, self._ctx, self.state) - self.enterRule(localctx, 186, self.RULE_switch_label) + self.enterRule(localctx, 188, self.RULE_switch_label) self._la = 0 # Token type try: - self.state = 1481 + self.state = 1492 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.CASE]: + if token in [22]: self.enterOuterAlt(localctx, 1) - self.state = 1472 + self.state = 1483 self.match(CSharpParser.CASE) - self.state = 1473 + self.state = 1484 self.expression() - self.state = 1475 + self.state = 1486 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHEN: - self.state = 1474 + if _la==110: + self.state = 1485 self.case_guard() - self.state = 1477 + self.state = 1488 self.match(CSharpParser.COLON) pass - elif token in [CSharpParser.DEFAULT]: + elif token in [30]: self.enterOuterAlt(localctx, 2) - self.state = 1479 + self.state = 1490 self.match(CSharpParser.DEFAULT) - self.state = 1480 + self.state = 1491 self.match(CSharpParser.COLON) pass else: @@ -10734,6 +11328,7 @@ def switch_label(self): class Case_guardContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10757,18 +11352,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCase_guard" ): listener.exitCase_guard(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCase_guard" ): + return visitor.visitCase_guard(self) + else: + return visitor.visitChildren(self) + def case_guard(self): localctx = CSharpParser.Case_guardContext(self, self._ctx, self.state) - self.enterRule(localctx, 188, self.RULE_case_guard) + self.enterRule(localctx, 190, self.RULE_case_guard) try: self.enterOuterAlt(localctx, 1) - self.state = 1483 + self.state = 1494 self.match(CSharpParser.WHEN) - self.state = 1484 + self.state = 1495 self.expression() except RecognitionException as re: localctx.exception = re @@ -10780,6 +11381,7 @@ def case_guard(self): class Statement_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10803,28 +11405,34 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitStatement_list" ): listener.exitStatement_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitStatement_list" ): + return visitor.visitStatement_list(self) + else: + return visitor.visitChildren(self) + def statement_list(self): localctx = CSharpParser.Statement_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 190, self.RULE_statement_list) + self.enterRule(localctx, 192, self.RULE_statement_list) try: self.enterOuterAlt(localctx, 1) - self.state = 1487 + self.state = 1498 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 1486 + self.state = 1497 self.statement() else: raise NoViableAltException(self) - self.state = 1489 + self.state = 1500 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,155,self._ctx) + _alt = self._interp.adaptivePredict(self._input,157,self._ctx) except RecognitionException as re: localctx.exception = re @@ -10836,6 +11444,7 @@ def statement_list(self): class For_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10869,37 +11478,43 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFor_initializer" ): listener.exitFor_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFor_initializer" ): + return visitor.visitFor_initializer(self) + else: + return visitor.visitChildren(self) + def for_initializer(self): localctx = CSharpParser.For_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 192, self.RULE_for_initializer) + self.enterRule(localctx, 194, self.RULE_for_initializer) self._la = 0 # Token type try: - self.state = 1500 + self.state = 1511 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,157,self._ctx) + la_ = self._interp.adaptivePredict(self._input,159,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1491 + self.state = 1502 self.local_variable_declaration() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1492 + self.state = 1503 self.expression() - self.state = 1497 + self.state = 1508 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1493 + while _la==132: + self.state = 1504 self.match(CSharpParser.COMMA) - self.state = 1494 + self.state = 1505 self.expression() - self.state = 1499 + self.state = 1510 self._errHandler.sync(self) _la = self._input.LA(1) @@ -10916,6 +11531,7 @@ def for_initializer(self): class For_iteratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10945,27 +11561,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFor_iterator" ): listener.exitFor_iterator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFor_iterator" ): + return visitor.visitFor_iterator(self) + else: + return visitor.visitChildren(self) + def for_iterator(self): localctx = CSharpParser.For_iteratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 194, self.RULE_for_iterator) + self.enterRule(localctx, 196, self.RULE_for_iterator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1502 + self.state = 1513 self.expression() - self.state = 1507 + self.state = 1518 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1503 + while _la==132: + self.state = 1514 self.match(CSharpParser.COMMA) - self.state = 1504 + self.state = 1515 self.expression() - self.state = 1509 + self.state = 1520 self._errHandler.sync(self) _la = self._input.LA(1) @@ -10979,6 +11601,7 @@ def for_iterator(self): class Catch_clausesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11006,38 +11629,44 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCatch_clauses" ): listener.exitCatch_clauses(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCatch_clauses" ): + return visitor.visitCatch_clauses(self) + else: + return visitor.visitChildren(self) + def catch_clauses(self): localctx = CSharpParser.Catch_clausesContext(self, self._ctx, self.state) - self.enterRule(localctx, 196, self.RULE_catch_clauses) + self.enterRule(localctx, 198, self.RULE_catch_clauses) self._la = 0 # Token type try: - self.state = 1521 + self.state = 1532 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,161,self._ctx) + la_ = self._interp.adaptivePredict(self._input,163,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1510 + self.state = 1521 self.specific_catch_clause() - self.state = 1514 + self.state = 1525 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,159,self._ctx) + _alt = self._interp.adaptivePredict(self._input,161,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 1511 + self.state = 1522 self.specific_catch_clause() - self.state = 1516 + self.state = 1527 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,159,self._ctx) + _alt = self._interp.adaptivePredict(self._input,161,self._ctx) - self.state = 1518 + self.state = 1529 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.CATCH: - self.state = 1517 + if _la==23: + self.state = 1528 self.general_catch_clause() @@ -11045,7 +11674,7 @@ def catch_clauses(self): elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1520 + self.state = 1531 self.general_catch_clause() pass @@ -11060,6 +11689,7 @@ def catch_clauses(self): class Specific_catch_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11101,41 +11731,47 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSpecific_catch_clause" ): listener.exitSpecific_catch_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSpecific_catch_clause" ): + return visitor.visitSpecific_catch_clause(self) + else: + return visitor.visitChildren(self) + def specific_catch_clause(self): localctx = CSharpParser.Specific_catch_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 198, self.RULE_specific_catch_clause) + self.enterRule(localctx, 200, self.RULE_specific_catch_clause) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1523 + self.state = 1534 self.match(CSharpParser.CATCH) - self.state = 1524 + self.state = 1535 self.match(CSharpParser.OPEN_PARENS) - self.state = 1525 + self.state = 1536 self.class_type() - self.state = 1527 + self.state = 1538 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BY) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (CSharpParser.ON - 68)) | (1 << (CSharpParser.ORDERBY - 68)) | (1 << (CSharpParser.PARTIAL - 68)) | (1 << (CSharpParser.REMOVE - 68)) | (1 << (CSharpParser.SELECT - 68)) | (1 << (CSharpParser.SET - 68)) | (1 << (CSharpParser.UNMANAGED - 68)) | (1 << (CSharpParser.VAR - 68)) | (1 << (CSharpParser.WHEN - 68)) | (1 << (CSharpParser.WHERE - 68)) | (1 << (CSharpParser.YIELD - 68)) | (1 << (CSharpParser.IDENTIFIER - 68)))) != 0): - self.state = 1526 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 3750091428249852928) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 1904629023639713) != 0): + self.state = 1537 self.identifier() - self.state = 1529 + self.state = 1540 self.match(CSharpParser.CLOSE_PARENS) - self.state = 1531 + self.state = 1542 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHEN: - self.state = 1530 + if _la==110: + self.state = 1541 self.exception_filter() - self.state = 1533 + self.state = 1544 self.block() except RecognitionException as re: localctx.exception = re @@ -11147,6 +11783,7 @@ def specific_catch_clause(self): class General_catch_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11174,27 +11811,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGeneral_catch_clause" ): listener.exitGeneral_catch_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGeneral_catch_clause" ): + return visitor.visitGeneral_catch_clause(self) + else: + return visitor.visitChildren(self) + def general_catch_clause(self): localctx = CSharpParser.General_catch_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 200, self.RULE_general_catch_clause) + self.enterRule(localctx, 202, self.RULE_general_catch_clause) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1535 + self.state = 1546 self.match(CSharpParser.CATCH) - self.state = 1537 + self.state = 1548 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHEN: - self.state = 1536 + if _la==110: + self.state = 1547 self.exception_filter() - self.state = 1539 + self.state = 1550 self.block() except RecognitionException as re: localctx.exception = re @@ -11206,6 +11849,7 @@ def general_catch_clause(self): class Exception_filterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11235,22 +11879,28 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitException_filter" ): listener.exitException_filter(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitException_filter" ): + return visitor.visitException_filter(self) + else: + return visitor.visitChildren(self) + def exception_filter(self): localctx = CSharpParser.Exception_filterContext(self, self._ctx, self.state) - self.enterRule(localctx, 202, self.RULE_exception_filter) + self.enterRule(localctx, 204, self.RULE_exception_filter) try: self.enterOuterAlt(localctx, 1) - self.state = 1541 + self.state = 1552 self.match(CSharpParser.WHEN) - self.state = 1542 + self.state = 1553 self.match(CSharpParser.OPEN_PARENS) - self.state = 1543 + self.state = 1554 self.expression() - self.state = 1544 + self.state = 1555 self.match(CSharpParser.CLOSE_PARENS) except RecognitionException as re: localctx.exception = re @@ -11262,6 +11912,7 @@ def exception_filter(self): class Finally_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11285,18 +11936,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFinally_clause" ): listener.exitFinally_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFinally_clause" ): + return visitor.visitFinally_clause(self) + else: + return visitor.visitChildren(self) + def finally_clause(self): localctx = CSharpParser.Finally_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 204, self.RULE_finally_clause) + self.enterRule(localctx, 206, self.RULE_finally_clause) try: self.enterOuterAlt(localctx, 1) - self.state = 1546 + self.state = 1557 self.match(CSharpParser.FINALLY) - self.state = 1547 + self.state = 1558 self.block() except RecognitionException as re: localctx.exception = re @@ -11308,6 +11965,7 @@ def finally_clause(self): class Resource_acquisitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11332,26 +11990,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitResource_acquisition" ): listener.exitResource_acquisition(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitResource_acquisition" ): + return visitor.visitResource_acquisition(self) + else: + return visitor.visitChildren(self) + def resource_acquisition(self): localctx = CSharpParser.Resource_acquisitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 206, self.RULE_resource_acquisition) + self.enterRule(localctx, 208, self.RULE_resource_acquisition) try: - self.state = 1551 + self.state = 1562 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,165,self._ctx) + la_ = self._interp.adaptivePredict(self._input,167,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1549 + self.state = 1560 self.local_variable_declaration() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1550 + self.state = 1561 self.expression() pass @@ -11366,6 +12030,7 @@ def resource_acquisition(self): class Namespace_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11397,27 +12062,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNamespace_declaration" ): listener.exitNamespace_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNamespace_declaration" ): + return visitor.visitNamespace_declaration(self) + else: + return visitor.visitChildren(self) + def namespace_declaration(self): localctx = CSharpParser.Namespace_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 208, self.RULE_namespace_declaration) + self.enterRule(localctx, 210, self.RULE_namespace_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1553 + self.state = 1564 self.match(CSharpParser.NAMESPACE) - self.state = 1554 + self.state = 1565 localctx.qi = self.qualified_identifier() - self.state = 1555 + self.state = 1566 self.namespace_body() - self.state = 1557 + self.state = 1568 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.SEMICOLON: - self.state = 1556 + if _la==134: + self.state = 1567 self.match(CSharpParser.SEMICOLON) @@ -11431,6 +12102,7 @@ def namespace_declaration(self): class Qualified_identifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11460,27 +12132,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitQualified_identifier" ): listener.exitQualified_identifier(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitQualified_identifier" ): + return visitor.visitQualified_identifier(self) + else: + return visitor.visitChildren(self) + def qualified_identifier(self): localctx = CSharpParser.Qualified_identifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 210, self.RULE_qualified_identifier) + self.enterRule(localctx, 212, self.RULE_qualified_identifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1559 + self.state = 1570 self.identifier() - self.state = 1564 + self.state = 1575 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.DOT: - self.state = 1560 + while _la==131: + self.state = 1571 self.match(CSharpParser.DOT) - self.state = 1561 + self.state = 1572 self.identifier() - self.state = 1566 + self.state = 1577 self._errHandler.sync(self) _la = self._input.LA(1) @@ -11494,6 +12172,7 @@ def qualified_identifier(self): class Namespace_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11528,43 +12207,49 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNamespace_body" ): listener.exitNamespace_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNamespace_body" ): + return visitor.visitNamespace_body(self) + else: + return visitor.visitChildren(self) + def namespace_body(self): localctx = CSharpParser.Namespace_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 212, self.RULE_namespace_body) + self.enterRule(localctx, 214, self.RULE_namespace_body) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1567 + self.state = 1578 self.match(CSharpParser.OPEN_BRACE) - self.state = 1569 + self.state = 1580 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,168,self._ctx) + la_ = self._interp.adaptivePredict(self._input,170,self._ctx) if la_ == 1: - self.state = 1568 + self.state = 1579 self.extern_alias_directives() - self.state = 1572 + self.state = 1583 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.USING: - self.state = 1571 + if _la==105: + self.state = 1582 self.using_directives() - self.state = 1575 + self.state = 1586 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ABSTRACT) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.CLASS) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.ENUM) | (1 << CSharpParser.EXTERN) | (1 << CSharpParser.INTERFACE) | (1 << CSharpParser.INTERNAL))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CSharpParser.NAMESPACE - 64)) | (1 << (CSharpParser.NEW - 64)) | (1 << (CSharpParser.OVERRIDE - 64)) | (1 << (CSharpParser.PARTIAL - 64)) | (1 << (CSharpParser.PRIVATE - 64)) | (1 << (CSharpParser.PROTECTED - 64)) | (1 << (CSharpParser.PUBLIC - 64)) | (1 << (CSharpParser.READONLY - 64)) | (1 << (CSharpParser.REF - 64)) | (1 << (CSharpParser.SEALED - 64)) | (1 << (CSharpParser.STATIC - 64)) | (1 << (CSharpParser.STRUCT - 64)) | (1 << (CSharpParser.UNSAFE - 64)) | (1 << (CSharpParser.VIRTUAL - 64)) | (1 << (CSharpParser.VOLATILE - 64)) | (1 << (CSharpParser.OPEN_BRACKET - 64)))) != 0): - self.state = 1574 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216175120790618624) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4611708283706211587) != 0): + self.state = 1585 self.namespace_member_declarations() - self.state = 1577 + self.state = 1588 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -11576,6 +12261,7 @@ def namespace_body(self): class Extern_alias_directivesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11599,28 +12285,34 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExtern_alias_directives" ): listener.exitExtern_alias_directives(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExtern_alias_directives" ): + return visitor.visitExtern_alias_directives(self) + else: + return visitor.visitChildren(self) + def extern_alias_directives(self): localctx = CSharpParser.Extern_alias_directivesContext(self, self._ctx, self.state) - self.enterRule(localctx, 214, self.RULE_extern_alias_directives) + self.enterRule(localctx, 216, self.RULE_extern_alias_directives) try: self.enterOuterAlt(localctx, 1) - self.state = 1580 + self.state = 1591 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 1579 + self.state = 1590 self.extern_alias_directive() else: raise NoViableAltException(self) - self.state = 1582 + self.state = 1593 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,171,self._ctx) + _alt = self._interp.adaptivePredict(self._input,173,self._ctx) except RecognitionException as re: localctx.exception = re @@ -11632,6 +12324,7 @@ def extern_alias_directives(self): class Extern_alias_directiveContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11661,22 +12354,28 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitExtern_alias_directive" ): listener.exitExtern_alias_directive(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExtern_alias_directive" ): + return visitor.visitExtern_alias_directive(self) + else: + return visitor.visitChildren(self) + def extern_alias_directive(self): localctx = CSharpParser.Extern_alias_directiveContext(self, self._ctx, self.state) - self.enterRule(localctx, 216, self.RULE_extern_alias_directive) + self.enterRule(localctx, 218, self.RULE_extern_alias_directive) try: self.enterOuterAlt(localctx, 1) - self.state = 1584 + self.state = 1595 self.match(CSharpParser.EXTERN) - self.state = 1585 + self.state = 1596 self.match(CSharpParser.ALIAS) - self.state = 1586 + self.state = 1597 self.identifier() - self.state = 1587 + self.state = 1598 self.match(CSharpParser.SEMICOLON) except RecognitionException as re: localctx.exception = re @@ -11688,6 +12387,7 @@ def extern_alias_directive(self): class Using_directivesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11711,26 +12411,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUsing_directives" ): listener.exitUsing_directives(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUsing_directives" ): + return visitor.visitUsing_directives(self) + else: + return visitor.visitChildren(self) + def using_directives(self): localctx = CSharpParser.Using_directivesContext(self, self._ctx, self.state) - self.enterRule(localctx, 218, self.RULE_using_directives) + self.enterRule(localctx, 220, self.RULE_using_directives) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1590 + self.state = 1601 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 1589 + self.state = 1600 self.using_directive() - self.state = 1592 + self.state = 1603 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==CSharpParser.USING): + if not (_la==105): break except RecognitionException as re: @@ -11743,6 +12449,7 @@ def using_directives(self): class Using_directiveContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11785,6 +12492,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUsingAliasDirective" ): listener.exitUsingAliasDirective(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUsingAliasDirective" ): + return visitor.visitUsingAliasDirective(self) + else: + return visitor.visitChildren(self) + class UsingNamespaceDirectiveContext(Using_directiveContext): @@ -11808,6 +12521,12 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUsingNamespaceDirective" ): listener.exitUsingNamespaceDirective(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUsingNamespaceDirective" ): + return visitor.visitUsingNamespaceDirective(self) + else: + return visitor.visitChildren(self) + class UsingStaticDirectiveContext(Using_directiveContext): @@ -11833,52 +12552,58 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitUsingStaticDirective" ): listener.exitUsingStaticDirective(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUsingStaticDirective" ): + return visitor.visitUsingStaticDirective(self) + else: + return visitor.visitChildren(self) + def using_directive(self): localctx = CSharpParser.Using_directiveContext(self, self._ctx, self.state) - self.enterRule(localctx, 220, self.RULE_using_directive) + self.enterRule(localctx, 222, self.RULE_using_directive) try: - self.state = 1609 + self.state = 1620 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,173,self._ctx) + la_ = self._interp.adaptivePredict(self._input,175,self._ctx) if la_ == 1: localctx = CSharpParser.UsingAliasDirectiveContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 1594 + self.state = 1605 self.match(CSharpParser.USING) - self.state = 1595 + self.state = 1606 self.identifier() - self.state = 1596 + self.state = 1607 self.match(CSharpParser.ASSIGNMENT) - self.state = 1597 + self.state = 1608 self.namespace_or_type_name() - self.state = 1598 + self.state = 1609 self.match(CSharpParser.SEMICOLON) pass elif la_ == 2: localctx = CSharpParser.UsingNamespaceDirectiveContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 1600 + self.state = 1611 self.match(CSharpParser.USING) - self.state = 1601 + self.state = 1612 self.namespace_or_type_name() - self.state = 1602 + self.state = 1613 self.match(CSharpParser.SEMICOLON) pass elif la_ == 3: localctx = CSharpParser.UsingStaticDirectiveContext(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 1604 + self.state = 1615 self.match(CSharpParser.USING) - self.state = 1605 + self.state = 1616 self.match(CSharpParser.STATIC) - self.state = 1606 + self.state = 1617 self.namespace_or_type_name() - self.state = 1607 + self.state = 1618 self.match(CSharpParser.SEMICOLON) pass @@ -11893,6 +12618,7 @@ def using_directive(self): class Namespace_member_declarationsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11916,26 +12642,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNamespace_member_declarations" ): listener.exitNamespace_member_declarations(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNamespace_member_declarations" ): + return visitor.visitNamespace_member_declarations(self) + else: + return visitor.visitChildren(self) + def namespace_member_declarations(self): localctx = CSharpParser.Namespace_member_declarationsContext(self, self._ctx, self.state) - self.enterRule(localctx, 222, self.RULE_namespace_member_declarations) + self.enterRule(localctx, 224, self.RULE_namespace_member_declarations) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1612 + self.state = 1623 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 1611 + self.state = 1622 self.namespace_member_declaration() - self.state = 1614 + self.state = 1625 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ABSTRACT) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.CLASS) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.ENUM) | (1 << CSharpParser.EXTERN) | (1 << CSharpParser.INTERFACE) | (1 << CSharpParser.INTERNAL))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CSharpParser.NAMESPACE - 64)) | (1 << (CSharpParser.NEW - 64)) | (1 << (CSharpParser.OVERRIDE - 64)) | (1 << (CSharpParser.PARTIAL - 64)) | (1 << (CSharpParser.PRIVATE - 64)) | (1 << (CSharpParser.PROTECTED - 64)) | (1 << (CSharpParser.PUBLIC - 64)) | (1 << (CSharpParser.READONLY - 64)) | (1 << (CSharpParser.REF - 64)) | (1 << (CSharpParser.SEALED - 64)) | (1 << (CSharpParser.STATIC - 64)) | (1 << (CSharpParser.STRUCT - 64)) | (1 << (CSharpParser.UNSAFE - 64)) | (1 << (CSharpParser.VIRTUAL - 64)) | (1 << (CSharpParser.VOLATILE - 64)) | (1 << (CSharpParser.OPEN_BRACKET - 64)))) != 0)): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 216175120790618624) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 4611708283706211587) != 0)): break except RecognitionException as re: @@ -11948,6 +12680,7 @@ def namespace_member_declarations(self): class Namespace_member_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11972,25 +12705,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitNamespace_member_declaration" ): listener.exitNamespace_member_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNamespace_member_declaration" ): + return visitor.visitNamespace_member_declaration(self) + else: + return visitor.visitChildren(self) + def namespace_member_declaration(self): localctx = CSharpParser.Namespace_member_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 224, self.RULE_namespace_member_declaration) + self.enterRule(localctx, 226, self.RULE_namespace_member_declaration) try: - self.state = 1618 + self.state = 1629 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.NAMESPACE]: + if token in [65]: self.enterOuterAlt(localctx, 1) - self.state = 1616 + self.state = 1627 self.namespace_declaration() pass - elif token in [CSharpParser.ABSTRACT, CSharpParser.ASYNC, CSharpParser.CLASS, CSharpParser.DELEGATE, CSharpParser.ENUM, CSharpParser.EXTERN, CSharpParser.INTERFACE, CSharpParser.INTERNAL, CSharpParser.NEW, CSharpParser.OVERRIDE, CSharpParser.PARTIAL, CSharpParser.PRIVATE, CSharpParser.PROTECTED, CSharpParser.PUBLIC, CSharpParser.READONLY, CSharpParser.REF, CSharpParser.SEALED, CSharpParser.STATIC, CSharpParser.STRUCT, CSharpParser.UNSAFE, CSharpParser.VIRTUAL, CSharpParser.VOLATILE, CSharpParser.OPEN_BRACKET]: + elif token in [9, 15, 26, 31, 37, 41, 56, 57, 66, 73, 75, 76, 77, 78, 79, 80, 84, 90, 92, 103, 107, 109, 127]: self.enterOuterAlt(localctx, 2) - self.state = 1617 + self.state = 1628 self.type_declaration() pass else: @@ -12006,6 +12745,7 @@ def namespace_member_declaration(self): class Type_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12050,53 +12790,59 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_declaration" ): listener.exitType_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitType_declaration" ): + return visitor.visitType_declaration(self) + else: + return visitor.visitChildren(self) + def type_declaration(self): localctx = CSharpParser.Type_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 226, self.RULE_type_declaration) + self.enterRule(localctx, 228, self.RULE_type_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1621 + self.state = 1632 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1620 + if _la==127: + self.state = 1631 self.attributes() - self.state = 1624 + self.state = 1635 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,177,self._ctx) + la_ = self._interp.adaptivePredict(self._input,179,self._ctx) if la_ == 1: - self.state = 1623 + self.state = 1634 self.all_member_modifiers() - self.state = 1631 + self.state = 1642 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.CLASS]: - self.state = 1626 + if token in [26]: + self.state = 1637 self.class_definition() pass - elif token in [CSharpParser.READONLY, CSharpParser.REF, CSharpParser.STRUCT]: - self.state = 1627 + elif token in [79, 80, 92]: + self.state = 1638 self.struct_definition() pass - elif token in [CSharpParser.INTERFACE]: - self.state = 1628 + elif token in [56]: + self.state = 1639 self.interface_definition() pass - elif token in [CSharpParser.ENUM]: - self.state = 1629 + elif token in [37]: + self.state = 1640 self.enum_definition() pass - elif token in [CSharpParser.DELEGATE]: - self.state = 1630 + elif token in [31]: + self.state = 1641 self.delegate_definition() pass else: @@ -12112,6 +12858,7 @@ def type_declaration(self): class Qualified_alias_memberContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12142,26 +12889,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitQualified_alias_member" ): listener.exitQualified_alias_member(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitQualified_alias_member" ): + return visitor.visitQualified_alias_member(self) + else: + return visitor.visitChildren(self) + def qualified_alias_member(self): localctx = CSharpParser.Qualified_alias_memberContext(self, self._ctx, self.state) - self.enterRule(localctx, 228, self.RULE_qualified_alias_member) + self.enterRule(localctx, 230, self.RULE_qualified_alias_member) try: self.enterOuterAlt(localctx, 1) - self.state = 1633 + self.state = 1644 self.identifier() - self.state = 1634 + self.state = 1645 self.match(CSharpParser.DOUBLE_COLON) - self.state = 1635 + self.state = 1646 self.identifier() - self.state = 1637 + self.state = 1648 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,179,self._ctx) + la_ = self._interp.adaptivePredict(self._input,181,self._ctx) if la_ == 1: - self.state = 1636 + self.state = 1647 self.type_argument_list() @@ -12175,6 +12928,7 @@ def qualified_alias_member(self): class Type_parameter_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12210,33 +12964,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_parameter_list" ): listener.exitType_parameter_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitType_parameter_list" ): + return visitor.visitType_parameter_list(self) + else: + return visitor.visitChildren(self) + def type_parameter_list(self): localctx = CSharpParser.Type_parameter_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 230, self.RULE_type_parameter_list) + self.enterRule(localctx, 232, self.RULE_type_parameter_list) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1639 + self.state = 1650 self.match(CSharpParser.LT) - self.state = 1640 + self.state = 1651 self.type_parameter() - self.state = 1645 + self.state = 1656 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1641 + while _la==132: + self.state = 1652 self.match(CSharpParser.COMMA) - self.state = 1642 + self.state = 1653 self.type_parameter() - self.state = 1647 + self.state = 1658 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1648 + self.state = 1659 self.match(CSharpParser.GT) except RecognitionException as re: localctx.exception = re @@ -12248,6 +13008,7 @@ def type_parameter_list(self): class Type_parameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12272,25 +13033,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_parameter" ): listener.exitType_parameter(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitType_parameter" ): + return visitor.visitType_parameter(self) + else: + return visitor.visitChildren(self) + def type_parameter(self): localctx = CSharpParser.Type_parameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 232, self.RULE_type_parameter) + self.enterRule(localctx, 234, self.RULE_type_parameter) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1651 + self.state = 1662 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1650 + if _la==127: + self.state = 1661 self.attributes() - self.state = 1653 + self.state = 1664 self.identifier() except RecognitionException as re: localctx.exception = re @@ -12302,6 +13069,7 @@ def type_parameter(self): class Class_baseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12338,29 +13106,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitClass_base" ): listener.exitClass_base(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitClass_base" ): + return visitor.visitClass_base(self) + else: + return visitor.visitChildren(self) + def class_base(self): localctx = CSharpParser.Class_baseContext(self, self._ctx, self.state) - self.enterRule(localctx, 234, self.RULE_class_base) + self.enterRule(localctx, 236, self.RULE_class_base) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1655 + self.state = 1666 self.match(CSharpParser.COLON) - self.state = 1656 + self.state = 1667 self.class_type() - self.state = 1661 + self.state = 1672 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1657 + while _la==132: + self.state = 1668 self.match(CSharpParser.COMMA) - self.state = 1658 + self.state = 1669 self.namespace_or_type_name() - self.state = 1663 + self.state = 1674 self._errHandler.sync(self) _la = self._input.LA(1) @@ -12374,6 +13148,7 @@ def class_base(self): class Interface_type_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12403,27 +13178,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterface_type_list" ): listener.exitInterface_type_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterface_type_list" ): + return visitor.visitInterface_type_list(self) + else: + return visitor.visitChildren(self) + def interface_type_list(self): localctx = CSharpParser.Interface_type_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 236, self.RULE_interface_type_list) + self.enterRule(localctx, 238, self.RULE_interface_type_list) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1664 + self.state = 1675 self.namespace_or_type_name() - self.state = 1669 + self.state = 1680 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1665 + while _la==132: + self.state = 1676 self.match(CSharpParser.COMMA) - self.state = 1666 + self.state = 1677 self.namespace_or_type_name() - self.state = 1671 + self.state = 1682 self._errHandler.sync(self) _la = self._input.LA(1) @@ -12437,6 +13218,7 @@ def interface_type_list(self): class Type_parameter_constraints_clausesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12460,26 +13242,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_parameter_constraints_clauses" ): listener.exitType_parameter_constraints_clauses(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitType_parameter_constraints_clauses" ): + return visitor.visitType_parameter_constraints_clauses(self) + else: + return visitor.visitChildren(self) + def type_parameter_constraints_clauses(self): localctx = CSharpParser.Type_parameter_constraints_clausesContext(self, self._ctx, self.state) - self.enterRule(localctx, 238, self.RULE_type_parameter_constraints_clauses) + self.enterRule(localctx, 240, self.RULE_type_parameter_constraints_clauses) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1673 + self.state = 1684 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 1672 + self.state = 1683 self.type_parameter_constraints_clause() - self.state = 1675 + self.state = 1686 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==CSharpParser.WHERE): + if not (_la==111): break except RecognitionException as re: @@ -12492,6 +13280,7 @@ def type_parameter_constraints_clauses(self): class Type_parameter_constraints_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12522,22 +13311,28 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_parameter_constraints_clause" ): listener.exitType_parameter_constraints_clause(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitType_parameter_constraints_clause" ): + return visitor.visitType_parameter_constraints_clause(self) + else: + return visitor.visitChildren(self) + def type_parameter_constraints_clause(self): localctx = CSharpParser.Type_parameter_constraints_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 240, self.RULE_type_parameter_constraints_clause) + self.enterRule(localctx, 242, self.RULE_type_parameter_constraints_clause) try: self.enterOuterAlt(localctx, 1) - self.state = 1677 + self.state = 1688 self.match(CSharpParser.WHERE) - self.state = 1678 + self.state = 1689 self.identifier() - self.state = 1679 + self.state = 1690 self.match(CSharpParser.COLON) - self.state = 1680 + self.state = 1691 self.type_parameter_constraints() except RecognitionException as re: localctx.exception = re @@ -12549,6 +13344,7 @@ def type_parameter_constraints_clause(self): class Type_parameter_constraintsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12583,44 +13379,50 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitType_parameter_constraints" ): listener.exitType_parameter_constraints(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitType_parameter_constraints" ): + return visitor.visitType_parameter_constraints(self) + else: + return visitor.visitChildren(self) + def type_parameter_constraints(self): localctx = CSharpParser.Type_parameter_constraintsContext(self, self._ctx, self.state) - self.enterRule(localctx, 242, self.RULE_type_parameter_constraints) + self.enterRule(localctx, 244, self.RULE_type_parameter_constraints) self._la = 0 # Token type try: - self.state = 1692 + self.state = 1703 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.NEW]: + if token in [66]: self.enterOuterAlt(localctx, 1) - self.state = 1682 + self.state = 1693 self.constructor_constraint() pass - elif token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BY, CSharpParser.CLASS, CSharpParser.DESCENDING, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.NAMEOF, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REMOVE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.STRING, CSharpParser.STRUCT, CSharpParser.UNMANAGED, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER]: + elif token in [10, 11, 12, 14, 15, 16, 20, 26, 32, 35, 38, 48, 49, 51, 58, 60, 61, 64, 68, 69, 71, 75, 81, 85, 86, 91, 92, 102, 106, 110, 111, 113, 114]: self.enterOuterAlt(localctx, 2) - self.state = 1683 + self.state = 1694 self.primary_constraint() - self.state = 1686 + self.state = 1697 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,185,self._ctx) + la_ = self._interp.adaptivePredict(self._input,187,self._ctx) if la_ == 1: - self.state = 1684 + self.state = 1695 self.match(CSharpParser.COMMA) - self.state = 1685 + self.state = 1696 self.secondary_constraints() - self.state = 1690 + self.state = 1701 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 1688 + if _la==132: + self.state = 1699 self.match(CSharpParser.COMMA) - self.state = 1689 + self.state = 1700 self.constructor_constraint() @@ -12638,6 +13440,7 @@ def type_parameter_constraints(self): class Primary_constraintContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12670,33 +13473,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPrimary_constraint" ): listener.exitPrimary_constraint(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPrimary_constraint" ): + return visitor.visitPrimary_constraint(self) + else: + return visitor.visitChildren(self) + def primary_constraint(self): localctx = CSharpParser.Primary_constraintContext(self, self._ctx, self.state) - self.enterRule(localctx, 244, self.RULE_primary_constraint) + self.enterRule(localctx, 246, self.RULE_primary_constraint) self._la = 0 # Token type try: - self.state = 1701 + self.state = 1712 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,189,self._ctx) + la_ = self._interp.adaptivePredict(self._input,191,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1694 + self.state = 1705 self.class_type() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1695 + self.state = 1706 self.match(CSharpParser.CLASS) - self.state = 1697 + self.state = 1708 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.INTERR: - self.state = 1696 + if _la==148: + self.state = 1707 self.match(CSharpParser.INTERR) @@ -12704,13 +13513,13 @@ def primary_constraint(self): elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1699 + self.state = 1710 self.match(CSharpParser.STRUCT) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1700 + self.state = 1711 self.match(CSharpParser.UNMANAGED) pass @@ -12725,6 +13534,7 @@ def primary_constraint(self): class Secondary_constraintsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12754,29 +13564,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSecondary_constraints" ): listener.exitSecondary_constraints(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSecondary_constraints" ): + return visitor.visitSecondary_constraints(self) + else: + return visitor.visitChildren(self) + def secondary_constraints(self): localctx = CSharpParser.Secondary_constraintsContext(self, self._ctx, self.state) - self.enterRule(localctx, 246, self.RULE_secondary_constraints) + self.enterRule(localctx, 248, self.RULE_secondary_constraints) try: self.enterOuterAlt(localctx, 1) - self.state = 1703 + self.state = 1714 self.namespace_or_type_name() - self.state = 1708 + self.state = 1719 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,190,self._ctx) + _alt = self._interp.adaptivePredict(self._input,192,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 1704 + self.state = 1715 self.match(CSharpParser.COMMA) - self.state = 1705 + self.state = 1716 self.namespace_or_type_name() - self.state = 1710 + self.state = 1721 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,190,self._ctx) + _alt = self._interp.adaptivePredict(self._input,192,self._ctx) except RecognitionException as re: localctx.exception = re @@ -12788,6 +13604,7 @@ def secondary_constraints(self): class Constructor_constraintContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12813,20 +13630,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConstructor_constraint" ): listener.exitConstructor_constraint(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConstructor_constraint" ): + return visitor.visitConstructor_constraint(self) + else: + return visitor.visitChildren(self) + def constructor_constraint(self): localctx = CSharpParser.Constructor_constraintContext(self, self._ctx, self.state) - self.enterRule(localctx, 248, self.RULE_constructor_constraint) + self.enterRule(localctx, 250, self.RULE_constructor_constraint) try: self.enterOuterAlt(localctx, 1) - self.state = 1711 + self.state = 1722 self.match(CSharpParser.NEW) - self.state = 1712 + self.state = 1723 self.match(CSharpParser.OPEN_PARENS) - self.state = 1713 + self.state = 1724 self.match(CSharpParser.CLOSE_PARENS) except RecognitionException as re: localctx.exception = re @@ -12838,6 +13661,7 @@ def constructor_constraint(self): class Class_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12864,27 +13688,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitClass_body" ): listener.exitClass_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitClass_body" ): + return visitor.visitClass_body(self) + else: + return visitor.visitChildren(self) + def class_body(self): localctx = CSharpParser.Class_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 250, self.RULE_class_body) + self.enterRule(localctx, 252, self.RULE_class_body) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1715 + self.state = 1726 self.match(CSharpParser.OPEN_BRACE) - self.state = 1717 + self.state = 1728 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ABSTRACT) | (1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CLASS) | (1 << CSharpParser.CONST) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.ENUM) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.EVENT) | (1 << CSharpParser.EXPLICIT) | (1 << CSharpParser.EXTERN) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IMPLICIT) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTERFACE) | (1 << CSharpParser.INTERNAL) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.OVERRIDE - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.PRIVATE - 65)) | (1 << (CSharpParser.PROTECTED - 65)) | (1 << (CSharpParser.PUBLIC - 65)) | (1 << (CSharpParser.READONLY - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SEALED - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.STATIC - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.STRUCT - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.UNSAFE - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.VIRTUAL - 65)) | (1 << (CSharpParser.VOID - 65)) | (1 << (CSharpParser.VOLATILE - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.OPEN_BRACKET - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or _la==CSharpParser.TILDE: - self.state = 1716 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5212032640031007232) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -9221404082353472843) != 0) or _la==129 or _la==144: + self.state = 1727 self.class_member_declarations() - self.state = 1719 + self.state = 1730 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -12896,6 +13726,7 @@ def class_body(self): class Class_member_declarationsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12919,26 +13750,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitClass_member_declarations" ): listener.exitClass_member_declarations(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitClass_member_declarations" ): + return visitor.visitClass_member_declarations(self) + else: + return visitor.visitChildren(self) + def class_member_declarations(self): localctx = CSharpParser.Class_member_declarationsContext(self, self._ctx, self.state) - self.enterRule(localctx, 252, self.RULE_class_member_declarations) + self.enterRule(localctx, 254, self.RULE_class_member_declarations) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1722 + self.state = 1733 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 1721 + self.state = 1732 self.class_member_declaration() - self.state = 1724 + self.state = 1735 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ABSTRACT) | (1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CLASS) | (1 << CSharpParser.CONST) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.ENUM) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.EVENT) | (1 << CSharpParser.EXPLICIT) | (1 << CSharpParser.EXTERN) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IMPLICIT) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTERFACE) | (1 << CSharpParser.INTERNAL) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.OVERRIDE - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.PRIVATE - 65)) | (1 << (CSharpParser.PROTECTED - 65)) | (1 << (CSharpParser.PUBLIC - 65)) | (1 << (CSharpParser.READONLY - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SEALED - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.STATIC - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.STRUCT - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.UNSAFE - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.VIRTUAL - 65)) | (1 << (CSharpParser.VOID - 65)) | (1 << (CSharpParser.VOLATILE - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.OPEN_BRACKET - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or _la==CSharpParser.TILDE): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & -5212032640031007232) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -9221404082353472843) != 0) or _la==129 or _la==144): break except RecognitionException as re: @@ -12951,6 +13788,7 @@ def class_member_declarations(self): class Class_member_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12983,41 +13821,47 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitClass_member_declaration" ): listener.exitClass_member_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitClass_member_declaration" ): + return visitor.visitClass_member_declaration(self) + else: + return visitor.visitChildren(self) + def class_member_declaration(self): localctx = CSharpParser.Class_member_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 254, self.RULE_class_member_declaration) + self.enterRule(localctx, 256, self.RULE_class_member_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1727 + self.state = 1738 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1726 + if _la==127: + self.state = 1737 self.attributes() - self.state = 1730 + self.state = 1741 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,194,self._ctx) + la_ = self._interp.adaptivePredict(self._input,196,self._ctx) if la_ == 1: - self.state = 1729 + self.state = 1740 self.all_member_modifiers() - self.state = 1734 + self.state = 1745 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CLASS, CSharpParser.CONST, CSharpParser.DECIMAL, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.ENUM, CSharpParser.EQUALS, CSharpParser.EVENT, CSharpParser.EXPLICIT, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.IMPLICIT, CSharpParser.INT, CSharpParser.INTERFACE, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.READONLY, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.STRING, CSharpParser.STRUCT, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.VOID, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.OPEN_PARENS]: - self.state = 1732 + if token in [10, 11, 12, 14, 15, 16, 18, 20, 21, 24, 26, 27, 29, 31, 32, 34, 35, 37, 38, 39, 40, 45, 48, 49, 51, 53, 55, 56, 58, 60, 61, 63, 64, 68, 69, 71, 75, 79, 80, 81, 83, 85, 86, 87, 91, 92, 99, 100, 102, 104, 106, 108, 110, 111, 113, 114, 129]: + self.state = 1743 self.common_member_declaration() pass - elif token in [CSharpParser.TILDE]: - self.state = 1733 + elif token in [144]: + self.state = 1744 self.destructor_definition() pass else: @@ -13033,6 +13877,7 @@ def class_member_declaration(self): class All_member_modifiersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13056,28 +13901,34 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAll_member_modifiers" ): listener.exitAll_member_modifiers(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAll_member_modifiers" ): + return visitor.visitAll_member_modifiers(self) + else: + return visitor.visitChildren(self) + def all_member_modifiers(self): localctx = CSharpParser.All_member_modifiersContext(self, self._ctx, self.state) - self.enterRule(localctx, 256, self.RULE_all_member_modifiers) + self.enterRule(localctx, 258, self.RULE_all_member_modifiers) try: self.enterOuterAlt(localctx, 1) - self.state = 1737 + self.state = 1748 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 1736 + self.state = 1747 self.all_member_modifier() else: raise NoViableAltException(self) - self.state = 1739 + self.state = 1750 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,196,self._ctx) + _alt = self._interp.adaptivePredict(self._input,198,self._ctx) except RecognitionException as re: localctx.exception = re @@ -13089,6 +13940,7 @@ def all_member_modifiers(self): class All_member_modifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13153,19 +14005,25 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAll_member_modifier" ): listener.exitAll_member_modifier(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAll_member_modifier" ): + return visitor.visitAll_member_modifier(self) + else: + return visitor.visitChildren(self) + def all_member_modifier(self): localctx = CSharpParser.All_member_modifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 258, self.RULE_all_member_modifier) + self.enterRule(localctx, 260, self.RULE_all_member_modifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1741 + self.state = 1752 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ABSTRACT) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.EXTERN) | (1 << CSharpParser.INTERNAL))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.OVERRIDE - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.PRIVATE - 65)) | (1 << (CSharpParser.PROTECTED - 65)) | (1 << (CSharpParser.PUBLIC - 65)) | (1 << (CSharpParser.READONLY - 65)) | (1 << (CSharpParser.SEALED - 65)) | (1 << (CSharpParser.STATIC - 65)) | (1 << (CSharpParser.UNSAFE - 65)) | (1 << (CSharpParser.VIRTUAL - 65)) | (1 << (CSharpParser.VOLATILE - 65)))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 144117387099144704) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & 11132572286593) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13180,6 +14038,7 @@ def all_member_modifier(self): class Common_member_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13258,52 +14117,58 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitCommon_member_declaration" ): listener.exitCommon_member_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCommon_member_declaration" ): + return visitor.visitCommon_member_declaration(self) + else: + return visitor.visitChildren(self) + def common_member_declaration(self): localctx = CSharpParser.Common_member_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 260, self.RULE_common_member_declaration) + self.enterRule(localctx, 262, self.RULE_common_member_declaration) try: - self.state = 1762 + self.state = 1773 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,198,self._ctx) + la_ = self._interp.adaptivePredict(self._input,200,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1743 + self.state = 1754 self.constant_declaration() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1744 + self.state = 1755 self.typed_member_declaration() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1745 + self.state = 1756 self.event_declaration() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1746 + self.state = 1757 self.conversion_operator_declarator() - self.state = 1752 + self.state = 1763 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE, CSharpParser.SEMICOLON]: - self.state = 1747 + if token in [125, 134]: + self.state = 1758 self.body() pass - elif token in [CSharpParser.ASSIGNMENT]: - self.state = 1748 + elif token in [145]: + self.state = 1759 self.right_arrow() - self.state = 1749 + self.state = 1760 self.throwable_expression() - self.state = 1750 + self.state = 1761 self.match(CSharpParser.SEMICOLON) pass else: @@ -13313,45 +14178,45 @@ def common_member_declaration(self): elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 1754 + self.state = 1765 self.constructor_declaration() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 1755 + self.state = 1766 self.match(CSharpParser.VOID) - self.state = 1756 + self.state = 1767 self.method_declaration() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 1757 + self.state = 1768 self.class_definition() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 1758 + self.state = 1769 self.struct_definition() pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 1759 + self.state = 1770 self.interface_definition() pass elif la_ == 10: self.enterOuterAlt(localctx, 10) - self.state = 1760 + self.state = 1771 self.enum_definition() pass elif la_ == 11: self.enterOuterAlt(localctx, 11) - self.state = 1761 + self.state = 1772 self.delegate_definition() pass @@ -13366,6 +14231,7 @@ def common_member_declaration(self): class Typed_member_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13419,71 +14285,77 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitTyped_member_declaration" ): listener.exitTyped_member_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTyped_member_declaration" ): + return visitor.visitTyped_member_declaration(self) + else: + return visitor.visitChildren(self) + def typed_member_declaration(self): localctx = CSharpParser.Typed_member_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 262, self.RULE_typed_member_declaration) + self.enterRule(localctx, 264, self.RULE_typed_member_declaration) try: self.enterOuterAlt(localctx, 1) - self.state = 1769 + self.state = 1780 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,199,self._ctx) + la_ = self._interp.adaptivePredict(self._input,201,self._ctx) if la_ == 1: - self.state = 1764 + self.state = 1775 self.match(CSharpParser.REF) elif la_ == 2: - self.state = 1765 + self.state = 1776 self.match(CSharpParser.READONLY) - self.state = 1766 + self.state = 1777 self.match(CSharpParser.REF) elif la_ == 3: - self.state = 1767 + self.state = 1778 self.match(CSharpParser.REF) - self.state = 1768 + self.state = 1779 self.match(CSharpParser.READONLY) - self.state = 1771 + self.state = 1782 self.type_() - self.state = 1781 + self.state = 1792 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,200,self._ctx) + la_ = self._interp.adaptivePredict(self._input,202,self._ctx) if la_ == 1: - self.state = 1772 + self.state = 1783 self.namespace_or_type_name() - self.state = 1773 + self.state = 1784 self.match(CSharpParser.DOT) - self.state = 1774 + self.state = 1785 self.indexer_declaration() pass elif la_ == 2: - self.state = 1776 + self.state = 1787 self.method_declaration() pass elif la_ == 3: - self.state = 1777 + self.state = 1788 self.property_declaration() pass elif la_ == 4: - self.state = 1778 + self.state = 1789 self.indexer_declaration() pass elif la_ == 5: - self.state = 1779 + self.state = 1790 self.operator_declaration() pass elif la_ == 6: - self.state = 1780 + self.state = 1791 self.field_declaration() pass @@ -13498,6 +14370,7 @@ def typed_member_declaration(self): class Constant_declaratorsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13527,27 +14400,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConstant_declarators" ): listener.exitConstant_declarators(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConstant_declarators" ): + return visitor.visitConstant_declarators(self) + else: + return visitor.visitChildren(self) + def constant_declarators(self): localctx = CSharpParser.Constant_declaratorsContext(self, self._ctx, self.state) - self.enterRule(localctx, 264, self.RULE_constant_declarators) + self.enterRule(localctx, 266, self.RULE_constant_declarators) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1783 + self.state = 1794 self.constant_declarator() - self.state = 1788 + self.state = 1799 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1784 + while _la==132: + self.state = 1795 self.match(CSharpParser.COMMA) - self.state = 1785 + self.state = 1796 self.constant_declarator() - self.state = 1790 + self.state = 1801 self._errHandler.sync(self) _la = self._input.LA(1) @@ -13561,6 +14440,7 @@ def constant_declarators(self): class Constant_declaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13588,20 +14468,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConstant_declarator" ): listener.exitConstant_declarator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConstant_declarator" ): + return visitor.visitConstant_declarator(self) + else: + return visitor.visitChildren(self) + def constant_declarator(self): localctx = CSharpParser.Constant_declaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 266, self.RULE_constant_declarator) + self.enterRule(localctx, 268, self.RULE_constant_declarator) try: self.enterOuterAlt(localctx, 1) - self.state = 1791 + self.state = 1802 self.identifier() - self.state = 1792 + self.state = 1803 self.match(CSharpParser.ASSIGNMENT) - self.state = 1793 + self.state = 1804 self.expression() except RecognitionException as re: localctx.exception = re @@ -13613,6 +14499,7 @@ def constant_declarator(self): class Variable_declaratorsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13642,27 +14529,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitVariable_declarators" ): listener.exitVariable_declarators(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitVariable_declarators" ): + return visitor.visitVariable_declarators(self) + else: + return visitor.visitChildren(self) + def variable_declarators(self): localctx = CSharpParser.Variable_declaratorsContext(self, self._ctx, self.state) - self.enterRule(localctx, 268, self.RULE_variable_declarators) + self.enterRule(localctx, 270, self.RULE_variable_declarators) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1795 + self.state = 1806 self.variable_declarator() - self.state = 1800 + self.state = 1811 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 1796 + while _la==132: + self.state = 1807 self.match(CSharpParser.COMMA) - self.state = 1797 + self.state = 1808 self.variable_declarator() - self.state = 1802 + self.state = 1813 self._errHandler.sync(self) _la = self._input.LA(1) @@ -13676,6 +14569,7 @@ def variable_declarators(self): class Variable_declaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13703,25 +14597,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitVariable_declarator" ): listener.exitVariable_declarator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitVariable_declarator" ): + return visitor.visitVariable_declarator(self) + else: + return visitor.visitChildren(self) + def variable_declarator(self): localctx = CSharpParser.Variable_declaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 270, self.RULE_variable_declarator) + self.enterRule(localctx, 272, self.RULE_variable_declarator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1803 + self.state = 1814 self.identifier() - self.state = 1806 + self.state = 1817 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.ASSIGNMENT: - self.state = 1804 + if _la==145: + self.state = 1815 self.match(CSharpParser.ASSIGNMENT) - self.state = 1805 + self.state = 1816 self.variable_initializer() @@ -13735,6 +14635,7 @@ def variable_declarator(self): class Variable_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13759,25 +14660,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitVariable_initializer" ): listener.exitVariable_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitVariable_initializer" ): + return visitor.visitVariable_initializer(self) + else: + return visitor.visitChildren(self) + def variable_initializer(self): localctx = CSharpParser.Variable_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 272, self.RULE_variable_initializer) + self.enterRule(localctx, 274, self.RULE_variable_initializer) try: - self.state = 1810 + self.state = 1821 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 83, 85, 86, 87, 88, 91, 94, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 1) - self.state = 1808 + self.state = 1819 self.expression() pass - elif token in [CSharpParser.OPEN_BRACE]: + elif token in [125]: self.enterOuterAlt(localctx, 2) - self.state = 1809 + self.state = 1820 self.array_initializer() pass else: @@ -13793,6 +14700,7 @@ def variable_initializer(self): class Return_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13816,26 +14724,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitReturn_type" ): listener.exitReturn_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitReturn_type" ): + return visitor.visitReturn_type(self) + else: + return visitor.visitChildren(self) + def return_type(self): localctx = CSharpParser.Return_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 274, self.RULE_return_type) + self.enterRule(localctx, 276, self.RULE_return_type) try: - self.state = 1814 + self.state = 1825 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,205,self._ctx) + la_ = self._interp.adaptivePredict(self._input,207,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1812 + self.state = 1823 self.type_() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1813 + self.state = 1824 self.match(CSharpParser.VOID) pass @@ -13850,6 +14764,7 @@ def return_type(self): class Member_nameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13870,16 +14785,22 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMember_name" ): listener.exitMember_name(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMember_name" ): + return visitor.visitMember_name(self) + else: + return visitor.visitChildren(self) + def member_name(self): localctx = CSharpParser.Member_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 276, self.RULE_member_name) + self.enterRule(localctx, 278, self.RULE_member_name) try: self.enterOuterAlt(localctx, 1) - self.state = 1816 + self.state = 1827 self.namespace_or_type_name() except RecognitionException as re: localctx.exception = re @@ -13891,6 +14812,7 @@ def member_name(self): class Method_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13914,25 +14836,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMethod_body" ): listener.exitMethod_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMethod_body" ): + return visitor.visitMethod_body(self) + else: + return visitor.visitChildren(self) + def method_body(self): localctx = CSharpParser.Method_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 278, self.RULE_method_body) + self.enterRule(localctx, 280, self.RULE_method_body) try: - self.state = 1820 + self.state = 1831 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE]: + if token in [125]: self.enterOuterAlt(localctx, 1) - self.state = 1818 + self.state = 1829 self.block() pass - elif token in [CSharpParser.SEMICOLON]: + elif token in [134]: self.enterOuterAlt(localctx, 2) - self.state = 1819 + self.state = 1830 self.match(CSharpParser.SEMICOLON) pass else: @@ -13948,6 +14876,7 @@ def method_body(self): class Formal_parameter_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13975,35 +14904,41 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFormal_parameter_list" ): listener.exitFormal_parameter_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFormal_parameter_list" ): + return visitor.visitFormal_parameter_list(self) + else: + return visitor.visitChildren(self) + def formal_parameter_list(self): localctx = CSharpParser.Formal_parameter_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 280, self.RULE_formal_parameter_list) + self.enterRule(localctx, 282, self.RULE_formal_parameter_list) self._la = 0 # Token type try: - self.state = 1828 + self.state = 1839 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,208,self._ctx) + la_ = self._interp.adaptivePredict(self._input,210,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1822 + self.state = 1833 self.parameter_array() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1823 + self.state = 1834 self.fixed_parameters() - self.state = 1826 + self.state = 1837 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 1824 + if _la==132: + self.state = 1835 self.match(CSharpParser.COMMA) - self.state = 1825 + self.state = 1836 self.parameter_array() @@ -14020,6 +14955,7 @@ def formal_parameter_list(self): class Fixed_parametersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14049,29 +14985,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFixed_parameters" ): listener.exitFixed_parameters(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFixed_parameters" ): + return visitor.visitFixed_parameters(self) + else: + return visitor.visitChildren(self) + def fixed_parameters(self): localctx = CSharpParser.Fixed_parametersContext(self, self._ctx, self.state) - self.enterRule(localctx, 282, self.RULE_fixed_parameters) + self.enterRule(localctx, 284, self.RULE_fixed_parameters) try: self.enterOuterAlt(localctx, 1) - self.state = 1830 + self.state = 1841 self.fixed_parameter() - self.state = 1835 + self.state = 1846 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,209,self._ctx) + _alt = self._interp.adaptivePredict(self._input,211,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 1831 + self.state = 1842 self.match(CSharpParser.COMMA) - self.state = 1832 + self.state = 1843 self.fixed_parameter() - self.state = 1837 + self.state = 1848 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,209,self._ctx) + _alt = self._interp.adaptivePredict(self._input,211,self._ctx) except RecognitionException as re: localctx.exception = re @@ -14083,6 +15025,7 @@ def fixed_parameters(self): class Fixed_parameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14114,43 +15057,49 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFixed_parameter" ): listener.exitFixed_parameter(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFixed_parameter" ): + return visitor.visitFixed_parameter(self) + else: + return visitor.visitChildren(self) + def fixed_parameter(self): localctx = CSharpParser.Fixed_parameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 284, self.RULE_fixed_parameter) + self.enterRule(localctx, 286, self.RULE_fixed_parameter) self._la = 0 # Token type try: - self.state = 1846 + self.state = 1857 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,212,self._ctx) + la_ = self._interp.adaptivePredict(self._input,214,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1839 + self.state = 1850 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1838 + if _la==127: + self.state = 1849 self.attributes() - self.state = 1842 + self.state = 1853 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 53)) & ~0x3f) == 0 and ((1 << (_la - 53)) & ((1 << (CSharpParser.IN - 53)) | (1 << (CSharpParser.OUT - 53)) | (1 << (CSharpParser.REF - 53)) | (1 << (CSharpParser.THIS - 53)))) != 0): - self.state = 1841 + if ((((_la - 54)) & ~0x3f) == 0 and ((1 << (_la - 54)) & 1099578998785) != 0): + self.state = 1852 self.parameter_modifier() - self.state = 1844 + self.state = 1855 self.arg_declaration() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1845 + self.state = 1856 self.match(CSharpParser.ARGLIST) pass @@ -14165,6 +15114,7 @@ def fixed_parameter(self): class Parameter_modifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14193,54 +15143,60 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitParameter_modifier" ): listener.exitParameter_modifier(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitParameter_modifier" ): + return visitor.visitParameter_modifier(self) + else: + return visitor.visitChildren(self) + def parameter_modifier(self): localctx = CSharpParser.Parameter_modifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 286, self.RULE_parameter_modifier) + self.enterRule(localctx, 288, self.RULE_parameter_modifier) try: - self.state = 1856 + self.state = 1867 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,213,self._ctx) + la_ = self._interp.adaptivePredict(self._input,215,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1848 + self.state = 1859 self.match(CSharpParser.REF) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1849 + self.state = 1860 self.match(CSharpParser.OUT) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1850 + self.state = 1861 self.match(CSharpParser.IN) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1851 + self.state = 1862 self.match(CSharpParser.REF) - self.state = 1852 + self.state = 1863 self.match(CSharpParser.THIS) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 1853 + self.state = 1864 self.match(CSharpParser.IN) - self.state = 1854 + self.state = 1865 self.match(CSharpParser.THIS) pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 1855 + self.state = 1866 self.match(CSharpParser.THIS) pass @@ -14255,6 +15211,7 @@ def parameter_modifier(self): class Parameter_arrayContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14286,29 +15243,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitParameter_array" ): listener.exitParameter_array(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitParameter_array" ): + return visitor.visitParameter_array(self) + else: + return visitor.visitChildren(self) + def parameter_array(self): localctx = CSharpParser.Parameter_arrayContext(self, self._ctx, self.state) - self.enterRule(localctx, 288, self.RULE_parameter_array) + self.enterRule(localctx, 290, self.RULE_parameter_array) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1859 + self.state = 1870 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1858 + if _la==127: + self.state = 1869 self.attributes() - self.state = 1861 + self.state = 1872 self.match(CSharpParser.PARAMS) - self.state = 1862 + self.state = 1873 self.array_type() - self.state = 1863 + self.state = 1874 self.identifier() except RecognitionException as re: localctx.exception = re @@ -14320,6 +15283,7 @@ def parameter_array(self): class Accessor_declarationsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14364,59 +15328,65 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAccessor_declarations" ): listener.exitAccessor_declarations(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAccessor_declarations" ): + return visitor.visitAccessor_declarations(self) + else: + return visitor.visitChildren(self) + def accessor_declarations(self): localctx = CSharpParser.Accessor_declarationsContext(self, self._ctx, self.state) - self.enterRule(localctx, 290, self.RULE_accessor_declarations) + self.enterRule(localctx, 292, self.RULE_accessor_declarations) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1866 + self.state = 1877 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1865 + if _la==127: + self.state = 1876 localctx.attrs = self.attributes() - self.state = 1869 + self.state = 1880 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 56)) & ~0x3f) == 0 and ((1 << (_la - 56)) & ((1 << (CSharpParser.INTERNAL - 56)) | (1 << (CSharpParser.PRIVATE - 56)) | (1 << (CSharpParser.PROTECTED - 56)))) != 0): - self.state = 1868 + if ((((_la - 57)) & ~0x3f) == 0 and ((1 << (_la - 57)) & 1572865) != 0): + self.state = 1879 localctx.mods = self.accessor_modifier() - self.state = 1881 + self.state = 1892 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.GET]: - self.state = 1871 + if token in [49]: + self.state = 1882 self.match(CSharpParser.GET) - self.state = 1872 + self.state = 1883 self.accessor_body() - self.state = 1874 + self.state = 1885 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.INTERNAL or ((((_la - 75)) & ~0x3f) == 0 and ((1 << (_la - 75)) & ((1 << (CSharpParser.PRIVATE - 75)) | (1 << (CSharpParser.PROTECTED - 75)) | (1 << (CSharpParser.SET - 75)) | (1 << (CSharpParser.OPEN_BRACKET - 75)))) != 0): - self.state = 1873 + if _la==57 or ((((_la - 76)) & ~0x3f) == 0 and ((1 << (_la - 76)) & 2251799813686275) != 0): + self.state = 1884 self.set_accessor_declaration() pass - elif token in [CSharpParser.SET]: - self.state = 1876 + elif token in [86]: + self.state = 1887 self.match(CSharpParser.SET) - self.state = 1877 + self.state = 1888 self.accessor_body() - self.state = 1879 + self.state = 1890 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.GET or _la==CSharpParser.INTERNAL or ((((_la - 75)) & ~0x3f) == 0 and ((1 << (_la - 75)) & ((1 << (CSharpParser.PRIVATE - 75)) | (1 << (CSharpParser.PROTECTED - 75)) | (1 << (CSharpParser.OPEN_BRACKET - 75)))) != 0): - self.state = 1878 + if _la==49 or _la==57 or ((((_la - 76)) & ~0x3f) == 0 and ((1 << (_la - 76)) & 2251799813685251) != 0): + self.state = 1889 self.get_accessor_declaration() @@ -14434,6 +15404,7 @@ def accessor_declarations(self): class Get_accessor_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14465,35 +15436,41 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGet_accessor_declaration" ): listener.exitGet_accessor_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGet_accessor_declaration" ): + return visitor.visitGet_accessor_declaration(self) + else: + return visitor.visitChildren(self) + def get_accessor_declaration(self): localctx = CSharpParser.Get_accessor_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 292, self.RULE_get_accessor_declaration) + self.enterRule(localctx, 294, self.RULE_get_accessor_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1884 + self.state = 1895 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1883 + if _la==127: + self.state = 1894 self.attributes() - self.state = 1887 + self.state = 1898 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 56)) & ~0x3f) == 0 and ((1 << (_la - 56)) & ((1 << (CSharpParser.INTERNAL - 56)) | (1 << (CSharpParser.PRIVATE - 56)) | (1 << (CSharpParser.PROTECTED - 56)))) != 0): - self.state = 1886 + if ((((_la - 57)) & ~0x3f) == 0 and ((1 << (_la - 57)) & 1572865) != 0): + self.state = 1897 self.accessor_modifier() - self.state = 1889 + self.state = 1900 self.match(CSharpParser.GET) - self.state = 1890 + self.state = 1901 self.accessor_body() except RecognitionException as re: localctx.exception = re @@ -14505,6 +15482,7 @@ def get_accessor_declaration(self): class Set_accessor_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14536,35 +15514,41 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitSet_accessor_declaration" ): listener.exitSet_accessor_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSet_accessor_declaration" ): + return visitor.visitSet_accessor_declaration(self) + else: + return visitor.visitChildren(self) + def set_accessor_declaration(self): localctx = CSharpParser.Set_accessor_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 294, self.RULE_set_accessor_declaration) + self.enterRule(localctx, 296, self.RULE_set_accessor_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1893 + self.state = 1904 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1892 + if _la==127: + self.state = 1903 self.attributes() - self.state = 1896 + self.state = 1907 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 56)) & ~0x3f) == 0 and ((1 << (_la - 56)) & ((1 << (CSharpParser.INTERNAL - 56)) | (1 << (CSharpParser.PRIVATE - 56)) | (1 << (CSharpParser.PROTECTED - 56)))) != 0): - self.state = 1895 + if ((((_la - 57)) & ~0x3f) == 0 and ((1 << (_la - 57)) & 1572865) != 0): + self.state = 1906 self.accessor_modifier() - self.state = 1898 + self.state = 1909 self.match(CSharpParser.SET) - self.state = 1899 + self.state = 1910 self.accessor_body() except RecognitionException as re: localctx.exception = re @@ -14576,6 +15560,7 @@ def set_accessor_declaration(self): class Accessor_modifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14601,48 +15586,54 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAccessor_modifier" ): listener.exitAccessor_modifier(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAccessor_modifier" ): + return visitor.visitAccessor_modifier(self) + else: + return visitor.visitChildren(self) + def accessor_modifier(self): localctx = CSharpParser.Accessor_modifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 296, self.RULE_accessor_modifier) + self.enterRule(localctx, 298, self.RULE_accessor_modifier) try: - self.state = 1908 + self.state = 1919 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,224,self._ctx) + la_ = self._interp.adaptivePredict(self._input,226,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1901 + self.state = 1912 self.match(CSharpParser.PROTECTED) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1902 + self.state = 1913 self.match(CSharpParser.INTERNAL) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1903 + self.state = 1914 self.match(CSharpParser.PRIVATE) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1904 + self.state = 1915 self.match(CSharpParser.PROTECTED) - self.state = 1905 + self.state = 1916 self.match(CSharpParser.INTERNAL) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 1906 + self.state = 1917 self.match(CSharpParser.INTERNAL) - self.state = 1907 + self.state = 1918 self.match(CSharpParser.PROTECTED) pass @@ -14657,6 +15648,7 @@ def accessor_modifier(self): class Accessor_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14680,25 +15672,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAccessor_body" ): listener.exitAccessor_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAccessor_body" ): + return visitor.visitAccessor_body(self) + else: + return visitor.visitChildren(self) + def accessor_body(self): localctx = CSharpParser.Accessor_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 298, self.RULE_accessor_body) + self.enterRule(localctx, 300, self.RULE_accessor_body) try: - self.state = 1912 + self.state = 1923 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE]: + if token in [125]: self.enterOuterAlt(localctx, 1) - self.state = 1910 + self.state = 1921 self.block() pass - elif token in [CSharpParser.SEMICOLON]: + elif token in [134]: self.enterOuterAlt(localctx, 2) - self.state = 1911 + self.state = 1922 self.match(CSharpParser.SEMICOLON) pass else: @@ -14714,6 +15712,7 @@ def accessor_body(self): class Event_accessor_declarationsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14752,41 +15751,47 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEvent_accessor_declarations" ): listener.exitEvent_accessor_declarations(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEvent_accessor_declarations" ): + return visitor.visitEvent_accessor_declarations(self) + else: + return visitor.visitChildren(self) + def event_accessor_declarations(self): localctx = CSharpParser.Event_accessor_declarationsContext(self, self._ctx, self.state) - self.enterRule(localctx, 300, self.RULE_event_accessor_declarations) + self.enterRule(localctx, 302, self.RULE_event_accessor_declarations) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1915 + self.state = 1926 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1914 + if _la==127: + self.state = 1925 self.attributes() - self.state = 1925 + self.state = 1936 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD]: - self.state = 1917 + if token in [10]: + self.state = 1928 self.match(CSharpParser.ADD) - self.state = 1918 + self.state = 1929 self.block() - self.state = 1919 + self.state = 1930 self.remove_accessor_declaration() pass - elif token in [CSharpParser.REMOVE]: - self.state = 1921 + elif token in [81]: + self.state = 1932 self.match(CSharpParser.REMOVE) - self.state = 1922 + self.state = 1933 self.block() - self.state = 1923 + self.state = 1934 self.add_accessor_declaration() pass else: @@ -14802,6 +15807,7 @@ def event_accessor_declarations(self): class Add_accessor_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14829,27 +15835,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAdd_accessor_declaration" ): listener.exitAdd_accessor_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAdd_accessor_declaration" ): + return visitor.visitAdd_accessor_declaration(self) + else: + return visitor.visitChildren(self) + def add_accessor_declaration(self): localctx = CSharpParser.Add_accessor_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 302, self.RULE_add_accessor_declaration) + self.enterRule(localctx, 304, self.RULE_add_accessor_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1928 + self.state = 1939 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1927 + if _la==127: + self.state = 1938 self.attributes() - self.state = 1930 + self.state = 1941 self.match(CSharpParser.ADD) - self.state = 1931 + self.state = 1942 self.block() except RecognitionException as re: localctx.exception = re @@ -14861,6 +15873,7 @@ def add_accessor_declaration(self): class Remove_accessor_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14888,27 +15901,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitRemove_accessor_declaration" ): listener.exitRemove_accessor_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRemove_accessor_declaration" ): + return visitor.visitRemove_accessor_declaration(self) + else: + return visitor.visitChildren(self) + def remove_accessor_declaration(self): localctx = CSharpParser.Remove_accessor_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 304, self.RULE_remove_accessor_declaration) + self.enterRule(localctx, 306, self.RULE_remove_accessor_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1934 + self.state = 1945 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1933 + if _la==127: + self.state = 1944 self.attributes() - self.state = 1936 + self.state = 1947 self.match(CSharpParser.REMOVE) - self.state = 1937 + self.state = 1948 self.block() except RecognitionException as re: localctx.exception = re @@ -14920,6 +15939,7 @@ def remove_accessor_declaration(self): class Overloadable_operatorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15003,146 +16023,152 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitOverloadable_operator" ): listener.exitOverloadable_operator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitOverloadable_operator" ): + return visitor.visitOverloadable_operator(self) + else: + return visitor.visitChildren(self) + def overloadable_operator(self): localctx = CSharpParser.Overloadable_operatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 306, self.RULE_overloadable_operator) + self.enterRule(localctx, 308, self.RULE_overloadable_operator) try: - self.state = 1961 + self.state = 1972 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,230,self._ctx) + la_ = self._interp.adaptivePredict(self._input,232,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1939 + self.state = 1950 self.match(CSharpParser.PLUS) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1940 + self.state = 1951 self.match(CSharpParser.MINUS) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1941 + self.state = 1952 self.match(CSharpParser.BANG) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1942 + self.state = 1953 self.match(CSharpParser.TILDE) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 1943 + self.state = 1954 self.match(CSharpParser.OP_INC) pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 1944 + self.state = 1955 self.match(CSharpParser.OP_DEC) pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 1945 + self.state = 1956 self.match(CSharpParser.TRUE) pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 1946 + self.state = 1957 self.match(CSharpParser.FALSE) pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 1947 + self.state = 1958 self.match(CSharpParser.STAR) pass elif la_ == 10: self.enterOuterAlt(localctx, 10) - self.state = 1948 + self.state = 1959 self.match(CSharpParser.DIV) pass elif la_ == 11: self.enterOuterAlt(localctx, 11) - self.state = 1949 + self.state = 1960 self.match(CSharpParser.PERCENT) pass elif la_ == 12: self.enterOuterAlt(localctx, 12) - self.state = 1950 + self.state = 1961 self.match(CSharpParser.AMP) pass elif la_ == 13: self.enterOuterAlt(localctx, 13) - self.state = 1951 + self.state = 1962 self.match(CSharpParser.BITWISE_OR) pass elif la_ == 14: self.enterOuterAlt(localctx, 14) - self.state = 1952 + self.state = 1963 self.match(CSharpParser.CARET) pass elif la_ == 15: self.enterOuterAlt(localctx, 15) - self.state = 1953 + self.state = 1964 self.match(CSharpParser.OP_LEFT_SHIFT) pass elif la_ == 16: self.enterOuterAlt(localctx, 16) - self.state = 1954 + self.state = 1965 self.right_shift() pass elif la_ == 17: self.enterOuterAlt(localctx, 17) - self.state = 1955 + self.state = 1966 self.match(CSharpParser.OP_EQ) pass elif la_ == 18: self.enterOuterAlt(localctx, 18) - self.state = 1956 + self.state = 1967 self.match(CSharpParser.OP_NE) pass elif la_ == 19: self.enterOuterAlt(localctx, 19) - self.state = 1957 + self.state = 1968 self.match(CSharpParser.GT) pass elif la_ == 20: self.enterOuterAlt(localctx, 20) - self.state = 1958 + self.state = 1969 self.match(CSharpParser.LT) pass elif la_ == 21: self.enterOuterAlt(localctx, 21) - self.state = 1959 + self.state = 1970 self.match(CSharpParser.OP_GE) pass elif la_ == 22: self.enterOuterAlt(localctx, 22) - self.state = 1960 + self.state = 1971 self.match(CSharpParser.OP_LE) pass @@ -15157,6 +16183,7 @@ def overloadable_operator(self): class Conversion_operator_declaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15196,32 +16223,38 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConversion_operator_declarator" ): listener.exitConversion_operator_declarator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConversion_operator_declarator" ): + return visitor.visitConversion_operator_declarator(self) + else: + return visitor.visitChildren(self) + def conversion_operator_declarator(self): localctx = CSharpParser.Conversion_operator_declaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 308, self.RULE_conversion_operator_declarator) + self.enterRule(localctx, 310, self.RULE_conversion_operator_declarator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1963 + self.state = 1974 _la = self._input.LA(1) - if not(_la==CSharpParser.EXPLICIT or _la==CSharpParser.IMPLICIT): + if not(_la==40 or _la==53): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 1964 + self.state = 1975 self.match(CSharpParser.OPERATOR) - self.state = 1965 + self.state = 1976 self.type_() - self.state = 1966 + self.state = 1977 self.match(CSharpParser.OPEN_PARENS) - self.state = 1967 + self.state = 1978 self.arg_declaration() - self.state = 1968 + self.state = 1979 self.match(CSharpParser.CLOSE_PARENS) except RecognitionException as re: localctx.exception = re @@ -15233,6 +16266,7 @@ def conversion_operator_declarator(self): class Constructor_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15268,36 +16302,42 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConstructor_initializer" ): listener.exitConstructor_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConstructor_initializer" ): + return visitor.visitConstructor_initializer(self) + else: + return visitor.visitChildren(self) + def constructor_initializer(self): localctx = CSharpParser.Constructor_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 310, self.RULE_constructor_initializer) + self.enterRule(localctx, 312, self.RULE_constructor_initializer) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1970 + self.state = 1981 self.match(CSharpParser.COLON) - self.state = 1971 + self.state = 1982 _la = self._input.LA(1) - if not(_la==CSharpParser.BASE or _la==CSharpParser.THIS): + if not(_la==17 or _la==94): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 1972 + self.state = 1983 self.match(CSharpParser.OPEN_PARENS) - self.state = 1974 + self.state = 1985 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.OUT - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 1973 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5419197809667089408) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305514793348041149) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 1984 self.argument_list() - self.state = 1976 + self.state = 1987 self.match(CSharpParser.CLOSE_PARENS) except RecognitionException as re: localctx.exception = re @@ -15309,6 +16349,7 @@ def constructor_initializer(self): class BodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15332,25 +16373,31 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitBody" ): listener.exitBody(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitBody" ): + return visitor.visitBody(self) + else: + return visitor.visitChildren(self) + def body(self): localctx = CSharpParser.BodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 312, self.RULE_body) + self.enterRule(localctx, 314, self.RULE_body) try: - self.state = 1980 + self.state = 1991 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE]: + if token in [125]: self.enterOuterAlt(localctx, 1) - self.state = 1978 + self.state = 1989 self.block() pass - elif token in [CSharpParser.SEMICOLON]: + elif token in [134]: self.enterOuterAlt(localctx, 2) - self.state = 1979 + self.state = 1990 self.match(CSharpParser.SEMICOLON) pass else: @@ -15366,6 +16413,7 @@ def body(self): class Struct_interfacesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15389,18 +16437,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitStruct_interfaces" ): listener.exitStruct_interfaces(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitStruct_interfaces" ): + return visitor.visitStruct_interfaces(self) + else: + return visitor.visitChildren(self) + def struct_interfaces(self): localctx = CSharpParser.Struct_interfacesContext(self, self._ctx, self.state) - self.enterRule(localctx, 314, self.RULE_struct_interfaces) + self.enterRule(localctx, 316, self.RULE_struct_interfaces) try: self.enterOuterAlt(localctx, 1) - self.state = 1982 + self.state = 1993 self.match(CSharpParser.COLON) - self.state = 1983 + self.state = 1994 self.interface_type_list() except RecognitionException as re: localctx.exception = re @@ -15412,6 +16466,7 @@ def struct_interfaces(self): class Struct_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15441,29 +16496,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitStruct_body" ): listener.exitStruct_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitStruct_body" ): + return visitor.visitStruct_body(self) + else: + return visitor.visitChildren(self) + def struct_body(self): localctx = CSharpParser.Struct_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 316, self.RULE_struct_body) + self.enterRule(localctx, 318, self.RULE_struct_body) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1985 + self.state = 1996 self.match(CSharpParser.OPEN_BRACE) - self.state = 1989 + self.state = 2000 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ABSTRACT) | (1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CLASS) | (1 << CSharpParser.CONST) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.ENUM) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.EVENT) | (1 << CSharpParser.EXPLICIT) | (1 << CSharpParser.EXTERN) | (1 << CSharpParser.FIXED) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IMPLICIT) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTERFACE) | (1 << CSharpParser.INTERNAL) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.OVERRIDE - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.PRIVATE - 65)) | (1 << (CSharpParser.PROTECTED - 65)) | (1 << (CSharpParser.PUBLIC - 65)) | (1 << (CSharpParser.READONLY - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SEALED - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.STATIC - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.STRUCT - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.UNSAFE - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.VIRTUAL - 65)) | (1 << (CSharpParser.VOID - 65)) | (1 << (CSharpParser.VOLATILE - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.OPEN_BRACKET - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0): - self.state = 1986 + while ((((_la - 9)) & ~0x3f) == 0 and ((1 << (_la - 9)) & 6547061340561119983) != 0) or ((((_la - 73)) & ~0x3f) == 0 and ((1 << (_la - 73)) & 90075836208545277) != 0): + self.state = 1997 self.struct_member_declaration() - self.state = 1991 + self.state = 2002 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1992 + self.state = 2003 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -15475,6 +16536,7 @@ def struct_body(self): class Struct_member_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15520,57 +16582,63 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitStruct_member_declaration" ): listener.exitStruct_member_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitStruct_member_declaration" ): + return visitor.visitStruct_member_declaration(self) + else: + return visitor.visitChildren(self) + def struct_member_declaration(self): localctx = CSharpParser.Struct_member_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 318, self.RULE_struct_member_declaration) + self.enterRule(localctx, 320, self.RULE_struct_member_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1995 + self.state = 2006 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 1994 + if _la==127: + self.state = 2005 self.attributes() - self.state = 1998 + self.state = 2009 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,235,self._ctx) + la_ = self._interp.adaptivePredict(self._input,237,self._ctx) if la_ == 1: - self.state = 1997 + self.state = 2008 self.all_member_modifiers() - self.state = 2010 + self.state = 2021 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CLASS, CSharpParser.CONST, CSharpParser.DECIMAL, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.ENUM, CSharpParser.EQUALS, CSharpParser.EVENT, CSharpParser.EXPLICIT, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.IMPLICIT, CSharpParser.INT, CSharpParser.INTERFACE, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.READONLY, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.STRING, CSharpParser.STRUCT, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.VOID, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.OPEN_PARENS]: - self.state = 2000 + if token in [10, 11, 12, 14, 15, 16, 18, 20, 21, 24, 26, 27, 29, 31, 32, 34, 35, 37, 38, 39, 40, 45, 48, 49, 51, 53, 55, 56, 58, 60, 61, 63, 64, 68, 69, 71, 75, 79, 80, 81, 83, 85, 86, 87, 91, 92, 99, 100, 102, 104, 106, 108, 110, 111, 113, 114, 129]: + self.state = 2011 self.common_member_declaration() pass - elif token in [CSharpParser.FIXED]: - self.state = 2001 + elif token in [44]: + self.state = 2012 self.match(CSharpParser.FIXED) - self.state = 2002 + self.state = 2013 self.type_() - self.state = 2004 + self.state = 2015 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 2003 + self.state = 2014 self.fixed_size_buffer_declarator() - self.state = 2006 + self.state = 2017 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BY) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (CSharpParser.ON - 68)) | (1 << (CSharpParser.ORDERBY - 68)) | (1 << (CSharpParser.PARTIAL - 68)) | (1 << (CSharpParser.REMOVE - 68)) | (1 << (CSharpParser.SELECT - 68)) | (1 << (CSharpParser.SET - 68)) | (1 << (CSharpParser.UNMANAGED - 68)) | (1 << (CSharpParser.VAR - 68)) | (1 << (CSharpParser.WHEN - 68)) | (1 << (CSharpParser.WHERE - 68)) | (1 << (CSharpParser.YIELD - 68)) | (1 << (CSharpParser.IDENTIFIER - 68)))) != 0)): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 3750091428249852928) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 1904629023639713) != 0)): break - self.state = 2008 + self.state = 2019 self.match(CSharpParser.SEMICOLON) pass else: @@ -15586,6 +16654,7 @@ def struct_member_declaration(self): class Array_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15625,43 +16694,49 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitArray_type" ): listener.exitArray_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitArray_type" ): + return visitor.visitArray_type(self) + else: + return visitor.visitChildren(self) + def array_type(self): localctx = CSharpParser.Array_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 320, self.RULE_array_type) + self.enterRule(localctx, 322, self.RULE_array_type) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2012 + self.state = 2023 self.base_type() - self.state = 2020 + self.state = 2031 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 2016 + self.state = 2027 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.STAR or _la==CSharpParser.INTERR: - self.state = 2013 + while _la==137 or _la==148: + self.state = 2024 _la = self._input.LA(1) - if not(_la==CSharpParser.STAR or _la==CSharpParser.INTERR): + if not(_la==137 or _la==148): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 2018 + self.state = 2029 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 2019 + self.state = 2030 self.rank_specifier() - self.state = 2022 + self.state = 2033 self._errHandler.sync(self) _la = self._input.LA(1) - if not (((((_la - 126)) & ~0x3f) == 0 and ((1 << (_la - 126)) & ((1 << (CSharpParser.OPEN_BRACKET - 126)) | (1 << (CSharpParser.STAR - 126)) | (1 << (CSharpParser.INTERR - 126)))) != 0)): + if not (((((_la - 127)) & ~0x3f) == 0 and ((1 << (_la - 127)) & 2098177) != 0)): break except RecognitionException as re: @@ -15674,6 +16749,7 @@ def array_type(self): class Rank_specifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15702,29 +16778,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitRank_specifier" ): listener.exitRank_specifier(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRank_specifier" ): + return visitor.visitRank_specifier(self) + else: + return visitor.visitChildren(self) + def rank_specifier(self): localctx = CSharpParser.Rank_specifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 322, self.RULE_rank_specifier) + self.enterRule(localctx, 324, self.RULE_rank_specifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2024 + self.state = 2035 self.match(CSharpParser.OPEN_BRACKET) - self.state = 2028 + self.state = 2039 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 2025 + while _la==132: + self.state = 2036 self.match(CSharpParser.COMMA) - self.state = 2030 + self.state = 2041 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 2031 + self.state = 2042 self.match(CSharpParser.CLOSE_BRACKET) except RecognitionException as re: localctx.exception = re @@ -15736,6 +16818,7 @@ def rank_specifier(self): class Array_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15771,48 +16854,54 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitArray_initializer" ): listener.exitArray_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitArray_initializer" ): + return visitor.visitArray_initializer(self) + else: + return visitor.visitChildren(self) + def array_initializer(self): localctx = CSharpParser.Array_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 324, self.RULE_array_initializer) + self.enterRule(localctx, 326, self.RULE_array_initializer) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2033 + self.state = 2044 self.match(CSharpParser.OPEN_BRACE) - self.state = 2045 + self.state = 2056 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_BRACE - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 2034 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4611340210375690429) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 2045 self.variable_initializer() - self.state = 2039 + self.state = 2050 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,241,self._ctx) + _alt = self._interp.adaptivePredict(self._input,243,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 2035 + self.state = 2046 self.match(CSharpParser.COMMA) - self.state = 2036 + self.state = 2047 self.variable_initializer() - self.state = 2041 + self.state = 2052 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,241,self._ctx) + _alt = self._interp.adaptivePredict(self._input,243,self._ctx) - self.state = 2043 + self.state = 2054 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 2042 + if _la==132: + self.state = 2053 self.match(CSharpParser.COMMA) - self.state = 2047 + self.state = 2058 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -15824,6 +16913,7 @@ def array_initializer(self): class Variant_type_parameter_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15859,33 +16949,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitVariant_type_parameter_list" ): listener.exitVariant_type_parameter_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitVariant_type_parameter_list" ): + return visitor.visitVariant_type_parameter_list(self) + else: + return visitor.visitChildren(self) + def variant_type_parameter_list(self): localctx = CSharpParser.Variant_type_parameter_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 326, self.RULE_variant_type_parameter_list) + self.enterRule(localctx, 328, self.RULE_variant_type_parameter_list) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2049 + self.state = 2060 self.match(CSharpParser.LT) - self.state = 2050 + self.state = 2061 self.variant_type_parameter() - self.state = 2055 + self.state = 2066 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 2051 + while _la==132: + self.state = 2062 self.match(CSharpParser.COMMA) - self.state = 2052 + self.state = 2063 self.variant_type_parameter() - self.state = 2057 + self.state = 2068 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 2058 + self.state = 2069 self.match(CSharpParser.GT) except RecognitionException as re: localctx.exception = re @@ -15897,6 +16993,7 @@ def variant_type_parameter_list(self): class Variant_type_parameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15925,33 +17022,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitVariant_type_parameter" ): listener.exitVariant_type_parameter(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitVariant_type_parameter" ): + return visitor.visitVariant_type_parameter(self) + else: + return visitor.visitChildren(self) + def variant_type_parameter(self): localctx = CSharpParser.Variant_type_parameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 328, self.RULE_variant_type_parameter) + self.enterRule(localctx, 330, self.RULE_variant_type_parameter) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2061 + self.state = 2072 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 2060 + if _la==127: + self.state = 2071 self.attributes() - self.state = 2064 + self.state = 2075 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.IN or _la==CSharpParser.OUT: - self.state = 2063 + if _la==54 or _la==72: + self.state = 2074 self.variance_annotation() - self.state = 2066 + self.state = 2077 self.identifier() except RecognitionException as re: localctx.exception = re @@ -15963,6 +17066,7 @@ def variant_type_parameter(self): class Variance_annotationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15985,19 +17089,25 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitVariance_annotation" ): listener.exitVariance_annotation(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitVariance_annotation" ): + return visitor.visitVariance_annotation(self) + else: + return visitor.visitChildren(self) + def variance_annotation(self): localctx = CSharpParser.Variance_annotationContext(self, self._ctx, self.state) - self.enterRule(localctx, 330, self.RULE_variance_annotation) + self.enterRule(localctx, 332, self.RULE_variance_annotation) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2068 + self.state = 2079 _la = self._input.LA(1) - if not(_la==CSharpParser.IN or _la==CSharpParser.OUT): + if not(_la==54 or _la==72): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -16012,6 +17122,7 @@ def variance_annotation(self): class Interface_baseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16035,18 +17146,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterface_base" ): listener.exitInterface_base(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterface_base" ): + return visitor.visitInterface_base(self) + else: + return visitor.visitChildren(self) + def interface_base(self): localctx = CSharpParser.Interface_baseContext(self, self._ctx, self.state) - self.enterRule(localctx, 332, self.RULE_interface_base) + self.enterRule(localctx, 334, self.RULE_interface_base) try: self.enterOuterAlt(localctx, 1) - self.state = 2070 + self.state = 2081 self.match(CSharpParser.COLON) - self.state = 2071 + self.state = 2082 self.interface_type_list() except RecognitionException as re: localctx.exception = re @@ -16058,6 +17175,7 @@ def interface_base(self): class Interface_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16087,29 +17205,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterface_body" ): listener.exitInterface_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterface_body" ): + return visitor.visitInterface_body(self) + else: + return visitor.visitChildren(self) + def interface_body(self): localctx = CSharpParser.Interface_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 334, self.RULE_interface_body) + self.enterRule(localctx, 336, self.RULE_interface_body) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2073 + self.state = 2084 self.match(CSharpParser.OPEN_BRACE) - self.state = 2077 + self.state = 2088 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.EVENT) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.READONLY - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.UNSAFE - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.VOID - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.OPEN_BRACKET - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0): - self.state = 2074 + while ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 3273310747417398647) != 0) or ((((_la - 75)) & ~0x3f) == 0 and ((1 << (_la - 75)) & 22518937577135473) != 0): + self.state = 2085 self.interface_member_declaration() - self.state = 2079 + self.state = 2090 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 2080 + self.state = 2091 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -16121,6 +17245,7 @@ def interface_body(self): class Interface_member_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16207,129 +17332,135 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterface_member_declaration" ): listener.exitInterface_member_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterface_member_declaration" ): + return visitor.visitInterface_member_declaration(self) + else: + return visitor.visitChildren(self) + def interface_member_declaration(self): localctx = CSharpParser.Interface_member_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 336, self.RULE_interface_member_declaration) + self.enterRule(localctx, 338, self.RULE_interface_member_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2083 + self.state = 2094 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 2082 + if _la==127: + self.state = 2093 self.attributes() - self.state = 2086 + self.state = 2097 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.NEW: - self.state = 2085 + if _la==66: + self.state = 2096 self.match(CSharpParser.NEW) - self.state = 2151 + self.state = 2162 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,260,self._ctx) + la_ = self._interp.adaptivePredict(self._input,262,self._ctx) if la_ == 1: - self.state = 2089 + self.state = 2100 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.UNSAFE: - self.state = 2088 + if _la==103: + self.state = 2099 self.match(CSharpParser.UNSAFE) - self.state = 2096 + self.state = 2107 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,251,self._ctx) + la_ = self._interp.adaptivePredict(self._input,253,self._ctx) if la_ == 1: - self.state = 2091 + self.state = 2102 self.match(CSharpParser.REF) elif la_ == 2: - self.state = 2092 + self.state = 2103 self.match(CSharpParser.REF) - self.state = 2093 + self.state = 2104 self.match(CSharpParser.READONLY) elif la_ == 3: - self.state = 2094 + self.state = 2105 self.match(CSharpParser.READONLY) - self.state = 2095 + self.state = 2106 self.match(CSharpParser.REF) - self.state = 2098 + self.state = 2109 self.type_() - self.state = 2126 + self.state = 2137 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,255,self._ctx) + la_ = self._interp.adaptivePredict(self._input,257,self._ctx) if la_ == 1: - self.state = 2099 + self.state = 2110 self.identifier() - self.state = 2101 + self.state = 2112 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 2100 + if _la==146: + self.state = 2111 self.type_parameter_list() - self.state = 2103 + self.state = 2114 self.match(CSharpParser.OPEN_PARENS) - self.state = 2105 + self.state = 2116 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (CSharpParser.OBJECT - 67)) | (1 << (CSharpParser.ON - 67)) | (1 << (CSharpParser.ORDERBY - 67)) | (1 << (CSharpParser.OUT - 67)) | (1 << (CSharpParser.PARAMS - 67)) | (1 << (CSharpParser.PARTIAL - 67)) | (1 << (CSharpParser.REF - 67)) | (1 << (CSharpParser.REMOVE - 67)) | (1 << (CSharpParser.SBYTE - 67)) | (1 << (CSharpParser.SELECT - 67)) | (1 << (CSharpParser.SET - 67)) | (1 << (CSharpParser.SHORT - 67)) | (1 << (CSharpParser.STRING - 67)) | (1 << (CSharpParser.THIS - 67)) | (1 << (CSharpParser.UINT - 67)) | (1 << (CSharpParser.ULONG - 67)) | (1 << (CSharpParser.UNMANAGED - 67)) | (1 << (CSharpParser.USHORT - 67)) | (1 << (CSharpParser.VAR - 67)) | (1 << (CSharpParser.VOID - 67)) | (1 << (CSharpParser.WHEN - 67)) | (1 << (CSharpParser.WHERE - 67)) | (1 << (CSharpParser.YIELD - 67)) | (1 << (CSharpParser.IDENTIFIER - 67)) | (1 << (CSharpParser.OPEN_BRACKET - 67)) | (1 << (CSharpParser.OPEN_PARENS - 67)))) != 0): - self.state = 2104 + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 7812956763456032119) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 45037874618448579) != 0): + self.state = 2115 self.formal_parameter_list() - self.state = 2107 + self.state = 2118 self.match(CSharpParser.CLOSE_PARENS) - self.state = 2109 + self.state = 2120 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHERE: - self.state = 2108 + if _la==111: + self.state = 2119 self.type_parameter_constraints_clauses() - self.state = 2111 + self.state = 2122 self.match(CSharpParser.SEMICOLON) pass elif la_ == 2: - self.state = 2113 + self.state = 2124 self.identifier() - self.state = 2114 + self.state = 2125 self.match(CSharpParser.OPEN_BRACE) - self.state = 2115 + self.state = 2126 self.interface_accessors() - self.state = 2116 + self.state = 2127 self.match(CSharpParser.CLOSE_BRACE) pass elif la_ == 3: - self.state = 2118 + self.state = 2129 self.match(CSharpParser.THIS) - self.state = 2119 + self.state = 2130 self.match(CSharpParser.OPEN_BRACKET) - self.state = 2120 + self.state = 2131 self.formal_parameter_list() - self.state = 2121 + self.state = 2132 self.match(CSharpParser.CLOSE_BRACKET) - self.state = 2122 + self.state = 2133 self.match(CSharpParser.OPEN_BRACE) - self.state = 2123 + self.state = 2134 self.interface_accessors() - self.state = 2124 + self.state = 2135 self.match(CSharpParser.CLOSE_BRACE) pass @@ -16337,58 +17468,58 @@ def interface_member_declaration(self): pass elif la_ == 2: - self.state = 2129 + self.state = 2140 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.UNSAFE: - self.state = 2128 + if _la==103: + self.state = 2139 self.match(CSharpParser.UNSAFE) - self.state = 2131 + self.state = 2142 self.match(CSharpParser.VOID) - self.state = 2132 + self.state = 2143 self.identifier() - self.state = 2134 + self.state = 2145 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 2133 + if _la==146: + self.state = 2144 self.type_parameter_list() - self.state = 2136 + self.state = 2147 self.match(CSharpParser.OPEN_PARENS) - self.state = 2138 + self.state = 2149 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (CSharpParser.OBJECT - 67)) | (1 << (CSharpParser.ON - 67)) | (1 << (CSharpParser.ORDERBY - 67)) | (1 << (CSharpParser.OUT - 67)) | (1 << (CSharpParser.PARAMS - 67)) | (1 << (CSharpParser.PARTIAL - 67)) | (1 << (CSharpParser.REF - 67)) | (1 << (CSharpParser.REMOVE - 67)) | (1 << (CSharpParser.SBYTE - 67)) | (1 << (CSharpParser.SELECT - 67)) | (1 << (CSharpParser.SET - 67)) | (1 << (CSharpParser.SHORT - 67)) | (1 << (CSharpParser.STRING - 67)) | (1 << (CSharpParser.THIS - 67)) | (1 << (CSharpParser.UINT - 67)) | (1 << (CSharpParser.ULONG - 67)) | (1 << (CSharpParser.UNMANAGED - 67)) | (1 << (CSharpParser.USHORT - 67)) | (1 << (CSharpParser.VAR - 67)) | (1 << (CSharpParser.VOID - 67)) | (1 << (CSharpParser.WHEN - 67)) | (1 << (CSharpParser.WHERE - 67)) | (1 << (CSharpParser.YIELD - 67)) | (1 << (CSharpParser.IDENTIFIER - 67)) | (1 << (CSharpParser.OPEN_BRACKET - 67)) | (1 << (CSharpParser.OPEN_PARENS - 67)))) != 0): - self.state = 2137 + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 7812956763456032119) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 45037874618448579) != 0): + self.state = 2148 self.formal_parameter_list() - self.state = 2140 + self.state = 2151 self.match(CSharpParser.CLOSE_PARENS) - self.state = 2142 + self.state = 2153 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHERE: - self.state = 2141 + if _la==111: + self.state = 2152 self.type_parameter_constraints_clauses() - self.state = 2144 + self.state = 2155 self.match(CSharpParser.SEMICOLON) pass elif la_ == 3: - self.state = 2146 + self.state = 2157 self.match(CSharpParser.EVENT) - self.state = 2147 + self.state = 2158 self.type_() - self.state = 2148 + self.state = 2159 self.identifier() - self.state = 2149 + self.state = 2160 self.match(CSharpParser.SEMICOLON) pass @@ -16403,6 +17534,7 @@ def interface_member_declaration(self): class Interface_accessorsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16438,71 +17570,77 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterface_accessors" ): listener.exitInterface_accessors(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterface_accessors" ): + return visitor.visitInterface_accessors(self) + else: + return visitor.visitChildren(self) + def interface_accessors(self): localctx = CSharpParser.Interface_accessorsContext(self, self._ctx, self.state) - self.enterRule(localctx, 338, self.RULE_interface_accessors) + self.enterRule(localctx, 340, self.RULE_interface_accessors) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2154 + self.state = 2165 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 2153 + if _la==127: + self.state = 2164 self.attributes() - self.state = 2174 + self.state = 2185 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.GET]: - self.state = 2156 + if token in [49]: + self.state = 2167 self.match(CSharpParser.GET) - self.state = 2157 + self.state = 2168 self.match(CSharpParser.SEMICOLON) - self.state = 2163 + self.state = 2174 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.SET or _la==CSharpParser.OPEN_BRACKET: - self.state = 2159 + if _la==86 or _la==127: + self.state = 2170 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 2158 + if _la==127: + self.state = 2169 self.attributes() - self.state = 2161 + self.state = 2172 self.match(CSharpParser.SET) - self.state = 2162 + self.state = 2173 self.match(CSharpParser.SEMICOLON) pass - elif token in [CSharpParser.SET]: - self.state = 2165 + elif token in [86]: + self.state = 2176 self.match(CSharpParser.SET) - self.state = 2166 + self.state = 2177 self.match(CSharpParser.SEMICOLON) - self.state = 2172 + self.state = 2183 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.GET or _la==CSharpParser.OPEN_BRACKET: - self.state = 2168 + if _la==49 or _la==127: + self.state = 2179 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 2167 + if _la==127: + self.state = 2178 self.attributes() - self.state = 2170 + self.state = 2181 self.match(CSharpParser.GET) - self.state = 2171 + self.state = 2182 self.match(CSharpParser.SEMICOLON) @@ -16520,6 +17658,7 @@ def interface_accessors(self): class Enum_baseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16543,18 +17682,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEnum_base" ): listener.exitEnum_base(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEnum_base" ): + return visitor.visitEnum_base(self) + else: + return visitor.visitChildren(self) + def enum_base(self): localctx = CSharpParser.Enum_baseContext(self, self._ctx, self.state) - self.enterRule(localctx, 340, self.RULE_enum_base) + self.enterRule(localctx, 342, self.RULE_enum_base) try: self.enterOuterAlt(localctx, 1) - self.state = 2176 + self.state = 2187 self.match(CSharpParser.COLON) - self.state = 2177 + self.state = 2188 self.type_() except RecognitionException as re: localctx.exception = re @@ -16566,6 +17711,7 @@ def enum_base(self): class Enum_bodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16601,48 +17747,54 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEnum_body" ): listener.exitEnum_body(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEnum_body" ): + return visitor.visitEnum_body(self) + else: + return visitor.visitChildren(self) + def enum_body(self): localctx = CSharpParser.Enum_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 342, self.RULE_enum_body) + self.enterRule(localctx, 344, self.RULE_enum_body) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2179 + self.state = 2190 self.match(CSharpParser.OPEN_BRACE) - self.state = 2191 + self.state = 2202 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BY) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (CSharpParser.ON - 68)) | (1 << (CSharpParser.ORDERBY - 68)) | (1 << (CSharpParser.PARTIAL - 68)) | (1 << (CSharpParser.REMOVE - 68)) | (1 << (CSharpParser.SELECT - 68)) | (1 << (CSharpParser.SET - 68)) | (1 << (CSharpParser.UNMANAGED - 68)) | (1 << (CSharpParser.VAR - 68)) | (1 << (CSharpParser.WHEN - 68)) | (1 << (CSharpParser.WHERE - 68)) | (1 << (CSharpParser.YIELD - 68)) | (1 << (CSharpParser.IDENTIFIER - 68)) | (1 << (CSharpParser.OPEN_BRACKET - 68)))) != 0): - self.state = 2180 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 3750091428249852928) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -9221467407831136095) != 0): + self.state = 2191 self.enum_member_declaration() - self.state = 2185 + self.state = 2196 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,267,self._ctx) + _alt = self._interp.adaptivePredict(self._input,269,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 2181 + self.state = 2192 self.match(CSharpParser.COMMA) - self.state = 2182 + self.state = 2193 self.enum_member_declaration() - self.state = 2187 + self.state = 2198 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,267,self._ctx) + _alt = self._interp.adaptivePredict(self._input,269,self._ctx) - self.state = 2189 + self.state = 2200 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 2188 + if _la==132: + self.state = 2199 self.match(CSharpParser.COMMA) - self.state = 2193 + self.state = 2204 self.match(CSharpParser.CLOSE_BRACE) except RecognitionException as re: localctx.exception = re @@ -16654,6 +17806,7 @@ def enum_body(self): class Enum_member_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16685,33 +17838,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEnum_member_declaration" ): listener.exitEnum_member_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEnum_member_declaration" ): + return visitor.visitEnum_member_declaration(self) + else: + return visitor.visitChildren(self) + def enum_member_declaration(self): localctx = CSharpParser.Enum_member_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 344, self.RULE_enum_member_declaration) + self.enterRule(localctx, 346, self.RULE_enum_member_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2196 + self.state = 2207 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACKET: - self.state = 2195 + if _la==127: + self.state = 2206 self.attributes() - self.state = 2198 + self.state = 2209 self.identifier() - self.state = 2201 + self.state = 2212 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.ASSIGNMENT: - self.state = 2199 + if _la==145: + self.state = 2210 self.match(CSharpParser.ASSIGNMENT) - self.state = 2200 + self.state = 2211 self.expression() @@ -16725,6 +17884,7 @@ def enum_member_declaration(self): class Global_attribute_sectionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16761,33 +17921,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGlobal_attribute_section" ): listener.exitGlobal_attribute_section(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGlobal_attribute_section" ): + return visitor.visitGlobal_attribute_section(self) + else: + return visitor.visitChildren(self) + def global_attribute_section(self): localctx = CSharpParser.Global_attribute_sectionContext(self, self._ctx, self.state) - self.enterRule(localctx, 346, self.RULE_global_attribute_section) + self.enterRule(localctx, 348, self.RULE_global_attribute_section) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2203 + self.state = 2214 self.match(CSharpParser.OPEN_BRACKET) - self.state = 2204 + self.state = 2215 self.global_attribute_target() - self.state = 2205 + self.state = 2216 self.match(CSharpParser.COLON) - self.state = 2206 + self.state = 2217 self.attribute_list() - self.state = 2208 + self.state = 2219 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 2207 + if _la==132: + self.state = 2218 self.match(CSharpParser.COMMA) - self.state = 2210 + self.state = 2221 self.match(CSharpParser.CLOSE_BRACKET) except RecognitionException as re: localctx.exception = re @@ -16799,6 +17965,7 @@ def global_attribute_section(self): class Global_attribute_targetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16823,26 +17990,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitGlobal_attribute_target" ): listener.exitGlobal_attribute_target(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGlobal_attribute_target" ): + return visitor.visitGlobal_attribute_target(self) + else: + return visitor.visitChildren(self) + def global_attribute_target(self): localctx = CSharpParser.Global_attribute_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 348, self.RULE_global_attribute_target) + self.enterRule(localctx, 350, self.RULE_global_attribute_target) try: - self.state = 2214 + self.state = 2225 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,273,self._ctx) + la_ = self._interp.adaptivePredict(self._input,275,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 2212 + self.state = 2223 self.keyword() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 2213 + self.state = 2224 self.identifier() pass @@ -16857,6 +18030,7 @@ def global_attribute_target(self): class AttributesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16880,26 +18054,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAttributes" ): listener.exitAttributes(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAttributes" ): + return visitor.visitAttributes(self) + else: + return visitor.visitChildren(self) + def attributes(self): localctx = CSharpParser.AttributesContext(self, self._ctx, self.state) - self.enterRule(localctx, 350, self.RULE_attributes) + self.enterRule(localctx, 352, self.RULE_attributes) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2217 + self.state = 2228 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 2216 + self.state = 2227 self.attribute_section() - self.state = 2219 + self.state = 2230 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==CSharpParser.OPEN_BRACKET): + if not (_la==127): break except RecognitionException as re: @@ -16912,6 +18092,7 @@ def attributes(self): class Attribute_sectionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16948,39 +18129,45 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAttribute_section" ): listener.exitAttribute_section(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAttribute_section" ): + return visitor.visitAttribute_section(self) + else: + return visitor.visitChildren(self) + def attribute_section(self): localctx = CSharpParser.Attribute_sectionContext(self, self._ctx, self.state) - self.enterRule(localctx, 352, self.RULE_attribute_section) + self.enterRule(localctx, 354, self.RULE_attribute_section) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2221 + self.state = 2232 self.match(CSharpParser.OPEN_BRACKET) - self.state = 2225 + self.state = 2236 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,275,self._ctx) + la_ = self._interp.adaptivePredict(self._input,277,self._ctx) if la_ == 1: - self.state = 2222 + self.state = 2233 self.attribute_target() - self.state = 2223 + self.state = 2234 self.match(CSharpParser.COLON) - self.state = 2227 + self.state = 2238 self.attribute_list() - self.state = 2229 + self.state = 2240 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 2228 + if _la==132: + self.state = 2239 self.match(CSharpParser.COMMA) - self.state = 2231 + self.state = 2242 self.match(CSharpParser.CLOSE_BRACKET) except RecognitionException as re: localctx.exception = re @@ -16992,6 +18179,7 @@ def attribute_section(self): class Attribute_targetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17016,26 +18204,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAttribute_target" ): listener.exitAttribute_target(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAttribute_target" ): + return visitor.visitAttribute_target(self) + else: + return visitor.visitChildren(self) + def attribute_target(self): localctx = CSharpParser.Attribute_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 354, self.RULE_attribute_target) + self.enterRule(localctx, 356, self.RULE_attribute_target) try: - self.state = 2235 + self.state = 2246 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,277,self._ctx) + la_ = self._interp.adaptivePredict(self._input,279,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 2233 + self.state = 2244 self.keyword() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 2234 + self.state = 2245 self.identifier() pass @@ -17050,6 +18244,7 @@ def attribute_target(self): class Attribute_listContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17079,29 +18274,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAttribute_list" ): listener.exitAttribute_list(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAttribute_list" ): + return visitor.visitAttribute_list(self) + else: + return visitor.visitChildren(self) + def attribute_list(self): localctx = CSharpParser.Attribute_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 356, self.RULE_attribute_list) + self.enterRule(localctx, 358, self.RULE_attribute_list) try: self.enterOuterAlt(localctx, 1) - self.state = 2237 + self.state = 2248 self.attribute() - self.state = 2242 + self.state = 2253 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,278,self._ctx) + _alt = self._interp.adaptivePredict(self._input,280,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 2238 + self.state = 2249 self.match(CSharpParser.COMMA) - self.state = 2239 + self.state = 2250 self.attribute() - self.state = 2244 + self.state = 2255 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,278,self._ctx) + _alt = self._interp.adaptivePredict(self._input,280,self._ctx) except RecognitionException as re: localctx.exception = re @@ -17113,6 +18314,7 @@ def attribute_list(self): class AttributeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17152,45 +18354,51 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAttribute" ): listener.exitAttribute(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAttribute" ): + return visitor.visitAttribute(self) + else: + return visitor.visitChildren(self) + def attribute(self): localctx = CSharpParser.AttributeContext(self, self._ctx, self.state) - self.enterRule(localctx, 358, self.RULE_attribute) + self.enterRule(localctx, 360, self.RULE_attribute) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2245 + self.state = 2256 self.namespace_or_type_name() - self.state = 2258 + self.state = 2269 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.OPEN_PARENS: - self.state = 2246 + if _la==129: + self.state = 2257 self.match(CSharpParser.OPEN_PARENS) - self.state = 2255 + self.state = 2266 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 2247 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161996477) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 2258 self.attribute_argument() - self.state = 2252 + self.state = 2263 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 2248 + while _la==132: + self.state = 2259 self.match(CSharpParser.COMMA) - self.state = 2249 + self.state = 2260 self.attribute_argument() - self.state = 2254 + self.state = 2265 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 2257 + self.state = 2268 self.match(CSharpParser.CLOSE_PARENS) @@ -17204,6 +18412,7 @@ def attribute(self): class Attribute_argumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17231,26 +18440,32 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitAttribute_argument" ): listener.exitAttribute_argument(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAttribute_argument" ): + return visitor.visitAttribute_argument(self) + else: + return visitor.visitChildren(self) + def attribute_argument(self): localctx = CSharpParser.Attribute_argumentContext(self, self._ctx, self.state) - self.enterRule(localctx, 360, self.RULE_attribute_argument) + self.enterRule(localctx, 362, self.RULE_attribute_argument) try: self.enterOuterAlt(localctx, 1) - self.state = 2263 + self.state = 2274 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,282,self._ctx) + la_ = self._interp.adaptivePredict(self._input,284,self._ctx) if la_ == 1: - self.state = 2260 + self.state = 2271 self.identifier() - self.state = 2261 + self.state = 2272 self.match(CSharpParser.COLON) - self.state = 2265 + self.state = 2276 self.expression() except RecognitionException as re: localctx.exception = re @@ -17262,6 +18477,7 @@ def attribute_argument(self): class Pointer_typeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17305,64 +18521,70 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitPointer_type" ): listener.exitPointer_type(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPointer_type" ): + return visitor.visitPointer_type(self) + else: + return visitor.visitChildren(self) + def pointer_type(self): localctx = CSharpParser.Pointer_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 362, self.RULE_pointer_type) + self.enterRule(localctx, 364, self.RULE_pointer_type) self._la = 0 # Token type try: - self.state = 2282 + self.state = 2293 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.DECIMAL, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.STRING, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER]: + if token in [10, 11, 12, 14, 15, 16, 18, 20, 21, 24, 29, 32, 34, 35, 38, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 68, 69, 71, 75, 81, 83, 85, 86, 87, 91, 99, 100, 102, 104, 106, 110, 111, 113, 114]: self.enterOuterAlt(localctx, 1) - self.state = 2269 + self.state = 2280 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.BOOL, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.DECIMAL, CSharpParser.DOUBLE, CSharpParser.FLOAT, CSharpParser.INT, CSharpParser.LONG, CSharpParser.SBYTE, CSharpParser.SHORT, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.USHORT]: - self.state = 2267 + if token in [18, 21, 24, 29, 34, 45, 55, 63, 83, 87, 99, 100, 104]: + self.state = 2278 self.simple_type() pass - elif token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BY, CSharpParser.DESCENDING, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.NAMEOF, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REMOVE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.STRING, CSharpParser.UNMANAGED, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER]: - self.state = 2268 + elif token in [10, 11, 12, 14, 15, 16, 20, 32, 35, 38, 48, 49, 51, 58, 60, 61, 64, 68, 69, 71, 75, 81, 85, 86, 91, 102, 106, 110, 111, 113, 114]: + self.state = 2279 self.class_type() pass else: raise NoViableAltException(self) - self.state = 2275 + self.state = 2286 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.OPEN_BRACKET or _la==CSharpParser.INTERR: - self.state = 2273 + while _la==127 or _la==148: + self.state = 2284 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACKET]: - self.state = 2271 + if token in [127]: + self.state = 2282 self.rank_specifier() pass - elif token in [CSharpParser.INTERR]: - self.state = 2272 + elif token in [148]: + self.state = 2283 self.match(CSharpParser.INTERR) pass else: raise NoViableAltException(self) - self.state = 2277 + self.state = 2288 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 2278 + self.state = 2289 self.match(CSharpParser.STAR) pass - elif token in [CSharpParser.VOID]: + elif token in [108]: self.enterOuterAlt(localctx, 2) - self.state = 2280 + self.state = 2291 self.match(CSharpParser.VOID) - self.state = 2281 + self.state = 2292 self.match(CSharpParser.STAR) pass else: @@ -17378,6 +18600,7 @@ def pointer_type(self): class Fixed_pointer_declaratorsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17407,27 +18630,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFixed_pointer_declarators" ): listener.exitFixed_pointer_declarators(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFixed_pointer_declarators" ): + return visitor.visitFixed_pointer_declarators(self) + else: + return visitor.visitChildren(self) + def fixed_pointer_declarators(self): localctx = CSharpParser.Fixed_pointer_declaratorsContext(self, self._ctx, self.state) - self.enterRule(localctx, 364, self.RULE_fixed_pointer_declarators) + self.enterRule(localctx, 366, self.RULE_fixed_pointer_declarators) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2284 + self.state = 2295 self.fixed_pointer_declarator() - self.state = 2289 + self.state = 2300 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 2285 + while _la==132: + self.state = 2296 self.match(CSharpParser.COMMA) - self.state = 2286 + self.state = 2297 self.fixed_pointer_declarator() - self.state = 2291 + self.state = 2302 self._errHandler.sync(self) _la = self._input.LA(1) @@ -17441,6 +18670,7 @@ def fixed_pointer_declarators(self): class Fixed_pointer_declaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17468,20 +18698,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFixed_pointer_declarator" ): listener.exitFixed_pointer_declarator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFixed_pointer_declarator" ): + return visitor.visitFixed_pointer_declarator(self) + else: + return visitor.visitChildren(self) + def fixed_pointer_declarator(self): localctx = CSharpParser.Fixed_pointer_declaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 366, self.RULE_fixed_pointer_declarator) + self.enterRule(localctx, 368, self.RULE_fixed_pointer_declarator) try: self.enterOuterAlt(localctx, 1) - self.state = 2292 + self.state = 2303 self.identifier() - self.state = 2293 + self.state = 2304 self.match(CSharpParser.ASSIGNMENT) - self.state = 2294 + self.state = 2305 self.fixed_pointer_initializer() except RecognitionException as re: localctx.exception = re @@ -17493,6 +18729,7 @@ def fixed_pointer_declarator(self): class Fixed_pointer_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17520,33 +18757,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFixed_pointer_initializer" ): listener.exitFixed_pointer_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFixed_pointer_initializer" ): + return visitor.visitFixed_pointer_initializer(self) + else: + return visitor.visitChildren(self) + def fixed_pointer_initializer(self): localctx = CSharpParser.Fixed_pointer_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 368, self.RULE_fixed_pointer_initializer) + self.enterRule(localctx, 370, self.RULE_fixed_pointer_initializer) try: - self.state = 2301 + self.state = 2312 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 83, 85, 86, 87, 88, 91, 94, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 1) - self.state = 2297 + self.state = 2308 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,288,self._ctx) + la_ = self._interp.adaptivePredict(self._input,290,self._ctx) if la_ == 1: - self.state = 2296 + self.state = 2307 self.match(CSharpParser.AMP) - self.state = 2299 + self.state = 2310 self.expression() pass - elif token in [CSharpParser.STACKALLOC]: + elif token in [89]: self.enterOuterAlt(localctx, 2) - self.state = 2300 + self.state = 2311 self.stackalloc_initializer() pass else: @@ -17562,6 +18805,7 @@ def fixed_pointer_initializer(self): class Fixed_size_buffer_declaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17592,22 +18836,28 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitFixed_size_buffer_declarator" ): listener.exitFixed_size_buffer_declarator(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFixed_size_buffer_declarator" ): + return visitor.visitFixed_size_buffer_declarator(self) + else: + return visitor.visitChildren(self) + def fixed_size_buffer_declarator(self): localctx = CSharpParser.Fixed_size_buffer_declaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 370, self.RULE_fixed_size_buffer_declarator) + self.enterRule(localctx, 372, self.RULE_fixed_size_buffer_declarator) try: self.enterOuterAlt(localctx, 1) - self.state = 2303 + self.state = 2314 self.identifier() - self.state = 2304 + self.state = 2315 self.match(CSharpParser.OPEN_BRACKET) - self.state = 2305 + self.state = 2316 self.expression() - self.state = 2306 + self.state = 2317 self.match(CSharpParser.CLOSE_BRACKET) except RecognitionException as re: localctx.exception = re @@ -17619,6 +18869,7 @@ def fixed_size_buffer_declarator(self): class Stackalloc_initializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17667,82 +18918,88 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitStackalloc_initializer" ): listener.exitStackalloc_initializer(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitStackalloc_initializer" ): + return visitor.visitStackalloc_initializer(self) + else: + return visitor.visitChildren(self) + def stackalloc_initializer(self): localctx = CSharpParser.Stackalloc_initializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 372, self.RULE_stackalloc_initializer) + self.enterRule(localctx, 374, self.RULE_stackalloc_initializer) self._la = 0 # Token type try: - self.state = 2337 + self.state = 2348 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,294,self._ctx) + la_ = self._interp.adaptivePredict(self._input,296,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 2308 + self.state = 2319 self.match(CSharpParser.STACKALLOC) - self.state = 2309 + self.state = 2320 self.type_() - self.state = 2310 + self.state = 2321 self.match(CSharpParser.OPEN_BRACKET) - self.state = 2311 + self.state = 2322 self.expression() - self.state = 2312 + self.state = 2323 self.match(CSharpParser.CLOSE_BRACKET) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 2314 + self.state = 2325 self.match(CSharpParser.STACKALLOC) - self.state = 2316 + self.state = 2327 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (CSharpParser.OBJECT - 67)) | (1 << (CSharpParser.ON - 67)) | (1 << (CSharpParser.ORDERBY - 67)) | (1 << (CSharpParser.PARTIAL - 67)) | (1 << (CSharpParser.REMOVE - 67)) | (1 << (CSharpParser.SBYTE - 67)) | (1 << (CSharpParser.SELECT - 67)) | (1 << (CSharpParser.SET - 67)) | (1 << (CSharpParser.SHORT - 67)) | (1 << (CSharpParser.STRING - 67)) | (1 << (CSharpParser.UINT - 67)) | (1 << (CSharpParser.ULONG - 67)) | (1 << (CSharpParser.UNMANAGED - 67)) | (1 << (CSharpParser.USHORT - 67)) | (1 << (CSharpParser.VAR - 67)) | (1 << (CSharpParser.VOID - 67)) | (1 << (CSharpParser.WHEN - 67)) | (1 << (CSharpParser.WHERE - 67)) | (1 << (CSharpParser.YIELD - 67)) | (1 << (CSharpParser.IDENTIFIER - 67)) | (1 << (CSharpParser.OPEN_PARENS - 67)))) != 0): - self.state = 2315 + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 3201253152842599799) != 0) or ((((_la - 75)) & ~0x3f) == 0 and ((1 << (_la - 75)) & 18015337681329473) != 0): + self.state = 2326 self.type_() - self.state = 2318 + self.state = 2329 self.match(CSharpParser.OPEN_BRACKET) - self.state = 2320 + self.state = 2331 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 2319 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161996477) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 2330 self.expression() - self.state = 2322 + self.state = 2333 self.match(CSharpParser.CLOSE_BRACKET) - self.state = 2323 + self.state = 2334 self.match(CSharpParser.OPEN_BRACE) - self.state = 2324 + self.state = 2335 self.expression() - self.state = 2329 + self.state = 2340 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,292,self._ctx) + _alt = self._interp.adaptivePredict(self._input,294,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 2325 + self.state = 2336 self.match(CSharpParser.COMMA) - self.state = 2326 + self.state = 2337 self.expression() - self.state = 2331 + self.state = 2342 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,292,self._ctx) + _alt = self._interp.adaptivePredict(self._input,294,self._ctx) - self.state = 2333 + self.state = 2344 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 2332 + if _la==132: + self.state = 2343 self.match(CSharpParser.COMMA) - self.state = 2335 + self.state = 2346 self.match(CSharpParser.CLOSE_BRACE) pass @@ -17757,6 +19014,7 @@ def stackalloc_initializer(self): class Right_arrowContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17781,20 +19039,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitRight_arrow" ): listener.exitRight_arrow(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRight_arrow" ): + return visitor.visitRight_arrow(self) + else: + return visitor.visitChildren(self) + def right_arrow(self): localctx = CSharpParser.Right_arrowContext(self, self._ctx, self.state) - self.enterRule(localctx, 374, self.RULE_right_arrow) + self.enterRule(localctx, 376, self.RULE_right_arrow) try: self.enterOuterAlt(localctx, 1) - self.state = 2339 + self.state = 2350 localctx.first = self.match(CSharpParser.ASSIGNMENT) - self.state = 2340 + self.state = 2351 localctx.second = self.match(CSharpParser.GT) - self.state = 2341 + self.state = 2352 if not (0 if localctx.first is None else localctx.first.tokenIndex) + 1 == (0 if localctx.second is None else localctx.second.tokenIndex): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "$first.index + 1 == $second.index") @@ -17808,6 +19072,7 @@ def right_arrow(self): class Right_shiftContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17832,20 +19097,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitRight_shift" ): listener.exitRight_shift(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRight_shift" ): + return visitor.visitRight_shift(self) + else: + return visitor.visitChildren(self) + def right_shift(self): localctx = CSharpParser.Right_shiftContext(self, self._ctx, self.state) - self.enterRule(localctx, 376, self.RULE_right_shift) + self.enterRule(localctx, 378, self.RULE_right_shift) try: self.enterOuterAlt(localctx, 1) - self.state = 2343 + self.state = 2354 localctx.first = self.match(CSharpParser.GT) - self.state = 2344 + self.state = 2355 localctx.second = self.match(CSharpParser.GT) - self.state = 2345 + self.state = 2356 if not (0 if localctx.first is None else localctx.first.tokenIndex) + 1 == (0 if localctx.second is None else localctx.second.tokenIndex): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "$first.index + 1 == $second.index") @@ -17859,6 +19130,7 @@ def right_shift(self): class Right_shift_assignmentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17883,20 +19155,26 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitRight_shift_assignment" ): listener.exitRight_shift_assignment(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRight_shift_assignment" ): + return visitor.visitRight_shift_assignment(self) + else: + return visitor.visitChildren(self) + def right_shift_assignment(self): localctx = CSharpParser.Right_shift_assignmentContext(self, self._ctx, self.state) - self.enterRule(localctx, 378, self.RULE_right_shift_assignment) + self.enterRule(localctx, 380, self.RULE_right_shift_assignment) try: self.enterOuterAlt(localctx, 1) - self.state = 2347 + self.state = 2358 localctx.first = self.match(CSharpParser.GT) - self.state = 2348 + self.state = 2359 localctx.second = self.match(CSharpParser.OP_GE) - self.state = 2349 + self.state = 2360 if not (0 if localctx.first is None else localctx.first.tokenIndex) + 1 == (0 if localctx.second is None else localctx.second.tokenIndex): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "$first.index + 1 == $second.index") @@ -17910,6 +19188,7 @@ def right_shift_assignment(self): class LiteralContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17938,8 +19217,8 @@ def REAL_LITERAL(self): def CHARACTER_LITERAL(self): return self.getToken(CSharpParser.CHARACTER_LITERAL, 0) - def NULL(self): - return self.getToken(CSharpParser.NULL, 0) + def NULL_(self): + return self.getToken(CSharpParser.NULL_, 0) def getRuleIndex(self): return CSharpParser.RULE_literal @@ -17952,56 +19231,62 @@ 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 = CSharpParser.LiteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 380, self.RULE_literal) + self.enterRule(localctx, 382, self.RULE_literal) try: - self.state = 2359 + self.state = 2370 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.FALSE, CSharpParser.TRUE]: + if token in [42, 96]: self.enterOuterAlt(localctx, 1) - self.state = 2351 + self.state = 2362 self.boolean_literal() pass - elif token in [CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START]: + elif token in [121, 122, 123, 124]: self.enterOuterAlt(localctx, 2) - self.state = 2352 + self.state = 2363 self.string_literal() pass - elif token in [CSharpParser.INTEGER_LITERAL]: + elif token in [116]: self.enterOuterAlt(localctx, 3) - self.state = 2353 + self.state = 2364 self.match(CSharpParser.INTEGER_LITERAL) pass - elif token in [CSharpParser.HEX_INTEGER_LITERAL]: + elif token in [117]: self.enterOuterAlt(localctx, 4) - self.state = 2354 + self.state = 2365 self.match(CSharpParser.HEX_INTEGER_LITERAL) pass - elif token in [CSharpParser.BIN_INTEGER_LITERAL]: + elif token in [118]: self.enterOuterAlt(localctx, 5) - self.state = 2355 + self.state = 2366 self.match(CSharpParser.BIN_INTEGER_LITERAL) pass - elif token in [CSharpParser.REAL_LITERAL]: + elif token in [119]: self.enterOuterAlt(localctx, 6) - self.state = 2356 + self.state = 2367 self.match(CSharpParser.REAL_LITERAL) pass - elif token in [CSharpParser.CHARACTER_LITERAL]: + elif token in [120]: self.enterOuterAlt(localctx, 7) - self.state = 2357 + self.state = 2368 self.match(CSharpParser.CHARACTER_LITERAL) pass - elif token in [CSharpParser.NULL]: + elif token in [67]: self.enterOuterAlt(localctx, 8) - self.state = 2358 - self.match(CSharpParser.NULL) + self.state = 2369 + self.match(CSharpParser.NULL_) pass else: raise NoViableAltException(self) @@ -18016,6 +19301,7 @@ def literal(self): class Boolean_literalContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18038,19 +19324,25 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitBoolean_literal" ): listener.exitBoolean_literal(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitBoolean_literal" ): + return visitor.visitBoolean_literal(self) + else: + return visitor.visitChildren(self) + def boolean_literal(self): localctx = CSharpParser.Boolean_literalContext(self, self._ctx, self.state) - self.enterRule(localctx, 382, self.RULE_boolean_literal) + self.enterRule(localctx, 384, self.RULE_boolean_literal) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2361 + self.state = 2372 _la = self._input.LA(1) - if not(_la==CSharpParser.FALSE or _la==CSharpParser.TRUE): + if not(_la==42 or _la==96): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -18065,6 +19357,7 @@ def boolean_literal(self): class String_literalContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18095,35 +19388,41 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitString_literal" ): listener.exitString_literal(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitString_literal" ): + return visitor.visitString_literal(self) + else: + return visitor.visitChildren(self) + def string_literal(self): localctx = CSharpParser.String_literalContext(self, self._ctx, self.state) - self.enterRule(localctx, 384, self.RULE_string_literal) + self.enterRule(localctx, 386, self.RULE_string_literal) try: - self.state = 2367 + self.state = 2378 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.INTERPOLATED_REGULAR_STRING_START]: + if token in [123]: self.enterOuterAlt(localctx, 1) - self.state = 2363 + self.state = 2374 self.interpolated_regular_string() pass - elif token in [CSharpParser.INTERPOLATED_VERBATIUM_STRING_START]: + elif token in [124]: self.enterOuterAlt(localctx, 2) - self.state = 2364 + self.state = 2375 self.interpolated_verbatium_string() pass - elif token in [CSharpParser.REGULAR_STRING]: + elif token in [121]: self.enterOuterAlt(localctx, 3) - self.state = 2365 + self.state = 2376 self.match(CSharpParser.REGULAR_STRING) pass - elif token in [CSharpParser.VERBATIUM_STRING]: + elif token in [122]: self.enterOuterAlt(localctx, 4) - self.state = 2366 + self.state = 2377 self.match(CSharpParser.VERBATIUM_STRING) pass else: @@ -18139,6 +19438,7 @@ def string_literal(self): class Interpolated_regular_stringContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18168,29 +19468,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterpolated_regular_string" ): listener.exitInterpolated_regular_string(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterpolated_regular_string" ): + return visitor.visitInterpolated_regular_string(self) + else: + return visitor.visitChildren(self) + def interpolated_regular_string(self): localctx = CSharpParser.Interpolated_regular_stringContext(self, self._ctx, self.state) - self.enterRule(localctx, 386, self.RULE_interpolated_regular_string) + self.enterRule(localctx, 388, self.RULE_interpolated_regular_string) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2369 + self.state = 2380 self.match(CSharpParser.INTERPOLATED_REGULAR_STRING_START) - self.state = 2373 + self.state = 2384 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)) | (1 << (CSharpParser.DOUBLE_CURLY_INSIDE - 134)) | (1 << (CSharpParser.REGULAR_CHAR_INSIDE - 134)) | (1 << (CSharpParser.REGULAR_STRING_INSIDE - 134)))) != 0): - self.state = 2370 + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161996477) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 329853500975553) != 0): + self.state = 2381 self.interpolated_regular_string_part() - self.state = 2375 + self.state = 2386 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 2376 + self.state = 2387 self.match(CSharpParser.DOUBLE_QUOTE_INSIDE) except RecognitionException as re: localctx.exception = re @@ -18202,6 +19508,7 @@ def interpolated_regular_string(self): class Interpolated_verbatium_stringContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18231,29 +19538,35 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterpolated_verbatium_string" ): listener.exitInterpolated_verbatium_string(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterpolated_verbatium_string" ): + return visitor.visitInterpolated_verbatium_string(self) + else: + return visitor.visitChildren(self) + def interpolated_verbatium_string(self): localctx = CSharpParser.Interpolated_verbatium_stringContext(self, self._ctx, self.state) - self.enterRule(localctx, 388, self.RULE_interpolated_verbatium_string) + self.enterRule(localctx, 390, self.RULE_interpolated_verbatium_string) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2378 + self.state = 2389 self.match(CSharpParser.INTERPOLATED_VERBATIUM_STRING_START) - self.state = 2382 + self.state = 2393 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)) | (1 << (CSharpParser.DOUBLE_CURLY_INSIDE - 134)) | (1 << (CSharpParser.VERBATIUM_DOUBLE_QUOTE_INSIDE - 134)) | (1 << (CSharpParser.VERBATIUM_INSIDE_STRING - 134)))) != 0): - self.state = 2379 + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -5437212208176571392) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305497201161996477) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 646512849775041) != 0): + self.state = 2390 self.interpolated_verbatium_string_part() - self.state = 2384 + self.state = 2395 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 2385 + self.state = 2396 self.match(CSharpParser.DOUBLE_QUOTE_INSIDE) except RecognitionException as re: localctx.exception = re @@ -18265,6 +19578,7 @@ def interpolated_verbatium_string(self): class Interpolated_regular_string_partContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18294,35 +19608,41 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterpolated_regular_string_part" ): listener.exitInterpolated_regular_string_part(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterpolated_regular_string_part" ): + return visitor.visitInterpolated_regular_string_part(self) + else: + return visitor.visitChildren(self) + def interpolated_regular_string_part(self): localctx = CSharpParser.Interpolated_regular_string_partContext(self, self._ctx, self.state) - self.enterRule(localctx, 390, self.RULE_interpolated_regular_string_part) + self.enterRule(localctx, 392, self.RULE_interpolated_regular_string_part) try: - self.state = 2391 + self.state = 2402 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 83, 85, 86, 87, 88, 91, 94, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 1) - self.state = 2387 + self.state = 2398 self.interpolated_string_expression() pass - elif token in [CSharpParser.DOUBLE_CURLY_INSIDE]: + elif token in [172]: self.enterOuterAlt(localctx, 2) - self.state = 2388 + self.state = 2399 self.match(CSharpParser.DOUBLE_CURLY_INSIDE) pass - elif token in [CSharpParser.REGULAR_CHAR_INSIDE]: + elif token in [174]: self.enterOuterAlt(localctx, 3) - self.state = 2389 + self.state = 2400 self.match(CSharpParser.REGULAR_CHAR_INSIDE) pass - elif token in [CSharpParser.REGULAR_STRING_INSIDE]: + elif token in [177]: self.enterOuterAlt(localctx, 4) - self.state = 2390 + self.state = 2401 self.match(CSharpParser.REGULAR_STRING_INSIDE) pass else: @@ -18338,6 +19658,7 @@ def interpolated_regular_string_part(self): class Interpolated_verbatium_string_partContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18367,35 +19688,41 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterpolated_verbatium_string_part" ): listener.exitInterpolated_verbatium_string_part(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterpolated_verbatium_string_part" ): + return visitor.visitInterpolated_verbatium_string_part(self) + else: + return visitor.visitChildren(self) + def interpolated_verbatium_string_part(self): localctx = CSharpParser.Interpolated_verbatium_string_partContext(self, self._ctx, self.state) - self.enterRule(localctx, 392, self.RULE_interpolated_verbatium_string_part) + self.enterRule(localctx, 394, self.RULE_interpolated_verbatium_string_part) try: - self.state = 2397 + self.state = 2408 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.ADD, CSharpParser.ALIAS, CSharpParser.ARGLIST, CSharpParser.ASCENDING, CSharpParser.ASYNC, CSharpParser.AWAIT, CSharpParser.BASE, CSharpParser.BOOL, CSharpParser.BY, CSharpParser.BYTE, CSharpParser.CHAR, CSharpParser.CHECKED, CSharpParser.DECIMAL, CSharpParser.DEFAULT, CSharpParser.DELEGATE, CSharpParser.DESCENDING, CSharpParser.DOUBLE, CSharpParser.DYNAMIC, CSharpParser.EQUALS, CSharpParser.FALSE, CSharpParser.FLOAT, CSharpParser.FROM, CSharpParser.GET, CSharpParser.GROUP, CSharpParser.INT, CSharpParser.INTO, CSharpParser.JOIN, CSharpParser.LET, CSharpParser.LONG, CSharpParser.NAMEOF, CSharpParser.NEW, CSharpParser.NULL, CSharpParser.OBJECT, CSharpParser.ON, CSharpParser.ORDERBY, CSharpParser.PARTIAL, CSharpParser.REF, CSharpParser.REMOVE, CSharpParser.SBYTE, CSharpParser.SELECT, CSharpParser.SET, CSharpParser.SHORT, CSharpParser.SIZEOF, CSharpParser.STRING, CSharpParser.THIS, CSharpParser.TRUE, CSharpParser.TYPEOF, CSharpParser.UINT, CSharpParser.ULONG, CSharpParser.UNCHECKED, CSharpParser.UNMANAGED, CSharpParser.USHORT, CSharpParser.VAR, CSharpParser.WHEN, CSharpParser.WHERE, CSharpParser.YIELD, CSharpParser.IDENTIFIER, CSharpParser.LITERAL_ACCESS, CSharpParser.INTEGER_LITERAL, CSharpParser.HEX_INTEGER_LITERAL, CSharpParser.BIN_INTEGER_LITERAL, CSharpParser.REAL_LITERAL, CSharpParser.CHARACTER_LITERAL, CSharpParser.REGULAR_STRING, CSharpParser.VERBATIUM_STRING, CSharpParser.INTERPOLATED_REGULAR_STRING_START, CSharpParser.INTERPOLATED_VERBATIUM_STRING_START, CSharpParser.OPEN_PARENS, CSharpParser.PLUS, CSharpParser.MINUS, CSharpParser.STAR, CSharpParser.AMP, CSharpParser.CARET, CSharpParser.BANG, CSharpParser.TILDE, CSharpParser.OP_INC, CSharpParser.OP_DEC, CSharpParser.OP_RANGE]: + if token in [10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 24, 25, 29, 30, 31, 32, 34, 35, 38, 42, 45, 48, 49, 51, 55, 58, 60, 61, 63, 64, 66, 67, 68, 69, 71, 75, 80, 81, 83, 85, 86, 87, 88, 91, 94, 96, 98, 99, 100, 101, 102, 104, 106, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 129, 135, 136, 137, 140, 142, 143, 144, 151, 152, 171]: self.enterOuterAlt(localctx, 1) - self.state = 2393 + self.state = 2404 self.interpolated_string_expression() pass - elif token in [CSharpParser.DOUBLE_CURLY_INSIDE]: + elif token in [172]: self.enterOuterAlt(localctx, 2) - self.state = 2394 + self.state = 2405 self.match(CSharpParser.DOUBLE_CURLY_INSIDE) pass - elif token in [CSharpParser.VERBATIUM_DOUBLE_QUOTE_INSIDE]: + elif token in [175]: self.enterOuterAlt(localctx, 3) - self.state = 2395 + self.state = 2406 self.match(CSharpParser.VERBATIUM_DOUBLE_QUOTE_INSIDE) pass - elif token in [CSharpParser.VERBATIUM_INSIDE_STRING]: + elif token in [178]: self.enterOuterAlt(localctx, 4) - self.state = 2396 + self.state = 2407 self.match(CSharpParser.VERBATIUM_INSIDE_STRING) pass else: @@ -18411,6 +19738,7 @@ def interpolated_verbatium_string_part(self): class Interpolated_string_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18449,46 +19777,52 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterpolated_string_expression" ): listener.exitInterpolated_string_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterpolated_string_expression" ): + return visitor.visitInterpolated_string_expression(self) + else: + return visitor.visitChildren(self) + def interpolated_string_expression(self): localctx = CSharpParser.Interpolated_string_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 394, self.RULE_interpolated_string_expression) + self.enterRule(localctx, 396, self.RULE_interpolated_string_expression) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2399 + self.state = 2410 self.expression() - self.state = 2404 + self.state = 2415 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==CSharpParser.COMMA: - self.state = 2400 + while _la==132: + self.state = 2411 self.match(CSharpParser.COMMA) - self.state = 2401 + self.state = 2412 self.expression() - self.state = 2406 + self.state = 2417 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 2413 + self.state = 2424 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COLON: - self.state = 2407 + if _la==133: + self.state = 2418 self.match(CSharpParser.COLON) - self.state = 2409 + self.state = 2420 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 2408 + self.state = 2419 self.match(CSharpParser.FORMAT_STRING) - self.state = 2411 + self.state = 2422 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==CSharpParser.FORMAT_STRING): + if not (_la==180): break @@ -18503,6 +19837,7 @@ def interpolated_string_expression(self): class KeywordContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18631,8 +19966,8 @@ def NAMESPACE(self): def NEW(self): return self.getToken(CSharpParser.NEW, 0) - def NULL(self): - return self.getToken(CSharpParser.NULL, 0) + def NULL_(self): + return self.getToken(CSharpParser.NULL_, 0) def OBJECT(self): return self.getToken(CSharpParser.OBJECT, 0) @@ -18753,19 +20088,25 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitKeyword" ): listener.exitKeyword(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitKeyword" ): + return visitor.visitKeyword(self) + else: + return visitor.visitChildren(self) + def keyword(self): localctx = CSharpParser.KeywordContext(self, self._ctx, self.state) - self.enterRule(localctx, 396, self.RULE_keyword) + self.enterRule(localctx, 398, self.RULE_keyword) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2415 + self.state = 2426 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ABSTRACT) | (1 << CSharpParser.AS) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BREAK) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CASE) | (1 << CSharpParser.CATCH) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.CLASS) | (1 << CSharpParser.CONST) | (1 << CSharpParser.CONTINUE) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DO) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.ELSE) | (1 << CSharpParser.ENUM) | (1 << CSharpParser.EVENT) | (1 << CSharpParser.EXPLICIT) | (1 << CSharpParser.EXTERN) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FINALLY) | (1 << CSharpParser.FIXED) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FOR) | (1 << CSharpParser.FOREACH) | (1 << CSharpParser.GOTO) | (1 << CSharpParser.IF) | (1 << CSharpParser.IMPLICIT) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTERFACE) | (1 << CSharpParser.INTERNAL) | (1 << CSharpParser.IS) | (1 << CSharpParser.LOCK) | (1 << CSharpParser.LONG))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (CSharpParser.NAMESPACE - 64)) | (1 << (CSharpParser.NEW - 64)) | (1 << (CSharpParser.NULL - 64)) | (1 << (CSharpParser.OBJECT - 64)) | (1 << (CSharpParser.OPERATOR - 64)) | (1 << (CSharpParser.OUT - 64)) | (1 << (CSharpParser.OVERRIDE - 64)) | (1 << (CSharpParser.PARAMS - 64)) | (1 << (CSharpParser.PRIVATE - 64)) | (1 << (CSharpParser.PROTECTED - 64)) | (1 << (CSharpParser.PUBLIC - 64)) | (1 << (CSharpParser.READONLY - 64)) | (1 << (CSharpParser.REF - 64)) | (1 << (CSharpParser.RETURN - 64)) | (1 << (CSharpParser.SBYTE - 64)) | (1 << (CSharpParser.SEALED - 64)) | (1 << (CSharpParser.SHORT - 64)) | (1 << (CSharpParser.SIZEOF - 64)) | (1 << (CSharpParser.STACKALLOC - 64)) | (1 << (CSharpParser.STATIC - 64)) | (1 << (CSharpParser.STRING - 64)) | (1 << (CSharpParser.STRUCT - 64)) | (1 << (CSharpParser.SWITCH - 64)) | (1 << (CSharpParser.THIS - 64)) | (1 << (CSharpParser.THROW - 64)) | (1 << (CSharpParser.TRUE - 64)) | (1 << (CSharpParser.TRY - 64)) | (1 << (CSharpParser.TYPEOF - 64)) | (1 << (CSharpParser.UINT - 64)) | (1 << (CSharpParser.ULONG - 64)) | (1 << (CSharpParser.UNCHECKED - 64)) | (1 << (CSharpParser.UNMANAGED - 64)) | (1 << (CSharpParser.UNSAFE - 64)) | (1 << (CSharpParser.USHORT - 64)) | (1 << (CSharpParser.USING - 64)) | (1 << (CSharpParser.VIRTUAL - 64)) | (1 << (CSharpParser.VOID - 64)) | (1 << (CSharpParser.VOLATILE - 64)) | (1 << (CSharpParser.WHILE - 64)))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & -3750091428249853440) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 173722833976239) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -18780,6 +20121,7 @@ def keyword(self): class Class_definitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18822,51 +20164,57 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitClass_definition" ): listener.exitClass_definition(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitClass_definition" ): + return visitor.visitClass_definition(self) + else: + return visitor.visitChildren(self) + def class_definition(self): localctx = CSharpParser.Class_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 398, self.RULE_class_definition) + self.enterRule(localctx, 400, self.RULE_class_definition) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2417 + self.state = 2428 self.match(CSharpParser.CLASS) - self.state = 2418 + self.state = 2429 self.identifier() - self.state = 2420 + self.state = 2431 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 2419 + if _la==146: + self.state = 2430 self.type_parameter_list() - self.state = 2423 + self.state = 2434 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COLON: - self.state = 2422 + if _la==133: + self.state = 2433 self.class_base() - self.state = 2426 + self.state = 2437 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHERE: - self.state = 2425 + if _la==111: + self.state = 2436 self.type_parameter_constraints_clauses() - self.state = 2428 + self.state = 2439 self.class_body() - self.state = 2430 + self.state = 2441 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.SEMICOLON: - self.state = 2429 + if _la==134: + self.state = 2440 self.match(CSharpParser.SEMICOLON) @@ -18880,6 +20228,7 @@ def class_definition(self): class Struct_definitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18928,64 +20277,70 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitStruct_definition" ): listener.exitStruct_definition(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitStruct_definition" ): + return visitor.visitStruct_definition(self) + else: + return visitor.visitChildren(self) + def struct_definition(self): localctx = CSharpParser.Struct_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 400, self.RULE_struct_definition) + self.enterRule(localctx, 402, self.RULE_struct_definition) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2433 + self.state = 2444 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.READONLY or _la==CSharpParser.REF: - self.state = 2432 + if _la==79 or _la==80: + self.state = 2443 _la = self._input.LA(1) - if not(_la==CSharpParser.READONLY or _la==CSharpParser.REF): + if not(_la==79 or _la==80): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 2435 + self.state = 2446 self.match(CSharpParser.STRUCT) - self.state = 2436 + self.state = 2447 self.identifier() - self.state = 2438 + self.state = 2449 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 2437 + if _la==146: + self.state = 2448 self.type_parameter_list() - self.state = 2441 + self.state = 2452 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COLON: - self.state = 2440 + if _la==133: + self.state = 2451 self.struct_interfaces() - self.state = 2444 + self.state = 2455 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHERE: - self.state = 2443 + if _la==111: + self.state = 2454 self.type_parameter_constraints_clauses() - self.state = 2446 + self.state = 2457 self.struct_body() - self.state = 2448 + self.state = 2459 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.SEMICOLON: - self.state = 2447 + if _la==134: + self.state = 2458 self.match(CSharpParser.SEMICOLON) @@ -18999,6 +20354,7 @@ def struct_definition(self): class Interface_definitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19041,51 +20397,57 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitInterface_definition" ): listener.exitInterface_definition(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterface_definition" ): + return visitor.visitInterface_definition(self) + else: + return visitor.visitChildren(self) + def interface_definition(self): localctx = CSharpParser.Interface_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 402, self.RULE_interface_definition) + self.enterRule(localctx, 404, self.RULE_interface_definition) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2450 + self.state = 2461 self.match(CSharpParser.INTERFACE) - self.state = 2451 + self.state = 2462 self.identifier() - self.state = 2453 + self.state = 2464 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 2452 + if _la==146: + self.state = 2463 self.variant_type_parameter_list() - self.state = 2456 + self.state = 2467 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COLON: - self.state = 2455 + if _la==133: + self.state = 2466 self.interface_base() - self.state = 2459 + self.state = 2470 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHERE: - self.state = 2458 + if _la==111: + self.state = 2469 self.type_parameter_constraints_clauses() - self.state = 2461 + self.state = 2472 self.class_body() - self.state = 2463 + self.state = 2474 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.SEMICOLON: - self.state = 2462 + if _la==134: + self.state = 2473 self.match(CSharpParser.SEMICOLON) @@ -19099,6 +20461,7 @@ def interface_definition(self): class Enum_definitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19133,35 +20496,41 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEnum_definition" ): listener.exitEnum_definition(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEnum_definition" ): + return visitor.visitEnum_definition(self) + else: + return visitor.visitChildren(self) + def enum_definition(self): localctx = CSharpParser.Enum_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 404, self.RULE_enum_definition) + self.enterRule(localctx, 406, self.RULE_enum_definition) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2465 + self.state = 2476 self.match(CSharpParser.ENUM) - self.state = 2466 + self.state = 2477 self.identifier() - self.state = 2468 + self.state = 2479 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COLON: - self.state = 2467 + if _la==133: + self.state = 2478 self.enum_base() - self.state = 2470 + self.state = 2481 self.enum_body() - self.state = 2472 + self.state = 2483 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.SEMICOLON: - self.state = 2471 + if _la==134: + self.state = 2482 self.match(CSharpParser.SEMICOLON) @@ -19175,6 +20544,7 @@ def enum_definition(self): class Delegate_definitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19223,51 +20593,57 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDelegate_definition" ): listener.exitDelegate_definition(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDelegate_definition" ): + return visitor.visitDelegate_definition(self) + else: + return visitor.visitChildren(self) + def delegate_definition(self): localctx = CSharpParser.Delegate_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 406, self.RULE_delegate_definition) + self.enterRule(localctx, 408, self.RULE_delegate_definition) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2474 + self.state = 2485 self.match(CSharpParser.DELEGATE) - self.state = 2475 + self.state = 2486 self.return_type() - self.state = 2476 + self.state = 2487 self.identifier() - self.state = 2478 + self.state = 2489 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 2477 + if _la==146: + self.state = 2488 self.variant_type_parameter_list() - self.state = 2480 + self.state = 2491 self.match(CSharpParser.OPEN_PARENS) - self.state = 2482 + self.state = 2493 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (CSharpParser.OBJECT - 67)) | (1 << (CSharpParser.ON - 67)) | (1 << (CSharpParser.ORDERBY - 67)) | (1 << (CSharpParser.OUT - 67)) | (1 << (CSharpParser.PARAMS - 67)) | (1 << (CSharpParser.PARTIAL - 67)) | (1 << (CSharpParser.REF - 67)) | (1 << (CSharpParser.REMOVE - 67)) | (1 << (CSharpParser.SBYTE - 67)) | (1 << (CSharpParser.SELECT - 67)) | (1 << (CSharpParser.SET - 67)) | (1 << (CSharpParser.SHORT - 67)) | (1 << (CSharpParser.STRING - 67)) | (1 << (CSharpParser.THIS - 67)) | (1 << (CSharpParser.UINT - 67)) | (1 << (CSharpParser.ULONG - 67)) | (1 << (CSharpParser.UNMANAGED - 67)) | (1 << (CSharpParser.USHORT - 67)) | (1 << (CSharpParser.VAR - 67)) | (1 << (CSharpParser.VOID - 67)) | (1 << (CSharpParser.WHEN - 67)) | (1 << (CSharpParser.WHERE - 67)) | (1 << (CSharpParser.YIELD - 67)) | (1 << (CSharpParser.IDENTIFIER - 67)) | (1 << (CSharpParser.OPEN_BRACKET - 67)) | (1 << (CSharpParser.OPEN_PARENS - 67)))) != 0): - self.state = 2481 + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 7812956763456032119) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 45037874618448579) != 0): + self.state = 2492 self.formal_parameter_list() - self.state = 2484 + self.state = 2495 self.match(CSharpParser.CLOSE_PARENS) - self.state = 2486 + self.state = 2497 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHERE: - self.state = 2485 + if _la==111: + self.state = 2496 self.type_parameter_constraints_clauses() - self.state = 2488 + self.state = 2499 self.match(CSharpParser.SEMICOLON) except RecognitionException as re: localctx.exception = re @@ -19279,6 +20655,7 @@ def delegate_definition(self): class Event_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19323,37 +20700,43 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitEvent_declaration" ): listener.exitEvent_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEvent_declaration" ): + return visitor.visitEvent_declaration(self) + else: + return visitor.visitChildren(self) + def event_declaration(self): localctx = CSharpParser.Event_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 408, self.RULE_event_declaration) + self.enterRule(localctx, 410, self.RULE_event_declaration) try: self.enterOuterAlt(localctx, 1) - self.state = 2490 + self.state = 2501 self.match(CSharpParser.EVENT) - self.state = 2491 + self.state = 2502 self.type_() - self.state = 2500 + self.state = 2511 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,322,self._ctx) + la_ = self._interp.adaptivePredict(self._input,324,self._ctx) if la_ == 1: - self.state = 2492 + self.state = 2503 self.variable_declarators() - self.state = 2493 + self.state = 2504 self.match(CSharpParser.SEMICOLON) pass elif la_ == 2: - self.state = 2495 + self.state = 2506 self.member_name() - self.state = 2496 + self.state = 2507 self.match(CSharpParser.OPEN_BRACE) - self.state = 2497 + self.state = 2508 self.event_accessor_declarations() - self.state = 2498 + self.state = 2509 self.match(CSharpParser.CLOSE_BRACE) pass @@ -19368,6 +20751,7 @@ def event_declaration(self): class Field_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19391,18 +20775,24 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitField_declaration" ): listener.exitField_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitField_declaration" ): + return visitor.visitField_declaration(self) + else: + return visitor.visitChildren(self) + def field_declaration(self): localctx = CSharpParser.Field_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 410, self.RULE_field_declaration) + self.enterRule(localctx, 412, self.RULE_field_declaration) try: self.enterOuterAlt(localctx, 1) - self.state = 2502 + self.state = 2513 self.variable_declarators() - self.state = 2503 + self.state = 2514 self.match(CSharpParser.SEMICOLON) except RecognitionException as re: localctx.exception = re @@ -19414,6 +20804,7 @@ def field_declaration(self): class Property_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19462,47 +20853,53 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitProperty_declaration" ): listener.exitProperty_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitProperty_declaration" ): + return visitor.visitProperty_declaration(self) + else: + return visitor.visitChildren(self) + def property_declaration(self): localctx = CSharpParser.Property_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 412, self.RULE_property_declaration) + self.enterRule(localctx, 414, self.RULE_property_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2505 + self.state = 2516 self.member_name() - self.state = 2519 + self.state = 2530 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE]: - self.state = 2506 + if token in [125]: + self.state = 2517 self.match(CSharpParser.OPEN_BRACE) - self.state = 2507 + self.state = 2518 self.accessor_declarations() - self.state = 2508 + self.state = 2519 self.match(CSharpParser.CLOSE_BRACE) - self.state = 2513 + self.state = 2524 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.ASSIGNMENT: - self.state = 2509 + if _la==145: + self.state = 2520 self.match(CSharpParser.ASSIGNMENT) - self.state = 2510 + self.state = 2521 self.variable_initializer() - self.state = 2511 + self.state = 2522 self.match(CSharpParser.SEMICOLON) pass - elif token in [CSharpParser.ASSIGNMENT]: - self.state = 2515 + elif token in [145]: + self.state = 2526 self.right_arrow() - self.state = 2516 + self.state = 2527 self.throwable_expression() - self.state = 2517 + self.state = 2528 self.match(CSharpParser.SEMICOLON) pass else: @@ -19518,6 +20915,7 @@ def property_declaration(self): class Constant_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19548,22 +20946,28 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConstant_declaration" ): listener.exitConstant_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConstant_declaration" ): + return visitor.visitConstant_declaration(self) + else: + return visitor.visitChildren(self) + def constant_declaration(self): localctx = CSharpParser.Constant_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 414, self.RULE_constant_declaration) + self.enterRule(localctx, 416, self.RULE_constant_declaration) try: self.enterOuterAlt(localctx, 1) - self.state = 2521 + self.state = 2532 self.match(CSharpParser.CONST) - self.state = 2522 + self.state = 2533 self.type_() - self.state = 2523 + self.state = 2534 self.constant_declarators() - self.state = 2524 + self.state = 2535 self.match(CSharpParser.SEMICOLON) except RecognitionException as re: localctx.exception = re @@ -19575,6 +20979,7 @@ def constant_declaration(self): class Indexer_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19625,40 +21030,46 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIndexer_declaration" ): listener.exitIndexer_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIndexer_declaration" ): + return visitor.visitIndexer_declaration(self) + else: + return visitor.visitChildren(self) + def indexer_declaration(self): localctx = CSharpParser.Indexer_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 416, self.RULE_indexer_declaration) + self.enterRule(localctx, 418, self.RULE_indexer_declaration) try: self.enterOuterAlt(localctx, 1) - self.state = 2526 + self.state = 2537 self.match(CSharpParser.THIS) - self.state = 2527 + self.state = 2538 self.match(CSharpParser.OPEN_BRACKET) - self.state = 2528 + self.state = 2539 self.formal_parameter_list() - self.state = 2529 + self.state = 2540 self.match(CSharpParser.CLOSE_BRACKET) - self.state = 2538 + self.state = 2549 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE]: - self.state = 2530 + if token in [125]: + self.state = 2541 self.match(CSharpParser.OPEN_BRACE) - self.state = 2531 + self.state = 2542 self.accessor_declarations() - self.state = 2532 + self.state = 2543 self.match(CSharpParser.CLOSE_BRACE) pass - elif token in [CSharpParser.ASSIGNMENT]: - self.state = 2534 + elif token in [145]: + self.state = 2545 self.right_arrow() - self.state = 2535 + self.state = 2546 self.throwable_expression() - self.state = 2536 + self.state = 2547 self.match(CSharpParser.SEMICOLON) pass else: @@ -19674,6 +21085,7 @@ def indexer_declaration(self): class Destructor_definitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19707,24 +21119,30 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitDestructor_definition" ): listener.exitDestructor_definition(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDestructor_definition" ): + return visitor.visitDestructor_definition(self) + else: + return visitor.visitChildren(self) + def destructor_definition(self): localctx = CSharpParser.Destructor_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 418, self.RULE_destructor_definition) + self.enterRule(localctx, 420, self.RULE_destructor_definition) try: self.enterOuterAlt(localctx, 1) - self.state = 2540 + self.state = 2551 self.match(CSharpParser.TILDE) - self.state = 2541 + self.state = 2552 self.identifier() - self.state = 2542 + self.state = 2553 self.match(CSharpParser.OPEN_PARENS) - self.state = 2543 + self.state = 2554 self.match(CSharpParser.CLOSE_PARENS) - self.state = 2544 + self.state = 2555 self.body() except RecognitionException as re: localctx.exception = re @@ -19736,6 +21154,7 @@ def destructor_definition(self): class Constructor_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19774,39 +21193,45 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitConstructor_declaration" ): listener.exitConstructor_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitConstructor_declaration" ): + return visitor.visitConstructor_declaration(self) + else: + return visitor.visitChildren(self) + def constructor_declaration(self): localctx = CSharpParser.Constructor_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 420, self.RULE_constructor_declaration) + self.enterRule(localctx, 422, self.RULE_constructor_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2546 + self.state = 2557 self.identifier() - self.state = 2547 + self.state = 2558 self.match(CSharpParser.OPEN_PARENS) - self.state = 2549 + self.state = 2560 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (CSharpParser.OBJECT - 67)) | (1 << (CSharpParser.ON - 67)) | (1 << (CSharpParser.ORDERBY - 67)) | (1 << (CSharpParser.OUT - 67)) | (1 << (CSharpParser.PARAMS - 67)) | (1 << (CSharpParser.PARTIAL - 67)) | (1 << (CSharpParser.REF - 67)) | (1 << (CSharpParser.REMOVE - 67)) | (1 << (CSharpParser.SBYTE - 67)) | (1 << (CSharpParser.SELECT - 67)) | (1 << (CSharpParser.SET - 67)) | (1 << (CSharpParser.SHORT - 67)) | (1 << (CSharpParser.STRING - 67)) | (1 << (CSharpParser.THIS - 67)) | (1 << (CSharpParser.UINT - 67)) | (1 << (CSharpParser.ULONG - 67)) | (1 << (CSharpParser.UNMANAGED - 67)) | (1 << (CSharpParser.USHORT - 67)) | (1 << (CSharpParser.VAR - 67)) | (1 << (CSharpParser.VOID - 67)) | (1 << (CSharpParser.WHEN - 67)) | (1 << (CSharpParser.WHERE - 67)) | (1 << (CSharpParser.YIELD - 67)) | (1 << (CSharpParser.IDENTIFIER - 67)) | (1 << (CSharpParser.OPEN_BRACKET - 67)) | (1 << (CSharpParser.OPEN_PARENS - 67)))) != 0): - self.state = 2548 + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 7812956763456032119) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 45037874618448579) != 0): + self.state = 2559 self.formal_parameter_list() - self.state = 2551 + self.state = 2562 self.match(CSharpParser.CLOSE_PARENS) - self.state = 2553 + self.state = 2564 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COLON: - self.state = 2552 + if _la==133: + self.state = 2563 self.constructor_initializer() - self.state = 2555 + self.state = 2566 self.body() except RecognitionException as re: localctx.exception = re @@ -19818,6 +21243,7 @@ def constructor_declaration(self): class Method_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19871,59 +21297,65 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMethod_declaration" ): listener.exitMethod_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMethod_declaration" ): + return visitor.visitMethod_declaration(self) + else: + return visitor.visitChildren(self) + def method_declaration(self): localctx = CSharpParser.Method_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 422, self.RULE_method_declaration) + self.enterRule(localctx, 424, self.RULE_method_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2557 + self.state = 2568 self.method_member_name() - self.state = 2559 + self.state = 2570 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 2558 + if _la==146: + self.state = 2569 self.type_parameter_list() - self.state = 2561 + self.state = 2572 self.match(CSharpParser.OPEN_PARENS) - self.state = 2563 + self.state = 2574 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (CSharpParser.OBJECT - 67)) | (1 << (CSharpParser.ON - 67)) | (1 << (CSharpParser.ORDERBY - 67)) | (1 << (CSharpParser.OUT - 67)) | (1 << (CSharpParser.PARAMS - 67)) | (1 << (CSharpParser.PARTIAL - 67)) | (1 << (CSharpParser.REF - 67)) | (1 << (CSharpParser.REMOVE - 67)) | (1 << (CSharpParser.SBYTE - 67)) | (1 << (CSharpParser.SELECT - 67)) | (1 << (CSharpParser.SET - 67)) | (1 << (CSharpParser.SHORT - 67)) | (1 << (CSharpParser.STRING - 67)) | (1 << (CSharpParser.THIS - 67)) | (1 << (CSharpParser.UINT - 67)) | (1 << (CSharpParser.ULONG - 67)) | (1 << (CSharpParser.UNMANAGED - 67)) | (1 << (CSharpParser.USHORT - 67)) | (1 << (CSharpParser.VAR - 67)) | (1 << (CSharpParser.VOID - 67)) | (1 << (CSharpParser.WHEN - 67)) | (1 << (CSharpParser.WHERE - 67)) | (1 << (CSharpParser.YIELD - 67)) | (1 << (CSharpParser.IDENTIFIER - 67)) | (1 << (CSharpParser.OPEN_BRACKET - 67)) | (1 << (CSharpParser.OPEN_PARENS - 67)))) != 0): - self.state = 2562 + if ((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & 7812956763456032119) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 45037874618448579) != 0): + self.state = 2573 self.formal_parameter_list() - self.state = 2565 + self.state = 2576 self.match(CSharpParser.CLOSE_PARENS) - self.state = 2567 + self.state = 2578 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.WHERE: - self.state = 2566 + if _la==111: + self.state = 2577 self.type_parameter_constraints_clauses() - self.state = 2574 + self.state = 2585 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE, CSharpParser.SEMICOLON]: - self.state = 2569 + if token in [125, 134]: + self.state = 2580 self.method_body() pass - elif token in [CSharpParser.ASSIGNMENT]: - self.state = 2570 + elif token in [145]: + self.state = 2581 self.right_arrow() - self.state = 2571 + self.state = 2582 self.throwable_expression() - self.state = 2572 + self.state = 2583 self.match(CSharpParser.SEMICOLON) pass else: @@ -19939,6 +21371,7 @@ def method_declaration(self): class Method_member_nameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19978,54 +21411,60 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMethod_member_name" ): listener.exitMethod_member_name(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMethod_member_name" ): + return visitor.visitMethod_member_name(self) + else: + return visitor.visitChildren(self) + def method_member_name(self): localctx = CSharpParser.Method_member_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 424, self.RULE_method_member_name) + self.enterRule(localctx, 426, self.RULE_method_member_name) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2581 + self.state = 2592 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,332,self._ctx) + la_ = self._interp.adaptivePredict(self._input,334,self._ctx) if la_ == 1: - self.state = 2576 + self.state = 2587 self.identifier() pass elif la_ == 2: - self.state = 2577 + self.state = 2588 self.identifier() - self.state = 2578 + self.state = 2589 self.match(CSharpParser.DOUBLE_COLON) - self.state = 2579 + self.state = 2590 self.identifier() pass - self.state = 2590 + self.state = 2601 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,334,self._ctx) + _alt = self._interp.adaptivePredict(self._input,336,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 2584 + self.state = 2595 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.LT: - self.state = 2583 + if _la==146: + self.state = 2594 self.type_argument_list() - self.state = 2586 + self.state = 2597 self.match(CSharpParser.DOT) - self.state = 2587 + self.state = 2598 self.identifier() - self.state = 2592 + self.state = 2603 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,334,self._ctx) + _alt = self._interp.adaptivePredict(self._input,336,self._ctx) except RecognitionException as re: localctx.exception = re @@ -20037,6 +21476,7 @@ def method_member_name(self): class Operator_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20097,65 +21537,71 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitOperator_declaration" ): listener.exitOperator_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitOperator_declaration" ): + return visitor.visitOperator_declaration(self) + else: + return visitor.visitChildren(self) + def operator_declaration(self): localctx = CSharpParser.Operator_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 426, self.RULE_operator_declaration) + self.enterRule(localctx, 428, self.RULE_operator_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2593 + self.state = 2604 self.match(CSharpParser.OPERATOR) - self.state = 2594 + self.state = 2605 self.overloadable_operator() - self.state = 2595 + self.state = 2606 self.match(CSharpParser.OPEN_PARENS) - self.state = 2597 + self.state = 2608 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.IN: - self.state = 2596 + if _la==54: + self.state = 2607 self.match(CSharpParser.IN) - self.state = 2599 + self.state = 2610 self.arg_declaration() - self.state = 2605 + self.state = 2616 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.COMMA: - self.state = 2600 + if _la==132: + self.state = 2611 self.match(CSharpParser.COMMA) - self.state = 2602 + self.state = 2613 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.IN: - self.state = 2601 + if _la==54: + self.state = 2612 self.match(CSharpParser.IN) - self.state = 2604 + self.state = 2615 self.arg_declaration() - self.state = 2607 + self.state = 2618 self.match(CSharpParser.CLOSE_PARENS) - self.state = 2613 + self.state = 2624 self._errHandler.sync(self) token = self._input.LA(1) - if token in [CSharpParser.OPEN_BRACE, CSharpParser.SEMICOLON]: - self.state = 2608 + if token in [125, 134]: + self.state = 2619 self.body() pass - elif token in [CSharpParser.ASSIGNMENT]: - self.state = 2609 + elif token in [145]: + self.state = 2620 self.right_arrow() - self.state = 2610 + self.state = 2621 self.throwable_expression() - self.state = 2611 + self.state = 2622 self.match(CSharpParser.SEMICOLON) pass else: @@ -20171,6 +21617,7 @@ def operator_declaration(self): class Arg_declarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20202,27 +21649,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitArg_declaration" ): listener.exitArg_declaration(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitArg_declaration" ): + return visitor.visitArg_declaration(self) + else: + return visitor.visitChildren(self) + def arg_declaration(self): localctx = CSharpParser.Arg_declarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 428, self.RULE_arg_declaration) + self.enterRule(localctx, 430, self.RULE_arg_declaration) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2615 + self.state = 2626 self.type_() - self.state = 2616 + self.state = 2627 self.identifier() - self.state = 2619 + self.state = 2630 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==CSharpParser.ASSIGNMENT: - self.state = 2617 + if _la==145: + self.state = 2628 self.match(CSharpParser.ASSIGNMENT) - self.state = 2618 + self.state = 2629 self.expression() @@ -20236,6 +21689,7 @@ def arg_declaration(self): class Method_invocationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20262,27 +21716,33 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitMethod_invocation" ): listener.exitMethod_invocation(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMethod_invocation" ): + return visitor.visitMethod_invocation(self) + else: + return visitor.visitChildren(self) + def method_invocation(self): localctx = CSharpParser.Method_invocationContext(self, self._ctx, self.state) - self.enterRule(localctx, 430, self.RULE_method_invocation) + self.enterRule(localctx, 432, self.RULE_method_invocation) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2621 + self.state = 2632 self.match(CSharpParser.OPEN_PARENS) - self.state = 2623 + self.state = 2634 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.OUT - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 2622 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5419197809667089408) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305514793348041149) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 2633 self.argument_list() - self.state = 2625 + self.state = 2636 self.match(CSharpParser.CLOSE_PARENS) except RecognitionException as re: localctx.exception = re @@ -20294,6 +21754,7 @@ def method_invocation(self): class Object_creation_expressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20324,33 +21785,39 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitObject_creation_expression" ): listener.exitObject_creation_expression(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitObject_creation_expression" ): + return visitor.visitObject_creation_expression(self) + else: + return visitor.visitChildren(self) + def object_creation_expression(self): localctx = CSharpParser.Object_creation_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 432, self.RULE_object_creation_expression) + self.enterRule(localctx, 434, self.RULE_object_creation_expression) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2627 + self.state = 2638 self.match(CSharpParser.OPEN_PARENS) - self.state = 2629 + self.state = 2640 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BASE) | (1 << CSharpParser.BOOL) | (1 << CSharpParser.BY) | (1 << CSharpParser.BYTE) | (1 << CSharpParser.CHAR) | (1 << CSharpParser.CHECKED) | (1 << CSharpParser.DECIMAL) | (1 << CSharpParser.DEFAULT) | (1 << CSharpParser.DELEGATE) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DOUBLE) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FALSE) | (1 << CSharpParser.FLOAT) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.IN) | (1 << CSharpParser.INT) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.LONG) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (CSharpParser.NEW - 65)) | (1 << (CSharpParser.NULL - 65)) | (1 << (CSharpParser.OBJECT - 65)) | (1 << (CSharpParser.ON - 65)) | (1 << (CSharpParser.ORDERBY - 65)) | (1 << (CSharpParser.OUT - 65)) | (1 << (CSharpParser.PARTIAL - 65)) | (1 << (CSharpParser.REF - 65)) | (1 << (CSharpParser.REMOVE - 65)) | (1 << (CSharpParser.SBYTE - 65)) | (1 << (CSharpParser.SELECT - 65)) | (1 << (CSharpParser.SET - 65)) | (1 << (CSharpParser.SHORT - 65)) | (1 << (CSharpParser.SIZEOF - 65)) | (1 << (CSharpParser.STRING - 65)) | (1 << (CSharpParser.THIS - 65)) | (1 << (CSharpParser.TRUE - 65)) | (1 << (CSharpParser.TYPEOF - 65)) | (1 << (CSharpParser.UINT - 65)) | (1 << (CSharpParser.ULONG - 65)) | (1 << (CSharpParser.UNCHECKED - 65)) | (1 << (CSharpParser.UNMANAGED - 65)) | (1 << (CSharpParser.USHORT - 65)) | (1 << (CSharpParser.VAR - 65)) | (1 << (CSharpParser.WHEN - 65)) | (1 << (CSharpParser.WHERE - 65)) | (1 << (CSharpParser.YIELD - 65)) | (1 << (CSharpParser.IDENTIFIER - 65)) | (1 << (CSharpParser.LITERAL_ACCESS - 65)) | (1 << (CSharpParser.INTEGER_LITERAL - 65)) | (1 << (CSharpParser.HEX_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.BIN_INTEGER_LITERAL - 65)) | (1 << (CSharpParser.REAL_LITERAL - 65)) | (1 << (CSharpParser.CHARACTER_LITERAL - 65)) | (1 << (CSharpParser.REGULAR_STRING - 65)) | (1 << (CSharpParser.VERBATIUM_STRING - 65)) | (1 << (CSharpParser.INTERPOLATED_REGULAR_STRING_START - 65)) | (1 << (CSharpParser.INTERPOLATED_VERBATIUM_STRING_START - 65)) | (1 << (CSharpParser.OPEN_PARENS - 65)))) != 0) or ((((_la - 134)) & ~0x3f) == 0 and ((1 << (_la - 134)) & ((1 << (CSharpParser.PLUS - 134)) | (1 << (CSharpParser.MINUS - 134)) | (1 << (CSharpParser.STAR - 134)) | (1 << (CSharpParser.AMP - 134)) | (1 << (CSharpParser.CARET - 134)) | (1 << (CSharpParser.BANG - 134)) | (1 << (CSharpParser.TILDE - 134)) | (1 << (CSharpParser.OP_INC - 134)) | (1 << (CSharpParser.OP_DEC - 134)) | (1 << (CSharpParser.OP_RANGE - 134)))) != 0): - self.state = 2628 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -5419197809667089408) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2305514793348041149) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4398059153857) != 0): + self.state = 2639 self.argument_list() - self.state = 2631 + self.state = 2642 self.match(CSharpParser.CLOSE_PARENS) - self.state = 2633 + self.state = 2644 self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==CSharpParser.OPEN_BRACE: - self.state = 2632 + la_ = self._interp.adaptivePredict(self._input,344,self._ctx) + if la_ == 1: + self.state = 2643 self.object_or_collection_initializer() @@ -20364,6 +21831,7 @@ def object_creation_expression(self): class IdentifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20467,19 +21935,25 @@ def exitRule(self, listener:ParseTreeListener): if hasattr( listener, "exitIdentifier" ): listener.exitIdentifier(self) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIdentifier" ): + return visitor.visitIdentifier(self) + else: + return visitor.visitChildren(self) + def identifier(self): localctx = CSharpParser.IdentifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 434, self.RULE_identifier) + self.enterRule(localctx, 436, self.RULE_identifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 2635 + self.state = 2646 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << CSharpParser.ADD) | (1 << CSharpParser.ALIAS) | (1 << CSharpParser.ARGLIST) | (1 << CSharpParser.ASCENDING) | (1 << CSharpParser.ASYNC) | (1 << CSharpParser.AWAIT) | (1 << CSharpParser.BY) | (1 << CSharpParser.DESCENDING) | (1 << CSharpParser.DYNAMIC) | (1 << CSharpParser.EQUALS) | (1 << CSharpParser.FROM) | (1 << CSharpParser.GET) | (1 << CSharpParser.GROUP) | (1 << CSharpParser.INTO) | (1 << CSharpParser.JOIN) | (1 << CSharpParser.LET) | (1 << CSharpParser.NAMEOF))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (CSharpParser.ON - 68)) | (1 << (CSharpParser.ORDERBY - 68)) | (1 << (CSharpParser.PARTIAL - 68)) | (1 << (CSharpParser.REMOVE - 68)) | (1 << (CSharpParser.SELECT - 68)) | (1 << (CSharpParser.SET - 68)) | (1 << (CSharpParser.UNMANAGED - 68)) | (1 << (CSharpParser.VAR - 68)) | (1 << (CSharpParser.WHEN - 68)) | (1 << (CSharpParser.WHERE - 68)) | (1 << (CSharpParser.YIELD - 68)) | (1 << (CSharpParser.IDENTIFIER - 68)))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 3750091428249852928) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 1904629023639713) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -20497,27 +21971,33 @@ def identifier(self): def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): if self._predicates == None: self._predicates = dict() - self._predicates[187] = self.right_arrow_sempred - self._predicates[188] = self.right_shift_sempred - self._predicates[189] = self.right_shift_assignment_sempred + self._predicates[87] = self.local_variable_declaration_sempred + self._predicates[188] = self.right_arrow_sempred + self._predicates[189] = self.right_shift_sempred + self._predicates[190] = self.right_shift_assignment_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 right_arrow_sempred(self, localctx:Right_arrowContext, predIndex:int): + def local_variable_declaration_sempred(self, localctx:Local_variable_declarationContext, predIndex:int): if predIndex == 0: + return this.IsLocalVariableDeclaration() + + + def right_arrow_sempred(self, localctx:Right_arrowContext, predIndex:int): + if predIndex == 1: return (0 if localctx.first is None else localctx.first.tokenIndex) + 1 == (0 if localctx.second is None else localctx.second.tokenIndex) def right_shift_sempred(self, localctx:Right_shiftContext, predIndex:int): - if predIndex == 1: + if predIndex == 2: return (0 if localctx.first is None else localctx.first.tokenIndex) + 1 == (0 if localctx.second is None else localctx.second.tokenIndex) def right_shift_assignment_sempred(self, localctx:Right_shift_assignmentContext, predIndex:int): - if predIndex == 2: + if predIndex == 3: return (0 if localctx.first is None else localctx.first.tokenIndex) + 1 == (0 if localctx.second is None else localctx.second.tokenIndex) diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.tokens b/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.tokens new file mode 100644 index 00000000..0fc73692 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpParser.tokens @@ -0,0 +1,361 @@ +BYTE_ORDER_MARK=1 +SINGLE_LINE_DOC_COMMENT=2 +EMPTY_DELIMITED_DOC_COMMENT=3 +DELIMITED_DOC_COMMENT=4 +SINGLE_LINE_COMMENT=5 +DELIMITED_COMMENT=6 +WHITESPACES=7 +SHARP=8 +ABSTRACT=9 +ADD=10 +ALIAS=11 +ARGLIST=12 +AS=13 +ASCENDING=14 +ASYNC=15 +AWAIT=16 +BASE=17 +BOOL=18 +BREAK=19 +BY=20 +BYTE=21 +CASE=22 +CATCH=23 +CHAR=24 +CHECKED=25 +CLASS=26 +CONST=27 +CONTINUE=28 +DECIMAL=29 +DEFAULT=30 +DELEGATE=31 +DESCENDING=32 +DO=33 +DOUBLE=34 +DYNAMIC=35 +ELSE=36 +ENUM=37 +EQUALS=38 +EVENT=39 +EXPLICIT=40 +EXTERN=41 +FALSE=42 +FINALLY=43 +FIXED=44 +FLOAT=45 +FOR=46 +FOREACH=47 +FROM=48 +GET=49 +GOTO=50 +GROUP=51 +IF=52 +IMPLICIT=53 +IN=54 +INT=55 +INTERFACE=56 +INTERNAL=57 +INTO=58 +IS=59 +JOIN=60 +LET=61 +LOCK=62 +LONG=63 +NAMEOF=64 +NAMESPACE=65 +NEW=66 +NULL_=67 +OBJECT=68 +ON=69 +OPERATOR=70 +ORDERBY=71 +OUT=72 +OVERRIDE=73 +PARAMS=74 +PARTIAL=75 +PRIVATE=76 +PROTECTED=77 +PUBLIC=78 +READONLY=79 +REF=80 +REMOVE=81 +RETURN=82 +SBYTE=83 +SEALED=84 +SELECT=85 +SET=86 +SHORT=87 +SIZEOF=88 +STACKALLOC=89 +STATIC=90 +STRING=91 +STRUCT=92 +SWITCH=93 +THIS=94 +THROW=95 +TRUE=96 +TRY=97 +TYPEOF=98 +UINT=99 +ULONG=100 +UNCHECKED=101 +UNMANAGED=102 +UNSAFE=103 +USHORT=104 +USING=105 +VAR=106 +VIRTUAL=107 +VOID=108 +VOLATILE=109 +WHEN=110 +WHERE=111 +WHILE=112 +YIELD=113 +IDENTIFIER=114 +LITERAL_ACCESS=115 +INTEGER_LITERAL=116 +HEX_INTEGER_LITERAL=117 +BIN_INTEGER_LITERAL=118 +REAL_LITERAL=119 +CHARACTER_LITERAL=120 +REGULAR_STRING=121 +VERBATIUM_STRING=122 +INTERPOLATED_REGULAR_STRING_START=123 +INTERPOLATED_VERBATIUM_STRING_START=124 +OPEN_BRACE=125 +CLOSE_BRACE=126 +OPEN_BRACKET=127 +CLOSE_BRACKET=128 +OPEN_PARENS=129 +CLOSE_PARENS=130 +DOT=131 +COMMA=132 +COLON=133 +SEMICOLON=134 +PLUS=135 +MINUS=136 +STAR=137 +DIV=138 +PERCENT=139 +AMP=140 +BITWISE_OR=141 +CARET=142 +BANG=143 +TILDE=144 +ASSIGNMENT=145 +LT=146 +GT=147 +INTERR=148 +DOUBLE_COLON=149 +OP_COALESCING=150 +OP_INC=151 +OP_DEC=152 +OP_AND=153 +OP_OR=154 +OP_PTR=155 +OP_EQ=156 +OP_NE=157 +OP_LE=158 +OP_GE=159 +OP_ADD_ASSIGNMENT=160 +OP_SUB_ASSIGNMENT=161 +OP_MULT_ASSIGNMENT=162 +OP_DIV_ASSIGNMENT=163 +OP_MOD_ASSIGNMENT=164 +OP_AND_ASSIGNMENT=165 +OP_OR_ASSIGNMENT=166 +OP_XOR_ASSIGNMENT=167 +OP_LEFT_SHIFT=168 +OP_LEFT_SHIFT_ASSIGNMENT=169 +OP_COALESCING_ASSIGNMENT=170 +OP_RANGE=171 +DOUBLE_CURLY_INSIDE=172 +OPEN_BRACE_INSIDE=173 +REGULAR_CHAR_INSIDE=174 +VERBATIUM_DOUBLE_QUOTE_INSIDE=175 +DOUBLE_QUOTE_INSIDE=176 +REGULAR_STRING_INSIDE=177 +VERBATIUM_INSIDE_STRING=178 +CLOSE_BRACE_INSIDE=179 +FORMAT_STRING=180 +DIRECTIVE_WHITESPACES=181 +DIGITS=182 +DEFINE=183 +UNDEF=184 +ELIF=185 +ENDIF=186 +LINE=187 +ERROR=188 +WARNING=189 +REGION=190 +ENDREGION=191 +PRAGMA=192 +NULLABLE=193 +DIRECTIVE_HIDDEN=194 +CONDITIONAL_SYMBOL=195 +DIRECTIVE_NEW_LINE=196 +TEXT=197 +DOUBLE_CURLY_CLOSE_INSIDE=198 +'\u00EF\u00BB\u00BF'=1 +'/***/'=3 +'#'=8 +'abstract'=9 +'add'=10 +'alias'=11 +'__arglist'=12 +'as'=13 +'ascending'=14 +'async'=15 +'await'=16 +'base'=17 +'bool'=18 +'break'=19 +'by'=20 +'byte'=21 +'case'=22 +'catch'=23 +'char'=24 +'checked'=25 +'class'=26 +'const'=27 +'continue'=28 +'decimal'=29 +'default'=30 +'delegate'=31 +'descending'=32 +'do'=33 +'double'=34 +'dynamic'=35 +'else'=36 +'enum'=37 +'equals'=38 +'event'=39 +'explicit'=40 +'extern'=41 +'false'=42 +'finally'=43 +'fixed'=44 +'float'=45 +'for'=46 +'foreach'=47 +'from'=48 +'get'=49 +'goto'=50 +'group'=51 +'if'=52 +'implicit'=53 +'in'=54 +'int'=55 +'interface'=56 +'internal'=57 +'into'=58 +'is'=59 +'join'=60 +'let'=61 +'lock'=62 +'long'=63 +'nameof'=64 +'namespace'=65 +'new'=66 +'null'=67 +'object'=68 +'on'=69 +'operator'=70 +'orderby'=71 +'out'=72 +'override'=73 +'params'=74 +'partial'=75 +'private'=76 +'protected'=77 +'public'=78 +'readonly'=79 +'ref'=80 +'remove'=81 +'return'=82 +'sbyte'=83 +'sealed'=84 +'select'=85 +'set'=86 +'short'=87 +'sizeof'=88 +'stackalloc'=89 +'static'=90 +'string'=91 +'struct'=92 +'switch'=93 +'this'=94 +'throw'=95 +'true'=96 +'try'=97 +'typeof'=98 +'uint'=99 +'ulong'=100 +'unchecked'=101 +'unmanaged'=102 +'unsafe'=103 +'ushort'=104 +'using'=105 +'var'=106 +'virtual'=107 +'void'=108 +'volatile'=109 +'when'=110 +'where'=111 +'while'=112 +'yield'=113 +'{'=125 +'}'=126 +'['=127 +']'=128 +'('=129 +')'=130 +'.'=131 +','=132 +':'=133 +';'=134 +'+'=135 +'-'=136 +'*'=137 +'/'=138 +'%'=139 +'&'=140 +'|'=141 +'^'=142 +'!'=143 +'~'=144 +'='=145 +'<'=146 +'>'=147 +'?'=148 +'::'=149 +'??'=150 +'++'=151 +'--'=152 +'&&'=153 +'||'=154 +'->'=155 +'=='=156 +'!='=157 +'<='=158 +'>='=159 +'+='=160 +'-='=161 +'*='=162 +'/='=163 +'%='=164 +'&='=165 +'|='=166 +'^='=167 +'<<'=168 +'<<='=169 +'??='=170 +'..'=171 +'{{'=172 +'}}'=198 +'define'=183 +'undef'=184 +'elif'=185 +'endif'=186 +'line'=187 +'hidden'=194 diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpParserBase.py b/src/pycropml/transpiler/antlr_py/grammars/CSharpParserBase.py new file mode 100644 index 00000000..b385eae5 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpParserBase.py @@ -0,0 +1,10 @@ +# Manually generated +# From https://github.com/sanskar-dalvi/Code-Nebula/blob/main/grammar + +from antlr4 import Parser + +class CSharpParserBase(Parser): + """Base class for C# parser with helper methods for parsing context""" + + def __init__(self, input, output=None): + super().__init__(input, output) diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpParserListener.py b/src/pycropml/transpiler/antlr_py/grammars/CSharpParserListener.py index 72f29e2b..acfb31a5 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CSharpParserListener.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpParserListener.py @@ -1,6 +1,6 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\csharp\CSharpParser.g4 by ANTLR 4.8 +# Generated from CSharpParser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .CSharpParser import CSharpParser else: from CSharpParser import CSharpParser @@ -323,6 +323,15 @@ def exitUnary_expression(self, ctx:CSharpParser.Unary_expressionContext): pass + # Enter a parse tree produced by CSharpParser#cast_expression. + def enterCast_expression(self, ctx:CSharpParser.Cast_expressionContext): + pass + + # Exit a parse tree produced by CSharpParser#cast_expression. + def exitCast_expression(self, ctx:CSharpParser.Cast_expressionContext): + pass + + # Enter a parse tree produced by CSharpParser#primary_expression. def enterPrimary_expression(self, ctx:CSharpParser.Primary_expressionContext): pass diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpParserVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/CSharpParserVisitor.py index 09f27a40..3c158f7c 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CSharpParserVisitor.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpParserVisitor.py @@ -1,6 +1,6 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\csharp\CSharpParser.g4 by ANTLR 4.8 +# Generated from CSharpParser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .CSharpParser import CSharpParser else: from CSharpParser import CSharpParser @@ -184,6 +184,11 @@ def visitUnary_expression(self, ctx:CSharpParser.Unary_expressionContext): return self.visitChildren(ctx) + # Visit a parse tree produced by CSharpParser#cast_expression. + def visitCast_expression(self, ctx:CSharpParser.Cast_expressionContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by CSharpParser#primary_expression. def visitPrimary_expression(self, ctx:CSharpParser.Primary_expressionContext): return self.visitChildren(ctx) diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.g4 b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.g4 new file mode 100644 index 00000000..1127f2b1 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.g4 @@ -0,0 +1,48 @@ +// Eclipse Public License - v 1.0, http://www.eclipse.org/legal/epl-v10.html +// Copyright (c) 2013, Christian Wulf (chwchw@gmx.de) +// Copyright (c) 2016-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies. + +// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging + +parser grammar CSharpPreprocessorParser; + +options { + tokenVocab = CSharpLexer; + superClass = CSharpPreprocessorParserBase; +} + +preprocessor_directive + returns[Boolean value] + : DEFINE CONDITIONAL_SYMBOL directive_new_line_or_sharp { this.OnPreprocessorDirectiveDefine(); } # preprocessorDeclaration + | UNDEF CONDITIONAL_SYMBOL directive_new_line_or_sharp { this.OnPreprocessorDirectiveUndef(); } # preprocessorDeclaration + | IF expr = preprocessor_expression directive_new_line_or_sharp { this.OnPreprocessorDirectiveIf(); } # preprocessorConditional + | ELIF expr = preprocessor_expression directive_new_line_or_sharp { this.OnPreprocessorDirectiveElif(); } # preprocessorConditional + | ELSE directive_new_line_or_sharp { this.OnPreprocessorDirectiveElse(); } # preprocessorConditional + | ENDIF directive_new_line_or_sharp { this.OnPreprocessorDirectiveEndif(); } # preprocessorConditional + | LINE (DIGITS STRING? | DEFAULT | DIRECTIVE_HIDDEN) directive_new_line_or_sharp { this.OnPreprocessorDirectiveLine(); } # preprocessorLine + | ERROR TEXT directive_new_line_or_sharp { this.OnPreprocessorDirectiveError(); } # preprocessorDiagnostic + | WARNING TEXT directive_new_line_or_sharp { this.OnPreprocessorDirectiveWarning(); } # preprocessorDiagnostic + | REGION TEXT? directive_new_line_or_sharp { this.OnPreprocessorDirectiveRegion(); } # preprocessorRegion + | ENDREGION TEXT? directive_new_line_or_sharp { this.OnPreprocessorDirectiveEndregion(); } # preprocessorRegion + | PRAGMA TEXT directive_new_line_or_sharp { this.OnPreprocessorDirectivePragma(); } # preprocessorPragma + | NULLABLE TEXT directive_new_line_or_sharp { this.OnPreprocessorDirectiveNullable(); } # preprocessorNullable + ; + +directive_new_line_or_sharp + : DIRECTIVE_NEW_LINE + | EOF + ; + +preprocessor_expression + returns[String value] + : TRUE { this.OnPreprocessorExpressionTrue(); } + | FALSE { this.OnPreprocessorExpressionFalse(); } + | CONDITIONAL_SYMBOL { this.OnPreprocessorExpressionConditionalSymbol(); } + | OPEN_PARENS expr = preprocessor_expression CLOSE_PARENS { this.OnPreprocessorExpressionConditionalOpenParens(); } + | BANG expr = preprocessor_expression { this.OnPreprocessorExpressionConditionalBang(); } + | expr1 = preprocessor_expression OP_EQ expr2 = preprocessor_expression { this.OnPreprocessorExpressionConditionalEq(); } + | expr1 = preprocessor_expression OP_NE expr2 = preprocessor_expression { this.OnPreprocessorExpressionConditionalNe(); } + | expr1 = preprocessor_expression OP_AND expr2 = preprocessor_expression { this.OnPreprocessorExpressionConditionalAnd(); } + | expr1 = preprocessor_expression OP_OR expr2 = preprocessor_expression { this.OnPreprocessorExpressionConditionalOr(); } + ; \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.interp b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.interp new file mode 100644 index 00000000..308b7705 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.interp @@ -0,0 +1,410 @@ +token literal names: +null +'\u00EF\u00BB\u00BF' +null +'/***/' +null +null +null +null +'#' +'abstract' +'add' +'alias' +'__arglist' +'as' +'ascending' +'async' +'await' +'base' +'bool' +'break' +'by' +'byte' +'case' +'catch' +'char' +'checked' +'class' +'const' +'continue' +'decimal' +'default' +'delegate' +'descending' +'do' +'double' +'dynamic' +'else' +'enum' +'equals' +'event' +'explicit' +'extern' +'false' +'finally' +'fixed' +'float' +'for' +'foreach' +'from' +'get' +'goto' +'group' +'if' +'implicit' +'in' +'int' +'interface' +'internal' +'into' +'is' +'join' +'let' +'lock' +'long' +'nameof' +'namespace' +'new' +'null' +'object' +'on' +'operator' +'orderby' +'out' +'override' +'params' +'partial' +'private' +'protected' +'public' +'readonly' +'ref' +'remove' +'return' +'sbyte' +'sealed' +'select' +'set' +'short' +'sizeof' +'stackalloc' +'static' +'string' +'struct' +'switch' +'this' +'throw' +'true' +'try' +'typeof' +'uint' +'ulong' +'unchecked' +'unmanaged' +'unsafe' +'ushort' +'using' +'var' +'virtual' +'void' +'volatile' +'when' +'where' +'while' +'yield' +null +null +null +null +null +null +null +null +null +null +null +'{' +'}' +'[' +']' +'(' +')' +'.' +',' +':' +';' +'+' +'-' +'*' +'/' +'%' +'&' +'|' +'^' +'!' +'~' +'=' +'<' +'>' +'?' +'::' +'??' +'++' +'--' +'&&' +'||' +'->' +'==' +'!=' +'<=' +'>=' +'+=' +'-=' +'*=' +'/=' +'%=' +'&=' +'|=' +'^=' +'<<' +'<<=' +'??=' +'..' +'{{' +null +null +null +null +null +null +null +null +null +null +'define' +'undef' +'elif' +'endif' +'line' +null +null +null +null +null +null +'hidden' +null +null +null +'}}' + +token symbolic names: +null +BYTE_ORDER_MARK +SINGLE_LINE_DOC_COMMENT +EMPTY_DELIMITED_DOC_COMMENT +DELIMITED_DOC_COMMENT +SINGLE_LINE_COMMENT +DELIMITED_COMMENT +WHITESPACES +SHARP +ABSTRACT +ADD +ALIAS +ARGLIST +AS +ASCENDING +ASYNC +AWAIT +BASE +BOOL +BREAK +BY +BYTE +CASE +CATCH +CHAR +CHECKED +CLASS +CONST +CONTINUE +DECIMAL +DEFAULT +DELEGATE +DESCENDING +DO +DOUBLE +DYNAMIC +ELSE +ENUM +EQUALS +EVENT +EXPLICIT +EXTERN +FALSE +FINALLY +FIXED +FLOAT +FOR +FOREACH +FROM +GET +GOTO +GROUP +IF +IMPLICIT +IN +INT +INTERFACE +INTERNAL +INTO +IS +JOIN +LET +LOCK +LONG +NAMEOF +NAMESPACE +NEW +NULL_ +OBJECT +ON +OPERATOR +ORDERBY +OUT +OVERRIDE +PARAMS +PARTIAL +PRIVATE +PROTECTED +PUBLIC +READONLY +REF +REMOVE +RETURN +SBYTE +SEALED +SELECT +SET +SHORT +SIZEOF +STACKALLOC +STATIC +STRING +STRUCT +SWITCH +THIS +THROW +TRUE +TRY +TYPEOF +UINT +ULONG +UNCHECKED +UNMANAGED +UNSAFE +USHORT +USING +VAR +VIRTUAL +VOID +VOLATILE +WHEN +WHERE +WHILE +YIELD +IDENTIFIER +LITERAL_ACCESS +INTEGER_LITERAL +HEX_INTEGER_LITERAL +BIN_INTEGER_LITERAL +REAL_LITERAL +CHARACTER_LITERAL +REGULAR_STRING +VERBATIUM_STRING +INTERPOLATED_REGULAR_STRING_START +INTERPOLATED_VERBATIUM_STRING_START +OPEN_BRACE +CLOSE_BRACE +OPEN_BRACKET +CLOSE_BRACKET +OPEN_PARENS +CLOSE_PARENS +DOT +COMMA +COLON +SEMICOLON +PLUS +MINUS +STAR +DIV +PERCENT +AMP +BITWISE_OR +CARET +BANG +TILDE +ASSIGNMENT +LT +GT +INTERR +DOUBLE_COLON +OP_COALESCING +OP_INC +OP_DEC +OP_AND +OP_OR +OP_PTR +OP_EQ +OP_NE +OP_LE +OP_GE +OP_ADD_ASSIGNMENT +OP_SUB_ASSIGNMENT +OP_MULT_ASSIGNMENT +OP_DIV_ASSIGNMENT +OP_MOD_ASSIGNMENT +OP_AND_ASSIGNMENT +OP_OR_ASSIGNMENT +OP_XOR_ASSIGNMENT +OP_LEFT_SHIFT +OP_LEFT_SHIFT_ASSIGNMENT +OP_COALESCING_ASSIGNMENT +OP_RANGE +DOUBLE_CURLY_INSIDE +OPEN_BRACE_INSIDE +REGULAR_CHAR_INSIDE +VERBATIUM_DOUBLE_QUOTE_INSIDE +DOUBLE_QUOTE_INSIDE +REGULAR_STRING_INSIDE +VERBATIUM_INSIDE_STRING +CLOSE_BRACE_INSIDE +FORMAT_STRING +DIRECTIVE_WHITESPACES +DIGITS +DEFINE +UNDEF +ELIF +ENDIF +LINE +ERROR +WARNING +REGION +ENDREGION +PRAGMA +NULLABLE +DIRECTIVE_HIDDEN +CONDITIONAL_SYMBOL +DIRECTIVE_NEW_LINE +TEXT +DOUBLE_CURLY_CLOSE_INSIDE + +rule names: +preprocessor_directive +directive_new_line_or_sharp +preprocessor_expression + + +atn: +[4, 1, 198, 128, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 38, 8, 0, 1, 0, 1, 0, 3, 0, 42, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 59, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 66, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 81, 8, 0, 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, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 101, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 123, 8, 2, 10, 2, 12, 2, 126, 9, 2, 1, 2, 0, 1, 4, 3, 0, 2, 4, 0, 1, 1, 1, 196, 196, 149, 0, 80, 1, 0, 0, 0, 2, 82, 1, 0, 0, 0, 4, 100, 1, 0, 0, 0, 6, 7, 5, 183, 0, 0, 7, 8, 5, 195, 0, 0, 8, 9, 3, 2, 1, 0, 9, 10, 6, 0, -1, 0, 10, 81, 1, 0, 0, 0, 11, 12, 5, 184, 0, 0, 12, 13, 5, 195, 0, 0, 13, 14, 3, 2, 1, 0, 14, 15, 6, 0, -1, 0, 15, 81, 1, 0, 0, 0, 16, 17, 5, 52, 0, 0, 17, 18, 3, 4, 2, 0, 18, 19, 3, 2, 1, 0, 19, 20, 6, 0, -1, 0, 20, 81, 1, 0, 0, 0, 21, 22, 5, 185, 0, 0, 22, 23, 3, 4, 2, 0, 23, 24, 3, 2, 1, 0, 24, 25, 6, 0, -1, 0, 25, 81, 1, 0, 0, 0, 26, 27, 5, 36, 0, 0, 27, 28, 3, 2, 1, 0, 28, 29, 6, 0, -1, 0, 29, 81, 1, 0, 0, 0, 30, 31, 5, 186, 0, 0, 31, 32, 3, 2, 1, 0, 32, 33, 6, 0, -1, 0, 33, 81, 1, 0, 0, 0, 34, 41, 5, 187, 0, 0, 35, 37, 5, 182, 0, 0, 36, 38, 5, 91, 0, 0, 37, 36, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 42, 1, 0, 0, 0, 39, 42, 5, 30, 0, 0, 40, 42, 5, 194, 0, 0, 41, 35, 1, 0, 0, 0, 41, 39, 1, 0, 0, 0, 41, 40, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 3, 2, 1, 0, 44, 45, 6, 0, -1, 0, 45, 81, 1, 0, 0, 0, 46, 47, 5, 188, 0, 0, 47, 48, 5, 197, 0, 0, 48, 49, 3, 2, 1, 0, 49, 50, 6, 0, -1, 0, 50, 81, 1, 0, 0, 0, 51, 52, 5, 189, 0, 0, 52, 53, 5, 197, 0, 0, 53, 54, 3, 2, 1, 0, 54, 55, 6, 0, -1, 0, 55, 81, 1, 0, 0, 0, 56, 58, 5, 190, 0, 0, 57, 59, 5, 197, 0, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 2, 1, 0, 61, 62, 6, 0, -1, 0, 62, 81, 1, 0, 0, 0, 63, 65, 5, 191, 0, 0, 64, 66, 5, 197, 0, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 3, 2, 1, 0, 68, 69, 6, 0, -1, 0, 69, 81, 1, 0, 0, 0, 70, 71, 5, 192, 0, 0, 71, 72, 5, 197, 0, 0, 72, 73, 3, 2, 1, 0, 73, 74, 6, 0, -1, 0, 74, 81, 1, 0, 0, 0, 75, 76, 5, 193, 0, 0, 76, 77, 5, 197, 0, 0, 77, 78, 3, 2, 1, 0, 78, 79, 6, 0, -1, 0, 79, 81, 1, 0, 0, 0, 80, 6, 1, 0, 0, 0, 80, 11, 1, 0, 0, 0, 80, 16, 1, 0, 0, 0, 80, 21, 1, 0, 0, 0, 80, 26, 1, 0, 0, 0, 80, 30, 1, 0, 0, 0, 80, 34, 1, 0, 0, 0, 80, 46, 1, 0, 0, 0, 80, 51, 1, 0, 0, 0, 80, 56, 1, 0, 0, 0, 80, 63, 1, 0, 0, 0, 80, 70, 1, 0, 0, 0, 80, 75, 1, 0, 0, 0, 81, 1, 1, 0, 0, 0, 82, 83, 7, 0, 0, 0, 83, 3, 1, 0, 0, 0, 84, 85, 6, 2, -1, 0, 85, 86, 5, 96, 0, 0, 86, 101, 6, 2, -1, 0, 87, 88, 5, 42, 0, 0, 88, 101, 6, 2, -1, 0, 89, 90, 5, 195, 0, 0, 90, 101, 6, 2, -1, 0, 91, 92, 5, 129, 0, 0, 92, 93, 3, 4, 2, 0, 93, 94, 5, 130, 0, 0, 94, 95, 6, 2, -1, 0, 95, 101, 1, 0, 0, 0, 96, 97, 5, 143, 0, 0, 97, 98, 3, 4, 2, 5, 98, 99, 6, 2, -1, 0, 99, 101, 1, 0, 0, 0, 100, 84, 1, 0, 0, 0, 100, 87, 1, 0, 0, 0, 100, 89, 1, 0, 0, 0, 100, 91, 1, 0, 0, 0, 100, 96, 1, 0, 0, 0, 101, 124, 1, 0, 0, 0, 102, 103, 10, 4, 0, 0, 103, 104, 5, 156, 0, 0, 104, 105, 3, 4, 2, 5, 105, 106, 6, 2, -1, 0, 106, 123, 1, 0, 0, 0, 107, 108, 10, 3, 0, 0, 108, 109, 5, 157, 0, 0, 109, 110, 3, 4, 2, 4, 110, 111, 6, 2, -1, 0, 111, 123, 1, 0, 0, 0, 112, 113, 10, 2, 0, 0, 113, 114, 5, 153, 0, 0, 114, 115, 3, 4, 2, 3, 115, 116, 6, 2, -1, 0, 116, 123, 1, 0, 0, 0, 117, 118, 10, 1, 0, 0, 118, 119, 5, 154, 0, 0, 119, 120, 3, 4, 2, 2, 120, 121, 6, 2, -1, 0, 121, 123, 1, 0, 0, 0, 122, 102, 1, 0, 0, 0, 122, 107, 1, 0, 0, 0, 122, 112, 1, 0, 0, 0, 122, 117, 1, 0, 0, 0, 123, 126, 1, 0, 0, 0, 124, 122, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 5, 1, 0, 0, 0, 126, 124, 1, 0, 0, 0, 8, 37, 41, 58, 65, 80, 100, 122, 124] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.py b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.py new file mode 100644 index 00000000..5c7731ad --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.py @@ -0,0 +1,1098 @@ +# Generated from CSharpPreprocessorParser.g4 by ANTLR 4.13.2 +# 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 + +if "." in __name__: + from .CSharpPreprocessorParserBase import CSharpPreprocessorParserBase +else: + from CSharpPreprocessorParserBase import CSharpPreprocessorParserBase + +def serializedATN(): + return [ + 4,1,198,128,2,0,7,0,2,1,7,1,2,2,7,2,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,38,8,0,1,0,1,0,3,0,42,8,0,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,59, + 8,0,1,0,1,0,1,0,1,0,1,0,3,0,66,8,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,3,0,81,8,0,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,2,1,2,1,2,1,2,1,2,3,2,101,8,2,1,2,1,2,1,2, + 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, + 1,2,5,2,123,8,2,10,2,12,2,126,9,2,1,2,0,1,4,3,0,2,4,0,1,1,1,196, + 196,149,0,80,1,0,0,0,2,82,1,0,0,0,4,100,1,0,0,0,6,7,5,183,0,0,7, + 8,5,195,0,0,8,9,3,2,1,0,9,10,6,0,-1,0,10,81,1,0,0,0,11,12,5,184, + 0,0,12,13,5,195,0,0,13,14,3,2,1,0,14,15,6,0,-1,0,15,81,1,0,0,0,16, + 17,5,52,0,0,17,18,3,4,2,0,18,19,3,2,1,0,19,20,6,0,-1,0,20,81,1,0, + 0,0,21,22,5,185,0,0,22,23,3,4,2,0,23,24,3,2,1,0,24,25,6,0,-1,0,25, + 81,1,0,0,0,26,27,5,36,0,0,27,28,3,2,1,0,28,29,6,0,-1,0,29,81,1,0, + 0,0,30,31,5,186,0,0,31,32,3,2,1,0,32,33,6,0,-1,0,33,81,1,0,0,0,34, + 41,5,187,0,0,35,37,5,182,0,0,36,38,5,91,0,0,37,36,1,0,0,0,37,38, + 1,0,0,0,38,42,1,0,0,0,39,42,5,30,0,0,40,42,5,194,0,0,41,35,1,0,0, + 0,41,39,1,0,0,0,41,40,1,0,0,0,42,43,1,0,0,0,43,44,3,2,1,0,44,45, + 6,0,-1,0,45,81,1,0,0,0,46,47,5,188,0,0,47,48,5,197,0,0,48,49,3,2, + 1,0,49,50,6,0,-1,0,50,81,1,0,0,0,51,52,5,189,0,0,52,53,5,197,0,0, + 53,54,3,2,1,0,54,55,6,0,-1,0,55,81,1,0,0,0,56,58,5,190,0,0,57,59, + 5,197,0,0,58,57,1,0,0,0,58,59,1,0,0,0,59,60,1,0,0,0,60,61,3,2,1, + 0,61,62,6,0,-1,0,62,81,1,0,0,0,63,65,5,191,0,0,64,66,5,197,0,0,65, + 64,1,0,0,0,65,66,1,0,0,0,66,67,1,0,0,0,67,68,3,2,1,0,68,69,6,0,-1, + 0,69,81,1,0,0,0,70,71,5,192,0,0,71,72,5,197,0,0,72,73,3,2,1,0,73, + 74,6,0,-1,0,74,81,1,0,0,0,75,76,5,193,0,0,76,77,5,197,0,0,77,78, + 3,2,1,0,78,79,6,0,-1,0,79,81,1,0,0,0,80,6,1,0,0,0,80,11,1,0,0,0, + 80,16,1,0,0,0,80,21,1,0,0,0,80,26,1,0,0,0,80,30,1,0,0,0,80,34,1, + 0,0,0,80,46,1,0,0,0,80,51,1,0,0,0,80,56,1,0,0,0,80,63,1,0,0,0,80, + 70,1,0,0,0,80,75,1,0,0,0,81,1,1,0,0,0,82,83,7,0,0,0,83,3,1,0,0,0, + 84,85,6,2,-1,0,85,86,5,96,0,0,86,101,6,2,-1,0,87,88,5,42,0,0,88, + 101,6,2,-1,0,89,90,5,195,0,0,90,101,6,2,-1,0,91,92,5,129,0,0,92, + 93,3,4,2,0,93,94,5,130,0,0,94,95,6,2,-1,0,95,101,1,0,0,0,96,97,5, + 143,0,0,97,98,3,4,2,5,98,99,6,2,-1,0,99,101,1,0,0,0,100,84,1,0,0, + 0,100,87,1,0,0,0,100,89,1,0,0,0,100,91,1,0,0,0,100,96,1,0,0,0,101, + 124,1,0,0,0,102,103,10,4,0,0,103,104,5,156,0,0,104,105,3,4,2,5,105, + 106,6,2,-1,0,106,123,1,0,0,0,107,108,10,3,0,0,108,109,5,157,0,0, + 109,110,3,4,2,4,110,111,6,2,-1,0,111,123,1,0,0,0,112,113,10,2,0, + 0,113,114,5,153,0,0,114,115,3,4,2,3,115,116,6,2,-1,0,116,123,1,0, + 0,0,117,118,10,1,0,0,118,119,5,154,0,0,119,120,3,4,2,2,120,121,6, + 2,-1,0,121,123,1,0,0,0,122,102,1,0,0,0,122,107,1,0,0,0,122,112,1, + 0,0,0,122,117,1,0,0,0,123,126,1,0,0,0,124,122,1,0,0,0,124,125,1, + 0,0,0,125,5,1,0,0,0,126,124,1,0,0,0,8,37,41,58,65,80,100,122,124 + ] + +class CSharpPreprocessorParser ( CSharpPreprocessorParserBase ): + + grammarFileName = "CSharpPreprocessorParser.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + sharedContextCache = PredictionContextCache() + + literalNames = [ "", "'\\u00EF\\u00BB\\u00BF'", "", + "'/***/'", "", "", "", "", + "'#'", "'abstract'", "'add'", "'alias'", "'__arglist'", + "'as'", "'ascending'", "'async'", "'await'", "'base'", + "'bool'", "'break'", "'by'", "'byte'", "'case'", "'catch'", + "'char'", "'checked'", "'class'", "'const'", "'continue'", + "'decimal'", "'default'", "'delegate'", "'descending'", + "'do'", "'double'", "'dynamic'", "'else'", "'enum'", + "'equals'", "'event'", "'explicit'", "'extern'", "'false'", + "'finally'", "'fixed'", "'float'", "'for'", "'foreach'", + "'from'", "'get'", "'goto'", "'group'", "'if'", "'implicit'", + "'in'", "'int'", "'interface'", "'internal'", "'into'", + "'is'", "'join'", "'let'", "'lock'", "'long'", "'nameof'", + "'namespace'", "'new'", "'null'", "'object'", "'on'", + "'operator'", "'orderby'", "'out'", "'override'", "'params'", + "'partial'", "'private'", "'protected'", "'public'", + "'readonly'", "'ref'", "'remove'", "'return'", "'sbyte'", + "'sealed'", "'select'", "'set'", "'short'", "'sizeof'", + "'stackalloc'", "'static'", "'string'", "'struct'", + "'switch'", "'this'", "'throw'", "'true'", "'try'", + "'typeof'", "'uint'", "'ulong'", "'unchecked'", "'unmanaged'", + "'unsafe'", "'ushort'", "'using'", "'var'", "'virtual'", + "'void'", "'volatile'", "'when'", "'where'", "'while'", + "'yield'", "", "", "", "", + "", "", "", "", + "", "", "", "'{'", "'}'", + "'['", "']'", "'('", "')'", "'.'", "','", "':'", "';'", + "'+'", "'-'", "'*'", "'/'", "'%'", "'&'", "'|'", "'^'", + "'!'", "'~'", "'='", "'<'", "'>'", "'?'", "'::'", "'??'", + "'++'", "'--'", "'&&'", "'||'", "'->'", "'=='", "'!='", + "'<='", "'>='", "'+='", "'-='", "'*='", "'/='", "'%='", + "'&='", "'|='", "'^='", "'<<'", "'<<='", "'??='", "'..'", + "'{{'", "", "", "", "", + "", "", "", "", + "", "", "'define'", "'undef'", "'elif'", + "'endif'", "'line'", "", "", "", + "", "", "", "'hidden'", + "", "", "", "'}}'" ] + + symbolicNames = [ "", "BYTE_ORDER_MARK", "SINGLE_LINE_DOC_COMMENT", + "EMPTY_DELIMITED_DOC_COMMENT", "DELIMITED_DOC_COMMENT", + "SINGLE_LINE_COMMENT", "DELIMITED_COMMENT", "WHITESPACES", + "SHARP", "ABSTRACT", "ADD", "ALIAS", "ARGLIST", "AS", + "ASCENDING", "ASYNC", "AWAIT", "BASE", "BOOL", "BREAK", + "BY", "BYTE", "CASE", "CATCH", "CHAR", "CHECKED", + "CLASS", "CONST", "CONTINUE", "DECIMAL", "DEFAULT", + "DELEGATE", "DESCENDING", "DO", "DOUBLE", "DYNAMIC", + "ELSE", "ENUM", "EQUALS", "EVENT", "EXPLICIT", "EXTERN", + "FALSE", "FINALLY", "FIXED", "FLOAT", "FOR", "FOREACH", + "FROM", "GET", "GOTO", "GROUP", "IF", "IMPLICIT", + "IN", "INT", "INTERFACE", "INTERNAL", "INTO", "IS", + "JOIN", "LET", "LOCK", "LONG", "NAMEOF", "NAMESPACE", + "NEW", "NULL_", "OBJECT", "ON", "OPERATOR", "ORDERBY", + "OUT", "OVERRIDE", "PARAMS", "PARTIAL", "PRIVATE", + "PROTECTED", "PUBLIC", "READONLY", "REF", "REMOVE", + "RETURN", "SBYTE", "SEALED", "SELECT", "SET", "SHORT", + "SIZEOF", "STACKALLOC", "STATIC", "STRING", "STRUCT", + "SWITCH", "THIS", "THROW", "TRUE", "TRY", "TYPEOF", + "UINT", "ULONG", "UNCHECKED", "UNMANAGED", "UNSAFE", + "USHORT", "USING", "VAR", "VIRTUAL", "VOID", "VOLATILE", + "WHEN", "WHERE", "WHILE", "YIELD", "IDENTIFIER", "LITERAL_ACCESS", + "INTEGER_LITERAL", "HEX_INTEGER_LITERAL", "BIN_INTEGER_LITERAL", + "REAL_LITERAL", "CHARACTER_LITERAL", "REGULAR_STRING", + "VERBATIUM_STRING", "INTERPOLATED_REGULAR_STRING_START", + "INTERPOLATED_VERBATIUM_STRING_START", "OPEN_BRACE", + "CLOSE_BRACE", "OPEN_BRACKET", "CLOSE_BRACKET", "OPEN_PARENS", + "CLOSE_PARENS", "DOT", "COMMA", "COLON", "SEMICOLON", + "PLUS", "MINUS", "STAR", "DIV", "PERCENT", "AMP", + "BITWISE_OR", "CARET", "BANG", "TILDE", "ASSIGNMENT", + "LT", "GT", "INTERR", "DOUBLE_COLON", "OP_COALESCING", + "OP_INC", "OP_DEC", "OP_AND", "OP_OR", "OP_PTR", "OP_EQ", + "OP_NE", "OP_LE", "OP_GE", "OP_ADD_ASSIGNMENT", "OP_SUB_ASSIGNMENT", + "OP_MULT_ASSIGNMENT", "OP_DIV_ASSIGNMENT", "OP_MOD_ASSIGNMENT", + "OP_AND_ASSIGNMENT", "OP_OR_ASSIGNMENT", "OP_XOR_ASSIGNMENT", + "OP_LEFT_SHIFT", "OP_LEFT_SHIFT_ASSIGNMENT", "OP_COALESCING_ASSIGNMENT", + "OP_RANGE", "DOUBLE_CURLY_INSIDE", "OPEN_BRACE_INSIDE", + "REGULAR_CHAR_INSIDE", "VERBATIUM_DOUBLE_QUOTE_INSIDE", + "DOUBLE_QUOTE_INSIDE", "REGULAR_STRING_INSIDE", "VERBATIUM_INSIDE_STRING", + "CLOSE_BRACE_INSIDE", "FORMAT_STRING", "DIRECTIVE_WHITESPACES", + "DIGITS", "DEFINE", "UNDEF", "ELIF", "ENDIF", "LINE", + "ERROR", "WARNING", "REGION", "ENDREGION", "PRAGMA", + "NULLABLE", "DIRECTIVE_HIDDEN", "CONDITIONAL_SYMBOL", + "DIRECTIVE_NEW_LINE", "TEXT", "DOUBLE_CURLY_CLOSE_INSIDE" ] + + RULE_preprocessor_directive = 0 + RULE_directive_new_line_or_sharp = 1 + RULE_preprocessor_expression = 2 + + ruleNames = [ "preprocessor_directive", "directive_new_line_or_sharp", + "preprocessor_expression" ] + + EOF = Token.EOF + BYTE_ORDER_MARK=1 + SINGLE_LINE_DOC_COMMENT=2 + EMPTY_DELIMITED_DOC_COMMENT=3 + DELIMITED_DOC_COMMENT=4 + SINGLE_LINE_COMMENT=5 + DELIMITED_COMMENT=6 + WHITESPACES=7 + SHARP=8 + ABSTRACT=9 + ADD=10 + ALIAS=11 + ARGLIST=12 + AS=13 + ASCENDING=14 + ASYNC=15 + AWAIT=16 + BASE=17 + BOOL=18 + BREAK=19 + BY=20 + BYTE=21 + CASE=22 + CATCH=23 + CHAR=24 + CHECKED=25 + CLASS=26 + CONST=27 + CONTINUE=28 + DECIMAL=29 + DEFAULT=30 + DELEGATE=31 + DESCENDING=32 + DO=33 + DOUBLE=34 + DYNAMIC=35 + ELSE=36 + ENUM=37 + EQUALS=38 + EVENT=39 + EXPLICIT=40 + EXTERN=41 + FALSE=42 + FINALLY=43 + FIXED=44 + FLOAT=45 + FOR=46 + FOREACH=47 + FROM=48 + GET=49 + GOTO=50 + GROUP=51 + IF=52 + IMPLICIT=53 + IN=54 + INT=55 + INTERFACE=56 + INTERNAL=57 + INTO=58 + IS=59 + JOIN=60 + LET=61 + LOCK=62 + LONG=63 + NAMEOF=64 + NAMESPACE=65 + NEW=66 + NULL_=67 + OBJECT=68 + ON=69 + OPERATOR=70 + ORDERBY=71 + OUT=72 + OVERRIDE=73 + PARAMS=74 + PARTIAL=75 + PRIVATE=76 + PROTECTED=77 + PUBLIC=78 + READONLY=79 + REF=80 + REMOVE=81 + RETURN=82 + SBYTE=83 + SEALED=84 + SELECT=85 + SET=86 + SHORT=87 + SIZEOF=88 + STACKALLOC=89 + STATIC=90 + STRING=91 + STRUCT=92 + SWITCH=93 + THIS=94 + THROW=95 + TRUE=96 + TRY=97 + TYPEOF=98 + UINT=99 + ULONG=100 + UNCHECKED=101 + UNMANAGED=102 + UNSAFE=103 + USHORT=104 + USING=105 + VAR=106 + VIRTUAL=107 + VOID=108 + VOLATILE=109 + WHEN=110 + WHERE=111 + WHILE=112 + YIELD=113 + IDENTIFIER=114 + LITERAL_ACCESS=115 + INTEGER_LITERAL=116 + HEX_INTEGER_LITERAL=117 + BIN_INTEGER_LITERAL=118 + REAL_LITERAL=119 + CHARACTER_LITERAL=120 + REGULAR_STRING=121 + VERBATIUM_STRING=122 + INTERPOLATED_REGULAR_STRING_START=123 + INTERPOLATED_VERBATIUM_STRING_START=124 + OPEN_BRACE=125 + CLOSE_BRACE=126 + OPEN_BRACKET=127 + CLOSE_BRACKET=128 + OPEN_PARENS=129 + CLOSE_PARENS=130 + DOT=131 + COMMA=132 + COLON=133 + SEMICOLON=134 + PLUS=135 + MINUS=136 + STAR=137 + DIV=138 + PERCENT=139 + AMP=140 + BITWISE_OR=141 + CARET=142 + BANG=143 + TILDE=144 + ASSIGNMENT=145 + LT=146 + GT=147 + INTERR=148 + DOUBLE_COLON=149 + OP_COALESCING=150 + OP_INC=151 + OP_DEC=152 + OP_AND=153 + OP_OR=154 + OP_PTR=155 + OP_EQ=156 + OP_NE=157 + OP_LE=158 + OP_GE=159 + OP_ADD_ASSIGNMENT=160 + OP_SUB_ASSIGNMENT=161 + OP_MULT_ASSIGNMENT=162 + OP_DIV_ASSIGNMENT=163 + OP_MOD_ASSIGNMENT=164 + OP_AND_ASSIGNMENT=165 + OP_OR_ASSIGNMENT=166 + OP_XOR_ASSIGNMENT=167 + OP_LEFT_SHIFT=168 + OP_LEFT_SHIFT_ASSIGNMENT=169 + OP_COALESCING_ASSIGNMENT=170 + OP_RANGE=171 + DOUBLE_CURLY_INSIDE=172 + OPEN_BRACE_INSIDE=173 + REGULAR_CHAR_INSIDE=174 + VERBATIUM_DOUBLE_QUOTE_INSIDE=175 + DOUBLE_QUOTE_INSIDE=176 + REGULAR_STRING_INSIDE=177 + VERBATIUM_INSIDE_STRING=178 + CLOSE_BRACE_INSIDE=179 + FORMAT_STRING=180 + DIRECTIVE_WHITESPACES=181 + DIGITS=182 + DEFINE=183 + UNDEF=184 + ELIF=185 + ENDIF=186 + LINE=187 + ERROR=188 + WARNING=189 + REGION=190 + ENDREGION=191 + PRAGMA=192 + NULLABLE=193 + DIRECTIVE_HIDDEN=194 + CONDITIONAL_SYMBOL=195 + DIRECTIVE_NEW_LINE=196 + TEXT=197 + DOUBLE_CURLY_CLOSE_INSIDE=198 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.2") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + + + + class Preprocessor_directiveContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.value = None + + + def getRuleIndex(self): + return CSharpPreprocessorParser.RULE_preprocessor_directive + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + self.value = ctx.value + + + + class PreprocessorDiagnosticContext(Preprocessor_directiveContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a CSharpPreprocessorParser.Preprocessor_directiveContext + super().__init__(parser) + self.copyFrom(ctx) + + def ERROR(self): + return self.getToken(CSharpPreprocessorParser.ERROR, 0) + def TEXT(self): + return self.getToken(CSharpPreprocessorParser.TEXT, 0) + def directive_new_line_or_sharp(self): + return self.getTypedRuleContext(CSharpPreprocessorParser.Directive_new_line_or_sharpContext,0) + + def WARNING(self): + return self.getToken(CSharpPreprocessorParser.WARNING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreprocessorDiagnostic" ): + listener.enterPreprocessorDiagnostic(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreprocessorDiagnostic" ): + listener.exitPreprocessorDiagnostic(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPreprocessorDiagnostic" ): + return visitor.visitPreprocessorDiagnostic(self) + else: + return visitor.visitChildren(self) + + + class PreprocessorNullableContext(Preprocessor_directiveContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a CSharpPreprocessorParser.Preprocessor_directiveContext + super().__init__(parser) + self.copyFrom(ctx) + + def NULLABLE(self): + return self.getToken(CSharpPreprocessorParser.NULLABLE, 0) + def TEXT(self): + return self.getToken(CSharpPreprocessorParser.TEXT, 0) + def directive_new_line_or_sharp(self): + return self.getTypedRuleContext(CSharpPreprocessorParser.Directive_new_line_or_sharpContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreprocessorNullable" ): + listener.enterPreprocessorNullable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreprocessorNullable" ): + listener.exitPreprocessorNullable(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPreprocessorNullable" ): + return visitor.visitPreprocessorNullable(self) + else: + return visitor.visitChildren(self) + + + class PreprocessorRegionContext(Preprocessor_directiveContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a CSharpPreprocessorParser.Preprocessor_directiveContext + super().__init__(parser) + self.copyFrom(ctx) + + def REGION(self): + return self.getToken(CSharpPreprocessorParser.REGION, 0) + def directive_new_line_or_sharp(self): + return self.getTypedRuleContext(CSharpPreprocessorParser.Directive_new_line_or_sharpContext,0) + + def TEXT(self): + return self.getToken(CSharpPreprocessorParser.TEXT, 0) + def ENDREGION(self): + return self.getToken(CSharpPreprocessorParser.ENDREGION, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreprocessorRegion" ): + listener.enterPreprocessorRegion(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreprocessorRegion" ): + listener.exitPreprocessorRegion(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPreprocessorRegion" ): + return visitor.visitPreprocessorRegion(self) + else: + return visitor.visitChildren(self) + + + class PreprocessorDeclarationContext(Preprocessor_directiveContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a CSharpPreprocessorParser.Preprocessor_directiveContext + super().__init__(parser) + self.copyFrom(ctx) + + def DEFINE(self): + return self.getToken(CSharpPreprocessorParser.DEFINE, 0) + def CONDITIONAL_SYMBOL(self): + return self.getToken(CSharpPreprocessorParser.CONDITIONAL_SYMBOL, 0) + def directive_new_line_or_sharp(self): + return self.getTypedRuleContext(CSharpPreprocessorParser.Directive_new_line_or_sharpContext,0) + + def UNDEF(self): + return self.getToken(CSharpPreprocessorParser.UNDEF, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreprocessorDeclaration" ): + listener.enterPreprocessorDeclaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreprocessorDeclaration" ): + listener.exitPreprocessorDeclaration(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPreprocessorDeclaration" ): + return visitor.visitPreprocessorDeclaration(self) + else: + return visitor.visitChildren(self) + + + class PreprocessorConditionalContext(Preprocessor_directiveContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a CSharpPreprocessorParser.Preprocessor_directiveContext + super().__init__(parser) + self.expr = None # Preprocessor_expressionContext + self.copyFrom(ctx) + + def IF(self): + return self.getToken(CSharpPreprocessorParser.IF, 0) + def directive_new_line_or_sharp(self): + return self.getTypedRuleContext(CSharpPreprocessorParser.Directive_new_line_or_sharpContext,0) + + def preprocessor_expression(self): + return self.getTypedRuleContext(CSharpPreprocessorParser.Preprocessor_expressionContext,0) + + def ELIF(self): + return self.getToken(CSharpPreprocessorParser.ELIF, 0) + def ELSE(self): + return self.getToken(CSharpPreprocessorParser.ELSE, 0) + def ENDIF(self): + return self.getToken(CSharpPreprocessorParser.ENDIF, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreprocessorConditional" ): + listener.enterPreprocessorConditional(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreprocessorConditional" ): + listener.exitPreprocessorConditional(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPreprocessorConditional" ): + return visitor.visitPreprocessorConditional(self) + else: + return visitor.visitChildren(self) + + + class PreprocessorPragmaContext(Preprocessor_directiveContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a CSharpPreprocessorParser.Preprocessor_directiveContext + super().__init__(parser) + self.copyFrom(ctx) + + def PRAGMA(self): + return self.getToken(CSharpPreprocessorParser.PRAGMA, 0) + def TEXT(self): + return self.getToken(CSharpPreprocessorParser.TEXT, 0) + def directive_new_line_or_sharp(self): + return self.getTypedRuleContext(CSharpPreprocessorParser.Directive_new_line_or_sharpContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreprocessorPragma" ): + listener.enterPreprocessorPragma(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreprocessorPragma" ): + listener.exitPreprocessorPragma(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPreprocessorPragma" ): + return visitor.visitPreprocessorPragma(self) + else: + return visitor.visitChildren(self) + + + class PreprocessorLineContext(Preprocessor_directiveContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a CSharpPreprocessorParser.Preprocessor_directiveContext + super().__init__(parser) + self.copyFrom(ctx) + + def LINE(self): + return self.getToken(CSharpPreprocessorParser.LINE, 0) + def directive_new_line_or_sharp(self): + return self.getTypedRuleContext(CSharpPreprocessorParser.Directive_new_line_or_sharpContext,0) + + def DIGITS(self): + return self.getToken(CSharpPreprocessorParser.DIGITS, 0) + def DEFAULT(self): + return self.getToken(CSharpPreprocessorParser.DEFAULT, 0) + def DIRECTIVE_HIDDEN(self): + return self.getToken(CSharpPreprocessorParser.DIRECTIVE_HIDDEN, 0) + def STRING(self): + return self.getToken(CSharpPreprocessorParser.STRING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreprocessorLine" ): + listener.enterPreprocessorLine(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreprocessorLine" ): + listener.exitPreprocessorLine(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPreprocessorLine" ): + return visitor.visitPreprocessorLine(self) + else: + return visitor.visitChildren(self) + + + + def preprocessor_directive(self): + + localctx = CSharpPreprocessorParser.Preprocessor_directiveContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_preprocessor_directive) + self._la = 0 # Token type + try: + self.state = 80 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [183]: + localctx = CSharpPreprocessorParser.PreprocessorDeclarationContext(self, localctx) + self.enterOuterAlt(localctx, 1) + self.state = 6 + self.match(CSharpPreprocessorParser.DEFINE) + self.state = 7 + self.match(CSharpPreprocessorParser.CONDITIONAL_SYMBOL) + self.state = 8 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveDefine(); + pass + elif token in [184]: + localctx = CSharpPreprocessorParser.PreprocessorDeclarationContext(self, localctx) + self.enterOuterAlt(localctx, 2) + self.state = 11 + self.match(CSharpPreprocessorParser.UNDEF) + self.state = 12 + self.match(CSharpPreprocessorParser.CONDITIONAL_SYMBOL) + self.state = 13 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveUndef(); + pass + elif token in [52]: + localctx = CSharpPreprocessorParser.PreprocessorConditionalContext(self, localctx) + self.enterOuterAlt(localctx, 3) + self.state = 16 + self.match(CSharpPreprocessorParser.IF) + self.state = 17 + localctx.expr = self.preprocessor_expression(0) + self.state = 18 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveIf(); + pass + elif token in [185]: + localctx = CSharpPreprocessorParser.PreprocessorConditionalContext(self, localctx) + self.enterOuterAlt(localctx, 4) + self.state = 21 + self.match(CSharpPreprocessorParser.ELIF) + self.state = 22 + localctx.expr = self.preprocessor_expression(0) + self.state = 23 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveElif(); + pass + elif token in [36]: + localctx = CSharpPreprocessorParser.PreprocessorConditionalContext(self, localctx) + self.enterOuterAlt(localctx, 5) + self.state = 26 + self.match(CSharpPreprocessorParser.ELSE) + self.state = 27 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveElse(); + pass + elif token in [186]: + localctx = CSharpPreprocessorParser.PreprocessorConditionalContext(self, localctx) + self.enterOuterAlt(localctx, 6) + self.state = 30 + self.match(CSharpPreprocessorParser.ENDIF) + self.state = 31 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveEndif(); + pass + elif token in [187]: + localctx = CSharpPreprocessorParser.PreprocessorLineContext(self, localctx) + self.enterOuterAlt(localctx, 7) + self.state = 34 + self.match(CSharpPreprocessorParser.LINE) + self.state = 41 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [182]: + self.state = 35 + self.match(CSharpPreprocessorParser.DIGITS) + self.state = 37 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==91: + self.state = 36 + self.match(CSharpPreprocessorParser.STRING) + + + pass + elif token in [30]: + self.state = 39 + self.match(CSharpPreprocessorParser.DEFAULT) + pass + elif token in [194]: + self.state = 40 + self.match(CSharpPreprocessorParser.DIRECTIVE_HIDDEN) + pass + else: + raise NoViableAltException(self) + + self.state = 43 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveLine(); + pass + elif token in [188]: + localctx = CSharpPreprocessorParser.PreprocessorDiagnosticContext(self, localctx) + self.enterOuterAlt(localctx, 8) + self.state = 46 + self.match(CSharpPreprocessorParser.ERROR) + self.state = 47 + self.match(CSharpPreprocessorParser.TEXT) + self.state = 48 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveError(); + pass + elif token in [189]: + localctx = CSharpPreprocessorParser.PreprocessorDiagnosticContext(self, localctx) + self.enterOuterAlt(localctx, 9) + self.state = 51 + self.match(CSharpPreprocessorParser.WARNING) + self.state = 52 + self.match(CSharpPreprocessorParser.TEXT) + self.state = 53 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveWarning(); + pass + elif token in [190]: + localctx = CSharpPreprocessorParser.PreprocessorRegionContext(self, localctx) + self.enterOuterAlt(localctx, 10) + self.state = 56 + self.match(CSharpPreprocessorParser.REGION) + self.state = 58 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==197: + self.state = 57 + self.match(CSharpPreprocessorParser.TEXT) + + + self.state = 60 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveRegion(); + pass + elif token in [191]: + localctx = CSharpPreprocessorParser.PreprocessorRegionContext(self, localctx) + self.enterOuterAlt(localctx, 11) + self.state = 63 + self.match(CSharpPreprocessorParser.ENDREGION) + self.state = 65 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la==197: + self.state = 64 + self.match(CSharpPreprocessorParser.TEXT) + + + self.state = 67 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveEndregion(); + pass + elif token in [192]: + localctx = CSharpPreprocessorParser.PreprocessorPragmaContext(self, localctx) + self.enterOuterAlt(localctx, 12) + self.state = 70 + self.match(CSharpPreprocessorParser.PRAGMA) + self.state = 71 + self.match(CSharpPreprocessorParser.TEXT) + self.state = 72 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectivePragma(); + pass + elif token in [193]: + localctx = CSharpPreprocessorParser.PreprocessorNullableContext(self, localctx) + self.enterOuterAlt(localctx, 13) + self.state = 75 + self.match(CSharpPreprocessorParser.NULLABLE) + self.state = 76 + self.match(CSharpPreprocessorParser.TEXT) + self.state = 77 + self.directive_new_line_or_sharp() + this.OnPreprocessorDirectiveNullable(); + 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 Directive_new_line_or_sharpContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def DIRECTIVE_NEW_LINE(self): + return self.getToken(CSharpPreprocessorParser.DIRECTIVE_NEW_LINE, 0) + + def EOF(self): + return self.getToken(CSharpPreprocessorParser.EOF, 0) + + def getRuleIndex(self): + return CSharpPreprocessorParser.RULE_directive_new_line_or_sharp + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDirective_new_line_or_sharp" ): + listener.enterDirective_new_line_or_sharp(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDirective_new_line_or_sharp" ): + listener.exitDirective_new_line_or_sharp(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDirective_new_line_or_sharp" ): + return visitor.visitDirective_new_line_or_sharp(self) + else: + return visitor.visitChildren(self) + + + + + def directive_new_line_or_sharp(self): + + localctx = CSharpPreprocessorParser.Directive_new_line_or_sharpContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_directive_new_line_or_sharp) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 82 + _la = self._input.LA(1) + if not(_la==-1 or _la==196): + 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 Preprocessor_expressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + self.value = None + self.expr1 = None # Preprocessor_expressionContext + self.expr = None # Preprocessor_expressionContext + self.expr2 = None # Preprocessor_expressionContext + + def TRUE(self): + return self.getToken(CSharpPreprocessorParser.TRUE, 0) + + def FALSE(self): + return self.getToken(CSharpPreprocessorParser.FALSE, 0) + + def CONDITIONAL_SYMBOL(self): + return self.getToken(CSharpPreprocessorParser.CONDITIONAL_SYMBOL, 0) + + def OPEN_PARENS(self): + return self.getToken(CSharpPreprocessorParser.OPEN_PARENS, 0) + + def CLOSE_PARENS(self): + return self.getToken(CSharpPreprocessorParser.CLOSE_PARENS, 0) + + def preprocessor_expression(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(CSharpPreprocessorParser.Preprocessor_expressionContext) + else: + return self.getTypedRuleContext(CSharpPreprocessorParser.Preprocessor_expressionContext,i) + + + def BANG(self): + return self.getToken(CSharpPreprocessorParser.BANG, 0) + + def OP_EQ(self): + return self.getToken(CSharpPreprocessorParser.OP_EQ, 0) + + def OP_NE(self): + return self.getToken(CSharpPreprocessorParser.OP_NE, 0) + + def OP_AND(self): + return self.getToken(CSharpPreprocessorParser.OP_AND, 0) + + def OP_OR(self): + return self.getToken(CSharpPreprocessorParser.OP_OR, 0) + + def getRuleIndex(self): + return CSharpPreprocessorParser.RULE_preprocessor_expression + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPreprocessor_expression" ): + listener.enterPreprocessor_expression(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPreprocessor_expression" ): + listener.exitPreprocessor_expression(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPreprocessor_expression" ): + return visitor.visitPreprocessor_expression(self) + else: + return visitor.visitChildren(self) + + + + def preprocessor_expression(self, _p:int=0): + _parentctx = self._ctx + _parentState = self.state + localctx = CSharpPreprocessorParser.Preprocessor_expressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 4 + self.enterRecursionRule(localctx, 4, self.RULE_preprocessor_expression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 100 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [96]: + self.state = 85 + self.match(CSharpPreprocessorParser.TRUE) + this.OnPreprocessorExpressionTrue(); + pass + elif token in [42]: + self.state = 87 + self.match(CSharpPreprocessorParser.FALSE) + this.OnPreprocessorExpressionFalse(); + pass + elif token in [195]: + self.state = 89 + self.match(CSharpPreprocessorParser.CONDITIONAL_SYMBOL) + this.OnPreprocessorExpressionConditionalSymbol(); + pass + elif token in [129]: + self.state = 91 + self.match(CSharpPreprocessorParser.OPEN_PARENS) + self.state = 92 + localctx.expr = self.preprocessor_expression(0) + self.state = 93 + self.match(CSharpPreprocessorParser.CLOSE_PARENS) + this.OnPreprocessorExpressionConditionalOpenParens(); + pass + elif token in [143]: + self.state = 96 + self.match(CSharpPreprocessorParser.BANG) + self.state = 97 + localctx.expr = self.preprocessor_expression(5) + this.OnPreprocessorExpressionConditionalBang(); + pass + else: + raise NoViableAltException(self) + + self._ctx.stop = self._input.LT(-1) + self.state = 124 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,7,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 = 122 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,6,self._ctx) + if la_ == 1: + localctx = CSharpPreprocessorParser.Preprocessor_expressionContext(self, _parentctx, _parentState) + localctx.expr1 = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_preprocessor_expression) + self.state = 102 + if not self.precpred(self._ctx, 4): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") + self.state = 103 + self.match(CSharpPreprocessorParser.OP_EQ) + self.state = 104 + localctx.expr2 = self.preprocessor_expression(5) + this.OnPreprocessorExpressionConditionalEq(); + pass + + elif la_ == 2: + localctx = CSharpPreprocessorParser.Preprocessor_expressionContext(self, _parentctx, _parentState) + localctx.expr1 = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_preprocessor_expression) + self.state = 107 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 108 + self.match(CSharpPreprocessorParser.OP_NE) + self.state = 109 + localctx.expr2 = self.preprocessor_expression(4) + this.OnPreprocessorExpressionConditionalNe(); + pass + + elif la_ == 3: + localctx = CSharpPreprocessorParser.Preprocessor_expressionContext(self, _parentctx, _parentState) + localctx.expr1 = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_preprocessor_expression) + self.state = 112 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 113 + self.match(CSharpPreprocessorParser.OP_AND) + self.state = 114 + localctx.expr2 = self.preprocessor_expression(3) + this.OnPreprocessorExpressionConditionalAnd(); + pass + + elif la_ == 4: + localctx = CSharpPreprocessorParser.Preprocessor_expressionContext(self, _parentctx, _parentState) + localctx.expr1 = _prevctx + self.pushNewRecursionContext(localctx, _startState, self.RULE_preprocessor_expression) + self.state = 117 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 118 + self.match(CSharpPreprocessorParser.OP_OR) + self.state = 119 + localctx.expr2 = self.preprocessor_expression(2) + this.OnPreprocessorExpressionConditionalOr(); + pass + + + self.state = 126 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,7,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 + + + + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): + if self._predicates == None: + self._predicates = dict() + self._predicates[2] = self.preprocessor_expression_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 preprocessor_expression_sempred(self, localctx:Preprocessor_expressionContext, predIndex:int): + if predIndex == 0: + return self.precpred(self._ctx, 4) + + + if predIndex == 1: + return self.precpred(self._ctx, 3) + + + if predIndex == 2: + return self.precpred(self._ctx, 2) + + + if predIndex == 3: + return self.precpred(self._ctx, 1) + + + + + diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.tokens b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.tokens new file mode 100644 index 00000000..0fc73692 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParser.tokens @@ -0,0 +1,361 @@ +BYTE_ORDER_MARK=1 +SINGLE_LINE_DOC_COMMENT=2 +EMPTY_DELIMITED_DOC_COMMENT=3 +DELIMITED_DOC_COMMENT=4 +SINGLE_LINE_COMMENT=5 +DELIMITED_COMMENT=6 +WHITESPACES=7 +SHARP=8 +ABSTRACT=9 +ADD=10 +ALIAS=11 +ARGLIST=12 +AS=13 +ASCENDING=14 +ASYNC=15 +AWAIT=16 +BASE=17 +BOOL=18 +BREAK=19 +BY=20 +BYTE=21 +CASE=22 +CATCH=23 +CHAR=24 +CHECKED=25 +CLASS=26 +CONST=27 +CONTINUE=28 +DECIMAL=29 +DEFAULT=30 +DELEGATE=31 +DESCENDING=32 +DO=33 +DOUBLE=34 +DYNAMIC=35 +ELSE=36 +ENUM=37 +EQUALS=38 +EVENT=39 +EXPLICIT=40 +EXTERN=41 +FALSE=42 +FINALLY=43 +FIXED=44 +FLOAT=45 +FOR=46 +FOREACH=47 +FROM=48 +GET=49 +GOTO=50 +GROUP=51 +IF=52 +IMPLICIT=53 +IN=54 +INT=55 +INTERFACE=56 +INTERNAL=57 +INTO=58 +IS=59 +JOIN=60 +LET=61 +LOCK=62 +LONG=63 +NAMEOF=64 +NAMESPACE=65 +NEW=66 +NULL_=67 +OBJECT=68 +ON=69 +OPERATOR=70 +ORDERBY=71 +OUT=72 +OVERRIDE=73 +PARAMS=74 +PARTIAL=75 +PRIVATE=76 +PROTECTED=77 +PUBLIC=78 +READONLY=79 +REF=80 +REMOVE=81 +RETURN=82 +SBYTE=83 +SEALED=84 +SELECT=85 +SET=86 +SHORT=87 +SIZEOF=88 +STACKALLOC=89 +STATIC=90 +STRING=91 +STRUCT=92 +SWITCH=93 +THIS=94 +THROW=95 +TRUE=96 +TRY=97 +TYPEOF=98 +UINT=99 +ULONG=100 +UNCHECKED=101 +UNMANAGED=102 +UNSAFE=103 +USHORT=104 +USING=105 +VAR=106 +VIRTUAL=107 +VOID=108 +VOLATILE=109 +WHEN=110 +WHERE=111 +WHILE=112 +YIELD=113 +IDENTIFIER=114 +LITERAL_ACCESS=115 +INTEGER_LITERAL=116 +HEX_INTEGER_LITERAL=117 +BIN_INTEGER_LITERAL=118 +REAL_LITERAL=119 +CHARACTER_LITERAL=120 +REGULAR_STRING=121 +VERBATIUM_STRING=122 +INTERPOLATED_REGULAR_STRING_START=123 +INTERPOLATED_VERBATIUM_STRING_START=124 +OPEN_BRACE=125 +CLOSE_BRACE=126 +OPEN_BRACKET=127 +CLOSE_BRACKET=128 +OPEN_PARENS=129 +CLOSE_PARENS=130 +DOT=131 +COMMA=132 +COLON=133 +SEMICOLON=134 +PLUS=135 +MINUS=136 +STAR=137 +DIV=138 +PERCENT=139 +AMP=140 +BITWISE_OR=141 +CARET=142 +BANG=143 +TILDE=144 +ASSIGNMENT=145 +LT=146 +GT=147 +INTERR=148 +DOUBLE_COLON=149 +OP_COALESCING=150 +OP_INC=151 +OP_DEC=152 +OP_AND=153 +OP_OR=154 +OP_PTR=155 +OP_EQ=156 +OP_NE=157 +OP_LE=158 +OP_GE=159 +OP_ADD_ASSIGNMENT=160 +OP_SUB_ASSIGNMENT=161 +OP_MULT_ASSIGNMENT=162 +OP_DIV_ASSIGNMENT=163 +OP_MOD_ASSIGNMENT=164 +OP_AND_ASSIGNMENT=165 +OP_OR_ASSIGNMENT=166 +OP_XOR_ASSIGNMENT=167 +OP_LEFT_SHIFT=168 +OP_LEFT_SHIFT_ASSIGNMENT=169 +OP_COALESCING_ASSIGNMENT=170 +OP_RANGE=171 +DOUBLE_CURLY_INSIDE=172 +OPEN_BRACE_INSIDE=173 +REGULAR_CHAR_INSIDE=174 +VERBATIUM_DOUBLE_QUOTE_INSIDE=175 +DOUBLE_QUOTE_INSIDE=176 +REGULAR_STRING_INSIDE=177 +VERBATIUM_INSIDE_STRING=178 +CLOSE_BRACE_INSIDE=179 +FORMAT_STRING=180 +DIRECTIVE_WHITESPACES=181 +DIGITS=182 +DEFINE=183 +UNDEF=184 +ELIF=185 +ENDIF=186 +LINE=187 +ERROR=188 +WARNING=189 +REGION=190 +ENDREGION=191 +PRAGMA=192 +NULLABLE=193 +DIRECTIVE_HIDDEN=194 +CONDITIONAL_SYMBOL=195 +DIRECTIVE_NEW_LINE=196 +TEXT=197 +DOUBLE_CURLY_CLOSE_INSIDE=198 +'\u00EF\u00BB\u00BF'=1 +'/***/'=3 +'#'=8 +'abstract'=9 +'add'=10 +'alias'=11 +'__arglist'=12 +'as'=13 +'ascending'=14 +'async'=15 +'await'=16 +'base'=17 +'bool'=18 +'break'=19 +'by'=20 +'byte'=21 +'case'=22 +'catch'=23 +'char'=24 +'checked'=25 +'class'=26 +'const'=27 +'continue'=28 +'decimal'=29 +'default'=30 +'delegate'=31 +'descending'=32 +'do'=33 +'double'=34 +'dynamic'=35 +'else'=36 +'enum'=37 +'equals'=38 +'event'=39 +'explicit'=40 +'extern'=41 +'false'=42 +'finally'=43 +'fixed'=44 +'float'=45 +'for'=46 +'foreach'=47 +'from'=48 +'get'=49 +'goto'=50 +'group'=51 +'if'=52 +'implicit'=53 +'in'=54 +'int'=55 +'interface'=56 +'internal'=57 +'into'=58 +'is'=59 +'join'=60 +'let'=61 +'lock'=62 +'long'=63 +'nameof'=64 +'namespace'=65 +'new'=66 +'null'=67 +'object'=68 +'on'=69 +'operator'=70 +'orderby'=71 +'out'=72 +'override'=73 +'params'=74 +'partial'=75 +'private'=76 +'protected'=77 +'public'=78 +'readonly'=79 +'ref'=80 +'remove'=81 +'return'=82 +'sbyte'=83 +'sealed'=84 +'select'=85 +'set'=86 +'short'=87 +'sizeof'=88 +'stackalloc'=89 +'static'=90 +'string'=91 +'struct'=92 +'switch'=93 +'this'=94 +'throw'=95 +'true'=96 +'try'=97 +'typeof'=98 +'uint'=99 +'ulong'=100 +'unchecked'=101 +'unmanaged'=102 +'unsafe'=103 +'ushort'=104 +'using'=105 +'var'=106 +'virtual'=107 +'void'=108 +'volatile'=109 +'when'=110 +'where'=111 +'while'=112 +'yield'=113 +'{'=125 +'}'=126 +'['=127 +']'=128 +'('=129 +')'=130 +'.'=131 +','=132 +':'=133 +';'=134 +'+'=135 +'-'=136 +'*'=137 +'/'=138 +'%'=139 +'&'=140 +'|'=141 +'^'=142 +'!'=143 +'~'=144 +'='=145 +'<'=146 +'>'=147 +'?'=148 +'::'=149 +'??'=150 +'++'=151 +'--'=152 +'&&'=153 +'||'=154 +'->'=155 +'=='=156 +'!='=157 +'<='=158 +'>='=159 +'+='=160 +'-='=161 +'*='=162 +'/='=163 +'%='=164 +'&='=165 +'|='=166 +'^='=167 +'<<'=168 +'<<='=169 +'??='=170 +'..'=171 +'{{'=172 +'}}'=198 +'define'=183 +'undef'=184 +'elif'=185 +'endif'=186 +'line'=187 +'hidden'=194 diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParserListener.py b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParserListener.py new file mode 100644 index 00000000..8e793c5e --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParserListener.py @@ -0,0 +1,93 @@ +# Generated from CSharpPreprocessorParser.g4 by ANTLR 4.13.2 +from antlr4 import * +if "." in __name__: + from .CSharpPreprocessorParser import CSharpPreprocessorParser +else: + from CSharpPreprocessorParser import CSharpPreprocessorParser + +# This class defines a complete listener for a parse tree produced by CSharpPreprocessorParser. +class CSharpPreprocessorParserListener(ParseTreeListener): + + # Enter a parse tree produced by CSharpPreprocessorParser#preprocessorDeclaration. + def enterPreprocessorDeclaration(self, ctx:CSharpPreprocessorParser.PreprocessorDeclarationContext): + pass + + # Exit a parse tree produced by CSharpPreprocessorParser#preprocessorDeclaration. + def exitPreprocessorDeclaration(self, ctx:CSharpPreprocessorParser.PreprocessorDeclarationContext): + pass + + + # Enter a parse tree produced by CSharpPreprocessorParser#preprocessorConditional. + def enterPreprocessorConditional(self, ctx:CSharpPreprocessorParser.PreprocessorConditionalContext): + pass + + # Exit a parse tree produced by CSharpPreprocessorParser#preprocessorConditional. + def exitPreprocessorConditional(self, ctx:CSharpPreprocessorParser.PreprocessorConditionalContext): + pass + + + # Enter a parse tree produced by CSharpPreprocessorParser#preprocessorLine. + def enterPreprocessorLine(self, ctx:CSharpPreprocessorParser.PreprocessorLineContext): + pass + + # Exit a parse tree produced by CSharpPreprocessorParser#preprocessorLine. + def exitPreprocessorLine(self, ctx:CSharpPreprocessorParser.PreprocessorLineContext): + pass + + + # Enter a parse tree produced by CSharpPreprocessorParser#preprocessorDiagnostic. + def enterPreprocessorDiagnostic(self, ctx:CSharpPreprocessorParser.PreprocessorDiagnosticContext): + pass + + # Exit a parse tree produced by CSharpPreprocessorParser#preprocessorDiagnostic. + def exitPreprocessorDiagnostic(self, ctx:CSharpPreprocessorParser.PreprocessorDiagnosticContext): + pass + + + # Enter a parse tree produced by CSharpPreprocessorParser#preprocessorRegion. + def enterPreprocessorRegion(self, ctx:CSharpPreprocessorParser.PreprocessorRegionContext): + pass + + # Exit a parse tree produced by CSharpPreprocessorParser#preprocessorRegion. + def exitPreprocessorRegion(self, ctx:CSharpPreprocessorParser.PreprocessorRegionContext): + pass + + + # Enter a parse tree produced by CSharpPreprocessorParser#preprocessorPragma. + def enterPreprocessorPragma(self, ctx:CSharpPreprocessorParser.PreprocessorPragmaContext): + pass + + # Exit a parse tree produced by CSharpPreprocessorParser#preprocessorPragma. + def exitPreprocessorPragma(self, ctx:CSharpPreprocessorParser.PreprocessorPragmaContext): + pass + + + # Enter a parse tree produced by CSharpPreprocessorParser#preprocessorNullable. + def enterPreprocessorNullable(self, ctx:CSharpPreprocessorParser.PreprocessorNullableContext): + pass + + # Exit a parse tree produced by CSharpPreprocessorParser#preprocessorNullable. + def exitPreprocessorNullable(self, ctx:CSharpPreprocessorParser.PreprocessorNullableContext): + pass + + + # Enter a parse tree produced by CSharpPreprocessorParser#directive_new_line_or_sharp. + def enterDirective_new_line_or_sharp(self, ctx:CSharpPreprocessorParser.Directive_new_line_or_sharpContext): + pass + + # Exit a parse tree produced by CSharpPreprocessorParser#directive_new_line_or_sharp. + def exitDirective_new_line_or_sharp(self, ctx:CSharpPreprocessorParser.Directive_new_line_or_sharpContext): + pass + + + # Enter a parse tree produced by CSharpPreprocessorParser#preprocessor_expression. + def enterPreprocessor_expression(self, ctx:CSharpPreprocessorParser.Preprocessor_expressionContext): + pass + + # Exit a parse tree produced by CSharpPreprocessorParser#preprocessor_expression. + def exitPreprocessor_expression(self, ctx:CSharpPreprocessorParser.Preprocessor_expressionContext): + pass + + + +del CSharpPreprocessorParser \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParserVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParserVisitor.py new file mode 100644 index 00000000..b998facf --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/CSharpPreprocessorParserVisitor.py @@ -0,0 +1,58 @@ +# Generated from CSharpPreprocessorParser.g4 by ANTLR 4.13.2 +from antlr4 import * +if "." in __name__: + from .CSharpPreprocessorParser import CSharpPreprocessorParser +else: + from CSharpPreprocessorParser import CSharpPreprocessorParser + +# This class defines a complete generic visitor for a parse tree produced by CSharpPreprocessorParser. + +class CSharpPreprocessorParserVisitor(ParseTreeVisitor): + + # Visit a parse tree produced by CSharpPreprocessorParser#preprocessorDeclaration. + def visitPreprocessorDeclaration(self, ctx:CSharpPreprocessorParser.PreprocessorDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CSharpPreprocessorParser#preprocessorConditional. + def visitPreprocessorConditional(self, ctx:CSharpPreprocessorParser.PreprocessorConditionalContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CSharpPreprocessorParser#preprocessorLine. + def visitPreprocessorLine(self, ctx:CSharpPreprocessorParser.PreprocessorLineContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CSharpPreprocessorParser#preprocessorDiagnostic. + def visitPreprocessorDiagnostic(self, ctx:CSharpPreprocessorParser.PreprocessorDiagnosticContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CSharpPreprocessorParser#preprocessorRegion. + def visitPreprocessorRegion(self, ctx:CSharpPreprocessorParser.PreprocessorRegionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CSharpPreprocessorParser#preprocessorPragma. + def visitPreprocessorPragma(self, ctx:CSharpPreprocessorParser.PreprocessorPragmaContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CSharpPreprocessorParser#preprocessorNullable. + def visitPreprocessorNullable(self, ctx:CSharpPreprocessorParser.PreprocessorNullableContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CSharpPreprocessorParser#directive_new_line_or_sharp. + def visitDirective_new_line_or_sharp(self, ctx:CSharpPreprocessorParser.Directive_new_line_or_sharpContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by CSharpPreprocessorParser#preprocessor_expression. + def visitPreprocessor_expression(self, ctx:CSharpPreprocessorParser.Preprocessor_expressionContext): + return self.visitChildren(ctx) + + + +del CSharpPreprocessorParser \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/Comments.interp b/src/pycropml/transpiler/antlr_py/grammars/Comments.interp index 162ec3cb..cea22fa3 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Comments.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/Comments.interp @@ -21,4 +21,4 @@ comment_line atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 7, 22, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 6, 3, 15, 10, 3, 13, 3, 14, 3, 16, 3, 4, 3, 4, 3, 4, 3, 4, 2, 2, 5, 2, 4, 6, 2, 2, 2, 19, 2, 8, 3, 2, 2, 2, 4, 14, 3, 2, 2, 2, 6, 18, 3, 2, 2, 2, 8, 9, 7, 3, 2, 2, 9, 10, 5, 4, 3, 2, 10, 11, 7, 4, 2, 2, 11, 12, 7, 2, 2, 3, 12, 3, 3, 2, 2, 2, 13, 15, 5, 6, 4, 2, 14, 13, 3, 2, 2, 2, 15, 16, 3, 2, 2, 2, 16, 14, 3, 2, 2, 2, 16, 17, 3, 2, 2, 2, 17, 5, 3, 2, 2, 2, 18, 19, 7, 6, 2, 2, 19, 20, 7, 5, 2, 2, 20, 7, 3, 2, 2, 2, 3, 16] \ No newline at end of file +[4, 1, 5, 20, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 13, 8, 1, 11, 1, 12, 1, 14, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 3, 0, 2, 4, 0, 0, 17, 0, 6, 1, 0, 0, 0, 2, 12, 1, 0, 0, 0, 4, 16, 1, 0, 0, 0, 6, 7, 5, 1, 0, 0, 7, 8, 3, 2, 1, 0, 8, 9, 5, 2, 0, 0, 9, 10, 5, 0, 0, 1, 10, 1, 1, 0, 0, 0, 11, 13, 3, 4, 2, 0, 12, 11, 1, 0, 0, 0, 13, 14, 1, 0, 0, 0, 14, 12, 1, 0, 0, 0, 14, 15, 1, 0, 0, 0, 15, 3, 1, 0, 0, 0, 16, 17, 5, 4, 0, 0, 17, 18, 5, 3, 0, 0, 18, 5, 1, 0, 0, 0, 1, 14] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CommentsLexer.interp b/src/pycropml/transpiler/antlr_py/grammars/CommentsLexer.interp index a4d805ee..d341ff72 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CommentsLexer.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/CommentsLexer.interp @@ -32,4 +32,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 7, 101, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 7, 4, 70, 10, 4, 12, 4, 14, 4, 73, 11, 4, 3, 5, 3, 5, 3, 5, 5, 5, 78, 10, 5, 3, 6, 3, 6, 3, 6, 5, 6, 83, 10, 6, 3, 7, 3, 7, 3, 8, 6, 8, 88, 10, 8, 13, 8, 14, 8, 89, 3, 9, 6, 9, 93, 10, 9, 13, 9, 14, 9, 94, 3, 9, 5, 9, 98, 10, 9, 3, 9, 3, 9, 2, 2, 10, 3, 3, 5, 4, 7, 5, 9, 6, 11, 2, 13, 2, 15, 2, 17, 7, 3, 2, 7, 5, 2, 67, 92, 97, 97, 99, 124, 6, 2, 50, 59, 67, 92, 97, 97, 99, 124, 4, 2, 35, 35, 37, 37, 4, 2, 12, 12, 15, 15, 4, 2, 11, 11, 34, 34, 2, 103, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 3, 19, 3, 2, 2, 2, 5, 44, 3, 2, 2, 2, 7, 67, 3, 2, 2, 2, 9, 77, 3, 2, 2, 2, 11, 82, 3, 2, 2, 2, 13, 84, 3, 2, 2, 2, 15, 87, 3, 2, 2, 2, 17, 97, 3, 2, 2, 2, 19, 20, 7, 35, 2, 2, 20, 21, 7, 39, 2, 2, 21, 22, 7, 39, 2, 2, 22, 23, 7, 69, 2, 2, 23, 24, 7, 123, 2, 2, 24, 25, 7, 111, 2, 2, 25, 26, 7, 110, 2, 2, 26, 27, 7, 34, 2, 2, 27, 28, 7, 69, 2, 2, 28, 29, 7, 113, 2, 2, 29, 30, 7, 111, 2, 2, 30, 31, 7, 111, 2, 2, 31, 32, 7, 103, 2, 2, 32, 33, 7, 112, 2, 2, 33, 34, 7, 118, 2, 2, 34, 35, 7, 117, 2, 2, 35, 36, 7, 34, 2, 2, 36, 37, 7, 68, 2, 2, 37, 38, 7, 103, 2, 2, 38, 39, 7, 105, 2, 2, 39, 40, 7, 107, 2, 2, 40, 41, 7, 112, 2, 2, 41, 42, 7, 39, 2, 2, 42, 43, 7, 39, 2, 2, 43, 4, 3, 2, 2, 2, 44, 45, 7, 35, 2, 2, 45, 46, 7, 39, 2, 2, 46, 47, 7, 39, 2, 2, 47, 48, 7, 69, 2, 2, 48, 49, 7, 123, 2, 2, 49, 50, 7, 111, 2, 2, 50, 51, 7, 110, 2, 2, 51, 52, 7, 34, 2, 2, 52, 53, 7, 69, 2, 2, 53, 54, 7, 113, 2, 2, 54, 55, 7, 111, 2, 2, 55, 56, 7, 111, 2, 2, 56, 57, 7, 103, 2, 2, 57, 58, 7, 112, 2, 2, 58, 59, 7, 118, 2, 2, 59, 60, 7, 117, 2, 2, 60, 61, 7, 34, 2, 2, 61, 62, 7, 71, 2, 2, 62, 63, 7, 112, 2, 2, 63, 64, 7, 102, 2, 2, 64, 65, 7, 39, 2, 2, 65, 66, 7, 39, 2, 2, 66, 6, 3, 2, 2, 2, 67, 71, 9, 2, 2, 2, 68, 70, 9, 3, 2, 2, 69, 68, 3, 2, 2, 2, 70, 73, 3, 2, 2, 2, 71, 69, 3, 2, 2, 2, 71, 72, 3, 2, 2, 2, 72, 8, 3, 2, 2, 2, 73, 71, 3, 2, 2, 2, 74, 78, 9, 4, 2, 2, 75, 76, 7, 49, 2, 2, 76, 78, 7, 49, 2, 2, 77, 74, 3, 2, 2, 2, 77, 75, 3, 2, 2, 2, 78, 10, 3, 2, 2, 2, 79, 80, 7, 15, 2, 2, 80, 83, 7, 12, 2, 2, 81, 83, 9, 5, 2, 2, 82, 79, 3, 2, 2, 2, 82, 81, 3, 2, 2, 2, 83, 12, 3, 2, 2, 2, 84, 85, 4, 50, 59, 2, 85, 14, 3, 2, 2, 2, 86, 88, 9, 6, 2, 2, 87, 86, 3, 2, 2, 2, 88, 89, 3, 2, 2, 2, 89, 87, 3, 2, 2, 2, 89, 90, 3, 2, 2, 2, 90, 16, 3, 2, 2, 2, 91, 93, 5, 15, 8, 2, 92, 91, 3, 2, 2, 2, 93, 94, 3, 2, 2, 2, 94, 92, 3, 2, 2, 2, 94, 95, 3, 2, 2, 2, 95, 98, 3, 2, 2, 2, 96, 98, 5, 11, 6, 2, 97, 92, 3, 2, 2, 2, 97, 96, 3, 2, 2, 2, 98, 99, 3, 2, 2, 2, 99, 100, 8, 9, 2, 2, 100, 18, 3, 2, 2, 2, 9, 2, 71, 77, 82, 89, 94, 97, 3, 8, 2, 2] \ No newline at end of file +[4, 0, 5, 99, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 5, 2, 68, 8, 2, 10, 2, 12, 2, 71, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 76, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 81, 8, 4, 1, 5, 1, 5, 1, 6, 4, 6, 86, 8, 6, 11, 6, 12, 6, 87, 1, 7, 4, 7, 91, 8, 7, 11, 7, 12, 7, 92, 1, 7, 3, 7, 96, 8, 7, 1, 7, 1, 7, 0, 0, 8, 1, 1, 3, 2, 5, 3, 7, 4, 9, 0, 11, 0, 13, 0, 15, 5, 1, 0, 5, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 33, 33, 35, 35, 2, 0, 10, 10, 13, 13, 2, 0, 9, 9, 32, 32, 101, 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, 15, 1, 0, 0, 0, 1, 17, 1, 0, 0, 0, 3, 42, 1, 0, 0, 0, 5, 65, 1, 0, 0, 0, 7, 75, 1, 0, 0, 0, 9, 80, 1, 0, 0, 0, 11, 82, 1, 0, 0, 0, 13, 85, 1, 0, 0, 0, 15, 95, 1, 0, 0, 0, 17, 18, 5, 33, 0, 0, 18, 19, 5, 37, 0, 0, 19, 20, 5, 37, 0, 0, 20, 21, 5, 67, 0, 0, 21, 22, 5, 121, 0, 0, 22, 23, 5, 109, 0, 0, 23, 24, 5, 108, 0, 0, 24, 25, 5, 32, 0, 0, 25, 26, 5, 67, 0, 0, 26, 27, 5, 111, 0, 0, 27, 28, 5, 109, 0, 0, 28, 29, 5, 109, 0, 0, 29, 30, 5, 101, 0, 0, 30, 31, 5, 110, 0, 0, 31, 32, 5, 116, 0, 0, 32, 33, 5, 115, 0, 0, 33, 34, 5, 32, 0, 0, 34, 35, 5, 66, 0, 0, 35, 36, 5, 101, 0, 0, 36, 37, 5, 103, 0, 0, 37, 38, 5, 105, 0, 0, 38, 39, 5, 110, 0, 0, 39, 40, 5, 37, 0, 0, 40, 41, 5, 37, 0, 0, 41, 2, 1, 0, 0, 0, 42, 43, 5, 33, 0, 0, 43, 44, 5, 37, 0, 0, 44, 45, 5, 37, 0, 0, 45, 46, 5, 67, 0, 0, 46, 47, 5, 121, 0, 0, 47, 48, 5, 109, 0, 0, 48, 49, 5, 108, 0, 0, 49, 50, 5, 32, 0, 0, 50, 51, 5, 67, 0, 0, 51, 52, 5, 111, 0, 0, 52, 53, 5, 109, 0, 0, 53, 54, 5, 109, 0, 0, 54, 55, 5, 101, 0, 0, 55, 56, 5, 110, 0, 0, 56, 57, 5, 116, 0, 0, 57, 58, 5, 115, 0, 0, 58, 59, 5, 32, 0, 0, 59, 60, 5, 69, 0, 0, 60, 61, 5, 110, 0, 0, 61, 62, 5, 100, 0, 0, 62, 63, 5, 37, 0, 0, 63, 64, 5, 37, 0, 0, 64, 4, 1, 0, 0, 0, 65, 69, 7, 0, 0, 0, 66, 68, 7, 1, 0, 0, 67, 66, 1, 0, 0, 0, 68, 71, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 6, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 72, 76, 7, 2, 0, 0, 73, 74, 5, 47, 0, 0, 74, 76, 5, 47, 0, 0, 75, 72, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 8, 1, 0, 0, 0, 77, 78, 5, 13, 0, 0, 78, 81, 5, 10, 0, 0, 79, 81, 7, 3, 0, 0, 80, 77, 1, 0, 0, 0, 80, 79, 1, 0, 0, 0, 81, 10, 1, 0, 0, 0, 82, 83, 2, 48, 57, 0, 83, 12, 1, 0, 0, 0, 84, 86, 7, 4, 0, 0, 85, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 85, 1, 0, 0, 0, 87, 88, 1, 0, 0, 0, 88, 14, 1, 0, 0, 0, 89, 91, 3, 13, 6, 0, 90, 89, 1, 0, 0, 0, 91, 92, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 96, 1, 0, 0, 0, 94, 96, 3, 9, 4, 0, 95, 90, 1, 0, 0, 0, 95, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 98, 6, 7, 0, 0, 98, 16, 1, 0, 0, 0, 7, 0, 69, 75, 80, 87, 92, 95, 1, 6, 0, 0] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/CommentsLexer.py b/src/pycropml/transpiler/antlr_py/grammars/CommentsLexer.py index da3bf6c7..7232622f 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CommentsLexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CommentsLexer.py @@ -1,47 +1,49 @@ -# Generated from Comments.g4 by ANTLR 4.8 +# Generated from Comments.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO import sys - +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\7") - buf.write("e\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\4\t\t\t\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3") - buf.write("\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2") - buf.write("\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4") - buf.write("\7\4F\n\4\f\4\16\4I\13\4\3\5\3\5\3\5\5\5N\n\5\3\6\3\6") - buf.write("\3\6\5\6S\n\6\3\7\3\7\3\b\6\bX\n\b\r\b\16\bY\3\t\6\t]") - buf.write("\n\t\r\t\16\t^\3\t\5\tb\n\t\3\t\3\t\2\2\n\3\3\5\4\7\5") - buf.write("\t\6\13\2\r\2\17\2\21\7\3\2\7\5\2C\\aac|\6\2\62;C\\aa") - buf.write("c|\4\2##%%\4\2\f\f\17\17\4\2\13\13\"\"\2g\2\3\3\2\2\2") - buf.write("\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\21\3\2\2\2\3\23") - buf.write("\3\2\2\2\5,\3\2\2\2\7C\3\2\2\2\tM\3\2\2\2\13R\3\2\2\2") - buf.write("\rT\3\2\2\2\17W\3\2\2\2\21a\3\2\2\2\23\24\7#\2\2\24\25") - buf.write("\7\'\2\2\25\26\7\'\2\2\26\27\7E\2\2\27\30\7{\2\2\30\31") - buf.write("\7o\2\2\31\32\7n\2\2\32\33\7\"\2\2\33\34\7E\2\2\34\35") - buf.write("\7q\2\2\35\36\7o\2\2\36\37\7o\2\2\37 \7g\2\2 !\7p\2\2") - buf.write("!\"\7v\2\2\"#\7u\2\2#$\7\"\2\2$%\7D\2\2%&\7g\2\2&\'\7") - buf.write("i\2\2\'(\7k\2\2()\7p\2\2)*\7\'\2\2*+\7\'\2\2+\4\3\2\2") - buf.write("\2,-\7#\2\2-.\7\'\2\2./\7\'\2\2/\60\7E\2\2\60\61\7{\2") - buf.write("\2\61\62\7o\2\2\62\63\7n\2\2\63\64\7\"\2\2\64\65\7E\2") - buf.write("\2\65\66\7q\2\2\66\67\7o\2\2\678\7o\2\289\7g\2\29:\7p") - buf.write("\2\2:;\7v\2\2;<\7u\2\2<=\7\"\2\2=>\7G\2\2>?\7p\2\2?@\7") - buf.write("f\2\2@A\7\'\2\2AB\7\'\2\2B\6\3\2\2\2CG\t\2\2\2DF\t\3\2") - buf.write("\2ED\3\2\2\2FI\3\2\2\2GE\3\2\2\2GH\3\2\2\2H\b\3\2\2\2") - buf.write("IG\3\2\2\2JN\t\4\2\2KL\7\61\2\2LN\7\61\2\2MJ\3\2\2\2M") - buf.write("K\3\2\2\2N\n\3\2\2\2OP\7\17\2\2PS\7\f\2\2QS\t\5\2\2RO") - buf.write("\3\2\2\2RQ\3\2\2\2S\f\3\2\2\2TU\4\62;\2U\16\3\2\2\2VX") - buf.write("\t\6\2\2WV\3\2\2\2XY\3\2\2\2YW\3\2\2\2YZ\3\2\2\2Z\20\3") - buf.write("\2\2\2[]\5\17\b\2\\[\3\2\2\2]^\3\2\2\2^\\\3\2\2\2^_\3") - buf.write("\2\2\2_b\3\2\2\2`b\5\13\6\2a\\\3\2\2\2a`\3\2\2\2bc\3\2") - buf.write("\2\2cd\b\t\2\2d\22\3\2\2\2\t\2GMRY^a\3\b\2\2") - return buf.getvalue() - + return [ + 4,0,5,99,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,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2,1,2,5,2,68,8,2,10,2,12,2,71,9,2,1,3,1,3,1,3,3, + 3,76,8,3,1,4,1,4,1,4,3,4,81,8,4,1,5,1,5,1,6,4,6,86,8,6,11,6,12,6, + 87,1,7,4,7,91,8,7,11,7,12,7,92,1,7,3,7,96,8,7,1,7,1,7,0,0,8,1,1, + 3,2,5,3,7,4,9,0,11,0,13,0,15,5,1,0,5,3,0,65,90,95,95,97,122,4,0, + 48,57,65,90,95,95,97,122,2,0,33,33,35,35,2,0,10,10,13,13,2,0,9,9, + 32,32,101,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,15,1, + 0,0,0,1,17,1,0,0,0,3,42,1,0,0,0,5,65,1,0,0,0,7,75,1,0,0,0,9,80,1, + 0,0,0,11,82,1,0,0,0,13,85,1,0,0,0,15,95,1,0,0,0,17,18,5,33,0,0,18, + 19,5,37,0,0,19,20,5,37,0,0,20,21,5,67,0,0,21,22,5,121,0,0,22,23, + 5,109,0,0,23,24,5,108,0,0,24,25,5,32,0,0,25,26,5,67,0,0,26,27,5, + 111,0,0,27,28,5,109,0,0,28,29,5,109,0,0,29,30,5,101,0,0,30,31,5, + 110,0,0,31,32,5,116,0,0,32,33,5,115,0,0,33,34,5,32,0,0,34,35,5,66, + 0,0,35,36,5,101,0,0,36,37,5,103,0,0,37,38,5,105,0,0,38,39,5,110, + 0,0,39,40,5,37,0,0,40,41,5,37,0,0,41,2,1,0,0,0,42,43,5,33,0,0,43, + 44,5,37,0,0,44,45,5,37,0,0,45,46,5,67,0,0,46,47,5,121,0,0,47,48, + 5,109,0,0,48,49,5,108,0,0,49,50,5,32,0,0,50,51,5,67,0,0,51,52,5, + 111,0,0,52,53,5,109,0,0,53,54,5,109,0,0,54,55,5,101,0,0,55,56,5, + 110,0,0,56,57,5,116,0,0,57,58,5,115,0,0,58,59,5,32,0,0,59,60,5,69, + 0,0,60,61,5,110,0,0,61,62,5,100,0,0,62,63,5,37,0,0,63,64,5,37,0, + 0,64,4,1,0,0,0,65,69,7,0,0,0,66,68,7,1,0,0,67,66,1,0,0,0,68,71,1, + 0,0,0,69,67,1,0,0,0,69,70,1,0,0,0,70,6,1,0,0,0,71,69,1,0,0,0,72, + 76,7,2,0,0,73,74,5,47,0,0,74,76,5,47,0,0,75,72,1,0,0,0,75,73,1,0, + 0,0,76,8,1,0,0,0,77,78,5,13,0,0,78,81,5,10,0,0,79,81,7,3,0,0,80, + 77,1,0,0,0,80,79,1,0,0,0,81,10,1,0,0,0,82,83,2,48,57,0,83,12,1,0, + 0,0,84,86,7,4,0,0,85,84,1,0,0,0,86,87,1,0,0,0,87,85,1,0,0,0,87,88, + 1,0,0,0,88,14,1,0,0,0,89,91,3,13,6,0,90,89,1,0,0,0,91,92,1,0,0,0, + 92,90,1,0,0,0,92,93,1,0,0,0,93,96,1,0,0,0,94,96,3,9,4,0,95,90,1, + 0,0,0,95,94,1,0,0,0,96,97,1,0,0,0,97,98,6,7,0,0,98,16,1,0,0,0,7, + 0,69,75,80,87,92,95,1,6,0,0 + ] class CommentsLexer(Lexer): @@ -72,7 +74,7 @@ class CommentsLexer(Lexer): def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/src/pycropml/transpiler/antlr_py/grammars/CommentsListener.py b/src/pycropml/transpiler/antlr_py/grammars/CommentsListener.py index 9612f6ea..4ff48101 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CommentsListener.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CommentsListener.py @@ -1,6 +1,6 @@ -# Generated from Comments.g4 by ANTLR 4.8 +# Generated from Comments.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .CommentsParser import CommentsParser else: from CommentsParser import CommentsParser diff --git a/src/pycropml/transpiler/antlr_py/grammars/CommentsParser.py b/src/pycropml/transpiler/antlr_py/grammars/CommentsParser.py index ec435dc9..7649c82b 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CommentsParser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CommentsParser.py @@ -1,4 +1,4 @@ -# Generated from Comments.g4 by ANTLR 4.8 +# Generated from Comments.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,19 +8,15 @@ else: from typing.io import TextIO - def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\7") - buf.write("\26\4\2\t\2\4\3\t\3\4\4\t\4\3\2\3\2\3\2\3\2\3\2\3\3\6") - buf.write("\3\17\n\3\r\3\16\3\20\3\4\3\4\3\4\3\4\2\2\5\2\4\6\2\2") - buf.write("\2\23\2\b\3\2\2\2\4\16\3\2\2\2\6\22\3\2\2\2\b\t\7\3\2") - buf.write("\2\t\n\5\4\3\2\n\13\7\4\2\2\13\f\7\2\2\3\f\3\3\2\2\2\r") - buf.write("\17\5\6\4\2\16\r\3\2\2\2\17\20\3\2\2\2\20\16\3\2\2\2\20") - buf.write("\21\3\2\2\2\21\5\3\2\2\2\22\23\7\6\2\2\23\24\7\5\2\2\24") - buf.write("\7\3\2\2\2\3\20") - return buf.getvalue() - + return [ + 4,1,5,20,2,0,7,0,2,1,7,1,2,2,7,2,1,0,1,0,1,0,1,0,1,0,1,1,4,1,13, + 8,1,11,1,12,1,14,1,2,1,2,1,2,1,2,0,0,3,0,2,4,0,0,17,0,6,1,0,0,0, + 2,12,1,0,0,0,4,16,1,0,0,0,6,7,5,1,0,0,7,8,3,2,1,0,8,9,5,2,0,0,9, + 10,5,0,0,1,10,1,1,0,0,0,11,13,3,4,2,0,12,11,1,0,0,0,13,14,1,0,0, + 0,14,12,1,0,0,0,14,15,1,0,0,0,15,3,1,0,0,0,16,17,5,4,0,0,17,18,5, + 3,0,0,18,5,1,0,0,0,1,14 + ] class CommentsParser ( Parser ): @@ -52,7 +48,7 @@ class CommentsParser ( Parser ): def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None @@ -60,6 +56,7 @@ def __init__(self, input:TokenStream, output:TextIO = sys.stdout): class DocumentationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -116,6 +113,7 @@ def documentation(self): class DocumentationContentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -164,7 +162,7 @@ def documentationContent(self): self.state = 14 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==CommentsParser.Symbol): + if not (_la==4): break except RecognitionException as re: @@ -177,6 +175,7 @@ def documentationContent(self): class Comment_lineContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) diff --git a/src/pycropml/transpiler/antlr_py/grammars/CommentsVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/CommentsVisitor.py index 17bf75ca..5eafa422 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/CommentsVisitor.py +++ b/src/pycropml/transpiler/antlr_py/grammars/CommentsVisitor.py @@ -1,6 +1,6 @@ -# Generated from Comments.g4 by ANTLR 4.8 +# Generated from Comments.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .CommentsParser import CommentsParser else: from CommentsParser import CommentsParser diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran77Lexer.interp b/src/pycropml/transpiler/antlr_py/grammars/Fortran77Lexer.interp index f1e2b9a1..cb938779 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran77Lexer.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran77Lexer.interp @@ -386,4 +386,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 123, 1752, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 2, 278, 10, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 290, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 308, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 320, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 342, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 350, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 370, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 380, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 404, 10, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 418, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 434, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 452, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 462, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 482, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 502, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 520, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 540, 10, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 550, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 560, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 566, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 576, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 582, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 592, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 602, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 614, 10, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 628, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 634, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 652, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 662, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 674, 10, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 686, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 698, 10, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 708, 10, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 5, 35, 720, 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 730, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 738, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 748, 10, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 756, 10, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 5, 40, 770, 10, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 784, 10, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 792, 10, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 802, 10, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 816, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 828, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 842, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 858, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 880, 10, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 5, 49, 892, 10, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 902, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 916, 10, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 930, 10, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 948, 10, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 5, 54, 958, 10, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 968, 10, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 5, 56, 980, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 992, 10, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 5, 58, 1006, 10, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 1020, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 1032, 10, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 1042, 10, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 1062, 10, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 5, 63, 1086, 10, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 1102, 10, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 1118, 10, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 5, 66, 1138, 10, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 5, 67, 1154, 10, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 1168, 10, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 3, 77, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 1203, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 1215, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 5, 82, 1225, 10, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1237, 10, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 1251, 10, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 5, 85, 1263, 10, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 5, 86, 1275, 10, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 5, 87, 1285, 10, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 5, 88, 1295, 10, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 5, 89, 1305, 10, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 1315, 10, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 1325, 10, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 5, 92, 1335, 10, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 5, 93, 1349, 10, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 5, 94, 1365, 10, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 5, 110, 1499, 10, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 5, 111, 1519, 10, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 5, 112, 1535, 10, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 5, 113, 1551, 10, 113, 3, 114, 3, 114, 3, 115, 3, 115, 5, 115, 1557, 10, 115, 3, 116, 3, 116, 5, 116, 1561, 10, 116, 3, 117, 3, 117, 3, 118, 3, 118, 6, 118, 1567, 10, 118, 13, 118, 14, 118, 1568, 3, 118, 3, 118, 6, 118, 1573, 10, 118, 13, 118, 14, 118, 1574, 3, 118, 3, 118, 6, 118, 1579, 10, 118, 13, 118, 14, 118, 1580, 3, 118, 3, 118, 6, 118, 1585, 10, 118, 13, 118, 14, 118, 1586, 3, 118, 3, 118, 6, 118, 1591, 10, 118, 13, 118, 14, 118, 1592, 5, 118, 1595, 10, 118, 5, 118, 1597, 10, 118, 3, 119, 3, 119, 5, 119, 1601, 10, 119, 3, 119, 6, 119, 1604, 10, 119, 13, 119, 14, 119, 1605, 3, 120, 5, 120, 1609, 10, 120, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 5, 122, 1620, 10, 122, 5, 122, 1622, 10, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 5, 122, 1635, 10, 122, 5, 122, 1637, 10, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 7, 122, 1647, 10, 122, 12, 122, 14, 122, 1650, 11, 122, 3, 122, 3, 122, 3, 123, 6, 123, 1655, 10, 123, 13, 123, 14, 123, 1656, 3, 123, 3, 123, 7, 123, 1661, 10, 123, 12, 123, 14, 123, 1664, 11, 123, 3, 123, 5, 123, 1667, 10, 123, 3, 124, 6, 124, 1670, 10, 124, 13, 124, 14, 124, 1671, 3, 125, 3, 125, 6, 125, 1676, 10, 125, 13, 125, 14, 125, 1677, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 6, 125, 1685, 10, 125, 13, 125, 14, 125, 1686, 3, 125, 7, 125, 1690, 10, 125, 12, 125, 14, 125, 1693, 11, 125, 5, 125, 1695, 10, 125, 3, 126, 3, 126, 3, 126, 5, 126, 1700, 10, 126, 3, 126, 7, 126, 1703, 10, 126, 12, 126, 14, 126, 1706, 11, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 128, 3, 128, 7, 128, 1714, 10, 128, 12, 128, 14, 128, 1717, 11, 128, 3, 128, 3, 128, 3, 129, 6, 129, 1722, 10, 129, 13, 129, 14, 129, 1723, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 5, 130, 1742, 10, 130, 3, 130, 3, 130, 3, 131, 6, 131, 1747, 10, 131, 13, 131, 14, 131, 1748, 3, 131, 3, 131, 2, 2, 132, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 2, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 2, 229, 2, 231, 2, 233, 2, 235, 2, 237, 2, 239, 2, 241, 2, 243, 114, 245, 115, 247, 116, 249, 117, 251, 118, 253, 119, 255, 120, 257, 121, 259, 122, 261, 123, 3, 2, 13, 4, 2, 34, 34, 50, 50, 4, 2, 45, 45, 47, 47, 5, 2, 102, 102, 104, 104, 107, 107, 4, 2, 103, 103, 105, 105, 4, 2, 70, 71, 102, 103, 4, 2, 67, 92, 99, 124, 5, 2, 12, 12, 15, 15, 41, 41, 4, 2, 102, 105, 107, 107, 4, 2, 12, 12, 15, 15, 5, 2, 12, 12, 15, 15, 36, 36, 4, 2, 11, 11, 34, 34, 2, 1860, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 3, 277, 3, 2, 2, 2, 5, 289, 3, 2, 2, 2, 7, 307, 3, 2, 2, 2, 9, 319, 3, 2, 2, 2, 11, 341, 3, 2, 2, 2, 13, 349, 3, 2, 2, 2, 15, 369, 3, 2, 2, 2, 17, 379, 3, 2, 2, 2, 19, 403, 3, 2, 2, 2, 21, 417, 3, 2, 2, 2, 23, 433, 3, 2, 2, 2, 25, 451, 3, 2, 2, 2, 27, 461, 3, 2, 2, 2, 29, 481, 3, 2, 2, 2, 31, 501, 3, 2, 2, 2, 33, 519, 3, 2, 2, 2, 35, 539, 3, 2, 2, 2, 37, 549, 3, 2, 2, 2, 39, 559, 3, 2, 2, 2, 41, 565, 3, 2, 2, 2, 43, 575, 3, 2, 2, 2, 45, 581, 3, 2, 2, 2, 47, 591, 3, 2, 2, 2, 49, 601, 3, 2, 2, 2, 51, 613, 3, 2, 2, 2, 53, 627, 3, 2, 2, 2, 55, 633, 3, 2, 2, 2, 57, 651, 3, 2, 2, 2, 59, 661, 3, 2, 2, 2, 61, 673, 3, 2, 2, 2, 63, 685, 3, 2, 2, 2, 65, 697, 3, 2, 2, 2, 67, 707, 3, 2, 2, 2, 69, 719, 3, 2, 2, 2, 71, 729, 3, 2, 2, 2, 73, 737, 3, 2, 2, 2, 75, 747, 3, 2, 2, 2, 77, 755, 3, 2, 2, 2, 79, 769, 3, 2, 2, 2, 81, 783, 3, 2, 2, 2, 83, 791, 3, 2, 2, 2, 85, 801, 3, 2, 2, 2, 87, 815, 3, 2, 2, 2, 89, 827, 3, 2, 2, 2, 91, 841, 3, 2, 2, 2, 93, 857, 3, 2, 2, 2, 95, 879, 3, 2, 2, 2, 97, 891, 3, 2, 2, 2, 99, 901, 3, 2, 2, 2, 101, 915, 3, 2, 2, 2, 103, 929, 3, 2, 2, 2, 105, 947, 3, 2, 2, 2, 107, 957, 3, 2, 2, 2, 109, 967, 3, 2, 2, 2, 111, 979, 3, 2, 2, 2, 113, 991, 3, 2, 2, 2, 115, 1005, 3, 2, 2, 2, 117, 1019, 3, 2, 2, 2, 119, 1031, 3, 2, 2, 2, 121, 1041, 3, 2, 2, 2, 123, 1061, 3, 2, 2, 2, 125, 1085, 3, 2, 2, 2, 127, 1101, 3, 2, 2, 2, 129, 1117, 3, 2, 2, 2, 131, 1137, 3, 2, 2, 2, 133, 1153, 3, 2, 2, 2, 135, 1167, 3, 2, 2, 2, 137, 1169, 3, 2, 2, 2, 139, 1171, 3, 2, 2, 2, 141, 1173, 3, 2, 2, 2, 143, 1175, 3, 2, 2, 2, 145, 1177, 3, 2, 2, 2, 147, 1179, 3, 2, 2, 2, 149, 1181, 3, 2, 2, 2, 151, 1183, 3, 2, 2, 2, 153, 1185, 3, 2, 2, 2, 155, 1187, 3, 2, 2, 2, 157, 1189, 3, 2, 2, 2, 159, 1202, 3, 2, 2, 2, 161, 1214, 3, 2, 2, 2, 163, 1224, 3, 2, 2, 2, 165, 1236, 3, 2, 2, 2, 167, 1250, 3, 2, 2, 2, 169, 1262, 3, 2, 2, 2, 171, 1274, 3, 2, 2, 2, 173, 1284, 3, 2, 2, 2, 175, 1294, 3, 2, 2, 2, 177, 1304, 3, 2, 2, 2, 179, 1314, 3, 2, 2, 2, 181, 1324, 3, 2, 2, 2, 183, 1334, 3, 2, 2, 2, 185, 1348, 3, 2, 2, 2, 187, 1364, 3, 2, 2, 2, 189, 1366, 3, 2, 2, 2, 191, 1371, 3, 2, 2, 2, 193, 1376, 3, 2, 2, 2, 195, 1381, 3, 2, 2, 2, 197, 1386, 3, 2, 2, 2, 199, 1396, 3, 2, 2, 2, 201, 1405, 3, 2, 2, 2, 203, 1416, 3, 2, 2, 2, 205, 1424, 3, 2, 2, 2, 207, 1427, 3, 2, 2, 2, 209, 1443, 3, 2, 2, 2, 211, 1451, 3, 2, 2, 2, 213, 1455, 3, 2, 2, 2, 215, 1465, 3, 2, 2, 2, 217, 1475, 3, 2, 2, 2, 219, 1498, 3, 2, 2, 2, 221, 1518, 3, 2, 2, 2, 223, 1534, 3, 2, 2, 2, 225, 1550, 3, 2, 2, 2, 227, 1552, 3, 2, 2, 2, 229, 1556, 3, 2, 2, 2, 231, 1560, 3, 2, 2, 2, 233, 1562, 3, 2, 2, 2, 235, 1596, 3, 2, 2, 2, 237, 1598, 3, 2, 2, 2, 239, 1608, 3, 2, 2, 2, 241, 1610, 3, 2, 2, 2, 243, 1612, 3, 2, 2, 2, 245, 1654, 3, 2, 2, 2, 247, 1669, 3, 2, 2, 2, 249, 1694, 3, 2, 2, 2, 251, 1696, 3, 2, 2, 2, 253, 1709, 3, 2, 2, 2, 255, 1711, 3, 2, 2, 2, 257, 1721, 3, 2, 2, 2, 259, 1741, 3, 2, 2, 2, 261, 1746, 3, 2, 2, 2, 263, 264, 7, 114, 2, 2, 264, 265, 7, 116, 2, 2, 265, 266, 7, 113, 2, 2, 266, 267, 7, 105, 2, 2, 267, 268, 7, 116, 2, 2, 268, 269, 7, 99, 2, 2, 269, 278, 7, 111, 2, 2, 270, 271, 7, 82, 2, 2, 271, 272, 7, 84, 2, 2, 272, 273, 7, 81, 2, 2, 273, 274, 7, 73, 2, 2, 274, 275, 7, 84, 2, 2, 275, 276, 7, 67, 2, 2, 276, 278, 7, 79, 2, 2, 277, 263, 3, 2, 2, 2, 277, 270, 3, 2, 2, 2, 278, 4, 3, 2, 2, 2, 279, 280, 7, 103, 2, 2, 280, 281, 7, 112, 2, 2, 281, 282, 7, 118, 2, 2, 282, 283, 7, 116, 2, 2, 283, 290, 7, 123, 2, 2, 284, 285, 7, 71, 2, 2, 285, 286, 7, 80, 2, 2, 286, 287, 7, 86, 2, 2, 287, 288, 7, 84, 2, 2, 288, 290, 7, 91, 2, 2, 289, 279, 3, 2, 2, 2, 289, 284, 3, 2, 2, 2, 290, 6, 3, 2, 2, 2, 291, 292, 7, 104, 2, 2, 292, 293, 7, 119, 2, 2, 293, 294, 7, 112, 2, 2, 294, 295, 7, 101, 2, 2, 295, 296, 7, 118, 2, 2, 296, 297, 7, 107, 2, 2, 297, 298, 7, 113, 2, 2, 298, 308, 7, 112, 2, 2, 299, 300, 7, 72, 2, 2, 300, 301, 7, 87, 2, 2, 301, 302, 7, 80, 2, 2, 302, 303, 7, 69, 2, 2, 303, 304, 7, 86, 2, 2, 304, 305, 7, 75, 2, 2, 305, 306, 7, 81, 2, 2, 306, 308, 7, 80, 2, 2, 307, 291, 3, 2, 2, 2, 307, 299, 3, 2, 2, 2, 308, 8, 3, 2, 2, 2, 309, 310, 7, 100, 2, 2, 310, 311, 7, 110, 2, 2, 311, 312, 7, 113, 2, 2, 312, 313, 7, 101, 2, 2, 313, 320, 7, 109, 2, 2, 314, 315, 7, 68, 2, 2, 315, 316, 7, 78, 2, 2, 316, 317, 7, 81, 2, 2, 317, 318, 7, 69, 2, 2, 318, 320, 7, 77, 2, 2, 319, 309, 3, 2, 2, 2, 319, 314, 3, 2, 2, 2, 320, 10, 3, 2, 2, 2, 321, 322, 7, 117, 2, 2, 322, 323, 7, 119, 2, 2, 323, 324, 7, 100, 2, 2, 324, 325, 7, 116, 2, 2, 325, 326, 7, 113, 2, 2, 326, 327, 7, 119, 2, 2, 327, 328, 7, 118, 2, 2, 328, 329, 7, 107, 2, 2, 329, 330, 7, 112, 2, 2, 330, 342, 7, 103, 2, 2, 331, 332, 7, 85, 2, 2, 332, 333, 7, 87, 2, 2, 333, 334, 7, 68, 2, 2, 334, 335, 7, 84, 2, 2, 335, 336, 7, 81, 2, 2, 336, 337, 7, 87, 2, 2, 337, 338, 7, 86, 2, 2, 338, 339, 7, 75, 2, 2, 339, 340, 7, 80, 2, 2, 340, 342, 7, 71, 2, 2, 341, 321, 3, 2, 2, 2, 341, 331, 3, 2, 2, 2, 342, 12, 3, 2, 2, 2, 343, 344, 7, 71, 2, 2, 344, 345, 7, 80, 2, 2, 345, 350, 7, 70, 2, 2, 346, 347, 7, 103, 2, 2, 347, 348, 7, 112, 2, 2, 348, 350, 7, 102, 2, 2, 349, 343, 3, 2, 2, 2, 349, 346, 3, 2, 2, 2, 350, 14, 3, 2, 2, 2, 351, 352, 7, 102, 2, 2, 352, 353, 7, 107, 2, 2, 353, 354, 7, 111, 2, 2, 354, 355, 7, 103, 2, 2, 355, 356, 7, 112, 2, 2, 356, 357, 7, 117, 2, 2, 357, 358, 7, 107, 2, 2, 358, 359, 7, 113, 2, 2, 359, 370, 7, 112, 2, 2, 360, 361, 7, 70, 2, 2, 361, 362, 7, 75, 2, 2, 362, 363, 7, 79, 2, 2, 363, 364, 7, 71, 2, 2, 364, 365, 7, 80, 2, 2, 365, 366, 7, 85, 2, 2, 366, 367, 7, 75, 2, 2, 367, 368, 7, 81, 2, 2, 368, 370, 7, 80, 2, 2, 369, 351, 3, 2, 2, 2, 369, 360, 3, 2, 2, 2, 370, 16, 3, 2, 2, 2, 371, 372, 7, 84, 2, 2, 372, 373, 7, 71, 2, 2, 373, 374, 7, 67, 2, 2, 374, 380, 7, 78, 2, 2, 375, 376, 7, 116, 2, 2, 376, 377, 7, 103, 2, 2, 377, 378, 7, 99, 2, 2, 378, 380, 7, 110, 2, 2, 379, 371, 3, 2, 2, 2, 379, 375, 3, 2, 2, 2, 380, 18, 3, 2, 2, 2, 381, 382, 7, 71, 2, 2, 382, 383, 7, 83, 2, 2, 383, 384, 7, 87, 2, 2, 384, 385, 7, 75, 2, 2, 385, 386, 7, 88, 2, 2, 386, 387, 7, 67, 2, 2, 387, 388, 7, 78, 2, 2, 388, 389, 7, 71, 2, 2, 389, 390, 7, 80, 2, 2, 390, 391, 7, 69, 2, 2, 391, 404, 7, 71, 2, 2, 392, 393, 7, 103, 2, 2, 393, 394, 7, 115, 2, 2, 394, 395, 7, 119, 2, 2, 395, 396, 7, 107, 2, 2, 396, 397, 7, 120, 2, 2, 397, 398, 7, 99, 2, 2, 398, 399, 7, 110, 2, 2, 399, 400, 7, 103, 2, 2, 400, 401, 7, 112, 2, 2, 401, 402, 7, 101, 2, 2, 402, 404, 7, 103, 2, 2, 403, 381, 3, 2, 2, 2, 403, 392, 3, 2, 2, 2, 404, 20, 3, 2, 2, 2, 405, 406, 7, 101, 2, 2, 406, 407, 7, 113, 2, 2, 407, 408, 7, 111, 2, 2, 408, 409, 7, 111, 2, 2, 409, 410, 7, 113, 2, 2, 410, 418, 7, 112, 2, 2, 411, 412, 7, 69, 2, 2, 412, 413, 7, 81, 2, 2, 413, 414, 7, 79, 2, 2, 414, 415, 7, 79, 2, 2, 415, 416, 7, 81, 2, 2, 416, 418, 7, 80, 2, 2, 417, 405, 3, 2, 2, 2, 417, 411, 3, 2, 2, 2, 418, 22, 3, 2, 2, 2, 419, 420, 7, 114, 2, 2, 420, 421, 7, 113, 2, 2, 421, 422, 7, 107, 2, 2, 422, 423, 7, 112, 2, 2, 423, 424, 7, 118, 2, 2, 424, 425, 7, 103, 2, 2, 425, 434, 7, 116, 2, 2, 426, 427, 7, 82, 2, 2, 427, 428, 7, 81, 2, 2, 428, 429, 7, 75, 2, 2, 429, 430, 7, 80, 2, 2, 430, 431, 7, 86, 2, 2, 431, 432, 7, 71, 2, 2, 432, 434, 7, 84, 2, 2, 433, 419, 3, 2, 2, 2, 433, 426, 3, 2, 2, 2, 434, 24, 3, 2, 2, 2, 435, 436, 7, 107, 2, 2, 436, 437, 7, 111, 2, 2, 437, 438, 7, 114, 2, 2, 438, 439, 7, 110, 2, 2, 439, 440, 7, 107, 2, 2, 440, 441, 7, 101, 2, 2, 441, 442, 7, 107, 2, 2, 442, 452, 7, 118, 2, 2, 443, 444, 7, 75, 2, 2, 444, 445, 7, 79, 2, 2, 445, 446, 7, 82, 2, 2, 446, 447, 7, 78, 2, 2, 447, 448, 7, 75, 2, 2, 448, 449, 7, 69, 2, 2, 449, 450, 7, 75, 2, 2, 450, 452, 7, 86, 2, 2, 451, 435, 3, 2, 2, 2, 451, 443, 3, 2, 2, 2, 452, 26, 3, 2, 2, 2, 453, 454, 7, 112, 2, 2, 454, 455, 7, 113, 2, 2, 455, 456, 7, 112, 2, 2, 456, 462, 7, 103, 2, 2, 457, 458, 7, 80, 2, 2, 458, 459, 7, 81, 2, 2, 459, 460, 7, 80, 2, 2, 460, 462, 7, 71, 2, 2, 461, 453, 3, 2, 2, 2, 461, 457, 3, 2, 2, 2, 462, 28, 3, 2, 2, 2, 463, 464, 7, 101, 2, 2, 464, 465, 7, 106, 2, 2, 465, 466, 7, 99, 2, 2, 466, 467, 7, 116, 2, 2, 467, 468, 7, 99, 2, 2, 468, 469, 7, 101, 2, 2, 469, 470, 7, 118, 2, 2, 470, 471, 7, 103, 2, 2, 471, 482, 7, 116, 2, 2, 472, 473, 7, 69, 2, 2, 473, 474, 7, 74, 2, 2, 474, 475, 7, 67, 2, 2, 475, 476, 7, 84, 2, 2, 476, 477, 7, 67, 2, 2, 477, 478, 7, 69, 2, 2, 478, 479, 7, 86, 2, 2, 479, 480, 7, 71, 2, 2, 480, 482, 7, 84, 2, 2, 481, 463, 3, 2, 2, 2, 481, 472, 3, 2, 2, 2, 482, 30, 3, 2, 2, 2, 483, 484, 7, 114, 2, 2, 484, 485, 7, 99, 2, 2, 485, 486, 7, 116, 2, 2, 486, 487, 7, 99, 2, 2, 487, 488, 7, 111, 2, 2, 488, 489, 7, 103, 2, 2, 489, 490, 7, 118, 2, 2, 490, 491, 7, 103, 2, 2, 491, 502, 7, 116, 2, 2, 492, 493, 7, 82, 2, 2, 493, 494, 7, 67, 2, 2, 494, 495, 7, 84, 2, 2, 495, 496, 7, 67, 2, 2, 496, 497, 7, 79, 2, 2, 497, 498, 7, 71, 2, 2, 498, 499, 7, 86, 2, 2, 499, 500, 7, 71, 2, 2, 500, 502, 7, 84, 2, 2, 501, 483, 3, 2, 2, 2, 501, 492, 3, 2, 2, 2, 502, 32, 3, 2, 2, 2, 503, 504, 7, 103, 2, 2, 504, 505, 7, 122, 2, 2, 505, 506, 7, 118, 2, 2, 506, 507, 7, 103, 2, 2, 507, 508, 7, 116, 2, 2, 508, 509, 7, 112, 2, 2, 509, 510, 7, 99, 2, 2, 510, 520, 7, 110, 2, 2, 511, 512, 7, 71, 2, 2, 512, 513, 7, 90, 2, 2, 513, 514, 7, 86, 2, 2, 514, 515, 7, 71, 2, 2, 515, 516, 7, 84, 2, 2, 516, 517, 7, 80, 2, 2, 517, 518, 7, 67, 2, 2, 518, 520, 7, 78, 2, 2, 519, 503, 3, 2, 2, 2, 519, 511, 3, 2, 2, 2, 520, 34, 3, 2, 2, 2, 521, 522, 7, 107, 2, 2, 522, 523, 7, 112, 2, 2, 523, 524, 7, 118, 2, 2, 524, 525, 7, 116, 2, 2, 525, 526, 7, 107, 2, 2, 526, 527, 7, 112, 2, 2, 527, 528, 7, 117, 2, 2, 528, 529, 7, 107, 2, 2, 529, 540, 7, 101, 2, 2, 530, 531, 7, 75, 2, 2, 531, 532, 7, 80, 2, 2, 532, 533, 7, 86, 2, 2, 533, 534, 7, 84, 2, 2, 534, 535, 7, 75, 2, 2, 535, 536, 7, 80, 2, 2, 536, 537, 7, 85, 2, 2, 537, 538, 7, 75, 2, 2, 538, 540, 7, 69, 2, 2, 539, 521, 3, 2, 2, 2, 539, 530, 3, 2, 2, 2, 540, 36, 3, 2, 2, 2, 541, 542, 7, 117, 2, 2, 542, 543, 7, 99, 2, 2, 543, 544, 7, 120, 2, 2, 544, 550, 7, 103, 2, 2, 545, 546, 7, 85, 2, 2, 546, 547, 7, 67, 2, 2, 547, 548, 7, 88, 2, 2, 548, 550, 7, 71, 2, 2, 549, 541, 3, 2, 2, 2, 549, 545, 3, 2, 2, 2, 550, 38, 3, 2, 2, 2, 551, 552, 7, 102, 2, 2, 552, 553, 7, 99, 2, 2, 553, 554, 7, 118, 2, 2, 554, 560, 7, 99, 2, 2, 555, 556, 7, 70, 2, 2, 556, 557, 7, 67, 2, 2, 557, 558, 7, 86, 2, 2, 558, 560, 7, 67, 2, 2, 559, 551, 3, 2, 2, 2, 559, 555, 3, 2, 2, 2, 560, 40, 3, 2, 2, 2, 561, 562, 7, 73, 2, 2, 562, 566, 7, 81, 2, 2, 563, 564, 7, 105, 2, 2, 564, 566, 7, 113, 2, 2, 565, 561, 3, 2, 2, 2, 565, 563, 3, 2, 2, 2, 566, 42, 3, 2, 2, 2, 567, 568, 7, 73, 2, 2, 568, 569, 7, 81, 2, 2, 569, 570, 7, 86, 2, 2, 570, 576, 7, 81, 2, 2, 571, 572, 7, 105, 2, 2, 572, 573, 7, 113, 2, 2, 573, 574, 7, 118, 2, 2, 574, 576, 7, 113, 2, 2, 575, 567, 3, 2, 2, 2, 575, 571, 3, 2, 2, 2, 576, 44, 3, 2, 2, 2, 577, 578, 7, 75, 2, 2, 578, 582, 7, 72, 2, 2, 579, 580, 7, 107, 2, 2, 580, 582, 7, 104, 2, 2, 581, 577, 3, 2, 2, 2, 581, 579, 3, 2, 2, 2, 582, 46, 3, 2, 2, 2, 583, 584, 7, 86, 2, 2, 584, 585, 7, 74, 2, 2, 585, 586, 7, 71, 2, 2, 586, 592, 7, 80, 2, 2, 587, 588, 7, 118, 2, 2, 588, 589, 7, 106, 2, 2, 589, 590, 7, 103, 2, 2, 590, 592, 7, 112, 2, 2, 591, 583, 3, 2, 2, 2, 591, 587, 3, 2, 2, 2, 592, 48, 3, 2, 2, 2, 593, 594, 7, 71, 2, 2, 594, 595, 7, 78, 2, 2, 595, 596, 7, 85, 2, 2, 596, 602, 7, 71, 2, 2, 597, 598, 7, 103, 2, 2, 598, 599, 7, 110, 2, 2, 599, 600, 7, 117, 2, 2, 600, 602, 7, 103, 2, 2, 601, 593, 3, 2, 2, 2, 601, 597, 3, 2, 2, 2, 602, 50, 3, 2, 2, 2, 603, 604, 7, 71, 2, 2, 604, 605, 7, 80, 2, 2, 605, 606, 7, 70, 2, 2, 606, 607, 7, 75, 2, 2, 607, 614, 7, 72, 2, 2, 608, 609, 7, 103, 2, 2, 609, 610, 7, 112, 2, 2, 610, 611, 7, 102, 2, 2, 611, 612, 7, 107, 2, 2, 612, 614, 7, 104, 2, 2, 613, 603, 3, 2, 2, 2, 613, 608, 3, 2, 2, 2, 614, 52, 3, 2, 2, 2, 615, 616, 7, 71, 2, 2, 616, 617, 7, 78, 2, 2, 617, 618, 7, 85, 2, 2, 618, 619, 7, 71, 2, 2, 619, 620, 7, 75, 2, 2, 620, 628, 7, 72, 2, 2, 621, 622, 7, 103, 2, 2, 622, 623, 7, 110, 2, 2, 623, 624, 7, 117, 2, 2, 624, 625, 7, 103, 2, 2, 625, 626, 7, 107, 2, 2, 626, 628, 7, 104, 2, 2, 627, 615, 3, 2, 2, 2, 627, 621, 3, 2, 2, 2, 628, 54, 3, 2, 2, 2, 629, 630, 7, 70, 2, 2, 630, 634, 7, 81, 2, 2, 631, 632, 7, 102, 2, 2, 632, 634, 7, 113, 2, 2, 633, 629, 3, 2, 2, 2, 633, 631, 3, 2, 2, 2, 634, 56, 3, 2, 2, 2, 635, 636, 7, 69, 2, 2, 636, 637, 7, 81, 2, 2, 637, 638, 7, 80, 2, 2, 638, 639, 7, 86, 2, 2, 639, 640, 7, 75, 2, 2, 640, 641, 7, 80, 2, 2, 641, 642, 7, 87, 2, 2, 642, 652, 7, 71, 2, 2, 643, 644, 7, 101, 2, 2, 644, 645, 7, 113, 2, 2, 645, 646, 7, 112, 2, 2, 646, 647, 7, 118, 2, 2, 647, 648, 7, 107, 2, 2, 648, 649, 7, 112, 2, 2, 649, 650, 7, 119, 2, 2, 650, 652, 7, 103, 2, 2, 651, 635, 3, 2, 2, 2, 651, 643, 3, 2, 2, 2, 652, 58, 3, 2, 2, 2, 653, 654, 7, 85, 2, 2, 654, 655, 7, 86, 2, 2, 655, 656, 7, 81, 2, 2, 656, 662, 7, 82, 2, 2, 657, 658, 7, 117, 2, 2, 658, 659, 7, 118, 2, 2, 659, 660, 7, 113, 2, 2, 660, 662, 7, 114, 2, 2, 661, 653, 3, 2, 2, 2, 661, 657, 3, 2, 2, 2, 662, 60, 3, 2, 2, 2, 663, 664, 7, 71, 2, 2, 664, 665, 7, 80, 2, 2, 665, 666, 7, 70, 2, 2, 666, 667, 7, 70, 2, 2, 667, 674, 7, 81, 2, 2, 668, 669, 7, 103, 2, 2, 669, 670, 7, 112, 2, 2, 670, 671, 7, 102, 2, 2, 671, 672, 7, 102, 2, 2, 672, 674, 7, 113, 2, 2, 673, 663, 3, 2, 2, 2, 673, 668, 3, 2, 2, 2, 674, 62, 3, 2, 2, 2, 675, 676, 7, 114, 2, 2, 676, 677, 7, 99, 2, 2, 677, 678, 7, 119, 2, 2, 678, 679, 7, 117, 2, 2, 679, 686, 7, 103, 2, 2, 680, 681, 7, 82, 2, 2, 681, 682, 7, 67, 2, 2, 682, 683, 7, 87, 2, 2, 683, 684, 7, 85, 2, 2, 684, 686, 7, 71, 2, 2, 685, 675, 3, 2, 2, 2, 685, 680, 3, 2, 2, 2, 686, 64, 3, 2, 2, 2, 687, 688, 7, 89, 2, 2, 688, 689, 7, 84, 2, 2, 689, 690, 7, 75, 2, 2, 690, 691, 7, 86, 2, 2, 691, 698, 7, 71, 2, 2, 692, 693, 7, 121, 2, 2, 693, 694, 7, 116, 2, 2, 694, 695, 7, 107, 2, 2, 695, 696, 7, 118, 2, 2, 696, 698, 7, 103, 2, 2, 697, 687, 3, 2, 2, 2, 697, 692, 3, 2, 2, 2, 698, 66, 3, 2, 2, 2, 699, 700, 7, 84, 2, 2, 700, 701, 7, 71, 2, 2, 701, 702, 7, 67, 2, 2, 702, 708, 7, 70, 2, 2, 703, 704, 7, 116, 2, 2, 704, 705, 7, 103, 2, 2, 705, 706, 7, 99, 2, 2, 706, 708, 7, 102, 2, 2, 707, 699, 3, 2, 2, 2, 707, 703, 3, 2, 2, 2, 708, 68, 3, 2, 2, 2, 709, 710, 7, 82, 2, 2, 710, 711, 7, 84, 2, 2, 711, 712, 7, 75, 2, 2, 712, 713, 7, 80, 2, 2, 713, 720, 7, 86, 2, 2, 714, 715, 7, 114, 2, 2, 715, 716, 7, 116, 2, 2, 716, 717, 7, 107, 2, 2, 717, 718, 7, 112, 2, 2, 718, 720, 7, 118, 2, 2, 719, 709, 3, 2, 2, 2, 719, 714, 3, 2, 2, 2, 720, 70, 3, 2, 2, 2, 721, 722, 7, 81, 2, 2, 722, 723, 7, 82, 2, 2, 723, 724, 7, 71, 2, 2, 724, 730, 7, 80, 2, 2, 725, 726, 7, 113, 2, 2, 726, 727, 7, 114, 2, 2, 727, 728, 7, 103, 2, 2, 728, 730, 7, 112, 2, 2, 729, 721, 3, 2, 2, 2, 729, 725, 3, 2, 2, 2, 730, 72, 3, 2, 2, 2, 731, 732, 7, 72, 2, 2, 732, 733, 7, 79, 2, 2, 733, 738, 7, 86, 2, 2, 734, 735, 7, 104, 2, 2, 735, 736, 7, 111, 2, 2, 736, 738, 7, 118, 2, 2, 737, 731, 3, 2, 2, 2, 737, 734, 3, 2, 2, 2, 738, 74, 3, 2, 2, 2, 739, 740, 7, 87, 2, 2, 740, 741, 7, 80, 2, 2, 741, 742, 7, 75, 2, 2, 742, 748, 7, 86, 2, 2, 743, 744, 7, 119, 2, 2, 744, 745, 7, 112, 2, 2, 745, 746, 7, 107, 2, 2, 746, 748, 7, 118, 2, 2, 747, 739, 3, 2, 2, 2, 747, 743, 3, 2, 2, 2, 748, 76, 3, 2, 2, 2, 749, 750, 7, 103, 2, 2, 750, 751, 7, 116, 2, 2, 751, 756, 7, 116, 2, 2, 752, 753, 7, 71, 2, 2, 753, 754, 7, 84, 2, 2, 754, 756, 7, 84, 2, 2, 755, 749, 3, 2, 2, 2, 755, 752, 3, 2, 2, 2, 756, 78, 3, 2, 2, 2, 757, 758, 7, 75, 2, 2, 758, 759, 7, 81, 2, 2, 759, 760, 7, 85, 2, 2, 760, 761, 7, 86, 2, 2, 761, 762, 7, 67, 2, 2, 762, 770, 7, 86, 2, 2, 763, 764, 7, 107, 2, 2, 764, 765, 7, 113, 2, 2, 765, 766, 7, 117, 2, 2, 766, 767, 7, 118, 2, 2, 767, 768, 7, 99, 2, 2, 768, 770, 7, 118, 2, 2, 769, 757, 3, 2, 2, 2, 769, 763, 3, 2, 2, 2, 770, 80, 3, 2, 2, 2, 771, 772, 7, 72, 2, 2, 772, 773, 7, 81, 2, 2, 773, 774, 7, 84, 2, 2, 774, 775, 7, 79, 2, 2, 775, 776, 7, 67, 2, 2, 776, 784, 7, 86, 2, 2, 777, 778, 7, 104, 2, 2, 778, 779, 7, 113, 2, 2, 779, 780, 7, 116, 2, 2, 780, 781, 7, 111, 2, 2, 781, 782, 7, 99, 2, 2, 782, 784, 7, 118, 2, 2, 783, 771, 3, 2, 2, 2, 783, 777, 3, 2, 2, 2, 784, 82, 3, 2, 2, 2, 785, 786, 7, 78, 2, 2, 786, 787, 7, 71, 2, 2, 787, 792, 7, 86, 2, 2, 788, 789, 7, 110, 2, 2, 789, 790, 7, 103, 2, 2, 790, 792, 7, 118, 2, 2, 791, 785, 3, 2, 2, 2, 791, 788, 3, 2, 2, 2, 792, 84, 3, 2, 2, 2, 793, 794, 7, 69, 2, 2, 794, 795, 7, 67, 2, 2, 795, 796, 7, 78, 2, 2, 796, 802, 7, 78, 2, 2, 797, 798, 7, 101, 2, 2, 798, 799, 7, 99, 2, 2, 799, 800, 7, 110, 2, 2, 800, 802, 7, 110, 2, 2, 801, 793, 3, 2, 2, 2, 801, 797, 3, 2, 2, 2, 802, 86, 3, 2, 2, 2, 803, 804, 7, 84, 2, 2, 804, 805, 7, 71, 2, 2, 805, 806, 7, 86, 2, 2, 806, 807, 7, 87, 2, 2, 807, 808, 7, 84, 2, 2, 808, 816, 7, 80, 2, 2, 809, 810, 7, 116, 2, 2, 810, 811, 7, 103, 2, 2, 811, 812, 7, 118, 2, 2, 812, 813, 7, 119, 2, 2, 813, 814, 7, 116, 2, 2, 814, 816, 7, 112, 2, 2, 815, 803, 3, 2, 2, 2, 815, 809, 3, 2, 2, 2, 816, 88, 3, 2, 2, 2, 817, 818, 7, 69, 2, 2, 818, 819, 7, 78, 2, 2, 819, 820, 7, 81, 2, 2, 820, 821, 7, 85, 2, 2, 821, 828, 7, 71, 2, 2, 822, 823, 7, 101, 2, 2, 823, 824, 7, 110, 2, 2, 824, 825, 7, 113, 2, 2, 825, 826, 7, 117, 2, 2, 826, 828, 7, 103, 2, 2, 827, 817, 3, 2, 2, 2, 827, 822, 3, 2, 2, 2, 828, 90, 3, 2, 2, 2, 829, 830, 7, 70, 2, 2, 830, 831, 7, 81, 2, 2, 831, 832, 7, 87, 2, 2, 832, 833, 7, 68, 2, 2, 833, 834, 7, 78, 2, 2, 834, 842, 7, 71, 2, 2, 835, 836, 7, 102, 2, 2, 836, 837, 7, 113, 2, 2, 837, 838, 7, 119, 2, 2, 838, 839, 7, 100, 2, 2, 839, 840, 7, 110, 2, 2, 840, 842, 7, 103, 2, 2, 841, 829, 3, 2, 2, 2, 841, 835, 3, 2, 2, 2, 842, 92, 3, 2, 2, 2, 843, 844, 7, 75, 2, 2, 844, 845, 7, 81, 2, 2, 845, 846, 7, 85, 2, 2, 846, 847, 7, 86, 2, 2, 847, 848, 7, 67, 2, 2, 848, 849, 7, 84, 2, 2, 849, 858, 7, 86, 2, 2, 850, 851, 7, 107, 2, 2, 851, 852, 7, 113, 2, 2, 852, 853, 7, 117, 2, 2, 853, 854, 7, 118, 2, 2, 854, 855, 7, 99, 2, 2, 855, 856, 7, 116, 2, 2, 856, 858, 7, 118, 2, 2, 857, 843, 3, 2, 2, 2, 857, 850, 3, 2, 2, 2, 858, 94, 3, 2, 2, 2, 859, 860, 7, 85, 2, 2, 860, 861, 7, 71, 2, 2, 861, 862, 7, 83, 2, 2, 862, 863, 7, 87, 2, 2, 863, 864, 7, 71, 2, 2, 864, 865, 7, 80, 2, 2, 865, 866, 7, 86, 2, 2, 866, 867, 7, 75, 2, 2, 867, 868, 7, 67, 2, 2, 868, 880, 7, 78, 2, 2, 869, 870, 7, 117, 2, 2, 870, 871, 7, 103, 2, 2, 871, 872, 7, 115, 2, 2, 872, 873, 7, 119, 2, 2, 873, 874, 7, 103, 2, 2, 874, 875, 7, 112, 2, 2, 875, 876, 7, 118, 2, 2, 876, 877, 7, 107, 2, 2, 877, 878, 7, 99, 2, 2, 878, 880, 7, 110, 2, 2, 879, 859, 3, 2, 2, 2, 879, 869, 3, 2, 2, 2, 880, 96, 3, 2, 2, 2, 881, 882, 7, 78, 2, 2, 882, 883, 7, 67, 2, 2, 883, 884, 7, 68, 2, 2, 884, 885, 7, 71, 2, 2, 885, 892, 7, 78, 2, 2, 886, 887, 7, 110, 2, 2, 887, 888, 7, 99, 2, 2, 888, 889, 7, 100, 2, 2, 889, 890, 7, 103, 2, 2, 890, 892, 7, 110, 2, 2, 891, 881, 3, 2, 2, 2, 891, 886, 3, 2, 2, 2, 892, 98, 3, 2, 2, 2, 893, 894, 7, 104, 2, 2, 894, 895, 7, 107, 2, 2, 895, 896, 7, 110, 2, 2, 896, 902, 7, 103, 2, 2, 897, 898, 7, 72, 2, 2, 898, 899, 7, 75, 2, 2, 899, 900, 7, 78, 2, 2, 900, 902, 7, 71, 2, 2, 901, 893, 3, 2, 2, 2, 901, 897, 3, 2, 2, 2, 902, 100, 3, 2, 2, 2, 903, 904, 7, 85, 2, 2, 904, 905, 7, 86, 2, 2, 905, 906, 7, 67, 2, 2, 906, 907, 7, 86, 2, 2, 907, 908, 7, 87, 2, 2, 908, 916, 7, 85, 2, 2, 909, 910, 7, 117, 2, 2, 910, 911, 7, 118, 2, 2, 911, 912, 7, 99, 2, 2, 912, 913, 7, 118, 2, 2, 913, 914, 7, 119, 2, 2, 914, 916, 7, 117, 2, 2, 915, 903, 3, 2, 2, 2, 915, 909, 3, 2, 2, 2, 916, 102, 3, 2, 2, 2, 917, 918, 7, 67, 2, 2, 918, 919, 7, 69, 2, 2, 919, 920, 7, 69, 2, 2, 920, 921, 7, 71, 2, 2, 921, 922, 7, 85, 2, 2, 922, 930, 7, 85, 2, 2, 923, 924, 7, 99, 2, 2, 924, 925, 7, 101, 2, 2, 925, 926, 7, 101, 2, 2, 926, 927, 7, 103, 2, 2, 927, 928, 7, 117, 2, 2, 928, 930, 7, 117, 2, 2, 929, 917, 3, 2, 2, 2, 929, 923, 3, 2, 2, 2, 930, 104, 3, 2, 2, 2, 931, 932, 7, 82, 2, 2, 932, 933, 7, 81, 2, 2, 933, 934, 7, 85, 2, 2, 934, 935, 7, 75, 2, 2, 935, 936, 7, 86, 2, 2, 936, 937, 7, 75, 2, 2, 937, 938, 7, 81, 2, 2, 938, 948, 7, 80, 2, 2, 939, 940, 7, 114, 2, 2, 940, 941, 7, 113, 2, 2, 941, 942, 7, 117, 2, 2, 942, 943, 7, 107, 2, 2, 943, 944, 7, 118, 2, 2, 944, 945, 7, 107, 2, 2, 945, 946, 7, 113, 2, 2, 946, 948, 7, 112, 2, 2, 947, 931, 3, 2, 2, 2, 947, 939, 3, 2, 2, 2, 948, 106, 3, 2, 2, 2, 949, 950, 7, 72, 2, 2, 950, 951, 7, 81, 2, 2, 951, 952, 7, 84, 2, 2, 952, 958, 7, 79, 2, 2, 953, 954, 7, 104, 2, 2, 954, 955, 7, 113, 2, 2, 955, 956, 7, 116, 2, 2, 956, 958, 7, 111, 2, 2, 957, 949, 3, 2, 2, 2, 957, 953, 3, 2, 2, 2, 958, 108, 3, 2, 2, 2, 959, 960, 7, 84, 2, 2, 960, 961, 7, 71, 2, 2, 961, 962, 7, 69, 2, 2, 962, 968, 7, 78, 2, 2, 963, 964, 7, 116, 2, 2, 964, 965, 7, 103, 2, 2, 965, 966, 7, 101, 2, 2, 966, 968, 7, 110, 2, 2, 967, 959, 3, 2, 2, 2, 967, 963, 3, 2, 2, 2, 968, 110, 3, 2, 2, 2, 969, 970, 7, 68, 2, 2, 970, 971, 7, 78, 2, 2, 971, 972, 7, 67, 2, 2, 972, 973, 7, 80, 2, 2, 973, 980, 7, 77, 2, 2, 974, 975, 7, 100, 2, 2, 975, 976, 7, 110, 2, 2, 976, 977, 7, 99, 2, 2, 977, 978, 7, 112, 2, 2, 978, 980, 7, 109, 2, 2, 979, 969, 3, 2, 2, 2, 979, 974, 3, 2, 2, 2, 980, 112, 3, 2, 2, 2, 981, 982, 7, 71, 2, 2, 982, 983, 7, 90, 2, 2, 983, 984, 7, 75, 2, 2, 984, 985, 7, 85, 2, 2, 985, 992, 7, 86, 2, 2, 986, 987, 7, 103, 2, 2, 987, 988, 7, 122, 2, 2, 988, 989, 7, 107, 2, 2, 989, 990, 7, 117, 2, 2, 990, 992, 7, 118, 2, 2, 991, 981, 3, 2, 2, 2, 991, 986, 3, 2, 2, 2, 992, 114, 3, 2, 2, 2, 993, 994, 7, 81, 2, 2, 994, 995, 7, 82, 2, 2, 995, 996, 7, 71, 2, 2, 996, 997, 7, 80, 2, 2, 997, 998, 7, 71, 2, 2, 998, 1006, 7, 70, 2, 2, 999, 1000, 7, 113, 2, 2, 1000, 1001, 7, 114, 2, 2, 1001, 1002, 7, 103, 2, 2, 1002, 1003, 7, 112, 2, 2, 1003, 1004, 7, 103, 2, 2, 1004, 1006, 7, 102, 2, 2, 1005, 993, 3, 2, 2, 2, 1005, 999, 3, 2, 2, 2, 1006, 116, 3, 2, 2, 2, 1007, 1008, 7, 80, 2, 2, 1008, 1009, 7, 87, 2, 2, 1009, 1010, 7, 79, 2, 2, 1010, 1011, 7, 68, 2, 2, 1011, 1012, 7, 71, 2, 2, 1012, 1020, 7, 84, 2, 2, 1013, 1014, 7, 112, 2, 2, 1014, 1015, 7, 119, 2, 2, 1015, 1016, 7, 111, 2, 2, 1016, 1017, 7, 100, 2, 2, 1017, 1018, 7, 103, 2, 2, 1018, 1020, 7, 116, 2, 2, 1019, 1007, 3, 2, 2, 2, 1019, 1013, 3, 2, 2, 2, 1020, 118, 3, 2, 2, 2, 1021, 1022, 7, 80, 2, 2, 1022, 1023, 7, 67, 2, 2, 1023, 1024, 7, 79, 2, 2, 1024, 1025, 7, 71, 2, 2, 1025, 1032, 7, 70, 2, 2, 1026, 1027, 7, 112, 2, 2, 1027, 1028, 7, 99, 2, 2, 1028, 1029, 7, 111, 2, 2, 1029, 1030, 7, 103, 2, 2, 1030, 1032, 7, 102, 2, 2, 1031, 1021, 3, 2, 2, 2, 1031, 1026, 3, 2, 2, 2, 1032, 120, 3, 2, 2, 2, 1033, 1034, 7, 80, 2, 2, 1034, 1035, 7, 67, 2, 2, 1035, 1036, 7, 79, 2, 2, 1036, 1042, 7, 71, 2, 2, 1037, 1038, 7, 112, 2, 2, 1038, 1039, 7, 99, 2, 2, 1039, 1040, 7, 111, 2, 2, 1040, 1042, 7, 103, 2, 2, 1041, 1033, 3, 2, 2, 2, 1041, 1037, 3, 2, 2, 2, 1042, 122, 3, 2, 2, 2, 1043, 1044, 7, 72, 2, 2, 1044, 1045, 7, 81, 2, 2, 1045, 1046, 7, 84, 2, 2, 1046, 1047, 7, 79, 2, 2, 1047, 1048, 7, 67, 2, 2, 1048, 1049, 7, 86, 2, 2, 1049, 1050, 7, 86, 2, 2, 1050, 1051, 7, 71, 2, 2, 1051, 1062, 7, 70, 2, 2, 1052, 1053, 7, 104, 2, 2, 1053, 1054, 7, 113, 2, 2, 1054, 1055, 7, 116, 2, 2, 1055, 1056, 7, 111, 2, 2, 1056, 1057, 7, 99, 2, 2, 1057, 1058, 7, 118, 2, 2, 1058, 1059, 7, 118, 2, 2, 1059, 1060, 7, 103, 2, 2, 1060, 1062, 7, 102, 2, 2, 1061, 1043, 3, 2, 2, 2, 1061, 1052, 3, 2, 2, 2, 1062, 124, 3, 2, 2, 2, 1063, 1064, 7, 87, 2, 2, 1064, 1065, 7, 80, 2, 2, 1065, 1066, 7, 72, 2, 2, 1066, 1067, 7, 81, 2, 2, 1067, 1068, 7, 84, 2, 2, 1068, 1069, 7, 79, 2, 2, 1069, 1070, 7, 67, 2, 2, 1070, 1071, 7, 86, 2, 2, 1071, 1072, 7, 86, 2, 2, 1072, 1073, 7, 71, 2, 2, 1073, 1086, 7, 70, 2, 2, 1074, 1075, 7, 119, 2, 2, 1075, 1076, 7, 112, 2, 2, 1076, 1077, 7, 104, 2, 2, 1077, 1078, 7, 113, 2, 2, 1078, 1079, 7, 116, 2, 2, 1079, 1080, 7, 111, 2, 2, 1080, 1081, 7, 99, 2, 2, 1081, 1082, 7, 118, 2, 2, 1082, 1083, 7, 118, 2, 2, 1083, 1084, 7, 103, 2, 2, 1084, 1086, 7, 102, 2, 2, 1085, 1063, 3, 2, 2, 2, 1085, 1074, 3, 2, 2, 2, 1086, 126, 3, 2, 2, 2, 1087, 1088, 7, 80, 2, 2, 1088, 1089, 7, 71, 2, 2, 1089, 1090, 7, 90, 2, 2, 1090, 1091, 7, 86, 2, 2, 1091, 1092, 7, 84, 2, 2, 1092, 1093, 7, 71, 2, 2, 1093, 1102, 7, 69, 2, 2, 1094, 1095, 7, 112, 2, 2, 1095, 1096, 7, 103, 2, 2, 1096, 1097, 7, 122, 2, 2, 1097, 1098, 7, 118, 2, 2, 1098, 1099, 7, 116, 2, 2, 1099, 1100, 7, 103, 2, 2, 1100, 1102, 7, 101, 2, 2, 1101, 1087, 3, 2, 2, 2, 1101, 1094, 3, 2, 2, 2, 1102, 128, 3, 2, 2, 2, 1103, 1104, 7, 75, 2, 2, 1104, 1105, 7, 80, 2, 2, 1105, 1106, 7, 83, 2, 2, 1106, 1107, 7, 87, 2, 2, 1107, 1108, 7, 75, 2, 2, 1108, 1109, 7, 84, 2, 2, 1109, 1118, 7, 71, 2, 2, 1110, 1111, 7, 107, 2, 2, 1111, 1112, 7, 112, 2, 2, 1112, 1113, 7, 115, 2, 2, 1113, 1114, 7, 119, 2, 2, 1114, 1115, 7, 107, 2, 2, 1115, 1116, 7, 116, 2, 2, 1116, 1118, 7, 103, 2, 2, 1117, 1103, 3, 2, 2, 2, 1117, 1110, 3, 2, 2, 2, 1118, 130, 3, 2, 2, 2, 1119, 1120, 7, 68, 2, 2, 1120, 1121, 7, 67, 2, 2, 1121, 1122, 7, 69, 2, 2, 1122, 1123, 7, 77, 2, 2, 1123, 1124, 7, 85, 2, 2, 1124, 1125, 7, 82, 2, 2, 1125, 1126, 7, 67, 2, 2, 1126, 1127, 7, 69, 2, 2, 1127, 1138, 7, 71, 2, 2, 1128, 1129, 7, 100, 2, 2, 1129, 1130, 7, 99, 2, 2, 1130, 1131, 7, 101, 2, 2, 1131, 1132, 7, 109, 2, 2, 1132, 1133, 7, 117, 2, 2, 1133, 1134, 7, 114, 2, 2, 1134, 1135, 7, 99, 2, 2, 1135, 1136, 7, 101, 2, 2, 1136, 1138, 7, 103, 2, 2, 1137, 1119, 3, 2, 2, 2, 1137, 1128, 3, 2, 2, 2, 1138, 132, 3, 2, 2, 2, 1139, 1140, 7, 71, 2, 2, 1140, 1141, 7, 80, 2, 2, 1141, 1142, 7, 70, 2, 2, 1142, 1143, 7, 72, 2, 2, 1143, 1144, 7, 75, 2, 2, 1144, 1145, 7, 78, 2, 2, 1145, 1154, 7, 71, 2, 2, 1146, 1147, 7, 103, 2, 2, 1147, 1148, 7, 112, 2, 2, 1148, 1149, 7, 102, 2, 2, 1149, 1150, 7, 104, 2, 2, 1150, 1151, 7, 107, 2, 2, 1151, 1152, 7, 110, 2, 2, 1152, 1154, 7, 103, 2, 2, 1153, 1139, 3, 2, 2, 2, 1153, 1146, 3, 2, 2, 2, 1154, 134, 3, 2, 2, 2, 1155, 1156, 7, 84, 2, 2, 1156, 1157, 7, 71, 2, 2, 1157, 1158, 7, 89, 2, 2, 1158, 1159, 7, 75, 2, 2, 1159, 1160, 7, 80, 2, 2, 1160, 1168, 7, 70, 2, 2, 1161, 1162, 7, 116, 2, 2, 1162, 1163, 7, 103, 2, 2, 1163, 1164, 7, 121, 2, 2, 1164, 1165, 7, 107, 2, 2, 1165, 1166, 7, 112, 2, 2, 1166, 1168, 7, 102, 2, 2, 1167, 1155, 3, 2, 2, 2, 1167, 1161, 3, 2, 2, 2, 1168, 136, 3, 2, 2, 2, 1169, 1170, 7, 38, 2, 2, 1170, 138, 3, 2, 2, 2, 1171, 1172, 7, 46, 2, 2, 1172, 140, 3, 2, 2, 2, 1173, 1174, 7, 42, 2, 2, 1174, 142, 3, 2, 2, 2, 1175, 1176, 7, 43, 2, 2, 1176, 144, 3, 2, 2, 2, 1177, 1178, 7, 60, 2, 2, 1178, 146, 3, 2, 2, 2, 1179, 1180, 7, 63, 2, 2, 1180, 148, 3, 2, 2, 2, 1181, 1182, 7, 47, 2, 2, 1182, 150, 3, 2, 2, 2, 1183, 1184, 7, 45, 2, 2, 1184, 152, 3, 2, 2, 2, 1185, 1186, 7, 49, 2, 2, 1186, 154, 3, 2, 2, 2, 1187, 1188, 7, 44, 2, 2, 1188, 156, 3, 2, 2, 2, 1189, 1190, 7, 44, 2, 2, 1190, 1191, 7, 44, 2, 2, 1191, 158, 3, 2, 2, 2, 1192, 1193, 7, 48, 2, 2, 1193, 1194, 7, 112, 2, 2, 1194, 1195, 7, 113, 2, 2, 1195, 1196, 7, 118, 2, 2, 1196, 1203, 7, 48, 2, 2, 1197, 1198, 7, 48, 2, 2, 1198, 1199, 7, 80, 2, 2, 1199, 1200, 7, 81, 2, 2, 1200, 1201, 7, 86, 2, 2, 1201, 1203, 7, 48, 2, 2, 1202, 1192, 3, 2, 2, 2, 1202, 1197, 3, 2, 2, 2, 1203, 160, 3, 2, 2, 2, 1204, 1205, 7, 48, 2, 2, 1205, 1206, 7, 99, 2, 2, 1206, 1207, 7, 112, 2, 2, 1207, 1208, 7, 102, 2, 2, 1208, 1215, 7, 48, 2, 2, 1209, 1210, 7, 48, 2, 2, 1210, 1211, 7, 67, 2, 2, 1211, 1212, 7, 80, 2, 2, 1212, 1213, 7, 70, 2, 2, 1213, 1215, 7, 48, 2, 2, 1214, 1204, 3, 2, 2, 2, 1214, 1209, 3, 2, 2, 2, 1215, 162, 3, 2, 2, 2, 1216, 1217, 7, 48, 2, 2, 1217, 1218, 7, 113, 2, 2, 1218, 1219, 7, 116, 2, 2, 1219, 1225, 7, 48, 2, 2, 1220, 1221, 7, 48, 2, 2, 1221, 1222, 7, 81, 2, 2, 1222, 1223, 7, 84, 2, 2, 1223, 1225, 7, 48, 2, 2, 1224, 1216, 3, 2, 2, 2, 1224, 1220, 3, 2, 2, 2, 1225, 164, 3, 2, 2, 2, 1226, 1227, 7, 48, 2, 2, 1227, 1228, 7, 103, 2, 2, 1228, 1229, 7, 115, 2, 2, 1229, 1230, 7, 120, 2, 2, 1230, 1237, 7, 48, 2, 2, 1231, 1232, 7, 48, 2, 2, 1232, 1233, 7, 71, 2, 2, 1233, 1234, 7, 83, 2, 2, 1234, 1235, 7, 88, 2, 2, 1235, 1237, 7, 48, 2, 2, 1236, 1226, 3, 2, 2, 2, 1236, 1231, 3, 2, 2, 2, 1237, 166, 3, 2, 2, 2, 1238, 1239, 7, 48, 2, 2, 1239, 1240, 7, 112, 2, 2, 1240, 1241, 7, 103, 2, 2, 1241, 1242, 7, 115, 2, 2, 1242, 1243, 7, 120, 2, 2, 1243, 1251, 7, 48, 2, 2, 1244, 1245, 7, 48, 2, 2, 1245, 1246, 7, 80, 2, 2, 1246, 1247, 7, 71, 2, 2, 1247, 1248, 7, 83, 2, 2, 1248, 1249, 7, 88, 2, 2, 1249, 1251, 7, 48, 2, 2, 1250, 1238, 3, 2, 2, 2, 1250, 1244, 3, 2, 2, 2, 1251, 168, 3, 2, 2, 2, 1252, 1253, 7, 48, 2, 2, 1253, 1254, 7, 122, 2, 2, 1254, 1255, 7, 113, 2, 2, 1255, 1256, 7, 116, 2, 2, 1256, 1263, 7, 48, 2, 2, 1257, 1258, 7, 48, 2, 2, 1258, 1259, 7, 90, 2, 2, 1259, 1260, 7, 81, 2, 2, 1260, 1261, 7, 84, 2, 2, 1261, 1263, 7, 48, 2, 2, 1262, 1252, 3, 2, 2, 2, 1262, 1257, 3, 2, 2, 2, 1263, 170, 3, 2, 2, 2, 1264, 1265, 7, 48, 2, 2, 1265, 1266, 7, 103, 2, 2, 1266, 1267, 7, 113, 2, 2, 1267, 1268, 7, 116, 2, 2, 1268, 1275, 7, 48, 2, 2, 1269, 1270, 7, 48, 2, 2, 1270, 1271, 7, 71, 2, 2, 1271, 1272, 7, 81, 2, 2, 1272, 1273, 7, 84, 2, 2, 1273, 1275, 7, 48, 2, 2, 1274, 1264, 3, 2, 2, 2, 1274, 1269, 3, 2, 2, 2, 1275, 172, 3, 2, 2, 2, 1276, 1277, 7, 48, 2, 2, 1277, 1278, 7, 110, 2, 2, 1278, 1279, 7, 118, 2, 2, 1279, 1285, 7, 48, 2, 2, 1280, 1281, 7, 48, 2, 2, 1281, 1282, 7, 78, 2, 2, 1282, 1283, 7, 86, 2, 2, 1283, 1285, 7, 48, 2, 2, 1284, 1276, 3, 2, 2, 2, 1284, 1280, 3, 2, 2, 2, 1285, 174, 3, 2, 2, 2, 1286, 1287, 7, 48, 2, 2, 1287, 1288, 7, 110, 2, 2, 1288, 1289, 7, 103, 2, 2, 1289, 1295, 7, 48, 2, 2, 1290, 1291, 7, 48, 2, 2, 1291, 1292, 7, 78, 2, 2, 1292, 1293, 7, 71, 2, 2, 1293, 1295, 7, 48, 2, 2, 1294, 1286, 3, 2, 2, 2, 1294, 1290, 3, 2, 2, 2, 1295, 176, 3, 2, 2, 2, 1296, 1297, 7, 48, 2, 2, 1297, 1298, 7, 105, 2, 2, 1298, 1299, 7, 118, 2, 2, 1299, 1305, 7, 48, 2, 2, 1300, 1301, 7, 48, 2, 2, 1301, 1302, 7, 73, 2, 2, 1302, 1303, 7, 86, 2, 2, 1303, 1305, 7, 48, 2, 2, 1304, 1296, 3, 2, 2, 2, 1304, 1300, 3, 2, 2, 2, 1305, 178, 3, 2, 2, 2, 1306, 1307, 7, 48, 2, 2, 1307, 1308, 7, 105, 2, 2, 1308, 1309, 7, 103, 2, 2, 1309, 1315, 7, 48, 2, 2, 1310, 1311, 7, 48, 2, 2, 1311, 1312, 7, 73, 2, 2, 1312, 1313, 7, 71, 2, 2, 1313, 1315, 7, 48, 2, 2, 1314, 1306, 3, 2, 2, 2, 1314, 1310, 3, 2, 2, 2, 1315, 180, 3, 2, 2, 2, 1316, 1317, 7, 48, 2, 2, 1317, 1318, 7, 112, 2, 2, 1318, 1319, 7, 103, 2, 2, 1319, 1325, 7, 48, 2, 2, 1320, 1321, 7, 48, 2, 2, 1321, 1322, 7, 80, 2, 2, 1322, 1323, 7, 71, 2, 2, 1323, 1325, 7, 48, 2, 2, 1324, 1316, 3, 2, 2, 2, 1324, 1320, 3, 2, 2, 2, 1325, 182, 3, 2, 2, 2, 1326, 1327, 7, 48, 2, 2, 1327, 1328, 7, 103, 2, 2, 1328, 1329, 7, 115, 2, 2, 1329, 1335, 7, 48, 2, 2, 1330, 1331, 7, 48, 2, 2, 1331, 1332, 7, 71, 2, 2, 1332, 1333, 7, 83, 2, 2, 1333, 1335, 7, 48, 2, 2, 1334, 1326, 3, 2, 2, 2, 1334, 1330, 3, 2, 2, 2, 1335, 184, 3, 2, 2, 2, 1336, 1337, 7, 48, 2, 2, 1337, 1338, 7, 118, 2, 2, 1338, 1339, 7, 116, 2, 2, 1339, 1340, 7, 119, 2, 2, 1340, 1341, 7, 103, 2, 2, 1341, 1349, 7, 48, 2, 2, 1342, 1343, 7, 48, 2, 2, 1343, 1344, 7, 86, 2, 2, 1344, 1345, 7, 84, 2, 2, 1345, 1346, 7, 87, 2, 2, 1346, 1347, 7, 71, 2, 2, 1347, 1349, 7, 48, 2, 2, 1348, 1336, 3, 2, 2, 2, 1348, 1342, 3, 2, 2, 2, 1349, 186, 3, 2, 2, 2, 1350, 1351, 7, 48, 2, 2, 1351, 1352, 7, 104, 2, 2, 1352, 1353, 7, 99, 2, 2, 1353, 1354, 7, 110, 2, 2, 1354, 1355, 7, 117, 2, 2, 1355, 1356, 7, 103, 2, 2, 1356, 1365, 7, 48, 2, 2, 1357, 1358, 7, 48, 2, 2, 1358, 1359, 7, 72, 2, 2, 1359, 1360, 7, 67, 2, 2, 1360, 1361, 7, 78, 2, 2, 1361, 1362, 7, 85, 2, 2, 1362, 1363, 7, 71, 2, 2, 1363, 1365, 7, 48, 2, 2, 1364, 1350, 3, 2, 2, 2, 1364, 1357, 3, 2, 2, 2, 1365, 188, 3, 2, 2, 2, 1366, 1367, 7, 90, 2, 2, 1367, 1368, 7, 69, 2, 2, 1368, 1369, 7, 81, 2, 2, 1369, 1370, 7, 80, 2, 2, 1370, 190, 3, 2, 2, 2, 1371, 1372, 7, 82, 2, 2, 1372, 1373, 7, 69, 2, 2, 1373, 1374, 7, 81, 2, 2, 1374, 1375, 7, 80, 2, 2, 1375, 192, 3, 2, 2, 2, 1376, 1377, 7, 72, 2, 2, 1377, 1378, 7, 69, 2, 2, 1378, 1379, 7, 81, 2, 2, 1379, 1380, 7, 80, 2, 2, 1380, 194, 3, 2, 2, 2, 1381, 1382, 7, 69, 2, 2, 1382, 1383, 7, 69, 2, 2, 1383, 1384, 7, 81, 2, 2, 1384, 1385, 7, 80, 2, 2, 1385, 196, 3, 2, 2, 2, 1386, 1387, 7, 74, 2, 2, 1387, 1388, 7, 81, 2, 2, 1388, 1389, 7, 78, 2, 2, 1389, 1390, 7, 78, 2, 2, 1390, 1391, 7, 71, 2, 2, 1391, 1392, 7, 84, 2, 2, 1392, 1393, 7, 75, 2, 2, 1393, 1394, 7, 86, 2, 2, 1394, 1395, 7, 74, 2, 2, 1395, 198, 3, 2, 2, 2, 1396, 1397, 7, 69, 2, 2, 1397, 1398, 7, 81, 2, 2, 1398, 1399, 7, 80, 2, 2, 1399, 1400, 7, 69, 2, 2, 1400, 1401, 7, 67, 2, 2, 1401, 1402, 7, 86, 2, 2, 1402, 1403, 7, 81, 2, 2, 1403, 1404, 7, 82, 2, 2, 1404, 200, 3, 2, 2, 2, 1405, 1406, 7, 69, 2, 2, 1406, 1407, 7, 86, 2, 2, 1407, 1408, 7, 84, 2, 2, 1408, 1409, 7, 78, 2, 2, 1409, 1410, 7, 70, 2, 2, 1410, 1411, 7, 75, 2, 2, 1411, 1412, 7, 84, 2, 2, 1412, 1413, 7, 71, 2, 2, 1413, 1414, 7, 69, 2, 2, 1414, 1415, 7, 86, 2, 2, 1415, 202, 3, 2, 2, 2, 1416, 1417, 7, 69, 2, 2, 1417, 1418, 7, 86, 2, 2, 1418, 1419, 7, 84, 2, 2, 1419, 1420, 7, 78, 2, 2, 1420, 1421, 7, 84, 2, 2, 1421, 1422, 7, 71, 2, 2, 1422, 1423, 7, 69, 2, 2, 1423, 204, 3, 2, 2, 2, 1424, 1425, 7, 86, 2, 2, 1425, 1426, 7, 81, 2, 2, 1426, 206, 3, 2, 2, 2, 1427, 1428, 7, 85, 2, 2, 1428, 1429, 7, 87, 2, 2, 1429, 1430, 7, 68, 2, 2, 1430, 1431, 7, 82, 2, 2, 1431, 1432, 7, 84, 2, 2, 1432, 1433, 7, 81, 2, 2, 1433, 1434, 7, 73, 2, 2, 1434, 1435, 7, 84, 2, 2, 1435, 1436, 7, 67, 2, 2, 1436, 1437, 7, 79, 2, 2, 1437, 1438, 7, 68, 2, 2, 1438, 1439, 7, 78, 2, 2, 1439, 1440, 7, 81, 2, 2, 1440, 1441, 7, 69, 2, 2, 1441, 1442, 7, 77, 2, 2, 1442, 208, 3, 2, 2, 2, 1443, 1444, 7, 70, 2, 2, 1444, 1445, 7, 81, 2, 2, 1445, 1446, 7, 68, 2, 2, 1446, 1447, 7, 78, 2, 2, 1447, 1448, 7, 81, 2, 2, 1448, 1449, 7, 69, 2, 2, 1449, 1450, 7, 77, 2, 2, 1450, 210, 3, 2, 2, 2, 1451, 1452, 7, 67, 2, 2, 1452, 1453, 7, 75, 2, 2, 1453, 1454, 7, 72, 2, 2, 1454, 212, 3, 2, 2, 2, 1455, 1456, 7, 86, 2, 2, 1456, 1457, 7, 74, 2, 2, 1457, 1458, 7, 71, 2, 2, 1458, 1459, 7, 80, 2, 2, 1459, 1460, 7, 68, 2, 2, 1460, 1461, 7, 78, 2, 2, 1461, 1462, 7, 81, 2, 2, 1462, 1463, 7, 69, 2, 2, 1463, 1464, 7, 77, 2, 2, 1464, 214, 3, 2, 2, 2, 1465, 1466, 7, 71, 2, 2, 1466, 1467, 7, 78, 2, 2, 1467, 1468, 7, 85, 2, 2, 1468, 1469, 7, 71, 2, 2, 1469, 1470, 7, 68, 2, 2, 1470, 1471, 7, 78, 2, 2, 1471, 1472, 7, 81, 2, 2, 1472, 1473, 7, 69, 2, 2, 1473, 1474, 7, 77, 2, 2, 1474, 216, 3, 2, 2, 2, 1475, 1476, 7, 69, 2, 2, 1476, 1477, 7, 81, 2, 2, 1477, 1478, 7, 70, 2, 2, 1478, 1479, 7, 71, 2, 2, 1479, 1480, 7, 84, 2, 2, 1480, 1481, 7, 81, 2, 2, 1481, 1482, 7, 81, 2, 2, 1482, 1483, 7, 86, 2, 2, 1483, 218, 3, 2, 2, 2, 1484, 1485, 7, 69, 2, 2, 1485, 1486, 7, 81, 2, 2, 1486, 1487, 7, 79, 2, 2, 1487, 1488, 7, 82, 2, 2, 1488, 1489, 7, 78, 2, 2, 1489, 1490, 7, 71, 2, 2, 1490, 1499, 7, 90, 2, 2, 1491, 1492, 7, 101, 2, 2, 1492, 1493, 7, 113, 2, 2, 1493, 1494, 7, 111, 2, 2, 1494, 1495, 7, 114, 2, 2, 1495, 1496, 7, 110, 2, 2, 1496, 1497, 7, 103, 2, 2, 1497, 1499, 7, 122, 2, 2, 1498, 1484, 3, 2, 2, 2, 1498, 1491, 3, 2, 2, 2, 1499, 220, 3, 2, 2, 2, 1500, 1501, 7, 82, 2, 2, 1501, 1502, 7, 84, 2, 2, 1502, 1503, 7, 71, 2, 2, 1503, 1504, 7, 69, 2, 2, 1504, 1505, 7, 75, 2, 2, 1505, 1506, 7, 85, 2, 2, 1506, 1507, 7, 75, 2, 2, 1507, 1508, 7, 81, 2, 2, 1508, 1519, 7, 80, 2, 2, 1509, 1510, 7, 114, 2, 2, 1510, 1511, 7, 116, 2, 2, 1511, 1512, 7, 103, 2, 2, 1512, 1513, 7, 101, 2, 2, 1513, 1514, 7, 107, 2, 2, 1514, 1515, 7, 117, 2, 2, 1515, 1516, 7, 107, 2, 2, 1516, 1517, 7, 113, 2, 2, 1517, 1519, 7, 112, 2, 2, 1518, 1500, 3, 2, 2, 2, 1518, 1509, 3, 2, 2, 2, 1519, 222, 3, 2, 2, 2, 1520, 1521, 7, 75, 2, 2, 1521, 1522, 7, 80, 2, 2, 1522, 1523, 7, 86, 2, 2, 1523, 1524, 7, 71, 2, 2, 1524, 1525, 7, 73, 2, 2, 1525, 1526, 7, 71, 2, 2, 1526, 1535, 7, 84, 2, 2, 1527, 1528, 7, 107, 2, 2, 1528, 1529, 7, 112, 2, 2, 1529, 1530, 7, 118, 2, 2, 1530, 1531, 7, 103, 2, 2, 1531, 1532, 7, 105, 2, 2, 1532, 1533, 7, 103, 2, 2, 1533, 1535, 7, 116, 2, 2, 1534, 1520, 3, 2, 2, 2, 1534, 1527, 3, 2, 2, 2, 1535, 224, 3, 2, 2, 2, 1536, 1537, 7, 78, 2, 2, 1537, 1538, 7, 81, 2, 2, 1538, 1539, 7, 73, 2, 2, 1539, 1540, 7, 75, 2, 2, 1540, 1541, 7, 69, 2, 2, 1541, 1542, 7, 67, 2, 2, 1542, 1551, 7, 78, 2, 2, 1543, 1544, 7, 110, 2, 2, 1544, 1545, 7, 113, 2, 2, 1545, 1546, 7, 105, 2, 2, 1546, 1547, 7, 107, 2, 2, 1547, 1548, 7, 101, 2, 2, 1548, 1549, 7, 99, 2, 2, 1549, 1551, 7, 110, 2, 2, 1550, 1536, 3, 2, 2, 2, 1550, 1543, 3, 2, 2, 2, 1551, 226, 3, 2, 2, 2, 1552, 1553, 10, 2, 2, 2, 1553, 228, 3, 2, 2, 2, 1554, 1557, 5, 239, 120, 2, 1555, 1557, 5, 241, 121, 2, 1556, 1554, 3, 2, 2, 2, 1556, 1555, 3, 2, 2, 2, 1557, 230, 3, 2, 2, 2, 1558, 1561, 5, 241, 121, 2, 1559, 1561, 4, 99, 104, 2, 1560, 1558, 3, 2, 2, 2, 1560, 1559, 3, 2, 2, 2, 1561, 232, 3, 2, 2, 2, 1562, 1563, 9, 3, 2, 2, 1563, 234, 3, 2, 2, 2, 1564, 1566, 9, 4, 2, 2, 1565, 1567, 5, 241, 121, 2, 1566, 1565, 3, 2, 2, 2, 1567, 1568, 3, 2, 2, 2, 1568, 1566, 3, 2, 2, 2, 1568, 1569, 3, 2, 2, 2, 1569, 1570, 3, 2, 2, 2, 1570, 1572, 7, 48, 2, 2, 1571, 1573, 5, 241, 121, 2, 1572, 1571, 3, 2, 2, 2, 1573, 1574, 3, 2, 2, 2, 1574, 1572, 3, 2, 2, 2, 1574, 1575, 3, 2, 2, 2, 1575, 1597, 3, 2, 2, 2, 1576, 1578, 9, 5, 2, 2, 1577, 1579, 5, 241, 121, 2, 1578, 1577, 3, 2, 2, 2, 1579, 1580, 3, 2, 2, 2, 1580, 1578, 3, 2, 2, 2, 1580, 1581, 3, 2, 2, 2, 1581, 1582, 3, 2, 2, 2, 1582, 1584, 7, 48, 2, 2, 1583, 1585, 5, 241, 121, 2, 1584, 1583, 3, 2, 2, 2, 1585, 1586, 3, 2, 2, 2, 1586, 1584, 3, 2, 2, 2, 1586, 1587, 3, 2, 2, 2, 1587, 1594, 3, 2, 2, 2, 1588, 1590, 7, 103, 2, 2, 1589, 1591, 5, 241, 121, 2, 1590, 1589, 3, 2, 2, 2, 1591, 1592, 3, 2, 2, 2, 1592, 1590, 3, 2, 2, 2, 1592, 1593, 3, 2, 2, 2, 1593, 1595, 3, 2, 2, 2, 1594, 1588, 3, 2, 2, 2, 1594, 1595, 3, 2, 2, 2, 1595, 1597, 3, 2, 2, 2, 1596, 1564, 3, 2, 2, 2, 1596, 1576, 3, 2, 2, 2, 1597, 236, 3, 2, 2, 2, 1598, 1600, 9, 6, 2, 2, 1599, 1601, 5, 233, 117, 2, 1600, 1599, 3, 2, 2, 2, 1600, 1601, 3, 2, 2, 2, 1601, 1603, 3, 2, 2, 2, 1602, 1604, 5, 241, 121, 2, 1603, 1602, 3, 2, 2, 2, 1604, 1605, 3, 2, 2, 2, 1605, 1603, 3, 2, 2, 2, 1605, 1606, 3, 2, 2, 2, 1606, 238, 3, 2, 2, 2, 1607, 1609, 9, 7, 2, 2, 1608, 1607, 3, 2, 2, 2, 1609, 240, 3, 2, 2, 2, 1610, 1611, 4, 50, 59, 2, 1611, 242, 3, 2, 2, 2, 1612, 1648, 7, 41, 2, 2, 1613, 1614, 7, 41, 2, 2, 1614, 1647, 7, 41, 2, 2, 1615, 1647, 10, 8, 2, 2, 1616, 1622, 7, 12, 2, 2, 1617, 1619, 7, 15, 2, 2, 1618, 1620, 7, 12, 2, 2, 1619, 1618, 3, 2, 2, 2, 1619, 1620, 3, 2, 2, 2, 1620, 1622, 3, 2, 2, 2, 1621, 1616, 3, 2, 2, 2, 1621, 1617, 3, 2, 2, 2, 1622, 1623, 3, 2, 2, 2, 1623, 1624, 7, 34, 2, 2, 1624, 1625, 7, 34, 2, 2, 1625, 1626, 7, 34, 2, 2, 1626, 1627, 7, 34, 2, 2, 1627, 1628, 7, 34, 2, 2, 1628, 1629, 3, 2, 2, 2, 1629, 1630, 5, 227, 114, 2, 1630, 1636, 3, 2, 2, 2, 1631, 1637, 7, 12, 2, 2, 1632, 1634, 7, 15, 2, 2, 1633, 1635, 7, 12, 2, 2, 1634, 1633, 3, 2, 2, 2, 1634, 1635, 3, 2, 2, 2, 1635, 1637, 3, 2, 2, 2, 1636, 1631, 3, 2, 2, 2, 1636, 1632, 3, 2, 2, 2, 1637, 1638, 3, 2, 2, 2, 1638, 1639, 7, 34, 2, 2, 1639, 1640, 7, 34, 2, 2, 1640, 1641, 7, 34, 2, 2, 1641, 1642, 7, 34, 2, 2, 1642, 1643, 7, 34, 2, 2, 1643, 1644, 3, 2, 2, 2, 1644, 1645, 5, 227, 114, 2, 1645, 1647, 3, 2, 2, 2, 1646, 1613, 3, 2, 2, 2, 1646, 1615, 3, 2, 2, 2, 1646, 1621, 3, 2, 2, 2, 1647, 1650, 3, 2, 2, 2, 1648, 1646, 3, 2, 2, 2, 1648, 1649, 3, 2, 2, 2, 1649, 1651, 3, 2, 2, 2, 1650, 1648, 3, 2, 2, 2, 1651, 1652, 7, 41, 2, 2, 1652, 244, 3, 2, 2, 2, 1653, 1655, 5, 241, 121, 2, 1654, 1653, 3, 2, 2, 2, 1655, 1656, 3, 2, 2, 2, 1656, 1654, 3, 2, 2, 2, 1656, 1657, 3, 2, 2, 2, 1657, 1658, 3, 2, 2, 2, 1658, 1662, 7, 48, 2, 2, 1659, 1661, 5, 241, 121, 2, 1660, 1659, 3, 2, 2, 2, 1661, 1664, 3, 2, 2, 2, 1662, 1660, 3, 2, 2, 2, 1662, 1663, 3, 2, 2, 2, 1663, 1666, 3, 2, 2, 2, 1664, 1662, 3, 2, 2, 2, 1665, 1667, 5, 237, 119, 2, 1666, 1665, 3, 2, 2, 2, 1666, 1667, 3, 2, 2, 2, 1667, 246, 3, 2, 2, 2, 1668, 1670, 5, 241, 121, 2, 1669, 1668, 3, 2, 2, 2, 1670, 1671, 3, 2, 2, 2, 1671, 1669, 3, 2, 2, 2, 1671, 1672, 3, 2, 2, 2, 1672, 248, 3, 2, 2, 2, 1673, 1675, 9, 9, 2, 2, 1674, 1676, 5, 241, 121, 2, 1675, 1674, 3, 2, 2, 2, 1676, 1677, 3, 2, 2, 2, 1677, 1675, 3, 2, 2, 2, 1677, 1678, 3, 2, 2, 2, 1678, 1679, 3, 2, 2, 2, 1679, 1680, 7, 48, 2, 2, 1680, 1681, 3, 2, 2, 2, 1681, 1682, 5, 235, 118, 2, 1682, 1695, 3, 2, 2, 2, 1683, 1685, 5, 229, 115, 2, 1684, 1683, 3, 2, 2, 2, 1685, 1686, 3, 2, 2, 2, 1686, 1684, 3, 2, 2, 2, 1686, 1687, 3, 2, 2, 2, 1687, 1691, 3, 2, 2, 2, 1688, 1690, 5, 229, 115, 2, 1689, 1688, 3, 2, 2, 2, 1690, 1693, 3, 2, 2, 2, 1691, 1689, 3, 2, 2, 2, 1691, 1692, 3, 2, 2, 2, 1692, 1695, 3, 2, 2, 2, 1693, 1691, 3, 2, 2, 2, 1694, 1673, 3, 2, 2, 2, 1694, 1684, 3, 2, 2, 2, 1695, 250, 3, 2, 2, 2, 1696, 1699, 6, 126, 2, 2, 1697, 1700, 7, 101, 2, 2, 1698, 1700, 5, 155, 78, 2, 1699, 1697, 3, 2, 2, 2, 1699, 1698, 3, 2, 2, 2, 1700, 1704, 3, 2, 2, 2, 1701, 1703, 10, 10, 2, 2, 1702, 1701, 3, 2, 2, 2, 1703, 1706, 3, 2, 2, 2, 1704, 1702, 3, 2, 2, 2, 1704, 1705, 3, 2, 2, 2, 1705, 1707, 3, 2, 2, 2, 1706, 1704, 3, 2, 2, 2, 1707, 1708, 5, 257, 129, 2, 1708, 252, 3, 2, 2, 2, 1709, 1710, 5, 155, 78, 2, 1710, 254, 3, 2, 2, 2, 1711, 1715, 7, 36, 2, 2, 1712, 1714, 10, 11, 2, 2, 1713, 1712, 3, 2, 2, 2, 1714, 1717, 3, 2, 2, 2, 1715, 1713, 3, 2, 2, 2, 1715, 1716, 3, 2, 2, 2, 1716, 1718, 3, 2, 2, 2, 1717, 1715, 3, 2, 2, 2, 1718, 1719, 7, 36, 2, 2, 1719, 256, 3, 2, 2, 2, 1720, 1722, 9, 10, 2, 2, 1721, 1720, 3, 2, 2, 2, 1722, 1723, 3, 2, 2, 2, 1723, 1721, 3, 2, 2, 2, 1723, 1724, 3, 2, 2, 2, 1724, 258, 3, 2, 2, 2, 1725, 1726, 5, 257, 129, 2, 1726, 1727, 7, 34, 2, 2, 1727, 1728, 7, 34, 2, 2, 1728, 1729, 7, 34, 2, 2, 1729, 1730, 7, 34, 2, 2, 1730, 1731, 7, 34, 2, 2, 1731, 1732, 7, 38, 2, 2, 1732, 1742, 3, 2, 2, 2, 1733, 1734, 5, 257, 129, 2, 1734, 1735, 7, 34, 2, 2, 1735, 1736, 7, 34, 2, 2, 1736, 1737, 7, 34, 2, 2, 1737, 1738, 7, 34, 2, 2, 1738, 1739, 7, 34, 2, 2, 1739, 1740, 7, 45, 2, 2, 1740, 1742, 3, 2, 2, 2, 1741, 1725, 3, 2, 2, 2, 1741, 1733, 3, 2, 2, 2, 1742, 1743, 3, 2, 2, 2, 1743, 1744, 8, 130, 2, 2, 1744, 260, 3, 2, 2, 2, 1745, 1747, 9, 12, 2, 2, 1746, 1745, 3, 2, 2, 2, 1747, 1748, 3, 2, 2, 2, 1748, 1746, 3, 2, 2, 2, 1748, 1749, 3, 2, 2, 2, 1749, 1750, 3, 2, 2, 2, 1750, 1751, 8, 131, 2, 2, 1751, 262, 3, 2, 2, 2, 121, 2, 277, 289, 307, 319, 341, 349, 369, 379, 403, 417, 433, 451, 461, 481, 501, 519, 539, 549, 559, 565, 575, 581, 591, 601, 613, 627, 633, 651, 661, 673, 685, 697, 707, 719, 729, 737, 747, 755, 769, 783, 791, 801, 815, 827, 841, 857, 879, 891, 901, 915, 929, 947, 957, 967, 979, 991, 1005, 1019, 1031, 1041, 1061, 1085, 1101, 1117, 1137, 1153, 1167, 1202, 1214, 1224, 1236, 1250, 1262, 1274, 1284, 1294, 1304, 1314, 1324, 1334, 1348, 1364, 1498, 1518, 1534, 1550, 1556, 1560, 1568, 1574, 1580, 1586, 1592, 1594, 1596, 1600, 1605, 1608, 1619, 1621, 1634, 1636, 1646, 1648, 1656, 1662, 1666, 1671, 1677, 1686, 1691, 1694, 1699, 1704, 1715, 1723, 1741, 1748, 3, 8, 2, 2] \ No newline at end of file +[4, 0, 121, 1750, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 276, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 288, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 306, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 318, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 340, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 348, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 368, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 378, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 402, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 416, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 432, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 450, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 460, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 480, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 500, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 518, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 538, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 548, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 558, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 564, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 574, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 580, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 590, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 600, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 612, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 626, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 632, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 650, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 660, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 672, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 684, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 696, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 706, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 718, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 728, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 736, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 746, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 754, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 768, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 782, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 790, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 800, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 814, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 826, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 840, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 856, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 878, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 890, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 900, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 914, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 928, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 946, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 956, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 966, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 978, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 990, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1004, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1018, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1030, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1040, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1060, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1084, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1100, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1116, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1136, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1152, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1166, 8, 66, 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, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1201, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1213, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1223, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1235, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1249, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1261, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1273, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1283, 8, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 1293, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1303, 8, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1313, 8, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1323, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1333, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1347, 8, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1363, 8, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1497, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 1517, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 1533, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1549, 8, 111, 1, 112, 1, 112, 1, 113, 1, 113, 3, 113, 1555, 8, 113, 1, 114, 1, 114, 3, 114, 1559, 8, 114, 1, 115, 1, 115, 1, 116, 1, 116, 4, 116, 1565, 8, 116, 11, 116, 12, 116, 1566, 1, 116, 1, 116, 4, 116, 1571, 8, 116, 11, 116, 12, 116, 1572, 1, 116, 1, 116, 4, 116, 1577, 8, 116, 11, 116, 12, 116, 1578, 1, 116, 1, 116, 4, 116, 1583, 8, 116, 11, 116, 12, 116, 1584, 1, 116, 1, 116, 4, 116, 1589, 8, 116, 11, 116, 12, 116, 1590, 3, 116, 1593, 8, 116, 3, 116, 1595, 8, 116, 1, 117, 1, 117, 3, 117, 1599, 8, 117, 1, 117, 4, 117, 1602, 8, 117, 11, 117, 12, 117, 1603, 1, 118, 3, 118, 1607, 8, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1618, 8, 120, 3, 120, 1620, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1633, 8, 120, 3, 120, 1635, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 5, 120, 1645, 8, 120, 10, 120, 12, 120, 1648, 9, 120, 1, 120, 1, 120, 1, 121, 4, 121, 1653, 8, 121, 11, 121, 12, 121, 1654, 1, 121, 1, 121, 5, 121, 1659, 8, 121, 10, 121, 12, 121, 1662, 9, 121, 1, 121, 3, 121, 1665, 8, 121, 1, 122, 4, 122, 1668, 8, 122, 11, 122, 12, 122, 1669, 1, 123, 1, 123, 4, 123, 1674, 8, 123, 11, 123, 12, 123, 1675, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 4, 123, 1683, 8, 123, 11, 123, 12, 123, 1684, 1, 123, 5, 123, 1688, 8, 123, 10, 123, 12, 123, 1691, 9, 123, 3, 123, 1693, 8, 123, 1, 124, 1, 124, 1, 124, 3, 124, 1698, 8, 124, 1, 124, 5, 124, 1701, 8, 124, 10, 124, 12, 124, 1704, 9, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 5, 126, 1712, 8, 126, 10, 126, 12, 126, 1715, 9, 126, 1, 126, 1, 126, 1, 127, 4, 127, 1720, 8, 127, 11, 127, 12, 127, 1721, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 1740, 8, 128, 1, 128, 1, 128, 1, 129, 4, 129, 1745, 8, 129, 11, 129, 12, 129, 1746, 1, 129, 1, 129, 0, 0, 130, 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, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 0, 155, 77, 157, 78, 159, 79, 161, 80, 163, 81, 165, 82, 167, 83, 169, 84, 171, 85, 173, 86, 175, 87, 177, 88, 179, 89, 181, 90, 183, 91, 185, 92, 187, 93, 189, 94, 191, 95, 193, 96, 195, 97, 197, 98, 199, 99, 201, 100, 203, 101, 205, 102, 207, 103, 209, 104, 211, 105, 213, 106, 215, 107, 217, 108, 219, 109, 221, 110, 223, 111, 225, 0, 227, 0, 229, 0, 231, 0, 233, 0, 235, 0, 237, 0, 239, 0, 241, 112, 243, 113, 245, 114, 247, 115, 249, 116, 251, 117, 253, 118, 255, 119, 257, 120, 259, 121, 1, 0, 11, 2, 0, 32, 32, 48, 48, 2, 0, 43, 43, 45, 45, 3, 0, 100, 100, 102, 102, 105, 105, 2, 0, 101, 101, 103, 103, 2, 0, 68, 69, 100, 101, 2, 0, 65, 90, 97, 122, 3, 0, 10, 10, 13, 13, 39, 39, 2, 0, 100, 103, 105, 105, 2, 0, 10, 10, 13, 13, 3, 0, 10, 10, 13, 13, 34, 34, 2, 0, 9, 9, 32, 32, 1858, 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, 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, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 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, 1, 275, 1, 0, 0, 0, 3, 287, 1, 0, 0, 0, 5, 305, 1, 0, 0, 0, 7, 317, 1, 0, 0, 0, 9, 339, 1, 0, 0, 0, 11, 347, 1, 0, 0, 0, 13, 367, 1, 0, 0, 0, 15, 377, 1, 0, 0, 0, 17, 401, 1, 0, 0, 0, 19, 415, 1, 0, 0, 0, 21, 431, 1, 0, 0, 0, 23, 449, 1, 0, 0, 0, 25, 459, 1, 0, 0, 0, 27, 479, 1, 0, 0, 0, 29, 499, 1, 0, 0, 0, 31, 517, 1, 0, 0, 0, 33, 537, 1, 0, 0, 0, 35, 547, 1, 0, 0, 0, 37, 557, 1, 0, 0, 0, 39, 563, 1, 0, 0, 0, 41, 573, 1, 0, 0, 0, 43, 579, 1, 0, 0, 0, 45, 589, 1, 0, 0, 0, 47, 599, 1, 0, 0, 0, 49, 611, 1, 0, 0, 0, 51, 625, 1, 0, 0, 0, 53, 631, 1, 0, 0, 0, 55, 649, 1, 0, 0, 0, 57, 659, 1, 0, 0, 0, 59, 671, 1, 0, 0, 0, 61, 683, 1, 0, 0, 0, 63, 695, 1, 0, 0, 0, 65, 705, 1, 0, 0, 0, 67, 717, 1, 0, 0, 0, 69, 727, 1, 0, 0, 0, 71, 735, 1, 0, 0, 0, 73, 745, 1, 0, 0, 0, 75, 753, 1, 0, 0, 0, 77, 767, 1, 0, 0, 0, 79, 781, 1, 0, 0, 0, 81, 789, 1, 0, 0, 0, 83, 799, 1, 0, 0, 0, 85, 813, 1, 0, 0, 0, 87, 825, 1, 0, 0, 0, 89, 839, 1, 0, 0, 0, 91, 855, 1, 0, 0, 0, 93, 877, 1, 0, 0, 0, 95, 889, 1, 0, 0, 0, 97, 899, 1, 0, 0, 0, 99, 913, 1, 0, 0, 0, 101, 927, 1, 0, 0, 0, 103, 945, 1, 0, 0, 0, 105, 955, 1, 0, 0, 0, 107, 965, 1, 0, 0, 0, 109, 977, 1, 0, 0, 0, 111, 989, 1, 0, 0, 0, 113, 1003, 1, 0, 0, 0, 115, 1017, 1, 0, 0, 0, 117, 1029, 1, 0, 0, 0, 119, 1039, 1, 0, 0, 0, 121, 1059, 1, 0, 0, 0, 123, 1083, 1, 0, 0, 0, 125, 1099, 1, 0, 0, 0, 127, 1115, 1, 0, 0, 0, 129, 1135, 1, 0, 0, 0, 131, 1151, 1, 0, 0, 0, 133, 1165, 1, 0, 0, 0, 135, 1167, 1, 0, 0, 0, 137, 1169, 1, 0, 0, 0, 139, 1171, 1, 0, 0, 0, 141, 1173, 1, 0, 0, 0, 143, 1175, 1, 0, 0, 0, 145, 1177, 1, 0, 0, 0, 147, 1179, 1, 0, 0, 0, 149, 1181, 1, 0, 0, 0, 151, 1183, 1, 0, 0, 0, 153, 1185, 1, 0, 0, 0, 155, 1187, 1, 0, 0, 0, 157, 1200, 1, 0, 0, 0, 159, 1212, 1, 0, 0, 0, 161, 1222, 1, 0, 0, 0, 163, 1234, 1, 0, 0, 0, 165, 1248, 1, 0, 0, 0, 167, 1260, 1, 0, 0, 0, 169, 1272, 1, 0, 0, 0, 171, 1282, 1, 0, 0, 0, 173, 1292, 1, 0, 0, 0, 175, 1302, 1, 0, 0, 0, 177, 1312, 1, 0, 0, 0, 179, 1322, 1, 0, 0, 0, 181, 1332, 1, 0, 0, 0, 183, 1346, 1, 0, 0, 0, 185, 1362, 1, 0, 0, 0, 187, 1364, 1, 0, 0, 0, 189, 1369, 1, 0, 0, 0, 191, 1374, 1, 0, 0, 0, 193, 1379, 1, 0, 0, 0, 195, 1384, 1, 0, 0, 0, 197, 1394, 1, 0, 0, 0, 199, 1403, 1, 0, 0, 0, 201, 1414, 1, 0, 0, 0, 203, 1422, 1, 0, 0, 0, 205, 1425, 1, 0, 0, 0, 207, 1441, 1, 0, 0, 0, 209, 1449, 1, 0, 0, 0, 211, 1453, 1, 0, 0, 0, 213, 1463, 1, 0, 0, 0, 215, 1473, 1, 0, 0, 0, 217, 1496, 1, 0, 0, 0, 219, 1516, 1, 0, 0, 0, 221, 1532, 1, 0, 0, 0, 223, 1548, 1, 0, 0, 0, 225, 1550, 1, 0, 0, 0, 227, 1554, 1, 0, 0, 0, 229, 1558, 1, 0, 0, 0, 231, 1560, 1, 0, 0, 0, 233, 1594, 1, 0, 0, 0, 235, 1596, 1, 0, 0, 0, 237, 1606, 1, 0, 0, 0, 239, 1608, 1, 0, 0, 0, 241, 1610, 1, 0, 0, 0, 243, 1652, 1, 0, 0, 0, 245, 1667, 1, 0, 0, 0, 247, 1692, 1, 0, 0, 0, 249, 1694, 1, 0, 0, 0, 251, 1707, 1, 0, 0, 0, 253, 1709, 1, 0, 0, 0, 255, 1719, 1, 0, 0, 0, 257, 1739, 1, 0, 0, 0, 259, 1744, 1, 0, 0, 0, 261, 262, 5, 112, 0, 0, 262, 263, 5, 114, 0, 0, 263, 264, 5, 111, 0, 0, 264, 265, 5, 103, 0, 0, 265, 266, 5, 114, 0, 0, 266, 267, 5, 97, 0, 0, 267, 276, 5, 109, 0, 0, 268, 269, 5, 80, 0, 0, 269, 270, 5, 82, 0, 0, 270, 271, 5, 79, 0, 0, 271, 272, 5, 71, 0, 0, 272, 273, 5, 82, 0, 0, 273, 274, 5, 65, 0, 0, 274, 276, 5, 77, 0, 0, 275, 261, 1, 0, 0, 0, 275, 268, 1, 0, 0, 0, 276, 2, 1, 0, 0, 0, 277, 278, 5, 101, 0, 0, 278, 279, 5, 110, 0, 0, 279, 280, 5, 116, 0, 0, 280, 281, 5, 114, 0, 0, 281, 288, 5, 121, 0, 0, 282, 283, 5, 69, 0, 0, 283, 284, 5, 78, 0, 0, 284, 285, 5, 84, 0, 0, 285, 286, 5, 82, 0, 0, 286, 288, 5, 89, 0, 0, 287, 277, 1, 0, 0, 0, 287, 282, 1, 0, 0, 0, 288, 4, 1, 0, 0, 0, 289, 290, 5, 102, 0, 0, 290, 291, 5, 117, 0, 0, 291, 292, 5, 110, 0, 0, 292, 293, 5, 99, 0, 0, 293, 294, 5, 116, 0, 0, 294, 295, 5, 105, 0, 0, 295, 296, 5, 111, 0, 0, 296, 306, 5, 110, 0, 0, 297, 298, 5, 70, 0, 0, 298, 299, 5, 85, 0, 0, 299, 300, 5, 78, 0, 0, 300, 301, 5, 67, 0, 0, 301, 302, 5, 84, 0, 0, 302, 303, 5, 73, 0, 0, 303, 304, 5, 79, 0, 0, 304, 306, 5, 78, 0, 0, 305, 289, 1, 0, 0, 0, 305, 297, 1, 0, 0, 0, 306, 6, 1, 0, 0, 0, 307, 308, 5, 98, 0, 0, 308, 309, 5, 108, 0, 0, 309, 310, 5, 111, 0, 0, 310, 311, 5, 99, 0, 0, 311, 318, 5, 107, 0, 0, 312, 313, 5, 66, 0, 0, 313, 314, 5, 76, 0, 0, 314, 315, 5, 79, 0, 0, 315, 316, 5, 67, 0, 0, 316, 318, 5, 75, 0, 0, 317, 307, 1, 0, 0, 0, 317, 312, 1, 0, 0, 0, 318, 8, 1, 0, 0, 0, 319, 320, 5, 115, 0, 0, 320, 321, 5, 117, 0, 0, 321, 322, 5, 98, 0, 0, 322, 323, 5, 114, 0, 0, 323, 324, 5, 111, 0, 0, 324, 325, 5, 117, 0, 0, 325, 326, 5, 116, 0, 0, 326, 327, 5, 105, 0, 0, 327, 328, 5, 110, 0, 0, 328, 340, 5, 101, 0, 0, 329, 330, 5, 83, 0, 0, 330, 331, 5, 85, 0, 0, 331, 332, 5, 66, 0, 0, 332, 333, 5, 82, 0, 0, 333, 334, 5, 79, 0, 0, 334, 335, 5, 85, 0, 0, 335, 336, 5, 84, 0, 0, 336, 337, 5, 73, 0, 0, 337, 338, 5, 78, 0, 0, 338, 340, 5, 69, 0, 0, 339, 319, 1, 0, 0, 0, 339, 329, 1, 0, 0, 0, 340, 10, 1, 0, 0, 0, 341, 342, 5, 69, 0, 0, 342, 343, 5, 78, 0, 0, 343, 348, 5, 68, 0, 0, 344, 345, 5, 101, 0, 0, 345, 346, 5, 110, 0, 0, 346, 348, 5, 100, 0, 0, 347, 341, 1, 0, 0, 0, 347, 344, 1, 0, 0, 0, 348, 12, 1, 0, 0, 0, 349, 350, 5, 100, 0, 0, 350, 351, 5, 105, 0, 0, 351, 352, 5, 109, 0, 0, 352, 353, 5, 101, 0, 0, 353, 354, 5, 110, 0, 0, 354, 355, 5, 115, 0, 0, 355, 356, 5, 105, 0, 0, 356, 357, 5, 111, 0, 0, 357, 368, 5, 110, 0, 0, 358, 359, 5, 68, 0, 0, 359, 360, 5, 73, 0, 0, 360, 361, 5, 77, 0, 0, 361, 362, 5, 69, 0, 0, 362, 363, 5, 78, 0, 0, 363, 364, 5, 83, 0, 0, 364, 365, 5, 73, 0, 0, 365, 366, 5, 79, 0, 0, 366, 368, 5, 78, 0, 0, 367, 349, 1, 0, 0, 0, 367, 358, 1, 0, 0, 0, 368, 14, 1, 0, 0, 0, 369, 370, 5, 82, 0, 0, 370, 371, 5, 69, 0, 0, 371, 372, 5, 65, 0, 0, 372, 378, 5, 76, 0, 0, 373, 374, 5, 114, 0, 0, 374, 375, 5, 101, 0, 0, 375, 376, 5, 97, 0, 0, 376, 378, 5, 108, 0, 0, 377, 369, 1, 0, 0, 0, 377, 373, 1, 0, 0, 0, 378, 16, 1, 0, 0, 0, 379, 380, 5, 69, 0, 0, 380, 381, 5, 81, 0, 0, 381, 382, 5, 85, 0, 0, 382, 383, 5, 73, 0, 0, 383, 384, 5, 86, 0, 0, 384, 385, 5, 65, 0, 0, 385, 386, 5, 76, 0, 0, 386, 387, 5, 69, 0, 0, 387, 388, 5, 78, 0, 0, 388, 389, 5, 67, 0, 0, 389, 402, 5, 69, 0, 0, 390, 391, 5, 101, 0, 0, 391, 392, 5, 113, 0, 0, 392, 393, 5, 117, 0, 0, 393, 394, 5, 105, 0, 0, 394, 395, 5, 118, 0, 0, 395, 396, 5, 97, 0, 0, 396, 397, 5, 108, 0, 0, 397, 398, 5, 101, 0, 0, 398, 399, 5, 110, 0, 0, 399, 400, 5, 99, 0, 0, 400, 402, 5, 101, 0, 0, 401, 379, 1, 0, 0, 0, 401, 390, 1, 0, 0, 0, 402, 18, 1, 0, 0, 0, 403, 404, 5, 99, 0, 0, 404, 405, 5, 111, 0, 0, 405, 406, 5, 109, 0, 0, 406, 407, 5, 109, 0, 0, 407, 408, 5, 111, 0, 0, 408, 416, 5, 110, 0, 0, 409, 410, 5, 67, 0, 0, 410, 411, 5, 79, 0, 0, 411, 412, 5, 77, 0, 0, 412, 413, 5, 77, 0, 0, 413, 414, 5, 79, 0, 0, 414, 416, 5, 78, 0, 0, 415, 403, 1, 0, 0, 0, 415, 409, 1, 0, 0, 0, 416, 20, 1, 0, 0, 0, 417, 418, 5, 112, 0, 0, 418, 419, 5, 111, 0, 0, 419, 420, 5, 105, 0, 0, 420, 421, 5, 110, 0, 0, 421, 422, 5, 116, 0, 0, 422, 423, 5, 101, 0, 0, 423, 432, 5, 114, 0, 0, 424, 425, 5, 80, 0, 0, 425, 426, 5, 79, 0, 0, 426, 427, 5, 73, 0, 0, 427, 428, 5, 78, 0, 0, 428, 429, 5, 84, 0, 0, 429, 430, 5, 69, 0, 0, 430, 432, 5, 82, 0, 0, 431, 417, 1, 0, 0, 0, 431, 424, 1, 0, 0, 0, 432, 22, 1, 0, 0, 0, 433, 434, 5, 105, 0, 0, 434, 435, 5, 109, 0, 0, 435, 436, 5, 112, 0, 0, 436, 437, 5, 108, 0, 0, 437, 438, 5, 105, 0, 0, 438, 439, 5, 99, 0, 0, 439, 440, 5, 105, 0, 0, 440, 450, 5, 116, 0, 0, 441, 442, 5, 73, 0, 0, 442, 443, 5, 77, 0, 0, 443, 444, 5, 80, 0, 0, 444, 445, 5, 76, 0, 0, 445, 446, 5, 73, 0, 0, 446, 447, 5, 67, 0, 0, 447, 448, 5, 73, 0, 0, 448, 450, 5, 84, 0, 0, 449, 433, 1, 0, 0, 0, 449, 441, 1, 0, 0, 0, 450, 24, 1, 0, 0, 0, 451, 452, 5, 110, 0, 0, 452, 453, 5, 111, 0, 0, 453, 454, 5, 110, 0, 0, 454, 460, 5, 101, 0, 0, 455, 456, 5, 78, 0, 0, 456, 457, 5, 79, 0, 0, 457, 458, 5, 78, 0, 0, 458, 460, 5, 69, 0, 0, 459, 451, 1, 0, 0, 0, 459, 455, 1, 0, 0, 0, 460, 26, 1, 0, 0, 0, 461, 462, 5, 99, 0, 0, 462, 463, 5, 104, 0, 0, 463, 464, 5, 97, 0, 0, 464, 465, 5, 114, 0, 0, 465, 466, 5, 97, 0, 0, 466, 467, 5, 99, 0, 0, 467, 468, 5, 116, 0, 0, 468, 469, 5, 101, 0, 0, 469, 480, 5, 114, 0, 0, 470, 471, 5, 67, 0, 0, 471, 472, 5, 72, 0, 0, 472, 473, 5, 65, 0, 0, 473, 474, 5, 82, 0, 0, 474, 475, 5, 65, 0, 0, 475, 476, 5, 67, 0, 0, 476, 477, 5, 84, 0, 0, 477, 478, 5, 69, 0, 0, 478, 480, 5, 82, 0, 0, 479, 461, 1, 0, 0, 0, 479, 470, 1, 0, 0, 0, 480, 28, 1, 0, 0, 0, 481, 482, 5, 112, 0, 0, 482, 483, 5, 97, 0, 0, 483, 484, 5, 114, 0, 0, 484, 485, 5, 97, 0, 0, 485, 486, 5, 109, 0, 0, 486, 487, 5, 101, 0, 0, 487, 488, 5, 116, 0, 0, 488, 489, 5, 101, 0, 0, 489, 500, 5, 114, 0, 0, 490, 491, 5, 80, 0, 0, 491, 492, 5, 65, 0, 0, 492, 493, 5, 82, 0, 0, 493, 494, 5, 65, 0, 0, 494, 495, 5, 77, 0, 0, 495, 496, 5, 69, 0, 0, 496, 497, 5, 84, 0, 0, 497, 498, 5, 69, 0, 0, 498, 500, 5, 82, 0, 0, 499, 481, 1, 0, 0, 0, 499, 490, 1, 0, 0, 0, 500, 30, 1, 0, 0, 0, 501, 502, 5, 101, 0, 0, 502, 503, 5, 120, 0, 0, 503, 504, 5, 116, 0, 0, 504, 505, 5, 101, 0, 0, 505, 506, 5, 114, 0, 0, 506, 507, 5, 110, 0, 0, 507, 508, 5, 97, 0, 0, 508, 518, 5, 108, 0, 0, 509, 510, 5, 69, 0, 0, 510, 511, 5, 88, 0, 0, 511, 512, 5, 84, 0, 0, 512, 513, 5, 69, 0, 0, 513, 514, 5, 82, 0, 0, 514, 515, 5, 78, 0, 0, 515, 516, 5, 65, 0, 0, 516, 518, 5, 76, 0, 0, 517, 501, 1, 0, 0, 0, 517, 509, 1, 0, 0, 0, 518, 32, 1, 0, 0, 0, 519, 520, 5, 105, 0, 0, 520, 521, 5, 110, 0, 0, 521, 522, 5, 116, 0, 0, 522, 523, 5, 114, 0, 0, 523, 524, 5, 105, 0, 0, 524, 525, 5, 110, 0, 0, 525, 526, 5, 115, 0, 0, 526, 527, 5, 105, 0, 0, 527, 538, 5, 99, 0, 0, 528, 529, 5, 73, 0, 0, 529, 530, 5, 78, 0, 0, 530, 531, 5, 84, 0, 0, 531, 532, 5, 82, 0, 0, 532, 533, 5, 73, 0, 0, 533, 534, 5, 78, 0, 0, 534, 535, 5, 83, 0, 0, 535, 536, 5, 73, 0, 0, 536, 538, 5, 67, 0, 0, 537, 519, 1, 0, 0, 0, 537, 528, 1, 0, 0, 0, 538, 34, 1, 0, 0, 0, 539, 540, 5, 115, 0, 0, 540, 541, 5, 97, 0, 0, 541, 542, 5, 118, 0, 0, 542, 548, 5, 101, 0, 0, 543, 544, 5, 83, 0, 0, 544, 545, 5, 65, 0, 0, 545, 546, 5, 86, 0, 0, 546, 548, 5, 69, 0, 0, 547, 539, 1, 0, 0, 0, 547, 543, 1, 0, 0, 0, 548, 36, 1, 0, 0, 0, 549, 550, 5, 100, 0, 0, 550, 551, 5, 97, 0, 0, 551, 552, 5, 116, 0, 0, 552, 558, 5, 97, 0, 0, 553, 554, 5, 68, 0, 0, 554, 555, 5, 65, 0, 0, 555, 556, 5, 84, 0, 0, 556, 558, 5, 65, 0, 0, 557, 549, 1, 0, 0, 0, 557, 553, 1, 0, 0, 0, 558, 38, 1, 0, 0, 0, 559, 560, 5, 71, 0, 0, 560, 564, 5, 79, 0, 0, 561, 562, 5, 103, 0, 0, 562, 564, 5, 111, 0, 0, 563, 559, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 564, 40, 1, 0, 0, 0, 565, 566, 5, 71, 0, 0, 566, 567, 5, 79, 0, 0, 567, 568, 5, 84, 0, 0, 568, 574, 5, 79, 0, 0, 569, 570, 5, 103, 0, 0, 570, 571, 5, 111, 0, 0, 571, 572, 5, 116, 0, 0, 572, 574, 5, 111, 0, 0, 573, 565, 1, 0, 0, 0, 573, 569, 1, 0, 0, 0, 574, 42, 1, 0, 0, 0, 575, 576, 5, 73, 0, 0, 576, 580, 5, 70, 0, 0, 577, 578, 5, 105, 0, 0, 578, 580, 5, 102, 0, 0, 579, 575, 1, 0, 0, 0, 579, 577, 1, 0, 0, 0, 580, 44, 1, 0, 0, 0, 581, 582, 5, 84, 0, 0, 582, 583, 5, 72, 0, 0, 583, 584, 5, 69, 0, 0, 584, 590, 5, 78, 0, 0, 585, 586, 5, 116, 0, 0, 586, 587, 5, 104, 0, 0, 587, 588, 5, 101, 0, 0, 588, 590, 5, 110, 0, 0, 589, 581, 1, 0, 0, 0, 589, 585, 1, 0, 0, 0, 590, 46, 1, 0, 0, 0, 591, 592, 5, 69, 0, 0, 592, 593, 5, 76, 0, 0, 593, 594, 5, 83, 0, 0, 594, 600, 5, 69, 0, 0, 595, 596, 5, 101, 0, 0, 596, 597, 5, 108, 0, 0, 597, 598, 5, 115, 0, 0, 598, 600, 5, 101, 0, 0, 599, 591, 1, 0, 0, 0, 599, 595, 1, 0, 0, 0, 600, 48, 1, 0, 0, 0, 601, 602, 5, 69, 0, 0, 602, 603, 5, 78, 0, 0, 603, 604, 5, 68, 0, 0, 604, 605, 5, 73, 0, 0, 605, 612, 5, 70, 0, 0, 606, 607, 5, 101, 0, 0, 607, 608, 5, 110, 0, 0, 608, 609, 5, 100, 0, 0, 609, 610, 5, 105, 0, 0, 610, 612, 5, 102, 0, 0, 611, 601, 1, 0, 0, 0, 611, 606, 1, 0, 0, 0, 612, 50, 1, 0, 0, 0, 613, 614, 5, 69, 0, 0, 614, 615, 5, 76, 0, 0, 615, 616, 5, 83, 0, 0, 616, 617, 5, 69, 0, 0, 617, 618, 5, 73, 0, 0, 618, 626, 5, 70, 0, 0, 619, 620, 5, 101, 0, 0, 620, 621, 5, 108, 0, 0, 621, 622, 5, 115, 0, 0, 622, 623, 5, 101, 0, 0, 623, 624, 5, 105, 0, 0, 624, 626, 5, 102, 0, 0, 625, 613, 1, 0, 0, 0, 625, 619, 1, 0, 0, 0, 626, 52, 1, 0, 0, 0, 627, 628, 5, 68, 0, 0, 628, 632, 5, 79, 0, 0, 629, 630, 5, 100, 0, 0, 630, 632, 5, 111, 0, 0, 631, 627, 1, 0, 0, 0, 631, 629, 1, 0, 0, 0, 632, 54, 1, 0, 0, 0, 633, 634, 5, 67, 0, 0, 634, 635, 5, 79, 0, 0, 635, 636, 5, 78, 0, 0, 636, 637, 5, 84, 0, 0, 637, 638, 5, 73, 0, 0, 638, 639, 5, 78, 0, 0, 639, 640, 5, 85, 0, 0, 640, 650, 5, 69, 0, 0, 641, 642, 5, 99, 0, 0, 642, 643, 5, 111, 0, 0, 643, 644, 5, 110, 0, 0, 644, 645, 5, 116, 0, 0, 645, 646, 5, 105, 0, 0, 646, 647, 5, 110, 0, 0, 647, 648, 5, 117, 0, 0, 648, 650, 5, 101, 0, 0, 649, 633, 1, 0, 0, 0, 649, 641, 1, 0, 0, 0, 650, 56, 1, 0, 0, 0, 651, 652, 5, 83, 0, 0, 652, 653, 5, 84, 0, 0, 653, 654, 5, 79, 0, 0, 654, 660, 5, 80, 0, 0, 655, 656, 5, 115, 0, 0, 656, 657, 5, 116, 0, 0, 657, 658, 5, 111, 0, 0, 658, 660, 5, 112, 0, 0, 659, 651, 1, 0, 0, 0, 659, 655, 1, 0, 0, 0, 660, 58, 1, 0, 0, 0, 661, 662, 5, 69, 0, 0, 662, 663, 5, 78, 0, 0, 663, 664, 5, 68, 0, 0, 664, 665, 5, 68, 0, 0, 665, 672, 5, 79, 0, 0, 666, 667, 5, 101, 0, 0, 667, 668, 5, 110, 0, 0, 668, 669, 5, 100, 0, 0, 669, 670, 5, 100, 0, 0, 670, 672, 5, 111, 0, 0, 671, 661, 1, 0, 0, 0, 671, 666, 1, 0, 0, 0, 672, 60, 1, 0, 0, 0, 673, 674, 5, 112, 0, 0, 674, 675, 5, 97, 0, 0, 675, 676, 5, 117, 0, 0, 676, 677, 5, 115, 0, 0, 677, 684, 5, 101, 0, 0, 678, 679, 5, 80, 0, 0, 679, 680, 5, 65, 0, 0, 680, 681, 5, 85, 0, 0, 681, 682, 5, 83, 0, 0, 682, 684, 5, 69, 0, 0, 683, 673, 1, 0, 0, 0, 683, 678, 1, 0, 0, 0, 684, 62, 1, 0, 0, 0, 685, 686, 5, 87, 0, 0, 686, 687, 5, 82, 0, 0, 687, 688, 5, 73, 0, 0, 688, 689, 5, 84, 0, 0, 689, 696, 5, 69, 0, 0, 690, 691, 5, 119, 0, 0, 691, 692, 5, 114, 0, 0, 692, 693, 5, 105, 0, 0, 693, 694, 5, 116, 0, 0, 694, 696, 5, 101, 0, 0, 695, 685, 1, 0, 0, 0, 695, 690, 1, 0, 0, 0, 696, 64, 1, 0, 0, 0, 697, 698, 5, 82, 0, 0, 698, 699, 5, 69, 0, 0, 699, 700, 5, 65, 0, 0, 700, 706, 5, 68, 0, 0, 701, 702, 5, 114, 0, 0, 702, 703, 5, 101, 0, 0, 703, 704, 5, 97, 0, 0, 704, 706, 5, 100, 0, 0, 705, 697, 1, 0, 0, 0, 705, 701, 1, 0, 0, 0, 706, 66, 1, 0, 0, 0, 707, 708, 5, 80, 0, 0, 708, 709, 5, 82, 0, 0, 709, 710, 5, 73, 0, 0, 710, 711, 5, 78, 0, 0, 711, 718, 5, 84, 0, 0, 712, 713, 5, 112, 0, 0, 713, 714, 5, 114, 0, 0, 714, 715, 5, 105, 0, 0, 715, 716, 5, 110, 0, 0, 716, 718, 5, 116, 0, 0, 717, 707, 1, 0, 0, 0, 717, 712, 1, 0, 0, 0, 718, 68, 1, 0, 0, 0, 719, 720, 5, 79, 0, 0, 720, 721, 5, 80, 0, 0, 721, 722, 5, 69, 0, 0, 722, 728, 5, 78, 0, 0, 723, 724, 5, 111, 0, 0, 724, 725, 5, 112, 0, 0, 725, 726, 5, 101, 0, 0, 726, 728, 5, 110, 0, 0, 727, 719, 1, 0, 0, 0, 727, 723, 1, 0, 0, 0, 728, 70, 1, 0, 0, 0, 729, 730, 5, 70, 0, 0, 730, 731, 5, 77, 0, 0, 731, 736, 5, 84, 0, 0, 732, 733, 5, 102, 0, 0, 733, 734, 5, 109, 0, 0, 734, 736, 5, 116, 0, 0, 735, 729, 1, 0, 0, 0, 735, 732, 1, 0, 0, 0, 736, 72, 1, 0, 0, 0, 737, 738, 5, 85, 0, 0, 738, 739, 5, 78, 0, 0, 739, 740, 5, 73, 0, 0, 740, 746, 5, 84, 0, 0, 741, 742, 5, 117, 0, 0, 742, 743, 5, 110, 0, 0, 743, 744, 5, 105, 0, 0, 744, 746, 5, 116, 0, 0, 745, 737, 1, 0, 0, 0, 745, 741, 1, 0, 0, 0, 746, 74, 1, 0, 0, 0, 747, 748, 5, 101, 0, 0, 748, 749, 5, 114, 0, 0, 749, 754, 5, 114, 0, 0, 750, 751, 5, 69, 0, 0, 751, 752, 5, 82, 0, 0, 752, 754, 5, 82, 0, 0, 753, 747, 1, 0, 0, 0, 753, 750, 1, 0, 0, 0, 754, 76, 1, 0, 0, 0, 755, 756, 5, 73, 0, 0, 756, 757, 5, 79, 0, 0, 757, 758, 5, 83, 0, 0, 758, 759, 5, 84, 0, 0, 759, 760, 5, 65, 0, 0, 760, 768, 5, 84, 0, 0, 761, 762, 5, 105, 0, 0, 762, 763, 5, 111, 0, 0, 763, 764, 5, 115, 0, 0, 764, 765, 5, 116, 0, 0, 765, 766, 5, 97, 0, 0, 766, 768, 5, 116, 0, 0, 767, 755, 1, 0, 0, 0, 767, 761, 1, 0, 0, 0, 768, 78, 1, 0, 0, 0, 769, 770, 5, 70, 0, 0, 770, 771, 5, 79, 0, 0, 771, 772, 5, 82, 0, 0, 772, 773, 5, 77, 0, 0, 773, 774, 5, 65, 0, 0, 774, 782, 5, 84, 0, 0, 775, 776, 5, 102, 0, 0, 776, 777, 5, 111, 0, 0, 777, 778, 5, 114, 0, 0, 778, 779, 5, 109, 0, 0, 779, 780, 5, 97, 0, 0, 780, 782, 5, 116, 0, 0, 781, 769, 1, 0, 0, 0, 781, 775, 1, 0, 0, 0, 782, 80, 1, 0, 0, 0, 783, 784, 5, 76, 0, 0, 784, 785, 5, 69, 0, 0, 785, 790, 5, 84, 0, 0, 786, 787, 5, 108, 0, 0, 787, 788, 5, 101, 0, 0, 788, 790, 5, 116, 0, 0, 789, 783, 1, 0, 0, 0, 789, 786, 1, 0, 0, 0, 790, 82, 1, 0, 0, 0, 791, 792, 5, 67, 0, 0, 792, 793, 5, 65, 0, 0, 793, 794, 5, 76, 0, 0, 794, 800, 5, 76, 0, 0, 795, 796, 5, 99, 0, 0, 796, 797, 5, 97, 0, 0, 797, 798, 5, 108, 0, 0, 798, 800, 5, 108, 0, 0, 799, 791, 1, 0, 0, 0, 799, 795, 1, 0, 0, 0, 800, 84, 1, 0, 0, 0, 801, 802, 5, 82, 0, 0, 802, 803, 5, 69, 0, 0, 803, 804, 5, 84, 0, 0, 804, 805, 5, 85, 0, 0, 805, 806, 5, 82, 0, 0, 806, 814, 5, 78, 0, 0, 807, 808, 5, 114, 0, 0, 808, 809, 5, 101, 0, 0, 809, 810, 5, 116, 0, 0, 810, 811, 5, 117, 0, 0, 811, 812, 5, 114, 0, 0, 812, 814, 5, 110, 0, 0, 813, 801, 1, 0, 0, 0, 813, 807, 1, 0, 0, 0, 814, 86, 1, 0, 0, 0, 815, 816, 5, 67, 0, 0, 816, 817, 5, 76, 0, 0, 817, 818, 5, 79, 0, 0, 818, 819, 5, 83, 0, 0, 819, 826, 5, 69, 0, 0, 820, 821, 5, 99, 0, 0, 821, 822, 5, 108, 0, 0, 822, 823, 5, 111, 0, 0, 823, 824, 5, 115, 0, 0, 824, 826, 5, 101, 0, 0, 825, 815, 1, 0, 0, 0, 825, 820, 1, 0, 0, 0, 826, 88, 1, 0, 0, 0, 827, 828, 5, 68, 0, 0, 828, 829, 5, 79, 0, 0, 829, 830, 5, 85, 0, 0, 830, 831, 5, 66, 0, 0, 831, 832, 5, 76, 0, 0, 832, 840, 5, 69, 0, 0, 833, 834, 5, 100, 0, 0, 834, 835, 5, 111, 0, 0, 835, 836, 5, 117, 0, 0, 836, 837, 5, 98, 0, 0, 837, 838, 5, 108, 0, 0, 838, 840, 5, 101, 0, 0, 839, 827, 1, 0, 0, 0, 839, 833, 1, 0, 0, 0, 840, 90, 1, 0, 0, 0, 841, 842, 5, 73, 0, 0, 842, 843, 5, 79, 0, 0, 843, 844, 5, 83, 0, 0, 844, 845, 5, 84, 0, 0, 845, 846, 5, 65, 0, 0, 846, 847, 5, 82, 0, 0, 847, 856, 5, 84, 0, 0, 848, 849, 5, 105, 0, 0, 849, 850, 5, 111, 0, 0, 850, 851, 5, 115, 0, 0, 851, 852, 5, 116, 0, 0, 852, 853, 5, 97, 0, 0, 853, 854, 5, 114, 0, 0, 854, 856, 5, 116, 0, 0, 855, 841, 1, 0, 0, 0, 855, 848, 1, 0, 0, 0, 856, 92, 1, 0, 0, 0, 857, 858, 5, 83, 0, 0, 858, 859, 5, 69, 0, 0, 859, 860, 5, 81, 0, 0, 860, 861, 5, 85, 0, 0, 861, 862, 5, 69, 0, 0, 862, 863, 5, 78, 0, 0, 863, 864, 5, 84, 0, 0, 864, 865, 5, 73, 0, 0, 865, 866, 5, 65, 0, 0, 866, 878, 5, 76, 0, 0, 867, 868, 5, 115, 0, 0, 868, 869, 5, 101, 0, 0, 869, 870, 5, 113, 0, 0, 870, 871, 5, 117, 0, 0, 871, 872, 5, 101, 0, 0, 872, 873, 5, 110, 0, 0, 873, 874, 5, 116, 0, 0, 874, 875, 5, 105, 0, 0, 875, 876, 5, 97, 0, 0, 876, 878, 5, 108, 0, 0, 877, 857, 1, 0, 0, 0, 877, 867, 1, 0, 0, 0, 878, 94, 1, 0, 0, 0, 879, 880, 5, 76, 0, 0, 880, 881, 5, 65, 0, 0, 881, 882, 5, 66, 0, 0, 882, 883, 5, 69, 0, 0, 883, 890, 5, 76, 0, 0, 884, 885, 5, 108, 0, 0, 885, 886, 5, 97, 0, 0, 886, 887, 5, 98, 0, 0, 887, 888, 5, 101, 0, 0, 888, 890, 5, 108, 0, 0, 889, 879, 1, 0, 0, 0, 889, 884, 1, 0, 0, 0, 890, 96, 1, 0, 0, 0, 891, 892, 5, 102, 0, 0, 892, 893, 5, 105, 0, 0, 893, 894, 5, 108, 0, 0, 894, 900, 5, 101, 0, 0, 895, 896, 5, 70, 0, 0, 896, 897, 5, 73, 0, 0, 897, 898, 5, 76, 0, 0, 898, 900, 5, 69, 0, 0, 899, 891, 1, 0, 0, 0, 899, 895, 1, 0, 0, 0, 900, 98, 1, 0, 0, 0, 901, 902, 5, 83, 0, 0, 902, 903, 5, 84, 0, 0, 903, 904, 5, 65, 0, 0, 904, 905, 5, 84, 0, 0, 905, 906, 5, 85, 0, 0, 906, 914, 5, 83, 0, 0, 907, 908, 5, 115, 0, 0, 908, 909, 5, 116, 0, 0, 909, 910, 5, 97, 0, 0, 910, 911, 5, 116, 0, 0, 911, 912, 5, 117, 0, 0, 912, 914, 5, 115, 0, 0, 913, 901, 1, 0, 0, 0, 913, 907, 1, 0, 0, 0, 914, 100, 1, 0, 0, 0, 915, 916, 5, 65, 0, 0, 916, 917, 5, 67, 0, 0, 917, 918, 5, 67, 0, 0, 918, 919, 5, 69, 0, 0, 919, 920, 5, 83, 0, 0, 920, 928, 5, 83, 0, 0, 921, 922, 5, 97, 0, 0, 922, 923, 5, 99, 0, 0, 923, 924, 5, 99, 0, 0, 924, 925, 5, 101, 0, 0, 925, 926, 5, 115, 0, 0, 926, 928, 5, 115, 0, 0, 927, 915, 1, 0, 0, 0, 927, 921, 1, 0, 0, 0, 928, 102, 1, 0, 0, 0, 929, 930, 5, 80, 0, 0, 930, 931, 5, 79, 0, 0, 931, 932, 5, 83, 0, 0, 932, 933, 5, 73, 0, 0, 933, 934, 5, 84, 0, 0, 934, 935, 5, 73, 0, 0, 935, 936, 5, 79, 0, 0, 936, 946, 5, 78, 0, 0, 937, 938, 5, 112, 0, 0, 938, 939, 5, 111, 0, 0, 939, 940, 5, 115, 0, 0, 940, 941, 5, 105, 0, 0, 941, 942, 5, 116, 0, 0, 942, 943, 5, 105, 0, 0, 943, 944, 5, 111, 0, 0, 944, 946, 5, 110, 0, 0, 945, 929, 1, 0, 0, 0, 945, 937, 1, 0, 0, 0, 946, 104, 1, 0, 0, 0, 947, 948, 5, 70, 0, 0, 948, 949, 5, 79, 0, 0, 949, 950, 5, 82, 0, 0, 950, 956, 5, 77, 0, 0, 951, 952, 5, 102, 0, 0, 952, 953, 5, 111, 0, 0, 953, 954, 5, 114, 0, 0, 954, 956, 5, 109, 0, 0, 955, 947, 1, 0, 0, 0, 955, 951, 1, 0, 0, 0, 956, 106, 1, 0, 0, 0, 957, 958, 5, 82, 0, 0, 958, 959, 5, 69, 0, 0, 959, 960, 5, 67, 0, 0, 960, 966, 5, 76, 0, 0, 961, 962, 5, 114, 0, 0, 962, 963, 5, 101, 0, 0, 963, 964, 5, 99, 0, 0, 964, 966, 5, 108, 0, 0, 965, 957, 1, 0, 0, 0, 965, 961, 1, 0, 0, 0, 966, 108, 1, 0, 0, 0, 967, 968, 5, 66, 0, 0, 968, 969, 5, 76, 0, 0, 969, 970, 5, 65, 0, 0, 970, 971, 5, 78, 0, 0, 971, 978, 5, 75, 0, 0, 972, 973, 5, 98, 0, 0, 973, 974, 5, 108, 0, 0, 974, 975, 5, 97, 0, 0, 975, 976, 5, 110, 0, 0, 976, 978, 5, 107, 0, 0, 977, 967, 1, 0, 0, 0, 977, 972, 1, 0, 0, 0, 978, 110, 1, 0, 0, 0, 979, 980, 5, 69, 0, 0, 980, 981, 5, 88, 0, 0, 981, 982, 5, 73, 0, 0, 982, 983, 5, 83, 0, 0, 983, 990, 5, 84, 0, 0, 984, 985, 5, 101, 0, 0, 985, 986, 5, 120, 0, 0, 986, 987, 5, 105, 0, 0, 987, 988, 5, 115, 0, 0, 988, 990, 5, 116, 0, 0, 989, 979, 1, 0, 0, 0, 989, 984, 1, 0, 0, 0, 990, 112, 1, 0, 0, 0, 991, 992, 5, 79, 0, 0, 992, 993, 5, 80, 0, 0, 993, 994, 5, 69, 0, 0, 994, 995, 5, 78, 0, 0, 995, 996, 5, 69, 0, 0, 996, 1004, 5, 68, 0, 0, 997, 998, 5, 111, 0, 0, 998, 999, 5, 112, 0, 0, 999, 1000, 5, 101, 0, 0, 1000, 1001, 5, 110, 0, 0, 1001, 1002, 5, 101, 0, 0, 1002, 1004, 5, 100, 0, 0, 1003, 991, 1, 0, 0, 0, 1003, 997, 1, 0, 0, 0, 1004, 114, 1, 0, 0, 0, 1005, 1006, 5, 78, 0, 0, 1006, 1007, 5, 85, 0, 0, 1007, 1008, 5, 77, 0, 0, 1008, 1009, 5, 66, 0, 0, 1009, 1010, 5, 69, 0, 0, 1010, 1018, 5, 82, 0, 0, 1011, 1012, 5, 110, 0, 0, 1012, 1013, 5, 117, 0, 0, 1013, 1014, 5, 109, 0, 0, 1014, 1015, 5, 98, 0, 0, 1015, 1016, 5, 101, 0, 0, 1016, 1018, 5, 114, 0, 0, 1017, 1005, 1, 0, 0, 0, 1017, 1011, 1, 0, 0, 0, 1018, 116, 1, 0, 0, 0, 1019, 1020, 5, 78, 0, 0, 1020, 1021, 5, 65, 0, 0, 1021, 1022, 5, 77, 0, 0, 1022, 1023, 5, 69, 0, 0, 1023, 1030, 5, 68, 0, 0, 1024, 1025, 5, 110, 0, 0, 1025, 1026, 5, 97, 0, 0, 1026, 1027, 5, 109, 0, 0, 1027, 1028, 5, 101, 0, 0, 1028, 1030, 5, 100, 0, 0, 1029, 1019, 1, 0, 0, 0, 1029, 1024, 1, 0, 0, 0, 1030, 118, 1, 0, 0, 0, 1031, 1032, 5, 78, 0, 0, 1032, 1033, 5, 65, 0, 0, 1033, 1034, 5, 77, 0, 0, 1034, 1040, 5, 69, 0, 0, 1035, 1036, 5, 110, 0, 0, 1036, 1037, 5, 97, 0, 0, 1037, 1038, 5, 109, 0, 0, 1038, 1040, 5, 101, 0, 0, 1039, 1031, 1, 0, 0, 0, 1039, 1035, 1, 0, 0, 0, 1040, 120, 1, 0, 0, 0, 1041, 1042, 5, 70, 0, 0, 1042, 1043, 5, 79, 0, 0, 1043, 1044, 5, 82, 0, 0, 1044, 1045, 5, 77, 0, 0, 1045, 1046, 5, 65, 0, 0, 1046, 1047, 5, 84, 0, 0, 1047, 1048, 5, 84, 0, 0, 1048, 1049, 5, 69, 0, 0, 1049, 1060, 5, 68, 0, 0, 1050, 1051, 5, 102, 0, 0, 1051, 1052, 5, 111, 0, 0, 1052, 1053, 5, 114, 0, 0, 1053, 1054, 5, 109, 0, 0, 1054, 1055, 5, 97, 0, 0, 1055, 1056, 5, 116, 0, 0, 1056, 1057, 5, 116, 0, 0, 1057, 1058, 5, 101, 0, 0, 1058, 1060, 5, 100, 0, 0, 1059, 1041, 1, 0, 0, 0, 1059, 1050, 1, 0, 0, 0, 1060, 122, 1, 0, 0, 0, 1061, 1062, 5, 85, 0, 0, 1062, 1063, 5, 78, 0, 0, 1063, 1064, 5, 70, 0, 0, 1064, 1065, 5, 79, 0, 0, 1065, 1066, 5, 82, 0, 0, 1066, 1067, 5, 77, 0, 0, 1067, 1068, 5, 65, 0, 0, 1068, 1069, 5, 84, 0, 0, 1069, 1070, 5, 84, 0, 0, 1070, 1071, 5, 69, 0, 0, 1071, 1084, 5, 68, 0, 0, 1072, 1073, 5, 117, 0, 0, 1073, 1074, 5, 110, 0, 0, 1074, 1075, 5, 102, 0, 0, 1075, 1076, 5, 111, 0, 0, 1076, 1077, 5, 114, 0, 0, 1077, 1078, 5, 109, 0, 0, 1078, 1079, 5, 97, 0, 0, 1079, 1080, 5, 116, 0, 0, 1080, 1081, 5, 116, 0, 0, 1081, 1082, 5, 101, 0, 0, 1082, 1084, 5, 100, 0, 0, 1083, 1061, 1, 0, 0, 0, 1083, 1072, 1, 0, 0, 0, 1084, 124, 1, 0, 0, 0, 1085, 1086, 5, 78, 0, 0, 1086, 1087, 5, 69, 0, 0, 1087, 1088, 5, 88, 0, 0, 1088, 1089, 5, 84, 0, 0, 1089, 1090, 5, 82, 0, 0, 1090, 1091, 5, 69, 0, 0, 1091, 1100, 5, 67, 0, 0, 1092, 1093, 5, 110, 0, 0, 1093, 1094, 5, 101, 0, 0, 1094, 1095, 5, 120, 0, 0, 1095, 1096, 5, 116, 0, 0, 1096, 1097, 5, 114, 0, 0, 1097, 1098, 5, 101, 0, 0, 1098, 1100, 5, 99, 0, 0, 1099, 1085, 1, 0, 0, 0, 1099, 1092, 1, 0, 0, 0, 1100, 126, 1, 0, 0, 0, 1101, 1102, 5, 73, 0, 0, 1102, 1103, 5, 78, 0, 0, 1103, 1104, 5, 81, 0, 0, 1104, 1105, 5, 85, 0, 0, 1105, 1106, 5, 73, 0, 0, 1106, 1107, 5, 82, 0, 0, 1107, 1116, 5, 69, 0, 0, 1108, 1109, 5, 105, 0, 0, 1109, 1110, 5, 110, 0, 0, 1110, 1111, 5, 113, 0, 0, 1111, 1112, 5, 117, 0, 0, 1112, 1113, 5, 105, 0, 0, 1113, 1114, 5, 114, 0, 0, 1114, 1116, 5, 101, 0, 0, 1115, 1101, 1, 0, 0, 0, 1115, 1108, 1, 0, 0, 0, 1116, 128, 1, 0, 0, 0, 1117, 1118, 5, 66, 0, 0, 1118, 1119, 5, 65, 0, 0, 1119, 1120, 5, 67, 0, 0, 1120, 1121, 5, 75, 0, 0, 1121, 1122, 5, 83, 0, 0, 1122, 1123, 5, 80, 0, 0, 1123, 1124, 5, 65, 0, 0, 1124, 1125, 5, 67, 0, 0, 1125, 1136, 5, 69, 0, 0, 1126, 1127, 5, 98, 0, 0, 1127, 1128, 5, 97, 0, 0, 1128, 1129, 5, 99, 0, 0, 1129, 1130, 5, 107, 0, 0, 1130, 1131, 5, 115, 0, 0, 1131, 1132, 5, 112, 0, 0, 1132, 1133, 5, 97, 0, 0, 1133, 1134, 5, 99, 0, 0, 1134, 1136, 5, 101, 0, 0, 1135, 1117, 1, 0, 0, 0, 1135, 1126, 1, 0, 0, 0, 1136, 130, 1, 0, 0, 0, 1137, 1138, 5, 69, 0, 0, 1138, 1139, 5, 78, 0, 0, 1139, 1140, 5, 68, 0, 0, 1140, 1141, 5, 70, 0, 0, 1141, 1142, 5, 73, 0, 0, 1142, 1143, 5, 76, 0, 0, 1143, 1152, 5, 69, 0, 0, 1144, 1145, 5, 101, 0, 0, 1145, 1146, 5, 110, 0, 0, 1146, 1147, 5, 100, 0, 0, 1147, 1148, 5, 102, 0, 0, 1148, 1149, 5, 105, 0, 0, 1149, 1150, 5, 108, 0, 0, 1150, 1152, 5, 101, 0, 0, 1151, 1137, 1, 0, 0, 0, 1151, 1144, 1, 0, 0, 0, 1152, 132, 1, 0, 0, 0, 1153, 1154, 5, 82, 0, 0, 1154, 1155, 5, 69, 0, 0, 1155, 1156, 5, 87, 0, 0, 1156, 1157, 5, 73, 0, 0, 1157, 1158, 5, 78, 0, 0, 1158, 1166, 5, 68, 0, 0, 1159, 1160, 5, 114, 0, 0, 1160, 1161, 5, 101, 0, 0, 1161, 1162, 5, 119, 0, 0, 1162, 1163, 5, 105, 0, 0, 1163, 1164, 5, 110, 0, 0, 1164, 1166, 5, 100, 0, 0, 1165, 1153, 1, 0, 0, 0, 1165, 1159, 1, 0, 0, 0, 1166, 134, 1, 0, 0, 0, 1167, 1168, 5, 36, 0, 0, 1168, 136, 1, 0, 0, 0, 1169, 1170, 5, 44, 0, 0, 1170, 138, 1, 0, 0, 0, 1171, 1172, 5, 40, 0, 0, 1172, 140, 1, 0, 0, 0, 1173, 1174, 5, 41, 0, 0, 1174, 142, 1, 0, 0, 0, 1175, 1176, 5, 58, 0, 0, 1176, 144, 1, 0, 0, 0, 1177, 1178, 5, 61, 0, 0, 1178, 146, 1, 0, 0, 0, 1179, 1180, 5, 45, 0, 0, 1180, 148, 1, 0, 0, 0, 1181, 1182, 5, 43, 0, 0, 1182, 150, 1, 0, 0, 0, 1183, 1184, 5, 47, 0, 0, 1184, 152, 1, 0, 0, 0, 1185, 1186, 5, 42, 0, 0, 1186, 154, 1, 0, 0, 0, 1187, 1188, 5, 42, 0, 0, 1188, 1189, 5, 42, 0, 0, 1189, 156, 1, 0, 0, 0, 1190, 1191, 5, 46, 0, 0, 1191, 1192, 5, 110, 0, 0, 1192, 1193, 5, 111, 0, 0, 1193, 1194, 5, 116, 0, 0, 1194, 1201, 5, 46, 0, 0, 1195, 1196, 5, 46, 0, 0, 1196, 1197, 5, 78, 0, 0, 1197, 1198, 5, 79, 0, 0, 1198, 1199, 5, 84, 0, 0, 1199, 1201, 5, 46, 0, 0, 1200, 1190, 1, 0, 0, 0, 1200, 1195, 1, 0, 0, 0, 1201, 158, 1, 0, 0, 0, 1202, 1203, 5, 46, 0, 0, 1203, 1204, 5, 97, 0, 0, 1204, 1205, 5, 110, 0, 0, 1205, 1206, 5, 100, 0, 0, 1206, 1213, 5, 46, 0, 0, 1207, 1208, 5, 46, 0, 0, 1208, 1209, 5, 65, 0, 0, 1209, 1210, 5, 78, 0, 0, 1210, 1211, 5, 68, 0, 0, 1211, 1213, 5, 46, 0, 0, 1212, 1202, 1, 0, 0, 0, 1212, 1207, 1, 0, 0, 0, 1213, 160, 1, 0, 0, 0, 1214, 1215, 5, 46, 0, 0, 1215, 1216, 5, 111, 0, 0, 1216, 1217, 5, 114, 0, 0, 1217, 1223, 5, 46, 0, 0, 1218, 1219, 5, 46, 0, 0, 1219, 1220, 5, 79, 0, 0, 1220, 1221, 5, 82, 0, 0, 1221, 1223, 5, 46, 0, 0, 1222, 1214, 1, 0, 0, 0, 1222, 1218, 1, 0, 0, 0, 1223, 162, 1, 0, 0, 0, 1224, 1225, 5, 46, 0, 0, 1225, 1226, 5, 101, 0, 0, 1226, 1227, 5, 113, 0, 0, 1227, 1228, 5, 118, 0, 0, 1228, 1235, 5, 46, 0, 0, 1229, 1230, 5, 46, 0, 0, 1230, 1231, 5, 69, 0, 0, 1231, 1232, 5, 81, 0, 0, 1232, 1233, 5, 86, 0, 0, 1233, 1235, 5, 46, 0, 0, 1234, 1224, 1, 0, 0, 0, 1234, 1229, 1, 0, 0, 0, 1235, 164, 1, 0, 0, 0, 1236, 1237, 5, 46, 0, 0, 1237, 1238, 5, 110, 0, 0, 1238, 1239, 5, 101, 0, 0, 1239, 1240, 5, 113, 0, 0, 1240, 1241, 5, 118, 0, 0, 1241, 1249, 5, 46, 0, 0, 1242, 1243, 5, 46, 0, 0, 1243, 1244, 5, 78, 0, 0, 1244, 1245, 5, 69, 0, 0, 1245, 1246, 5, 81, 0, 0, 1246, 1247, 5, 86, 0, 0, 1247, 1249, 5, 46, 0, 0, 1248, 1236, 1, 0, 0, 0, 1248, 1242, 1, 0, 0, 0, 1249, 166, 1, 0, 0, 0, 1250, 1251, 5, 46, 0, 0, 1251, 1252, 5, 120, 0, 0, 1252, 1253, 5, 111, 0, 0, 1253, 1254, 5, 114, 0, 0, 1254, 1261, 5, 46, 0, 0, 1255, 1256, 5, 46, 0, 0, 1256, 1257, 5, 88, 0, 0, 1257, 1258, 5, 79, 0, 0, 1258, 1259, 5, 82, 0, 0, 1259, 1261, 5, 46, 0, 0, 1260, 1250, 1, 0, 0, 0, 1260, 1255, 1, 0, 0, 0, 1261, 168, 1, 0, 0, 0, 1262, 1263, 5, 46, 0, 0, 1263, 1264, 5, 101, 0, 0, 1264, 1265, 5, 111, 0, 0, 1265, 1266, 5, 114, 0, 0, 1266, 1273, 5, 46, 0, 0, 1267, 1268, 5, 46, 0, 0, 1268, 1269, 5, 69, 0, 0, 1269, 1270, 5, 79, 0, 0, 1270, 1271, 5, 82, 0, 0, 1271, 1273, 5, 46, 0, 0, 1272, 1262, 1, 0, 0, 0, 1272, 1267, 1, 0, 0, 0, 1273, 170, 1, 0, 0, 0, 1274, 1275, 5, 46, 0, 0, 1275, 1276, 5, 108, 0, 0, 1276, 1277, 5, 116, 0, 0, 1277, 1283, 5, 46, 0, 0, 1278, 1279, 5, 46, 0, 0, 1279, 1280, 5, 76, 0, 0, 1280, 1281, 5, 84, 0, 0, 1281, 1283, 5, 46, 0, 0, 1282, 1274, 1, 0, 0, 0, 1282, 1278, 1, 0, 0, 0, 1283, 172, 1, 0, 0, 0, 1284, 1285, 5, 46, 0, 0, 1285, 1286, 5, 108, 0, 0, 1286, 1287, 5, 101, 0, 0, 1287, 1293, 5, 46, 0, 0, 1288, 1289, 5, 46, 0, 0, 1289, 1290, 5, 76, 0, 0, 1290, 1291, 5, 69, 0, 0, 1291, 1293, 5, 46, 0, 0, 1292, 1284, 1, 0, 0, 0, 1292, 1288, 1, 0, 0, 0, 1293, 174, 1, 0, 0, 0, 1294, 1295, 5, 46, 0, 0, 1295, 1296, 5, 103, 0, 0, 1296, 1297, 5, 116, 0, 0, 1297, 1303, 5, 46, 0, 0, 1298, 1299, 5, 46, 0, 0, 1299, 1300, 5, 71, 0, 0, 1300, 1301, 5, 84, 0, 0, 1301, 1303, 5, 46, 0, 0, 1302, 1294, 1, 0, 0, 0, 1302, 1298, 1, 0, 0, 0, 1303, 176, 1, 0, 0, 0, 1304, 1305, 5, 46, 0, 0, 1305, 1306, 5, 103, 0, 0, 1306, 1307, 5, 101, 0, 0, 1307, 1313, 5, 46, 0, 0, 1308, 1309, 5, 46, 0, 0, 1309, 1310, 5, 71, 0, 0, 1310, 1311, 5, 69, 0, 0, 1311, 1313, 5, 46, 0, 0, 1312, 1304, 1, 0, 0, 0, 1312, 1308, 1, 0, 0, 0, 1313, 178, 1, 0, 0, 0, 1314, 1315, 5, 46, 0, 0, 1315, 1316, 5, 110, 0, 0, 1316, 1317, 5, 101, 0, 0, 1317, 1323, 5, 46, 0, 0, 1318, 1319, 5, 46, 0, 0, 1319, 1320, 5, 78, 0, 0, 1320, 1321, 5, 69, 0, 0, 1321, 1323, 5, 46, 0, 0, 1322, 1314, 1, 0, 0, 0, 1322, 1318, 1, 0, 0, 0, 1323, 180, 1, 0, 0, 0, 1324, 1325, 5, 46, 0, 0, 1325, 1326, 5, 101, 0, 0, 1326, 1327, 5, 113, 0, 0, 1327, 1333, 5, 46, 0, 0, 1328, 1329, 5, 46, 0, 0, 1329, 1330, 5, 69, 0, 0, 1330, 1331, 5, 81, 0, 0, 1331, 1333, 5, 46, 0, 0, 1332, 1324, 1, 0, 0, 0, 1332, 1328, 1, 0, 0, 0, 1333, 182, 1, 0, 0, 0, 1334, 1335, 5, 46, 0, 0, 1335, 1336, 5, 116, 0, 0, 1336, 1337, 5, 114, 0, 0, 1337, 1338, 5, 117, 0, 0, 1338, 1339, 5, 101, 0, 0, 1339, 1347, 5, 46, 0, 0, 1340, 1341, 5, 46, 0, 0, 1341, 1342, 5, 84, 0, 0, 1342, 1343, 5, 82, 0, 0, 1343, 1344, 5, 85, 0, 0, 1344, 1345, 5, 69, 0, 0, 1345, 1347, 5, 46, 0, 0, 1346, 1334, 1, 0, 0, 0, 1346, 1340, 1, 0, 0, 0, 1347, 184, 1, 0, 0, 0, 1348, 1349, 5, 46, 0, 0, 1349, 1350, 5, 102, 0, 0, 1350, 1351, 5, 97, 0, 0, 1351, 1352, 5, 108, 0, 0, 1352, 1353, 5, 115, 0, 0, 1353, 1354, 5, 101, 0, 0, 1354, 1363, 5, 46, 0, 0, 1355, 1356, 5, 46, 0, 0, 1356, 1357, 5, 70, 0, 0, 1357, 1358, 5, 65, 0, 0, 1358, 1359, 5, 76, 0, 0, 1359, 1360, 5, 83, 0, 0, 1360, 1361, 5, 69, 0, 0, 1361, 1363, 5, 46, 0, 0, 1362, 1348, 1, 0, 0, 0, 1362, 1355, 1, 0, 0, 0, 1363, 186, 1, 0, 0, 0, 1364, 1365, 5, 88, 0, 0, 1365, 1366, 5, 67, 0, 0, 1366, 1367, 5, 79, 0, 0, 1367, 1368, 5, 78, 0, 0, 1368, 188, 1, 0, 0, 0, 1369, 1370, 5, 80, 0, 0, 1370, 1371, 5, 67, 0, 0, 1371, 1372, 5, 79, 0, 0, 1372, 1373, 5, 78, 0, 0, 1373, 190, 1, 0, 0, 0, 1374, 1375, 5, 70, 0, 0, 1375, 1376, 5, 67, 0, 0, 1376, 1377, 5, 79, 0, 0, 1377, 1378, 5, 78, 0, 0, 1378, 192, 1, 0, 0, 0, 1379, 1380, 5, 67, 0, 0, 1380, 1381, 5, 67, 0, 0, 1381, 1382, 5, 79, 0, 0, 1382, 1383, 5, 78, 0, 0, 1383, 194, 1, 0, 0, 0, 1384, 1385, 5, 72, 0, 0, 1385, 1386, 5, 79, 0, 0, 1386, 1387, 5, 76, 0, 0, 1387, 1388, 5, 76, 0, 0, 1388, 1389, 5, 69, 0, 0, 1389, 1390, 5, 82, 0, 0, 1390, 1391, 5, 73, 0, 0, 1391, 1392, 5, 84, 0, 0, 1392, 1393, 5, 72, 0, 0, 1393, 196, 1, 0, 0, 0, 1394, 1395, 5, 67, 0, 0, 1395, 1396, 5, 79, 0, 0, 1396, 1397, 5, 78, 0, 0, 1397, 1398, 5, 67, 0, 0, 1398, 1399, 5, 65, 0, 0, 1399, 1400, 5, 84, 0, 0, 1400, 1401, 5, 79, 0, 0, 1401, 1402, 5, 80, 0, 0, 1402, 198, 1, 0, 0, 0, 1403, 1404, 5, 67, 0, 0, 1404, 1405, 5, 84, 0, 0, 1405, 1406, 5, 82, 0, 0, 1406, 1407, 5, 76, 0, 0, 1407, 1408, 5, 68, 0, 0, 1408, 1409, 5, 73, 0, 0, 1409, 1410, 5, 82, 0, 0, 1410, 1411, 5, 69, 0, 0, 1411, 1412, 5, 67, 0, 0, 1412, 1413, 5, 84, 0, 0, 1413, 200, 1, 0, 0, 0, 1414, 1415, 5, 67, 0, 0, 1415, 1416, 5, 84, 0, 0, 1416, 1417, 5, 82, 0, 0, 1417, 1418, 5, 76, 0, 0, 1418, 1419, 5, 82, 0, 0, 1419, 1420, 5, 69, 0, 0, 1420, 1421, 5, 67, 0, 0, 1421, 202, 1, 0, 0, 0, 1422, 1423, 5, 84, 0, 0, 1423, 1424, 5, 79, 0, 0, 1424, 204, 1, 0, 0, 0, 1425, 1426, 5, 83, 0, 0, 1426, 1427, 5, 85, 0, 0, 1427, 1428, 5, 66, 0, 0, 1428, 1429, 5, 80, 0, 0, 1429, 1430, 5, 82, 0, 0, 1430, 1431, 5, 79, 0, 0, 1431, 1432, 5, 71, 0, 0, 1432, 1433, 5, 82, 0, 0, 1433, 1434, 5, 65, 0, 0, 1434, 1435, 5, 77, 0, 0, 1435, 1436, 5, 66, 0, 0, 1436, 1437, 5, 76, 0, 0, 1437, 1438, 5, 79, 0, 0, 1438, 1439, 5, 67, 0, 0, 1439, 1440, 5, 75, 0, 0, 1440, 206, 1, 0, 0, 0, 1441, 1442, 5, 68, 0, 0, 1442, 1443, 5, 79, 0, 0, 1443, 1444, 5, 66, 0, 0, 1444, 1445, 5, 76, 0, 0, 1445, 1446, 5, 79, 0, 0, 1446, 1447, 5, 67, 0, 0, 1447, 1448, 5, 75, 0, 0, 1448, 208, 1, 0, 0, 0, 1449, 1450, 5, 65, 0, 0, 1450, 1451, 5, 73, 0, 0, 1451, 1452, 5, 70, 0, 0, 1452, 210, 1, 0, 0, 0, 1453, 1454, 5, 84, 0, 0, 1454, 1455, 5, 72, 0, 0, 1455, 1456, 5, 69, 0, 0, 1456, 1457, 5, 78, 0, 0, 1457, 1458, 5, 66, 0, 0, 1458, 1459, 5, 76, 0, 0, 1459, 1460, 5, 79, 0, 0, 1460, 1461, 5, 67, 0, 0, 1461, 1462, 5, 75, 0, 0, 1462, 212, 1, 0, 0, 0, 1463, 1464, 5, 69, 0, 0, 1464, 1465, 5, 76, 0, 0, 1465, 1466, 5, 83, 0, 0, 1466, 1467, 5, 69, 0, 0, 1467, 1468, 5, 66, 0, 0, 1468, 1469, 5, 76, 0, 0, 1469, 1470, 5, 79, 0, 0, 1470, 1471, 5, 67, 0, 0, 1471, 1472, 5, 75, 0, 0, 1472, 214, 1, 0, 0, 0, 1473, 1474, 5, 67, 0, 0, 1474, 1475, 5, 79, 0, 0, 1475, 1476, 5, 68, 0, 0, 1476, 1477, 5, 69, 0, 0, 1477, 1478, 5, 82, 0, 0, 1478, 1479, 5, 79, 0, 0, 1479, 1480, 5, 79, 0, 0, 1480, 1481, 5, 84, 0, 0, 1481, 216, 1, 0, 0, 0, 1482, 1483, 5, 67, 0, 0, 1483, 1484, 5, 79, 0, 0, 1484, 1485, 5, 77, 0, 0, 1485, 1486, 5, 80, 0, 0, 1486, 1487, 5, 76, 0, 0, 1487, 1488, 5, 69, 0, 0, 1488, 1497, 5, 88, 0, 0, 1489, 1490, 5, 99, 0, 0, 1490, 1491, 5, 111, 0, 0, 1491, 1492, 5, 109, 0, 0, 1492, 1493, 5, 112, 0, 0, 1493, 1494, 5, 108, 0, 0, 1494, 1495, 5, 101, 0, 0, 1495, 1497, 5, 120, 0, 0, 1496, 1482, 1, 0, 0, 0, 1496, 1489, 1, 0, 0, 0, 1497, 218, 1, 0, 0, 0, 1498, 1499, 5, 80, 0, 0, 1499, 1500, 5, 82, 0, 0, 1500, 1501, 5, 69, 0, 0, 1501, 1502, 5, 67, 0, 0, 1502, 1503, 5, 73, 0, 0, 1503, 1504, 5, 83, 0, 0, 1504, 1505, 5, 73, 0, 0, 1505, 1506, 5, 79, 0, 0, 1506, 1517, 5, 78, 0, 0, 1507, 1508, 5, 112, 0, 0, 1508, 1509, 5, 114, 0, 0, 1509, 1510, 5, 101, 0, 0, 1510, 1511, 5, 99, 0, 0, 1511, 1512, 5, 105, 0, 0, 1512, 1513, 5, 115, 0, 0, 1513, 1514, 5, 105, 0, 0, 1514, 1515, 5, 111, 0, 0, 1515, 1517, 5, 110, 0, 0, 1516, 1498, 1, 0, 0, 0, 1516, 1507, 1, 0, 0, 0, 1517, 220, 1, 0, 0, 0, 1518, 1519, 5, 73, 0, 0, 1519, 1520, 5, 78, 0, 0, 1520, 1521, 5, 84, 0, 0, 1521, 1522, 5, 69, 0, 0, 1522, 1523, 5, 71, 0, 0, 1523, 1524, 5, 69, 0, 0, 1524, 1533, 5, 82, 0, 0, 1525, 1526, 5, 105, 0, 0, 1526, 1527, 5, 110, 0, 0, 1527, 1528, 5, 116, 0, 0, 1528, 1529, 5, 101, 0, 0, 1529, 1530, 5, 103, 0, 0, 1530, 1531, 5, 101, 0, 0, 1531, 1533, 5, 114, 0, 0, 1532, 1518, 1, 0, 0, 0, 1532, 1525, 1, 0, 0, 0, 1533, 222, 1, 0, 0, 0, 1534, 1535, 5, 76, 0, 0, 1535, 1536, 5, 79, 0, 0, 1536, 1537, 5, 71, 0, 0, 1537, 1538, 5, 73, 0, 0, 1538, 1539, 5, 67, 0, 0, 1539, 1540, 5, 65, 0, 0, 1540, 1549, 5, 76, 0, 0, 1541, 1542, 5, 108, 0, 0, 1542, 1543, 5, 111, 0, 0, 1543, 1544, 5, 103, 0, 0, 1544, 1545, 5, 105, 0, 0, 1545, 1546, 5, 99, 0, 0, 1546, 1547, 5, 97, 0, 0, 1547, 1549, 5, 108, 0, 0, 1548, 1534, 1, 0, 0, 0, 1548, 1541, 1, 0, 0, 0, 1549, 224, 1, 0, 0, 0, 1550, 1551, 8, 0, 0, 0, 1551, 226, 1, 0, 0, 0, 1552, 1555, 3, 237, 118, 0, 1553, 1555, 3, 239, 119, 0, 1554, 1552, 1, 0, 0, 0, 1554, 1553, 1, 0, 0, 0, 1555, 228, 1, 0, 0, 0, 1556, 1559, 3, 239, 119, 0, 1557, 1559, 2, 97, 102, 0, 1558, 1556, 1, 0, 0, 0, 1558, 1557, 1, 0, 0, 0, 1559, 230, 1, 0, 0, 0, 1560, 1561, 7, 1, 0, 0, 1561, 232, 1, 0, 0, 0, 1562, 1564, 7, 2, 0, 0, 1563, 1565, 3, 239, 119, 0, 1564, 1563, 1, 0, 0, 0, 1565, 1566, 1, 0, 0, 0, 1566, 1564, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1570, 5, 46, 0, 0, 1569, 1571, 3, 239, 119, 0, 1570, 1569, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1573, 1, 0, 0, 0, 1573, 1595, 1, 0, 0, 0, 1574, 1576, 7, 3, 0, 0, 1575, 1577, 3, 239, 119, 0, 1576, 1575, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 1576, 1, 0, 0, 0, 1578, 1579, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1582, 5, 46, 0, 0, 1581, 1583, 3, 239, 119, 0, 1582, 1581, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 1582, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1592, 1, 0, 0, 0, 1586, 1588, 5, 101, 0, 0, 1587, 1589, 3, 239, 119, 0, 1588, 1587, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 1588, 1, 0, 0, 0, 1590, 1591, 1, 0, 0, 0, 1591, 1593, 1, 0, 0, 0, 1592, 1586, 1, 0, 0, 0, 1592, 1593, 1, 0, 0, 0, 1593, 1595, 1, 0, 0, 0, 1594, 1562, 1, 0, 0, 0, 1594, 1574, 1, 0, 0, 0, 1595, 234, 1, 0, 0, 0, 1596, 1598, 7, 4, 0, 0, 1597, 1599, 3, 231, 115, 0, 1598, 1597, 1, 0, 0, 0, 1598, 1599, 1, 0, 0, 0, 1599, 1601, 1, 0, 0, 0, 1600, 1602, 3, 239, 119, 0, 1601, 1600, 1, 0, 0, 0, 1602, 1603, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 236, 1, 0, 0, 0, 1605, 1607, 7, 5, 0, 0, 1606, 1605, 1, 0, 0, 0, 1607, 238, 1, 0, 0, 0, 1608, 1609, 2, 48, 57, 0, 1609, 240, 1, 0, 0, 0, 1610, 1646, 5, 39, 0, 0, 1611, 1612, 5, 39, 0, 0, 1612, 1645, 5, 39, 0, 0, 1613, 1645, 8, 6, 0, 0, 1614, 1620, 5, 10, 0, 0, 1615, 1617, 5, 13, 0, 0, 1616, 1618, 5, 10, 0, 0, 1617, 1616, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1620, 1, 0, 0, 0, 1619, 1614, 1, 0, 0, 0, 1619, 1615, 1, 0, 0, 0, 1620, 1621, 1, 0, 0, 0, 1621, 1622, 5, 32, 0, 0, 1622, 1623, 5, 32, 0, 0, 1623, 1624, 5, 32, 0, 0, 1624, 1625, 5, 32, 0, 0, 1625, 1626, 5, 32, 0, 0, 1626, 1627, 1, 0, 0, 0, 1627, 1628, 3, 225, 112, 0, 1628, 1634, 1, 0, 0, 0, 1629, 1635, 5, 10, 0, 0, 1630, 1632, 5, 13, 0, 0, 1631, 1633, 5, 10, 0, 0, 1632, 1631, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1635, 1, 0, 0, 0, 1634, 1629, 1, 0, 0, 0, 1634, 1630, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1637, 5, 32, 0, 0, 1637, 1638, 5, 32, 0, 0, 1638, 1639, 5, 32, 0, 0, 1639, 1640, 5, 32, 0, 0, 1640, 1641, 5, 32, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1643, 3, 225, 112, 0, 1643, 1645, 1, 0, 0, 0, 1644, 1611, 1, 0, 0, 0, 1644, 1613, 1, 0, 0, 0, 1644, 1619, 1, 0, 0, 0, 1645, 1648, 1, 0, 0, 0, 1646, 1644, 1, 0, 0, 0, 1646, 1647, 1, 0, 0, 0, 1647, 1649, 1, 0, 0, 0, 1648, 1646, 1, 0, 0, 0, 1649, 1650, 5, 39, 0, 0, 1650, 242, 1, 0, 0, 0, 1651, 1653, 3, 239, 119, 0, 1652, 1651, 1, 0, 0, 0, 1653, 1654, 1, 0, 0, 0, 1654, 1652, 1, 0, 0, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1656, 1, 0, 0, 0, 1656, 1660, 5, 46, 0, 0, 1657, 1659, 3, 239, 119, 0, 1658, 1657, 1, 0, 0, 0, 1659, 1662, 1, 0, 0, 0, 1660, 1658, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1664, 1, 0, 0, 0, 1662, 1660, 1, 0, 0, 0, 1663, 1665, 3, 235, 117, 0, 1664, 1663, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 244, 1, 0, 0, 0, 1666, 1668, 3, 239, 119, 0, 1667, 1666, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1667, 1, 0, 0, 0, 1669, 1670, 1, 0, 0, 0, 1670, 246, 1, 0, 0, 0, 1671, 1673, 7, 7, 0, 0, 1672, 1674, 3, 239, 119, 0, 1673, 1672, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1673, 1, 0, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 5, 46, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1680, 3, 233, 116, 0, 1680, 1693, 1, 0, 0, 0, 1681, 1683, 3, 227, 113, 0, 1682, 1681, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1682, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1689, 1, 0, 0, 0, 1686, 1688, 3, 227, 113, 0, 1687, 1686, 1, 0, 0, 0, 1688, 1691, 1, 0, 0, 0, 1689, 1687, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1693, 1, 0, 0, 0, 1691, 1689, 1, 0, 0, 0, 1692, 1671, 1, 0, 0, 0, 1692, 1682, 1, 0, 0, 0, 1693, 248, 1, 0, 0, 0, 1694, 1697, 4, 124, 0, 0, 1695, 1698, 5, 99, 0, 0, 1696, 1698, 3, 153, 76, 0, 1697, 1695, 1, 0, 0, 0, 1697, 1696, 1, 0, 0, 0, 1698, 1702, 1, 0, 0, 0, 1699, 1701, 8, 8, 0, 0, 1700, 1699, 1, 0, 0, 0, 1701, 1704, 1, 0, 0, 0, 1702, 1700, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1705, 1, 0, 0, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1706, 3, 255, 127, 0, 1706, 250, 1, 0, 0, 0, 1707, 1708, 3, 153, 76, 0, 1708, 252, 1, 0, 0, 0, 1709, 1713, 5, 34, 0, 0, 1710, 1712, 8, 9, 0, 0, 1711, 1710, 1, 0, 0, 0, 1712, 1715, 1, 0, 0, 0, 1713, 1711, 1, 0, 0, 0, 1713, 1714, 1, 0, 0, 0, 1714, 1716, 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1716, 1717, 5, 34, 0, 0, 1717, 254, 1, 0, 0, 0, 1718, 1720, 7, 8, 0, 0, 1719, 1718, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1719, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 256, 1, 0, 0, 0, 1723, 1724, 3, 255, 127, 0, 1724, 1725, 5, 32, 0, 0, 1725, 1726, 5, 32, 0, 0, 1726, 1727, 5, 32, 0, 0, 1727, 1728, 5, 32, 0, 0, 1728, 1729, 5, 32, 0, 0, 1729, 1730, 5, 36, 0, 0, 1730, 1740, 1, 0, 0, 0, 1731, 1732, 3, 255, 127, 0, 1732, 1733, 5, 32, 0, 0, 1733, 1734, 5, 32, 0, 0, 1734, 1735, 5, 32, 0, 0, 1735, 1736, 5, 32, 0, 0, 1736, 1737, 5, 32, 0, 0, 1737, 1738, 5, 43, 0, 0, 1738, 1740, 1, 0, 0, 0, 1739, 1723, 1, 0, 0, 0, 1739, 1731, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1742, 6, 128, 0, 0, 1742, 258, 1, 0, 0, 0, 1743, 1745, 7, 10, 0, 0, 1744, 1743, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1744, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 6, 129, 0, 0, 1749, 260, 1, 0, 0, 0, 119, 0, 275, 287, 305, 317, 339, 347, 367, 377, 401, 415, 431, 449, 459, 479, 499, 517, 537, 547, 557, 563, 573, 579, 589, 599, 611, 625, 631, 649, 659, 671, 683, 695, 705, 717, 727, 735, 745, 753, 767, 781, 789, 799, 813, 825, 839, 855, 877, 889, 899, 913, 927, 945, 955, 965, 977, 989, 1003, 1017, 1029, 1039, 1059, 1083, 1099, 1115, 1135, 1151, 1165, 1200, 1212, 1222, 1234, 1248, 1260, 1272, 1282, 1292, 1302, 1312, 1322, 1332, 1346, 1362, 1496, 1516, 1532, 1548, 1554, 1558, 1566, 1572, 1578, 1584, 1590, 1592, 1594, 1598, 1603, 1606, 1617, 1619, 1632, 1634, 1644, 1646, 1654, 1660, 1664, 1669, 1675, 1684, 1689, 1692, 1697, 1702, 1713, 1721, 1739, 1746, 1, 6, 0, 0] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran77Lexer.py b/src/pycropml/transpiler/antlr_py/grammars/Fortran77Lexer.py index 91e95bf9..531f030e 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran77Lexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran77Lexer.py @@ -1,811 +1,690 @@ -# Generated from Fortran77Lexer.g4 by ANTLR 4.8 +# Generated from Fortran77Lexer.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO import sys - +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2{") - buf.write("\u06d8\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") - buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") - buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") - buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") - buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") - buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4") - buf.write("y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080") - buf.write("\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083") - buf.write("\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3") - buf.write("\2\5\2\u0116\n\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\5\3\u0122\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3") - buf.write("\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4\u0134\n\4\3\5\3\5\3\5\3") - buf.write("\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u0140\n\5\3\6\3\6\3\6\3") - buf.write("\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6") - buf.write("\3\6\3\6\3\6\5\6\u0156\n\6\3\7\3\7\3\7\3\7\3\7\3\7\5\7") - buf.write("\u015e\n\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b") - buf.write("\3\b\3\b\3\b\3\b\3\b\3\b\3\b\5\b\u0172\n\b\3\t\3\t\3\t") - buf.write("\3\t\3\t\3\t\3\t\3\t\5\t\u017c\n\t\3\n\3\n\3\n\3\n\3\n") - buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3") - buf.write("\n\3\n\3\n\3\n\5\n\u0194\n\n\3\13\3\13\3\13\3\13\3\13") - buf.write("\3\13\3\13\3\13\3\13\3\13\3\13\3\13\5\13\u01a2\n\13\3") - buf.write("\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f") - buf.write("\5\f\u01b2\n\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r") - buf.write("\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u01c4\n\r\3\16\3\16\3\16") - buf.write("\3\16\3\16\3\16\3\16\3\16\5\16\u01ce\n\16\3\17\3\17\3") - buf.write("\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17") - buf.write("\3\17\3\17\3\17\3\17\3\17\5\17\u01e2\n\17\3\20\3\20\3") - buf.write("\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20") - buf.write("\3\20\3\20\3\20\3\20\3\20\5\20\u01f6\n\20\3\21\3\21\3") - buf.write("\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") - buf.write("\3\21\3\21\3\21\5\21\u0208\n\21\3\22\3\22\3\22\3\22\3") - buf.write("\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22") - buf.write("\3\22\3\22\3\22\5\22\u021c\n\22\3\23\3\23\3\23\3\23\3") - buf.write("\23\3\23\3\23\3\23\5\23\u0226\n\23\3\24\3\24\3\24\3\24") - buf.write("\3\24\3\24\3\24\3\24\5\24\u0230\n\24\3\25\3\25\3\25\3") - buf.write("\25\5\25\u0236\n\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26") - buf.write("\3\26\5\26\u0240\n\26\3\27\3\27\3\27\3\27\5\27\u0246\n") - buf.write("\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u0250") - buf.write("\n\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u025a") - buf.write("\n\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32") - buf.write("\5\32\u0266\n\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3") - buf.write("\33\3\33\3\33\3\33\3\33\5\33\u0274\n\33\3\34\3\34\3\34") - buf.write("\3\34\5\34\u027a\n\34\3\35\3\35\3\35\3\35\3\35\3\35\3") - buf.write("\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\5\35") - buf.write("\u028c\n\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\5") - buf.write("\36\u0296\n\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37") - buf.write("\3\37\3\37\5\37\u02a2\n\37\3 \3 \3 \3 \3 \3 \3 \3 \3 ") - buf.write("\3 \5 \u02ae\n \3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u02ba") - buf.write("\n!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\5\"\u02c4\n\"\3#\3") - buf.write("#\3#\3#\3#\3#\3#\3#\3#\3#\5#\u02d0\n#\3$\3$\3$\3$\3$\3") - buf.write("$\3$\3$\5$\u02da\n$\3%\3%\3%\3%\3%\3%\5%\u02e2\n%\3&\3") - buf.write("&\3&\3&\3&\3&\3&\3&\5&\u02ec\n&\3\'\3\'\3\'\3\'\3\'\3") - buf.write("\'\5\'\u02f4\n\'\3(\3(\3(\3(\3(\3(\3(\3(\3(\3(\3(\3(\5") - buf.write("(\u0302\n(\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\5)\u0310") - buf.write("\n)\3*\3*\3*\3*\3*\3*\5*\u0318\n*\3+\3+\3+\3+\3+\3+\3") - buf.write("+\3+\5+\u0322\n+\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\5") - buf.write(",\u0330\n,\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\5-\u033c\n-\3") - buf.write(".\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\5.\u034a\n.\3/\3/\3") - buf.write("/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\5/\u035a\n/\3\60\3") - buf.write("\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60") - buf.write("\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u0370\n") - buf.write("\60\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61") - buf.write("\5\61\u037c\n\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3") - buf.write("\62\5\62\u0386\n\62\3\63\3\63\3\63\3\63\3\63\3\63\3\63") - buf.write("\3\63\3\63\3\63\3\63\3\63\5\63\u0394\n\63\3\64\3\64\3") - buf.write("\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\5\64") - buf.write("\u03a2\n\64\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3") - buf.write("\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\5\65\u03b4\n\65") - buf.write("\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\5\66\u03be\n") - buf.write("\66\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\5\67\u03c8") - buf.write("\n\67\38\38\38\38\38\38\38\38\38\38\58\u03d4\n8\39\39") - buf.write("\39\39\39\39\39\39\39\39\59\u03e0\n9\3:\3:\3:\3:\3:\3") - buf.write(":\3:\3:\3:\3:\3:\3:\5:\u03ee\n:\3;\3;\3;\3;\3;\3;\3;\3") - buf.write(";\3;\3;\3;\3;\5;\u03fc\n;\3<\3<\3<\3<\3<\3<\3<\3<\3<\3") - buf.write("<\5<\u0408\n<\3=\3=\3=\3=\3=\3=\3=\3=\5=\u0412\n=\3>\3") - buf.write(">\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\5>\u0426") - buf.write("\n>\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3") - buf.write("?\3?\3?\3?\3?\3?\5?\u043e\n?\3@\3@\3@\3@\3@\3@\3@\3@\3") - buf.write("@\3@\3@\3@\3@\3@\5@\u044e\n@\3A\3A\3A\3A\3A\3A\3A\3A\3") - buf.write("A\3A\3A\3A\3A\3A\5A\u045e\nA\3B\3B\3B\3B\3B\3B\3B\3B\3") - buf.write("B\3B\3B\3B\3B\3B\3B\3B\3B\3B\5B\u0472\nB\3C\3C\3C\3C\3") - buf.write("C\3C\3C\3C\3C\3C\3C\3C\3C\3C\5C\u0482\nC\3D\3D\3D\3D\3") - buf.write("D\3D\3D\3D\3D\3D\3D\3D\5D\u0490\nD\3E\3E\3F\3F\3G\3G\3") - buf.write("H\3H\3I\3I\3J\3J\3K\3K\3L\3L\3M\3M\3N\3N\3O\3O\3O\3P\3") - buf.write("P\3P\3P\3P\3P\3P\3P\3P\3P\5P\u04b3\nP\3Q\3Q\3Q\3Q\3Q\3") - buf.write("Q\3Q\3Q\3Q\3Q\5Q\u04bf\nQ\3R\3R\3R\3R\3R\3R\3R\3R\5R\u04c9") - buf.write("\nR\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\5S\u04d5\nS\3T\3T\3") - buf.write("T\3T\3T\3T\3T\3T\3T\3T\3T\3T\5T\u04e3\nT\3U\3U\3U\3U\3") - buf.write("U\3U\3U\3U\3U\3U\5U\u04ef\nU\3V\3V\3V\3V\3V\3V\3V\3V\3") - buf.write("V\3V\5V\u04fb\nV\3W\3W\3W\3W\3W\3W\3W\3W\5W\u0505\nW\3") - buf.write("X\3X\3X\3X\3X\3X\3X\3X\5X\u050f\nX\3Y\3Y\3Y\3Y\3Y\3Y\3") - buf.write("Y\3Y\5Y\u0519\nY\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\5Z\u0523\nZ\3") - buf.write("[\3[\3[\3[\3[\3[\3[\3[\5[\u052d\n[\3\\\3\\\3\\\3\\\3\\") - buf.write("\3\\\3\\\3\\\5\\\u0537\n\\\3]\3]\3]\3]\3]\3]\3]\3]\3]") - buf.write("\3]\3]\3]\5]\u0545\n]\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3") - buf.write("^\3^\3^\3^\5^\u0555\n^\3_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3") - buf.write("a\3a\3a\3a\3a\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3c\3c\3") - buf.write("c\3c\3d\3d\3d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3e\3e\3") - buf.write("e\3e\3e\3e\3f\3f\3f\3f\3f\3f\3f\3f\3g\3g\3g\3h\3h\3h\3") - buf.write("h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3") - buf.write("i\3i\3i\3j\3j\3j\3j\3k\3k\3k\3k\3k\3k\3k\3k\3k\3k\3l\3") - buf.write("l\3l\3l\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m\3m\3m\3") - buf.write("n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\5n\u05db\nn\3") - buf.write("o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\5") - buf.write("o\u05ef\no\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\5") - buf.write("p\u05ff\np\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\5") - buf.write("q\u060f\nq\3r\3r\3s\3s\5s\u0615\ns\3t\3t\5t\u0619\nt\3") - buf.write("u\3u\3v\3v\6v\u061f\nv\rv\16v\u0620\3v\3v\6v\u0625\nv") - buf.write("\rv\16v\u0626\3v\3v\6v\u062b\nv\rv\16v\u062c\3v\3v\6v") - buf.write("\u0631\nv\rv\16v\u0632\3v\3v\6v\u0637\nv\rv\16v\u0638") - buf.write("\5v\u063b\nv\5v\u063d\nv\3w\3w\5w\u0641\nw\3w\6w\u0644") - buf.write("\nw\rw\16w\u0645\3x\5x\u0649\nx\3y\3y\3z\3z\3z\3z\3z\3") - buf.write("z\3z\5z\u0654\nz\5z\u0656\nz\3z\3z\3z\3z\3z\3z\3z\3z\3") - buf.write("z\3z\3z\5z\u0663\nz\5z\u0665\nz\3z\3z\3z\3z\3z\3z\3z\3") - buf.write("z\7z\u066f\nz\fz\16z\u0672\13z\3z\3z\3{\6{\u0677\n{\r") - buf.write("{\16{\u0678\3{\3{\7{\u067d\n{\f{\16{\u0680\13{\3{\5{\u0683") - buf.write("\n{\3|\6|\u0686\n|\r|\16|\u0687\3}\3}\6}\u068c\n}\r}\16") - buf.write("}\u068d\3}\3}\3}\3}\3}\6}\u0695\n}\r}\16}\u0696\3}\7}") - buf.write("\u069a\n}\f}\16}\u069d\13}\5}\u069f\n}\3~\3~\3~\5~\u06a4") - buf.write("\n~\3~\7~\u06a7\n~\f~\16~\u06aa\13~\3~\3~\3\177\3\177") - buf.write("\3\u0080\3\u0080\7\u0080\u06b2\n\u0080\f\u0080\16\u0080") - buf.write("\u06b5\13\u0080\3\u0080\3\u0080\3\u0081\6\u0081\u06ba") - buf.write("\n\u0081\r\u0081\16\u0081\u06bb\3\u0082\3\u0082\3\u0082") - buf.write("\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082") - buf.write("\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\5\u0082") - buf.write("\u06ce\n\u0082\3\u0082\3\u0082\3\u0083\6\u0083\u06d3\n") - buf.write("\u0083\r\u0083\16\u0083\u06d4\3\u0083\3\u0083\2\2\u0084") - buf.write("\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31") - buf.write("\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31") - buf.write("\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O") - buf.write(")Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;") - buf.write("u{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008b") - buf.write("G\u008dH\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009b") - buf.write("\2\u009dO\u009fP\u00a1Q\u00a3R\u00a5S\u00a7T\u00a9U\u00ab") - buf.write("V\u00adW\u00afX\u00b1Y\u00b3Z\u00b5[\u00b7\\\u00b9]\u00bb") - buf.write("^\u00bd_\u00bf`\u00c1a\u00c3b\u00c5c\u00c7d\u00c9e\u00cb") - buf.write("f\u00cdg\u00cfh\u00d1i\u00d3j\u00d5k\u00d7l\u00d9m\u00db") - buf.write("n\u00ddo\u00dfp\u00e1q\u00e3\2\u00e5\2\u00e7\2\u00e9\2") - buf.write("\u00eb\2\u00ed\2\u00ef\2\u00f1\2\u00f3r\u00f5s\u00f7t") - buf.write("\u00f9u\u00fbv\u00fdw\u00ffx\u0101y\u0103z\u0105{\3\2") - buf.write("\r\4\2\"\"\62\62\4\2--//\5\2ffhhkk\4\2ggii\4\2FGfg\4\2") - buf.write("C\\c|\5\2\f\f\17\17))\4\2fikk\4\2\f\f\17\17\5\2\f\f\17") - buf.write("\17$$\4\2\13\13\"\"\2\u0744\2\3\3\2\2\2\2\5\3\2\2\2\2") - buf.write("\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3") - buf.write("\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2") - buf.write("\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2") - buf.write("\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2") - buf.write("\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63") - buf.write("\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2") - buf.write("\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2") - buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3") - buf.write("\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y") - buf.write("\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2") - buf.write("c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2") - buf.write("\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2") - buf.write("\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3") - buf.write("\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2") - buf.write("\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d") - buf.write("\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2") - buf.write("\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009d") - buf.write("\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2") - buf.write("\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab") - buf.write("\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2") - buf.write("\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9") - buf.write("\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf\3\2\2") - buf.write("\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7") - buf.write("\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2") - buf.write("\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5") - buf.write("\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db\3\2\2") - buf.write("\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00f3") - buf.write("\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2") - buf.write("\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2\2\2\u00ff\3\2\2\2\2\u0101") - buf.write("\3\2\2\2\2\u0103\3\2\2\2\2\u0105\3\2\2\2\3\u0115\3\2\2") - buf.write("\2\5\u0121\3\2\2\2\7\u0133\3\2\2\2\t\u013f\3\2\2\2\13") - buf.write("\u0155\3\2\2\2\r\u015d\3\2\2\2\17\u0171\3\2\2\2\21\u017b") - buf.write("\3\2\2\2\23\u0193\3\2\2\2\25\u01a1\3\2\2\2\27\u01b1\3") - buf.write("\2\2\2\31\u01c3\3\2\2\2\33\u01cd\3\2\2\2\35\u01e1\3\2") - buf.write("\2\2\37\u01f5\3\2\2\2!\u0207\3\2\2\2#\u021b\3\2\2\2%\u0225") - buf.write("\3\2\2\2\'\u022f\3\2\2\2)\u0235\3\2\2\2+\u023f\3\2\2\2") - buf.write("-\u0245\3\2\2\2/\u024f\3\2\2\2\61\u0259\3\2\2\2\63\u0265") - buf.write("\3\2\2\2\65\u0273\3\2\2\2\67\u0279\3\2\2\29\u028b\3\2") - buf.write("\2\2;\u0295\3\2\2\2=\u02a1\3\2\2\2?\u02ad\3\2\2\2A\u02b9") - buf.write("\3\2\2\2C\u02c3\3\2\2\2E\u02cf\3\2\2\2G\u02d9\3\2\2\2") - buf.write("I\u02e1\3\2\2\2K\u02eb\3\2\2\2M\u02f3\3\2\2\2O\u0301\3") - buf.write("\2\2\2Q\u030f\3\2\2\2S\u0317\3\2\2\2U\u0321\3\2\2\2W\u032f") - buf.write("\3\2\2\2Y\u033b\3\2\2\2[\u0349\3\2\2\2]\u0359\3\2\2\2") - buf.write("_\u036f\3\2\2\2a\u037b\3\2\2\2c\u0385\3\2\2\2e\u0393\3") - buf.write("\2\2\2g\u03a1\3\2\2\2i\u03b3\3\2\2\2k\u03bd\3\2\2\2m\u03c7") - buf.write("\3\2\2\2o\u03d3\3\2\2\2q\u03df\3\2\2\2s\u03ed\3\2\2\2") - buf.write("u\u03fb\3\2\2\2w\u0407\3\2\2\2y\u0411\3\2\2\2{\u0425\3") - buf.write("\2\2\2}\u043d\3\2\2\2\177\u044d\3\2\2\2\u0081\u045d\3") - buf.write("\2\2\2\u0083\u0471\3\2\2\2\u0085\u0481\3\2\2\2\u0087\u048f") - buf.write("\3\2\2\2\u0089\u0491\3\2\2\2\u008b\u0493\3\2\2\2\u008d") - buf.write("\u0495\3\2\2\2\u008f\u0497\3\2\2\2\u0091\u0499\3\2\2\2") - buf.write("\u0093\u049b\3\2\2\2\u0095\u049d\3\2\2\2\u0097\u049f\3") - buf.write("\2\2\2\u0099\u04a1\3\2\2\2\u009b\u04a3\3\2\2\2\u009d\u04a5") - buf.write("\3\2\2\2\u009f\u04b2\3\2\2\2\u00a1\u04be\3\2\2\2\u00a3") - buf.write("\u04c8\3\2\2\2\u00a5\u04d4\3\2\2\2\u00a7\u04e2\3\2\2\2") - buf.write("\u00a9\u04ee\3\2\2\2\u00ab\u04fa\3\2\2\2\u00ad\u0504\3") - buf.write("\2\2\2\u00af\u050e\3\2\2\2\u00b1\u0518\3\2\2\2\u00b3\u0522") - buf.write("\3\2\2\2\u00b5\u052c\3\2\2\2\u00b7\u0536\3\2\2\2\u00b9") - buf.write("\u0544\3\2\2\2\u00bb\u0554\3\2\2\2\u00bd\u0556\3\2\2\2") - buf.write("\u00bf\u055b\3\2\2\2\u00c1\u0560\3\2\2\2\u00c3\u0565\3") - buf.write("\2\2\2\u00c5\u056a\3\2\2\2\u00c7\u0574\3\2\2\2\u00c9\u057d") - buf.write("\3\2\2\2\u00cb\u0588\3\2\2\2\u00cd\u0590\3\2\2\2\u00cf") - buf.write("\u0593\3\2\2\2\u00d1\u05a3\3\2\2\2\u00d3\u05ab\3\2\2\2") - buf.write("\u00d5\u05af\3\2\2\2\u00d7\u05b9\3\2\2\2\u00d9\u05c3\3") - buf.write("\2\2\2\u00db\u05da\3\2\2\2\u00dd\u05ee\3\2\2\2\u00df\u05fe") - buf.write("\3\2\2\2\u00e1\u060e\3\2\2\2\u00e3\u0610\3\2\2\2\u00e5") - buf.write("\u0614\3\2\2\2\u00e7\u0618\3\2\2\2\u00e9\u061a\3\2\2\2") - buf.write("\u00eb\u063c\3\2\2\2\u00ed\u063e\3\2\2\2\u00ef\u0648\3") - buf.write("\2\2\2\u00f1\u064a\3\2\2\2\u00f3\u064c\3\2\2\2\u00f5\u0676") - buf.write("\3\2\2\2\u00f7\u0685\3\2\2\2\u00f9\u069e\3\2\2\2\u00fb") - buf.write("\u06a0\3\2\2\2\u00fd\u06ad\3\2\2\2\u00ff\u06af\3\2\2\2") - buf.write("\u0101\u06b9\3\2\2\2\u0103\u06cd\3\2\2\2\u0105\u06d2\3") - buf.write("\2\2\2\u0107\u0108\7r\2\2\u0108\u0109\7t\2\2\u0109\u010a") - buf.write("\7q\2\2\u010a\u010b\7i\2\2\u010b\u010c\7t\2\2\u010c\u010d") - buf.write("\7c\2\2\u010d\u0116\7o\2\2\u010e\u010f\7R\2\2\u010f\u0110") - buf.write("\7T\2\2\u0110\u0111\7Q\2\2\u0111\u0112\7I\2\2\u0112\u0113") - buf.write("\7T\2\2\u0113\u0114\7C\2\2\u0114\u0116\7O\2\2\u0115\u0107") - buf.write("\3\2\2\2\u0115\u010e\3\2\2\2\u0116\4\3\2\2\2\u0117\u0118") - buf.write("\7g\2\2\u0118\u0119\7p\2\2\u0119\u011a\7v\2\2\u011a\u011b") - buf.write("\7t\2\2\u011b\u0122\7{\2\2\u011c\u011d\7G\2\2\u011d\u011e") - buf.write("\7P\2\2\u011e\u011f\7V\2\2\u011f\u0120\7T\2\2\u0120\u0122") - buf.write("\7[\2\2\u0121\u0117\3\2\2\2\u0121\u011c\3\2\2\2\u0122") - buf.write("\6\3\2\2\2\u0123\u0124\7h\2\2\u0124\u0125\7w\2\2\u0125") - buf.write("\u0126\7p\2\2\u0126\u0127\7e\2\2\u0127\u0128\7v\2\2\u0128") - buf.write("\u0129\7k\2\2\u0129\u012a\7q\2\2\u012a\u0134\7p\2\2\u012b") - buf.write("\u012c\7H\2\2\u012c\u012d\7W\2\2\u012d\u012e\7P\2\2\u012e") - buf.write("\u012f\7E\2\2\u012f\u0130\7V\2\2\u0130\u0131\7K\2\2\u0131") - buf.write("\u0132\7Q\2\2\u0132\u0134\7P\2\2\u0133\u0123\3\2\2\2\u0133") - buf.write("\u012b\3\2\2\2\u0134\b\3\2\2\2\u0135\u0136\7d\2\2\u0136") - buf.write("\u0137\7n\2\2\u0137\u0138\7q\2\2\u0138\u0139\7e\2\2\u0139") - buf.write("\u0140\7m\2\2\u013a\u013b\7D\2\2\u013b\u013c\7N\2\2\u013c") - buf.write("\u013d\7Q\2\2\u013d\u013e\7E\2\2\u013e\u0140\7M\2\2\u013f") - buf.write("\u0135\3\2\2\2\u013f\u013a\3\2\2\2\u0140\n\3\2\2\2\u0141") - buf.write("\u0142\7u\2\2\u0142\u0143\7w\2\2\u0143\u0144\7d\2\2\u0144") - buf.write("\u0145\7t\2\2\u0145\u0146\7q\2\2\u0146\u0147\7w\2\2\u0147") - buf.write("\u0148\7v\2\2\u0148\u0149\7k\2\2\u0149\u014a\7p\2\2\u014a") - buf.write("\u0156\7g\2\2\u014b\u014c\7U\2\2\u014c\u014d\7W\2\2\u014d") - buf.write("\u014e\7D\2\2\u014e\u014f\7T\2\2\u014f\u0150\7Q\2\2\u0150") - buf.write("\u0151\7W\2\2\u0151\u0152\7V\2\2\u0152\u0153\7K\2\2\u0153") - buf.write("\u0154\7P\2\2\u0154\u0156\7G\2\2\u0155\u0141\3\2\2\2\u0155") - buf.write("\u014b\3\2\2\2\u0156\f\3\2\2\2\u0157\u0158\7G\2\2\u0158") - buf.write("\u0159\7P\2\2\u0159\u015e\7F\2\2\u015a\u015b\7g\2\2\u015b") - buf.write("\u015c\7p\2\2\u015c\u015e\7f\2\2\u015d\u0157\3\2\2\2\u015d") - buf.write("\u015a\3\2\2\2\u015e\16\3\2\2\2\u015f\u0160\7f\2\2\u0160") - buf.write("\u0161\7k\2\2\u0161\u0162\7o\2\2\u0162\u0163\7g\2\2\u0163") - buf.write("\u0164\7p\2\2\u0164\u0165\7u\2\2\u0165\u0166\7k\2\2\u0166") - buf.write("\u0167\7q\2\2\u0167\u0172\7p\2\2\u0168\u0169\7F\2\2\u0169") - buf.write("\u016a\7K\2\2\u016a\u016b\7O\2\2\u016b\u016c\7G\2\2\u016c") - buf.write("\u016d\7P\2\2\u016d\u016e\7U\2\2\u016e\u016f\7K\2\2\u016f") - buf.write("\u0170\7Q\2\2\u0170\u0172\7P\2\2\u0171\u015f\3\2\2\2\u0171") - buf.write("\u0168\3\2\2\2\u0172\20\3\2\2\2\u0173\u0174\7T\2\2\u0174") - buf.write("\u0175\7G\2\2\u0175\u0176\7C\2\2\u0176\u017c\7N\2\2\u0177") - buf.write("\u0178\7t\2\2\u0178\u0179\7g\2\2\u0179\u017a\7c\2\2\u017a") - buf.write("\u017c\7n\2\2\u017b\u0173\3\2\2\2\u017b\u0177\3\2\2\2") - buf.write("\u017c\22\3\2\2\2\u017d\u017e\7G\2\2\u017e\u017f\7S\2") - buf.write("\2\u017f\u0180\7W\2\2\u0180\u0181\7K\2\2\u0181\u0182\7") - buf.write("X\2\2\u0182\u0183\7C\2\2\u0183\u0184\7N\2\2\u0184\u0185") - buf.write("\7G\2\2\u0185\u0186\7P\2\2\u0186\u0187\7E\2\2\u0187\u0194") - buf.write("\7G\2\2\u0188\u0189\7g\2\2\u0189\u018a\7s\2\2\u018a\u018b") - buf.write("\7w\2\2\u018b\u018c\7k\2\2\u018c\u018d\7x\2\2\u018d\u018e") - buf.write("\7c\2\2\u018e\u018f\7n\2\2\u018f\u0190\7g\2\2\u0190\u0191") - buf.write("\7p\2\2\u0191\u0192\7e\2\2\u0192\u0194\7g\2\2\u0193\u017d") - buf.write("\3\2\2\2\u0193\u0188\3\2\2\2\u0194\24\3\2\2\2\u0195\u0196") - buf.write("\7e\2\2\u0196\u0197\7q\2\2\u0197\u0198\7o\2\2\u0198\u0199") - buf.write("\7o\2\2\u0199\u019a\7q\2\2\u019a\u01a2\7p\2\2\u019b\u019c") - buf.write("\7E\2\2\u019c\u019d\7Q\2\2\u019d\u019e\7O\2\2\u019e\u019f") - buf.write("\7O\2\2\u019f\u01a0\7Q\2\2\u01a0\u01a2\7P\2\2\u01a1\u0195") - buf.write("\3\2\2\2\u01a1\u019b\3\2\2\2\u01a2\26\3\2\2\2\u01a3\u01a4") - buf.write("\7r\2\2\u01a4\u01a5\7q\2\2\u01a5\u01a6\7k\2\2\u01a6\u01a7") - buf.write("\7p\2\2\u01a7\u01a8\7v\2\2\u01a8\u01a9\7g\2\2\u01a9\u01b2") - buf.write("\7t\2\2\u01aa\u01ab\7R\2\2\u01ab\u01ac\7Q\2\2\u01ac\u01ad") - buf.write("\7K\2\2\u01ad\u01ae\7P\2\2\u01ae\u01af\7V\2\2\u01af\u01b0") - buf.write("\7G\2\2\u01b0\u01b2\7T\2\2\u01b1\u01a3\3\2\2\2\u01b1\u01aa") - buf.write("\3\2\2\2\u01b2\30\3\2\2\2\u01b3\u01b4\7k\2\2\u01b4\u01b5") - buf.write("\7o\2\2\u01b5\u01b6\7r\2\2\u01b6\u01b7\7n\2\2\u01b7\u01b8") - buf.write("\7k\2\2\u01b8\u01b9\7e\2\2\u01b9\u01ba\7k\2\2\u01ba\u01c4") - buf.write("\7v\2\2\u01bb\u01bc\7K\2\2\u01bc\u01bd\7O\2\2\u01bd\u01be") - buf.write("\7R\2\2\u01be\u01bf\7N\2\2\u01bf\u01c0\7K\2\2\u01c0\u01c1") - buf.write("\7E\2\2\u01c1\u01c2\7K\2\2\u01c2\u01c4\7V\2\2\u01c3\u01b3") - buf.write("\3\2\2\2\u01c3\u01bb\3\2\2\2\u01c4\32\3\2\2\2\u01c5\u01c6") - buf.write("\7p\2\2\u01c6\u01c7\7q\2\2\u01c7\u01c8\7p\2\2\u01c8\u01ce") - buf.write("\7g\2\2\u01c9\u01ca\7P\2\2\u01ca\u01cb\7Q\2\2\u01cb\u01cc") - buf.write("\7P\2\2\u01cc\u01ce\7G\2\2\u01cd\u01c5\3\2\2\2\u01cd\u01c9") - buf.write("\3\2\2\2\u01ce\34\3\2\2\2\u01cf\u01d0\7e\2\2\u01d0\u01d1") - buf.write("\7j\2\2\u01d1\u01d2\7c\2\2\u01d2\u01d3\7t\2\2\u01d3\u01d4") - buf.write("\7c\2\2\u01d4\u01d5\7e\2\2\u01d5\u01d6\7v\2\2\u01d6\u01d7") - buf.write("\7g\2\2\u01d7\u01e2\7t\2\2\u01d8\u01d9\7E\2\2\u01d9\u01da") - buf.write("\7J\2\2\u01da\u01db\7C\2\2\u01db\u01dc\7T\2\2\u01dc\u01dd") - buf.write("\7C\2\2\u01dd\u01de\7E\2\2\u01de\u01df\7V\2\2\u01df\u01e0") - buf.write("\7G\2\2\u01e0\u01e2\7T\2\2\u01e1\u01cf\3\2\2\2\u01e1\u01d8") - buf.write("\3\2\2\2\u01e2\36\3\2\2\2\u01e3\u01e4\7r\2\2\u01e4\u01e5") - buf.write("\7c\2\2\u01e5\u01e6\7t\2\2\u01e6\u01e7\7c\2\2\u01e7\u01e8") - buf.write("\7o\2\2\u01e8\u01e9\7g\2\2\u01e9\u01ea\7v\2\2\u01ea\u01eb") - buf.write("\7g\2\2\u01eb\u01f6\7t\2\2\u01ec\u01ed\7R\2\2\u01ed\u01ee") - buf.write("\7C\2\2\u01ee\u01ef\7T\2\2\u01ef\u01f0\7C\2\2\u01f0\u01f1") - buf.write("\7O\2\2\u01f1\u01f2\7G\2\2\u01f2\u01f3\7V\2\2\u01f3\u01f4") - buf.write("\7G\2\2\u01f4\u01f6\7T\2\2\u01f5\u01e3\3\2\2\2\u01f5\u01ec") - buf.write("\3\2\2\2\u01f6 \3\2\2\2\u01f7\u01f8\7g\2\2\u01f8\u01f9") - buf.write("\7z\2\2\u01f9\u01fa\7v\2\2\u01fa\u01fb\7g\2\2\u01fb\u01fc") - buf.write("\7t\2\2\u01fc\u01fd\7p\2\2\u01fd\u01fe\7c\2\2\u01fe\u0208") - buf.write("\7n\2\2\u01ff\u0200\7G\2\2\u0200\u0201\7Z\2\2\u0201\u0202") - buf.write("\7V\2\2\u0202\u0203\7G\2\2\u0203\u0204\7T\2\2\u0204\u0205") - buf.write("\7P\2\2\u0205\u0206\7C\2\2\u0206\u0208\7N\2\2\u0207\u01f7") - buf.write("\3\2\2\2\u0207\u01ff\3\2\2\2\u0208\"\3\2\2\2\u0209\u020a") - buf.write("\7k\2\2\u020a\u020b\7p\2\2\u020b\u020c\7v\2\2\u020c\u020d") - buf.write("\7t\2\2\u020d\u020e\7k\2\2\u020e\u020f\7p\2\2\u020f\u0210") - buf.write("\7u\2\2\u0210\u0211\7k\2\2\u0211\u021c\7e\2\2\u0212\u0213") - buf.write("\7K\2\2\u0213\u0214\7P\2\2\u0214\u0215\7V\2\2\u0215\u0216") - buf.write("\7T\2\2\u0216\u0217\7K\2\2\u0217\u0218\7P\2\2\u0218\u0219") - buf.write("\7U\2\2\u0219\u021a\7K\2\2\u021a\u021c\7E\2\2\u021b\u0209") - buf.write("\3\2\2\2\u021b\u0212\3\2\2\2\u021c$\3\2\2\2\u021d\u021e") - buf.write("\7u\2\2\u021e\u021f\7c\2\2\u021f\u0220\7x\2\2\u0220\u0226") - buf.write("\7g\2\2\u0221\u0222\7U\2\2\u0222\u0223\7C\2\2\u0223\u0224") - buf.write("\7X\2\2\u0224\u0226\7G\2\2\u0225\u021d\3\2\2\2\u0225\u0221") - buf.write("\3\2\2\2\u0226&\3\2\2\2\u0227\u0228\7f\2\2\u0228\u0229") - buf.write("\7c\2\2\u0229\u022a\7v\2\2\u022a\u0230\7c\2\2\u022b\u022c") - buf.write("\7F\2\2\u022c\u022d\7C\2\2\u022d\u022e\7V\2\2\u022e\u0230") - buf.write("\7C\2\2\u022f\u0227\3\2\2\2\u022f\u022b\3\2\2\2\u0230") - buf.write("(\3\2\2\2\u0231\u0232\7I\2\2\u0232\u0236\7Q\2\2\u0233") - buf.write("\u0234\7i\2\2\u0234\u0236\7q\2\2\u0235\u0231\3\2\2\2\u0235") - buf.write("\u0233\3\2\2\2\u0236*\3\2\2\2\u0237\u0238\7I\2\2\u0238") - buf.write("\u0239\7Q\2\2\u0239\u023a\7V\2\2\u023a\u0240\7Q\2\2\u023b") - buf.write("\u023c\7i\2\2\u023c\u023d\7q\2\2\u023d\u023e\7v\2\2\u023e") - buf.write("\u0240\7q\2\2\u023f\u0237\3\2\2\2\u023f\u023b\3\2\2\2") - buf.write("\u0240,\3\2\2\2\u0241\u0242\7K\2\2\u0242\u0246\7H\2\2") - buf.write("\u0243\u0244\7k\2\2\u0244\u0246\7h\2\2\u0245\u0241\3\2") - buf.write("\2\2\u0245\u0243\3\2\2\2\u0246.\3\2\2\2\u0247\u0248\7") - buf.write("V\2\2\u0248\u0249\7J\2\2\u0249\u024a\7G\2\2\u024a\u0250") - buf.write("\7P\2\2\u024b\u024c\7v\2\2\u024c\u024d\7j\2\2\u024d\u024e") - buf.write("\7g\2\2\u024e\u0250\7p\2\2\u024f\u0247\3\2\2\2\u024f\u024b") - buf.write("\3\2\2\2\u0250\60\3\2\2\2\u0251\u0252\7G\2\2\u0252\u0253") - buf.write("\7N\2\2\u0253\u0254\7U\2\2\u0254\u025a\7G\2\2\u0255\u0256") - buf.write("\7g\2\2\u0256\u0257\7n\2\2\u0257\u0258\7u\2\2\u0258\u025a") - buf.write("\7g\2\2\u0259\u0251\3\2\2\2\u0259\u0255\3\2\2\2\u025a") - buf.write("\62\3\2\2\2\u025b\u025c\7G\2\2\u025c\u025d\7P\2\2\u025d") - buf.write("\u025e\7F\2\2\u025e\u025f\7K\2\2\u025f\u0266\7H\2\2\u0260") - buf.write("\u0261\7g\2\2\u0261\u0262\7p\2\2\u0262\u0263\7f\2\2\u0263") - buf.write("\u0264\7k\2\2\u0264\u0266\7h\2\2\u0265\u025b\3\2\2\2\u0265") - buf.write("\u0260\3\2\2\2\u0266\64\3\2\2\2\u0267\u0268\7G\2\2\u0268") - buf.write("\u0269\7N\2\2\u0269\u026a\7U\2\2\u026a\u026b\7G\2\2\u026b") - buf.write("\u026c\7K\2\2\u026c\u0274\7H\2\2\u026d\u026e\7g\2\2\u026e") - buf.write("\u026f\7n\2\2\u026f\u0270\7u\2\2\u0270\u0271\7g\2\2\u0271") - buf.write("\u0272\7k\2\2\u0272\u0274\7h\2\2\u0273\u0267\3\2\2\2\u0273") - buf.write("\u026d\3\2\2\2\u0274\66\3\2\2\2\u0275\u0276\7F\2\2\u0276") - buf.write("\u027a\7Q\2\2\u0277\u0278\7f\2\2\u0278\u027a\7q\2\2\u0279") - buf.write("\u0275\3\2\2\2\u0279\u0277\3\2\2\2\u027a8\3\2\2\2\u027b") - buf.write("\u027c\7E\2\2\u027c\u027d\7Q\2\2\u027d\u027e\7P\2\2\u027e") - buf.write("\u027f\7V\2\2\u027f\u0280\7K\2\2\u0280\u0281\7P\2\2\u0281") - buf.write("\u0282\7W\2\2\u0282\u028c\7G\2\2\u0283\u0284\7e\2\2\u0284") - buf.write("\u0285\7q\2\2\u0285\u0286\7p\2\2\u0286\u0287\7v\2\2\u0287") - buf.write("\u0288\7k\2\2\u0288\u0289\7p\2\2\u0289\u028a\7w\2\2\u028a") - buf.write("\u028c\7g\2\2\u028b\u027b\3\2\2\2\u028b\u0283\3\2\2\2") - buf.write("\u028c:\3\2\2\2\u028d\u028e\7U\2\2\u028e\u028f\7V\2\2") - buf.write("\u028f\u0290\7Q\2\2\u0290\u0296\7R\2\2\u0291\u0292\7u") - buf.write("\2\2\u0292\u0293\7v\2\2\u0293\u0294\7q\2\2\u0294\u0296") - buf.write("\7r\2\2\u0295\u028d\3\2\2\2\u0295\u0291\3\2\2\2\u0296") - buf.write("<\3\2\2\2\u0297\u0298\7G\2\2\u0298\u0299\7P\2\2\u0299") - buf.write("\u029a\7F\2\2\u029a\u029b\7F\2\2\u029b\u02a2\7Q\2\2\u029c") - buf.write("\u029d\7g\2\2\u029d\u029e\7p\2\2\u029e\u029f\7f\2\2\u029f") - buf.write("\u02a0\7f\2\2\u02a0\u02a2\7q\2\2\u02a1\u0297\3\2\2\2\u02a1") - buf.write("\u029c\3\2\2\2\u02a2>\3\2\2\2\u02a3\u02a4\7r\2\2\u02a4") - buf.write("\u02a5\7c\2\2\u02a5\u02a6\7w\2\2\u02a6\u02a7\7u\2\2\u02a7") - buf.write("\u02ae\7g\2\2\u02a8\u02a9\7R\2\2\u02a9\u02aa\7C\2\2\u02aa") - buf.write("\u02ab\7W\2\2\u02ab\u02ac\7U\2\2\u02ac\u02ae\7G\2\2\u02ad") - buf.write("\u02a3\3\2\2\2\u02ad\u02a8\3\2\2\2\u02ae@\3\2\2\2\u02af") - buf.write("\u02b0\7Y\2\2\u02b0\u02b1\7T\2\2\u02b1\u02b2\7K\2\2\u02b2") - buf.write("\u02b3\7V\2\2\u02b3\u02ba\7G\2\2\u02b4\u02b5\7y\2\2\u02b5") - buf.write("\u02b6\7t\2\2\u02b6\u02b7\7k\2\2\u02b7\u02b8\7v\2\2\u02b8") - buf.write("\u02ba\7g\2\2\u02b9\u02af\3\2\2\2\u02b9\u02b4\3\2\2\2") - buf.write("\u02baB\3\2\2\2\u02bb\u02bc\7T\2\2\u02bc\u02bd\7G\2\2") - buf.write("\u02bd\u02be\7C\2\2\u02be\u02c4\7F\2\2\u02bf\u02c0\7t") - buf.write("\2\2\u02c0\u02c1\7g\2\2\u02c1\u02c2\7c\2\2\u02c2\u02c4") - buf.write("\7f\2\2\u02c3\u02bb\3\2\2\2\u02c3\u02bf\3\2\2\2\u02c4") - buf.write("D\3\2\2\2\u02c5\u02c6\7R\2\2\u02c6\u02c7\7T\2\2\u02c7") - buf.write("\u02c8\7K\2\2\u02c8\u02c9\7P\2\2\u02c9\u02d0\7V\2\2\u02ca") - buf.write("\u02cb\7r\2\2\u02cb\u02cc\7t\2\2\u02cc\u02cd\7k\2\2\u02cd") - buf.write("\u02ce\7p\2\2\u02ce\u02d0\7v\2\2\u02cf\u02c5\3\2\2\2\u02cf") - buf.write("\u02ca\3\2\2\2\u02d0F\3\2\2\2\u02d1\u02d2\7Q\2\2\u02d2") - buf.write("\u02d3\7R\2\2\u02d3\u02d4\7G\2\2\u02d4\u02da\7P\2\2\u02d5") - buf.write("\u02d6\7q\2\2\u02d6\u02d7\7r\2\2\u02d7\u02d8\7g\2\2\u02d8") - buf.write("\u02da\7p\2\2\u02d9\u02d1\3\2\2\2\u02d9\u02d5\3\2\2\2") - buf.write("\u02daH\3\2\2\2\u02db\u02dc\7H\2\2\u02dc\u02dd\7O\2\2") - buf.write("\u02dd\u02e2\7V\2\2\u02de\u02df\7h\2\2\u02df\u02e0\7o") - buf.write("\2\2\u02e0\u02e2\7v\2\2\u02e1\u02db\3\2\2\2\u02e1\u02de") - buf.write("\3\2\2\2\u02e2J\3\2\2\2\u02e3\u02e4\7W\2\2\u02e4\u02e5") - buf.write("\7P\2\2\u02e5\u02e6\7K\2\2\u02e6\u02ec\7V\2\2\u02e7\u02e8") - buf.write("\7w\2\2\u02e8\u02e9\7p\2\2\u02e9\u02ea\7k\2\2\u02ea\u02ec") - buf.write("\7v\2\2\u02eb\u02e3\3\2\2\2\u02eb\u02e7\3\2\2\2\u02ec") - buf.write("L\3\2\2\2\u02ed\u02ee\7g\2\2\u02ee\u02ef\7t\2\2\u02ef") - buf.write("\u02f4\7t\2\2\u02f0\u02f1\7G\2\2\u02f1\u02f2\7T\2\2\u02f2") - buf.write("\u02f4\7T\2\2\u02f3\u02ed\3\2\2\2\u02f3\u02f0\3\2\2\2") - buf.write("\u02f4N\3\2\2\2\u02f5\u02f6\7K\2\2\u02f6\u02f7\7Q\2\2") - buf.write("\u02f7\u02f8\7U\2\2\u02f8\u02f9\7V\2\2\u02f9\u02fa\7C") - buf.write("\2\2\u02fa\u0302\7V\2\2\u02fb\u02fc\7k\2\2\u02fc\u02fd") - buf.write("\7q\2\2\u02fd\u02fe\7u\2\2\u02fe\u02ff\7v\2\2\u02ff\u0300") - buf.write("\7c\2\2\u0300\u0302\7v\2\2\u0301\u02f5\3\2\2\2\u0301\u02fb") - buf.write("\3\2\2\2\u0302P\3\2\2\2\u0303\u0304\7H\2\2\u0304\u0305") - buf.write("\7Q\2\2\u0305\u0306\7T\2\2\u0306\u0307\7O\2\2\u0307\u0308") - buf.write("\7C\2\2\u0308\u0310\7V\2\2\u0309\u030a\7h\2\2\u030a\u030b") - buf.write("\7q\2\2\u030b\u030c\7t\2\2\u030c\u030d\7o\2\2\u030d\u030e") - buf.write("\7c\2\2\u030e\u0310\7v\2\2\u030f\u0303\3\2\2\2\u030f\u0309") - buf.write("\3\2\2\2\u0310R\3\2\2\2\u0311\u0312\7N\2\2\u0312\u0313") - buf.write("\7G\2\2\u0313\u0318\7V\2\2\u0314\u0315\7n\2\2\u0315\u0316") - buf.write("\7g\2\2\u0316\u0318\7v\2\2\u0317\u0311\3\2\2\2\u0317\u0314") - buf.write("\3\2\2\2\u0318T\3\2\2\2\u0319\u031a\7E\2\2\u031a\u031b") - buf.write("\7C\2\2\u031b\u031c\7N\2\2\u031c\u0322\7N\2\2\u031d\u031e") - buf.write("\7e\2\2\u031e\u031f\7c\2\2\u031f\u0320\7n\2\2\u0320\u0322") - buf.write("\7n\2\2\u0321\u0319\3\2\2\2\u0321\u031d\3\2\2\2\u0322") - buf.write("V\3\2\2\2\u0323\u0324\7T\2\2\u0324\u0325\7G\2\2\u0325") - buf.write("\u0326\7V\2\2\u0326\u0327\7W\2\2\u0327\u0328\7T\2\2\u0328") - buf.write("\u0330\7P\2\2\u0329\u032a\7t\2\2\u032a\u032b\7g\2\2\u032b") - buf.write("\u032c\7v\2\2\u032c\u032d\7w\2\2\u032d\u032e\7t\2\2\u032e") - buf.write("\u0330\7p\2\2\u032f\u0323\3\2\2\2\u032f\u0329\3\2\2\2") - buf.write("\u0330X\3\2\2\2\u0331\u0332\7E\2\2\u0332\u0333\7N\2\2") - buf.write("\u0333\u0334\7Q\2\2\u0334\u0335\7U\2\2\u0335\u033c\7G") - buf.write("\2\2\u0336\u0337\7e\2\2\u0337\u0338\7n\2\2\u0338\u0339") - buf.write("\7q\2\2\u0339\u033a\7u\2\2\u033a\u033c\7g\2\2\u033b\u0331") - buf.write("\3\2\2\2\u033b\u0336\3\2\2\2\u033cZ\3\2\2\2\u033d\u033e") - buf.write("\7F\2\2\u033e\u033f\7Q\2\2\u033f\u0340\7W\2\2\u0340\u0341") - buf.write("\7D\2\2\u0341\u0342\7N\2\2\u0342\u034a\7G\2\2\u0343\u0344") - buf.write("\7f\2\2\u0344\u0345\7q\2\2\u0345\u0346\7w\2\2\u0346\u0347") - buf.write("\7d\2\2\u0347\u0348\7n\2\2\u0348\u034a\7g\2\2\u0349\u033d") - buf.write("\3\2\2\2\u0349\u0343\3\2\2\2\u034a\\\3\2\2\2\u034b\u034c") - buf.write("\7K\2\2\u034c\u034d\7Q\2\2\u034d\u034e\7U\2\2\u034e\u034f") - buf.write("\7V\2\2\u034f\u0350\7C\2\2\u0350\u0351\7T\2\2\u0351\u035a") - buf.write("\7V\2\2\u0352\u0353\7k\2\2\u0353\u0354\7q\2\2\u0354\u0355") - buf.write("\7u\2\2\u0355\u0356\7v\2\2\u0356\u0357\7c\2\2\u0357\u0358") - buf.write("\7t\2\2\u0358\u035a\7v\2\2\u0359\u034b\3\2\2\2\u0359\u0352") - buf.write("\3\2\2\2\u035a^\3\2\2\2\u035b\u035c\7U\2\2\u035c\u035d") - buf.write("\7G\2\2\u035d\u035e\7S\2\2\u035e\u035f\7W\2\2\u035f\u0360") - buf.write("\7G\2\2\u0360\u0361\7P\2\2\u0361\u0362\7V\2\2\u0362\u0363") - buf.write("\7K\2\2\u0363\u0364\7C\2\2\u0364\u0370\7N\2\2\u0365\u0366") - buf.write("\7u\2\2\u0366\u0367\7g\2\2\u0367\u0368\7s\2\2\u0368\u0369") - buf.write("\7w\2\2\u0369\u036a\7g\2\2\u036a\u036b\7p\2\2\u036b\u036c") - buf.write("\7v\2\2\u036c\u036d\7k\2\2\u036d\u036e\7c\2\2\u036e\u0370") - buf.write("\7n\2\2\u036f\u035b\3\2\2\2\u036f\u0365\3\2\2\2\u0370") - buf.write("`\3\2\2\2\u0371\u0372\7N\2\2\u0372\u0373\7C\2\2\u0373") - buf.write("\u0374\7D\2\2\u0374\u0375\7G\2\2\u0375\u037c\7N\2\2\u0376") - buf.write("\u0377\7n\2\2\u0377\u0378\7c\2\2\u0378\u0379\7d\2\2\u0379") - buf.write("\u037a\7g\2\2\u037a\u037c\7n\2\2\u037b\u0371\3\2\2\2\u037b") - buf.write("\u0376\3\2\2\2\u037cb\3\2\2\2\u037d\u037e\7h\2\2\u037e") - buf.write("\u037f\7k\2\2\u037f\u0380\7n\2\2\u0380\u0386\7g\2\2\u0381") - buf.write("\u0382\7H\2\2\u0382\u0383\7K\2\2\u0383\u0384\7N\2\2\u0384") - buf.write("\u0386\7G\2\2\u0385\u037d\3\2\2\2\u0385\u0381\3\2\2\2") - buf.write("\u0386d\3\2\2\2\u0387\u0388\7U\2\2\u0388\u0389\7V\2\2") - buf.write("\u0389\u038a\7C\2\2\u038a\u038b\7V\2\2\u038b\u038c\7W") - buf.write("\2\2\u038c\u0394\7U\2\2\u038d\u038e\7u\2\2\u038e\u038f") - buf.write("\7v\2\2\u038f\u0390\7c\2\2\u0390\u0391\7v\2\2\u0391\u0392") - buf.write("\7w\2\2\u0392\u0394\7u\2\2\u0393\u0387\3\2\2\2\u0393\u038d") - buf.write("\3\2\2\2\u0394f\3\2\2\2\u0395\u0396\7C\2\2\u0396\u0397") - buf.write("\7E\2\2\u0397\u0398\7E\2\2\u0398\u0399\7G\2\2\u0399\u039a") - buf.write("\7U\2\2\u039a\u03a2\7U\2\2\u039b\u039c\7c\2\2\u039c\u039d") - buf.write("\7e\2\2\u039d\u039e\7e\2\2\u039e\u039f\7g\2\2\u039f\u03a0") - buf.write("\7u\2\2\u03a0\u03a2\7u\2\2\u03a1\u0395\3\2\2\2\u03a1\u039b") - buf.write("\3\2\2\2\u03a2h\3\2\2\2\u03a3\u03a4\7R\2\2\u03a4\u03a5") - buf.write("\7Q\2\2\u03a5\u03a6\7U\2\2\u03a6\u03a7\7K\2\2\u03a7\u03a8") - buf.write("\7V\2\2\u03a8\u03a9\7K\2\2\u03a9\u03aa\7Q\2\2\u03aa\u03b4") - buf.write("\7P\2\2\u03ab\u03ac\7r\2\2\u03ac\u03ad\7q\2\2\u03ad\u03ae") - buf.write("\7u\2\2\u03ae\u03af\7k\2\2\u03af\u03b0\7v\2\2\u03b0\u03b1") - buf.write("\7k\2\2\u03b1\u03b2\7q\2\2\u03b2\u03b4\7p\2\2\u03b3\u03a3") - buf.write("\3\2\2\2\u03b3\u03ab\3\2\2\2\u03b4j\3\2\2\2\u03b5\u03b6") - buf.write("\7H\2\2\u03b6\u03b7\7Q\2\2\u03b7\u03b8\7T\2\2\u03b8\u03be") - buf.write("\7O\2\2\u03b9\u03ba\7h\2\2\u03ba\u03bb\7q\2\2\u03bb\u03bc") - buf.write("\7t\2\2\u03bc\u03be\7o\2\2\u03bd\u03b5\3\2\2\2\u03bd\u03b9") - buf.write("\3\2\2\2\u03bel\3\2\2\2\u03bf\u03c0\7T\2\2\u03c0\u03c1") - buf.write("\7G\2\2\u03c1\u03c2\7E\2\2\u03c2\u03c8\7N\2\2\u03c3\u03c4") - buf.write("\7t\2\2\u03c4\u03c5\7g\2\2\u03c5\u03c6\7e\2\2\u03c6\u03c8") - buf.write("\7n\2\2\u03c7\u03bf\3\2\2\2\u03c7\u03c3\3\2\2\2\u03c8") - buf.write("n\3\2\2\2\u03c9\u03ca\7D\2\2\u03ca\u03cb\7N\2\2\u03cb") - buf.write("\u03cc\7C\2\2\u03cc\u03cd\7P\2\2\u03cd\u03d4\7M\2\2\u03ce") - buf.write("\u03cf\7d\2\2\u03cf\u03d0\7n\2\2\u03d0\u03d1\7c\2\2\u03d1") - buf.write("\u03d2\7p\2\2\u03d2\u03d4\7m\2\2\u03d3\u03c9\3\2\2\2\u03d3") - buf.write("\u03ce\3\2\2\2\u03d4p\3\2\2\2\u03d5\u03d6\7G\2\2\u03d6") - buf.write("\u03d7\7Z\2\2\u03d7\u03d8\7K\2\2\u03d8\u03d9\7U\2\2\u03d9") - buf.write("\u03e0\7V\2\2\u03da\u03db\7g\2\2\u03db\u03dc\7z\2\2\u03dc") - buf.write("\u03dd\7k\2\2\u03dd\u03de\7u\2\2\u03de\u03e0\7v\2\2\u03df") - buf.write("\u03d5\3\2\2\2\u03df\u03da\3\2\2\2\u03e0r\3\2\2\2\u03e1") - buf.write("\u03e2\7Q\2\2\u03e2\u03e3\7R\2\2\u03e3\u03e4\7G\2\2\u03e4") - buf.write("\u03e5\7P\2\2\u03e5\u03e6\7G\2\2\u03e6\u03ee\7F\2\2\u03e7") - buf.write("\u03e8\7q\2\2\u03e8\u03e9\7r\2\2\u03e9\u03ea\7g\2\2\u03ea") - buf.write("\u03eb\7p\2\2\u03eb\u03ec\7g\2\2\u03ec\u03ee\7f\2\2\u03ed") - buf.write("\u03e1\3\2\2\2\u03ed\u03e7\3\2\2\2\u03eet\3\2\2\2\u03ef") - buf.write("\u03f0\7P\2\2\u03f0\u03f1\7W\2\2\u03f1\u03f2\7O\2\2\u03f2") - buf.write("\u03f3\7D\2\2\u03f3\u03f4\7G\2\2\u03f4\u03fc\7T\2\2\u03f5") - buf.write("\u03f6\7p\2\2\u03f6\u03f7\7w\2\2\u03f7\u03f8\7o\2\2\u03f8") - buf.write("\u03f9\7d\2\2\u03f9\u03fa\7g\2\2\u03fa\u03fc\7t\2\2\u03fb") - buf.write("\u03ef\3\2\2\2\u03fb\u03f5\3\2\2\2\u03fcv\3\2\2\2\u03fd") - buf.write("\u03fe\7P\2\2\u03fe\u03ff\7C\2\2\u03ff\u0400\7O\2\2\u0400") - buf.write("\u0401\7G\2\2\u0401\u0408\7F\2\2\u0402\u0403\7p\2\2\u0403") - buf.write("\u0404\7c\2\2\u0404\u0405\7o\2\2\u0405\u0406\7g\2\2\u0406") - buf.write("\u0408\7f\2\2\u0407\u03fd\3\2\2\2\u0407\u0402\3\2\2\2") - buf.write("\u0408x\3\2\2\2\u0409\u040a\7P\2\2\u040a\u040b\7C\2\2") - buf.write("\u040b\u040c\7O\2\2\u040c\u0412\7G\2\2\u040d\u040e\7p") - buf.write("\2\2\u040e\u040f\7c\2\2\u040f\u0410\7o\2\2\u0410\u0412") - buf.write("\7g\2\2\u0411\u0409\3\2\2\2\u0411\u040d\3\2\2\2\u0412") - buf.write("z\3\2\2\2\u0413\u0414\7H\2\2\u0414\u0415\7Q\2\2\u0415") - buf.write("\u0416\7T\2\2\u0416\u0417\7O\2\2\u0417\u0418\7C\2\2\u0418") - buf.write("\u0419\7V\2\2\u0419\u041a\7V\2\2\u041a\u041b\7G\2\2\u041b") - buf.write("\u0426\7F\2\2\u041c\u041d\7h\2\2\u041d\u041e\7q\2\2\u041e") - buf.write("\u041f\7t\2\2\u041f\u0420\7o\2\2\u0420\u0421\7c\2\2\u0421") - buf.write("\u0422\7v\2\2\u0422\u0423\7v\2\2\u0423\u0424\7g\2\2\u0424") - buf.write("\u0426\7f\2\2\u0425\u0413\3\2\2\2\u0425\u041c\3\2\2\2") - buf.write("\u0426|\3\2\2\2\u0427\u0428\7W\2\2\u0428\u0429\7P\2\2") - buf.write("\u0429\u042a\7H\2\2\u042a\u042b\7Q\2\2\u042b\u042c\7T") - buf.write("\2\2\u042c\u042d\7O\2\2\u042d\u042e\7C\2\2\u042e\u042f") - buf.write("\7V\2\2\u042f\u0430\7V\2\2\u0430\u0431\7G\2\2\u0431\u043e") - buf.write("\7F\2\2\u0432\u0433\7w\2\2\u0433\u0434\7p\2\2\u0434\u0435") - buf.write("\7h\2\2\u0435\u0436\7q\2\2\u0436\u0437\7t\2\2\u0437\u0438") - buf.write("\7o\2\2\u0438\u0439\7c\2\2\u0439\u043a\7v\2\2\u043a\u043b") - buf.write("\7v\2\2\u043b\u043c\7g\2\2\u043c\u043e\7f\2\2\u043d\u0427") - buf.write("\3\2\2\2\u043d\u0432\3\2\2\2\u043e~\3\2\2\2\u043f\u0440") - buf.write("\7P\2\2\u0440\u0441\7G\2\2\u0441\u0442\7Z\2\2\u0442\u0443") - buf.write("\7V\2\2\u0443\u0444\7T\2\2\u0444\u0445\7G\2\2\u0445\u044e") - buf.write("\7E\2\2\u0446\u0447\7p\2\2\u0447\u0448\7g\2\2\u0448\u0449") - buf.write("\7z\2\2\u0449\u044a\7v\2\2\u044a\u044b\7t\2\2\u044b\u044c") - buf.write("\7g\2\2\u044c\u044e\7e\2\2\u044d\u043f\3\2\2\2\u044d\u0446") - buf.write("\3\2\2\2\u044e\u0080\3\2\2\2\u044f\u0450\7K\2\2\u0450") - buf.write("\u0451\7P\2\2\u0451\u0452\7S\2\2\u0452\u0453\7W\2\2\u0453") - buf.write("\u0454\7K\2\2\u0454\u0455\7T\2\2\u0455\u045e\7G\2\2\u0456") - buf.write("\u0457\7k\2\2\u0457\u0458\7p\2\2\u0458\u0459\7s\2\2\u0459") - buf.write("\u045a\7w\2\2\u045a\u045b\7k\2\2\u045b\u045c\7t\2\2\u045c") - buf.write("\u045e\7g\2\2\u045d\u044f\3\2\2\2\u045d\u0456\3\2\2\2") - buf.write("\u045e\u0082\3\2\2\2\u045f\u0460\7D\2\2\u0460\u0461\7") - buf.write("C\2\2\u0461\u0462\7E\2\2\u0462\u0463\7M\2\2\u0463\u0464") - buf.write("\7U\2\2\u0464\u0465\7R\2\2\u0465\u0466\7C\2\2\u0466\u0467") - buf.write("\7E\2\2\u0467\u0472\7G\2\2\u0468\u0469\7d\2\2\u0469\u046a") - buf.write("\7c\2\2\u046a\u046b\7e\2\2\u046b\u046c\7m\2\2\u046c\u046d") - buf.write("\7u\2\2\u046d\u046e\7r\2\2\u046e\u046f\7c\2\2\u046f\u0470") - buf.write("\7e\2\2\u0470\u0472\7g\2\2\u0471\u045f\3\2\2\2\u0471\u0468") - buf.write("\3\2\2\2\u0472\u0084\3\2\2\2\u0473\u0474\7G\2\2\u0474") - buf.write("\u0475\7P\2\2\u0475\u0476\7F\2\2\u0476\u0477\7H\2\2\u0477") - buf.write("\u0478\7K\2\2\u0478\u0479\7N\2\2\u0479\u0482\7G\2\2\u047a") - buf.write("\u047b\7g\2\2\u047b\u047c\7p\2\2\u047c\u047d\7f\2\2\u047d") - buf.write("\u047e\7h\2\2\u047e\u047f\7k\2\2\u047f\u0480\7n\2\2\u0480") - buf.write("\u0482\7g\2\2\u0481\u0473\3\2\2\2\u0481\u047a\3\2\2\2") - buf.write("\u0482\u0086\3\2\2\2\u0483\u0484\7T\2\2\u0484\u0485\7") - buf.write("G\2\2\u0485\u0486\7Y\2\2\u0486\u0487\7K\2\2\u0487\u0488") - buf.write("\7P\2\2\u0488\u0490\7F\2\2\u0489\u048a\7t\2\2\u048a\u048b") - buf.write("\7g\2\2\u048b\u048c\7y\2\2\u048c\u048d\7k\2\2\u048d\u048e") - buf.write("\7p\2\2\u048e\u0490\7f\2\2\u048f\u0483\3\2\2\2\u048f\u0489") - buf.write("\3\2\2\2\u0490\u0088\3\2\2\2\u0491\u0492\7&\2\2\u0492") - buf.write("\u008a\3\2\2\2\u0493\u0494\7.\2\2\u0494\u008c\3\2\2\2") - buf.write("\u0495\u0496\7*\2\2\u0496\u008e\3\2\2\2\u0497\u0498\7") - buf.write("+\2\2\u0498\u0090\3\2\2\2\u0499\u049a\7<\2\2\u049a\u0092") - buf.write("\3\2\2\2\u049b\u049c\7?\2\2\u049c\u0094\3\2\2\2\u049d") - buf.write("\u049e\7/\2\2\u049e\u0096\3\2\2\2\u049f\u04a0\7-\2\2\u04a0") - buf.write("\u0098\3\2\2\2\u04a1\u04a2\7\61\2\2\u04a2\u009a\3\2\2") - buf.write("\2\u04a3\u04a4\7,\2\2\u04a4\u009c\3\2\2\2\u04a5\u04a6") - buf.write("\7,\2\2\u04a6\u04a7\7,\2\2\u04a7\u009e\3\2\2\2\u04a8\u04a9") - buf.write("\7\60\2\2\u04a9\u04aa\7p\2\2\u04aa\u04ab\7q\2\2\u04ab") - buf.write("\u04ac\7v\2\2\u04ac\u04b3\7\60\2\2\u04ad\u04ae\7\60\2") - buf.write("\2\u04ae\u04af\7P\2\2\u04af\u04b0\7Q\2\2\u04b0\u04b1\7") - buf.write("V\2\2\u04b1\u04b3\7\60\2\2\u04b2\u04a8\3\2\2\2\u04b2\u04ad") - buf.write("\3\2\2\2\u04b3\u00a0\3\2\2\2\u04b4\u04b5\7\60\2\2\u04b5") - buf.write("\u04b6\7c\2\2\u04b6\u04b7\7p\2\2\u04b7\u04b8\7f\2\2\u04b8") - buf.write("\u04bf\7\60\2\2\u04b9\u04ba\7\60\2\2\u04ba\u04bb\7C\2") - buf.write("\2\u04bb\u04bc\7P\2\2\u04bc\u04bd\7F\2\2\u04bd\u04bf\7") - buf.write("\60\2\2\u04be\u04b4\3\2\2\2\u04be\u04b9\3\2\2\2\u04bf") - buf.write("\u00a2\3\2\2\2\u04c0\u04c1\7\60\2\2\u04c1\u04c2\7q\2\2") - buf.write("\u04c2\u04c3\7t\2\2\u04c3\u04c9\7\60\2\2\u04c4\u04c5\7") - buf.write("\60\2\2\u04c5\u04c6\7Q\2\2\u04c6\u04c7\7T\2\2\u04c7\u04c9") - buf.write("\7\60\2\2\u04c8\u04c0\3\2\2\2\u04c8\u04c4\3\2\2\2\u04c9") - buf.write("\u00a4\3\2\2\2\u04ca\u04cb\7\60\2\2\u04cb\u04cc\7g\2\2") - buf.write("\u04cc\u04cd\7s\2\2\u04cd\u04ce\7x\2\2\u04ce\u04d5\7\60") - buf.write("\2\2\u04cf\u04d0\7\60\2\2\u04d0\u04d1\7G\2\2\u04d1\u04d2") - buf.write("\7S\2\2\u04d2\u04d3\7X\2\2\u04d3\u04d5\7\60\2\2\u04d4") - buf.write("\u04ca\3\2\2\2\u04d4\u04cf\3\2\2\2\u04d5\u00a6\3\2\2\2") - buf.write("\u04d6\u04d7\7\60\2\2\u04d7\u04d8\7p\2\2\u04d8\u04d9\7") - buf.write("g\2\2\u04d9\u04da\7s\2\2\u04da\u04db\7x\2\2\u04db\u04e3") - buf.write("\7\60\2\2\u04dc\u04dd\7\60\2\2\u04dd\u04de\7P\2\2\u04de") - buf.write("\u04df\7G\2\2\u04df\u04e0\7S\2\2\u04e0\u04e1\7X\2\2\u04e1") - buf.write("\u04e3\7\60\2\2\u04e2\u04d6\3\2\2\2\u04e2\u04dc\3\2\2") - buf.write("\2\u04e3\u00a8\3\2\2\2\u04e4\u04e5\7\60\2\2\u04e5\u04e6") - buf.write("\7z\2\2\u04e6\u04e7\7q\2\2\u04e7\u04e8\7t\2\2\u04e8\u04ef") - buf.write("\7\60\2\2\u04e9\u04ea\7\60\2\2\u04ea\u04eb\7Z\2\2\u04eb") - buf.write("\u04ec\7Q\2\2\u04ec\u04ed\7T\2\2\u04ed\u04ef\7\60\2\2") - buf.write("\u04ee\u04e4\3\2\2\2\u04ee\u04e9\3\2\2\2\u04ef\u00aa\3") - buf.write("\2\2\2\u04f0\u04f1\7\60\2\2\u04f1\u04f2\7g\2\2\u04f2\u04f3") - buf.write("\7q\2\2\u04f3\u04f4\7t\2\2\u04f4\u04fb\7\60\2\2\u04f5") - buf.write("\u04f6\7\60\2\2\u04f6\u04f7\7G\2\2\u04f7\u04f8\7Q\2\2") - buf.write("\u04f8\u04f9\7T\2\2\u04f9\u04fb\7\60\2\2\u04fa\u04f0\3") - buf.write("\2\2\2\u04fa\u04f5\3\2\2\2\u04fb\u00ac\3\2\2\2\u04fc\u04fd") - buf.write("\7\60\2\2\u04fd\u04fe\7n\2\2\u04fe\u04ff\7v\2\2\u04ff") - buf.write("\u0505\7\60\2\2\u0500\u0501\7\60\2\2\u0501\u0502\7N\2") - buf.write("\2\u0502\u0503\7V\2\2\u0503\u0505\7\60\2\2\u0504\u04fc") - buf.write("\3\2\2\2\u0504\u0500\3\2\2\2\u0505\u00ae\3\2\2\2\u0506") - buf.write("\u0507\7\60\2\2\u0507\u0508\7n\2\2\u0508\u0509\7g\2\2") - buf.write("\u0509\u050f\7\60\2\2\u050a\u050b\7\60\2\2\u050b\u050c") - buf.write("\7N\2\2\u050c\u050d\7G\2\2\u050d\u050f\7\60\2\2\u050e") - buf.write("\u0506\3\2\2\2\u050e\u050a\3\2\2\2\u050f\u00b0\3\2\2\2") - buf.write("\u0510\u0511\7\60\2\2\u0511\u0512\7i\2\2\u0512\u0513\7") - buf.write("v\2\2\u0513\u0519\7\60\2\2\u0514\u0515\7\60\2\2\u0515") - buf.write("\u0516\7I\2\2\u0516\u0517\7V\2\2\u0517\u0519\7\60\2\2") - buf.write("\u0518\u0510\3\2\2\2\u0518\u0514\3\2\2\2\u0519\u00b2\3") - buf.write("\2\2\2\u051a\u051b\7\60\2\2\u051b\u051c\7i\2\2\u051c\u051d") - buf.write("\7g\2\2\u051d\u0523\7\60\2\2\u051e\u051f\7\60\2\2\u051f") - buf.write("\u0520\7I\2\2\u0520\u0521\7G\2\2\u0521\u0523\7\60\2\2") - buf.write("\u0522\u051a\3\2\2\2\u0522\u051e\3\2\2\2\u0523\u00b4\3") - buf.write("\2\2\2\u0524\u0525\7\60\2\2\u0525\u0526\7p\2\2\u0526\u0527") - buf.write("\7g\2\2\u0527\u052d\7\60\2\2\u0528\u0529\7\60\2\2\u0529") - buf.write("\u052a\7P\2\2\u052a\u052b\7G\2\2\u052b\u052d\7\60\2\2") - buf.write("\u052c\u0524\3\2\2\2\u052c\u0528\3\2\2\2\u052d\u00b6\3") - buf.write("\2\2\2\u052e\u052f\7\60\2\2\u052f\u0530\7g\2\2\u0530\u0531") - buf.write("\7s\2\2\u0531\u0537\7\60\2\2\u0532\u0533\7\60\2\2\u0533") - buf.write("\u0534\7G\2\2\u0534\u0535\7S\2\2\u0535\u0537\7\60\2\2") - buf.write("\u0536\u052e\3\2\2\2\u0536\u0532\3\2\2\2\u0537\u00b8\3") - buf.write("\2\2\2\u0538\u0539\7\60\2\2\u0539\u053a\7v\2\2\u053a\u053b") - buf.write("\7t\2\2\u053b\u053c\7w\2\2\u053c\u053d\7g\2\2\u053d\u0545") - buf.write("\7\60\2\2\u053e\u053f\7\60\2\2\u053f\u0540\7V\2\2\u0540") - buf.write("\u0541\7T\2\2\u0541\u0542\7W\2\2\u0542\u0543\7G\2\2\u0543") - buf.write("\u0545\7\60\2\2\u0544\u0538\3\2\2\2\u0544\u053e\3\2\2") - buf.write("\2\u0545\u00ba\3\2\2\2\u0546\u0547\7\60\2\2\u0547\u0548") - buf.write("\7h\2\2\u0548\u0549\7c\2\2\u0549\u054a\7n\2\2\u054a\u054b") - buf.write("\7u\2\2\u054b\u054c\7g\2\2\u054c\u0555\7\60\2\2\u054d") - buf.write("\u054e\7\60\2\2\u054e\u054f\7H\2\2\u054f\u0550\7C\2\2") - buf.write("\u0550\u0551\7N\2\2\u0551\u0552\7U\2\2\u0552\u0553\7G") - buf.write("\2\2\u0553\u0555\7\60\2\2\u0554\u0546\3\2\2\2\u0554\u054d") - buf.write("\3\2\2\2\u0555\u00bc\3\2\2\2\u0556\u0557\7Z\2\2\u0557") - buf.write("\u0558\7E\2\2\u0558\u0559\7Q\2\2\u0559\u055a\7P\2\2\u055a") - buf.write("\u00be\3\2\2\2\u055b\u055c\7R\2\2\u055c\u055d\7E\2\2\u055d") - buf.write("\u055e\7Q\2\2\u055e\u055f\7P\2\2\u055f\u00c0\3\2\2\2\u0560") - buf.write("\u0561\7H\2\2\u0561\u0562\7E\2\2\u0562\u0563\7Q\2\2\u0563") - buf.write("\u0564\7P\2\2\u0564\u00c2\3\2\2\2\u0565\u0566\7E\2\2\u0566") - buf.write("\u0567\7E\2\2\u0567\u0568\7Q\2\2\u0568\u0569\7P\2\2\u0569") - buf.write("\u00c4\3\2\2\2\u056a\u056b\7J\2\2\u056b\u056c\7Q\2\2\u056c") - buf.write("\u056d\7N\2\2\u056d\u056e\7N\2\2\u056e\u056f\7G\2\2\u056f") - buf.write("\u0570\7T\2\2\u0570\u0571\7K\2\2\u0571\u0572\7V\2\2\u0572") - buf.write("\u0573\7J\2\2\u0573\u00c6\3\2\2\2\u0574\u0575\7E\2\2\u0575") - buf.write("\u0576\7Q\2\2\u0576\u0577\7P\2\2\u0577\u0578\7E\2\2\u0578") - buf.write("\u0579\7C\2\2\u0579\u057a\7V\2\2\u057a\u057b\7Q\2\2\u057b") - buf.write("\u057c\7R\2\2\u057c\u00c8\3\2\2\2\u057d\u057e\7E\2\2\u057e") - buf.write("\u057f\7V\2\2\u057f\u0580\7T\2\2\u0580\u0581\7N\2\2\u0581") - buf.write("\u0582\7F\2\2\u0582\u0583\7K\2\2\u0583\u0584\7T\2\2\u0584") - buf.write("\u0585\7G\2\2\u0585\u0586\7E\2\2\u0586\u0587\7V\2\2\u0587") - buf.write("\u00ca\3\2\2\2\u0588\u0589\7E\2\2\u0589\u058a\7V\2\2\u058a") - buf.write("\u058b\7T\2\2\u058b\u058c\7N\2\2\u058c\u058d\7T\2\2\u058d") - buf.write("\u058e\7G\2\2\u058e\u058f\7E\2\2\u058f\u00cc\3\2\2\2\u0590") - buf.write("\u0591\7V\2\2\u0591\u0592\7Q\2\2\u0592\u00ce\3\2\2\2\u0593") - buf.write("\u0594\7U\2\2\u0594\u0595\7W\2\2\u0595\u0596\7D\2\2\u0596") - buf.write("\u0597\7R\2\2\u0597\u0598\7T\2\2\u0598\u0599\7Q\2\2\u0599") - buf.write("\u059a\7I\2\2\u059a\u059b\7T\2\2\u059b\u059c\7C\2\2\u059c") - buf.write("\u059d\7O\2\2\u059d\u059e\7D\2\2\u059e\u059f\7N\2\2\u059f") - buf.write("\u05a0\7Q\2\2\u05a0\u05a1\7E\2\2\u05a1\u05a2\7M\2\2\u05a2") - buf.write("\u00d0\3\2\2\2\u05a3\u05a4\7F\2\2\u05a4\u05a5\7Q\2\2\u05a5") - buf.write("\u05a6\7D\2\2\u05a6\u05a7\7N\2\2\u05a7\u05a8\7Q\2\2\u05a8") - buf.write("\u05a9\7E\2\2\u05a9\u05aa\7M\2\2\u05aa\u00d2\3\2\2\2\u05ab") - buf.write("\u05ac\7C\2\2\u05ac\u05ad\7K\2\2\u05ad\u05ae\7H\2\2\u05ae") - buf.write("\u00d4\3\2\2\2\u05af\u05b0\7V\2\2\u05b0\u05b1\7J\2\2\u05b1") - buf.write("\u05b2\7G\2\2\u05b2\u05b3\7P\2\2\u05b3\u05b4\7D\2\2\u05b4") - buf.write("\u05b5\7N\2\2\u05b5\u05b6\7Q\2\2\u05b6\u05b7\7E\2\2\u05b7") - buf.write("\u05b8\7M\2\2\u05b8\u00d6\3\2\2\2\u05b9\u05ba\7G\2\2\u05ba") - buf.write("\u05bb\7N\2\2\u05bb\u05bc\7U\2\2\u05bc\u05bd\7G\2\2\u05bd") - buf.write("\u05be\7D\2\2\u05be\u05bf\7N\2\2\u05bf\u05c0\7Q\2\2\u05c0") - buf.write("\u05c1\7E\2\2\u05c1\u05c2\7M\2\2\u05c2\u00d8\3\2\2\2\u05c3") - buf.write("\u05c4\7E\2\2\u05c4\u05c5\7Q\2\2\u05c5\u05c6\7F\2\2\u05c6") - buf.write("\u05c7\7G\2\2\u05c7\u05c8\7T\2\2\u05c8\u05c9\7Q\2\2\u05c9") - buf.write("\u05ca\7Q\2\2\u05ca\u05cb\7V\2\2\u05cb\u00da\3\2\2\2\u05cc") - buf.write("\u05cd\7E\2\2\u05cd\u05ce\7Q\2\2\u05ce\u05cf\7O\2\2\u05cf") - buf.write("\u05d0\7R\2\2\u05d0\u05d1\7N\2\2\u05d1\u05d2\7G\2\2\u05d2") - buf.write("\u05db\7Z\2\2\u05d3\u05d4\7e\2\2\u05d4\u05d5\7q\2\2\u05d5") - buf.write("\u05d6\7o\2\2\u05d6\u05d7\7r\2\2\u05d7\u05d8\7n\2\2\u05d8") - buf.write("\u05d9\7g\2\2\u05d9\u05db\7z\2\2\u05da\u05cc\3\2\2\2\u05da") - buf.write("\u05d3\3\2\2\2\u05db\u00dc\3\2\2\2\u05dc\u05dd\7R\2\2") - buf.write("\u05dd\u05de\7T\2\2\u05de\u05df\7G\2\2\u05df\u05e0\7E") - buf.write("\2\2\u05e0\u05e1\7K\2\2\u05e1\u05e2\7U\2\2\u05e2\u05e3") - buf.write("\7K\2\2\u05e3\u05e4\7Q\2\2\u05e4\u05ef\7P\2\2\u05e5\u05e6") - buf.write("\7r\2\2\u05e6\u05e7\7t\2\2\u05e7\u05e8\7g\2\2\u05e8\u05e9") - buf.write("\7e\2\2\u05e9\u05ea\7k\2\2\u05ea\u05eb\7u\2\2\u05eb\u05ec") - buf.write("\7k\2\2\u05ec\u05ed\7q\2\2\u05ed\u05ef\7p\2\2\u05ee\u05dc") - buf.write("\3\2\2\2\u05ee\u05e5\3\2\2\2\u05ef\u00de\3\2\2\2\u05f0") - buf.write("\u05f1\7K\2\2\u05f1\u05f2\7P\2\2\u05f2\u05f3\7V\2\2\u05f3") - buf.write("\u05f4\7G\2\2\u05f4\u05f5\7I\2\2\u05f5\u05f6\7G\2\2\u05f6") - buf.write("\u05ff\7T\2\2\u05f7\u05f8\7k\2\2\u05f8\u05f9\7p\2\2\u05f9") - buf.write("\u05fa\7v\2\2\u05fa\u05fb\7g\2\2\u05fb\u05fc\7i\2\2\u05fc") - buf.write("\u05fd\7g\2\2\u05fd\u05ff\7t\2\2\u05fe\u05f0\3\2\2\2\u05fe") - buf.write("\u05f7\3\2\2\2\u05ff\u00e0\3\2\2\2\u0600\u0601\7N\2\2") - buf.write("\u0601\u0602\7Q\2\2\u0602\u0603\7I\2\2\u0603\u0604\7K") - buf.write("\2\2\u0604\u0605\7E\2\2\u0605\u0606\7C\2\2\u0606\u060f") - buf.write("\7N\2\2\u0607\u0608\7n\2\2\u0608\u0609\7q\2\2\u0609\u060a") - buf.write("\7i\2\2\u060a\u060b\7k\2\2\u060b\u060c\7e\2\2\u060c\u060d") - buf.write("\7c\2\2\u060d\u060f\7n\2\2\u060e\u0600\3\2\2\2\u060e\u0607") - buf.write("\3\2\2\2\u060f\u00e2\3\2\2\2\u0610\u0611\n\2\2\2\u0611") - buf.write("\u00e4\3\2\2\2\u0612\u0615\5\u00efx\2\u0613\u0615\5\u00f1") - buf.write("y\2\u0614\u0612\3\2\2\2\u0614\u0613\3\2\2\2\u0615\u00e6") - buf.write("\3\2\2\2\u0616\u0619\5\u00f1y\2\u0617\u0619\4ch\2\u0618") - buf.write("\u0616\3\2\2\2\u0618\u0617\3\2\2\2\u0619\u00e8\3\2\2\2") - buf.write("\u061a\u061b\t\3\2\2\u061b\u00ea\3\2\2\2\u061c\u061e\t") - buf.write("\4\2\2\u061d\u061f\5\u00f1y\2\u061e\u061d\3\2\2\2\u061f") - buf.write("\u0620\3\2\2\2\u0620\u061e\3\2\2\2\u0620\u0621\3\2\2\2") - buf.write("\u0621\u0622\3\2\2\2\u0622\u0624\7\60\2\2\u0623\u0625") - buf.write("\5\u00f1y\2\u0624\u0623\3\2\2\2\u0625\u0626\3\2\2\2\u0626") - buf.write("\u0624\3\2\2\2\u0626\u0627\3\2\2\2\u0627\u063d\3\2\2\2") - buf.write("\u0628\u062a\t\5\2\2\u0629\u062b\5\u00f1y\2\u062a\u0629") - buf.write("\3\2\2\2\u062b\u062c\3\2\2\2\u062c\u062a\3\2\2\2\u062c") - buf.write("\u062d\3\2\2\2\u062d\u062e\3\2\2\2\u062e\u0630\7\60\2") - buf.write("\2\u062f\u0631\5\u00f1y\2\u0630\u062f\3\2\2\2\u0631\u0632") - buf.write("\3\2\2\2\u0632\u0630\3\2\2\2\u0632\u0633\3\2\2\2\u0633") - buf.write("\u063a\3\2\2\2\u0634\u0636\7g\2\2\u0635\u0637\5\u00f1") - buf.write("y\2\u0636\u0635\3\2\2\2\u0637\u0638\3\2\2\2\u0638\u0636") - buf.write("\3\2\2\2\u0638\u0639\3\2\2\2\u0639\u063b\3\2\2\2\u063a") - buf.write("\u0634\3\2\2\2\u063a\u063b\3\2\2\2\u063b\u063d\3\2\2\2") - buf.write("\u063c\u061c\3\2\2\2\u063c\u0628\3\2\2\2\u063d\u00ec\3") - buf.write("\2\2\2\u063e\u0640\t\6\2\2\u063f\u0641\5\u00e9u\2\u0640") - buf.write("\u063f\3\2\2\2\u0640\u0641\3\2\2\2\u0641\u0643\3\2\2\2") - buf.write("\u0642\u0644\5\u00f1y\2\u0643\u0642\3\2\2\2\u0644\u0645") - buf.write("\3\2\2\2\u0645\u0643\3\2\2\2\u0645\u0646\3\2\2\2\u0646") - buf.write("\u00ee\3\2\2\2\u0647\u0649\t\7\2\2\u0648\u0647\3\2\2\2") - buf.write("\u0649\u00f0\3\2\2\2\u064a\u064b\4\62;\2\u064b\u00f2\3") - buf.write("\2\2\2\u064c\u0670\7)\2\2\u064d\u064e\7)\2\2\u064e\u066f") - buf.write("\7)\2\2\u064f\u066f\n\b\2\2\u0650\u0656\7\f\2\2\u0651") - buf.write("\u0653\7\17\2\2\u0652\u0654\7\f\2\2\u0653\u0652\3\2\2") - buf.write("\2\u0653\u0654\3\2\2\2\u0654\u0656\3\2\2\2\u0655\u0650") - buf.write("\3\2\2\2\u0655\u0651\3\2\2\2\u0656\u0657\3\2\2\2\u0657") - buf.write("\u0658\7\"\2\2\u0658\u0659\7\"\2\2\u0659\u065a\7\"\2\2") - buf.write("\u065a\u065b\7\"\2\2\u065b\u065c\7\"\2\2\u065c\u065d\3") - buf.write("\2\2\2\u065d\u065e\5\u00e3r\2\u065e\u0664\3\2\2\2\u065f") - buf.write("\u0665\7\f\2\2\u0660\u0662\7\17\2\2\u0661\u0663\7\f\2") - buf.write("\2\u0662\u0661\3\2\2\2\u0662\u0663\3\2\2\2\u0663\u0665") - buf.write("\3\2\2\2\u0664\u065f\3\2\2\2\u0664\u0660\3\2\2\2\u0665") - buf.write("\u0666\3\2\2\2\u0666\u0667\7\"\2\2\u0667\u0668\7\"\2\2") - buf.write("\u0668\u0669\7\"\2\2\u0669\u066a\7\"\2\2\u066a\u066b\7") - buf.write("\"\2\2\u066b\u066c\3\2\2\2\u066c\u066d\5\u00e3r\2\u066d") - buf.write("\u066f\3\2\2\2\u066e\u064d\3\2\2\2\u066e\u064f\3\2\2\2") - buf.write("\u066e\u0655\3\2\2\2\u066f\u0672\3\2\2\2\u0670\u066e\3") - buf.write("\2\2\2\u0670\u0671\3\2\2\2\u0671\u0673\3\2\2\2\u0672\u0670") - buf.write("\3\2\2\2\u0673\u0674\7)\2\2\u0674\u00f4\3\2\2\2\u0675") - buf.write("\u0677\5\u00f1y\2\u0676\u0675\3\2\2\2\u0677\u0678\3\2") - buf.write("\2\2\u0678\u0676\3\2\2\2\u0678\u0679\3\2\2\2\u0679\u067a") - buf.write("\3\2\2\2\u067a\u067e\7\60\2\2\u067b\u067d\5\u00f1y\2\u067c") - buf.write("\u067b\3\2\2\2\u067d\u0680\3\2\2\2\u067e\u067c\3\2\2\2") - buf.write("\u067e\u067f\3\2\2\2\u067f\u0682\3\2\2\2\u0680\u067e\3") - buf.write("\2\2\2\u0681\u0683\5\u00edw\2\u0682\u0681\3\2\2\2\u0682") - buf.write("\u0683\3\2\2\2\u0683\u00f6\3\2\2\2\u0684\u0686\5\u00f1") - buf.write("y\2\u0685\u0684\3\2\2\2\u0686\u0687\3\2\2\2\u0687\u0685") - buf.write("\3\2\2\2\u0687\u0688\3\2\2\2\u0688\u00f8\3\2\2\2\u0689") - buf.write("\u068b\t\t\2\2\u068a\u068c\5\u00f1y\2\u068b\u068a\3\2") - buf.write("\2\2\u068c\u068d\3\2\2\2\u068d\u068b\3\2\2\2\u068d\u068e") - buf.write("\3\2\2\2\u068e\u068f\3\2\2\2\u068f\u0690\7\60\2\2\u0690") - buf.write("\u0691\3\2\2\2\u0691\u0692\5\u00ebv\2\u0692\u069f\3\2") - buf.write("\2\2\u0693\u0695\5\u00e5s\2\u0694\u0693\3\2\2\2\u0695") - buf.write("\u0696\3\2\2\2\u0696\u0694\3\2\2\2\u0696\u0697\3\2\2\2") - buf.write("\u0697\u069b\3\2\2\2\u0698\u069a\5\u00e5s\2\u0699\u0698") - buf.write("\3\2\2\2\u069a\u069d\3\2\2\2\u069b\u0699\3\2\2\2\u069b") - buf.write("\u069c\3\2\2\2\u069c\u069f\3\2\2\2\u069d\u069b\3\2\2\2") - buf.write("\u069e\u0689\3\2\2\2\u069e\u0694\3\2\2\2\u069f\u00fa\3") - buf.write("\2\2\2\u06a0\u06a3\6~\2\2\u06a1\u06a4\7e\2\2\u06a2\u06a4") - buf.write("\5\u009bN\2\u06a3\u06a1\3\2\2\2\u06a3\u06a2\3\2\2\2\u06a4") - buf.write("\u06a8\3\2\2\2\u06a5\u06a7\n\n\2\2\u06a6\u06a5\3\2\2\2") - buf.write("\u06a7\u06aa\3\2\2\2\u06a8\u06a6\3\2\2\2\u06a8\u06a9\3") - buf.write("\2\2\2\u06a9\u06ab\3\2\2\2\u06aa\u06a8\3\2\2\2\u06ab\u06ac") - buf.write("\5\u0101\u0081\2\u06ac\u00fc\3\2\2\2\u06ad\u06ae\5\u009b") - buf.write("N\2\u06ae\u00fe\3\2\2\2\u06af\u06b3\7$\2\2\u06b0\u06b2") - buf.write("\n\13\2\2\u06b1\u06b0\3\2\2\2\u06b2\u06b5\3\2\2\2\u06b3") - buf.write("\u06b1\3\2\2\2\u06b3\u06b4\3\2\2\2\u06b4\u06b6\3\2\2\2") - buf.write("\u06b5\u06b3\3\2\2\2\u06b6\u06b7\7$\2\2\u06b7\u0100\3") - buf.write("\2\2\2\u06b8\u06ba\t\n\2\2\u06b9\u06b8\3\2\2\2\u06ba\u06bb") - buf.write("\3\2\2\2\u06bb\u06b9\3\2\2\2\u06bb\u06bc\3\2\2\2\u06bc") - buf.write("\u0102\3\2\2\2\u06bd\u06be\5\u0101\u0081\2\u06be\u06bf") - buf.write("\7\"\2\2\u06bf\u06c0\7\"\2\2\u06c0\u06c1\7\"\2\2\u06c1") - buf.write("\u06c2\7\"\2\2\u06c2\u06c3\7\"\2\2\u06c3\u06c4\7&\2\2") - buf.write("\u06c4\u06ce\3\2\2\2\u06c5\u06c6\5\u0101\u0081\2\u06c6") - buf.write("\u06c7\7\"\2\2\u06c7\u06c8\7\"\2\2\u06c8\u06c9\7\"\2\2") - buf.write("\u06c9\u06ca\7\"\2\2\u06ca\u06cb\7\"\2\2\u06cb\u06cc\7") - buf.write("-\2\2\u06cc\u06ce\3\2\2\2\u06cd\u06bd\3\2\2\2\u06cd\u06c5") - buf.write("\3\2\2\2\u06ce\u06cf\3\2\2\2\u06cf\u06d0\b\u0082\2\2\u06d0") - buf.write("\u0104\3\2\2\2\u06d1\u06d3\t\f\2\2\u06d2\u06d1\3\2\2\2") - buf.write("\u06d3\u06d4\3\2\2\2\u06d4\u06d2\3\2\2\2\u06d4\u06d5\3") - buf.write("\2\2\2\u06d5\u06d6\3\2\2\2\u06d6\u06d7\b\u0083\2\2\u06d7") - buf.write("\u0106\3\2\2\2y\2\u0115\u0121\u0133\u013f\u0155\u015d") - buf.write("\u0171\u017b\u0193\u01a1\u01b1\u01c3\u01cd\u01e1\u01f5") - buf.write("\u0207\u021b\u0225\u022f\u0235\u023f\u0245\u024f\u0259") - buf.write("\u0265\u0273\u0279\u028b\u0295\u02a1\u02ad\u02b9\u02c3") - buf.write("\u02cf\u02d9\u02e1\u02eb\u02f3\u0301\u030f\u0317\u0321") - buf.write("\u032f\u033b\u0349\u0359\u036f\u037b\u0385\u0393\u03a1") - buf.write("\u03b3\u03bd\u03c7\u03d3\u03df\u03ed\u03fb\u0407\u0411") - buf.write("\u0425\u043d\u044d\u045d\u0471\u0481\u048f\u04b2\u04be") - buf.write("\u04c8\u04d4\u04e2\u04ee\u04fa\u0504\u050e\u0518\u0522") - buf.write("\u052c\u0536\u0544\u0554\u05da\u05ee\u05fe\u060e\u0614") - buf.write("\u0618\u0620\u0626\u062c\u0632\u0638\u063a\u063c\u0640") - buf.write("\u0645\u0648\u0653\u0655\u0662\u0664\u066e\u0670\u0678") - buf.write("\u067e\u0682\u0687\u068d\u0696\u069b\u069e\u06a3\u06a8") - buf.write("\u06b3\u06bb\u06cd\u06d4\3\b\2\2") - return buf.getvalue() - + return [ + 4,0,121,1750,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,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,276,8,0,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,288,8,1,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,306,8,2,1,3,1, + 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,318,8,3,1,4,1,4,1,4,1,4,1, + 4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3, + 4,340,8,4,1,5,1,5,1,5,1,5,1,5,1,5,3,5,348,8,5,1,6,1,6,1,6,1,6,1, + 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,368,8, + 6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,378,8,7,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,3,8,402,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1, + 9,3,9,416,8,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, + 1,10,1,10,1,10,1,10,3,10,432,8,10,1,11,1,11,1,11,1,11,1,11,1,11, + 1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,450,8,11, + 1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,460,8,12,1,13,1,13, + 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13, + 1,13,1,13,1,13,3,13,480,8,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14, + 1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,3,14,500, + 8,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15, + 1,15,1,15,1,15,1,15,3,15,518,8,15,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,3,16, + 538,8,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,548,8,17,1, + 18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,3,18,558,8,18,1,19,1,19,1, + 19,1,19,3,19,564,8,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,3, + 20,574,8,20,1,21,1,21,1,21,1,21,3,21,580,8,21,1,22,1,22,1,22,1,22, + 1,22,1,22,1,22,1,22,3,22,590,8,22,1,23,1,23,1,23,1,23,1,23,1,23, + 1,23,1,23,3,23,600,8,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24, + 1,24,1,24,3,24,612,8,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,1,25,1,25,3,25,626,8,25,1,26,1,26,1,26,1,26,3,26,632,8, + 26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1, + 27,1,27,1,27,1,27,3,27,650,8,27,1,28,1,28,1,28,1,28,1,28,1,28,1, + 28,1,28,3,28,660,8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1, + 29,1,29,3,29,672,8,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1, + 30,1,30,3,30,684,8,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1, + 31,1,31,3,31,696,8,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,3, + 32,706,8,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3, + 33,718,8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34,728,8,34, + 1,35,1,35,1,35,1,35,1,35,1,35,3,35,736,8,35,1,36,1,36,1,36,1,36, + 1,36,1,36,1,36,1,36,3,36,746,8,36,1,37,1,37,1,37,1,37,1,37,1,37, + 3,37,754,8,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,3,38,768,8,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39, + 1,39,1,39,1,39,1,39,3,39,782,8,39,1,40,1,40,1,40,1,40,1,40,1,40, + 3,40,790,8,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,800,8, + 41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,3, + 42,814,8,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,3, + 43,826,8,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1, + 44,1,44,3,44,840,8,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1, + 45,1,45,1,45,1,45,1,45,1,45,3,45,856,8,45,1,46,1,46,1,46,1,46,1, + 46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1, + 46,1,46,1,46,3,46,878,8,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, + 47,1,47,1,47,3,47,890,8,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1, + 48,3,48,900,8,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1, + 49,1,49,1,49,3,49,914,8,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1, + 50,1,50,1,50,1,50,1,50,3,50,928,8,50,1,51,1,51,1,51,1,51,1,51,1, + 51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,3,51,946,8, + 51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,956,8,52,1,53,1, + 53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,966,8,53,1,54,1,54,1,54,1, + 54,1,54,1,54,1,54,1,54,1,54,1,54,3,54,978,8,54,1,55,1,55,1,55,1, + 55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,990,8,55,1,56,1,56,1,56,1, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,1004,8,56,1,57,1, + 57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,1018,8, + 57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,3,58,1030,8, + 58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,3,59,1040,8,59,1,60,1, + 60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1, + 60,1,60,1,60,1,60,3,60,1060,8,60,1,61,1,61,1,61,1,61,1,61,1,61,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1, + 61,1,61,1,61,3,61,1084,8,61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1, + 62,1,62,1,62,1,62,1,62,1,62,1,62,3,62,1100,8,62,1,63,1,63,1,63,1, + 63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,3,63,1116,8, + 63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1, + 64,1,64,1,64,1,64,1,64,1,64,3,64,1136,8,64,1,65,1,65,1,65,1,65,1, + 65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,65,1152,8,65,1, + 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,1166, + 8,66,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,73,1,73,1,74,1,74,1,75,1,75,1,76,1,76,1,77,1,77,1,77,1,78,1,78, + 1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,3,78,1201,8,78,1,79,1,79, + 1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,3,79,1213,8,79,1,80,1,80, + 1,80,1,80,1,80,1,80,1,80,1,80,3,80,1223,8,80,1,81,1,81,1,81,1,81, + 1,81,1,81,1,81,1,81,1,81,1,81,3,81,1235,8,81,1,82,1,82,1,82,1,82, + 1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,3,82,1249,8,82,1,83,1,83, + 1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,3,83,1261,8,83,1,84,1,84, + 1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,3,84,1273,8,84,1,85,1,85, + 1,85,1,85,1,85,1,85,1,85,1,85,3,85,1283,8,85,1,86,1,86,1,86,1,86, + 1,86,1,86,1,86,1,86,3,86,1293,8,86,1,87,1,87,1,87,1,87,1,87,1,87, + 1,87,1,87,3,87,1303,8,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88, + 3,88,1313,8,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,3,89,1323, + 8,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,3,90,1333,8,90,1,91, + 1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,3,91,1347, + 8,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92, + 1,92,1,92,3,92,1363,8,92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94, + 1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,97, + 1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98, + 1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99, + 1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1, + 101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102, + 1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103, + 1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,105,1,105, + 1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107, + 1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108,1497,8,108, + 1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109, + 1,109,1,109,1,109,1,109,1,109,1,109,1,109,3,109,1517,8,109,1,110, + 1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, + 1,110,1,110,3,110,1533,8,110,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,3,111,1549,8,111, + 1,112,1,112,1,113,1,113,3,113,1555,8,113,1,114,1,114,3,114,1559, + 8,114,1,115,1,115,1,116,1,116,4,116,1565,8,116,11,116,12,116,1566, + 1,116,1,116,4,116,1571,8,116,11,116,12,116,1572,1,116,1,116,4,116, + 1577,8,116,11,116,12,116,1578,1,116,1,116,4,116,1583,8,116,11,116, + 12,116,1584,1,116,1,116,4,116,1589,8,116,11,116,12,116,1590,3,116, + 1593,8,116,3,116,1595,8,116,1,117,1,117,3,117,1599,8,117,1,117,4, + 117,1602,8,117,11,117,12,117,1603,1,118,3,118,1607,8,118,1,119,1, + 119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,3,120,1618,8,120,3, + 120,1620,8,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1, + 120,1,120,1,120,3,120,1633,8,120,3,120,1635,8,120,1,120,1,120,1, + 120,1,120,1,120,1,120,1,120,1,120,5,120,1645,8,120,10,120,12,120, + 1648,9,120,1,120,1,120,1,121,4,121,1653,8,121,11,121,12,121,1654, + 1,121,1,121,5,121,1659,8,121,10,121,12,121,1662,9,121,1,121,3,121, + 1665,8,121,1,122,4,122,1668,8,122,11,122,12,122,1669,1,123,1,123, + 4,123,1674,8,123,11,123,12,123,1675,1,123,1,123,1,123,1,123,1,123, + 4,123,1683,8,123,11,123,12,123,1684,1,123,5,123,1688,8,123,10,123, + 12,123,1691,9,123,3,123,1693,8,123,1,124,1,124,1,124,3,124,1698, + 8,124,1,124,5,124,1701,8,124,10,124,12,124,1704,9,124,1,124,1,124, + 1,125,1,125,1,126,1,126,5,126,1712,8,126,10,126,12,126,1715,9,126, + 1,126,1,126,1,127,4,127,1720,8,127,11,127,12,127,1721,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,3,128,1740,8,128,1,128,1,128,1,129,4,129,1745, + 8,129,11,129,12,129,1746,1,129,1,129,0,0,130,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,70,141,71,143,72,145,73,147,74,149,75,151,76,153,0,155,77, + 157,78,159,79,161,80,163,81,165,82,167,83,169,84,171,85,173,86,175, + 87,177,88,179,89,181,90,183,91,185,92,187,93,189,94,191,95,193,96, + 195,97,197,98,199,99,201,100,203,101,205,102,207,103,209,104,211, + 105,213,106,215,107,217,108,219,109,221,110,223,111,225,0,227,0, + 229,0,231,0,233,0,235,0,237,0,239,0,241,112,243,113,245,114,247, + 115,249,116,251,117,253,118,255,119,257,120,259,121,1,0,11,2,0,32, + 32,48,48,2,0,43,43,45,45,3,0,100,100,102,102,105,105,2,0,101,101, + 103,103,2,0,68,69,100,101,2,0,65,90,97,122,3,0,10,10,13,13,39,39, + 2,0,100,103,105,105,2,0,10,10,13,13,3,0,10,10,13,13,34,34,2,0,9, + 9,32,32,1858,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,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,0,201,1,0,0,0, + 0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1, + 0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0, + 221,1,0,0,0,0,223,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,1,275,1,0,0,0,3,287,1,0,0,0, + 5,305,1,0,0,0,7,317,1,0,0,0,9,339,1,0,0,0,11,347,1,0,0,0,13,367, + 1,0,0,0,15,377,1,0,0,0,17,401,1,0,0,0,19,415,1,0,0,0,21,431,1,0, + 0,0,23,449,1,0,0,0,25,459,1,0,0,0,27,479,1,0,0,0,29,499,1,0,0,0, + 31,517,1,0,0,0,33,537,1,0,0,0,35,547,1,0,0,0,37,557,1,0,0,0,39,563, + 1,0,0,0,41,573,1,0,0,0,43,579,1,0,0,0,45,589,1,0,0,0,47,599,1,0, + 0,0,49,611,1,0,0,0,51,625,1,0,0,0,53,631,1,0,0,0,55,649,1,0,0,0, + 57,659,1,0,0,0,59,671,1,0,0,0,61,683,1,0,0,0,63,695,1,0,0,0,65,705, + 1,0,0,0,67,717,1,0,0,0,69,727,1,0,0,0,71,735,1,0,0,0,73,745,1,0, + 0,0,75,753,1,0,0,0,77,767,1,0,0,0,79,781,1,0,0,0,81,789,1,0,0,0, + 83,799,1,0,0,0,85,813,1,0,0,0,87,825,1,0,0,0,89,839,1,0,0,0,91,855, + 1,0,0,0,93,877,1,0,0,0,95,889,1,0,0,0,97,899,1,0,0,0,99,913,1,0, + 0,0,101,927,1,0,0,0,103,945,1,0,0,0,105,955,1,0,0,0,107,965,1,0, + 0,0,109,977,1,0,0,0,111,989,1,0,0,0,113,1003,1,0,0,0,115,1017,1, + 0,0,0,117,1029,1,0,0,0,119,1039,1,0,0,0,121,1059,1,0,0,0,123,1083, + 1,0,0,0,125,1099,1,0,0,0,127,1115,1,0,0,0,129,1135,1,0,0,0,131,1151, + 1,0,0,0,133,1165,1,0,0,0,135,1167,1,0,0,0,137,1169,1,0,0,0,139,1171, + 1,0,0,0,141,1173,1,0,0,0,143,1175,1,0,0,0,145,1177,1,0,0,0,147,1179, + 1,0,0,0,149,1181,1,0,0,0,151,1183,1,0,0,0,153,1185,1,0,0,0,155,1187, + 1,0,0,0,157,1200,1,0,0,0,159,1212,1,0,0,0,161,1222,1,0,0,0,163,1234, + 1,0,0,0,165,1248,1,0,0,0,167,1260,1,0,0,0,169,1272,1,0,0,0,171,1282, + 1,0,0,0,173,1292,1,0,0,0,175,1302,1,0,0,0,177,1312,1,0,0,0,179,1322, + 1,0,0,0,181,1332,1,0,0,0,183,1346,1,0,0,0,185,1362,1,0,0,0,187,1364, + 1,0,0,0,189,1369,1,0,0,0,191,1374,1,0,0,0,193,1379,1,0,0,0,195,1384, + 1,0,0,0,197,1394,1,0,0,0,199,1403,1,0,0,0,201,1414,1,0,0,0,203,1422, + 1,0,0,0,205,1425,1,0,0,0,207,1441,1,0,0,0,209,1449,1,0,0,0,211,1453, + 1,0,0,0,213,1463,1,0,0,0,215,1473,1,0,0,0,217,1496,1,0,0,0,219,1516, + 1,0,0,0,221,1532,1,0,0,0,223,1548,1,0,0,0,225,1550,1,0,0,0,227,1554, + 1,0,0,0,229,1558,1,0,0,0,231,1560,1,0,0,0,233,1594,1,0,0,0,235,1596, + 1,0,0,0,237,1606,1,0,0,0,239,1608,1,0,0,0,241,1610,1,0,0,0,243,1652, + 1,0,0,0,245,1667,1,0,0,0,247,1692,1,0,0,0,249,1694,1,0,0,0,251,1707, + 1,0,0,0,253,1709,1,0,0,0,255,1719,1,0,0,0,257,1739,1,0,0,0,259,1744, + 1,0,0,0,261,262,5,112,0,0,262,263,5,114,0,0,263,264,5,111,0,0,264, + 265,5,103,0,0,265,266,5,114,0,0,266,267,5,97,0,0,267,276,5,109,0, + 0,268,269,5,80,0,0,269,270,5,82,0,0,270,271,5,79,0,0,271,272,5,71, + 0,0,272,273,5,82,0,0,273,274,5,65,0,0,274,276,5,77,0,0,275,261,1, + 0,0,0,275,268,1,0,0,0,276,2,1,0,0,0,277,278,5,101,0,0,278,279,5, + 110,0,0,279,280,5,116,0,0,280,281,5,114,0,0,281,288,5,121,0,0,282, + 283,5,69,0,0,283,284,5,78,0,0,284,285,5,84,0,0,285,286,5,82,0,0, + 286,288,5,89,0,0,287,277,1,0,0,0,287,282,1,0,0,0,288,4,1,0,0,0,289, + 290,5,102,0,0,290,291,5,117,0,0,291,292,5,110,0,0,292,293,5,99,0, + 0,293,294,5,116,0,0,294,295,5,105,0,0,295,296,5,111,0,0,296,306, + 5,110,0,0,297,298,5,70,0,0,298,299,5,85,0,0,299,300,5,78,0,0,300, + 301,5,67,0,0,301,302,5,84,0,0,302,303,5,73,0,0,303,304,5,79,0,0, + 304,306,5,78,0,0,305,289,1,0,0,0,305,297,1,0,0,0,306,6,1,0,0,0,307, + 308,5,98,0,0,308,309,5,108,0,0,309,310,5,111,0,0,310,311,5,99,0, + 0,311,318,5,107,0,0,312,313,5,66,0,0,313,314,5,76,0,0,314,315,5, + 79,0,0,315,316,5,67,0,0,316,318,5,75,0,0,317,307,1,0,0,0,317,312, + 1,0,0,0,318,8,1,0,0,0,319,320,5,115,0,0,320,321,5,117,0,0,321,322, + 5,98,0,0,322,323,5,114,0,0,323,324,5,111,0,0,324,325,5,117,0,0,325, + 326,5,116,0,0,326,327,5,105,0,0,327,328,5,110,0,0,328,340,5,101, + 0,0,329,330,5,83,0,0,330,331,5,85,0,0,331,332,5,66,0,0,332,333,5, + 82,0,0,333,334,5,79,0,0,334,335,5,85,0,0,335,336,5,84,0,0,336,337, + 5,73,0,0,337,338,5,78,0,0,338,340,5,69,0,0,339,319,1,0,0,0,339,329, + 1,0,0,0,340,10,1,0,0,0,341,342,5,69,0,0,342,343,5,78,0,0,343,348, + 5,68,0,0,344,345,5,101,0,0,345,346,5,110,0,0,346,348,5,100,0,0,347, + 341,1,0,0,0,347,344,1,0,0,0,348,12,1,0,0,0,349,350,5,100,0,0,350, + 351,5,105,0,0,351,352,5,109,0,0,352,353,5,101,0,0,353,354,5,110, + 0,0,354,355,5,115,0,0,355,356,5,105,0,0,356,357,5,111,0,0,357,368, + 5,110,0,0,358,359,5,68,0,0,359,360,5,73,0,0,360,361,5,77,0,0,361, + 362,5,69,0,0,362,363,5,78,0,0,363,364,5,83,0,0,364,365,5,73,0,0, + 365,366,5,79,0,0,366,368,5,78,0,0,367,349,1,0,0,0,367,358,1,0,0, + 0,368,14,1,0,0,0,369,370,5,82,0,0,370,371,5,69,0,0,371,372,5,65, + 0,0,372,378,5,76,0,0,373,374,5,114,0,0,374,375,5,101,0,0,375,376, + 5,97,0,0,376,378,5,108,0,0,377,369,1,0,0,0,377,373,1,0,0,0,378,16, + 1,0,0,0,379,380,5,69,0,0,380,381,5,81,0,0,381,382,5,85,0,0,382,383, + 5,73,0,0,383,384,5,86,0,0,384,385,5,65,0,0,385,386,5,76,0,0,386, + 387,5,69,0,0,387,388,5,78,0,0,388,389,5,67,0,0,389,402,5,69,0,0, + 390,391,5,101,0,0,391,392,5,113,0,0,392,393,5,117,0,0,393,394,5, + 105,0,0,394,395,5,118,0,0,395,396,5,97,0,0,396,397,5,108,0,0,397, + 398,5,101,0,0,398,399,5,110,0,0,399,400,5,99,0,0,400,402,5,101,0, + 0,401,379,1,0,0,0,401,390,1,0,0,0,402,18,1,0,0,0,403,404,5,99,0, + 0,404,405,5,111,0,0,405,406,5,109,0,0,406,407,5,109,0,0,407,408, + 5,111,0,0,408,416,5,110,0,0,409,410,5,67,0,0,410,411,5,79,0,0,411, + 412,5,77,0,0,412,413,5,77,0,0,413,414,5,79,0,0,414,416,5,78,0,0, + 415,403,1,0,0,0,415,409,1,0,0,0,416,20,1,0,0,0,417,418,5,112,0,0, + 418,419,5,111,0,0,419,420,5,105,0,0,420,421,5,110,0,0,421,422,5, + 116,0,0,422,423,5,101,0,0,423,432,5,114,0,0,424,425,5,80,0,0,425, + 426,5,79,0,0,426,427,5,73,0,0,427,428,5,78,0,0,428,429,5,84,0,0, + 429,430,5,69,0,0,430,432,5,82,0,0,431,417,1,0,0,0,431,424,1,0,0, + 0,432,22,1,0,0,0,433,434,5,105,0,0,434,435,5,109,0,0,435,436,5,112, + 0,0,436,437,5,108,0,0,437,438,5,105,0,0,438,439,5,99,0,0,439,440, + 5,105,0,0,440,450,5,116,0,0,441,442,5,73,0,0,442,443,5,77,0,0,443, + 444,5,80,0,0,444,445,5,76,0,0,445,446,5,73,0,0,446,447,5,67,0,0, + 447,448,5,73,0,0,448,450,5,84,0,0,449,433,1,0,0,0,449,441,1,0,0, + 0,450,24,1,0,0,0,451,452,5,110,0,0,452,453,5,111,0,0,453,454,5,110, + 0,0,454,460,5,101,0,0,455,456,5,78,0,0,456,457,5,79,0,0,457,458, + 5,78,0,0,458,460,5,69,0,0,459,451,1,0,0,0,459,455,1,0,0,0,460,26, + 1,0,0,0,461,462,5,99,0,0,462,463,5,104,0,0,463,464,5,97,0,0,464, + 465,5,114,0,0,465,466,5,97,0,0,466,467,5,99,0,0,467,468,5,116,0, + 0,468,469,5,101,0,0,469,480,5,114,0,0,470,471,5,67,0,0,471,472,5, + 72,0,0,472,473,5,65,0,0,473,474,5,82,0,0,474,475,5,65,0,0,475,476, + 5,67,0,0,476,477,5,84,0,0,477,478,5,69,0,0,478,480,5,82,0,0,479, + 461,1,0,0,0,479,470,1,0,0,0,480,28,1,0,0,0,481,482,5,112,0,0,482, + 483,5,97,0,0,483,484,5,114,0,0,484,485,5,97,0,0,485,486,5,109,0, + 0,486,487,5,101,0,0,487,488,5,116,0,0,488,489,5,101,0,0,489,500, + 5,114,0,0,490,491,5,80,0,0,491,492,5,65,0,0,492,493,5,82,0,0,493, + 494,5,65,0,0,494,495,5,77,0,0,495,496,5,69,0,0,496,497,5,84,0,0, + 497,498,5,69,0,0,498,500,5,82,0,0,499,481,1,0,0,0,499,490,1,0,0, + 0,500,30,1,0,0,0,501,502,5,101,0,0,502,503,5,120,0,0,503,504,5,116, + 0,0,504,505,5,101,0,0,505,506,5,114,0,0,506,507,5,110,0,0,507,508, + 5,97,0,0,508,518,5,108,0,0,509,510,5,69,0,0,510,511,5,88,0,0,511, + 512,5,84,0,0,512,513,5,69,0,0,513,514,5,82,0,0,514,515,5,78,0,0, + 515,516,5,65,0,0,516,518,5,76,0,0,517,501,1,0,0,0,517,509,1,0,0, + 0,518,32,1,0,0,0,519,520,5,105,0,0,520,521,5,110,0,0,521,522,5,116, + 0,0,522,523,5,114,0,0,523,524,5,105,0,0,524,525,5,110,0,0,525,526, + 5,115,0,0,526,527,5,105,0,0,527,538,5,99,0,0,528,529,5,73,0,0,529, + 530,5,78,0,0,530,531,5,84,0,0,531,532,5,82,0,0,532,533,5,73,0,0, + 533,534,5,78,0,0,534,535,5,83,0,0,535,536,5,73,0,0,536,538,5,67, + 0,0,537,519,1,0,0,0,537,528,1,0,0,0,538,34,1,0,0,0,539,540,5,115, + 0,0,540,541,5,97,0,0,541,542,5,118,0,0,542,548,5,101,0,0,543,544, + 5,83,0,0,544,545,5,65,0,0,545,546,5,86,0,0,546,548,5,69,0,0,547, + 539,1,0,0,0,547,543,1,0,0,0,548,36,1,0,0,0,549,550,5,100,0,0,550, + 551,5,97,0,0,551,552,5,116,0,0,552,558,5,97,0,0,553,554,5,68,0,0, + 554,555,5,65,0,0,555,556,5,84,0,0,556,558,5,65,0,0,557,549,1,0,0, + 0,557,553,1,0,0,0,558,38,1,0,0,0,559,560,5,71,0,0,560,564,5,79,0, + 0,561,562,5,103,0,0,562,564,5,111,0,0,563,559,1,0,0,0,563,561,1, + 0,0,0,564,40,1,0,0,0,565,566,5,71,0,0,566,567,5,79,0,0,567,568,5, + 84,0,0,568,574,5,79,0,0,569,570,5,103,0,0,570,571,5,111,0,0,571, + 572,5,116,0,0,572,574,5,111,0,0,573,565,1,0,0,0,573,569,1,0,0,0, + 574,42,1,0,0,0,575,576,5,73,0,0,576,580,5,70,0,0,577,578,5,105,0, + 0,578,580,5,102,0,0,579,575,1,0,0,0,579,577,1,0,0,0,580,44,1,0,0, + 0,581,582,5,84,0,0,582,583,5,72,0,0,583,584,5,69,0,0,584,590,5,78, + 0,0,585,586,5,116,0,0,586,587,5,104,0,0,587,588,5,101,0,0,588,590, + 5,110,0,0,589,581,1,0,0,0,589,585,1,0,0,0,590,46,1,0,0,0,591,592, + 5,69,0,0,592,593,5,76,0,0,593,594,5,83,0,0,594,600,5,69,0,0,595, + 596,5,101,0,0,596,597,5,108,0,0,597,598,5,115,0,0,598,600,5,101, + 0,0,599,591,1,0,0,0,599,595,1,0,0,0,600,48,1,0,0,0,601,602,5,69, + 0,0,602,603,5,78,0,0,603,604,5,68,0,0,604,605,5,73,0,0,605,612,5, + 70,0,0,606,607,5,101,0,0,607,608,5,110,0,0,608,609,5,100,0,0,609, + 610,5,105,0,0,610,612,5,102,0,0,611,601,1,0,0,0,611,606,1,0,0,0, + 612,50,1,0,0,0,613,614,5,69,0,0,614,615,5,76,0,0,615,616,5,83,0, + 0,616,617,5,69,0,0,617,618,5,73,0,0,618,626,5,70,0,0,619,620,5,101, + 0,0,620,621,5,108,0,0,621,622,5,115,0,0,622,623,5,101,0,0,623,624, + 5,105,0,0,624,626,5,102,0,0,625,613,1,0,0,0,625,619,1,0,0,0,626, + 52,1,0,0,0,627,628,5,68,0,0,628,632,5,79,0,0,629,630,5,100,0,0,630, + 632,5,111,0,0,631,627,1,0,0,0,631,629,1,0,0,0,632,54,1,0,0,0,633, + 634,5,67,0,0,634,635,5,79,0,0,635,636,5,78,0,0,636,637,5,84,0,0, + 637,638,5,73,0,0,638,639,5,78,0,0,639,640,5,85,0,0,640,650,5,69, + 0,0,641,642,5,99,0,0,642,643,5,111,0,0,643,644,5,110,0,0,644,645, + 5,116,0,0,645,646,5,105,0,0,646,647,5,110,0,0,647,648,5,117,0,0, + 648,650,5,101,0,0,649,633,1,0,0,0,649,641,1,0,0,0,650,56,1,0,0,0, + 651,652,5,83,0,0,652,653,5,84,0,0,653,654,5,79,0,0,654,660,5,80, + 0,0,655,656,5,115,0,0,656,657,5,116,0,0,657,658,5,111,0,0,658,660, + 5,112,0,0,659,651,1,0,0,0,659,655,1,0,0,0,660,58,1,0,0,0,661,662, + 5,69,0,0,662,663,5,78,0,0,663,664,5,68,0,0,664,665,5,68,0,0,665, + 672,5,79,0,0,666,667,5,101,0,0,667,668,5,110,0,0,668,669,5,100,0, + 0,669,670,5,100,0,0,670,672,5,111,0,0,671,661,1,0,0,0,671,666,1, + 0,0,0,672,60,1,0,0,0,673,674,5,112,0,0,674,675,5,97,0,0,675,676, + 5,117,0,0,676,677,5,115,0,0,677,684,5,101,0,0,678,679,5,80,0,0,679, + 680,5,65,0,0,680,681,5,85,0,0,681,682,5,83,0,0,682,684,5,69,0,0, + 683,673,1,0,0,0,683,678,1,0,0,0,684,62,1,0,0,0,685,686,5,87,0,0, + 686,687,5,82,0,0,687,688,5,73,0,0,688,689,5,84,0,0,689,696,5,69, + 0,0,690,691,5,119,0,0,691,692,5,114,0,0,692,693,5,105,0,0,693,694, + 5,116,0,0,694,696,5,101,0,0,695,685,1,0,0,0,695,690,1,0,0,0,696, + 64,1,0,0,0,697,698,5,82,0,0,698,699,5,69,0,0,699,700,5,65,0,0,700, + 706,5,68,0,0,701,702,5,114,0,0,702,703,5,101,0,0,703,704,5,97,0, + 0,704,706,5,100,0,0,705,697,1,0,0,0,705,701,1,0,0,0,706,66,1,0,0, + 0,707,708,5,80,0,0,708,709,5,82,0,0,709,710,5,73,0,0,710,711,5,78, + 0,0,711,718,5,84,0,0,712,713,5,112,0,0,713,714,5,114,0,0,714,715, + 5,105,0,0,715,716,5,110,0,0,716,718,5,116,0,0,717,707,1,0,0,0,717, + 712,1,0,0,0,718,68,1,0,0,0,719,720,5,79,0,0,720,721,5,80,0,0,721, + 722,5,69,0,0,722,728,5,78,0,0,723,724,5,111,0,0,724,725,5,112,0, + 0,725,726,5,101,0,0,726,728,5,110,0,0,727,719,1,0,0,0,727,723,1, + 0,0,0,728,70,1,0,0,0,729,730,5,70,0,0,730,731,5,77,0,0,731,736,5, + 84,0,0,732,733,5,102,0,0,733,734,5,109,0,0,734,736,5,116,0,0,735, + 729,1,0,0,0,735,732,1,0,0,0,736,72,1,0,0,0,737,738,5,85,0,0,738, + 739,5,78,0,0,739,740,5,73,0,0,740,746,5,84,0,0,741,742,5,117,0,0, + 742,743,5,110,0,0,743,744,5,105,0,0,744,746,5,116,0,0,745,737,1, + 0,0,0,745,741,1,0,0,0,746,74,1,0,0,0,747,748,5,101,0,0,748,749,5, + 114,0,0,749,754,5,114,0,0,750,751,5,69,0,0,751,752,5,82,0,0,752, + 754,5,82,0,0,753,747,1,0,0,0,753,750,1,0,0,0,754,76,1,0,0,0,755, + 756,5,73,0,0,756,757,5,79,0,0,757,758,5,83,0,0,758,759,5,84,0,0, + 759,760,5,65,0,0,760,768,5,84,0,0,761,762,5,105,0,0,762,763,5,111, + 0,0,763,764,5,115,0,0,764,765,5,116,0,0,765,766,5,97,0,0,766,768, + 5,116,0,0,767,755,1,0,0,0,767,761,1,0,0,0,768,78,1,0,0,0,769,770, + 5,70,0,0,770,771,5,79,0,0,771,772,5,82,0,0,772,773,5,77,0,0,773, + 774,5,65,0,0,774,782,5,84,0,0,775,776,5,102,0,0,776,777,5,111,0, + 0,777,778,5,114,0,0,778,779,5,109,0,0,779,780,5,97,0,0,780,782,5, + 116,0,0,781,769,1,0,0,0,781,775,1,0,0,0,782,80,1,0,0,0,783,784,5, + 76,0,0,784,785,5,69,0,0,785,790,5,84,0,0,786,787,5,108,0,0,787,788, + 5,101,0,0,788,790,5,116,0,0,789,783,1,0,0,0,789,786,1,0,0,0,790, + 82,1,0,0,0,791,792,5,67,0,0,792,793,5,65,0,0,793,794,5,76,0,0,794, + 800,5,76,0,0,795,796,5,99,0,0,796,797,5,97,0,0,797,798,5,108,0,0, + 798,800,5,108,0,0,799,791,1,0,0,0,799,795,1,0,0,0,800,84,1,0,0,0, + 801,802,5,82,0,0,802,803,5,69,0,0,803,804,5,84,0,0,804,805,5,85, + 0,0,805,806,5,82,0,0,806,814,5,78,0,0,807,808,5,114,0,0,808,809, + 5,101,0,0,809,810,5,116,0,0,810,811,5,117,0,0,811,812,5,114,0,0, + 812,814,5,110,0,0,813,801,1,0,0,0,813,807,1,0,0,0,814,86,1,0,0,0, + 815,816,5,67,0,0,816,817,5,76,0,0,817,818,5,79,0,0,818,819,5,83, + 0,0,819,826,5,69,0,0,820,821,5,99,0,0,821,822,5,108,0,0,822,823, + 5,111,0,0,823,824,5,115,0,0,824,826,5,101,0,0,825,815,1,0,0,0,825, + 820,1,0,0,0,826,88,1,0,0,0,827,828,5,68,0,0,828,829,5,79,0,0,829, + 830,5,85,0,0,830,831,5,66,0,0,831,832,5,76,0,0,832,840,5,69,0,0, + 833,834,5,100,0,0,834,835,5,111,0,0,835,836,5,117,0,0,836,837,5, + 98,0,0,837,838,5,108,0,0,838,840,5,101,0,0,839,827,1,0,0,0,839,833, + 1,0,0,0,840,90,1,0,0,0,841,842,5,73,0,0,842,843,5,79,0,0,843,844, + 5,83,0,0,844,845,5,84,0,0,845,846,5,65,0,0,846,847,5,82,0,0,847, + 856,5,84,0,0,848,849,5,105,0,0,849,850,5,111,0,0,850,851,5,115,0, + 0,851,852,5,116,0,0,852,853,5,97,0,0,853,854,5,114,0,0,854,856,5, + 116,0,0,855,841,1,0,0,0,855,848,1,0,0,0,856,92,1,0,0,0,857,858,5, + 83,0,0,858,859,5,69,0,0,859,860,5,81,0,0,860,861,5,85,0,0,861,862, + 5,69,0,0,862,863,5,78,0,0,863,864,5,84,0,0,864,865,5,73,0,0,865, + 866,5,65,0,0,866,878,5,76,0,0,867,868,5,115,0,0,868,869,5,101,0, + 0,869,870,5,113,0,0,870,871,5,117,0,0,871,872,5,101,0,0,872,873, + 5,110,0,0,873,874,5,116,0,0,874,875,5,105,0,0,875,876,5,97,0,0,876, + 878,5,108,0,0,877,857,1,0,0,0,877,867,1,0,0,0,878,94,1,0,0,0,879, + 880,5,76,0,0,880,881,5,65,0,0,881,882,5,66,0,0,882,883,5,69,0,0, + 883,890,5,76,0,0,884,885,5,108,0,0,885,886,5,97,0,0,886,887,5,98, + 0,0,887,888,5,101,0,0,888,890,5,108,0,0,889,879,1,0,0,0,889,884, + 1,0,0,0,890,96,1,0,0,0,891,892,5,102,0,0,892,893,5,105,0,0,893,894, + 5,108,0,0,894,900,5,101,0,0,895,896,5,70,0,0,896,897,5,73,0,0,897, + 898,5,76,0,0,898,900,5,69,0,0,899,891,1,0,0,0,899,895,1,0,0,0,900, + 98,1,0,0,0,901,902,5,83,0,0,902,903,5,84,0,0,903,904,5,65,0,0,904, + 905,5,84,0,0,905,906,5,85,0,0,906,914,5,83,0,0,907,908,5,115,0,0, + 908,909,5,116,0,0,909,910,5,97,0,0,910,911,5,116,0,0,911,912,5,117, + 0,0,912,914,5,115,0,0,913,901,1,0,0,0,913,907,1,0,0,0,914,100,1, + 0,0,0,915,916,5,65,0,0,916,917,5,67,0,0,917,918,5,67,0,0,918,919, + 5,69,0,0,919,920,5,83,0,0,920,928,5,83,0,0,921,922,5,97,0,0,922, + 923,5,99,0,0,923,924,5,99,0,0,924,925,5,101,0,0,925,926,5,115,0, + 0,926,928,5,115,0,0,927,915,1,0,0,0,927,921,1,0,0,0,928,102,1,0, + 0,0,929,930,5,80,0,0,930,931,5,79,0,0,931,932,5,83,0,0,932,933,5, + 73,0,0,933,934,5,84,0,0,934,935,5,73,0,0,935,936,5,79,0,0,936,946, + 5,78,0,0,937,938,5,112,0,0,938,939,5,111,0,0,939,940,5,115,0,0,940, + 941,5,105,0,0,941,942,5,116,0,0,942,943,5,105,0,0,943,944,5,111, + 0,0,944,946,5,110,0,0,945,929,1,0,0,0,945,937,1,0,0,0,946,104,1, + 0,0,0,947,948,5,70,0,0,948,949,5,79,0,0,949,950,5,82,0,0,950,956, + 5,77,0,0,951,952,5,102,0,0,952,953,5,111,0,0,953,954,5,114,0,0,954, + 956,5,109,0,0,955,947,1,0,0,0,955,951,1,0,0,0,956,106,1,0,0,0,957, + 958,5,82,0,0,958,959,5,69,0,0,959,960,5,67,0,0,960,966,5,76,0,0, + 961,962,5,114,0,0,962,963,5,101,0,0,963,964,5,99,0,0,964,966,5,108, + 0,0,965,957,1,0,0,0,965,961,1,0,0,0,966,108,1,0,0,0,967,968,5,66, + 0,0,968,969,5,76,0,0,969,970,5,65,0,0,970,971,5,78,0,0,971,978,5, + 75,0,0,972,973,5,98,0,0,973,974,5,108,0,0,974,975,5,97,0,0,975,976, + 5,110,0,0,976,978,5,107,0,0,977,967,1,0,0,0,977,972,1,0,0,0,978, + 110,1,0,0,0,979,980,5,69,0,0,980,981,5,88,0,0,981,982,5,73,0,0,982, + 983,5,83,0,0,983,990,5,84,0,0,984,985,5,101,0,0,985,986,5,120,0, + 0,986,987,5,105,0,0,987,988,5,115,0,0,988,990,5,116,0,0,989,979, + 1,0,0,0,989,984,1,0,0,0,990,112,1,0,0,0,991,992,5,79,0,0,992,993, + 5,80,0,0,993,994,5,69,0,0,994,995,5,78,0,0,995,996,5,69,0,0,996, + 1004,5,68,0,0,997,998,5,111,0,0,998,999,5,112,0,0,999,1000,5,101, + 0,0,1000,1001,5,110,0,0,1001,1002,5,101,0,0,1002,1004,5,100,0,0, + 1003,991,1,0,0,0,1003,997,1,0,0,0,1004,114,1,0,0,0,1005,1006,5,78, + 0,0,1006,1007,5,85,0,0,1007,1008,5,77,0,0,1008,1009,5,66,0,0,1009, + 1010,5,69,0,0,1010,1018,5,82,0,0,1011,1012,5,110,0,0,1012,1013,5, + 117,0,0,1013,1014,5,109,0,0,1014,1015,5,98,0,0,1015,1016,5,101,0, + 0,1016,1018,5,114,0,0,1017,1005,1,0,0,0,1017,1011,1,0,0,0,1018,116, + 1,0,0,0,1019,1020,5,78,0,0,1020,1021,5,65,0,0,1021,1022,5,77,0,0, + 1022,1023,5,69,0,0,1023,1030,5,68,0,0,1024,1025,5,110,0,0,1025,1026, + 5,97,0,0,1026,1027,5,109,0,0,1027,1028,5,101,0,0,1028,1030,5,100, + 0,0,1029,1019,1,0,0,0,1029,1024,1,0,0,0,1030,118,1,0,0,0,1031,1032, + 5,78,0,0,1032,1033,5,65,0,0,1033,1034,5,77,0,0,1034,1040,5,69,0, + 0,1035,1036,5,110,0,0,1036,1037,5,97,0,0,1037,1038,5,109,0,0,1038, + 1040,5,101,0,0,1039,1031,1,0,0,0,1039,1035,1,0,0,0,1040,120,1,0, + 0,0,1041,1042,5,70,0,0,1042,1043,5,79,0,0,1043,1044,5,82,0,0,1044, + 1045,5,77,0,0,1045,1046,5,65,0,0,1046,1047,5,84,0,0,1047,1048,5, + 84,0,0,1048,1049,5,69,0,0,1049,1060,5,68,0,0,1050,1051,5,102,0,0, + 1051,1052,5,111,0,0,1052,1053,5,114,0,0,1053,1054,5,109,0,0,1054, + 1055,5,97,0,0,1055,1056,5,116,0,0,1056,1057,5,116,0,0,1057,1058, + 5,101,0,0,1058,1060,5,100,0,0,1059,1041,1,0,0,0,1059,1050,1,0,0, + 0,1060,122,1,0,0,0,1061,1062,5,85,0,0,1062,1063,5,78,0,0,1063,1064, + 5,70,0,0,1064,1065,5,79,0,0,1065,1066,5,82,0,0,1066,1067,5,77,0, + 0,1067,1068,5,65,0,0,1068,1069,5,84,0,0,1069,1070,5,84,0,0,1070, + 1071,5,69,0,0,1071,1084,5,68,0,0,1072,1073,5,117,0,0,1073,1074,5, + 110,0,0,1074,1075,5,102,0,0,1075,1076,5,111,0,0,1076,1077,5,114, + 0,0,1077,1078,5,109,0,0,1078,1079,5,97,0,0,1079,1080,5,116,0,0,1080, + 1081,5,116,0,0,1081,1082,5,101,0,0,1082,1084,5,100,0,0,1083,1061, + 1,0,0,0,1083,1072,1,0,0,0,1084,124,1,0,0,0,1085,1086,5,78,0,0,1086, + 1087,5,69,0,0,1087,1088,5,88,0,0,1088,1089,5,84,0,0,1089,1090,5, + 82,0,0,1090,1091,5,69,0,0,1091,1100,5,67,0,0,1092,1093,5,110,0,0, + 1093,1094,5,101,0,0,1094,1095,5,120,0,0,1095,1096,5,116,0,0,1096, + 1097,5,114,0,0,1097,1098,5,101,0,0,1098,1100,5,99,0,0,1099,1085, + 1,0,0,0,1099,1092,1,0,0,0,1100,126,1,0,0,0,1101,1102,5,73,0,0,1102, + 1103,5,78,0,0,1103,1104,5,81,0,0,1104,1105,5,85,0,0,1105,1106,5, + 73,0,0,1106,1107,5,82,0,0,1107,1116,5,69,0,0,1108,1109,5,105,0,0, + 1109,1110,5,110,0,0,1110,1111,5,113,0,0,1111,1112,5,117,0,0,1112, + 1113,5,105,0,0,1113,1114,5,114,0,0,1114,1116,5,101,0,0,1115,1101, + 1,0,0,0,1115,1108,1,0,0,0,1116,128,1,0,0,0,1117,1118,5,66,0,0,1118, + 1119,5,65,0,0,1119,1120,5,67,0,0,1120,1121,5,75,0,0,1121,1122,5, + 83,0,0,1122,1123,5,80,0,0,1123,1124,5,65,0,0,1124,1125,5,67,0,0, + 1125,1136,5,69,0,0,1126,1127,5,98,0,0,1127,1128,5,97,0,0,1128,1129, + 5,99,0,0,1129,1130,5,107,0,0,1130,1131,5,115,0,0,1131,1132,5,112, + 0,0,1132,1133,5,97,0,0,1133,1134,5,99,0,0,1134,1136,5,101,0,0,1135, + 1117,1,0,0,0,1135,1126,1,0,0,0,1136,130,1,0,0,0,1137,1138,5,69,0, + 0,1138,1139,5,78,0,0,1139,1140,5,68,0,0,1140,1141,5,70,0,0,1141, + 1142,5,73,0,0,1142,1143,5,76,0,0,1143,1152,5,69,0,0,1144,1145,5, + 101,0,0,1145,1146,5,110,0,0,1146,1147,5,100,0,0,1147,1148,5,102, + 0,0,1148,1149,5,105,0,0,1149,1150,5,108,0,0,1150,1152,5,101,0,0, + 1151,1137,1,0,0,0,1151,1144,1,0,0,0,1152,132,1,0,0,0,1153,1154,5, + 82,0,0,1154,1155,5,69,0,0,1155,1156,5,87,0,0,1156,1157,5,73,0,0, + 1157,1158,5,78,0,0,1158,1166,5,68,0,0,1159,1160,5,114,0,0,1160,1161, + 5,101,0,0,1161,1162,5,119,0,0,1162,1163,5,105,0,0,1163,1164,5,110, + 0,0,1164,1166,5,100,0,0,1165,1153,1,0,0,0,1165,1159,1,0,0,0,1166, + 134,1,0,0,0,1167,1168,5,36,0,0,1168,136,1,0,0,0,1169,1170,5,44,0, + 0,1170,138,1,0,0,0,1171,1172,5,40,0,0,1172,140,1,0,0,0,1173,1174, + 5,41,0,0,1174,142,1,0,0,0,1175,1176,5,58,0,0,1176,144,1,0,0,0,1177, + 1178,5,61,0,0,1178,146,1,0,0,0,1179,1180,5,45,0,0,1180,148,1,0,0, + 0,1181,1182,5,43,0,0,1182,150,1,0,0,0,1183,1184,5,47,0,0,1184,152, + 1,0,0,0,1185,1186,5,42,0,0,1186,154,1,0,0,0,1187,1188,5,42,0,0,1188, + 1189,5,42,0,0,1189,156,1,0,0,0,1190,1191,5,46,0,0,1191,1192,5,110, + 0,0,1192,1193,5,111,0,0,1193,1194,5,116,0,0,1194,1201,5,46,0,0,1195, + 1196,5,46,0,0,1196,1197,5,78,0,0,1197,1198,5,79,0,0,1198,1199,5, + 84,0,0,1199,1201,5,46,0,0,1200,1190,1,0,0,0,1200,1195,1,0,0,0,1201, + 158,1,0,0,0,1202,1203,5,46,0,0,1203,1204,5,97,0,0,1204,1205,5,110, + 0,0,1205,1206,5,100,0,0,1206,1213,5,46,0,0,1207,1208,5,46,0,0,1208, + 1209,5,65,0,0,1209,1210,5,78,0,0,1210,1211,5,68,0,0,1211,1213,5, + 46,0,0,1212,1202,1,0,0,0,1212,1207,1,0,0,0,1213,160,1,0,0,0,1214, + 1215,5,46,0,0,1215,1216,5,111,0,0,1216,1217,5,114,0,0,1217,1223, + 5,46,0,0,1218,1219,5,46,0,0,1219,1220,5,79,0,0,1220,1221,5,82,0, + 0,1221,1223,5,46,0,0,1222,1214,1,0,0,0,1222,1218,1,0,0,0,1223,162, + 1,0,0,0,1224,1225,5,46,0,0,1225,1226,5,101,0,0,1226,1227,5,113,0, + 0,1227,1228,5,118,0,0,1228,1235,5,46,0,0,1229,1230,5,46,0,0,1230, + 1231,5,69,0,0,1231,1232,5,81,0,0,1232,1233,5,86,0,0,1233,1235,5, + 46,0,0,1234,1224,1,0,0,0,1234,1229,1,0,0,0,1235,164,1,0,0,0,1236, + 1237,5,46,0,0,1237,1238,5,110,0,0,1238,1239,5,101,0,0,1239,1240, + 5,113,0,0,1240,1241,5,118,0,0,1241,1249,5,46,0,0,1242,1243,5,46, + 0,0,1243,1244,5,78,0,0,1244,1245,5,69,0,0,1245,1246,5,81,0,0,1246, + 1247,5,86,0,0,1247,1249,5,46,0,0,1248,1236,1,0,0,0,1248,1242,1,0, + 0,0,1249,166,1,0,0,0,1250,1251,5,46,0,0,1251,1252,5,120,0,0,1252, + 1253,5,111,0,0,1253,1254,5,114,0,0,1254,1261,5,46,0,0,1255,1256, + 5,46,0,0,1256,1257,5,88,0,0,1257,1258,5,79,0,0,1258,1259,5,82,0, + 0,1259,1261,5,46,0,0,1260,1250,1,0,0,0,1260,1255,1,0,0,0,1261,168, + 1,0,0,0,1262,1263,5,46,0,0,1263,1264,5,101,0,0,1264,1265,5,111,0, + 0,1265,1266,5,114,0,0,1266,1273,5,46,0,0,1267,1268,5,46,0,0,1268, + 1269,5,69,0,0,1269,1270,5,79,0,0,1270,1271,5,82,0,0,1271,1273,5, + 46,0,0,1272,1262,1,0,0,0,1272,1267,1,0,0,0,1273,170,1,0,0,0,1274, + 1275,5,46,0,0,1275,1276,5,108,0,0,1276,1277,5,116,0,0,1277,1283, + 5,46,0,0,1278,1279,5,46,0,0,1279,1280,5,76,0,0,1280,1281,5,84,0, + 0,1281,1283,5,46,0,0,1282,1274,1,0,0,0,1282,1278,1,0,0,0,1283,172, + 1,0,0,0,1284,1285,5,46,0,0,1285,1286,5,108,0,0,1286,1287,5,101,0, + 0,1287,1293,5,46,0,0,1288,1289,5,46,0,0,1289,1290,5,76,0,0,1290, + 1291,5,69,0,0,1291,1293,5,46,0,0,1292,1284,1,0,0,0,1292,1288,1,0, + 0,0,1293,174,1,0,0,0,1294,1295,5,46,0,0,1295,1296,5,103,0,0,1296, + 1297,5,116,0,0,1297,1303,5,46,0,0,1298,1299,5,46,0,0,1299,1300,5, + 71,0,0,1300,1301,5,84,0,0,1301,1303,5,46,0,0,1302,1294,1,0,0,0,1302, + 1298,1,0,0,0,1303,176,1,0,0,0,1304,1305,5,46,0,0,1305,1306,5,103, + 0,0,1306,1307,5,101,0,0,1307,1313,5,46,0,0,1308,1309,5,46,0,0,1309, + 1310,5,71,0,0,1310,1311,5,69,0,0,1311,1313,5,46,0,0,1312,1304,1, + 0,0,0,1312,1308,1,0,0,0,1313,178,1,0,0,0,1314,1315,5,46,0,0,1315, + 1316,5,110,0,0,1316,1317,5,101,0,0,1317,1323,5,46,0,0,1318,1319, + 5,46,0,0,1319,1320,5,78,0,0,1320,1321,5,69,0,0,1321,1323,5,46,0, + 0,1322,1314,1,0,0,0,1322,1318,1,0,0,0,1323,180,1,0,0,0,1324,1325, + 5,46,0,0,1325,1326,5,101,0,0,1326,1327,5,113,0,0,1327,1333,5,46, + 0,0,1328,1329,5,46,0,0,1329,1330,5,69,0,0,1330,1331,5,81,0,0,1331, + 1333,5,46,0,0,1332,1324,1,0,0,0,1332,1328,1,0,0,0,1333,182,1,0,0, + 0,1334,1335,5,46,0,0,1335,1336,5,116,0,0,1336,1337,5,114,0,0,1337, + 1338,5,117,0,0,1338,1339,5,101,0,0,1339,1347,5,46,0,0,1340,1341, + 5,46,0,0,1341,1342,5,84,0,0,1342,1343,5,82,0,0,1343,1344,5,85,0, + 0,1344,1345,5,69,0,0,1345,1347,5,46,0,0,1346,1334,1,0,0,0,1346,1340, + 1,0,0,0,1347,184,1,0,0,0,1348,1349,5,46,0,0,1349,1350,5,102,0,0, + 1350,1351,5,97,0,0,1351,1352,5,108,0,0,1352,1353,5,115,0,0,1353, + 1354,5,101,0,0,1354,1363,5,46,0,0,1355,1356,5,46,0,0,1356,1357,5, + 70,0,0,1357,1358,5,65,0,0,1358,1359,5,76,0,0,1359,1360,5,83,0,0, + 1360,1361,5,69,0,0,1361,1363,5,46,0,0,1362,1348,1,0,0,0,1362,1355, + 1,0,0,0,1363,186,1,0,0,0,1364,1365,5,88,0,0,1365,1366,5,67,0,0,1366, + 1367,5,79,0,0,1367,1368,5,78,0,0,1368,188,1,0,0,0,1369,1370,5,80, + 0,0,1370,1371,5,67,0,0,1371,1372,5,79,0,0,1372,1373,5,78,0,0,1373, + 190,1,0,0,0,1374,1375,5,70,0,0,1375,1376,5,67,0,0,1376,1377,5,79, + 0,0,1377,1378,5,78,0,0,1378,192,1,0,0,0,1379,1380,5,67,0,0,1380, + 1381,5,67,0,0,1381,1382,5,79,0,0,1382,1383,5,78,0,0,1383,194,1,0, + 0,0,1384,1385,5,72,0,0,1385,1386,5,79,0,0,1386,1387,5,76,0,0,1387, + 1388,5,76,0,0,1388,1389,5,69,0,0,1389,1390,5,82,0,0,1390,1391,5, + 73,0,0,1391,1392,5,84,0,0,1392,1393,5,72,0,0,1393,196,1,0,0,0,1394, + 1395,5,67,0,0,1395,1396,5,79,0,0,1396,1397,5,78,0,0,1397,1398,5, + 67,0,0,1398,1399,5,65,0,0,1399,1400,5,84,0,0,1400,1401,5,79,0,0, + 1401,1402,5,80,0,0,1402,198,1,0,0,0,1403,1404,5,67,0,0,1404,1405, + 5,84,0,0,1405,1406,5,82,0,0,1406,1407,5,76,0,0,1407,1408,5,68,0, + 0,1408,1409,5,73,0,0,1409,1410,5,82,0,0,1410,1411,5,69,0,0,1411, + 1412,5,67,0,0,1412,1413,5,84,0,0,1413,200,1,0,0,0,1414,1415,5,67, + 0,0,1415,1416,5,84,0,0,1416,1417,5,82,0,0,1417,1418,5,76,0,0,1418, + 1419,5,82,0,0,1419,1420,5,69,0,0,1420,1421,5,67,0,0,1421,202,1,0, + 0,0,1422,1423,5,84,0,0,1423,1424,5,79,0,0,1424,204,1,0,0,0,1425, + 1426,5,83,0,0,1426,1427,5,85,0,0,1427,1428,5,66,0,0,1428,1429,5, + 80,0,0,1429,1430,5,82,0,0,1430,1431,5,79,0,0,1431,1432,5,71,0,0, + 1432,1433,5,82,0,0,1433,1434,5,65,0,0,1434,1435,5,77,0,0,1435,1436, + 5,66,0,0,1436,1437,5,76,0,0,1437,1438,5,79,0,0,1438,1439,5,67,0, + 0,1439,1440,5,75,0,0,1440,206,1,0,0,0,1441,1442,5,68,0,0,1442,1443, + 5,79,0,0,1443,1444,5,66,0,0,1444,1445,5,76,0,0,1445,1446,5,79,0, + 0,1446,1447,5,67,0,0,1447,1448,5,75,0,0,1448,208,1,0,0,0,1449,1450, + 5,65,0,0,1450,1451,5,73,0,0,1451,1452,5,70,0,0,1452,210,1,0,0,0, + 1453,1454,5,84,0,0,1454,1455,5,72,0,0,1455,1456,5,69,0,0,1456,1457, + 5,78,0,0,1457,1458,5,66,0,0,1458,1459,5,76,0,0,1459,1460,5,79,0, + 0,1460,1461,5,67,0,0,1461,1462,5,75,0,0,1462,212,1,0,0,0,1463,1464, + 5,69,0,0,1464,1465,5,76,0,0,1465,1466,5,83,0,0,1466,1467,5,69,0, + 0,1467,1468,5,66,0,0,1468,1469,5,76,0,0,1469,1470,5,79,0,0,1470, + 1471,5,67,0,0,1471,1472,5,75,0,0,1472,214,1,0,0,0,1473,1474,5,67, + 0,0,1474,1475,5,79,0,0,1475,1476,5,68,0,0,1476,1477,5,69,0,0,1477, + 1478,5,82,0,0,1478,1479,5,79,0,0,1479,1480,5,79,0,0,1480,1481,5, + 84,0,0,1481,216,1,0,0,0,1482,1483,5,67,0,0,1483,1484,5,79,0,0,1484, + 1485,5,77,0,0,1485,1486,5,80,0,0,1486,1487,5,76,0,0,1487,1488,5, + 69,0,0,1488,1497,5,88,0,0,1489,1490,5,99,0,0,1490,1491,5,111,0,0, + 1491,1492,5,109,0,0,1492,1493,5,112,0,0,1493,1494,5,108,0,0,1494, + 1495,5,101,0,0,1495,1497,5,120,0,0,1496,1482,1,0,0,0,1496,1489,1, + 0,0,0,1497,218,1,0,0,0,1498,1499,5,80,0,0,1499,1500,5,82,0,0,1500, + 1501,5,69,0,0,1501,1502,5,67,0,0,1502,1503,5,73,0,0,1503,1504,5, + 83,0,0,1504,1505,5,73,0,0,1505,1506,5,79,0,0,1506,1517,5,78,0,0, + 1507,1508,5,112,0,0,1508,1509,5,114,0,0,1509,1510,5,101,0,0,1510, + 1511,5,99,0,0,1511,1512,5,105,0,0,1512,1513,5,115,0,0,1513,1514, + 5,105,0,0,1514,1515,5,111,0,0,1515,1517,5,110,0,0,1516,1498,1,0, + 0,0,1516,1507,1,0,0,0,1517,220,1,0,0,0,1518,1519,5,73,0,0,1519,1520, + 5,78,0,0,1520,1521,5,84,0,0,1521,1522,5,69,0,0,1522,1523,5,71,0, + 0,1523,1524,5,69,0,0,1524,1533,5,82,0,0,1525,1526,5,105,0,0,1526, + 1527,5,110,0,0,1527,1528,5,116,0,0,1528,1529,5,101,0,0,1529,1530, + 5,103,0,0,1530,1531,5,101,0,0,1531,1533,5,114,0,0,1532,1518,1,0, + 0,0,1532,1525,1,0,0,0,1533,222,1,0,0,0,1534,1535,5,76,0,0,1535,1536, + 5,79,0,0,1536,1537,5,71,0,0,1537,1538,5,73,0,0,1538,1539,5,67,0, + 0,1539,1540,5,65,0,0,1540,1549,5,76,0,0,1541,1542,5,108,0,0,1542, + 1543,5,111,0,0,1543,1544,5,103,0,0,1544,1545,5,105,0,0,1545,1546, + 5,99,0,0,1546,1547,5,97,0,0,1547,1549,5,108,0,0,1548,1534,1,0,0, + 0,1548,1541,1,0,0,0,1549,224,1,0,0,0,1550,1551,8,0,0,0,1551,226, + 1,0,0,0,1552,1555,3,237,118,0,1553,1555,3,239,119,0,1554,1552,1, + 0,0,0,1554,1553,1,0,0,0,1555,228,1,0,0,0,1556,1559,3,239,119,0,1557, + 1559,2,97,102,0,1558,1556,1,0,0,0,1558,1557,1,0,0,0,1559,230,1,0, + 0,0,1560,1561,7,1,0,0,1561,232,1,0,0,0,1562,1564,7,2,0,0,1563,1565, + 3,239,119,0,1564,1563,1,0,0,0,1565,1566,1,0,0,0,1566,1564,1,0,0, + 0,1566,1567,1,0,0,0,1567,1568,1,0,0,0,1568,1570,5,46,0,0,1569,1571, + 3,239,119,0,1570,1569,1,0,0,0,1571,1572,1,0,0,0,1572,1570,1,0,0, + 0,1572,1573,1,0,0,0,1573,1595,1,0,0,0,1574,1576,7,3,0,0,1575,1577, + 3,239,119,0,1576,1575,1,0,0,0,1577,1578,1,0,0,0,1578,1576,1,0,0, + 0,1578,1579,1,0,0,0,1579,1580,1,0,0,0,1580,1582,5,46,0,0,1581,1583, + 3,239,119,0,1582,1581,1,0,0,0,1583,1584,1,0,0,0,1584,1582,1,0,0, + 0,1584,1585,1,0,0,0,1585,1592,1,0,0,0,1586,1588,5,101,0,0,1587,1589, + 3,239,119,0,1588,1587,1,0,0,0,1589,1590,1,0,0,0,1590,1588,1,0,0, + 0,1590,1591,1,0,0,0,1591,1593,1,0,0,0,1592,1586,1,0,0,0,1592,1593, + 1,0,0,0,1593,1595,1,0,0,0,1594,1562,1,0,0,0,1594,1574,1,0,0,0,1595, + 234,1,0,0,0,1596,1598,7,4,0,0,1597,1599,3,231,115,0,1598,1597,1, + 0,0,0,1598,1599,1,0,0,0,1599,1601,1,0,0,0,1600,1602,3,239,119,0, + 1601,1600,1,0,0,0,1602,1603,1,0,0,0,1603,1601,1,0,0,0,1603,1604, + 1,0,0,0,1604,236,1,0,0,0,1605,1607,7,5,0,0,1606,1605,1,0,0,0,1607, + 238,1,0,0,0,1608,1609,2,48,57,0,1609,240,1,0,0,0,1610,1646,5,39, + 0,0,1611,1612,5,39,0,0,1612,1645,5,39,0,0,1613,1645,8,6,0,0,1614, + 1620,5,10,0,0,1615,1617,5,13,0,0,1616,1618,5,10,0,0,1617,1616,1, + 0,0,0,1617,1618,1,0,0,0,1618,1620,1,0,0,0,1619,1614,1,0,0,0,1619, + 1615,1,0,0,0,1620,1621,1,0,0,0,1621,1622,5,32,0,0,1622,1623,5,32, + 0,0,1623,1624,5,32,0,0,1624,1625,5,32,0,0,1625,1626,5,32,0,0,1626, + 1627,1,0,0,0,1627,1628,3,225,112,0,1628,1634,1,0,0,0,1629,1635,5, + 10,0,0,1630,1632,5,13,0,0,1631,1633,5,10,0,0,1632,1631,1,0,0,0,1632, + 1633,1,0,0,0,1633,1635,1,0,0,0,1634,1629,1,0,0,0,1634,1630,1,0,0, + 0,1635,1636,1,0,0,0,1636,1637,5,32,0,0,1637,1638,5,32,0,0,1638,1639, + 5,32,0,0,1639,1640,5,32,0,0,1640,1641,5,32,0,0,1641,1642,1,0,0,0, + 1642,1643,3,225,112,0,1643,1645,1,0,0,0,1644,1611,1,0,0,0,1644,1613, + 1,0,0,0,1644,1619,1,0,0,0,1645,1648,1,0,0,0,1646,1644,1,0,0,0,1646, + 1647,1,0,0,0,1647,1649,1,0,0,0,1648,1646,1,0,0,0,1649,1650,5,39, + 0,0,1650,242,1,0,0,0,1651,1653,3,239,119,0,1652,1651,1,0,0,0,1653, + 1654,1,0,0,0,1654,1652,1,0,0,0,1654,1655,1,0,0,0,1655,1656,1,0,0, + 0,1656,1660,5,46,0,0,1657,1659,3,239,119,0,1658,1657,1,0,0,0,1659, + 1662,1,0,0,0,1660,1658,1,0,0,0,1660,1661,1,0,0,0,1661,1664,1,0,0, + 0,1662,1660,1,0,0,0,1663,1665,3,235,117,0,1664,1663,1,0,0,0,1664, + 1665,1,0,0,0,1665,244,1,0,0,0,1666,1668,3,239,119,0,1667,1666,1, + 0,0,0,1668,1669,1,0,0,0,1669,1667,1,0,0,0,1669,1670,1,0,0,0,1670, + 246,1,0,0,0,1671,1673,7,7,0,0,1672,1674,3,239,119,0,1673,1672,1, + 0,0,0,1674,1675,1,0,0,0,1675,1673,1,0,0,0,1675,1676,1,0,0,0,1676, + 1677,1,0,0,0,1677,1678,5,46,0,0,1678,1679,1,0,0,0,1679,1680,3,233, + 116,0,1680,1693,1,0,0,0,1681,1683,3,227,113,0,1682,1681,1,0,0,0, + 1683,1684,1,0,0,0,1684,1682,1,0,0,0,1684,1685,1,0,0,0,1685,1689, + 1,0,0,0,1686,1688,3,227,113,0,1687,1686,1,0,0,0,1688,1691,1,0,0, + 0,1689,1687,1,0,0,0,1689,1690,1,0,0,0,1690,1693,1,0,0,0,1691,1689, + 1,0,0,0,1692,1671,1,0,0,0,1692,1682,1,0,0,0,1693,248,1,0,0,0,1694, + 1697,4,124,0,0,1695,1698,5,99,0,0,1696,1698,3,153,76,0,1697,1695, + 1,0,0,0,1697,1696,1,0,0,0,1698,1702,1,0,0,0,1699,1701,8,8,0,0,1700, + 1699,1,0,0,0,1701,1704,1,0,0,0,1702,1700,1,0,0,0,1702,1703,1,0,0, + 0,1703,1705,1,0,0,0,1704,1702,1,0,0,0,1705,1706,3,255,127,0,1706, + 250,1,0,0,0,1707,1708,3,153,76,0,1708,252,1,0,0,0,1709,1713,5,34, + 0,0,1710,1712,8,9,0,0,1711,1710,1,0,0,0,1712,1715,1,0,0,0,1713,1711, + 1,0,0,0,1713,1714,1,0,0,0,1714,1716,1,0,0,0,1715,1713,1,0,0,0,1716, + 1717,5,34,0,0,1717,254,1,0,0,0,1718,1720,7,8,0,0,1719,1718,1,0,0, + 0,1720,1721,1,0,0,0,1721,1719,1,0,0,0,1721,1722,1,0,0,0,1722,256, + 1,0,0,0,1723,1724,3,255,127,0,1724,1725,5,32,0,0,1725,1726,5,32, + 0,0,1726,1727,5,32,0,0,1727,1728,5,32,0,0,1728,1729,5,32,0,0,1729, + 1730,5,36,0,0,1730,1740,1,0,0,0,1731,1732,3,255,127,0,1732,1733, + 5,32,0,0,1733,1734,5,32,0,0,1734,1735,5,32,0,0,1735,1736,5,32,0, + 0,1736,1737,5,32,0,0,1737,1738,5,43,0,0,1738,1740,1,0,0,0,1739,1723, + 1,0,0,0,1739,1731,1,0,0,0,1740,1741,1,0,0,0,1741,1742,6,128,0,0, + 1742,258,1,0,0,0,1743,1745,7,10,0,0,1744,1743,1,0,0,0,1745,1746, + 1,0,0,0,1746,1744,1,0,0,0,1746,1747,1,0,0,0,1747,1748,1,0,0,0,1748, + 1749,6,129,0,0,1749,260,1,0,0,0,119,0,275,287,305,317,339,347,367, + 377,401,415,431,449,459,479,499,517,537,547,557,563,573,579,589, + 599,611,625,631,649,659,671,683,695,705,717,727,735,745,753,767, + 781,789,799,813,825,839,855,877,889,899,913,927,945,955,965,977, + 989,1003,1017,1029,1039,1059,1083,1099,1115,1135,1151,1165,1200, + 1212,1222,1234,1248,1260,1272,1282,1292,1302,1312,1322,1332,1346, + 1362,1496,1516,1532,1548,1554,1558,1566,1572,1578,1584,1590,1592, + 1594,1598,1603,1606,1617,1619,1632,1634,1644,1646,1654,1660,1664, + 1669,1675,1684,1689,1692,1697,1702,1713,1721,1739,1746,1,6,0,0 + ] class Fortran77Lexer(Lexer): @@ -992,7 +871,7 @@ class Fortran77Lexer(Lexer): def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran77Parser.interp b/src/pycropml/transpiler/antlr_py/grammars/Fortran77Parser.interp index 8f855f86..1946fb7c 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran77Parser.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran77Parser.interp @@ -444,4 +444,4 @@ to atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 123, 1752, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 3, 2, 6, 2, 392, 10, 2, 13, 2, 14, 2, 393, 3, 3, 7, 3, 397, 10, 3, 12, 3, 14, 3, 400, 11, 3, 3, 3, 3, 3, 7, 3, 404, 10, 3, 12, 3, 14, 3, 407, 11, 3, 6, 3, 409, 10, 3, 13, 3, 14, 3, 410, 3, 3, 7, 3, 414, 10, 3, 12, 3, 14, 3, 417, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 423, 10, 4, 3, 5, 5, 5, 426, 10, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 443, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 463, 10, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 475, 10, 12, 3, 13, 5, 13, 478, 10, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 484, 10, 13, 3, 13, 3, 13, 5, 13, 488, 10, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 497, 10, 15, 3, 15, 5, 15, 500, 10, 15, 3, 15, 5, 15, 503, 10, 15, 3, 16, 3, 16, 3, 16, 7, 16, 508, 10, 16, 12, 16, 14, 16, 511, 11, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 526, 10, 17, 3, 18, 7, 18, 529, 10, 18, 12, 18, 14, 18, 532, 11, 18, 3, 18, 3, 18, 7, 18, 536, 10, 18, 12, 18, 14, 18, 539, 11, 18, 6, 18, 541, 10, 18, 13, 18, 14, 18, 542, 3, 18, 3, 18, 3, 19, 5, 19, 548, 10, 19, 3, 19, 3, 19, 3, 19, 3, 20, 5, 20, 554, 10, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 7, 23, 569, 10, 23, 12, 23, 14, 23, 572, 11, 23, 3, 24, 3, 24, 3, 24, 7, 24, 577, 10, 24, 12, 24, 14, 24, 580, 11, 24, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 586, 10, 25, 5, 25, 588, 10, 25, 3, 25, 5, 25, 591, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 7, 26, 597, 10, 26, 12, 26, 14, 26, 600, 11, 26, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 606, 10, 27, 12, 27, 14, 27, 609, 11, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 619, 10, 29, 12, 29, 14, 29, 622, 11, 29, 3, 29, 5, 29, 625, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 631, 10, 30, 3, 31, 3, 31, 5, 31, 635, 10, 31, 3, 32, 3, 32, 3, 32, 7, 32, 640, 10, 32, 12, 32, 14, 32, 643, 11, 32, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 654, 10, 34, 3, 35, 3, 35, 3, 35, 7, 35, 659, 10, 35, 12, 35, 14, 35, 662, 11, 35, 3, 36, 3, 36, 5, 36, 666, 10, 36, 3, 37, 3, 37, 3, 37, 7, 37, 671, 10, 37, 12, 37, 14, 37, 674, 11, 37, 3, 38, 3, 38, 5, 38, 678, 10, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 5, 40, 687, 10, 40, 5, 40, 689, 10, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 5, 40, 698, 10, 40, 3, 41, 3, 41, 5, 41, 702, 10, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 7, 43, 711, 10, 43, 12, 43, 14, 43, 714, 11, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 5, 45, 725, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 7, 47, 735, 10, 47, 12, 47, 14, 47, 738, 11, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 5, 50, 747, 10, 50, 3, 51, 3, 51, 3, 51, 7, 51, 752, 10, 51, 12, 51, 14, 51, 755, 11, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 769, 10, 52, 3, 53, 3, 53, 5, 53, 773, 10, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 7, 56, 786, 10, 56, 12, 56, 14, 56, 789, 11, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 7, 60, 805, 10, 60, 12, 60, 14, 60, 808, 11, 60, 5, 60, 810, 10, 60, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 816, 10, 61, 3, 62, 3, 62, 3, 62, 5, 62, 821, 10, 62, 3, 62, 7, 62, 824, 10, 62, 12, 62, 14, 62, 827, 11, 62, 3, 63, 3, 63, 5, 63, 831, 10, 63, 3, 64, 3, 64, 5, 64, 835, 10, 64, 3, 64, 3, 64, 5, 64, 839, 10, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 7, 66, 847, 10, 66, 12, 66, 14, 66, 850, 11, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 7, 67, 857, 10, 67, 12, 67, 14, 67, 860, 11, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 877, 10, 69, 3, 70, 3, 70, 3, 70, 5, 70, 882, 10, 70, 3, 71, 3, 71, 5, 71, 886, 10, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 894, 10, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 5, 74, 902, 10, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 7, 76, 911, 10, 76, 12, 76, 14, 76, 914, 11, 76, 3, 77, 3, 77, 5, 77, 918, 10, 77, 3, 77, 3, 77, 3, 77, 3, 77, 5, 77, 924, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 933, 10, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 81, 3, 81, 7, 81, 945, 10, 81, 12, 81, 14, 81, 948, 11, 81, 3, 81, 5, 81, 951, 10, 81, 3, 81, 3, 81, 3, 82, 3, 82, 5, 82, 957, 10, 82, 3, 82, 7, 82, 960, 10, 82, 12, 82, 14, 82, 963, 11, 82, 3, 82, 3, 82, 7, 82, 967, 10, 82, 12, 82, 14, 82, 970, 11, 82, 6, 82, 972, 10, 82, 13, 82, 14, 82, 973, 3, 83, 3, 83, 3, 83, 5, 83, 979, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 986, 10, 83, 3, 83, 6, 83, 989, 10, 83, 13, 83, 14, 83, 990, 3, 84, 3, 84, 5, 84, 995, 10, 84, 3, 84, 7, 84, 998, 10, 84, 12, 84, 14, 84, 1001, 11, 84, 3, 84, 3, 84, 7, 84, 1005, 10, 84, 12, 84, 14, 84, 1008, 11, 84, 6, 84, 1010, 10, 84, 13, 84, 14, 84, 1011, 3, 85, 3, 85, 3, 85, 5, 85, 1017, 10, 85, 3, 86, 3, 86, 3, 86, 5, 86, 1022, 10, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 5, 87, 1031, 10, 87, 3, 88, 3, 88, 5, 88, 1035, 10, 88, 3, 88, 3, 88, 5, 88, 1039, 10, 88, 3, 88, 3, 88, 5, 88, 1043, 10, 88, 3, 88, 3, 88, 3, 89, 6, 89, 1048, 10, 89, 13, 89, 14, 89, 1049, 3, 90, 3, 90, 5, 90, 1054, 10, 90, 3, 90, 3, 90, 5, 90, 1058, 10, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 5, 91, 1065, 10, 91, 3, 92, 7, 92, 1068, 10, 92, 12, 92, 14, 92, 1071, 11, 92, 3, 92, 3, 92, 3, 93, 3, 93, 5, 93, 1077, 10, 93, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 5, 95, 1087, 10, 95, 3, 95, 6, 95, 1090, 10, 95, 13, 95, 14, 95, 1091, 5, 95, 1094, 10, 95, 3, 96, 3, 96, 3, 96, 3, 96, 6, 96, 1100, 10, 96, 13, 96, 14, 96, 1101, 5, 96, 1104, 10, 96, 3, 97, 3, 97, 3, 97, 3, 97, 6, 97, 1110, 10, 97, 13, 97, 14, 97, 1111, 5, 97, 1114, 10, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 7, 99, 1123, 10, 99, 12, 99, 14, 99, 1126, 11, 99, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 1132, 10, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 5, 101, 1157, 10, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 5, 102, 1175, 10, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 5, 103, 1186, 10, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 5, 104, 1198, 10, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 7, 105, 1207, 10, 105, 12, 105, 14, 105, 1210, 11, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 5, 106, 1230, 10, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 5, 106, 1251, 10, 106, 3, 107, 3, 107, 3, 108, 3, 108, 3, 109, 3, 109, 3, 110, 3, 110, 3, 111, 3, 111, 3, 112, 3, 112, 3, 113, 3, 113, 3, 114, 3, 114, 3, 115, 3, 115, 3, 116, 3, 116, 3, 117, 3, 117, 3, 118, 3, 118, 3, 119, 3, 119, 3, 120, 3, 120, 3, 121, 3, 121, 3, 122, 3, 122, 3, 123, 3, 123, 3, 124, 3, 124, 3, 125, 3, 125, 3, 126, 3, 126, 3, 127, 3, 127, 3, 128, 3, 128, 3, 129, 3, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 7, 130, 1304, 10, 130, 12, 130, 14, 130, 1307, 11, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 5, 131, 1325, 10, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 7, 132, 1332, 10, 132, 12, 132, 14, 132, 1335, 11, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 5, 133, 1363, 10, 133, 3, 133, 3, 133, 3, 133, 3, 133, 5, 133, 1369, 10, 133, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 7, 137, 1387, 10, 137, 12, 137, 14, 137, 1390, 11, 137, 3, 137, 3, 137, 5, 137, 1394, 10, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 5, 138, 1406, 10, 138, 3, 139, 3, 139, 5, 139, 1410, 10, 139, 3, 140, 3, 140, 3, 140, 5, 140, 1415, 10, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 5, 142, 1425, 10, 142, 5, 142, 1427, 10, 142, 3, 142, 3, 142, 5, 142, 1431, 10, 142, 3, 142, 3, 142, 3, 142, 3, 142, 5, 142, 1437, 10, 142, 5, 142, 1439, 10, 142, 7, 142, 1441, 10, 142, 12, 142, 14, 142, 1444, 11, 142, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 5, 144, 1453, 10, 144, 3, 144, 3, 144, 5, 144, 1457, 10, 144, 3, 144, 5, 144, 1460, 10, 144, 5, 144, 1462, 10, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 5, 145, 1469, 10, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 149, 3, 149, 3, 149, 5, 149, 1487, 10, 149, 3, 149, 5, 149, 1490, 10, 149, 3, 150, 3, 150, 3, 150, 7, 150, 1495, 10, 150, 12, 150, 14, 150, 1498, 11, 150, 3, 151, 3, 151, 3, 151, 5, 151, 1503, 10, 151, 3, 152, 3, 152, 5, 152, 1507, 10, 152, 3, 153, 3, 153, 3, 153, 5, 153, 1512, 10, 153, 3, 154, 3, 154, 3, 154, 3, 154, 7, 154, 1518, 10, 154, 12, 154, 14, 154, 1521, 11, 154, 3, 155, 3, 155, 3, 155, 7, 155, 1526, 10, 155, 12, 155, 14, 155, 1529, 11, 155, 3, 156, 3, 156, 3, 156, 7, 156, 1534, 10, 156, 12, 156, 14, 156, 1537, 11, 156, 3, 157, 3, 157, 3, 157, 7, 157, 1542, 10, 157, 12, 157, 14, 157, 1545, 11, 157, 3, 158, 3, 158, 3, 158, 5, 158, 1550, 10, 158, 3, 159, 3, 159, 3, 159, 5, 159, 1555, 10, 159, 3, 160, 3, 160, 3, 160, 7, 160, 1560, 10, 160, 12, 160, 14, 160, 1563, 11, 160, 3, 161, 3, 161, 3, 161, 7, 161, 1568, 10, 161, 12, 161, 14, 161, 1571, 11, 161, 3, 162, 7, 162, 1574, 10, 162, 12, 162, 14, 162, 1577, 11, 162, 3, 162, 3, 162, 3, 163, 3, 163, 3, 163, 7, 163, 1584, 10, 163, 12, 163, 14, 163, 1587, 11, 163, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 5, 164, 1597, 10, 164, 3, 165, 3, 165, 3, 165, 7, 165, 1602, 10, 165, 12, 165, 14, 165, 1605, 11, 165, 3, 166, 3, 166, 3, 166, 7, 166, 1610, 10, 166, 12, 166, 14, 166, 1613, 11, 166, 3, 167, 3, 167, 3, 167, 7, 167, 1618, 10, 167, 12, 167, 14, 167, 1621, 11, 167, 3, 168, 7, 168, 1624, 10, 168, 12, 168, 14, 168, 1627, 11, 168, 3, 168, 3, 168, 3, 169, 3, 169, 3, 169, 5, 169, 1634, 10, 169, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 5, 170, 1642, 10, 170, 3, 171, 3, 171, 3, 172, 3, 172, 3, 173, 3, 173, 3, 174, 3, 174, 3, 175, 3, 175, 3, 176, 3, 176, 3, 177, 3, 177, 3, 178, 3, 178, 3, 178, 3, 179, 3, 179, 3, 180, 3, 180, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 7, 181, 1670, 10, 181, 12, 181, 14, 181, 1673, 11, 181, 3, 181, 3, 181, 3, 182, 3, 182, 3, 182, 3, 182, 7, 182, 1681, 10, 182, 12, 182, 14, 182, 1684, 11, 182, 5, 182, 1686, 10, 182, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 5, 183, 1693, 10, 183, 5, 183, 1695, 10, 183, 3, 184, 3, 184, 3, 184, 5, 184, 1700, 10, 184, 5, 184, 1702, 10, 184, 3, 185, 3, 185, 5, 185, 1706, 10, 185, 3, 185, 3, 185, 5, 185, 1710, 10, 185, 3, 185, 3, 185, 3, 186, 3, 186, 3, 187, 3, 187, 3, 188, 3, 188, 3, 189, 3, 189, 3, 190, 5, 190, 1723, 10, 190, 3, 190, 3, 190, 3, 190, 5, 190, 1728, 10, 190, 3, 191, 3, 191, 5, 191, 1732, 10, 191, 3, 192, 3, 192, 5, 192, 1736, 10, 192, 3, 192, 3, 192, 3, 192, 5, 192, 1741, 10, 192, 3, 192, 3, 192, 3, 192, 3, 193, 3, 193, 3, 194, 3, 194, 3, 195, 3, 195, 3, 195, 2, 2, 196, 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, 2, 15, 4, 2, 10, 10, 117, 117, 3, 2, 116, 117, 3, 2, 22, 23, 4, 2, 99, 99, 116, 116, 4, 2, 99, 99, 114, 114, 5, 2, 70, 70, 74, 74, 78, 78, 3, 2, 76, 77, 6, 2, 97, 97, 99, 99, 114, 114, 117, 117, 3, 2, 83, 84, 3, 2, 87, 92, 4, 2, 78, 78, 119, 119, 3, 2, 115, 116, 3, 2, 93, 94, 2, 1809, 2, 391, 3, 2, 2, 2, 4, 398, 3, 2, 2, 2, 6, 422, 3, 2, 2, 2, 8, 425, 3, 2, 2, 2, 10, 429, 3, 2, 2, 2, 12, 432, 3, 2, 2, 2, 14, 435, 3, 2, 2, 2, 16, 442, 3, 2, 2, 2, 18, 462, 3, 2, 2, 2, 20, 464, 3, 2, 2, 2, 22, 468, 3, 2, 2, 2, 24, 477, 3, 2, 2, 2, 26, 489, 3, 2, 2, 2, 28, 492, 3, 2, 2, 2, 30, 504, 3, 2, 2, 2, 32, 525, 3, 2, 2, 2, 34, 530, 3, 2, 2, 2, 36, 547, 3, 2, 2, 2, 38, 553, 3, 2, 2, 2, 40, 557, 3, 2, 2, 2, 42, 560, 3, 2, 2, 2, 44, 565, 3, 2, 2, 2, 46, 573, 3, 2, 2, 2, 48, 590, 3, 2, 2, 2, 50, 592, 3, 2, 2, 2, 52, 601, 3, 2, 2, 2, 54, 612, 3, 2, 2, 2, 56, 614, 3, 2, 2, 2, 58, 626, 3, 2, 2, 2, 60, 634, 3, 2, 2, 2, 62, 636, 3, 2, 2, 2, 64, 644, 3, 2, 2, 2, 66, 653, 3, 2, 2, 2, 68, 655, 3, 2, 2, 2, 70, 665, 3, 2, 2, 2, 72, 667, 3, 2, 2, 2, 74, 675, 3, 2, 2, 2, 76, 679, 3, 2, 2, 2, 78, 697, 3, 2, 2, 2, 80, 701, 3, 2, 2, 2, 82, 703, 3, 2, 2, 2, 84, 706, 3, 2, 2, 2, 86, 715, 3, 2, 2, 2, 88, 721, 3, 2, 2, 2, 90, 726, 3, 2, 2, 2, 92, 731, 3, 2, 2, 2, 94, 739, 3, 2, 2, 2, 96, 741, 3, 2, 2, 2, 98, 743, 3, 2, 2, 2, 100, 748, 3, 2, 2, 2, 102, 768, 3, 2, 2, 2, 104, 770, 3, 2, 2, 2, 106, 774, 3, 2, 2, 2, 108, 777, 3, 2, 2, 2, 110, 782, 3, 2, 2, 2, 112, 790, 3, 2, 2, 2, 114, 794, 3, 2, 2, 2, 116, 797, 3, 2, 2, 2, 118, 800, 3, 2, 2, 2, 120, 815, 3, 2, 2, 2, 122, 817, 3, 2, 2, 2, 124, 830, 3, 2, 2, 2, 126, 834, 3, 2, 2, 2, 128, 840, 3, 2, 2, 2, 130, 843, 3, 2, 2, 2, 132, 853, 3, 2, 2, 2, 134, 863, 3, 2, 2, 2, 136, 869, 3, 2, 2, 2, 138, 881, 3, 2, 2, 2, 140, 885, 3, 2, 2, 2, 142, 887, 3, 2, 2, 2, 144, 895, 3, 2, 2, 2, 146, 897, 3, 2, 2, 2, 148, 905, 3, 2, 2, 2, 150, 907, 3, 2, 2, 2, 152, 915, 3, 2, 2, 2, 154, 925, 3, 2, 2, 2, 156, 934, 3, 2, 2, 2, 158, 940, 3, 2, 2, 2, 160, 942, 3, 2, 2, 2, 162, 954, 3, 2, 2, 2, 164, 978, 3, 2, 2, 2, 166, 992, 3, 2, 2, 2, 168, 1016, 3, 2, 2, 2, 170, 1018, 3, 2, 2, 2, 172, 1023, 3, 2, 2, 2, 174, 1032, 3, 2, 2, 2, 176, 1047, 3, 2, 2, 2, 178, 1051, 3, 2, 2, 2, 180, 1064, 3, 2, 2, 2, 182, 1069, 3, 2, 2, 2, 184, 1074, 3, 2, 2, 2, 186, 1078, 3, 2, 2, 2, 188, 1081, 3, 2, 2, 2, 190, 1095, 3, 2, 2, 2, 192, 1105, 3, 2, 2, 2, 194, 1115, 3, 2, 2, 2, 196, 1119, 3, 2, 2, 2, 198, 1127, 3, 2, 2, 2, 200, 1156, 3, 2, 2, 2, 202, 1174, 3, 2, 2, 2, 204, 1185, 3, 2, 2, 2, 206, 1187, 3, 2, 2, 2, 208, 1201, 3, 2, 2, 2, 210, 1250, 3, 2, 2, 2, 212, 1252, 3, 2, 2, 2, 214, 1254, 3, 2, 2, 2, 216, 1256, 3, 2, 2, 2, 218, 1258, 3, 2, 2, 2, 220, 1260, 3, 2, 2, 2, 222, 1262, 3, 2, 2, 2, 224, 1264, 3, 2, 2, 2, 226, 1266, 3, 2, 2, 2, 228, 1268, 3, 2, 2, 2, 230, 1270, 3, 2, 2, 2, 232, 1272, 3, 2, 2, 2, 234, 1274, 3, 2, 2, 2, 236, 1276, 3, 2, 2, 2, 238, 1278, 3, 2, 2, 2, 240, 1280, 3, 2, 2, 2, 242, 1282, 3, 2, 2, 2, 244, 1284, 3, 2, 2, 2, 246, 1286, 3, 2, 2, 2, 248, 1288, 3, 2, 2, 2, 250, 1290, 3, 2, 2, 2, 252, 1292, 3, 2, 2, 2, 254, 1294, 3, 2, 2, 2, 256, 1296, 3, 2, 2, 2, 258, 1298, 3, 2, 2, 2, 260, 1324, 3, 2, 2, 2, 262, 1326, 3, 2, 2, 2, 264, 1368, 3, 2, 2, 2, 266, 1370, 3, 2, 2, 2, 268, 1373, 3, 2, 2, 2, 270, 1376, 3, 2, 2, 2, 272, 1393, 3, 2, 2, 2, 274, 1405, 3, 2, 2, 2, 276, 1409, 3, 2, 2, 2, 278, 1414, 3, 2, 2, 2, 280, 1416, 3, 2, 2, 2, 282, 1426, 3, 2, 2, 2, 284, 1445, 3, 2, 2, 2, 286, 1461, 3, 2, 2, 2, 288, 1468, 3, 2, 2, 2, 290, 1470, 3, 2, 2, 2, 292, 1475, 3, 2, 2, 2, 294, 1480, 3, 2, 2, 2, 296, 1483, 3, 2, 2, 2, 298, 1491, 3, 2, 2, 2, 300, 1502, 3, 2, 2, 2, 302, 1504, 3, 2, 2, 2, 304, 1508, 3, 2, 2, 2, 306, 1513, 3, 2, 2, 2, 308, 1522, 3, 2, 2, 2, 310, 1530, 3, 2, 2, 2, 312, 1538, 3, 2, 2, 2, 314, 1549, 3, 2, 2, 2, 316, 1551, 3, 2, 2, 2, 318, 1556, 3, 2, 2, 2, 320, 1564, 3, 2, 2, 2, 322, 1575, 3, 2, 2, 2, 324, 1580, 3, 2, 2, 2, 326, 1596, 3, 2, 2, 2, 328, 1598, 3, 2, 2, 2, 330, 1606, 3, 2, 2, 2, 332, 1614, 3, 2, 2, 2, 334, 1625, 3, 2, 2, 2, 336, 1630, 3, 2, 2, 2, 338, 1641, 3, 2, 2, 2, 340, 1643, 3, 2, 2, 2, 342, 1645, 3, 2, 2, 2, 344, 1647, 3, 2, 2, 2, 346, 1649, 3, 2, 2, 2, 348, 1651, 3, 2, 2, 2, 350, 1653, 3, 2, 2, 2, 352, 1655, 3, 2, 2, 2, 354, 1657, 3, 2, 2, 2, 356, 1660, 3, 2, 2, 2, 358, 1662, 3, 2, 2, 2, 360, 1664, 3, 2, 2, 2, 362, 1676, 3, 2, 2, 2, 364, 1689, 3, 2, 2, 2, 366, 1696, 3, 2, 2, 2, 368, 1703, 3, 2, 2, 2, 370, 1713, 3, 2, 2, 2, 372, 1715, 3, 2, 2, 2, 374, 1717, 3, 2, 2, 2, 376, 1719, 3, 2, 2, 2, 378, 1727, 3, 2, 2, 2, 380, 1731, 3, 2, 2, 2, 382, 1733, 3, 2, 2, 2, 384, 1745, 3, 2, 2, 2, 386, 1747, 3, 2, 2, 2, 388, 1749, 3, 2, 2, 2, 390, 392, 7, 118, 2, 2, 391, 390, 3, 2, 2, 2, 392, 393, 3, 2, 2, 2, 393, 391, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 3, 3, 2, 2, 2, 395, 397, 5, 2, 2, 2, 396, 395, 3, 2, 2, 2, 397, 400, 3, 2, 2, 2, 398, 396, 3, 2, 2, 2, 398, 399, 3, 2, 2, 2, 399, 408, 3, 2, 2, 2, 400, 398, 3, 2, 2, 2, 401, 405, 5, 6, 4, 2, 402, 404, 5, 2, 2, 2, 403, 402, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 409, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 408, 401, 3, 2, 2, 2, 409, 410, 3, 2, 2, 2, 410, 408, 3, 2, 2, 2, 410, 411, 3, 2, 2, 2, 411, 415, 3, 2, 2, 2, 412, 414, 7, 121, 2, 2, 413, 412, 3, 2, 2, 2, 414, 417, 3, 2, 2, 2, 415, 413, 3, 2, 2, 2, 415, 416, 3, 2, 2, 2, 416, 5, 3, 2, 2, 2, 417, 415, 3, 2, 2, 2, 418, 423, 5, 10, 6, 2, 419, 423, 5, 8, 5, 2, 420, 423, 5, 12, 7, 2, 421, 423, 5, 14, 8, 2, 422, 418, 3, 2, 2, 2, 422, 419, 3, 2, 2, 2, 422, 420, 3, 2, 2, 2, 422, 421, 3, 2, 2, 2, 423, 7, 3, 2, 2, 2, 424, 426, 5, 20, 11, 2, 425, 424, 3, 2, 2, 2, 425, 426, 3, 2, 2, 2, 426, 427, 3, 2, 2, 2, 427, 428, 5, 34, 18, 2, 428, 9, 3, 2, 2, 2, 429, 430, 5, 24, 13, 2, 430, 431, 5, 34, 18, 2, 431, 11, 3, 2, 2, 2, 432, 433, 5, 28, 15, 2, 433, 434, 5, 34, 18, 2, 434, 13, 3, 2, 2, 2, 435, 436, 5, 26, 14, 2, 436, 437, 5, 34, 18, 2, 437, 15, 3, 2, 2, 2, 438, 443, 5, 40, 21, 2, 439, 443, 5, 50, 26, 2, 440, 443, 5, 116, 59, 2, 441, 443, 5, 118, 60, 2, 442, 438, 3, 2, 2, 2, 442, 439, 3, 2, 2, 2, 442, 440, 3, 2, 2, 2, 442, 441, 3, 2, 2, 2, 443, 17, 3, 2, 2, 2, 444, 463, 5, 194, 98, 2, 445, 463, 5, 142, 72, 2, 446, 463, 5, 154, 78, 2, 447, 463, 5, 170, 86, 2, 448, 463, 5, 182, 92, 2, 449, 463, 5, 184, 93, 2, 450, 463, 5, 186, 94, 2, 451, 463, 5, 190, 96, 2, 452, 463, 5, 188, 95, 2, 453, 463, 5, 192, 97, 2, 454, 463, 5, 270, 136, 2, 455, 463, 5, 266, 134, 2, 456, 463, 5, 208, 105, 2, 457, 463, 5, 258, 130, 2, 458, 463, 5, 268, 135, 2, 459, 463, 5, 262, 132, 2, 460, 463, 5, 294, 148, 2, 461, 463, 5, 302, 152, 2, 462, 444, 3, 2, 2, 2, 462, 445, 3, 2, 2, 2, 462, 446, 3, 2, 2, 2, 462, 447, 3, 2, 2, 2, 462, 448, 3, 2, 2, 2, 462, 449, 3, 2, 2, 2, 462, 450, 3, 2, 2, 2, 462, 451, 3, 2, 2, 2, 462, 452, 3, 2, 2, 2, 462, 453, 3, 2, 2, 2, 462, 454, 3, 2, 2, 2, 462, 455, 3, 2, 2, 2, 462, 456, 3, 2, 2, 2, 462, 457, 3, 2, 2, 2, 462, 458, 3, 2, 2, 2, 462, 459, 3, 2, 2, 2, 462, 460, 3, 2, 2, 2, 462, 461, 3, 2, 2, 2, 463, 19, 3, 2, 2, 2, 464, 465, 7, 3, 2, 2, 465, 466, 7, 117, 2, 2, 466, 467, 7, 121, 2, 2, 467, 21, 3, 2, 2, 2, 468, 469, 7, 4, 2, 2, 469, 474, 7, 117, 2, 2, 470, 471, 7, 72, 2, 2, 471, 472, 5, 30, 16, 2, 472, 473, 7, 73, 2, 2, 473, 475, 3, 2, 2, 2, 474, 470, 3, 2, 2, 2, 474, 475, 3, 2, 2, 2, 475, 23, 3, 2, 2, 2, 476, 478, 5, 80, 41, 2, 477, 476, 3, 2, 2, 2, 477, 478, 3, 2, 2, 2, 478, 479, 3, 2, 2, 2, 479, 480, 7, 5, 2, 2, 480, 481, 7, 117, 2, 2, 481, 483, 7, 72, 2, 2, 482, 484, 5, 30, 16, 2, 483, 482, 3, 2, 2, 2, 483, 484, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 487, 7, 73, 2, 2, 486, 488, 7, 121, 2, 2, 487, 486, 3, 2, 2, 2, 487, 488, 3, 2, 2, 2, 488, 25, 3, 2, 2, 2, 489, 490, 7, 6, 2, 2, 490, 491, 7, 117, 2, 2, 491, 27, 3, 2, 2, 2, 492, 493, 7, 7, 2, 2, 493, 499, 7, 117, 2, 2, 494, 496, 7, 72, 2, 2, 495, 497, 5, 30, 16, 2, 496, 495, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 498, 500, 7, 73, 2, 2, 499, 494, 3, 2, 2, 2, 499, 500, 3, 2, 2, 2, 500, 502, 3, 2, 2, 2, 501, 503, 7, 121, 2, 2, 502, 501, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 29, 3, 2, 2, 2, 504, 509, 5, 386, 194, 2, 505, 506, 7, 71, 2, 2, 506, 508, 5, 386, 194, 2, 507, 505, 3, 2, 2, 2, 508, 511, 3, 2, 2, 2, 509, 507, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 31, 3, 2, 2, 2, 511, 509, 3, 2, 2, 2, 512, 526, 5, 22, 12, 2, 513, 526, 5, 88, 45, 2, 514, 526, 5, 108, 55, 2, 515, 526, 5, 66, 34, 2, 516, 526, 5, 56, 29, 2, 517, 526, 5, 84, 43, 2, 518, 526, 5, 114, 58, 2, 519, 526, 5, 16, 9, 2, 520, 526, 5, 122, 62, 2, 521, 522, 5, 290, 146, 2, 522, 523, 5, 290, 146, 2, 523, 526, 3, 2, 2, 2, 524, 526, 5, 18, 10, 2, 525, 512, 3, 2, 2, 2, 525, 513, 3, 2, 2, 2, 525, 514, 3, 2, 2, 2, 525, 515, 3, 2, 2, 2, 525, 516, 3, 2, 2, 2, 525, 517, 3, 2, 2, 2, 525, 518, 3, 2, 2, 2, 525, 519, 3, 2, 2, 2, 525, 520, 3, 2, 2, 2, 525, 521, 3, 2, 2, 2, 525, 524, 3, 2, 2, 2, 526, 33, 3, 2, 2, 2, 527, 529, 5, 2, 2, 2, 528, 527, 3, 2, 2, 2, 529, 532, 3, 2, 2, 2, 530, 528, 3, 2, 2, 2, 530, 531, 3, 2, 2, 2, 531, 540, 3, 2, 2, 2, 532, 530, 3, 2, 2, 2, 533, 537, 5, 36, 19, 2, 534, 536, 5, 2, 2, 2, 535, 534, 3, 2, 2, 2, 536, 539, 3, 2, 2, 2, 537, 535, 3, 2, 2, 2, 537, 538, 3, 2, 2, 2, 538, 541, 3, 2, 2, 2, 539, 537, 3, 2, 2, 2, 540, 533, 3, 2, 2, 2, 541, 542, 3, 2, 2, 2, 542, 540, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 544, 3, 2, 2, 2, 544, 545, 5, 38, 20, 2, 545, 35, 3, 2, 2, 2, 546, 548, 7, 50, 2, 2, 547, 546, 3, 2, 2, 2, 547, 548, 3, 2, 2, 2, 548, 549, 3, 2, 2, 2, 549, 550, 5, 32, 17, 2, 550, 551, 7, 121, 2, 2, 551, 37, 3, 2, 2, 2, 552, 554, 7, 50, 2, 2, 553, 552, 3, 2, 2, 2, 553, 554, 3, 2, 2, 2, 554, 555, 3, 2, 2, 2, 555, 556, 7, 8, 2, 2, 556, 39, 3, 2, 2, 2, 557, 558, 7, 9, 2, 2, 558, 559, 5, 44, 23, 2, 559, 41, 3, 2, 2, 2, 560, 561, 9, 2, 2, 2, 561, 562, 7, 72, 2, 2, 562, 563, 5, 46, 24, 2, 563, 564, 7, 73, 2, 2, 564, 43, 3, 2, 2, 2, 565, 570, 5, 42, 22, 2, 566, 567, 7, 71, 2, 2, 567, 569, 5, 42, 22, 2, 568, 566, 3, 2, 2, 2, 569, 572, 3, 2, 2, 2, 570, 568, 3, 2, 2, 2, 570, 571, 3, 2, 2, 2, 571, 45, 3, 2, 2, 2, 572, 570, 3, 2, 2, 2, 573, 578, 5, 48, 25, 2, 574, 575, 7, 71, 2, 2, 575, 577, 5, 48, 25, 2, 576, 574, 3, 2, 2, 2, 577, 580, 3, 2, 2, 2, 578, 576, 3, 2, 2, 2, 578, 579, 3, 2, 2, 2, 579, 47, 3, 2, 2, 2, 580, 578, 3, 2, 2, 2, 581, 587, 5, 330, 166, 2, 582, 585, 7, 74, 2, 2, 583, 586, 5, 330, 166, 2, 584, 586, 7, 119, 2, 2, 585, 583, 3, 2, 2, 2, 585, 584, 3, 2, 2, 2, 586, 588, 3, 2, 2, 2, 587, 582, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 591, 3, 2, 2, 2, 589, 591, 7, 119, 2, 2, 590, 581, 3, 2, 2, 2, 590, 589, 3, 2, 2, 2, 591, 49, 3, 2, 2, 2, 592, 593, 7, 11, 2, 2, 593, 598, 5, 52, 27, 2, 594, 595, 7, 71, 2, 2, 595, 597, 5, 52, 27, 2, 596, 594, 3, 2, 2, 2, 597, 600, 3, 2, 2, 2, 598, 596, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 51, 3, 2, 2, 2, 600, 598, 3, 2, 2, 2, 601, 602, 7, 72, 2, 2, 602, 607, 5, 54, 28, 2, 603, 604, 7, 71, 2, 2, 604, 606, 5, 54, 28, 2, 605, 603, 3, 2, 2, 2, 606, 609, 3, 2, 2, 2, 607, 605, 3, 2, 2, 2, 607, 608, 3, 2, 2, 2, 608, 610, 3, 2, 2, 2, 609, 607, 3, 2, 2, 2, 610, 611, 7, 73, 2, 2, 611, 53, 3, 2, 2, 2, 612, 613, 5, 364, 183, 2, 613, 55, 3, 2, 2, 2, 614, 624, 7, 12, 2, 2, 615, 620, 5, 64, 33, 2, 616, 617, 7, 71, 2, 2, 617, 619, 5, 64, 33, 2, 618, 616, 3, 2, 2, 2, 619, 622, 3, 2, 2, 2, 620, 618, 3, 2, 2, 2, 620, 621, 3, 2, 2, 2, 621, 625, 3, 2, 2, 2, 622, 620, 3, 2, 2, 2, 623, 625, 5, 62, 32, 2, 624, 615, 3, 2, 2, 2, 624, 623, 3, 2, 2, 2, 625, 57, 3, 2, 2, 2, 626, 630, 7, 78, 2, 2, 627, 628, 7, 117, 2, 2, 628, 631, 7, 78, 2, 2, 629, 631, 7, 78, 2, 2, 630, 627, 3, 2, 2, 2, 630, 629, 3, 2, 2, 2, 631, 59, 3, 2, 2, 2, 632, 635, 7, 117, 2, 2, 633, 635, 5, 42, 22, 2, 634, 632, 3, 2, 2, 2, 634, 633, 3, 2, 2, 2, 635, 61, 3, 2, 2, 2, 636, 641, 5, 60, 31, 2, 637, 638, 7, 71, 2, 2, 638, 640, 5, 60, 31, 2, 639, 637, 3, 2, 2, 2, 640, 643, 3, 2, 2, 2, 641, 639, 3, 2, 2, 2, 641, 642, 3, 2, 2, 2, 642, 63, 3, 2, 2, 2, 643, 641, 3, 2, 2, 2, 644, 645, 5, 58, 30, 2, 645, 646, 5, 62, 32, 2, 646, 65, 3, 2, 2, 2, 647, 648, 5, 78, 40, 2, 648, 649, 5, 68, 35, 2, 649, 654, 3, 2, 2, 2, 650, 651, 5, 104, 53, 2, 651, 652, 5, 72, 37, 2, 652, 654, 3, 2, 2, 2, 653, 647, 3, 2, 2, 2, 653, 650, 3, 2, 2, 2, 654, 67, 3, 2, 2, 2, 655, 660, 5, 70, 36, 2, 656, 657, 7, 71, 2, 2, 657, 659, 5, 70, 36, 2, 658, 656, 3, 2, 2, 2, 659, 662, 3, 2, 2, 2, 660, 658, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 69, 3, 2, 2, 2, 662, 660, 3, 2, 2, 2, 663, 666, 7, 117, 2, 2, 664, 666, 5, 42, 22, 2, 665, 663, 3, 2, 2, 2, 665, 664, 3, 2, 2, 2, 666, 71, 3, 2, 2, 2, 667, 672, 5, 74, 38, 2, 668, 669, 7, 71, 2, 2, 669, 671, 5, 74, 38, 2, 670, 668, 3, 2, 2, 2, 671, 674, 3, 2, 2, 2, 672, 670, 3, 2, 2, 2, 672, 673, 3, 2, 2, 2, 673, 73, 3, 2, 2, 2, 674, 672, 3, 2, 2, 2, 675, 677, 5, 70, 36, 2, 676, 678, 5, 76, 39, 2, 677, 676, 3, 2, 2, 2, 677, 678, 3, 2, 2, 2, 678, 75, 3, 2, 2, 2, 679, 680, 7, 119, 2, 2, 680, 681, 5, 102, 52, 2, 681, 77, 3, 2, 2, 2, 682, 698, 7, 10, 2, 2, 683, 688, 7, 110, 2, 2, 684, 686, 7, 119, 2, 2, 685, 687, 7, 116, 2, 2, 686, 685, 3, 2, 2, 2, 686, 687, 3, 2, 2, 2, 687, 689, 3, 2, 2, 2, 688, 684, 3, 2, 2, 2, 688, 689, 3, 2, 2, 2, 689, 698, 3, 2, 2, 2, 690, 691, 7, 47, 2, 2, 691, 698, 7, 110, 2, 2, 692, 693, 7, 47, 2, 2, 693, 698, 7, 111, 2, 2, 694, 698, 7, 112, 2, 2, 695, 698, 7, 113, 2, 2, 696, 698, 7, 16, 2, 2, 697, 682, 3, 2, 2, 2, 697, 683, 3, 2, 2, 2, 697, 690, 3, 2, 2, 2, 697, 692, 3, 2, 2, 2, 697, 694, 3, 2, 2, 2, 697, 695, 3, 2, 2, 2, 697, 696, 3, 2, 2, 2, 698, 79, 3, 2, 2, 2, 699, 702, 5, 78, 40, 2, 700, 702, 5, 104, 53, 2, 701, 699, 3, 2, 2, 2, 701, 700, 3, 2, 2, 2, 702, 81, 3, 2, 2, 2, 703, 704, 7, 119, 2, 2, 704, 705, 7, 116, 2, 2, 705, 83, 3, 2, 2, 2, 706, 707, 7, 13, 2, 2, 707, 712, 5, 86, 44, 2, 708, 709, 7, 71, 2, 2, 709, 711, 5, 86, 44, 2, 710, 708, 3, 2, 2, 2, 711, 714, 3, 2, 2, 2, 712, 710, 3, 2, 2, 2, 712, 713, 3, 2, 2, 2, 713, 85, 3, 2, 2, 2, 714, 712, 3, 2, 2, 2, 715, 716, 7, 72, 2, 2, 716, 717, 7, 117, 2, 2, 717, 718, 7, 71, 2, 2, 718, 719, 7, 117, 2, 2, 719, 720, 7, 73, 2, 2, 720, 87, 3, 2, 2, 2, 721, 724, 7, 14, 2, 2, 722, 725, 5, 94, 48, 2, 723, 725, 5, 92, 47, 2, 724, 722, 3, 2, 2, 2, 724, 723, 3, 2, 2, 2, 725, 89, 3, 2, 2, 2, 726, 727, 5, 80, 41, 2, 727, 728, 7, 72, 2, 2, 728, 729, 5, 100, 51, 2, 729, 730, 7, 73, 2, 2, 730, 91, 3, 2, 2, 2, 731, 736, 5, 90, 46, 2, 732, 733, 7, 71, 2, 2, 733, 735, 5, 90, 46, 2, 734, 732, 3, 2, 2, 2, 735, 738, 3, 2, 2, 2, 736, 734, 3, 2, 2, 2, 736, 737, 3, 2, 2, 2, 737, 93, 3, 2, 2, 2, 738, 736, 3, 2, 2, 2, 739, 740, 7, 15, 2, 2, 740, 95, 3, 2, 2, 2, 741, 742, 7, 117, 2, 2, 742, 97, 3, 2, 2, 2, 743, 746, 5, 96, 49, 2, 744, 745, 7, 76, 2, 2, 745, 747, 5, 96, 49, 2, 746, 744, 3, 2, 2, 2, 746, 747, 3, 2, 2, 2, 747, 99, 3, 2, 2, 2, 748, 753, 5, 98, 50, 2, 749, 750, 7, 71, 2, 2, 750, 752, 5, 98, 50, 2, 751, 749, 3, 2, 2, 2, 752, 755, 3, 2, 2, 2, 753, 751, 3, 2, 2, 2, 753, 754, 3, 2, 2, 2, 754, 101, 3, 2, 2, 2, 755, 753, 3, 2, 2, 2, 756, 757, 7, 72, 2, 2, 757, 758, 7, 119, 2, 2, 758, 759, 7, 73, 2, 2, 759, 760, 3, 2, 2, 2, 760, 761, 7, 72, 2, 2, 761, 762, 7, 119, 2, 2, 762, 769, 7, 73, 2, 2, 763, 769, 7, 116, 2, 2, 764, 765, 7, 72, 2, 2, 765, 766, 5, 350, 176, 2, 766, 767, 7, 73, 2, 2, 767, 769, 3, 2, 2, 2, 768, 756, 3, 2, 2, 2, 768, 763, 3, 2, 2, 2, 768, 764, 3, 2, 2, 2, 769, 103, 3, 2, 2, 2, 770, 772, 5, 352, 177, 2, 771, 773, 5, 106, 54, 2, 772, 771, 3, 2, 2, 2, 772, 773, 3, 2, 2, 2, 773, 105, 3, 2, 2, 2, 774, 775, 7, 119, 2, 2, 775, 776, 5, 102, 52, 2, 776, 107, 3, 2, 2, 2, 777, 778, 7, 17, 2, 2, 778, 779, 7, 72, 2, 2, 779, 780, 5, 110, 56, 2, 780, 781, 7, 73, 2, 2, 781, 109, 3, 2, 2, 2, 782, 787, 5, 112, 57, 2, 783, 784, 7, 71, 2, 2, 784, 786, 5, 112, 57, 2, 785, 783, 3, 2, 2, 2, 786, 789, 3, 2, 2, 2, 787, 785, 3, 2, 2, 2, 787, 788, 3, 2, 2, 2, 788, 111, 3, 2, 2, 2, 789, 787, 3, 2, 2, 2, 790, 791, 7, 117, 2, 2, 791, 792, 7, 75, 2, 2, 792, 793, 5, 340, 171, 2, 793, 113, 3, 2, 2, 2, 794, 795, 7, 18, 2, 2, 795, 796, 5, 30, 16, 2, 796, 115, 3, 2, 2, 2, 797, 798, 7, 19, 2, 2, 798, 799, 5, 30, 16, 2, 799, 117, 3, 2, 2, 2, 800, 809, 7, 20, 2, 2, 801, 806, 5, 120, 61, 2, 802, 803, 7, 71, 2, 2, 803, 805, 5, 120, 61, 2, 804, 802, 3, 2, 2, 2, 805, 808, 3, 2, 2, 2, 806, 804, 3, 2, 2, 2, 806, 807, 3, 2, 2, 2, 807, 810, 3, 2, 2, 2, 808, 806, 3, 2, 2, 2, 809, 801, 3, 2, 2, 2, 809, 810, 3, 2, 2, 2, 810, 119, 3, 2, 2, 2, 811, 816, 7, 117, 2, 2, 812, 813, 7, 78, 2, 2, 813, 814, 7, 117, 2, 2, 814, 816, 7, 78, 2, 2, 815, 811, 3, 2, 2, 2, 815, 812, 3, 2, 2, 2, 816, 121, 3, 2, 2, 2, 817, 818, 7, 21, 2, 2, 818, 825, 5, 128, 65, 2, 819, 821, 7, 71, 2, 2, 820, 819, 3, 2, 2, 2, 820, 821, 3, 2, 2, 2, 821, 822, 3, 2, 2, 2, 822, 824, 5, 128, 65, 2, 823, 820, 3, 2, 2, 2, 824, 827, 3, 2, 2, 2, 825, 823, 3, 2, 2, 2, 825, 826, 3, 2, 2, 2, 826, 123, 3, 2, 2, 2, 827, 825, 3, 2, 2, 2, 828, 831, 5, 364, 183, 2, 829, 831, 5, 134, 68, 2, 830, 828, 3, 2, 2, 2, 830, 829, 3, 2, 2, 2, 831, 125, 3, 2, 2, 2, 832, 833, 9, 3, 2, 2, 833, 835, 7, 119, 2, 2, 834, 832, 3, 2, 2, 2, 834, 835, 3, 2, 2, 2, 835, 838, 3, 2, 2, 2, 836, 839, 5, 378, 190, 2, 837, 839, 7, 117, 2, 2, 838, 836, 3, 2, 2, 2, 838, 837, 3, 2, 2, 2, 839, 127, 3, 2, 2, 2, 840, 841, 5, 130, 66, 2, 841, 842, 5, 132, 67, 2, 842, 129, 3, 2, 2, 2, 843, 848, 5, 124, 63, 2, 844, 845, 7, 71, 2, 2, 845, 847, 5, 124, 63, 2, 846, 844, 3, 2, 2, 2, 847, 850, 3, 2, 2, 2, 848, 846, 3, 2, 2, 2, 848, 849, 3, 2, 2, 2, 849, 851, 3, 2, 2, 2, 850, 848, 3, 2, 2, 2, 851, 852, 7, 78, 2, 2, 852, 131, 3, 2, 2, 2, 853, 858, 5, 126, 64, 2, 854, 855, 7, 71, 2, 2, 855, 857, 5, 126, 64, 2, 856, 854, 3, 2, 2, 2, 857, 860, 3, 2, 2, 2, 858, 856, 3, 2, 2, 2, 858, 859, 3, 2, 2, 2, 859, 861, 3, 2, 2, 2, 860, 858, 3, 2, 2, 2, 861, 862, 7, 78, 2, 2, 862, 133, 3, 2, 2, 2, 863, 864, 7, 72, 2, 2, 864, 865, 5, 138, 70, 2, 865, 866, 7, 71, 2, 2, 866, 867, 5, 136, 69, 2, 867, 868, 7, 73, 2, 2, 868, 135, 3, 2, 2, 2, 869, 870, 7, 117, 2, 2, 870, 871, 7, 75, 2, 2, 871, 872, 5, 350, 176, 2, 872, 873, 7, 71, 2, 2, 873, 876, 5, 350, 176, 2, 874, 875, 7, 71, 2, 2, 875, 877, 5, 350, 176, 2, 876, 874, 3, 2, 2, 2, 876, 877, 3, 2, 2, 2, 877, 137, 3, 2, 2, 2, 878, 882, 5, 140, 71, 2, 879, 880, 7, 71, 2, 2, 880, 882, 5, 138, 70, 2, 881, 878, 3, 2, 2, 2, 881, 879, 3, 2, 2, 2, 882, 139, 3, 2, 2, 2, 883, 886, 5, 364, 183, 2, 884, 886, 5, 134, 68, 2, 885, 883, 3, 2, 2, 2, 885, 884, 3, 2, 2, 2, 886, 141, 3, 2, 2, 2, 887, 888, 9, 4, 2, 2, 888, 889, 5, 388, 195, 2, 889, 893, 3, 2, 2, 2, 890, 894, 5, 144, 73, 2, 891, 894, 5, 146, 74, 2, 892, 894, 5, 152, 77, 2, 893, 890, 3, 2, 2, 2, 893, 891, 3, 2, 2, 2, 893, 892, 3, 2, 2, 2, 894, 143, 3, 2, 2, 2, 895, 896, 5, 148, 75, 2, 896, 145, 3, 2, 2, 2, 897, 898, 7, 72, 2, 2, 898, 899, 5, 150, 76, 2, 899, 901, 7, 73, 2, 2, 900, 902, 7, 71, 2, 2, 901, 900, 3, 2, 2, 2, 901, 902, 3, 2, 2, 2, 902, 903, 3, 2, 2, 2, 903, 904, 5, 344, 173, 2, 904, 147, 3, 2, 2, 2, 905, 906, 7, 116, 2, 2, 906, 149, 3, 2, 2, 2, 907, 912, 5, 148, 75, 2, 908, 909, 7, 71, 2, 2, 909, 911, 5, 148, 75, 2, 910, 908, 3, 2, 2, 2, 911, 914, 3, 2, 2, 2, 912, 910, 3, 2, 2, 2, 912, 913, 3, 2, 2, 2, 913, 151, 3, 2, 2, 2, 914, 912, 3, 2, 2, 2, 915, 923, 7, 117, 2, 2, 916, 918, 7, 71, 2, 2, 917, 916, 3, 2, 2, 2, 917, 918, 3, 2, 2, 2, 918, 919, 3, 2, 2, 2, 919, 920, 7, 72, 2, 2, 920, 921, 5, 150, 76, 2, 921, 922, 7, 73, 2, 2, 922, 924, 3, 2, 2, 2, 923, 917, 3, 2, 2, 2, 923, 924, 3, 2, 2, 2, 924, 153, 3, 2, 2, 2, 925, 926, 7, 24, 2, 2, 926, 927, 7, 72, 2, 2, 927, 928, 5, 356, 179, 2, 928, 932, 7, 73, 2, 2, 929, 933, 5, 160, 81, 2, 930, 933, 5, 158, 80, 2, 931, 933, 5, 156, 79, 2, 932, 929, 3, 2, 2, 2, 932, 930, 3, 2, 2, 2, 932, 931, 3, 2, 2, 2, 933, 155, 3, 2, 2, 2, 934, 935, 5, 148, 75, 2, 935, 936, 7, 71, 2, 2, 936, 937, 5, 148, 75, 2, 937, 938, 7, 71, 2, 2, 938, 939, 5, 148, 75, 2, 939, 157, 3, 2, 2, 2, 940, 941, 5, 18, 10, 2, 941, 159, 3, 2, 2, 2, 942, 946, 5, 162, 82, 2, 943, 945, 5, 164, 83, 2, 944, 943, 3, 2, 2, 2, 945, 948, 3, 2, 2, 2, 946, 944, 3, 2, 2, 2, 946, 947, 3, 2, 2, 2, 947, 950, 3, 2, 2, 2, 948, 946, 3, 2, 2, 2, 949, 951, 5, 166, 84, 2, 950, 949, 3, 2, 2, 2, 950, 951, 3, 2, 2, 2, 951, 952, 3, 2, 2, 2, 952, 953, 5, 168, 85, 2, 953, 161, 3, 2, 2, 2, 954, 956, 7, 25, 2, 2, 955, 957, 7, 121, 2, 2, 956, 955, 3, 2, 2, 2, 956, 957, 3, 2, 2, 2, 957, 961, 3, 2, 2, 2, 958, 960, 5, 2, 2, 2, 959, 958, 3, 2, 2, 2, 960, 963, 3, 2, 2, 2, 961, 959, 3, 2, 2, 2, 961, 962, 3, 2, 2, 2, 962, 971, 3, 2, 2, 2, 963, 961, 3, 2, 2, 2, 964, 968, 5, 36, 19, 2, 965, 967, 5, 2, 2, 2, 966, 965, 3, 2, 2, 2, 967, 970, 3, 2, 2, 2, 968, 966, 3, 2, 2, 2, 968, 969, 3, 2, 2, 2, 969, 972, 3, 2, 2, 2, 970, 968, 3, 2, 2, 2, 971, 964, 3, 2, 2, 2, 972, 973, 3, 2, 2, 2, 973, 971, 3, 2, 2, 2, 973, 974, 3, 2, 2, 2, 974, 163, 3, 2, 2, 2, 975, 979, 7, 28, 2, 2, 976, 977, 7, 26, 2, 2, 977, 979, 7, 24, 2, 2, 978, 975, 3, 2, 2, 2, 978, 976, 3, 2, 2, 2, 979, 980, 3, 2, 2, 2, 980, 981, 7, 72, 2, 2, 981, 982, 5, 356, 179, 2, 982, 983, 7, 73, 2, 2, 983, 985, 7, 25, 2, 2, 984, 986, 7, 121, 2, 2, 985, 984, 3, 2, 2, 2, 985, 986, 3, 2, 2, 2, 986, 988, 3, 2, 2, 2, 987, 989, 5, 36, 19, 2, 988, 987, 3, 2, 2, 2, 989, 990, 3, 2, 2, 2, 990, 988, 3, 2, 2, 2, 990, 991, 3, 2, 2, 2, 991, 165, 3, 2, 2, 2, 992, 994, 7, 26, 2, 2, 993, 995, 7, 121, 2, 2, 994, 993, 3, 2, 2, 2, 994, 995, 3, 2, 2, 2, 995, 999, 3, 2, 2, 2, 996, 998, 5, 2, 2, 2, 997, 996, 3, 2, 2, 2, 998, 1001, 3, 2, 2, 2, 999, 997, 3, 2, 2, 2, 999, 1000, 3, 2, 2, 2, 1000, 1009, 3, 2, 2, 2, 1001, 999, 3, 2, 2, 2, 1002, 1006, 5, 36, 19, 2, 1003, 1005, 5, 2, 2, 2, 1004, 1003, 3, 2, 2, 2, 1005, 1008, 3, 2, 2, 2, 1006, 1004, 3, 2, 2, 2, 1006, 1007, 3, 2, 2, 2, 1007, 1010, 3, 2, 2, 2, 1008, 1006, 3, 2, 2, 2, 1009, 1002, 3, 2, 2, 2, 1010, 1011, 3, 2, 2, 2, 1011, 1009, 3, 2, 2, 2, 1011, 1012, 3, 2, 2, 2, 1012, 167, 3, 2, 2, 2, 1013, 1017, 7, 27, 2, 2, 1014, 1015, 7, 8, 2, 2, 1015, 1017, 7, 24, 2, 2, 1016, 1013, 3, 2, 2, 2, 1016, 1014, 3, 2, 2, 2, 1017, 169, 3, 2, 2, 2, 1018, 1021, 7, 29, 2, 2, 1019, 1022, 5, 174, 88, 2, 1020, 1022, 5, 178, 90, 2, 1021, 1019, 3, 2, 2, 2, 1021, 1020, 3, 2, 2, 2, 1022, 171, 3, 2, 2, 2, 1023, 1024, 5, 370, 186, 2, 1024, 1025, 7, 75, 2, 2, 1025, 1026, 5, 346, 174, 2, 1026, 1027, 7, 71, 2, 2, 1027, 1030, 5, 346, 174, 2, 1028, 1029, 7, 71, 2, 2, 1029, 1031, 5, 346, 174, 2, 1030, 1028, 3, 2, 2, 2, 1030, 1031, 3, 2, 2, 2, 1031, 173, 3, 2, 2, 2, 1032, 1034, 5, 148, 75, 2, 1033, 1035, 7, 71, 2, 2, 1034, 1033, 3, 2, 2, 2, 1034, 1035, 3, 2, 2, 2, 1035, 1036, 3, 2, 2, 2, 1036, 1038, 5, 172, 87, 2, 1037, 1039, 7, 121, 2, 2, 1038, 1037, 3, 2, 2, 2, 1038, 1039, 3, 2, 2, 2, 1039, 1040, 3, 2, 2, 2, 1040, 1042, 5, 176, 89, 2, 1041, 1043, 7, 121, 2, 2, 1042, 1041, 3, 2, 2, 2, 1042, 1043, 3, 2, 2, 2, 1043, 1044, 3, 2, 2, 2, 1044, 1045, 5, 182, 92, 2, 1045, 175, 3, 2, 2, 2, 1046, 1048, 5, 36, 19, 2, 1047, 1046, 3, 2, 2, 2, 1048, 1049, 3, 2, 2, 2, 1049, 1047, 3, 2, 2, 2, 1049, 1050, 3, 2, 2, 2, 1050, 177, 3, 2, 2, 2, 1051, 1053, 5, 172, 87, 2, 1052, 1054, 7, 121, 2, 2, 1053, 1052, 3, 2, 2, 2, 1053, 1054, 3, 2, 2, 2, 1054, 1055, 3, 2, 2, 2, 1055, 1057, 5, 176, 89, 2, 1056, 1058, 7, 121, 2, 2, 1057, 1056, 3, 2, 2, 2, 1057, 1058, 3, 2, 2, 2, 1058, 1059, 3, 2, 2, 2, 1059, 1060, 5, 180, 91, 2, 1060, 179, 3, 2, 2, 2, 1061, 1065, 7, 32, 2, 2, 1062, 1063, 7, 8, 2, 2, 1063, 1065, 7, 29, 2, 2, 1064, 1061, 3, 2, 2, 2, 1064, 1062, 3, 2, 2, 2, 1065, 181, 3, 2, 2, 2, 1066, 1068, 5, 148, 75, 2, 1067, 1066, 3, 2, 2, 2, 1068, 1071, 3, 2, 2, 2, 1069, 1067, 3, 2, 2, 2, 1069, 1070, 3, 2, 2, 2, 1070, 1072, 3, 2, 2, 2, 1071, 1069, 3, 2, 2, 2, 1072, 1073, 7, 30, 2, 2, 1073, 183, 3, 2, 2, 2, 1074, 1076, 7, 31, 2, 2, 1075, 1077, 9, 5, 2, 2, 1076, 1075, 3, 2, 2, 2, 1076, 1077, 3, 2, 2, 2, 1077, 185, 3, 2, 2, 2, 1078, 1079, 7, 33, 2, 2, 1079, 1080, 9, 5, 2, 2, 1080, 187, 3, 2, 2, 2, 1081, 1082, 7, 34, 2, 2, 1082, 1083, 7, 72, 2, 2, 1083, 1084, 5, 196, 99, 2, 1084, 1093, 7, 73, 2, 2, 1085, 1087, 7, 71, 2, 2, 1086, 1085, 3, 2, 2, 2, 1086, 1087, 3, 2, 2, 2, 1087, 1088, 3, 2, 2, 2, 1088, 1090, 5, 202, 102, 2, 1089, 1086, 3, 2, 2, 2, 1090, 1091, 3, 2, 2, 2, 1091, 1089, 3, 2, 2, 2, 1091, 1092, 3, 2, 2, 2, 1092, 1094, 3, 2, 2, 2, 1093, 1089, 3, 2, 2, 2, 1093, 1094, 3, 2, 2, 2, 1094, 189, 3, 2, 2, 2, 1095, 1096, 7, 35, 2, 2, 1096, 1103, 5, 278, 140, 2, 1097, 1098, 7, 71, 2, 2, 1098, 1100, 5, 202, 102, 2, 1099, 1097, 3, 2, 2, 2, 1100, 1101, 3, 2, 2, 2, 1101, 1099, 3, 2, 2, 2, 1101, 1102, 3, 2, 2, 2, 1102, 1104, 3, 2, 2, 2, 1103, 1099, 3, 2, 2, 2, 1103, 1104, 3, 2, 2, 2, 1104, 191, 3, 2, 2, 2, 1105, 1106, 7, 36, 2, 2, 1106, 1113, 5, 278, 140, 2, 1107, 1108, 7, 71, 2, 2, 1108, 1110, 5, 202, 102, 2, 1109, 1107, 3, 2, 2, 2, 1110, 1111, 3, 2, 2, 2, 1111, 1109, 3, 2, 2, 2, 1111, 1112, 3, 2, 2, 2, 1112, 1114, 3, 2, 2, 2, 1113, 1109, 3, 2, 2, 2, 1113, 1114, 3, 2, 2, 2, 1114, 193, 3, 2, 2, 2, 1115, 1116, 5, 364, 183, 2, 1116, 1117, 7, 75, 2, 2, 1117, 1118, 5, 304, 153, 2, 1118, 195, 3, 2, 2, 2, 1119, 1124, 5, 200, 101, 2, 1120, 1121, 7, 71, 2, 2, 1121, 1123, 5, 200, 101, 2, 1122, 1120, 3, 2, 2, 2, 1123, 1126, 3, 2, 2, 2, 1124, 1122, 3, 2, 2, 2, 1124, 1125, 3, 2, 2, 2, 1125, 197, 3, 2, 2, 2, 1126, 1124, 3, 2, 2, 2, 1127, 1128, 5, 220, 111, 2, 1128, 1131, 7, 75, 2, 2, 1129, 1132, 5, 148, 75, 2, 1130, 1132, 7, 117, 2, 2, 1131, 1129, 3, 2, 2, 2, 1131, 1130, 3, 2, 2, 2, 1132, 199, 3, 2, 2, 2, 1133, 1157, 5, 276, 139, 2, 1134, 1157, 9, 6, 2, 2, 1135, 1136, 5, 212, 107, 2, 1136, 1137, 7, 75, 2, 2, 1137, 1138, 5, 278, 140, 2, 1138, 1157, 3, 2, 2, 2, 1139, 1140, 5, 214, 108, 2, 1140, 1141, 7, 75, 2, 2, 1141, 1142, 5, 276, 139, 2, 1142, 1157, 3, 2, 2, 2, 1143, 1144, 5, 216, 109, 2, 1144, 1145, 7, 75, 2, 2, 1145, 1146, 5, 344, 173, 2, 1146, 1157, 3, 2, 2, 2, 1147, 1148, 5, 218, 110, 2, 1148, 1149, 7, 75, 2, 2, 1149, 1150, 5, 148, 75, 2, 1150, 1157, 3, 2, 2, 2, 1151, 1157, 5, 198, 100, 2, 1152, 1153, 5, 222, 112, 2, 1153, 1154, 7, 75, 2, 2, 1154, 1155, 5, 364, 183, 2, 1155, 1157, 3, 2, 2, 2, 1156, 1133, 3, 2, 2, 2, 1156, 1134, 3, 2, 2, 2, 1156, 1135, 3, 2, 2, 2, 1156, 1139, 3, 2, 2, 2, 1156, 1143, 3, 2, 2, 2, 1156, 1147, 3, 2, 2, 2, 1156, 1151, 3, 2, 2, 2, 1156, 1152, 3, 2, 2, 2, 1157, 201, 3, 2, 2, 2, 1158, 1159, 5, 204, 103, 2, 1159, 1160, 7, 71, 2, 2, 1160, 1161, 7, 117, 2, 2, 1161, 1162, 7, 75, 2, 2, 1162, 1163, 3, 2, 2, 2, 1163, 1164, 5, 204, 103, 2, 1164, 1175, 3, 2, 2, 2, 1165, 1166, 5, 204, 103, 2, 1166, 1167, 7, 71, 2, 2, 1167, 1168, 5, 204, 103, 2, 1168, 1169, 3, 2, 2, 2, 1169, 1170, 5, 204, 103, 2, 1170, 1171, 7, 71, 2, 2, 1171, 1172, 5, 202, 102, 2, 1172, 1175, 3, 2, 2, 2, 1173, 1175, 5, 204, 103, 2, 1174, 1158, 3, 2, 2, 2, 1174, 1165, 3, 2, 2, 2, 1174, 1173, 3, 2, 2, 2, 1175, 203, 3, 2, 2, 2, 1176, 1177, 7, 72, 2, 2, 1177, 1178, 5, 202, 102, 2, 1178, 1179, 7, 71, 2, 2, 1179, 1180, 7, 117, 2, 2, 1180, 1181, 7, 75, 2, 2, 1181, 1182, 3, 2, 2, 2, 1182, 1183, 5, 206, 104, 2, 1183, 1186, 3, 2, 2, 2, 1184, 1186, 5, 304, 153, 2, 1185, 1176, 3, 2, 2, 2, 1185, 1184, 3, 2, 2, 2, 1186, 205, 3, 2, 2, 2, 1187, 1188, 7, 72, 2, 2, 1188, 1189, 5, 202, 102, 2, 1189, 1190, 7, 71, 2, 2, 1190, 1191, 7, 117, 2, 2, 1191, 1192, 7, 75, 2, 2, 1192, 1193, 5, 346, 174, 2, 1193, 1194, 7, 71, 2, 2, 1194, 1197, 5, 346, 174, 2, 1195, 1196, 7, 71, 2, 2, 1196, 1198, 5, 346, 174, 2, 1197, 1195, 3, 2, 2, 2, 1197, 1198, 3, 2, 2, 2, 1198, 1199, 3, 2, 2, 2, 1199, 1200, 7, 73, 2, 2, 1200, 207, 3, 2, 2, 2, 1201, 1202, 7, 37, 2, 2, 1202, 1203, 7, 72, 2, 2, 1203, 1208, 5, 210, 106, 2, 1204, 1205, 7, 71, 2, 2, 1205, 1207, 5, 210, 106, 2, 1206, 1204, 3, 2, 2, 2, 1207, 1210, 3, 2, 2, 2, 1208, 1206, 3, 2, 2, 2, 1208, 1209, 3, 2, 2, 2, 1209, 1211, 3, 2, 2, 2, 1210, 1208, 3, 2, 2, 2, 1211, 1212, 7, 73, 2, 2, 1212, 209, 3, 2, 2, 2, 1213, 1251, 5, 276, 139, 2, 1214, 1215, 5, 214, 108, 2, 1215, 1216, 7, 75, 2, 2, 1216, 1217, 5, 276, 139, 2, 1217, 1251, 3, 2, 2, 2, 1218, 1251, 5, 198, 100, 2, 1219, 1220, 5, 224, 113, 2, 1220, 1221, 7, 75, 2, 2, 1221, 1222, 5, 352, 177, 2, 1222, 1251, 3, 2, 2, 2, 1223, 1224, 5, 226, 114, 2, 1224, 1225, 7, 75, 2, 2, 1225, 1226, 5, 352, 177, 2, 1226, 1251, 3, 2, 2, 2, 1227, 1230, 5, 228, 115, 2, 1228, 1230, 5, 230, 116, 2, 1229, 1227, 3, 2, 2, 2, 1229, 1228, 3, 2, 2, 2, 1230, 1231, 3, 2, 2, 2, 1231, 1232, 7, 75, 2, 2, 1232, 1233, 5, 352, 177, 2, 1233, 1251, 3, 2, 2, 2, 1234, 1235, 5, 232, 117, 2, 1235, 1236, 7, 75, 2, 2, 1236, 1237, 5, 352, 177, 2, 1237, 1251, 3, 2, 2, 2, 1238, 1239, 5, 234, 118, 2, 1239, 1240, 7, 75, 2, 2, 1240, 1241, 5, 344, 173, 2, 1241, 1251, 3, 2, 2, 2, 1242, 1243, 5, 236, 119, 2, 1243, 1244, 7, 75, 2, 2, 1244, 1245, 5, 352, 177, 2, 1245, 1251, 3, 2, 2, 2, 1246, 1247, 5, 222, 112, 2, 1247, 1248, 7, 75, 2, 2, 1248, 1249, 5, 364, 183, 2, 1249, 1251, 3, 2, 2, 2, 1250, 1213, 3, 2, 2, 2, 1250, 1214, 3, 2, 2, 2, 1250, 1218, 3, 2, 2, 2, 1250, 1219, 3, 2, 2, 2, 1250, 1223, 3, 2, 2, 2, 1250, 1229, 3, 2, 2, 2, 1250, 1234, 3, 2, 2, 2, 1250, 1238, 3, 2, 2, 2, 1250, 1242, 3, 2, 2, 2, 1250, 1246, 3, 2, 2, 2, 1251, 211, 3, 2, 2, 2, 1252, 1253, 7, 38, 2, 2, 1253, 213, 3, 2, 2, 2, 1254, 1255, 7, 39, 2, 2, 1255, 215, 3, 2, 2, 2, 1256, 1257, 7, 117, 2, 2, 1257, 217, 3, 2, 2, 2, 1258, 1259, 7, 8, 2, 2, 1259, 219, 3, 2, 2, 2, 1260, 1261, 7, 40, 2, 2, 1261, 221, 3, 2, 2, 2, 1262, 1263, 7, 48, 2, 2, 1263, 223, 3, 2, 2, 2, 1264, 1265, 7, 51, 2, 2, 1265, 225, 3, 2, 2, 2, 1266, 1267, 7, 52, 2, 2, 1267, 227, 3, 2, 2, 2, 1268, 1269, 7, 53, 2, 2, 1269, 229, 3, 2, 2, 2, 1270, 1271, 7, 54, 2, 2, 1271, 231, 3, 2, 2, 2, 1272, 1273, 7, 55, 2, 2, 1273, 233, 3, 2, 2, 2, 1274, 1275, 7, 56, 2, 2, 1275, 235, 3, 2, 2, 2, 1276, 1277, 7, 57, 2, 2, 1277, 237, 3, 2, 2, 2, 1278, 1279, 7, 58, 2, 2, 1279, 239, 3, 2, 2, 2, 1280, 1281, 7, 59, 2, 2, 1281, 241, 3, 2, 2, 2, 1282, 1283, 7, 60, 2, 2, 1283, 243, 3, 2, 2, 2, 1284, 1285, 7, 61, 2, 2, 1285, 245, 3, 2, 2, 2, 1286, 1287, 7, 117, 2, 2, 1287, 247, 3, 2, 2, 2, 1288, 1289, 7, 49, 2, 2, 1289, 249, 3, 2, 2, 2, 1290, 1291, 7, 117, 2, 2, 1291, 251, 3, 2, 2, 2, 1292, 1293, 7, 63, 2, 2, 1293, 253, 3, 2, 2, 2, 1294, 1295, 7, 64, 2, 2, 1295, 255, 3, 2, 2, 2, 1296, 1297, 7, 65, 2, 2, 1297, 257, 3, 2, 2, 2, 1298, 1299, 7, 46, 2, 2, 1299, 1300, 7, 72, 2, 2, 1300, 1305, 5, 260, 131, 2, 1301, 1302, 7, 71, 2, 2, 1302, 1304, 5, 260, 131, 2, 1303, 1301, 3, 2, 2, 2, 1304, 1307, 3, 2, 2, 2, 1305, 1303, 3, 2, 2, 2, 1305, 1306, 3, 2, 2, 2, 1306, 1308, 3, 2, 2, 2, 1307, 1305, 3, 2, 2, 2, 1308, 1309, 7, 73, 2, 2, 1309, 259, 3, 2, 2, 2, 1310, 1325, 5, 276, 139, 2, 1311, 1312, 5, 214, 108, 2, 1312, 1313, 7, 75, 2, 2, 1313, 1314, 5, 276, 139, 2, 1314, 1325, 3, 2, 2, 2, 1315, 1325, 5, 198, 100, 2, 1316, 1317, 5, 226, 114, 2, 1317, 1318, 7, 75, 2, 2, 1318, 1319, 5, 352, 177, 2, 1319, 1325, 3, 2, 2, 2, 1320, 1321, 5, 222, 112, 2, 1321, 1322, 7, 75, 2, 2, 1322, 1323, 5, 364, 183, 2, 1323, 1325, 3, 2, 2, 2, 1324, 1310, 3, 2, 2, 2, 1324, 1311, 3, 2, 2, 2, 1324, 1315, 3, 2, 2, 2, 1324, 1316, 3, 2, 2, 2, 1324, 1320, 3, 2, 2, 2, 1325, 261, 3, 2, 2, 2, 1326, 1327, 7, 66, 2, 2, 1327, 1328, 7, 72, 2, 2, 1328, 1333, 5, 264, 133, 2, 1329, 1330, 7, 71, 2, 2, 1330, 1332, 5, 264, 133, 2, 1331, 1329, 3, 2, 2, 2, 1332, 1335, 3, 2, 2, 2, 1333, 1331, 3, 2, 2, 2, 1333, 1334, 3, 2, 2, 2, 1334, 1336, 3, 2, 2, 2, 1335, 1333, 3, 2, 2, 2, 1336, 1337, 7, 73, 2, 2, 1337, 263, 3, 2, 2, 2, 1338, 1339, 5, 214, 108, 2, 1339, 1340, 7, 75, 2, 2, 1340, 1341, 5, 276, 139, 2, 1341, 1369, 3, 2, 2, 2, 1342, 1343, 5, 224, 113, 2, 1343, 1344, 7, 75, 2, 2, 1344, 1345, 5, 352, 177, 2, 1345, 1369, 3, 2, 2, 2, 1346, 1369, 5, 198, 100, 2, 1347, 1363, 5, 222, 112, 2, 1348, 1363, 5, 238, 120, 2, 1349, 1363, 5, 240, 121, 2, 1350, 1363, 5, 242, 122, 2, 1351, 1363, 5, 244, 123, 2, 1352, 1363, 5, 246, 124, 2, 1353, 1363, 5, 228, 115, 2, 1354, 1363, 5, 248, 125, 2, 1355, 1363, 5, 250, 126, 2, 1356, 1363, 5, 232, 117, 2, 1357, 1363, 5, 252, 127, 2, 1358, 1363, 5, 254, 128, 2, 1359, 1363, 5, 234, 118, 2, 1360, 1363, 5, 256, 129, 2, 1361, 1363, 5, 236, 119, 2, 1362, 1347, 3, 2, 2, 2, 1362, 1348, 3, 2, 2, 2, 1362, 1349, 3, 2, 2, 2, 1362, 1350, 3, 2, 2, 2, 1362, 1351, 3, 2, 2, 2, 1362, 1352, 3, 2, 2, 2, 1362, 1353, 3, 2, 2, 2, 1362, 1354, 3, 2, 2, 2, 1362, 1355, 3, 2, 2, 2, 1362, 1356, 3, 2, 2, 2, 1362, 1357, 3, 2, 2, 2, 1362, 1358, 3, 2, 2, 2, 1362, 1359, 3, 2, 2, 2, 1362, 1360, 3, 2, 2, 2, 1362, 1361, 3, 2, 2, 2, 1363, 1364, 3, 2, 2, 2, 1364, 1365, 7, 75, 2, 2, 1365, 1366, 5, 364, 183, 2, 1366, 1369, 3, 2, 2, 2, 1367, 1369, 5, 276, 139, 2, 1368, 1338, 3, 2, 2, 2, 1368, 1342, 3, 2, 2, 2, 1368, 1346, 3, 2, 2, 2, 1368, 1362, 3, 2, 2, 2, 1368, 1367, 3, 2, 2, 2, 1369, 265, 3, 2, 2, 2, 1370, 1371, 7, 67, 2, 2, 1371, 1372, 5, 272, 137, 2, 1372, 267, 3, 2, 2, 2, 1373, 1374, 7, 68, 2, 2, 1374, 1375, 5, 272, 137, 2, 1375, 269, 3, 2, 2, 2, 1376, 1377, 7, 69, 2, 2, 1377, 1378, 5, 272, 137, 2, 1378, 271, 3, 2, 2, 2, 1379, 1380, 5, 276, 139, 2, 1380, 1381, 5, 276, 139, 2, 1381, 1394, 3, 2, 2, 2, 1382, 1383, 7, 72, 2, 2, 1383, 1388, 5, 274, 138, 2, 1384, 1385, 7, 71, 2, 2, 1385, 1387, 5, 274, 138, 2, 1386, 1384, 3, 2, 2, 2, 1387, 1390, 3, 2, 2, 2, 1388, 1386, 3, 2, 2, 2, 1388, 1389, 3, 2, 2, 2, 1389, 1391, 3, 2, 2, 2, 1390, 1388, 3, 2, 2, 2, 1391, 1392, 7, 73, 2, 2, 1392, 1394, 3, 2, 2, 2, 1393, 1379, 3, 2, 2, 2, 1393, 1382, 3, 2, 2, 2, 1394, 273, 3, 2, 2, 2, 1395, 1406, 5, 276, 139, 2, 1396, 1397, 5, 214, 108, 2, 1397, 1398, 7, 75, 2, 2, 1398, 1399, 5, 276, 139, 2, 1399, 1406, 3, 2, 2, 2, 1400, 1406, 5, 198, 100, 2, 1401, 1402, 5, 222, 112, 2, 1402, 1403, 7, 75, 2, 2, 1403, 1404, 5, 364, 183, 2, 1404, 1406, 3, 2, 2, 2, 1405, 1395, 3, 2, 2, 2, 1405, 1396, 3, 2, 2, 2, 1405, 1400, 3, 2, 2, 2, 1405, 1401, 3, 2, 2, 2, 1406, 275, 3, 2, 2, 2, 1407, 1410, 5, 328, 165, 2, 1408, 1410, 7, 119, 2, 2, 1409, 1407, 3, 2, 2, 2, 1409, 1408, 3, 2, 2, 2, 1410, 277, 3, 2, 2, 2, 1411, 1415, 9, 6, 2, 2, 1412, 1415, 5, 328, 165, 2, 1413, 1415, 7, 119, 2, 2, 1414, 1411, 3, 2, 2, 2, 1414, 1412, 3, 2, 2, 2, 1414, 1413, 3, 2, 2, 2, 1415, 279, 3, 2, 2, 2, 1416, 1417, 7, 42, 2, 2, 1417, 1418, 7, 72, 2, 2, 1418, 1419, 5, 282, 142, 2, 1419, 1420, 7, 73, 2, 2, 1420, 281, 3, 2, 2, 2, 1421, 1427, 5, 286, 144, 2, 1422, 1424, 5, 284, 143, 2, 1423, 1425, 5, 286, 144, 2, 1424, 1423, 3, 2, 2, 2, 1424, 1425, 3, 2, 2, 2, 1425, 1427, 3, 2, 2, 2, 1426, 1421, 3, 2, 2, 2, 1426, 1422, 3, 2, 2, 2, 1427, 1442, 3, 2, 2, 2, 1428, 1430, 5, 284, 143, 2, 1429, 1431, 5, 286, 144, 2, 1430, 1429, 3, 2, 2, 2, 1430, 1431, 3, 2, 2, 2, 1431, 1441, 3, 2, 2, 2, 1432, 1438, 7, 71, 2, 2, 1433, 1439, 5, 286, 144, 2, 1434, 1436, 5, 284, 143, 2, 1435, 1437, 5, 286, 144, 2, 1436, 1435, 3, 2, 2, 2, 1436, 1437, 3, 2, 2, 2, 1437, 1439, 3, 2, 2, 2, 1438, 1433, 3, 2, 2, 2, 1438, 1434, 3, 2, 2, 2, 1439, 1441, 3, 2, 2, 2, 1440, 1428, 3, 2, 2, 2, 1440, 1432, 3, 2, 2, 2, 1441, 1444, 3, 2, 2, 2, 1442, 1440, 3, 2, 2, 2, 1442, 1443, 3, 2, 2, 2, 1443, 283, 3, 2, 2, 2, 1444, 1442, 3, 2, 2, 2, 1445, 1446, 9, 7, 2, 2, 1446, 285, 3, 2, 2, 2, 1447, 1462, 7, 95, 2, 2, 1448, 1462, 5, 288, 145, 2, 1449, 1450, 7, 116, 2, 2, 1450, 1462, 5, 288, 145, 2, 1451, 1453, 9, 8, 2, 2, 1452, 1451, 3, 2, 2, 2, 1452, 1453, 3, 2, 2, 2, 1453, 1454, 3, 2, 2, 2, 1454, 1459, 7, 96, 2, 2, 1455, 1457, 7, 116, 2, 2, 1456, 1455, 3, 2, 2, 2, 1456, 1457, 3, 2, 2, 2, 1457, 1458, 3, 2, 2, 2, 1458, 1460, 5, 288, 145, 2, 1459, 1456, 3, 2, 2, 2, 1459, 1460, 3, 2, 2, 2, 1460, 1462, 3, 2, 2, 2, 1461, 1447, 3, 2, 2, 2, 1461, 1448, 3, 2, 2, 2, 1461, 1449, 3, 2, 2, 2, 1461, 1452, 3, 2, 2, 2, 1462, 287, 3, 2, 2, 2, 1463, 1469, 9, 9, 2, 2, 1464, 1465, 7, 72, 2, 2, 1465, 1466, 5, 282, 142, 2, 1466, 1467, 7, 73, 2, 2, 1467, 1469, 3, 2, 2, 2, 1468, 1463, 3, 2, 2, 2, 1468, 1464, 3, 2, 2, 2, 1469, 289, 3, 2, 2, 2, 1470, 1471, 7, 43, 2, 2, 1471, 1472, 5, 292, 147, 2, 1472, 1473, 7, 75, 2, 2, 1473, 1474, 5, 304, 153, 2, 1474, 291, 3, 2, 2, 2, 1475, 1476, 7, 117, 2, 2, 1476, 1477, 7, 72, 2, 2, 1477, 1478, 5, 30, 16, 2, 1478, 1479, 7, 73, 2, 2, 1479, 293, 3, 2, 2, 2, 1480, 1481, 7, 44, 2, 2, 1481, 1482, 5, 296, 149, 2, 1482, 295, 3, 2, 2, 2, 1483, 1489, 7, 117, 2, 2, 1484, 1486, 7, 72, 2, 2, 1485, 1487, 5, 298, 150, 2, 1486, 1485, 3, 2, 2, 2, 1486, 1487, 3, 2, 2, 2, 1487, 1488, 3, 2, 2, 2, 1488, 1490, 7, 73, 2, 2, 1489, 1484, 3, 2, 2, 2, 1489, 1490, 3, 2, 2, 2, 1490, 297, 3, 2, 2, 2, 1491, 1496, 5, 300, 151, 2, 1492, 1493, 7, 71, 2, 2, 1493, 1495, 5, 300, 151, 2, 1494, 1492, 3, 2, 2, 2, 1495, 1498, 3, 2, 2, 2, 1496, 1494, 3, 2, 2, 2, 1496, 1497, 3, 2, 2, 2, 1497, 299, 3, 2, 2, 2, 1498, 1496, 3, 2, 2, 2, 1499, 1503, 5, 304, 153, 2, 1500, 1501, 7, 119, 2, 2, 1501, 1503, 5, 148, 75, 2, 1502, 1499, 3, 2, 2, 2, 1502, 1500, 3, 2, 2, 2, 1503, 301, 3, 2, 2, 2, 1504, 1506, 7, 45, 2, 2, 1505, 1507, 5, 344, 173, 2, 1506, 1505, 3, 2, 2, 2, 1506, 1507, 3, 2, 2, 2, 1507, 303, 3, 2, 2, 2, 1508, 1511, 5, 306, 154, 2, 1509, 1510, 7, 74, 2, 2, 1510, 1512, 5, 306, 154, 2, 1511, 1509, 3, 2, 2, 2, 1511, 1512, 3, 2, 2, 2, 1512, 305, 3, 2, 2, 2, 1513, 1519, 5, 308, 155, 2, 1514, 1515, 5, 354, 178, 2, 1515, 1516, 5, 308, 155, 2, 1516, 1518, 3, 2, 2, 2, 1517, 1514, 3, 2, 2, 2, 1518, 1521, 3, 2, 2, 2, 1519, 1517, 3, 2, 2, 2, 1519, 1520, 3, 2, 2, 2, 1520, 307, 3, 2, 2, 2, 1521, 1519, 3, 2, 2, 2, 1522, 1527, 5, 310, 156, 2, 1523, 1524, 9, 10, 2, 2, 1524, 1526, 5, 310, 156, 2, 1525, 1523, 3, 2, 2, 2, 1526, 1529, 3, 2, 2, 2, 1527, 1525, 3, 2, 2, 2, 1527, 1528, 3, 2, 2, 2, 1528, 309, 3, 2, 2, 2, 1529, 1527, 3, 2, 2, 2, 1530, 1535, 5, 312, 157, 2, 1531, 1532, 7, 82, 2, 2, 1532, 1534, 5, 312, 157, 2, 1533, 1531, 3, 2, 2, 2, 1534, 1537, 3, 2, 2, 2, 1535, 1533, 3, 2, 2, 2, 1535, 1536, 3, 2, 2, 2, 1536, 311, 3, 2, 2, 2, 1537, 1535, 3, 2, 2, 2, 1538, 1543, 5, 314, 158, 2, 1539, 1540, 7, 81, 2, 2, 1540, 1542, 5, 314, 158, 2, 1541, 1539, 3, 2, 2, 2, 1542, 1545, 3, 2, 2, 2, 1543, 1541, 3, 2, 2, 2, 1543, 1544, 3, 2, 2, 2, 1544, 313, 3, 2, 2, 2, 1545, 1543, 3, 2, 2, 2, 1546, 1547, 7, 80, 2, 2, 1547, 1550, 5, 314, 158, 2, 1548, 1550, 5, 316, 159, 2, 1549, 1546, 3, 2, 2, 2, 1549, 1548, 3, 2, 2, 2, 1550, 315, 3, 2, 2, 2, 1551, 1554, 5, 318, 160, 2, 1552, 1553, 9, 11, 2, 2, 1553, 1555, 5, 318, 160, 2, 1554, 1552, 3, 2, 2, 2, 1554, 1555, 3, 2, 2, 2, 1555, 317, 3, 2, 2, 2, 1556, 1561, 5, 320, 161, 2, 1557, 1558, 9, 8, 2, 2, 1558, 1560, 5, 320, 161, 2, 1559, 1557, 3, 2, 2, 2, 1560, 1563, 3, 2, 2, 2, 1561, 1559, 3, 2, 2, 2, 1561, 1562, 3, 2, 2, 2, 1562, 319, 3, 2, 2, 2, 1563, 1561, 3, 2, 2, 2, 1564, 1569, 5, 322, 162, 2, 1565, 1566, 9, 12, 2, 2, 1566, 1568, 5, 322, 162, 2, 1567, 1565, 3, 2, 2, 2, 1568, 1571, 3, 2, 2, 2, 1569, 1567, 3, 2, 2, 2, 1569, 1570, 3, 2, 2, 2, 1570, 321, 3, 2, 2, 2, 1571, 1569, 3, 2, 2, 2, 1572, 1574, 9, 8, 2, 2, 1573, 1572, 3, 2, 2, 2, 1574, 1577, 3, 2, 2, 2, 1575, 1573, 3, 2, 2, 2, 1575, 1576, 3, 2, 2, 2, 1576, 1578, 3, 2, 2, 2, 1577, 1575, 3, 2, 2, 2, 1578, 1579, 5, 324, 163, 2, 1579, 323, 3, 2, 2, 2, 1580, 1585, 5, 326, 164, 2, 1581, 1582, 7, 79, 2, 2, 1582, 1584, 5, 326, 164, 2, 1583, 1581, 3, 2, 2, 2, 1584, 1587, 3, 2, 2, 2, 1585, 1583, 3, 2, 2, 2, 1585, 1586, 3, 2, 2, 2, 1586, 325, 3, 2, 2, 2, 1587, 1585, 3, 2, 2, 2, 1588, 1597, 5, 380, 191, 2, 1589, 1597, 9, 6, 2, 2, 1590, 1597, 5, 384, 193, 2, 1591, 1597, 5, 364, 183, 2, 1592, 1593, 7, 72, 2, 2, 1593, 1594, 5, 304, 153, 2, 1594, 1595, 7, 73, 2, 2, 1595, 1597, 3, 2, 2, 2, 1596, 1588, 3, 2, 2, 2, 1596, 1589, 3, 2, 2, 2, 1596, 1590, 3, 2, 2, 2, 1596, 1591, 3, 2, 2, 2, 1596, 1592, 3, 2, 2, 2, 1597, 327, 3, 2, 2, 2, 1598, 1603, 5, 332, 167, 2, 1599, 1600, 9, 8, 2, 2, 1600, 1602, 5, 332, 167, 2, 1601, 1599, 3, 2, 2, 2, 1602, 1605, 3, 2, 2, 2, 1603, 1601, 3, 2, 2, 2, 1603, 1604, 3, 2, 2, 2, 1604, 329, 3, 2, 2, 2, 1605, 1603, 3, 2, 2, 2, 1606, 1611, 5, 332, 167, 2, 1607, 1608, 9, 8, 2, 2, 1608, 1610, 5, 332, 167, 2, 1609, 1607, 3, 2, 2, 2, 1610, 1613, 3, 2, 2, 2, 1611, 1609, 3, 2, 2, 2, 1611, 1612, 3, 2, 2, 2, 1612, 331, 3, 2, 2, 2, 1613, 1611, 3, 2, 2, 2, 1614, 1619, 5, 334, 168, 2, 1615, 1616, 9, 12, 2, 2, 1616, 1618, 5, 334, 168, 2, 1617, 1615, 3, 2, 2, 2, 1618, 1621, 3, 2, 2, 2, 1619, 1617, 3, 2, 2, 2, 1619, 1620, 3, 2, 2, 2, 1620, 333, 3, 2, 2, 2, 1621, 1619, 3, 2, 2, 2, 1622, 1624, 9, 8, 2, 2, 1623, 1622, 3, 2, 2, 2, 1624, 1627, 3, 2, 2, 2, 1625, 1623, 3, 2, 2, 2, 1625, 1626, 3, 2, 2, 2, 1626, 1628, 3, 2, 2, 2, 1627, 1625, 3, 2, 2, 2, 1628, 1629, 5, 336, 169, 2, 1629, 335, 3, 2, 2, 2, 1630, 1633, 5, 338, 170, 2, 1631, 1632, 7, 79, 2, 2, 1632, 1634, 5, 336, 169, 2, 1633, 1631, 3, 2, 2, 2, 1633, 1634, 3, 2, 2, 2, 1634, 337, 3, 2, 2, 2, 1635, 1642, 7, 116, 2, 2, 1636, 1642, 5, 366, 184, 2, 1637, 1638, 7, 72, 2, 2, 1638, 1639, 5, 330, 166, 2, 1639, 1640, 7, 73, 2, 2, 1640, 1642, 3, 2, 2, 2, 1641, 1635, 3, 2, 2, 2, 1641, 1636, 3, 2, 2, 2, 1641, 1637, 3, 2, 2, 2, 1642, 339, 3, 2, 2, 2, 1643, 1644, 5, 304, 153, 2, 1644, 341, 3, 2, 2, 2, 1645, 1646, 5, 304, 153, 2, 1646, 343, 3, 2, 2, 2, 1647, 1648, 5, 328, 165, 2, 1648, 345, 3, 2, 2, 2, 1649, 1650, 5, 304, 153, 2, 1650, 347, 3, 2, 2, 2, 1651, 1652, 5, 304, 153, 2, 1652, 349, 3, 2, 2, 2, 1653, 1654, 5, 304, 153, 2, 1654, 351, 3, 2, 2, 2, 1655, 1656, 5, 304, 153, 2, 1656, 353, 3, 2, 2, 2, 1657, 1658, 7, 78, 2, 2, 1658, 1659, 7, 78, 2, 2, 1659, 355, 3, 2, 2, 2, 1660, 1661, 5, 304, 153, 2, 1661, 357, 3, 2, 2, 2, 1662, 1663, 5, 304, 153, 2, 1663, 359, 3, 2, 2, 2, 1664, 1665, 7, 117, 2, 2, 1665, 1666, 7, 72, 2, 2, 1666, 1671, 5, 344, 173, 2, 1667, 1668, 7, 71, 2, 2, 1668, 1670, 5, 344, 173, 2, 1669, 1667, 3, 2, 2, 2, 1670, 1673, 3, 2, 2, 2, 1671, 1669, 3, 2, 2, 2, 1671, 1672, 3, 2, 2, 2, 1672, 1674, 3, 2, 2, 2, 1673, 1671, 3, 2, 2, 2, 1674, 1675, 7, 73, 2, 2, 1675, 361, 3, 2, 2, 2, 1676, 1685, 7, 72, 2, 2, 1677, 1682, 5, 304, 153, 2, 1678, 1679, 7, 71, 2, 2, 1679, 1681, 5, 304, 153, 2, 1680, 1678, 3, 2, 2, 2, 1681, 1684, 3, 2, 2, 2, 1682, 1680, 3, 2, 2, 2, 1682, 1683, 3, 2, 2, 2, 1683, 1686, 3, 2, 2, 2, 1684, 1682, 3, 2, 2, 2, 1685, 1677, 3, 2, 2, 2, 1685, 1686, 3, 2, 2, 2, 1686, 1687, 3, 2, 2, 2, 1687, 1688, 7, 73, 2, 2, 1688, 363, 3, 2, 2, 2, 1689, 1694, 9, 2, 2, 2, 1690, 1692, 5, 362, 182, 2, 1691, 1693, 5, 368, 185, 2, 1692, 1691, 3, 2, 2, 2, 1692, 1693, 3, 2, 2, 2, 1693, 1695, 3, 2, 2, 2, 1694, 1690, 3, 2, 2, 2, 1694, 1695, 3, 2, 2, 2, 1695, 365, 3, 2, 2, 2, 1696, 1701, 7, 117, 2, 2, 1697, 1699, 5, 362, 182, 2, 1698, 1700, 5, 368, 185, 2, 1699, 1698, 3, 2, 2, 2, 1699, 1700, 3, 2, 2, 2, 1700, 1702, 3, 2, 2, 2, 1701, 1697, 3, 2, 2, 2, 1701, 1702, 3, 2, 2, 2, 1702, 367, 3, 2, 2, 2, 1703, 1705, 7, 72, 2, 2, 1704, 1706, 5, 306, 154, 2, 1705, 1704, 3, 2, 2, 2, 1705, 1706, 3, 2, 2, 2, 1706, 1707, 3, 2, 2, 2, 1707, 1709, 7, 74, 2, 2, 1708, 1710, 5, 306, 154, 2, 1709, 1708, 3, 2, 2, 2, 1709, 1710, 3, 2, 2, 2, 1710, 1711, 3, 2, 2, 2, 1711, 1712, 7, 73, 2, 2, 1712, 369, 3, 2, 2, 2, 1713, 1714, 7, 117, 2, 2, 1714, 371, 3, 2, 2, 2, 1715, 1716, 7, 117, 2, 2, 1716, 373, 3, 2, 2, 2, 1717, 1718, 7, 117, 2, 2, 1718, 375, 3, 2, 2, 2, 1719, 1720, 7, 117, 2, 2, 1720, 377, 3, 2, 2, 2, 1721, 1723, 9, 8, 2, 2, 1722, 1721, 3, 2, 2, 2, 1722, 1723, 3, 2, 2, 2, 1723, 1724, 3, 2, 2, 2, 1724, 1728, 5, 380, 191, 2, 1725, 1728, 9, 6, 2, 2, 1726, 1728, 5, 384, 193, 2, 1727, 1722, 3, 2, 2, 2, 1727, 1725, 3, 2, 2, 2, 1727, 1726, 3, 2, 2, 2, 1728, 379, 3, 2, 2, 2, 1729, 1732, 9, 13, 2, 2, 1730, 1732, 5, 382, 192, 2, 1731, 1729, 3, 2, 2, 2, 1731, 1730, 3, 2, 2, 2, 1732, 381, 3, 2, 2, 2, 1733, 1735, 7, 72, 2, 2, 1734, 1736, 9, 8, 2, 2, 1735, 1734, 3, 2, 2, 2, 1735, 1736, 3, 2, 2, 2, 1736, 1737, 3, 2, 2, 2, 1737, 1738, 9, 13, 2, 2, 1738, 1740, 7, 71, 2, 2, 1739, 1741, 9, 8, 2, 2, 1740, 1739, 3, 2, 2, 2, 1740, 1741, 3, 2, 2, 2, 1741, 1742, 3, 2, 2, 2, 1742, 1743, 9, 13, 2, 2, 1743, 1744, 7, 73, 2, 2, 1744, 383, 3, 2, 2, 2, 1745, 1746, 9, 14, 2, 2, 1746, 385, 3, 2, 2, 2, 1747, 1748, 9, 2, 2, 2, 1748, 387, 3, 2, 2, 2, 1749, 1750, 7, 117, 2, 2, 1750, 389, 3, 2, 2, 2, 173, 393, 398, 405, 410, 415, 422, 425, 442, 462, 474, 477, 483, 487, 496, 499, 502, 509, 525, 530, 537, 542, 547, 553, 570, 578, 585, 587, 590, 598, 607, 620, 624, 630, 634, 641, 653, 660, 665, 672, 677, 686, 688, 697, 701, 712, 724, 736, 746, 753, 768, 772, 787, 806, 809, 815, 820, 825, 830, 834, 838, 848, 858, 876, 881, 885, 893, 901, 912, 917, 923, 932, 946, 950, 956, 961, 968, 973, 978, 985, 990, 994, 999, 1006, 1011, 1016, 1021, 1030, 1034, 1038, 1042, 1049, 1053, 1057, 1064, 1069, 1076, 1086, 1091, 1093, 1101, 1103, 1111, 1113, 1124, 1131, 1156, 1174, 1185, 1197, 1208, 1229, 1250, 1305, 1324, 1333, 1362, 1368, 1388, 1393, 1405, 1409, 1414, 1424, 1426, 1430, 1436, 1438, 1440, 1442, 1452, 1456, 1459, 1461, 1468, 1486, 1489, 1496, 1502, 1506, 1511, 1519, 1527, 1535, 1543, 1549, 1554, 1561, 1569, 1575, 1585, 1596, 1603, 1611, 1619, 1625, 1633, 1641, 1671, 1682, 1685, 1692, 1694, 1699, 1701, 1705, 1709, 1722, 1727, 1731, 1735, 1740] \ No newline at end of file +[4, 1, 121, 1750, 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, 1, 0, 4, 0, 390, 8, 0, 11, 0, 12, 0, 391, 1, 1, 5, 1, 395, 8, 1, 10, 1, 12, 1, 398, 9, 1, 1, 1, 1, 1, 5, 1, 402, 8, 1, 10, 1, 12, 1, 405, 9, 1, 4, 1, 407, 8, 1, 11, 1, 12, 1, 408, 1, 1, 5, 1, 412, 8, 1, 10, 1, 12, 1, 415, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 421, 8, 2, 1, 3, 3, 3, 424, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 441, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 461, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 473, 8, 10, 1, 11, 3, 11, 476, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 482, 8, 11, 1, 11, 1, 11, 3, 11, 486, 8, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 495, 8, 13, 1, 13, 3, 13, 498, 8, 13, 1, 13, 3, 13, 501, 8, 13, 1, 14, 1, 14, 1, 14, 5, 14, 506, 8, 14, 10, 14, 12, 14, 509, 9, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 524, 8, 15, 1, 16, 5, 16, 527, 8, 16, 10, 16, 12, 16, 530, 9, 16, 1, 16, 1, 16, 5, 16, 534, 8, 16, 10, 16, 12, 16, 537, 9, 16, 4, 16, 539, 8, 16, 11, 16, 12, 16, 540, 1, 16, 1, 16, 1, 17, 3, 17, 546, 8, 17, 1, 17, 1, 17, 1, 17, 1, 18, 3, 18, 552, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 5, 21, 567, 8, 21, 10, 21, 12, 21, 570, 9, 21, 1, 22, 1, 22, 1, 22, 5, 22, 575, 8, 22, 10, 22, 12, 22, 578, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 584, 8, 23, 3, 23, 586, 8, 23, 1, 23, 3, 23, 589, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 595, 8, 24, 10, 24, 12, 24, 598, 9, 24, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 604, 8, 25, 10, 25, 12, 25, 607, 9, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 617, 8, 27, 10, 27, 12, 27, 620, 9, 27, 1, 27, 3, 27, 623, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 629, 8, 28, 1, 29, 1, 29, 3, 29, 633, 8, 29, 1, 30, 1, 30, 1, 30, 5, 30, 638, 8, 30, 10, 30, 12, 30, 641, 9, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 652, 8, 32, 1, 33, 1, 33, 1, 33, 5, 33, 657, 8, 33, 10, 33, 12, 33, 660, 9, 33, 1, 34, 1, 34, 3, 34, 664, 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 669, 8, 35, 10, 35, 12, 35, 672, 9, 35, 1, 36, 1, 36, 3, 36, 676, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 685, 8, 38, 3, 38, 687, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 696, 8, 38, 1, 39, 1, 39, 3, 39, 700, 8, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 709, 8, 41, 10, 41, 12, 41, 712, 9, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 3, 43, 723, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 5, 45, 733, 8, 45, 10, 45, 12, 45, 736, 9, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 3, 48, 745, 8, 48, 1, 49, 1, 49, 1, 49, 5, 49, 750, 8, 49, 10, 49, 12, 49, 753, 9, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 767, 8, 50, 1, 51, 1, 51, 3, 51, 771, 8, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 5, 54, 784, 8, 54, 10, 54, 12, 54, 787, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 803, 8, 58, 10, 58, 12, 58, 806, 9, 58, 3, 58, 808, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 814, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 819, 8, 60, 1, 60, 5, 60, 822, 8, 60, 10, 60, 12, 60, 825, 9, 60, 1, 61, 1, 61, 3, 61, 829, 8, 61, 1, 62, 1, 62, 3, 62, 833, 8, 62, 1, 62, 1, 62, 3, 62, 837, 8, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 5, 64, 845, 8, 64, 10, 64, 12, 64, 848, 9, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 5, 65, 855, 8, 65, 10, 65, 12, 65, 858, 9, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 875, 8, 67, 1, 68, 1, 68, 1, 68, 3, 68, 880, 8, 68, 1, 69, 1, 69, 3, 69, 884, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 892, 8, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 900, 8, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 5, 74, 909, 8, 74, 10, 74, 12, 74, 912, 9, 74, 1, 75, 1, 75, 3, 75, 916, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 922, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 3, 76, 931, 8, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 5, 79, 943, 8, 79, 10, 79, 12, 79, 946, 9, 79, 1, 79, 3, 79, 949, 8, 79, 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 955, 8, 80, 1, 80, 5, 80, 958, 8, 80, 10, 80, 12, 80, 961, 9, 80, 1, 80, 1, 80, 5, 80, 965, 8, 80, 10, 80, 12, 80, 968, 9, 80, 4, 80, 970, 8, 80, 11, 80, 12, 80, 971, 1, 81, 1, 81, 1, 81, 3, 81, 977, 8, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 984, 8, 81, 1, 81, 4, 81, 987, 8, 81, 11, 81, 12, 81, 988, 1, 82, 1, 82, 3, 82, 993, 8, 82, 1, 82, 5, 82, 996, 8, 82, 10, 82, 12, 82, 999, 9, 82, 1, 82, 1, 82, 5, 82, 1003, 8, 82, 10, 82, 12, 82, 1006, 9, 82, 4, 82, 1008, 8, 82, 11, 82, 12, 82, 1009, 1, 83, 1, 83, 1, 83, 3, 83, 1015, 8, 83, 1, 84, 1, 84, 1, 84, 3, 84, 1020, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1029, 8, 85, 1, 86, 1, 86, 3, 86, 1033, 8, 86, 1, 86, 1, 86, 3, 86, 1037, 8, 86, 1, 86, 1, 86, 3, 86, 1041, 8, 86, 1, 86, 1, 86, 1, 87, 4, 87, 1046, 8, 87, 11, 87, 12, 87, 1047, 1, 88, 1, 88, 3, 88, 1052, 8, 88, 1, 88, 1, 88, 3, 88, 1056, 8, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 3, 89, 1063, 8, 89, 1, 90, 5, 90, 1066, 8, 90, 10, 90, 12, 90, 1069, 9, 90, 1, 90, 1, 90, 1, 91, 1, 91, 3, 91, 1075, 8, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1085, 8, 93, 1, 93, 4, 93, 1088, 8, 93, 11, 93, 12, 93, 1089, 3, 93, 1092, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 4, 94, 1098, 8, 94, 11, 94, 12, 94, 1099, 3, 94, 1102, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 4, 95, 1108, 8, 95, 11, 95, 12, 95, 1109, 3, 95, 1112, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 5, 97, 1121, 8, 97, 10, 97, 12, 97, 1124, 9, 97, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1130, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1155, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1173, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1184, 8, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 1196, 8, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1205, 8, 103, 10, 103, 12, 103, 1208, 9, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1228, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1249, 8, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 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, 128, 5, 128, 1302, 8, 128, 10, 128, 12, 128, 1305, 9, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 1323, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 5, 130, 1330, 8, 130, 10, 130, 12, 130, 1333, 9, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1361, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1367, 8, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 1385, 8, 135, 10, 135, 12, 135, 1388, 9, 135, 1, 135, 1, 135, 3, 135, 1392, 8, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 1404, 8, 136, 1, 137, 1, 137, 3, 137, 1408, 8, 137, 1, 138, 1, 138, 1, 138, 3, 138, 1413, 8, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 3, 140, 1423, 8, 140, 3, 140, 1425, 8, 140, 1, 140, 1, 140, 3, 140, 1429, 8, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 1435, 8, 140, 3, 140, 1437, 8, 140, 5, 140, 1439, 8, 140, 10, 140, 12, 140, 1442, 9, 140, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 1451, 8, 142, 1, 142, 1, 142, 3, 142, 1455, 8, 142, 1, 142, 3, 142, 1458, 8, 142, 3, 142, 1460, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 1467, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 3, 147, 1485, 8, 147, 1, 147, 3, 147, 1488, 8, 147, 1, 148, 1, 148, 1, 148, 5, 148, 1493, 8, 148, 10, 148, 12, 148, 1496, 9, 148, 1, 149, 1, 149, 1, 149, 3, 149, 1501, 8, 149, 1, 150, 1, 150, 3, 150, 1505, 8, 150, 1, 151, 1, 151, 1, 151, 3, 151, 1510, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1516, 8, 152, 10, 152, 12, 152, 1519, 9, 152, 1, 153, 1, 153, 1, 153, 5, 153, 1524, 8, 153, 10, 153, 12, 153, 1527, 9, 153, 1, 154, 1, 154, 1, 154, 5, 154, 1532, 8, 154, 10, 154, 12, 154, 1535, 9, 154, 1, 155, 1, 155, 1, 155, 5, 155, 1540, 8, 155, 10, 155, 12, 155, 1543, 9, 155, 1, 156, 1, 156, 1, 156, 3, 156, 1548, 8, 156, 1, 157, 1, 157, 1, 157, 3, 157, 1553, 8, 157, 1, 158, 1, 158, 1, 158, 5, 158, 1558, 8, 158, 10, 158, 12, 158, 1561, 9, 158, 1, 159, 1, 159, 1, 159, 5, 159, 1566, 8, 159, 10, 159, 12, 159, 1569, 9, 159, 1, 160, 5, 160, 1572, 8, 160, 10, 160, 12, 160, 1575, 9, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 5, 161, 1582, 8, 161, 10, 161, 12, 161, 1585, 9, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 1595, 8, 162, 1, 163, 1, 163, 1, 163, 5, 163, 1600, 8, 163, 10, 163, 12, 163, 1603, 9, 163, 1, 164, 1, 164, 1, 164, 5, 164, 1608, 8, 164, 10, 164, 12, 164, 1611, 9, 164, 1, 165, 1, 165, 1, 165, 5, 165, 1616, 8, 165, 10, 165, 12, 165, 1619, 9, 165, 1, 166, 5, 166, 1622, 8, 166, 10, 166, 12, 166, 1625, 9, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 3, 167, 1632, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 1640, 8, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 5, 179, 1668, 8, 179, 10, 179, 12, 179, 1671, 9, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 5, 180, 1679, 8, 180, 10, 180, 12, 180, 1682, 9, 180, 3, 180, 1684, 8, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 3, 181, 1691, 8, 181, 3, 181, 1693, 8, 181, 1, 182, 1, 182, 1, 182, 3, 182, 1698, 8, 182, 3, 182, 1700, 8, 182, 1, 183, 1, 183, 3, 183, 1704, 8, 183, 1, 183, 1, 183, 3, 183, 1708, 8, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 188, 3, 188, 1721, 8, 188, 1, 188, 1, 188, 1, 188, 3, 188, 1726, 8, 188, 1, 189, 1, 189, 3, 189, 1730, 8, 189, 1, 190, 1, 190, 3, 190, 1734, 8, 190, 1, 190, 1, 190, 1, 190, 3, 190, 1739, 8, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 0, 0, 194, 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, 0, 13, 2, 0, 8, 8, 115, 115, 1, 0, 114, 115, 1, 0, 20, 21, 2, 0, 97, 97, 114, 114, 2, 0, 97, 97, 112, 112, 3, 0, 68, 68, 72, 72, 76, 76, 1, 0, 74, 75, 4, 0, 95, 95, 97, 97, 112, 112, 115, 115, 1, 0, 81, 82, 1, 0, 85, 90, 2, 0, 76, 76, 117, 117, 1, 0, 113, 114, 1, 0, 91, 92, 1807, 0, 389, 1, 0, 0, 0, 2, 396, 1, 0, 0, 0, 4, 420, 1, 0, 0, 0, 6, 423, 1, 0, 0, 0, 8, 427, 1, 0, 0, 0, 10, 430, 1, 0, 0, 0, 12, 433, 1, 0, 0, 0, 14, 440, 1, 0, 0, 0, 16, 460, 1, 0, 0, 0, 18, 462, 1, 0, 0, 0, 20, 466, 1, 0, 0, 0, 22, 475, 1, 0, 0, 0, 24, 487, 1, 0, 0, 0, 26, 490, 1, 0, 0, 0, 28, 502, 1, 0, 0, 0, 30, 523, 1, 0, 0, 0, 32, 528, 1, 0, 0, 0, 34, 545, 1, 0, 0, 0, 36, 551, 1, 0, 0, 0, 38, 555, 1, 0, 0, 0, 40, 558, 1, 0, 0, 0, 42, 563, 1, 0, 0, 0, 44, 571, 1, 0, 0, 0, 46, 588, 1, 0, 0, 0, 48, 590, 1, 0, 0, 0, 50, 599, 1, 0, 0, 0, 52, 610, 1, 0, 0, 0, 54, 612, 1, 0, 0, 0, 56, 624, 1, 0, 0, 0, 58, 632, 1, 0, 0, 0, 60, 634, 1, 0, 0, 0, 62, 642, 1, 0, 0, 0, 64, 651, 1, 0, 0, 0, 66, 653, 1, 0, 0, 0, 68, 663, 1, 0, 0, 0, 70, 665, 1, 0, 0, 0, 72, 673, 1, 0, 0, 0, 74, 677, 1, 0, 0, 0, 76, 695, 1, 0, 0, 0, 78, 699, 1, 0, 0, 0, 80, 701, 1, 0, 0, 0, 82, 704, 1, 0, 0, 0, 84, 713, 1, 0, 0, 0, 86, 719, 1, 0, 0, 0, 88, 724, 1, 0, 0, 0, 90, 729, 1, 0, 0, 0, 92, 737, 1, 0, 0, 0, 94, 739, 1, 0, 0, 0, 96, 741, 1, 0, 0, 0, 98, 746, 1, 0, 0, 0, 100, 766, 1, 0, 0, 0, 102, 768, 1, 0, 0, 0, 104, 772, 1, 0, 0, 0, 106, 775, 1, 0, 0, 0, 108, 780, 1, 0, 0, 0, 110, 788, 1, 0, 0, 0, 112, 792, 1, 0, 0, 0, 114, 795, 1, 0, 0, 0, 116, 798, 1, 0, 0, 0, 118, 813, 1, 0, 0, 0, 120, 815, 1, 0, 0, 0, 122, 828, 1, 0, 0, 0, 124, 832, 1, 0, 0, 0, 126, 838, 1, 0, 0, 0, 128, 841, 1, 0, 0, 0, 130, 851, 1, 0, 0, 0, 132, 861, 1, 0, 0, 0, 134, 867, 1, 0, 0, 0, 136, 879, 1, 0, 0, 0, 138, 883, 1, 0, 0, 0, 140, 885, 1, 0, 0, 0, 142, 893, 1, 0, 0, 0, 144, 895, 1, 0, 0, 0, 146, 903, 1, 0, 0, 0, 148, 905, 1, 0, 0, 0, 150, 913, 1, 0, 0, 0, 152, 923, 1, 0, 0, 0, 154, 932, 1, 0, 0, 0, 156, 938, 1, 0, 0, 0, 158, 940, 1, 0, 0, 0, 160, 952, 1, 0, 0, 0, 162, 976, 1, 0, 0, 0, 164, 990, 1, 0, 0, 0, 166, 1014, 1, 0, 0, 0, 168, 1016, 1, 0, 0, 0, 170, 1021, 1, 0, 0, 0, 172, 1030, 1, 0, 0, 0, 174, 1045, 1, 0, 0, 0, 176, 1049, 1, 0, 0, 0, 178, 1062, 1, 0, 0, 0, 180, 1067, 1, 0, 0, 0, 182, 1072, 1, 0, 0, 0, 184, 1076, 1, 0, 0, 0, 186, 1079, 1, 0, 0, 0, 188, 1093, 1, 0, 0, 0, 190, 1103, 1, 0, 0, 0, 192, 1113, 1, 0, 0, 0, 194, 1117, 1, 0, 0, 0, 196, 1125, 1, 0, 0, 0, 198, 1154, 1, 0, 0, 0, 200, 1172, 1, 0, 0, 0, 202, 1183, 1, 0, 0, 0, 204, 1185, 1, 0, 0, 0, 206, 1199, 1, 0, 0, 0, 208, 1248, 1, 0, 0, 0, 210, 1250, 1, 0, 0, 0, 212, 1252, 1, 0, 0, 0, 214, 1254, 1, 0, 0, 0, 216, 1256, 1, 0, 0, 0, 218, 1258, 1, 0, 0, 0, 220, 1260, 1, 0, 0, 0, 222, 1262, 1, 0, 0, 0, 224, 1264, 1, 0, 0, 0, 226, 1266, 1, 0, 0, 0, 228, 1268, 1, 0, 0, 0, 230, 1270, 1, 0, 0, 0, 232, 1272, 1, 0, 0, 0, 234, 1274, 1, 0, 0, 0, 236, 1276, 1, 0, 0, 0, 238, 1278, 1, 0, 0, 0, 240, 1280, 1, 0, 0, 0, 242, 1282, 1, 0, 0, 0, 244, 1284, 1, 0, 0, 0, 246, 1286, 1, 0, 0, 0, 248, 1288, 1, 0, 0, 0, 250, 1290, 1, 0, 0, 0, 252, 1292, 1, 0, 0, 0, 254, 1294, 1, 0, 0, 0, 256, 1296, 1, 0, 0, 0, 258, 1322, 1, 0, 0, 0, 260, 1324, 1, 0, 0, 0, 262, 1366, 1, 0, 0, 0, 264, 1368, 1, 0, 0, 0, 266, 1371, 1, 0, 0, 0, 268, 1374, 1, 0, 0, 0, 270, 1391, 1, 0, 0, 0, 272, 1403, 1, 0, 0, 0, 274, 1407, 1, 0, 0, 0, 276, 1412, 1, 0, 0, 0, 278, 1414, 1, 0, 0, 0, 280, 1424, 1, 0, 0, 0, 282, 1443, 1, 0, 0, 0, 284, 1459, 1, 0, 0, 0, 286, 1466, 1, 0, 0, 0, 288, 1468, 1, 0, 0, 0, 290, 1473, 1, 0, 0, 0, 292, 1478, 1, 0, 0, 0, 294, 1481, 1, 0, 0, 0, 296, 1489, 1, 0, 0, 0, 298, 1500, 1, 0, 0, 0, 300, 1502, 1, 0, 0, 0, 302, 1506, 1, 0, 0, 0, 304, 1511, 1, 0, 0, 0, 306, 1520, 1, 0, 0, 0, 308, 1528, 1, 0, 0, 0, 310, 1536, 1, 0, 0, 0, 312, 1547, 1, 0, 0, 0, 314, 1549, 1, 0, 0, 0, 316, 1554, 1, 0, 0, 0, 318, 1562, 1, 0, 0, 0, 320, 1573, 1, 0, 0, 0, 322, 1578, 1, 0, 0, 0, 324, 1594, 1, 0, 0, 0, 326, 1596, 1, 0, 0, 0, 328, 1604, 1, 0, 0, 0, 330, 1612, 1, 0, 0, 0, 332, 1623, 1, 0, 0, 0, 334, 1628, 1, 0, 0, 0, 336, 1639, 1, 0, 0, 0, 338, 1641, 1, 0, 0, 0, 340, 1643, 1, 0, 0, 0, 342, 1645, 1, 0, 0, 0, 344, 1647, 1, 0, 0, 0, 346, 1649, 1, 0, 0, 0, 348, 1651, 1, 0, 0, 0, 350, 1653, 1, 0, 0, 0, 352, 1655, 1, 0, 0, 0, 354, 1658, 1, 0, 0, 0, 356, 1660, 1, 0, 0, 0, 358, 1662, 1, 0, 0, 0, 360, 1674, 1, 0, 0, 0, 362, 1687, 1, 0, 0, 0, 364, 1694, 1, 0, 0, 0, 366, 1701, 1, 0, 0, 0, 368, 1711, 1, 0, 0, 0, 370, 1713, 1, 0, 0, 0, 372, 1715, 1, 0, 0, 0, 374, 1717, 1, 0, 0, 0, 376, 1725, 1, 0, 0, 0, 378, 1729, 1, 0, 0, 0, 380, 1731, 1, 0, 0, 0, 382, 1743, 1, 0, 0, 0, 384, 1745, 1, 0, 0, 0, 386, 1747, 1, 0, 0, 0, 388, 390, 5, 116, 0, 0, 389, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 1, 1, 0, 0, 0, 393, 395, 3, 0, 0, 0, 394, 393, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 406, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 403, 3, 4, 2, 0, 400, 402, 3, 0, 0, 0, 401, 400, 1, 0, 0, 0, 402, 405, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 406, 399, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 406, 1, 0, 0, 0, 408, 409, 1, 0, 0, 0, 409, 413, 1, 0, 0, 0, 410, 412, 5, 119, 0, 0, 411, 410, 1, 0, 0, 0, 412, 415, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 3, 1, 0, 0, 0, 415, 413, 1, 0, 0, 0, 416, 421, 3, 8, 4, 0, 417, 421, 3, 6, 3, 0, 418, 421, 3, 10, 5, 0, 419, 421, 3, 12, 6, 0, 420, 416, 1, 0, 0, 0, 420, 417, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 420, 419, 1, 0, 0, 0, 421, 5, 1, 0, 0, 0, 422, 424, 3, 18, 9, 0, 423, 422, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 3, 32, 16, 0, 426, 7, 1, 0, 0, 0, 427, 428, 3, 22, 11, 0, 428, 429, 3, 32, 16, 0, 429, 9, 1, 0, 0, 0, 430, 431, 3, 26, 13, 0, 431, 432, 3, 32, 16, 0, 432, 11, 1, 0, 0, 0, 433, 434, 3, 24, 12, 0, 434, 435, 3, 32, 16, 0, 435, 13, 1, 0, 0, 0, 436, 441, 3, 38, 19, 0, 437, 441, 3, 48, 24, 0, 438, 441, 3, 114, 57, 0, 439, 441, 3, 116, 58, 0, 440, 436, 1, 0, 0, 0, 440, 437, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440, 439, 1, 0, 0, 0, 441, 15, 1, 0, 0, 0, 442, 461, 3, 192, 96, 0, 443, 461, 3, 140, 70, 0, 444, 461, 3, 152, 76, 0, 445, 461, 3, 168, 84, 0, 446, 461, 3, 180, 90, 0, 447, 461, 3, 182, 91, 0, 448, 461, 3, 184, 92, 0, 449, 461, 3, 188, 94, 0, 450, 461, 3, 186, 93, 0, 451, 461, 3, 190, 95, 0, 452, 461, 3, 268, 134, 0, 453, 461, 3, 264, 132, 0, 454, 461, 3, 206, 103, 0, 455, 461, 3, 256, 128, 0, 456, 461, 3, 266, 133, 0, 457, 461, 3, 260, 130, 0, 458, 461, 3, 292, 146, 0, 459, 461, 3, 300, 150, 0, 460, 442, 1, 0, 0, 0, 460, 443, 1, 0, 0, 0, 460, 444, 1, 0, 0, 0, 460, 445, 1, 0, 0, 0, 460, 446, 1, 0, 0, 0, 460, 447, 1, 0, 0, 0, 460, 448, 1, 0, 0, 0, 460, 449, 1, 0, 0, 0, 460, 450, 1, 0, 0, 0, 460, 451, 1, 0, 0, 0, 460, 452, 1, 0, 0, 0, 460, 453, 1, 0, 0, 0, 460, 454, 1, 0, 0, 0, 460, 455, 1, 0, 0, 0, 460, 456, 1, 0, 0, 0, 460, 457, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 460, 459, 1, 0, 0, 0, 461, 17, 1, 0, 0, 0, 462, 463, 5, 1, 0, 0, 463, 464, 5, 115, 0, 0, 464, 465, 5, 119, 0, 0, 465, 19, 1, 0, 0, 0, 466, 467, 5, 2, 0, 0, 467, 472, 5, 115, 0, 0, 468, 469, 5, 70, 0, 0, 469, 470, 3, 28, 14, 0, 470, 471, 5, 71, 0, 0, 471, 473, 1, 0, 0, 0, 472, 468, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 21, 1, 0, 0, 0, 474, 476, 3, 78, 39, 0, 475, 474, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 478, 5, 3, 0, 0, 478, 479, 5, 115, 0, 0, 479, 481, 5, 70, 0, 0, 480, 482, 3, 28, 14, 0, 481, 480, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 485, 5, 71, 0, 0, 484, 486, 5, 119, 0, 0, 485, 484, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 23, 1, 0, 0, 0, 487, 488, 5, 4, 0, 0, 488, 489, 5, 115, 0, 0, 489, 25, 1, 0, 0, 0, 490, 491, 5, 5, 0, 0, 491, 497, 5, 115, 0, 0, 492, 494, 5, 70, 0, 0, 493, 495, 3, 28, 14, 0, 494, 493, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 5, 71, 0, 0, 497, 492, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 500, 1, 0, 0, 0, 499, 501, 5, 119, 0, 0, 500, 499, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 27, 1, 0, 0, 0, 502, 507, 3, 384, 192, 0, 503, 504, 5, 69, 0, 0, 504, 506, 3, 384, 192, 0, 505, 503, 1, 0, 0, 0, 506, 509, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 29, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 510, 524, 3, 20, 10, 0, 511, 524, 3, 86, 43, 0, 512, 524, 3, 106, 53, 0, 513, 524, 3, 64, 32, 0, 514, 524, 3, 54, 27, 0, 515, 524, 3, 82, 41, 0, 516, 524, 3, 112, 56, 0, 517, 524, 3, 14, 7, 0, 518, 524, 3, 120, 60, 0, 519, 520, 3, 288, 144, 0, 520, 521, 3, 288, 144, 0, 521, 524, 1, 0, 0, 0, 522, 524, 3, 16, 8, 0, 523, 510, 1, 0, 0, 0, 523, 511, 1, 0, 0, 0, 523, 512, 1, 0, 0, 0, 523, 513, 1, 0, 0, 0, 523, 514, 1, 0, 0, 0, 523, 515, 1, 0, 0, 0, 523, 516, 1, 0, 0, 0, 523, 517, 1, 0, 0, 0, 523, 518, 1, 0, 0, 0, 523, 519, 1, 0, 0, 0, 523, 522, 1, 0, 0, 0, 524, 31, 1, 0, 0, 0, 525, 527, 3, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 530, 1, 0, 0, 0, 528, 526, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 538, 1, 0, 0, 0, 530, 528, 1, 0, 0, 0, 531, 535, 3, 34, 17, 0, 532, 534, 3, 0, 0, 0, 533, 532, 1, 0, 0, 0, 534, 537, 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 539, 1, 0, 0, 0, 537, 535, 1, 0, 0, 0, 538, 531, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 543, 3, 36, 18, 0, 543, 33, 1, 0, 0, 0, 544, 546, 5, 48, 0, 0, 545, 544, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 3, 30, 15, 0, 548, 549, 5, 119, 0, 0, 549, 35, 1, 0, 0, 0, 550, 552, 5, 48, 0, 0, 551, 550, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 5, 6, 0, 0, 554, 37, 1, 0, 0, 0, 555, 556, 5, 7, 0, 0, 556, 557, 3, 42, 21, 0, 557, 39, 1, 0, 0, 0, 558, 559, 7, 0, 0, 0, 559, 560, 5, 70, 0, 0, 560, 561, 3, 44, 22, 0, 561, 562, 5, 71, 0, 0, 562, 41, 1, 0, 0, 0, 563, 568, 3, 40, 20, 0, 564, 565, 5, 69, 0, 0, 565, 567, 3, 40, 20, 0, 566, 564, 1, 0, 0, 0, 567, 570, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 43, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 571, 576, 3, 46, 23, 0, 572, 573, 5, 69, 0, 0, 573, 575, 3, 46, 23, 0, 574, 572, 1, 0, 0, 0, 575, 578, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 45, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 579, 585, 3, 328, 164, 0, 580, 583, 5, 72, 0, 0, 581, 584, 3, 328, 164, 0, 582, 584, 5, 117, 0, 0, 583, 581, 1, 0, 0, 0, 583, 582, 1, 0, 0, 0, 584, 586, 1, 0, 0, 0, 585, 580, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 589, 1, 0, 0, 0, 587, 589, 5, 117, 0, 0, 588, 579, 1, 0, 0, 0, 588, 587, 1, 0, 0, 0, 589, 47, 1, 0, 0, 0, 590, 591, 5, 9, 0, 0, 591, 596, 3, 50, 25, 0, 592, 593, 5, 69, 0, 0, 593, 595, 3, 50, 25, 0, 594, 592, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 49, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 599, 600, 5, 70, 0, 0, 600, 605, 3, 52, 26, 0, 601, 602, 5, 69, 0, 0, 602, 604, 3, 52, 26, 0, 603, 601, 1, 0, 0, 0, 604, 607, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 608, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 609, 5, 71, 0, 0, 609, 51, 1, 0, 0, 0, 610, 611, 3, 362, 181, 0, 611, 53, 1, 0, 0, 0, 612, 622, 5, 10, 0, 0, 613, 618, 3, 62, 31, 0, 614, 615, 5, 69, 0, 0, 615, 617, 3, 62, 31, 0, 616, 614, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 623, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 621, 623, 3, 60, 30, 0, 622, 613, 1, 0, 0, 0, 622, 621, 1, 0, 0, 0, 623, 55, 1, 0, 0, 0, 624, 628, 5, 76, 0, 0, 625, 626, 5, 115, 0, 0, 626, 629, 5, 76, 0, 0, 627, 629, 5, 76, 0, 0, 628, 625, 1, 0, 0, 0, 628, 627, 1, 0, 0, 0, 629, 57, 1, 0, 0, 0, 630, 633, 5, 115, 0, 0, 631, 633, 3, 40, 20, 0, 632, 630, 1, 0, 0, 0, 632, 631, 1, 0, 0, 0, 633, 59, 1, 0, 0, 0, 634, 639, 3, 58, 29, 0, 635, 636, 5, 69, 0, 0, 636, 638, 3, 58, 29, 0, 637, 635, 1, 0, 0, 0, 638, 641, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 61, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 642, 643, 3, 56, 28, 0, 643, 644, 3, 60, 30, 0, 644, 63, 1, 0, 0, 0, 645, 646, 3, 76, 38, 0, 646, 647, 3, 66, 33, 0, 647, 652, 1, 0, 0, 0, 648, 649, 3, 102, 51, 0, 649, 650, 3, 70, 35, 0, 650, 652, 1, 0, 0, 0, 651, 645, 1, 0, 0, 0, 651, 648, 1, 0, 0, 0, 652, 65, 1, 0, 0, 0, 653, 658, 3, 68, 34, 0, 654, 655, 5, 69, 0, 0, 655, 657, 3, 68, 34, 0, 656, 654, 1, 0, 0, 0, 657, 660, 1, 0, 0, 0, 658, 656, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 67, 1, 0, 0, 0, 660, 658, 1, 0, 0, 0, 661, 664, 5, 115, 0, 0, 662, 664, 3, 40, 20, 0, 663, 661, 1, 0, 0, 0, 663, 662, 1, 0, 0, 0, 664, 69, 1, 0, 0, 0, 665, 670, 3, 72, 36, 0, 666, 667, 5, 69, 0, 0, 667, 669, 3, 72, 36, 0, 668, 666, 1, 0, 0, 0, 669, 672, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 71, 1, 0, 0, 0, 672, 670, 1, 0, 0, 0, 673, 675, 3, 68, 34, 0, 674, 676, 3, 74, 37, 0, 675, 674, 1, 0, 0, 0, 675, 676, 1, 0, 0, 0, 676, 73, 1, 0, 0, 0, 677, 678, 5, 117, 0, 0, 678, 679, 3, 100, 50, 0, 679, 75, 1, 0, 0, 0, 680, 696, 5, 8, 0, 0, 681, 686, 5, 108, 0, 0, 682, 684, 5, 117, 0, 0, 683, 685, 5, 114, 0, 0, 684, 683, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 687, 1, 0, 0, 0, 686, 682, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 696, 1, 0, 0, 0, 688, 689, 5, 45, 0, 0, 689, 696, 5, 108, 0, 0, 690, 691, 5, 45, 0, 0, 691, 696, 5, 109, 0, 0, 692, 696, 5, 110, 0, 0, 693, 696, 5, 111, 0, 0, 694, 696, 5, 14, 0, 0, 695, 680, 1, 0, 0, 0, 695, 681, 1, 0, 0, 0, 695, 688, 1, 0, 0, 0, 695, 690, 1, 0, 0, 0, 695, 692, 1, 0, 0, 0, 695, 693, 1, 0, 0, 0, 695, 694, 1, 0, 0, 0, 696, 77, 1, 0, 0, 0, 697, 700, 3, 76, 38, 0, 698, 700, 3, 102, 51, 0, 699, 697, 1, 0, 0, 0, 699, 698, 1, 0, 0, 0, 700, 79, 1, 0, 0, 0, 701, 702, 5, 117, 0, 0, 702, 703, 5, 114, 0, 0, 703, 81, 1, 0, 0, 0, 704, 705, 5, 11, 0, 0, 705, 710, 3, 84, 42, 0, 706, 707, 5, 69, 0, 0, 707, 709, 3, 84, 42, 0, 708, 706, 1, 0, 0, 0, 709, 712, 1, 0, 0, 0, 710, 708, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 83, 1, 0, 0, 0, 712, 710, 1, 0, 0, 0, 713, 714, 5, 70, 0, 0, 714, 715, 5, 115, 0, 0, 715, 716, 5, 69, 0, 0, 716, 717, 5, 115, 0, 0, 717, 718, 5, 71, 0, 0, 718, 85, 1, 0, 0, 0, 719, 722, 5, 12, 0, 0, 720, 723, 3, 92, 46, 0, 721, 723, 3, 90, 45, 0, 722, 720, 1, 0, 0, 0, 722, 721, 1, 0, 0, 0, 723, 87, 1, 0, 0, 0, 724, 725, 3, 78, 39, 0, 725, 726, 5, 70, 0, 0, 726, 727, 3, 98, 49, 0, 727, 728, 5, 71, 0, 0, 728, 89, 1, 0, 0, 0, 729, 734, 3, 88, 44, 0, 730, 731, 5, 69, 0, 0, 731, 733, 3, 88, 44, 0, 732, 730, 1, 0, 0, 0, 733, 736, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 91, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 737, 738, 5, 13, 0, 0, 738, 93, 1, 0, 0, 0, 739, 740, 5, 115, 0, 0, 740, 95, 1, 0, 0, 0, 741, 744, 3, 94, 47, 0, 742, 743, 5, 74, 0, 0, 743, 745, 3, 94, 47, 0, 744, 742, 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 97, 1, 0, 0, 0, 746, 751, 3, 96, 48, 0, 747, 748, 5, 69, 0, 0, 748, 750, 3, 96, 48, 0, 749, 747, 1, 0, 0, 0, 750, 753, 1, 0, 0, 0, 751, 749, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 99, 1, 0, 0, 0, 753, 751, 1, 0, 0, 0, 754, 755, 5, 70, 0, 0, 755, 756, 5, 117, 0, 0, 756, 757, 5, 71, 0, 0, 757, 758, 1, 0, 0, 0, 758, 759, 5, 70, 0, 0, 759, 760, 5, 117, 0, 0, 760, 767, 5, 71, 0, 0, 761, 767, 5, 114, 0, 0, 762, 763, 5, 70, 0, 0, 763, 764, 3, 348, 174, 0, 764, 765, 5, 71, 0, 0, 765, 767, 1, 0, 0, 0, 766, 754, 1, 0, 0, 0, 766, 761, 1, 0, 0, 0, 766, 762, 1, 0, 0, 0, 767, 101, 1, 0, 0, 0, 768, 770, 3, 350, 175, 0, 769, 771, 3, 104, 52, 0, 770, 769, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 103, 1, 0, 0, 0, 772, 773, 5, 117, 0, 0, 773, 774, 3, 100, 50, 0, 774, 105, 1, 0, 0, 0, 775, 776, 5, 15, 0, 0, 776, 777, 5, 70, 0, 0, 777, 778, 3, 108, 54, 0, 778, 779, 5, 71, 0, 0, 779, 107, 1, 0, 0, 0, 780, 785, 3, 110, 55, 0, 781, 782, 5, 69, 0, 0, 782, 784, 3, 110, 55, 0, 783, 781, 1, 0, 0, 0, 784, 787, 1, 0, 0, 0, 785, 783, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 109, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 788, 789, 5, 115, 0, 0, 789, 790, 5, 73, 0, 0, 790, 791, 3, 338, 169, 0, 791, 111, 1, 0, 0, 0, 792, 793, 5, 16, 0, 0, 793, 794, 3, 28, 14, 0, 794, 113, 1, 0, 0, 0, 795, 796, 5, 17, 0, 0, 796, 797, 3, 28, 14, 0, 797, 115, 1, 0, 0, 0, 798, 807, 5, 18, 0, 0, 799, 804, 3, 118, 59, 0, 800, 801, 5, 69, 0, 0, 801, 803, 3, 118, 59, 0, 802, 800, 1, 0, 0, 0, 803, 806, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, 808, 1, 0, 0, 0, 806, 804, 1, 0, 0, 0, 807, 799, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 117, 1, 0, 0, 0, 809, 814, 5, 115, 0, 0, 810, 811, 5, 76, 0, 0, 811, 812, 5, 115, 0, 0, 812, 814, 5, 76, 0, 0, 813, 809, 1, 0, 0, 0, 813, 810, 1, 0, 0, 0, 814, 119, 1, 0, 0, 0, 815, 816, 5, 19, 0, 0, 816, 823, 3, 126, 63, 0, 817, 819, 5, 69, 0, 0, 818, 817, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, 820, 822, 3, 126, 63, 0, 821, 818, 1, 0, 0, 0, 822, 825, 1, 0, 0, 0, 823, 821, 1, 0, 0, 0, 823, 824, 1, 0, 0, 0, 824, 121, 1, 0, 0, 0, 825, 823, 1, 0, 0, 0, 826, 829, 3, 362, 181, 0, 827, 829, 3, 132, 66, 0, 828, 826, 1, 0, 0, 0, 828, 827, 1, 0, 0, 0, 829, 123, 1, 0, 0, 0, 830, 831, 7, 1, 0, 0, 831, 833, 5, 117, 0, 0, 832, 830, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, 836, 1, 0, 0, 0, 834, 837, 3, 376, 188, 0, 835, 837, 5, 115, 0, 0, 836, 834, 1, 0, 0, 0, 836, 835, 1, 0, 0, 0, 837, 125, 1, 0, 0, 0, 838, 839, 3, 128, 64, 0, 839, 840, 3, 130, 65, 0, 840, 127, 1, 0, 0, 0, 841, 846, 3, 122, 61, 0, 842, 843, 5, 69, 0, 0, 843, 845, 3, 122, 61, 0, 844, 842, 1, 0, 0, 0, 845, 848, 1, 0, 0, 0, 846, 844, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 849, 1, 0, 0, 0, 848, 846, 1, 0, 0, 0, 849, 850, 5, 76, 0, 0, 850, 129, 1, 0, 0, 0, 851, 856, 3, 124, 62, 0, 852, 853, 5, 69, 0, 0, 853, 855, 3, 124, 62, 0, 854, 852, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 859, 1, 0, 0, 0, 858, 856, 1, 0, 0, 0, 859, 860, 5, 76, 0, 0, 860, 131, 1, 0, 0, 0, 861, 862, 5, 70, 0, 0, 862, 863, 3, 136, 68, 0, 863, 864, 5, 69, 0, 0, 864, 865, 3, 134, 67, 0, 865, 866, 5, 71, 0, 0, 866, 133, 1, 0, 0, 0, 867, 868, 5, 115, 0, 0, 868, 869, 5, 73, 0, 0, 869, 870, 3, 348, 174, 0, 870, 871, 5, 69, 0, 0, 871, 874, 3, 348, 174, 0, 872, 873, 5, 69, 0, 0, 873, 875, 3, 348, 174, 0, 874, 872, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 135, 1, 0, 0, 0, 876, 880, 3, 138, 69, 0, 877, 878, 5, 69, 0, 0, 878, 880, 3, 136, 68, 0, 879, 876, 1, 0, 0, 0, 879, 877, 1, 0, 0, 0, 880, 137, 1, 0, 0, 0, 881, 884, 3, 362, 181, 0, 882, 884, 3, 132, 66, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0, 884, 139, 1, 0, 0, 0, 885, 886, 7, 2, 0, 0, 886, 887, 3, 386, 193, 0, 887, 891, 1, 0, 0, 0, 888, 892, 3, 142, 71, 0, 889, 892, 3, 144, 72, 0, 890, 892, 3, 150, 75, 0, 891, 888, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 891, 890, 1, 0, 0, 0, 892, 141, 1, 0, 0, 0, 893, 894, 3, 146, 73, 0, 894, 143, 1, 0, 0, 0, 895, 896, 5, 70, 0, 0, 896, 897, 3, 148, 74, 0, 897, 899, 5, 71, 0, 0, 898, 900, 5, 69, 0, 0, 899, 898, 1, 0, 0, 0, 899, 900, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 902, 3, 342, 171, 0, 902, 145, 1, 0, 0, 0, 903, 904, 5, 114, 0, 0, 904, 147, 1, 0, 0, 0, 905, 910, 3, 146, 73, 0, 906, 907, 5, 69, 0, 0, 907, 909, 3, 146, 73, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 149, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, 921, 5, 115, 0, 0, 914, 916, 5, 69, 0, 0, 915, 914, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 918, 5, 70, 0, 0, 918, 919, 3, 148, 74, 0, 919, 920, 5, 71, 0, 0, 920, 922, 1, 0, 0, 0, 921, 915, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 151, 1, 0, 0, 0, 923, 924, 5, 22, 0, 0, 924, 925, 5, 70, 0, 0, 925, 926, 3, 354, 177, 0, 926, 930, 5, 71, 0, 0, 927, 931, 3, 158, 79, 0, 928, 931, 3, 156, 78, 0, 929, 931, 3, 154, 77, 0, 930, 927, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 930, 929, 1, 0, 0, 0, 931, 153, 1, 0, 0, 0, 932, 933, 3, 146, 73, 0, 933, 934, 5, 69, 0, 0, 934, 935, 3, 146, 73, 0, 935, 936, 5, 69, 0, 0, 936, 937, 3, 146, 73, 0, 937, 155, 1, 0, 0, 0, 938, 939, 3, 16, 8, 0, 939, 157, 1, 0, 0, 0, 940, 944, 3, 160, 80, 0, 941, 943, 3, 162, 81, 0, 942, 941, 1, 0, 0, 0, 943, 946, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 948, 1, 0, 0, 0, 946, 944, 1, 0, 0, 0, 947, 949, 3, 164, 82, 0, 948, 947, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 951, 3, 166, 83, 0, 951, 159, 1, 0, 0, 0, 952, 954, 5, 23, 0, 0, 953, 955, 5, 119, 0, 0, 954, 953, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 959, 1, 0, 0, 0, 956, 958, 3, 0, 0, 0, 957, 956, 1, 0, 0, 0, 958, 961, 1, 0, 0, 0, 959, 957, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 969, 1, 0, 0, 0, 961, 959, 1, 0, 0, 0, 962, 966, 3, 34, 17, 0, 963, 965, 3, 0, 0, 0, 964, 963, 1, 0, 0, 0, 965, 968, 1, 0, 0, 0, 966, 964, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 970, 1, 0, 0, 0, 968, 966, 1, 0, 0, 0, 969, 962, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 969, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 161, 1, 0, 0, 0, 973, 977, 5, 26, 0, 0, 974, 975, 5, 24, 0, 0, 975, 977, 5, 22, 0, 0, 976, 973, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 979, 5, 70, 0, 0, 979, 980, 3, 354, 177, 0, 980, 981, 5, 71, 0, 0, 981, 983, 5, 23, 0, 0, 982, 984, 5, 119, 0, 0, 983, 982, 1, 0, 0, 0, 983, 984, 1, 0, 0, 0, 984, 986, 1, 0, 0, 0, 985, 987, 3, 34, 17, 0, 986, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 986, 1, 0, 0, 0, 988, 989, 1, 0, 0, 0, 989, 163, 1, 0, 0, 0, 990, 992, 5, 24, 0, 0, 991, 993, 5, 119, 0, 0, 992, 991, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, 997, 1, 0, 0, 0, 994, 996, 3, 0, 0, 0, 995, 994, 1, 0, 0, 0, 996, 999, 1, 0, 0, 0, 997, 995, 1, 0, 0, 0, 997, 998, 1, 0, 0, 0, 998, 1007, 1, 0, 0, 0, 999, 997, 1, 0, 0, 0, 1000, 1004, 3, 34, 17, 0, 1001, 1003, 3, 0, 0, 0, 1002, 1001, 1, 0, 0, 0, 1003, 1006, 1, 0, 0, 0, 1004, 1002, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1008, 1, 0, 0, 0, 1006, 1004, 1, 0, 0, 0, 1007, 1000, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1007, 1, 0, 0, 0, 1009, 1010, 1, 0, 0, 0, 1010, 165, 1, 0, 0, 0, 1011, 1015, 5, 25, 0, 0, 1012, 1013, 5, 6, 0, 0, 1013, 1015, 5, 22, 0, 0, 1014, 1011, 1, 0, 0, 0, 1014, 1012, 1, 0, 0, 0, 1015, 167, 1, 0, 0, 0, 1016, 1019, 5, 27, 0, 0, 1017, 1020, 3, 172, 86, 0, 1018, 1020, 3, 176, 88, 0, 1019, 1017, 1, 0, 0, 0, 1019, 1018, 1, 0, 0, 0, 1020, 169, 1, 0, 0, 0, 1021, 1022, 3, 368, 184, 0, 1022, 1023, 5, 73, 0, 0, 1023, 1024, 3, 344, 172, 0, 1024, 1025, 5, 69, 0, 0, 1025, 1028, 3, 344, 172, 0, 1026, 1027, 5, 69, 0, 0, 1027, 1029, 3, 344, 172, 0, 1028, 1026, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 171, 1, 0, 0, 0, 1030, 1032, 3, 146, 73, 0, 1031, 1033, 5, 69, 0, 0, 1032, 1031, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1036, 3, 170, 85, 0, 1035, 1037, 5, 119, 0, 0, 1036, 1035, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1040, 3, 174, 87, 0, 1039, 1041, 5, 119, 0, 0, 1040, 1039, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1043, 3, 180, 90, 0, 1043, 173, 1, 0, 0, 0, 1044, 1046, 3, 34, 17, 0, 1045, 1044, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1045, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, 175, 1, 0, 0, 0, 1049, 1051, 3, 170, 85, 0, 1050, 1052, 5, 119, 0, 0, 1051, 1050, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1055, 3, 174, 87, 0, 1054, 1056, 5, 119, 0, 0, 1055, 1054, 1, 0, 0, 0, 1055, 1056, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1058, 3, 178, 89, 0, 1058, 177, 1, 0, 0, 0, 1059, 1063, 5, 30, 0, 0, 1060, 1061, 5, 6, 0, 0, 1061, 1063, 5, 27, 0, 0, 1062, 1059, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1063, 179, 1, 0, 0, 0, 1064, 1066, 3, 146, 73, 0, 1065, 1064, 1, 0, 0, 0, 1066, 1069, 1, 0, 0, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1070, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, 1070, 1071, 5, 28, 0, 0, 1071, 181, 1, 0, 0, 0, 1072, 1074, 5, 29, 0, 0, 1073, 1075, 7, 3, 0, 0, 1074, 1073, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 183, 1, 0, 0, 0, 1076, 1077, 5, 31, 0, 0, 1077, 1078, 7, 3, 0, 0, 1078, 185, 1, 0, 0, 0, 1079, 1080, 5, 32, 0, 0, 1080, 1081, 5, 70, 0, 0, 1081, 1082, 3, 194, 97, 0, 1082, 1091, 5, 71, 0, 0, 1083, 1085, 5, 69, 0, 0, 1084, 1083, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1088, 3, 200, 100, 0, 1087, 1084, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, 1, 0, 0, 0, 1091, 1087, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 187, 1, 0, 0, 0, 1093, 1094, 5, 33, 0, 0, 1094, 1101, 3, 276, 138, 0, 1095, 1096, 5, 69, 0, 0, 1096, 1098, 3, 200, 100, 0, 1097, 1095, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1097, 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1102, 1, 0, 0, 0, 1101, 1097, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 189, 1, 0, 0, 0, 1103, 1104, 5, 34, 0, 0, 1104, 1111, 3, 276, 138, 0, 1105, 1106, 5, 69, 0, 0, 1106, 1108, 3, 200, 100, 0, 1107, 1105, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112, 1, 0, 0, 0, 1111, 1107, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 191, 1, 0, 0, 0, 1113, 1114, 3, 362, 181, 0, 1114, 1115, 5, 73, 0, 0, 1115, 1116, 3, 302, 151, 0, 1116, 193, 1, 0, 0, 0, 1117, 1122, 3, 198, 99, 0, 1118, 1119, 5, 69, 0, 0, 1119, 1121, 3, 198, 99, 0, 1120, 1118, 1, 0, 0, 0, 1121, 1124, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 195, 1, 0, 0, 0, 1124, 1122, 1, 0, 0, 0, 1125, 1126, 3, 218, 109, 0, 1126, 1129, 5, 73, 0, 0, 1127, 1130, 3, 146, 73, 0, 1128, 1130, 5, 115, 0, 0, 1129, 1127, 1, 0, 0, 0, 1129, 1128, 1, 0, 0, 0, 1130, 197, 1, 0, 0, 0, 1131, 1155, 3, 274, 137, 0, 1132, 1155, 7, 4, 0, 0, 1133, 1134, 3, 210, 105, 0, 1134, 1135, 5, 73, 0, 0, 1135, 1136, 3, 276, 138, 0, 1136, 1155, 1, 0, 0, 0, 1137, 1138, 3, 212, 106, 0, 1138, 1139, 5, 73, 0, 0, 1139, 1140, 3, 274, 137, 0, 1140, 1155, 1, 0, 0, 0, 1141, 1142, 3, 214, 107, 0, 1142, 1143, 5, 73, 0, 0, 1143, 1144, 3, 342, 171, 0, 1144, 1155, 1, 0, 0, 0, 1145, 1146, 3, 216, 108, 0, 1146, 1147, 5, 73, 0, 0, 1147, 1148, 3, 146, 73, 0, 1148, 1155, 1, 0, 0, 0, 1149, 1155, 3, 196, 98, 0, 1150, 1151, 3, 220, 110, 0, 1151, 1152, 5, 73, 0, 0, 1152, 1153, 3, 362, 181, 0, 1153, 1155, 1, 0, 0, 0, 1154, 1131, 1, 0, 0, 0, 1154, 1132, 1, 0, 0, 0, 1154, 1133, 1, 0, 0, 0, 1154, 1137, 1, 0, 0, 0, 1154, 1141, 1, 0, 0, 0, 1154, 1145, 1, 0, 0, 0, 1154, 1149, 1, 0, 0, 0, 1154, 1150, 1, 0, 0, 0, 1155, 199, 1, 0, 0, 0, 1156, 1157, 3, 202, 101, 0, 1157, 1158, 5, 69, 0, 0, 1158, 1159, 5, 115, 0, 0, 1159, 1160, 5, 73, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1162, 3, 202, 101, 0, 1162, 1173, 1, 0, 0, 0, 1163, 1164, 3, 202, 101, 0, 1164, 1165, 5, 69, 0, 0, 1165, 1166, 3, 202, 101, 0, 1166, 1167, 1, 0, 0, 0, 1167, 1168, 3, 202, 101, 0, 1168, 1169, 5, 69, 0, 0, 1169, 1170, 3, 200, 100, 0, 1170, 1173, 1, 0, 0, 0, 1171, 1173, 3, 202, 101, 0, 1172, 1156, 1, 0, 0, 0, 1172, 1163, 1, 0, 0, 0, 1172, 1171, 1, 0, 0, 0, 1173, 201, 1, 0, 0, 0, 1174, 1175, 5, 70, 0, 0, 1175, 1176, 3, 200, 100, 0, 1176, 1177, 5, 69, 0, 0, 1177, 1178, 5, 115, 0, 0, 1178, 1179, 5, 73, 0, 0, 1179, 1180, 1, 0, 0, 0, 1180, 1181, 3, 204, 102, 0, 1181, 1184, 1, 0, 0, 0, 1182, 1184, 3, 302, 151, 0, 1183, 1174, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 203, 1, 0, 0, 0, 1185, 1186, 5, 70, 0, 0, 1186, 1187, 3, 200, 100, 0, 1187, 1188, 5, 69, 0, 0, 1188, 1189, 5, 115, 0, 0, 1189, 1190, 5, 73, 0, 0, 1190, 1191, 3, 344, 172, 0, 1191, 1192, 5, 69, 0, 0, 1192, 1195, 3, 344, 172, 0, 1193, 1194, 5, 69, 0, 0, 1194, 1196, 3, 344, 172, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 5, 71, 0, 0, 1198, 205, 1, 0, 0, 0, 1199, 1200, 5, 35, 0, 0, 1200, 1201, 5, 70, 0, 0, 1201, 1206, 3, 208, 104, 0, 1202, 1203, 5, 69, 0, 0, 1203, 1205, 3, 208, 104, 0, 1204, 1202, 1, 0, 0, 0, 1205, 1208, 1, 0, 0, 0, 1206, 1204, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1209, 1, 0, 0, 0, 1208, 1206, 1, 0, 0, 0, 1209, 1210, 5, 71, 0, 0, 1210, 207, 1, 0, 0, 0, 1211, 1249, 3, 274, 137, 0, 1212, 1213, 3, 212, 106, 0, 1213, 1214, 5, 73, 0, 0, 1214, 1215, 3, 274, 137, 0, 1215, 1249, 1, 0, 0, 0, 1216, 1249, 3, 196, 98, 0, 1217, 1218, 3, 222, 111, 0, 1218, 1219, 5, 73, 0, 0, 1219, 1220, 3, 350, 175, 0, 1220, 1249, 1, 0, 0, 0, 1221, 1222, 3, 224, 112, 0, 1222, 1223, 5, 73, 0, 0, 1223, 1224, 3, 350, 175, 0, 1224, 1249, 1, 0, 0, 0, 1225, 1228, 3, 226, 113, 0, 1226, 1228, 3, 228, 114, 0, 1227, 1225, 1, 0, 0, 0, 1227, 1226, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, 1229, 1230, 5, 73, 0, 0, 1230, 1231, 3, 350, 175, 0, 1231, 1249, 1, 0, 0, 0, 1232, 1233, 3, 230, 115, 0, 1233, 1234, 5, 73, 0, 0, 1234, 1235, 3, 350, 175, 0, 1235, 1249, 1, 0, 0, 0, 1236, 1237, 3, 232, 116, 0, 1237, 1238, 5, 73, 0, 0, 1238, 1239, 3, 342, 171, 0, 1239, 1249, 1, 0, 0, 0, 1240, 1241, 3, 234, 117, 0, 1241, 1242, 5, 73, 0, 0, 1242, 1243, 3, 350, 175, 0, 1243, 1249, 1, 0, 0, 0, 1244, 1245, 3, 220, 110, 0, 1245, 1246, 5, 73, 0, 0, 1246, 1247, 3, 362, 181, 0, 1247, 1249, 1, 0, 0, 0, 1248, 1211, 1, 0, 0, 0, 1248, 1212, 1, 0, 0, 0, 1248, 1216, 1, 0, 0, 0, 1248, 1217, 1, 0, 0, 0, 1248, 1221, 1, 0, 0, 0, 1248, 1227, 1, 0, 0, 0, 1248, 1232, 1, 0, 0, 0, 1248, 1236, 1, 0, 0, 0, 1248, 1240, 1, 0, 0, 0, 1248, 1244, 1, 0, 0, 0, 1249, 209, 1, 0, 0, 0, 1250, 1251, 5, 36, 0, 0, 1251, 211, 1, 0, 0, 0, 1252, 1253, 5, 37, 0, 0, 1253, 213, 1, 0, 0, 0, 1254, 1255, 5, 115, 0, 0, 1255, 215, 1, 0, 0, 0, 1256, 1257, 5, 6, 0, 0, 1257, 217, 1, 0, 0, 0, 1258, 1259, 5, 38, 0, 0, 1259, 219, 1, 0, 0, 0, 1260, 1261, 5, 46, 0, 0, 1261, 221, 1, 0, 0, 0, 1262, 1263, 5, 49, 0, 0, 1263, 223, 1, 0, 0, 0, 1264, 1265, 5, 50, 0, 0, 1265, 225, 1, 0, 0, 0, 1266, 1267, 5, 51, 0, 0, 1267, 227, 1, 0, 0, 0, 1268, 1269, 5, 52, 0, 0, 1269, 229, 1, 0, 0, 0, 1270, 1271, 5, 53, 0, 0, 1271, 231, 1, 0, 0, 0, 1272, 1273, 5, 54, 0, 0, 1273, 233, 1, 0, 0, 0, 1274, 1275, 5, 55, 0, 0, 1275, 235, 1, 0, 0, 0, 1276, 1277, 5, 56, 0, 0, 1277, 237, 1, 0, 0, 0, 1278, 1279, 5, 57, 0, 0, 1279, 239, 1, 0, 0, 0, 1280, 1281, 5, 58, 0, 0, 1281, 241, 1, 0, 0, 0, 1282, 1283, 5, 59, 0, 0, 1283, 243, 1, 0, 0, 0, 1284, 1285, 5, 115, 0, 0, 1285, 245, 1, 0, 0, 0, 1286, 1287, 5, 47, 0, 0, 1287, 247, 1, 0, 0, 0, 1288, 1289, 5, 115, 0, 0, 1289, 249, 1, 0, 0, 0, 1290, 1291, 5, 61, 0, 0, 1291, 251, 1, 0, 0, 0, 1292, 1293, 5, 62, 0, 0, 1293, 253, 1, 0, 0, 0, 1294, 1295, 5, 63, 0, 0, 1295, 255, 1, 0, 0, 0, 1296, 1297, 5, 44, 0, 0, 1297, 1298, 5, 70, 0, 0, 1298, 1303, 3, 258, 129, 0, 1299, 1300, 5, 69, 0, 0, 1300, 1302, 3, 258, 129, 0, 1301, 1299, 1, 0, 0, 0, 1302, 1305, 1, 0, 0, 0, 1303, 1301, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 1306, 1, 0, 0, 0, 1305, 1303, 1, 0, 0, 0, 1306, 1307, 5, 71, 0, 0, 1307, 257, 1, 0, 0, 0, 1308, 1323, 3, 274, 137, 0, 1309, 1310, 3, 212, 106, 0, 1310, 1311, 5, 73, 0, 0, 1311, 1312, 3, 274, 137, 0, 1312, 1323, 1, 0, 0, 0, 1313, 1323, 3, 196, 98, 0, 1314, 1315, 3, 224, 112, 0, 1315, 1316, 5, 73, 0, 0, 1316, 1317, 3, 350, 175, 0, 1317, 1323, 1, 0, 0, 0, 1318, 1319, 3, 220, 110, 0, 1319, 1320, 5, 73, 0, 0, 1320, 1321, 3, 362, 181, 0, 1321, 1323, 1, 0, 0, 0, 1322, 1308, 1, 0, 0, 0, 1322, 1309, 1, 0, 0, 0, 1322, 1313, 1, 0, 0, 0, 1322, 1314, 1, 0, 0, 0, 1322, 1318, 1, 0, 0, 0, 1323, 259, 1, 0, 0, 0, 1324, 1325, 5, 64, 0, 0, 1325, 1326, 5, 70, 0, 0, 1326, 1331, 3, 262, 131, 0, 1327, 1328, 5, 69, 0, 0, 1328, 1330, 3, 262, 131, 0, 1329, 1327, 1, 0, 0, 0, 1330, 1333, 1, 0, 0, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1334, 1, 0, 0, 0, 1333, 1331, 1, 0, 0, 0, 1334, 1335, 5, 71, 0, 0, 1335, 261, 1, 0, 0, 0, 1336, 1337, 3, 212, 106, 0, 1337, 1338, 5, 73, 0, 0, 1338, 1339, 3, 274, 137, 0, 1339, 1367, 1, 0, 0, 0, 1340, 1341, 3, 222, 111, 0, 1341, 1342, 5, 73, 0, 0, 1342, 1343, 3, 350, 175, 0, 1343, 1367, 1, 0, 0, 0, 1344, 1367, 3, 196, 98, 0, 1345, 1361, 3, 220, 110, 0, 1346, 1361, 3, 236, 118, 0, 1347, 1361, 3, 238, 119, 0, 1348, 1361, 3, 240, 120, 0, 1349, 1361, 3, 242, 121, 0, 1350, 1361, 3, 244, 122, 0, 1351, 1361, 3, 226, 113, 0, 1352, 1361, 3, 246, 123, 0, 1353, 1361, 3, 248, 124, 0, 1354, 1361, 3, 230, 115, 0, 1355, 1361, 3, 250, 125, 0, 1356, 1361, 3, 252, 126, 0, 1357, 1361, 3, 232, 116, 0, 1358, 1361, 3, 254, 127, 0, 1359, 1361, 3, 234, 117, 0, 1360, 1345, 1, 0, 0, 0, 1360, 1346, 1, 0, 0, 0, 1360, 1347, 1, 0, 0, 0, 1360, 1348, 1, 0, 0, 0, 1360, 1349, 1, 0, 0, 0, 1360, 1350, 1, 0, 0, 0, 1360, 1351, 1, 0, 0, 0, 1360, 1352, 1, 0, 0, 0, 1360, 1353, 1, 0, 0, 0, 1360, 1354, 1, 0, 0, 0, 1360, 1355, 1, 0, 0, 0, 1360, 1356, 1, 0, 0, 0, 1360, 1357, 1, 0, 0, 0, 1360, 1358, 1, 0, 0, 0, 1360, 1359, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, 5, 73, 0, 0, 1363, 1364, 3, 362, 181, 0, 1364, 1367, 1, 0, 0, 0, 1365, 1367, 3, 274, 137, 0, 1366, 1336, 1, 0, 0, 0, 1366, 1340, 1, 0, 0, 0, 1366, 1344, 1, 0, 0, 0, 1366, 1360, 1, 0, 0, 0, 1366, 1365, 1, 0, 0, 0, 1367, 263, 1, 0, 0, 0, 1368, 1369, 5, 65, 0, 0, 1369, 1370, 3, 270, 135, 0, 1370, 265, 1, 0, 0, 0, 1371, 1372, 5, 66, 0, 0, 1372, 1373, 3, 270, 135, 0, 1373, 267, 1, 0, 0, 0, 1374, 1375, 5, 67, 0, 0, 1375, 1376, 3, 270, 135, 0, 1376, 269, 1, 0, 0, 0, 1377, 1378, 3, 274, 137, 0, 1378, 1379, 3, 274, 137, 0, 1379, 1392, 1, 0, 0, 0, 1380, 1381, 5, 70, 0, 0, 1381, 1386, 3, 272, 136, 0, 1382, 1383, 5, 69, 0, 0, 1383, 1385, 3, 272, 136, 0, 1384, 1382, 1, 0, 0, 0, 1385, 1388, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 1389, 1, 0, 0, 0, 1388, 1386, 1, 0, 0, 0, 1389, 1390, 5, 71, 0, 0, 1390, 1392, 1, 0, 0, 0, 1391, 1377, 1, 0, 0, 0, 1391, 1380, 1, 0, 0, 0, 1392, 271, 1, 0, 0, 0, 1393, 1404, 3, 274, 137, 0, 1394, 1395, 3, 212, 106, 0, 1395, 1396, 5, 73, 0, 0, 1396, 1397, 3, 274, 137, 0, 1397, 1404, 1, 0, 0, 0, 1398, 1404, 3, 196, 98, 0, 1399, 1400, 3, 220, 110, 0, 1400, 1401, 5, 73, 0, 0, 1401, 1402, 3, 362, 181, 0, 1402, 1404, 1, 0, 0, 0, 1403, 1393, 1, 0, 0, 0, 1403, 1394, 1, 0, 0, 0, 1403, 1398, 1, 0, 0, 0, 1403, 1399, 1, 0, 0, 0, 1404, 273, 1, 0, 0, 0, 1405, 1408, 3, 326, 163, 0, 1406, 1408, 5, 117, 0, 0, 1407, 1405, 1, 0, 0, 0, 1407, 1406, 1, 0, 0, 0, 1408, 275, 1, 0, 0, 0, 1409, 1413, 7, 4, 0, 0, 1410, 1413, 3, 326, 163, 0, 1411, 1413, 5, 117, 0, 0, 1412, 1409, 1, 0, 0, 0, 1412, 1410, 1, 0, 0, 0, 1412, 1411, 1, 0, 0, 0, 1413, 277, 1, 0, 0, 0, 1414, 1415, 5, 40, 0, 0, 1415, 1416, 5, 70, 0, 0, 1416, 1417, 3, 280, 140, 0, 1417, 1418, 5, 71, 0, 0, 1418, 279, 1, 0, 0, 0, 1419, 1425, 3, 284, 142, 0, 1420, 1422, 3, 282, 141, 0, 1421, 1423, 3, 284, 142, 0, 1422, 1421, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 1425, 1, 0, 0, 0, 1424, 1419, 1, 0, 0, 0, 1424, 1420, 1, 0, 0, 0, 1425, 1440, 1, 0, 0, 0, 1426, 1428, 3, 282, 141, 0, 1427, 1429, 3, 284, 142, 0, 1428, 1427, 1, 0, 0, 0, 1428, 1429, 1, 0, 0, 0, 1429, 1439, 1, 0, 0, 0, 1430, 1436, 5, 69, 0, 0, 1431, 1437, 3, 284, 142, 0, 1432, 1434, 3, 282, 141, 0, 1433, 1435, 3, 284, 142, 0, 1434, 1433, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1437, 1, 0, 0, 0, 1436, 1431, 1, 0, 0, 0, 1436, 1432, 1, 0, 0, 0, 1437, 1439, 1, 0, 0, 0, 1438, 1426, 1, 0, 0, 0, 1438, 1430, 1, 0, 0, 0, 1439, 1442, 1, 0, 0, 0, 1440, 1438, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 281, 1, 0, 0, 0, 1442, 1440, 1, 0, 0, 0, 1443, 1444, 7, 5, 0, 0, 1444, 283, 1, 0, 0, 0, 1445, 1460, 5, 93, 0, 0, 1446, 1460, 3, 286, 143, 0, 1447, 1448, 5, 114, 0, 0, 1448, 1460, 3, 286, 143, 0, 1449, 1451, 7, 6, 0, 0, 1450, 1449, 1, 0, 0, 0, 1450, 1451, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 1457, 5, 94, 0, 0, 1453, 1455, 5, 114, 0, 0, 1454, 1453, 1, 0, 0, 0, 1454, 1455, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 1458, 3, 286, 143, 0, 1457, 1454, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1460, 1, 0, 0, 0, 1459, 1445, 1, 0, 0, 0, 1459, 1446, 1, 0, 0, 0, 1459, 1447, 1, 0, 0, 0, 1459, 1450, 1, 0, 0, 0, 1460, 285, 1, 0, 0, 0, 1461, 1467, 7, 7, 0, 0, 1462, 1463, 5, 70, 0, 0, 1463, 1464, 3, 280, 140, 0, 1464, 1465, 5, 71, 0, 0, 1465, 1467, 1, 0, 0, 0, 1466, 1461, 1, 0, 0, 0, 1466, 1462, 1, 0, 0, 0, 1467, 287, 1, 0, 0, 0, 1468, 1469, 5, 41, 0, 0, 1469, 1470, 3, 290, 145, 0, 1470, 1471, 5, 73, 0, 0, 1471, 1472, 3, 302, 151, 0, 1472, 289, 1, 0, 0, 0, 1473, 1474, 5, 115, 0, 0, 1474, 1475, 5, 70, 0, 0, 1475, 1476, 3, 28, 14, 0, 1476, 1477, 5, 71, 0, 0, 1477, 291, 1, 0, 0, 0, 1478, 1479, 5, 42, 0, 0, 1479, 1480, 3, 294, 147, 0, 1480, 293, 1, 0, 0, 0, 1481, 1487, 5, 115, 0, 0, 1482, 1484, 5, 70, 0, 0, 1483, 1485, 3, 296, 148, 0, 1484, 1483, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1488, 5, 71, 0, 0, 1487, 1482, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 295, 1, 0, 0, 0, 1489, 1494, 3, 298, 149, 0, 1490, 1491, 5, 69, 0, 0, 1491, 1493, 3, 298, 149, 0, 1492, 1490, 1, 0, 0, 0, 1493, 1496, 1, 0, 0, 0, 1494, 1492, 1, 0, 0, 0, 1494, 1495, 1, 0, 0, 0, 1495, 297, 1, 0, 0, 0, 1496, 1494, 1, 0, 0, 0, 1497, 1501, 3, 302, 151, 0, 1498, 1499, 5, 117, 0, 0, 1499, 1501, 3, 146, 73, 0, 1500, 1497, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1501, 299, 1, 0, 0, 0, 1502, 1504, 5, 43, 0, 0, 1503, 1505, 3, 342, 171, 0, 1504, 1503, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 301, 1, 0, 0, 0, 1506, 1509, 3, 304, 152, 0, 1507, 1508, 5, 72, 0, 0, 1508, 1510, 3, 304, 152, 0, 1509, 1507, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 303, 1, 0, 0, 0, 1511, 1517, 3, 306, 153, 0, 1512, 1513, 3, 352, 176, 0, 1513, 1514, 3, 306, 153, 0, 1514, 1516, 1, 0, 0, 0, 1515, 1512, 1, 0, 0, 0, 1516, 1519, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 305, 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1520, 1525, 3, 308, 154, 0, 1521, 1522, 7, 8, 0, 0, 1522, 1524, 3, 308, 154, 0, 1523, 1521, 1, 0, 0, 0, 1524, 1527, 1, 0, 0, 0, 1525, 1523, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 307, 1, 0, 0, 0, 1527, 1525, 1, 0, 0, 0, 1528, 1533, 3, 310, 155, 0, 1529, 1530, 5, 80, 0, 0, 1530, 1532, 3, 310, 155, 0, 1531, 1529, 1, 0, 0, 0, 1532, 1535, 1, 0, 0, 0, 1533, 1531, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 309, 1, 0, 0, 0, 1535, 1533, 1, 0, 0, 0, 1536, 1541, 3, 312, 156, 0, 1537, 1538, 5, 79, 0, 0, 1538, 1540, 3, 312, 156, 0, 1539, 1537, 1, 0, 0, 0, 1540, 1543, 1, 0, 0, 0, 1541, 1539, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, 311, 1, 0, 0, 0, 1543, 1541, 1, 0, 0, 0, 1544, 1545, 5, 78, 0, 0, 1545, 1548, 3, 312, 156, 0, 1546, 1548, 3, 314, 157, 0, 1547, 1544, 1, 0, 0, 0, 1547, 1546, 1, 0, 0, 0, 1548, 313, 1, 0, 0, 0, 1549, 1552, 3, 316, 158, 0, 1550, 1551, 7, 9, 0, 0, 1551, 1553, 3, 316, 158, 0, 1552, 1550, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 315, 1, 0, 0, 0, 1554, 1559, 3, 318, 159, 0, 1555, 1556, 7, 6, 0, 0, 1556, 1558, 3, 318, 159, 0, 1557, 1555, 1, 0, 0, 0, 1558, 1561, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, 1560, 317, 1, 0, 0, 0, 1561, 1559, 1, 0, 0, 0, 1562, 1567, 3, 320, 160, 0, 1563, 1564, 7, 10, 0, 0, 1564, 1566, 3, 320, 160, 0, 1565, 1563, 1, 0, 0, 0, 1566, 1569, 1, 0, 0, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 319, 1, 0, 0, 0, 1569, 1567, 1, 0, 0, 0, 1570, 1572, 7, 6, 0, 0, 1571, 1570, 1, 0, 0, 0, 1572, 1575, 1, 0, 0, 0, 1573, 1571, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1576, 1, 0, 0, 0, 1575, 1573, 1, 0, 0, 0, 1576, 1577, 3, 322, 161, 0, 1577, 321, 1, 0, 0, 0, 1578, 1583, 3, 324, 162, 0, 1579, 1580, 5, 77, 0, 0, 1580, 1582, 3, 324, 162, 0, 1581, 1579, 1, 0, 0, 0, 1582, 1585, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 323, 1, 0, 0, 0, 1585, 1583, 1, 0, 0, 0, 1586, 1595, 3, 378, 189, 0, 1587, 1595, 7, 4, 0, 0, 1588, 1595, 3, 382, 191, 0, 1589, 1595, 3, 362, 181, 0, 1590, 1591, 5, 70, 0, 0, 1591, 1592, 3, 302, 151, 0, 1592, 1593, 5, 71, 0, 0, 1593, 1595, 1, 0, 0, 0, 1594, 1586, 1, 0, 0, 0, 1594, 1587, 1, 0, 0, 0, 1594, 1588, 1, 0, 0, 0, 1594, 1589, 1, 0, 0, 0, 1594, 1590, 1, 0, 0, 0, 1595, 325, 1, 0, 0, 0, 1596, 1601, 3, 330, 165, 0, 1597, 1598, 7, 6, 0, 0, 1598, 1600, 3, 330, 165, 0, 1599, 1597, 1, 0, 0, 0, 1600, 1603, 1, 0, 0, 0, 1601, 1599, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 327, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1604, 1609, 3, 330, 165, 0, 1605, 1606, 7, 6, 0, 0, 1606, 1608, 3, 330, 165, 0, 1607, 1605, 1, 0, 0, 0, 1608, 1611, 1, 0, 0, 0, 1609, 1607, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 329, 1, 0, 0, 0, 1611, 1609, 1, 0, 0, 0, 1612, 1617, 3, 332, 166, 0, 1613, 1614, 7, 10, 0, 0, 1614, 1616, 3, 332, 166, 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, 331, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1622, 7, 6, 0, 0, 1621, 1620, 1, 0, 0, 0, 1622, 1625, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1626, 1, 0, 0, 0, 1625, 1623, 1, 0, 0, 0, 1626, 1627, 3, 334, 167, 0, 1627, 333, 1, 0, 0, 0, 1628, 1631, 3, 336, 168, 0, 1629, 1630, 5, 77, 0, 0, 1630, 1632, 3, 334, 167, 0, 1631, 1629, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 335, 1, 0, 0, 0, 1633, 1640, 5, 114, 0, 0, 1634, 1640, 3, 364, 182, 0, 1635, 1636, 5, 70, 0, 0, 1636, 1637, 3, 328, 164, 0, 1637, 1638, 5, 71, 0, 0, 1638, 1640, 1, 0, 0, 0, 1639, 1633, 1, 0, 0, 0, 1639, 1634, 1, 0, 0, 0, 1639, 1635, 1, 0, 0, 0, 1640, 337, 1, 0, 0, 0, 1641, 1642, 3, 302, 151, 0, 1642, 339, 1, 0, 0, 0, 1643, 1644, 3, 302, 151, 0, 1644, 341, 1, 0, 0, 0, 1645, 1646, 3, 326, 163, 0, 1646, 343, 1, 0, 0, 0, 1647, 1648, 3, 302, 151, 0, 1648, 345, 1, 0, 0, 0, 1649, 1650, 3, 302, 151, 0, 1650, 347, 1, 0, 0, 0, 1651, 1652, 3, 302, 151, 0, 1652, 349, 1, 0, 0, 0, 1653, 1654, 3, 302, 151, 0, 1654, 351, 1, 0, 0, 0, 1655, 1656, 5, 76, 0, 0, 1656, 1657, 5, 76, 0, 0, 1657, 353, 1, 0, 0, 0, 1658, 1659, 3, 302, 151, 0, 1659, 355, 1, 0, 0, 0, 1660, 1661, 3, 302, 151, 0, 1661, 357, 1, 0, 0, 0, 1662, 1663, 5, 115, 0, 0, 1663, 1664, 5, 70, 0, 0, 1664, 1669, 3, 342, 171, 0, 1665, 1666, 5, 69, 0, 0, 1666, 1668, 3, 342, 171, 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, 1672, 1, 0, 0, 0, 1671, 1669, 1, 0, 0, 0, 1672, 1673, 5, 71, 0, 0, 1673, 359, 1, 0, 0, 0, 1674, 1683, 5, 70, 0, 0, 1675, 1680, 3, 302, 151, 0, 1676, 1677, 5, 69, 0, 0, 1677, 1679, 3, 302, 151, 0, 1678, 1676, 1, 0, 0, 0, 1679, 1682, 1, 0, 0, 0, 1680, 1678, 1, 0, 0, 0, 1680, 1681, 1, 0, 0, 0, 1681, 1684, 1, 0, 0, 0, 1682, 1680, 1, 0, 0, 0, 1683, 1675, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1686, 5, 71, 0, 0, 1686, 361, 1, 0, 0, 0, 1687, 1692, 7, 0, 0, 0, 1688, 1690, 3, 360, 180, 0, 1689, 1691, 3, 366, 183, 0, 1690, 1689, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, 1, 0, 0, 0, 1692, 1688, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 363, 1, 0, 0, 0, 1694, 1699, 5, 115, 0, 0, 1695, 1697, 3, 360, 180, 0, 1696, 1698, 3, 366, 183, 0, 1697, 1696, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1700, 1, 0, 0, 0, 1699, 1695, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 365, 1, 0, 0, 0, 1701, 1703, 5, 70, 0, 0, 1702, 1704, 3, 304, 152, 0, 1703, 1702, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1707, 5, 72, 0, 0, 1706, 1708, 3, 304, 152, 0, 1707, 1706, 1, 0, 0, 0, 1707, 1708, 1, 0, 0, 0, 1708, 1709, 1, 0, 0, 0, 1709, 1710, 5, 71, 0, 0, 1710, 367, 1, 0, 0, 0, 1711, 1712, 5, 115, 0, 0, 1712, 369, 1, 0, 0, 0, 1713, 1714, 5, 115, 0, 0, 1714, 371, 1, 0, 0, 0, 1715, 1716, 5, 115, 0, 0, 1716, 373, 1, 0, 0, 0, 1717, 1718, 5, 115, 0, 0, 1718, 375, 1, 0, 0, 0, 1719, 1721, 7, 6, 0, 0, 1720, 1719, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1726, 3, 378, 189, 0, 1723, 1726, 7, 4, 0, 0, 1724, 1726, 3, 382, 191, 0, 1725, 1720, 1, 0, 0, 0, 1725, 1723, 1, 0, 0, 0, 1725, 1724, 1, 0, 0, 0, 1726, 377, 1, 0, 0, 0, 1727, 1730, 7, 11, 0, 0, 1728, 1730, 3, 380, 190, 0, 1729, 1727, 1, 0, 0, 0, 1729, 1728, 1, 0, 0, 0, 1730, 379, 1, 0, 0, 0, 1731, 1733, 5, 70, 0, 0, 1732, 1734, 7, 6, 0, 0, 1733, 1732, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1736, 7, 11, 0, 0, 1736, 1738, 5, 69, 0, 0, 1737, 1739, 7, 6, 0, 0, 1738, 1737, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1741, 7, 11, 0, 0, 1741, 1742, 5, 71, 0, 0, 1742, 381, 1, 0, 0, 0, 1743, 1744, 7, 12, 0, 0, 1744, 383, 1, 0, 0, 0, 1745, 1746, 7, 0, 0, 0, 1746, 385, 1, 0, 0, 0, 1747, 1748, 5, 115, 0, 0, 1748, 387, 1, 0, 0, 0, 171, 391, 396, 403, 408, 413, 420, 423, 440, 460, 472, 475, 481, 485, 494, 497, 500, 507, 523, 528, 535, 540, 545, 551, 568, 576, 583, 585, 588, 596, 605, 618, 622, 628, 632, 639, 651, 658, 663, 670, 675, 684, 686, 695, 699, 710, 722, 734, 744, 751, 766, 770, 785, 804, 807, 813, 818, 823, 828, 832, 836, 846, 856, 874, 879, 883, 891, 899, 910, 915, 921, 930, 944, 948, 954, 959, 966, 971, 976, 983, 988, 992, 997, 1004, 1009, 1014, 1019, 1028, 1032, 1036, 1040, 1047, 1051, 1055, 1062, 1067, 1074, 1084, 1089, 1091, 1099, 1101, 1109, 1111, 1122, 1129, 1154, 1172, 1183, 1195, 1206, 1227, 1248, 1303, 1322, 1331, 1360, 1366, 1386, 1391, 1403, 1407, 1412, 1422, 1424, 1428, 1434, 1436, 1438, 1440, 1450, 1454, 1457, 1459, 1466, 1484, 1487, 1494, 1500, 1504, 1509, 1517, 1525, 1533, 1541, 1547, 1552, 1559, 1567, 1573, 1583, 1594, 1601, 1609, 1617, 1623, 1631, 1639, 1669, 1680, 1683, 1690, 1692, 1697, 1699, 1703, 1707, 1720, 1725, 1729, 1733, 1738] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran77Parser.py b/src/pycropml/transpiler/antlr_py/grammars/Fortran77Parser.py index ade98155..0af64ff5 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran77Parser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran77Parser.py @@ -1,4 +1,4 @@ -# Generated from Fortran77Parser.g4 by ANTLR 4.8 +# Generated from Fortran77Parser.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,917 +8,691 @@ else: from typing.io import TextIO - def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3{") - buf.write("\u06d8\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") - buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") - buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") - buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") - buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") - buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") - buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") - buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") - buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") - buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") - buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") - buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4") - buf.write("_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4") - buf.write("h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4") - buf.write("q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4") - buf.write("z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080") - buf.write("\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084") - buf.write("\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087") - buf.write("\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b") - buf.write("\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e\t\u008e") - buf.write("\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092") - buf.write("\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095") - buf.write("\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099") - buf.write("\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c") - buf.write("\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0") - buf.write("\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3") - buf.write("\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7") - buf.write("\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa\t\u00aa") - buf.write("\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad\4\u00ae") - buf.write("\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1") - buf.write("\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5") - buf.write("\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8\t\u00b8") - buf.write("\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb\t\u00bb\4\u00bc") - buf.write("\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf") - buf.write("\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3") - buf.write("\t\u00c3\3\2\6\2\u0188\n\2\r\2\16\2\u0189\3\3\7\3\u018d") - buf.write("\n\3\f\3\16\3\u0190\13\3\3\3\3\3\7\3\u0194\n\3\f\3\16") - buf.write("\3\u0197\13\3\6\3\u0199\n\3\r\3\16\3\u019a\3\3\7\3\u019e") - buf.write("\n\3\f\3\16\3\u01a1\13\3\3\4\3\4\3\4\3\4\5\4\u01a7\n\4") - buf.write("\3\5\5\5\u01aa\n\5\3\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\b") - buf.write("\3\b\3\b\3\t\3\t\3\t\3\t\5\t\u01bb\n\t\3\n\3\n\3\n\3\n") - buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3") - buf.write("\n\5\n\u01cf\n\n\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3") - buf.write("\f\3\f\5\f\u01db\n\f\3\r\5\r\u01de\n\r\3\r\3\r\3\r\3\r") - buf.write("\5\r\u01e4\n\r\3\r\3\r\5\r\u01e8\n\r\3\16\3\16\3\16\3") - buf.write("\17\3\17\3\17\3\17\5\17\u01f1\n\17\3\17\5\17\u01f4\n\17") - buf.write("\3\17\5\17\u01f7\n\17\3\20\3\20\3\20\7\20\u01fc\n\20\f") - buf.write("\20\16\20\u01ff\13\20\3\21\3\21\3\21\3\21\3\21\3\21\3") - buf.write("\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u020e\n\21\3\22") - buf.write("\7\22\u0211\n\22\f\22\16\22\u0214\13\22\3\22\3\22\7\22") - buf.write("\u0218\n\22\f\22\16\22\u021b\13\22\6\22\u021d\n\22\r\22") - buf.write("\16\22\u021e\3\22\3\22\3\23\5\23\u0224\n\23\3\23\3\23") - buf.write("\3\23\3\24\5\24\u022a\n\24\3\24\3\24\3\25\3\25\3\25\3") - buf.write("\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27\7\27\u0239\n\27") - buf.write("\f\27\16\27\u023c\13\27\3\30\3\30\3\30\7\30\u0241\n\30") - buf.write("\f\30\16\30\u0244\13\30\3\31\3\31\3\31\3\31\5\31\u024a") - buf.write("\n\31\5\31\u024c\n\31\3\31\5\31\u024f\n\31\3\32\3\32\3") - buf.write("\32\3\32\7\32\u0255\n\32\f\32\16\32\u0258\13\32\3\33\3") - buf.write("\33\3\33\3\33\7\33\u025e\n\33\f\33\16\33\u0261\13\33\3") - buf.write("\33\3\33\3\34\3\34\3\35\3\35\3\35\3\35\7\35\u026b\n\35") - buf.write("\f\35\16\35\u026e\13\35\3\35\5\35\u0271\n\35\3\36\3\36") - buf.write("\3\36\3\36\5\36\u0277\n\36\3\37\3\37\5\37\u027b\n\37\3") - buf.write(" \3 \3 \7 \u0280\n \f \16 \u0283\13 \3!\3!\3!\3\"\3\"") - buf.write("\3\"\3\"\3\"\3\"\5\"\u028e\n\"\3#\3#\3#\7#\u0293\n#\f") - buf.write("#\16#\u0296\13#\3$\3$\5$\u029a\n$\3%\3%\3%\7%\u029f\n") - buf.write("%\f%\16%\u02a2\13%\3&\3&\5&\u02a6\n&\3\'\3\'\3\'\3(\3") - buf.write("(\3(\3(\5(\u02af\n(\5(\u02b1\n(\3(\3(\3(\3(\3(\3(\3(\5") - buf.write("(\u02ba\n(\3)\3)\5)\u02be\n)\3*\3*\3*\3+\3+\3+\3+\7+\u02c7") - buf.write("\n+\f+\16+\u02ca\13+\3,\3,\3,\3,\3,\3,\3-\3-\3-\5-\u02d5") - buf.write("\n-\3.\3.\3.\3.\3.\3/\3/\3/\7/\u02df\n/\f/\16/\u02e2\13") - buf.write("/\3\60\3\60\3\61\3\61\3\62\3\62\3\62\5\62\u02eb\n\62\3") - buf.write("\63\3\63\3\63\7\63\u02f0\n\63\f\63\16\63\u02f3\13\63\3") - buf.write("\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64") - buf.write("\3\64\5\64\u0301\n\64\3\65\3\65\5\65\u0305\n\65\3\66\3") - buf.write("\66\3\66\3\67\3\67\3\67\3\67\3\67\38\38\38\78\u0312\n") - buf.write("8\f8\168\u0315\138\39\39\39\39\3:\3:\3:\3;\3;\3;\3<\3") - buf.write("<\3<\3<\7<\u0325\n<\f<\16<\u0328\13<\5<\u032a\n<\3=\3") - buf.write("=\3=\3=\5=\u0330\n=\3>\3>\3>\5>\u0335\n>\3>\7>\u0338\n") - buf.write(">\f>\16>\u033b\13>\3?\3?\5?\u033f\n?\3@\3@\5@\u0343\n") - buf.write("@\3@\3@\5@\u0347\n@\3A\3A\3A\3B\3B\3B\7B\u034f\nB\fB\16") - buf.write("B\u0352\13B\3B\3B\3C\3C\3C\7C\u0359\nC\fC\16C\u035c\13") - buf.write("C\3C\3C\3D\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3E\3E\5E\u036d") - buf.write("\nE\3F\3F\3F\5F\u0372\nF\3G\3G\5G\u0376\nG\3H\3H\3H\3") - buf.write("H\3H\3H\5H\u037e\nH\3I\3I\3J\3J\3J\3J\5J\u0386\nJ\3J\3") - buf.write("J\3K\3K\3L\3L\3L\7L\u038f\nL\fL\16L\u0392\13L\3M\3M\5") - buf.write("M\u0396\nM\3M\3M\3M\3M\5M\u039c\nM\3N\3N\3N\3N\3N\3N\3") - buf.write("N\5N\u03a5\nN\3O\3O\3O\3O\3O\3O\3P\3P\3Q\3Q\7Q\u03b1\n") - buf.write("Q\fQ\16Q\u03b4\13Q\3Q\5Q\u03b7\nQ\3Q\3Q\3R\3R\5R\u03bd") - buf.write("\nR\3R\7R\u03c0\nR\fR\16R\u03c3\13R\3R\3R\7R\u03c7\nR") - buf.write("\fR\16R\u03ca\13R\6R\u03cc\nR\rR\16R\u03cd\3S\3S\3S\5") - buf.write("S\u03d3\nS\3S\3S\3S\3S\3S\5S\u03da\nS\3S\6S\u03dd\nS\r") - buf.write("S\16S\u03de\3T\3T\5T\u03e3\nT\3T\7T\u03e6\nT\fT\16T\u03e9") - buf.write("\13T\3T\3T\7T\u03ed\nT\fT\16T\u03f0\13T\6T\u03f2\nT\r") - buf.write("T\16T\u03f3\3U\3U\3U\5U\u03f9\nU\3V\3V\3V\5V\u03fe\nV") - buf.write("\3W\3W\3W\3W\3W\3W\3W\5W\u0407\nW\3X\3X\5X\u040b\nX\3") - buf.write("X\3X\5X\u040f\nX\3X\3X\5X\u0413\nX\3X\3X\3Y\6Y\u0418\n") - buf.write("Y\rY\16Y\u0419\3Z\3Z\5Z\u041e\nZ\3Z\3Z\5Z\u0422\nZ\3Z") - buf.write("\3Z\3[\3[\3[\5[\u0429\n[\3\\\7\\\u042c\n\\\f\\\16\\\u042f") - buf.write("\13\\\3\\\3\\\3]\3]\5]\u0435\n]\3^\3^\3^\3_\3_\3_\3_\3") - buf.write("_\5_\u043f\n_\3_\6_\u0442\n_\r_\16_\u0443\5_\u0446\n_") - buf.write("\3`\3`\3`\3`\6`\u044c\n`\r`\16`\u044d\5`\u0450\n`\3a\3") - buf.write("a\3a\3a\6a\u0456\na\ra\16a\u0457\5a\u045a\na\3b\3b\3b") - buf.write("\3b\3c\3c\3c\7c\u0463\nc\fc\16c\u0466\13c\3d\3d\3d\3d") - buf.write("\5d\u046c\nd\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3") - buf.write("e\3e\3e\3e\3e\3e\3e\3e\3e\3e\5e\u0485\ne\3f\3f\3f\3f\3") - buf.write("f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\5f\u0497\nf\3g\3g\3") - buf.write("g\3g\3g\3g\3g\3g\3g\5g\u04a2\ng\3h\3h\3h\3h\3h\3h\3h\3") - buf.write("h\3h\3h\5h\u04ae\nh\3h\3h\3i\3i\3i\3i\3i\7i\u04b7\ni\f") - buf.write("i\16i\u04ba\13i\3i\3i\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3") - buf.write("j\3j\3j\3j\3j\3j\5j\u04ce\nj\3j\3j\3j\3j\3j\3j\3j\3j\3") - buf.write("j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\5j\u04e3\nj\3k\3k\3l\3") - buf.write("l\3m\3m\3n\3n\3o\3o\3p\3p\3q\3q\3r\3r\3s\3s\3t\3t\3u\3") - buf.write("u\3v\3v\3w\3w\3x\3x\3y\3y\3z\3z\3{\3{\3|\3|\3}\3}\3~\3") - buf.write("~\3\177\3\177\3\u0080\3\u0080\3\u0081\3\u0081\3\u0082") - buf.write("\3\u0082\3\u0082\3\u0082\3\u0082\7\u0082\u0518\n\u0082") - buf.write("\f\u0082\16\u0082\u051b\13\u0082\3\u0082\3\u0082\3\u0083") - buf.write("\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083") - buf.write("\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\5\u0083") - buf.write("\u052d\n\u0083\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084") - buf.write("\7\u0084\u0534\n\u0084\f\u0084\16\u0084\u0537\13\u0084") - buf.write("\3\u0084\3\u0084\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085") - buf.write("\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085") - buf.write("\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085") - buf.write("\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\5\u0085\u0553") - buf.write("\n\u0085\3\u0085\3\u0085\3\u0085\3\u0085\5\u0085\u0559") - buf.write("\n\u0085\3\u0086\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087") - buf.write("\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089\3\u0089") - buf.write("\3\u0089\3\u0089\3\u0089\7\u0089\u056b\n\u0089\f\u0089") - buf.write("\16\u0089\u056e\13\u0089\3\u0089\3\u0089\5\u0089\u0572") - buf.write("\n\u0089\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a") - buf.write("\3\u008a\3\u008a\3\u008a\3\u008a\5\u008a\u057e\n\u008a") - buf.write("\3\u008b\3\u008b\5\u008b\u0582\n\u008b\3\u008c\3\u008c") - buf.write("\3\u008c\5\u008c\u0587\n\u008c\3\u008d\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\5\u008e\u0591") - buf.write("\n\u008e\5\u008e\u0593\n\u008e\3\u008e\3\u008e\5\u008e") - buf.write("\u0597\n\u008e\3\u008e\3\u008e\3\u008e\3\u008e\5\u008e") - buf.write("\u059d\n\u008e\5\u008e\u059f\n\u008e\7\u008e\u05a1\n\u008e") - buf.write("\f\u008e\16\u008e\u05a4\13\u008e\3\u008f\3\u008f\3\u0090") - buf.write("\3\u0090\3\u0090\3\u0090\3\u0090\5\u0090\u05ad\n\u0090") - buf.write("\3\u0090\3\u0090\5\u0090\u05b1\n\u0090\3\u0090\5\u0090") - buf.write("\u05b4\n\u0090\5\u0090\u05b6\n\u0090\3\u0091\3\u0091\3") - buf.write("\u0091\3\u0091\3\u0091\5\u0091\u05bd\n\u0091\3\u0092\3") - buf.write("\u0092\3\u0092\3\u0092\3\u0092\3\u0093\3\u0093\3\u0093") - buf.write("\3\u0093\3\u0093\3\u0094\3\u0094\3\u0094\3\u0095\3\u0095") - buf.write("\3\u0095\5\u0095\u05cf\n\u0095\3\u0095\5\u0095\u05d2\n") - buf.write("\u0095\3\u0096\3\u0096\3\u0096\7\u0096\u05d7\n\u0096\f") - buf.write("\u0096\16\u0096\u05da\13\u0096\3\u0097\3\u0097\3\u0097") - buf.write("\5\u0097\u05df\n\u0097\3\u0098\3\u0098\5\u0098\u05e3\n") - buf.write("\u0098\3\u0099\3\u0099\3\u0099\5\u0099\u05e8\n\u0099\3") - buf.write("\u009a\3\u009a\3\u009a\3\u009a\7\u009a\u05ee\n\u009a\f") - buf.write("\u009a\16\u009a\u05f1\13\u009a\3\u009b\3\u009b\3\u009b") - buf.write("\7\u009b\u05f6\n\u009b\f\u009b\16\u009b\u05f9\13\u009b") - buf.write("\3\u009c\3\u009c\3\u009c\7\u009c\u05fe\n\u009c\f\u009c") - buf.write("\16\u009c\u0601\13\u009c\3\u009d\3\u009d\3\u009d\7\u009d") - buf.write("\u0606\n\u009d\f\u009d\16\u009d\u0609\13\u009d\3\u009e") - buf.write("\3\u009e\3\u009e\5\u009e\u060e\n\u009e\3\u009f\3\u009f") - buf.write("\3\u009f\5\u009f\u0613\n\u009f\3\u00a0\3\u00a0\3\u00a0") - buf.write("\7\u00a0\u0618\n\u00a0\f\u00a0\16\u00a0\u061b\13\u00a0") - buf.write("\3\u00a1\3\u00a1\3\u00a1\7\u00a1\u0620\n\u00a1\f\u00a1") - buf.write("\16\u00a1\u0623\13\u00a1\3\u00a2\7\u00a2\u0626\n\u00a2") - buf.write("\f\u00a2\16\u00a2\u0629\13\u00a2\3\u00a2\3\u00a2\3\u00a3") - buf.write("\3\u00a3\3\u00a3\7\u00a3\u0630\n\u00a3\f\u00a3\16\u00a3") - buf.write("\u0633\13\u00a3\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4") - buf.write("\3\u00a4\3\u00a4\3\u00a4\5\u00a4\u063d\n\u00a4\3\u00a5") - buf.write("\3\u00a5\3\u00a5\7\u00a5\u0642\n\u00a5\f\u00a5\16\u00a5") - buf.write("\u0645\13\u00a5\3\u00a6\3\u00a6\3\u00a6\7\u00a6\u064a") - buf.write("\n\u00a6\f\u00a6\16\u00a6\u064d\13\u00a6\3\u00a7\3\u00a7") - buf.write("\3\u00a7\7\u00a7\u0652\n\u00a7\f\u00a7\16\u00a7\u0655") - buf.write("\13\u00a7\3\u00a8\7\u00a8\u0658\n\u00a8\f\u00a8\16\u00a8") - buf.write("\u065b\13\u00a8\3\u00a8\3\u00a8\3\u00a9\3\u00a9\3\u00a9") - buf.write("\5\u00a9\u0662\n\u00a9\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00aa\3\u00aa\5\u00aa\u066a\n\u00aa\3\u00ab\3\u00ab") - buf.write("\3\u00ac\3\u00ac\3\u00ad\3\u00ad\3\u00ae\3\u00ae\3\u00af") - buf.write("\3\u00af\3\u00b0\3\u00b0\3\u00b1\3\u00b1\3\u00b2\3\u00b2") - buf.write("\3\u00b2\3\u00b3\3\u00b3\3\u00b4\3\u00b4\3\u00b5\3\u00b5") - buf.write("\3\u00b5\3\u00b5\3\u00b5\7\u00b5\u0686\n\u00b5\f\u00b5") - buf.write("\16\u00b5\u0689\13\u00b5\3\u00b5\3\u00b5\3\u00b6\3\u00b6") - buf.write("\3\u00b6\3\u00b6\7\u00b6\u0691\n\u00b6\f\u00b6\16\u00b6") - buf.write("\u0694\13\u00b6\5\u00b6\u0696\n\u00b6\3\u00b6\3\u00b6") - buf.write("\3\u00b7\3\u00b7\3\u00b7\5\u00b7\u069d\n\u00b7\5\u00b7") - buf.write("\u069f\n\u00b7\3\u00b8\3\u00b8\3\u00b8\5\u00b8\u06a4\n") - buf.write("\u00b8\5\u00b8\u06a6\n\u00b8\3\u00b9\3\u00b9\5\u00b9\u06aa") - buf.write("\n\u00b9\3\u00b9\3\u00b9\5\u00b9\u06ae\n\u00b9\3\u00b9") - buf.write("\3\u00b9\3\u00ba\3\u00ba\3\u00bb\3\u00bb\3\u00bc\3\u00bc") - buf.write("\3\u00bd\3\u00bd\3\u00be\5\u00be\u06bb\n\u00be\3\u00be") - buf.write("\3\u00be\3\u00be\5\u00be\u06c0\n\u00be\3\u00bf\3\u00bf") - buf.write("\5\u00bf\u06c4\n\u00bf\3\u00c0\3\u00c0\5\u00c0\u06c8\n") - buf.write("\u00c0\3\u00c0\3\u00c0\3\u00c0\5\u00c0\u06cd\n\u00c0\3") - buf.write("\u00c0\3\u00c0\3\u00c0\3\u00c1\3\u00c1\3\u00c2\3\u00c2") - buf.write("\3\u00c3\3\u00c3\3\u00c3\2\2\u00c4\2\4\6\b\n\f\16\20\22") - buf.write("\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPR") - buf.write("TVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088") - buf.write("\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a") - buf.write("\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac") - buf.write("\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be") - buf.write("\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0") - buf.write("\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2") - buf.write("\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4") - buf.write("\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106") - buf.write("\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118") - buf.write("\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a") - buf.write("\u012c\u012e\u0130\u0132\u0134\u0136\u0138\u013a\u013c") - buf.write("\u013e\u0140\u0142\u0144\u0146\u0148\u014a\u014c\u014e") - buf.write("\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160") - buf.write("\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172") - buf.write("\u0174\u0176\u0178\u017a\u017c\u017e\u0180\u0182\u0184") - buf.write("\2\17\4\2\n\nuu\3\2tu\3\2\26\27\4\2cctt\4\2ccrr\5\2FF") - buf.write("JJNN\3\2LM\6\2aaccrruu\3\2ST\3\2W\\\4\2NNww\3\2st\3\2") - buf.write("]^\2\u0711\2\u0187\3\2\2\2\4\u018e\3\2\2\2\6\u01a6\3\2") - buf.write("\2\2\b\u01a9\3\2\2\2\n\u01ad\3\2\2\2\f\u01b0\3\2\2\2\16") - buf.write("\u01b3\3\2\2\2\20\u01ba\3\2\2\2\22\u01ce\3\2\2\2\24\u01d0") - buf.write("\3\2\2\2\26\u01d4\3\2\2\2\30\u01dd\3\2\2\2\32\u01e9\3") - buf.write("\2\2\2\34\u01ec\3\2\2\2\36\u01f8\3\2\2\2 \u020d\3\2\2") - buf.write("\2\"\u0212\3\2\2\2$\u0223\3\2\2\2&\u0229\3\2\2\2(\u022d") - buf.write("\3\2\2\2*\u0230\3\2\2\2,\u0235\3\2\2\2.\u023d\3\2\2\2") - buf.write("\60\u024e\3\2\2\2\62\u0250\3\2\2\2\64\u0259\3\2\2\2\66") - buf.write("\u0264\3\2\2\28\u0266\3\2\2\2:\u0272\3\2\2\2<\u027a\3") - buf.write("\2\2\2>\u027c\3\2\2\2@\u0284\3\2\2\2B\u028d\3\2\2\2D\u028f") - buf.write("\3\2\2\2F\u0299\3\2\2\2H\u029b\3\2\2\2J\u02a3\3\2\2\2") - buf.write("L\u02a7\3\2\2\2N\u02b9\3\2\2\2P\u02bd\3\2\2\2R\u02bf\3") - buf.write("\2\2\2T\u02c2\3\2\2\2V\u02cb\3\2\2\2X\u02d1\3\2\2\2Z\u02d6") - buf.write("\3\2\2\2\\\u02db\3\2\2\2^\u02e3\3\2\2\2`\u02e5\3\2\2\2") - buf.write("b\u02e7\3\2\2\2d\u02ec\3\2\2\2f\u0300\3\2\2\2h\u0302\3") - buf.write("\2\2\2j\u0306\3\2\2\2l\u0309\3\2\2\2n\u030e\3\2\2\2p\u0316") - buf.write("\3\2\2\2r\u031a\3\2\2\2t\u031d\3\2\2\2v\u0320\3\2\2\2") - buf.write("x\u032f\3\2\2\2z\u0331\3\2\2\2|\u033e\3\2\2\2~\u0342\3") - buf.write("\2\2\2\u0080\u0348\3\2\2\2\u0082\u034b\3\2\2\2\u0084\u0355") - buf.write("\3\2\2\2\u0086\u035f\3\2\2\2\u0088\u0365\3\2\2\2\u008a") - buf.write("\u0371\3\2\2\2\u008c\u0375\3\2\2\2\u008e\u0377\3\2\2\2") - buf.write("\u0090\u037f\3\2\2\2\u0092\u0381\3\2\2\2\u0094\u0389\3") - buf.write("\2\2\2\u0096\u038b\3\2\2\2\u0098\u0393\3\2\2\2\u009a\u039d") - buf.write("\3\2\2\2\u009c\u03a6\3\2\2\2\u009e\u03ac\3\2\2\2\u00a0") - buf.write("\u03ae\3\2\2\2\u00a2\u03ba\3\2\2\2\u00a4\u03d2\3\2\2\2") - buf.write("\u00a6\u03e0\3\2\2\2\u00a8\u03f8\3\2\2\2\u00aa\u03fa\3") - buf.write("\2\2\2\u00ac\u03ff\3\2\2\2\u00ae\u0408\3\2\2\2\u00b0\u0417") - buf.write("\3\2\2\2\u00b2\u041b\3\2\2\2\u00b4\u0428\3\2\2\2\u00b6") - buf.write("\u042d\3\2\2\2\u00b8\u0432\3\2\2\2\u00ba\u0436\3\2\2\2") - buf.write("\u00bc\u0439\3\2\2\2\u00be\u0447\3\2\2\2\u00c0\u0451\3") - buf.write("\2\2\2\u00c2\u045b\3\2\2\2\u00c4\u045f\3\2\2\2\u00c6\u0467") - buf.write("\3\2\2\2\u00c8\u0484\3\2\2\2\u00ca\u0496\3\2\2\2\u00cc") - buf.write("\u04a1\3\2\2\2\u00ce\u04a3\3\2\2\2\u00d0\u04b1\3\2\2\2") - buf.write("\u00d2\u04e2\3\2\2\2\u00d4\u04e4\3\2\2\2\u00d6\u04e6\3") - buf.write("\2\2\2\u00d8\u04e8\3\2\2\2\u00da\u04ea\3\2\2\2\u00dc\u04ec") - buf.write("\3\2\2\2\u00de\u04ee\3\2\2\2\u00e0\u04f0\3\2\2\2\u00e2") - buf.write("\u04f2\3\2\2\2\u00e4\u04f4\3\2\2\2\u00e6\u04f6\3\2\2\2") - buf.write("\u00e8\u04f8\3\2\2\2\u00ea\u04fa\3\2\2\2\u00ec\u04fc\3") - buf.write("\2\2\2\u00ee\u04fe\3\2\2\2\u00f0\u0500\3\2\2\2\u00f2\u0502") - buf.write("\3\2\2\2\u00f4\u0504\3\2\2\2\u00f6\u0506\3\2\2\2\u00f8") - buf.write("\u0508\3\2\2\2\u00fa\u050a\3\2\2\2\u00fc\u050c\3\2\2\2") - buf.write("\u00fe\u050e\3\2\2\2\u0100\u0510\3\2\2\2\u0102\u0512\3") - buf.write("\2\2\2\u0104\u052c\3\2\2\2\u0106\u052e\3\2\2\2\u0108\u0558") - buf.write("\3\2\2\2\u010a\u055a\3\2\2\2\u010c\u055d\3\2\2\2\u010e") - buf.write("\u0560\3\2\2\2\u0110\u0571\3\2\2\2\u0112\u057d\3\2\2\2") - buf.write("\u0114\u0581\3\2\2\2\u0116\u0586\3\2\2\2\u0118\u0588\3") - buf.write("\2\2\2\u011a\u0592\3\2\2\2\u011c\u05a5\3\2\2\2\u011e\u05b5") - buf.write("\3\2\2\2\u0120\u05bc\3\2\2\2\u0122\u05be\3\2\2\2\u0124") - buf.write("\u05c3\3\2\2\2\u0126\u05c8\3\2\2\2\u0128\u05cb\3\2\2\2") - buf.write("\u012a\u05d3\3\2\2\2\u012c\u05de\3\2\2\2\u012e\u05e0\3") - buf.write("\2\2\2\u0130\u05e4\3\2\2\2\u0132\u05e9\3\2\2\2\u0134\u05f2") - buf.write("\3\2\2\2\u0136\u05fa\3\2\2\2\u0138\u0602\3\2\2\2\u013a") - buf.write("\u060d\3\2\2\2\u013c\u060f\3\2\2\2\u013e\u0614\3\2\2\2") - buf.write("\u0140\u061c\3\2\2\2\u0142\u0627\3\2\2\2\u0144\u062c\3") - buf.write("\2\2\2\u0146\u063c\3\2\2\2\u0148\u063e\3\2\2\2\u014a\u0646") - buf.write("\3\2\2\2\u014c\u064e\3\2\2\2\u014e\u0659\3\2\2\2\u0150") - buf.write("\u065e\3\2\2\2\u0152\u0669\3\2\2\2\u0154\u066b\3\2\2\2") - buf.write("\u0156\u066d\3\2\2\2\u0158\u066f\3\2\2\2\u015a\u0671\3") - buf.write("\2\2\2\u015c\u0673\3\2\2\2\u015e\u0675\3\2\2\2\u0160\u0677") - buf.write("\3\2\2\2\u0162\u0679\3\2\2\2\u0164\u067c\3\2\2\2\u0166") - buf.write("\u067e\3\2\2\2\u0168\u0680\3\2\2\2\u016a\u068c\3\2\2\2") - buf.write("\u016c\u0699\3\2\2\2\u016e\u06a0\3\2\2\2\u0170\u06a7\3") - buf.write("\2\2\2\u0172\u06b1\3\2\2\2\u0174\u06b3\3\2\2\2\u0176\u06b5") - buf.write("\3\2\2\2\u0178\u06b7\3\2\2\2\u017a\u06bf\3\2\2\2\u017c") - buf.write("\u06c3\3\2\2\2\u017e\u06c5\3\2\2\2\u0180\u06d1\3\2\2\2") - buf.write("\u0182\u06d3\3\2\2\2\u0184\u06d5\3\2\2\2\u0186\u0188\7") - buf.write("v\2\2\u0187\u0186\3\2\2\2\u0188\u0189\3\2\2\2\u0189\u0187") - buf.write("\3\2\2\2\u0189\u018a\3\2\2\2\u018a\3\3\2\2\2\u018b\u018d") - buf.write("\5\2\2\2\u018c\u018b\3\2\2\2\u018d\u0190\3\2\2\2\u018e") - buf.write("\u018c\3\2\2\2\u018e\u018f\3\2\2\2\u018f\u0198\3\2\2\2") - buf.write("\u0190\u018e\3\2\2\2\u0191\u0195\5\6\4\2\u0192\u0194\5") - buf.write("\2\2\2\u0193\u0192\3\2\2\2\u0194\u0197\3\2\2\2\u0195\u0193") - buf.write("\3\2\2\2\u0195\u0196\3\2\2\2\u0196\u0199\3\2\2\2\u0197") - buf.write("\u0195\3\2\2\2\u0198\u0191\3\2\2\2\u0199\u019a\3\2\2\2") - buf.write("\u019a\u0198\3\2\2\2\u019a\u019b\3\2\2\2\u019b\u019f\3") - buf.write("\2\2\2\u019c\u019e\7y\2\2\u019d\u019c\3\2\2\2\u019e\u01a1") - buf.write("\3\2\2\2\u019f\u019d\3\2\2\2\u019f\u01a0\3\2\2\2\u01a0") - buf.write("\5\3\2\2\2\u01a1\u019f\3\2\2\2\u01a2\u01a7\5\n\6\2\u01a3") - buf.write("\u01a7\5\b\5\2\u01a4\u01a7\5\f\7\2\u01a5\u01a7\5\16\b") - buf.write("\2\u01a6\u01a2\3\2\2\2\u01a6\u01a3\3\2\2\2\u01a6\u01a4") - buf.write("\3\2\2\2\u01a6\u01a5\3\2\2\2\u01a7\7\3\2\2\2\u01a8\u01aa") - buf.write("\5\24\13\2\u01a9\u01a8\3\2\2\2\u01a9\u01aa\3\2\2\2\u01aa") - buf.write("\u01ab\3\2\2\2\u01ab\u01ac\5\"\22\2\u01ac\t\3\2\2\2\u01ad") - buf.write("\u01ae\5\30\r\2\u01ae\u01af\5\"\22\2\u01af\13\3\2\2\2") - buf.write("\u01b0\u01b1\5\34\17\2\u01b1\u01b2\5\"\22\2\u01b2\r\3") - buf.write("\2\2\2\u01b3\u01b4\5\32\16\2\u01b4\u01b5\5\"\22\2\u01b5") - buf.write("\17\3\2\2\2\u01b6\u01bb\5(\25\2\u01b7\u01bb\5\62\32\2") - buf.write("\u01b8\u01bb\5t;\2\u01b9\u01bb\5v<\2\u01ba\u01b6\3\2\2") - buf.write("\2\u01ba\u01b7\3\2\2\2\u01ba\u01b8\3\2\2\2\u01ba\u01b9") - buf.write("\3\2\2\2\u01bb\21\3\2\2\2\u01bc\u01cf\5\u00c2b\2\u01bd") - buf.write("\u01cf\5\u008eH\2\u01be\u01cf\5\u009aN\2\u01bf\u01cf\5") - buf.write("\u00aaV\2\u01c0\u01cf\5\u00b6\\\2\u01c1\u01cf\5\u00b8") - buf.write("]\2\u01c2\u01cf\5\u00ba^\2\u01c3\u01cf\5\u00be`\2\u01c4") - buf.write("\u01cf\5\u00bc_\2\u01c5\u01cf\5\u00c0a\2\u01c6\u01cf\5") - buf.write("\u010e\u0088\2\u01c7\u01cf\5\u010a\u0086\2\u01c8\u01cf") - buf.write("\5\u00d0i\2\u01c9\u01cf\5\u0102\u0082\2\u01ca\u01cf\5") - buf.write("\u010c\u0087\2\u01cb\u01cf\5\u0106\u0084\2\u01cc\u01cf") - buf.write("\5\u0126\u0094\2\u01cd\u01cf\5\u012e\u0098\2\u01ce\u01bc") - buf.write("\3\2\2\2\u01ce\u01bd\3\2\2\2\u01ce\u01be\3\2\2\2\u01ce") - buf.write("\u01bf\3\2\2\2\u01ce\u01c0\3\2\2\2\u01ce\u01c1\3\2\2\2") - buf.write("\u01ce\u01c2\3\2\2\2\u01ce\u01c3\3\2\2\2\u01ce\u01c4\3") - buf.write("\2\2\2\u01ce\u01c5\3\2\2\2\u01ce\u01c6\3\2\2\2\u01ce\u01c7") - buf.write("\3\2\2\2\u01ce\u01c8\3\2\2\2\u01ce\u01c9\3\2\2\2\u01ce") - buf.write("\u01ca\3\2\2\2\u01ce\u01cb\3\2\2\2\u01ce\u01cc\3\2\2\2") - buf.write("\u01ce\u01cd\3\2\2\2\u01cf\23\3\2\2\2\u01d0\u01d1\7\3") - buf.write("\2\2\u01d1\u01d2\7u\2\2\u01d2\u01d3\7y\2\2\u01d3\25\3") - buf.write("\2\2\2\u01d4\u01d5\7\4\2\2\u01d5\u01da\7u\2\2\u01d6\u01d7") - buf.write("\7H\2\2\u01d7\u01d8\5\36\20\2\u01d8\u01d9\7I\2\2\u01d9") - buf.write("\u01db\3\2\2\2\u01da\u01d6\3\2\2\2\u01da\u01db\3\2\2\2") - buf.write("\u01db\27\3\2\2\2\u01dc\u01de\5P)\2\u01dd\u01dc\3\2\2") - buf.write("\2\u01dd\u01de\3\2\2\2\u01de\u01df\3\2\2\2\u01df\u01e0") - buf.write("\7\5\2\2\u01e0\u01e1\7u\2\2\u01e1\u01e3\7H\2\2\u01e2\u01e4") - buf.write("\5\36\20\2\u01e3\u01e2\3\2\2\2\u01e3\u01e4\3\2\2\2\u01e4") - buf.write("\u01e5\3\2\2\2\u01e5\u01e7\7I\2\2\u01e6\u01e8\7y\2\2\u01e7") - buf.write("\u01e6\3\2\2\2\u01e7\u01e8\3\2\2\2\u01e8\31\3\2\2\2\u01e9") - buf.write("\u01ea\7\6\2\2\u01ea\u01eb\7u\2\2\u01eb\33\3\2\2\2\u01ec") - buf.write("\u01ed\7\7\2\2\u01ed\u01f3\7u\2\2\u01ee\u01f0\7H\2\2\u01ef") - buf.write("\u01f1\5\36\20\2\u01f0\u01ef\3\2\2\2\u01f0\u01f1\3\2\2") - buf.write("\2\u01f1\u01f2\3\2\2\2\u01f2\u01f4\7I\2\2\u01f3\u01ee") - buf.write("\3\2\2\2\u01f3\u01f4\3\2\2\2\u01f4\u01f6\3\2\2\2\u01f5") - buf.write("\u01f7\7y\2\2\u01f6\u01f5\3\2\2\2\u01f6\u01f7\3\2\2\2") - buf.write("\u01f7\35\3\2\2\2\u01f8\u01fd\5\u0182\u00c2\2\u01f9\u01fa") - buf.write("\7G\2\2\u01fa\u01fc\5\u0182\u00c2\2\u01fb\u01f9\3\2\2") - buf.write("\2\u01fc\u01ff\3\2\2\2\u01fd\u01fb\3\2\2\2\u01fd\u01fe") - buf.write("\3\2\2\2\u01fe\37\3\2\2\2\u01ff\u01fd\3\2\2\2\u0200\u020e") - buf.write("\5\26\f\2\u0201\u020e\5X-\2\u0202\u020e\5l\67\2\u0203") - buf.write("\u020e\5B\"\2\u0204\u020e\58\35\2\u0205\u020e\5T+\2\u0206") - buf.write("\u020e\5r:\2\u0207\u020e\5\20\t\2\u0208\u020e\5z>\2\u0209") - buf.write("\u020a\5\u0122\u0092\2\u020a\u020b\5\u0122\u0092\2\u020b") - buf.write("\u020e\3\2\2\2\u020c\u020e\5\22\n\2\u020d\u0200\3\2\2") - buf.write("\2\u020d\u0201\3\2\2\2\u020d\u0202\3\2\2\2\u020d\u0203") - buf.write("\3\2\2\2\u020d\u0204\3\2\2\2\u020d\u0205\3\2\2\2\u020d") - buf.write("\u0206\3\2\2\2\u020d\u0207\3\2\2\2\u020d\u0208\3\2\2\2") - buf.write("\u020d\u0209\3\2\2\2\u020d\u020c\3\2\2\2\u020e!\3\2\2") - buf.write("\2\u020f\u0211\5\2\2\2\u0210\u020f\3\2\2\2\u0211\u0214") - buf.write("\3\2\2\2\u0212\u0210\3\2\2\2\u0212\u0213\3\2\2\2\u0213") - buf.write("\u021c\3\2\2\2\u0214\u0212\3\2\2\2\u0215\u0219\5$\23\2") - buf.write("\u0216\u0218\5\2\2\2\u0217\u0216\3\2\2\2\u0218\u021b\3") - buf.write("\2\2\2\u0219\u0217\3\2\2\2\u0219\u021a\3\2\2\2\u021a\u021d") - buf.write("\3\2\2\2\u021b\u0219\3\2\2\2\u021c\u0215\3\2\2\2\u021d") - buf.write("\u021e\3\2\2\2\u021e\u021c\3\2\2\2\u021e\u021f\3\2\2\2") - buf.write("\u021f\u0220\3\2\2\2\u0220\u0221\5&\24\2\u0221#\3\2\2") - buf.write("\2\u0222\u0224\7\62\2\2\u0223\u0222\3\2\2\2\u0223\u0224") - buf.write("\3\2\2\2\u0224\u0225\3\2\2\2\u0225\u0226\5 \21\2\u0226") - buf.write("\u0227\7y\2\2\u0227%\3\2\2\2\u0228\u022a\7\62\2\2\u0229") - buf.write("\u0228\3\2\2\2\u0229\u022a\3\2\2\2\u022a\u022b\3\2\2\2") - buf.write("\u022b\u022c\7\b\2\2\u022c\'\3\2\2\2\u022d\u022e\7\t\2") - buf.write("\2\u022e\u022f\5,\27\2\u022f)\3\2\2\2\u0230\u0231\t\2") - buf.write("\2\2\u0231\u0232\7H\2\2\u0232\u0233\5.\30\2\u0233\u0234") - buf.write("\7I\2\2\u0234+\3\2\2\2\u0235\u023a\5*\26\2\u0236\u0237") - buf.write("\7G\2\2\u0237\u0239\5*\26\2\u0238\u0236\3\2\2\2\u0239") - buf.write("\u023c\3\2\2\2\u023a\u0238\3\2\2\2\u023a\u023b\3\2\2\2") - buf.write("\u023b-\3\2\2\2\u023c\u023a\3\2\2\2\u023d\u0242\5\60\31") - buf.write("\2\u023e\u023f\7G\2\2\u023f\u0241\5\60\31\2\u0240\u023e") - buf.write("\3\2\2\2\u0241\u0244\3\2\2\2\u0242\u0240\3\2\2\2\u0242") - buf.write("\u0243\3\2\2\2\u0243/\3\2\2\2\u0244\u0242\3\2\2\2\u0245") - buf.write("\u024b\5\u014a\u00a6\2\u0246\u0249\7J\2\2\u0247\u024a") - buf.write("\5\u014a\u00a6\2\u0248\u024a\7w\2\2\u0249\u0247\3\2\2") - buf.write("\2\u0249\u0248\3\2\2\2\u024a\u024c\3\2\2\2\u024b\u0246") - buf.write("\3\2\2\2\u024b\u024c\3\2\2\2\u024c\u024f\3\2\2\2\u024d") - buf.write("\u024f\7w\2\2\u024e\u0245\3\2\2\2\u024e\u024d\3\2\2\2") - buf.write("\u024f\61\3\2\2\2\u0250\u0251\7\13\2\2\u0251\u0256\5\64") - buf.write("\33\2\u0252\u0253\7G\2\2\u0253\u0255\5\64\33\2\u0254\u0252") - buf.write("\3\2\2\2\u0255\u0258\3\2\2\2\u0256\u0254\3\2\2\2\u0256") - buf.write("\u0257\3\2\2\2\u0257\63\3\2\2\2\u0258\u0256\3\2\2\2\u0259") - buf.write("\u025a\7H\2\2\u025a\u025f\5\66\34\2\u025b\u025c\7G\2\2") - buf.write("\u025c\u025e\5\66\34\2\u025d\u025b\3\2\2\2\u025e\u0261") - buf.write("\3\2\2\2\u025f\u025d\3\2\2\2\u025f\u0260\3\2\2\2\u0260") - buf.write("\u0262\3\2\2\2\u0261\u025f\3\2\2\2\u0262\u0263\7I\2\2") - buf.write("\u0263\65\3\2\2\2\u0264\u0265\5\u016c\u00b7\2\u0265\67") - buf.write("\3\2\2\2\u0266\u0270\7\f\2\2\u0267\u026c\5@!\2\u0268\u0269") - buf.write("\7G\2\2\u0269\u026b\5@!\2\u026a\u0268\3\2\2\2\u026b\u026e") - buf.write("\3\2\2\2\u026c\u026a\3\2\2\2\u026c\u026d\3\2\2\2\u026d") - buf.write("\u0271\3\2\2\2\u026e\u026c\3\2\2\2\u026f\u0271\5> \2\u0270") - buf.write("\u0267\3\2\2\2\u0270\u026f\3\2\2\2\u02719\3\2\2\2\u0272") - buf.write("\u0276\7N\2\2\u0273\u0274\7u\2\2\u0274\u0277\7N\2\2\u0275") - buf.write("\u0277\7N\2\2\u0276\u0273\3\2\2\2\u0276\u0275\3\2\2\2") - buf.write("\u0277;\3\2\2\2\u0278\u027b\7u\2\2\u0279\u027b\5*\26\2") - buf.write("\u027a\u0278\3\2\2\2\u027a\u0279\3\2\2\2\u027b=\3\2\2") - buf.write("\2\u027c\u0281\5<\37\2\u027d\u027e\7G\2\2\u027e\u0280") - buf.write("\5<\37\2\u027f\u027d\3\2\2\2\u0280\u0283\3\2\2\2\u0281") - buf.write("\u027f\3\2\2\2\u0281\u0282\3\2\2\2\u0282?\3\2\2\2\u0283") - buf.write("\u0281\3\2\2\2\u0284\u0285\5:\36\2\u0285\u0286\5> \2\u0286") - buf.write("A\3\2\2\2\u0287\u0288\5N(\2\u0288\u0289\5D#\2\u0289\u028e") - buf.write("\3\2\2\2\u028a\u028b\5h\65\2\u028b\u028c\5H%\2\u028c\u028e") - buf.write("\3\2\2\2\u028d\u0287\3\2\2\2\u028d\u028a\3\2\2\2\u028e") - buf.write("C\3\2\2\2\u028f\u0294\5F$\2\u0290\u0291\7G\2\2\u0291\u0293") - buf.write("\5F$\2\u0292\u0290\3\2\2\2\u0293\u0296\3\2\2\2\u0294\u0292") - buf.write("\3\2\2\2\u0294\u0295\3\2\2\2\u0295E\3\2\2\2\u0296\u0294") - buf.write("\3\2\2\2\u0297\u029a\7u\2\2\u0298\u029a\5*\26\2\u0299") - buf.write("\u0297\3\2\2\2\u0299\u0298\3\2\2\2\u029aG\3\2\2\2\u029b") - buf.write("\u02a0\5J&\2\u029c\u029d\7G\2\2\u029d\u029f\5J&\2\u029e") - buf.write("\u029c\3\2\2\2\u029f\u02a2\3\2\2\2\u02a0\u029e\3\2\2\2") - buf.write("\u02a0\u02a1\3\2\2\2\u02a1I\3\2\2\2\u02a2\u02a0\3\2\2") - buf.write("\2\u02a3\u02a5\5F$\2\u02a4\u02a6\5L\'\2\u02a5\u02a4\3") - buf.write("\2\2\2\u02a5\u02a6\3\2\2\2\u02a6K\3\2\2\2\u02a7\u02a8") - buf.write("\7w\2\2\u02a8\u02a9\5f\64\2\u02a9M\3\2\2\2\u02aa\u02ba") - buf.write("\7\n\2\2\u02ab\u02b0\7n\2\2\u02ac\u02ae\7w\2\2\u02ad\u02af") - buf.write("\7t\2\2\u02ae\u02ad\3\2\2\2\u02ae\u02af\3\2\2\2\u02af") - buf.write("\u02b1\3\2\2\2\u02b0\u02ac\3\2\2\2\u02b0\u02b1\3\2\2\2") - buf.write("\u02b1\u02ba\3\2\2\2\u02b2\u02b3\7/\2\2\u02b3\u02ba\7") - buf.write("n\2\2\u02b4\u02b5\7/\2\2\u02b5\u02ba\7o\2\2\u02b6\u02ba") - buf.write("\7p\2\2\u02b7\u02ba\7q\2\2\u02b8\u02ba\7\20\2\2\u02b9") - buf.write("\u02aa\3\2\2\2\u02b9\u02ab\3\2\2\2\u02b9\u02b2\3\2\2\2") - buf.write("\u02b9\u02b4\3\2\2\2\u02b9\u02b6\3\2\2\2\u02b9\u02b7\3") - buf.write("\2\2\2\u02b9\u02b8\3\2\2\2\u02baO\3\2\2\2\u02bb\u02be") - buf.write("\5N(\2\u02bc\u02be\5h\65\2\u02bd\u02bb\3\2\2\2\u02bd\u02bc") - buf.write("\3\2\2\2\u02beQ\3\2\2\2\u02bf\u02c0\7w\2\2\u02c0\u02c1") - buf.write("\7t\2\2\u02c1S\3\2\2\2\u02c2\u02c3\7\r\2\2\u02c3\u02c8") - buf.write("\5V,\2\u02c4\u02c5\7G\2\2\u02c5\u02c7\5V,\2\u02c6\u02c4") - buf.write("\3\2\2\2\u02c7\u02ca\3\2\2\2\u02c8\u02c6\3\2\2\2\u02c8") - buf.write("\u02c9\3\2\2\2\u02c9U\3\2\2\2\u02ca\u02c8\3\2\2\2\u02cb") - buf.write("\u02cc\7H\2\2\u02cc\u02cd\7u\2\2\u02cd\u02ce\7G\2\2\u02ce") - buf.write("\u02cf\7u\2\2\u02cf\u02d0\7I\2\2\u02d0W\3\2\2\2\u02d1") - buf.write("\u02d4\7\16\2\2\u02d2\u02d5\5^\60\2\u02d3\u02d5\5\\/\2") - buf.write("\u02d4\u02d2\3\2\2\2\u02d4\u02d3\3\2\2\2\u02d5Y\3\2\2") - buf.write("\2\u02d6\u02d7\5P)\2\u02d7\u02d8\7H\2\2\u02d8\u02d9\5") - buf.write("d\63\2\u02d9\u02da\7I\2\2\u02da[\3\2\2\2\u02db\u02e0\5") - buf.write("Z.\2\u02dc\u02dd\7G\2\2\u02dd\u02df\5Z.\2\u02de\u02dc") - buf.write("\3\2\2\2\u02df\u02e2\3\2\2\2\u02e0\u02de\3\2\2\2\u02e0") - buf.write("\u02e1\3\2\2\2\u02e1]\3\2\2\2\u02e2\u02e0\3\2\2\2\u02e3") - buf.write("\u02e4\7\17\2\2\u02e4_\3\2\2\2\u02e5\u02e6\7u\2\2\u02e6") - buf.write("a\3\2\2\2\u02e7\u02ea\5`\61\2\u02e8\u02e9\7L\2\2\u02e9") - buf.write("\u02eb\5`\61\2\u02ea\u02e8\3\2\2\2\u02ea\u02eb\3\2\2\2") - buf.write("\u02ebc\3\2\2\2\u02ec\u02f1\5b\62\2\u02ed\u02ee\7G\2\2") - buf.write("\u02ee\u02f0\5b\62\2\u02ef\u02ed\3\2\2\2\u02f0\u02f3\3") - buf.write("\2\2\2\u02f1\u02ef\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2e") - buf.write("\3\2\2\2\u02f3\u02f1\3\2\2\2\u02f4\u02f5\7H\2\2\u02f5") - buf.write("\u02f6\7w\2\2\u02f6\u02f7\7I\2\2\u02f7\u02f8\3\2\2\2\u02f8") - buf.write("\u02f9\7H\2\2\u02f9\u02fa\7w\2\2\u02fa\u0301\7I\2\2\u02fb") - buf.write("\u0301\7t\2\2\u02fc\u02fd\7H\2\2\u02fd\u02fe\5\u015e\u00b0") - buf.write("\2\u02fe\u02ff\7I\2\2\u02ff\u0301\3\2\2\2\u0300\u02f4") - buf.write("\3\2\2\2\u0300\u02fb\3\2\2\2\u0300\u02fc\3\2\2\2\u0301") - buf.write("g\3\2\2\2\u0302\u0304\5\u0160\u00b1\2\u0303\u0305\5j\66") - buf.write("\2\u0304\u0303\3\2\2\2\u0304\u0305\3\2\2\2\u0305i\3\2") - buf.write("\2\2\u0306\u0307\7w\2\2\u0307\u0308\5f\64\2\u0308k\3\2") - buf.write("\2\2\u0309\u030a\7\21\2\2\u030a\u030b\7H\2\2\u030b\u030c") - buf.write("\5n8\2\u030c\u030d\7I\2\2\u030dm\3\2\2\2\u030e\u0313\5") - buf.write("p9\2\u030f\u0310\7G\2\2\u0310\u0312\5p9\2\u0311\u030f") - buf.write("\3\2\2\2\u0312\u0315\3\2\2\2\u0313\u0311\3\2\2\2\u0313") - buf.write("\u0314\3\2\2\2\u0314o\3\2\2\2\u0315\u0313\3\2\2\2\u0316") - buf.write("\u0317\7u\2\2\u0317\u0318\7K\2\2\u0318\u0319\5\u0154\u00ab") - buf.write("\2\u0319q\3\2\2\2\u031a\u031b\7\22\2\2\u031b\u031c\5\36") - buf.write("\20\2\u031cs\3\2\2\2\u031d\u031e\7\23\2\2\u031e\u031f") - buf.write("\5\36\20\2\u031fu\3\2\2\2\u0320\u0329\7\24\2\2\u0321\u0326") - buf.write("\5x=\2\u0322\u0323\7G\2\2\u0323\u0325\5x=\2\u0324\u0322") - buf.write("\3\2\2\2\u0325\u0328\3\2\2\2\u0326\u0324\3\2\2\2\u0326") - buf.write("\u0327\3\2\2\2\u0327\u032a\3\2\2\2\u0328\u0326\3\2\2\2") - buf.write("\u0329\u0321\3\2\2\2\u0329\u032a\3\2\2\2\u032aw\3\2\2") - buf.write("\2\u032b\u0330\7u\2\2\u032c\u032d\7N\2\2\u032d\u032e\7") - buf.write("u\2\2\u032e\u0330\7N\2\2\u032f\u032b\3\2\2\2\u032f\u032c") - buf.write("\3\2\2\2\u0330y\3\2\2\2\u0331\u0332\7\25\2\2\u0332\u0339") - buf.write("\5\u0080A\2\u0333\u0335\7G\2\2\u0334\u0333\3\2\2\2\u0334") - buf.write("\u0335\3\2\2\2\u0335\u0336\3\2\2\2\u0336\u0338\5\u0080") - buf.write("A\2\u0337\u0334\3\2\2\2\u0338\u033b\3\2\2\2\u0339\u0337") - buf.write("\3\2\2\2\u0339\u033a\3\2\2\2\u033a{\3\2\2\2\u033b\u0339") - buf.write("\3\2\2\2\u033c\u033f\5\u016c\u00b7\2\u033d\u033f\5\u0086") - buf.write("D\2\u033e\u033c\3\2\2\2\u033e\u033d\3\2\2\2\u033f}\3\2") - buf.write("\2\2\u0340\u0341\t\3\2\2\u0341\u0343\7w\2\2\u0342\u0340") - buf.write("\3\2\2\2\u0342\u0343\3\2\2\2\u0343\u0346\3\2\2\2\u0344") - buf.write("\u0347\5\u017a\u00be\2\u0345\u0347\7u\2\2\u0346\u0344") - buf.write("\3\2\2\2\u0346\u0345\3\2\2\2\u0347\177\3\2\2\2\u0348\u0349") - buf.write("\5\u0082B\2\u0349\u034a\5\u0084C\2\u034a\u0081\3\2\2\2") - buf.write("\u034b\u0350\5|?\2\u034c\u034d\7G\2\2\u034d\u034f\5|?") - buf.write("\2\u034e\u034c\3\2\2\2\u034f\u0352\3\2\2\2\u0350\u034e") - buf.write("\3\2\2\2\u0350\u0351\3\2\2\2\u0351\u0353\3\2\2\2\u0352") - buf.write("\u0350\3\2\2\2\u0353\u0354\7N\2\2\u0354\u0083\3\2\2\2") - buf.write("\u0355\u035a\5~@\2\u0356\u0357\7G\2\2\u0357\u0359\5~@") - buf.write("\2\u0358\u0356\3\2\2\2\u0359\u035c\3\2\2\2\u035a\u0358") - buf.write("\3\2\2\2\u035a\u035b\3\2\2\2\u035b\u035d\3\2\2\2\u035c") - buf.write("\u035a\3\2\2\2\u035d\u035e\7N\2\2\u035e\u0085\3\2\2\2") - buf.write("\u035f\u0360\7H\2\2\u0360\u0361\5\u008aF\2\u0361\u0362") - buf.write("\7G\2\2\u0362\u0363\5\u0088E\2\u0363\u0364\7I\2\2\u0364") - buf.write("\u0087\3\2\2\2\u0365\u0366\7u\2\2\u0366\u0367\7K\2\2\u0367") - buf.write("\u0368\5\u015e\u00b0\2\u0368\u0369\7G\2\2\u0369\u036c") - buf.write("\5\u015e\u00b0\2\u036a\u036b\7G\2\2\u036b\u036d\5\u015e") - buf.write("\u00b0\2\u036c\u036a\3\2\2\2\u036c\u036d\3\2\2\2\u036d") - buf.write("\u0089\3\2\2\2\u036e\u0372\5\u008cG\2\u036f\u0370\7G\2") - buf.write("\2\u0370\u0372\5\u008aF\2\u0371\u036e\3\2\2\2\u0371\u036f") - buf.write("\3\2\2\2\u0372\u008b\3\2\2\2\u0373\u0376\5\u016c\u00b7") - buf.write("\2\u0374\u0376\5\u0086D\2\u0375\u0373\3\2\2\2\u0375\u0374") - buf.write("\3\2\2\2\u0376\u008d\3\2\2\2\u0377\u0378\t\4\2\2\u0378") - buf.write("\u0379\5\u0184\u00c3\2\u0379\u037d\3\2\2\2\u037a\u037e") - buf.write("\5\u0090I\2\u037b\u037e\5\u0092J\2\u037c\u037e\5\u0098") - buf.write("M\2\u037d\u037a\3\2\2\2\u037d\u037b\3\2\2\2\u037d\u037c") - buf.write("\3\2\2\2\u037e\u008f\3\2\2\2\u037f\u0380\5\u0094K\2\u0380") - buf.write("\u0091\3\2\2\2\u0381\u0382\7H\2\2\u0382\u0383\5\u0096") - buf.write("L\2\u0383\u0385\7I\2\2\u0384\u0386\7G\2\2\u0385\u0384") - buf.write("\3\2\2\2\u0385\u0386\3\2\2\2\u0386\u0387\3\2\2\2\u0387") - buf.write("\u0388\5\u0158\u00ad\2\u0388\u0093\3\2\2\2\u0389\u038a") - buf.write("\7t\2\2\u038a\u0095\3\2\2\2\u038b\u0390\5\u0094K\2\u038c") - buf.write("\u038d\7G\2\2\u038d\u038f\5\u0094K\2\u038e\u038c\3\2\2") - buf.write("\2\u038f\u0392\3\2\2\2\u0390\u038e\3\2\2\2\u0390\u0391") - buf.write("\3\2\2\2\u0391\u0097\3\2\2\2\u0392\u0390\3\2\2\2\u0393") - buf.write("\u039b\7u\2\2\u0394\u0396\7G\2\2\u0395\u0394\3\2\2\2\u0395") - buf.write("\u0396\3\2\2\2\u0396\u0397\3\2\2\2\u0397\u0398\7H\2\2") - buf.write("\u0398\u0399\5\u0096L\2\u0399\u039a\7I\2\2\u039a\u039c") - buf.write("\3\2\2\2\u039b\u0395\3\2\2\2\u039b\u039c\3\2\2\2\u039c") - buf.write("\u0099\3\2\2\2\u039d\u039e\7\30\2\2\u039e\u039f\7H\2\2") - buf.write("\u039f\u03a0\5\u0164\u00b3\2\u03a0\u03a4\7I\2\2\u03a1") - buf.write("\u03a5\5\u00a0Q\2\u03a2\u03a5\5\u009eP\2\u03a3\u03a5\5") - buf.write("\u009cO\2\u03a4\u03a1\3\2\2\2\u03a4\u03a2\3\2\2\2\u03a4") - buf.write("\u03a3\3\2\2\2\u03a5\u009b\3\2\2\2\u03a6\u03a7\5\u0094") - buf.write("K\2\u03a7\u03a8\7G\2\2\u03a8\u03a9\5\u0094K\2\u03a9\u03aa") - buf.write("\7G\2\2\u03aa\u03ab\5\u0094K\2\u03ab\u009d\3\2\2\2\u03ac") - buf.write("\u03ad\5\22\n\2\u03ad\u009f\3\2\2\2\u03ae\u03b2\5\u00a2") - buf.write("R\2\u03af\u03b1\5\u00a4S\2\u03b0\u03af\3\2\2\2\u03b1\u03b4") - buf.write("\3\2\2\2\u03b2\u03b0\3\2\2\2\u03b2\u03b3\3\2\2\2\u03b3") - buf.write("\u03b6\3\2\2\2\u03b4\u03b2\3\2\2\2\u03b5\u03b7\5\u00a6") - buf.write("T\2\u03b6\u03b5\3\2\2\2\u03b6\u03b7\3\2\2\2\u03b7\u03b8") - buf.write("\3\2\2\2\u03b8\u03b9\5\u00a8U\2\u03b9\u00a1\3\2\2\2\u03ba") - buf.write("\u03bc\7\31\2\2\u03bb\u03bd\7y\2\2\u03bc\u03bb\3\2\2\2") - buf.write("\u03bc\u03bd\3\2\2\2\u03bd\u03c1\3\2\2\2\u03be\u03c0\5") - buf.write("\2\2\2\u03bf\u03be\3\2\2\2\u03c0\u03c3\3\2\2\2\u03c1\u03bf") - buf.write("\3\2\2\2\u03c1\u03c2\3\2\2\2\u03c2\u03cb\3\2\2\2\u03c3") - buf.write("\u03c1\3\2\2\2\u03c4\u03c8\5$\23\2\u03c5\u03c7\5\2\2\2") - buf.write("\u03c6\u03c5\3\2\2\2\u03c7\u03ca\3\2\2\2\u03c8\u03c6\3") - buf.write("\2\2\2\u03c8\u03c9\3\2\2\2\u03c9\u03cc\3\2\2\2\u03ca\u03c8") - buf.write("\3\2\2\2\u03cb\u03c4\3\2\2\2\u03cc\u03cd\3\2\2\2\u03cd") - buf.write("\u03cb\3\2\2\2\u03cd\u03ce\3\2\2\2\u03ce\u00a3\3\2\2\2") - buf.write("\u03cf\u03d3\7\34\2\2\u03d0\u03d1\7\32\2\2\u03d1\u03d3") - buf.write("\7\30\2\2\u03d2\u03cf\3\2\2\2\u03d2\u03d0\3\2\2\2\u03d3") - buf.write("\u03d4\3\2\2\2\u03d4\u03d5\7H\2\2\u03d5\u03d6\5\u0164") - buf.write("\u00b3\2\u03d6\u03d7\7I\2\2\u03d7\u03d9\7\31\2\2\u03d8") - buf.write("\u03da\7y\2\2\u03d9\u03d8\3\2\2\2\u03d9\u03da\3\2\2\2") - buf.write("\u03da\u03dc\3\2\2\2\u03db\u03dd\5$\23\2\u03dc\u03db\3") - buf.write("\2\2\2\u03dd\u03de\3\2\2\2\u03de\u03dc\3\2\2\2\u03de\u03df") - buf.write("\3\2\2\2\u03df\u00a5\3\2\2\2\u03e0\u03e2\7\32\2\2\u03e1") - buf.write("\u03e3\7y\2\2\u03e2\u03e1\3\2\2\2\u03e2\u03e3\3\2\2\2") - buf.write("\u03e3\u03e7\3\2\2\2\u03e4\u03e6\5\2\2\2\u03e5\u03e4\3") - buf.write("\2\2\2\u03e6\u03e9\3\2\2\2\u03e7\u03e5\3\2\2\2\u03e7\u03e8") - buf.write("\3\2\2\2\u03e8\u03f1\3\2\2\2\u03e9\u03e7\3\2\2\2\u03ea") - buf.write("\u03ee\5$\23\2\u03eb\u03ed\5\2\2\2\u03ec\u03eb\3\2\2\2") - buf.write("\u03ed\u03f0\3\2\2\2\u03ee\u03ec\3\2\2\2\u03ee\u03ef\3") - buf.write("\2\2\2\u03ef\u03f2\3\2\2\2\u03f0\u03ee\3\2\2\2\u03f1\u03ea") - buf.write("\3\2\2\2\u03f2\u03f3\3\2\2\2\u03f3\u03f1\3\2\2\2\u03f3") - buf.write("\u03f4\3\2\2\2\u03f4\u00a7\3\2\2\2\u03f5\u03f9\7\33\2") - buf.write("\2\u03f6\u03f7\7\b\2\2\u03f7\u03f9\7\30\2\2\u03f8\u03f5") - buf.write("\3\2\2\2\u03f8\u03f6\3\2\2\2\u03f9\u00a9\3\2\2\2\u03fa") - buf.write("\u03fd\7\35\2\2\u03fb\u03fe\5\u00aeX\2\u03fc\u03fe\5\u00b2") - buf.write("Z\2\u03fd\u03fb\3\2\2\2\u03fd\u03fc\3\2\2\2\u03fe\u00ab") - buf.write("\3\2\2\2\u03ff\u0400\5\u0172\u00ba\2\u0400\u0401\7K\2") - buf.write("\2\u0401\u0402\5\u015a\u00ae\2\u0402\u0403\7G\2\2\u0403") - buf.write("\u0406\5\u015a\u00ae\2\u0404\u0405\7G\2\2\u0405\u0407") - buf.write("\5\u015a\u00ae\2\u0406\u0404\3\2\2\2\u0406\u0407\3\2\2") - buf.write("\2\u0407\u00ad\3\2\2\2\u0408\u040a\5\u0094K\2\u0409\u040b") - buf.write("\7G\2\2\u040a\u0409\3\2\2\2\u040a\u040b\3\2\2\2\u040b") - buf.write("\u040c\3\2\2\2\u040c\u040e\5\u00acW\2\u040d\u040f\7y\2") - buf.write("\2\u040e\u040d\3\2\2\2\u040e\u040f\3\2\2\2\u040f\u0410") - buf.write("\3\2\2\2\u0410\u0412\5\u00b0Y\2\u0411\u0413\7y\2\2\u0412") - buf.write("\u0411\3\2\2\2\u0412\u0413\3\2\2\2\u0413\u0414\3\2\2\2") - buf.write("\u0414\u0415\5\u00b6\\\2\u0415\u00af\3\2\2\2\u0416\u0418") - buf.write("\5$\23\2\u0417\u0416\3\2\2\2\u0418\u0419\3\2\2\2\u0419") - buf.write("\u0417\3\2\2\2\u0419\u041a\3\2\2\2\u041a\u00b1\3\2\2\2") - buf.write("\u041b\u041d\5\u00acW\2\u041c\u041e\7y\2\2\u041d\u041c") - buf.write("\3\2\2\2\u041d\u041e\3\2\2\2\u041e\u041f\3\2\2\2\u041f") - buf.write("\u0421\5\u00b0Y\2\u0420\u0422\7y\2\2\u0421\u0420\3\2\2") - buf.write("\2\u0421\u0422\3\2\2\2\u0422\u0423\3\2\2\2\u0423\u0424") - buf.write("\5\u00b4[\2\u0424\u00b3\3\2\2\2\u0425\u0429\7 \2\2\u0426") - buf.write("\u0427\7\b\2\2\u0427\u0429\7\35\2\2\u0428\u0425\3\2\2") - buf.write("\2\u0428\u0426\3\2\2\2\u0429\u00b5\3\2\2\2\u042a\u042c") - buf.write("\5\u0094K\2\u042b\u042a\3\2\2\2\u042c\u042f\3\2\2\2\u042d") - buf.write("\u042b\3\2\2\2\u042d\u042e\3\2\2\2\u042e\u0430\3\2\2\2") - buf.write("\u042f\u042d\3\2\2\2\u0430\u0431\7\36\2\2\u0431\u00b7") - buf.write("\3\2\2\2\u0432\u0434\7\37\2\2\u0433\u0435\t\5\2\2\u0434") - buf.write("\u0433\3\2\2\2\u0434\u0435\3\2\2\2\u0435\u00b9\3\2\2\2") - buf.write("\u0436\u0437\7!\2\2\u0437\u0438\t\5\2\2\u0438\u00bb\3") - buf.write("\2\2\2\u0439\u043a\7\"\2\2\u043a\u043b\7H\2\2\u043b\u043c") - buf.write("\5\u00c4c\2\u043c\u0445\7I\2\2\u043d\u043f\7G\2\2\u043e") - buf.write("\u043d\3\2\2\2\u043e\u043f\3\2\2\2\u043f\u0440\3\2\2\2") - buf.write("\u0440\u0442\5\u00caf\2\u0441\u043e\3\2\2\2\u0442\u0443") - buf.write("\3\2\2\2\u0443\u0441\3\2\2\2\u0443\u0444\3\2\2\2\u0444") - buf.write("\u0446\3\2\2\2\u0445\u0441\3\2\2\2\u0445\u0446\3\2\2\2") - buf.write("\u0446\u00bd\3\2\2\2\u0447\u0448\7#\2\2\u0448\u044f\5") - buf.write("\u0116\u008c\2\u0449\u044a\7G\2\2\u044a\u044c\5\u00ca") - buf.write("f\2\u044b\u0449\3\2\2\2\u044c\u044d\3\2\2\2\u044d\u044b") - buf.write("\3\2\2\2\u044d\u044e\3\2\2\2\u044e\u0450\3\2\2\2\u044f") - buf.write("\u044b\3\2\2\2\u044f\u0450\3\2\2\2\u0450\u00bf\3\2\2\2") - buf.write("\u0451\u0452\7$\2\2\u0452\u0459\5\u0116\u008c\2\u0453") - buf.write("\u0454\7G\2\2\u0454\u0456\5\u00caf\2\u0455\u0453\3\2\2") - buf.write("\2\u0456\u0457\3\2\2\2\u0457\u0455\3\2\2\2\u0457\u0458") - buf.write("\3\2\2\2\u0458\u045a\3\2\2\2\u0459\u0455\3\2\2\2\u0459") - buf.write("\u045a\3\2\2\2\u045a\u00c1\3\2\2\2\u045b\u045c\5\u016c") - buf.write("\u00b7\2\u045c\u045d\7K\2\2\u045d\u045e\5\u0130\u0099") - buf.write("\2\u045e\u00c3\3\2\2\2\u045f\u0464\5\u00c8e\2\u0460\u0461") - buf.write("\7G\2\2\u0461\u0463\5\u00c8e\2\u0462\u0460\3\2\2\2\u0463") - buf.write("\u0466\3\2\2\2\u0464\u0462\3\2\2\2\u0464\u0465\3\2\2\2") - buf.write("\u0465\u00c5\3\2\2\2\u0466\u0464\3\2\2\2\u0467\u0468\5") - buf.write("\u00dco\2\u0468\u046b\7K\2\2\u0469\u046c\5\u0094K\2\u046a") - buf.write("\u046c\7u\2\2\u046b\u0469\3\2\2\2\u046b\u046a\3\2\2\2") - buf.write("\u046c\u00c7\3\2\2\2\u046d\u0485\5\u0114\u008b\2\u046e") - buf.write("\u0485\t\6\2\2\u046f\u0470\5\u00d4k\2\u0470\u0471\7K\2") - buf.write("\2\u0471\u0472\5\u0116\u008c\2\u0472\u0485\3\2\2\2\u0473") - buf.write("\u0474\5\u00d6l\2\u0474\u0475\7K\2\2\u0475\u0476\5\u0114") - buf.write("\u008b\2\u0476\u0485\3\2\2\2\u0477\u0478\5\u00d8m\2\u0478") - buf.write("\u0479\7K\2\2\u0479\u047a\5\u0158\u00ad\2\u047a\u0485") - buf.write("\3\2\2\2\u047b\u047c\5\u00dan\2\u047c\u047d\7K\2\2\u047d") - buf.write("\u047e\5\u0094K\2\u047e\u0485\3\2\2\2\u047f\u0485\5\u00c6") - buf.write("d\2\u0480\u0481\5\u00dep\2\u0481\u0482\7K\2\2\u0482\u0483") - buf.write("\5\u016c\u00b7\2\u0483\u0485\3\2\2\2\u0484\u046d\3\2\2") - buf.write("\2\u0484\u046e\3\2\2\2\u0484\u046f\3\2\2\2\u0484\u0473") - buf.write("\3\2\2\2\u0484\u0477\3\2\2\2\u0484\u047b\3\2\2\2\u0484") - buf.write("\u047f\3\2\2\2\u0484\u0480\3\2\2\2\u0485\u00c9\3\2\2\2") - buf.write("\u0486\u0487\5\u00ccg\2\u0487\u0488\7G\2\2\u0488\u0489") - buf.write("\7u\2\2\u0489\u048a\7K\2\2\u048a\u048b\3\2\2\2\u048b\u048c") - buf.write("\5\u00ccg\2\u048c\u0497\3\2\2\2\u048d\u048e\5\u00ccg\2") - buf.write("\u048e\u048f\7G\2\2\u048f\u0490\5\u00ccg\2\u0490\u0491") - buf.write("\3\2\2\2\u0491\u0492\5\u00ccg\2\u0492\u0493\7G\2\2\u0493") - buf.write("\u0494\5\u00caf\2\u0494\u0497\3\2\2\2\u0495\u0497\5\u00cc") - buf.write("g\2\u0496\u0486\3\2\2\2\u0496\u048d\3\2\2\2\u0496\u0495") - buf.write("\3\2\2\2\u0497\u00cb\3\2\2\2\u0498\u0499\7H\2\2\u0499") - buf.write("\u049a\5\u00caf\2\u049a\u049b\7G\2\2\u049b\u049c\7u\2") - buf.write("\2\u049c\u049d\7K\2\2\u049d\u049e\3\2\2\2\u049e\u049f") - buf.write("\5\u00ceh\2\u049f\u04a2\3\2\2\2\u04a0\u04a2\5\u0130\u0099") - buf.write("\2\u04a1\u0498\3\2\2\2\u04a1\u04a0\3\2\2\2\u04a2\u00cd") - buf.write("\3\2\2\2\u04a3\u04a4\7H\2\2\u04a4\u04a5\5\u00caf\2\u04a5") - buf.write("\u04a6\7G\2\2\u04a6\u04a7\7u\2\2\u04a7\u04a8\7K\2\2\u04a8") - buf.write("\u04a9\5\u015a\u00ae\2\u04a9\u04aa\7G\2\2\u04aa\u04ad") - buf.write("\5\u015a\u00ae\2\u04ab\u04ac\7G\2\2\u04ac\u04ae\5\u015a") - buf.write("\u00ae\2\u04ad\u04ab\3\2\2\2\u04ad\u04ae\3\2\2\2\u04ae") - buf.write("\u04af\3\2\2\2\u04af\u04b0\7I\2\2\u04b0\u00cf\3\2\2\2") - buf.write("\u04b1\u04b2\7%\2\2\u04b2\u04b3\7H\2\2\u04b3\u04b8\5\u00d2") - buf.write("j\2\u04b4\u04b5\7G\2\2\u04b5\u04b7\5\u00d2j\2\u04b6\u04b4") - buf.write("\3\2\2\2\u04b7\u04ba\3\2\2\2\u04b8\u04b6\3\2\2\2\u04b8") - buf.write("\u04b9\3\2\2\2\u04b9\u04bb\3\2\2\2\u04ba\u04b8\3\2\2\2") - buf.write("\u04bb\u04bc\7I\2\2\u04bc\u00d1\3\2\2\2\u04bd\u04e3\5") - buf.write("\u0114\u008b\2\u04be\u04bf\5\u00d6l\2\u04bf\u04c0\7K\2") - buf.write("\2\u04c0\u04c1\5\u0114\u008b\2\u04c1\u04e3\3\2\2\2\u04c2") - buf.write("\u04e3\5\u00c6d\2\u04c3\u04c4\5\u00e0q\2\u04c4\u04c5\7") - buf.write("K\2\2\u04c5\u04c6\5\u0160\u00b1\2\u04c6\u04e3\3\2\2\2") - buf.write("\u04c7\u04c8\5\u00e2r\2\u04c8\u04c9\7K\2\2\u04c9\u04ca") - buf.write("\5\u0160\u00b1\2\u04ca\u04e3\3\2\2\2\u04cb\u04ce\5\u00e4") - buf.write("s\2\u04cc\u04ce\5\u00e6t\2\u04cd\u04cb\3\2\2\2\u04cd\u04cc") - buf.write("\3\2\2\2\u04ce\u04cf\3\2\2\2\u04cf\u04d0\7K\2\2\u04d0") - buf.write("\u04d1\5\u0160\u00b1\2\u04d1\u04e3\3\2\2\2\u04d2\u04d3") - buf.write("\5\u00e8u\2\u04d3\u04d4\7K\2\2\u04d4\u04d5\5\u0160\u00b1") - buf.write("\2\u04d5\u04e3\3\2\2\2\u04d6\u04d7\5\u00eav\2\u04d7\u04d8") - buf.write("\7K\2\2\u04d8\u04d9\5\u0158\u00ad\2\u04d9\u04e3\3\2\2") - buf.write("\2\u04da\u04db\5\u00ecw\2\u04db\u04dc\7K\2\2\u04dc\u04dd") - buf.write("\5\u0160\u00b1\2\u04dd\u04e3\3\2\2\2\u04de\u04df\5\u00de") - buf.write("p\2\u04df\u04e0\7K\2\2\u04e0\u04e1\5\u016c\u00b7\2\u04e1") - buf.write("\u04e3\3\2\2\2\u04e2\u04bd\3\2\2\2\u04e2\u04be\3\2\2\2") - buf.write("\u04e2\u04c2\3\2\2\2\u04e2\u04c3\3\2\2\2\u04e2\u04c7\3") - buf.write("\2\2\2\u04e2\u04cd\3\2\2\2\u04e2\u04d2\3\2\2\2\u04e2\u04d6") - buf.write("\3\2\2\2\u04e2\u04da\3\2\2\2\u04e2\u04de\3\2\2\2\u04e3") - buf.write("\u00d3\3\2\2\2\u04e4\u04e5\7&\2\2\u04e5\u00d5\3\2\2\2") - buf.write("\u04e6\u04e7\7\'\2\2\u04e7\u00d7\3\2\2\2\u04e8\u04e9\7") - buf.write("u\2\2\u04e9\u00d9\3\2\2\2\u04ea\u04eb\7\b\2\2\u04eb\u00db") - buf.write("\3\2\2\2\u04ec\u04ed\7(\2\2\u04ed\u00dd\3\2\2\2\u04ee") - buf.write("\u04ef\7\60\2\2\u04ef\u00df\3\2\2\2\u04f0\u04f1\7\63\2") - buf.write("\2\u04f1\u00e1\3\2\2\2\u04f2\u04f3\7\64\2\2\u04f3\u00e3") - buf.write("\3\2\2\2\u04f4\u04f5\7\65\2\2\u04f5\u00e5\3\2\2\2\u04f6") - buf.write("\u04f7\7\66\2\2\u04f7\u00e7\3\2\2\2\u04f8\u04f9\7\67\2") - buf.write("\2\u04f9\u00e9\3\2\2\2\u04fa\u04fb\78\2\2\u04fb\u00eb") - buf.write("\3\2\2\2\u04fc\u04fd\79\2\2\u04fd\u00ed\3\2\2\2\u04fe") - buf.write("\u04ff\7:\2\2\u04ff\u00ef\3\2\2\2\u0500\u0501\7;\2\2\u0501") - buf.write("\u00f1\3\2\2\2\u0502\u0503\7<\2\2\u0503\u00f3\3\2\2\2") - buf.write("\u0504\u0505\7=\2\2\u0505\u00f5\3\2\2\2\u0506\u0507\7") - buf.write("u\2\2\u0507\u00f7\3\2\2\2\u0508\u0509\7\61\2\2\u0509\u00f9") - buf.write("\3\2\2\2\u050a\u050b\7u\2\2\u050b\u00fb\3\2\2\2\u050c") - buf.write("\u050d\7?\2\2\u050d\u00fd\3\2\2\2\u050e\u050f\7@\2\2\u050f") - buf.write("\u00ff\3\2\2\2\u0510\u0511\7A\2\2\u0511\u0101\3\2\2\2") - buf.write("\u0512\u0513\7.\2\2\u0513\u0514\7H\2\2\u0514\u0519\5\u0104") - buf.write("\u0083\2\u0515\u0516\7G\2\2\u0516\u0518\5\u0104\u0083") - buf.write("\2\u0517\u0515\3\2\2\2\u0518\u051b\3\2\2\2\u0519\u0517") - buf.write("\3\2\2\2\u0519\u051a\3\2\2\2\u051a\u051c\3\2\2\2\u051b") - buf.write("\u0519\3\2\2\2\u051c\u051d\7I\2\2\u051d\u0103\3\2\2\2") - buf.write("\u051e\u052d\5\u0114\u008b\2\u051f\u0520\5\u00d6l\2\u0520") - buf.write("\u0521\7K\2\2\u0521\u0522\5\u0114\u008b\2\u0522\u052d") - buf.write("\3\2\2\2\u0523\u052d\5\u00c6d\2\u0524\u0525\5\u00e2r\2") - buf.write("\u0525\u0526\7K\2\2\u0526\u0527\5\u0160\u00b1\2\u0527") - buf.write("\u052d\3\2\2\2\u0528\u0529\5\u00dep\2\u0529\u052a\7K\2") - buf.write("\2\u052a\u052b\5\u016c\u00b7\2\u052b\u052d\3\2\2\2\u052c") - buf.write("\u051e\3\2\2\2\u052c\u051f\3\2\2\2\u052c\u0523\3\2\2\2") - buf.write("\u052c\u0524\3\2\2\2\u052c\u0528\3\2\2\2\u052d\u0105\3") - buf.write("\2\2\2\u052e\u052f\7B\2\2\u052f\u0530\7H\2\2\u0530\u0535") - buf.write("\5\u0108\u0085\2\u0531\u0532\7G\2\2\u0532\u0534\5\u0108") - buf.write("\u0085\2\u0533\u0531\3\2\2\2\u0534\u0537\3\2\2\2\u0535") - buf.write("\u0533\3\2\2\2\u0535\u0536\3\2\2\2\u0536\u0538\3\2\2\2") - buf.write("\u0537\u0535\3\2\2\2\u0538\u0539\7I\2\2\u0539\u0107\3") - buf.write("\2\2\2\u053a\u053b\5\u00d6l\2\u053b\u053c\7K\2\2\u053c") - buf.write("\u053d\5\u0114\u008b\2\u053d\u0559\3\2\2\2\u053e\u053f") - buf.write("\5\u00e0q\2\u053f\u0540\7K\2\2\u0540\u0541\5\u0160\u00b1") - buf.write("\2\u0541\u0559\3\2\2\2\u0542\u0559\5\u00c6d\2\u0543\u0553") - buf.write("\5\u00dep\2\u0544\u0553\5\u00eex\2\u0545\u0553\5\u00f0") - buf.write("y\2\u0546\u0553\5\u00f2z\2\u0547\u0553\5\u00f4{\2\u0548") - buf.write("\u0553\5\u00f6|\2\u0549\u0553\5\u00e4s\2\u054a\u0553\5") - buf.write("\u00f8}\2\u054b\u0553\5\u00fa~\2\u054c\u0553\5\u00e8u") - buf.write("\2\u054d\u0553\5\u00fc\177\2\u054e\u0553\5\u00fe\u0080") - buf.write("\2\u054f\u0553\5\u00eav\2\u0550\u0553\5\u0100\u0081\2") - buf.write("\u0551\u0553\5\u00ecw\2\u0552\u0543\3\2\2\2\u0552\u0544") - buf.write("\3\2\2\2\u0552\u0545\3\2\2\2\u0552\u0546\3\2\2\2\u0552") - buf.write("\u0547\3\2\2\2\u0552\u0548\3\2\2\2\u0552\u0549\3\2\2\2") - buf.write("\u0552\u054a\3\2\2\2\u0552\u054b\3\2\2\2\u0552\u054c\3") - buf.write("\2\2\2\u0552\u054d\3\2\2\2\u0552\u054e\3\2\2\2\u0552\u054f") - buf.write("\3\2\2\2\u0552\u0550\3\2\2\2\u0552\u0551\3\2\2\2\u0553") - buf.write("\u0554\3\2\2\2\u0554\u0555\7K\2\2\u0555\u0556\5\u016c") - buf.write("\u00b7\2\u0556\u0559\3\2\2\2\u0557\u0559\5\u0114\u008b") - buf.write("\2\u0558\u053a\3\2\2\2\u0558\u053e\3\2\2\2\u0558\u0542") - buf.write("\3\2\2\2\u0558\u0552\3\2\2\2\u0558\u0557\3\2\2\2\u0559") - buf.write("\u0109\3\2\2\2\u055a\u055b\7C\2\2\u055b\u055c\5\u0110") - buf.write("\u0089\2\u055c\u010b\3\2\2\2\u055d\u055e\7D\2\2\u055e") - buf.write("\u055f\5\u0110\u0089\2\u055f\u010d\3\2\2\2\u0560\u0561") - buf.write("\7E\2\2\u0561\u0562\5\u0110\u0089\2\u0562\u010f\3\2\2") - buf.write("\2\u0563\u0564\5\u0114\u008b\2\u0564\u0565\5\u0114\u008b") - buf.write("\2\u0565\u0572\3\2\2\2\u0566\u0567\7H\2\2\u0567\u056c") - buf.write("\5\u0112\u008a\2\u0568\u0569\7G\2\2\u0569\u056b\5\u0112") - buf.write("\u008a\2\u056a\u0568\3\2\2\2\u056b\u056e\3\2\2\2\u056c") - buf.write("\u056a\3\2\2\2\u056c\u056d\3\2\2\2\u056d\u056f\3\2\2\2") - buf.write("\u056e\u056c\3\2\2\2\u056f\u0570\7I\2\2\u0570\u0572\3") - buf.write("\2\2\2\u0571\u0563\3\2\2\2\u0571\u0566\3\2\2\2\u0572\u0111") - buf.write("\3\2\2\2\u0573\u057e\5\u0114\u008b\2\u0574\u0575\5\u00d6") - buf.write("l\2\u0575\u0576\7K\2\2\u0576\u0577\5\u0114\u008b\2\u0577") - buf.write("\u057e\3\2\2\2\u0578\u057e\5\u00c6d\2\u0579\u057a\5\u00de") - buf.write("p\2\u057a\u057b\7K\2\2\u057b\u057c\5\u016c\u00b7\2\u057c") - buf.write("\u057e\3\2\2\2\u057d\u0573\3\2\2\2\u057d\u0574\3\2\2\2") - buf.write("\u057d\u0578\3\2\2\2\u057d\u0579\3\2\2\2\u057e\u0113\3") - buf.write("\2\2\2\u057f\u0582\5\u0148\u00a5\2\u0580\u0582\7w\2\2") - buf.write("\u0581\u057f\3\2\2\2\u0581\u0580\3\2\2\2\u0582\u0115\3") - buf.write("\2\2\2\u0583\u0587\t\6\2\2\u0584\u0587\5\u0148\u00a5\2") - buf.write("\u0585\u0587\7w\2\2\u0586\u0583\3\2\2\2\u0586\u0584\3") - buf.write("\2\2\2\u0586\u0585\3\2\2\2\u0587\u0117\3\2\2\2\u0588\u0589") - buf.write("\7*\2\2\u0589\u058a\7H\2\2\u058a\u058b\5\u011a\u008e\2") - buf.write("\u058b\u058c\7I\2\2\u058c\u0119\3\2\2\2\u058d\u0593\5") - buf.write("\u011e\u0090\2\u058e\u0590\5\u011c\u008f\2\u058f\u0591") - buf.write("\5\u011e\u0090\2\u0590\u058f\3\2\2\2\u0590\u0591\3\2\2") - buf.write("\2\u0591\u0593\3\2\2\2\u0592\u058d\3\2\2\2\u0592\u058e") - buf.write("\3\2\2\2\u0593\u05a2\3\2\2\2\u0594\u0596\5\u011c\u008f") - buf.write("\2\u0595\u0597\5\u011e\u0090\2\u0596\u0595\3\2\2\2\u0596") - buf.write("\u0597\3\2\2\2\u0597\u05a1\3\2\2\2\u0598\u059e\7G\2\2") - buf.write("\u0599\u059f\5\u011e\u0090\2\u059a\u059c\5\u011c\u008f") - buf.write("\2\u059b\u059d\5\u011e\u0090\2\u059c\u059b\3\2\2\2\u059c") - buf.write("\u059d\3\2\2\2\u059d\u059f\3\2\2\2\u059e\u0599\3\2\2\2") - buf.write("\u059e\u059a\3\2\2\2\u059f\u05a1\3\2\2\2\u05a0\u0594\3") - buf.write("\2\2\2\u05a0\u0598\3\2\2\2\u05a1\u05a4\3\2\2\2\u05a2\u05a0") - buf.write("\3\2\2\2\u05a2\u05a3\3\2\2\2\u05a3\u011b\3\2\2\2\u05a4") - buf.write("\u05a2\3\2\2\2\u05a5\u05a6\t\7\2\2\u05a6\u011d\3\2\2\2") - buf.write("\u05a7\u05b6\7_\2\2\u05a8\u05b6\5\u0120\u0091\2\u05a9") - buf.write("\u05aa\7t\2\2\u05aa\u05b6\5\u0120\u0091\2\u05ab\u05ad") - buf.write("\t\b\2\2\u05ac\u05ab\3\2\2\2\u05ac\u05ad\3\2\2\2\u05ad") - buf.write("\u05ae\3\2\2\2\u05ae\u05b3\7`\2\2\u05af\u05b1\7t\2\2\u05b0") - buf.write("\u05af\3\2\2\2\u05b0\u05b1\3\2\2\2\u05b1\u05b2\3\2\2\2") - buf.write("\u05b2\u05b4\5\u0120\u0091\2\u05b3\u05b0\3\2\2\2\u05b3") - buf.write("\u05b4\3\2\2\2\u05b4\u05b6\3\2\2\2\u05b5\u05a7\3\2\2\2") - buf.write("\u05b5\u05a8\3\2\2\2\u05b5\u05a9\3\2\2\2\u05b5\u05ac\3") - buf.write("\2\2\2\u05b6\u011f\3\2\2\2\u05b7\u05bd\t\t\2\2\u05b8\u05b9") - buf.write("\7H\2\2\u05b9\u05ba\5\u011a\u008e\2\u05ba\u05bb\7I\2\2") - buf.write("\u05bb\u05bd\3\2\2\2\u05bc\u05b7\3\2\2\2\u05bc\u05b8\3") - buf.write("\2\2\2\u05bd\u0121\3\2\2\2\u05be\u05bf\7+\2\2\u05bf\u05c0") - buf.write("\5\u0124\u0093\2\u05c0\u05c1\7K\2\2\u05c1\u05c2\5\u0130") - buf.write("\u0099\2\u05c2\u0123\3\2\2\2\u05c3\u05c4\7u\2\2\u05c4") - buf.write("\u05c5\7H\2\2\u05c5\u05c6\5\36\20\2\u05c6\u05c7\7I\2\2") - buf.write("\u05c7\u0125\3\2\2\2\u05c8\u05c9\7,\2\2\u05c9\u05ca\5") - buf.write("\u0128\u0095\2\u05ca\u0127\3\2\2\2\u05cb\u05d1\7u\2\2") - buf.write("\u05cc\u05ce\7H\2\2\u05cd\u05cf\5\u012a\u0096\2\u05ce") - buf.write("\u05cd\3\2\2\2\u05ce\u05cf\3\2\2\2\u05cf\u05d0\3\2\2\2") - buf.write("\u05d0\u05d2\7I\2\2\u05d1\u05cc\3\2\2\2\u05d1\u05d2\3") - buf.write("\2\2\2\u05d2\u0129\3\2\2\2\u05d3\u05d8\5\u012c\u0097\2") - buf.write("\u05d4\u05d5\7G\2\2\u05d5\u05d7\5\u012c\u0097\2\u05d6") - buf.write("\u05d4\3\2\2\2\u05d7\u05da\3\2\2\2\u05d8\u05d6\3\2\2\2") - buf.write("\u05d8\u05d9\3\2\2\2\u05d9\u012b\3\2\2\2\u05da\u05d8\3") - buf.write("\2\2\2\u05db\u05df\5\u0130\u0099\2\u05dc\u05dd\7w\2\2") - buf.write("\u05dd\u05df\5\u0094K\2\u05de\u05db\3\2\2\2\u05de\u05dc") - buf.write("\3\2\2\2\u05df\u012d\3\2\2\2\u05e0\u05e2\7-\2\2\u05e1") - buf.write("\u05e3\5\u0158\u00ad\2\u05e2\u05e1\3\2\2\2\u05e2\u05e3") - buf.write("\3\2\2\2\u05e3\u012f\3\2\2\2\u05e4\u05e7\5\u0132\u009a") - buf.write("\2\u05e5\u05e6\7J\2\2\u05e6\u05e8\5\u0132\u009a\2\u05e7") - buf.write("\u05e5\3\2\2\2\u05e7\u05e8\3\2\2\2\u05e8\u0131\3\2\2\2") - buf.write("\u05e9\u05ef\5\u0134\u009b\2\u05ea\u05eb\5\u0162\u00b2") - buf.write("\2\u05eb\u05ec\5\u0134\u009b\2\u05ec\u05ee\3\2\2\2\u05ed") - buf.write("\u05ea\3\2\2\2\u05ee\u05f1\3\2\2\2\u05ef\u05ed\3\2\2\2") - buf.write("\u05ef\u05f0\3\2\2\2\u05f0\u0133\3\2\2\2\u05f1\u05ef\3") - buf.write("\2\2\2\u05f2\u05f7\5\u0136\u009c\2\u05f3\u05f4\t\n\2\2") - buf.write("\u05f4\u05f6\5\u0136\u009c\2\u05f5\u05f3\3\2\2\2\u05f6") - buf.write("\u05f9\3\2\2\2\u05f7\u05f5\3\2\2\2\u05f7\u05f8\3\2\2\2") - buf.write("\u05f8\u0135\3\2\2\2\u05f9\u05f7\3\2\2\2\u05fa\u05ff\5") - buf.write("\u0138\u009d\2\u05fb\u05fc\7R\2\2\u05fc\u05fe\5\u0138") - buf.write("\u009d\2\u05fd\u05fb\3\2\2\2\u05fe\u0601\3\2\2\2\u05ff") - buf.write("\u05fd\3\2\2\2\u05ff\u0600\3\2\2\2\u0600\u0137\3\2\2\2") - buf.write("\u0601\u05ff\3\2\2\2\u0602\u0607\5\u013a\u009e\2\u0603") - buf.write("\u0604\7Q\2\2\u0604\u0606\5\u013a\u009e\2\u0605\u0603") - buf.write("\3\2\2\2\u0606\u0609\3\2\2\2\u0607\u0605\3\2\2\2\u0607") - buf.write("\u0608\3\2\2\2\u0608\u0139\3\2\2\2\u0609\u0607\3\2\2\2") - buf.write("\u060a\u060b\7P\2\2\u060b\u060e\5\u013a\u009e\2\u060c") - buf.write("\u060e\5\u013c\u009f\2\u060d\u060a\3\2\2\2\u060d\u060c") - buf.write("\3\2\2\2\u060e\u013b\3\2\2\2\u060f\u0612\5\u013e\u00a0") - buf.write("\2\u0610\u0611\t\13\2\2\u0611\u0613\5\u013e\u00a0\2\u0612") - buf.write("\u0610\3\2\2\2\u0612\u0613\3\2\2\2\u0613\u013d\3\2\2\2") - buf.write("\u0614\u0619\5\u0140\u00a1\2\u0615\u0616\t\b\2\2\u0616") - buf.write("\u0618\5\u0140\u00a1\2\u0617\u0615\3\2\2\2\u0618\u061b") - buf.write("\3\2\2\2\u0619\u0617\3\2\2\2\u0619\u061a\3\2\2\2\u061a") - buf.write("\u013f\3\2\2\2\u061b\u0619\3\2\2\2\u061c\u0621\5\u0142") - buf.write("\u00a2\2\u061d\u061e\t\f\2\2\u061e\u0620\5\u0142\u00a2") - buf.write("\2\u061f\u061d\3\2\2\2\u0620\u0623\3\2\2\2\u0621\u061f") - buf.write("\3\2\2\2\u0621\u0622\3\2\2\2\u0622\u0141\3\2\2\2\u0623") - buf.write("\u0621\3\2\2\2\u0624\u0626\t\b\2\2\u0625\u0624\3\2\2\2") - buf.write("\u0626\u0629\3\2\2\2\u0627\u0625\3\2\2\2\u0627\u0628\3") - buf.write("\2\2\2\u0628\u062a\3\2\2\2\u0629\u0627\3\2\2\2\u062a\u062b") - buf.write("\5\u0144\u00a3\2\u062b\u0143\3\2\2\2\u062c\u0631\5\u0146") - buf.write("\u00a4\2\u062d\u062e\7O\2\2\u062e\u0630\5\u0146\u00a4") - buf.write("\2\u062f\u062d\3\2\2\2\u0630\u0633\3\2\2\2\u0631\u062f") - buf.write("\3\2\2\2\u0631\u0632\3\2\2\2\u0632\u0145\3\2\2\2\u0633") - buf.write("\u0631\3\2\2\2\u0634\u063d\5\u017c\u00bf\2\u0635\u063d") - buf.write("\t\6\2\2\u0636\u063d\5\u0180\u00c1\2\u0637\u063d\5\u016c") - buf.write("\u00b7\2\u0638\u0639\7H\2\2\u0639\u063a\5\u0130\u0099") - buf.write("\2\u063a\u063b\7I\2\2\u063b\u063d\3\2\2\2\u063c\u0634") - buf.write("\3\2\2\2\u063c\u0635\3\2\2\2\u063c\u0636\3\2\2\2\u063c") - buf.write("\u0637\3\2\2\2\u063c\u0638\3\2\2\2\u063d\u0147\3\2\2\2") - buf.write("\u063e\u0643\5\u014c\u00a7\2\u063f\u0640\t\b\2\2\u0640") - buf.write("\u0642\5\u014c\u00a7\2\u0641\u063f\3\2\2\2\u0642\u0645") - buf.write("\3\2\2\2\u0643\u0641\3\2\2\2\u0643\u0644\3\2\2\2\u0644") - buf.write("\u0149\3\2\2\2\u0645\u0643\3\2\2\2\u0646\u064b\5\u014c") - buf.write("\u00a7\2\u0647\u0648\t\b\2\2\u0648\u064a\5\u014c\u00a7") - buf.write("\2\u0649\u0647\3\2\2\2\u064a\u064d\3\2\2\2\u064b\u0649") - buf.write("\3\2\2\2\u064b\u064c\3\2\2\2\u064c\u014b\3\2\2\2\u064d") - buf.write("\u064b\3\2\2\2\u064e\u0653\5\u014e\u00a8\2\u064f\u0650") - buf.write("\t\f\2\2\u0650\u0652\5\u014e\u00a8\2\u0651\u064f\3\2\2") - buf.write("\2\u0652\u0655\3\2\2\2\u0653\u0651\3\2\2\2\u0653\u0654") - buf.write("\3\2\2\2\u0654\u014d\3\2\2\2\u0655\u0653\3\2\2\2\u0656") - buf.write("\u0658\t\b\2\2\u0657\u0656\3\2\2\2\u0658\u065b\3\2\2\2") - buf.write("\u0659\u0657\3\2\2\2\u0659\u065a\3\2\2\2\u065a\u065c\3") - buf.write("\2\2\2\u065b\u0659\3\2\2\2\u065c\u065d\5\u0150\u00a9\2") - buf.write("\u065d\u014f\3\2\2\2\u065e\u0661\5\u0152\u00aa\2\u065f") - buf.write("\u0660\7O\2\2\u0660\u0662\5\u0150\u00a9\2\u0661\u065f") - buf.write("\3\2\2\2\u0661\u0662\3\2\2\2\u0662\u0151\3\2\2\2\u0663") - buf.write("\u066a\7t\2\2\u0664\u066a\5\u016e\u00b8\2\u0665\u0666") - buf.write("\7H\2\2\u0666\u0667\5\u014a\u00a6\2\u0667\u0668\7I\2\2") - buf.write("\u0668\u066a\3\2\2\2\u0669\u0663\3\2\2\2\u0669\u0664\3") - buf.write("\2\2\2\u0669\u0665\3\2\2\2\u066a\u0153\3\2\2\2\u066b\u066c") - buf.write("\5\u0130\u0099\2\u066c\u0155\3\2\2\2\u066d\u066e\5\u0130") - buf.write("\u0099\2\u066e\u0157\3\2\2\2\u066f\u0670\5\u0148\u00a5") - buf.write("\2\u0670\u0159\3\2\2\2\u0671\u0672\5\u0130\u0099\2\u0672") - buf.write("\u015b\3\2\2\2\u0673\u0674\5\u0130\u0099\2\u0674\u015d") - buf.write("\3\2\2\2\u0675\u0676\5\u0130\u0099\2\u0676\u015f\3\2\2") - buf.write("\2\u0677\u0678\5\u0130\u0099\2\u0678\u0161\3\2\2\2\u0679") - buf.write("\u067a\7N\2\2\u067a\u067b\7N\2\2\u067b\u0163\3\2\2\2\u067c") - buf.write("\u067d\5\u0130\u0099\2\u067d\u0165\3\2\2\2\u067e\u067f") - buf.write("\5\u0130\u0099\2\u067f\u0167\3\2\2\2\u0680\u0681\7u\2") - buf.write("\2\u0681\u0682\7H\2\2\u0682\u0687\5\u0158\u00ad\2\u0683") - buf.write("\u0684\7G\2\2\u0684\u0686\5\u0158\u00ad\2\u0685\u0683") - buf.write("\3\2\2\2\u0686\u0689\3\2\2\2\u0687\u0685\3\2\2\2\u0687") - buf.write("\u0688\3\2\2\2\u0688\u068a\3\2\2\2\u0689\u0687\3\2\2\2") - buf.write("\u068a\u068b\7I\2\2\u068b\u0169\3\2\2\2\u068c\u0695\7") - buf.write("H\2\2\u068d\u0692\5\u0130\u0099\2\u068e\u068f\7G\2\2\u068f") - buf.write("\u0691\5\u0130\u0099\2\u0690\u068e\3\2\2\2\u0691\u0694") - buf.write("\3\2\2\2\u0692\u0690\3\2\2\2\u0692\u0693\3\2\2\2\u0693") - buf.write("\u0696\3\2\2\2\u0694\u0692\3\2\2\2\u0695\u068d\3\2\2\2") - buf.write("\u0695\u0696\3\2\2\2\u0696\u0697\3\2\2\2\u0697\u0698\7") - buf.write("I\2\2\u0698\u016b\3\2\2\2\u0699\u069e\t\2\2\2\u069a\u069c") - buf.write("\5\u016a\u00b6\2\u069b\u069d\5\u0170\u00b9\2\u069c\u069b") - buf.write("\3\2\2\2\u069c\u069d\3\2\2\2\u069d\u069f\3\2\2\2\u069e") - buf.write("\u069a\3\2\2\2\u069e\u069f\3\2\2\2\u069f\u016d\3\2\2\2") - buf.write("\u06a0\u06a5\7u\2\2\u06a1\u06a3\5\u016a\u00b6\2\u06a2") - buf.write("\u06a4\5\u0170\u00b9\2\u06a3\u06a2\3\2\2\2\u06a3\u06a4") - buf.write("\3\2\2\2\u06a4\u06a6\3\2\2\2\u06a5\u06a1\3\2\2\2\u06a5") - buf.write("\u06a6\3\2\2\2\u06a6\u016f\3\2\2\2\u06a7\u06a9\7H\2\2") - buf.write("\u06a8\u06aa\5\u0132\u009a\2\u06a9\u06a8\3\2\2\2\u06a9") - buf.write("\u06aa\3\2\2\2\u06aa\u06ab\3\2\2\2\u06ab\u06ad\7J\2\2") - buf.write("\u06ac\u06ae\5\u0132\u009a\2\u06ad\u06ac\3\2\2\2\u06ad") - buf.write("\u06ae\3\2\2\2\u06ae\u06af\3\2\2\2\u06af\u06b0\7I\2\2") - buf.write("\u06b0\u0171\3\2\2\2\u06b1\u06b2\7u\2\2\u06b2\u0173\3") - buf.write("\2\2\2\u06b3\u06b4\7u\2\2\u06b4\u0175\3\2\2\2\u06b5\u06b6") - buf.write("\7u\2\2\u06b6\u0177\3\2\2\2\u06b7\u06b8\7u\2\2\u06b8\u0179") - buf.write("\3\2\2\2\u06b9\u06bb\t\b\2\2\u06ba\u06b9\3\2\2\2\u06ba") - buf.write("\u06bb\3\2\2\2\u06bb\u06bc\3\2\2\2\u06bc\u06c0\5\u017c") - buf.write("\u00bf\2\u06bd\u06c0\t\6\2\2\u06be\u06c0\5\u0180\u00c1") - buf.write("\2\u06bf\u06ba\3\2\2\2\u06bf\u06bd\3\2\2\2\u06bf\u06be") - buf.write("\3\2\2\2\u06c0\u017b\3\2\2\2\u06c1\u06c4\t\r\2\2\u06c2") - buf.write("\u06c4\5\u017e\u00c0\2\u06c3\u06c1\3\2\2\2\u06c3\u06c2") - buf.write("\3\2\2\2\u06c4\u017d\3\2\2\2\u06c5\u06c7\7H\2\2\u06c6") - buf.write("\u06c8\t\b\2\2\u06c7\u06c6\3\2\2\2\u06c7\u06c8\3\2\2\2") - buf.write("\u06c8\u06c9\3\2\2\2\u06c9\u06ca\t\r\2\2\u06ca\u06cc\7") - buf.write("G\2\2\u06cb\u06cd\t\b\2\2\u06cc\u06cb\3\2\2\2\u06cc\u06cd") - buf.write("\3\2\2\2\u06cd\u06ce\3\2\2\2\u06ce\u06cf\t\r\2\2\u06cf") - buf.write("\u06d0\7I\2\2\u06d0\u017f\3\2\2\2\u06d1\u06d2\t\16\2\2") - buf.write("\u06d2\u0181\3\2\2\2\u06d3\u06d4\t\2\2\2\u06d4\u0183\3") - buf.write("\2\2\2\u06d5\u06d6\7u\2\2\u06d6\u0185\3\2\2\2\u00ad\u0189") - buf.write("\u018e\u0195\u019a\u019f\u01a6\u01a9\u01ba\u01ce\u01da") - buf.write("\u01dd\u01e3\u01e7\u01f0\u01f3\u01f6\u01fd\u020d\u0212") - buf.write("\u0219\u021e\u0223\u0229\u023a\u0242\u0249\u024b\u024e") - buf.write("\u0256\u025f\u026c\u0270\u0276\u027a\u0281\u028d\u0294") - buf.write("\u0299\u02a0\u02a5\u02ae\u02b0\u02b9\u02bd\u02c8\u02d4") - buf.write("\u02e0\u02ea\u02f1\u0300\u0304\u0313\u0326\u0329\u032f") - buf.write("\u0334\u0339\u033e\u0342\u0346\u0350\u035a\u036c\u0371") - buf.write("\u0375\u037d\u0385\u0390\u0395\u039b\u03a4\u03b2\u03b6") - buf.write("\u03bc\u03c1\u03c8\u03cd\u03d2\u03d9\u03de\u03e2\u03e7") - buf.write("\u03ee\u03f3\u03f8\u03fd\u0406\u040a\u040e\u0412\u0419") - buf.write("\u041d\u0421\u0428\u042d\u0434\u043e\u0443\u0445\u044d") - buf.write("\u044f\u0457\u0459\u0464\u046b\u0484\u0496\u04a1\u04ad") - buf.write("\u04b8\u04cd\u04e2\u0519\u052c\u0535\u0552\u0558\u056c") - buf.write("\u0571\u057d\u0581\u0586\u0590\u0592\u0596\u059c\u059e") - buf.write("\u05a0\u05a2\u05ac\u05b0\u05b3\u05b5\u05bc\u05ce\u05d1") - buf.write("\u05d8\u05de\u05e2\u05e7\u05ef\u05f7\u05ff\u0607\u060d") - buf.write("\u0612\u0619\u0621\u0627\u0631\u063c\u0643\u064b\u0653") - buf.write("\u0659\u0661\u0669\u0687\u0692\u0695\u069c\u069e\u06a3") - buf.write("\u06a5\u06a9\u06ad\u06ba\u06bf\u06c3\u06c7\u06cc") - return buf.getvalue() - + return [ + 4,1,121,1750,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,1,0,4,0,390,8,0,11,0,12,0,391,1,1,5,1,395, + 8,1,10,1,12,1,398,9,1,1,1,1,1,5,1,402,8,1,10,1,12,1,405,9,1,4,1, + 407,8,1,11,1,12,1,408,1,1,5,1,412,8,1,10,1,12,1,415,9,1,1,2,1,2, + 1,2,1,2,3,2,421,8,2,1,3,3,3,424,8,3,1,3,1,3,1,4,1,4,1,4,1,5,1,5, + 1,5,1,6,1,6,1,6,1,7,1,7,1,7,1,7,3,7,441,8,7,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,461,8,8, + 1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,3,10,473,8,10,1,11, + 3,11,476,8,11,1,11,1,11,1,11,1,11,3,11,482,8,11,1,11,1,11,3,11,486, + 8,11,1,12,1,12,1,12,1,13,1,13,1,13,1,13,3,13,495,8,13,1,13,3,13, + 498,8,13,1,13,3,13,501,8,13,1,14,1,14,1,14,5,14,506,8,14,10,14,12, + 14,509,9,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1, + 15,1,15,1,15,3,15,524,8,15,1,16,5,16,527,8,16,10,16,12,16,530,9, + 16,1,16,1,16,5,16,534,8,16,10,16,12,16,537,9,16,4,16,539,8,16,11, + 16,12,16,540,1,16,1,16,1,17,3,17,546,8,17,1,17,1,17,1,17,1,18,3, + 18,552,8,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1, + 21,1,21,1,21,5,21,567,8,21,10,21,12,21,570,9,21,1,22,1,22,1,22,5, + 22,575,8,22,10,22,12,22,578,9,22,1,23,1,23,1,23,1,23,3,23,584,8, + 23,3,23,586,8,23,1,23,3,23,589,8,23,1,24,1,24,1,24,1,24,5,24,595, + 8,24,10,24,12,24,598,9,24,1,25,1,25,1,25,1,25,5,25,604,8,25,10,25, + 12,25,607,9,25,1,25,1,25,1,26,1,26,1,27,1,27,1,27,1,27,5,27,617, + 8,27,10,27,12,27,620,9,27,1,27,3,27,623,8,27,1,28,1,28,1,28,1,28, + 3,28,629,8,28,1,29,1,29,3,29,633,8,29,1,30,1,30,1,30,5,30,638,8, + 30,10,30,12,30,641,9,30,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32, + 1,32,3,32,652,8,32,1,33,1,33,1,33,5,33,657,8,33,10,33,12,33,660, + 9,33,1,34,1,34,3,34,664,8,34,1,35,1,35,1,35,5,35,669,8,35,10,35, + 12,35,672,9,35,1,36,1,36,3,36,676,8,36,1,37,1,37,1,37,1,38,1,38, + 1,38,1,38,3,38,685,8,38,3,38,687,8,38,1,38,1,38,1,38,1,38,1,38,1, + 38,1,38,3,38,696,8,38,1,39,1,39,3,39,700,8,39,1,40,1,40,1,40,1,41, + 1,41,1,41,1,41,5,41,709,8,41,10,41,12,41,712,9,41,1,42,1,42,1,42, + 1,42,1,42,1,42,1,43,1,43,1,43,3,43,723,8,43,1,44,1,44,1,44,1,44, + 1,44,1,45,1,45,1,45,5,45,733,8,45,10,45,12,45,736,9,45,1,46,1,46, + 1,47,1,47,1,48,1,48,1,48,3,48,745,8,48,1,49,1,49,1,49,5,49,750,8, + 49,10,49,12,49,753,9,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50, + 1,50,1,50,1,50,1,50,3,50,767,8,50,1,51,1,51,3,51,771,8,51,1,52,1, + 52,1,52,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,5,54,784,8,54,10, + 54,12,54,787,9,54,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,57,1,57,1, + 57,1,58,1,58,1,58,1,58,5,58,803,8,58,10,58,12,58,806,9,58,3,58,808, + 8,58,1,59,1,59,1,59,1,59,3,59,814,8,59,1,60,1,60,1,60,3,60,819,8, + 60,1,60,5,60,822,8,60,10,60,12,60,825,9,60,1,61,1,61,3,61,829,8, + 61,1,62,1,62,3,62,833,8,62,1,62,1,62,3,62,837,8,62,1,63,1,63,1,63, + 1,64,1,64,1,64,5,64,845,8,64,10,64,12,64,848,9,64,1,64,1,64,1,65, + 1,65,1,65,5,65,855,8,65,10,65,12,65,858,9,65,1,65,1,65,1,66,1,66, + 1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,875, + 8,67,1,68,1,68,1,68,3,68,880,8,68,1,69,1,69,3,69,884,8,69,1,70,1, + 70,1,70,1,70,1,70,1,70,3,70,892,8,70,1,71,1,71,1,72,1,72,1,72,1, + 72,3,72,900,8,72,1,72,1,72,1,73,1,73,1,74,1,74,1,74,5,74,909,8,74, + 10,74,12,74,912,9,74,1,75,1,75,3,75,916,8,75,1,75,1,75,1,75,1,75, + 3,75,922,8,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,3,76,931,8,76,1, + 77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,79,1,79,5,79,943,8,79,10, + 79,12,79,946,9,79,1,79,3,79,949,8,79,1,79,1,79,1,80,1,80,3,80,955, + 8,80,1,80,5,80,958,8,80,10,80,12,80,961,9,80,1,80,1,80,5,80,965, + 8,80,10,80,12,80,968,9,80,4,80,970,8,80,11,80,12,80,971,1,81,1,81, + 1,81,3,81,977,8,81,1,81,1,81,1,81,1,81,1,81,3,81,984,8,81,1,81,4, + 81,987,8,81,11,81,12,81,988,1,82,1,82,3,82,993,8,82,1,82,5,82,996, + 8,82,10,82,12,82,999,9,82,1,82,1,82,5,82,1003,8,82,10,82,12,82,1006, + 9,82,4,82,1008,8,82,11,82,12,82,1009,1,83,1,83,1,83,3,83,1015,8, + 83,1,84,1,84,1,84,3,84,1020,8,84,1,85,1,85,1,85,1,85,1,85,1,85,1, + 85,3,85,1029,8,85,1,86,1,86,3,86,1033,8,86,1,86,1,86,3,86,1037,8, + 86,1,86,1,86,3,86,1041,8,86,1,86,1,86,1,87,4,87,1046,8,87,11,87, + 12,87,1047,1,88,1,88,3,88,1052,8,88,1,88,1,88,3,88,1056,8,88,1,88, + 1,88,1,89,1,89,1,89,3,89,1063,8,89,1,90,5,90,1066,8,90,10,90,12, + 90,1069,9,90,1,90,1,90,1,91,1,91,3,91,1075,8,91,1,92,1,92,1,92,1, + 93,1,93,1,93,1,93,1,93,3,93,1085,8,93,1,93,4,93,1088,8,93,11,93, + 12,93,1089,3,93,1092,8,93,1,94,1,94,1,94,1,94,4,94,1098,8,94,11, + 94,12,94,1099,3,94,1102,8,94,1,95,1,95,1,95,1,95,4,95,1108,8,95, + 11,95,12,95,1109,3,95,1112,8,95,1,96,1,96,1,96,1,96,1,97,1,97,1, + 97,5,97,1121,8,97,10,97,12,97,1124,9,97,1,98,1,98,1,98,1,98,3,98, + 1130,8,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99, + 1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99, + 1155,8,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,1,100,1,100,1,100,1,100,1,100,3,100,1173,8,100,1,101, + 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,3,101,1184,8,101, + 1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,3,102, + 1196,8,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,5,103,1205, + 8,103,10,103,12,103,1208,9,103,1,103,1,103,1,104,1,104,1,104,1,104, + 1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104, + 1,104,3,104,1228,8,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104, + 1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104, + 1,104,3,104,1249,8,104,1,105,1,105,1,106,1,106,1,107,1,107,1,108, + 1,108,1,109,1,109,1,110,1,110,1,111,1,111,1,112,1,112,1,113,1,113, + 1,114,1,114,1,115,1,115,1,116,1,116,1,117,1,117,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,128, + 5,128,1302,8,128,10,128,12,128,1305,9,128,1,128,1,128,1,129,1,129, + 1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,3,129,1323,8,129,1,130,1,130,1,130,1,130,1,130,5,130,1330, + 8,130,10,130,12,130,1333,9,130,1,130,1,130,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,3,131,1361, + 8,131,1,131,1,131,1,131,1,131,3,131,1367,8,131,1,132,1,132,1,132, + 1,133,1,133,1,133,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135, + 1,135,1,135,5,135,1385,8,135,10,135,12,135,1388,9,135,1,135,1,135, + 3,135,1392,8,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136, + 1,136,1,136,3,136,1404,8,136,1,137,1,137,3,137,1408,8,137,1,138, + 1,138,1,138,3,138,1413,8,138,1,139,1,139,1,139,1,139,1,139,1,140, + 1,140,1,140,3,140,1423,8,140,3,140,1425,8,140,1,140,1,140,3,140, + 1429,8,140,1,140,1,140,1,140,1,140,3,140,1435,8,140,3,140,1437,8, + 140,5,140,1439,8,140,10,140,12,140,1442,9,140,1,141,1,141,1,142, + 1,142,1,142,1,142,1,142,3,142,1451,8,142,1,142,1,142,3,142,1455, + 8,142,1,142,3,142,1458,8,142,3,142,1460,8,142,1,143,1,143,1,143, + 1,143,1,143,3,143,1467,8,143,1,144,1,144,1,144,1,144,1,144,1,145, + 1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,147,1,147,1,147,3,147, + 1485,8,147,1,147,3,147,1488,8,147,1,148,1,148,1,148,5,148,1493,8, + 148,10,148,12,148,1496,9,148,1,149,1,149,1,149,3,149,1501,8,149, + 1,150,1,150,3,150,1505,8,150,1,151,1,151,1,151,3,151,1510,8,151, + 1,152,1,152,1,152,1,152,5,152,1516,8,152,10,152,12,152,1519,9,152, + 1,153,1,153,1,153,5,153,1524,8,153,10,153,12,153,1527,9,153,1,154, + 1,154,1,154,5,154,1532,8,154,10,154,12,154,1535,9,154,1,155,1,155, + 1,155,5,155,1540,8,155,10,155,12,155,1543,9,155,1,156,1,156,1,156, + 3,156,1548,8,156,1,157,1,157,1,157,3,157,1553,8,157,1,158,1,158, + 1,158,5,158,1558,8,158,10,158,12,158,1561,9,158,1,159,1,159,1,159, + 5,159,1566,8,159,10,159,12,159,1569,9,159,1,160,5,160,1572,8,160, + 10,160,12,160,1575,9,160,1,160,1,160,1,161,1,161,1,161,5,161,1582, + 8,161,10,161,12,161,1585,9,161,1,162,1,162,1,162,1,162,1,162,1,162, + 1,162,1,162,3,162,1595,8,162,1,163,1,163,1,163,5,163,1600,8,163, + 10,163,12,163,1603,9,163,1,164,1,164,1,164,5,164,1608,8,164,10,164, + 12,164,1611,9,164,1,165,1,165,1,165,5,165,1616,8,165,10,165,12,165, + 1619,9,165,1,166,5,166,1622,8,166,10,166,12,166,1625,9,166,1,166, + 1,166,1,167,1,167,1,167,3,167,1632,8,167,1,168,1,168,1,168,1,168, + 1,168,1,168,3,168,1640,8,168,1,169,1,169,1,170,1,170,1,171,1,171, + 1,172,1,172,1,173,1,173,1,174,1,174,1,175,1,175,1,176,1,176,1,176, + 1,177,1,177,1,178,1,178,1,179,1,179,1,179,1,179,1,179,5,179,1668, + 8,179,10,179,12,179,1671,9,179,1,179,1,179,1,180,1,180,1,180,1,180, + 5,180,1679,8,180,10,180,12,180,1682,9,180,3,180,1684,8,180,1,180, + 1,180,1,181,1,181,1,181,3,181,1691,8,181,3,181,1693,8,181,1,182, + 1,182,1,182,3,182,1698,8,182,3,182,1700,8,182,1,183,1,183,3,183, + 1704,8,183,1,183,1,183,3,183,1708,8,183,1,183,1,183,1,184,1,184, + 1,185,1,185,1,186,1,186,1,187,1,187,1,188,3,188,1721,8,188,1,188, + 1,188,1,188,3,188,1726,8,188,1,189,1,189,3,189,1730,8,189,1,190, + 1,190,3,190,1734,8,190,1,190,1,190,1,190,3,190,1739,8,190,1,190, + 1,190,1,190,1,191,1,191,1,192,1,192,1,193,1,193,1,193,0,0,194,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,0,13,2,0,8,8,115,115,1,0,114,115,1,0,20,21,2,0,97,97, + 114,114,2,0,97,97,112,112,3,0,68,68,72,72,76,76,1,0,74,75,4,0,95, + 95,97,97,112,112,115,115,1,0,81,82,1,0,85,90,2,0,76,76,117,117,1, + 0,113,114,1,0,91,92,1807,0,389,1,0,0,0,2,396,1,0,0,0,4,420,1,0,0, + 0,6,423,1,0,0,0,8,427,1,0,0,0,10,430,1,0,0,0,12,433,1,0,0,0,14,440, + 1,0,0,0,16,460,1,0,0,0,18,462,1,0,0,0,20,466,1,0,0,0,22,475,1,0, + 0,0,24,487,1,0,0,0,26,490,1,0,0,0,28,502,1,0,0,0,30,523,1,0,0,0, + 32,528,1,0,0,0,34,545,1,0,0,0,36,551,1,0,0,0,38,555,1,0,0,0,40,558, + 1,0,0,0,42,563,1,0,0,0,44,571,1,0,0,0,46,588,1,0,0,0,48,590,1,0, + 0,0,50,599,1,0,0,0,52,610,1,0,0,0,54,612,1,0,0,0,56,624,1,0,0,0, + 58,632,1,0,0,0,60,634,1,0,0,0,62,642,1,0,0,0,64,651,1,0,0,0,66,653, + 1,0,0,0,68,663,1,0,0,0,70,665,1,0,0,0,72,673,1,0,0,0,74,677,1,0, + 0,0,76,695,1,0,0,0,78,699,1,0,0,0,80,701,1,0,0,0,82,704,1,0,0,0, + 84,713,1,0,0,0,86,719,1,0,0,0,88,724,1,0,0,0,90,729,1,0,0,0,92,737, + 1,0,0,0,94,739,1,0,0,0,96,741,1,0,0,0,98,746,1,0,0,0,100,766,1,0, + 0,0,102,768,1,0,0,0,104,772,1,0,0,0,106,775,1,0,0,0,108,780,1,0, + 0,0,110,788,1,0,0,0,112,792,1,0,0,0,114,795,1,0,0,0,116,798,1,0, + 0,0,118,813,1,0,0,0,120,815,1,0,0,0,122,828,1,0,0,0,124,832,1,0, + 0,0,126,838,1,0,0,0,128,841,1,0,0,0,130,851,1,0,0,0,132,861,1,0, + 0,0,134,867,1,0,0,0,136,879,1,0,0,0,138,883,1,0,0,0,140,885,1,0, + 0,0,142,893,1,0,0,0,144,895,1,0,0,0,146,903,1,0,0,0,148,905,1,0, + 0,0,150,913,1,0,0,0,152,923,1,0,0,0,154,932,1,0,0,0,156,938,1,0, + 0,0,158,940,1,0,0,0,160,952,1,0,0,0,162,976,1,0,0,0,164,990,1,0, + 0,0,166,1014,1,0,0,0,168,1016,1,0,0,0,170,1021,1,0,0,0,172,1030, + 1,0,0,0,174,1045,1,0,0,0,176,1049,1,0,0,0,178,1062,1,0,0,0,180,1067, + 1,0,0,0,182,1072,1,0,0,0,184,1076,1,0,0,0,186,1079,1,0,0,0,188,1093, + 1,0,0,0,190,1103,1,0,0,0,192,1113,1,0,0,0,194,1117,1,0,0,0,196,1125, + 1,0,0,0,198,1154,1,0,0,0,200,1172,1,0,0,0,202,1183,1,0,0,0,204,1185, + 1,0,0,0,206,1199,1,0,0,0,208,1248,1,0,0,0,210,1250,1,0,0,0,212,1252, + 1,0,0,0,214,1254,1,0,0,0,216,1256,1,0,0,0,218,1258,1,0,0,0,220,1260, + 1,0,0,0,222,1262,1,0,0,0,224,1264,1,0,0,0,226,1266,1,0,0,0,228,1268, + 1,0,0,0,230,1270,1,0,0,0,232,1272,1,0,0,0,234,1274,1,0,0,0,236,1276, + 1,0,0,0,238,1278,1,0,0,0,240,1280,1,0,0,0,242,1282,1,0,0,0,244,1284, + 1,0,0,0,246,1286,1,0,0,0,248,1288,1,0,0,0,250,1290,1,0,0,0,252,1292, + 1,0,0,0,254,1294,1,0,0,0,256,1296,1,0,0,0,258,1322,1,0,0,0,260,1324, + 1,0,0,0,262,1366,1,0,0,0,264,1368,1,0,0,0,266,1371,1,0,0,0,268,1374, + 1,0,0,0,270,1391,1,0,0,0,272,1403,1,0,0,0,274,1407,1,0,0,0,276,1412, + 1,0,0,0,278,1414,1,0,0,0,280,1424,1,0,0,0,282,1443,1,0,0,0,284,1459, + 1,0,0,0,286,1466,1,0,0,0,288,1468,1,0,0,0,290,1473,1,0,0,0,292,1478, + 1,0,0,0,294,1481,1,0,0,0,296,1489,1,0,0,0,298,1500,1,0,0,0,300,1502, + 1,0,0,0,302,1506,1,0,0,0,304,1511,1,0,0,0,306,1520,1,0,0,0,308,1528, + 1,0,0,0,310,1536,1,0,0,0,312,1547,1,0,0,0,314,1549,1,0,0,0,316,1554, + 1,0,0,0,318,1562,1,0,0,0,320,1573,1,0,0,0,322,1578,1,0,0,0,324,1594, + 1,0,0,0,326,1596,1,0,0,0,328,1604,1,0,0,0,330,1612,1,0,0,0,332,1623, + 1,0,0,0,334,1628,1,0,0,0,336,1639,1,0,0,0,338,1641,1,0,0,0,340,1643, + 1,0,0,0,342,1645,1,0,0,0,344,1647,1,0,0,0,346,1649,1,0,0,0,348,1651, + 1,0,0,0,350,1653,1,0,0,0,352,1655,1,0,0,0,354,1658,1,0,0,0,356,1660, + 1,0,0,0,358,1662,1,0,0,0,360,1674,1,0,0,0,362,1687,1,0,0,0,364,1694, + 1,0,0,0,366,1701,1,0,0,0,368,1711,1,0,0,0,370,1713,1,0,0,0,372,1715, + 1,0,0,0,374,1717,1,0,0,0,376,1725,1,0,0,0,378,1729,1,0,0,0,380,1731, + 1,0,0,0,382,1743,1,0,0,0,384,1745,1,0,0,0,386,1747,1,0,0,0,388,390, + 5,116,0,0,389,388,1,0,0,0,390,391,1,0,0,0,391,389,1,0,0,0,391,392, + 1,0,0,0,392,1,1,0,0,0,393,395,3,0,0,0,394,393,1,0,0,0,395,398,1, + 0,0,0,396,394,1,0,0,0,396,397,1,0,0,0,397,406,1,0,0,0,398,396,1, + 0,0,0,399,403,3,4,2,0,400,402,3,0,0,0,401,400,1,0,0,0,402,405,1, + 0,0,0,403,401,1,0,0,0,403,404,1,0,0,0,404,407,1,0,0,0,405,403,1, + 0,0,0,406,399,1,0,0,0,407,408,1,0,0,0,408,406,1,0,0,0,408,409,1, + 0,0,0,409,413,1,0,0,0,410,412,5,119,0,0,411,410,1,0,0,0,412,415, + 1,0,0,0,413,411,1,0,0,0,413,414,1,0,0,0,414,3,1,0,0,0,415,413,1, + 0,0,0,416,421,3,8,4,0,417,421,3,6,3,0,418,421,3,10,5,0,419,421,3, + 12,6,0,420,416,1,0,0,0,420,417,1,0,0,0,420,418,1,0,0,0,420,419,1, + 0,0,0,421,5,1,0,0,0,422,424,3,18,9,0,423,422,1,0,0,0,423,424,1,0, + 0,0,424,425,1,0,0,0,425,426,3,32,16,0,426,7,1,0,0,0,427,428,3,22, + 11,0,428,429,3,32,16,0,429,9,1,0,0,0,430,431,3,26,13,0,431,432,3, + 32,16,0,432,11,1,0,0,0,433,434,3,24,12,0,434,435,3,32,16,0,435,13, + 1,0,0,0,436,441,3,38,19,0,437,441,3,48,24,0,438,441,3,114,57,0,439, + 441,3,116,58,0,440,436,1,0,0,0,440,437,1,0,0,0,440,438,1,0,0,0,440, + 439,1,0,0,0,441,15,1,0,0,0,442,461,3,192,96,0,443,461,3,140,70,0, + 444,461,3,152,76,0,445,461,3,168,84,0,446,461,3,180,90,0,447,461, + 3,182,91,0,448,461,3,184,92,0,449,461,3,188,94,0,450,461,3,186,93, + 0,451,461,3,190,95,0,452,461,3,268,134,0,453,461,3,264,132,0,454, + 461,3,206,103,0,455,461,3,256,128,0,456,461,3,266,133,0,457,461, + 3,260,130,0,458,461,3,292,146,0,459,461,3,300,150,0,460,442,1,0, + 0,0,460,443,1,0,0,0,460,444,1,0,0,0,460,445,1,0,0,0,460,446,1,0, + 0,0,460,447,1,0,0,0,460,448,1,0,0,0,460,449,1,0,0,0,460,450,1,0, + 0,0,460,451,1,0,0,0,460,452,1,0,0,0,460,453,1,0,0,0,460,454,1,0, + 0,0,460,455,1,0,0,0,460,456,1,0,0,0,460,457,1,0,0,0,460,458,1,0, + 0,0,460,459,1,0,0,0,461,17,1,0,0,0,462,463,5,1,0,0,463,464,5,115, + 0,0,464,465,5,119,0,0,465,19,1,0,0,0,466,467,5,2,0,0,467,472,5,115, + 0,0,468,469,5,70,0,0,469,470,3,28,14,0,470,471,5,71,0,0,471,473, + 1,0,0,0,472,468,1,0,0,0,472,473,1,0,0,0,473,21,1,0,0,0,474,476,3, + 78,39,0,475,474,1,0,0,0,475,476,1,0,0,0,476,477,1,0,0,0,477,478, + 5,3,0,0,478,479,5,115,0,0,479,481,5,70,0,0,480,482,3,28,14,0,481, + 480,1,0,0,0,481,482,1,0,0,0,482,483,1,0,0,0,483,485,5,71,0,0,484, + 486,5,119,0,0,485,484,1,0,0,0,485,486,1,0,0,0,486,23,1,0,0,0,487, + 488,5,4,0,0,488,489,5,115,0,0,489,25,1,0,0,0,490,491,5,5,0,0,491, + 497,5,115,0,0,492,494,5,70,0,0,493,495,3,28,14,0,494,493,1,0,0,0, + 494,495,1,0,0,0,495,496,1,0,0,0,496,498,5,71,0,0,497,492,1,0,0,0, + 497,498,1,0,0,0,498,500,1,0,0,0,499,501,5,119,0,0,500,499,1,0,0, + 0,500,501,1,0,0,0,501,27,1,0,0,0,502,507,3,384,192,0,503,504,5,69, + 0,0,504,506,3,384,192,0,505,503,1,0,0,0,506,509,1,0,0,0,507,505, + 1,0,0,0,507,508,1,0,0,0,508,29,1,0,0,0,509,507,1,0,0,0,510,524,3, + 20,10,0,511,524,3,86,43,0,512,524,3,106,53,0,513,524,3,64,32,0,514, + 524,3,54,27,0,515,524,3,82,41,0,516,524,3,112,56,0,517,524,3,14, + 7,0,518,524,3,120,60,0,519,520,3,288,144,0,520,521,3,288,144,0,521, + 524,1,0,0,0,522,524,3,16,8,0,523,510,1,0,0,0,523,511,1,0,0,0,523, + 512,1,0,0,0,523,513,1,0,0,0,523,514,1,0,0,0,523,515,1,0,0,0,523, + 516,1,0,0,0,523,517,1,0,0,0,523,518,1,0,0,0,523,519,1,0,0,0,523, + 522,1,0,0,0,524,31,1,0,0,0,525,527,3,0,0,0,526,525,1,0,0,0,527,530, + 1,0,0,0,528,526,1,0,0,0,528,529,1,0,0,0,529,538,1,0,0,0,530,528, + 1,0,0,0,531,535,3,34,17,0,532,534,3,0,0,0,533,532,1,0,0,0,534,537, + 1,0,0,0,535,533,1,0,0,0,535,536,1,0,0,0,536,539,1,0,0,0,537,535, + 1,0,0,0,538,531,1,0,0,0,539,540,1,0,0,0,540,538,1,0,0,0,540,541, + 1,0,0,0,541,542,1,0,0,0,542,543,3,36,18,0,543,33,1,0,0,0,544,546, + 5,48,0,0,545,544,1,0,0,0,545,546,1,0,0,0,546,547,1,0,0,0,547,548, + 3,30,15,0,548,549,5,119,0,0,549,35,1,0,0,0,550,552,5,48,0,0,551, + 550,1,0,0,0,551,552,1,0,0,0,552,553,1,0,0,0,553,554,5,6,0,0,554, + 37,1,0,0,0,555,556,5,7,0,0,556,557,3,42,21,0,557,39,1,0,0,0,558, + 559,7,0,0,0,559,560,5,70,0,0,560,561,3,44,22,0,561,562,5,71,0,0, + 562,41,1,0,0,0,563,568,3,40,20,0,564,565,5,69,0,0,565,567,3,40,20, + 0,566,564,1,0,0,0,567,570,1,0,0,0,568,566,1,0,0,0,568,569,1,0,0, + 0,569,43,1,0,0,0,570,568,1,0,0,0,571,576,3,46,23,0,572,573,5,69, + 0,0,573,575,3,46,23,0,574,572,1,0,0,0,575,578,1,0,0,0,576,574,1, + 0,0,0,576,577,1,0,0,0,577,45,1,0,0,0,578,576,1,0,0,0,579,585,3,328, + 164,0,580,583,5,72,0,0,581,584,3,328,164,0,582,584,5,117,0,0,583, + 581,1,0,0,0,583,582,1,0,0,0,584,586,1,0,0,0,585,580,1,0,0,0,585, + 586,1,0,0,0,586,589,1,0,0,0,587,589,5,117,0,0,588,579,1,0,0,0,588, + 587,1,0,0,0,589,47,1,0,0,0,590,591,5,9,0,0,591,596,3,50,25,0,592, + 593,5,69,0,0,593,595,3,50,25,0,594,592,1,0,0,0,595,598,1,0,0,0,596, + 594,1,0,0,0,596,597,1,0,0,0,597,49,1,0,0,0,598,596,1,0,0,0,599,600, + 5,70,0,0,600,605,3,52,26,0,601,602,5,69,0,0,602,604,3,52,26,0,603, + 601,1,0,0,0,604,607,1,0,0,0,605,603,1,0,0,0,605,606,1,0,0,0,606, + 608,1,0,0,0,607,605,1,0,0,0,608,609,5,71,0,0,609,51,1,0,0,0,610, + 611,3,362,181,0,611,53,1,0,0,0,612,622,5,10,0,0,613,618,3,62,31, + 0,614,615,5,69,0,0,615,617,3,62,31,0,616,614,1,0,0,0,617,620,1,0, + 0,0,618,616,1,0,0,0,618,619,1,0,0,0,619,623,1,0,0,0,620,618,1,0, + 0,0,621,623,3,60,30,0,622,613,1,0,0,0,622,621,1,0,0,0,623,55,1,0, + 0,0,624,628,5,76,0,0,625,626,5,115,0,0,626,629,5,76,0,0,627,629, + 5,76,0,0,628,625,1,0,0,0,628,627,1,0,0,0,629,57,1,0,0,0,630,633, + 5,115,0,0,631,633,3,40,20,0,632,630,1,0,0,0,632,631,1,0,0,0,633, + 59,1,0,0,0,634,639,3,58,29,0,635,636,5,69,0,0,636,638,3,58,29,0, + 637,635,1,0,0,0,638,641,1,0,0,0,639,637,1,0,0,0,639,640,1,0,0,0, + 640,61,1,0,0,0,641,639,1,0,0,0,642,643,3,56,28,0,643,644,3,60,30, + 0,644,63,1,0,0,0,645,646,3,76,38,0,646,647,3,66,33,0,647,652,1,0, + 0,0,648,649,3,102,51,0,649,650,3,70,35,0,650,652,1,0,0,0,651,645, + 1,0,0,0,651,648,1,0,0,0,652,65,1,0,0,0,653,658,3,68,34,0,654,655, + 5,69,0,0,655,657,3,68,34,0,656,654,1,0,0,0,657,660,1,0,0,0,658,656, + 1,0,0,0,658,659,1,0,0,0,659,67,1,0,0,0,660,658,1,0,0,0,661,664,5, + 115,0,0,662,664,3,40,20,0,663,661,1,0,0,0,663,662,1,0,0,0,664,69, + 1,0,0,0,665,670,3,72,36,0,666,667,5,69,0,0,667,669,3,72,36,0,668, + 666,1,0,0,0,669,672,1,0,0,0,670,668,1,0,0,0,670,671,1,0,0,0,671, + 71,1,0,0,0,672,670,1,0,0,0,673,675,3,68,34,0,674,676,3,74,37,0,675, + 674,1,0,0,0,675,676,1,0,0,0,676,73,1,0,0,0,677,678,5,117,0,0,678, + 679,3,100,50,0,679,75,1,0,0,0,680,696,5,8,0,0,681,686,5,108,0,0, + 682,684,5,117,0,0,683,685,5,114,0,0,684,683,1,0,0,0,684,685,1,0, + 0,0,685,687,1,0,0,0,686,682,1,0,0,0,686,687,1,0,0,0,687,696,1,0, + 0,0,688,689,5,45,0,0,689,696,5,108,0,0,690,691,5,45,0,0,691,696, + 5,109,0,0,692,696,5,110,0,0,693,696,5,111,0,0,694,696,5,14,0,0,695, + 680,1,0,0,0,695,681,1,0,0,0,695,688,1,0,0,0,695,690,1,0,0,0,695, + 692,1,0,0,0,695,693,1,0,0,0,695,694,1,0,0,0,696,77,1,0,0,0,697,700, + 3,76,38,0,698,700,3,102,51,0,699,697,1,0,0,0,699,698,1,0,0,0,700, + 79,1,0,0,0,701,702,5,117,0,0,702,703,5,114,0,0,703,81,1,0,0,0,704, + 705,5,11,0,0,705,710,3,84,42,0,706,707,5,69,0,0,707,709,3,84,42, + 0,708,706,1,0,0,0,709,712,1,0,0,0,710,708,1,0,0,0,710,711,1,0,0, + 0,711,83,1,0,0,0,712,710,1,0,0,0,713,714,5,70,0,0,714,715,5,115, + 0,0,715,716,5,69,0,0,716,717,5,115,0,0,717,718,5,71,0,0,718,85,1, + 0,0,0,719,722,5,12,0,0,720,723,3,92,46,0,721,723,3,90,45,0,722,720, + 1,0,0,0,722,721,1,0,0,0,723,87,1,0,0,0,724,725,3,78,39,0,725,726, + 5,70,0,0,726,727,3,98,49,0,727,728,5,71,0,0,728,89,1,0,0,0,729,734, + 3,88,44,0,730,731,5,69,0,0,731,733,3,88,44,0,732,730,1,0,0,0,733, + 736,1,0,0,0,734,732,1,0,0,0,734,735,1,0,0,0,735,91,1,0,0,0,736,734, + 1,0,0,0,737,738,5,13,0,0,738,93,1,0,0,0,739,740,5,115,0,0,740,95, + 1,0,0,0,741,744,3,94,47,0,742,743,5,74,0,0,743,745,3,94,47,0,744, + 742,1,0,0,0,744,745,1,0,0,0,745,97,1,0,0,0,746,751,3,96,48,0,747, + 748,5,69,0,0,748,750,3,96,48,0,749,747,1,0,0,0,750,753,1,0,0,0,751, + 749,1,0,0,0,751,752,1,0,0,0,752,99,1,0,0,0,753,751,1,0,0,0,754,755, + 5,70,0,0,755,756,5,117,0,0,756,757,5,71,0,0,757,758,1,0,0,0,758, + 759,5,70,0,0,759,760,5,117,0,0,760,767,5,71,0,0,761,767,5,114,0, + 0,762,763,5,70,0,0,763,764,3,348,174,0,764,765,5,71,0,0,765,767, + 1,0,0,0,766,754,1,0,0,0,766,761,1,0,0,0,766,762,1,0,0,0,767,101, + 1,0,0,0,768,770,3,350,175,0,769,771,3,104,52,0,770,769,1,0,0,0,770, + 771,1,0,0,0,771,103,1,0,0,0,772,773,5,117,0,0,773,774,3,100,50,0, + 774,105,1,0,0,0,775,776,5,15,0,0,776,777,5,70,0,0,777,778,3,108, + 54,0,778,779,5,71,0,0,779,107,1,0,0,0,780,785,3,110,55,0,781,782, + 5,69,0,0,782,784,3,110,55,0,783,781,1,0,0,0,784,787,1,0,0,0,785, + 783,1,0,0,0,785,786,1,0,0,0,786,109,1,0,0,0,787,785,1,0,0,0,788, + 789,5,115,0,0,789,790,5,73,0,0,790,791,3,338,169,0,791,111,1,0,0, + 0,792,793,5,16,0,0,793,794,3,28,14,0,794,113,1,0,0,0,795,796,5,17, + 0,0,796,797,3,28,14,0,797,115,1,0,0,0,798,807,5,18,0,0,799,804,3, + 118,59,0,800,801,5,69,0,0,801,803,3,118,59,0,802,800,1,0,0,0,803, + 806,1,0,0,0,804,802,1,0,0,0,804,805,1,0,0,0,805,808,1,0,0,0,806, + 804,1,0,0,0,807,799,1,0,0,0,807,808,1,0,0,0,808,117,1,0,0,0,809, + 814,5,115,0,0,810,811,5,76,0,0,811,812,5,115,0,0,812,814,5,76,0, + 0,813,809,1,0,0,0,813,810,1,0,0,0,814,119,1,0,0,0,815,816,5,19,0, + 0,816,823,3,126,63,0,817,819,5,69,0,0,818,817,1,0,0,0,818,819,1, + 0,0,0,819,820,1,0,0,0,820,822,3,126,63,0,821,818,1,0,0,0,822,825, + 1,0,0,0,823,821,1,0,0,0,823,824,1,0,0,0,824,121,1,0,0,0,825,823, + 1,0,0,0,826,829,3,362,181,0,827,829,3,132,66,0,828,826,1,0,0,0,828, + 827,1,0,0,0,829,123,1,0,0,0,830,831,7,1,0,0,831,833,5,117,0,0,832, + 830,1,0,0,0,832,833,1,0,0,0,833,836,1,0,0,0,834,837,3,376,188,0, + 835,837,5,115,0,0,836,834,1,0,0,0,836,835,1,0,0,0,837,125,1,0,0, + 0,838,839,3,128,64,0,839,840,3,130,65,0,840,127,1,0,0,0,841,846, + 3,122,61,0,842,843,5,69,0,0,843,845,3,122,61,0,844,842,1,0,0,0,845, + 848,1,0,0,0,846,844,1,0,0,0,846,847,1,0,0,0,847,849,1,0,0,0,848, + 846,1,0,0,0,849,850,5,76,0,0,850,129,1,0,0,0,851,856,3,124,62,0, + 852,853,5,69,0,0,853,855,3,124,62,0,854,852,1,0,0,0,855,858,1,0, + 0,0,856,854,1,0,0,0,856,857,1,0,0,0,857,859,1,0,0,0,858,856,1,0, + 0,0,859,860,5,76,0,0,860,131,1,0,0,0,861,862,5,70,0,0,862,863,3, + 136,68,0,863,864,5,69,0,0,864,865,3,134,67,0,865,866,5,71,0,0,866, + 133,1,0,0,0,867,868,5,115,0,0,868,869,5,73,0,0,869,870,3,348,174, + 0,870,871,5,69,0,0,871,874,3,348,174,0,872,873,5,69,0,0,873,875, + 3,348,174,0,874,872,1,0,0,0,874,875,1,0,0,0,875,135,1,0,0,0,876, + 880,3,138,69,0,877,878,5,69,0,0,878,880,3,136,68,0,879,876,1,0,0, + 0,879,877,1,0,0,0,880,137,1,0,0,0,881,884,3,362,181,0,882,884,3, + 132,66,0,883,881,1,0,0,0,883,882,1,0,0,0,884,139,1,0,0,0,885,886, + 7,2,0,0,886,887,3,386,193,0,887,891,1,0,0,0,888,892,3,142,71,0,889, + 892,3,144,72,0,890,892,3,150,75,0,891,888,1,0,0,0,891,889,1,0,0, + 0,891,890,1,0,0,0,892,141,1,0,0,0,893,894,3,146,73,0,894,143,1,0, + 0,0,895,896,5,70,0,0,896,897,3,148,74,0,897,899,5,71,0,0,898,900, + 5,69,0,0,899,898,1,0,0,0,899,900,1,0,0,0,900,901,1,0,0,0,901,902, + 3,342,171,0,902,145,1,0,0,0,903,904,5,114,0,0,904,147,1,0,0,0,905, + 910,3,146,73,0,906,907,5,69,0,0,907,909,3,146,73,0,908,906,1,0,0, + 0,909,912,1,0,0,0,910,908,1,0,0,0,910,911,1,0,0,0,911,149,1,0,0, + 0,912,910,1,0,0,0,913,921,5,115,0,0,914,916,5,69,0,0,915,914,1,0, + 0,0,915,916,1,0,0,0,916,917,1,0,0,0,917,918,5,70,0,0,918,919,3,148, + 74,0,919,920,5,71,0,0,920,922,1,0,0,0,921,915,1,0,0,0,921,922,1, + 0,0,0,922,151,1,0,0,0,923,924,5,22,0,0,924,925,5,70,0,0,925,926, + 3,354,177,0,926,930,5,71,0,0,927,931,3,158,79,0,928,931,3,156,78, + 0,929,931,3,154,77,0,930,927,1,0,0,0,930,928,1,0,0,0,930,929,1,0, + 0,0,931,153,1,0,0,0,932,933,3,146,73,0,933,934,5,69,0,0,934,935, + 3,146,73,0,935,936,5,69,0,0,936,937,3,146,73,0,937,155,1,0,0,0,938, + 939,3,16,8,0,939,157,1,0,0,0,940,944,3,160,80,0,941,943,3,162,81, + 0,942,941,1,0,0,0,943,946,1,0,0,0,944,942,1,0,0,0,944,945,1,0,0, + 0,945,948,1,0,0,0,946,944,1,0,0,0,947,949,3,164,82,0,948,947,1,0, + 0,0,948,949,1,0,0,0,949,950,1,0,0,0,950,951,3,166,83,0,951,159,1, + 0,0,0,952,954,5,23,0,0,953,955,5,119,0,0,954,953,1,0,0,0,954,955, + 1,0,0,0,955,959,1,0,0,0,956,958,3,0,0,0,957,956,1,0,0,0,958,961, + 1,0,0,0,959,957,1,0,0,0,959,960,1,0,0,0,960,969,1,0,0,0,961,959, + 1,0,0,0,962,966,3,34,17,0,963,965,3,0,0,0,964,963,1,0,0,0,965,968, + 1,0,0,0,966,964,1,0,0,0,966,967,1,0,0,0,967,970,1,0,0,0,968,966, + 1,0,0,0,969,962,1,0,0,0,970,971,1,0,0,0,971,969,1,0,0,0,971,972, + 1,0,0,0,972,161,1,0,0,0,973,977,5,26,0,0,974,975,5,24,0,0,975,977, + 5,22,0,0,976,973,1,0,0,0,976,974,1,0,0,0,977,978,1,0,0,0,978,979, + 5,70,0,0,979,980,3,354,177,0,980,981,5,71,0,0,981,983,5,23,0,0,982, + 984,5,119,0,0,983,982,1,0,0,0,983,984,1,0,0,0,984,986,1,0,0,0,985, + 987,3,34,17,0,986,985,1,0,0,0,987,988,1,0,0,0,988,986,1,0,0,0,988, + 989,1,0,0,0,989,163,1,0,0,0,990,992,5,24,0,0,991,993,5,119,0,0,992, + 991,1,0,0,0,992,993,1,0,0,0,993,997,1,0,0,0,994,996,3,0,0,0,995, + 994,1,0,0,0,996,999,1,0,0,0,997,995,1,0,0,0,997,998,1,0,0,0,998, + 1007,1,0,0,0,999,997,1,0,0,0,1000,1004,3,34,17,0,1001,1003,3,0,0, + 0,1002,1001,1,0,0,0,1003,1006,1,0,0,0,1004,1002,1,0,0,0,1004,1005, + 1,0,0,0,1005,1008,1,0,0,0,1006,1004,1,0,0,0,1007,1000,1,0,0,0,1008, + 1009,1,0,0,0,1009,1007,1,0,0,0,1009,1010,1,0,0,0,1010,165,1,0,0, + 0,1011,1015,5,25,0,0,1012,1013,5,6,0,0,1013,1015,5,22,0,0,1014,1011, + 1,0,0,0,1014,1012,1,0,0,0,1015,167,1,0,0,0,1016,1019,5,27,0,0,1017, + 1020,3,172,86,0,1018,1020,3,176,88,0,1019,1017,1,0,0,0,1019,1018, + 1,0,0,0,1020,169,1,0,0,0,1021,1022,3,368,184,0,1022,1023,5,73,0, + 0,1023,1024,3,344,172,0,1024,1025,5,69,0,0,1025,1028,3,344,172,0, + 1026,1027,5,69,0,0,1027,1029,3,344,172,0,1028,1026,1,0,0,0,1028, + 1029,1,0,0,0,1029,171,1,0,0,0,1030,1032,3,146,73,0,1031,1033,5,69, + 0,0,1032,1031,1,0,0,0,1032,1033,1,0,0,0,1033,1034,1,0,0,0,1034,1036, + 3,170,85,0,1035,1037,5,119,0,0,1036,1035,1,0,0,0,1036,1037,1,0,0, + 0,1037,1038,1,0,0,0,1038,1040,3,174,87,0,1039,1041,5,119,0,0,1040, + 1039,1,0,0,0,1040,1041,1,0,0,0,1041,1042,1,0,0,0,1042,1043,3,180, + 90,0,1043,173,1,0,0,0,1044,1046,3,34,17,0,1045,1044,1,0,0,0,1046, + 1047,1,0,0,0,1047,1045,1,0,0,0,1047,1048,1,0,0,0,1048,175,1,0,0, + 0,1049,1051,3,170,85,0,1050,1052,5,119,0,0,1051,1050,1,0,0,0,1051, + 1052,1,0,0,0,1052,1053,1,0,0,0,1053,1055,3,174,87,0,1054,1056,5, + 119,0,0,1055,1054,1,0,0,0,1055,1056,1,0,0,0,1056,1057,1,0,0,0,1057, + 1058,3,178,89,0,1058,177,1,0,0,0,1059,1063,5,30,0,0,1060,1061,5, + 6,0,0,1061,1063,5,27,0,0,1062,1059,1,0,0,0,1062,1060,1,0,0,0,1063, + 179,1,0,0,0,1064,1066,3,146,73,0,1065,1064,1,0,0,0,1066,1069,1,0, + 0,0,1067,1065,1,0,0,0,1067,1068,1,0,0,0,1068,1070,1,0,0,0,1069,1067, + 1,0,0,0,1070,1071,5,28,0,0,1071,181,1,0,0,0,1072,1074,5,29,0,0,1073, + 1075,7,3,0,0,1074,1073,1,0,0,0,1074,1075,1,0,0,0,1075,183,1,0,0, + 0,1076,1077,5,31,0,0,1077,1078,7,3,0,0,1078,185,1,0,0,0,1079,1080, + 5,32,0,0,1080,1081,5,70,0,0,1081,1082,3,194,97,0,1082,1091,5,71, + 0,0,1083,1085,5,69,0,0,1084,1083,1,0,0,0,1084,1085,1,0,0,0,1085, + 1086,1,0,0,0,1086,1088,3,200,100,0,1087,1084,1,0,0,0,1088,1089,1, + 0,0,0,1089,1087,1,0,0,0,1089,1090,1,0,0,0,1090,1092,1,0,0,0,1091, + 1087,1,0,0,0,1091,1092,1,0,0,0,1092,187,1,0,0,0,1093,1094,5,33,0, + 0,1094,1101,3,276,138,0,1095,1096,5,69,0,0,1096,1098,3,200,100,0, + 1097,1095,1,0,0,0,1098,1099,1,0,0,0,1099,1097,1,0,0,0,1099,1100, + 1,0,0,0,1100,1102,1,0,0,0,1101,1097,1,0,0,0,1101,1102,1,0,0,0,1102, + 189,1,0,0,0,1103,1104,5,34,0,0,1104,1111,3,276,138,0,1105,1106,5, + 69,0,0,1106,1108,3,200,100,0,1107,1105,1,0,0,0,1108,1109,1,0,0,0, + 1109,1107,1,0,0,0,1109,1110,1,0,0,0,1110,1112,1,0,0,0,1111,1107, + 1,0,0,0,1111,1112,1,0,0,0,1112,191,1,0,0,0,1113,1114,3,362,181,0, + 1114,1115,5,73,0,0,1115,1116,3,302,151,0,1116,193,1,0,0,0,1117,1122, + 3,198,99,0,1118,1119,5,69,0,0,1119,1121,3,198,99,0,1120,1118,1,0, + 0,0,1121,1124,1,0,0,0,1122,1120,1,0,0,0,1122,1123,1,0,0,0,1123,195, + 1,0,0,0,1124,1122,1,0,0,0,1125,1126,3,218,109,0,1126,1129,5,73,0, + 0,1127,1130,3,146,73,0,1128,1130,5,115,0,0,1129,1127,1,0,0,0,1129, + 1128,1,0,0,0,1130,197,1,0,0,0,1131,1155,3,274,137,0,1132,1155,7, + 4,0,0,1133,1134,3,210,105,0,1134,1135,5,73,0,0,1135,1136,3,276,138, + 0,1136,1155,1,0,0,0,1137,1138,3,212,106,0,1138,1139,5,73,0,0,1139, + 1140,3,274,137,0,1140,1155,1,0,0,0,1141,1142,3,214,107,0,1142,1143, + 5,73,0,0,1143,1144,3,342,171,0,1144,1155,1,0,0,0,1145,1146,3,216, + 108,0,1146,1147,5,73,0,0,1147,1148,3,146,73,0,1148,1155,1,0,0,0, + 1149,1155,3,196,98,0,1150,1151,3,220,110,0,1151,1152,5,73,0,0,1152, + 1153,3,362,181,0,1153,1155,1,0,0,0,1154,1131,1,0,0,0,1154,1132,1, + 0,0,0,1154,1133,1,0,0,0,1154,1137,1,0,0,0,1154,1141,1,0,0,0,1154, + 1145,1,0,0,0,1154,1149,1,0,0,0,1154,1150,1,0,0,0,1155,199,1,0,0, + 0,1156,1157,3,202,101,0,1157,1158,5,69,0,0,1158,1159,5,115,0,0,1159, + 1160,5,73,0,0,1160,1161,1,0,0,0,1161,1162,3,202,101,0,1162,1173, + 1,0,0,0,1163,1164,3,202,101,0,1164,1165,5,69,0,0,1165,1166,3,202, + 101,0,1166,1167,1,0,0,0,1167,1168,3,202,101,0,1168,1169,5,69,0,0, + 1169,1170,3,200,100,0,1170,1173,1,0,0,0,1171,1173,3,202,101,0,1172, + 1156,1,0,0,0,1172,1163,1,0,0,0,1172,1171,1,0,0,0,1173,201,1,0,0, + 0,1174,1175,5,70,0,0,1175,1176,3,200,100,0,1176,1177,5,69,0,0,1177, + 1178,5,115,0,0,1178,1179,5,73,0,0,1179,1180,1,0,0,0,1180,1181,3, + 204,102,0,1181,1184,1,0,0,0,1182,1184,3,302,151,0,1183,1174,1,0, + 0,0,1183,1182,1,0,0,0,1184,203,1,0,0,0,1185,1186,5,70,0,0,1186,1187, + 3,200,100,0,1187,1188,5,69,0,0,1188,1189,5,115,0,0,1189,1190,5,73, + 0,0,1190,1191,3,344,172,0,1191,1192,5,69,0,0,1192,1195,3,344,172, + 0,1193,1194,5,69,0,0,1194,1196,3,344,172,0,1195,1193,1,0,0,0,1195, + 1196,1,0,0,0,1196,1197,1,0,0,0,1197,1198,5,71,0,0,1198,205,1,0,0, + 0,1199,1200,5,35,0,0,1200,1201,5,70,0,0,1201,1206,3,208,104,0,1202, + 1203,5,69,0,0,1203,1205,3,208,104,0,1204,1202,1,0,0,0,1205,1208, + 1,0,0,0,1206,1204,1,0,0,0,1206,1207,1,0,0,0,1207,1209,1,0,0,0,1208, + 1206,1,0,0,0,1209,1210,5,71,0,0,1210,207,1,0,0,0,1211,1249,3,274, + 137,0,1212,1213,3,212,106,0,1213,1214,5,73,0,0,1214,1215,3,274,137, + 0,1215,1249,1,0,0,0,1216,1249,3,196,98,0,1217,1218,3,222,111,0,1218, + 1219,5,73,0,0,1219,1220,3,350,175,0,1220,1249,1,0,0,0,1221,1222, + 3,224,112,0,1222,1223,5,73,0,0,1223,1224,3,350,175,0,1224,1249,1, + 0,0,0,1225,1228,3,226,113,0,1226,1228,3,228,114,0,1227,1225,1,0, + 0,0,1227,1226,1,0,0,0,1228,1229,1,0,0,0,1229,1230,5,73,0,0,1230, + 1231,3,350,175,0,1231,1249,1,0,0,0,1232,1233,3,230,115,0,1233,1234, + 5,73,0,0,1234,1235,3,350,175,0,1235,1249,1,0,0,0,1236,1237,3,232, + 116,0,1237,1238,5,73,0,0,1238,1239,3,342,171,0,1239,1249,1,0,0,0, + 1240,1241,3,234,117,0,1241,1242,5,73,0,0,1242,1243,3,350,175,0,1243, + 1249,1,0,0,0,1244,1245,3,220,110,0,1245,1246,5,73,0,0,1246,1247, + 3,362,181,0,1247,1249,1,0,0,0,1248,1211,1,0,0,0,1248,1212,1,0,0, + 0,1248,1216,1,0,0,0,1248,1217,1,0,0,0,1248,1221,1,0,0,0,1248,1227, + 1,0,0,0,1248,1232,1,0,0,0,1248,1236,1,0,0,0,1248,1240,1,0,0,0,1248, + 1244,1,0,0,0,1249,209,1,0,0,0,1250,1251,5,36,0,0,1251,211,1,0,0, + 0,1252,1253,5,37,0,0,1253,213,1,0,0,0,1254,1255,5,115,0,0,1255,215, + 1,0,0,0,1256,1257,5,6,0,0,1257,217,1,0,0,0,1258,1259,5,38,0,0,1259, + 219,1,0,0,0,1260,1261,5,46,0,0,1261,221,1,0,0,0,1262,1263,5,49,0, + 0,1263,223,1,0,0,0,1264,1265,5,50,0,0,1265,225,1,0,0,0,1266,1267, + 5,51,0,0,1267,227,1,0,0,0,1268,1269,5,52,0,0,1269,229,1,0,0,0,1270, + 1271,5,53,0,0,1271,231,1,0,0,0,1272,1273,5,54,0,0,1273,233,1,0,0, + 0,1274,1275,5,55,0,0,1275,235,1,0,0,0,1276,1277,5,56,0,0,1277,237, + 1,0,0,0,1278,1279,5,57,0,0,1279,239,1,0,0,0,1280,1281,5,58,0,0,1281, + 241,1,0,0,0,1282,1283,5,59,0,0,1283,243,1,0,0,0,1284,1285,5,115, + 0,0,1285,245,1,0,0,0,1286,1287,5,47,0,0,1287,247,1,0,0,0,1288,1289, + 5,115,0,0,1289,249,1,0,0,0,1290,1291,5,61,0,0,1291,251,1,0,0,0,1292, + 1293,5,62,0,0,1293,253,1,0,0,0,1294,1295,5,63,0,0,1295,255,1,0,0, + 0,1296,1297,5,44,0,0,1297,1298,5,70,0,0,1298,1303,3,258,129,0,1299, + 1300,5,69,0,0,1300,1302,3,258,129,0,1301,1299,1,0,0,0,1302,1305, + 1,0,0,0,1303,1301,1,0,0,0,1303,1304,1,0,0,0,1304,1306,1,0,0,0,1305, + 1303,1,0,0,0,1306,1307,5,71,0,0,1307,257,1,0,0,0,1308,1323,3,274, + 137,0,1309,1310,3,212,106,0,1310,1311,5,73,0,0,1311,1312,3,274,137, + 0,1312,1323,1,0,0,0,1313,1323,3,196,98,0,1314,1315,3,224,112,0,1315, + 1316,5,73,0,0,1316,1317,3,350,175,0,1317,1323,1,0,0,0,1318,1319, + 3,220,110,0,1319,1320,5,73,0,0,1320,1321,3,362,181,0,1321,1323,1, + 0,0,0,1322,1308,1,0,0,0,1322,1309,1,0,0,0,1322,1313,1,0,0,0,1322, + 1314,1,0,0,0,1322,1318,1,0,0,0,1323,259,1,0,0,0,1324,1325,5,64,0, + 0,1325,1326,5,70,0,0,1326,1331,3,262,131,0,1327,1328,5,69,0,0,1328, + 1330,3,262,131,0,1329,1327,1,0,0,0,1330,1333,1,0,0,0,1331,1329,1, + 0,0,0,1331,1332,1,0,0,0,1332,1334,1,0,0,0,1333,1331,1,0,0,0,1334, + 1335,5,71,0,0,1335,261,1,0,0,0,1336,1337,3,212,106,0,1337,1338,5, + 73,0,0,1338,1339,3,274,137,0,1339,1367,1,0,0,0,1340,1341,3,222,111, + 0,1341,1342,5,73,0,0,1342,1343,3,350,175,0,1343,1367,1,0,0,0,1344, + 1367,3,196,98,0,1345,1361,3,220,110,0,1346,1361,3,236,118,0,1347, + 1361,3,238,119,0,1348,1361,3,240,120,0,1349,1361,3,242,121,0,1350, + 1361,3,244,122,0,1351,1361,3,226,113,0,1352,1361,3,246,123,0,1353, + 1361,3,248,124,0,1354,1361,3,230,115,0,1355,1361,3,250,125,0,1356, + 1361,3,252,126,0,1357,1361,3,232,116,0,1358,1361,3,254,127,0,1359, + 1361,3,234,117,0,1360,1345,1,0,0,0,1360,1346,1,0,0,0,1360,1347,1, + 0,0,0,1360,1348,1,0,0,0,1360,1349,1,0,0,0,1360,1350,1,0,0,0,1360, + 1351,1,0,0,0,1360,1352,1,0,0,0,1360,1353,1,0,0,0,1360,1354,1,0,0, + 0,1360,1355,1,0,0,0,1360,1356,1,0,0,0,1360,1357,1,0,0,0,1360,1358, + 1,0,0,0,1360,1359,1,0,0,0,1361,1362,1,0,0,0,1362,1363,5,73,0,0,1363, + 1364,3,362,181,0,1364,1367,1,0,0,0,1365,1367,3,274,137,0,1366,1336, + 1,0,0,0,1366,1340,1,0,0,0,1366,1344,1,0,0,0,1366,1360,1,0,0,0,1366, + 1365,1,0,0,0,1367,263,1,0,0,0,1368,1369,5,65,0,0,1369,1370,3,270, + 135,0,1370,265,1,0,0,0,1371,1372,5,66,0,0,1372,1373,3,270,135,0, + 1373,267,1,0,0,0,1374,1375,5,67,0,0,1375,1376,3,270,135,0,1376,269, + 1,0,0,0,1377,1378,3,274,137,0,1378,1379,3,274,137,0,1379,1392,1, + 0,0,0,1380,1381,5,70,0,0,1381,1386,3,272,136,0,1382,1383,5,69,0, + 0,1383,1385,3,272,136,0,1384,1382,1,0,0,0,1385,1388,1,0,0,0,1386, + 1384,1,0,0,0,1386,1387,1,0,0,0,1387,1389,1,0,0,0,1388,1386,1,0,0, + 0,1389,1390,5,71,0,0,1390,1392,1,0,0,0,1391,1377,1,0,0,0,1391,1380, + 1,0,0,0,1392,271,1,0,0,0,1393,1404,3,274,137,0,1394,1395,3,212,106, + 0,1395,1396,5,73,0,0,1396,1397,3,274,137,0,1397,1404,1,0,0,0,1398, + 1404,3,196,98,0,1399,1400,3,220,110,0,1400,1401,5,73,0,0,1401,1402, + 3,362,181,0,1402,1404,1,0,0,0,1403,1393,1,0,0,0,1403,1394,1,0,0, + 0,1403,1398,1,0,0,0,1403,1399,1,0,0,0,1404,273,1,0,0,0,1405,1408, + 3,326,163,0,1406,1408,5,117,0,0,1407,1405,1,0,0,0,1407,1406,1,0, + 0,0,1408,275,1,0,0,0,1409,1413,7,4,0,0,1410,1413,3,326,163,0,1411, + 1413,5,117,0,0,1412,1409,1,0,0,0,1412,1410,1,0,0,0,1412,1411,1,0, + 0,0,1413,277,1,0,0,0,1414,1415,5,40,0,0,1415,1416,5,70,0,0,1416, + 1417,3,280,140,0,1417,1418,5,71,0,0,1418,279,1,0,0,0,1419,1425,3, + 284,142,0,1420,1422,3,282,141,0,1421,1423,3,284,142,0,1422,1421, + 1,0,0,0,1422,1423,1,0,0,0,1423,1425,1,0,0,0,1424,1419,1,0,0,0,1424, + 1420,1,0,0,0,1425,1440,1,0,0,0,1426,1428,3,282,141,0,1427,1429,3, + 284,142,0,1428,1427,1,0,0,0,1428,1429,1,0,0,0,1429,1439,1,0,0,0, + 1430,1436,5,69,0,0,1431,1437,3,284,142,0,1432,1434,3,282,141,0,1433, + 1435,3,284,142,0,1434,1433,1,0,0,0,1434,1435,1,0,0,0,1435,1437,1, + 0,0,0,1436,1431,1,0,0,0,1436,1432,1,0,0,0,1437,1439,1,0,0,0,1438, + 1426,1,0,0,0,1438,1430,1,0,0,0,1439,1442,1,0,0,0,1440,1438,1,0,0, + 0,1440,1441,1,0,0,0,1441,281,1,0,0,0,1442,1440,1,0,0,0,1443,1444, + 7,5,0,0,1444,283,1,0,0,0,1445,1460,5,93,0,0,1446,1460,3,286,143, + 0,1447,1448,5,114,0,0,1448,1460,3,286,143,0,1449,1451,7,6,0,0,1450, + 1449,1,0,0,0,1450,1451,1,0,0,0,1451,1452,1,0,0,0,1452,1457,5,94, + 0,0,1453,1455,5,114,0,0,1454,1453,1,0,0,0,1454,1455,1,0,0,0,1455, + 1456,1,0,0,0,1456,1458,3,286,143,0,1457,1454,1,0,0,0,1457,1458,1, + 0,0,0,1458,1460,1,0,0,0,1459,1445,1,0,0,0,1459,1446,1,0,0,0,1459, + 1447,1,0,0,0,1459,1450,1,0,0,0,1460,285,1,0,0,0,1461,1467,7,7,0, + 0,1462,1463,5,70,0,0,1463,1464,3,280,140,0,1464,1465,5,71,0,0,1465, + 1467,1,0,0,0,1466,1461,1,0,0,0,1466,1462,1,0,0,0,1467,287,1,0,0, + 0,1468,1469,5,41,0,0,1469,1470,3,290,145,0,1470,1471,5,73,0,0,1471, + 1472,3,302,151,0,1472,289,1,0,0,0,1473,1474,5,115,0,0,1474,1475, + 5,70,0,0,1475,1476,3,28,14,0,1476,1477,5,71,0,0,1477,291,1,0,0,0, + 1478,1479,5,42,0,0,1479,1480,3,294,147,0,1480,293,1,0,0,0,1481,1487, + 5,115,0,0,1482,1484,5,70,0,0,1483,1485,3,296,148,0,1484,1483,1,0, + 0,0,1484,1485,1,0,0,0,1485,1486,1,0,0,0,1486,1488,5,71,0,0,1487, + 1482,1,0,0,0,1487,1488,1,0,0,0,1488,295,1,0,0,0,1489,1494,3,298, + 149,0,1490,1491,5,69,0,0,1491,1493,3,298,149,0,1492,1490,1,0,0,0, + 1493,1496,1,0,0,0,1494,1492,1,0,0,0,1494,1495,1,0,0,0,1495,297,1, + 0,0,0,1496,1494,1,0,0,0,1497,1501,3,302,151,0,1498,1499,5,117,0, + 0,1499,1501,3,146,73,0,1500,1497,1,0,0,0,1500,1498,1,0,0,0,1501, + 299,1,0,0,0,1502,1504,5,43,0,0,1503,1505,3,342,171,0,1504,1503,1, + 0,0,0,1504,1505,1,0,0,0,1505,301,1,0,0,0,1506,1509,3,304,152,0,1507, + 1508,5,72,0,0,1508,1510,3,304,152,0,1509,1507,1,0,0,0,1509,1510, + 1,0,0,0,1510,303,1,0,0,0,1511,1517,3,306,153,0,1512,1513,3,352,176, + 0,1513,1514,3,306,153,0,1514,1516,1,0,0,0,1515,1512,1,0,0,0,1516, + 1519,1,0,0,0,1517,1515,1,0,0,0,1517,1518,1,0,0,0,1518,305,1,0,0, + 0,1519,1517,1,0,0,0,1520,1525,3,308,154,0,1521,1522,7,8,0,0,1522, + 1524,3,308,154,0,1523,1521,1,0,0,0,1524,1527,1,0,0,0,1525,1523,1, + 0,0,0,1525,1526,1,0,0,0,1526,307,1,0,0,0,1527,1525,1,0,0,0,1528, + 1533,3,310,155,0,1529,1530,5,80,0,0,1530,1532,3,310,155,0,1531,1529, + 1,0,0,0,1532,1535,1,0,0,0,1533,1531,1,0,0,0,1533,1534,1,0,0,0,1534, + 309,1,0,0,0,1535,1533,1,0,0,0,1536,1541,3,312,156,0,1537,1538,5, + 79,0,0,1538,1540,3,312,156,0,1539,1537,1,0,0,0,1540,1543,1,0,0,0, + 1541,1539,1,0,0,0,1541,1542,1,0,0,0,1542,311,1,0,0,0,1543,1541,1, + 0,0,0,1544,1545,5,78,0,0,1545,1548,3,312,156,0,1546,1548,3,314,157, + 0,1547,1544,1,0,0,0,1547,1546,1,0,0,0,1548,313,1,0,0,0,1549,1552, + 3,316,158,0,1550,1551,7,9,0,0,1551,1553,3,316,158,0,1552,1550,1, + 0,0,0,1552,1553,1,0,0,0,1553,315,1,0,0,0,1554,1559,3,318,159,0,1555, + 1556,7,6,0,0,1556,1558,3,318,159,0,1557,1555,1,0,0,0,1558,1561,1, + 0,0,0,1559,1557,1,0,0,0,1559,1560,1,0,0,0,1560,317,1,0,0,0,1561, + 1559,1,0,0,0,1562,1567,3,320,160,0,1563,1564,7,10,0,0,1564,1566, + 3,320,160,0,1565,1563,1,0,0,0,1566,1569,1,0,0,0,1567,1565,1,0,0, + 0,1567,1568,1,0,0,0,1568,319,1,0,0,0,1569,1567,1,0,0,0,1570,1572, + 7,6,0,0,1571,1570,1,0,0,0,1572,1575,1,0,0,0,1573,1571,1,0,0,0,1573, + 1574,1,0,0,0,1574,1576,1,0,0,0,1575,1573,1,0,0,0,1576,1577,3,322, + 161,0,1577,321,1,0,0,0,1578,1583,3,324,162,0,1579,1580,5,77,0,0, + 1580,1582,3,324,162,0,1581,1579,1,0,0,0,1582,1585,1,0,0,0,1583,1581, + 1,0,0,0,1583,1584,1,0,0,0,1584,323,1,0,0,0,1585,1583,1,0,0,0,1586, + 1595,3,378,189,0,1587,1595,7,4,0,0,1588,1595,3,382,191,0,1589,1595, + 3,362,181,0,1590,1591,5,70,0,0,1591,1592,3,302,151,0,1592,1593,5, + 71,0,0,1593,1595,1,0,0,0,1594,1586,1,0,0,0,1594,1587,1,0,0,0,1594, + 1588,1,0,0,0,1594,1589,1,0,0,0,1594,1590,1,0,0,0,1595,325,1,0,0, + 0,1596,1601,3,330,165,0,1597,1598,7,6,0,0,1598,1600,3,330,165,0, + 1599,1597,1,0,0,0,1600,1603,1,0,0,0,1601,1599,1,0,0,0,1601,1602, + 1,0,0,0,1602,327,1,0,0,0,1603,1601,1,0,0,0,1604,1609,3,330,165,0, + 1605,1606,7,6,0,0,1606,1608,3,330,165,0,1607,1605,1,0,0,0,1608,1611, + 1,0,0,0,1609,1607,1,0,0,0,1609,1610,1,0,0,0,1610,329,1,0,0,0,1611, + 1609,1,0,0,0,1612,1617,3,332,166,0,1613,1614,7,10,0,0,1614,1616, + 3,332,166,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,331,1,0,0,0,1619,1617,1,0,0,0,1620,1622, + 7,6,0,0,1621,1620,1,0,0,0,1622,1625,1,0,0,0,1623,1621,1,0,0,0,1623, + 1624,1,0,0,0,1624,1626,1,0,0,0,1625,1623,1,0,0,0,1626,1627,3,334, + 167,0,1627,333,1,0,0,0,1628,1631,3,336,168,0,1629,1630,5,77,0,0, + 1630,1632,3,334,167,0,1631,1629,1,0,0,0,1631,1632,1,0,0,0,1632,335, + 1,0,0,0,1633,1640,5,114,0,0,1634,1640,3,364,182,0,1635,1636,5,70, + 0,0,1636,1637,3,328,164,0,1637,1638,5,71,0,0,1638,1640,1,0,0,0,1639, + 1633,1,0,0,0,1639,1634,1,0,0,0,1639,1635,1,0,0,0,1640,337,1,0,0, + 0,1641,1642,3,302,151,0,1642,339,1,0,0,0,1643,1644,3,302,151,0,1644, + 341,1,0,0,0,1645,1646,3,326,163,0,1646,343,1,0,0,0,1647,1648,3,302, + 151,0,1648,345,1,0,0,0,1649,1650,3,302,151,0,1650,347,1,0,0,0,1651, + 1652,3,302,151,0,1652,349,1,0,0,0,1653,1654,3,302,151,0,1654,351, + 1,0,0,0,1655,1656,5,76,0,0,1656,1657,5,76,0,0,1657,353,1,0,0,0,1658, + 1659,3,302,151,0,1659,355,1,0,0,0,1660,1661,3,302,151,0,1661,357, + 1,0,0,0,1662,1663,5,115,0,0,1663,1664,5,70,0,0,1664,1669,3,342,171, + 0,1665,1666,5,69,0,0,1666,1668,3,342,171,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,1672,1,0,0, + 0,1671,1669,1,0,0,0,1672,1673,5,71,0,0,1673,359,1,0,0,0,1674,1683, + 5,70,0,0,1675,1680,3,302,151,0,1676,1677,5,69,0,0,1677,1679,3,302, + 151,0,1678,1676,1,0,0,0,1679,1682,1,0,0,0,1680,1678,1,0,0,0,1680, + 1681,1,0,0,0,1681,1684,1,0,0,0,1682,1680,1,0,0,0,1683,1675,1,0,0, + 0,1683,1684,1,0,0,0,1684,1685,1,0,0,0,1685,1686,5,71,0,0,1686,361, + 1,0,0,0,1687,1692,7,0,0,0,1688,1690,3,360,180,0,1689,1691,3,366, + 183,0,1690,1689,1,0,0,0,1690,1691,1,0,0,0,1691,1693,1,0,0,0,1692, + 1688,1,0,0,0,1692,1693,1,0,0,0,1693,363,1,0,0,0,1694,1699,5,115, + 0,0,1695,1697,3,360,180,0,1696,1698,3,366,183,0,1697,1696,1,0,0, + 0,1697,1698,1,0,0,0,1698,1700,1,0,0,0,1699,1695,1,0,0,0,1699,1700, + 1,0,0,0,1700,365,1,0,0,0,1701,1703,5,70,0,0,1702,1704,3,304,152, + 0,1703,1702,1,0,0,0,1703,1704,1,0,0,0,1704,1705,1,0,0,0,1705,1707, + 5,72,0,0,1706,1708,3,304,152,0,1707,1706,1,0,0,0,1707,1708,1,0,0, + 0,1708,1709,1,0,0,0,1709,1710,5,71,0,0,1710,367,1,0,0,0,1711,1712, + 5,115,0,0,1712,369,1,0,0,0,1713,1714,5,115,0,0,1714,371,1,0,0,0, + 1715,1716,5,115,0,0,1716,373,1,0,0,0,1717,1718,5,115,0,0,1718,375, + 1,0,0,0,1719,1721,7,6,0,0,1720,1719,1,0,0,0,1720,1721,1,0,0,0,1721, + 1722,1,0,0,0,1722,1726,3,378,189,0,1723,1726,7,4,0,0,1724,1726,3, + 382,191,0,1725,1720,1,0,0,0,1725,1723,1,0,0,0,1725,1724,1,0,0,0, + 1726,377,1,0,0,0,1727,1730,7,11,0,0,1728,1730,3,380,190,0,1729,1727, + 1,0,0,0,1729,1728,1,0,0,0,1730,379,1,0,0,0,1731,1733,5,70,0,0,1732, + 1734,7,6,0,0,1733,1732,1,0,0,0,1733,1734,1,0,0,0,1734,1735,1,0,0, + 0,1735,1736,7,11,0,0,1736,1738,5,69,0,0,1737,1739,7,6,0,0,1738,1737, + 1,0,0,0,1738,1739,1,0,0,0,1739,1740,1,0,0,0,1740,1741,7,11,0,0,1741, + 1742,5,71,0,0,1742,381,1,0,0,0,1743,1744,7,12,0,0,1744,383,1,0,0, + 0,1745,1746,7,0,0,0,1746,385,1,0,0,0,1747,1748,5,115,0,0,1748,387, + 1,0,0,0,171,391,396,403,408,413,420,423,440,460,472,475,481,485, + 494,497,500,507,523,528,535,540,545,551,568,576,583,585,588,596, + 605,618,622,628,632,639,651,658,663,670,675,684,686,695,699,710, + 722,734,744,751,766,770,785,804,807,813,818,823,828,832,836,846, + 856,874,879,883,891,899,910,915,921,930,944,948,954,959,966,971, + 976,983,988,992,997,1004,1009,1014,1019,1028,1032,1036,1040,1047, + 1051,1055,1062,1067,1074,1084,1089,1091,1099,1101,1109,1111,1122, + 1129,1154,1172,1183,1195,1206,1227,1248,1303,1322,1331,1360,1366, + 1386,1391,1403,1407,1412,1422,1424,1428,1434,1436,1438,1440,1450, + 1454,1457,1459,1466,1484,1487,1494,1500,1504,1509,1517,1525,1533, + 1541,1547,1552,1559,1567,1573,1583,1594,1601,1609,1617,1623,1631, + 1639,1669,1680,1683,1690,1692,1697,1699,1703,1707,1720,1725,1729, + 1733,1738 + ] class Fortran77Parser ( Parser ): @@ -1356,7 +1130,7 @@ class Fortran77Parser ( Parser ): def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None @@ -1364,6 +1138,7 @@ def __init__(self, input:TokenStream, output:TextIO = sys.stdout): class CommentStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1425,6 +1200,7 @@ def commentStatement(self): class ProgramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1508,13 +1284,13 @@ def program(self): self.state = 408 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran77Parser.PROGRAM) | (1 << Fortran77Parser.ENTRY) | (1 << Fortran77Parser.FUNCTION) | (1 << Fortran77Parser.BLOCK) | (1 << Fortran77Parser.SUBROUTINE) | (1 << Fortran77Parser.DIMENSION) | (1 << Fortran77Parser.REAL) | (1 << Fortran77Parser.EQUIVALENCE) | (1 << Fortran77Parser.COMMON) | (1 << Fortran77Parser.POINTER) | (1 << Fortran77Parser.IMPLICIT) | (1 << Fortran77Parser.CHARACTER) | (1 << Fortran77Parser.PARAMETER) | (1 << Fortran77Parser.EXTERNAL) | (1 << Fortran77Parser.INTRINSIC) | (1 << Fortran77Parser.SAVE) | (1 << Fortran77Parser.DATA) | (1 << Fortran77Parser.GO) | (1 << Fortran77Parser.GOTO) | (1 << Fortran77Parser.IF) | (1 << Fortran77Parser.DO) | (1 << Fortran77Parser.CONTINUE) | (1 << Fortran77Parser.STOP) | (1 << Fortran77Parser.PAUSE) | (1 << Fortran77Parser.WRITE) | (1 << Fortran77Parser.READ) | (1 << Fortran77Parser.PRINT) | (1 << Fortran77Parser.OPEN) | (1 << Fortran77Parser.LET) | (1 << Fortran77Parser.CALL) | (1 << Fortran77Parser.RETURN) | (1 << Fortran77Parser.CLOSE) | (1 << Fortran77Parser.DOUBLE) | (1 << Fortran77Parser.LABEL))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (Fortran77Parser.INQUIRE - 64)) | (1 << (Fortran77Parser.BACKSPACE - 64)) | (1 << (Fortran77Parser.ENDFILE - 64)) | (1 << (Fortran77Parser.REWIND - 64)) | (1 << (Fortran77Parser.LPAREN - 64)) | (1 << (Fortran77Parser.MINUS - 64)) | (1 << (Fortran77Parser.PLUS - 64)) | (1 << (Fortran77Parser.LNOT - 64)) | (1 << (Fortran77Parser.TRUE - 64)) | (1 << (Fortran77Parser.FALSE - 64)) | (1 << (Fortran77Parser.HOLLERITH - 64)) | (1 << (Fortran77Parser.COMPLEX - 64)) | (1 << (Fortran77Parser.INTEGER - 64)) | (1 << (Fortran77Parser.LOGICAL - 64)) | (1 << (Fortran77Parser.SCON - 64)) | (1 << (Fortran77Parser.RCON - 64)) | (1 << (Fortran77Parser.ICON - 64)) | (1 << (Fortran77Parser.NAME - 64)) | (1 << (Fortran77Parser.COMMENT - 64)))) != 0)): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 349712217530302) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8954431689215055) != 0)): break self.state = 413 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.EOL: + while _la==119: self.state = 410 self.match(Fortran77Parser.EOL) self.state = 415 @@ -1531,6 +1307,7 @@ def program(self): class ExecutableUnitContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1615,6 +1392,7 @@ def executableUnit(self): class MainProgramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1658,7 +1436,7 @@ def mainProgram(self): self.state = 423 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.PROGRAM: + if _la==1: self.state = 422 self.programStatement() @@ -1675,6 +1453,7 @@ def mainProgram(self): class FunctionSubprogramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1728,6 +1507,7 @@ def functionSubprogram(self): class SubroutineSubprogramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1781,6 +1561,7 @@ def subroutineSubprogram(self): class BlockdataSubprogramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1834,6 +1615,7 @@ def blockdataSubprogram(self): class OtherSpecificationStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1883,22 +1665,22 @@ def otherSpecificationStatement(self): self.state = 440 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.DIMENSION]: + if token in [7]: self.enterOuterAlt(localctx, 1) self.state = 436 self.dimensionStatement() pass - elif token in [Fortran77Parser.EQUIVALENCE]: + elif token in [9]: self.enterOuterAlt(localctx, 2) self.state = 437 self.equivalenceStatement() pass - elif token in [Fortran77Parser.INTRINSIC]: + elif token in [17]: self.enterOuterAlt(localctx, 3) self.state = 438 self.intrinsicStatement() pass - elif token in [Fortran77Parser.SAVE]: + elif token in [18]: self.enterOuterAlt(localctx, 4) self.state = 439 self.saveStatement() @@ -1916,6 +1698,7 @@ def otherSpecificationStatement(self): class ExecutableStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2022,75 +1805,75 @@ def executableStatement(self): self.state = 460 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.REAL, Fortran77Parser.NAME]: + if token in [8, 115]: self.state = 442 self.assignmentStatement() pass - elif token in [Fortran77Parser.GO, Fortran77Parser.GOTO]: + elif token in [20, 21]: self.state = 443 self.gotoStatement() pass - elif token in [Fortran77Parser.IF]: + elif token in [22]: self.state = 444 self.ifStatement() pass - elif token in [Fortran77Parser.DO]: + elif token in [27]: self.state = 445 self.doStatement() pass - elif token in [Fortran77Parser.CONTINUE, Fortran77Parser.ICON]: + elif token in [28, 114]: self.state = 446 self.continueStatement() pass - elif token in [Fortran77Parser.STOP]: + elif token in [29]: self.state = 447 self.stopStatement() pass - elif token in [Fortran77Parser.PAUSE]: + elif token in [31]: self.state = 448 self.pauseStatement() pass - elif token in [Fortran77Parser.READ]: + elif token in [33]: self.state = 449 self.readStatement() pass - elif token in [Fortran77Parser.WRITE]: + elif token in [32]: self.state = 450 self.writeStatement() pass - elif token in [Fortran77Parser.PRINT]: + elif token in [34]: self.state = 451 self.printStatement() pass - elif token in [Fortran77Parser.REWIND]: + elif token in [67]: self.state = 452 self.rewindStatement() pass - elif token in [Fortran77Parser.BACKSPACE]: + elif token in [65]: self.state = 453 self.backspaceStatement() pass - elif token in [Fortran77Parser.OPEN]: + elif token in [35]: self.state = 454 self.openStatement() pass - elif token in [Fortran77Parser.CLOSE]: + elif token in [44]: self.state = 455 self.closeStatement() pass - elif token in [Fortran77Parser.ENDFILE]: + elif token in [66]: self.state = 456 self.endfileStatement() pass - elif token in [Fortran77Parser.INQUIRE]: + elif token in [64]: self.state = 457 self.inquireStatement() pass - elif token in [Fortran77Parser.CALL]: + elif token in [42]: self.state = 458 self.callStatement() pass - elif token in [Fortran77Parser.RETURN]: + elif token in [43]: self.state = 459 self.returnStatement() pass @@ -2107,6 +1890,7 @@ def executableStatement(self): class ProgramStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2163,6 +1947,7 @@ def programStatement(self): class EntryStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2218,7 +2003,7 @@ def entryStatement(self): self.state = 472 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.LPAREN: + if _la==70: self.state = 468 self.match(Fortran77Parser.LPAREN) self.state = 469 @@ -2237,6 +2022,7 @@ def entryStatement(self): class FunctionStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2295,7 +2081,7 @@ def functionStatement(self): self.state = 475 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran77Parser.REAL) | (1 << Fortran77Parser.CHARACTER) | (1 << Fortran77Parser.DOUBLE))) != 0) or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.MINUS - 70)) | (1 << (Fortran77Parser.PLUS - 70)) | (1 << (Fortran77Parser.LNOT - 70)) | (1 << (Fortran77Parser.TRUE - 70)) | (1 << (Fortran77Parser.FALSE - 70)) | (1 << (Fortran77Parser.HOLLERITH - 70)) | (1 << (Fortran77Parser.COMPLEX - 70)) | (1 << (Fortran77Parser.INTEGER - 70)) | (1 << (Fortran77Parser.LOGICAL - 70)) | (1 << (Fortran77Parser.SCON - 70)) | (1 << (Fortran77Parser.RCON - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 35184372105472) != 0) or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 69544250966321) != 0): self.state = 474 self.type_() @@ -2309,7 +2095,7 @@ def functionStatement(self): self.state = 481 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.REAL or _la==Fortran77Parser.NAME: + if _la==8 or _la==115: self.state = 480 self.namelist() @@ -2319,7 +2105,7 @@ def functionStatement(self): self.state = 485 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.EOL: + if _la==119: self.state = 484 self.match(Fortran77Parser.EOL) @@ -2334,6 +2120,7 @@ def functionStatement(self): class BlockdataStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2385,6 +2172,7 @@ def blockdataStatement(self): class SubroutineStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2449,7 +2237,7 @@ def subroutineStatement(self): self.state = 494 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.REAL or _la==Fortran77Parser.NAME: + if _la==8 or _la==115: self.state = 493 self.namelist() @@ -2461,7 +2249,7 @@ def subroutineStatement(self): self.state = 500 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.EOL: + if _la==119: self.state = 499 self.match(Fortran77Parser.EOL) @@ -2476,6 +2264,7 @@ def subroutineStatement(self): class NamelistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2526,7 +2315,7 @@ def namelist(self): self.state = 507 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 503 self.match(Fortran77Parser.COMMA) self.state = 504 @@ -2545,6 +2334,7 @@ def namelist(self): class StatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2704,6 +2494,7 @@ def statement(self): class SubprogramBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2757,7 +2548,7 @@ def subprogramBody(self): self.state = 528 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMENT: + while _la==116: self.state = 525 self.commentStatement() self.state = 530 @@ -2774,7 +2565,7 @@ def subprogramBody(self): self.state = 535 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMENT: + while _la==116: self.state = 532 self.commentStatement() self.state = 537 @@ -2800,6 +2591,7 @@ def subprogramBody(self): class WholeStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2845,7 +2637,7 @@ def wholeStatement(self): self.state = 545 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.LABEL: + if _la==48: self.state = 544 self.match(Fortran77Parser.LABEL) @@ -2864,6 +2656,7 @@ def wholeStatement(self): class EndStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2905,7 +2698,7 @@ def endStatement(self): self.state = 551 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.LABEL: + if _la==48: self.state = 550 self.match(Fortran77Parser.LABEL) @@ -2922,6 +2715,7 @@ def endStatement(self): class DimensionStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2974,6 +2768,7 @@ def dimensionStatement(self): class ArrayDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3024,7 +2819,7 @@ def arrayDeclarator(self): self.enterOuterAlt(localctx, 1) self.state = 558 _la = self._input.LA(1) - if not(_la==Fortran77Parser.REAL or _la==Fortran77Parser.NAME): + if not(_la==8 or _la==115): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -3045,6 +2840,7 @@ def arrayDeclarator(self): class ArrayDeclaratorsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3095,7 +2891,7 @@ def arrayDeclarators(self): self.state = 568 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 564 self.match(Fortran77Parser.COMMA) self.state = 565 @@ -3114,6 +2910,7 @@ def arrayDeclarators(self): class ArrayDeclaratorExtentsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3164,7 +2961,7 @@ def arrayDeclaratorExtents(self): self.state = 576 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 572 self.match(Fortran77Parser.COMMA) self.state = 573 @@ -3183,6 +2980,7 @@ def arrayDeclaratorExtents(self): class ArrayDeclaratorExtentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3230,24 +3028,24 @@ def arrayDeclaratorExtent(self): self.state = 588 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.ICON, Fortran77Parser.NAME]: + if token in [70, 74, 75, 114, 115]: self.enterOuterAlt(localctx, 1) self.state = 579 self.iexprCode() self.state = 585 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COLON: + if _la==72: self.state = 580 self.match(Fortran77Parser.COLON) self.state = 583 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.ICON, Fortran77Parser.NAME]: + if token in [70, 74, 75, 114, 115]: self.state = 581 self.iexprCode() pass - elif token in [Fortran77Parser.STAR]: + elif token in [117]: self.state = 582 self.match(Fortran77Parser.STAR) pass @@ -3257,7 +3055,7 @@ def arrayDeclaratorExtent(self): pass - elif token in [Fortran77Parser.STAR]: + elif token in [117]: self.enterOuterAlt(localctx, 2) self.state = 587 self.match(Fortran77Parser.STAR) @@ -3275,6 +3073,7 @@ def arrayDeclaratorExtent(self): class EquivalenceStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3330,7 +3129,7 @@ def equivalenceStatement(self): self.state = 596 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 592 self.match(Fortran77Parser.COMMA) self.state = 593 @@ -3349,6 +3148,7 @@ def equivalenceStatement(self): class EquivEntityGroupContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3407,7 +3207,7 @@ def equivEntityGroup(self): self.state = 605 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 601 self.match(Fortran77Parser.COMMA) self.state = 602 @@ -3428,6 +3228,7 @@ def equivEntityGroup(self): class EquivEntityContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3475,6 +3276,7 @@ def equivEntity(self): class CommonStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3532,13 +3334,13 @@ def commonStatement(self): self.state = 622 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.DIV]: + if token in [76]: self.state = 613 self.commonBlock() self.state = 618 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 614 self.match(Fortran77Parser.COMMA) self.state = 615 @@ -3548,7 +3350,7 @@ def commonStatement(self): _la = self._input.LA(1) pass - elif token in [Fortran77Parser.REAL, Fortran77Parser.NAME]: + elif token in [8, 115]: self.state = 621 self.commonItems() pass @@ -3565,6 +3367,7 @@ def commonStatement(self): class CommonNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3610,13 +3413,13 @@ def commonName(self): self.state = 628 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.NAME]: + if token in [115]: self.state = 625 self.match(Fortran77Parser.NAME) self.state = 626 self.match(Fortran77Parser.DIV) pass - elif token in [Fortran77Parser.DIV]: + elif token in [76]: self.state = 627 self.match(Fortran77Parser.DIV) pass @@ -3633,6 +3436,7 @@ def commonName(self): class CommonItemContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3696,6 +3500,7 @@ def commonItem(self): class CommonItemsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3765,6 +3570,7 @@ def commonItems(self): class CommonBlockContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3818,6 +3624,7 @@ def commonBlock(self): class TypeStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3894,6 +3701,7 @@ def typeStatement(self): class TypeStatementNameListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3944,7 +3752,7 @@ def typeStatementNameList(self): self.state = 658 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 654 self.match(Fortran77Parser.COMMA) self.state = 655 @@ -3963,6 +3771,7 @@ def typeStatementNameList(self): class TypeStatementNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4026,6 +3835,7 @@ def typeStatementName(self): class TypeStatementNameCharListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4076,7 +3886,7 @@ def typeStatementNameCharList(self): self.state = 670 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 666 self.match(Fortran77Parser.COMMA) self.state = 667 @@ -4095,6 +3905,7 @@ def typeStatementNameCharList(self): class TypeStatementNameCharContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4140,7 +3951,7 @@ def typeStatementNameChar(self): self.state = 675 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.STAR: + if _la==117: self.state = 674 self.typeStatementLenSpec() @@ -4155,6 +3966,7 @@ def typeStatementNameChar(self): class TypeStatementLenSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4207,6 +4019,7 @@ def typeStatementLenSpec(self): class Typename_Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4280,13 +4093,13 @@ def typename_(self): self.state = 686 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.STAR: + if _la==117: self.state = 682 self.match(Fortran77Parser.STAR) self.state = 684 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.ICON: + if _la==114: self.state = 683 self.match(Fortran77Parser.ICON) @@ -4335,6 +4148,7 @@ def typename_(self): class Type_Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4399,6 +4213,7 @@ def type_(self): class TypenameLenContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4450,6 +4265,7 @@ def typenameLen(self): class PointerStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4505,7 +4321,7 @@ def pointerStatement(self): self.state = 710 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 706 self.match(Fortran77Parser.COMMA) self.state = 707 @@ -4524,6 +4340,7 @@ def pointerStatement(self): class PointerDeclContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4590,6 +4407,7 @@ def pointerDecl(self): class ImplicitStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4637,11 +4455,11 @@ def implicitStatement(self): self.state = 722 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.NONE]: + if token in [13]: self.state = 720 self.implicitNone() pass - elif token in [Fortran77Parser.REAL, Fortran77Parser.CHARACTER, Fortran77Parser.DOUBLE, Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.LNOT, Fortran77Parser.TRUE, Fortran77Parser.FALSE, Fortran77Parser.HOLLERITH, Fortran77Parser.COMPLEX, Fortran77Parser.INTEGER, Fortran77Parser.LOGICAL, Fortran77Parser.SCON, Fortran77Parser.RCON, Fortran77Parser.ICON, Fortran77Parser.NAME]: + elif token in [8, 14, 45, 70, 74, 75, 78, 91, 92, 97, 108, 110, 111, 112, 113, 114, 115]: self.state = 721 self.implicitSpecs() pass @@ -4658,6 +4476,7 @@ def implicitStatement(self): class ImplicitSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4721,6 +4540,7 @@ def implicitSpec(self): class ImplicitSpecsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4771,7 +4591,7 @@ def implicitSpecs(self): self.state = 734 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 730 self.match(Fortran77Parser.COMMA) self.state = 731 @@ -4790,6 +4610,7 @@ def implicitSpecs(self): class ImplicitNoneContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4836,6 +4657,7 @@ def implicitNone(self): class ImplicitLetterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4882,6 +4704,7 @@ def implicitLetter(self): class ImplicitRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4929,7 +4752,7 @@ def implicitRange(self): self.state = 744 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.MINUS: + if _la==74: self.state = 742 self.match(Fortran77Parser.MINUS) self.state = 743 @@ -4946,6 +4769,7 @@ def implicitRange(self): class ImplicitLettersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4996,7 +4820,7 @@ def implicitLetters(self): self.state = 751 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 747 self.match(Fortran77Parser.COMMA) self.state = 748 @@ -5015,6 +4839,7 @@ def implicitLetters(self): class LenSpecificationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5116,6 +4941,7 @@ def lenSpecification(self): class CharacterWithLenContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5161,7 +4987,7 @@ def characterWithLen(self): self.state = 770 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.STAR: + if _la==117: self.state = 769 self.cwlLen() @@ -5176,6 +5002,7 @@ def characterWithLen(self): class CwlLenContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5228,6 +5055,7 @@ def cwlLen(self): class ParameterStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5290,6 +5118,7 @@ def parameterStatement(self): class ParamlistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5340,7 +5169,7 @@ def paramlist(self): self.state = 785 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 781 self.match(Fortran77Parser.COMMA) self.state = 782 @@ -5359,6 +5188,7 @@ def paramlist(self): class ParamassignContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5416,6 +5246,7 @@ def paramassign(self): class ExternalStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5468,6 +5299,7 @@ def externalStatement(self): class IntrinsicStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5520,6 +5352,7 @@ def intrinsicStatement(self): class SaveStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5573,13 +5406,13 @@ def saveStatement(self): self.state = 807 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.DIV or _la==Fortran77Parser.NAME: + if _la==76 or _la==115: self.state = 799 self.saveEntity() self.state = 804 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 800 self.match(Fortran77Parser.COMMA) self.state = 801 @@ -5600,6 +5433,7 @@ def saveStatement(self): class SaveEntityContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5643,11 +5477,11 @@ def saveEntity(self): self.state = 813 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.NAME]: + if token in [115]: self.state = 809 self.match(Fortran77Parser.NAME) pass - elif token in [Fortran77Parser.DIV]: + elif token in [76]: self.state = 810 self.match(Fortran77Parser.DIV) self.state = 811 @@ -5668,6 +5502,7 @@ def saveEntity(self): class DataStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5723,11 +5558,11 @@ def dataStatement(self): self.state = 823 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.REAL or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Fortran77Parser.COMMA - 69)) | (1 << (Fortran77Parser.LPAREN - 69)) | (1 << (Fortran77Parser.NAME - 69)))) != 0): + while _la==8 or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 70368744177667) != 0): self.state = 818 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 817 self.match(Fortran77Parser.COMMA) @@ -5748,6 +5583,7 @@ def dataStatement(self): class DataStatementItemContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5789,12 +5625,12 @@ def dataStatementItem(self): self.state = 828 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.REAL, Fortran77Parser.NAME]: + if token in [8, 115]: self.enterOuterAlt(localctx, 1) self.state = 826 self.varRef() pass - elif token in [Fortran77Parser.LPAREN]: + elif token in [70]: self.enterOuterAlt(localctx, 2) self.state = 827 self.dataImpliedDo() @@ -5812,6 +5648,7 @@ def dataStatementItem(self): class DataStatementMultipleContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5866,7 +5703,7 @@ def dataStatementMultiple(self): if la_ == 1: self.state = 830 _la = self._input.LA(1) - if not(_la==Fortran77Parser.ICON or _la==Fortran77Parser.NAME): + if not(_la==114 or _la==115): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -5878,11 +5715,11 @@ def dataStatementMultiple(self): self.state = 836 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.TRUE, Fortran77Parser.FALSE, Fortran77Parser.HOLLERITH, Fortran77Parser.SCON, Fortran77Parser.RCON, Fortran77Parser.ICON]: + if token in [70, 74, 75, 91, 92, 97, 112, 113, 114]: self.state = 834 self.constant() pass - elif token in [Fortran77Parser.NAME]: + elif token in [115]: self.state = 835 self.match(Fortran77Parser.NAME) pass @@ -5899,6 +5736,7 @@ def dataStatementMultiple(self): class DataStatementEntityContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5952,6 +5790,7 @@ def dataStatementEntity(self): class Dse1Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6005,7 +5844,7 @@ def dse1(self): self.state = 846 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 842 self.match(Fortran77Parser.COMMA) self.state = 843 @@ -6026,6 +5865,7 @@ def dse1(self): class Dse2Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6079,7 +5919,7 @@ def dse2(self): self.state = 856 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 852 self.match(Fortran77Parser.COMMA) self.state = 853 @@ -6100,6 +5940,7 @@ def dse2(self): class DataImpliedDoContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6168,6 +6009,7 @@ def dataImpliedDo(self): class DataImpliedDoRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6232,7 +6074,7 @@ def dataImpliedDoRange(self): self.state = 874 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 872 self.match(Fortran77Parser.COMMA) self.state = 873 @@ -6249,6 +6091,7 @@ def dataImpliedDoRange(self): class DataImpliedDoListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6293,12 +6136,12 @@ def dataImpliedDoList(self): self.state = 879 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.REAL, Fortran77Parser.LPAREN, Fortran77Parser.NAME]: + if token in [8, 70, 115]: self.enterOuterAlt(localctx, 1) self.state = 876 self.dataImpliedDoListWhat() pass - elif token in [Fortran77Parser.COMMA]: + elif token in [69]: self.enterOuterAlt(localctx, 2) self.state = 877 self.match(Fortran77Parser.COMMA) @@ -6318,6 +6161,7 @@ def dataImpliedDoList(self): class DataImpliedDoListWhatContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6360,11 +6204,11 @@ def dataImpliedDoListWhat(self): self.state = 883 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.REAL, Fortran77Parser.NAME]: + if token in [8, 115]: self.state = 881 self.varRef() pass - elif token in [Fortran77Parser.LPAREN]: + elif token in [70]: self.state = 882 self.dataImpliedDo() pass @@ -6381,6 +6225,7 @@ def dataImpliedDoListWhat(self): class GotoStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6437,7 +6282,7 @@ def gotoStatement(self): self.enterOuterAlt(localctx, 1) self.state = 885 _la = self._input.LA(1) - if not(_la==Fortran77Parser.GO or _la==Fortran77Parser.GOTO): + if not(_la==20 or _la==21): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -6447,15 +6292,15 @@ def gotoStatement(self): self.state = 891 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.ICON]: + if token in [114]: self.state = 888 self.unconditionalGoto() pass - elif token in [Fortran77Parser.LPAREN]: + elif token in [70]: self.state = 889 self.computedGoto() pass - elif token in [Fortran77Parser.NAME]: + elif token in [115]: self.state = 890 self.assignedGoto() pass @@ -6472,6 +6317,7 @@ def gotoStatement(self): class UnconditionalGotoContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6519,6 +6365,7 @@ def unconditionalGoto(self): class ComputedGotoContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6577,7 +6424,7 @@ def computedGoto(self): self.state = 899 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 898 self.match(Fortran77Parser.COMMA) @@ -6594,6 +6441,7 @@ def computedGoto(self): class LblRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6640,6 +6488,7 @@ def lblRef(self): class LabelListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6690,7 +6539,7 @@ def labelList(self): self.state = 910 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 906 self.match(Fortran77Parser.COMMA) self.state = 907 @@ -6709,6 +6558,7 @@ def labelList(self): class AssignedGotoContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6762,11 +6612,11 @@ def assignedGoto(self): self.state = 921 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA or _la==Fortran77Parser.LPAREN: + if _la==69 or _la==70: self.state = 915 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 914 self.match(Fortran77Parser.COMMA) @@ -6789,6 +6639,7 @@ def assignedGoto(self): class IfStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6882,6 +6733,7 @@ def ifStatement(self): class ArithmeticIfStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6946,6 +6798,7 @@ def arithmeticIfStatement(self): class LogicalIfStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6993,6 +6846,7 @@ def logicalIfStatement(self): class BlockIfStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7060,7 +6914,7 @@ def blockIfStatement(self): self.state = 948 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.ELSE: + if _la==24: self.state = 947 self.elseStatement() @@ -7077,6 +6931,7 @@ def blockIfStatement(self): class FirstIfBlockContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7134,7 +6989,7 @@ def firstIfBlock(self): self.state = 954 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.EOL: + if _la==119: self.state = 953 self.match(Fortran77Parser.EOL) @@ -7142,7 +6997,7 @@ def firstIfBlock(self): self.state = 959 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMENT: + while _la==116: self.state = 956 self.commentStatement() self.state = 961 @@ -7158,7 +7013,7 @@ def firstIfBlock(self): self.state = 966 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMENT: + while _la==116: self.state = 963 self.commentStatement() self.state = 968 @@ -7168,7 +7023,7 @@ def firstIfBlock(self): self.state = 971 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran77Parser.ENTRY) | (1 << Fortran77Parser.DIMENSION) | (1 << Fortran77Parser.REAL) | (1 << Fortran77Parser.EQUIVALENCE) | (1 << Fortran77Parser.COMMON) | (1 << Fortran77Parser.POINTER) | (1 << Fortran77Parser.IMPLICIT) | (1 << Fortran77Parser.CHARACTER) | (1 << Fortran77Parser.PARAMETER) | (1 << Fortran77Parser.EXTERNAL) | (1 << Fortran77Parser.INTRINSIC) | (1 << Fortran77Parser.SAVE) | (1 << Fortran77Parser.DATA) | (1 << Fortran77Parser.GO) | (1 << Fortran77Parser.GOTO) | (1 << Fortran77Parser.IF) | (1 << Fortran77Parser.DO) | (1 << Fortran77Parser.CONTINUE) | (1 << Fortran77Parser.STOP) | (1 << Fortran77Parser.PAUSE) | (1 << Fortran77Parser.WRITE) | (1 << Fortran77Parser.READ) | (1 << Fortran77Parser.PRINT) | (1 << Fortran77Parser.OPEN) | (1 << Fortran77Parser.LET) | (1 << Fortran77Parser.CALL) | (1 << Fortran77Parser.RETURN) | (1 << Fortran77Parser.CLOSE) | (1 << Fortran77Parser.DOUBLE) | (1 << Fortran77Parser.LABEL))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (Fortran77Parser.INQUIRE - 64)) | (1 << (Fortran77Parser.BACKSPACE - 64)) | (1 << (Fortran77Parser.ENDFILE - 64)) | (1 << (Fortran77Parser.REWIND - 64)) | (1 << (Fortran77Parser.LPAREN - 64)) | (1 << (Fortran77Parser.MINUS - 64)) | (1 << (Fortran77Parser.PLUS - 64)) | (1 << (Fortran77Parser.LNOT - 64)) | (1 << (Fortran77Parser.TRUE - 64)) | (1 << (Fortran77Parser.FALSE - 64)) | (1 << (Fortran77Parser.HOLLERITH - 64)) | (1 << (Fortran77Parser.COMPLEX - 64)) | (1 << (Fortran77Parser.INTEGER - 64)) | (1 << (Fortran77Parser.LOGICAL - 64)) | (1 << (Fortran77Parser.SCON - 64)) | (1 << (Fortran77Parser.RCON - 64)) | (1 << (Fortran77Parser.ICON - 64)) | (1 << (Fortran77Parser.NAME - 64)))) != 0)): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 349712217530244) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4450832061844559) != 0)): break except RecognitionException as re: @@ -7181,6 +7036,7 @@ def firstIfBlock(self): class ElseIfStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7248,11 +7104,11 @@ def elseIfStatement(self): self.state = 976 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.ELSEIF]: + if token in [26]: self.state = 973 self.match(Fortran77Parser.ELSEIF) pass - elif token in [Fortran77Parser.ELSE]: + elif token in [24]: self.state = 974 self.match(Fortran77Parser.ELSE) self.state = 975 @@ -7272,7 +7128,7 @@ def elseIfStatement(self): self.state = 983 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.EOL: + if _la==119: self.state = 982 self.match(Fortran77Parser.EOL) @@ -7286,7 +7142,7 @@ def elseIfStatement(self): self.state = 988 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran77Parser.ENTRY) | (1 << Fortran77Parser.DIMENSION) | (1 << Fortran77Parser.REAL) | (1 << Fortran77Parser.EQUIVALENCE) | (1 << Fortran77Parser.COMMON) | (1 << Fortran77Parser.POINTER) | (1 << Fortran77Parser.IMPLICIT) | (1 << Fortran77Parser.CHARACTER) | (1 << Fortran77Parser.PARAMETER) | (1 << Fortran77Parser.EXTERNAL) | (1 << Fortran77Parser.INTRINSIC) | (1 << Fortran77Parser.SAVE) | (1 << Fortran77Parser.DATA) | (1 << Fortran77Parser.GO) | (1 << Fortran77Parser.GOTO) | (1 << Fortran77Parser.IF) | (1 << Fortran77Parser.DO) | (1 << Fortran77Parser.CONTINUE) | (1 << Fortran77Parser.STOP) | (1 << Fortran77Parser.PAUSE) | (1 << Fortran77Parser.WRITE) | (1 << Fortran77Parser.READ) | (1 << Fortran77Parser.PRINT) | (1 << Fortran77Parser.OPEN) | (1 << Fortran77Parser.LET) | (1 << Fortran77Parser.CALL) | (1 << Fortran77Parser.RETURN) | (1 << Fortran77Parser.CLOSE) | (1 << Fortran77Parser.DOUBLE) | (1 << Fortran77Parser.LABEL))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (Fortran77Parser.INQUIRE - 64)) | (1 << (Fortran77Parser.BACKSPACE - 64)) | (1 << (Fortran77Parser.ENDFILE - 64)) | (1 << (Fortran77Parser.REWIND - 64)) | (1 << (Fortran77Parser.LPAREN - 64)) | (1 << (Fortran77Parser.MINUS - 64)) | (1 << (Fortran77Parser.PLUS - 64)) | (1 << (Fortran77Parser.LNOT - 64)) | (1 << (Fortran77Parser.TRUE - 64)) | (1 << (Fortran77Parser.FALSE - 64)) | (1 << (Fortran77Parser.HOLLERITH - 64)) | (1 << (Fortran77Parser.COMPLEX - 64)) | (1 << (Fortran77Parser.INTEGER - 64)) | (1 << (Fortran77Parser.LOGICAL - 64)) | (1 << (Fortran77Parser.SCON - 64)) | (1 << (Fortran77Parser.RCON - 64)) | (1 << (Fortran77Parser.ICON - 64)) | (1 << (Fortran77Parser.NAME - 64)))) != 0)): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 349712217530244) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4450832061844559) != 0)): break except RecognitionException as re: @@ -7299,6 +7155,7 @@ def elseIfStatement(self): class ElseStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7356,7 +7213,7 @@ def elseStatement(self): self.state = 992 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.EOL: + if _la==119: self.state = 991 self.match(Fortran77Parser.EOL) @@ -7364,7 +7221,7 @@ def elseStatement(self): self.state = 997 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMENT: + while _la==116: self.state = 994 self.commentStatement() self.state = 999 @@ -7380,7 +7237,7 @@ def elseStatement(self): self.state = 1004 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMENT: + while _la==116: self.state = 1001 self.commentStatement() self.state = 1006 @@ -7390,7 +7247,7 @@ def elseStatement(self): self.state = 1009 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran77Parser.ENTRY) | (1 << Fortran77Parser.DIMENSION) | (1 << Fortran77Parser.REAL) | (1 << Fortran77Parser.EQUIVALENCE) | (1 << Fortran77Parser.COMMON) | (1 << Fortran77Parser.POINTER) | (1 << Fortran77Parser.IMPLICIT) | (1 << Fortran77Parser.CHARACTER) | (1 << Fortran77Parser.PARAMETER) | (1 << Fortran77Parser.EXTERNAL) | (1 << Fortran77Parser.INTRINSIC) | (1 << Fortran77Parser.SAVE) | (1 << Fortran77Parser.DATA) | (1 << Fortran77Parser.GO) | (1 << Fortran77Parser.GOTO) | (1 << Fortran77Parser.IF) | (1 << Fortran77Parser.DO) | (1 << Fortran77Parser.CONTINUE) | (1 << Fortran77Parser.STOP) | (1 << Fortran77Parser.PAUSE) | (1 << Fortran77Parser.WRITE) | (1 << Fortran77Parser.READ) | (1 << Fortran77Parser.PRINT) | (1 << Fortran77Parser.OPEN) | (1 << Fortran77Parser.LET) | (1 << Fortran77Parser.CALL) | (1 << Fortran77Parser.RETURN) | (1 << Fortran77Parser.CLOSE) | (1 << Fortran77Parser.DOUBLE) | (1 << Fortran77Parser.LABEL))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (Fortran77Parser.INQUIRE - 64)) | (1 << (Fortran77Parser.BACKSPACE - 64)) | (1 << (Fortran77Parser.ENDFILE - 64)) | (1 << (Fortran77Parser.REWIND - 64)) | (1 << (Fortran77Parser.LPAREN - 64)) | (1 << (Fortran77Parser.MINUS - 64)) | (1 << (Fortran77Parser.PLUS - 64)) | (1 << (Fortran77Parser.LNOT - 64)) | (1 << (Fortran77Parser.TRUE - 64)) | (1 << (Fortran77Parser.FALSE - 64)) | (1 << (Fortran77Parser.HOLLERITH - 64)) | (1 << (Fortran77Parser.COMPLEX - 64)) | (1 << (Fortran77Parser.INTEGER - 64)) | (1 << (Fortran77Parser.LOGICAL - 64)) | (1 << (Fortran77Parser.SCON - 64)) | (1 << (Fortran77Parser.RCON - 64)) | (1 << (Fortran77Parser.ICON - 64)) | (1 << (Fortran77Parser.NAME - 64)))) != 0)): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 349712217530244) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4450832061844559) != 0)): break except RecognitionException as re: @@ -7403,6 +7260,7 @@ def elseStatement(self): class EndIfStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7446,11 +7304,11 @@ def endIfStatement(self): self.state = 1014 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.ENDIF]: + if token in [25]: self.state = 1011 self.match(Fortran77Parser.ENDIF) pass - elif token in [Fortran77Parser.END]: + elif token in [6]: self.state = 1012 self.match(Fortran77Parser.END) self.state = 1013 @@ -7469,6 +7327,7 @@ def endIfStatement(self): class DoStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7516,11 +7375,11 @@ def doStatement(self): self.state = 1019 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.ICON]: + if token in [114]: self.state = 1017 self.doWithLabel() pass - elif token in [Fortran77Parser.NAME]: + elif token in [115]: self.state = 1018 self.doWithEndDo() pass @@ -7537,6 +7396,7 @@ def doStatement(self): class DoVarArgsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7602,7 +7462,7 @@ def doVarArgs(self): self.state = 1028 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 1026 self.match(Fortran77Parser.COMMA) self.state = 1027 @@ -7619,6 +7479,7 @@ def doVarArgs(self): class DoWithLabelContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7681,7 +7542,7 @@ def doWithLabel(self): self.state = 1032 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 1031 self.match(Fortran77Parser.COMMA) @@ -7691,7 +7552,7 @@ def doWithLabel(self): self.state = 1036 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.EOL: + if _la==119: self.state = 1035 self.match(Fortran77Parser.EOL) @@ -7701,7 +7562,7 @@ def doWithLabel(self): self.state = 1040 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.EOL: + if _la==119: self.state = 1039 self.match(Fortran77Parser.EOL) @@ -7718,6 +7579,7 @@ def doWithLabel(self): class DoBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7780,6 +7642,7 @@ def doBody(self): class DoWithEndDoContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7835,7 +7698,7 @@ def doWithEndDo(self): self.state = 1051 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.EOL: + if _la==119: self.state = 1050 self.match(Fortran77Parser.EOL) @@ -7845,7 +7708,7 @@ def doWithEndDo(self): self.state = 1055 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.EOL: + if _la==119: self.state = 1054 self.match(Fortran77Parser.EOL) @@ -7862,6 +7725,7 @@ def doWithEndDo(self): class EnddoStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7905,11 +7769,11 @@ def enddoStatement(self): self.state = 1062 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.ENDDO]: + if token in [30]: self.state = 1059 self.match(Fortran77Parser.ENDDO) pass - elif token in [Fortran77Parser.END]: + elif token in [6]: self.state = 1060 self.match(Fortran77Parser.END) self.state = 1061 @@ -7928,6 +7792,7 @@ def enddoStatement(self): class ContinueStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7973,7 +7838,7 @@ def continueStatement(self): self.state = 1067 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.ICON: + while _la==114: self.state = 1064 self.lblRef() self.state = 1069 @@ -7992,6 +7857,7 @@ def continueStatement(self): class StopStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8038,10 +7904,10 @@ def stopStatement(self): self.state = 1074 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.HOLLERITH or _la==Fortran77Parser.ICON: + if _la==97 or _la==114: self.state = 1073 _la = self._input.LA(1) - if not(_la==Fortran77Parser.HOLLERITH or _la==Fortran77Parser.ICON): + if not(_la==97 or _la==114): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -8058,6 +7924,7 @@ def stopStatement(self): class PauseStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8103,7 +7970,7 @@ def pauseStatement(self): self.match(Fortran77Parser.PAUSE) self.state = 1077 _la = self._input.LA(1) - if not(_la==Fortran77Parser.HOLLERITH or _la==Fortran77Parser.ICON): + if not(_la==97 or _la==114): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -8118,6 +7985,7 @@ def pauseStatement(self): class WriteStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8187,7 +8055,7 @@ def writeStatement(self): self.state = 1091 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.REAL or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Fortran77Parser.COMMA - 69)) | (1 << (Fortran77Parser.LPAREN - 69)) | (1 << (Fortran77Parser.MINUS - 69)) | (1 << (Fortran77Parser.PLUS - 69)) | (1 << (Fortran77Parser.LNOT - 69)) | (1 << (Fortran77Parser.TRUE - 69)) | (1 << (Fortran77Parser.FALSE - 69)) | (1 << (Fortran77Parser.HOLLERITH - 69)) | (1 << (Fortran77Parser.SCON - 69)) | (1 << (Fortran77Parser.RCON - 69)) | (1 << (Fortran77Parser.ICON - 69)) | (1 << (Fortran77Parser.NAME - 69)))) != 0): + if _la==8 or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 131941676352099) != 0): self.state = 1087 self._errHandler.sync(self) _la = self._input.LA(1) @@ -8195,7 +8063,7 @@ def writeStatement(self): self.state = 1084 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 1083 self.match(Fortran77Parser.COMMA) @@ -8205,7 +8073,7 @@ def writeStatement(self): self.state = 1089 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==Fortran77Parser.REAL or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Fortran77Parser.COMMA - 69)) | (1 << (Fortran77Parser.LPAREN - 69)) | (1 << (Fortran77Parser.MINUS - 69)) | (1 << (Fortran77Parser.PLUS - 69)) | (1 << (Fortran77Parser.LNOT - 69)) | (1 << (Fortran77Parser.TRUE - 69)) | (1 << (Fortran77Parser.FALSE - 69)) | (1 << (Fortran77Parser.HOLLERITH - 69)) | (1 << (Fortran77Parser.SCON - 69)) | (1 << (Fortran77Parser.RCON - 69)) | (1 << (Fortran77Parser.ICON - 69)) | (1 << (Fortran77Parser.NAME - 69)))) != 0)): + if not (_la==8 or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 131941676352099) != 0)): break @@ -8220,6 +8088,7 @@ def writeStatement(self): class ReadStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8280,7 +8149,7 @@ def readStatement(self): self.state = 1101 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 1097 self._errHandler.sync(self) _la = self._input.LA(1) @@ -8292,7 +8161,7 @@ def readStatement(self): self.state = 1099 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==Fortran77Parser.COMMA): + if not (_la==69): break @@ -8307,6 +8176,7 @@ def readStatement(self): class PrintStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8367,7 +8237,7 @@ def printStatement(self): self.state = 1111 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 1107 self._errHandler.sync(self) _la = self._input.LA(1) @@ -8379,7 +8249,7 @@ def printStatement(self): self.state = 1109 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==Fortran77Parser.COMMA): + if not (_la==69): break @@ -8394,6 +8264,7 @@ def printStatement(self): class AssignmentStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8452,6 +8323,7 @@ def assignmentStatement(self): class ControlInfoListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8502,7 +8374,7 @@ def controlInfoList(self): self.state = 1122 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 1118 self.match(Fortran77Parser.COMMA) self.state = 1119 @@ -8521,6 +8393,7 @@ def controlInfoList(self): class ControlErrSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8573,11 +8446,11 @@ def controlErrSpec(self): self.state = 1129 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.ICON]: + if token in [114]: self.state = 1127 self.lblRef() pass - elif token in [Fortran77Parser.NAME]: + elif token in [115]: self.state = 1128 self.match(Fortran77Parser.NAME) pass @@ -8594,6 +8467,7 @@ def controlErrSpec(self): class ControlInfoListItemContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8691,7 +8565,7 @@ def controlInfoListItem(self): self.enterOuterAlt(localctx, 2) self.state = 1132 _la = self._input.LA(1) - if not(_la==Fortran77Parser.HOLLERITH or _la==Fortran77Parser.SCON): + if not(_la==97 or _la==112): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -8765,6 +8639,7 @@ def controlInfoListItem(self): class IoListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8868,6 +8743,7 @@ def ioList(self): class IoListItemContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8958,6 +8834,7 @@ def ioListItem(self): class IoImpliedDoListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9038,7 +8915,7 @@ def ioImpliedDoList(self): self.state = 1195 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COMMA: + if _la==69: self.state = 1193 self.match(Fortran77Parser.COMMA) self.state = 1194 @@ -9057,6 +8934,7 @@ def ioImpliedDoList(self): class OpenStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9120,7 +8998,7 @@ def openStatement(self): self.state = 1206 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 1202 self.match(Fortran77Parser.COMMA) self.state = 1203 @@ -9141,6 +9019,7 @@ def openStatement(self): class OpenControlContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9233,12 +9112,12 @@ def openControl(self): self.state = 1248 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.ICON, Fortran77Parser.NAME, Fortran77Parser.STAR]: + if token in [70, 74, 75, 114, 115, 117]: self.enterOuterAlt(localctx, 1) self.state = 1211 self.unitIdentifier() pass - elif token in [Fortran77Parser.UNIT]: + elif token in [37]: self.enterOuterAlt(localctx, 2) self.state = 1212 self.controlUnit() @@ -9247,12 +9126,12 @@ def openControl(self): self.state = 1214 self.unitIdentifier() pass - elif token in [Fortran77Parser.ERR]: + elif token in [38]: self.enterOuterAlt(localctx, 3) self.state = 1216 self.controlErrSpec() pass - elif token in [Fortran77Parser.FILE]: + elif token in [49]: self.enterOuterAlt(localctx, 4) self.state = 1217 self.controlFile() @@ -9261,7 +9140,7 @@ def openControl(self): self.state = 1219 self.characterExpression() pass - elif token in [Fortran77Parser.STATUS]: + elif token in [50]: self.enterOuterAlt(localctx, 5) self.state = 1221 self.controlStatus() @@ -9270,16 +9149,16 @@ def openControl(self): self.state = 1223 self.characterExpression() pass - elif token in [Fortran77Parser.ACCESS, Fortran77Parser.POSITION]: + elif token in [51, 52]: self.enterOuterAlt(localctx, 6) self.state = 1227 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.ACCESS]: + if token in [51]: self.state = 1225 self.controlAccess() pass - elif token in [Fortran77Parser.POSITION]: + elif token in [52]: self.state = 1226 self.controlPosition() pass @@ -9291,7 +9170,7 @@ def openControl(self): self.state = 1230 self.characterExpression() pass - elif token in [Fortran77Parser.FORM]: + elif token in [53]: self.enterOuterAlt(localctx, 7) self.state = 1232 self.controlForm() @@ -9300,7 +9179,7 @@ def openControl(self): self.state = 1234 self.characterExpression() pass - elif token in [Fortran77Parser.RECL]: + elif token in [54]: self.enterOuterAlt(localctx, 8) self.state = 1236 self.controlRecl() @@ -9309,7 +9188,7 @@ def openControl(self): self.state = 1238 self.integerExpr() pass - elif token in [Fortran77Parser.BLANK]: + elif token in [55]: self.enterOuterAlt(localctx, 9) self.state = 1240 self.controlBlank() @@ -9318,7 +9197,7 @@ def openControl(self): self.state = 1242 self.characterExpression() pass - elif token in [Fortran77Parser.IOSTART]: + elif token in [46]: self.enterOuterAlt(localctx, 10) self.state = 1244 self.controlIostat() @@ -9340,6 +9219,7 @@ def openControl(self): class ControlFmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9386,6 +9266,7 @@ def controlFmt(self): class ControlUnitContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9432,6 +9313,7 @@ def controlUnit(self): class ControlRecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9478,6 +9360,7 @@ def controlRec(self): class ControlEndContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9524,6 +9407,7 @@ def controlEnd(self): class ControlErrContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9570,6 +9454,7 @@ def controlErr(self): class ControlIostatContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9616,6 +9501,7 @@ def controlIostat(self): class ControlFileContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9662,6 +9548,7 @@ def controlFile(self): class ControlStatusContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9708,6 +9595,7 @@ def controlStatus(self): class ControlAccessContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9754,6 +9642,7 @@ def controlAccess(self): class ControlPositionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9800,6 +9689,7 @@ def controlPosition(self): class ControlFormContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9846,6 +9736,7 @@ def controlForm(self): class ControlReclContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9892,6 +9783,7 @@ def controlRecl(self): class ControlBlankContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9938,6 +9830,7 @@ def controlBlank(self): class ControlExistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9984,6 +9877,7 @@ def controlExist(self): class ControlOpenedContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10030,6 +9924,7 @@ def controlOpened(self): class ControlNumberContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10076,6 +9971,7 @@ def controlNumber(self): class ControlNamedContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10122,6 +10018,7 @@ def controlNamed(self): class ControlNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10168,6 +10065,7 @@ def controlName(self): class ControlSequentialContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10214,6 +10112,7 @@ def controlSequential(self): class ControlDirectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10260,6 +10159,7 @@ def controlDirect(self): class ControlFormattedContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10306,6 +10206,7 @@ def controlFormatted(self): class ControlUnformattedContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10352,6 +10253,7 @@ def controlUnformatted(self): class ControlNextrecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10398,6 +10300,7 @@ def controlNextrec(self): class CloseStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10461,7 +10364,7 @@ def closeStatement(self): self.state = 1303 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 1299 self.match(Fortran77Parser.COMMA) self.state = 1300 @@ -10482,6 +10385,7 @@ def closeStatement(self): class CloseControlContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10546,12 +10450,12 @@ def closeControl(self): self.state = 1322 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.ICON, Fortran77Parser.NAME, Fortran77Parser.STAR]: + if token in [70, 74, 75, 114, 115, 117]: self.enterOuterAlt(localctx, 1) self.state = 1308 self.unitIdentifier() pass - elif token in [Fortran77Parser.UNIT]: + elif token in [37]: self.enterOuterAlt(localctx, 2) self.state = 1309 self.controlUnit() @@ -10560,12 +10464,12 @@ def closeControl(self): self.state = 1311 self.unitIdentifier() pass - elif token in [Fortran77Parser.ERR]: + elif token in [38]: self.enterOuterAlt(localctx, 3) self.state = 1313 self.controlErrSpec() pass - elif token in [Fortran77Parser.STATUS]: + elif token in [50]: self.enterOuterAlt(localctx, 4) self.state = 1314 self.controlStatus() @@ -10574,7 +10478,7 @@ def closeControl(self): self.state = 1316 self.characterExpression() pass - elif token in [Fortran77Parser.IOSTART]: + elif token in [46]: self.enterOuterAlt(localctx, 5) self.state = 1318 self.controlIostat() @@ -10596,6 +10500,7 @@ def closeControl(self): class InquireStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10659,7 +10564,7 @@ def inquireStatement(self): self.state = 1331 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 1327 self.match(Fortran77Parser.COMMA) self.state = 1328 @@ -10680,6 +10585,7 @@ def inquireStatement(self): class InquireControlContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10930,6 +10836,7 @@ def inquireControl(self): class BackspaceStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10982,6 +10889,7 @@ def backspaceStatement(self): class EndfileStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11034,6 +10942,7 @@ def endfileStatement(self): class RewindStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11086,6 +10995,7 @@ def rewindStatement(self): class BerFinishContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11163,7 +11073,7 @@ def berFinish(self): self.state = 1386 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 1382 self.match(Fortran77Parser.COMMA) self.state = 1383 @@ -11187,6 +11097,7 @@ def berFinish(self): class BerFinishItemContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11243,12 +11154,12 @@ def berFinishItem(self): self.state = 1403 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.ICON, Fortran77Parser.NAME, Fortran77Parser.STAR]: + if token in [70, 74, 75, 114, 115, 117]: self.enterOuterAlt(localctx, 1) self.state = 1393 self.unitIdentifier() pass - elif token in [Fortran77Parser.UNIT]: + elif token in [37]: self.enterOuterAlt(localctx, 2) self.state = 1394 self.controlUnit() @@ -11257,12 +11168,12 @@ def berFinishItem(self): self.state = 1396 self.unitIdentifier() pass - elif token in [Fortran77Parser.ERR]: + elif token in [38]: self.enterOuterAlt(localctx, 3) self.state = 1398 self.controlErrSpec() pass - elif token in [Fortran77Parser.IOSTART]: + elif token in [46]: self.enterOuterAlt(localctx, 4) self.state = 1399 self.controlIostat() @@ -11284,6 +11195,7 @@ def berFinishItem(self): class UnitIdentifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11324,12 +11236,12 @@ def unitIdentifier(self): self.state = 1407 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.ICON, Fortran77Parser.NAME]: + if token in [70, 74, 75, 114, 115]: self.enterOuterAlt(localctx, 1) self.state = 1405 self.iexpr() pass - elif token in [Fortran77Parser.STAR]: + elif token in [117]: self.enterOuterAlt(localctx, 2) self.state = 1406 self.match(Fortran77Parser.STAR) @@ -11347,6 +11259,7 @@ def unitIdentifier(self): class FormatIdentifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11394,22 +11307,22 @@ def formatIdentifier(self): self.state = 1412 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.HOLLERITH, Fortran77Parser.SCON]: + if token in [97, 112]: self.enterOuterAlt(localctx, 1) self.state = 1409 _la = self._input.LA(1) - if not(_la==Fortran77Parser.HOLLERITH or _la==Fortran77Parser.SCON): + if not(_la==97 or _la==112): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass - elif token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.ICON, Fortran77Parser.NAME]: + elif token in [70, 74, 75, 114, 115]: self.enterOuterAlt(localctx, 2) self.state = 1410 self.iexpr() pass - elif token in [Fortran77Parser.STAR]: + elif token in [117]: self.enterOuterAlt(localctx, 3) self.state = 1411 self.match(Fortran77Parser.STAR) @@ -11427,6 +11340,7 @@ def formatIdentifier(self): class FormatStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11489,6 +11403,7 @@ def formatStatement(self): class FmtSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11544,17 +11459,17 @@ def fmtSpec(self): self.state = 1424 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.XCON, Fortran77Parser.PCON, Fortran77Parser.FCON, Fortran77Parser.HOLLERITH, Fortran77Parser.SCON, Fortran77Parser.ICON, Fortran77Parser.NAME]: + if token in [70, 74, 75, 93, 94, 95, 97, 112, 114, 115]: self.state = 1419 self.formatedit() pass - elif token in [Fortran77Parser.DOLLAR, Fortran77Parser.COLON, Fortran77Parser.DIV]: + elif token in [68, 72, 76]: self.state = 1420 self.formatsep() self.state = 1422 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.MINUS - 70)) | (1 << (Fortran77Parser.PLUS - 70)) | (1 << (Fortran77Parser.XCON - 70)) | (1 << (Fortran77Parser.PCON - 70)) | (1 << (Fortran77Parser.FCON - 70)) | (1 << (Fortran77Parser.HOLLERITH - 70)) | (1 << (Fortran77Parser.SCON - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)))) != 0): + if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 57174797582385) != 0): self.state = 1421 self.formatedit() @@ -11566,39 +11481,39 @@ def fmtSpec(self): self.state = 1440 self._errHandler.sync(self) _la = self._input.LA(1) - while ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (Fortran77Parser.DOLLAR - 68)) | (1 << (Fortran77Parser.COMMA - 68)) | (1 << (Fortran77Parser.COLON - 68)) | (1 << (Fortran77Parser.DIV - 68)))) != 0): + while ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 275) != 0): self.state = 1438 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.DOLLAR, Fortran77Parser.COLON, Fortran77Parser.DIV]: + if token in [68, 72, 76]: self.state = 1426 self.formatsep() self.state = 1428 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.MINUS - 70)) | (1 << (Fortran77Parser.PLUS - 70)) | (1 << (Fortran77Parser.XCON - 70)) | (1 << (Fortran77Parser.PCON - 70)) | (1 << (Fortran77Parser.FCON - 70)) | (1 << (Fortran77Parser.HOLLERITH - 70)) | (1 << (Fortran77Parser.SCON - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)))) != 0): + if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 57174797582385) != 0): self.state = 1427 self.formatedit() pass - elif token in [Fortran77Parser.COMMA]: + elif token in [69]: self.state = 1430 self.match(Fortran77Parser.COMMA) self.state = 1436 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.XCON, Fortran77Parser.PCON, Fortran77Parser.FCON, Fortran77Parser.HOLLERITH, Fortran77Parser.SCON, Fortran77Parser.ICON, Fortran77Parser.NAME]: + if token in [70, 74, 75, 93, 94, 95, 97, 112, 114, 115]: self.state = 1431 self.formatedit() pass - elif token in [Fortran77Parser.DOLLAR, Fortran77Parser.COLON, Fortran77Parser.DIV]: + elif token in [68, 72, 76]: self.state = 1432 self.formatsep() self.state = 1434 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.MINUS - 70)) | (1 << (Fortran77Parser.PLUS - 70)) | (1 << (Fortran77Parser.XCON - 70)) | (1 << (Fortran77Parser.PCON - 70)) | (1 << (Fortran77Parser.FCON - 70)) | (1 << (Fortran77Parser.HOLLERITH - 70)) | (1 << (Fortran77Parser.SCON - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)))) != 0): + if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 57174797582385) != 0): self.state = 1433 self.formatedit() @@ -11625,6 +11540,7 @@ def fmtSpec(self): class FormatsepContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11668,7 +11584,7 @@ def formatsep(self): self.enterOuterAlt(localctx, 1) self.state = 1443 _la = self._input.LA(1) - if not(((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (Fortran77Parser.DOLLAR - 68)) | (1 << (Fortran77Parser.COLON - 68)) | (1 << (Fortran77Parser.DIV - 68)))) != 0)): + if not(((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 273) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -11683,6 +11599,7 @@ def formatsep(self): class FormateditContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11736,32 +11653,32 @@ def formatedit(self): self.state = 1459 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.XCON]: + if token in [93]: self.enterOuterAlt(localctx, 1) self.state = 1445 self.match(Fortran77Parser.XCON) pass - elif token in [Fortran77Parser.LPAREN, Fortran77Parser.FCON, Fortran77Parser.HOLLERITH, Fortran77Parser.SCON, Fortran77Parser.NAME]: + elif token in [70, 95, 97, 112, 115]: self.enterOuterAlt(localctx, 2) self.state = 1446 self.editElement() pass - elif token in [Fortran77Parser.ICON]: + elif token in [114]: self.enterOuterAlt(localctx, 3) self.state = 1447 self.match(Fortran77Parser.ICON) self.state = 1448 self.editElement() pass - elif token in [Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.PCON]: + elif token in [74, 75, 94]: self.enterOuterAlt(localctx, 4) self.state = 1450 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS: + if _la==74 or _la==75: self.state = 1449 _la = self._input.LA(1) - if not(_la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS): + if not(_la==74 or _la==75): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -11773,11 +11690,11 @@ def formatedit(self): self.state = 1457 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.FCON - 70)) | (1 << (Fortran77Parser.HOLLERITH - 70)) | (1 << (Fortran77Parser.SCON - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)))) != 0): + if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 57174772416513) != 0): self.state = 1454 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.ICON: + if _la==114: self.state = 1453 self.match(Fortran77Parser.ICON) @@ -11800,6 +11717,7 @@ def formatedit(self): class EditElementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11856,17 +11774,17 @@ def editElement(self): self.state = 1466 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.FCON, Fortran77Parser.HOLLERITH, Fortran77Parser.SCON, Fortran77Parser.NAME]: + if token in [95, 97, 112, 115]: self.enterOuterAlt(localctx, 1) self.state = 1461 _la = self._input.LA(1) - if not(((((_la - 95)) & ~0x3f) == 0 and ((1 << (_la - 95)) & ((1 << (Fortran77Parser.FCON - 95)) | (1 << (Fortran77Parser.HOLLERITH - 95)) | (1 << (Fortran77Parser.SCON - 95)) | (1 << (Fortran77Parser.NAME - 95)))) != 0)): + if not(((((_la - 95)) & ~0x3f) == 0 and ((1 << (_la - 95)) & 1179653) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass - elif token in [Fortran77Parser.LPAREN]: + elif token in [70]: self.enterOuterAlt(localctx, 2) self.state = 1462 self.match(Fortran77Parser.LPAREN) @@ -11888,6 +11806,7 @@ def editElement(self): class StatementFunctionStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11951,6 +11870,7 @@ def statementFunctionStatement(self): class SfArgsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12013,6 +11933,7 @@ def sfArgs(self): class CallStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12065,6 +11986,7 @@ def callStatement(self): class SubroutineCallContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12115,13 +12037,13 @@ def subroutineCall(self): self.state = 1487 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.LPAREN: + if _la==70: self.state = 1482 self.match(Fortran77Parser.LPAREN) self.state = 1484 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.REAL or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.MINUS - 70)) | (1 << (Fortran77Parser.PLUS - 70)) | (1 << (Fortran77Parser.LNOT - 70)) | (1 << (Fortran77Parser.TRUE - 70)) | (1 << (Fortran77Parser.FALSE - 70)) | (1 << (Fortran77Parser.HOLLERITH - 70)) | (1 << (Fortran77Parser.SCON - 70)) | (1 << (Fortran77Parser.RCON - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)) | (1 << (Fortran77Parser.STAR - 70)))) != 0): + if _la==8 or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 206708326531377) != 0): self.state = 1483 self.callArgumentList() @@ -12140,6 +12062,7 @@ def subroutineCall(self): class CallArgumentListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12190,7 +12113,7 @@ def callArgumentList(self): self.state = 1494 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 1490 self.match(Fortran77Parser.COMMA) self.state = 1491 @@ -12209,6 +12132,7 @@ def callArgumentList(self): class CallArgumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12253,12 +12177,12 @@ def callArgument(self): self.state = 1500 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.REAL, Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.LNOT, Fortran77Parser.TRUE, Fortran77Parser.FALSE, Fortran77Parser.HOLLERITH, Fortran77Parser.SCON, Fortran77Parser.RCON, Fortran77Parser.ICON, Fortran77Parser.NAME]: + if token in [8, 70, 74, 75, 78, 91, 92, 97, 112, 113, 114, 115]: self.enterOuterAlt(localctx, 1) self.state = 1497 self.expression() pass - elif token in [Fortran77Parser.STAR]: + elif token in [117]: self.enterOuterAlt(localctx, 2) self.state = 1498 self.match(Fortran77Parser.STAR) @@ -12278,6 +12202,7 @@ def callArgument(self): class ReturnStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12322,7 +12247,7 @@ def returnStatement(self): self.state = 1504 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.MINUS - 70)) | (1 << (Fortran77Parser.PLUS - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)))) != 0): + if ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 52776558133297) != 0): self.state = 1503 self.integerExpr() @@ -12337,6 +12262,7 @@ def returnStatement(self): class ExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12384,7 +12310,7 @@ def expression(self): self.state = 1509 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.COLON: + if _la==72: self.state = 1507 self.match(Fortran77Parser.COLON) self.state = 1508 @@ -12401,6 +12327,7 @@ def expression(self): class NcExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12452,7 +12379,7 @@ def ncExpr(self): self.state = 1517 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.DIV: + while _la==76: self.state = 1512 self.concatOp() self.state = 1513 @@ -12471,6 +12398,7 @@ def ncExpr(self): class Lexpr0Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12527,10 +12455,10 @@ def lexpr0(self): self.state = 1525 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.EQV or _la==Fortran77Parser.NEQV: + while _la==81 or _la==82: self.state = 1521 _la = self._input.LA(1) - if not(_la==Fortran77Parser.EQV or _la==Fortran77Parser.NEQV): + if not(_la==81 or _la==82): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -12551,6 +12479,7 @@ def lexpr0(self): class Lexpr1Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12601,7 +12530,7 @@ def lexpr1(self): self.state = 1533 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.LOR: + while _la==80: self.state = 1529 self.match(Fortran77Parser.LOR) self.state = 1530 @@ -12620,6 +12549,7 @@ def lexpr1(self): class Lexpr2Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12670,7 +12600,7 @@ def lexpr2(self): self.state = 1541 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.LAND: + while _la==79: self.state = 1537 self.match(Fortran77Parser.LAND) self.state = 1538 @@ -12689,6 +12619,7 @@ def lexpr2(self): class Lexpr3Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12733,14 +12664,14 @@ def lexpr3(self): self.state = 1547 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LNOT]: + if token in [78]: self.enterOuterAlt(localctx, 1) self.state = 1544 self.match(Fortran77Parser.LNOT) self.state = 1545 self.lexpr3() pass - elif token in [Fortran77Parser.REAL, Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.TRUE, Fortran77Parser.FALSE, Fortran77Parser.HOLLERITH, Fortran77Parser.SCON, Fortran77Parser.RCON, Fortran77Parser.ICON, Fortran77Parser.NAME]: + elif token in [8, 70, 74, 75, 91, 92, 97, 112, 113, 114, 115]: self.enterOuterAlt(localctx, 2) self.state = 1546 self.lexpr4() @@ -12758,6 +12689,7 @@ def lexpr3(self): class Lexpr4Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12820,10 +12752,10 @@ def lexpr4(self): self.state = 1552 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & ((1 << (Fortran77Parser.LT - 85)) | (1 << (Fortran77Parser.LE - 85)) | (1 << (Fortran77Parser.GT - 85)) | (1 << (Fortran77Parser.GE - 85)) | (1 << (Fortran77Parser.NE - 85)) | (1 << (Fortran77Parser.EQ - 85)))) != 0): + if ((((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 63) != 0): self.state = 1550 _la = self._input.LA(1) - if not(((((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & ((1 << (Fortran77Parser.LT - 85)) | (1 << (Fortran77Parser.LE - 85)) | (1 << (Fortran77Parser.GT - 85)) | (1 << (Fortran77Parser.GE - 85)) | (1 << (Fortran77Parser.NE - 85)) | (1 << (Fortran77Parser.EQ - 85)))) != 0)): + if not(((((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 63) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -12842,6 +12774,7 @@ def lexpr4(self): class Aexpr0Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12902,7 +12835,7 @@ def aexpr0(self): if _alt==1: self.state = 1555 _la = self._input.LA(1) - if not(_la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS): + if not(_la==74 or _la==75): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -12923,6 +12856,7 @@ def aexpr0(self): class Aexpr1Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12983,7 +12917,7 @@ def aexpr1(self): if _alt==1: self.state = 1563 _la = self._input.LA(1) - if not(_la==Fortran77Parser.DIV or _la==Fortran77Parser.STAR): + if not(_la==76 or _la==117): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13004,6 +12938,7 @@ def aexpr1(self): class Aexpr2Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13055,10 +12990,10 @@ def aexpr2(self): self.state = 1573 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS: + while _la==74 or _la==75: self.state = 1570 _la = self._input.LA(1) - if not(_la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS): + if not(_la==74 or _la==75): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13079,6 +13014,7 @@ def aexpr2(self): class Aexpr3Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13129,7 +13065,7 @@ def aexpr3(self): self.state = 1583 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.POWER: + while _la==77: self.state = 1579 self.match(Fortran77Parser.POWER) self.state = 1580 @@ -13148,6 +13084,7 @@ def aexpr3(self): class Aexpr4Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13220,7 +13157,7 @@ def aexpr4(self): self.enterOuterAlt(localctx, 2) self.state = 1587 _la = self._input.LA(1) - if not(_la==Fortran77Parser.HOLLERITH or _la==Fortran77Parser.SCON): + if not(_la==97 or _la==112): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13260,6 +13197,7 @@ def aexpr4(self): class IexprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13320,7 +13258,7 @@ def iexpr(self): if _alt==1: self.state = 1597 _la = self._input.LA(1) - if not(_la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS): + if not(_la==74 or _la==75): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13341,6 +13279,7 @@ def iexpr(self): class IexprCodeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13397,10 +13336,10 @@ def iexprCode(self): self.state = 1609 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS: + while _la==74 or _la==75: self.state = 1605 _la = self._input.LA(1) - if not(_la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS): + if not(_la==74 or _la==75): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13421,6 +13360,7 @@ def iexprCode(self): class Iexpr1Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13481,7 +13421,7 @@ def iexpr1(self): if _alt==1: self.state = 1613 _la = self._input.LA(1) - if not(_la==Fortran77Parser.DIV or _la==Fortran77Parser.STAR): + if not(_la==76 or _la==117): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13502,6 +13442,7 @@ def iexpr1(self): class Iexpr2Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13553,10 +13494,10 @@ def iexpr2(self): self.state = 1623 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS: + while _la==74 or _la==75: self.state = 1620 _la = self._input.LA(1) - if not(_la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS): + if not(_la==74 or _la==75): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13577,6 +13518,7 @@ def iexpr2(self): class Iexpr3Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13625,7 +13567,7 @@ def iexpr3(self): self.state = 1631 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.POWER: + if _la==77: self.state = 1629 self.match(Fortran77Parser.POWER) self.state = 1630 @@ -13642,6 +13584,7 @@ def iexpr3(self): class Iexpr4Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13692,17 +13635,17 @@ def iexpr4(self): self.state = 1639 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.ICON]: + if token in [114]: self.enterOuterAlt(localctx, 1) self.state = 1633 self.match(Fortran77Parser.ICON) pass - elif token in [Fortran77Parser.NAME]: + elif token in [115]: self.enterOuterAlt(localctx, 2) self.state = 1634 self.varRefCode() pass - elif token in [Fortran77Parser.LPAREN]: + elif token in [70]: self.enterOuterAlt(localctx, 3) self.state = 1635 self.match(Fortran77Parser.LPAREN) @@ -13724,6 +13667,7 @@ def iexpr4(self): class ConstantExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13771,6 +13715,7 @@ def constantExpr(self): class ArithmeticExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13818,6 +13763,7 @@ def arithmeticExpression(self): class IntegerExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13865,6 +13811,7 @@ def integerExpr(self): class IntRealDpExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13912,6 +13859,7 @@ def intRealDpExpr(self): class ArithmeticConstExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13959,6 +13907,7 @@ def arithmeticConstExpr(self): class IntConstantExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14006,6 +13955,7 @@ def intConstantExpr(self): class CharacterExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14053,6 +14003,7 @@ def characterExpression(self): class ConcatOpContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14104,6 +14055,7 @@ def concatOp(self): class LogicalExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14151,6 +14103,7 @@ def logicalExpression(self): class LogicalConstExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14198,6 +14151,7 @@ def logicalConstExpr(self): class ArrayElementNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14261,7 +14215,7 @@ def arrayElementName(self): self.state = 1669 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 1665 self.match(Fortran77Parser.COMMA) self.state = 1666 @@ -14282,6 +14236,7 @@ def arrayElementName(self): class SubscriptsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14338,13 +14293,13 @@ def subscripts(self): self.state = 1683 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.REAL or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.MINUS - 70)) | (1 << (Fortran77Parser.PLUS - 70)) | (1 << (Fortran77Parser.LNOT - 70)) | (1 << (Fortran77Parser.TRUE - 70)) | (1 << (Fortran77Parser.FALSE - 70)) | (1 << (Fortran77Parser.HOLLERITH - 70)) | (1 << (Fortran77Parser.SCON - 70)) | (1 << (Fortran77Parser.RCON - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)))) != 0): + if _la==8 or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 65970838176049) != 0): self.state = 1675 self.expression() self.state = 1680 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran77Parser.COMMA: + while _la==69: self.state = 1676 self.match(Fortran77Parser.COMMA) self.state = 1677 @@ -14367,6 +14322,7 @@ def subscripts(self): class VarRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14415,7 +14371,7 @@ def varRef(self): self.enterOuterAlt(localctx, 1) self.state = 1687 _la = self._input.LA(1) - if not(_la==Fortran77Parser.REAL or _la==Fortran77Parser.NAME): + if not(_la==8 or _la==115): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -14446,6 +14402,7 @@ def varRef(self): class VarRefCodeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14516,6 +14473,7 @@ def varRefCode(self): class SubstringAppContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14569,7 +14527,7 @@ def substringApp(self): self.state = 1703 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.REAL or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.MINUS - 70)) | (1 << (Fortran77Parser.PLUS - 70)) | (1 << (Fortran77Parser.LNOT - 70)) | (1 << (Fortran77Parser.TRUE - 70)) | (1 << (Fortran77Parser.FALSE - 70)) | (1 << (Fortran77Parser.HOLLERITH - 70)) | (1 << (Fortran77Parser.SCON - 70)) | (1 << (Fortran77Parser.RCON - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)))) != 0): + if _la==8 or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 65970838176049) != 0): self.state = 1702 self.ncExpr() @@ -14579,7 +14537,7 @@ def substringApp(self): self.state = 1707 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.REAL or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (Fortran77Parser.LPAREN - 70)) | (1 << (Fortran77Parser.MINUS - 70)) | (1 << (Fortran77Parser.PLUS - 70)) | (1 << (Fortran77Parser.LNOT - 70)) | (1 << (Fortran77Parser.TRUE - 70)) | (1 << (Fortran77Parser.FALSE - 70)) | (1 << (Fortran77Parser.HOLLERITH - 70)) | (1 << (Fortran77Parser.SCON - 70)) | (1 << (Fortran77Parser.RCON - 70)) | (1 << (Fortran77Parser.ICON - 70)) | (1 << (Fortran77Parser.NAME - 70)))) != 0): + if _la==8 or ((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 65970838176049) != 0): self.state = 1706 self.ncExpr() @@ -14596,6 +14554,7 @@ def substringApp(self): class VariableNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14642,6 +14601,7 @@ def variableName(self): class ArrayNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14688,6 +14648,7 @@ def arrayName(self): class SubroutineNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14734,6 +14695,7 @@ def subroutineName(self): class FunctionNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14780,6 +14742,7 @@ def functionName(self): class ConstantContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14834,15 +14797,15 @@ def constant(self): self.state = 1725 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.LPAREN, Fortran77Parser.MINUS, Fortran77Parser.PLUS, Fortran77Parser.RCON, Fortran77Parser.ICON]: + if token in [70, 74, 75, 113, 114]: self.enterOuterAlt(localctx, 1) self.state = 1720 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS: + if _la==74 or _la==75: self.state = 1719 _la = self._input.LA(1) - if not(_la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS): + if not(_la==74 or _la==75): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -14852,17 +14815,17 @@ def constant(self): self.state = 1722 self.unsignedArithmeticConstant() pass - elif token in [Fortran77Parser.HOLLERITH, Fortran77Parser.SCON]: + elif token in [97, 112]: self.enterOuterAlt(localctx, 2) self.state = 1723 _la = self._input.LA(1) - if not(_la==Fortran77Parser.HOLLERITH or _la==Fortran77Parser.SCON): + if not(_la==97 or _la==112): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass - elif token in [Fortran77Parser.TRUE, Fortran77Parser.FALSE]: + elif token in [91, 92]: self.enterOuterAlt(localctx, 3) self.state = 1724 self.logicalConstant() @@ -14880,6 +14843,7 @@ def constant(self): class UnsignedArithmeticConstantContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14924,17 +14888,17 @@ def unsignedArithmeticConstant(self): self.state = 1729 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran77Parser.RCON, Fortran77Parser.ICON]: + if token in [113, 114]: self.enterOuterAlt(localctx, 1) self.state = 1727 _la = self._input.LA(1) - if not(_la==Fortran77Parser.RCON or _la==Fortran77Parser.ICON): + if not(_la==113 or _la==114): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass - elif token in [Fortran77Parser.LPAREN]: + elif token in [70]: self.enterOuterAlt(localctx, 2) self.state = 1728 self.complexConstant() @@ -14952,6 +14916,7 @@ def unsignedArithmeticConstant(self): class ComplexConstantContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15022,10 +14987,10 @@ def complexConstant(self): self.state = 1733 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS: + if _la==74 or _la==75: self.state = 1732 _la = self._input.LA(1) - if not(_la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS): + if not(_la==74 or _la==75): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -15034,7 +14999,7 @@ def complexConstant(self): self.state = 1735 _la = self._input.LA(1) - if not(_la==Fortran77Parser.RCON or _la==Fortran77Parser.ICON): + if not(_la==113 or _la==114): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -15044,10 +15009,10 @@ def complexConstant(self): self.state = 1738 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS: + if _la==74 or _la==75: self.state = 1737 _la = self._input.LA(1) - if not(_la==Fortran77Parser.MINUS or _la==Fortran77Parser.PLUS): + if not(_la==74 or _la==75): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -15056,7 +15021,7 @@ def complexConstant(self): self.state = 1740 _la = self._input.LA(1) - if not(_la==Fortran77Parser.RCON or _la==Fortran77Parser.ICON): + if not(_la==113 or _la==114): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -15073,6 +15038,7 @@ def complexConstant(self): class LogicalConstantContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15113,7 +15079,7 @@ def logicalConstant(self): self.enterOuterAlt(localctx, 1) self.state = 1743 _la = self._input.LA(1) - if not(_la==Fortran77Parser.TRUE or _la==Fortran77Parser.FALSE): + if not(_la==91 or _la==92): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -15128,6 +15094,7 @@ def logicalConstant(self): class IdentifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15168,7 +15135,7 @@ def identifier(self): self.enterOuterAlt(localctx, 1) self.state = 1745 _la = self._input.LA(1) - if not(_la==Fortran77Parser.REAL or _la==Fortran77Parser.NAME): + if not(_la==8 or _la==115): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -15183,6 +15150,7 @@ def identifier(self): class ToContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran77ParserListener.py b/src/pycropml/transpiler/antlr_py/grammars/Fortran77ParserListener.py index a930e80e..f1cf06e5 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran77ParserListener.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran77ParserListener.py @@ -1,6 +1,6 @@ -# Generated from Fortran77Parser.g4 by ANTLR 4.8 +# Generated from Fortran77Parser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .Fortran77Parser import Fortran77Parser else: from Fortran77Parser import Fortran77Parser diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran77ParserVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/Fortran77ParserVisitor.py index 141426e2..e42ee220 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran77ParserVisitor.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran77ParserVisitor.py @@ -1,6 +1,6 @@ -# Generated from Fortran77Parser.g4 by ANTLR 4.8 +# Generated from Fortran77Parser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .Fortran77Parser import Fortran77Parser else: from Fortran77Parser import Fortran77Parser diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran90Lexer.interp b/src/pycropml/transpiler/antlr_py/grammars/Fortran90Lexer.interp index 2a9db0c2..cba7b975 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran90Lexer.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran90Lexer.interp @@ -614,4 +614,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 197, 3506, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196, 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201, 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205, 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210, 9, 210, 4, 211, 9, 211, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 2, 451, 10, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 477, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 497, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 526, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 549, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 566, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 592, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 609, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 641, 10, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 680, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 709, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 720, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 749, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 769, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 804, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 830, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 848, 10, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 868, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 876, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 887, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 904, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 930, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 941, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 955, 10, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 990, 10, 27, 3, 28, 3, 28, 3, 28, 6, 28, 995, 10, 28, 13, 28, 14, 28, 996, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 1012, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 1076, 10, 30, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 1099, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 1119, 10, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 1148, 10, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 5, 35, 1162, 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 1197, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 1226, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 1249, 10, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 1272, 10, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 1300, 10, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 1320, 10, 42, 3, 43, 3, 43, 5, 43, 1324, 10, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 1350, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 1364, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 1393, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 1422, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1448, 10, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 5, 49, 1477, 10, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 1491, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1505, 10, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 1513, 10, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1527, 10, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 5, 54, 1535, 10, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 1545, 10, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 5, 56, 1555, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 1567, 10, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 5, 58, 1581, 10, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 1601, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 1609, 10, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 1632, 10, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 1658, 10, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 5, 63, 1684, 10, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 1701, 10, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 1721, 10, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 5, 66, 1743, 10, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 5, 67, 1757, 10, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 1771, 10, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 1794, 10, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 1814, 10, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 1828, 10, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 1839, 10, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 5, 73, 1851, 10, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 5, 74, 1863, 10, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 5, 75, 1875, 10, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 5, 76, 1885, 10, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 5, 77, 1897, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 1907, 10, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 5, 79, 1915, 10, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 1925, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 1933, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 5, 82, 1947, 10, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1959, 10, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 1977, 10, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 5, 85, 1997, 10, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 5, 86, 2005, 10, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 5, 87, 2015, 10, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 5, 88, 2031, 10, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 5, 89, 2039, 10, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 2053, 10, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 2067, 10, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 5, 92, 2075, 10, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 5, 93, 2085, 10, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 5, 94, 2105, 10, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 5, 95, 2117, 10, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 5, 96, 2131, 10, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 2147, 10, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 5, 98, 2169, 10, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 2181, 10, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 2191, 10, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 5, 101, 2205, 10, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 5, 102, 2219, 10, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 5, 103, 2237, 10, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 5, 104, 2247, 10, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 5, 105, 2257, 10, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 5, 106, 2269, 10, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 5, 107, 2283, 10, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 5, 108, 2297, 10, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 5, 109, 2309, 10, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 5, 110, 2319, 10, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 5, 111, 2339, 10, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 5, 112, 2363, 10, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 5, 113, 2379, 10, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 5, 114, 2395, 10, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 5, 115, 2415, 10, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 5, 116, 2431, 10, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 5, 117, 2445, 10, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 5, 118, 2471, 10, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 5, 119, 2489, 10, 119, 3, 120, 3, 120, 3, 120, 5, 120, 2494, 10, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 5, 121, 2504, 10, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 5, 122, 2512, 10, 122, 3, 123, 3, 123, 6, 123, 2516, 10, 123, 13, 123, 14, 123, 2517, 3, 123, 3, 123, 3, 124, 7, 124, 2523, 10, 124, 12, 124, 14, 124, 2526, 11, 124, 3, 124, 7, 124, 2529, 10, 124, 12, 124, 14, 124, 2532, 11, 124, 3, 124, 3, 124, 7, 124, 2536, 10, 124, 12, 124, 14, 124, 2539, 11, 124, 3, 124, 7, 124, 2542, 10, 124, 12, 124, 14, 124, 2545, 11, 124, 3, 124, 3, 124, 3, 124, 7, 124, 2550, 10, 124, 12, 124, 14, 124, 2553, 11, 124, 3, 124, 7, 124, 2556, 10, 124, 12, 124, 14, 124, 2559, 11, 124, 5, 124, 2561, 10, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 126, 3, 126, 3, 127, 3, 127, 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 5, 129, 2583, 10, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 5, 130, 2601, 10, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 5, 131, 2611, 10, 131, 3, 132, 3, 132, 3, 133, 3, 133, 3, 134, 3, 134, 3, 135, 3, 135, 3, 136, 3, 136, 3, 137, 3, 137, 3, 138, 3, 138, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 5, 141, 2642, 10, 141, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 5, 142, 2654, 10, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 5, 143, 2664, 10, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 5, 144, 2676, 10, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 5, 145, 2690, 10, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 5, 146, 2702, 10, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 5, 147, 2714, 10, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 5, 148, 2724, 10, 148, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 5, 149, 2734, 10, 149, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 5, 150, 2744, 10, 150, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 5, 151, 2754, 10, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 5, 152, 2764, 10, 152, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 5, 153, 2774, 10, 153, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 5, 154, 2788, 10, 154, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 5, 155, 2804, 10, 155, 3, 156, 6, 156, 2807, 10, 156, 13, 156, 14, 156, 2808, 3, 156, 3, 156, 3, 157, 5, 157, 2814, 10, 157, 3, 157, 6, 157, 2817, 10, 157, 13, 157, 14, 157, 2818, 3, 157, 3, 157, 3, 158, 3, 158, 3, 158, 3, 158, 5, 158, 2827, 10, 158, 3, 158, 6, 158, 2830, 10, 158, 13, 158, 14, 158, 2831, 3, 158, 5, 158, 2835, 10, 158, 3, 158, 3, 158, 6, 158, 2839, 10, 158, 13, 158, 14, 158, 2840, 3, 158, 3, 158, 6, 158, 2845, 10, 158, 13, 158, 14, 158, 2846, 5, 158, 2849, 10, 158, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 164, 3, 164, 3, 164, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 167, 3, 167, 3, 167, 3, 167, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 5, 171, 2968, 10, 171, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 5, 172, 2988, 10, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 5, 173, 3011, 10, 173, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 5, 174, 3034, 10, 174, 3, 175, 3, 175, 3, 176, 3, 176, 3, 177, 3, 177, 3, 177, 3, 178, 3, 178, 3, 179, 3, 179, 3, 179, 3, 180, 3, 180, 3, 180, 6, 180, 3051, 10, 180, 13, 180, 14, 180, 3052, 3, 180, 3, 180, 3, 180, 3, 180, 6, 180, 3059, 10, 180, 13, 180, 14, 180, 3060, 3, 180, 5, 180, 3064, 10, 180, 3, 181, 3, 181, 3, 181, 6, 181, 3069, 10, 181, 13, 181, 14, 181, 3070, 3, 181, 3, 181, 3, 181, 3, 181, 6, 181, 3077, 10, 181, 13, 181, 14, 181, 3078, 3, 181, 5, 181, 3082, 10, 181, 3, 182, 3, 182, 3, 182, 6, 182, 3087, 10, 182, 13, 182, 14, 182, 3088, 3, 182, 3, 182, 3, 182, 3, 182, 6, 182, 3095, 10, 182, 13, 182, 14, 182, 3096, 3, 182, 5, 182, 3100, 10, 182, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 5, 183, 3109, 10, 183, 5, 183, 3111, 10, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 5, 183, 3124, 10, 183, 5, 183, 3126, 10, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 7, 183, 3136, 10, 183, 12, 183, 14, 183, 3139, 11, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 7, 183, 3146, 10, 183, 12, 183, 14, 183, 3149, 11, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 7, 183, 3156, 10, 183, 12, 183, 14, 183, 3159, 11, 183, 3, 183, 5, 183, 3162, 10, 183, 3, 184, 6, 184, 3165, 10, 184, 13, 184, 14, 184, 3166, 3, 184, 3, 184, 7, 184, 3171, 10, 184, 12, 184, 14, 184, 3174, 11, 184, 3, 184, 5, 184, 3177, 10, 184, 3, 184, 7, 184, 3180, 10, 184, 12, 184, 14, 184, 3183, 11, 184, 3, 184, 3, 184, 6, 184, 3187, 10, 184, 13, 184, 14, 184, 3188, 3, 184, 5, 184, 3192, 10, 184, 3, 184, 6, 184, 3195, 10, 184, 13, 184, 14, 184, 3196, 3, 184, 3, 184, 5, 184, 3201, 10, 184, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 5, 185, 3223, 10, 185, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 5, 186, 3239, 10, 186, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 5, 187, 3251, 10, 187, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 5, 188, 3281, 10, 188, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 5, 189, 3310, 10, 189, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 192, 6, 192, 3324, 10, 192, 13, 192, 14, 192, 3325, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 5, 193, 3340, 10, 193, 3, 194, 3, 194, 7, 194, 3344, 10, 194, 12, 194, 14, 194, 3347, 11, 194, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 5, 195, 3357, 10, 195, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 5, 196, 3369, 10, 196, 3, 197, 3, 197, 3, 197, 5, 197, 3374, 10, 197, 3, 198, 3, 198, 3, 199, 3, 199, 3, 200, 3, 200, 7, 200, 3382, 10, 200, 12, 200, 14, 200, 3385, 11, 200, 3, 200, 3, 200, 3, 201, 6, 201, 3390, 10, 201, 13, 201, 14, 201, 3391, 3, 202, 6, 202, 3395, 10, 202, 13, 202, 14, 202, 3396, 3, 203, 3, 203, 5, 203, 3401, 10, 203, 3, 203, 5, 203, 3404, 10, 203, 3, 203, 3, 203, 7, 203, 3408, 10, 203, 12, 203, 14, 203, 3411, 11, 203, 3, 203, 7, 203, 3414, 10, 203, 12, 203, 14, 203, 3417, 11, 203, 3, 203, 5, 203, 3420, 10, 203, 3, 203, 5, 203, 3423, 10, 203, 3, 203, 5, 203, 3426, 10, 203, 3, 203, 3, 203, 7, 203, 3430, 10, 203, 12, 203, 14, 203, 3433, 11, 203, 3, 203, 7, 203, 3436, 10, 203, 12, 203, 14, 203, 3439, 11, 203, 3, 203, 3, 203, 5, 203, 3443, 10, 203, 3, 203, 3, 203, 3, 204, 3, 204, 3, 205, 3, 205, 5, 205, 3451, 10, 205, 3, 206, 3, 206, 5, 206, 3455, 10, 206, 3, 207, 3, 207, 3, 208, 3, 208, 6, 208, 3461, 10, 208, 13, 208, 14, 208, 3462, 3, 208, 3, 208, 6, 208, 3467, 10, 208, 13, 208, 14, 208, 3468, 3, 208, 3, 208, 6, 208, 3473, 10, 208, 13, 208, 14, 208, 3474, 3, 208, 3, 208, 6, 208, 3479, 10, 208, 13, 208, 14, 208, 3480, 3, 208, 3, 208, 6, 208, 3485, 10, 208, 13, 208, 14, 208, 3486, 5, 208, 3489, 10, 208, 5, 208, 3491, 10, 208, 3, 209, 3, 209, 5, 209, 3495, 10, 209, 3, 209, 6, 209, 3498, 10, 209, 13, 209, 14, 209, 3499, 3, 210, 5, 210, 3503, 10, 210, 3, 211, 3, 211, 2, 2, 212, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 2, 79, 40, 81, 41, 83, 2, 85, 42, 87, 43, 89, 44, 91, 45, 93, 46, 95, 47, 97, 48, 99, 49, 101, 50, 103, 51, 105, 52, 107, 53, 109, 54, 111, 55, 113, 56, 115, 57, 117, 58, 119, 59, 121, 60, 123, 61, 125, 62, 127, 63, 129, 64, 131, 65, 133, 66, 135, 67, 137, 68, 139, 69, 141, 70, 143, 71, 145, 72, 147, 73, 149, 74, 151, 75, 153, 76, 155, 77, 157, 78, 159, 79, 161, 80, 163, 81, 165, 82, 167, 83, 169, 84, 171, 85, 173, 86, 175, 87, 177, 88, 179, 89, 181, 90, 183, 91, 185, 92, 187, 93, 189, 94, 191, 95, 193, 96, 195, 97, 197, 98, 199, 99, 201, 100, 203, 101, 205, 102, 207, 103, 209, 104, 211, 105, 213, 106, 215, 107, 217, 108, 219, 109, 221, 110, 223, 111, 225, 112, 227, 113, 229, 114, 231, 115, 233, 116, 235, 117, 237, 118, 239, 2, 241, 119, 243, 120, 245, 121, 247, 122, 249, 123, 251, 124, 253, 125, 255, 126, 257, 127, 259, 128, 261, 129, 263, 130, 265, 131, 267, 132, 269, 133, 271, 134, 273, 135, 275, 2, 277, 136, 279, 137, 281, 138, 283, 139, 285, 140, 287, 141, 289, 142, 291, 143, 293, 144, 295, 145, 297, 146, 299, 147, 301, 148, 303, 149, 305, 150, 307, 151, 309, 152, 311, 153, 313, 154, 315, 155, 317, 156, 319, 157, 321, 158, 323, 159, 325, 160, 327, 161, 329, 162, 331, 163, 333, 164, 335, 165, 337, 166, 339, 167, 341, 168, 343, 169, 345, 170, 347, 171, 349, 2, 351, 172, 353, 173, 355, 174, 357, 175, 359, 176, 361, 177, 363, 178, 365, 179, 367, 180, 369, 181, 371, 182, 373, 183, 375, 184, 377, 185, 379, 186, 381, 187, 383, 188, 385, 189, 387, 190, 389, 191, 391, 192, 393, 193, 395, 2, 397, 194, 399, 195, 401, 196, 403, 2, 405, 197, 407, 2, 409, 2, 411, 2, 413, 2, 415, 2, 417, 2, 419, 2, 421, 2, 3, 2, 31, 4, 2, 62, 62, 64, 64, 6, 2, 12, 12, 15, 15, 135, 135, 8234, 8235, 4, 2, 11, 11, 34, 34, 4, 2, 12, 12, 15, 15, 4, 2, 69, 69, 101, 101, 4, 2, 49, 49, 60, 60, 4, 2, 90, 90, 122, 122, 4, 2, 45, 45, 47, 47, 4, 2, 82, 82, 114, 114, 6, 2, 67, 68, 70, 71, 99, 100, 102, 103, 4, 2, 71, 71, 103, 103, 6, 2, 80, 80, 85, 85, 112, 112, 117, 117, 14, 2, 72, 73, 75, 75, 78, 78, 81, 81, 83, 83, 92, 92, 104, 105, 107, 107, 110, 110, 113, 113, 115, 115, 124, 124, 6, 2, 70, 71, 83, 83, 102, 103, 115, 115, 4, 2, 92, 92, 124, 124, 5, 2, 50, 59, 67, 72, 99, 104, 4, 2, 68, 68, 100, 100, 3, 2, 50, 51, 4, 2, 81, 81, 113, 113, 3, 2, 50, 57, 5, 2, 12, 12, 15, 15, 41, 41, 3, 2, 41, 41, 3, 2, 36, 36, 4, 2, 67, 92, 99, 124, 5, 2, 12, 12, 15, 15, 36, 36, 4, 2, 34, 34, 50, 50, 5, 2, 102, 102, 104, 104, 107, 107, 4, 2, 103, 103, 105, 105, 4, 2, 70, 71, 102, 103, 2, 3785, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 2, 263, 3, 2, 2, 2, 2, 265, 3, 2, 2, 2, 2, 267, 3, 2, 2, 2, 2, 269, 3, 2, 2, 2, 2, 271, 3, 2, 2, 2, 2, 273, 3, 2, 2, 2, 2, 277, 3, 2, 2, 2, 2, 279, 3, 2, 2, 2, 2, 281, 3, 2, 2, 2, 2, 283, 3, 2, 2, 2, 2, 285, 3, 2, 2, 2, 2, 287, 3, 2, 2, 2, 2, 289, 3, 2, 2, 2, 2, 291, 3, 2, 2, 2, 2, 293, 3, 2, 2, 2, 2, 295, 3, 2, 2, 2, 2, 297, 3, 2, 2, 2, 2, 299, 3, 2, 2, 2, 2, 301, 3, 2, 2, 2, 2, 303, 3, 2, 2, 2, 2, 305, 3, 2, 2, 2, 2, 307, 3, 2, 2, 2, 2, 309, 3, 2, 2, 2, 2, 311, 3, 2, 2, 2, 2, 313, 3, 2, 2, 2, 2, 315, 3, 2, 2, 2, 2, 317, 3, 2, 2, 2, 2, 319, 3, 2, 2, 2, 2, 321, 3, 2, 2, 2, 2, 323, 3, 2, 2, 2, 2, 325, 3, 2, 2, 2, 2, 327, 3, 2, 2, 2, 2, 329, 3, 2, 2, 2, 2, 331, 3, 2, 2, 2, 2, 333, 3, 2, 2, 2, 2, 335, 3, 2, 2, 2, 2, 337, 3, 2, 2, 2, 2, 339, 3, 2, 2, 2, 2, 341, 3, 2, 2, 2, 2, 343, 3, 2, 2, 2, 2, 345, 3, 2, 2, 2, 2, 347, 3, 2, 2, 2, 2, 351, 3, 2, 2, 2, 2, 353, 3, 2, 2, 2, 2, 355, 3, 2, 2, 2, 2, 357, 3, 2, 2, 2, 2, 359, 3, 2, 2, 2, 2, 361, 3, 2, 2, 2, 2, 363, 3, 2, 2, 2, 2, 365, 3, 2, 2, 2, 2, 367, 3, 2, 2, 2, 2, 369, 3, 2, 2, 2, 2, 371, 3, 2, 2, 2, 2, 373, 3, 2, 2, 2, 2, 375, 3, 2, 2, 2, 2, 377, 3, 2, 2, 2, 2, 379, 3, 2, 2, 2, 2, 381, 3, 2, 2, 2, 2, 383, 3, 2, 2, 2, 2, 385, 3, 2, 2, 2, 2, 387, 3, 2, 2, 2, 2, 389, 3, 2, 2, 2, 2, 391, 3, 2, 2, 2, 2, 393, 3, 2, 2, 2, 2, 397, 3, 2, 2, 2, 2, 399, 3, 2, 2, 2, 2, 401, 3, 2, 2, 2, 2, 405, 3, 2, 2, 2, 3, 450, 3, 2, 2, 2, 5, 476, 3, 2, 2, 2, 7, 496, 3, 2, 2, 2, 9, 525, 3, 2, 2, 2, 11, 548, 3, 2, 2, 2, 13, 565, 3, 2, 2, 2, 15, 591, 3, 2, 2, 2, 17, 608, 3, 2, 2, 2, 19, 640, 3, 2, 2, 2, 21, 679, 3, 2, 2, 2, 23, 708, 3, 2, 2, 2, 25, 719, 3, 2, 2, 2, 27, 748, 3, 2, 2, 2, 29, 768, 3, 2, 2, 2, 31, 803, 3, 2, 2, 2, 33, 829, 3, 2, 2, 2, 35, 847, 3, 2, 2, 2, 37, 867, 3, 2, 2, 2, 39, 875, 3, 2, 2, 2, 41, 886, 3, 2, 2, 2, 43, 903, 3, 2, 2, 2, 45, 929, 3, 2, 2, 2, 47, 940, 3, 2, 2, 2, 49, 954, 3, 2, 2, 2, 51, 956, 3, 2, 2, 2, 53, 989, 3, 2, 2, 2, 55, 991, 3, 2, 2, 2, 57, 1011, 3, 2, 2, 2, 59, 1075, 3, 2, 2, 2, 61, 1077, 3, 2, 2, 2, 63, 1098, 3, 2, 2, 2, 65, 1118, 3, 2, 2, 2, 67, 1147, 3, 2, 2, 2, 69, 1161, 3, 2, 2, 2, 71, 1196, 3, 2, 2, 2, 73, 1225, 3, 2, 2, 2, 75, 1248, 3, 2, 2, 2, 77, 1271, 3, 2, 2, 2, 79, 1273, 3, 2, 2, 2, 81, 1299, 3, 2, 2, 2, 83, 1319, 3, 2, 2, 2, 85, 1323, 3, 2, 2, 2, 87, 1349, 3, 2, 2, 2, 89, 1363, 3, 2, 2, 2, 91, 1392, 3, 2, 2, 2, 93, 1421, 3, 2, 2, 2, 95, 1447, 3, 2, 2, 2, 97, 1476, 3, 2, 2, 2, 99, 1490, 3, 2, 2, 2, 101, 1504, 3, 2, 2, 2, 103, 1512, 3, 2, 2, 2, 105, 1526, 3, 2, 2, 2, 107, 1534, 3, 2, 2, 2, 109, 1544, 3, 2, 2, 2, 111, 1554, 3, 2, 2, 2, 113, 1566, 3, 2, 2, 2, 115, 1580, 3, 2, 2, 2, 117, 1600, 3, 2, 2, 2, 119, 1608, 3, 2, 2, 2, 121, 1631, 3, 2, 2, 2, 123, 1657, 3, 2, 2, 2, 125, 1683, 3, 2, 2, 2, 127, 1700, 3, 2, 2, 2, 129, 1720, 3, 2, 2, 2, 131, 1742, 3, 2, 2, 2, 133, 1756, 3, 2, 2, 2, 135, 1770, 3, 2, 2, 2, 137, 1793, 3, 2, 2, 2, 139, 1813, 3, 2, 2, 2, 141, 1827, 3, 2, 2, 2, 143, 1838, 3, 2, 2, 2, 145, 1850, 3, 2, 2, 2, 147, 1862, 3, 2, 2, 2, 149, 1874, 3, 2, 2, 2, 151, 1884, 3, 2, 2, 2, 153, 1896, 3, 2, 2, 2, 155, 1906, 3, 2, 2, 2, 157, 1914, 3, 2, 2, 2, 159, 1924, 3, 2, 2, 2, 161, 1932, 3, 2, 2, 2, 163, 1946, 3, 2, 2, 2, 165, 1958, 3, 2, 2, 2, 167, 1976, 3, 2, 2, 2, 169, 1996, 3, 2, 2, 2, 171, 2004, 3, 2, 2, 2, 173, 2014, 3, 2, 2, 2, 175, 2030, 3, 2, 2, 2, 177, 2038, 3, 2, 2, 2, 179, 2052, 3, 2, 2, 2, 181, 2066, 3, 2, 2, 2, 183, 2074, 3, 2, 2, 2, 185, 2084, 3, 2, 2, 2, 187, 2104, 3, 2, 2, 2, 189, 2116, 3, 2, 2, 2, 191, 2130, 3, 2, 2, 2, 193, 2146, 3, 2, 2, 2, 195, 2168, 3, 2, 2, 2, 197, 2180, 3, 2, 2, 2, 199, 2190, 3, 2, 2, 2, 201, 2204, 3, 2, 2, 2, 203, 2218, 3, 2, 2, 2, 205, 2236, 3, 2, 2, 2, 207, 2246, 3, 2, 2, 2, 209, 2256, 3, 2, 2, 2, 211, 2268, 3, 2, 2, 2, 213, 2282, 3, 2, 2, 2, 215, 2296, 3, 2, 2, 2, 217, 2308, 3, 2, 2, 2, 219, 2318, 3, 2, 2, 2, 221, 2338, 3, 2, 2, 2, 223, 2362, 3, 2, 2, 2, 225, 2378, 3, 2, 2, 2, 227, 2394, 3, 2, 2, 2, 229, 2414, 3, 2, 2, 2, 231, 2430, 3, 2, 2, 2, 233, 2444, 3, 2, 2, 2, 235, 2470, 3, 2, 2, 2, 237, 2488, 3, 2, 2, 2, 239, 2493, 3, 2, 2, 2, 241, 2503, 3, 2, 2, 2, 243, 2511, 3, 2, 2, 2, 245, 2515, 3, 2, 2, 2, 247, 2560, 3, 2, 2, 2, 249, 2564, 3, 2, 2, 2, 251, 2566, 3, 2, 2, 2, 253, 2568, 3, 2, 2, 2, 255, 2570, 3, 2, 2, 2, 257, 2582, 3, 2, 2, 2, 259, 2600, 3, 2, 2, 2, 261, 2610, 3, 2, 2, 2, 263, 2612, 3, 2, 2, 2, 265, 2614, 3, 2, 2, 2, 267, 2616, 3, 2, 2, 2, 269, 2618, 3, 2, 2, 2, 271, 2620, 3, 2, 2, 2, 273, 2622, 3, 2, 2, 2, 275, 2624, 3, 2, 2, 2, 277, 2626, 3, 2, 2, 2, 279, 2628, 3, 2, 2, 2, 281, 2641, 3, 2, 2, 2, 283, 2653, 3, 2, 2, 2, 285, 2663, 3, 2, 2, 2, 287, 2675, 3, 2, 2, 2, 289, 2689, 3, 2, 2, 2, 291, 2701, 3, 2, 2, 2, 293, 2713, 3, 2, 2, 2, 295, 2723, 3, 2, 2, 2, 297, 2733, 3, 2, 2, 2, 299, 2743, 3, 2, 2, 2, 301, 2753, 3, 2, 2, 2, 303, 2763, 3, 2, 2, 2, 305, 2773, 3, 2, 2, 2, 307, 2787, 3, 2, 2, 2, 309, 2803, 3, 2, 2, 2, 311, 2806, 3, 2, 2, 2, 313, 2813, 3, 2, 2, 2, 315, 2826, 3, 2, 2, 2, 317, 2850, 3, 2, 2, 2, 319, 2855, 3, 2, 2, 2, 321, 2865, 3, 2, 2, 2, 323, 2874, 3, 2, 2, 2, 325, 2885, 3, 2, 2, 2, 327, 2893, 3, 2, 2, 2, 329, 2896, 3, 2, 2, 2, 331, 2912, 3, 2, 2, 2, 333, 2920, 3, 2, 2, 2, 335, 2924, 3, 2, 2, 2, 337, 2934, 3, 2, 2, 2, 339, 2944, 3, 2, 2, 2, 341, 2967, 3, 2, 2, 2, 343, 2987, 3, 2, 2, 2, 345, 3010, 3, 2, 2, 2, 347, 3033, 3, 2, 2, 2, 349, 3035, 3, 2, 2, 2, 351, 3037, 3, 2, 2, 2, 353, 3039, 3, 2, 2, 2, 355, 3042, 3, 2, 2, 2, 357, 3044, 3, 2, 2, 2, 359, 3063, 3, 2, 2, 2, 361, 3081, 3, 2, 2, 2, 363, 3099, 3, 2, 2, 2, 365, 3161, 3, 2, 2, 2, 367, 3200, 3, 2, 2, 2, 369, 3222, 3, 2, 2, 2, 371, 3238, 3, 2, 2, 2, 373, 3250, 3, 2, 2, 2, 375, 3280, 3, 2, 2, 2, 377, 3309, 3, 2, 2, 2, 379, 3311, 3, 2, 2, 2, 381, 3317, 3, 2, 2, 2, 383, 3323, 3, 2, 2, 2, 385, 3339, 3, 2, 2, 2, 387, 3341, 3, 2, 2, 2, 389, 3356, 3, 2, 2, 2, 391, 3368, 3, 2, 2, 2, 393, 3373, 3, 2, 2, 2, 395, 3375, 3, 2, 2, 2, 397, 3377, 3, 2, 2, 2, 399, 3379, 3, 2, 2, 2, 401, 3389, 3, 2, 2, 2, 403, 3394, 3, 2, 2, 2, 405, 3442, 3, 2, 2, 2, 407, 3446, 3, 2, 2, 2, 409, 3450, 3, 2, 2, 2, 411, 3454, 3, 2, 2, 2, 413, 3456, 3, 2, 2, 2, 415, 3490, 3, 2, 2, 2, 417, 3492, 3, 2, 2, 2, 419, 3502, 3, 2, 2, 2, 421, 3504, 3, 2, 2, 2, 423, 424, 7, 84, 2, 2, 424, 425, 7, 71, 2, 2, 425, 426, 7, 69, 2, 2, 426, 427, 7, 87, 2, 2, 427, 428, 7, 84, 2, 2, 428, 429, 7, 85, 2, 2, 429, 430, 7, 75, 2, 2, 430, 431, 7, 88, 2, 2, 431, 451, 7, 71, 2, 2, 432, 433, 7, 116, 2, 2, 433, 434, 7, 103, 2, 2, 434, 435, 7, 101, 2, 2, 435, 436, 7, 119, 2, 2, 436, 437, 7, 116, 2, 2, 437, 438, 7, 117, 2, 2, 438, 439, 7, 107, 2, 2, 439, 440, 7, 120, 2, 2, 440, 451, 7, 103, 2, 2, 441, 442, 7, 84, 2, 2, 442, 443, 7, 103, 2, 2, 443, 444, 7, 101, 2, 2, 444, 445, 7, 119, 2, 2, 445, 446, 7, 116, 2, 2, 446, 447, 7, 117, 2, 2, 447, 448, 7, 107, 2, 2, 448, 449, 7, 120, 2, 2, 449, 451, 7, 103, 2, 2, 450, 423, 3, 2, 2, 2, 450, 432, 3, 2, 2, 2, 450, 441, 3, 2, 2, 2, 451, 4, 3, 2, 2, 2, 452, 453, 7, 101, 2, 2, 453, 454, 7, 113, 2, 2, 454, 455, 7, 112, 2, 2, 455, 456, 7, 118, 2, 2, 456, 457, 7, 99, 2, 2, 457, 458, 7, 107, 2, 2, 458, 459, 7, 112, 2, 2, 459, 477, 7, 117, 2, 2, 460, 461, 7, 69, 2, 2, 461, 462, 7, 81, 2, 2, 462, 463, 7, 80, 2, 2, 463, 464, 7, 86, 2, 2, 464, 465, 7, 67, 2, 2, 465, 466, 7, 75, 2, 2, 466, 467, 7, 80, 2, 2, 467, 477, 7, 85, 2, 2, 468, 469, 7, 69, 2, 2, 469, 470, 7, 113, 2, 2, 470, 471, 7, 112, 2, 2, 471, 472, 7, 118, 2, 2, 472, 473, 7, 99, 2, 2, 473, 474, 7, 107, 2, 2, 474, 475, 7, 112, 2, 2, 475, 477, 7, 117, 2, 2, 476, 452, 3, 2, 2, 2, 476, 460, 3, 2, 2, 2, 476, 468, 3, 2, 2, 2, 477, 6, 3, 2, 2, 2, 478, 479, 7, 79, 2, 2, 479, 480, 7, 81, 2, 2, 480, 481, 7, 70, 2, 2, 481, 482, 7, 87, 2, 2, 482, 483, 7, 78, 2, 2, 483, 497, 7, 71, 2, 2, 484, 485, 7, 111, 2, 2, 485, 486, 7, 113, 2, 2, 486, 487, 7, 102, 2, 2, 487, 488, 7, 119, 2, 2, 488, 489, 7, 110, 2, 2, 489, 497, 7, 103, 2, 2, 490, 491, 7, 79, 2, 2, 491, 492, 7, 113, 2, 2, 492, 493, 7, 102, 2, 2, 493, 494, 7, 119, 2, 2, 494, 495, 7, 110, 2, 2, 495, 497, 7, 103, 2, 2, 496, 478, 3, 2, 2, 2, 496, 484, 3, 2, 2, 2, 496, 490, 3, 2, 2, 2, 497, 8, 3, 2, 2, 2, 498, 499, 7, 71, 2, 2, 499, 500, 7, 80, 2, 2, 500, 501, 7, 70, 2, 2, 501, 502, 7, 79, 2, 2, 502, 503, 7, 81, 2, 2, 503, 504, 7, 70, 2, 2, 504, 505, 7, 87, 2, 2, 505, 506, 7, 78, 2, 2, 506, 526, 7, 71, 2, 2, 507, 508, 7, 103, 2, 2, 508, 509, 7, 112, 2, 2, 509, 510, 7, 102, 2, 2, 510, 511, 7, 111, 2, 2, 511, 512, 7, 113, 2, 2, 512, 513, 7, 102, 2, 2, 513, 514, 7, 119, 2, 2, 514, 515, 7, 110, 2, 2, 515, 526, 7, 103, 2, 2, 516, 517, 7, 71, 2, 2, 517, 518, 7, 112, 2, 2, 518, 519, 7, 102, 2, 2, 519, 520, 7, 111, 2, 2, 520, 521, 7, 113, 2, 2, 521, 522, 7, 102, 2, 2, 522, 523, 7, 119, 2, 2, 523, 524, 7, 110, 2, 2, 524, 526, 7, 103, 2, 2, 525, 498, 3, 2, 2, 2, 525, 507, 3, 2, 2, 2, 525, 516, 3, 2, 2, 2, 526, 10, 3, 2, 2, 2, 527, 528, 7, 114, 2, 2, 528, 529, 7, 116, 2, 2, 529, 530, 7, 113, 2, 2, 530, 531, 7, 105, 2, 2, 531, 532, 7, 116, 2, 2, 532, 533, 7, 99, 2, 2, 533, 549, 7, 111, 2, 2, 534, 535, 7, 82, 2, 2, 535, 536, 7, 84, 2, 2, 536, 537, 7, 81, 2, 2, 537, 538, 7, 73, 2, 2, 538, 539, 7, 84, 2, 2, 539, 540, 7, 67, 2, 2, 540, 549, 7, 79, 2, 2, 541, 542, 7, 82, 2, 2, 542, 543, 7, 116, 2, 2, 543, 544, 7, 113, 2, 2, 544, 545, 7, 105, 2, 2, 545, 546, 7, 116, 2, 2, 546, 547, 7, 99, 2, 2, 547, 549, 7, 111, 2, 2, 548, 527, 3, 2, 2, 2, 548, 534, 3, 2, 2, 2, 548, 541, 3, 2, 2, 2, 549, 12, 3, 2, 2, 2, 550, 551, 7, 103, 2, 2, 551, 552, 7, 112, 2, 2, 552, 553, 7, 118, 2, 2, 553, 554, 7, 116, 2, 2, 554, 566, 7, 123, 2, 2, 555, 556, 7, 71, 2, 2, 556, 557, 7, 80, 2, 2, 557, 558, 7, 86, 2, 2, 558, 559, 7, 84, 2, 2, 559, 566, 7, 91, 2, 2, 560, 561, 7, 71, 2, 2, 561, 562, 7, 112, 2, 2, 562, 563, 7, 118, 2, 2, 563, 564, 7, 116, 2, 2, 564, 566, 7, 123, 2, 2, 565, 550, 3, 2, 2, 2, 565, 555, 3, 2, 2, 2, 565, 560, 3, 2, 2, 2, 566, 14, 3, 2, 2, 2, 567, 568, 7, 104, 2, 2, 568, 569, 7, 119, 2, 2, 569, 570, 7, 112, 2, 2, 570, 571, 7, 101, 2, 2, 571, 572, 7, 118, 2, 2, 572, 573, 7, 107, 2, 2, 573, 574, 7, 113, 2, 2, 574, 592, 7, 112, 2, 2, 575, 576, 7, 72, 2, 2, 576, 577, 7, 87, 2, 2, 577, 578, 7, 80, 2, 2, 578, 579, 7, 69, 2, 2, 579, 580, 7, 86, 2, 2, 580, 581, 7, 75, 2, 2, 581, 582, 7, 81, 2, 2, 582, 592, 7, 80, 2, 2, 583, 584, 7, 72, 2, 2, 584, 585, 7, 119, 2, 2, 585, 586, 7, 112, 2, 2, 586, 587, 7, 101, 2, 2, 587, 588, 7, 118, 2, 2, 588, 589, 7, 107, 2, 2, 589, 590, 7, 113, 2, 2, 590, 592, 7, 112, 2, 2, 591, 567, 3, 2, 2, 2, 591, 575, 3, 2, 2, 2, 591, 583, 3, 2, 2, 2, 592, 16, 3, 2, 2, 2, 593, 594, 7, 100, 2, 2, 594, 595, 7, 110, 2, 2, 595, 596, 7, 113, 2, 2, 596, 597, 7, 101, 2, 2, 597, 609, 7, 109, 2, 2, 598, 599, 7, 68, 2, 2, 599, 600, 7, 78, 2, 2, 600, 601, 7, 81, 2, 2, 601, 602, 7, 69, 2, 2, 602, 609, 7, 77, 2, 2, 603, 604, 7, 68, 2, 2, 604, 605, 7, 110, 2, 2, 605, 606, 7, 113, 2, 2, 606, 607, 7, 101, 2, 2, 607, 609, 7, 109, 2, 2, 608, 593, 3, 2, 2, 2, 608, 598, 3, 2, 2, 2, 608, 603, 3, 2, 2, 2, 609, 18, 3, 2, 2, 2, 610, 611, 7, 117, 2, 2, 611, 612, 7, 119, 2, 2, 612, 613, 7, 100, 2, 2, 613, 614, 7, 116, 2, 2, 614, 615, 7, 113, 2, 2, 615, 616, 7, 119, 2, 2, 616, 617, 7, 118, 2, 2, 617, 618, 7, 107, 2, 2, 618, 619, 7, 112, 2, 2, 619, 641, 7, 103, 2, 2, 620, 621, 7, 85, 2, 2, 621, 622, 7, 87, 2, 2, 622, 623, 7, 68, 2, 2, 623, 624, 7, 84, 2, 2, 624, 625, 7, 81, 2, 2, 625, 626, 7, 87, 2, 2, 626, 627, 7, 86, 2, 2, 627, 628, 7, 75, 2, 2, 628, 629, 7, 80, 2, 2, 629, 641, 7, 71, 2, 2, 630, 631, 7, 85, 2, 2, 631, 632, 7, 119, 2, 2, 632, 633, 7, 100, 2, 2, 633, 634, 7, 116, 2, 2, 634, 635, 7, 113, 2, 2, 635, 636, 7, 119, 2, 2, 636, 637, 7, 118, 2, 2, 637, 638, 7, 107, 2, 2, 638, 639, 7, 112, 2, 2, 639, 641, 7, 103, 2, 2, 640, 610, 3, 2, 2, 2, 640, 620, 3, 2, 2, 2, 640, 630, 3, 2, 2, 2, 641, 20, 3, 2, 2, 2, 642, 643, 7, 71, 2, 2, 643, 644, 7, 80, 2, 2, 644, 645, 7, 70, 2, 2, 645, 646, 7, 75, 2, 2, 646, 647, 7, 80, 2, 2, 647, 648, 7, 86, 2, 2, 648, 649, 7, 71, 2, 2, 649, 650, 7, 84, 2, 2, 650, 651, 7, 72, 2, 2, 651, 652, 7, 67, 2, 2, 652, 653, 7, 69, 2, 2, 653, 680, 7, 71, 2, 2, 654, 655, 7, 34, 2, 2, 655, 656, 7, 103, 2, 2, 656, 657, 7, 112, 2, 2, 657, 658, 7, 102, 2, 2, 658, 659, 7, 107, 2, 2, 659, 660, 7, 112, 2, 2, 660, 661, 7, 118, 2, 2, 661, 662, 7, 103, 2, 2, 662, 663, 7, 116, 2, 2, 663, 664, 7, 104, 2, 2, 664, 665, 7, 99, 2, 2, 665, 666, 7, 101, 2, 2, 666, 680, 7, 103, 2, 2, 667, 668, 7, 71, 2, 2, 668, 669, 7, 112, 2, 2, 669, 670, 7, 102, 2, 2, 670, 671, 7, 107, 2, 2, 671, 672, 7, 112, 2, 2, 672, 673, 7, 118, 2, 2, 673, 674, 7, 103, 2, 2, 674, 675, 7, 116, 2, 2, 675, 676, 7, 104, 2, 2, 676, 677, 7, 99, 2, 2, 677, 678, 7, 101, 2, 2, 678, 680, 7, 103, 2, 2, 679, 642, 3, 2, 2, 2, 679, 654, 3, 2, 2, 2, 679, 667, 3, 2, 2, 2, 680, 22, 3, 2, 2, 2, 681, 682, 7, 114, 2, 2, 682, 683, 7, 116, 2, 2, 683, 684, 7, 113, 2, 2, 684, 685, 7, 101, 2, 2, 685, 686, 7, 103, 2, 2, 686, 687, 7, 102, 2, 2, 687, 688, 7, 119, 2, 2, 688, 689, 7, 116, 2, 2, 689, 709, 7, 103, 2, 2, 690, 691, 7, 82, 2, 2, 691, 692, 7, 84, 2, 2, 692, 693, 7, 81, 2, 2, 693, 694, 7, 69, 2, 2, 694, 695, 7, 71, 2, 2, 695, 696, 7, 70, 2, 2, 696, 697, 7, 87, 2, 2, 697, 698, 7, 84, 2, 2, 698, 709, 7, 71, 2, 2, 699, 700, 7, 82, 2, 2, 700, 701, 7, 116, 2, 2, 701, 702, 7, 113, 2, 2, 702, 703, 7, 101, 2, 2, 703, 704, 7, 103, 2, 2, 704, 705, 7, 102, 2, 2, 705, 706, 7, 119, 2, 2, 706, 707, 7, 116, 2, 2, 707, 709, 7, 103, 2, 2, 708, 681, 3, 2, 2, 2, 708, 690, 3, 2, 2, 2, 708, 699, 3, 2, 2, 2, 709, 24, 3, 2, 2, 2, 710, 711, 7, 71, 2, 2, 711, 712, 7, 80, 2, 2, 712, 720, 7, 70, 2, 2, 713, 714, 7, 103, 2, 2, 714, 715, 7, 112, 2, 2, 715, 720, 7, 102, 2, 2, 716, 717, 7, 71, 2, 2, 717, 718, 7, 112, 2, 2, 718, 720, 7, 102, 2, 2, 719, 710, 3, 2, 2, 2, 719, 713, 3, 2, 2, 2, 719, 716, 3, 2, 2, 2, 720, 26, 3, 2, 2, 2, 721, 722, 7, 102, 2, 2, 722, 723, 7, 107, 2, 2, 723, 724, 7, 111, 2, 2, 724, 725, 7, 103, 2, 2, 725, 726, 7, 112, 2, 2, 726, 727, 7, 117, 2, 2, 727, 728, 7, 107, 2, 2, 728, 729, 7, 113, 2, 2, 729, 749, 7, 112, 2, 2, 730, 731, 7, 70, 2, 2, 731, 732, 7, 75, 2, 2, 732, 733, 7, 79, 2, 2, 733, 734, 7, 71, 2, 2, 734, 735, 7, 80, 2, 2, 735, 736, 7, 85, 2, 2, 736, 737, 7, 75, 2, 2, 737, 738, 7, 81, 2, 2, 738, 749, 7, 80, 2, 2, 739, 740, 7, 70, 2, 2, 740, 741, 7, 107, 2, 2, 741, 742, 7, 111, 2, 2, 742, 743, 7, 103, 2, 2, 743, 744, 7, 112, 2, 2, 744, 745, 7, 117, 2, 2, 745, 746, 7, 107, 2, 2, 746, 747, 7, 113, 2, 2, 747, 749, 7, 112, 2, 2, 748, 721, 3, 2, 2, 2, 748, 730, 3, 2, 2, 2, 748, 739, 3, 2, 2, 2, 749, 28, 3, 2, 2, 2, 750, 751, 7, 86, 2, 2, 751, 752, 7, 67, 2, 2, 752, 753, 7, 84, 2, 2, 753, 754, 7, 73, 2, 2, 754, 755, 7, 71, 2, 2, 755, 769, 7, 86, 2, 2, 756, 757, 7, 118, 2, 2, 757, 758, 7, 99, 2, 2, 758, 759, 7, 116, 2, 2, 759, 760, 7, 105, 2, 2, 760, 761, 7, 103, 2, 2, 761, 769, 7, 118, 2, 2, 762, 763, 7, 86, 2, 2, 763, 764, 7, 99, 2, 2, 764, 765, 7, 116, 2, 2, 765, 766, 7, 105, 2, 2, 766, 767, 7, 103, 2, 2, 767, 769, 7, 118, 2, 2, 768, 750, 3, 2, 2, 2, 768, 756, 3, 2, 2, 2, 768, 762, 3, 2, 2, 2, 769, 30, 3, 2, 2, 2, 770, 771, 7, 67, 2, 2, 771, 772, 7, 78, 2, 2, 772, 773, 7, 78, 2, 2, 773, 774, 7, 81, 2, 2, 774, 775, 7, 69, 2, 2, 775, 776, 7, 67, 2, 2, 776, 777, 7, 86, 2, 2, 777, 778, 7, 67, 2, 2, 778, 779, 7, 68, 2, 2, 779, 780, 7, 78, 2, 2, 780, 804, 7, 71, 2, 2, 781, 782, 7, 99, 2, 2, 782, 783, 7, 110, 2, 2, 783, 784, 7, 110, 2, 2, 784, 785, 7, 113, 2, 2, 785, 786, 7, 101, 2, 2, 786, 787, 7, 99, 2, 2, 787, 788, 7, 118, 2, 2, 788, 789, 7, 99, 2, 2, 789, 790, 7, 100, 2, 2, 790, 791, 7, 110, 2, 2, 791, 804, 7, 103, 2, 2, 792, 793, 7, 67, 2, 2, 793, 794, 7, 110, 2, 2, 794, 795, 7, 110, 2, 2, 795, 796, 7, 113, 2, 2, 796, 797, 7, 101, 2, 2, 797, 798, 7, 99, 2, 2, 798, 799, 7, 118, 2, 2, 799, 800, 7, 99, 2, 2, 800, 801, 7, 100, 2, 2, 801, 802, 7, 110, 2, 2, 802, 804, 7, 103, 2, 2, 803, 770, 3, 2, 2, 2, 803, 781, 3, 2, 2, 2, 803, 792, 3, 2, 2, 2, 804, 32, 3, 2, 2, 2, 805, 806, 7, 81, 2, 2, 806, 807, 7, 82, 2, 2, 807, 808, 7, 86, 2, 2, 808, 809, 7, 75, 2, 2, 809, 810, 7, 81, 2, 2, 810, 811, 7, 80, 2, 2, 811, 812, 7, 67, 2, 2, 812, 830, 7, 78, 2, 2, 813, 814, 7, 113, 2, 2, 814, 815, 7, 114, 2, 2, 815, 816, 7, 118, 2, 2, 816, 817, 7, 107, 2, 2, 817, 818, 7, 113, 2, 2, 818, 819, 7, 112, 2, 2, 819, 820, 7, 99, 2, 2, 820, 830, 7, 110, 2, 2, 821, 822, 7, 81, 2, 2, 822, 823, 7, 114, 2, 2, 823, 824, 7, 118, 2, 2, 824, 825, 7, 107, 2, 2, 825, 826, 7, 113, 2, 2, 826, 827, 7, 112, 2, 2, 827, 828, 7, 99, 2, 2, 828, 830, 7, 110, 2, 2, 829, 805, 3, 2, 2, 2, 829, 813, 3, 2, 2, 2, 829, 821, 3, 2, 2, 2, 830, 34, 3, 2, 2, 2, 831, 832, 7, 80, 2, 2, 832, 833, 7, 67, 2, 2, 833, 834, 7, 79, 2, 2, 834, 835, 7, 71, 2, 2, 835, 836, 7, 78, 2, 2, 836, 837, 7, 75, 2, 2, 837, 838, 7, 85, 2, 2, 838, 848, 7, 86, 2, 2, 839, 840, 7, 112, 2, 2, 840, 841, 7, 99, 2, 2, 841, 842, 7, 111, 2, 2, 842, 843, 7, 103, 2, 2, 843, 844, 7, 110, 2, 2, 844, 845, 7, 107, 2, 2, 845, 846, 7, 117, 2, 2, 846, 848, 7, 118, 2, 2, 847, 831, 3, 2, 2, 2, 847, 839, 3, 2, 2, 2, 848, 36, 3, 2, 2, 2, 849, 850, 7, 75, 2, 2, 850, 851, 7, 80, 2, 2, 851, 852, 7, 86, 2, 2, 852, 853, 7, 71, 2, 2, 853, 854, 7, 80, 2, 2, 854, 868, 7, 86, 2, 2, 855, 856, 7, 107, 2, 2, 856, 857, 7, 112, 2, 2, 857, 858, 7, 118, 2, 2, 858, 859, 7, 103, 2, 2, 859, 860, 7, 112, 2, 2, 860, 868, 7, 118, 2, 2, 861, 862, 7, 75, 2, 2, 862, 863, 7, 112, 2, 2, 863, 864, 7, 118, 2, 2, 864, 865, 7, 103, 2, 2, 865, 866, 7, 112, 2, 2, 866, 868, 7, 118, 2, 2, 867, 849, 3, 2, 2, 2, 867, 855, 3, 2, 2, 2, 867, 861, 3, 2, 2, 2, 868, 38, 3, 2, 2, 2, 869, 870, 7, 75, 2, 2, 870, 876, 7, 80, 2, 2, 871, 872, 7, 107, 2, 2, 872, 876, 7, 112, 2, 2, 873, 874, 7, 75, 2, 2, 874, 876, 7, 112, 2, 2, 875, 869, 3, 2, 2, 2, 875, 871, 3, 2, 2, 2, 875, 873, 3, 2, 2, 2, 876, 40, 3, 2, 2, 2, 877, 878, 7, 81, 2, 2, 878, 879, 7, 87, 2, 2, 879, 887, 7, 86, 2, 2, 880, 881, 7, 113, 2, 2, 881, 882, 7, 119, 2, 2, 882, 887, 7, 118, 2, 2, 883, 884, 7, 81, 2, 2, 884, 885, 7, 119, 2, 2, 885, 887, 7, 118, 2, 2, 886, 877, 3, 2, 2, 2, 886, 880, 3, 2, 2, 2, 886, 883, 3, 2, 2, 2, 887, 42, 3, 2, 2, 2, 888, 889, 7, 75, 2, 2, 889, 890, 7, 80, 2, 2, 890, 891, 7, 81, 2, 2, 891, 892, 7, 87, 2, 2, 892, 904, 7, 86, 2, 2, 893, 894, 7, 107, 2, 2, 894, 895, 7, 112, 2, 2, 895, 896, 7, 113, 2, 2, 896, 897, 7, 119, 2, 2, 897, 904, 7, 118, 2, 2, 898, 899, 7, 75, 2, 2, 899, 900, 7, 112, 2, 2, 900, 901, 7, 113, 2, 2, 901, 902, 7, 119, 2, 2, 902, 904, 7, 118, 2, 2, 903, 888, 3, 2, 2, 2, 903, 893, 3, 2, 2, 2, 903, 898, 3, 2, 2, 2, 904, 44, 3, 2, 2, 2, 905, 906, 7, 113, 2, 2, 906, 907, 7, 114, 2, 2, 907, 908, 7, 103, 2, 2, 908, 909, 7, 116, 2, 2, 909, 910, 7, 99, 2, 2, 910, 911, 7, 118, 2, 2, 911, 912, 7, 113, 2, 2, 912, 930, 7, 116, 2, 2, 913, 914, 7, 81, 2, 2, 914, 915, 7, 82, 2, 2, 915, 916, 7, 71, 2, 2, 916, 917, 7, 84, 2, 2, 917, 918, 7, 67, 2, 2, 918, 919, 7, 86, 2, 2, 919, 920, 7, 81, 2, 2, 920, 930, 7, 84, 2, 2, 921, 922, 7, 81, 2, 2, 922, 923, 7, 114, 2, 2, 923, 924, 7, 103, 2, 2, 924, 925, 7, 116, 2, 2, 925, 926, 7, 99, 2, 2, 926, 927, 7, 118, 2, 2, 927, 928, 7, 113, 2, 2, 928, 930, 7, 116, 2, 2, 929, 905, 3, 2, 2, 2, 929, 913, 3, 2, 2, 2, 929, 921, 3, 2, 2, 2, 930, 46, 3, 2, 2, 2, 931, 932, 7, 87, 2, 2, 932, 933, 7, 85, 2, 2, 933, 941, 7, 71, 2, 2, 934, 935, 7, 119, 2, 2, 935, 936, 7, 117, 2, 2, 936, 941, 7, 103, 2, 2, 937, 938, 7, 87, 2, 2, 938, 939, 7, 117, 2, 2, 939, 941, 7, 103, 2, 2, 940, 931, 3, 2, 2, 2, 940, 934, 3, 2, 2, 2, 940, 937, 3, 2, 2, 2, 941, 48, 3, 2, 2, 2, 942, 943, 7, 81, 2, 2, 943, 944, 7, 80, 2, 2, 944, 945, 7, 78, 2, 2, 945, 955, 7, 91, 2, 2, 946, 947, 7, 113, 2, 2, 947, 948, 7, 112, 2, 2, 948, 949, 7, 110, 2, 2, 949, 955, 7, 123, 2, 2, 950, 951, 7, 81, 2, 2, 951, 952, 7, 112, 2, 2, 952, 953, 7, 110, 2, 2, 953, 955, 7, 123, 2, 2, 954, 942, 3, 2, 2, 2, 954, 946, 3, 2, 2, 2, 954, 950, 3, 2, 2, 2, 955, 50, 3, 2, 2, 2, 956, 957, 7, 63, 2, 2, 957, 958, 7, 64, 2, 2, 958, 52, 3, 2, 2, 2, 959, 960, 7, 67, 2, 2, 960, 961, 7, 85, 2, 2, 961, 962, 7, 85, 2, 2, 962, 963, 7, 75, 2, 2, 963, 964, 7, 73, 2, 2, 964, 965, 7, 80, 2, 2, 965, 966, 7, 79, 2, 2, 966, 967, 7, 71, 2, 2, 967, 968, 7, 80, 2, 2, 968, 990, 7, 86, 2, 2, 969, 970, 7, 99, 2, 2, 970, 971, 7, 117, 2, 2, 971, 972, 7, 117, 2, 2, 972, 973, 7, 107, 2, 2, 973, 974, 7, 105, 2, 2, 974, 975, 7, 112, 2, 2, 975, 976, 7, 111, 2, 2, 976, 977, 7, 103, 2, 2, 977, 978, 7, 112, 2, 2, 978, 990, 7, 118, 2, 2, 979, 980, 7, 67, 2, 2, 980, 981, 7, 117, 2, 2, 981, 982, 7, 117, 2, 2, 982, 983, 7, 107, 2, 2, 983, 984, 7, 105, 2, 2, 984, 985, 7, 112, 2, 2, 985, 986, 7, 111, 2, 2, 986, 987, 7, 103, 2, 2, 987, 988, 7, 112, 2, 2, 988, 990, 7, 118, 2, 2, 989, 959, 3, 2, 2, 2, 989, 969, 3, 2, 2, 2, 989, 979, 3, 2, 2, 2, 990, 54, 3, 2, 2, 2, 991, 994, 7, 48, 2, 2, 992, 993, 7, 94, 2, 2, 993, 995, 7, 99, 2, 2, 994, 992, 3, 2, 2, 2, 995, 996, 3, 2, 2, 2, 996, 994, 3, 2, 2, 2, 996, 997, 3, 2, 2, 2, 997, 998, 3, 2, 2, 2, 998, 999, 7, 48, 2, 2, 999, 56, 3, 2, 2, 2, 1000, 1001, 7, 63, 2, 2, 1001, 1012, 7, 63, 2, 2, 1002, 1003, 7, 35, 2, 2, 1003, 1012, 7, 63, 2, 2, 1004, 1005, 7, 62, 2, 2, 1005, 1012, 7, 63, 2, 2, 1006, 1007, 7, 64, 2, 2, 1007, 1012, 7, 63, 2, 2, 1008, 1012, 9, 2, 2, 2, 1009, 1010, 7, 49, 2, 2, 1010, 1012, 7, 63, 2, 2, 1011, 1000, 3, 2, 2, 2, 1011, 1002, 3, 2, 2, 2, 1011, 1004, 3, 2, 2, 2, 1011, 1006, 3, 2, 2, 2, 1011, 1008, 3, 2, 2, 2, 1011, 1009, 3, 2, 2, 2, 1012, 58, 3, 2, 2, 2, 1013, 1014, 7, 70, 2, 2, 1014, 1015, 7, 81, 2, 2, 1015, 1016, 7, 87, 2, 2, 1016, 1017, 7, 68, 2, 2, 1017, 1018, 7, 78, 2, 2, 1018, 1019, 7, 71, 2, 2, 1019, 1020, 7, 82, 2, 2, 1020, 1021, 7, 84, 2, 2, 1021, 1022, 7, 71, 2, 2, 1022, 1023, 7, 69, 2, 2, 1023, 1024, 7, 75, 2, 2, 1024, 1025, 7, 85, 2, 2, 1025, 1026, 7, 75, 2, 2, 1026, 1027, 7, 81, 2, 2, 1027, 1076, 7, 80, 2, 2, 1028, 1029, 7, 102, 2, 2, 1029, 1030, 7, 113, 2, 2, 1030, 1031, 7, 119, 2, 2, 1031, 1032, 7, 100, 2, 2, 1032, 1033, 7, 110, 2, 2, 1033, 1034, 7, 103, 2, 2, 1034, 1035, 7, 114, 2, 2, 1035, 1036, 7, 116, 2, 2, 1036, 1037, 7, 103, 2, 2, 1037, 1038, 7, 101, 2, 2, 1038, 1039, 7, 107, 2, 2, 1039, 1040, 7, 117, 2, 2, 1040, 1041, 7, 107, 2, 2, 1041, 1042, 7, 113, 2, 2, 1042, 1076, 7, 112, 2, 2, 1043, 1044, 7, 102, 2, 2, 1044, 1045, 7, 113, 2, 2, 1045, 1046, 7, 119, 2, 2, 1046, 1047, 7, 100, 2, 2, 1047, 1048, 7, 110, 2, 2, 1048, 1049, 7, 103, 2, 2, 1049, 1050, 7, 34, 2, 2, 1050, 1051, 7, 114, 2, 2, 1051, 1052, 7, 116, 2, 2, 1052, 1053, 7, 103, 2, 2, 1053, 1054, 7, 101, 2, 2, 1054, 1055, 7, 107, 2, 2, 1055, 1056, 7, 117, 2, 2, 1056, 1057, 7, 107, 2, 2, 1057, 1058, 7, 113, 2, 2, 1058, 1076, 7, 112, 2, 2, 1059, 1060, 7, 70, 2, 2, 1060, 1061, 7, 81, 2, 2, 1061, 1062, 7, 87, 2, 2, 1062, 1063, 7, 68, 2, 2, 1063, 1064, 7, 78, 2, 2, 1064, 1065, 7, 71, 2, 2, 1065, 1066, 7, 34, 2, 2, 1066, 1067, 7, 82, 2, 2, 1067, 1068, 7, 84, 2, 2, 1068, 1069, 7, 71, 2, 2, 1069, 1070, 7, 69, 2, 2, 1070, 1071, 7, 75, 2, 2, 1071, 1072, 7, 85, 2, 2, 1072, 1073, 7, 75, 2, 2, 1073, 1074, 7, 81, 2, 2, 1074, 1076, 7, 80, 2, 2, 1075, 1013, 3, 2, 2, 2, 1075, 1028, 3, 2, 2, 2, 1075, 1043, 3, 2, 2, 2, 1075, 1059, 3, 2, 2, 2, 1076, 60, 3, 2, 2, 2, 1077, 1078, 7, 60, 2, 2, 1078, 1079, 7, 60, 2, 2, 1079, 62, 3, 2, 2, 2, 1080, 1081, 7, 99, 2, 2, 1081, 1082, 7, 117, 2, 2, 1082, 1083, 7, 117, 2, 2, 1083, 1084, 7, 107, 2, 2, 1084, 1085, 7, 105, 2, 2, 1085, 1099, 7, 112, 2, 2, 1086, 1087, 7, 67, 2, 2, 1087, 1088, 7, 85, 2, 2, 1088, 1089, 7, 85, 2, 2, 1089, 1090, 7, 75, 2, 2, 1090, 1091, 7, 73, 2, 2, 1091, 1099, 7, 80, 2, 2, 1092, 1093, 7, 67, 2, 2, 1093, 1094, 7, 117, 2, 2, 1094, 1095, 7, 117, 2, 2, 1095, 1096, 7, 107, 2, 2, 1096, 1097, 7, 105, 2, 2, 1097, 1099, 7, 112, 2, 2, 1098, 1080, 3, 2, 2, 2, 1098, 1086, 3, 2, 2, 2, 1098, 1092, 3, 2, 2, 2, 1099, 64, 3, 2, 2, 2, 1100, 1101, 7, 69, 2, 2, 1101, 1102, 7, 81, 2, 2, 1102, 1103, 7, 79, 2, 2, 1103, 1104, 7, 79, 2, 2, 1104, 1105, 7, 81, 2, 2, 1105, 1119, 7, 80, 2, 2, 1106, 1107, 7, 101, 2, 2, 1107, 1108, 7, 113, 2, 2, 1108, 1109, 7, 111, 2, 2, 1109, 1110, 7, 111, 2, 2, 1110, 1111, 7, 113, 2, 2, 1111, 1119, 7, 112, 2, 2, 1112, 1113, 7, 69, 2, 2, 1113, 1114, 7, 113, 2, 2, 1114, 1115, 7, 111, 2, 2, 1115, 1116, 7, 111, 2, 2, 1116, 1117, 7, 113, 2, 2, 1117, 1119, 7, 112, 2, 2, 1118, 1100, 3, 2, 2, 2, 1118, 1106, 3, 2, 2, 2, 1118, 1112, 3, 2, 2, 2, 1119, 66, 3, 2, 2, 2, 1120, 1121, 7, 71, 2, 2, 1121, 1122, 7, 78, 2, 2, 1122, 1123, 7, 85, 2, 2, 1123, 1124, 7, 71, 2, 2, 1124, 1125, 7, 89, 2, 2, 1125, 1126, 7, 74, 2, 2, 1126, 1127, 7, 71, 2, 2, 1127, 1128, 7, 84, 2, 2, 1128, 1148, 7, 71, 2, 2, 1129, 1130, 7, 103, 2, 2, 1130, 1131, 7, 110, 2, 2, 1131, 1132, 7, 117, 2, 2, 1132, 1133, 7, 103, 2, 2, 1133, 1134, 7, 121, 2, 2, 1134, 1135, 7, 106, 2, 2, 1135, 1136, 7, 103, 2, 2, 1136, 1137, 7, 116, 2, 2, 1137, 1148, 7, 103, 2, 2, 1138, 1139, 7, 71, 2, 2, 1139, 1140, 7, 110, 2, 2, 1140, 1141, 7, 117, 2, 2, 1141, 1142, 7, 103, 2, 2, 1142, 1143, 7, 121, 2, 2, 1143, 1144, 7, 106, 2, 2, 1144, 1145, 7, 103, 2, 2, 1145, 1146, 7, 116, 2, 2, 1146, 1148, 7, 103, 2, 2, 1147, 1120, 3, 2, 2, 2, 1147, 1129, 3, 2, 2, 2, 1147, 1138, 3, 2, 2, 2, 1148, 68, 3, 2, 2, 2, 1149, 1150, 7, 84, 2, 2, 1150, 1151, 7, 71, 2, 2, 1151, 1152, 7, 67, 2, 2, 1152, 1162, 7, 78, 2, 2, 1153, 1154, 7, 116, 2, 2, 1154, 1155, 7, 103, 2, 2, 1155, 1156, 7, 99, 2, 2, 1156, 1162, 7, 110, 2, 2, 1157, 1158, 7, 84, 2, 2, 1158, 1159, 7, 103, 2, 2, 1159, 1160, 7, 99, 2, 2, 1160, 1162, 7, 110, 2, 2, 1161, 1149, 3, 2, 2, 2, 1161, 1153, 3, 2, 2, 2, 1161, 1157, 3, 2, 2, 2, 1162, 70, 3, 2, 2, 2, 1163, 1164, 7, 71, 2, 2, 1164, 1165, 7, 83, 2, 2, 1165, 1166, 7, 87, 2, 2, 1166, 1167, 7, 75, 2, 2, 1167, 1168, 7, 88, 2, 2, 1168, 1169, 7, 67, 2, 2, 1169, 1170, 7, 78, 2, 2, 1170, 1171, 7, 71, 2, 2, 1171, 1172, 7, 80, 2, 2, 1172, 1173, 7, 69, 2, 2, 1173, 1197, 7, 71, 2, 2, 1174, 1175, 7, 103, 2, 2, 1175, 1176, 7, 115, 2, 2, 1176, 1177, 7, 119, 2, 2, 1177, 1178, 7, 107, 2, 2, 1178, 1179, 7, 120, 2, 2, 1179, 1180, 7, 99, 2, 2, 1180, 1181, 7, 110, 2, 2, 1181, 1182, 7, 103, 2, 2, 1182, 1183, 7, 112, 2, 2, 1183, 1184, 7, 101, 2, 2, 1184, 1197, 7, 103, 2, 2, 1185, 1186, 7, 71, 2, 2, 1186, 1187, 7, 115, 2, 2, 1187, 1188, 7, 119, 2, 2, 1188, 1189, 7, 107, 2, 2, 1189, 1190, 7, 120, 2, 2, 1190, 1191, 7, 99, 2, 2, 1191, 1192, 7, 110, 2, 2, 1192, 1193, 7, 103, 2, 2, 1193, 1194, 7, 112, 2, 2, 1194, 1195, 7, 101, 2, 2, 1195, 1197, 7, 103, 2, 2, 1196, 1163, 3, 2, 2, 2, 1196, 1174, 3, 2, 2, 2, 1196, 1185, 3, 2, 2, 2, 1197, 72, 3, 2, 2, 2, 1198, 1199, 7, 100, 2, 2, 1199, 1200, 7, 110, 2, 2, 1200, 1201, 7, 113, 2, 2, 1201, 1202, 7, 101, 2, 2, 1202, 1203, 7, 109, 2, 2, 1203, 1204, 7, 102, 2, 2, 1204, 1205, 7, 99, 2, 2, 1205, 1206, 7, 118, 2, 2, 1206, 1226, 7, 99, 2, 2, 1207, 1208, 7, 68, 2, 2, 1208, 1209, 7, 78, 2, 2, 1209, 1210, 7, 81, 2, 2, 1210, 1211, 7, 69, 2, 2, 1211, 1212, 7, 77, 2, 2, 1212, 1213, 7, 70, 2, 2, 1213, 1214, 7, 67, 2, 2, 1214, 1215, 7, 86, 2, 2, 1215, 1226, 7, 67, 2, 2, 1216, 1217, 7, 68, 2, 2, 1217, 1218, 7, 110, 2, 2, 1218, 1219, 7, 113, 2, 2, 1219, 1220, 7, 101, 2, 2, 1220, 1221, 7, 109, 2, 2, 1221, 1222, 7, 102, 2, 2, 1222, 1223, 7, 99, 2, 2, 1223, 1224, 7, 118, 2, 2, 1224, 1226, 7, 99, 2, 2, 1225, 1198, 3, 2, 2, 2, 1225, 1207, 3, 2, 2, 2, 1225, 1216, 3, 2, 2, 2, 1226, 74, 3, 2, 2, 2, 1227, 1228, 7, 114, 2, 2, 1228, 1229, 7, 113, 2, 2, 1229, 1230, 7, 107, 2, 2, 1230, 1231, 7, 112, 2, 2, 1231, 1232, 7, 118, 2, 2, 1232, 1233, 7, 103, 2, 2, 1233, 1249, 7, 116, 2, 2, 1234, 1235, 7, 82, 2, 2, 1235, 1236, 7, 81, 2, 2, 1236, 1237, 7, 75, 2, 2, 1237, 1238, 7, 80, 2, 2, 1238, 1239, 7, 86, 2, 2, 1239, 1240, 7, 71, 2, 2, 1240, 1249, 7, 84, 2, 2, 1241, 1242, 7, 82, 2, 2, 1242, 1243, 7, 113, 2, 2, 1243, 1244, 7, 107, 2, 2, 1244, 1245, 7, 112, 2, 2, 1245, 1246, 7, 118, 2, 2, 1246, 1247, 7, 103, 2, 2, 1247, 1249, 7, 116, 2, 2, 1248, 1227, 3, 2, 2, 2, 1248, 1234, 3, 2, 2, 2, 1248, 1241, 3, 2, 2, 2, 1249, 76, 3, 2, 2, 2, 1250, 1251, 7, 114, 2, 2, 1251, 1252, 7, 116, 2, 2, 1252, 1253, 7, 107, 2, 2, 1253, 1254, 7, 120, 2, 2, 1254, 1255, 7, 99, 2, 2, 1255, 1256, 7, 118, 2, 2, 1256, 1272, 7, 103, 2, 2, 1257, 1258, 7, 82, 2, 2, 1258, 1259, 7, 84, 2, 2, 1259, 1260, 7, 75, 2, 2, 1260, 1261, 7, 88, 2, 2, 1261, 1262, 7, 67, 2, 2, 1262, 1263, 7, 86, 2, 2, 1263, 1272, 7, 71, 2, 2, 1264, 1265, 7, 82, 2, 2, 1265, 1266, 7, 116, 2, 2, 1266, 1267, 7, 107, 2, 2, 1267, 1268, 7, 120, 2, 2, 1268, 1269, 7, 99, 2, 2, 1269, 1270, 7, 118, 2, 2, 1270, 1272, 7, 103, 2, 2, 1271, 1250, 3, 2, 2, 2, 1271, 1257, 3, 2, 2, 2, 1271, 1264, 3, 2, 2, 2, 1272, 78, 3, 2, 2, 2, 1273, 1274, 5, 77, 39, 2, 1274, 80, 3, 2, 2, 2, 1275, 1276, 7, 117, 2, 2, 1276, 1277, 7, 103, 2, 2, 1277, 1278, 7, 115, 2, 2, 1278, 1279, 7, 119, 2, 2, 1279, 1280, 7, 103, 2, 2, 1280, 1281, 7, 112, 2, 2, 1281, 1282, 7, 101, 2, 2, 1282, 1300, 7, 103, 2, 2, 1283, 1284, 7, 85, 2, 2, 1284, 1285, 7, 71, 2, 2, 1285, 1286, 7, 83, 2, 2, 1286, 1287, 7, 87, 2, 2, 1287, 1288, 7, 71, 2, 2, 1288, 1289, 7, 80, 2, 2, 1289, 1290, 7, 69, 2, 2, 1290, 1300, 7, 71, 2, 2, 1291, 1292, 7, 85, 2, 2, 1292, 1293, 7, 103, 2, 2, 1293, 1294, 7, 115, 2, 2, 1294, 1295, 7, 119, 2, 2, 1295, 1296, 7, 103, 2, 2, 1296, 1297, 7, 112, 2, 2, 1297, 1298, 7, 101, 2, 2, 1298, 1300, 7, 103, 2, 2, 1299, 1275, 3, 2, 2, 2, 1299, 1283, 3, 2, 2, 2, 1299, 1291, 3, 2, 2, 2, 1300, 82, 3, 2, 2, 2, 1301, 1302, 7, 114, 2, 2, 1302, 1303, 7, 119, 2, 2, 1303, 1304, 7, 100, 2, 2, 1304, 1305, 7, 110, 2, 2, 1305, 1306, 7, 107, 2, 2, 1306, 1320, 7, 101, 2, 2, 1307, 1308, 7, 82, 2, 2, 1308, 1309, 7, 87, 2, 2, 1309, 1310, 7, 68, 2, 2, 1310, 1311, 7, 78, 2, 2, 1311, 1312, 7, 75, 2, 2, 1312, 1320, 7, 69, 2, 2, 1313, 1314, 7, 82, 2, 2, 1314, 1315, 7, 119, 2, 2, 1315, 1316, 7, 100, 2, 2, 1316, 1317, 7, 110, 2, 2, 1317, 1318, 7, 107, 2, 2, 1318, 1320, 7, 101, 2, 2, 1319, 1301, 3, 2, 2, 2, 1319, 1307, 3, 2, 2, 2, 1319, 1313, 3, 2, 2, 2, 1320, 84, 3, 2, 2, 2, 1321, 1324, 5, 79, 40, 2, 1322, 1324, 5, 83, 42, 2, 1323, 1321, 3, 2, 2, 2, 1323, 1322, 3, 2, 2, 2, 1324, 86, 3, 2, 2, 2, 1325, 1326, 7, 107, 2, 2, 1326, 1327, 7, 111, 2, 2, 1327, 1328, 7, 114, 2, 2, 1328, 1329, 7, 110, 2, 2, 1329, 1330, 7, 107, 2, 2, 1330, 1331, 7, 101, 2, 2, 1331, 1332, 7, 107, 2, 2, 1332, 1350, 7, 118, 2, 2, 1333, 1334, 7, 75, 2, 2, 1334, 1335, 7, 79, 2, 2, 1335, 1336, 7, 82, 2, 2, 1336, 1337, 7, 78, 2, 2, 1337, 1338, 7, 75, 2, 2, 1338, 1339, 7, 69, 2, 2, 1339, 1340, 7, 75, 2, 2, 1340, 1350, 7, 86, 2, 2, 1341, 1342, 7, 75, 2, 2, 1342, 1343, 7, 111, 2, 2, 1343, 1344, 7, 114, 2, 2, 1344, 1345, 7, 110, 2, 2, 1345, 1346, 7, 107, 2, 2, 1346, 1347, 7, 101, 2, 2, 1347, 1348, 7, 107, 2, 2, 1348, 1350, 7, 118, 2, 2, 1349, 1325, 3, 2, 2, 2, 1349, 1333, 3, 2, 2, 2, 1349, 1341, 3, 2, 2, 2, 1350, 88, 3, 2, 2, 2, 1351, 1352, 7, 112, 2, 2, 1352, 1353, 7, 113, 2, 2, 1353, 1354, 7, 112, 2, 2, 1354, 1364, 7, 103, 2, 2, 1355, 1356, 7, 80, 2, 2, 1356, 1357, 7, 81, 2, 2, 1357, 1358, 7, 80, 2, 2, 1358, 1364, 7, 71, 2, 2, 1359, 1360, 7, 80, 2, 2, 1360, 1361, 7, 113, 2, 2, 1361, 1362, 7, 112, 2, 2, 1362, 1364, 7, 103, 2, 2, 1363, 1351, 3, 2, 2, 2, 1363, 1355, 3, 2, 2, 2, 1363, 1359, 3, 2, 2, 2, 1364, 90, 3, 2, 2, 2, 1365, 1366, 7, 101, 2, 2, 1366, 1367, 7, 106, 2, 2, 1367, 1368, 7, 99, 2, 2, 1368, 1369, 7, 116, 2, 2, 1369, 1370, 7, 99, 2, 2, 1370, 1371, 7, 101, 2, 2, 1371, 1372, 7, 118, 2, 2, 1372, 1373, 7, 103, 2, 2, 1373, 1393, 7, 116, 2, 2, 1374, 1375, 7, 69, 2, 2, 1375, 1376, 7, 74, 2, 2, 1376, 1377, 7, 67, 2, 2, 1377, 1378, 7, 84, 2, 2, 1378, 1379, 7, 67, 2, 2, 1379, 1380, 7, 69, 2, 2, 1380, 1381, 7, 86, 2, 2, 1381, 1382, 7, 71, 2, 2, 1382, 1393, 7, 84, 2, 2, 1383, 1384, 7, 69, 2, 2, 1384, 1385, 7, 106, 2, 2, 1385, 1386, 7, 99, 2, 2, 1386, 1387, 7, 116, 2, 2, 1387, 1388, 7, 99, 2, 2, 1388, 1389, 7, 101, 2, 2, 1389, 1390, 7, 118, 2, 2, 1390, 1391, 7, 103, 2, 2, 1391, 1393, 7, 116, 2, 2, 1392, 1365, 3, 2, 2, 2, 1392, 1374, 3, 2, 2, 2, 1392, 1383, 3, 2, 2, 2, 1393, 92, 3, 2, 2, 2, 1394, 1395, 7, 114, 2, 2, 1395, 1396, 7, 99, 2, 2, 1396, 1397, 7, 116, 2, 2, 1397, 1398, 7, 99, 2, 2, 1398, 1399, 7, 111, 2, 2, 1399, 1400, 7, 103, 2, 2, 1400, 1401, 7, 118, 2, 2, 1401, 1402, 7, 103, 2, 2, 1402, 1422, 7, 116, 2, 2, 1403, 1404, 7, 82, 2, 2, 1404, 1405, 7, 67, 2, 2, 1405, 1406, 7, 84, 2, 2, 1406, 1407, 7, 67, 2, 2, 1407, 1408, 7, 79, 2, 2, 1408, 1409, 7, 71, 2, 2, 1409, 1410, 7, 86, 2, 2, 1410, 1411, 7, 71, 2, 2, 1411, 1422, 7, 84, 2, 2, 1412, 1413, 7, 82, 2, 2, 1413, 1414, 7, 99, 2, 2, 1414, 1415, 7, 116, 2, 2, 1415, 1416, 7, 99, 2, 2, 1416, 1417, 7, 111, 2, 2, 1417, 1418, 7, 103, 2, 2, 1418, 1419, 7, 118, 2, 2, 1419, 1420, 7, 103, 2, 2, 1420, 1422, 7, 116, 2, 2, 1421, 1394, 3, 2, 2, 2, 1421, 1403, 3, 2, 2, 2, 1421, 1412, 3, 2, 2, 2, 1422, 94, 3, 2, 2, 2, 1423, 1424, 7, 103, 2, 2, 1424, 1425, 7, 122, 2, 2, 1425, 1426, 7, 118, 2, 2, 1426, 1427, 7, 103, 2, 2, 1427, 1428, 7, 116, 2, 2, 1428, 1429, 7, 112, 2, 2, 1429, 1430, 7, 99, 2, 2, 1430, 1448, 7, 110, 2, 2, 1431, 1432, 7, 71, 2, 2, 1432, 1433, 7, 90, 2, 2, 1433, 1434, 7, 86, 2, 2, 1434, 1435, 7, 71, 2, 2, 1435, 1436, 7, 84, 2, 2, 1436, 1437, 7, 80, 2, 2, 1437, 1438, 7, 67, 2, 2, 1438, 1448, 7, 78, 2, 2, 1439, 1440, 7, 71, 2, 2, 1440, 1441, 7, 122, 2, 2, 1441, 1442, 7, 118, 2, 2, 1442, 1443, 7, 103, 2, 2, 1443, 1444, 7, 116, 2, 2, 1444, 1445, 7, 112, 2, 2, 1445, 1446, 7, 99, 2, 2, 1446, 1448, 7, 110, 2, 2, 1447, 1423, 3, 2, 2, 2, 1447, 1431, 3, 2, 2, 2, 1447, 1439, 3, 2, 2, 2, 1448, 96, 3, 2, 2, 2, 1449, 1450, 7, 107, 2, 2, 1450, 1451, 7, 112, 2, 2, 1451, 1452, 7, 118, 2, 2, 1452, 1453, 7, 116, 2, 2, 1453, 1454, 7, 107, 2, 2, 1454, 1455, 7, 112, 2, 2, 1455, 1456, 7, 117, 2, 2, 1456, 1457, 7, 107, 2, 2, 1457, 1477, 7, 101, 2, 2, 1458, 1459, 7, 75, 2, 2, 1459, 1460, 7, 80, 2, 2, 1460, 1461, 7, 86, 2, 2, 1461, 1462, 7, 84, 2, 2, 1462, 1463, 7, 75, 2, 2, 1463, 1464, 7, 80, 2, 2, 1464, 1465, 7, 85, 2, 2, 1465, 1466, 7, 75, 2, 2, 1466, 1477, 7, 69, 2, 2, 1467, 1468, 7, 75, 2, 2, 1468, 1469, 7, 112, 2, 2, 1469, 1470, 7, 118, 2, 2, 1470, 1471, 7, 116, 2, 2, 1471, 1472, 7, 107, 2, 2, 1472, 1473, 7, 112, 2, 2, 1473, 1474, 7, 117, 2, 2, 1474, 1475, 7, 107, 2, 2, 1475, 1477, 7, 101, 2, 2, 1476, 1449, 3, 2, 2, 2, 1476, 1458, 3, 2, 2, 2, 1476, 1467, 3, 2, 2, 2, 1477, 98, 3, 2, 2, 2, 1478, 1479, 7, 117, 2, 2, 1479, 1480, 7, 99, 2, 2, 1480, 1481, 7, 120, 2, 2, 1481, 1491, 7, 103, 2, 2, 1482, 1483, 7, 85, 2, 2, 1483, 1484, 7, 67, 2, 2, 1484, 1485, 7, 88, 2, 2, 1485, 1491, 7, 71, 2, 2, 1486, 1487, 7, 85, 2, 2, 1487, 1488, 7, 99, 2, 2, 1488, 1489, 7, 120, 2, 2, 1489, 1491, 7, 103, 2, 2, 1490, 1478, 3, 2, 2, 2, 1490, 1482, 3, 2, 2, 2, 1490, 1486, 3, 2, 2, 2, 1491, 100, 3, 2, 2, 2, 1492, 1493, 7, 102, 2, 2, 1493, 1494, 7, 99, 2, 2, 1494, 1495, 7, 118, 2, 2, 1495, 1505, 7, 99, 2, 2, 1496, 1497, 7, 70, 2, 2, 1497, 1498, 7, 67, 2, 2, 1498, 1499, 7, 86, 2, 2, 1499, 1505, 7, 67, 2, 2, 1500, 1501, 7, 70, 2, 2, 1501, 1502, 7, 99, 2, 2, 1502, 1503, 7, 118, 2, 2, 1503, 1505, 7, 99, 2, 2, 1504, 1492, 3, 2, 2, 2, 1504, 1496, 3, 2, 2, 2, 1504, 1500, 3, 2, 2, 2, 1505, 102, 3, 2, 2, 2, 1506, 1507, 7, 73, 2, 2, 1507, 1513, 7, 81, 2, 2, 1508, 1509, 7, 105, 2, 2, 1509, 1513, 7, 113, 2, 2, 1510, 1511, 7, 73, 2, 2, 1511, 1513, 7, 113, 2, 2, 1512, 1506, 3, 2, 2, 2, 1512, 1508, 3, 2, 2, 2, 1512, 1510, 3, 2, 2, 2, 1513, 104, 3, 2, 2, 2, 1514, 1515, 7, 73, 2, 2, 1515, 1516, 7, 81, 2, 2, 1516, 1517, 7, 86, 2, 2, 1517, 1527, 7, 81, 2, 2, 1518, 1519, 7, 105, 2, 2, 1519, 1520, 7, 113, 2, 2, 1520, 1521, 7, 118, 2, 2, 1521, 1527, 7, 113, 2, 2, 1522, 1523, 7, 73, 2, 2, 1523, 1524, 7, 113, 2, 2, 1524, 1525, 7, 118, 2, 2, 1525, 1527, 7, 113, 2, 2, 1526, 1514, 3, 2, 2, 2, 1526, 1518, 3, 2, 2, 2, 1526, 1522, 3, 2, 2, 2, 1527, 106, 3, 2, 2, 2, 1528, 1529, 7, 75, 2, 2, 1529, 1535, 7, 72, 2, 2, 1530, 1531, 7, 107, 2, 2, 1531, 1535, 7, 104, 2, 2, 1532, 1533, 7, 75, 2, 2, 1533, 1535, 7, 104, 2, 2, 1534, 1528, 3, 2, 2, 2, 1534, 1530, 3, 2, 2, 2, 1534, 1532, 3, 2, 2, 2, 1535, 108, 3, 2, 2, 2, 1536, 1537, 7, 86, 2, 2, 1537, 1538, 7, 74, 2, 2, 1538, 1539, 7, 71, 2, 2, 1539, 1545, 7, 80, 2, 2, 1540, 1541, 7, 118, 2, 2, 1541, 1542, 7, 106, 2, 2, 1542, 1543, 7, 103, 2, 2, 1543, 1545, 7, 112, 2, 2, 1544, 1536, 3, 2, 2, 2, 1544, 1540, 3, 2, 2, 2, 1545, 110, 3, 2, 2, 2, 1546, 1547, 7, 71, 2, 2, 1547, 1548, 7, 78, 2, 2, 1548, 1549, 7, 85, 2, 2, 1549, 1555, 7, 71, 2, 2, 1550, 1551, 7, 103, 2, 2, 1551, 1552, 7, 110, 2, 2, 1552, 1553, 7, 117, 2, 2, 1553, 1555, 7, 103, 2, 2, 1554, 1546, 3, 2, 2, 2, 1554, 1550, 3, 2, 2, 2, 1555, 112, 3, 2, 2, 2, 1556, 1557, 7, 71, 2, 2, 1557, 1558, 7, 80, 2, 2, 1558, 1559, 7, 70, 2, 2, 1559, 1560, 7, 75, 2, 2, 1560, 1567, 7, 72, 2, 2, 1561, 1562, 7, 103, 2, 2, 1562, 1563, 7, 112, 2, 2, 1563, 1564, 7, 102, 2, 2, 1564, 1565, 7, 107, 2, 2, 1565, 1567, 7, 104, 2, 2, 1566, 1556, 3, 2, 2, 2, 1566, 1561, 3, 2, 2, 2, 1567, 114, 3, 2, 2, 2, 1568, 1569, 7, 84, 2, 2, 1569, 1570, 7, 71, 2, 2, 1570, 1571, 7, 85, 2, 2, 1571, 1572, 7, 87, 2, 2, 1572, 1573, 7, 78, 2, 2, 1573, 1581, 7, 86, 2, 2, 1574, 1575, 7, 116, 2, 2, 1575, 1576, 7, 103, 2, 2, 1576, 1577, 7, 117, 2, 2, 1577, 1578, 7, 119, 2, 2, 1578, 1579, 7, 110, 2, 2, 1579, 1581, 7, 118, 2, 2, 1580, 1568, 3, 2, 2, 2, 1580, 1574, 3, 2, 2, 2, 1581, 116, 3, 2, 2, 2, 1582, 1583, 7, 71, 2, 2, 1583, 1584, 7, 78, 2, 2, 1584, 1585, 7, 85, 2, 2, 1585, 1586, 7, 71, 2, 2, 1586, 1587, 7, 75, 2, 2, 1587, 1601, 7, 72, 2, 2, 1588, 1589, 7, 103, 2, 2, 1589, 1590, 7, 110, 2, 2, 1590, 1591, 7, 117, 2, 2, 1591, 1592, 7, 103, 2, 2, 1592, 1593, 7, 107, 2, 2, 1593, 1601, 7, 104, 2, 2, 1594, 1595, 7, 71, 2, 2, 1595, 1596, 7, 110, 2, 2, 1596, 1597, 7, 117, 2, 2, 1597, 1598, 7, 103, 2, 2, 1598, 1599, 7, 107, 2, 2, 1599, 1601, 7, 104, 2, 2, 1600, 1582, 3, 2, 2, 2, 1600, 1588, 3, 2, 2, 2, 1600, 1594, 3, 2, 2, 2, 1601, 118, 3, 2, 2, 2, 1602, 1603, 7, 70, 2, 2, 1603, 1609, 7, 81, 2, 2, 1604, 1605, 7, 102, 2, 2, 1605, 1609, 7, 113, 2, 2, 1606, 1607, 7, 70, 2, 2, 1607, 1609, 7, 113, 2, 2, 1608, 1602, 3, 2, 2, 2, 1608, 1604, 3, 2, 2, 2, 1608, 1606, 3, 2, 2, 2, 1609, 120, 3, 2, 2, 2, 1610, 1611, 7, 75, 2, 2, 1611, 1612, 7, 80, 2, 2, 1612, 1613, 7, 69, 2, 2, 1613, 1614, 7, 78, 2, 2, 1614, 1615, 7, 87, 2, 2, 1615, 1616, 7, 70, 2, 2, 1616, 1632, 7, 71, 2, 2, 1617, 1618, 7, 107, 2, 2, 1618, 1619, 7, 112, 2, 2, 1619, 1620, 7, 101, 2, 2, 1620, 1621, 7, 110, 2, 2, 1621, 1622, 7, 119, 2, 2, 1622, 1623, 7, 102, 2, 2, 1623, 1632, 7, 103, 2, 2, 1624, 1625, 7, 75, 2, 2, 1625, 1626, 7, 112, 2, 2, 1626, 1627, 7, 101, 2, 2, 1627, 1628, 7, 110, 2, 2, 1628, 1629, 7, 119, 2, 2, 1629, 1630, 7, 102, 2, 2, 1630, 1632, 7, 103, 2, 2, 1631, 1610, 3, 2, 2, 2, 1631, 1617, 3, 2, 2, 2, 1631, 1624, 3, 2, 2, 2, 1632, 122, 3, 2, 2, 2, 1633, 1634, 7, 69, 2, 2, 1634, 1635, 7, 81, 2, 2, 1635, 1636, 7, 80, 2, 2, 1636, 1637, 7, 86, 2, 2, 1637, 1638, 7, 75, 2, 2, 1638, 1639, 7, 80, 2, 2, 1639, 1640, 7, 87, 2, 2, 1640, 1658, 7, 71, 2, 2, 1641, 1642, 7, 101, 2, 2, 1642, 1643, 7, 113, 2, 2, 1643, 1644, 7, 112, 2, 2, 1644, 1645, 7, 118, 2, 2, 1645, 1646, 7, 107, 2, 2, 1646, 1647, 7, 112, 2, 2, 1647, 1648, 7, 119, 2, 2, 1648, 1658, 7, 103, 2, 2, 1649, 1650, 7, 69, 2, 2, 1650, 1651, 7, 113, 2, 2, 1651, 1652, 7, 112, 2, 2, 1652, 1653, 7, 118, 2, 2, 1653, 1654, 7, 107, 2, 2, 1654, 1655, 7, 112, 2, 2, 1655, 1656, 7, 119, 2, 2, 1656, 1658, 7, 103, 2, 2, 1657, 1633, 3, 2, 2, 2, 1657, 1641, 3, 2, 2, 2, 1657, 1649, 3, 2, 2, 2, 1658, 124, 3, 2, 2, 2, 1659, 1660, 7, 71, 2, 2, 1660, 1661, 7, 80, 2, 2, 1661, 1662, 7, 70, 2, 2, 1662, 1663, 7, 89, 2, 2, 1663, 1664, 7, 74, 2, 2, 1664, 1665, 7, 71, 2, 2, 1665, 1666, 7, 84, 2, 2, 1666, 1684, 7, 71, 2, 2, 1667, 1668, 7, 103, 2, 2, 1668, 1669, 7, 112, 2, 2, 1669, 1670, 7, 102, 2, 2, 1670, 1671, 7, 121, 2, 2, 1671, 1672, 7, 106, 2, 2, 1672, 1673, 7, 103, 2, 2, 1673, 1674, 7, 116, 2, 2, 1674, 1684, 7, 103, 2, 2, 1675, 1676, 7, 71, 2, 2, 1676, 1677, 7, 112, 2, 2, 1677, 1678, 7, 102, 2, 2, 1678, 1679, 7, 121, 2, 2, 1679, 1680, 7, 106, 2, 2, 1680, 1681, 7, 103, 2, 2, 1681, 1682, 7, 116, 2, 2, 1682, 1684, 7, 103, 2, 2, 1683, 1659, 3, 2, 2, 2, 1683, 1667, 3, 2, 2, 2, 1683, 1675, 3, 2, 2, 2, 1684, 126, 3, 2, 2, 2, 1685, 1686, 7, 89, 2, 2, 1686, 1687, 7, 74, 2, 2, 1687, 1688, 7, 71, 2, 2, 1688, 1689, 7, 84, 2, 2, 1689, 1701, 7, 71, 2, 2, 1690, 1691, 7, 121, 2, 2, 1691, 1692, 7, 106, 2, 2, 1692, 1693, 7, 103, 2, 2, 1693, 1694, 7, 116, 2, 2, 1694, 1701, 7, 103, 2, 2, 1695, 1696, 7, 89, 2, 2, 1696, 1697, 7, 106, 2, 2, 1697, 1698, 7, 103, 2, 2, 1698, 1699, 7, 116, 2, 2, 1699, 1701, 7, 103, 2, 2, 1700, 1685, 3, 2, 2, 2, 1700, 1690, 3, 2, 2, 2, 1700, 1695, 3, 2, 2, 2, 1701, 128, 3, 2, 2, 2, 1702, 1703, 7, 71, 2, 2, 1703, 1704, 7, 80, 2, 2, 1704, 1705, 7, 70, 2, 2, 1705, 1706, 7, 85, 2, 2, 1706, 1707, 7, 71, 2, 2, 1707, 1708, 7, 78, 2, 2, 1708, 1709, 7, 71, 2, 2, 1709, 1710, 7, 69, 2, 2, 1710, 1721, 7, 86, 2, 2, 1711, 1712, 7, 103, 2, 2, 1712, 1713, 7, 112, 2, 2, 1713, 1714, 7, 102, 2, 2, 1714, 1715, 7, 117, 2, 2, 1715, 1716, 7, 103, 2, 2, 1716, 1717, 7, 110, 2, 2, 1717, 1718, 7, 103, 2, 2, 1718, 1719, 7, 101, 2, 2, 1719, 1721, 7, 118, 2, 2, 1720, 1702, 3, 2, 2, 2, 1720, 1711, 3, 2, 2, 2, 1721, 130, 3, 2, 2, 2, 1722, 1723, 7, 85, 2, 2, 1723, 1724, 7, 71, 2, 2, 1724, 1725, 7, 78, 2, 2, 1725, 1726, 7, 71, 2, 2, 1726, 1727, 7, 69, 2, 2, 1727, 1728, 7, 86, 2, 2, 1728, 1729, 7, 69, 2, 2, 1729, 1730, 7, 67, 2, 2, 1730, 1731, 7, 85, 2, 2, 1731, 1743, 7, 71, 2, 2, 1732, 1733, 7, 117, 2, 2, 1733, 1734, 7, 103, 2, 2, 1734, 1735, 7, 110, 2, 2, 1735, 1736, 7, 103, 2, 2, 1736, 1737, 7, 101, 2, 2, 1737, 1738, 7, 118, 2, 2, 1738, 1739, 7, 101, 2, 2, 1739, 1740, 7, 99, 2, 2, 1740, 1741, 7, 117, 2, 2, 1741, 1743, 7, 103, 2, 2, 1742, 1722, 3, 2, 2, 2, 1742, 1732, 3, 2, 2, 2, 1743, 132, 3, 2, 2, 2, 1744, 1745, 7, 85, 2, 2, 1745, 1746, 7, 71, 2, 2, 1746, 1747, 7, 78, 2, 2, 1747, 1748, 7, 71, 2, 2, 1748, 1749, 7, 69, 2, 2, 1749, 1757, 7, 86, 2, 2, 1750, 1751, 7, 117, 2, 2, 1751, 1752, 7, 103, 2, 2, 1752, 1753, 7, 110, 2, 2, 1753, 1754, 7, 103, 2, 2, 1754, 1755, 7, 101, 2, 2, 1755, 1757, 7, 118, 2, 2, 1756, 1744, 3, 2, 2, 2, 1756, 1750, 3, 2, 2, 2, 1757, 134, 3, 2, 2, 2, 1758, 1759, 7, 101, 2, 2, 1759, 1760, 7, 99, 2, 2, 1760, 1761, 7, 117, 2, 2, 1761, 1771, 7, 103, 2, 2, 1762, 1763, 7, 69, 2, 2, 1763, 1764, 7, 67, 2, 2, 1764, 1765, 7, 85, 2, 2, 1765, 1771, 7, 71, 2, 2, 1766, 1767, 7, 69, 2, 2, 1767, 1768, 7, 99, 2, 2, 1768, 1769, 7, 117, 2, 2, 1769, 1771, 7, 103, 2, 2, 1770, 1758, 3, 2, 2, 2, 1770, 1762, 3, 2, 2, 2, 1770, 1766, 3, 2, 2, 2, 1771, 136, 3, 2, 2, 2, 1772, 1773, 7, 70, 2, 2, 1773, 1774, 7, 71, 2, 2, 1774, 1775, 7, 72, 2, 2, 1775, 1776, 7, 67, 2, 2, 1776, 1777, 7, 87, 2, 2, 1777, 1778, 7, 78, 2, 2, 1778, 1794, 7, 86, 2, 2, 1779, 1780, 7, 102, 2, 2, 1780, 1781, 7, 103, 2, 2, 1781, 1782, 7, 104, 2, 2, 1782, 1783, 7, 99, 2, 2, 1783, 1784, 7, 119, 2, 2, 1784, 1785, 7, 110, 2, 2, 1785, 1794, 7, 118, 2, 2, 1786, 1787, 7, 70, 2, 2, 1787, 1788, 7, 103, 2, 2, 1788, 1789, 7, 104, 2, 2, 1789, 1790, 7, 99, 2, 2, 1790, 1791, 7, 119, 2, 2, 1791, 1792, 7, 110, 2, 2, 1792, 1794, 7, 118, 2, 2, 1793, 1772, 3, 2, 2, 2, 1793, 1779, 3, 2, 2, 2, 1793, 1786, 3, 2, 2, 2, 1794, 138, 3, 2, 2, 2, 1795, 1796, 7, 70, 2, 2, 1796, 1797, 7, 75, 2, 2, 1797, 1798, 7, 84, 2, 2, 1798, 1799, 7, 71, 2, 2, 1799, 1800, 7, 69, 2, 2, 1800, 1814, 7, 86, 2, 2, 1801, 1802, 7, 102, 2, 2, 1802, 1803, 7, 107, 2, 2, 1803, 1804, 7, 116, 2, 2, 1804, 1805, 7, 103, 2, 2, 1805, 1806, 7, 101, 2, 2, 1806, 1814, 7, 118, 2, 2, 1807, 1808, 7, 70, 2, 2, 1808, 1809, 7, 107, 2, 2, 1809, 1810, 7, 116, 2, 2, 1810, 1811, 7, 103, 2, 2, 1811, 1812, 7, 101, 2, 2, 1812, 1814, 7, 118, 2, 2, 1813, 1795, 3, 2, 2, 2, 1813, 1801, 3, 2, 2, 2, 1813, 1807, 3, 2, 2, 2, 1814, 140, 3, 2, 2, 2, 1815, 1816, 7, 85, 2, 2, 1816, 1817, 7, 86, 2, 2, 1817, 1818, 7, 81, 2, 2, 1818, 1828, 7, 82, 2, 2, 1819, 1820, 7, 117, 2, 2, 1820, 1821, 7, 118, 2, 2, 1821, 1822, 7, 113, 2, 2, 1822, 1828, 7, 114, 2, 2, 1823, 1824, 7, 85, 2, 2, 1824, 1825, 7, 118, 2, 2, 1825, 1826, 7, 113, 2, 2, 1826, 1828, 7, 114, 2, 2, 1827, 1815, 3, 2, 2, 2, 1827, 1819, 3, 2, 2, 2, 1827, 1823, 3, 2, 2, 2, 1828, 142, 3, 2, 2, 2, 1829, 1830, 7, 84, 2, 2, 1830, 1831, 7, 71, 2, 2, 1831, 1839, 7, 69, 2, 2, 1832, 1833, 7, 116, 2, 2, 1833, 1834, 7, 103, 2, 2, 1834, 1839, 7, 101, 2, 2, 1835, 1836, 7, 84, 2, 2, 1836, 1837, 7, 103, 2, 2, 1837, 1839, 7, 101, 2, 2, 1838, 1829, 3, 2, 2, 2, 1838, 1832, 3, 2, 2, 2, 1838, 1835, 3, 2, 2, 2, 1839, 144, 3, 2, 2, 2, 1840, 1841, 7, 71, 2, 2, 1841, 1842, 7, 80, 2, 2, 1842, 1843, 7, 70, 2, 2, 1843, 1844, 7, 70, 2, 2, 1844, 1851, 7, 81, 2, 2, 1845, 1846, 7, 103, 2, 2, 1846, 1847, 7, 112, 2, 2, 1847, 1848, 7, 102, 2, 2, 1848, 1849, 7, 102, 2, 2, 1849, 1851, 7, 113, 2, 2, 1850, 1840, 3, 2, 2, 2, 1850, 1845, 3, 2, 2, 2, 1851, 146, 3, 2, 2, 2, 1852, 1853, 7, 114, 2, 2, 1853, 1854, 7, 99, 2, 2, 1854, 1855, 7, 119, 2, 2, 1855, 1856, 7, 117, 2, 2, 1856, 1863, 7, 103, 2, 2, 1857, 1858, 7, 82, 2, 2, 1858, 1859, 7, 67, 2, 2, 1859, 1860, 7, 87, 2, 2, 1860, 1861, 7, 85, 2, 2, 1861, 1863, 7, 71, 2, 2, 1862, 1852, 3, 2, 2, 2, 1862, 1857, 3, 2, 2, 2, 1863, 148, 3, 2, 2, 2, 1864, 1865, 7, 89, 2, 2, 1865, 1866, 7, 84, 2, 2, 1866, 1867, 7, 75, 2, 2, 1867, 1868, 7, 86, 2, 2, 1868, 1875, 7, 71, 2, 2, 1869, 1870, 7, 121, 2, 2, 1870, 1871, 7, 116, 2, 2, 1871, 1872, 7, 107, 2, 2, 1872, 1873, 7, 118, 2, 2, 1873, 1875, 7, 103, 2, 2, 1874, 1864, 3, 2, 2, 2, 1874, 1869, 3, 2, 2, 2, 1875, 150, 3, 2, 2, 2, 1876, 1877, 7, 84, 2, 2, 1877, 1878, 7, 71, 2, 2, 1878, 1879, 7, 67, 2, 2, 1879, 1885, 7, 70, 2, 2, 1880, 1881, 7, 116, 2, 2, 1881, 1882, 7, 103, 2, 2, 1882, 1883, 7, 99, 2, 2, 1883, 1885, 7, 102, 2, 2, 1884, 1876, 3, 2, 2, 2, 1884, 1880, 3, 2, 2, 2, 1885, 152, 3, 2, 2, 2, 1886, 1887, 7, 82, 2, 2, 1887, 1888, 7, 84, 2, 2, 1888, 1889, 7, 75, 2, 2, 1889, 1890, 7, 80, 2, 2, 1890, 1897, 7, 86, 2, 2, 1891, 1892, 7, 114, 2, 2, 1892, 1893, 7, 116, 2, 2, 1893, 1894, 7, 107, 2, 2, 1894, 1895, 7, 112, 2, 2, 1895, 1897, 7, 118, 2, 2, 1896, 1886, 3, 2, 2, 2, 1896, 1891, 3, 2, 2, 2, 1897, 154, 3, 2, 2, 2, 1898, 1899, 7, 81, 2, 2, 1899, 1900, 7, 82, 2, 2, 1900, 1901, 7, 71, 2, 2, 1901, 1907, 7, 80, 2, 2, 1902, 1903, 7, 113, 2, 2, 1903, 1904, 7, 114, 2, 2, 1904, 1905, 7, 103, 2, 2, 1905, 1907, 7, 112, 2, 2, 1906, 1898, 3, 2, 2, 2, 1906, 1902, 3, 2, 2, 2, 1907, 156, 3, 2, 2, 2, 1908, 1909, 7, 72, 2, 2, 1909, 1910, 7, 79, 2, 2, 1910, 1915, 7, 86, 2, 2, 1911, 1912, 7, 104, 2, 2, 1912, 1913, 7, 111, 2, 2, 1913, 1915, 7, 118, 2, 2, 1914, 1908, 3, 2, 2, 2, 1914, 1911, 3, 2, 2, 2, 1915, 158, 3, 2, 2, 2, 1916, 1917, 7, 87, 2, 2, 1917, 1918, 7, 80, 2, 2, 1918, 1919, 7, 75, 2, 2, 1919, 1925, 7, 86, 2, 2, 1920, 1921, 7, 119, 2, 2, 1921, 1922, 7, 112, 2, 2, 1922, 1923, 7, 107, 2, 2, 1923, 1925, 7, 118, 2, 2, 1924, 1916, 3, 2, 2, 2, 1924, 1920, 3, 2, 2, 2, 1925, 160, 3, 2, 2, 2, 1926, 1927, 7, 82, 2, 2, 1927, 1928, 7, 67, 2, 2, 1928, 1933, 7, 70, 2, 2, 1929, 1930, 7, 114, 2, 2, 1930, 1931, 7, 99, 2, 2, 1931, 1933, 7, 102, 2, 2, 1932, 1926, 3, 2, 2, 2, 1932, 1929, 3, 2, 2, 2, 1933, 162, 3, 2, 2, 2, 1934, 1935, 7, 67, 2, 2, 1935, 1936, 7, 69, 2, 2, 1936, 1937, 7, 86, 2, 2, 1937, 1938, 7, 75, 2, 2, 1938, 1939, 7, 81, 2, 2, 1939, 1947, 7, 80, 2, 2, 1940, 1941, 7, 99, 2, 2, 1941, 1942, 7, 101, 2, 2, 1942, 1943, 7, 118, 2, 2, 1943, 1944, 7, 107, 2, 2, 1944, 1945, 7, 113, 2, 2, 1945, 1947, 7, 112, 2, 2, 1946, 1934, 3, 2, 2, 2, 1946, 1940, 3, 2, 2, 2, 1947, 164, 3, 2, 2, 2, 1948, 1949, 7, 70, 2, 2, 1949, 1950, 7, 71, 2, 2, 1950, 1951, 7, 78, 2, 2, 1951, 1952, 7, 75, 2, 2, 1952, 1959, 7, 79, 2, 2, 1953, 1954, 7, 102, 2, 2, 1954, 1955, 7, 103, 2, 2, 1955, 1956, 7, 110, 2, 2, 1956, 1957, 7, 107, 2, 2, 1957, 1959, 7, 111, 2, 2, 1958, 1948, 3, 2, 2, 2, 1958, 1953, 3, 2, 2, 2, 1959, 166, 3, 2, 2, 2, 1960, 1961, 7, 75, 2, 2, 1961, 1962, 7, 81, 2, 2, 1962, 1963, 7, 78, 2, 2, 1963, 1964, 7, 71, 2, 2, 1964, 1965, 7, 80, 2, 2, 1965, 1966, 7, 73, 2, 2, 1966, 1967, 7, 86, 2, 2, 1967, 1977, 7, 74, 2, 2, 1968, 1969, 7, 107, 2, 2, 1969, 1970, 7, 113, 2, 2, 1970, 1971, 7, 110, 2, 2, 1971, 1972, 7, 103, 2, 2, 1972, 1973, 7, 112, 2, 2, 1973, 1974, 7, 105, 2, 2, 1974, 1975, 7, 118, 2, 2, 1975, 1977, 7, 106, 2, 2, 1976, 1960, 3, 2, 2, 2, 1976, 1968, 3, 2, 2, 2, 1977, 168, 3, 2, 2, 2, 1978, 1979, 7, 84, 2, 2, 1979, 1980, 7, 71, 2, 2, 1980, 1981, 7, 67, 2, 2, 1981, 1982, 7, 70, 2, 2, 1982, 1983, 7, 89, 2, 2, 1983, 1984, 7, 84, 2, 2, 1984, 1985, 7, 75, 2, 2, 1985, 1986, 7, 86, 2, 2, 1986, 1997, 7, 71, 2, 2, 1987, 1988, 7, 116, 2, 2, 1988, 1989, 7, 103, 2, 2, 1989, 1990, 7, 99, 2, 2, 1990, 1991, 7, 102, 2, 2, 1991, 1992, 7, 121, 2, 2, 1992, 1993, 7, 116, 2, 2, 1993, 1994, 7, 107, 2, 2, 1994, 1995, 7, 118, 2, 2, 1995, 1997, 7, 103, 2, 2, 1996, 1978, 3, 2, 2, 2, 1996, 1987, 3, 2, 2, 2, 1997, 170, 3, 2, 2, 2, 1998, 1999, 7, 103, 2, 2, 1999, 2000, 7, 116, 2, 2, 2000, 2005, 7, 116, 2, 2, 2001, 2002, 7, 71, 2, 2, 2002, 2003, 7, 84, 2, 2, 2003, 2005, 7, 84, 2, 2, 2004, 1998, 3, 2, 2, 2, 2004, 2001, 3, 2, 2, 2, 2005, 172, 3, 2, 2, 2, 2006, 2007, 7, 85, 2, 2, 2007, 2008, 7, 75, 2, 2, 2008, 2009, 7, 92, 2, 2, 2009, 2015, 7, 71, 2, 2, 2010, 2011, 7, 117, 2, 2, 2011, 2012, 7, 107, 2, 2, 2012, 2013, 7, 124, 2, 2, 2013, 2015, 7, 103, 2, 2, 2014, 2006, 3, 2, 2, 2, 2014, 2010, 3, 2, 2, 2, 2015, 174, 3, 2, 2, 2, 2016, 2017, 7, 67, 2, 2, 2017, 2018, 7, 70, 2, 2, 2018, 2019, 7, 88, 2, 2, 2019, 2020, 7, 67, 2, 2, 2020, 2021, 7, 80, 2, 2, 2021, 2022, 7, 69, 2, 2, 2022, 2031, 7, 71, 2, 2, 2023, 2024, 7, 99, 2, 2, 2024, 2025, 7, 102, 2, 2, 2025, 2026, 7, 120, 2, 2, 2026, 2027, 7, 99, 2, 2, 2027, 2028, 7, 112, 2, 2, 2028, 2029, 7, 101, 2, 2, 2029, 2031, 7, 103, 2, 2, 2030, 2016, 3, 2, 2, 2, 2030, 2023, 3, 2, 2, 2, 2031, 176, 3, 2, 2, 2, 2032, 2033, 7, 80, 2, 2, 2033, 2034, 7, 79, 2, 2, 2034, 2039, 7, 78, 2, 2, 2035, 2036, 7, 112, 2, 2, 2036, 2037, 7, 111, 2, 2, 2037, 2039, 7, 110, 2, 2, 2038, 2032, 3, 2, 2, 2, 2038, 2035, 3, 2, 2, 2, 2039, 178, 3, 2, 2, 2, 2040, 2041, 7, 75, 2, 2, 2041, 2042, 7, 81, 2, 2, 2042, 2043, 7, 85, 2, 2, 2043, 2044, 7, 86, 2, 2, 2044, 2045, 7, 67, 2, 2, 2045, 2053, 7, 86, 2, 2, 2046, 2047, 7, 107, 2, 2, 2047, 2048, 7, 113, 2, 2, 2048, 2049, 7, 117, 2, 2, 2049, 2050, 7, 118, 2, 2, 2050, 2051, 7, 99, 2, 2, 2051, 2053, 7, 118, 2, 2, 2052, 2040, 3, 2, 2, 2, 2052, 2046, 3, 2, 2, 2, 2053, 180, 3, 2, 2, 2, 2054, 2055, 7, 72, 2, 2, 2055, 2056, 7, 81, 2, 2, 2056, 2057, 7, 84, 2, 2, 2057, 2058, 7, 79, 2, 2, 2058, 2059, 7, 67, 2, 2, 2059, 2067, 7, 86, 2, 2, 2060, 2061, 7, 104, 2, 2, 2061, 2062, 7, 113, 2, 2, 2062, 2063, 7, 116, 2, 2, 2063, 2064, 7, 111, 2, 2, 2064, 2065, 7, 99, 2, 2, 2065, 2067, 7, 118, 2, 2, 2066, 2054, 3, 2, 2, 2, 2066, 2060, 3, 2, 2, 2, 2067, 182, 3, 2, 2, 2, 2068, 2069, 7, 78, 2, 2, 2069, 2070, 7, 71, 2, 2, 2070, 2075, 7, 86, 2, 2, 2071, 2072, 7, 110, 2, 2, 2072, 2073, 7, 103, 2, 2, 2073, 2075, 7, 118, 2, 2, 2074, 2068, 3, 2, 2, 2, 2074, 2071, 3, 2, 2, 2, 2075, 184, 3, 2, 2, 2, 2076, 2077, 7, 69, 2, 2, 2077, 2078, 7, 67, 2, 2, 2078, 2079, 7, 78, 2, 2, 2079, 2085, 7, 78, 2, 2, 2080, 2081, 7, 101, 2, 2, 2081, 2082, 7, 99, 2, 2, 2082, 2083, 7, 110, 2, 2, 2083, 2085, 7, 110, 2, 2, 2084, 2076, 3, 2, 2, 2, 2084, 2080, 3, 2, 2, 2, 2085, 186, 3, 2, 2, 2, 2086, 2087, 7, 84, 2, 2, 2087, 2088, 7, 71, 2, 2, 2088, 2089, 7, 86, 2, 2, 2089, 2090, 7, 87, 2, 2, 2090, 2091, 7, 84, 2, 2, 2091, 2105, 7, 80, 2, 2, 2092, 2093, 7, 116, 2, 2, 2093, 2094, 7, 103, 2, 2, 2094, 2095, 7, 118, 2, 2, 2095, 2096, 7, 119, 2, 2, 2096, 2097, 7, 116, 2, 2, 2097, 2105, 7, 112, 2, 2, 2098, 2099, 7, 84, 2, 2, 2099, 2100, 7, 103, 2, 2, 2100, 2101, 7, 118, 2, 2, 2101, 2102, 7, 119, 2, 2, 2102, 2103, 7, 116, 2, 2, 2103, 2105, 7, 112, 2, 2, 2104, 2086, 3, 2, 2, 2, 2104, 2092, 3, 2, 2, 2, 2104, 2098, 3, 2, 2, 2, 2105, 188, 3, 2, 2, 2, 2106, 2107, 7, 69, 2, 2, 2107, 2108, 7, 78, 2, 2, 2108, 2109, 7, 81, 2, 2, 2109, 2110, 7, 85, 2, 2, 2110, 2117, 7, 71, 2, 2, 2111, 2112, 7, 101, 2, 2, 2112, 2113, 7, 110, 2, 2, 2113, 2114, 7, 113, 2, 2, 2114, 2115, 7, 117, 2, 2, 2115, 2117, 7, 103, 2, 2, 2116, 2106, 3, 2, 2, 2, 2116, 2111, 3, 2, 2, 2, 2117, 190, 3, 2, 2, 2, 2118, 2119, 7, 70, 2, 2, 2119, 2120, 7, 81, 2, 2, 2120, 2121, 7, 87, 2, 2, 2121, 2122, 7, 68, 2, 2, 2122, 2123, 7, 78, 2, 2, 2123, 2131, 7, 71, 2, 2, 2124, 2125, 7, 102, 2, 2, 2125, 2126, 7, 113, 2, 2, 2126, 2127, 7, 119, 2, 2, 2127, 2128, 7, 100, 2, 2, 2128, 2129, 7, 110, 2, 2, 2129, 2131, 7, 103, 2, 2, 2130, 2118, 3, 2, 2, 2, 2130, 2124, 3, 2, 2, 2, 2131, 192, 3, 2, 2, 2, 2132, 2133, 7, 75, 2, 2, 2133, 2134, 7, 81, 2, 2, 2134, 2135, 7, 85, 2, 2, 2135, 2136, 7, 86, 2, 2, 2136, 2137, 7, 67, 2, 2, 2137, 2138, 7, 84, 2, 2, 2138, 2147, 7, 86, 2, 2, 2139, 2140, 7, 107, 2, 2, 2140, 2141, 7, 113, 2, 2, 2141, 2142, 7, 117, 2, 2, 2142, 2143, 7, 118, 2, 2, 2143, 2144, 7, 99, 2, 2, 2144, 2145, 7, 116, 2, 2, 2145, 2147, 7, 118, 2, 2, 2146, 2132, 3, 2, 2, 2, 2146, 2139, 3, 2, 2, 2, 2147, 194, 3, 2, 2, 2, 2148, 2149, 7, 85, 2, 2, 2149, 2150, 7, 71, 2, 2, 2150, 2151, 7, 83, 2, 2, 2151, 2152, 7, 87, 2, 2, 2152, 2153, 7, 71, 2, 2, 2153, 2154, 7, 80, 2, 2, 2154, 2155, 7, 86, 2, 2, 2155, 2156, 7, 75, 2, 2, 2156, 2157, 7, 67, 2, 2, 2157, 2169, 7, 78, 2, 2, 2158, 2159, 7, 117, 2, 2, 2159, 2160, 7, 103, 2, 2, 2160, 2161, 7, 115, 2, 2, 2161, 2162, 7, 119, 2, 2, 2162, 2163, 7, 103, 2, 2, 2163, 2164, 7, 112, 2, 2, 2164, 2165, 7, 118, 2, 2, 2165, 2166, 7, 107, 2, 2, 2166, 2167, 7, 99, 2, 2, 2167, 2169, 7, 110, 2, 2, 2168, 2148, 3, 2, 2, 2, 2168, 2158, 3, 2, 2, 2, 2169, 196, 3, 2, 2, 2, 2170, 2171, 7, 78, 2, 2, 2171, 2172, 7, 67, 2, 2, 2172, 2173, 7, 68, 2, 2, 2173, 2174, 7, 71, 2, 2, 2174, 2181, 7, 78, 2, 2, 2175, 2176, 7, 110, 2, 2, 2176, 2177, 7, 99, 2, 2, 2177, 2178, 7, 100, 2, 2, 2178, 2179, 7, 103, 2, 2, 2179, 2181, 7, 110, 2, 2, 2180, 2170, 3, 2, 2, 2, 2180, 2175, 3, 2, 2, 2, 2181, 198, 3, 2, 2, 2, 2182, 2183, 7, 104, 2, 2, 2183, 2184, 7, 107, 2, 2, 2184, 2185, 7, 110, 2, 2, 2185, 2191, 7, 103, 2, 2, 2186, 2187, 7, 72, 2, 2, 2187, 2188, 7, 75, 2, 2, 2188, 2189, 7, 78, 2, 2, 2189, 2191, 7, 71, 2, 2, 2190, 2182, 3, 2, 2, 2, 2190, 2186, 3, 2, 2, 2, 2191, 200, 3, 2, 2, 2, 2192, 2193, 7, 85, 2, 2, 2193, 2194, 7, 86, 2, 2, 2194, 2195, 7, 67, 2, 2, 2195, 2196, 7, 86, 2, 2, 2196, 2197, 7, 87, 2, 2, 2197, 2205, 7, 85, 2, 2, 2198, 2199, 7, 117, 2, 2, 2199, 2200, 7, 118, 2, 2, 2200, 2201, 7, 99, 2, 2, 2201, 2202, 7, 118, 2, 2, 2202, 2203, 7, 119, 2, 2, 2203, 2205, 7, 117, 2, 2, 2204, 2192, 3, 2, 2, 2, 2204, 2198, 3, 2, 2, 2, 2205, 202, 3, 2, 2, 2, 2206, 2207, 7, 67, 2, 2, 2207, 2208, 7, 69, 2, 2, 2208, 2209, 7, 69, 2, 2, 2209, 2210, 7, 71, 2, 2, 2210, 2211, 7, 85, 2, 2, 2211, 2219, 7, 85, 2, 2, 2212, 2213, 7, 99, 2, 2, 2213, 2214, 7, 101, 2, 2, 2214, 2215, 7, 101, 2, 2, 2215, 2216, 7, 103, 2, 2, 2216, 2217, 7, 117, 2, 2, 2217, 2219, 7, 117, 2, 2, 2218, 2206, 3, 2, 2, 2, 2218, 2212, 3, 2, 2, 2, 2219, 204, 3, 2, 2, 2, 2220, 2221, 7, 82, 2, 2, 2221, 2222, 7, 81, 2, 2, 2222, 2223, 7, 85, 2, 2, 2223, 2224, 7, 75, 2, 2, 2224, 2225, 7, 86, 2, 2, 2225, 2226, 7, 75, 2, 2, 2226, 2227, 7, 81, 2, 2, 2227, 2237, 7, 80, 2, 2, 2228, 2229, 7, 114, 2, 2, 2229, 2230, 7, 113, 2, 2, 2230, 2231, 7, 117, 2, 2, 2231, 2232, 7, 107, 2, 2, 2232, 2233, 7, 118, 2, 2, 2233, 2234, 7, 107, 2, 2, 2234, 2235, 7, 113, 2, 2, 2235, 2237, 7, 112, 2, 2, 2236, 2220, 3, 2, 2, 2, 2236, 2228, 3, 2, 2, 2, 2237, 206, 3, 2, 2, 2, 2238, 2239, 7, 72, 2, 2, 2239, 2240, 7, 81, 2, 2, 2240, 2241, 7, 84, 2, 2, 2241, 2247, 7, 79, 2, 2, 2242, 2243, 7, 104, 2, 2, 2243, 2244, 7, 113, 2, 2, 2244, 2245, 7, 116, 2, 2, 2245, 2247, 7, 111, 2, 2, 2246, 2238, 3, 2, 2, 2, 2246, 2242, 3, 2, 2, 2, 2247, 208, 3, 2, 2, 2, 2248, 2249, 7, 84, 2, 2, 2249, 2250, 7, 71, 2, 2, 2250, 2251, 7, 69, 2, 2, 2251, 2257, 7, 78, 2, 2, 2252, 2253, 7, 116, 2, 2, 2253, 2254, 7, 103, 2, 2, 2254, 2255, 7, 101, 2, 2, 2255, 2257, 7, 110, 2, 2, 2256, 2248, 3, 2, 2, 2, 2256, 2252, 3, 2, 2, 2, 2257, 210, 3, 2, 2, 2, 2258, 2259, 7, 71, 2, 2, 2259, 2260, 7, 90, 2, 2, 2260, 2261, 7, 75, 2, 2, 2261, 2262, 7, 85, 2, 2, 2262, 2269, 7, 86, 2, 2, 2263, 2264, 7, 103, 2, 2, 2264, 2265, 7, 122, 2, 2, 2265, 2266, 7, 107, 2, 2, 2266, 2267, 7, 117, 2, 2, 2267, 2269, 7, 118, 2, 2, 2268, 2258, 3, 2, 2, 2, 2268, 2263, 3, 2, 2, 2, 2269, 212, 3, 2, 2, 2, 2270, 2271, 7, 81, 2, 2, 2271, 2272, 7, 82, 2, 2, 2272, 2273, 7, 71, 2, 2, 2273, 2274, 7, 80, 2, 2, 2274, 2275, 7, 71, 2, 2, 2275, 2283, 7, 70, 2, 2, 2276, 2277, 7, 113, 2, 2, 2277, 2278, 7, 114, 2, 2, 2278, 2279, 7, 103, 2, 2, 2279, 2280, 7, 112, 2, 2, 2280, 2281, 7, 103, 2, 2, 2281, 2283, 7, 102, 2, 2, 2282, 2270, 3, 2, 2, 2, 2282, 2276, 3, 2, 2, 2, 2283, 214, 3, 2, 2, 2, 2284, 2285, 7, 80, 2, 2, 2285, 2286, 7, 87, 2, 2, 2286, 2287, 7, 79, 2, 2, 2287, 2288, 7, 68, 2, 2, 2288, 2289, 7, 71, 2, 2, 2289, 2297, 7, 84, 2, 2, 2290, 2291, 7, 112, 2, 2, 2291, 2292, 7, 119, 2, 2, 2292, 2293, 7, 111, 2, 2, 2293, 2294, 7, 100, 2, 2, 2294, 2295, 7, 103, 2, 2, 2295, 2297, 7, 116, 2, 2, 2296, 2284, 3, 2, 2, 2, 2296, 2290, 3, 2, 2, 2, 2297, 216, 3, 2, 2, 2, 2298, 2299, 7, 80, 2, 2, 2299, 2300, 7, 67, 2, 2, 2300, 2301, 7, 79, 2, 2, 2301, 2302, 7, 71, 2, 2, 2302, 2309, 7, 70, 2, 2, 2303, 2304, 7, 112, 2, 2, 2304, 2305, 7, 99, 2, 2, 2305, 2306, 7, 111, 2, 2, 2306, 2307, 7, 103, 2, 2, 2307, 2309, 7, 102, 2, 2, 2308, 2298, 3, 2, 2, 2, 2308, 2303, 3, 2, 2, 2, 2309, 218, 3, 2, 2, 2, 2310, 2311, 7, 80, 2, 2, 2311, 2312, 7, 67, 2, 2, 2312, 2313, 7, 79, 2, 2, 2313, 2319, 7, 71, 2, 2, 2314, 2315, 7, 112, 2, 2, 2315, 2316, 7, 99, 2, 2, 2316, 2317, 7, 111, 2, 2, 2317, 2319, 7, 103, 2, 2, 2318, 2310, 3, 2, 2, 2, 2318, 2314, 3, 2, 2, 2, 2319, 220, 3, 2, 2, 2, 2320, 2321, 7, 72, 2, 2, 2321, 2322, 7, 81, 2, 2, 2322, 2323, 7, 84, 2, 2, 2323, 2324, 7, 79, 2, 2, 2324, 2325, 7, 67, 2, 2, 2325, 2326, 7, 86, 2, 2, 2326, 2327, 7, 86, 2, 2, 2327, 2328, 7, 71, 2, 2, 2328, 2339, 7, 70, 2, 2, 2329, 2330, 7, 104, 2, 2, 2330, 2331, 7, 113, 2, 2, 2331, 2332, 7, 116, 2, 2, 2332, 2333, 7, 111, 2, 2, 2333, 2334, 7, 99, 2, 2, 2334, 2335, 7, 118, 2, 2, 2335, 2336, 7, 118, 2, 2, 2336, 2337, 7, 103, 2, 2, 2337, 2339, 7, 102, 2, 2, 2338, 2320, 3, 2, 2, 2, 2338, 2329, 3, 2, 2, 2, 2339, 222, 3, 2, 2, 2, 2340, 2341, 7, 87, 2, 2, 2341, 2342, 7, 80, 2, 2, 2342, 2343, 7, 72, 2, 2, 2343, 2344, 7, 81, 2, 2, 2344, 2345, 7, 84, 2, 2, 2345, 2346, 7, 79, 2, 2, 2346, 2347, 7, 67, 2, 2, 2347, 2348, 7, 86, 2, 2, 2348, 2349, 7, 86, 2, 2, 2349, 2350, 7, 71, 2, 2, 2350, 2363, 7, 70, 2, 2, 2351, 2352, 7, 119, 2, 2, 2352, 2353, 7, 112, 2, 2, 2353, 2354, 7, 104, 2, 2, 2354, 2355, 7, 113, 2, 2, 2355, 2356, 7, 116, 2, 2, 2356, 2357, 7, 111, 2, 2, 2357, 2358, 7, 99, 2, 2, 2358, 2359, 7, 118, 2, 2, 2359, 2360, 7, 118, 2, 2, 2360, 2361, 7, 103, 2, 2, 2361, 2363, 7, 102, 2, 2, 2362, 2340, 3, 2, 2, 2, 2362, 2351, 3, 2, 2, 2, 2363, 224, 3, 2, 2, 2, 2364, 2365, 7, 80, 2, 2, 2365, 2366, 7, 71, 2, 2, 2366, 2367, 7, 90, 2, 2, 2367, 2368, 7, 86, 2, 2, 2368, 2369, 7, 84, 2, 2, 2369, 2370, 7, 71, 2, 2, 2370, 2379, 7, 69, 2, 2, 2371, 2372, 7, 112, 2, 2, 2372, 2373, 7, 103, 2, 2, 2373, 2374, 7, 122, 2, 2, 2374, 2375, 7, 118, 2, 2, 2375, 2376, 7, 116, 2, 2, 2376, 2377, 7, 103, 2, 2, 2377, 2379, 7, 101, 2, 2, 2378, 2364, 3, 2, 2, 2, 2378, 2371, 3, 2, 2, 2, 2379, 226, 3, 2, 2, 2, 2380, 2381, 7, 75, 2, 2, 2381, 2382, 7, 80, 2, 2, 2382, 2383, 7, 83, 2, 2, 2383, 2384, 7, 87, 2, 2, 2384, 2385, 7, 75, 2, 2, 2385, 2386, 7, 84, 2, 2, 2386, 2395, 7, 71, 2, 2, 2387, 2388, 7, 107, 2, 2, 2388, 2389, 7, 112, 2, 2, 2389, 2390, 7, 115, 2, 2, 2390, 2391, 7, 119, 2, 2, 2391, 2392, 7, 107, 2, 2, 2392, 2393, 7, 116, 2, 2, 2393, 2395, 7, 103, 2, 2, 2394, 2380, 3, 2, 2, 2, 2394, 2387, 3, 2, 2, 2, 2395, 228, 3, 2, 2, 2, 2396, 2397, 7, 68, 2, 2, 2397, 2398, 7, 67, 2, 2, 2398, 2399, 7, 69, 2, 2, 2399, 2400, 7, 77, 2, 2, 2400, 2401, 7, 85, 2, 2, 2401, 2402, 7, 82, 2, 2, 2402, 2403, 7, 67, 2, 2, 2403, 2404, 7, 69, 2, 2, 2404, 2415, 7, 71, 2, 2, 2405, 2406, 7, 100, 2, 2, 2406, 2407, 7, 99, 2, 2, 2407, 2408, 7, 101, 2, 2, 2408, 2409, 7, 109, 2, 2, 2409, 2410, 7, 117, 2, 2, 2410, 2411, 7, 114, 2, 2, 2411, 2412, 7, 99, 2, 2, 2412, 2413, 7, 101, 2, 2, 2413, 2415, 7, 103, 2, 2, 2414, 2396, 3, 2, 2, 2, 2414, 2405, 3, 2, 2, 2, 2415, 230, 3, 2, 2, 2, 2416, 2417, 7, 71, 2, 2, 2417, 2418, 7, 80, 2, 2, 2418, 2419, 7, 70, 2, 2, 2419, 2420, 7, 72, 2, 2, 2420, 2421, 7, 75, 2, 2, 2421, 2422, 7, 78, 2, 2, 2422, 2431, 7, 71, 2, 2, 2423, 2424, 7, 103, 2, 2, 2424, 2425, 7, 112, 2, 2, 2425, 2426, 7, 102, 2, 2, 2426, 2427, 7, 104, 2, 2, 2427, 2428, 7, 107, 2, 2, 2428, 2429, 7, 110, 2, 2, 2429, 2431, 7, 103, 2, 2, 2430, 2416, 3, 2, 2, 2, 2430, 2423, 3, 2, 2, 2, 2431, 232, 3, 2, 2, 2, 2432, 2433, 7, 84, 2, 2, 2433, 2434, 7, 71, 2, 2, 2434, 2435, 7, 89, 2, 2, 2435, 2436, 7, 75, 2, 2, 2436, 2437, 7, 80, 2, 2, 2437, 2445, 7, 70, 2, 2, 2438, 2439, 7, 116, 2, 2, 2439, 2440, 7, 103, 2, 2, 2440, 2441, 7, 121, 2, 2, 2441, 2442, 7, 107, 2, 2, 2442, 2443, 7, 112, 2, 2, 2443, 2445, 7, 102, 2, 2, 2444, 2432, 3, 2, 2, 2, 2444, 2438, 3, 2, 2, 2, 2445, 234, 3, 2, 2, 2, 2446, 2447, 7, 103, 2, 2, 2447, 2448, 7, 112, 2, 2, 2448, 2449, 7, 102, 2, 2, 2449, 2450, 7, 100, 2, 2, 2450, 2451, 7, 110, 2, 2, 2451, 2452, 7, 113, 2, 2, 2452, 2453, 7, 101, 2, 2, 2453, 2454, 7, 109, 2, 2, 2454, 2455, 7, 102, 2, 2, 2455, 2456, 7, 99, 2, 2, 2456, 2457, 7, 118, 2, 2, 2457, 2471, 7, 99, 2, 2, 2458, 2459, 7, 71, 2, 2, 2459, 2460, 7, 80, 2, 2, 2460, 2461, 7, 70, 2, 2, 2461, 2462, 7, 68, 2, 2, 2462, 2463, 7, 78, 2, 2, 2463, 2464, 7, 81, 2, 2, 2464, 2465, 7, 69, 2, 2, 2465, 2466, 7, 77, 2, 2, 2466, 2467, 7, 70, 2, 2, 2467, 2468, 7, 67, 2, 2, 2468, 2469, 7, 86, 2, 2, 2469, 2471, 7, 67, 2, 2, 2470, 2446, 3, 2, 2, 2, 2470, 2458, 3, 2, 2, 2, 2471, 236, 3, 2, 2, 2, 2472, 2473, 7, 71, 2, 2, 2473, 2474, 7, 80, 2, 2, 2474, 2475, 7, 70, 2, 2, 2475, 2476, 7, 68, 2, 2, 2476, 2477, 7, 78, 2, 2, 2477, 2478, 7, 81, 2, 2, 2478, 2479, 7, 69, 2, 2, 2479, 2489, 7, 77, 2, 2, 2480, 2481, 7, 103, 2, 2, 2481, 2482, 7, 112, 2, 2, 2482, 2483, 7, 102, 2, 2, 2483, 2484, 7, 100, 2, 2, 2484, 2485, 7, 110, 2, 2, 2485, 2486, 7, 113, 2, 2, 2486, 2487, 7, 101, 2, 2, 2487, 2489, 7, 109, 2, 2, 2488, 2472, 3, 2, 2, 2, 2488, 2480, 3, 2, 2, 2, 2489, 238, 3, 2, 2, 2, 2490, 2491, 7, 15, 2, 2, 2491, 2494, 7, 12, 2, 2, 2492, 2494, 9, 3, 2, 2, 2493, 2490, 3, 2, 2, 2, 2493, 2492, 3, 2, 2, 2, 2494, 240, 3, 2, 2, 2, 2495, 2496, 7, 77, 2, 2, 2496, 2497, 7, 75, 2, 2, 2497, 2498, 7, 80, 2, 2, 2498, 2504, 7, 70, 2, 2, 2499, 2500, 7, 109, 2, 2, 2500, 2501, 7, 107, 2, 2, 2501, 2502, 7, 112, 2, 2, 2502, 2504, 7, 102, 2, 2, 2503, 2495, 3, 2, 2, 2, 2503, 2499, 3, 2, 2, 2, 2504, 242, 3, 2, 2, 2, 2505, 2506, 7, 78, 2, 2, 2506, 2507, 7, 71, 2, 2, 2507, 2512, 7, 80, 2, 2, 2508, 2509, 7, 110, 2, 2, 2509, 2510, 7, 103, 2, 2, 2510, 2512, 7, 112, 2, 2, 2511, 2505, 3, 2, 2, 2, 2511, 2508, 3, 2, 2, 2, 2512, 244, 3, 2, 2, 2, 2513, 2516, 9, 4, 2, 2, 2514, 2516, 5, 239, 120, 2, 2515, 2513, 3, 2, 2, 2, 2515, 2514, 3, 2, 2, 2, 2516, 2517, 3, 2, 2, 2, 2517, 2515, 3, 2, 2, 2, 2517, 2518, 3, 2, 2, 2, 2518, 2519, 3, 2, 2, 2, 2519, 2520, 8, 123, 2, 2, 2520, 246, 3, 2, 2, 2, 2521, 2523, 7, 11, 2, 2, 2522, 2521, 3, 2, 2, 2, 2523, 2526, 3, 2, 2, 2, 2524, 2522, 3, 2, 2, 2, 2524, 2525, 3, 2, 2, 2, 2525, 2530, 3, 2, 2, 2, 2526, 2524, 3, 2, 2, 2, 2527, 2529, 7, 34, 2, 2, 2528, 2527, 3, 2, 2, 2, 2529, 2532, 3, 2, 2, 2, 2530, 2528, 3, 2, 2, 2, 2530, 2531, 3, 2, 2, 2, 2531, 2533, 3, 2, 2, 2, 2532, 2530, 3, 2, 2, 2, 2533, 2537, 7, 35, 2, 2, 2534, 2536, 10, 5, 2, 2, 2535, 2534, 3, 2, 2, 2, 2536, 2539, 3, 2, 2, 2, 2537, 2535, 3, 2, 2, 2, 2537, 2538, 3, 2, 2, 2, 2538, 2543, 3, 2, 2, 2, 2539, 2537, 3, 2, 2, 2, 2540, 2542, 9, 5, 2, 2, 2541, 2540, 3, 2, 2, 2, 2542, 2545, 3, 2, 2, 2, 2543, 2541, 3, 2, 2, 2, 2543, 2544, 3, 2, 2, 2, 2544, 2561, 3, 2, 2, 2, 2545, 2543, 3, 2, 2, 2, 2546, 2547, 6, 124, 2, 2, 2547, 2551, 9, 6, 2, 2, 2548, 2550, 10, 5, 2, 2, 2549, 2548, 3, 2, 2, 2, 2550, 2553, 3, 2, 2, 2, 2551, 2549, 3, 2, 2, 2, 2551, 2552, 3, 2, 2, 2, 2552, 2557, 3, 2, 2, 2, 2553, 2551, 3, 2, 2, 2, 2554, 2556, 9, 5, 2, 2, 2555, 2554, 3, 2, 2, 2, 2556, 2559, 3, 2, 2, 2, 2557, 2555, 3, 2, 2, 2, 2557, 2558, 3, 2, 2, 2, 2558, 2561, 3, 2, 2, 2, 2559, 2557, 3, 2, 2, 2, 2560, 2524, 3, 2, 2, 2, 2560, 2546, 3, 2, 2, 2, 2561, 2562, 3, 2, 2, 2, 2562, 2563, 8, 124, 2, 2, 2563, 248, 3, 2, 2, 2, 2564, 2565, 7, 38, 2, 2, 2565, 250, 3, 2, 2, 2, 2566, 2567, 7, 46, 2, 2, 2567, 252, 3, 2, 2, 2, 2568, 2569, 7, 42, 2, 2, 2569, 254, 3, 2, 2, 2, 2570, 2571, 7, 39, 2, 2, 2571, 256, 3, 2, 2, 2, 2572, 2573, 7, 121, 2, 2, 2573, 2574, 7, 106, 2, 2, 2574, 2575, 7, 107, 2, 2, 2575, 2576, 7, 110, 2, 2, 2576, 2583, 7, 103, 2, 2, 2577, 2578, 7, 89, 2, 2, 2578, 2579, 7, 74, 2, 2, 2579, 2580, 7, 75, 2, 2, 2580, 2581, 7, 78, 2, 2, 2581, 2583, 7, 71, 2, 2, 2582, 2572, 3, 2, 2, 2, 2582, 2577, 3, 2, 2, 2, 2583, 258, 3, 2, 2, 2, 2584, 2585, 7, 67, 2, 2, 2585, 2586, 7, 78, 2, 2, 2586, 2587, 7, 78, 2, 2, 2587, 2588, 7, 81, 2, 2, 2588, 2589, 7, 69, 2, 2, 2589, 2590, 7, 67, 2, 2, 2590, 2591, 7, 86, 2, 2, 2591, 2601, 7, 71, 2, 2, 2592, 2593, 7, 99, 2, 2, 2593, 2594, 7, 110, 2, 2, 2594, 2595, 7, 110, 2, 2, 2595, 2596, 7, 113, 2, 2, 2596, 2597, 7, 101, 2, 2, 2597, 2598, 7, 99, 2, 2, 2598, 2599, 7, 118, 2, 2, 2599, 2601, 7, 103, 2, 2, 2600, 2584, 3, 2, 2, 2, 2600, 2592, 3, 2, 2, 2, 2601, 260, 3, 2, 2, 2, 2602, 2603, 7, 85, 2, 2, 2603, 2604, 7, 86, 2, 2, 2604, 2605, 7, 67, 2, 2, 2605, 2611, 7, 86, 2, 2, 2606, 2607, 7, 117, 2, 2, 2607, 2608, 7, 118, 2, 2, 2608, 2609, 7, 99, 2, 2, 2609, 2611, 7, 118, 2, 2, 2610, 2602, 3, 2, 2, 2, 2610, 2606, 3, 2, 2, 2, 2611, 262, 3, 2, 2, 2, 2612, 2613, 7, 43, 2, 2, 2613, 264, 3, 2, 2, 2, 2614, 2615, 7, 60, 2, 2, 2615, 266, 3, 2, 2, 2, 2616, 2617, 7, 63, 2, 2, 2617, 268, 3, 2, 2, 2, 2618, 2619, 7, 47, 2, 2, 2619, 270, 3, 2, 2, 2, 2620, 2621, 7, 45, 2, 2, 2621, 272, 3, 2, 2, 2, 2622, 2623, 7, 49, 2, 2, 2623, 274, 3, 2, 2, 2, 2624, 2625, 7, 44, 2, 2, 2625, 276, 3, 2, 2, 2, 2626, 2627, 9, 7, 2, 2, 2627, 278, 3, 2, 2, 2, 2628, 2629, 7, 44, 2, 2, 2629, 2630, 7, 44, 2, 2, 2630, 280, 3, 2, 2, 2, 2631, 2632, 7, 48, 2, 2, 2632, 2633, 7, 112, 2, 2, 2633, 2634, 7, 113, 2, 2, 2634, 2635, 7, 118, 2, 2, 2635, 2642, 7, 48, 2, 2, 2636, 2637, 7, 48, 2, 2, 2637, 2638, 7, 80, 2, 2, 2638, 2639, 7, 81, 2, 2, 2639, 2640, 7, 86, 2, 2, 2640, 2642, 7, 48, 2, 2, 2641, 2631, 3, 2, 2, 2, 2641, 2636, 3, 2, 2, 2, 2642, 282, 3, 2, 2, 2, 2643, 2644, 7, 48, 2, 2, 2644, 2645, 7, 99, 2, 2, 2645, 2646, 7, 112, 2, 2, 2646, 2647, 7, 102, 2, 2, 2647, 2654, 7, 48, 2, 2, 2648, 2649, 7, 48, 2, 2, 2649, 2650, 7, 67, 2, 2, 2650, 2651, 7, 80, 2, 2, 2651, 2652, 7, 70, 2, 2, 2652, 2654, 7, 48, 2, 2, 2653, 2643, 3, 2, 2, 2, 2653, 2648, 3, 2, 2, 2, 2654, 284, 3, 2, 2, 2, 2655, 2656, 7, 48, 2, 2, 2656, 2657, 7, 113, 2, 2, 2657, 2658, 7, 116, 2, 2, 2658, 2664, 7, 48, 2, 2, 2659, 2660, 7, 48, 2, 2, 2660, 2661, 7, 81, 2, 2, 2661, 2662, 7, 84, 2, 2, 2662, 2664, 7, 48, 2, 2, 2663, 2655, 3, 2, 2, 2, 2663, 2659, 3, 2, 2, 2, 2664, 286, 3, 2, 2, 2, 2665, 2666, 7, 48, 2, 2, 2666, 2667, 7, 103, 2, 2, 2667, 2668, 7, 115, 2, 2, 2668, 2669, 7, 120, 2, 2, 2669, 2676, 7, 48, 2, 2, 2670, 2671, 7, 48, 2, 2, 2671, 2672, 7, 71, 2, 2, 2672, 2673, 7, 83, 2, 2, 2673, 2674, 7, 88, 2, 2, 2674, 2676, 7, 48, 2, 2, 2675, 2665, 3, 2, 2, 2, 2675, 2670, 3, 2, 2, 2, 2676, 288, 3, 2, 2, 2, 2677, 2678, 7, 48, 2, 2, 2678, 2679, 7, 112, 2, 2, 2679, 2680, 7, 103, 2, 2, 2680, 2681, 7, 115, 2, 2, 2681, 2682, 7, 120, 2, 2, 2682, 2690, 7, 48, 2, 2, 2683, 2684, 7, 48, 2, 2, 2684, 2685, 7, 80, 2, 2, 2685, 2686, 7, 71, 2, 2, 2686, 2687, 7, 83, 2, 2, 2687, 2688, 7, 88, 2, 2, 2688, 2690, 7, 48, 2, 2, 2689, 2677, 3, 2, 2, 2, 2689, 2683, 3, 2, 2, 2, 2690, 290, 3, 2, 2, 2, 2691, 2692, 7, 48, 2, 2, 2692, 2693, 7, 122, 2, 2, 2693, 2694, 7, 113, 2, 2, 2694, 2695, 7, 116, 2, 2, 2695, 2702, 7, 48, 2, 2, 2696, 2697, 7, 48, 2, 2, 2697, 2698, 7, 90, 2, 2, 2698, 2699, 7, 81, 2, 2, 2699, 2700, 7, 84, 2, 2, 2700, 2702, 7, 48, 2, 2, 2701, 2691, 3, 2, 2, 2, 2701, 2696, 3, 2, 2, 2, 2702, 292, 3, 2, 2, 2, 2703, 2704, 7, 48, 2, 2, 2704, 2705, 7, 103, 2, 2, 2705, 2706, 7, 113, 2, 2, 2706, 2707, 7, 116, 2, 2, 2707, 2714, 7, 48, 2, 2, 2708, 2709, 7, 48, 2, 2, 2709, 2710, 7, 71, 2, 2, 2710, 2711, 7, 81, 2, 2, 2711, 2712, 7, 84, 2, 2, 2712, 2714, 7, 48, 2, 2, 2713, 2703, 3, 2, 2, 2, 2713, 2708, 3, 2, 2, 2, 2714, 294, 3, 2, 2, 2, 2715, 2716, 7, 48, 2, 2, 2716, 2717, 7, 110, 2, 2, 2717, 2718, 7, 118, 2, 2, 2718, 2724, 7, 48, 2, 2, 2719, 2720, 7, 48, 2, 2, 2720, 2721, 7, 78, 2, 2, 2721, 2722, 7, 86, 2, 2, 2722, 2724, 7, 48, 2, 2, 2723, 2715, 3, 2, 2, 2, 2723, 2719, 3, 2, 2, 2, 2724, 296, 3, 2, 2, 2, 2725, 2726, 7, 48, 2, 2, 2726, 2727, 7, 110, 2, 2, 2727, 2728, 7, 103, 2, 2, 2728, 2734, 7, 48, 2, 2, 2729, 2730, 7, 48, 2, 2, 2730, 2731, 7, 78, 2, 2, 2731, 2732, 7, 71, 2, 2, 2732, 2734, 7, 48, 2, 2, 2733, 2725, 3, 2, 2, 2, 2733, 2729, 3, 2, 2, 2, 2734, 298, 3, 2, 2, 2, 2735, 2736, 7, 48, 2, 2, 2736, 2737, 7, 105, 2, 2, 2737, 2738, 7, 118, 2, 2, 2738, 2744, 7, 48, 2, 2, 2739, 2740, 7, 48, 2, 2, 2740, 2741, 7, 73, 2, 2, 2741, 2742, 7, 86, 2, 2, 2742, 2744, 7, 48, 2, 2, 2743, 2735, 3, 2, 2, 2, 2743, 2739, 3, 2, 2, 2, 2744, 300, 3, 2, 2, 2, 2745, 2746, 7, 48, 2, 2, 2746, 2747, 7, 105, 2, 2, 2747, 2748, 7, 103, 2, 2, 2748, 2754, 7, 48, 2, 2, 2749, 2750, 7, 48, 2, 2, 2750, 2751, 7, 73, 2, 2, 2751, 2752, 7, 71, 2, 2, 2752, 2754, 7, 48, 2, 2, 2753, 2745, 3, 2, 2, 2, 2753, 2749, 3, 2, 2, 2, 2754, 302, 3, 2, 2, 2, 2755, 2756, 7, 48, 2, 2, 2756, 2757, 7, 112, 2, 2, 2757, 2758, 7, 103, 2, 2, 2758, 2764, 7, 48, 2, 2, 2759, 2760, 7, 48, 2, 2, 2760, 2761, 7, 80, 2, 2, 2761, 2762, 7, 71, 2, 2, 2762, 2764, 7, 48, 2, 2, 2763, 2755, 3, 2, 2, 2, 2763, 2759, 3, 2, 2, 2, 2764, 304, 3, 2, 2, 2, 2765, 2766, 7, 48, 2, 2, 2766, 2767, 7, 103, 2, 2, 2767, 2768, 7, 115, 2, 2, 2768, 2774, 7, 48, 2, 2, 2769, 2770, 7, 48, 2, 2, 2770, 2771, 7, 71, 2, 2, 2771, 2772, 7, 83, 2, 2, 2772, 2774, 7, 48, 2, 2, 2773, 2765, 3, 2, 2, 2, 2773, 2769, 3, 2, 2, 2, 2774, 306, 3, 2, 2, 2, 2775, 2776, 7, 48, 2, 2, 2776, 2777, 7, 118, 2, 2, 2777, 2778, 7, 116, 2, 2, 2778, 2779, 7, 119, 2, 2, 2779, 2780, 7, 103, 2, 2, 2780, 2788, 7, 48, 2, 2, 2781, 2782, 7, 48, 2, 2, 2782, 2783, 7, 86, 2, 2, 2783, 2784, 7, 84, 2, 2, 2784, 2785, 7, 87, 2, 2, 2785, 2786, 7, 71, 2, 2, 2786, 2788, 7, 48, 2, 2, 2787, 2775, 3, 2, 2, 2, 2787, 2781, 3, 2, 2, 2, 2788, 308, 3, 2, 2, 2, 2789, 2790, 7, 48, 2, 2, 2790, 2791, 7, 104, 2, 2, 2791, 2792, 7, 99, 2, 2, 2792, 2793, 7, 110, 2, 2, 2793, 2794, 7, 117, 2, 2, 2794, 2795, 7, 103, 2, 2, 2795, 2804, 7, 48, 2, 2, 2796, 2797, 7, 48, 2, 2, 2797, 2798, 7, 72, 2, 2, 2798, 2799, 7, 67, 2, 2, 2799, 2800, 7, 78, 2, 2, 2800, 2801, 7, 85, 2, 2, 2801, 2802, 7, 71, 2, 2, 2802, 2804, 7, 48, 2, 2, 2803, 2789, 3, 2, 2, 2, 2803, 2796, 3, 2, 2, 2, 2804, 310, 3, 2, 2, 2, 2805, 2807, 5, 421, 211, 2, 2806, 2805, 3, 2, 2, 2, 2807, 2808, 3, 2, 2, 2, 2808, 2806, 3, 2, 2, 2, 2808, 2809, 3, 2, 2, 2, 2809, 2810, 3, 2, 2, 2, 2810, 2811, 9, 8, 2, 2, 2811, 312, 3, 2, 2, 2, 2812, 2814, 9, 9, 2, 2, 2813, 2812, 3, 2, 2, 2, 2813, 2814, 3, 2, 2, 2, 2814, 2816, 3, 2, 2, 2, 2815, 2817, 5, 421, 211, 2, 2816, 2815, 3, 2, 2, 2, 2817, 2818, 3, 2, 2, 2, 2818, 2816, 3, 2, 2, 2, 2818, 2819, 3, 2, 2, 2, 2819, 2820, 3, 2, 2, 2, 2820, 2821, 9, 10, 2, 2, 2821, 314, 3, 2, 2, 2, 2822, 2827, 9, 11, 2, 2, 2823, 2824, 9, 12, 2, 2, 2824, 2827, 9, 13, 2, 2, 2825, 2827, 9, 14, 2, 2, 2826, 2822, 3, 2, 2, 2, 2826, 2823, 3, 2, 2, 2, 2826, 2825, 3, 2, 2, 2, 2827, 2834, 3, 2, 2, 2, 2828, 2830, 5, 421, 211, 2, 2829, 2828, 3, 2, 2, 2, 2830, 2831, 3, 2, 2, 2, 2831, 2829, 3, 2, 2, 2, 2831, 2832, 3, 2, 2, 2, 2832, 2835, 3, 2, 2, 2, 2833, 2835, 7, 44, 2, 2, 2834, 2829, 3, 2, 2, 2, 2834, 2833, 3, 2, 2, 2, 2835, 2836, 3, 2, 2, 2, 2836, 2838, 7, 48, 2, 2, 2837, 2839, 5, 421, 211, 2, 2838, 2837, 3, 2, 2, 2, 2839, 2840, 3, 2, 2, 2, 2840, 2838, 3, 2, 2, 2, 2840, 2841, 3, 2, 2, 2, 2841, 2848, 3, 2, 2, 2, 2842, 2844, 9, 15, 2, 2, 2843, 2845, 5, 421, 211, 2, 2844, 2843, 3, 2, 2, 2, 2845, 2846, 3, 2, 2, 2, 2846, 2844, 3, 2, 2, 2, 2846, 2847, 3, 2, 2, 2, 2847, 2849, 3, 2, 2, 2, 2848, 2842, 3, 2, 2, 2, 2848, 2849, 3, 2, 2, 2, 2849, 316, 3, 2, 2, 2, 2850, 2851, 7, 69, 2, 2, 2851, 2852, 7, 69, 2, 2, 2852, 2853, 7, 81, 2, 2, 2853, 2854, 7, 80, 2, 2, 2854, 318, 3, 2, 2, 2, 2855, 2856, 7, 74, 2, 2, 2856, 2857, 7, 81, 2, 2, 2857, 2858, 7, 78, 2, 2, 2858, 2859, 7, 78, 2, 2, 2859, 2860, 7, 71, 2, 2, 2860, 2861, 7, 84, 2, 2, 2861, 2862, 7, 75, 2, 2, 2862, 2863, 7, 86, 2, 2, 2863, 2864, 7, 74, 2, 2, 2864, 320, 3, 2, 2, 2, 2865, 2866, 7, 69, 2, 2, 2866, 2867, 7, 81, 2, 2, 2867, 2868, 7, 80, 2, 2, 2868, 2869, 7, 69, 2, 2, 2869, 2870, 7, 67, 2, 2, 2870, 2871, 7, 86, 2, 2, 2871, 2872, 7, 81, 2, 2, 2872, 2873, 7, 82, 2, 2, 2873, 322, 3, 2, 2, 2, 2874, 2875, 7, 69, 2, 2, 2875, 2876, 7, 86, 2, 2, 2876, 2877, 7, 84, 2, 2, 2877, 2878, 7, 78, 2, 2, 2878, 2879, 7, 70, 2, 2, 2879, 2880, 7, 75, 2, 2, 2880, 2881, 7, 84, 2, 2, 2881, 2882, 7, 71, 2, 2, 2882, 2883, 7, 69, 2, 2, 2883, 2884, 7, 86, 2, 2, 2884, 324, 3, 2, 2, 2, 2885, 2886, 7, 69, 2, 2, 2886, 2887, 7, 86, 2, 2, 2887, 2888, 7, 84, 2, 2, 2888, 2889, 7, 78, 2, 2, 2889, 2890, 7, 84, 2, 2, 2890, 2891, 7, 71, 2, 2, 2891, 2892, 7, 69, 2, 2, 2892, 326, 3, 2, 2, 2, 2893, 2894, 7, 86, 2, 2, 2894, 2895, 7, 81, 2, 2, 2895, 328, 3, 2, 2, 2, 2896, 2897, 7, 85, 2, 2, 2897, 2898, 7, 87, 2, 2, 2898, 2899, 7, 68, 2, 2, 2899, 2900, 7, 82, 2, 2, 2900, 2901, 7, 84, 2, 2, 2901, 2902, 7, 81, 2, 2, 2902, 2903, 7, 73, 2, 2, 2903, 2904, 7, 84, 2, 2, 2904, 2905, 7, 67, 2, 2, 2905, 2906, 7, 79, 2, 2, 2906, 2907, 7, 68, 2, 2, 2907, 2908, 7, 78, 2, 2, 2908, 2909, 7, 81, 2, 2, 2909, 2910, 7, 69, 2, 2, 2910, 2911, 7, 77, 2, 2, 2911, 330, 3, 2, 2, 2, 2912, 2913, 7, 70, 2, 2, 2913, 2914, 7, 81, 2, 2, 2914, 2915, 7, 68, 2, 2, 2915, 2916, 7, 78, 2, 2, 2916, 2917, 7, 81, 2, 2, 2917, 2918, 7, 69, 2, 2, 2918, 2919, 7, 77, 2, 2, 2919, 332, 3, 2, 2, 2, 2920, 2921, 7, 67, 2, 2, 2921, 2922, 7, 75, 2, 2, 2922, 2923, 7, 72, 2, 2, 2923, 334, 3, 2, 2, 2, 2924, 2925, 7, 86, 2, 2, 2925, 2926, 7, 74, 2, 2, 2926, 2927, 7, 71, 2, 2, 2927, 2928, 7, 80, 2, 2, 2928, 2929, 7, 68, 2, 2, 2929, 2930, 7, 78, 2, 2, 2930, 2931, 7, 81, 2, 2, 2931, 2932, 7, 69, 2, 2, 2932, 2933, 7, 77, 2, 2, 2933, 336, 3, 2, 2, 2, 2934, 2935, 7, 71, 2, 2, 2935, 2936, 7, 78, 2, 2, 2936, 2937, 7, 85, 2, 2, 2937, 2938, 7, 71, 2, 2, 2938, 2939, 7, 68, 2, 2, 2939, 2940, 7, 78, 2, 2, 2940, 2941, 7, 81, 2, 2, 2941, 2942, 7, 69, 2, 2, 2942, 2943, 7, 77, 2, 2, 2943, 338, 3, 2, 2, 2, 2944, 2945, 7, 69, 2, 2, 2945, 2946, 7, 81, 2, 2, 2946, 2947, 7, 70, 2, 2, 2947, 2948, 7, 71, 2, 2, 2948, 2949, 7, 84, 2, 2, 2949, 2950, 7, 81, 2, 2, 2950, 2951, 7, 81, 2, 2, 2951, 2952, 7, 86, 2, 2, 2952, 340, 3, 2, 2, 2, 2953, 2954, 7, 69, 2, 2, 2954, 2955, 7, 81, 2, 2, 2955, 2956, 7, 79, 2, 2, 2956, 2957, 7, 82, 2, 2, 2957, 2958, 7, 78, 2, 2, 2958, 2959, 7, 71, 2, 2, 2959, 2968, 7, 90, 2, 2, 2960, 2961, 7, 101, 2, 2, 2961, 2962, 7, 113, 2, 2, 2962, 2963, 7, 111, 2, 2, 2963, 2964, 7, 114, 2, 2, 2964, 2965, 7, 110, 2, 2, 2965, 2966, 7, 103, 2, 2, 2966, 2968, 7, 122, 2, 2, 2967, 2953, 3, 2, 2, 2, 2967, 2960, 3, 2, 2, 2, 2968, 342, 3, 2, 2, 2, 2969, 2970, 7, 82, 2, 2, 2970, 2971, 7, 84, 2, 2, 2971, 2972, 7, 71, 2, 2, 2972, 2973, 7, 69, 2, 2, 2973, 2974, 7, 75, 2, 2, 2974, 2975, 7, 85, 2, 2, 2975, 2976, 7, 75, 2, 2, 2976, 2977, 7, 81, 2, 2, 2977, 2988, 7, 80, 2, 2, 2978, 2979, 7, 114, 2, 2, 2979, 2980, 7, 116, 2, 2, 2980, 2981, 7, 103, 2, 2, 2981, 2982, 7, 101, 2, 2, 2982, 2983, 7, 107, 2, 2, 2983, 2984, 7, 117, 2, 2, 2984, 2985, 7, 107, 2, 2, 2985, 2986, 7, 113, 2, 2, 2986, 2988, 7, 112, 2, 2, 2987, 2969, 3, 2, 2, 2, 2987, 2978, 3, 2, 2, 2, 2988, 344, 3, 2, 2, 2, 2989, 2990, 7, 75, 2, 2, 2990, 2991, 7, 80, 2, 2, 2991, 2992, 7, 86, 2, 2, 2992, 2993, 7, 71, 2, 2, 2993, 2994, 7, 73, 2, 2, 2994, 2995, 7, 71, 2, 2, 2995, 3011, 7, 84, 2, 2, 2996, 2997, 7, 107, 2, 2, 2997, 2998, 7, 112, 2, 2, 2998, 2999, 7, 118, 2, 2, 2999, 3000, 7, 103, 2, 2, 3000, 3001, 7, 105, 2, 2, 3001, 3002, 7, 103, 2, 2, 3002, 3011, 7, 116, 2, 2, 3003, 3004, 7, 75, 2, 2, 3004, 3005, 7, 112, 2, 2, 3005, 3006, 7, 118, 2, 2, 3006, 3007, 7, 103, 2, 2, 3007, 3008, 7, 105, 2, 2, 3008, 3009, 7, 103, 2, 2, 3009, 3011, 7, 116, 2, 2, 3010, 2989, 3, 2, 2, 2, 3010, 2996, 3, 2, 2, 2, 3010, 3003, 3, 2, 2, 2, 3011, 346, 3, 2, 2, 2, 3012, 3013, 7, 78, 2, 2, 3013, 3014, 7, 81, 2, 2, 3014, 3015, 7, 73, 2, 2, 3015, 3016, 7, 75, 2, 2, 3016, 3017, 7, 69, 2, 2, 3017, 3018, 7, 67, 2, 2, 3018, 3034, 7, 78, 2, 2, 3019, 3020, 7, 110, 2, 2, 3020, 3021, 7, 113, 2, 2, 3021, 3022, 7, 105, 2, 2, 3022, 3023, 7, 107, 2, 2, 3023, 3024, 7, 101, 2, 2, 3024, 3025, 7, 99, 2, 2, 3025, 3034, 7, 110, 2, 2, 3026, 3027, 7, 78, 2, 2, 3027, 3028, 7, 113, 2, 2, 3028, 3029, 7, 105, 2, 2, 3029, 3030, 7, 107, 2, 2, 3030, 3031, 7, 101, 2, 2, 3031, 3032, 7, 99, 2, 2, 3032, 3034, 7, 110, 2, 2, 3033, 3012, 3, 2, 2, 2, 3033, 3019, 3, 2, 2, 2, 3033, 3026, 3, 2, 2, 2, 3034, 348, 3, 2, 2, 2, 3035, 3036, 7, 97, 2, 2, 3036, 350, 3, 2, 2, 2, 3037, 3038, 5, 349, 175, 2, 3038, 352, 3, 2, 2, 2, 3039, 3040, 7, 42, 2, 2, 3040, 3041, 7, 49, 2, 2, 3041, 354, 3, 2, 2, 2, 3042, 3043, 7, 48, 2, 2, 3043, 356, 3, 2, 2, 2, 3044, 3045, 7, 49, 2, 2, 3045, 3046, 7, 43, 2, 2, 3046, 358, 3, 2, 2, 2, 3047, 3048, 9, 16, 2, 2, 3048, 3050, 7, 41, 2, 2, 3049, 3051, 9, 17, 2, 2, 3050, 3049, 3, 2, 2, 2, 3051, 3052, 3, 2, 2, 2, 3052, 3050, 3, 2, 2, 2, 3052, 3053, 3, 2, 2, 2, 3053, 3054, 3, 2, 2, 2, 3054, 3064, 7, 41, 2, 2, 3055, 3056, 9, 16, 2, 2, 3056, 3058, 7, 36, 2, 2, 3057, 3059, 9, 17, 2, 2, 3058, 3057, 3, 2, 2, 2, 3059, 3060, 3, 2, 2, 2, 3060, 3058, 3, 2, 2, 2, 3060, 3061, 3, 2, 2, 2, 3061, 3062, 3, 2, 2, 2, 3062, 3064, 7, 36, 2, 2, 3063, 3047, 3, 2, 2, 2, 3063, 3055, 3, 2, 2, 2, 3064, 360, 3, 2, 2, 2, 3065, 3066, 9, 18, 2, 2, 3066, 3068, 7, 41, 2, 2, 3067, 3069, 9, 19, 2, 2, 3068, 3067, 3, 2, 2, 2, 3069, 3070, 3, 2, 2, 2, 3070, 3068, 3, 2, 2, 2, 3070, 3071, 3, 2, 2, 2, 3071, 3072, 3, 2, 2, 2, 3072, 3082, 7, 41, 2, 2, 3073, 3074, 9, 18, 2, 2, 3074, 3076, 7, 36, 2, 2, 3075, 3077, 9, 19, 2, 2, 3076, 3075, 3, 2, 2, 2, 3077, 3078, 3, 2, 2, 2, 3078, 3076, 3, 2, 2, 2, 3078, 3079, 3, 2, 2, 2, 3079, 3080, 3, 2, 2, 2, 3080, 3082, 7, 36, 2, 2, 3081, 3065, 3, 2, 2, 2, 3081, 3073, 3, 2, 2, 2, 3082, 362, 3, 2, 2, 2, 3083, 3084, 9, 20, 2, 2, 3084, 3086, 7, 36, 2, 2, 3085, 3087, 9, 21, 2, 2, 3086, 3085, 3, 2, 2, 2, 3087, 3088, 3, 2, 2, 2, 3088, 3086, 3, 2, 2, 2, 3088, 3089, 3, 2, 2, 2, 3089, 3090, 3, 2, 2, 2, 3090, 3100, 7, 36, 2, 2, 3091, 3092, 9, 20, 2, 2, 3092, 3094, 7, 41, 2, 2, 3093, 3095, 9, 21, 2, 2, 3094, 3093, 3, 2, 2, 2, 3095, 3096, 3, 2, 2, 2, 3096, 3094, 3, 2, 2, 2, 3096, 3097, 3, 2, 2, 2, 3097, 3098, 3, 2, 2, 2, 3098, 3100, 7, 41, 2, 2, 3099, 3083, 3, 2, 2, 2, 3099, 3091, 3, 2, 2, 2, 3100, 364, 3, 2, 2, 2, 3101, 3137, 7, 41, 2, 2, 3102, 3103, 7, 41, 2, 2, 3103, 3136, 7, 41, 2, 2, 3104, 3136, 10, 22, 2, 2, 3105, 3111, 7, 12, 2, 2, 3106, 3108, 7, 15, 2, 2, 3107, 3109, 7, 12, 2, 2, 3108, 3107, 3, 2, 2, 2, 3108, 3109, 3, 2, 2, 2, 3109, 3111, 3, 2, 2, 2, 3110, 3105, 3, 2, 2, 2, 3110, 3106, 3, 2, 2, 2, 3111, 3112, 3, 2, 2, 2, 3112, 3113, 7, 34, 2, 2, 3113, 3114, 7, 34, 2, 2, 3114, 3115, 7, 34, 2, 2, 3115, 3116, 7, 34, 2, 2, 3116, 3117, 7, 34, 2, 2, 3117, 3118, 3, 2, 2, 2, 3118, 3119, 5, 407, 204, 2, 3119, 3125, 3, 2, 2, 2, 3120, 3126, 7, 12, 2, 2, 3121, 3123, 7, 15, 2, 2, 3122, 3124, 7, 12, 2, 2, 3123, 3122, 3, 2, 2, 2, 3123, 3124, 3, 2, 2, 2, 3124, 3126, 3, 2, 2, 2, 3125, 3120, 3, 2, 2, 2, 3125, 3121, 3, 2, 2, 2, 3126, 3127, 3, 2, 2, 2, 3127, 3128, 7, 34, 2, 2, 3128, 3129, 7, 34, 2, 2, 3129, 3130, 7, 34, 2, 2, 3130, 3131, 7, 34, 2, 2, 3131, 3132, 7, 34, 2, 2, 3132, 3133, 3, 2, 2, 2, 3133, 3134, 5, 407, 204, 2, 3134, 3136, 3, 2, 2, 2, 3135, 3102, 3, 2, 2, 2, 3135, 3104, 3, 2, 2, 2, 3135, 3110, 3, 2, 2, 2, 3136, 3139, 3, 2, 2, 2, 3137, 3135, 3, 2, 2, 2, 3137, 3138, 3, 2, 2, 2, 3138, 3140, 3, 2, 2, 2, 3139, 3137, 3, 2, 2, 2, 3140, 3162, 7, 41, 2, 2, 3141, 3147, 7, 41, 2, 2, 3142, 3146, 10, 23, 2, 2, 3143, 3144, 7, 41, 2, 2, 3144, 3146, 7, 41, 2, 2, 3145, 3142, 3, 2, 2, 2, 3145, 3143, 3, 2, 2, 2, 3146, 3149, 3, 2, 2, 2, 3147, 3145, 3, 2, 2, 2, 3147, 3148, 3, 2, 2, 2, 3148, 3150, 3, 2, 2, 2, 3149, 3147, 3, 2, 2, 2, 3150, 3162, 7, 41, 2, 2, 3151, 3157, 7, 36, 2, 2, 3152, 3156, 10, 24, 2, 2, 3153, 3154, 7, 36, 2, 2, 3154, 3156, 7, 36, 2, 2, 3155, 3152, 3, 2, 2, 2, 3155, 3153, 3, 2, 2, 2, 3156, 3159, 3, 2, 2, 2, 3157, 3155, 3, 2, 2, 2, 3157, 3158, 3, 2, 2, 2, 3158, 3160, 3, 2, 2, 2, 3159, 3157, 3, 2, 2, 2, 3160, 3162, 7, 36, 2, 2, 3161, 3101, 3, 2, 2, 2, 3161, 3141, 3, 2, 2, 2, 3161, 3151, 3, 2, 2, 2, 3162, 366, 3, 2, 2, 2, 3163, 3165, 5, 421, 211, 2, 3164, 3163, 3, 2, 2, 2, 3165, 3166, 3, 2, 2, 2, 3166, 3164, 3, 2, 2, 2, 3166, 3167, 3, 2, 2, 2, 3167, 3168, 3, 2, 2, 2, 3168, 3172, 7, 48, 2, 2, 3169, 3171, 5, 421, 211, 2, 3170, 3169, 3, 2, 2, 2, 3171, 3174, 3, 2, 2, 2, 3172, 3170, 3, 2, 2, 2, 3172, 3173, 3, 2, 2, 2, 3173, 3176, 3, 2, 2, 2, 3174, 3172, 3, 2, 2, 2, 3175, 3177, 5, 417, 209, 2, 3176, 3175, 3, 2, 2, 2, 3176, 3177, 3, 2, 2, 2, 3177, 3201, 3, 2, 2, 2, 3178, 3180, 5, 421, 211, 2, 3179, 3178, 3, 2, 2, 2, 3180, 3183, 3, 2, 2, 2, 3181, 3179, 3, 2, 2, 2, 3181, 3182, 3, 2, 2, 2, 3182, 3184, 3, 2, 2, 2, 3183, 3181, 3, 2, 2, 2, 3184, 3186, 7, 48, 2, 2, 3185, 3187, 5, 421, 211, 2, 3186, 3185, 3, 2, 2, 2, 3187, 3188, 3, 2, 2, 2, 3188, 3186, 3, 2, 2, 2, 3188, 3189, 3, 2, 2, 2, 3189, 3191, 3, 2, 2, 2, 3190, 3192, 5, 417, 209, 2, 3191, 3190, 3, 2, 2, 2, 3191, 3192, 3, 2, 2, 2, 3192, 3201, 3, 2, 2, 2, 3193, 3195, 5, 421, 211, 2, 3194, 3193, 3, 2, 2, 2, 3195, 3196, 3, 2, 2, 2, 3196, 3194, 3, 2, 2, 2, 3196, 3197, 3, 2, 2, 2, 3197, 3198, 3, 2, 2, 2, 3198, 3199, 5, 417, 209, 2, 3199, 3201, 3, 2, 2, 2, 3200, 3164, 3, 2, 2, 2, 3200, 3181, 3, 2, 2, 2, 3200, 3194, 3, 2, 2, 2, 3201, 368, 3, 2, 2, 2, 3202, 3203, 7, 70, 2, 2, 3203, 3204, 7, 71, 2, 2, 3204, 3205, 7, 67, 2, 2, 3205, 3206, 7, 78, 2, 2, 3206, 3207, 7, 78, 2, 2, 3207, 3208, 7, 81, 2, 2, 3208, 3209, 7, 69, 2, 2, 3209, 3210, 7, 67, 2, 2, 3210, 3211, 7, 86, 2, 2, 3211, 3223, 7, 71, 2, 2, 3212, 3213, 7, 102, 2, 2, 3213, 3214, 7, 103, 2, 2, 3214, 3215, 7, 99, 2, 2, 3215, 3216, 7, 110, 2, 2, 3216, 3217, 7, 110, 2, 2, 3217, 3218, 7, 113, 2, 2, 3218, 3219, 7, 101, 2, 2, 3219, 3220, 7, 99, 2, 2, 3220, 3221, 7, 118, 2, 2, 3221, 3223, 7, 103, 2, 2, 3222, 3202, 3, 2, 2, 2, 3222, 3212, 3, 2, 2, 2, 3223, 370, 3, 2, 2, 2, 3224, 3225, 7, 80, 2, 2, 3225, 3226, 7, 87, 2, 2, 3226, 3227, 7, 78, 2, 2, 3227, 3228, 7, 78, 2, 2, 3228, 3229, 7, 75, 2, 2, 3229, 3230, 7, 72, 2, 2, 3230, 3239, 7, 91, 2, 2, 3231, 3232, 7, 112, 2, 2, 3232, 3233, 7, 119, 2, 2, 3233, 3234, 7, 110, 2, 2, 3234, 3235, 7, 110, 2, 2, 3235, 3236, 7, 107, 2, 2, 3236, 3237, 7, 104, 2, 2, 3237, 3239, 7, 123, 2, 2, 3238, 3224, 3, 2, 2, 2, 3238, 3231, 3, 2, 2, 2, 3239, 372, 3, 2, 2, 2, 3240, 3241, 7, 69, 2, 2, 3241, 3242, 7, 91, 2, 2, 3242, 3243, 7, 69, 2, 2, 3243, 3244, 7, 78, 2, 2, 3244, 3251, 7, 71, 2, 2, 3245, 3246, 7, 101, 2, 2, 3246, 3247, 7, 123, 2, 2, 3247, 3248, 7, 101, 2, 2, 3248, 3249, 7, 110, 2, 2, 3249, 3251, 7, 103, 2, 2, 3250, 3240, 3, 2, 2, 2, 3250, 3245, 3, 2, 2, 2, 3251, 374, 3, 2, 2, 2, 3252, 3253, 7, 71, 2, 2, 3253, 3254, 7, 80, 2, 2, 3254, 3255, 7, 70, 2, 2, 3255, 3256, 7, 86, 2, 2, 3256, 3257, 7, 91, 2, 2, 3257, 3258, 7, 82, 2, 2, 3258, 3281, 7, 71, 2, 2, 3259, 3260, 7, 103, 2, 2, 3260, 3261, 7, 112, 2, 2, 3261, 3262, 7, 102, 2, 2, 3262, 3263, 7, 118, 2, 2, 3263, 3264, 7, 123, 2, 2, 3264, 3265, 7, 114, 2, 2, 3265, 3281, 7, 103, 2, 2, 3266, 3267, 7, 71, 2, 2, 3267, 3268, 7, 112, 2, 2, 3268, 3269, 7, 102, 2, 2, 3269, 3270, 7, 118, 2, 2, 3270, 3271, 7, 123, 2, 2, 3271, 3272, 7, 114, 2, 2, 3272, 3281, 7, 103, 2, 2, 3273, 3274, 7, 71, 2, 2, 3274, 3275, 7, 112, 2, 2, 3275, 3276, 7, 102, 2, 2, 3276, 3277, 7, 86, 2, 2, 3277, 3278, 7, 123, 2, 2, 3278, 3279, 7, 114, 2, 2, 3279, 3281, 7, 103, 2, 2, 3280, 3252, 3, 2, 2, 2, 3280, 3259, 3, 2, 2, 2, 3280, 3266, 3, 2, 2, 2, 3280, 3273, 3, 2, 2, 2, 3281, 376, 3, 2, 2, 2, 3282, 3283, 7, 75, 2, 2, 3283, 3284, 7, 80, 2, 2, 3284, 3285, 7, 86, 2, 2, 3285, 3286, 7, 71, 2, 2, 3286, 3287, 7, 84, 2, 2, 3287, 3288, 7, 72, 2, 2, 3288, 3289, 7, 67, 2, 2, 3289, 3290, 7, 69, 2, 2, 3290, 3310, 7, 71, 2, 2, 3291, 3292, 7, 107, 2, 2, 3292, 3293, 7, 112, 2, 2, 3293, 3294, 7, 118, 2, 2, 3294, 3295, 7, 103, 2, 2, 3295, 3296, 7, 116, 2, 2, 3296, 3297, 7, 104, 2, 2, 3297, 3298, 7, 99, 2, 2, 3298, 3299, 7, 101, 2, 2, 3299, 3310, 7, 103, 2, 2, 3300, 3301, 7, 75, 2, 2, 3301, 3302, 7, 112, 2, 2, 3302, 3303, 7, 118, 2, 2, 3303, 3304, 7, 103, 2, 2, 3304, 3305, 7, 116, 2, 2, 3305, 3306, 7, 104, 2, 2, 3306, 3307, 7, 99, 2, 2, 3307, 3308, 7, 101, 2, 2, 3308, 3310, 7, 103, 2, 2, 3309, 3282, 3, 2, 2, 2, 3309, 3291, 3, 2, 2, 2, 3309, 3300, 3, 2, 2, 2, 3310, 378, 3, 2, 2, 2, 3311, 3312, 7, 85, 2, 2, 3312, 3313, 7, 82, 2, 2, 3313, 3314, 7, 81, 2, 2, 3314, 3315, 7, 72, 2, 2, 3315, 3316, 7, 72, 2, 2, 3316, 380, 3, 2, 2, 2, 3317, 3318, 7, 85, 2, 2, 3318, 3319, 7, 82, 2, 2, 3319, 3320, 7, 81, 2, 2, 3320, 3321, 7, 80, 2, 2, 3321, 382, 3, 2, 2, 2, 3322, 3324, 5, 421, 211, 2, 3323, 3322, 3, 2, 2, 2, 3324, 3325, 3, 2, 2, 2, 3325, 3323, 3, 2, 2, 2, 3325, 3326, 3, 2, 2, 2, 3326, 384, 3, 2, 2, 2, 3327, 3328, 7, 118, 2, 2, 3328, 3329, 7, 123, 2, 2, 3329, 3330, 7, 114, 2, 2, 3330, 3340, 7, 103, 2, 2, 3331, 3332, 7, 86, 2, 2, 3332, 3333, 7, 91, 2, 2, 3333, 3334, 7, 82, 2, 2, 3334, 3340, 7, 71, 2, 2, 3335, 3336, 7, 86, 2, 2, 3336, 3337, 7, 123, 2, 2, 3337, 3338, 7, 114, 2, 2, 3338, 3340, 7, 103, 2, 2, 3339, 3327, 3, 2, 2, 2, 3339, 3331, 3, 2, 2, 2, 3339, 3335, 3, 2, 2, 2, 3340, 386, 3, 2, 2, 2, 3341, 3345, 5, 395, 198, 2, 3342, 3344, 5, 393, 197, 2, 3343, 3342, 3, 2, 2, 2, 3344, 3347, 3, 2, 2, 2, 3345, 3343, 3, 2, 2, 2, 3345, 3346, 3, 2, 2, 2, 3346, 388, 3, 2, 2, 2, 3347, 3345, 3, 2, 2, 2, 3348, 3349, 7, 71, 2, 2, 3349, 3350, 7, 90, 2, 2, 3350, 3351, 7, 75, 2, 2, 3351, 3357, 7, 86, 2, 2, 3352, 3353, 7, 103, 2, 2, 3353, 3354, 7, 122, 2, 2, 3354, 3355, 7, 107, 2, 2, 3355, 3357, 7, 118, 2, 2, 3356, 3348, 3, 2, 2, 2, 3356, 3352, 3, 2, 2, 2, 3357, 390, 3, 2, 2, 2, 3358, 3359, 7, 68, 2, 2, 3359, 3360, 7, 78, 2, 2, 3360, 3361, 7, 67, 2, 2, 3361, 3362, 7, 80, 2, 2, 3362, 3369, 7, 77, 2, 2, 3363, 3364, 7, 100, 2, 2, 3364, 3365, 7, 110, 2, 2, 3365, 3366, 7, 99, 2, 2, 3366, 3367, 7, 112, 2, 2, 3367, 3369, 7, 109, 2, 2, 3368, 3358, 3, 2, 2, 2, 3368, 3363, 3, 2, 2, 2, 3369, 392, 3, 2, 2, 2, 3370, 3374, 5, 395, 198, 2, 3371, 3374, 5, 421, 211, 2, 3372, 3374, 5, 349, 175, 2, 3373, 3370, 3, 2, 2, 2, 3373, 3371, 3, 2, 2, 2, 3373, 3372, 3, 2, 2, 2, 3374, 394, 3, 2, 2, 2, 3375, 3376, 9, 25, 2, 2, 3376, 396, 3, 2, 2, 2, 3377, 3378, 5, 275, 138, 2, 3378, 398, 3, 2, 2, 2, 3379, 3383, 7, 36, 2, 2, 3380, 3382, 10, 26, 2, 2, 3381, 3380, 3, 2, 2, 2, 3382, 3385, 3, 2, 2, 2, 3383, 3381, 3, 2, 2, 2, 3383, 3384, 3, 2, 2, 2, 3384, 3386, 3, 2, 2, 2, 3385, 3383, 3, 2, 2, 2, 3386, 3387, 7, 36, 2, 2, 3387, 400, 3, 2, 2, 2, 3388, 3390, 9, 5, 2, 2, 3389, 3388, 3, 2, 2, 2, 3390, 3391, 3, 2, 2, 2, 3391, 3389, 3, 2, 2, 2, 3391, 3392, 3, 2, 2, 2, 3392, 402, 3, 2, 2, 2, 3393, 3395, 9, 4, 2, 2, 3394, 3393, 3, 2, 2, 2, 3395, 3396, 3, 2, 2, 2, 3396, 3394, 3, 2, 2, 2, 3396, 3397, 3, 2, 2, 2, 3397, 404, 3, 2, 2, 2, 3398, 3400, 7, 40, 2, 2, 3399, 3401, 5, 403, 202, 2, 3400, 3399, 3, 2, 2, 2, 3400, 3401, 3, 2, 2, 2, 3401, 3403, 3, 2, 2, 2, 3402, 3404, 5, 247, 124, 2, 3403, 3402, 3, 2, 2, 2, 3403, 3404, 3, 2, 2, 2, 3404, 3405, 3, 2, 2, 2, 3405, 3419, 5, 239, 120, 2, 3406, 3408, 5, 403, 202, 2, 3407, 3406, 3, 2, 2, 2, 3408, 3411, 3, 2, 2, 2, 3409, 3407, 3, 2, 2, 2, 3409, 3410, 3, 2, 2, 2, 3410, 3415, 3, 2, 2, 2, 3411, 3409, 3, 2, 2, 2, 3412, 3414, 9, 4, 2, 2, 3413, 3412, 3, 2, 2, 2, 3414, 3417, 3, 2, 2, 2, 3415, 3413, 3, 2, 2, 2, 3415, 3416, 3, 2, 2, 2, 3416, 3418, 3, 2, 2, 2, 3417, 3415, 3, 2, 2, 2, 3418, 3420, 7, 40, 2, 2, 3419, 3409, 3, 2, 2, 2, 3419, 3420, 3, 2, 2, 2, 3420, 3443, 3, 2, 2, 2, 3421, 3423, 5, 403, 202, 2, 3422, 3421, 3, 2, 2, 2, 3422, 3423, 3, 2, 2, 2, 3423, 3425, 3, 2, 2, 2, 3424, 3426, 5, 247, 124, 2, 3425, 3424, 3, 2, 2, 2, 3425, 3426, 3, 2, 2, 2, 3426, 3427, 3, 2, 2, 2, 3427, 3431, 5, 239, 120, 2, 3428, 3430, 5, 403, 202, 2, 3429, 3428, 3, 2, 2, 2, 3430, 3433, 3, 2, 2, 2, 3431, 3429, 3, 2, 2, 2, 3431, 3432, 3, 2, 2, 2, 3432, 3437, 3, 2, 2, 2, 3433, 3431, 3, 2, 2, 2, 3434, 3436, 9, 4, 2, 2, 3435, 3434, 3, 2, 2, 2, 3436, 3439, 3, 2, 2, 2, 3437, 3435, 3, 2, 2, 2, 3437, 3438, 3, 2, 2, 2, 3438, 3440, 3, 2, 2, 2, 3439, 3437, 3, 2, 2, 2, 3440, 3441, 7, 40, 2, 2, 3441, 3443, 3, 2, 2, 2, 3442, 3398, 3, 2, 2, 2, 3442, 3422, 3, 2, 2, 2, 3443, 3444, 3, 2, 2, 2, 3444, 3445, 8, 203, 2, 2, 3445, 406, 3, 2, 2, 2, 3446, 3447, 10, 27, 2, 2, 3447, 408, 3, 2, 2, 2, 3448, 3451, 5, 419, 210, 2, 3449, 3451, 5, 421, 211, 2, 3450, 3448, 3, 2, 2, 2, 3450, 3449, 3, 2, 2, 2, 3451, 410, 3, 2, 2, 2, 3452, 3455, 5, 421, 211, 2, 3453, 3455, 4, 99, 104, 2, 3454, 3452, 3, 2, 2, 2, 3454, 3453, 3, 2, 2, 2, 3455, 412, 3, 2, 2, 2, 3456, 3457, 9, 9, 2, 2, 3457, 414, 3, 2, 2, 2, 3458, 3460, 9, 28, 2, 2, 3459, 3461, 5, 421, 211, 2, 3460, 3459, 3, 2, 2, 2, 3461, 3462, 3, 2, 2, 2, 3462, 3460, 3, 2, 2, 2, 3462, 3463, 3, 2, 2, 2, 3463, 3464, 3, 2, 2, 2, 3464, 3466, 7, 48, 2, 2, 3465, 3467, 5, 421, 211, 2, 3466, 3465, 3, 2, 2, 2, 3467, 3468, 3, 2, 2, 2, 3468, 3466, 3, 2, 2, 2, 3468, 3469, 3, 2, 2, 2, 3469, 3491, 3, 2, 2, 2, 3470, 3472, 9, 29, 2, 2, 3471, 3473, 5, 421, 211, 2, 3472, 3471, 3, 2, 2, 2, 3473, 3474, 3, 2, 2, 2, 3474, 3472, 3, 2, 2, 2, 3474, 3475, 3, 2, 2, 2, 3475, 3476, 3, 2, 2, 2, 3476, 3478, 7, 48, 2, 2, 3477, 3479, 5, 421, 211, 2, 3478, 3477, 3, 2, 2, 2, 3479, 3480, 3, 2, 2, 2, 3480, 3478, 3, 2, 2, 2, 3480, 3481, 3, 2, 2, 2, 3481, 3488, 3, 2, 2, 2, 3482, 3484, 7, 103, 2, 2, 3483, 3485, 5, 421, 211, 2, 3484, 3483, 3, 2, 2, 2, 3485, 3486, 3, 2, 2, 2, 3486, 3484, 3, 2, 2, 2, 3486, 3487, 3, 2, 2, 2, 3487, 3489, 3, 2, 2, 2, 3488, 3482, 3, 2, 2, 2, 3488, 3489, 3, 2, 2, 2, 3489, 3491, 3, 2, 2, 2, 3490, 3458, 3, 2, 2, 2, 3490, 3470, 3, 2, 2, 2, 3491, 416, 3, 2, 2, 2, 3492, 3494, 9, 30, 2, 2, 3493, 3495, 5, 413, 207, 2, 3494, 3493, 3, 2, 2, 2, 3494, 3495, 3, 2, 2, 2, 3495, 3497, 3, 2, 2, 2, 3496, 3498, 5, 421, 211, 2, 3497, 3496, 3, 2, 2, 2, 3498, 3499, 3, 2, 2, 2, 3499, 3497, 3, 2, 2, 2, 3499, 3500, 3, 2, 2, 2, 3500, 418, 3, 2, 2, 2, 3501, 3503, 9, 25, 2, 2, 3502, 3501, 3, 2, 2, 2, 3503, 420, 3, 2, 2, 2, 3504, 3505, 4, 50, 59, 2, 3505, 422, 3, 2, 2, 2, 225, 2, 450, 476, 496, 525, 548, 565, 591, 608, 640, 679, 708, 719, 748, 768, 803, 829, 847, 867, 875, 886, 903, 929, 940, 954, 989, 996, 1011, 1075, 1098, 1118, 1147, 1161, 1196, 1225, 1248, 1271, 1299, 1319, 1323, 1349, 1363, 1392, 1421, 1447, 1476, 1490, 1504, 1512, 1526, 1534, 1544, 1554, 1566, 1580, 1600, 1608, 1631, 1657, 1683, 1700, 1720, 1742, 1756, 1770, 1793, 1813, 1827, 1838, 1850, 1862, 1874, 1884, 1896, 1906, 1914, 1924, 1932, 1946, 1958, 1976, 1996, 2004, 2014, 2030, 2038, 2052, 2066, 2074, 2084, 2104, 2116, 2130, 2146, 2168, 2180, 2190, 2204, 2218, 2236, 2246, 2256, 2268, 2282, 2296, 2308, 2318, 2338, 2362, 2378, 2394, 2414, 2430, 2444, 2470, 2488, 2493, 2503, 2511, 2515, 2517, 2524, 2530, 2537, 2543, 2551, 2557, 2560, 2582, 2600, 2610, 2641, 2653, 2663, 2675, 2689, 2701, 2713, 2723, 2733, 2743, 2753, 2763, 2773, 2787, 2803, 2808, 2813, 2818, 2826, 2831, 2834, 2840, 2846, 2848, 2967, 2987, 3010, 3033, 3052, 3060, 3063, 3070, 3078, 3081, 3088, 3096, 3099, 3108, 3110, 3123, 3125, 3135, 3137, 3145, 3147, 3155, 3157, 3161, 3166, 3172, 3176, 3181, 3188, 3191, 3196, 3200, 3222, 3238, 3250, 3280, 3309, 3325, 3339, 3345, 3356, 3368, 3373, 3383, 3391, 3396, 3400, 3403, 3409, 3415, 3419, 3422, 3425, 3431, 3437, 3442, 3450, 3454, 3462, 3468, 3474, 3480, 3486, 3488, 3490, 3494, 3499, 3502, 3, 8, 2, 2] \ No newline at end of file +[4, 0, 195, 3504, 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, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 449, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 475, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 495, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 524, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 547, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 564, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 590, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 607, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 639, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 678, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 707, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 718, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 747, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 767, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 802, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 828, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 846, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 866, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 874, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 885, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 902, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 928, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 939, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 953, 8, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 988, 8, 25, 1, 26, 1, 26, 1, 26, 4, 26, 993, 8, 26, 11, 26, 12, 26, 994, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1010, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1074, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 1097, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1117, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1146, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1160, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1195, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1224, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1247, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1270, 8, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1298, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1318, 8, 40, 1, 41, 1, 41, 3, 41, 1322, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1348, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1362, 8, 43, 1, 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, 1, 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, 1, 44, 3, 44, 1391, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1420, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1446, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1475, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1489, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1503, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1511, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1525, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1533, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1543, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1553, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1565, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1579, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1599, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1607, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1630, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1656, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1682, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1699, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1719, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1741, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1755, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1769, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1792, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1812, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1826, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1837, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1849, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1861, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1873, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1883, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1895, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 3, 76, 1905, 8, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1913, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1923, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1931, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1945, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1957, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1975, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1995, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2003, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2013, 8, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2029, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 2037, 8, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 2051, 8, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2065, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 2073, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 2083, 8, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2103, 8, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 2115, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 2129, 8, 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, 1, 95, 3, 95, 2145, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2167, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 2179, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 2189, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 2203, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2217, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 2235, 8, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2245, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2255, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 2267, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2281, 8, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2295, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 2307, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 2317, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 2337, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 2361, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 2377, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 2393, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 2413, 8, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2429, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 2443, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2469, 8, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2487, 8, 117, 1, 118, 1, 118, 1, 118, 3, 118, 2492, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 2502, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 2510, 8, 120, 1, 121, 1, 121, 4, 121, 2514, 8, 121, 11, 121, 12, 121, 2515, 1, 121, 1, 121, 1, 122, 5, 122, 2521, 8, 122, 10, 122, 12, 122, 2524, 9, 122, 1, 122, 5, 122, 2527, 8, 122, 10, 122, 12, 122, 2530, 9, 122, 1, 122, 1, 122, 5, 122, 2534, 8, 122, 10, 122, 12, 122, 2537, 9, 122, 1, 122, 5, 122, 2540, 8, 122, 10, 122, 12, 122, 2543, 9, 122, 1, 122, 1, 122, 1, 122, 5, 122, 2548, 8, 122, 10, 122, 12, 122, 2551, 9, 122, 1, 122, 5, 122, 2554, 8, 122, 10, 122, 12, 122, 2557, 9, 122, 3, 122, 2559, 8, 122, 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, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 2581, 8, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 2599, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 2609, 8, 129, 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, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2640, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2652, 8, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2662, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 2674, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 2688, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 2700, 8, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 2712, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 2722, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 2732, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 2742, 8, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2752, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 2762, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 2772, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 2786, 8, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 2802, 8, 153, 1, 154, 4, 154, 2805, 8, 154, 11, 154, 12, 154, 2806, 1, 154, 1, 154, 1, 155, 3, 155, 2812, 8, 155, 1, 155, 4, 155, 2815, 8, 155, 11, 155, 12, 155, 2816, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2825, 8, 156, 1, 156, 4, 156, 2828, 8, 156, 11, 156, 12, 156, 2829, 1, 156, 3, 156, 2833, 8, 156, 1, 156, 1, 156, 4, 156, 2837, 8, 156, 11, 156, 12, 156, 2838, 1, 156, 1, 156, 4, 156, 2843, 8, 156, 11, 156, 12, 156, 2844, 3, 156, 2847, 8, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 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, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 2966, 8, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2986, 8, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 3009, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 3032, 8, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 4, 178, 3049, 8, 178, 11, 178, 12, 178, 3050, 1, 178, 1, 178, 1, 178, 1, 178, 4, 178, 3057, 8, 178, 11, 178, 12, 178, 3058, 1, 178, 3, 178, 3062, 8, 178, 1, 179, 1, 179, 1, 179, 4, 179, 3067, 8, 179, 11, 179, 12, 179, 3068, 1, 179, 1, 179, 1, 179, 1, 179, 4, 179, 3075, 8, 179, 11, 179, 12, 179, 3076, 1, 179, 3, 179, 3080, 8, 179, 1, 180, 1, 180, 1, 180, 4, 180, 3085, 8, 180, 11, 180, 12, 180, 3086, 1, 180, 1, 180, 1, 180, 1, 180, 4, 180, 3093, 8, 180, 11, 180, 12, 180, 3094, 1, 180, 3, 180, 3098, 8, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 3, 181, 3107, 8, 181, 3, 181, 3109, 8, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 3, 181, 3122, 8, 181, 3, 181, 3124, 8, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 5, 181, 3134, 8, 181, 10, 181, 12, 181, 3137, 9, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 5, 181, 3144, 8, 181, 10, 181, 12, 181, 3147, 9, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 5, 181, 3154, 8, 181, 10, 181, 12, 181, 3157, 9, 181, 1, 181, 3, 181, 3160, 8, 181, 1, 182, 4, 182, 3163, 8, 182, 11, 182, 12, 182, 3164, 1, 182, 1, 182, 5, 182, 3169, 8, 182, 10, 182, 12, 182, 3172, 9, 182, 1, 182, 3, 182, 3175, 8, 182, 1, 182, 5, 182, 3178, 8, 182, 10, 182, 12, 182, 3181, 9, 182, 1, 182, 1, 182, 4, 182, 3185, 8, 182, 11, 182, 12, 182, 3186, 1, 182, 3, 182, 3190, 8, 182, 1, 182, 4, 182, 3193, 8, 182, 11, 182, 12, 182, 3194, 1, 182, 1, 182, 3, 182, 3199, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 3221, 8, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 3, 184, 3237, 8, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 3249, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 3279, 8, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 3308, 8, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 4, 190, 3322, 8, 190, 11, 190, 12, 190, 3323, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 3338, 8, 191, 1, 192, 1, 192, 5, 192, 3342, 8, 192, 10, 192, 12, 192, 3345, 9, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 3, 193, 3355, 8, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 3367, 8, 194, 1, 195, 1, 195, 1, 195, 3, 195, 3372, 8, 195, 1, 196, 1, 196, 1, 197, 1, 197, 1, 198, 1, 198, 5, 198, 3380, 8, 198, 10, 198, 12, 198, 3383, 9, 198, 1, 198, 1, 198, 1, 199, 4, 199, 3388, 8, 199, 11, 199, 12, 199, 3389, 1, 200, 4, 200, 3393, 8, 200, 11, 200, 12, 200, 3394, 1, 201, 1, 201, 3, 201, 3399, 8, 201, 1, 201, 3, 201, 3402, 8, 201, 1, 201, 1, 201, 5, 201, 3406, 8, 201, 10, 201, 12, 201, 3409, 9, 201, 1, 201, 5, 201, 3412, 8, 201, 10, 201, 12, 201, 3415, 9, 201, 1, 201, 3, 201, 3418, 8, 201, 1, 201, 3, 201, 3421, 8, 201, 1, 201, 3, 201, 3424, 8, 201, 1, 201, 1, 201, 5, 201, 3428, 8, 201, 10, 201, 12, 201, 3431, 9, 201, 1, 201, 5, 201, 3434, 8, 201, 10, 201, 12, 201, 3437, 9, 201, 1, 201, 1, 201, 3, 201, 3441, 8, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 203, 1, 203, 3, 203, 3449, 8, 203, 1, 204, 1, 204, 3, 204, 3453, 8, 204, 1, 205, 1, 205, 1, 206, 1, 206, 4, 206, 3459, 8, 206, 11, 206, 12, 206, 3460, 1, 206, 1, 206, 4, 206, 3465, 8, 206, 11, 206, 12, 206, 3466, 1, 206, 1, 206, 4, 206, 3471, 8, 206, 11, 206, 12, 206, 3472, 1, 206, 1, 206, 4, 206, 3477, 8, 206, 11, 206, 12, 206, 3478, 1, 206, 1, 206, 4, 206, 3483, 8, 206, 11, 206, 12, 206, 3484, 3, 206, 3487, 8, 206, 3, 206, 3489, 8, 206, 1, 207, 1, 207, 3, 207, 3493, 8, 207, 1, 207, 4, 207, 3496, 8, 207, 11, 207, 12, 207, 3497, 1, 208, 3, 208, 3501, 8, 208, 1, 209, 1, 209, 0, 0, 210, 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, 0, 77, 38, 79, 39, 81, 0, 83, 40, 85, 41, 87, 42, 89, 43, 91, 44, 93, 45, 95, 46, 97, 47, 99, 48, 101, 49, 103, 50, 105, 51, 107, 52, 109, 53, 111, 54, 113, 55, 115, 56, 117, 57, 119, 58, 121, 59, 123, 60, 125, 61, 127, 62, 129, 63, 131, 64, 133, 65, 135, 66, 137, 67, 139, 68, 141, 69, 143, 70, 145, 71, 147, 72, 149, 73, 151, 74, 153, 75, 155, 76, 157, 77, 159, 78, 161, 79, 163, 80, 165, 81, 167, 82, 169, 83, 171, 84, 173, 85, 175, 86, 177, 87, 179, 88, 181, 89, 183, 90, 185, 91, 187, 92, 189, 93, 191, 94, 193, 95, 195, 96, 197, 97, 199, 98, 201, 99, 203, 100, 205, 101, 207, 102, 209, 103, 211, 104, 213, 105, 215, 106, 217, 107, 219, 108, 221, 109, 223, 110, 225, 111, 227, 112, 229, 113, 231, 114, 233, 115, 235, 116, 237, 0, 239, 117, 241, 118, 243, 119, 245, 120, 247, 121, 249, 122, 251, 123, 253, 124, 255, 125, 257, 126, 259, 127, 261, 128, 263, 129, 265, 130, 267, 131, 269, 132, 271, 133, 273, 0, 275, 134, 277, 135, 279, 136, 281, 137, 283, 138, 285, 139, 287, 140, 289, 141, 291, 142, 293, 143, 295, 144, 297, 145, 299, 146, 301, 147, 303, 148, 305, 149, 307, 150, 309, 151, 311, 152, 313, 153, 315, 154, 317, 155, 319, 156, 321, 157, 323, 158, 325, 159, 327, 160, 329, 161, 331, 162, 333, 163, 335, 164, 337, 165, 339, 166, 341, 167, 343, 168, 345, 169, 347, 0, 349, 170, 351, 171, 353, 172, 355, 173, 357, 174, 359, 175, 361, 176, 363, 177, 365, 178, 367, 179, 369, 180, 371, 181, 373, 182, 375, 183, 377, 184, 379, 185, 381, 186, 383, 187, 385, 188, 387, 189, 389, 190, 391, 191, 393, 0, 395, 192, 397, 193, 399, 194, 401, 0, 403, 195, 405, 0, 407, 0, 409, 0, 411, 0, 413, 0, 415, 0, 417, 0, 419, 0, 1, 0, 29, 2, 0, 60, 60, 62, 62, 4, 0, 10, 10, 13, 13, 133, 133, 8232, 8233, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 2, 0, 67, 67, 99, 99, 2, 0, 47, 47, 58, 58, 2, 0, 88, 88, 120, 120, 2, 0, 43, 43, 45, 45, 2, 0, 80, 80, 112, 112, 4, 0, 65, 66, 68, 69, 97, 98, 100, 101, 2, 0, 69, 69, 101, 101, 4, 0, 78, 78, 83, 83, 110, 110, 115, 115, 12, 0, 70, 71, 73, 73, 76, 76, 79, 79, 81, 81, 90, 90, 102, 103, 105, 105, 108, 108, 111, 111, 113, 113, 122, 122, 4, 0, 68, 69, 81, 81, 100, 101, 113, 113, 2, 0, 90, 90, 122, 122, 3, 0, 48, 57, 65, 70, 97, 102, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 2, 0, 79, 79, 111, 111, 1, 0, 48, 55, 3, 0, 10, 10, 13, 13, 39, 39, 1, 0, 39, 39, 1, 0, 34, 34, 2, 0, 65, 90, 97, 122, 3, 0, 10, 10, 13, 13, 34, 34, 2, 0, 32, 32, 48, 48, 3, 0, 100, 100, 102, 102, 105, 105, 2, 0, 101, 101, 103, 103, 2, 0, 68, 69, 100, 101, 3783, 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, 77, 1, 0, 0, 0, 0, 79, 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, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 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, 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, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 1, 448, 1, 0, 0, 0, 3, 474, 1, 0, 0, 0, 5, 494, 1, 0, 0, 0, 7, 523, 1, 0, 0, 0, 9, 546, 1, 0, 0, 0, 11, 563, 1, 0, 0, 0, 13, 589, 1, 0, 0, 0, 15, 606, 1, 0, 0, 0, 17, 638, 1, 0, 0, 0, 19, 677, 1, 0, 0, 0, 21, 706, 1, 0, 0, 0, 23, 717, 1, 0, 0, 0, 25, 746, 1, 0, 0, 0, 27, 766, 1, 0, 0, 0, 29, 801, 1, 0, 0, 0, 31, 827, 1, 0, 0, 0, 33, 845, 1, 0, 0, 0, 35, 865, 1, 0, 0, 0, 37, 873, 1, 0, 0, 0, 39, 884, 1, 0, 0, 0, 41, 901, 1, 0, 0, 0, 43, 927, 1, 0, 0, 0, 45, 938, 1, 0, 0, 0, 47, 952, 1, 0, 0, 0, 49, 954, 1, 0, 0, 0, 51, 987, 1, 0, 0, 0, 53, 989, 1, 0, 0, 0, 55, 1009, 1, 0, 0, 0, 57, 1073, 1, 0, 0, 0, 59, 1075, 1, 0, 0, 0, 61, 1096, 1, 0, 0, 0, 63, 1116, 1, 0, 0, 0, 65, 1145, 1, 0, 0, 0, 67, 1159, 1, 0, 0, 0, 69, 1194, 1, 0, 0, 0, 71, 1223, 1, 0, 0, 0, 73, 1246, 1, 0, 0, 0, 75, 1269, 1, 0, 0, 0, 77, 1271, 1, 0, 0, 0, 79, 1297, 1, 0, 0, 0, 81, 1317, 1, 0, 0, 0, 83, 1321, 1, 0, 0, 0, 85, 1347, 1, 0, 0, 0, 87, 1361, 1, 0, 0, 0, 89, 1390, 1, 0, 0, 0, 91, 1419, 1, 0, 0, 0, 93, 1445, 1, 0, 0, 0, 95, 1474, 1, 0, 0, 0, 97, 1488, 1, 0, 0, 0, 99, 1502, 1, 0, 0, 0, 101, 1510, 1, 0, 0, 0, 103, 1524, 1, 0, 0, 0, 105, 1532, 1, 0, 0, 0, 107, 1542, 1, 0, 0, 0, 109, 1552, 1, 0, 0, 0, 111, 1564, 1, 0, 0, 0, 113, 1578, 1, 0, 0, 0, 115, 1598, 1, 0, 0, 0, 117, 1606, 1, 0, 0, 0, 119, 1629, 1, 0, 0, 0, 121, 1655, 1, 0, 0, 0, 123, 1681, 1, 0, 0, 0, 125, 1698, 1, 0, 0, 0, 127, 1718, 1, 0, 0, 0, 129, 1740, 1, 0, 0, 0, 131, 1754, 1, 0, 0, 0, 133, 1768, 1, 0, 0, 0, 135, 1791, 1, 0, 0, 0, 137, 1811, 1, 0, 0, 0, 139, 1825, 1, 0, 0, 0, 141, 1836, 1, 0, 0, 0, 143, 1848, 1, 0, 0, 0, 145, 1860, 1, 0, 0, 0, 147, 1872, 1, 0, 0, 0, 149, 1882, 1, 0, 0, 0, 151, 1894, 1, 0, 0, 0, 153, 1904, 1, 0, 0, 0, 155, 1912, 1, 0, 0, 0, 157, 1922, 1, 0, 0, 0, 159, 1930, 1, 0, 0, 0, 161, 1944, 1, 0, 0, 0, 163, 1956, 1, 0, 0, 0, 165, 1974, 1, 0, 0, 0, 167, 1994, 1, 0, 0, 0, 169, 2002, 1, 0, 0, 0, 171, 2012, 1, 0, 0, 0, 173, 2028, 1, 0, 0, 0, 175, 2036, 1, 0, 0, 0, 177, 2050, 1, 0, 0, 0, 179, 2064, 1, 0, 0, 0, 181, 2072, 1, 0, 0, 0, 183, 2082, 1, 0, 0, 0, 185, 2102, 1, 0, 0, 0, 187, 2114, 1, 0, 0, 0, 189, 2128, 1, 0, 0, 0, 191, 2144, 1, 0, 0, 0, 193, 2166, 1, 0, 0, 0, 195, 2178, 1, 0, 0, 0, 197, 2188, 1, 0, 0, 0, 199, 2202, 1, 0, 0, 0, 201, 2216, 1, 0, 0, 0, 203, 2234, 1, 0, 0, 0, 205, 2244, 1, 0, 0, 0, 207, 2254, 1, 0, 0, 0, 209, 2266, 1, 0, 0, 0, 211, 2280, 1, 0, 0, 0, 213, 2294, 1, 0, 0, 0, 215, 2306, 1, 0, 0, 0, 217, 2316, 1, 0, 0, 0, 219, 2336, 1, 0, 0, 0, 221, 2360, 1, 0, 0, 0, 223, 2376, 1, 0, 0, 0, 225, 2392, 1, 0, 0, 0, 227, 2412, 1, 0, 0, 0, 229, 2428, 1, 0, 0, 0, 231, 2442, 1, 0, 0, 0, 233, 2468, 1, 0, 0, 0, 235, 2486, 1, 0, 0, 0, 237, 2491, 1, 0, 0, 0, 239, 2501, 1, 0, 0, 0, 241, 2509, 1, 0, 0, 0, 243, 2513, 1, 0, 0, 0, 245, 2558, 1, 0, 0, 0, 247, 2562, 1, 0, 0, 0, 249, 2564, 1, 0, 0, 0, 251, 2566, 1, 0, 0, 0, 253, 2568, 1, 0, 0, 0, 255, 2580, 1, 0, 0, 0, 257, 2598, 1, 0, 0, 0, 259, 2608, 1, 0, 0, 0, 261, 2610, 1, 0, 0, 0, 263, 2612, 1, 0, 0, 0, 265, 2614, 1, 0, 0, 0, 267, 2616, 1, 0, 0, 0, 269, 2618, 1, 0, 0, 0, 271, 2620, 1, 0, 0, 0, 273, 2622, 1, 0, 0, 0, 275, 2624, 1, 0, 0, 0, 277, 2626, 1, 0, 0, 0, 279, 2639, 1, 0, 0, 0, 281, 2651, 1, 0, 0, 0, 283, 2661, 1, 0, 0, 0, 285, 2673, 1, 0, 0, 0, 287, 2687, 1, 0, 0, 0, 289, 2699, 1, 0, 0, 0, 291, 2711, 1, 0, 0, 0, 293, 2721, 1, 0, 0, 0, 295, 2731, 1, 0, 0, 0, 297, 2741, 1, 0, 0, 0, 299, 2751, 1, 0, 0, 0, 301, 2761, 1, 0, 0, 0, 303, 2771, 1, 0, 0, 0, 305, 2785, 1, 0, 0, 0, 307, 2801, 1, 0, 0, 0, 309, 2804, 1, 0, 0, 0, 311, 2811, 1, 0, 0, 0, 313, 2824, 1, 0, 0, 0, 315, 2848, 1, 0, 0, 0, 317, 2853, 1, 0, 0, 0, 319, 2863, 1, 0, 0, 0, 321, 2872, 1, 0, 0, 0, 323, 2883, 1, 0, 0, 0, 325, 2891, 1, 0, 0, 0, 327, 2894, 1, 0, 0, 0, 329, 2910, 1, 0, 0, 0, 331, 2918, 1, 0, 0, 0, 333, 2922, 1, 0, 0, 0, 335, 2932, 1, 0, 0, 0, 337, 2942, 1, 0, 0, 0, 339, 2965, 1, 0, 0, 0, 341, 2985, 1, 0, 0, 0, 343, 3008, 1, 0, 0, 0, 345, 3031, 1, 0, 0, 0, 347, 3033, 1, 0, 0, 0, 349, 3035, 1, 0, 0, 0, 351, 3037, 1, 0, 0, 0, 353, 3040, 1, 0, 0, 0, 355, 3042, 1, 0, 0, 0, 357, 3061, 1, 0, 0, 0, 359, 3079, 1, 0, 0, 0, 361, 3097, 1, 0, 0, 0, 363, 3159, 1, 0, 0, 0, 365, 3198, 1, 0, 0, 0, 367, 3220, 1, 0, 0, 0, 369, 3236, 1, 0, 0, 0, 371, 3248, 1, 0, 0, 0, 373, 3278, 1, 0, 0, 0, 375, 3307, 1, 0, 0, 0, 377, 3309, 1, 0, 0, 0, 379, 3315, 1, 0, 0, 0, 381, 3321, 1, 0, 0, 0, 383, 3337, 1, 0, 0, 0, 385, 3339, 1, 0, 0, 0, 387, 3354, 1, 0, 0, 0, 389, 3366, 1, 0, 0, 0, 391, 3371, 1, 0, 0, 0, 393, 3373, 1, 0, 0, 0, 395, 3375, 1, 0, 0, 0, 397, 3377, 1, 0, 0, 0, 399, 3387, 1, 0, 0, 0, 401, 3392, 1, 0, 0, 0, 403, 3440, 1, 0, 0, 0, 405, 3444, 1, 0, 0, 0, 407, 3448, 1, 0, 0, 0, 409, 3452, 1, 0, 0, 0, 411, 3454, 1, 0, 0, 0, 413, 3488, 1, 0, 0, 0, 415, 3490, 1, 0, 0, 0, 417, 3500, 1, 0, 0, 0, 419, 3502, 1, 0, 0, 0, 421, 422, 5, 82, 0, 0, 422, 423, 5, 69, 0, 0, 423, 424, 5, 67, 0, 0, 424, 425, 5, 85, 0, 0, 425, 426, 5, 82, 0, 0, 426, 427, 5, 83, 0, 0, 427, 428, 5, 73, 0, 0, 428, 429, 5, 86, 0, 0, 429, 449, 5, 69, 0, 0, 430, 431, 5, 114, 0, 0, 431, 432, 5, 101, 0, 0, 432, 433, 5, 99, 0, 0, 433, 434, 5, 117, 0, 0, 434, 435, 5, 114, 0, 0, 435, 436, 5, 115, 0, 0, 436, 437, 5, 105, 0, 0, 437, 438, 5, 118, 0, 0, 438, 449, 5, 101, 0, 0, 439, 440, 5, 82, 0, 0, 440, 441, 5, 101, 0, 0, 441, 442, 5, 99, 0, 0, 442, 443, 5, 117, 0, 0, 443, 444, 5, 114, 0, 0, 444, 445, 5, 115, 0, 0, 445, 446, 5, 105, 0, 0, 446, 447, 5, 118, 0, 0, 447, 449, 5, 101, 0, 0, 448, 421, 1, 0, 0, 0, 448, 430, 1, 0, 0, 0, 448, 439, 1, 0, 0, 0, 449, 2, 1, 0, 0, 0, 450, 451, 5, 99, 0, 0, 451, 452, 5, 111, 0, 0, 452, 453, 5, 110, 0, 0, 453, 454, 5, 116, 0, 0, 454, 455, 5, 97, 0, 0, 455, 456, 5, 105, 0, 0, 456, 457, 5, 110, 0, 0, 457, 475, 5, 115, 0, 0, 458, 459, 5, 67, 0, 0, 459, 460, 5, 79, 0, 0, 460, 461, 5, 78, 0, 0, 461, 462, 5, 84, 0, 0, 462, 463, 5, 65, 0, 0, 463, 464, 5, 73, 0, 0, 464, 465, 5, 78, 0, 0, 465, 475, 5, 83, 0, 0, 466, 467, 5, 67, 0, 0, 467, 468, 5, 111, 0, 0, 468, 469, 5, 110, 0, 0, 469, 470, 5, 116, 0, 0, 470, 471, 5, 97, 0, 0, 471, 472, 5, 105, 0, 0, 472, 473, 5, 110, 0, 0, 473, 475, 5, 115, 0, 0, 474, 450, 1, 0, 0, 0, 474, 458, 1, 0, 0, 0, 474, 466, 1, 0, 0, 0, 475, 4, 1, 0, 0, 0, 476, 477, 5, 77, 0, 0, 477, 478, 5, 79, 0, 0, 478, 479, 5, 68, 0, 0, 479, 480, 5, 85, 0, 0, 480, 481, 5, 76, 0, 0, 481, 495, 5, 69, 0, 0, 482, 483, 5, 109, 0, 0, 483, 484, 5, 111, 0, 0, 484, 485, 5, 100, 0, 0, 485, 486, 5, 117, 0, 0, 486, 487, 5, 108, 0, 0, 487, 495, 5, 101, 0, 0, 488, 489, 5, 77, 0, 0, 489, 490, 5, 111, 0, 0, 490, 491, 5, 100, 0, 0, 491, 492, 5, 117, 0, 0, 492, 493, 5, 108, 0, 0, 493, 495, 5, 101, 0, 0, 494, 476, 1, 0, 0, 0, 494, 482, 1, 0, 0, 0, 494, 488, 1, 0, 0, 0, 495, 6, 1, 0, 0, 0, 496, 497, 5, 69, 0, 0, 497, 498, 5, 78, 0, 0, 498, 499, 5, 68, 0, 0, 499, 500, 5, 77, 0, 0, 500, 501, 5, 79, 0, 0, 501, 502, 5, 68, 0, 0, 502, 503, 5, 85, 0, 0, 503, 504, 5, 76, 0, 0, 504, 524, 5, 69, 0, 0, 505, 506, 5, 101, 0, 0, 506, 507, 5, 110, 0, 0, 507, 508, 5, 100, 0, 0, 508, 509, 5, 109, 0, 0, 509, 510, 5, 111, 0, 0, 510, 511, 5, 100, 0, 0, 511, 512, 5, 117, 0, 0, 512, 513, 5, 108, 0, 0, 513, 524, 5, 101, 0, 0, 514, 515, 5, 69, 0, 0, 515, 516, 5, 110, 0, 0, 516, 517, 5, 100, 0, 0, 517, 518, 5, 109, 0, 0, 518, 519, 5, 111, 0, 0, 519, 520, 5, 100, 0, 0, 520, 521, 5, 117, 0, 0, 521, 522, 5, 108, 0, 0, 522, 524, 5, 101, 0, 0, 523, 496, 1, 0, 0, 0, 523, 505, 1, 0, 0, 0, 523, 514, 1, 0, 0, 0, 524, 8, 1, 0, 0, 0, 525, 526, 5, 112, 0, 0, 526, 527, 5, 114, 0, 0, 527, 528, 5, 111, 0, 0, 528, 529, 5, 103, 0, 0, 529, 530, 5, 114, 0, 0, 530, 531, 5, 97, 0, 0, 531, 547, 5, 109, 0, 0, 532, 533, 5, 80, 0, 0, 533, 534, 5, 82, 0, 0, 534, 535, 5, 79, 0, 0, 535, 536, 5, 71, 0, 0, 536, 537, 5, 82, 0, 0, 537, 538, 5, 65, 0, 0, 538, 547, 5, 77, 0, 0, 539, 540, 5, 80, 0, 0, 540, 541, 5, 114, 0, 0, 541, 542, 5, 111, 0, 0, 542, 543, 5, 103, 0, 0, 543, 544, 5, 114, 0, 0, 544, 545, 5, 97, 0, 0, 545, 547, 5, 109, 0, 0, 546, 525, 1, 0, 0, 0, 546, 532, 1, 0, 0, 0, 546, 539, 1, 0, 0, 0, 547, 10, 1, 0, 0, 0, 548, 549, 5, 101, 0, 0, 549, 550, 5, 110, 0, 0, 550, 551, 5, 116, 0, 0, 551, 552, 5, 114, 0, 0, 552, 564, 5, 121, 0, 0, 553, 554, 5, 69, 0, 0, 554, 555, 5, 78, 0, 0, 555, 556, 5, 84, 0, 0, 556, 557, 5, 82, 0, 0, 557, 564, 5, 89, 0, 0, 558, 559, 5, 69, 0, 0, 559, 560, 5, 110, 0, 0, 560, 561, 5, 116, 0, 0, 561, 562, 5, 114, 0, 0, 562, 564, 5, 121, 0, 0, 563, 548, 1, 0, 0, 0, 563, 553, 1, 0, 0, 0, 563, 558, 1, 0, 0, 0, 564, 12, 1, 0, 0, 0, 565, 566, 5, 102, 0, 0, 566, 567, 5, 117, 0, 0, 567, 568, 5, 110, 0, 0, 568, 569, 5, 99, 0, 0, 569, 570, 5, 116, 0, 0, 570, 571, 5, 105, 0, 0, 571, 572, 5, 111, 0, 0, 572, 590, 5, 110, 0, 0, 573, 574, 5, 70, 0, 0, 574, 575, 5, 85, 0, 0, 575, 576, 5, 78, 0, 0, 576, 577, 5, 67, 0, 0, 577, 578, 5, 84, 0, 0, 578, 579, 5, 73, 0, 0, 579, 580, 5, 79, 0, 0, 580, 590, 5, 78, 0, 0, 581, 582, 5, 70, 0, 0, 582, 583, 5, 117, 0, 0, 583, 584, 5, 110, 0, 0, 584, 585, 5, 99, 0, 0, 585, 586, 5, 116, 0, 0, 586, 587, 5, 105, 0, 0, 587, 588, 5, 111, 0, 0, 588, 590, 5, 110, 0, 0, 589, 565, 1, 0, 0, 0, 589, 573, 1, 0, 0, 0, 589, 581, 1, 0, 0, 0, 590, 14, 1, 0, 0, 0, 591, 592, 5, 98, 0, 0, 592, 593, 5, 108, 0, 0, 593, 594, 5, 111, 0, 0, 594, 595, 5, 99, 0, 0, 595, 607, 5, 107, 0, 0, 596, 597, 5, 66, 0, 0, 597, 598, 5, 76, 0, 0, 598, 599, 5, 79, 0, 0, 599, 600, 5, 67, 0, 0, 600, 607, 5, 75, 0, 0, 601, 602, 5, 66, 0, 0, 602, 603, 5, 108, 0, 0, 603, 604, 5, 111, 0, 0, 604, 605, 5, 99, 0, 0, 605, 607, 5, 107, 0, 0, 606, 591, 1, 0, 0, 0, 606, 596, 1, 0, 0, 0, 606, 601, 1, 0, 0, 0, 607, 16, 1, 0, 0, 0, 608, 609, 5, 115, 0, 0, 609, 610, 5, 117, 0, 0, 610, 611, 5, 98, 0, 0, 611, 612, 5, 114, 0, 0, 612, 613, 5, 111, 0, 0, 613, 614, 5, 117, 0, 0, 614, 615, 5, 116, 0, 0, 615, 616, 5, 105, 0, 0, 616, 617, 5, 110, 0, 0, 617, 639, 5, 101, 0, 0, 618, 619, 5, 83, 0, 0, 619, 620, 5, 85, 0, 0, 620, 621, 5, 66, 0, 0, 621, 622, 5, 82, 0, 0, 622, 623, 5, 79, 0, 0, 623, 624, 5, 85, 0, 0, 624, 625, 5, 84, 0, 0, 625, 626, 5, 73, 0, 0, 626, 627, 5, 78, 0, 0, 627, 639, 5, 69, 0, 0, 628, 629, 5, 83, 0, 0, 629, 630, 5, 117, 0, 0, 630, 631, 5, 98, 0, 0, 631, 632, 5, 114, 0, 0, 632, 633, 5, 111, 0, 0, 633, 634, 5, 117, 0, 0, 634, 635, 5, 116, 0, 0, 635, 636, 5, 105, 0, 0, 636, 637, 5, 110, 0, 0, 637, 639, 5, 101, 0, 0, 638, 608, 1, 0, 0, 0, 638, 618, 1, 0, 0, 0, 638, 628, 1, 0, 0, 0, 639, 18, 1, 0, 0, 0, 640, 641, 5, 69, 0, 0, 641, 642, 5, 78, 0, 0, 642, 643, 5, 68, 0, 0, 643, 644, 5, 73, 0, 0, 644, 645, 5, 78, 0, 0, 645, 646, 5, 84, 0, 0, 646, 647, 5, 69, 0, 0, 647, 648, 5, 82, 0, 0, 648, 649, 5, 70, 0, 0, 649, 650, 5, 65, 0, 0, 650, 651, 5, 67, 0, 0, 651, 678, 5, 69, 0, 0, 652, 653, 5, 32, 0, 0, 653, 654, 5, 101, 0, 0, 654, 655, 5, 110, 0, 0, 655, 656, 5, 100, 0, 0, 656, 657, 5, 105, 0, 0, 657, 658, 5, 110, 0, 0, 658, 659, 5, 116, 0, 0, 659, 660, 5, 101, 0, 0, 660, 661, 5, 114, 0, 0, 661, 662, 5, 102, 0, 0, 662, 663, 5, 97, 0, 0, 663, 664, 5, 99, 0, 0, 664, 678, 5, 101, 0, 0, 665, 666, 5, 69, 0, 0, 666, 667, 5, 110, 0, 0, 667, 668, 5, 100, 0, 0, 668, 669, 5, 105, 0, 0, 669, 670, 5, 110, 0, 0, 670, 671, 5, 116, 0, 0, 671, 672, 5, 101, 0, 0, 672, 673, 5, 114, 0, 0, 673, 674, 5, 102, 0, 0, 674, 675, 5, 97, 0, 0, 675, 676, 5, 99, 0, 0, 676, 678, 5, 101, 0, 0, 677, 640, 1, 0, 0, 0, 677, 652, 1, 0, 0, 0, 677, 665, 1, 0, 0, 0, 678, 20, 1, 0, 0, 0, 679, 680, 5, 112, 0, 0, 680, 681, 5, 114, 0, 0, 681, 682, 5, 111, 0, 0, 682, 683, 5, 99, 0, 0, 683, 684, 5, 101, 0, 0, 684, 685, 5, 100, 0, 0, 685, 686, 5, 117, 0, 0, 686, 687, 5, 114, 0, 0, 687, 707, 5, 101, 0, 0, 688, 689, 5, 80, 0, 0, 689, 690, 5, 82, 0, 0, 690, 691, 5, 79, 0, 0, 691, 692, 5, 67, 0, 0, 692, 693, 5, 69, 0, 0, 693, 694, 5, 68, 0, 0, 694, 695, 5, 85, 0, 0, 695, 696, 5, 82, 0, 0, 696, 707, 5, 69, 0, 0, 697, 698, 5, 80, 0, 0, 698, 699, 5, 114, 0, 0, 699, 700, 5, 111, 0, 0, 700, 701, 5, 99, 0, 0, 701, 702, 5, 101, 0, 0, 702, 703, 5, 100, 0, 0, 703, 704, 5, 117, 0, 0, 704, 705, 5, 114, 0, 0, 705, 707, 5, 101, 0, 0, 706, 679, 1, 0, 0, 0, 706, 688, 1, 0, 0, 0, 706, 697, 1, 0, 0, 0, 707, 22, 1, 0, 0, 0, 708, 709, 5, 69, 0, 0, 709, 710, 5, 78, 0, 0, 710, 718, 5, 68, 0, 0, 711, 712, 5, 101, 0, 0, 712, 713, 5, 110, 0, 0, 713, 718, 5, 100, 0, 0, 714, 715, 5, 69, 0, 0, 715, 716, 5, 110, 0, 0, 716, 718, 5, 100, 0, 0, 717, 708, 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 714, 1, 0, 0, 0, 718, 24, 1, 0, 0, 0, 719, 720, 5, 100, 0, 0, 720, 721, 5, 105, 0, 0, 721, 722, 5, 109, 0, 0, 722, 723, 5, 101, 0, 0, 723, 724, 5, 110, 0, 0, 724, 725, 5, 115, 0, 0, 725, 726, 5, 105, 0, 0, 726, 727, 5, 111, 0, 0, 727, 747, 5, 110, 0, 0, 728, 729, 5, 68, 0, 0, 729, 730, 5, 73, 0, 0, 730, 731, 5, 77, 0, 0, 731, 732, 5, 69, 0, 0, 732, 733, 5, 78, 0, 0, 733, 734, 5, 83, 0, 0, 734, 735, 5, 73, 0, 0, 735, 736, 5, 79, 0, 0, 736, 747, 5, 78, 0, 0, 737, 738, 5, 68, 0, 0, 738, 739, 5, 105, 0, 0, 739, 740, 5, 109, 0, 0, 740, 741, 5, 101, 0, 0, 741, 742, 5, 110, 0, 0, 742, 743, 5, 115, 0, 0, 743, 744, 5, 105, 0, 0, 744, 745, 5, 111, 0, 0, 745, 747, 5, 110, 0, 0, 746, 719, 1, 0, 0, 0, 746, 728, 1, 0, 0, 0, 746, 737, 1, 0, 0, 0, 747, 26, 1, 0, 0, 0, 748, 749, 5, 84, 0, 0, 749, 750, 5, 65, 0, 0, 750, 751, 5, 82, 0, 0, 751, 752, 5, 71, 0, 0, 752, 753, 5, 69, 0, 0, 753, 767, 5, 84, 0, 0, 754, 755, 5, 116, 0, 0, 755, 756, 5, 97, 0, 0, 756, 757, 5, 114, 0, 0, 757, 758, 5, 103, 0, 0, 758, 759, 5, 101, 0, 0, 759, 767, 5, 116, 0, 0, 760, 761, 5, 84, 0, 0, 761, 762, 5, 97, 0, 0, 762, 763, 5, 114, 0, 0, 763, 764, 5, 103, 0, 0, 764, 765, 5, 101, 0, 0, 765, 767, 5, 116, 0, 0, 766, 748, 1, 0, 0, 0, 766, 754, 1, 0, 0, 0, 766, 760, 1, 0, 0, 0, 767, 28, 1, 0, 0, 0, 768, 769, 5, 65, 0, 0, 769, 770, 5, 76, 0, 0, 770, 771, 5, 76, 0, 0, 771, 772, 5, 79, 0, 0, 772, 773, 5, 67, 0, 0, 773, 774, 5, 65, 0, 0, 774, 775, 5, 84, 0, 0, 775, 776, 5, 65, 0, 0, 776, 777, 5, 66, 0, 0, 777, 778, 5, 76, 0, 0, 778, 802, 5, 69, 0, 0, 779, 780, 5, 97, 0, 0, 780, 781, 5, 108, 0, 0, 781, 782, 5, 108, 0, 0, 782, 783, 5, 111, 0, 0, 783, 784, 5, 99, 0, 0, 784, 785, 5, 97, 0, 0, 785, 786, 5, 116, 0, 0, 786, 787, 5, 97, 0, 0, 787, 788, 5, 98, 0, 0, 788, 789, 5, 108, 0, 0, 789, 802, 5, 101, 0, 0, 790, 791, 5, 65, 0, 0, 791, 792, 5, 108, 0, 0, 792, 793, 5, 108, 0, 0, 793, 794, 5, 111, 0, 0, 794, 795, 5, 99, 0, 0, 795, 796, 5, 97, 0, 0, 796, 797, 5, 116, 0, 0, 797, 798, 5, 97, 0, 0, 798, 799, 5, 98, 0, 0, 799, 800, 5, 108, 0, 0, 800, 802, 5, 101, 0, 0, 801, 768, 1, 0, 0, 0, 801, 779, 1, 0, 0, 0, 801, 790, 1, 0, 0, 0, 802, 30, 1, 0, 0, 0, 803, 804, 5, 79, 0, 0, 804, 805, 5, 80, 0, 0, 805, 806, 5, 84, 0, 0, 806, 807, 5, 73, 0, 0, 807, 808, 5, 79, 0, 0, 808, 809, 5, 78, 0, 0, 809, 810, 5, 65, 0, 0, 810, 828, 5, 76, 0, 0, 811, 812, 5, 111, 0, 0, 812, 813, 5, 112, 0, 0, 813, 814, 5, 116, 0, 0, 814, 815, 5, 105, 0, 0, 815, 816, 5, 111, 0, 0, 816, 817, 5, 110, 0, 0, 817, 818, 5, 97, 0, 0, 818, 828, 5, 108, 0, 0, 819, 820, 5, 79, 0, 0, 820, 821, 5, 112, 0, 0, 821, 822, 5, 116, 0, 0, 822, 823, 5, 105, 0, 0, 823, 824, 5, 111, 0, 0, 824, 825, 5, 110, 0, 0, 825, 826, 5, 97, 0, 0, 826, 828, 5, 108, 0, 0, 827, 803, 1, 0, 0, 0, 827, 811, 1, 0, 0, 0, 827, 819, 1, 0, 0, 0, 828, 32, 1, 0, 0, 0, 829, 830, 5, 78, 0, 0, 830, 831, 5, 65, 0, 0, 831, 832, 5, 77, 0, 0, 832, 833, 5, 69, 0, 0, 833, 834, 5, 76, 0, 0, 834, 835, 5, 73, 0, 0, 835, 836, 5, 83, 0, 0, 836, 846, 5, 84, 0, 0, 837, 838, 5, 110, 0, 0, 838, 839, 5, 97, 0, 0, 839, 840, 5, 109, 0, 0, 840, 841, 5, 101, 0, 0, 841, 842, 5, 108, 0, 0, 842, 843, 5, 105, 0, 0, 843, 844, 5, 115, 0, 0, 844, 846, 5, 116, 0, 0, 845, 829, 1, 0, 0, 0, 845, 837, 1, 0, 0, 0, 846, 34, 1, 0, 0, 0, 847, 848, 5, 73, 0, 0, 848, 849, 5, 78, 0, 0, 849, 850, 5, 84, 0, 0, 850, 851, 5, 69, 0, 0, 851, 852, 5, 78, 0, 0, 852, 866, 5, 84, 0, 0, 853, 854, 5, 105, 0, 0, 854, 855, 5, 110, 0, 0, 855, 856, 5, 116, 0, 0, 856, 857, 5, 101, 0, 0, 857, 858, 5, 110, 0, 0, 858, 866, 5, 116, 0, 0, 859, 860, 5, 73, 0, 0, 860, 861, 5, 110, 0, 0, 861, 862, 5, 116, 0, 0, 862, 863, 5, 101, 0, 0, 863, 864, 5, 110, 0, 0, 864, 866, 5, 116, 0, 0, 865, 847, 1, 0, 0, 0, 865, 853, 1, 0, 0, 0, 865, 859, 1, 0, 0, 0, 866, 36, 1, 0, 0, 0, 867, 868, 5, 73, 0, 0, 868, 874, 5, 78, 0, 0, 869, 870, 5, 105, 0, 0, 870, 874, 5, 110, 0, 0, 871, 872, 5, 73, 0, 0, 872, 874, 5, 110, 0, 0, 873, 867, 1, 0, 0, 0, 873, 869, 1, 0, 0, 0, 873, 871, 1, 0, 0, 0, 874, 38, 1, 0, 0, 0, 875, 876, 5, 79, 0, 0, 876, 877, 5, 85, 0, 0, 877, 885, 5, 84, 0, 0, 878, 879, 5, 111, 0, 0, 879, 880, 5, 117, 0, 0, 880, 885, 5, 116, 0, 0, 881, 882, 5, 79, 0, 0, 882, 883, 5, 117, 0, 0, 883, 885, 5, 116, 0, 0, 884, 875, 1, 0, 0, 0, 884, 878, 1, 0, 0, 0, 884, 881, 1, 0, 0, 0, 885, 40, 1, 0, 0, 0, 886, 887, 5, 73, 0, 0, 887, 888, 5, 78, 0, 0, 888, 889, 5, 79, 0, 0, 889, 890, 5, 85, 0, 0, 890, 902, 5, 84, 0, 0, 891, 892, 5, 105, 0, 0, 892, 893, 5, 110, 0, 0, 893, 894, 5, 111, 0, 0, 894, 895, 5, 117, 0, 0, 895, 902, 5, 116, 0, 0, 896, 897, 5, 73, 0, 0, 897, 898, 5, 110, 0, 0, 898, 899, 5, 111, 0, 0, 899, 900, 5, 117, 0, 0, 900, 902, 5, 116, 0, 0, 901, 886, 1, 0, 0, 0, 901, 891, 1, 0, 0, 0, 901, 896, 1, 0, 0, 0, 902, 42, 1, 0, 0, 0, 903, 904, 5, 111, 0, 0, 904, 905, 5, 112, 0, 0, 905, 906, 5, 101, 0, 0, 906, 907, 5, 114, 0, 0, 907, 908, 5, 97, 0, 0, 908, 909, 5, 116, 0, 0, 909, 910, 5, 111, 0, 0, 910, 928, 5, 114, 0, 0, 911, 912, 5, 79, 0, 0, 912, 913, 5, 80, 0, 0, 913, 914, 5, 69, 0, 0, 914, 915, 5, 82, 0, 0, 915, 916, 5, 65, 0, 0, 916, 917, 5, 84, 0, 0, 917, 918, 5, 79, 0, 0, 918, 928, 5, 82, 0, 0, 919, 920, 5, 79, 0, 0, 920, 921, 5, 112, 0, 0, 921, 922, 5, 101, 0, 0, 922, 923, 5, 114, 0, 0, 923, 924, 5, 97, 0, 0, 924, 925, 5, 116, 0, 0, 925, 926, 5, 111, 0, 0, 926, 928, 5, 114, 0, 0, 927, 903, 1, 0, 0, 0, 927, 911, 1, 0, 0, 0, 927, 919, 1, 0, 0, 0, 928, 44, 1, 0, 0, 0, 929, 930, 5, 85, 0, 0, 930, 931, 5, 83, 0, 0, 931, 939, 5, 69, 0, 0, 932, 933, 5, 117, 0, 0, 933, 934, 5, 115, 0, 0, 934, 939, 5, 101, 0, 0, 935, 936, 5, 85, 0, 0, 936, 937, 5, 115, 0, 0, 937, 939, 5, 101, 0, 0, 938, 929, 1, 0, 0, 0, 938, 932, 1, 0, 0, 0, 938, 935, 1, 0, 0, 0, 939, 46, 1, 0, 0, 0, 940, 941, 5, 79, 0, 0, 941, 942, 5, 78, 0, 0, 942, 943, 5, 76, 0, 0, 943, 953, 5, 89, 0, 0, 944, 945, 5, 111, 0, 0, 945, 946, 5, 110, 0, 0, 946, 947, 5, 108, 0, 0, 947, 953, 5, 121, 0, 0, 948, 949, 5, 79, 0, 0, 949, 950, 5, 110, 0, 0, 950, 951, 5, 108, 0, 0, 951, 953, 5, 121, 0, 0, 952, 940, 1, 0, 0, 0, 952, 944, 1, 0, 0, 0, 952, 948, 1, 0, 0, 0, 953, 48, 1, 0, 0, 0, 954, 955, 5, 61, 0, 0, 955, 956, 5, 62, 0, 0, 956, 50, 1, 0, 0, 0, 957, 958, 5, 65, 0, 0, 958, 959, 5, 83, 0, 0, 959, 960, 5, 83, 0, 0, 960, 961, 5, 73, 0, 0, 961, 962, 5, 71, 0, 0, 962, 963, 5, 78, 0, 0, 963, 964, 5, 77, 0, 0, 964, 965, 5, 69, 0, 0, 965, 966, 5, 78, 0, 0, 966, 988, 5, 84, 0, 0, 967, 968, 5, 97, 0, 0, 968, 969, 5, 115, 0, 0, 969, 970, 5, 115, 0, 0, 970, 971, 5, 105, 0, 0, 971, 972, 5, 103, 0, 0, 972, 973, 5, 110, 0, 0, 973, 974, 5, 109, 0, 0, 974, 975, 5, 101, 0, 0, 975, 976, 5, 110, 0, 0, 976, 988, 5, 116, 0, 0, 977, 978, 5, 65, 0, 0, 978, 979, 5, 115, 0, 0, 979, 980, 5, 115, 0, 0, 980, 981, 5, 105, 0, 0, 981, 982, 5, 103, 0, 0, 982, 983, 5, 110, 0, 0, 983, 984, 5, 109, 0, 0, 984, 985, 5, 101, 0, 0, 985, 986, 5, 110, 0, 0, 986, 988, 5, 116, 0, 0, 987, 957, 1, 0, 0, 0, 987, 967, 1, 0, 0, 0, 987, 977, 1, 0, 0, 0, 988, 52, 1, 0, 0, 0, 989, 992, 5, 46, 0, 0, 990, 991, 5, 92, 0, 0, 991, 993, 5, 97, 0, 0, 992, 990, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 997, 5, 46, 0, 0, 997, 54, 1, 0, 0, 0, 998, 999, 5, 61, 0, 0, 999, 1010, 5, 61, 0, 0, 1000, 1001, 5, 33, 0, 0, 1001, 1010, 5, 61, 0, 0, 1002, 1003, 5, 60, 0, 0, 1003, 1010, 5, 61, 0, 0, 1004, 1005, 5, 62, 0, 0, 1005, 1010, 5, 61, 0, 0, 1006, 1010, 7, 0, 0, 0, 1007, 1008, 5, 47, 0, 0, 1008, 1010, 5, 61, 0, 0, 1009, 998, 1, 0, 0, 0, 1009, 1000, 1, 0, 0, 0, 1009, 1002, 1, 0, 0, 0, 1009, 1004, 1, 0, 0, 0, 1009, 1006, 1, 0, 0, 0, 1009, 1007, 1, 0, 0, 0, 1010, 56, 1, 0, 0, 0, 1011, 1012, 5, 68, 0, 0, 1012, 1013, 5, 79, 0, 0, 1013, 1014, 5, 85, 0, 0, 1014, 1015, 5, 66, 0, 0, 1015, 1016, 5, 76, 0, 0, 1016, 1017, 5, 69, 0, 0, 1017, 1018, 5, 80, 0, 0, 1018, 1019, 5, 82, 0, 0, 1019, 1020, 5, 69, 0, 0, 1020, 1021, 5, 67, 0, 0, 1021, 1022, 5, 73, 0, 0, 1022, 1023, 5, 83, 0, 0, 1023, 1024, 5, 73, 0, 0, 1024, 1025, 5, 79, 0, 0, 1025, 1074, 5, 78, 0, 0, 1026, 1027, 5, 100, 0, 0, 1027, 1028, 5, 111, 0, 0, 1028, 1029, 5, 117, 0, 0, 1029, 1030, 5, 98, 0, 0, 1030, 1031, 5, 108, 0, 0, 1031, 1032, 5, 101, 0, 0, 1032, 1033, 5, 112, 0, 0, 1033, 1034, 5, 114, 0, 0, 1034, 1035, 5, 101, 0, 0, 1035, 1036, 5, 99, 0, 0, 1036, 1037, 5, 105, 0, 0, 1037, 1038, 5, 115, 0, 0, 1038, 1039, 5, 105, 0, 0, 1039, 1040, 5, 111, 0, 0, 1040, 1074, 5, 110, 0, 0, 1041, 1042, 5, 100, 0, 0, 1042, 1043, 5, 111, 0, 0, 1043, 1044, 5, 117, 0, 0, 1044, 1045, 5, 98, 0, 0, 1045, 1046, 5, 108, 0, 0, 1046, 1047, 5, 101, 0, 0, 1047, 1048, 5, 32, 0, 0, 1048, 1049, 5, 112, 0, 0, 1049, 1050, 5, 114, 0, 0, 1050, 1051, 5, 101, 0, 0, 1051, 1052, 5, 99, 0, 0, 1052, 1053, 5, 105, 0, 0, 1053, 1054, 5, 115, 0, 0, 1054, 1055, 5, 105, 0, 0, 1055, 1056, 5, 111, 0, 0, 1056, 1074, 5, 110, 0, 0, 1057, 1058, 5, 68, 0, 0, 1058, 1059, 5, 79, 0, 0, 1059, 1060, 5, 85, 0, 0, 1060, 1061, 5, 66, 0, 0, 1061, 1062, 5, 76, 0, 0, 1062, 1063, 5, 69, 0, 0, 1063, 1064, 5, 32, 0, 0, 1064, 1065, 5, 80, 0, 0, 1065, 1066, 5, 82, 0, 0, 1066, 1067, 5, 69, 0, 0, 1067, 1068, 5, 67, 0, 0, 1068, 1069, 5, 73, 0, 0, 1069, 1070, 5, 83, 0, 0, 1070, 1071, 5, 73, 0, 0, 1071, 1072, 5, 79, 0, 0, 1072, 1074, 5, 78, 0, 0, 1073, 1011, 1, 0, 0, 0, 1073, 1026, 1, 0, 0, 0, 1073, 1041, 1, 0, 0, 0, 1073, 1057, 1, 0, 0, 0, 1074, 58, 1, 0, 0, 0, 1075, 1076, 5, 58, 0, 0, 1076, 1077, 5, 58, 0, 0, 1077, 60, 1, 0, 0, 0, 1078, 1079, 5, 97, 0, 0, 1079, 1080, 5, 115, 0, 0, 1080, 1081, 5, 115, 0, 0, 1081, 1082, 5, 105, 0, 0, 1082, 1083, 5, 103, 0, 0, 1083, 1097, 5, 110, 0, 0, 1084, 1085, 5, 65, 0, 0, 1085, 1086, 5, 83, 0, 0, 1086, 1087, 5, 83, 0, 0, 1087, 1088, 5, 73, 0, 0, 1088, 1089, 5, 71, 0, 0, 1089, 1097, 5, 78, 0, 0, 1090, 1091, 5, 65, 0, 0, 1091, 1092, 5, 115, 0, 0, 1092, 1093, 5, 115, 0, 0, 1093, 1094, 5, 105, 0, 0, 1094, 1095, 5, 103, 0, 0, 1095, 1097, 5, 110, 0, 0, 1096, 1078, 1, 0, 0, 0, 1096, 1084, 1, 0, 0, 0, 1096, 1090, 1, 0, 0, 0, 1097, 62, 1, 0, 0, 0, 1098, 1099, 5, 67, 0, 0, 1099, 1100, 5, 79, 0, 0, 1100, 1101, 5, 77, 0, 0, 1101, 1102, 5, 77, 0, 0, 1102, 1103, 5, 79, 0, 0, 1103, 1117, 5, 78, 0, 0, 1104, 1105, 5, 99, 0, 0, 1105, 1106, 5, 111, 0, 0, 1106, 1107, 5, 109, 0, 0, 1107, 1108, 5, 109, 0, 0, 1108, 1109, 5, 111, 0, 0, 1109, 1117, 5, 110, 0, 0, 1110, 1111, 5, 67, 0, 0, 1111, 1112, 5, 111, 0, 0, 1112, 1113, 5, 109, 0, 0, 1113, 1114, 5, 109, 0, 0, 1114, 1115, 5, 111, 0, 0, 1115, 1117, 5, 110, 0, 0, 1116, 1098, 1, 0, 0, 0, 1116, 1104, 1, 0, 0, 0, 1116, 1110, 1, 0, 0, 0, 1117, 64, 1, 0, 0, 0, 1118, 1119, 5, 69, 0, 0, 1119, 1120, 5, 76, 0, 0, 1120, 1121, 5, 83, 0, 0, 1121, 1122, 5, 69, 0, 0, 1122, 1123, 5, 87, 0, 0, 1123, 1124, 5, 72, 0, 0, 1124, 1125, 5, 69, 0, 0, 1125, 1126, 5, 82, 0, 0, 1126, 1146, 5, 69, 0, 0, 1127, 1128, 5, 101, 0, 0, 1128, 1129, 5, 108, 0, 0, 1129, 1130, 5, 115, 0, 0, 1130, 1131, 5, 101, 0, 0, 1131, 1132, 5, 119, 0, 0, 1132, 1133, 5, 104, 0, 0, 1133, 1134, 5, 101, 0, 0, 1134, 1135, 5, 114, 0, 0, 1135, 1146, 5, 101, 0, 0, 1136, 1137, 5, 69, 0, 0, 1137, 1138, 5, 108, 0, 0, 1138, 1139, 5, 115, 0, 0, 1139, 1140, 5, 101, 0, 0, 1140, 1141, 5, 119, 0, 0, 1141, 1142, 5, 104, 0, 0, 1142, 1143, 5, 101, 0, 0, 1143, 1144, 5, 114, 0, 0, 1144, 1146, 5, 101, 0, 0, 1145, 1118, 1, 0, 0, 0, 1145, 1127, 1, 0, 0, 0, 1145, 1136, 1, 0, 0, 0, 1146, 66, 1, 0, 0, 0, 1147, 1148, 5, 82, 0, 0, 1148, 1149, 5, 69, 0, 0, 1149, 1150, 5, 65, 0, 0, 1150, 1160, 5, 76, 0, 0, 1151, 1152, 5, 114, 0, 0, 1152, 1153, 5, 101, 0, 0, 1153, 1154, 5, 97, 0, 0, 1154, 1160, 5, 108, 0, 0, 1155, 1156, 5, 82, 0, 0, 1156, 1157, 5, 101, 0, 0, 1157, 1158, 5, 97, 0, 0, 1158, 1160, 5, 108, 0, 0, 1159, 1147, 1, 0, 0, 0, 1159, 1151, 1, 0, 0, 0, 1159, 1155, 1, 0, 0, 0, 1160, 68, 1, 0, 0, 0, 1161, 1162, 5, 69, 0, 0, 1162, 1163, 5, 81, 0, 0, 1163, 1164, 5, 85, 0, 0, 1164, 1165, 5, 73, 0, 0, 1165, 1166, 5, 86, 0, 0, 1166, 1167, 5, 65, 0, 0, 1167, 1168, 5, 76, 0, 0, 1168, 1169, 5, 69, 0, 0, 1169, 1170, 5, 78, 0, 0, 1170, 1171, 5, 67, 0, 0, 1171, 1195, 5, 69, 0, 0, 1172, 1173, 5, 101, 0, 0, 1173, 1174, 5, 113, 0, 0, 1174, 1175, 5, 117, 0, 0, 1175, 1176, 5, 105, 0, 0, 1176, 1177, 5, 118, 0, 0, 1177, 1178, 5, 97, 0, 0, 1178, 1179, 5, 108, 0, 0, 1179, 1180, 5, 101, 0, 0, 1180, 1181, 5, 110, 0, 0, 1181, 1182, 5, 99, 0, 0, 1182, 1195, 5, 101, 0, 0, 1183, 1184, 5, 69, 0, 0, 1184, 1185, 5, 113, 0, 0, 1185, 1186, 5, 117, 0, 0, 1186, 1187, 5, 105, 0, 0, 1187, 1188, 5, 118, 0, 0, 1188, 1189, 5, 97, 0, 0, 1189, 1190, 5, 108, 0, 0, 1190, 1191, 5, 101, 0, 0, 1191, 1192, 5, 110, 0, 0, 1192, 1193, 5, 99, 0, 0, 1193, 1195, 5, 101, 0, 0, 1194, 1161, 1, 0, 0, 0, 1194, 1172, 1, 0, 0, 0, 1194, 1183, 1, 0, 0, 0, 1195, 70, 1, 0, 0, 0, 1196, 1197, 5, 98, 0, 0, 1197, 1198, 5, 108, 0, 0, 1198, 1199, 5, 111, 0, 0, 1199, 1200, 5, 99, 0, 0, 1200, 1201, 5, 107, 0, 0, 1201, 1202, 5, 100, 0, 0, 1202, 1203, 5, 97, 0, 0, 1203, 1204, 5, 116, 0, 0, 1204, 1224, 5, 97, 0, 0, 1205, 1206, 5, 66, 0, 0, 1206, 1207, 5, 76, 0, 0, 1207, 1208, 5, 79, 0, 0, 1208, 1209, 5, 67, 0, 0, 1209, 1210, 5, 75, 0, 0, 1210, 1211, 5, 68, 0, 0, 1211, 1212, 5, 65, 0, 0, 1212, 1213, 5, 84, 0, 0, 1213, 1224, 5, 65, 0, 0, 1214, 1215, 5, 66, 0, 0, 1215, 1216, 5, 108, 0, 0, 1216, 1217, 5, 111, 0, 0, 1217, 1218, 5, 99, 0, 0, 1218, 1219, 5, 107, 0, 0, 1219, 1220, 5, 100, 0, 0, 1220, 1221, 5, 97, 0, 0, 1221, 1222, 5, 116, 0, 0, 1222, 1224, 5, 97, 0, 0, 1223, 1196, 1, 0, 0, 0, 1223, 1205, 1, 0, 0, 0, 1223, 1214, 1, 0, 0, 0, 1224, 72, 1, 0, 0, 0, 1225, 1226, 5, 112, 0, 0, 1226, 1227, 5, 111, 0, 0, 1227, 1228, 5, 105, 0, 0, 1228, 1229, 5, 110, 0, 0, 1229, 1230, 5, 116, 0, 0, 1230, 1231, 5, 101, 0, 0, 1231, 1247, 5, 114, 0, 0, 1232, 1233, 5, 80, 0, 0, 1233, 1234, 5, 79, 0, 0, 1234, 1235, 5, 73, 0, 0, 1235, 1236, 5, 78, 0, 0, 1236, 1237, 5, 84, 0, 0, 1237, 1238, 5, 69, 0, 0, 1238, 1247, 5, 82, 0, 0, 1239, 1240, 5, 80, 0, 0, 1240, 1241, 5, 111, 0, 0, 1241, 1242, 5, 105, 0, 0, 1242, 1243, 5, 110, 0, 0, 1243, 1244, 5, 116, 0, 0, 1244, 1245, 5, 101, 0, 0, 1245, 1247, 5, 114, 0, 0, 1246, 1225, 1, 0, 0, 0, 1246, 1232, 1, 0, 0, 0, 1246, 1239, 1, 0, 0, 0, 1247, 74, 1, 0, 0, 0, 1248, 1249, 5, 112, 0, 0, 1249, 1250, 5, 114, 0, 0, 1250, 1251, 5, 105, 0, 0, 1251, 1252, 5, 118, 0, 0, 1252, 1253, 5, 97, 0, 0, 1253, 1254, 5, 116, 0, 0, 1254, 1270, 5, 101, 0, 0, 1255, 1256, 5, 80, 0, 0, 1256, 1257, 5, 82, 0, 0, 1257, 1258, 5, 73, 0, 0, 1258, 1259, 5, 86, 0, 0, 1259, 1260, 5, 65, 0, 0, 1260, 1261, 5, 84, 0, 0, 1261, 1270, 5, 69, 0, 0, 1262, 1263, 5, 80, 0, 0, 1263, 1264, 5, 114, 0, 0, 1264, 1265, 5, 105, 0, 0, 1265, 1266, 5, 118, 0, 0, 1266, 1267, 5, 97, 0, 0, 1267, 1268, 5, 116, 0, 0, 1268, 1270, 5, 101, 0, 0, 1269, 1248, 1, 0, 0, 0, 1269, 1255, 1, 0, 0, 0, 1269, 1262, 1, 0, 0, 0, 1270, 76, 1, 0, 0, 0, 1271, 1272, 3, 75, 37, 0, 1272, 78, 1, 0, 0, 0, 1273, 1274, 5, 115, 0, 0, 1274, 1275, 5, 101, 0, 0, 1275, 1276, 5, 113, 0, 0, 1276, 1277, 5, 117, 0, 0, 1277, 1278, 5, 101, 0, 0, 1278, 1279, 5, 110, 0, 0, 1279, 1280, 5, 99, 0, 0, 1280, 1298, 5, 101, 0, 0, 1281, 1282, 5, 83, 0, 0, 1282, 1283, 5, 69, 0, 0, 1283, 1284, 5, 81, 0, 0, 1284, 1285, 5, 85, 0, 0, 1285, 1286, 5, 69, 0, 0, 1286, 1287, 5, 78, 0, 0, 1287, 1288, 5, 67, 0, 0, 1288, 1298, 5, 69, 0, 0, 1289, 1290, 5, 83, 0, 0, 1290, 1291, 5, 101, 0, 0, 1291, 1292, 5, 113, 0, 0, 1292, 1293, 5, 117, 0, 0, 1293, 1294, 5, 101, 0, 0, 1294, 1295, 5, 110, 0, 0, 1295, 1296, 5, 99, 0, 0, 1296, 1298, 5, 101, 0, 0, 1297, 1273, 1, 0, 0, 0, 1297, 1281, 1, 0, 0, 0, 1297, 1289, 1, 0, 0, 0, 1298, 80, 1, 0, 0, 0, 1299, 1300, 5, 112, 0, 0, 1300, 1301, 5, 117, 0, 0, 1301, 1302, 5, 98, 0, 0, 1302, 1303, 5, 108, 0, 0, 1303, 1304, 5, 105, 0, 0, 1304, 1318, 5, 99, 0, 0, 1305, 1306, 5, 80, 0, 0, 1306, 1307, 5, 85, 0, 0, 1307, 1308, 5, 66, 0, 0, 1308, 1309, 5, 76, 0, 0, 1309, 1310, 5, 73, 0, 0, 1310, 1318, 5, 67, 0, 0, 1311, 1312, 5, 80, 0, 0, 1312, 1313, 5, 117, 0, 0, 1313, 1314, 5, 98, 0, 0, 1314, 1315, 5, 108, 0, 0, 1315, 1316, 5, 105, 0, 0, 1316, 1318, 5, 99, 0, 0, 1317, 1299, 1, 0, 0, 0, 1317, 1305, 1, 0, 0, 0, 1317, 1311, 1, 0, 0, 0, 1318, 82, 1, 0, 0, 0, 1319, 1322, 3, 77, 38, 0, 1320, 1322, 3, 81, 40, 0, 1321, 1319, 1, 0, 0, 0, 1321, 1320, 1, 0, 0, 0, 1322, 84, 1, 0, 0, 0, 1323, 1324, 5, 105, 0, 0, 1324, 1325, 5, 109, 0, 0, 1325, 1326, 5, 112, 0, 0, 1326, 1327, 5, 108, 0, 0, 1327, 1328, 5, 105, 0, 0, 1328, 1329, 5, 99, 0, 0, 1329, 1330, 5, 105, 0, 0, 1330, 1348, 5, 116, 0, 0, 1331, 1332, 5, 73, 0, 0, 1332, 1333, 5, 77, 0, 0, 1333, 1334, 5, 80, 0, 0, 1334, 1335, 5, 76, 0, 0, 1335, 1336, 5, 73, 0, 0, 1336, 1337, 5, 67, 0, 0, 1337, 1338, 5, 73, 0, 0, 1338, 1348, 5, 84, 0, 0, 1339, 1340, 5, 73, 0, 0, 1340, 1341, 5, 109, 0, 0, 1341, 1342, 5, 112, 0, 0, 1342, 1343, 5, 108, 0, 0, 1343, 1344, 5, 105, 0, 0, 1344, 1345, 5, 99, 0, 0, 1345, 1346, 5, 105, 0, 0, 1346, 1348, 5, 116, 0, 0, 1347, 1323, 1, 0, 0, 0, 1347, 1331, 1, 0, 0, 0, 1347, 1339, 1, 0, 0, 0, 1348, 86, 1, 0, 0, 0, 1349, 1350, 5, 110, 0, 0, 1350, 1351, 5, 111, 0, 0, 1351, 1352, 5, 110, 0, 0, 1352, 1362, 5, 101, 0, 0, 1353, 1354, 5, 78, 0, 0, 1354, 1355, 5, 79, 0, 0, 1355, 1356, 5, 78, 0, 0, 1356, 1362, 5, 69, 0, 0, 1357, 1358, 5, 78, 0, 0, 1358, 1359, 5, 111, 0, 0, 1359, 1360, 5, 110, 0, 0, 1360, 1362, 5, 101, 0, 0, 1361, 1349, 1, 0, 0, 0, 1361, 1353, 1, 0, 0, 0, 1361, 1357, 1, 0, 0, 0, 1362, 88, 1, 0, 0, 0, 1363, 1364, 5, 99, 0, 0, 1364, 1365, 5, 104, 0, 0, 1365, 1366, 5, 97, 0, 0, 1366, 1367, 5, 114, 0, 0, 1367, 1368, 5, 97, 0, 0, 1368, 1369, 5, 99, 0, 0, 1369, 1370, 5, 116, 0, 0, 1370, 1371, 5, 101, 0, 0, 1371, 1391, 5, 114, 0, 0, 1372, 1373, 5, 67, 0, 0, 1373, 1374, 5, 72, 0, 0, 1374, 1375, 5, 65, 0, 0, 1375, 1376, 5, 82, 0, 0, 1376, 1377, 5, 65, 0, 0, 1377, 1378, 5, 67, 0, 0, 1378, 1379, 5, 84, 0, 0, 1379, 1380, 5, 69, 0, 0, 1380, 1391, 5, 82, 0, 0, 1381, 1382, 5, 67, 0, 0, 1382, 1383, 5, 104, 0, 0, 1383, 1384, 5, 97, 0, 0, 1384, 1385, 5, 114, 0, 0, 1385, 1386, 5, 97, 0, 0, 1386, 1387, 5, 99, 0, 0, 1387, 1388, 5, 116, 0, 0, 1388, 1389, 5, 101, 0, 0, 1389, 1391, 5, 114, 0, 0, 1390, 1363, 1, 0, 0, 0, 1390, 1372, 1, 0, 0, 0, 1390, 1381, 1, 0, 0, 0, 1391, 90, 1, 0, 0, 0, 1392, 1393, 5, 112, 0, 0, 1393, 1394, 5, 97, 0, 0, 1394, 1395, 5, 114, 0, 0, 1395, 1396, 5, 97, 0, 0, 1396, 1397, 5, 109, 0, 0, 1397, 1398, 5, 101, 0, 0, 1398, 1399, 5, 116, 0, 0, 1399, 1400, 5, 101, 0, 0, 1400, 1420, 5, 114, 0, 0, 1401, 1402, 5, 80, 0, 0, 1402, 1403, 5, 65, 0, 0, 1403, 1404, 5, 82, 0, 0, 1404, 1405, 5, 65, 0, 0, 1405, 1406, 5, 77, 0, 0, 1406, 1407, 5, 69, 0, 0, 1407, 1408, 5, 84, 0, 0, 1408, 1409, 5, 69, 0, 0, 1409, 1420, 5, 82, 0, 0, 1410, 1411, 5, 80, 0, 0, 1411, 1412, 5, 97, 0, 0, 1412, 1413, 5, 114, 0, 0, 1413, 1414, 5, 97, 0, 0, 1414, 1415, 5, 109, 0, 0, 1415, 1416, 5, 101, 0, 0, 1416, 1417, 5, 116, 0, 0, 1417, 1418, 5, 101, 0, 0, 1418, 1420, 5, 114, 0, 0, 1419, 1392, 1, 0, 0, 0, 1419, 1401, 1, 0, 0, 0, 1419, 1410, 1, 0, 0, 0, 1420, 92, 1, 0, 0, 0, 1421, 1422, 5, 101, 0, 0, 1422, 1423, 5, 120, 0, 0, 1423, 1424, 5, 116, 0, 0, 1424, 1425, 5, 101, 0, 0, 1425, 1426, 5, 114, 0, 0, 1426, 1427, 5, 110, 0, 0, 1427, 1428, 5, 97, 0, 0, 1428, 1446, 5, 108, 0, 0, 1429, 1430, 5, 69, 0, 0, 1430, 1431, 5, 88, 0, 0, 1431, 1432, 5, 84, 0, 0, 1432, 1433, 5, 69, 0, 0, 1433, 1434, 5, 82, 0, 0, 1434, 1435, 5, 78, 0, 0, 1435, 1436, 5, 65, 0, 0, 1436, 1446, 5, 76, 0, 0, 1437, 1438, 5, 69, 0, 0, 1438, 1439, 5, 120, 0, 0, 1439, 1440, 5, 116, 0, 0, 1440, 1441, 5, 101, 0, 0, 1441, 1442, 5, 114, 0, 0, 1442, 1443, 5, 110, 0, 0, 1443, 1444, 5, 97, 0, 0, 1444, 1446, 5, 108, 0, 0, 1445, 1421, 1, 0, 0, 0, 1445, 1429, 1, 0, 0, 0, 1445, 1437, 1, 0, 0, 0, 1446, 94, 1, 0, 0, 0, 1447, 1448, 5, 105, 0, 0, 1448, 1449, 5, 110, 0, 0, 1449, 1450, 5, 116, 0, 0, 1450, 1451, 5, 114, 0, 0, 1451, 1452, 5, 105, 0, 0, 1452, 1453, 5, 110, 0, 0, 1453, 1454, 5, 115, 0, 0, 1454, 1455, 5, 105, 0, 0, 1455, 1475, 5, 99, 0, 0, 1456, 1457, 5, 73, 0, 0, 1457, 1458, 5, 78, 0, 0, 1458, 1459, 5, 84, 0, 0, 1459, 1460, 5, 82, 0, 0, 1460, 1461, 5, 73, 0, 0, 1461, 1462, 5, 78, 0, 0, 1462, 1463, 5, 83, 0, 0, 1463, 1464, 5, 73, 0, 0, 1464, 1475, 5, 67, 0, 0, 1465, 1466, 5, 73, 0, 0, 1466, 1467, 5, 110, 0, 0, 1467, 1468, 5, 116, 0, 0, 1468, 1469, 5, 114, 0, 0, 1469, 1470, 5, 105, 0, 0, 1470, 1471, 5, 110, 0, 0, 1471, 1472, 5, 115, 0, 0, 1472, 1473, 5, 105, 0, 0, 1473, 1475, 5, 99, 0, 0, 1474, 1447, 1, 0, 0, 0, 1474, 1456, 1, 0, 0, 0, 1474, 1465, 1, 0, 0, 0, 1475, 96, 1, 0, 0, 0, 1476, 1477, 5, 115, 0, 0, 1477, 1478, 5, 97, 0, 0, 1478, 1479, 5, 118, 0, 0, 1479, 1489, 5, 101, 0, 0, 1480, 1481, 5, 83, 0, 0, 1481, 1482, 5, 65, 0, 0, 1482, 1483, 5, 86, 0, 0, 1483, 1489, 5, 69, 0, 0, 1484, 1485, 5, 83, 0, 0, 1485, 1486, 5, 97, 0, 0, 1486, 1487, 5, 118, 0, 0, 1487, 1489, 5, 101, 0, 0, 1488, 1476, 1, 0, 0, 0, 1488, 1480, 1, 0, 0, 0, 1488, 1484, 1, 0, 0, 0, 1489, 98, 1, 0, 0, 0, 1490, 1491, 5, 100, 0, 0, 1491, 1492, 5, 97, 0, 0, 1492, 1493, 5, 116, 0, 0, 1493, 1503, 5, 97, 0, 0, 1494, 1495, 5, 68, 0, 0, 1495, 1496, 5, 65, 0, 0, 1496, 1497, 5, 84, 0, 0, 1497, 1503, 5, 65, 0, 0, 1498, 1499, 5, 68, 0, 0, 1499, 1500, 5, 97, 0, 0, 1500, 1501, 5, 116, 0, 0, 1501, 1503, 5, 97, 0, 0, 1502, 1490, 1, 0, 0, 0, 1502, 1494, 1, 0, 0, 0, 1502, 1498, 1, 0, 0, 0, 1503, 100, 1, 0, 0, 0, 1504, 1505, 5, 71, 0, 0, 1505, 1511, 5, 79, 0, 0, 1506, 1507, 5, 103, 0, 0, 1507, 1511, 5, 111, 0, 0, 1508, 1509, 5, 71, 0, 0, 1509, 1511, 5, 111, 0, 0, 1510, 1504, 1, 0, 0, 0, 1510, 1506, 1, 0, 0, 0, 1510, 1508, 1, 0, 0, 0, 1511, 102, 1, 0, 0, 0, 1512, 1513, 5, 71, 0, 0, 1513, 1514, 5, 79, 0, 0, 1514, 1515, 5, 84, 0, 0, 1515, 1525, 5, 79, 0, 0, 1516, 1517, 5, 103, 0, 0, 1517, 1518, 5, 111, 0, 0, 1518, 1519, 5, 116, 0, 0, 1519, 1525, 5, 111, 0, 0, 1520, 1521, 5, 71, 0, 0, 1521, 1522, 5, 111, 0, 0, 1522, 1523, 5, 116, 0, 0, 1523, 1525, 5, 111, 0, 0, 1524, 1512, 1, 0, 0, 0, 1524, 1516, 1, 0, 0, 0, 1524, 1520, 1, 0, 0, 0, 1525, 104, 1, 0, 0, 0, 1526, 1527, 5, 73, 0, 0, 1527, 1533, 5, 70, 0, 0, 1528, 1529, 5, 105, 0, 0, 1529, 1533, 5, 102, 0, 0, 1530, 1531, 5, 73, 0, 0, 1531, 1533, 5, 102, 0, 0, 1532, 1526, 1, 0, 0, 0, 1532, 1528, 1, 0, 0, 0, 1532, 1530, 1, 0, 0, 0, 1533, 106, 1, 0, 0, 0, 1534, 1535, 5, 84, 0, 0, 1535, 1536, 5, 72, 0, 0, 1536, 1537, 5, 69, 0, 0, 1537, 1543, 5, 78, 0, 0, 1538, 1539, 5, 116, 0, 0, 1539, 1540, 5, 104, 0, 0, 1540, 1541, 5, 101, 0, 0, 1541, 1543, 5, 110, 0, 0, 1542, 1534, 1, 0, 0, 0, 1542, 1538, 1, 0, 0, 0, 1543, 108, 1, 0, 0, 0, 1544, 1545, 5, 69, 0, 0, 1545, 1546, 5, 76, 0, 0, 1546, 1547, 5, 83, 0, 0, 1547, 1553, 5, 69, 0, 0, 1548, 1549, 5, 101, 0, 0, 1549, 1550, 5, 108, 0, 0, 1550, 1551, 5, 115, 0, 0, 1551, 1553, 5, 101, 0, 0, 1552, 1544, 1, 0, 0, 0, 1552, 1548, 1, 0, 0, 0, 1553, 110, 1, 0, 0, 0, 1554, 1555, 5, 69, 0, 0, 1555, 1556, 5, 78, 0, 0, 1556, 1557, 5, 68, 0, 0, 1557, 1558, 5, 73, 0, 0, 1558, 1565, 5, 70, 0, 0, 1559, 1560, 5, 101, 0, 0, 1560, 1561, 5, 110, 0, 0, 1561, 1562, 5, 100, 0, 0, 1562, 1563, 5, 105, 0, 0, 1563, 1565, 5, 102, 0, 0, 1564, 1554, 1, 0, 0, 0, 1564, 1559, 1, 0, 0, 0, 1565, 112, 1, 0, 0, 0, 1566, 1567, 5, 82, 0, 0, 1567, 1568, 5, 69, 0, 0, 1568, 1569, 5, 83, 0, 0, 1569, 1570, 5, 85, 0, 0, 1570, 1571, 5, 76, 0, 0, 1571, 1579, 5, 84, 0, 0, 1572, 1573, 5, 114, 0, 0, 1573, 1574, 5, 101, 0, 0, 1574, 1575, 5, 115, 0, 0, 1575, 1576, 5, 117, 0, 0, 1576, 1577, 5, 108, 0, 0, 1577, 1579, 5, 116, 0, 0, 1578, 1566, 1, 0, 0, 0, 1578, 1572, 1, 0, 0, 0, 1579, 114, 1, 0, 0, 0, 1580, 1581, 5, 69, 0, 0, 1581, 1582, 5, 76, 0, 0, 1582, 1583, 5, 83, 0, 0, 1583, 1584, 5, 69, 0, 0, 1584, 1585, 5, 73, 0, 0, 1585, 1599, 5, 70, 0, 0, 1586, 1587, 5, 101, 0, 0, 1587, 1588, 5, 108, 0, 0, 1588, 1589, 5, 115, 0, 0, 1589, 1590, 5, 101, 0, 0, 1590, 1591, 5, 105, 0, 0, 1591, 1599, 5, 102, 0, 0, 1592, 1593, 5, 69, 0, 0, 1593, 1594, 5, 108, 0, 0, 1594, 1595, 5, 115, 0, 0, 1595, 1596, 5, 101, 0, 0, 1596, 1597, 5, 105, 0, 0, 1597, 1599, 5, 102, 0, 0, 1598, 1580, 1, 0, 0, 0, 1598, 1586, 1, 0, 0, 0, 1598, 1592, 1, 0, 0, 0, 1599, 116, 1, 0, 0, 0, 1600, 1601, 5, 68, 0, 0, 1601, 1607, 5, 79, 0, 0, 1602, 1603, 5, 100, 0, 0, 1603, 1607, 5, 111, 0, 0, 1604, 1605, 5, 68, 0, 0, 1605, 1607, 5, 111, 0, 0, 1606, 1600, 1, 0, 0, 0, 1606, 1602, 1, 0, 0, 0, 1606, 1604, 1, 0, 0, 0, 1607, 118, 1, 0, 0, 0, 1608, 1609, 5, 73, 0, 0, 1609, 1610, 5, 78, 0, 0, 1610, 1611, 5, 67, 0, 0, 1611, 1612, 5, 76, 0, 0, 1612, 1613, 5, 85, 0, 0, 1613, 1614, 5, 68, 0, 0, 1614, 1630, 5, 69, 0, 0, 1615, 1616, 5, 105, 0, 0, 1616, 1617, 5, 110, 0, 0, 1617, 1618, 5, 99, 0, 0, 1618, 1619, 5, 108, 0, 0, 1619, 1620, 5, 117, 0, 0, 1620, 1621, 5, 100, 0, 0, 1621, 1630, 5, 101, 0, 0, 1622, 1623, 5, 73, 0, 0, 1623, 1624, 5, 110, 0, 0, 1624, 1625, 5, 99, 0, 0, 1625, 1626, 5, 108, 0, 0, 1626, 1627, 5, 117, 0, 0, 1627, 1628, 5, 100, 0, 0, 1628, 1630, 5, 101, 0, 0, 1629, 1608, 1, 0, 0, 0, 1629, 1615, 1, 0, 0, 0, 1629, 1622, 1, 0, 0, 0, 1630, 120, 1, 0, 0, 0, 1631, 1632, 5, 67, 0, 0, 1632, 1633, 5, 79, 0, 0, 1633, 1634, 5, 78, 0, 0, 1634, 1635, 5, 84, 0, 0, 1635, 1636, 5, 73, 0, 0, 1636, 1637, 5, 78, 0, 0, 1637, 1638, 5, 85, 0, 0, 1638, 1656, 5, 69, 0, 0, 1639, 1640, 5, 99, 0, 0, 1640, 1641, 5, 111, 0, 0, 1641, 1642, 5, 110, 0, 0, 1642, 1643, 5, 116, 0, 0, 1643, 1644, 5, 105, 0, 0, 1644, 1645, 5, 110, 0, 0, 1645, 1646, 5, 117, 0, 0, 1646, 1656, 5, 101, 0, 0, 1647, 1648, 5, 67, 0, 0, 1648, 1649, 5, 111, 0, 0, 1649, 1650, 5, 110, 0, 0, 1650, 1651, 5, 116, 0, 0, 1651, 1652, 5, 105, 0, 0, 1652, 1653, 5, 110, 0, 0, 1653, 1654, 5, 117, 0, 0, 1654, 1656, 5, 101, 0, 0, 1655, 1631, 1, 0, 0, 0, 1655, 1639, 1, 0, 0, 0, 1655, 1647, 1, 0, 0, 0, 1656, 122, 1, 0, 0, 0, 1657, 1658, 5, 69, 0, 0, 1658, 1659, 5, 78, 0, 0, 1659, 1660, 5, 68, 0, 0, 1660, 1661, 5, 87, 0, 0, 1661, 1662, 5, 72, 0, 0, 1662, 1663, 5, 69, 0, 0, 1663, 1664, 5, 82, 0, 0, 1664, 1682, 5, 69, 0, 0, 1665, 1666, 5, 101, 0, 0, 1666, 1667, 5, 110, 0, 0, 1667, 1668, 5, 100, 0, 0, 1668, 1669, 5, 119, 0, 0, 1669, 1670, 5, 104, 0, 0, 1670, 1671, 5, 101, 0, 0, 1671, 1672, 5, 114, 0, 0, 1672, 1682, 5, 101, 0, 0, 1673, 1674, 5, 69, 0, 0, 1674, 1675, 5, 110, 0, 0, 1675, 1676, 5, 100, 0, 0, 1676, 1677, 5, 119, 0, 0, 1677, 1678, 5, 104, 0, 0, 1678, 1679, 5, 101, 0, 0, 1679, 1680, 5, 114, 0, 0, 1680, 1682, 5, 101, 0, 0, 1681, 1657, 1, 0, 0, 0, 1681, 1665, 1, 0, 0, 0, 1681, 1673, 1, 0, 0, 0, 1682, 124, 1, 0, 0, 0, 1683, 1684, 5, 87, 0, 0, 1684, 1685, 5, 72, 0, 0, 1685, 1686, 5, 69, 0, 0, 1686, 1687, 5, 82, 0, 0, 1687, 1699, 5, 69, 0, 0, 1688, 1689, 5, 119, 0, 0, 1689, 1690, 5, 104, 0, 0, 1690, 1691, 5, 101, 0, 0, 1691, 1692, 5, 114, 0, 0, 1692, 1699, 5, 101, 0, 0, 1693, 1694, 5, 87, 0, 0, 1694, 1695, 5, 104, 0, 0, 1695, 1696, 5, 101, 0, 0, 1696, 1697, 5, 114, 0, 0, 1697, 1699, 5, 101, 0, 0, 1698, 1683, 1, 0, 0, 0, 1698, 1688, 1, 0, 0, 0, 1698, 1693, 1, 0, 0, 0, 1699, 126, 1, 0, 0, 0, 1700, 1701, 5, 69, 0, 0, 1701, 1702, 5, 78, 0, 0, 1702, 1703, 5, 68, 0, 0, 1703, 1704, 5, 83, 0, 0, 1704, 1705, 5, 69, 0, 0, 1705, 1706, 5, 76, 0, 0, 1706, 1707, 5, 69, 0, 0, 1707, 1708, 5, 67, 0, 0, 1708, 1719, 5, 84, 0, 0, 1709, 1710, 5, 101, 0, 0, 1710, 1711, 5, 110, 0, 0, 1711, 1712, 5, 100, 0, 0, 1712, 1713, 5, 115, 0, 0, 1713, 1714, 5, 101, 0, 0, 1714, 1715, 5, 108, 0, 0, 1715, 1716, 5, 101, 0, 0, 1716, 1717, 5, 99, 0, 0, 1717, 1719, 5, 116, 0, 0, 1718, 1700, 1, 0, 0, 0, 1718, 1709, 1, 0, 0, 0, 1719, 128, 1, 0, 0, 0, 1720, 1721, 5, 83, 0, 0, 1721, 1722, 5, 69, 0, 0, 1722, 1723, 5, 76, 0, 0, 1723, 1724, 5, 69, 0, 0, 1724, 1725, 5, 67, 0, 0, 1725, 1726, 5, 84, 0, 0, 1726, 1727, 5, 67, 0, 0, 1727, 1728, 5, 65, 0, 0, 1728, 1729, 5, 83, 0, 0, 1729, 1741, 5, 69, 0, 0, 1730, 1731, 5, 115, 0, 0, 1731, 1732, 5, 101, 0, 0, 1732, 1733, 5, 108, 0, 0, 1733, 1734, 5, 101, 0, 0, 1734, 1735, 5, 99, 0, 0, 1735, 1736, 5, 116, 0, 0, 1736, 1737, 5, 99, 0, 0, 1737, 1738, 5, 97, 0, 0, 1738, 1739, 5, 115, 0, 0, 1739, 1741, 5, 101, 0, 0, 1740, 1720, 1, 0, 0, 0, 1740, 1730, 1, 0, 0, 0, 1741, 130, 1, 0, 0, 0, 1742, 1743, 5, 83, 0, 0, 1743, 1744, 5, 69, 0, 0, 1744, 1745, 5, 76, 0, 0, 1745, 1746, 5, 69, 0, 0, 1746, 1747, 5, 67, 0, 0, 1747, 1755, 5, 84, 0, 0, 1748, 1749, 5, 115, 0, 0, 1749, 1750, 5, 101, 0, 0, 1750, 1751, 5, 108, 0, 0, 1751, 1752, 5, 101, 0, 0, 1752, 1753, 5, 99, 0, 0, 1753, 1755, 5, 116, 0, 0, 1754, 1742, 1, 0, 0, 0, 1754, 1748, 1, 0, 0, 0, 1755, 132, 1, 0, 0, 0, 1756, 1757, 5, 99, 0, 0, 1757, 1758, 5, 97, 0, 0, 1758, 1759, 5, 115, 0, 0, 1759, 1769, 5, 101, 0, 0, 1760, 1761, 5, 67, 0, 0, 1761, 1762, 5, 65, 0, 0, 1762, 1763, 5, 83, 0, 0, 1763, 1769, 5, 69, 0, 0, 1764, 1765, 5, 67, 0, 0, 1765, 1766, 5, 97, 0, 0, 1766, 1767, 5, 115, 0, 0, 1767, 1769, 5, 101, 0, 0, 1768, 1756, 1, 0, 0, 0, 1768, 1760, 1, 0, 0, 0, 1768, 1764, 1, 0, 0, 0, 1769, 134, 1, 0, 0, 0, 1770, 1771, 5, 68, 0, 0, 1771, 1772, 5, 69, 0, 0, 1772, 1773, 5, 70, 0, 0, 1773, 1774, 5, 65, 0, 0, 1774, 1775, 5, 85, 0, 0, 1775, 1776, 5, 76, 0, 0, 1776, 1792, 5, 84, 0, 0, 1777, 1778, 5, 100, 0, 0, 1778, 1779, 5, 101, 0, 0, 1779, 1780, 5, 102, 0, 0, 1780, 1781, 5, 97, 0, 0, 1781, 1782, 5, 117, 0, 0, 1782, 1783, 5, 108, 0, 0, 1783, 1792, 5, 116, 0, 0, 1784, 1785, 5, 68, 0, 0, 1785, 1786, 5, 101, 0, 0, 1786, 1787, 5, 102, 0, 0, 1787, 1788, 5, 97, 0, 0, 1788, 1789, 5, 117, 0, 0, 1789, 1790, 5, 108, 0, 0, 1790, 1792, 5, 116, 0, 0, 1791, 1770, 1, 0, 0, 0, 1791, 1777, 1, 0, 0, 0, 1791, 1784, 1, 0, 0, 0, 1792, 136, 1, 0, 0, 0, 1793, 1794, 5, 68, 0, 0, 1794, 1795, 5, 73, 0, 0, 1795, 1796, 5, 82, 0, 0, 1796, 1797, 5, 69, 0, 0, 1797, 1798, 5, 67, 0, 0, 1798, 1812, 5, 84, 0, 0, 1799, 1800, 5, 100, 0, 0, 1800, 1801, 5, 105, 0, 0, 1801, 1802, 5, 114, 0, 0, 1802, 1803, 5, 101, 0, 0, 1803, 1804, 5, 99, 0, 0, 1804, 1812, 5, 116, 0, 0, 1805, 1806, 5, 68, 0, 0, 1806, 1807, 5, 105, 0, 0, 1807, 1808, 5, 114, 0, 0, 1808, 1809, 5, 101, 0, 0, 1809, 1810, 5, 99, 0, 0, 1810, 1812, 5, 116, 0, 0, 1811, 1793, 1, 0, 0, 0, 1811, 1799, 1, 0, 0, 0, 1811, 1805, 1, 0, 0, 0, 1812, 138, 1, 0, 0, 0, 1813, 1814, 5, 83, 0, 0, 1814, 1815, 5, 84, 0, 0, 1815, 1816, 5, 79, 0, 0, 1816, 1826, 5, 80, 0, 0, 1817, 1818, 5, 115, 0, 0, 1818, 1819, 5, 116, 0, 0, 1819, 1820, 5, 111, 0, 0, 1820, 1826, 5, 112, 0, 0, 1821, 1822, 5, 83, 0, 0, 1822, 1823, 5, 116, 0, 0, 1823, 1824, 5, 111, 0, 0, 1824, 1826, 5, 112, 0, 0, 1825, 1813, 1, 0, 0, 0, 1825, 1817, 1, 0, 0, 0, 1825, 1821, 1, 0, 0, 0, 1826, 140, 1, 0, 0, 0, 1827, 1828, 5, 82, 0, 0, 1828, 1829, 5, 69, 0, 0, 1829, 1837, 5, 67, 0, 0, 1830, 1831, 5, 114, 0, 0, 1831, 1832, 5, 101, 0, 0, 1832, 1837, 5, 99, 0, 0, 1833, 1834, 5, 82, 0, 0, 1834, 1835, 5, 101, 0, 0, 1835, 1837, 5, 99, 0, 0, 1836, 1827, 1, 0, 0, 0, 1836, 1830, 1, 0, 0, 0, 1836, 1833, 1, 0, 0, 0, 1837, 142, 1, 0, 0, 0, 1838, 1839, 5, 69, 0, 0, 1839, 1840, 5, 78, 0, 0, 1840, 1841, 5, 68, 0, 0, 1841, 1842, 5, 68, 0, 0, 1842, 1849, 5, 79, 0, 0, 1843, 1844, 5, 101, 0, 0, 1844, 1845, 5, 110, 0, 0, 1845, 1846, 5, 100, 0, 0, 1846, 1847, 5, 100, 0, 0, 1847, 1849, 5, 111, 0, 0, 1848, 1838, 1, 0, 0, 0, 1848, 1843, 1, 0, 0, 0, 1849, 144, 1, 0, 0, 0, 1850, 1851, 5, 112, 0, 0, 1851, 1852, 5, 97, 0, 0, 1852, 1853, 5, 117, 0, 0, 1853, 1854, 5, 115, 0, 0, 1854, 1861, 5, 101, 0, 0, 1855, 1856, 5, 80, 0, 0, 1856, 1857, 5, 65, 0, 0, 1857, 1858, 5, 85, 0, 0, 1858, 1859, 5, 83, 0, 0, 1859, 1861, 5, 69, 0, 0, 1860, 1850, 1, 0, 0, 0, 1860, 1855, 1, 0, 0, 0, 1861, 146, 1, 0, 0, 0, 1862, 1863, 5, 87, 0, 0, 1863, 1864, 5, 82, 0, 0, 1864, 1865, 5, 73, 0, 0, 1865, 1866, 5, 84, 0, 0, 1866, 1873, 5, 69, 0, 0, 1867, 1868, 5, 119, 0, 0, 1868, 1869, 5, 114, 0, 0, 1869, 1870, 5, 105, 0, 0, 1870, 1871, 5, 116, 0, 0, 1871, 1873, 5, 101, 0, 0, 1872, 1862, 1, 0, 0, 0, 1872, 1867, 1, 0, 0, 0, 1873, 148, 1, 0, 0, 0, 1874, 1875, 5, 82, 0, 0, 1875, 1876, 5, 69, 0, 0, 1876, 1877, 5, 65, 0, 0, 1877, 1883, 5, 68, 0, 0, 1878, 1879, 5, 114, 0, 0, 1879, 1880, 5, 101, 0, 0, 1880, 1881, 5, 97, 0, 0, 1881, 1883, 5, 100, 0, 0, 1882, 1874, 1, 0, 0, 0, 1882, 1878, 1, 0, 0, 0, 1883, 150, 1, 0, 0, 0, 1884, 1885, 5, 80, 0, 0, 1885, 1886, 5, 82, 0, 0, 1886, 1887, 5, 73, 0, 0, 1887, 1888, 5, 78, 0, 0, 1888, 1895, 5, 84, 0, 0, 1889, 1890, 5, 112, 0, 0, 1890, 1891, 5, 114, 0, 0, 1891, 1892, 5, 105, 0, 0, 1892, 1893, 5, 110, 0, 0, 1893, 1895, 5, 116, 0, 0, 1894, 1884, 1, 0, 0, 0, 1894, 1889, 1, 0, 0, 0, 1895, 152, 1, 0, 0, 0, 1896, 1897, 5, 79, 0, 0, 1897, 1898, 5, 80, 0, 0, 1898, 1899, 5, 69, 0, 0, 1899, 1905, 5, 78, 0, 0, 1900, 1901, 5, 111, 0, 0, 1901, 1902, 5, 112, 0, 0, 1902, 1903, 5, 101, 0, 0, 1903, 1905, 5, 110, 0, 0, 1904, 1896, 1, 0, 0, 0, 1904, 1900, 1, 0, 0, 0, 1905, 154, 1, 0, 0, 0, 1906, 1907, 5, 70, 0, 0, 1907, 1908, 5, 77, 0, 0, 1908, 1913, 5, 84, 0, 0, 1909, 1910, 5, 102, 0, 0, 1910, 1911, 5, 109, 0, 0, 1911, 1913, 5, 116, 0, 0, 1912, 1906, 1, 0, 0, 0, 1912, 1909, 1, 0, 0, 0, 1913, 156, 1, 0, 0, 0, 1914, 1915, 5, 85, 0, 0, 1915, 1916, 5, 78, 0, 0, 1916, 1917, 5, 73, 0, 0, 1917, 1923, 5, 84, 0, 0, 1918, 1919, 5, 117, 0, 0, 1919, 1920, 5, 110, 0, 0, 1920, 1921, 5, 105, 0, 0, 1921, 1923, 5, 116, 0, 0, 1922, 1914, 1, 0, 0, 0, 1922, 1918, 1, 0, 0, 0, 1923, 158, 1, 0, 0, 0, 1924, 1925, 5, 80, 0, 0, 1925, 1926, 5, 65, 0, 0, 1926, 1931, 5, 68, 0, 0, 1927, 1928, 5, 112, 0, 0, 1928, 1929, 5, 97, 0, 0, 1929, 1931, 5, 100, 0, 0, 1930, 1924, 1, 0, 0, 0, 1930, 1927, 1, 0, 0, 0, 1931, 160, 1, 0, 0, 0, 1932, 1933, 5, 65, 0, 0, 1933, 1934, 5, 67, 0, 0, 1934, 1935, 5, 84, 0, 0, 1935, 1936, 5, 73, 0, 0, 1936, 1937, 5, 79, 0, 0, 1937, 1945, 5, 78, 0, 0, 1938, 1939, 5, 97, 0, 0, 1939, 1940, 5, 99, 0, 0, 1940, 1941, 5, 116, 0, 0, 1941, 1942, 5, 105, 0, 0, 1942, 1943, 5, 111, 0, 0, 1943, 1945, 5, 110, 0, 0, 1944, 1932, 1, 0, 0, 0, 1944, 1938, 1, 0, 0, 0, 1945, 162, 1, 0, 0, 0, 1946, 1947, 5, 68, 0, 0, 1947, 1948, 5, 69, 0, 0, 1948, 1949, 5, 76, 0, 0, 1949, 1950, 5, 73, 0, 0, 1950, 1957, 5, 77, 0, 0, 1951, 1952, 5, 100, 0, 0, 1952, 1953, 5, 101, 0, 0, 1953, 1954, 5, 108, 0, 0, 1954, 1955, 5, 105, 0, 0, 1955, 1957, 5, 109, 0, 0, 1956, 1946, 1, 0, 0, 0, 1956, 1951, 1, 0, 0, 0, 1957, 164, 1, 0, 0, 0, 1958, 1959, 5, 73, 0, 0, 1959, 1960, 5, 79, 0, 0, 1960, 1961, 5, 76, 0, 0, 1961, 1962, 5, 69, 0, 0, 1962, 1963, 5, 78, 0, 0, 1963, 1964, 5, 71, 0, 0, 1964, 1965, 5, 84, 0, 0, 1965, 1975, 5, 72, 0, 0, 1966, 1967, 5, 105, 0, 0, 1967, 1968, 5, 111, 0, 0, 1968, 1969, 5, 108, 0, 0, 1969, 1970, 5, 101, 0, 0, 1970, 1971, 5, 110, 0, 0, 1971, 1972, 5, 103, 0, 0, 1972, 1973, 5, 116, 0, 0, 1973, 1975, 5, 104, 0, 0, 1974, 1958, 1, 0, 0, 0, 1974, 1966, 1, 0, 0, 0, 1975, 166, 1, 0, 0, 0, 1976, 1977, 5, 82, 0, 0, 1977, 1978, 5, 69, 0, 0, 1978, 1979, 5, 65, 0, 0, 1979, 1980, 5, 68, 0, 0, 1980, 1981, 5, 87, 0, 0, 1981, 1982, 5, 82, 0, 0, 1982, 1983, 5, 73, 0, 0, 1983, 1984, 5, 84, 0, 0, 1984, 1995, 5, 69, 0, 0, 1985, 1986, 5, 114, 0, 0, 1986, 1987, 5, 101, 0, 0, 1987, 1988, 5, 97, 0, 0, 1988, 1989, 5, 100, 0, 0, 1989, 1990, 5, 119, 0, 0, 1990, 1991, 5, 114, 0, 0, 1991, 1992, 5, 105, 0, 0, 1992, 1993, 5, 116, 0, 0, 1993, 1995, 5, 101, 0, 0, 1994, 1976, 1, 0, 0, 0, 1994, 1985, 1, 0, 0, 0, 1995, 168, 1, 0, 0, 0, 1996, 1997, 5, 101, 0, 0, 1997, 1998, 5, 114, 0, 0, 1998, 2003, 5, 114, 0, 0, 1999, 2000, 5, 69, 0, 0, 2000, 2001, 5, 82, 0, 0, 2001, 2003, 5, 82, 0, 0, 2002, 1996, 1, 0, 0, 0, 2002, 1999, 1, 0, 0, 0, 2003, 170, 1, 0, 0, 0, 2004, 2005, 5, 83, 0, 0, 2005, 2006, 5, 73, 0, 0, 2006, 2007, 5, 90, 0, 0, 2007, 2013, 5, 69, 0, 0, 2008, 2009, 5, 115, 0, 0, 2009, 2010, 5, 105, 0, 0, 2010, 2011, 5, 122, 0, 0, 2011, 2013, 5, 101, 0, 0, 2012, 2004, 1, 0, 0, 0, 2012, 2008, 1, 0, 0, 0, 2013, 172, 1, 0, 0, 0, 2014, 2015, 5, 65, 0, 0, 2015, 2016, 5, 68, 0, 0, 2016, 2017, 5, 86, 0, 0, 2017, 2018, 5, 65, 0, 0, 2018, 2019, 5, 78, 0, 0, 2019, 2020, 5, 67, 0, 0, 2020, 2029, 5, 69, 0, 0, 2021, 2022, 5, 97, 0, 0, 2022, 2023, 5, 100, 0, 0, 2023, 2024, 5, 118, 0, 0, 2024, 2025, 5, 97, 0, 0, 2025, 2026, 5, 110, 0, 0, 2026, 2027, 5, 99, 0, 0, 2027, 2029, 5, 101, 0, 0, 2028, 2014, 1, 0, 0, 0, 2028, 2021, 1, 0, 0, 0, 2029, 174, 1, 0, 0, 0, 2030, 2031, 5, 78, 0, 0, 2031, 2032, 5, 77, 0, 0, 2032, 2037, 5, 76, 0, 0, 2033, 2034, 5, 110, 0, 0, 2034, 2035, 5, 109, 0, 0, 2035, 2037, 5, 108, 0, 0, 2036, 2030, 1, 0, 0, 0, 2036, 2033, 1, 0, 0, 0, 2037, 176, 1, 0, 0, 0, 2038, 2039, 5, 73, 0, 0, 2039, 2040, 5, 79, 0, 0, 2040, 2041, 5, 83, 0, 0, 2041, 2042, 5, 84, 0, 0, 2042, 2043, 5, 65, 0, 0, 2043, 2051, 5, 84, 0, 0, 2044, 2045, 5, 105, 0, 0, 2045, 2046, 5, 111, 0, 0, 2046, 2047, 5, 115, 0, 0, 2047, 2048, 5, 116, 0, 0, 2048, 2049, 5, 97, 0, 0, 2049, 2051, 5, 116, 0, 0, 2050, 2038, 1, 0, 0, 0, 2050, 2044, 1, 0, 0, 0, 2051, 178, 1, 0, 0, 0, 2052, 2053, 5, 70, 0, 0, 2053, 2054, 5, 79, 0, 0, 2054, 2055, 5, 82, 0, 0, 2055, 2056, 5, 77, 0, 0, 2056, 2057, 5, 65, 0, 0, 2057, 2065, 5, 84, 0, 0, 2058, 2059, 5, 102, 0, 0, 2059, 2060, 5, 111, 0, 0, 2060, 2061, 5, 114, 0, 0, 2061, 2062, 5, 109, 0, 0, 2062, 2063, 5, 97, 0, 0, 2063, 2065, 5, 116, 0, 0, 2064, 2052, 1, 0, 0, 0, 2064, 2058, 1, 0, 0, 0, 2065, 180, 1, 0, 0, 0, 2066, 2067, 5, 76, 0, 0, 2067, 2068, 5, 69, 0, 0, 2068, 2073, 5, 84, 0, 0, 2069, 2070, 5, 108, 0, 0, 2070, 2071, 5, 101, 0, 0, 2071, 2073, 5, 116, 0, 0, 2072, 2066, 1, 0, 0, 0, 2072, 2069, 1, 0, 0, 0, 2073, 182, 1, 0, 0, 0, 2074, 2075, 5, 67, 0, 0, 2075, 2076, 5, 65, 0, 0, 2076, 2077, 5, 76, 0, 0, 2077, 2083, 5, 76, 0, 0, 2078, 2079, 5, 99, 0, 0, 2079, 2080, 5, 97, 0, 0, 2080, 2081, 5, 108, 0, 0, 2081, 2083, 5, 108, 0, 0, 2082, 2074, 1, 0, 0, 0, 2082, 2078, 1, 0, 0, 0, 2083, 184, 1, 0, 0, 0, 2084, 2085, 5, 82, 0, 0, 2085, 2086, 5, 69, 0, 0, 2086, 2087, 5, 84, 0, 0, 2087, 2088, 5, 85, 0, 0, 2088, 2089, 5, 82, 0, 0, 2089, 2103, 5, 78, 0, 0, 2090, 2091, 5, 114, 0, 0, 2091, 2092, 5, 101, 0, 0, 2092, 2093, 5, 116, 0, 0, 2093, 2094, 5, 117, 0, 0, 2094, 2095, 5, 114, 0, 0, 2095, 2103, 5, 110, 0, 0, 2096, 2097, 5, 82, 0, 0, 2097, 2098, 5, 101, 0, 0, 2098, 2099, 5, 116, 0, 0, 2099, 2100, 5, 117, 0, 0, 2100, 2101, 5, 114, 0, 0, 2101, 2103, 5, 110, 0, 0, 2102, 2084, 1, 0, 0, 0, 2102, 2090, 1, 0, 0, 0, 2102, 2096, 1, 0, 0, 0, 2103, 186, 1, 0, 0, 0, 2104, 2105, 5, 67, 0, 0, 2105, 2106, 5, 76, 0, 0, 2106, 2107, 5, 79, 0, 0, 2107, 2108, 5, 83, 0, 0, 2108, 2115, 5, 69, 0, 0, 2109, 2110, 5, 99, 0, 0, 2110, 2111, 5, 108, 0, 0, 2111, 2112, 5, 111, 0, 0, 2112, 2113, 5, 115, 0, 0, 2113, 2115, 5, 101, 0, 0, 2114, 2104, 1, 0, 0, 0, 2114, 2109, 1, 0, 0, 0, 2115, 188, 1, 0, 0, 0, 2116, 2117, 5, 68, 0, 0, 2117, 2118, 5, 79, 0, 0, 2118, 2119, 5, 85, 0, 0, 2119, 2120, 5, 66, 0, 0, 2120, 2121, 5, 76, 0, 0, 2121, 2129, 5, 69, 0, 0, 2122, 2123, 5, 100, 0, 0, 2123, 2124, 5, 111, 0, 0, 2124, 2125, 5, 117, 0, 0, 2125, 2126, 5, 98, 0, 0, 2126, 2127, 5, 108, 0, 0, 2127, 2129, 5, 101, 0, 0, 2128, 2116, 1, 0, 0, 0, 2128, 2122, 1, 0, 0, 0, 2129, 190, 1, 0, 0, 0, 2130, 2131, 5, 73, 0, 0, 2131, 2132, 5, 79, 0, 0, 2132, 2133, 5, 83, 0, 0, 2133, 2134, 5, 84, 0, 0, 2134, 2135, 5, 65, 0, 0, 2135, 2136, 5, 82, 0, 0, 2136, 2145, 5, 84, 0, 0, 2137, 2138, 5, 105, 0, 0, 2138, 2139, 5, 111, 0, 0, 2139, 2140, 5, 115, 0, 0, 2140, 2141, 5, 116, 0, 0, 2141, 2142, 5, 97, 0, 0, 2142, 2143, 5, 114, 0, 0, 2143, 2145, 5, 116, 0, 0, 2144, 2130, 1, 0, 0, 0, 2144, 2137, 1, 0, 0, 0, 2145, 192, 1, 0, 0, 0, 2146, 2147, 5, 83, 0, 0, 2147, 2148, 5, 69, 0, 0, 2148, 2149, 5, 81, 0, 0, 2149, 2150, 5, 85, 0, 0, 2150, 2151, 5, 69, 0, 0, 2151, 2152, 5, 78, 0, 0, 2152, 2153, 5, 84, 0, 0, 2153, 2154, 5, 73, 0, 0, 2154, 2155, 5, 65, 0, 0, 2155, 2167, 5, 76, 0, 0, 2156, 2157, 5, 115, 0, 0, 2157, 2158, 5, 101, 0, 0, 2158, 2159, 5, 113, 0, 0, 2159, 2160, 5, 117, 0, 0, 2160, 2161, 5, 101, 0, 0, 2161, 2162, 5, 110, 0, 0, 2162, 2163, 5, 116, 0, 0, 2163, 2164, 5, 105, 0, 0, 2164, 2165, 5, 97, 0, 0, 2165, 2167, 5, 108, 0, 0, 2166, 2146, 1, 0, 0, 0, 2166, 2156, 1, 0, 0, 0, 2167, 194, 1, 0, 0, 0, 2168, 2169, 5, 76, 0, 0, 2169, 2170, 5, 65, 0, 0, 2170, 2171, 5, 66, 0, 0, 2171, 2172, 5, 69, 0, 0, 2172, 2179, 5, 76, 0, 0, 2173, 2174, 5, 108, 0, 0, 2174, 2175, 5, 97, 0, 0, 2175, 2176, 5, 98, 0, 0, 2176, 2177, 5, 101, 0, 0, 2177, 2179, 5, 108, 0, 0, 2178, 2168, 1, 0, 0, 0, 2178, 2173, 1, 0, 0, 0, 2179, 196, 1, 0, 0, 0, 2180, 2181, 5, 102, 0, 0, 2181, 2182, 5, 105, 0, 0, 2182, 2183, 5, 108, 0, 0, 2183, 2189, 5, 101, 0, 0, 2184, 2185, 5, 70, 0, 0, 2185, 2186, 5, 73, 0, 0, 2186, 2187, 5, 76, 0, 0, 2187, 2189, 5, 69, 0, 0, 2188, 2180, 1, 0, 0, 0, 2188, 2184, 1, 0, 0, 0, 2189, 198, 1, 0, 0, 0, 2190, 2191, 5, 83, 0, 0, 2191, 2192, 5, 84, 0, 0, 2192, 2193, 5, 65, 0, 0, 2193, 2194, 5, 84, 0, 0, 2194, 2195, 5, 85, 0, 0, 2195, 2203, 5, 83, 0, 0, 2196, 2197, 5, 115, 0, 0, 2197, 2198, 5, 116, 0, 0, 2198, 2199, 5, 97, 0, 0, 2199, 2200, 5, 116, 0, 0, 2200, 2201, 5, 117, 0, 0, 2201, 2203, 5, 115, 0, 0, 2202, 2190, 1, 0, 0, 0, 2202, 2196, 1, 0, 0, 0, 2203, 200, 1, 0, 0, 0, 2204, 2205, 5, 65, 0, 0, 2205, 2206, 5, 67, 0, 0, 2206, 2207, 5, 67, 0, 0, 2207, 2208, 5, 69, 0, 0, 2208, 2209, 5, 83, 0, 0, 2209, 2217, 5, 83, 0, 0, 2210, 2211, 5, 97, 0, 0, 2211, 2212, 5, 99, 0, 0, 2212, 2213, 5, 99, 0, 0, 2213, 2214, 5, 101, 0, 0, 2214, 2215, 5, 115, 0, 0, 2215, 2217, 5, 115, 0, 0, 2216, 2204, 1, 0, 0, 0, 2216, 2210, 1, 0, 0, 0, 2217, 202, 1, 0, 0, 0, 2218, 2219, 5, 80, 0, 0, 2219, 2220, 5, 79, 0, 0, 2220, 2221, 5, 83, 0, 0, 2221, 2222, 5, 73, 0, 0, 2222, 2223, 5, 84, 0, 0, 2223, 2224, 5, 73, 0, 0, 2224, 2225, 5, 79, 0, 0, 2225, 2235, 5, 78, 0, 0, 2226, 2227, 5, 112, 0, 0, 2227, 2228, 5, 111, 0, 0, 2228, 2229, 5, 115, 0, 0, 2229, 2230, 5, 105, 0, 0, 2230, 2231, 5, 116, 0, 0, 2231, 2232, 5, 105, 0, 0, 2232, 2233, 5, 111, 0, 0, 2233, 2235, 5, 110, 0, 0, 2234, 2218, 1, 0, 0, 0, 2234, 2226, 1, 0, 0, 0, 2235, 204, 1, 0, 0, 0, 2236, 2237, 5, 70, 0, 0, 2237, 2238, 5, 79, 0, 0, 2238, 2239, 5, 82, 0, 0, 2239, 2245, 5, 77, 0, 0, 2240, 2241, 5, 102, 0, 0, 2241, 2242, 5, 111, 0, 0, 2242, 2243, 5, 114, 0, 0, 2243, 2245, 5, 109, 0, 0, 2244, 2236, 1, 0, 0, 0, 2244, 2240, 1, 0, 0, 0, 2245, 206, 1, 0, 0, 0, 2246, 2247, 5, 82, 0, 0, 2247, 2248, 5, 69, 0, 0, 2248, 2249, 5, 67, 0, 0, 2249, 2255, 5, 76, 0, 0, 2250, 2251, 5, 114, 0, 0, 2251, 2252, 5, 101, 0, 0, 2252, 2253, 5, 99, 0, 0, 2253, 2255, 5, 108, 0, 0, 2254, 2246, 1, 0, 0, 0, 2254, 2250, 1, 0, 0, 0, 2255, 208, 1, 0, 0, 0, 2256, 2257, 5, 69, 0, 0, 2257, 2258, 5, 88, 0, 0, 2258, 2259, 5, 73, 0, 0, 2259, 2260, 5, 83, 0, 0, 2260, 2267, 5, 84, 0, 0, 2261, 2262, 5, 101, 0, 0, 2262, 2263, 5, 120, 0, 0, 2263, 2264, 5, 105, 0, 0, 2264, 2265, 5, 115, 0, 0, 2265, 2267, 5, 116, 0, 0, 2266, 2256, 1, 0, 0, 0, 2266, 2261, 1, 0, 0, 0, 2267, 210, 1, 0, 0, 0, 2268, 2269, 5, 79, 0, 0, 2269, 2270, 5, 80, 0, 0, 2270, 2271, 5, 69, 0, 0, 2271, 2272, 5, 78, 0, 0, 2272, 2273, 5, 69, 0, 0, 2273, 2281, 5, 68, 0, 0, 2274, 2275, 5, 111, 0, 0, 2275, 2276, 5, 112, 0, 0, 2276, 2277, 5, 101, 0, 0, 2277, 2278, 5, 110, 0, 0, 2278, 2279, 5, 101, 0, 0, 2279, 2281, 5, 100, 0, 0, 2280, 2268, 1, 0, 0, 0, 2280, 2274, 1, 0, 0, 0, 2281, 212, 1, 0, 0, 0, 2282, 2283, 5, 78, 0, 0, 2283, 2284, 5, 85, 0, 0, 2284, 2285, 5, 77, 0, 0, 2285, 2286, 5, 66, 0, 0, 2286, 2287, 5, 69, 0, 0, 2287, 2295, 5, 82, 0, 0, 2288, 2289, 5, 110, 0, 0, 2289, 2290, 5, 117, 0, 0, 2290, 2291, 5, 109, 0, 0, 2291, 2292, 5, 98, 0, 0, 2292, 2293, 5, 101, 0, 0, 2293, 2295, 5, 114, 0, 0, 2294, 2282, 1, 0, 0, 0, 2294, 2288, 1, 0, 0, 0, 2295, 214, 1, 0, 0, 0, 2296, 2297, 5, 78, 0, 0, 2297, 2298, 5, 65, 0, 0, 2298, 2299, 5, 77, 0, 0, 2299, 2300, 5, 69, 0, 0, 2300, 2307, 5, 68, 0, 0, 2301, 2302, 5, 110, 0, 0, 2302, 2303, 5, 97, 0, 0, 2303, 2304, 5, 109, 0, 0, 2304, 2305, 5, 101, 0, 0, 2305, 2307, 5, 100, 0, 0, 2306, 2296, 1, 0, 0, 0, 2306, 2301, 1, 0, 0, 0, 2307, 216, 1, 0, 0, 0, 2308, 2309, 5, 78, 0, 0, 2309, 2310, 5, 65, 0, 0, 2310, 2311, 5, 77, 0, 0, 2311, 2317, 5, 69, 0, 0, 2312, 2313, 5, 110, 0, 0, 2313, 2314, 5, 97, 0, 0, 2314, 2315, 5, 109, 0, 0, 2315, 2317, 5, 101, 0, 0, 2316, 2308, 1, 0, 0, 0, 2316, 2312, 1, 0, 0, 0, 2317, 218, 1, 0, 0, 0, 2318, 2319, 5, 70, 0, 0, 2319, 2320, 5, 79, 0, 0, 2320, 2321, 5, 82, 0, 0, 2321, 2322, 5, 77, 0, 0, 2322, 2323, 5, 65, 0, 0, 2323, 2324, 5, 84, 0, 0, 2324, 2325, 5, 84, 0, 0, 2325, 2326, 5, 69, 0, 0, 2326, 2337, 5, 68, 0, 0, 2327, 2328, 5, 102, 0, 0, 2328, 2329, 5, 111, 0, 0, 2329, 2330, 5, 114, 0, 0, 2330, 2331, 5, 109, 0, 0, 2331, 2332, 5, 97, 0, 0, 2332, 2333, 5, 116, 0, 0, 2333, 2334, 5, 116, 0, 0, 2334, 2335, 5, 101, 0, 0, 2335, 2337, 5, 100, 0, 0, 2336, 2318, 1, 0, 0, 0, 2336, 2327, 1, 0, 0, 0, 2337, 220, 1, 0, 0, 0, 2338, 2339, 5, 85, 0, 0, 2339, 2340, 5, 78, 0, 0, 2340, 2341, 5, 70, 0, 0, 2341, 2342, 5, 79, 0, 0, 2342, 2343, 5, 82, 0, 0, 2343, 2344, 5, 77, 0, 0, 2344, 2345, 5, 65, 0, 0, 2345, 2346, 5, 84, 0, 0, 2346, 2347, 5, 84, 0, 0, 2347, 2348, 5, 69, 0, 0, 2348, 2361, 5, 68, 0, 0, 2349, 2350, 5, 117, 0, 0, 2350, 2351, 5, 110, 0, 0, 2351, 2352, 5, 102, 0, 0, 2352, 2353, 5, 111, 0, 0, 2353, 2354, 5, 114, 0, 0, 2354, 2355, 5, 109, 0, 0, 2355, 2356, 5, 97, 0, 0, 2356, 2357, 5, 116, 0, 0, 2357, 2358, 5, 116, 0, 0, 2358, 2359, 5, 101, 0, 0, 2359, 2361, 5, 100, 0, 0, 2360, 2338, 1, 0, 0, 0, 2360, 2349, 1, 0, 0, 0, 2361, 222, 1, 0, 0, 0, 2362, 2363, 5, 78, 0, 0, 2363, 2364, 5, 69, 0, 0, 2364, 2365, 5, 88, 0, 0, 2365, 2366, 5, 84, 0, 0, 2366, 2367, 5, 82, 0, 0, 2367, 2368, 5, 69, 0, 0, 2368, 2377, 5, 67, 0, 0, 2369, 2370, 5, 110, 0, 0, 2370, 2371, 5, 101, 0, 0, 2371, 2372, 5, 120, 0, 0, 2372, 2373, 5, 116, 0, 0, 2373, 2374, 5, 114, 0, 0, 2374, 2375, 5, 101, 0, 0, 2375, 2377, 5, 99, 0, 0, 2376, 2362, 1, 0, 0, 0, 2376, 2369, 1, 0, 0, 0, 2377, 224, 1, 0, 0, 0, 2378, 2379, 5, 73, 0, 0, 2379, 2380, 5, 78, 0, 0, 2380, 2381, 5, 81, 0, 0, 2381, 2382, 5, 85, 0, 0, 2382, 2383, 5, 73, 0, 0, 2383, 2384, 5, 82, 0, 0, 2384, 2393, 5, 69, 0, 0, 2385, 2386, 5, 105, 0, 0, 2386, 2387, 5, 110, 0, 0, 2387, 2388, 5, 113, 0, 0, 2388, 2389, 5, 117, 0, 0, 2389, 2390, 5, 105, 0, 0, 2390, 2391, 5, 114, 0, 0, 2391, 2393, 5, 101, 0, 0, 2392, 2378, 1, 0, 0, 0, 2392, 2385, 1, 0, 0, 0, 2393, 226, 1, 0, 0, 0, 2394, 2395, 5, 66, 0, 0, 2395, 2396, 5, 65, 0, 0, 2396, 2397, 5, 67, 0, 0, 2397, 2398, 5, 75, 0, 0, 2398, 2399, 5, 83, 0, 0, 2399, 2400, 5, 80, 0, 0, 2400, 2401, 5, 65, 0, 0, 2401, 2402, 5, 67, 0, 0, 2402, 2413, 5, 69, 0, 0, 2403, 2404, 5, 98, 0, 0, 2404, 2405, 5, 97, 0, 0, 2405, 2406, 5, 99, 0, 0, 2406, 2407, 5, 107, 0, 0, 2407, 2408, 5, 115, 0, 0, 2408, 2409, 5, 112, 0, 0, 2409, 2410, 5, 97, 0, 0, 2410, 2411, 5, 99, 0, 0, 2411, 2413, 5, 101, 0, 0, 2412, 2394, 1, 0, 0, 0, 2412, 2403, 1, 0, 0, 0, 2413, 228, 1, 0, 0, 0, 2414, 2415, 5, 69, 0, 0, 2415, 2416, 5, 78, 0, 0, 2416, 2417, 5, 68, 0, 0, 2417, 2418, 5, 70, 0, 0, 2418, 2419, 5, 73, 0, 0, 2419, 2420, 5, 76, 0, 0, 2420, 2429, 5, 69, 0, 0, 2421, 2422, 5, 101, 0, 0, 2422, 2423, 5, 110, 0, 0, 2423, 2424, 5, 100, 0, 0, 2424, 2425, 5, 102, 0, 0, 2425, 2426, 5, 105, 0, 0, 2426, 2427, 5, 108, 0, 0, 2427, 2429, 5, 101, 0, 0, 2428, 2414, 1, 0, 0, 0, 2428, 2421, 1, 0, 0, 0, 2429, 230, 1, 0, 0, 0, 2430, 2431, 5, 82, 0, 0, 2431, 2432, 5, 69, 0, 0, 2432, 2433, 5, 87, 0, 0, 2433, 2434, 5, 73, 0, 0, 2434, 2435, 5, 78, 0, 0, 2435, 2443, 5, 68, 0, 0, 2436, 2437, 5, 114, 0, 0, 2437, 2438, 5, 101, 0, 0, 2438, 2439, 5, 119, 0, 0, 2439, 2440, 5, 105, 0, 0, 2440, 2441, 5, 110, 0, 0, 2441, 2443, 5, 100, 0, 0, 2442, 2430, 1, 0, 0, 0, 2442, 2436, 1, 0, 0, 0, 2443, 232, 1, 0, 0, 0, 2444, 2445, 5, 101, 0, 0, 2445, 2446, 5, 110, 0, 0, 2446, 2447, 5, 100, 0, 0, 2447, 2448, 5, 98, 0, 0, 2448, 2449, 5, 108, 0, 0, 2449, 2450, 5, 111, 0, 0, 2450, 2451, 5, 99, 0, 0, 2451, 2452, 5, 107, 0, 0, 2452, 2453, 5, 100, 0, 0, 2453, 2454, 5, 97, 0, 0, 2454, 2455, 5, 116, 0, 0, 2455, 2469, 5, 97, 0, 0, 2456, 2457, 5, 69, 0, 0, 2457, 2458, 5, 78, 0, 0, 2458, 2459, 5, 68, 0, 0, 2459, 2460, 5, 66, 0, 0, 2460, 2461, 5, 76, 0, 0, 2461, 2462, 5, 79, 0, 0, 2462, 2463, 5, 67, 0, 0, 2463, 2464, 5, 75, 0, 0, 2464, 2465, 5, 68, 0, 0, 2465, 2466, 5, 65, 0, 0, 2466, 2467, 5, 84, 0, 0, 2467, 2469, 5, 65, 0, 0, 2468, 2444, 1, 0, 0, 0, 2468, 2456, 1, 0, 0, 0, 2469, 234, 1, 0, 0, 0, 2470, 2471, 5, 69, 0, 0, 2471, 2472, 5, 78, 0, 0, 2472, 2473, 5, 68, 0, 0, 2473, 2474, 5, 66, 0, 0, 2474, 2475, 5, 76, 0, 0, 2475, 2476, 5, 79, 0, 0, 2476, 2477, 5, 67, 0, 0, 2477, 2487, 5, 75, 0, 0, 2478, 2479, 5, 101, 0, 0, 2479, 2480, 5, 110, 0, 0, 2480, 2481, 5, 100, 0, 0, 2481, 2482, 5, 98, 0, 0, 2482, 2483, 5, 108, 0, 0, 2483, 2484, 5, 111, 0, 0, 2484, 2485, 5, 99, 0, 0, 2485, 2487, 5, 107, 0, 0, 2486, 2470, 1, 0, 0, 0, 2486, 2478, 1, 0, 0, 0, 2487, 236, 1, 0, 0, 0, 2488, 2489, 5, 13, 0, 0, 2489, 2492, 5, 10, 0, 0, 2490, 2492, 7, 1, 0, 0, 2491, 2488, 1, 0, 0, 0, 2491, 2490, 1, 0, 0, 0, 2492, 238, 1, 0, 0, 0, 2493, 2494, 5, 75, 0, 0, 2494, 2495, 5, 73, 0, 0, 2495, 2496, 5, 78, 0, 0, 2496, 2502, 5, 68, 0, 0, 2497, 2498, 5, 107, 0, 0, 2498, 2499, 5, 105, 0, 0, 2499, 2500, 5, 110, 0, 0, 2500, 2502, 5, 100, 0, 0, 2501, 2493, 1, 0, 0, 0, 2501, 2497, 1, 0, 0, 0, 2502, 240, 1, 0, 0, 0, 2503, 2504, 5, 76, 0, 0, 2504, 2505, 5, 69, 0, 0, 2505, 2510, 5, 78, 0, 0, 2506, 2507, 5, 108, 0, 0, 2507, 2508, 5, 101, 0, 0, 2508, 2510, 5, 110, 0, 0, 2509, 2503, 1, 0, 0, 0, 2509, 2506, 1, 0, 0, 0, 2510, 242, 1, 0, 0, 0, 2511, 2514, 7, 2, 0, 0, 2512, 2514, 3, 237, 118, 0, 2513, 2511, 1, 0, 0, 0, 2513, 2512, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2513, 1, 0, 0, 0, 2515, 2516, 1, 0, 0, 0, 2516, 2517, 1, 0, 0, 0, 2517, 2518, 6, 121, 0, 0, 2518, 244, 1, 0, 0, 0, 2519, 2521, 5, 9, 0, 0, 2520, 2519, 1, 0, 0, 0, 2521, 2524, 1, 0, 0, 0, 2522, 2520, 1, 0, 0, 0, 2522, 2523, 1, 0, 0, 0, 2523, 2528, 1, 0, 0, 0, 2524, 2522, 1, 0, 0, 0, 2525, 2527, 5, 32, 0, 0, 2526, 2525, 1, 0, 0, 0, 2527, 2530, 1, 0, 0, 0, 2528, 2526, 1, 0, 0, 0, 2528, 2529, 1, 0, 0, 0, 2529, 2531, 1, 0, 0, 0, 2530, 2528, 1, 0, 0, 0, 2531, 2535, 5, 33, 0, 0, 2532, 2534, 8, 3, 0, 0, 2533, 2532, 1, 0, 0, 0, 2534, 2537, 1, 0, 0, 0, 2535, 2533, 1, 0, 0, 0, 2535, 2536, 1, 0, 0, 0, 2536, 2541, 1, 0, 0, 0, 2537, 2535, 1, 0, 0, 0, 2538, 2540, 7, 3, 0, 0, 2539, 2538, 1, 0, 0, 0, 2540, 2543, 1, 0, 0, 0, 2541, 2539, 1, 0, 0, 0, 2541, 2542, 1, 0, 0, 0, 2542, 2559, 1, 0, 0, 0, 2543, 2541, 1, 0, 0, 0, 2544, 2545, 4, 122, 0, 0, 2545, 2549, 7, 4, 0, 0, 2546, 2548, 8, 3, 0, 0, 2547, 2546, 1, 0, 0, 0, 2548, 2551, 1, 0, 0, 0, 2549, 2547, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2555, 1, 0, 0, 0, 2551, 2549, 1, 0, 0, 0, 2552, 2554, 7, 3, 0, 0, 2553, 2552, 1, 0, 0, 0, 2554, 2557, 1, 0, 0, 0, 2555, 2553, 1, 0, 0, 0, 2555, 2556, 1, 0, 0, 0, 2556, 2559, 1, 0, 0, 0, 2557, 2555, 1, 0, 0, 0, 2558, 2522, 1, 0, 0, 0, 2558, 2544, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2561, 6, 122, 0, 0, 2561, 246, 1, 0, 0, 0, 2562, 2563, 5, 36, 0, 0, 2563, 248, 1, 0, 0, 0, 2564, 2565, 5, 44, 0, 0, 2565, 250, 1, 0, 0, 0, 2566, 2567, 5, 40, 0, 0, 2567, 252, 1, 0, 0, 0, 2568, 2569, 5, 37, 0, 0, 2569, 254, 1, 0, 0, 0, 2570, 2571, 5, 119, 0, 0, 2571, 2572, 5, 104, 0, 0, 2572, 2573, 5, 105, 0, 0, 2573, 2574, 5, 108, 0, 0, 2574, 2581, 5, 101, 0, 0, 2575, 2576, 5, 87, 0, 0, 2576, 2577, 5, 72, 0, 0, 2577, 2578, 5, 73, 0, 0, 2578, 2579, 5, 76, 0, 0, 2579, 2581, 5, 69, 0, 0, 2580, 2570, 1, 0, 0, 0, 2580, 2575, 1, 0, 0, 0, 2581, 256, 1, 0, 0, 0, 2582, 2583, 5, 65, 0, 0, 2583, 2584, 5, 76, 0, 0, 2584, 2585, 5, 76, 0, 0, 2585, 2586, 5, 79, 0, 0, 2586, 2587, 5, 67, 0, 0, 2587, 2588, 5, 65, 0, 0, 2588, 2589, 5, 84, 0, 0, 2589, 2599, 5, 69, 0, 0, 2590, 2591, 5, 97, 0, 0, 2591, 2592, 5, 108, 0, 0, 2592, 2593, 5, 108, 0, 0, 2593, 2594, 5, 111, 0, 0, 2594, 2595, 5, 99, 0, 0, 2595, 2596, 5, 97, 0, 0, 2596, 2597, 5, 116, 0, 0, 2597, 2599, 5, 101, 0, 0, 2598, 2582, 1, 0, 0, 0, 2598, 2590, 1, 0, 0, 0, 2599, 258, 1, 0, 0, 0, 2600, 2601, 5, 83, 0, 0, 2601, 2602, 5, 84, 0, 0, 2602, 2603, 5, 65, 0, 0, 2603, 2609, 5, 84, 0, 0, 2604, 2605, 5, 115, 0, 0, 2605, 2606, 5, 116, 0, 0, 2606, 2607, 5, 97, 0, 0, 2607, 2609, 5, 116, 0, 0, 2608, 2600, 1, 0, 0, 0, 2608, 2604, 1, 0, 0, 0, 2609, 260, 1, 0, 0, 0, 2610, 2611, 5, 41, 0, 0, 2611, 262, 1, 0, 0, 0, 2612, 2613, 5, 58, 0, 0, 2613, 264, 1, 0, 0, 0, 2614, 2615, 5, 61, 0, 0, 2615, 266, 1, 0, 0, 0, 2616, 2617, 5, 45, 0, 0, 2617, 268, 1, 0, 0, 0, 2618, 2619, 5, 43, 0, 0, 2619, 270, 1, 0, 0, 0, 2620, 2621, 5, 47, 0, 0, 2621, 272, 1, 0, 0, 0, 2622, 2623, 5, 42, 0, 0, 2623, 274, 1, 0, 0, 0, 2624, 2625, 7, 5, 0, 0, 2625, 276, 1, 0, 0, 0, 2626, 2627, 5, 42, 0, 0, 2627, 2628, 5, 42, 0, 0, 2628, 278, 1, 0, 0, 0, 2629, 2630, 5, 46, 0, 0, 2630, 2631, 5, 110, 0, 0, 2631, 2632, 5, 111, 0, 0, 2632, 2633, 5, 116, 0, 0, 2633, 2640, 5, 46, 0, 0, 2634, 2635, 5, 46, 0, 0, 2635, 2636, 5, 78, 0, 0, 2636, 2637, 5, 79, 0, 0, 2637, 2638, 5, 84, 0, 0, 2638, 2640, 5, 46, 0, 0, 2639, 2629, 1, 0, 0, 0, 2639, 2634, 1, 0, 0, 0, 2640, 280, 1, 0, 0, 0, 2641, 2642, 5, 46, 0, 0, 2642, 2643, 5, 97, 0, 0, 2643, 2644, 5, 110, 0, 0, 2644, 2645, 5, 100, 0, 0, 2645, 2652, 5, 46, 0, 0, 2646, 2647, 5, 46, 0, 0, 2647, 2648, 5, 65, 0, 0, 2648, 2649, 5, 78, 0, 0, 2649, 2650, 5, 68, 0, 0, 2650, 2652, 5, 46, 0, 0, 2651, 2641, 1, 0, 0, 0, 2651, 2646, 1, 0, 0, 0, 2652, 282, 1, 0, 0, 0, 2653, 2654, 5, 46, 0, 0, 2654, 2655, 5, 111, 0, 0, 2655, 2656, 5, 114, 0, 0, 2656, 2662, 5, 46, 0, 0, 2657, 2658, 5, 46, 0, 0, 2658, 2659, 5, 79, 0, 0, 2659, 2660, 5, 82, 0, 0, 2660, 2662, 5, 46, 0, 0, 2661, 2653, 1, 0, 0, 0, 2661, 2657, 1, 0, 0, 0, 2662, 284, 1, 0, 0, 0, 2663, 2664, 5, 46, 0, 0, 2664, 2665, 5, 101, 0, 0, 2665, 2666, 5, 113, 0, 0, 2666, 2667, 5, 118, 0, 0, 2667, 2674, 5, 46, 0, 0, 2668, 2669, 5, 46, 0, 0, 2669, 2670, 5, 69, 0, 0, 2670, 2671, 5, 81, 0, 0, 2671, 2672, 5, 86, 0, 0, 2672, 2674, 5, 46, 0, 0, 2673, 2663, 1, 0, 0, 0, 2673, 2668, 1, 0, 0, 0, 2674, 286, 1, 0, 0, 0, 2675, 2676, 5, 46, 0, 0, 2676, 2677, 5, 110, 0, 0, 2677, 2678, 5, 101, 0, 0, 2678, 2679, 5, 113, 0, 0, 2679, 2680, 5, 118, 0, 0, 2680, 2688, 5, 46, 0, 0, 2681, 2682, 5, 46, 0, 0, 2682, 2683, 5, 78, 0, 0, 2683, 2684, 5, 69, 0, 0, 2684, 2685, 5, 81, 0, 0, 2685, 2686, 5, 86, 0, 0, 2686, 2688, 5, 46, 0, 0, 2687, 2675, 1, 0, 0, 0, 2687, 2681, 1, 0, 0, 0, 2688, 288, 1, 0, 0, 0, 2689, 2690, 5, 46, 0, 0, 2690, 2691, 5, 120, 0, 0, 2691, 2692, 5, 111, 0, 0, 2692, 2693, 5, 114, 0, 0, 2693, 2700, 5, 46, 0, 0, 2694, 2695, 5, 46, 0, 0, 2695, 2696, 5, 88, 0, 0, 2696, 2697, 5, 79, 0, 0, 2697, 2698, 5, 82, 0, 0, 2698, 2700, 5, 46, 0, 0, 2699, 2689, 1, 0, 0, 0, 2699, 2694, 1, 0, 0, 0, 2700, 290, 1, 0, 0, 0, 2701, 2702, 5, 46, 0, 0, 2702, 2703, 5, 101, 0, 0, 2703, 2704, 5, 111, 0, 0, 2704, 2705, 5, 114, 0, 0, 2705, 2712, 5, 46, 0, 0, 2706, 2707, 5, 46, 0, 0, 2707, 2708, 5, 69, 0, 0, 2708, 2709, 5, 79, 0, 0, 2709, 2710, 5, 82, 0, 0, 2710, 2712, 5, 46, 0, 0, 2711, 2701, 1, 0, 0, 0, 2711, 2706, 1, 0, 0, 0, 2712, 292, 1, 0, 0, 0, 2713, 2714, 5, 46, 0, 0, 2714, 2715, 5, 108, 0, 0, 2715, 2716, 5, 116, 0, 0, 2716, 2722, 5, 46, 0, 0, 2717, 2718, 5, 46, 0, 0, 2718, 2719, 5, 76, 0, 0, 2719, 2720, 5, 84, 0, 0, 2720, 2722, 5, 46, 0, 0, 2721, 2713, 1, 0, 0, 0, 2721, 2717, 1, 0, 0, 0, 2722, 294, 1, 0, 0, 0, 2723, 2724, 5, 46, 0, 0, 2724, 2725, 5, 108, 0, 0, 2725, 2726, 5, 101, 0, 0, 2726, 2732, 5, 46, 0, 0, 2727, 2728, 5, 46, 0, 0, 2728, 2729, 5, 76, 0, 0, 2729, 2730, 5, 69, 0, 0, 2730, 2732, 5, 46, 0, 0, 2731, 2723, 1, 0, 0, 0, 2731, 2727, 1, 0, 0, 0, 2732, 296, 1, 0, 0, 0, 2733, 2734, 5, 46, 0, 0, 2734, 2735, 5, 103, 0, 0, 2735, 2736, 5, 116, 0, 0, 2736, 2742, 5, 46, 0, 0, 2737, 2738, 5, 46, 0, 0, 2738, 2739, 5, 71, 0, 0, 2739, 2740, 5, 84, 0, 0, 2740, 2742, 5, 46, 0, 0, 2741, 2733, 1, 0, 0, 0, 2741, 2737, 1, 0, 0, 0, 2742, 298, 1, 0, 0, 0, 2743, 2744, 5, 46, 0, 0, 2744, 2745, 5, 103, 0, 0, 2745, 2746, 5, 101, 0, 0, 2746, 2752, 5, 46, 0, 0, 2747, 2748, 5, 46, 0, 0, 2748, 2749, 5, 71, 0, 0, 2749, 2750, 5, 69, 0, 0, 2750, 2752, 5, 46, 0, 0, 2751, 2743, 1, 0, 0, 0, 2751, 2747, 1, 0, 0, 0, 2752, 300, 1, 0, 0, 0, 2753, 2754, 5, 46, 0, 0, 2754, 2755, 5, 110, 0, 0, 2755, 2756, 5, 101, 0, 0, 2756, 2762, 5, 46, 0, 0, 2757, 2758, 5, 46, 0, 0, 2758, 2759, 5, 78, 0, 0, 2759, 2760, 5, 69, 0, 0, 2760, 2762, 5, 46, 0, 0, 2761, 2753, 1, 0, 0, 0, 2761, 2757, 1, 0, 0, 0, 2762, 302, 1, 0, 0, 0, 2763, 2764, 5, 46, 0, 0, 2764, 2765, 5, 101, 0, 0, 2765, 2766, 5, 113, 0, 0, 2766, 2772, 5, 46, 0, 0, 2767, 2768, 5, 46, 0, 0, 2768, 2769, 5, 69, 0, 0, 2769, 2770, 5, 81, 0, 0, 2770, 2772, 5, 46, 0, 0, 2771, 2763, 1, 0, 0, 0, 2771, 2767, 1, 0, 0, 0, 2772, 304, 1, 0, 0, 0, 2773, 2774, 5, 46, 0, 0, 2774, 2775, 5, 116, 0, 0, 2775, 2776, 5, 114, 0, 0, 2776, 2777, 5, 117, 0, 0, 2777, 2778, 5, 101, 0, 0, 2778, 2786, 5, 46, 0, 0, 2779, 2780, 5, 46, 0, 0, 2780, 2781, 5, 84, 0, 0, 2781, 2782, 5, 82, 0, 0, 2782, 2783, 5, 85, 0, 0, 2783, 2784, 5, 69, 0, 0, 2784, 2786, 5, 46, 0, 0, 2785, 2773, 1, 0, 0, 0, 2785, 2779, 1, 0, 0, 0, 2786, 306, 1, 0, 0, 0, 2787, 2788, 5, 46, 0, 0, 2788, 2789, 5, 102, 0, 0, 2789, 2790, 5, 97, 0, 0, 2790, 2791, 5, 108, 0, 0, 2791, 2792, 5, 115, 0, 0, 2792, 2793, 5, 101, 0, 0, 2793, 2802, 5, 46, 0, 0, 2794, 2795, 5, 46, 0, 0, 2795, 2796, 5, 70, 0, 0, 2796, 2797, 5, 65, 0, 0, 2797, 2798, 5, 76, 0, 0, 2798, 2799, 5, 83, 0, 0, 2799, 2800, 5, 69, 0, 0, 2800, 2802, 5, 46, 0, 0, 2801, 2787, 1, 0, 0, 0, 2801, 2794, 1, 0, 0, 0, 2802, 308, 1, 0, 0, 0, 2803, 2805, 3, 419, 209, 0, 2804, 2803, 1, 0, 0, 0, 2805, 2806, 1, 0, 0, 0, 2806, 2804, 1, 0, 0, 0, 2806, 2807, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 2809, 7, 6, 0, 0, 2809, 310, 1, 0, 0, 0, 2810, 2812, 7, 7, 0, 0, 2811, 2810, 1, 0, 0, 0, 2811, 2812, 1, 0, 0, 0, 2812, 2814, 1, 0, 0, 0, 2813, 2815, 3, 419, 209, 0, 2814, 2813, 1, 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 2814, 1, 0, 0, 0, 2816, 2817, 1, 0, 0, 0, 2817, 2818, 1, 0, 0, 0, 2818, 2819, 7, 8, 0, 0, 2819, 312, 1, 0, 0, 0, 2820, 2825, 7, 9, 0, 0, 2821, 2822, 7, 10, 0, 0, 2822, 2825, 7, 11, 0, 0, 2823, 2825, 7, 12, 0, 0, 2824, 2820, 1, 0, 0, 0, 2824, 2821, 1, 0, 0, 0, 2824, 2823, 1, 0, 0, 0, 2825, 2832, 1, 0, 0, 0, 2826, 2828, 3, 419, 209, 0, 2827, 2826, 1, 0, 0, 0, 2828, 2829, 1, 0, 0, 0, 2829, 2827, 1, 0, 0, 0, 2829, 2830, 1, 0, 0, 0, 2830, 2833, 1, 0, 0, 0, 2831, 2833, 5, 42, 0, 0, 2832, 2827, 1, 0, 0, 0, 2832, 2831, 1, 0, 0, 0, 2833, 2834, 1, 0, 0, 0, 2834, 2836, 5, 46, 0, 0, 2835, 2837, 3, 419, 209, 0, 2836, 2835, 1, 0, 0, 0, 2837, 2838, 1, 0, 0, 0, 2838, 2836, 1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 2846, 1, 0, 0, 0, 2840, 2842, 7, 13, 0, 0, 2841, 2843, 3, 419, 209, 0, 2842, 2841, 1, 0, 0, 0, 2843, 2844, 1, 0, 0, 0, 2844, 2842, 1, 0, 0, 0, 2844, 2845, 1, 0, 0, 0, 2845, 2847, 1, 0, 0, 0, 2846, 2840, 1, 0, 0, 0, 2846, 2847, 1, 0, 0, 0, 2847, 314, 1, 0, 0, 0, 2848, 2849, 5, 67, 0, 0, 2849, 2850, 5, 67, 0, 0, 2850, 2851, 5, 79, 0, 0, 2851, 2852, 5, 78, 0, 0, 2852, 316, 1, 0, 0, 0, 2853, 2854, 5, 72, 0, 0, 2854, 2855, 5, 79, 0, 0, 2855, 2856, 5, 76, 0, 0, 2856, 2857, 5, 76, 0, 0, 2857, 2858, 5, 69, 0, 0, 2858, 2859, 5, 82, 0, 0, 2859, 2860, 5, 73, 0, 0, 2860, 2861, 5, 84, 0, 0, 2861, 2862, 5, 72, 0, 0, 2862, 318, 1, 0, 0, 0, 2863, 2864, 5, 67, 0, 0, 2864, 2865, 5, 79, 0, 0, 2865, 2866, 5, 78, 0, 0, 2866, 2867, 5, 67, 0, 0, 2867, 2868, 5, 65, 0, 0, 2868, 2869, 5, 84, 0, 0, 2869, 2870, 5, 79, 0, 0, 2870, 2871, 5, 80, 0, 0, 2871, 320, 1, 0, 0, 0, 2872, 2873, 5, 67, 0, 0, 2873, 2874, 5, 84, 0, 0, 2874, 2875, 5, 82, 0, 0, 2875, 2876, 5, 76, 0, 0, 2876, 2877, 5, 68, 0, 0, 2877, 2878, 5, 73, 0, 0, 2878, 2879, 5, 82, 0, 0, 2879, 2880, 5, 69, 0, 0, 2880, 2881, 5, 67, 0, 0, 2881, 2882, 5, 84, 0, 0, 2882, 322, 1, 0, 0, 0, 2883, 2884, 5, 67, 0, 0, 2884, 2885, 5, 84, 0, 0, 2885, 2886, 5, 82, 0, 0, 2886, 2887, 5, 76, 0, 0, 2887, 2888, 5, 82, 0, 0, 2888, 2889, 5, 69, 0, 0, 2889, 2890, 5, 67, 0, 0, 2890, 324, 1, 0, 0, 0, 2891, 2892, 5, 84, 0, 0, 2892, 2893, 5, 79, 0, 0, 2893, 326, 1, 0, 0, 0, 2894, 2895, 5, 83, 0, 0, 2895, 2896, 5, 85, 0, 0, 2896, 2897, 5, 66, 0, 0, 2897, 2898, 5, 80, 0, 0, 2898, 2899, 5, 82, 0, 0, 2899, 2900, 5, 79, 0, 0, 2900, 2901, 5, 71, 0, 0, 2901, 2902, 5, 82, 0, 0, 2902, 2903, 5, 65, 0, 0, 2903, 2904, 5, 77, 0, 0, 2904, 2905, 5, 66, 0, 0, 2905, 2906, 5, 76, 0, 0, 2906, 2907, 5, 79, 0, 0, 2907, 2908, 5, 67, 0, 0, 2908, 2909, 5, 75, 0, 0, 2909, 328, 1, 0, 0, 0, 2910, 2911, 5, 68, 0, 0, 2911, 2912, 5, 79, 0, 0, 2912, 2913, 5, 66, 0, 0, 2913, 2914, 5, 76, 0, 0, 2914, 2915, 5, 79, 0, 0, 2915, 2916, 5, 67, 0, 0, 2916, 2917, 5, 75, 0, 0, 2917, 330, 1, 0, 0, 0, 2918, 2919, 5, 65, 0, 0, 2919, 2920, 5, 73, 0, 0, 2920, 2921, 5, 70, 0, 0, 2921, 332, 1, 0, 0, 0, 2922, 2923, 5, 84, 0, 0, 2923, 2924, 5, 72, 0, 0, 2924, 2925, 5, 69, 0, 0, 2925, 2926, 5, 78, 0, 0, 2926, 2927, 5, 66, 0, 0, 2927, 2928, 5, 76, 0, 0, 2928, 2929, 5, 79, 0, 0, 2929, 2930, 5, 67, 0, 0, 2930, 2931, 5, 75, 0, 0, 2931, 334, 1, 0, 0, 0, 2932, 2933, 5, 69, 0, 0, 2933, 2934, 5, 76, 0, 0, 2934, 2935, 5, 83, 0, 0, 2935, 2936, 5, 69, 0, 0, 2936, 2937, 5, 66, 0, 0, 2937, 2938, 5, 76, 0, 0, 2938, 2939, 5, 79, 0, 0, 2939, 2940, 5, 67, 0, 0, 2940, 2941, 5, 75, 0, 0, 2941, 336, 1, 0, 0, 0, 2942, 2943, 5, 67, 0, 0, 2943, 2944, 5, 79, 0, 0, 2944, 2945, 5, 68, 0, 0, 2945, 2946, 5, 69, 0, 0, 2946, 2947, 5, 82, 0, 0, 2947, 2948, 5, 79, 0, 0, 2948, 2949, 5, 79, 0, 0, 2949, 2950, 5, 84, 0, 0, 2950, 338, 1, 0, 0, 0, 2951, 2952, 5, 67, 0, 0, 2952, 2953, 5, 79, 0, 0, 2953, 2954, 5, 77, 0, 0, 2954, 2955, 5, 80, 0, 0, 2955, 2956, 5, 76, 0, 0, 2956, 2957, 5, 69, 0, 0, 2957, 2966, 5, 88, 0, 0, 2958, 2959, 5, 99, 0, 0, 2959, 2960, 5, 111, 0, 0, 2960, 2961, 5, 109, 0, 0, 2961, 2962, 5, 112, 0, 0, 2962, 2963, 5, 108, 0, 0, 2963, 2964, 5, 101, 0, 0, 2964, 2966, 5, 120, 0, 0, 2965, 2951, 1, 0, 0, 0, 2965, 2958, 1, 0, 0, 0, 2966, 340, 1, 0, 0, 0, 2967, 2968, 5, 80, 0, 0, 2968, 2969, 5, 82, 0, 0, 2969, 2970, 5, 69, 0, 0, 2970, 2971, 5, 67, 0, 0, 2971, 2972, 5, 73, 0, 0, 2972, 2973, 5, 83, 0, 0, 2973, 2974, 5, 73, 0, 0, 2974, 2975, 5, 79, 0, 0, 2975, 2986, 5, 78, 0, 0, 2976, 2977, 5, 112, 0, 0, 2977, 2978, 5, 114, 0, 0, 2978, 2979, 5, 101, 0, 0, 2979, 2980, 5, 99, 0, 0, 2980, 2981, 5, 105, 0, 0, 2981, 2982, 5, 115, 0, 0, 2982, 2983, 5, 105, 0, 0, 2983, 2984, 5, 111, 0, 0, 2984, 2986, 5, 110, 0, 0, 2985, 2967, 1, 0, 0, 0, 2985, 2976, 1, 0, 0, 0, 2986, 342, 1, 0, 0, 0, 2987, 2988, 5, 73, 0, 0, 2988, 2989, 5, 78, 0, 0, 2989, 2990, 5, 84, 0, 0, 2990, 2991, 5, 69, 0, 0, 2991, 2992, 5, 71, 0, 0, 2992, 2993, 5, 69, 0, 0, 2993, 3009, 5, 82, 0, 0, 2994, 2995, 5, 105, 0, 0, 2995, 2996, 5, 110, 0, 0, 2996, 2997, 5, 116, 0, 0, 2997, 2998, 5, 101, 0, 0, 2998, 2999, 5, 103, 0, 0, 2999, 3000, 5, 101, 0, 0, 3000, 3009, 5, 114, 0, 0, 3001, 3002, 5, 73, 0, 0, 3002, 3003, 5, 110, 0, 0, 3003, 3004, 5, 116, 0, 0, 3004, 3005, 5, 101, 0, 0, 3005, 3006, 5, 103, 0, 0, 3006, 3007, 5, 101, 0, 0, 3007, 3009, 5, 114, 0, 0, 3008, 2987, 1, 0, 0, 0, 3008, 2994, 1, 0, 0, 0, 3008, 3001, 1, 0, 0, 0, 3009, 344, 1, 0, 0, 0, 3010, 3011, 5, 76, 0, 0, 3011, 3012, 5, 79, 0, 0, 3012, 3013, 5, 71, 0, 0, 3013, 3014, 5, 73, 0, 0, 3014, 3015, 5, 67, 0, 0, 3015, 3016, 5, 65, 0, 0, 3016, 3032, 5, 76, 0, 0, 3017, 3018, 5, 108, 0, 0, 3018, 3019, 5, 111, 0, 0, 3019, 3020, 5, 103, 0, 0, 3020, 3021, 5, 105, 0, 0, 3021, 3022, 5, 99, 0, 0, 3022, 3023, 5, 97, 0, 0, 3023, 3032, 5, 108, 0, 0, 3024, 3025, 5, 76, 0, 0, 3025, 3026, 5, 111, 0, 0, 3026, 3027, 5, 103, 0, 0, 3027, 3028, 5, 105, 0, 0, 3028, 3029, 5, 99, 0, 0, 3029, 3030, 5, 97, 0, 0, 3030, 3032, 5, 108, 0, 0, 3031, 3010, 1, 0, 0, 0, 3031, 3017, 1, 0, 0, 0, 3031, 3024, 1, 0, 0, 0, 3032, 346, 1, 0, 0, 0, 3033, 3034, 5, 95, 0, 0, 3034, 348, 1, 0, 0, 0, 3035, 3036, 3, 347, 173, 0, 3036, 350, 1, 0, 0, 0, 3037, 3038, 5, 40, 0, 0, 3038, 3039, 5, 47, 0, 0, 3039, 352, 1, 0, 0, 0, 3040, 3041, 5, 46, 0, 0, 3041, 354, 1, 0, 0, 0, 3042, 3043, 5, 47, 0, 0, 3043, 3044, 5, 41, 0, 0, 3044, 356, 1, 0, 0, 0, 3045, 3046, 7, 14, 0, 0, 3046, 3048, 5, 39, 0, 0, 3047, 3049, 7, 15, 0, 0, 3048, 3047, 1, 0, 0, 0, 3049, 3050, 1, 0, 0, 0, 3050, 3048, 1, 0, 0, 0, 3050, 3051, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 3062, 5, 39, 0, 0, 3053, 3054, 7, 14, 0, 0, 3054, 3056, 5, 34, 0, 0, 3055, 3057, 7, 15, 0, 0, 3056, 3055, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3056, 1, 0, 0, 0, 3058, 3059, 1, 0, 0, 0, 3059, 3060, 1, 0, 0, 0, 3060, 3062, 5, 34, 0, 0, 3061, 3045, 1, 0, 0, 0, 3061, 3053, 1, 0, 0, 0, 3062, 358, 1, 0, 0, 0, 3063, 3064, 7, 16, 0, 0, 3064, 3066, 5, 39, 0, 0, 3065, 3067, 7, 17, 0, 0, 3066, 3065, 1, 0, 0, 0, 3067, 3068, 1, 0, 0, 0, 3068, 3066, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3070, 1, 0, 0, 0, 3070, 3080, 5, 39, 0, 0, 3071, 3072, 7, 16, 0, 0, 3072, 3074, 5, 34, 0, 0, 3073, 3075, 7, 17, 0, 0, 3074, 3073, 1, 0, 0, 0, 3075, 3076, 1, 0, 0, 0, 3076, 3074, 1, 0, 0, 0, 3076, 3077, 1, 0, 0, 0, 3077, 3078, 1, 0, 0, 0, 3078, 3080, 5, 34, 0, 0, 3079, 3063, 1, 0, 0, 0, 3079, 3071, 1, 0, 0, 0, 3080, 360, 1, 0, 0, 0, 3081, 3082, 7, 18, 0, 0, 3082, 3084, 5, 34, 0, 0, 3083, 3085, 7, 19, 0, 0, 3084, 3083, 1, 0, 0, 0, 3085, 3086, 1, 0, 0, 0, 3086, 3084, 1, 0, 0, 0, 3086, 3087, 1, 0, 0, 0, 3087, 3088, 1, 0, 0, 0, 3088, 3098, 5, 34, 0, 0, 3089, 3090, 7, 18, 0, 0, 3090, 3092, 5, 39, 0, 0, 3091, 3093, 7, 19, 0, 0, 3092, 3091, 1, 0, 0, 0, 3093, 3094, 1, 0, 0, 0, 3094, 3092, 1, 0, 0, 0, 3094, 3095, 1, 0, 0, 0, 3095, 3096, 1, 0, 0, 0, 3096, 3098, 5, 39, 0, 0, 3097, 3081, 1, 0, 0, 0, 3097, 3089, 1, 0, 0, 0, 3098, 362, 1, 0, 0, 0, 3099, 3135, 5, 39, 0, 0, 3100, 3101, 5, 39, 0, 0, 3101, 3134, 5, 39, 0, 0, 3102, 3134, 8, 20, 0, 0, 3103, 3109, 5, 10, 0, 0, 3104, 3106, 5, 13, 0, 0, 3105, 3107, 5, 10, 0, 0, 3106, 3105, 1, 0, 0, 0, 3106, 3107, 1, 0, 0, 0, 3107, 3109, 1, 0, 0, 0, 3108, 3103, 1, 0, 0, 0, 3108, 3104, 1, 0, 0, 0, 3109, 3110, 1, 0, 0, 0, 3110, 3111, 5, 32, 0, 0, 3111, 3112, 5, 32, 0, 0, 3112, 3113, 5, 32, 0, 0, 3113, 3114, 5, 32, 0, 0, 3114, 3115, 5, 32, 0, 0, 3115, 3116, 1, 0, 0, 0, 3116, 3117, 3, 405, 202, 0, 3117, 3123, 1, 0, 0, 0, 3118, 3124, 5, 10, 0, 0, 3119, 3121, 5, 13, 0, 0, 3120, 3122, 5, 10, 0, 0, 3121, 3120, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 3124, 1, 0, 0, 0, 3123, 3118, 1, 0, 0, 0, 3123, 3119, 1, 0, 0, 0, 3124, 3125, 1, 0, 0, 0, 3125, 3126, 5, 32, 0, 0, 3126, 3127, 5, 32, 0, 0, 3127, 3128, 5, 32, 0, 0, 3128, 3129, 5, 32, 0, 0, 3129, 3130, 5, 32, 0, 0, 3130, 3131, 1, 0, 0, 0, 3131, 3132, 3, 405, 202, 0, 3132, 3134, 1, 0, 0, 0, 3133, 3100, 1, 0, 0, 0, 3133, 3102, 1, 0, 0, 0, 3133, 3108, 1, 0, 0, 0, 3134, 3137, 1, 0, 0, 0, 3135, 3133, 1, 0, 0, 0, 3135, 3136, 1, 0, 0, 0, 3136, 3138, 1, 0, 0, 0, 3137, 3135, 1, 0, 0, 0, 3138, 3160, 5, 39, 0, 0, 3139, 3145, 5, 39, 0, 0, 3140, 3144, 8, 21, 0, 0, 3141, 3142, 5, 39, 0, 0, 3142, 3144, 5, 39, 0, 0, 3143, 3140, 1, 0, 0, 0, 3143, 3141, 1, 0, 0, 0, 3144, 3147, 1, 0, 0, 0, 3145, 3143, 1, 0, 0, 0, 3145, 3146, 1, 0, 0, 0, 3146, 3148, 1, 0, 0, 0, 3147, 3145, 1, 0, 0, 0, 3148, 3160, 5, 39, 0, 0, 3149, 3155, 5, 34, 0, 0, 3150, 3154, 8, 22, 0, 0, 3151, 3152, 5, 34, 0, 0, 3152, 3154, 5, 34, 0, 0, 3153, 3150, 1, 0, 0, 0, 3153, 3151, 1, 0, 0, 0, 3154, 3157, 1, 0, 0, 0, 3155, 3153, 1, 0, 0, 0, 3155, 3156, 1, 0, 0, 0, 3156, 3158, 1, 0, 0, 0, 3157, 3155, 1, 0, 0, 0, 3158, 3160, 5, 34, 0, 0, 3159, 3099, 1, 0, 0, 0, 3159, 3139, 1, 0, 0, 0, 3159, 3149, 1, 0, 0, 0, 3160, 364, 1, 0, 0, 0, 3161, 3163, 3, 419, 209, 0, 3162, 3161, 1, 0, 0, 0, 3163, 3164, 1, 0, 0, 0, 3164, 3162, 1, 0, 0, 0, 3164, 3165, 1, 0, 0, 0, 3165, 3166, 1, 0, 0, 0, 3166, 3170, 5, 46, 0, 0, 3167, 3169, 3, 419, 209, 0, 3168, 3167, 1, 0, 0, 0, 3169, 3172, 1, 0, 0, 0, 3170, 3168, 1, 0, 0, 0, 3170, 3171, 1, 0, 0, 0, 3171, 3174, 1, 0, 0, 0, 3172, 3170, 1, 0, 0, 0, 3173, 3175, 3, 415, 207, 0, 3174, 3173, 1, 0, 0, 0, 3174, 3175, 1, 0, 0, 0, 3175, 3199, 1, 0, 0, 0, 3176, 3178, 3, 419, 209, 0, 3177, 3176, 1, 0, 0, 0, 3178, 3181, 1, 0, 0, 0, 3179, 3177, 1, 0, 0, 0, 3179, 3180, 1, 0, 0, 0, 3180, 3182, 1, 0, 0, 0, 3181, 3179, 1, 0, 0, 0, 3182, 3184, 5, 46, 0, 0, 3183, 3185, 3, 419, 209, 0, 3184, 3183, 1, 0, 0, 0, 3185, 3186, 1, 0, 0, 0, 3186, 3184, 1, 0, 0, 0, 3186, 3187, 1, 0, 0, 0, 3187, 3189, 1, 0, 0, 0, 3188, 3190, 3, 415, 207, 0, 3189, 3188, 1, 0, 0, 0, 3189, 3190, 1, 0, 0, 0, 3190, 3199, 1, 0, 0, 0, 3191, 3193, 3, 419, 209, 0, 3192, 3191, 1, 0, 0, 0, 3193, 3194, 1, 0, 0, 0, 3194, 3192, 1, 0, 0, 0, 3194, 3195, 1, 0, 0, 0, 3195, 3196, 1, 0, 0, 0, 3196, 3197, 3, 415, 207, 0, 3197, 3199, 1, 0, 0, 0, 3198, 3162, 1, 0, 0, 0, 3198, 3179, 1, 0, 0, 0, 3198, 3192, 1, 0, 0, 0, 3199, 366, 1, 0, 0, 0, 3200, 3201, 5, 68, 0, 0, 3201, 3202, 5, 69, 0, 0, 3202, 3203, 5, 65, 0, 0, 3203, 3204, 5, 76, 0, 0, 3204, 3205, 5, 76, 0, 0, 3205, 3206, 5, 79, 0, 0, 3206, 3207, 5, 67, 0, 0, 3207, 3208, 5, 65, 0, 0, 3208, 3209, 5, 84, 0, 0, 3209, 3221, 5, 69, 0, 0, 3210, 3211, 5, 100, 0, 0, 3211, 3212, 5, 101, 0, 0, 3212, 3213, 5, 97, 0, 0, 3213, 3214, 5, 108, 0, 0, 3214, 3215, 5, 108, 0, 0, 3215, 3216, 5, 111, 0, 0, 3216, 3217, 5, 99, 0, 0, 3217, 3218, 5, 97, 0, 0, 3218, 3219, 5, 116, 0, 0, 3219, 3221, 5, 101, 0, 0, 3220, 3200, 1, 0, 0, 0, 3220, 3210, 1, 0, 0, 0, 3221, 368, 1, 0, 0, 0, 3222, 3223, 5, 78, 0, 0, 3223, 3224, 5, 85, 0, 0, 3224, 3225, 5, 76, 0, 0, 3225, 3226, 5, 76, 0, 0, 3226, 3227, 5, 73, 0, 0, 3227, 3228, 5, 70, 0, 0, 3228, 3237, 5, 89, 0, 0, 3229, 3230, 5, 110, 0, 0, 3230, 3231, 5, 117, 0, 0, 3231, 3232, 5, 108, 0, 0, 3232, 3233, 5, 108, 0, 0, 3233, 3234, 5, 105, 0, 0, 3234, 3235, 5, 102, 0, 0, 3235, 3237, 5, 121, 0, 0, 3236, 3222, 1, 0, 0, 0, 3236, 3229, 1, 0, 0, 0, 3237, 370, 1, 0, 0, 0, 3238, 3239, 5, 67, 0, 0, 3239, 3240, 5, 89, 0, 0, 3240, 3241, 5, 67, 0, 0, 3241, 3242, 5, 76, 0, 0, 3242, 3249, 5, 69, 0, 0, 3243, 3244, 5, 99, 0, 0, 3244, 3245, 5, 121, 0, 0, 3245, 3246, 5, 99, 0, 0, 3246, 3247, 5, 108, 0, 0, 3247, 3249, 5, 101, 0, 0, 3248, 3238, 1, 0, 0, 0, 3248, 3243, 1, 0, 0, 0, 3249, 372, 1, 0, 0, 0, 3250, 3251, 5, 69, 0, 0, 3251, 3252, 5, 78, 0, 0, 3252, 3253, 5, 68, 0, 0, 3253, 3254, 5, 84, 0, 0, 3254, 3255, 5, 89, 0, 0, 3255, 3256, 5, 80, 0, 0, 3256, 3279, 5, 69, 0, 0, 3257, 3258, 5, 101, 0, 0, 3258, 3259, 5, 110, 0, 0, 3259, 3260, 5, 100, 0, 0, 3260, 3261, 5, 116, 0, 0, 3261, 3262, 5, 121, 0, 0, 3262, 3263, 5, 112, 0, 0, 3263, 3279, 5, 101, 0, 0, 3264, 3265, 5, 69, 0, 0, 3265, 3266, 5, 110, 0, 0, 3266, 3267, 5, 100, 0, 0, 3267, 3268, 5, 116, 0, 0, 3268, 3269, 5, 121, 0, 0, 3269, 3270, 5, 112, 0, 0, 3270, 3279, 5, 101, 0, 0, 3271, 3272, 5, 69, 0, 0, 3272, 3273, 5, 110, 0, 0, 3273, 3274, 5, 100, 0, 0, 3274, 3275, 5, 84, 0, 0, 3275, 3276, 5, 121, 0, 0, 3276, 3277, 5, 112, 0, 0, 3277, 3279, 5, 101, 0, 0, 3278, 3250, 1, 0, 0, 0, 3278, 3257, 1, 0, 0, 0, 3278, 3264, 1, 0, 0, 0, 3278, 3271, 1, 0, 0, 0, 3279, 374, 1, 0, 0, 0, 3280, 3281, 5, 73, 0, 0, 3281, 3282, 5, 78, 0, 0, 3282, 3283, 5, 84, 0, 0, 3283, 3284, 5, 69, 0, 0, 3284, 3285, 5, 82, 0, 0, 3285, 3286, 5, 70, 0, 0, 3286, 3287, 5, 65, 0, 0, 3287, 3288, 5, 67, 0, 0, 3288, 3308, 5, 69, 0, 0, 3289, 3290, 5, 105, 0, 0, 3290, 3291, 5, 110, 0, 0, 3291, 3292, 5, 116, 0, 0, 3292, 3293, 5, 101, 0, 0, 3293, 3294, 5, 114, 0, 0, 3294, 3295, 5, 102, 0, 0, 3295, 3296, 5, 97, 0, 0, 3296, 3297, 5, 99, 0, 0, 3297, 3308, 5, 101, 0, 0, 3298, 3299, 5, 73, 0, 0, 3299, 3300, 5, 110, 0, 0, 3300, 3301, 5, 116, 0, 0, 3301, 3302, 5, 101, 0, 0, 3302, 3303, 5, 114, 0, 0, 3303, 3304, 5, 102, 0, 0, 3304, 3305, 5, 97, 0, 0, 3305, 3306, 5, 99, 0, 0, 3306, 3308, 5, 101, 0, 0, 3307, 3280, 1, 0, 0, 0, 3307, 3289, 1, 0, 0, 0, 3307, 3298, 1, 0, 0, 0, 3308, 376, 1, 0, 0, 0, 3309, 3310, 5, 83, 0, 0, 3310, 3311, 5, 80, 0, 0, 3311, 3312, 5, 79, 0, 0, 3312, 3313, 5, 70, 0, 0, 3313, 3314, 5, 70, 0, 0, 3314, 378, 1, 0, 0, 0, 3315, 3316, 5, 83, 0, 0, 3316, 3317, 5, 80, 0, 0, 3317, 3318, 5, 79, 0, 0, 3318, 3319, 5, 78, 0, 0, 3319, 380, 1, 0, 0, 0, 3320, 3322, 3, 419, 209, 0, 3321, 3320, 1, 0, 0, 0, 3322, 3323, 1, 0, 0, 0, 3323, 3321, 1, 0, 0, 0, 3323, 3324, 1, 0, 0, 0, 3324, 382, 1, 0, 0, 0, 3325, 3326, 5, 116, 0, 0, 3326, 3327, 5, 121, 0, 0, 3327, 3328, 5, 112, 0, 0, 3328, 3338, 5, 101, 0, 0, 3329, 3330, 5, 84, 0, 0, 3330, 3331, 5, 89, 0, 0, 3331, 3332, 5, 80, 0, 0, 3332, 3338, 5, 69, 0, 0, 3333, 3334, 5, 84, 0, 0, 3334, 3335, 5, 121, 0, 0, 3335, 3336, 5, 112, 0, 0, 3336, 3338, 5, 101, 0, 0, 3337, 3325, 1, 0, 0, 0, 3337, 3329, 1, 0, 0, 0, 3337, 3333, 1, 0, 0, 0, 3338, 384, 1, 0, 0, 0, 3339, 3343, 3, 393, 196, 0, 3340, 3342, 3, 391, 195, 0, 3341, 3340, 1, 0, 0, 0, 3342, 3345, 1, 0, 0, 0, 3343, 3341, 1, 0, 0, 0, 3343, 3344, 1, 0, 0, 0, 3344, 386, 1, 0, 0, 0, 3345, 3343, 1, 0, 0, 0, 3346, 3347, 5, 69, 0, 0, 3347, 3348, 5, 88, 0, 0, 3348, 3349, 5, 73, 0, 0, 3349, 3355, 5, 84, 0, 0, 3350, 3351, 5, 101, 0, 0, 3351, 3352, 5, 120, 0, 0, 3352, 3353, 5, 105, 0, 0, 3353, 3355, 5, 116, 0, 0, 3354, 3346, 1, 0, 0, 0, 3354, 3350, 1, 0, 0, 0, 3355, 388, 1, 0, 0, 0, 3356, 3357, 5, 66, 0, 0, 3357, 3358, 5, 76, 0, 0, 3358, 3359, 5, 65, 0, 0, 3359, 3360, 5, 78, 0, 0, 3360, 3367, 5, 75, 0, 0, 3361, 3362, 5, 98, 0, 0, 3362, 3363, 5, 108, 0, 0, 3363, 3364, 5, 97, 0, 0, 3364, 3365, 5, 110, 0, 0, 3365, 3367, 5, 107, 0, 0, 3366, 3356, 1, 0, 0, 0, 3366, 3361, 1, 0, 0, 0, 3367, 390, 1, 0, 0, 0, 3368, 3372, 3, 393, 196, 0, 3369, 3372, 3, 419, 209, 0, 3370, 3372, 3, 347, 173, 0, 3371, 3368, 1, 0, 0, 0, 3371, 3369, 1, 0, 0, 0, 3371, 3370, 1, 0, 0, 0, 3372, 392, 1, 0, 0, 0, 3373, 3374, 7, 23, 0, 0, 3374, 394, 1, 0, 0, 0, 3375, 3376, 3, 273, 136, 0, 3376, 396, 1, 0, 0, 0, 3377, 3381, 5, 34, 0, 0, 3378, 3380, 8, 24, 0, 0, 3379, 3378, 1, 0, 0, 0, 3380, 3383, 1, 0, 0, 0, 3381, 3379, 1, 0, 0, 0, 3381, 3382, 1, 0, 0, 0, 3382, 3384, 1, 0, 0, 0, 3383, 3381, 1, 0, 0, 0, 3384, 3385, 5, 34, 0, 0, 3385, 398, 1, 0, 0, 0, 3386, 3388, 7, 3, 0, 0, 3387, 3386, 1, 0, 0, 0, 3388, 3389, 1, 0, 0, 0, 3389, 3387, 1, 0, 0, 0, 3389, 3390, 1, 0, 0, 0, 3390, 400, 1, 0, 0, 0, 3391, 3393, 7, 2, 0, 0, 3392, 3391, 1, 0, 0, 0, 3393, 3394, 1, 0, 0, 0, 3394, 3392, 1, 0, 0, 0, 3394, 3395, 1, 0, 0, 0, 3395, 402, 1, 0, 0, 0, 3396, 3398, 5, 38, 0, 0, 3397, 3399, 3, 401, 200, 0, 3398, 3397, 1, 0, 0, 0, 3398, 3399, 1, 0, 0, 0, 3399, 3401, 1, 0, 0, 0, 3400, 3402, 3, 245, 122, 0, 3401, 3400, 1, 0, 0, 0, 3401, 3402, 1, 0, 0, 0, 3402, 3403, 1, 0, 0, 0, 3403, 3417, 3, 237, 118, 0, 3404, 3406, 3, 401, 200, 0, 3405, 3404, 1, 0, 0, 0, 3406, 3409, 1, 0, 0, 0, 3407, 3405, 1, 0, 0, 0, 3407, 3408, 1, 0, 0, 0, 3408, 3413, 1, 0, 0, 0, 3409, 3407, 1, 0, 0, 0, 3410, 3412, 7, 2, 0, 0, 3411, 3410, 1, 0, 0, 0, 3412, 3415, 1, 0, 0, 0, 3413, 3411, 1, 0, 0, 0, 3413, 3414, 1, 0, 0, 0, 3414, 3416, 1, 0, 0, 0, 3415, 3413, 1, 0, 0, 0, 3416, 3418, 5, 38, 0, 0, 3417, 3407, 1, 0, 0, 0, 3417, 3418, 1, 0, 0, 0, 3418, 3441, 1, 0, 0, 0, 3419, 3421, 3, 401, 200, 0, 3420, 3419, 1, 0, 0, 0, 3420, 3421, 1, 0, 0, 0, 3421, 3423, 1, 0, 0, 0, 3422, 3424, 3, 245, 122, 0, 3423, 3422, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3429, 3, 237, 118, 0, 3426, 3428, 3, 401, 200, 0, 3427, 3426, 1, 0, 0, 0, 3428, 3431, 1, 0, 0, 0, 3429, 3427, 1, 0, 0, 0, 3429, 3430, 1, 0, 0, 0, 3430, 3435, 1, 0, 0, 0, 3431, 3429, 1, 0, 0, 0, 3432, 3434, 7, 2, 0, 0, 3433, 3432, 1, 0, 0, 0, 3434, 3437, 1, 0, 0, 0, 3435, 3433, 1, 0, 0, 0, 3435, 3436, 1, 0, 0, 0, 3436, 3438, 1, 0, 0, 0, 3437, 3435, 1, 0, 0, 0, 3438, 3439, 5, 38, 0, 0, 3439, 3441, 1, 0, 0, 0, 3440, 3396, 1, 0, 0, 0, 3440, 3420, 1, 0, 0, 0, 3441, 3442, 1, 0, 0, 0, 3442, 3443, 6, 201, 0, 0, 3443, 404, 1, 0, 0, 0, 3444, 3445, 8, 25, 0, 0, 3445, 406, 1, 0, 0, 0, 3446, 3449, 3, 417, 208, 0, 3447, 3449, 3, 419, 209, 0, 3448, 3446, 1, 0, 0, 0, 3448, 3447, 1, 0, 0, 0, 3449, 408, 1, 0, 0, 0, 3450, 3453, 3, 419, 209, 0, 3451, 3453, 2, 97, 102, 0, 3452, 3450, 1, 0, 0, 0, 3452, 3451, 1, 0, 0, 0, 3453, 410, 1, 0, 0, 0, 3454, 3455, 7, 7, 0, 0, 3455, 412, 1, 0, 0, 0, 3456, 3458, 7, 26, 0, 0, 3457, 3459, 3, 419, 209, 0, 3458, 3457, 1, 0, 0, 0, 3459, 3460, 1, 0, 0, 0, 3460, 3458, 1, 0, 0, 0, 3460, 3461, 1, 0, 0, 0, 3461, 3462, 1, 0, 0, 0, 3462, 3464, 5, 46, 0, 0, 3463, 3465, 3, 419, 209, 0, 3464, 3463, 1, 0, 0, 0, 3465, 3466, 1, 0, 0, 0, 3466, 3464, 1, 0, 0, 0, 3466, 3467, 1, 0, 0, 0, 3467, 3489, 1, 0, 0, 0, 3468, 3470, 7, 27, 0, 0, 3469, 3471, 3, 419, 209, 0, 3470, 3469, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3470, 1, 0, 0, 0, 3472, 3473, 1, 0, 0, 0, 3473, 3474, 1, 0, 0, 0, 3474, 3476, 5, 46, 0, 0, 3475, 3477, 3, 419, 209, 0, 3476, 3475, 1, 0, 0, 0, 3477, 3478, 1, 0, 0, 0, 3478, 3476, 1, 0, 0, 0, 3478, 3479, 1, 0, 0, 0, 3479, 3486, 1, 0, 0, 0, 3480, 3482, 5, 101, 0, 0, 3481, 3483, 3, 419, 209, 0, 3482, 3481, 1, 0, 0, 0, 3483, 3484, 1, 0, 0, 0, 3484, 3482, 1, 0, 0, 0, 3484, 3485, 1, 0, 0, 0, 3485, 3487, 1, 0, 0, 0, 3486, 3480, 1, 0, 0, 0, 3486, 3487, 1, 0, 0, 0, 3487, 3489, 1, 0, 0, 0, 3488, 3456, 1, 0, 0, 0, 3488, 3468, 1, 0, 0, 0, 3489, 414, 1, 0, 0, 0, 3490, 3492, 7, 28, 0, 0, 3491, 3493, 3, 411, 205, 0, 3492, 3491, 1, 0, 0, 0, 3492, 3493, 1, 0, 0, 0, 3493, 3495, 1, 0, 0, 0, 3494, 3496, 3, 419, 209, 0, 3495, 3494, 1, 0, 0, 0, 3496, 3497, 1, 0, 0, 0, 3497, 3495, 1, 0, 0, 0, 3497, 3498, 1, 0, 0, 0, 3498, 416, 1, 0, 0, 0, 3499, 3501, 7, 23, 0, 0, 3500, 3499, 1, 0, 0, 0, 3501, 418, 1, 0, 0, 0, 3502, 3503, 2, 48, 57, 0, 3503, 420, 1, 0, 0, 0, 223, 0, 448, 474, 494, 523, 546, 563, 589, 606, 638, 677, 706, 717, 746, 766, 801, 827, 845, 865, 873, 884, 901, 927, 938, 952, 987, 994, 1009, 1073, 1096, 1116, 1145, 1159, 1194, 1223, 1246, 1269, 1297, 1317, 1321, 1347, 1361, 1390, 1419, 1445, 1474, 1488, 1502, 1510, 1524, 1532, 1542, 1552, 1564, 1578, 1598, 1606, 1629, 1655, 1681, 1698, 1718, 1740, 1754, 1768, 1791, 1811, 1825, 1836, 1848, 1860, 1872, 1882, 1894, 1904, 1912, 1922, 1930, 1944, 1956, 1974, 1994, 2002, 2012, 2028, 2036, 2050, 2064, 2072, 2082, 2102, 2114, 2128, 2144, 2166, 2178, 2188, 2202, 2216, 2234, 2244, 2254, 2266, 2280, 2294, 2306, 2316, 2336, 2360, 2376, 2392, 2412, 2428, 2442, 2468, 2486, 2491, 2501, 2509, 2513, 2515, 2522, 2528, 2535, 2541, 2549, 2555, 2558, 2580, 2598, 2608, 2639, 2651, 2661, 2673, 2687, 2699, 2711, 2721, 2731, 2741, 2751, 2761, 2771, 2785, 2801, 2806, 2811, 2816, 2824, 2829, 2832, 2838, 2844, 2846, 2965, 2985, 3008, 3031, 3050, 3058, 3061, 3068, 3076, 3079, 3086, 3094, 3097, 3106, 3108, 3121, 3123, 3133, 3135, 3143, 3145, 3153, 3155, 3159, 3164, 3170, 3174, 3179, 3186, 3189, 3194, 3198, 3220, 3236, 3248, 3278, 3307, 3323, 3337, 3343, 3354, 3366, 3371, 3381, 3389, 3394, 3398, 3401, 3407, 3413, 3417, 3420, 3423, 3429, 3435, 3440, 3448, 3452, 3460, 3466, 3472, 3478, 3484, 3486, 3488, 3492, 3497, 3500, 1, 6, 0, 0] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran90Lexer.py b/src/pycropml/transpiler/antlr_py/grammars/Fortran90Lexer.py index fc4259c1..37a09cab 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran90Lexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran90Lexer.py @@ -1,1728 +1,1435 @@ -# Generated from Fortran90Lexer.g4 by ANTLR 4.8 +# Generated from Fortran90Lexer.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO import sys - +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u00c5") - buf.write("\u0db2\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") - buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") - buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") - buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") - buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") - buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4") - buf.write("y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080") - buf.write("\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083") - buf.write("\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087") - buf.write("\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a") - buf.write("\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e") - buf.write("\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091") - buf.write("\4\u0092\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095") - buf.write("\t\u0095\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098") - buf.write("\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c") - buf.write("\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f") - buf.write("\4\u00a0\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3") - buf.write("\t\u00a3\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6") - buf.write("\4\u00a7\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa") - buf.write("\t\u00aa\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad") - buf.write("\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1") - buf.write("\t\u00b1\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4") - buf.write("\4\u00b5\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8") - buf.write("\t\u00b8\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb\t\u00bb") - buf.write("\4\u00bc\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf") - buf.write("\t\u00bf\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2") - buf.write("\4\u00c3\t\u00c3\4\u00c4\t\u00c4\4\u00c5\t\u00c5\4\u00c6") - buf.write("\t\u00c6\4\u00c7\t\u00c7\4\u00c8\t\u00c8\4\u00c9\t\u00c9") - buf.write("\4\u00ca\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd") - buf.write("\t\u00cd\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0") - buf.write("\4\u00d1\t\u00d1\4\u00d2\t\u00d2\4\u00d3\t\u00d3\3\2\3") - buf.write("\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2") - buf.write("\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\2\5\2\u01c3") - buf.write("\n\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\5\3\u01dd") - buf.write("\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3") - buf.write("\4\3\4\3\4\3\4\3\4\3\4\5\4\u01f1\n\4\3\5\3\5\3\5\3\5\3") - buf.write("\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5") - buf.write("\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u020e\n\5\3\6") - buf.write("\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3") - buf.write("\6\3\6\3\6\3\6\3\6\3\6\3\6\5\6\u0225\n\6\3\7\3\7\3\7\3") - buf.write("\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7\u0236") - buf.write("\n\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3") - buf.write("\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\5\b\u0250") - buf.write("\n\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3") - buf.write("\t\3\t\3\t\5\t\u0261\n\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3") - buf.write("\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n") - buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u0281\n\n\3\13") - buf.write("\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13") - buf.write("\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13") - buf.write("\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13") - buf.write("\3\13\3\13\3\13\5\13\u02a8\n\13\3\f\3\f\3\f\3\f\3\f\3") - buf.write("\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f") - buf.write("\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f\u02c5\n\f\3\r\3\r") - buf.write("\3\r\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u02d0\n\r\3\16\3\16\3") - buf.write("\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16") - buf.write("\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16") - buf.write("\3\16\3\16\3\16\5\16\u02ed\n\16\3\17\3\17\3\17\3\17\3") - buf.write("\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17") - buf.write("\3\17\3\17\3\17\5\17\u0301\n\17\3\20\3\20\3\20\3\20\3") - buf.write("\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20") - buf.write("\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20") - buf.write("\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u0324\n\20\3") - buf.write("\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") - buf.write("\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") - buf.write("\3\21\3\21\5\21\u033e\n\21\3\22\3\22\3\22\3\22\3\22\3") - buf.write("\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22") - buf.write("\5\22\u0350\n\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3") - buf.write("\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23") - buf.write("\5\23\u0364\n\23\3\24\3\24\3\24\3\24\3\24\3\24\5\24\u036c") - buf.write("\n\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\5\25") - buf.write("\u0377\n\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3") - buf.write("\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u0388\n\26\3\27") - buf.write("\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27") - buf.write("\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27") - buf.write("\3\27\5\27\u03a2\n\27\3\30\3\30\3\30\3\30\3\30\3\30\3") - buf.write("\30\3\30\3\30\5\30\u03ad\n\30\3\31\3\31\3\31\3\31\3\31") - buf.write("\3\31\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u03bb\n\31\3") - buf.write("\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") - buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") - buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") - buf.write("\5\33\u03de\n\33\3\34\3\34\3\34\6\34\u03e3\n\34\r\34\16") - buf.write("\34\u03e4\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35") - buf.write("\3\35\3\35\3\35\3\35\5\35\u03f4\n\35\3\36\3\36\3\36\3") - buf.write("\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36") - buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36") - buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36") - buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36") - buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36") - buf.write("\3\36\3\36\3\36\3\36\5\36\u0434\n\36\3\37\3\37\3\37\3") - buf.write(" \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \5") - buf.write(" \u044b\n \3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3") - buf.write("!\3!\3!\3!\5!\u045f\n!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"") - buf.write("\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3") - buf.write("\"\3\"\3\"\3\"\3\"\3\"\5\"\u047c\n\"\3#\3#\3#\3#\3#\3") - buf.write("#\3#\3#\3#\3#\3#\3#\5#\u048a\n#\3$\3$\3$\3$\3$\3$\3$\3") - buf.write("$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3") - buf.write("$\3$\3$\3$\3$\3$\3$\3$\5$\u04ad\n$\3%\3%\3%\3%\3%\3%\3") - buf.write("%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3") - buf.write("%\3%\3%\5%\u04ca\n%\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3") - buf.write("&\3&\3&\3&\3&\3&\3&\3&\3&\3&\5&\u04e1\n&\3\'\3\'\3\'\3") - buf.write("\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'") - buf.write("\3\'\3\'\3\'\3\'\5\'\u04f8\n\'\3(\3(\3)\3)\3)\3)\3)\3") - buf.write(")\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3") - buf.write(")\5)\u0514\n)\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3") - buf.write("*\3*\3*\3*\3*\5*\u0528\n*\3+\3+\5+\u052c\n+\3,\3,\3,\3") - buf.write(",\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3") - buf.write(",\3,\3,\5,\u0546\n,\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3") - buf.write("-\5-\u0554\n-\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3") - buf.write(".\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\3.\5.\u0571\n.\3") - buf.write("/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3") - buf.write("/\3/\3/\3/\3/\3/\3/\3/\3/\5/\u058e\n/\3\60\3\60\3\60\3") - buf.write("\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60") - buf.write("\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\5\60") - buf.write("\u05a8\n\60\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3") - buf.write("\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61") - buf.write("\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\5\61\u05c5\n") - buf.write("\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62") - buf.write("\3\62\3\62\5\62\u05d3\n\62\3\63\3\63\3\63\3\63\3\63\3") - buf.write("\63\3\63\3\63\3\63\3\63\3\63\3\63\5\63\u05e1\n\63\3\64") - buf.write("\3\64\3\64\3\64\3\64\3\64\5\64\u05e9\n\64\3\65\3\65\3") - buf.write("\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\5\65") - buf.write("\u05f7\n\65\3\66\3\66\3\66\3\66\3\66\3\66\5\66\u05ff\n") - buf.write("\66\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\5\67\u0609") - buf.write("\n\67\38\38\38\38\38\38\38\38\58\u0613\n8\39\39\39\39") - buf.write("\39\39\39\39\39\39\59\u061f\n9\3:\3:\3:\3:\3:\3:\3:\3") - buf.write(":\3:\3:\3:\3:\5:\u062d\n:\3;\3;\3;\3;\3;\3;\3;\3;\3;\3") - buf.write(";\3;\3;\3;\3;\3;\3;\3;\3;\5;\u0641\n;\3<\3<\3<\3<\3<\3") - buf.write("<\5<\u0649\n<\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3") - buf.write("=\3=\3=\3=\3=\3=\3=\3=\5=\u0660\n=\3>\3>\3>\3>\3>\3>\3") - buf.write(">\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\5") - buf.write(">\u067a\n>\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3") - buf.write("?\3?\3?\3?\3?\3?\3?\3?\3?\3?\5?\u0694\n?\3@\3@\3@\3@\3") - buf.write("@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\5@\u06a5\n@\3A\3A\3A\3") - buf.write("A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\5A\u06b9\n") - buf.write("A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3") - buf.write("B\3B\3B\5B\u06cf\nB\3C\3C\3C\3C\3C\3C\3C\3C\3C\3C\3C\3") - buf.write("C\5C\u06dd\nC\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\5D\u06eb") - buf.write("\nD\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3") - buf.write("E\3E\3E\3E\3E\5E\u0702\nE\3F\3F\3F\3F\3F\3F\3F\3F\3F\3") - buf.write("F\3F\3F\3F\3F\3F\3F\3F\3F\5F\u0716\nF\3G\3G\3G\3G\3G\3") - buf.write("G\3G\3G\3G\3G\3G\3G\5G\u0724\nG\3H\3H\3H\3H\3H\3H\3H\3") - buf.write("H\3H\5H\u072f\nH\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\5I\u073b") - buf.write("\nI\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\5J\u0747\nJ\3K\3K\3") - buf.write("K\3K\3K\3K\3K\3K\3K\3K\5K\u0753\nK\3L\3L\3L\3L\3L\3L\3") - buf.write("L\3L\5L\u075d\nL\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\5M\u0769") - buf.write("\nM\3N\3N\3N\3N\3N\3N\3N\3N\5N\u0773\nN\3O\3O\3O\3O\3") - buf.write("O\3O\5O\u077b\nO\3P\3P\3P\3P\3P\3P\3P\3P\5P\u0785\nP\3") - buf.write("Q\3Q\3Q\3Q\3Q\3Q\5Q\u078d\nQ\3R\3R\3R\3R\3R\3R\3R\3R\3") - buf.write("R\3R\3R\3R\5R\u079b\nR\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\5") - buf.write("S\u07a7\nS\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3") - buf.write("T\3T\5T\u07b9\nT\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\3") - buf.write("U\3U\3U\3U\3U\3U\5U\u07cd\nU\3V\3V\3V\3V\3V\3V\5V\u07d5") - buf.write("\nV\3W\3W\3W\3W\3W\3W\3W\3W\5W\u07df\nW\3X\3X\3X\3X\3") - buf.write("X\3X\3X\3X\3X\3X\3X\3X\3X\3X\5X\u07ef\nX\3Y\3Y\3Y\3Y\3") - buf.write("Y\3Y\5Y\u07f7\nY\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\5") - buf.write("Z\u0805\nZ\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\5[\u0813") - buf.write("\n[\3\\\3\\\3\\\3\\\3\\\3\\\5\\\u081b\n\\\3]\3]\3]\3]") - buf.write("\3]\3]\3]\3]\5]\u0825\n]\3^\3^\3^\3^\3^\3^\3^\3^\3^\3") - buf.write("^\3^\3^\3^\3^\3^\3^\3^\3^\5^\u0839\n^\3_\3_\3_\3_\3_\3") - buf.write("_\3_\3_\3_\3_\5_\u0845\n_\3`\3`\3`\3`\3`\3`\3`\3`\3`\3") - buf.write("`\3`\3`\5`\u0853\n`\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3") - buf.write("a\3a\3a\5a\u0863\na\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3b\3") - buf.write("b\3b\3b\3b\3b\3b\3b\3b\3b\5b\u0879\nb\3c\3c\3c\3c\3c\3") - buf.write("c\3c\3c\3c\3c\5c\u0885\nc\3d\3d\3d\3d\3d\3d\3d\3d\5d\u088f") - buf.write("\nd\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\5e\u089d\ne\3") - buf.write("f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\5f\u08ab\nf\3g\3g\3") - buf.write("g\3g\3g\3g\3g\3g\3g\3g\3g\3g\3g\3g\3g\3g\5g\u08bd\ng\3") - buf.write("h\3h\3h\3h\3h\3h\3h\3h\5h\u08c7\nh\3i\3i\3i\3i\3i\3i\3") - buf.write("i\3i\5i\u08d1\ni\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\5j\u08dd") - buf.write("\nj\3k\3k\3k\3k\3k\3k\3k\3k\3k\3k\3k\3k\5k\u08eb\nk\3") - buf.write("l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\5l\u08f9\nl\3m\3m\3") - buf.write("m\3m\3m\3m\3m\3m\3m\3m\5m\u0905\nm\3n\3n\3n\3n\3n\3n\3") - buf.write("n\3n\5n\u090f\nn\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3o\3") - buf.write("o\3o\3o\3o\3o\3o\5o\u0923\no\3p\3p\3p\3p\3p\3p\3p\3p\3") - buf.write("p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\5p\u093b\np\3") - buf.write("q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\5q\u094b\nq\3") - buf.write("r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\5r\u095b\nr\3") - buf.write("s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\5") - buf.write("s\u096f\ns\3t\3t\3t\3t\3t\3t\3t\3t\3t\3t\3t\3t\3t\3t\5") - buf.write("t\u097f\nt\3u\3u\3u\3u\3u\3u\3u\3u\3u\3u\3u\3u\5u\u098d") - buf.write("\nu\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3v\3") - buf.write("v\3v\3v\3v\3v\3v\3v\3v\5v\u09a7\nv\3w\3w\3w\3w\3w\3w\3") - buf.write("w\3w\3w\3w\3w\3w\3w\3w\3w\3w\5w\u09b9\nw\3x\3x\3x\5x\u09be") - buf.write("\nx\3y\3y\3y\3y\3y\3y\3y\3y\5y\u09c8\ny\3z\3z\3z\3z\3") - buf.write("z\3z\5z\u09d0\nz\3{\3{\6{\u09d4\n{\r{\16{\u09d5\3{\3{") - buf.write("\3|\7|\u09db\n|\f|\16|\u09de\13|\3|\7|\u09e1\n|\f|\16") - buf.write("|\u09e4\13|\3|\3|\7|\u09e8\n|\f|\16|\u09eb\13|\3|\7|\u09ee") - buf.write("\n|\f|\16|\u09f1\13|\3|\3|\3|\7|\u09f6\n|\f|\16|\u09f9") - buf.write("\13|\3|\7|\u09fc\n|\f|\16|\u09ff\13|\5|\u0a01\n|\3|\3") - buf.write("|\3}\3}\3~\3~\3\177\3\177\3\u0080\3\u0080\3\u0081\3\u0081") - buf.write("\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081") - buf.write("\3\u0081\5\u0081\u0a17\n\u0081\3\u0082\3\u0082\3\u0082") - buf.write("\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082") - buf.write("\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\5\u0082") - buf.write("\u0a29\n\u0082\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083") - buf.write("\3\u0083\3\u0083\3\u0083\5\u0083\u0a33\n\u0083\3\u0084") - buf.write("\3\u0084\3\u0085\3\u0085\3\u0086\3\u0086\3\u0087\3\u0087") - buf.write("\3\u0088\3\u0088\3\u0089\3\u0089\3\u008a\3\u008a\3\u008b") - buf.write("\3\u008b\3\u008c\3\u008c\3\u008c\3\u008d\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d") - buf.write("\5\u008d\u0a52\n\u008d\3\u008e\3\u008e\3\u008e\3\u008e") - buf.write("\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\5\u008e") - buf.write("\u0a5e\n\u008e\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f") - buf.write("\3\u008f\3\u008f\3\u008f\5\u008f\u0a68\n\u008f\3\u0090") - buf.write("\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090") - buf.write("\3\u0090\3\u0090\5\u0090\u0a74\n\u0090\3\u0091\3\u0091") - buf.write("\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091") - buf.write("\3\u0091\3\u0091\3\u0091\5\u0091\u0a82\n\u0091\3\u0092") - buf.write("\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092") - buf.write("\3\u0092\3\u0092\5\u0092\u0a8e\n\u0092\3\u0093\3\u0093") - buf.write("\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093") - buf.write("\3\u0093\5\u0093\u0a9a\n\u0093\3\u0094\3\u0094\3\u0094") - buf.write("\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0aa4") - buf.write("\n\u0094\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095") - buf.write("\3\u0095\3\u0095\5\u0095\u0aae\n\u0095\3\u0096\3\u0096") - buf.write("\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\5\u0096") - buf.write("\u0ab8\n\u0096\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") - buf.write("\3\u0097\3\u0097\3\u0097\5\u0097\u0ac2\n\u0097\3\u0098") - buf.write("\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098") - buf.write("\5\u0098\u0acc\n\u0098\3\u0099\3\u0099\3\u0099\3\u0099") - buf.write("\3\u0099\3\u0099\3\u0099\3\u0099\5\u0099\u0ad6\n\u0099") - buf.write("\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a") - buf.write("\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\5\u009a\u0ae4") - buf.write("\n\u009a\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b") - buf.write("\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b") - buf.write("\3\u009b\5\u009b\u0af4\n\u009b\3\u009c\6\u009c\u0af7\n") - buf.write("\u009c\r\u009c\16\u009c\u0af8\3\u009c\3\u009c\3\u009d") - buf.write("\5\u009d\u0afe\n\u009d\3\u009d\6\u009d\u0b01\n\u009d\r") - buf.write("\u009d\16\u009d\u0b02\3\u009d\3\u009d\3\u009e\3\u009e") - buf.write("\3\u009e\3\u009e\5\u009e\u0b0b\n\u009e\3\u009e\6\u009e") - buf.write("\u0b0e\n\u009e\r\u009e\16\u009e\u0b0f\3\u009e\5\u009e") - buf.write("\u0b13\n\u009e\3\u009e\3\u009e\6\u009e\u0b17\n\u009e\r") - buf.write("\u009e\16\u009e\u0b18\3\u009e\3\u009e\6\u009e\u0b1d\n") - buf.write("\u009e\r\u009e\16\u009e\u0b1e\5\u009e\u0b21\n\u009e\3") - buf.write("\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0") - buf.write("\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a0") - buf.write("\3\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1") - buf.write("\3\u00a1\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2\3\u00a2") - buf.write("\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2") - buf.write("\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3") - buf.write("\3\u00a3\3\u00a4\3\u00a4\3\u00a4\3\u00a5\3\u00a5\3\u00a5") - buf.write("\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5") - buf.write("\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a6") - buf.write("\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6") - buf.write("\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a8\3\u00a8\3\u00a8") - buf.write("\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8") - buf.write("\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9") - buf.write("\3\u00a9\3\u00a9\3\u00a9\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00ab\3\u00ab") - buf.write("\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab") - buf.write("\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\5\u00ab\u0b98") - buf.write("\n\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac") - buf.write("\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac") - buf.write("\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\5\u00ac\u0bac") - buf.write("\n\u00ac\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad") - buf.write("\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad") - buf.write("\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad") - buf.write("\3\u00ad\5\u00ad\u0bc3\n\u00ad\3\u00ae\3\u00ae\3\u00ae") - buf.write("\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae") - buf.write("\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae") - buf.write("\3\u00ae\3\u00ae\3\u00ae\3\u00ae\5\u00ae\u0bda\n\u00ae") - buf.write("\3\u00af\3\u00af\3\u00b0\3\u00b0\3\u00b1\3\u00b1\3\u00b1") - buf.write("\3\u00b2\3\u00b2\3\u00b3\3\u00b3\3\u00b3\3\u00b4\3\u00b4") - buf.write("\3\u00b4\6\u00b4\u0beb\n\u00b4\r\u00b4\16\u00b4\u0bec") - buf.write("\3\u00b4\3\u00b4\3\u00b4\3\u00b4\6\u00b4\u0bf3\n\u00b4") - buf.write("\r\u00b4\16\u00b4\u0bf4\3\u00b4\5\u00b4\u0bf8\n\u00b4") - buf.write("\3\u00b5\3\u00b5\3\u00b5\6\u00b5\u0bfd\n\u00b5\r\u00b5") - buf.write("\16\u00b5\u0bfe\3\u00b5\3\u00b5\3\u00b5\3\u00b5\6\u00b5") - buf.write("\u0c05\n\u00b5\r\u00b5\16\u00b5\u0c06\3\u00b5\5\u00b5") - buf.write("\u0c0a\n\u00b5\3\u00b6\3\u00b6\3\u00b6\6\u00b6\u0c0f\n") - buf.write("\u00b6\r\u00b6\16\u00b6\u0c10\3\u00b6\3\u00b6\3\u00b6") - buf.write("\3\u00b6\6\u00b6\u0c17\n\u00b6\r\u00b6\16\u00b6\u0c18") - buf.write("\3\u00b6\5\u00b6\u0c1c\n\u00b6\3\u00b7\3\u00b7\3\u00b7") - buf.write("\3\u00b7\3\u00b7\3\u00b7\3\u00b7\5\u00b7\u0c25\n\u00b7") - buf.write("\5\u00b7\u0c27\n\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7") - buf.write("\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7") - buf.write("\5\u00b7\u0c34\n\u00b7\5\u00b7\u0c36\n\u00b7\3\u00b7\3") - buf.write("\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7") - buf.write("\7\u00b7\u0c40\n\u00b7\f\u00b7\16\u00b7\u0c43\13\u00b7") - buf.write("\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7\7\u00b7\u0c4a") - buf.write("\n\u00b7\f\u00b7\16\u00b7\u0c4d\13\u00b7\3\u00b7\3\u00b7") - buf.write("\3\u00b7\3\u00b7\3\u00b7\7\u00b7\u0c54\n\u00b7\f\u00b7") - buf.write("\16\u00b7\u0c57\13\u00b7\3\u00b7\5\u00b7\u0c5a\n\u00b7") - buf.write("\3\u00b8\6\u00b8\u0c5d\n\u00b8\r\u00b8\16\u00b8\u0c5e") - buf.write("\3\u00b8\3\u00b8\7\u00b8\u0c63\n\u00b8\f\u00b8\16\u00b8") - buf.write("\u0c66\13\u00b8\3\u00b8\5\u00b8\u0c69\n\u00b8\3\u00b8") - buf.write("\7\u00b8\u0c6c\n\u00b8\f\u00b8\16\u00b8\u0c6f\13\u00b8") - buf.write("\3\u00b8\3\u00b8\6\u00b8\u0c73\n\u00b8\r\u00b8\16\u00b8") - buf.write("\u0c74\3\u00b8\5\u00b8\u0c78\n\u00b8\3\u00b8\6\u00b8\u0c7b") - buf.write("\n\u00b8\r\u00b8\16\u00b8\u0c7c\3\u00b8\3\u00b8\5\u00b8") - buf.write("\u0c81\n\u00b8\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9") - buf.write("\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9") - buf.write("\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9") - buf.write("\3\u00b9\5\u00b9\u0c97\n\u00b9\3\u00ba\3\u00ba\3\u00ba") - buf.write("\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba") - buf.write("\3\u00ba\3\u00ba\3\u00ba\3\u00ba\5\u00ba\u0ca7\n\u00ba") - buf.write("\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb") - buf.write("\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u0cb3\n\u00bb\3\u00bc") - buf.write("\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc") - buf.write("\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc") - buf.write("\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc") - buf.write("\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc") - buf.write("\u0cd1\n\u00bc\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd") - buf.write("\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd") - buf.write("\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd") - buf.write("\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd") - buf.write("\3\u00bd\5\u00bd\u0cee\n\u00bd\3\u00be\3\u00be\3\u00be") - buf.write("\3\u00be\3\u00be\3\u00be\3\u00bf\3\u00bf\3\u00bf\3\u00bf") - buf.write("\3\u00bf\3\u00c0\6\u00c0\u0cfc\n\u00c0\r\u00c0\16\u00c0") - buf.write("\u0cfd\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1") - buf.write("\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\5\u00c1") - buf.write("\u0d0c\n\u00c1\3\u00c2\3\u00c2\7\u00c2\u0d10\n\u00c2\f") - buf.write("\u00c2\16\u00c2\u0d13\13\u00c2\3\u00c3\3\u00c3\3\u00c3") - buf.write("\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\5\u00c3\u0d1d") - buf.write("\n\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4") - buf.write("\3\u00c4\3\u00c4\3\u00c4\3\u00c4\5\u00c4\u0d29\n\u00c4") - buf.write("\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u0d2e\n\u00c5\3\u00c6") - buf.write("\3\u00c6\3\u00c7\3\u00c7\3\u00c8\3\u00c8\7\u00c8\u0d36") - buf.write("\n\u00c8\f\u00c8\16\u00c8\u0d39\13\u00c8\3\u00c8\3\u00c8") - buf.write("\3\u00c9\6\u00c9\u0d3e\n\u00c9\r\u00c9\16\u00c9\u0d3f") - buf.write("\3\u00ca\6\u00ca\u0d43\n\u00ca\r\u00ca\16\u00ca\u0d44") - buf.write("\3\u00cb\3\u00cb\5\u00cb\u0d49\n\u00cb\3\u00cb\5\u00cb") - buf.write("\u0d4c\n\u00cb\3\u00cb\3\u00cb\7\u00cb\u0d50\n\u00cb\f") - buf.write("\u00cb\16\u00cb\u0d53\13\u00cb\3\u00cb\7\u00cb\u0d56\n") - buf.write("\u00cb\f\u00cb\16\u00cb\u0d59\13\u00cb\3\u00cb\5\u00cb") - buf.write("\u0d5c\n\u00cb\3\u00cb\5\u00cb\u0d5f\n\u00cb\3\u00cb\5") - buf.write("\u00cb\u0d62\n\u00cb\3\u00cb\3\u00cb\7\u00cb\u0d66\n\u00cb") - buf.write("\f\u00cb\16\u00cb\u0d69\13\u00cb\3\u00cb\7\u00cb\u0d6c") - buf.write("\n\u00cb\f\u00cb\16\u00cb\u0d6f\13\u00cb\3\u00cb\3\u00cb") - buf.write("\5\u00cb\u0d73\n\u00cb\3\u00cb\3\u00cb\3\u00cc\3\u00cc") - buf.write("\3\u00cd\3\u00cd\5\u00cd\u0d7b\n\u00cd\3\u00ce\3\u00ce") - buf.write("\5\u00ce\u0d7f\n\u00ce\3\u00cf\3\u00cf\3\u00d0\3\u00d0") - buf.write("\6\u00d0\u0d85\n\u00d0\r\u00d0\16\u00d0\u0d86\3\u00d0") - buf.write("\3\u00d0\6\u00d0\u0d8b\n\u00d0\r\u00d0\16\u00d0\u0d8c") - buf.write("\3\u00d0\3\u00d0\6\u00d0\u0d91\n\u00d0\r\u00d0\16\u00d0") - buf.write("\u0d92\3\u00d0\3\u00d0\6\u00d0\u0d97\n\u00d0\r\u00d0\16") - buf.write("\u00d0\u0d98\3\u00d0\3\u00d0\6\u00d0\u0d9d\n\u00d0\r\u00d0") - buf.write("\16\u00d0\u0d9e\5\u00d0\u0da1\n\u00d0\5\u00d0\u0da3\n") - buf.write("\u00d0\3\u00d1\3\u00d1\5\u00d1\u0da7\n\u00d1\3\u00d1\6") - buf.write("\u00d1\u0daa\n\u00d1\r\u00d1\16\u00d1\u0dab\3\u00d2\5") - buf.write("\u00d2\u0daf\n\u00d2\3\u00d3\3\u00d3\2\2\u00d4\3\3\5\4") - buf.write("\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17") - buf.write("\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63") - buf.write("\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M\2O(Q)S\2U*") - buf.write("W+Y,[-]._/a\60c\61e\62g\63i\64k\65m\66o\67q8s9u:w;y<{") - buf.write("=}>\177?\u0081@\u0083A\u0085B\u0087C\u0089D\u008bE\u008d") - buf.write("F\u008fG\u0091H\u0093I\u0095J\u0097K\u0099L\u009bM\u009d") - buf.write("N\u009fO\u00a1P\u00a3Q\u00a5R\u00a7S\u00a9T\u00abU\u00ad") - buf.write("V\u00afW\u00b1X\u00b3Y\u00b5Z\u00b7[\u00b9\\\u00bb]\u00bd") - buf.write("^\u00bf_\u00c1`\u00c3a\u00c5b\u00c7c\u00c9d\u00cbe\u00cd") - buf.write("f\u00cfg\u00d1h\u00d3i\u00d5j\u00d7k\u00d9l\u00dbm\u00dd") - buf.write("n\u00dfo\u00e1p\u00e3q\u00e5r\u00e7s\u00e9t\u00ebu\u00ed") - buf.write("v\u00ef\2\u00f1w\u00f3x\u00f5y\u00f7z\u00f9{\u00fb|\u00fd") - buf.write("}\u00ff~\u0101\177\u0103\u0080\u0105\u0081\u0107\u0082") - buf.write("\u0109\u0083\u010b\u0084\u010d\u0085\u010f\u0086\u0111") - buf.write("\u0087\u0113\2\u0115\u0088\u0117\u0089\u0119\u008a\u011b") - buf.write("\u008b\u011d\u008c\u011f\u008d\u0121\u008e\u0123\u008f") - buf.write("\u0125\u0090\u0127\u0091\u0129\u0092\u012b\u0093\u012d") - buf.write("\u0094\u012f\u0095\u0131\u0096\u0133\u0097\u0135\u0098") - buf.write("\u0137\u0099\u0139\u009a\u013b\u009b\u013d\u009c\u013f") - buf.write("\u009d\u0141\u009e\u0143\u009f\u0145\u00a0\u0147\u00a1") - buf.write("\u0149\u00a2\u014b\u00a3\u014d\u00a4\u014f\u00a5\u0151") - buf.write("\u00a6\u0153\u00a7\u0155\u00a8\u0157\u00a9\u0159\u00aa") - buf.write("\u015b\u00ab\u015d\2\u015f\u00ac\u0161\u00ad\u0163\u00ae") - buf.write("\u0165\u00af\u0167\u00b0\u0169\u00b1\u016b\u00b2\u016d") - buf.write("\u00b3\u016f\u00b4\u0171\u00b5\u0173\u00b6\u0175\u00b7") - buf.write("\u0177\u00b8\u0179\u00b9\u017b\u00ba\u017d\u00bb\u017f") - buf.write("\u00bc\u0181\u00bd\u0183\u00be\u0185\u00bf\u0187\u00c0") - buf.write("\u0189\u00c1\u018b\2\u018d\u00c2\u018f\u00c3\u0191\u00c4") - buf.write("\u0193\2\u0195\u00c5\u0197\2\u0199\2\u019b\2\u019d\2\u019f") - buf.write("\2\u01a1\2\u01a3\2\u01a5\2\3\2\37\4\2>>@@\6\2\f\f\17\17") - buf.write("\u0087\u0087\u202a\u202b\4\2\13\13\"\"\4\2\f\f\17\17\4") - buf.write("\2EEee\4\2\61\61<<\4\2ZZzz\4\2--//\4\2RRrr\6\2CDFGcdf") - buf.write("g\4\2GGgg\6\2PPUUppuu\16\2HIKKNNQQSS\\\\hikknnqqss||\6") - buf.write("\2FGSSfgss\4\2\\\\||\5\2\62;CHch\4\2DDdd\3\2\62\63\4\2") - buf.write("QQqq\3\2\629\5\2\f\f\17\17))\3\2))\3\2$$\4\2C\\c|\5\2") - buf.write("\f\f\17\17$$\4\2\"\"\62\62\5\2ffhhkk\4\2ggii\4\2FGfg\2") - buf.write("\u0ec9\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2") - buf.write("\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2") - buf.write("\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33") - buf.write("\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2") - buf.write("\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2") - buf.write("\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2") - buf.write("\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2") - buf.write("\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3") - buf.write("\2\2\2\2K\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2U\3\2\2\2\2W") - buf.write("\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2") - buf.write("a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2") - buf.write("\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2") - buf.write("\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2") - buf.write("\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085") - buf.write("\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2") - buf.write("\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093") - buf.write("\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2") - buf.write("\2\2\u009b\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1") - buf.write("\3\2\2\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2") - buf.write("\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af") - buf.write("\3\2\2\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2") - buf.write("\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd") - buf.write("\3\2\2\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2") - buf.write("\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb") - buf.write("\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2") - buf.write("\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9") - buf.write("\3\2\2\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2") - buf.write("\2\2\u00e1\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7") - buf.write("\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2") - buf.write("\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7") - buf.write("\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2") - buf.write("\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105") - buf.write("\3\2\2\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010b\3\2\2") - buf.write("\2\2\u010d\3\2\2\2\2\u010f\3\2\2\2\2\u0111\3\2\2\2\2\u0115") - buf.write("\3\2\2\2\2\u0117\3\2\2\2\2\u0119\3\2\2\2\2\u011b\3\2\2") - buf.write("\2\2\u011d\3\2\2\2\2\u011f\3\2\2\2\2\u0121\3\2\2\2\2\u0123") - buf.write("\3\2\2\2\2\u0125\3\2\2\2\2\u0127\3\2\2\2\2\u0129\3\2\2") - buf.write("\2\2\u012b\3\2\2\2\2\u012d\3\2\2\2\2\u012f\3\2\2\2\2\u0131") - buf.write("\3\2\2\2\2\u0133\3\2\2\2\2\u0135\3\2\2\2\2\u0137\3\2\2") - buf.write("\2\2\u0139\3\2\2\2\2\u013b\3\2\2\2\2\u013d\3\2\2\2\2\u013f") - buf.write("\3\2\2\2\2\u0141\3\2\2\2\2\u0143\3\2\2\2\2\u0145\3\2\2") - buf.write("\2\2\u0147\3\2\2\2\2\u0149\3\2\2\2\2\u014b\3\2\2\2\2\u014d") - buf.write("\3\2\2\2\2\u014f\3\2\2\2\2\u0151\3\2\2\2\2\u0153\3\2\2") - buf.write("\2\2\u0155\3\2\2\2\2\u0157\3\2\2\2\2\u0159\3\2\2\2\2\u015b") - buf.write("\3\2\2\2\2\u015f\3\2\2\2\2\u0161\3\2\2\2\2\u0163\3\2\2") - buf.write("\2\2\u0165\3\2\2\2\2\u0167\3\2\2\2\2\u0169\3\2\2\2\2\u016b") - buf.write("\3\2\2\2\2\u016d\3\2\2\2\2\u016f\3\2\2\2\2\u0171\3\2\2") - buf.write("\2\2\u0173\3\2\2\2\2\u0175\3\2\2\2\2\u0177\3\2\2\2\2\u0179") - buf.write("\3\2\2\2\2\u017b\3\2\2\2\2\u017d\3\2\2\2\2\u017f\3\2\2") - buf.write("\2\2\u0181\3\2\2\2\2\u0183\3\2\2\2\2\u0185\3\2\2\2\2\u0187") - buf.write("\3\2\2\2\2\u0189\3\2\2\2\2\u018d\3\2\2\2\2\u018f\3\2\2") - buf.write("\2\2\u0191\3\2\2\2\2\u0195\3\2\2\2\3\u01c2\3\2\2\2\5\u01dc") - buf.write("\3\2\2\2\7\u01f0\3\2\2\2\t\u020d\3\2\2\2\13\u0224\3\2") - buf.write("\2\2\r\u0235\3\2\2\2\17\u024f\3\2\2\2\21\u0260\3\2\2\2") - buf.write("\23\u0280\3\2\2\2\25\u02a7\3\2\2\2\27\u02c4\3\2\2\2\31") - buf.write("\u02cf\3\2\2\2\33\u02ec\3\2\2\2\35\u0300\3\2\2\2\37\u0323") - buf.write("\3\2\2\2!\u033d\3\2\2\2#\u034f\3\2\2\2%\u0363\3\2\2\2") - buf.write("\'\u036b\3\2\2\2)\u0376\3\2\2\2+\u0387\3\2\2\2-\u03a1") - buf.write("\3\2\2\2/\u03ac\3\2\2\2\61\u03ba\3\2\2\2\63\u03bc\3\2") - buf.write("\2\2\65\u03dd\3\2\2\2\67\u03df\3\2\2\29\u03f3\3\2\2\2") - buf.write(";\u0433\3\2\2\2=\u0435\3\2\2\2?\u044a\3\2\2\2A\u045e\3") - buf.write("\2\2\2C\u047b\3\2\2\2E\u0489\3\2\2\2G\u04ac\3\2\2\2I\u04c9") - buf.write("\3\2\2\2K\u04e0\3\2\2\2M\u04f7\3\2\2\2O\u04f9\3\2\2\2") - buf.write("Q\u0513\3\2\2\2S\u0527\3\2\2\2U\u052b\3\2\2\2W\u0545\3") - buf.write("\2\2\2Y\u0553\3\2\2\2[\u0570\3\2\2\2]\u058d\3\2\2\2_\u05a7") - buf.write("\3\2\2\2a\u05c4\3\2\2\2c\u05d2\3\2\2\2e\u05e0\3\2\2\2") - buf.write("g\u05e8\3\2\2\2i\u05f6\3\2\2\2k\u05fe\3\2\2\2m\u0608\3") - buf.write("\2\2\2o\u0612\3\2\2\2q\u061e\3\2\2\2s\u062c\3\2\2\2u\u0640") - buf.write("\3\2\2\2w\u0648\3\2\2\2y\u065f\3\2\2\2{\u0679\3\2\2\2") - buf.write("}\u0693\3\2\2\2\177\u06a4\3\2\2\2\u0081\u06b8\3\2\2\2") - buf.write("\u0083\u06ce\3\2\2\2\u0085\u06dc\3\2\2\2\u0087\u06ea\3") - buf.write("\2\2\2\u0089\u0701\3\2\2\2\u008b\u0715\3\2\2\2\u008d\u0723") - buf.write("\3\2\2\2\u008f\u072e\3\2\2\2\u0091\u073a\3\2\2\2\u0093") - buf.write("\u0746\3\2\2\2\u0095\u0752\3\2\2\2\u0097\u075c\3\2\2\2") - buf.write("\u0099\u0768\3\2\2\2\u009b\u0772\3\2\2\2\u009d\u077a\3") - buf.write("\2\2\2\u009f\u0784\3\2\2\2\u00a1\u078c\3\2\2\2\u00a3\u079a") - buf.write("\3\2\2\2\u00a5\u07a6\3\2\2\2\u00a7\u07b8\3\2\2\2\u00a9") - buf.write("\u07cc\3\2\2\2\u00ab\u07d4\3\2\2\2\u00ad\u07de\3\2\2\2") - buf.write("\u00af\u07ee\3\2\2\2\u00b1\u07f6\3\2\2\2\u00b3\u0804\3") - buf.write("\2\2\2\u00b5\u0812\3\2\2\2\u00b7\u081a\3\2\2\2\u00b9\u0824") - buf.write("\3\2\2\2\u00bb\u0838\3\2\2\2\u00bd\u0844\3\2\2\2\u00bf") - buf.write("\u0852\3\2\2\2\u00c1\u0862\3\2\2\2\u00c3\u0878\3\2\2\2") - buf.write("\u00c5\u0884\3\2\2\2\u00c7\u088e\3\2\2\2\u00c9\u089c\3") - buf.write("\2\2\2\u00cb\u08aa\3\2\2\2\u00cd\u08bc\3\2\2\2\u00cf\u08c6") - buf.write("\3\2\2\2\u00d1\u08d0\3\2\2\2\u00d3\u08dc\3\2\2\2\u00d5") - buf.write("\u08ea\3\2\2\2\u00d7\u08f8\3\2\2\2\u00d9\u0904\3\2\2\2") - buf.write("\u00db\u090e\3\2\2\2\u00dd\u0922\3\2\2\2\u00df\u093a\3") - buf.write("\2\2\2\u00e1\u094a\3\2\2\2\u00e3\u095a\3\2\2\2\u00e5\u096e") - buf.write("\3\2\2\2\u00e7\u097e\3\2\2\2\u00e9\u098c\3\2\2\2\u00eb") - buf.write("\u09a6\3\2\2\2\u00ed\u09b8\3\2\2\2\u00ef\u09bd\3\2\2\2") - buf.write("\u00f1\u09c7\3\2\2\2\u00f3\u09cf\3\2\2\2\u00f5\u09d3\3") - buf.write("\2\2\2\u00f7\u0a00\3\2\2\2\u00f9\u0a04\3\2\2\2\u00fb\u0a06") - buf.write("\3\2\2\2\u00fd\u0a08\3\2\2\2\u00ff\u0a0a\3\2\2\2\u0101") - buf.write("\u0a16\3\2\2\2\u0103\u0a28\3\2\2\2\u0105\u0a32\3\2\2\2") - buf.write("\u0107\u0a34\3\2\2\2\u0109\u0a36\3\2\2\2\u010b\u0a38\3") - buf.write("\2\2\2\u010d\u0a3a\3\2\2\2\u010f\u0a3c\3\2\2\2\u0111\u0a3e") - buf.write("\3\2\2\2\u0113\u0a40\3\2\2\2\u0115\u0a42\3\2\2\2\u0117") - buf.write("\u0a44\3\2\2\2\u0119\u0a51\3\2\2\2\u011b\u0a5d\3\2\2\2") - buf.write("\u011d\u0a67\3\2\2\2\u011f\u0a73\3\2\2\2\u0121\u0a81\3") - buf.write("\2\2\2\u0123\u0a8d\3\2\2\2\u0125\u0a99\3\2\2\2\u0127\u0aa3") - buf.write("\3\2\2\2\u0129\u0aad\3\2\2\2\u012b\u0ab7\3\2\2\2\u012d") - buf.write("\u0ac1\3\2\2\2\u012f\u0acb\3\2\2\2\u0131\u0ad5\3\2\2\2") - buf.write("\u0133\u0ae3\3\2\2\2\u0135\u0af3\3\2\2\2\u0137\u0af6\3") - buf.write("\2\2\2\u0139\u0afd\3\2\2\2\u013b\u0b0a\3\2\2\2\u013d\u0b22") - buf.write("\3\2\2\2\u013f\u0b27\3\2\2\2\u0141\u0b31\3\2\2\2\u0143") - buf.write("\u0b3a\3\2\2\2\u0145\u0b45\3\2\2\2\u0147\u0b4d\3\2\2\2") - buf.write("\u0149\u0b50\3\2\2\2\u014b\u0b60\3\2\2\2\u014d\u0b68\3") - buf.write("\2\2\2\u014f\u0b6c\3\2\2\2\u0151\u0b76\3\2\2\2\u0153\u0b80") - buf.write("\3\2\2\2\u0155\u0b97\3\2\2\2\u0157\u0bab\3\2\2\2\u0159") - buf.write("\u0bc2\3\2\2\2\u015b\u0bd9\3\2\2\2\u015d\u0bdb\3\2\2\2") - buf.write("\u015f\u0bdd\3\2\2\2\u0161\u0bdf\3\2\2\2\u0163\u0be2\3") - buf.write("\2\2\2\u0165\u0be4\3\2\2\2\u0167\u0bf7\3\2\2\2\u0169\u0c09") - buf.write("\3\2\2\2\u016b\u0c1b\3\2\2\2\u016d\u0c59\3\2\2\2\u016f") - buf.write("\u0c80\3\2\2\2\u0171\u0c96\3\2\2\2\u0173\u0ca6\3\2\2\2") - buf.write("\u0175\u0cb2\3\2\2\2\u0177\u0cd0\3\2\2\2\u0179\u0ced\3") - buf.write("\2\2\2\u017b\u0cef\3\2\2\2\u017d\u0cf5\3\2\2\2\u017f\u0cfb") - buf.write("\3\2\2\2\u0181\u0d0b\3\2\2\2\u0183\u0d0d\3\2\2\2\u0185") - buf.write("\u0d1c\3\2\2\2\u0187\u0d28\3\2\2\2\u0189\u0d2d\3\2\2\2") - buf.write("\u018b\u0d2f\3\2\2\2\u018d\u0d31\3\2\2\2\u018f\u0d33\3") - buf.write("\2\2\2\u0191\u0d3d\3\2\2\2\u0193\u0d42\3\2\2\2\u0195\u0d72") - buf.write("\3\2\2\2\u0197\u0d76\3\2\2\2\u0199\u0d7a\3\2\2\2\u019b") - buf.write("\u0d7e\3\2\2\2\u019d\u0d80\3\2\2\2\u019f\u0da2\3\2\2\2") - buf.write("\u01a1\u0da4\3\2\2\2\u01a3\u0dae\3\2\2\2\u01a5\u0db0\3") - buf.write("\2\2\2\u01a7\u01a8\7T\2\2\u01a8\u01a9\7G\2\2\u01a9\u01aa") - buf.write("\7E\2\2\u01aa\u01ab\7W\2\2\u01ab\u01ac\7T\2\2\u01ac\u01ad") - buf.write("\7U\2\2\u01ad\u01ae\7K\2\2\u01ae\u01af\7X\2\2\u01af\u01c3") - buf.write("\7G\2\2\u01b0\u01b1\7t\2\2\u01b1\u01b2\7g\2\2\u01b2\u01b3") - buf.write("\7e\2\2\u01b3\u01b4\7w\2\2\u01b4\u01b5\7t\2\2\u01b5\u01b6") - buf.write("\7u\2\2\u01b6\u01b7\7k\2\2\u01b7\u01b8\7x\2\2\u01b8\u01c3") - buf.write("\7g\2\2\u01b9\u01ba\7T\2\2\u01ba\u01bb\7g\2\2\u01bb\u01bc") - buf.write("\7e\2\2\u01bc\u01bd\7w\2\2\u01bd\u01be\7t\2\2\u01be\u01bf") - buf.write("\7u\2\2\u01bf\u01c0\7k\2\2\u01c0\u01c1\7x\2\2\u01c1\u01c3") - buf.write("\7g\2\2\u01c2\u01a7\3\2\2\2\u01c2\u01b0\3\2\2\2\u01c2") - buf.write("\u01b9\3\2\2\2\u01c3\4\3\2\2\2\u01c4\u01c5\7e\2\2\u01c5") - buf.write("\u01c6\7q\2\2\u01c6\u01c7\7p\2\2\u01c7\u01c8\7v\2\2\u01c8") - buf.write("\u01c9\7c\2\2\u01c9\u01ca\7k\2\2\u01ca\u01cb\7p\2\2\u01cb") - buf.write("\u01dd\7u\2\2\u01cc\u01cd\7E\2\2\u01cd\u01ce\7Q\2\2\u01ce") - buf.write("\u01cf\7P\2\2\u01cf\u01d0\7V\2\2\u01d0\u01d1\7C\2\2\u01d1") - buf.write("\u01d2\7K\2\2\u01d2\u01d3\7P\2\2\u01d3\u01dd\7U\2\2\u01d4") - buf.write("\u01d5\7E\2\2\u01d5\u01d6\7q\2\2\u01d6\u01d7\7p\2\2\u01d7") - buf.write("\u01d8\7v\2\2\u01d8\u01d9\7c\2\2\u01d9\u01da\7k\2\2\u01da") - buf.write("\u01db\7p\2\2\u01db\u01dd\7u\2\2\u01dc\u01c4\3\2\2\2\u01dc") - buf.write("\u01cc\3\2\2\2\u01dc\u01d4\3\2\2\2\u01dd\6\3\2\2\2\u01de") - buf.write("\u01df\7O\2\2\u01df\u01e0\7Q\2\2\u01e0\u01e1\7F\2\2\u01e1") - buf.write("\u01e2\7W\2\2\u01e2\u01e3\7N\2\2\u01e3\u01f1\7G\2\2\u01e4") - buf.write("\u01e5\7o\2\2\u01e5\u01e6\7q\2\2\u01e6\u01e7\7f\2\2\u01e7") - buf.write("\u01e8\7w\2\2\u01e8\u01e9\7n\2\2\u01e9\u01f1\7g\2\2\u01ea") - buf.write("\u01eb\7O\2\2\u01eb\u01ec\7q\2\2\u01ec\u01ed\7f\2\2\u01ed") - buf.write("\u01ee\7w\2\2\u01ee\u01ef\7n\2\2\u01ef\u01f1\7g\2\2\u01f0") - buf.write("\u01de\3\2\2\2\u01f0\u01e4\3\2\2\2\u01f0\u01ea\3\2\2\2") - buf.write("\u01f1\b\3\2\2\2\u01f2\u01f3\7G\2\2\u01f3\u01f4\7P\2\2") - buf.write("\u01f4\u01f5\7F\2\2\u01f5\u01f6\7O\2\2\u01f6\u01f7\7Q") - buf.write("\2\2\u01f7\u01f8\7F\2\2\u01f8\u01f9\7W\2\2\u01f9\u01fa") - buf.write("\7N\2\2\u01fa\u020e\7G\2\2\u01fb\u01fc\7g\2\2\u01fc\u01fd") - buf.write("\7p\2\2\u01fd\u01fe\7f\2\2\u01fe\u01ff\7o\2\2\u01ff\u0200") - buf.write("\7q\2\2\u0200\u0201\7f\2\2\u0201\u0202\7w\2\2\u0202\u0203") - buf.write("\7n\2\2\u0203\u020e\7g\2\2\u0204\u0205\7G\2\2\u0205\u0206") - buf.write("\7p\2\2\u0206\u0207\7f\2\2\u0207\u0208\7o\2\2\u0208\u0209") - buf.write("\7q\2\2\u0209\u020a\7f\2\2\u020a\u020b\7w\2\2\u020b\u020c") - buf.write("\7n\2\2\u020c\u020e\7g\2\2\u020d\u01f2\3\2\2\2\u020d\u01fb") - buf.write("\3\2\2\2\u020d\u0204\3\2\2\2\u020e\n\3\2\2\2\u020f\u0210") - buf.write("\7r\2\2\u0210\u0211\7t\2\2\u0211\u0212\7q\2\2\u0212\u0213") - buf.write("\7i\2\2\u0213\u0214\7t\2\2\u0214\u0215\7c\2\2\u0215\u0225") - buf.write("\7o\2\2\u0216\u0217\7R\2\2\u0217\u0218\7T\2\2\u0218\u0219") - buf.write("\7Q\2\2\u0219\u021a\7I\2\2\u021a\u021b\7T\2\2\u021b\u021c") - buf.write("\7C\2\2\u021c\u0225\7O\2\2\u021d\u021e\7R\2\2\u021e\u021f") - buf.write("\7t\2\2\u021f\u0220\7q\2\2\u0220\u0221\7i\2\2\u0221\u0222") - buf.write("\7t\2\2\u0222\u0223\7c\2\2\u0223\u0225\7o\2\2\u0224\u020f") - buf.write("\3\2\2\2\u0224\u0216\3\2\2\2\u0224\u021d\3\2\2\2\u0225") - buf.write("\f\3\2\2\2\u0226\u0227\7g\2\2\u0227\u0228\7p\2\2\u0228") - buf.write("\u0229\7v\2\2\u0229\u022a\7t\2\2\u022a\u0236\7{\2\2\u022b") - buf.write("\u022c\7G\2\2\u022c\u022d\7P\2\2\u022d\u022e\7V\2\2\u022e") - buf.write("\u022f\7T\2\2\u022f\u0236\7[\2\2\u0230\u0231\7G\2\2\u0231") - buf.write("\u0232\7p\2\2\u0232\u0233\7v\2\2\u0233\u0234\7t\2\2\u0234") - buf.write("\u0236\7{\2\2\u0235\u0226\3\2\2\2\u0235\u022b\3\2\2\2") - buf.write("\u0235\u0230\3\2\2\2\u0236\16\3\2\2\2\u0237\u0238\7h\2") - buf.write("\2\u0238\u0239\7w\2\2\u0239\u023a\7p\2\2\u023a\u023b\7") - buf.write("e\2\2\u023b\u023c\7v\2\2\u023c\u023d\7k\2\2\u023d\u023e") - buf.write("\7q\2\2\u023e\u0250\7p\2\2\u023f\u0240\7H\2\2\u0240\u0241") - buf.write("\7W\2\2\u0241\u0242\7P\2\2\u0242\u0243\7E\2\2\u0243\u0244") - buf.write("\7V\2\2\u0244\u0245\7K\2\2\u0245\u0246\7Q\2\2\u0246\u0250") - buf.write("\7P\2\2\u0247\u0248\7H\2\2\u0248\u0249\7w\2\2\u0249\u024a") - buf.write("\7p\2\2\u024a\u024b\7e\2\2\u024b\u024c\7v\2\2\u024c\u024d") - buf.write("\7k\2\2\u024d\u024e\7q\2\2\u024e\u0250\7p\2\2\u024f\u0237") - buf.write("\3\2\2\2\u024f\u023f\3\2\2\2\u024f\u0247\3\2\2\2\u0250") - buf.write("\20\3\2\2\2\u0251\u0252\7d\2\2\u0252\u0253\7n\2\2\u0253") - buf.write("\u0254\7q\2\2\u0254\u0255\7e\2\2\u0255\u0261\7m\2\2\u0256") - buf.write("\u0257\7D\2\2\u0257\u0258\7N\2\2\u0258\u0259\7Q\2\2\u0259") - buf.write("\u025a\7E\2\2\u025a\u0261\7M\2\2\u025b\u025c\7D\2\2\u025c") - buf.write("\u025d\7n\2\2\u025d\u025e\7q\2\2\u025e\u025f\7e\2\2\u025f") - buf.write("\u0261\7m\2\2\u0260\u0251\3\2\2\2\u0260\u0256\3\2\2\2") - buf.write("\u0260\u025b\3\2\2\2\u0261\22\3\2\2\2\u0262\u0263\7u\2") - buf.write("\2\u0263\u0264\7w\2\2\u0264\u0265\7d\2\2\u0265\u0266\7") - buf.write("t\2\2\u0266\u0267\7q\2\2\u0267\u0268\7w\2\2\u0268\u0269") - buf.write("\7v\2\2\u0269\u026a\7k\2\2\u026a\u026b\7p\2\2\u026b\u0281") - buf.write("\7g\2\2\u026c\u026d\7U\2\2\u026d\u026e\7W\2\2\u026e\u026f") - buf.write("\7D\2\2\u026f\u0270\7T\2\2\u0270\u0271\7Q\2\2\u0271\u0272") - buf.write("\7W\2\2\u0272\u0273\7V\2\2\u0273\u0274\7K\2\2\u0274\u0275") - buf.write("\7P\2\2\u0275\u0281\7G\2\2\u0276\u0277\7U\2\2\u0277\u0278") - buf.write("\7w\2\2\u0278\u0279\7d\2\2\u0279\u027a\7t\2\2\u027a\u027b") - buf.write("\7q\2\2\u027b\u027c\7w\2\2\u027c\u027d\7v\2\2\u027d\u027e") - buf.write("\7k\2\2\u027e\u027f\7p\2\2\u027f\u0281\7g\2\2\u0280\u0262") - buf.write("\3\2\2\2\u0280\u026c\3\2\2\2\u0280\u0276\3\2\2\2\u0281") - buf.write("\24\3\2\2\2\u0282\u0283\7G\2\2\u0283\u0284\7P\2\2\u0284") - buf.write("\u0285\7F\2\2\u0285\u0286\7K\2\2\u0286\u0287\7P\2\2\u0287") - buf.write("\u0288\7V\2\2\u0288\u0289\7G\2\2\u0289\u028a\7T\2\2\u028a") - buf.write("\u028b\7H\2\2\u028b\u028c\7C\2\2\u028c\u028d\7E\2\2\u028d") - buf.write("\u02a8\7G\2\2\u028e\u028f\7\"\2\2\u028f\u0290\7g\2\2\u0290") - buf.write("\u0291\7p\2\2\u0291\u0292\7f\2\2\u0292\u0293\7k\2\2\u0293") - buf.write("\u0294\7p\2\2\u0294\u0295\7v\2\2\u0295\u0296\7g\2\2\u0296") - buf.write("\u0297\7t\2\2\u0297\u0298\7h\2\2\u0298\u0299\7c\2\2\u0299") - buf.write("\u029a\7e\2\2\u029a\u02a8\7g\2\2\u029b\u029c\7G\2\2\u029c") - buf.write("\u029d\7p\2\2\u029d\u029e\7f\2\2\u029e\u029f\7k\2\2\u029f") - buf.write("\u02a0\7p\2\2\u02a0\u02a1\7v\2\2\u02a1\u02a2\7g\2\2\u02a2") - buf.write("\u02a3\7t\2\2\u02a3\u02a4\7h\2\2\u02a4\u02a5\7c\2\2\u02a5") - buf.write("\u02a6\7e\2\2\u02a6\u02a8\7g\2\2\u02a7\u0282\3\2\2\2\u02a7") - buf.write("\u028e\3\2\2\2\u02a7\u029b\3\2\2\2\u02a8\26\3\2\2\2\u02a9") - buf.write("\u02aa\7r\2\2\u02aa\u02ab\7t\2\2\u02ab\u02ac\7q\2\2\u02ac") - buf.write("\u02ad\7e\2\2\u02ad\u02ae\7g\2\2\u02ae\u02af\7f\2\2\u02af") - buf.write("\u02b0\7w\2\2\u02b0\u02b1\7t\2\2\u02b1\u02c5\7g\2\2\u02b2") - buf.write("\u02b3\7R\2\2\u02b3\u02b4\7T\2\2\u02b4\u02b5\7Q\2\2\u02b5") - buf.write("\u02b6\7E\2\2\u02b6\u02b7\7G\2\2\u02b7\u02b8\7F\2\2\u02b8") - buf.write("\u02b9\7W\2\2\u02b9\u02ba\7T\2\2\u02ba\u02c5\7G\2\2\u02bb") - buf.write("\u02bc\7R\2\2\u02bc\u02bd\7t\2\2\u02bd\u02be\7q\2\2\u02be") - buf.write("\u02bf\7e\2\2\u02bf\u02c0\7g\2\2\u02c0\u02c1\7f\2\2\u02c1") - buf.write("\u02c2\7w\2\2\u02c2\u02c3\7t\2\2\u02c3\u02c5\7g\2\2\u02c4") - buf.write("\u02a9\3\2\2\2\u02c4\u02b2\3\2\2\2\u02c4\u02bb\3\2\2\2") - buf.write("\u02c5\30\3\2\2\2\u02c6\u02c7\7G\2\2\u02c7\u02c8\7P\2") - buf.write("\2\u02c8\u02d0\7F\2\2\u02c9\u02ca\7g\2\2\u02ca\u02cb\7") - buf.write("p\2\2\u02cb\u02d0\7f\2\2\u02cc\u02cd\7G\2\2\u02cd\u02ce") - buf.write("\7p\2\2\u02ce\u02d0\7f\2\2\u02cf\u02c6\3\2\2\2\u02cf\u02c9") - buf.write("\3\2\2\2\u02cf\u02cc\3\2\2\2\u02d0\32\3\2\2\2\u02d1\u02d2") - buf.write("\7f\2\2\u02d2\u02d3\7k\2\2\u02d3\u02d4\7o\2\2\u02d4\u02d5") - buf.write("\7g\2\2\u02d5\u02d6\7p\2\2\u02d6\u02d7\7u\2\2\u02d7\u02d8") - buf.write("\7k\2\2\u02d8\u02d9\7q\2\2\u02d9\u02ed\7p\2\2\u02da\u02db") - buf.write("\7F\2\2\u02db\u02dc\7K\2\2\u02dc\u02dd\7O\2\2\u02dd\u02de") - buf.write("\7G\2\2\u02de\u02df\7P\2\2\u02df\u02e0\7U\2\2\u02e0\u02e1") - buf.write("\7K\2\2\u02e1\u02e2\7Q\2\2\u02e2\u02ed\7P\2\2\u02e3\u02e4") - buf.write("\7F\2\2\u02e4\u02e5\7k\2\2\u02e5\u02e6\7o\2\2\u02e6\u02e7") - buf.write("\7g\2\2\u02e7\u02e8\7p\2\2\u02e8\u02e9\7u\2\2\u02e9\u02ea") - buf.write("\7k\2\2\u02ea\u02eb\7q\2\2\u02eb\u02ed\7p\2\2\u02ec\u02d1") - buf.write("\3\2\2\2\u02ec\u02da\3\2\2\2\u02ec\u02e3\3\2\2\2\u02ed") - buf.write("\34\3\2\2\2\u02ee\u02ef\7V\2\2\u02ef\u02f0\7C\2\2\u02f0") - buf.write("\u02f1\7T\2\2\u02f1\u02f2\7I\2\2\u02f2\u02f3\7G\2\2\u02f3") - buf.write("\u0301\7V\2\2\u02f4\u02f5\7v\2\2\u02f5\u02f6\7c\2\2\u02f6") - buf.write("\u02f7\7t\2\2\u02f7\u02f8\7i\2\2\u02f8\u02f9\7g\2\2\u02f9") - buf.write("\u0301\7v\2\2\u02fa\u02fb\7V\2\2\u02fb\u02fc\7c\2\2\u02fc") - buf.write("\u02fd\7t\2\2\u02fd\u02fe\7i\2\2\u02fe\u02ff\7g\2\2\u02ff") - buf.write("\u0301\7v\2\2\u0300\u02ee\3\2\2\2\u0300\u02f4\3\2\2\2") - buf.write("\u0300\u02fa\3\2\2\2\u0301\36\3\2\2\2\u0302\u0303\7C\2") - buf.write("\2\u0303\u0304\7N\2\2\u0304\u0305\7N\2\2\u0305\u0306\7") - buf.write("Q\2\2\u0306\u0307\7E\2\2\u0307\u0308\7C\2\2\u0308\u0309") - buf.write("\7V\2\2\u0309\u030a\7C\2\2\u030a\u030b\7D\2\2\u030b\u030c") - buf.write("\7N\2\2\u030c\u0324\7G\2\2\u030d\u030e\7c\2\2\u030e\u030f") - buf.write("\7n\2\2\u030f\u0310\7n\2\2\u0310\u0311\7q\2\2\u0311\u0312") - buf.write("\7e\2\2\u0312\u0313\7c\2\2\u0313\u0314\7v\2\2\u0314\u0315") - buf.write("\7c\2\2\u0315\u0316\7d\2\2\u0316\u0317\7n\2\2\u0317\u0324") - buf.write("\7g\2\2\u0318\u0319\7C\2\2\u0319\u031a\7n\2\2\u031a\u031b") - buf.write("\7n\2\2\u031b\u031c\7q\2\2\u031c\u031d\7e\2\2\u031d\u031e") - buf.write("\7c\2\2\u031e\u031f\7v\2\2\u031f\u0320\7c\2\2\u0320\u0321") - buf.write("\7d\2\2\u0321\u0322\7n\2\2\u0322\u0324\7g\2\2\u0323\u0302") - buf.write("\3\2\2\2\u0323\u030d\3\2\2\2\u0323\u0318\3\2\2\2\u0324") - buf.write(" \3\2\2\2\u0325\u0326\7Q\2\2\u0326\u0327\7R\2\2\u0327") - buf.write("\u0328\7V\2\2\u0328\u0329\7K\2\2\u0329\u032a\7Q\2\2\u032a") - buf.write("\u032b\7P\2\2\u032b\u032c\7C\2\2\u032c\u033e\7N\2\2\u032d") - buf.write("\u032e\7q\2\2\u032e\u032f\7r\2\2\u032f\u0330\7v\2\2\u0330") - buf.write("\u0331\7k\2\2\u0331\u0332\7q\2\2\u0332\u0333\7p\2\2\u0333") - buf.write("\u0334\7c\2\2\u0334\u033e\7n\2\2\u0335\u0336\7Q\2\2\u0336") - buf.write("\u0337\7r\2\2\u0337\u0338\7v\2\2\u0338\u0339\7k\2\2\u0339") - buf.write("\u033a\7q\2\2\u033a\u033b\7p\2\2\u033b\u033c\7c\2\2\u033c") - buf.write("\u033e\7n\2\2\u033d\u0325\3\2\2\2\u033d\u032d\3\2\2\2") - buf.write("\u033d\u0335\3\2\2\2\u033e\"\3\2\2\2\u033f\u0340\7P\2") - buf.write("\2\u0340\u0341\7C\2\2\u0341\u0342\7O\2\2\u0342\u0343\7") - buf.write("G\2\2\u0343\u0344\7N\2\2\u0344\u0345\7K\2\2\u0345\u0346") - buf.write("\7U\2\2\u0346\u0350\7V\2\2\u0347\u0348\7p\2\2\u0348\u0349") - buf.write("\7c\2\2\u0349\u034a\7o\2\2\u034a\u034b\7g\2\2\u034b\u034c") - buf.write("\7n\2\2\u034c\u034d\7k\2\2\u034d\u034e\7u\2\2\u034e\u0350") - buf.write("\7v\2\2\u034f\u033f\3\2\2\2\u034f\u0347\3\2\2\2\u0350") - buf.write("$\3\2\2\2\u0351\u0352\7K\2\2\u0352\u0353\7P\2\2\u0353") - buf.write("\u0354\7V\2\2\u0354\u0355\7G\2\2\u0355\u0356\7P\2\2\u0356") - buf.write("\u0364\7V\2\2\u0357\u0358\7k\2\2\u0358\u0359\7p\2\2\u0359") - buf.write("\u035a\7v\2\2\u035a\u035b\7g\2\2\u035b\u035c\7p\2\2\u035c") - buf.write("\u0364\7v\2\2\u035d\u035e\7K\2\2\u035e\u035f\7p\2\2\u035f") - buf.write("\u0360\7v\2\2\u0360\u0361\7g\2\2\u0361\u0362\7p\2\2\u0362") - buf.write("\u0364\7v\2\2\u0363\u0351\3\2\2\2\u0363\u0357\3\2\2\2") - buf.write("\u0363\u035d\3\2\2\2\u0364&\3\2\2\2\u0365\u0366\7K\2\2") - buf.write("\u0366\u036c\7P\2\2\u0367\u0368\7k\2\2\u0368\u036c\7p") - buf.write("\2\2\u0369\u036a\7K\2\2\u036a\u036c\7p\2\2\u036b\u0365") - buf.write("\3\2\2\2\u036b\u0367\3\2\2\2\u036b\u0369\3\2\2\2\u036c") - buf.write("(\3\2\2\2\u036d\u036e\7Q\2\2\u036e\u036f\7W\2\2\u036f") - buf.write("\u0377\7V\2\2\u0370\u0371\7q\2\2\u0371\u0372\7w\2\2\u0372") - buf.write("\u0377\7v\2\2\u0373\u0374\7Q\2\2\u0374\u0375\7w\2\2\u0375") - buf.write("\u0377\7v\2\2\u0376\u036d\3\2\2\2\u0376\u0370\3\2\2\2") - buf.write("\u0376\u0373\3\2\2\2\u0377*\3\2\2\2\u0378\u0379\7K\2\2") - buf.write("\u0379\u037a\7P\2\2\u037a\u037b\7Q\2\2\u037b\u037c\7W") - buf.write("\2\2\u037c\u0388\7V\2\2\u037d\u037e\7k\2\2\u037e\u037f") - buf.write("\7p\2\2\u037f\u0380\7q\2\2\u0380\u0381\7w\2\2\u0381\u0388") - buf.write("\7v\2\2\u0382\u0383\7K\2\2\u0383\u0384\7p\2\2\u0384\u0385") - buf.write("\7q\2\2\u0385\u0386\7w\2\2\u0386\u0388\7v\2\2\u0387\u0378") - buf.write("\3\2\2\2\u0387\u037d\3\2\2\2\u0387\u0382\3\2\2\2\u0388") - buf.write(",\3\2\2\2\u0389\u038a\7q\2\2\u038a\u038b\7r\2\2\u038b") - buf.write("\u038c\7g\2\2\u038c\u038d\7t\2\2\u038d\u038e\7c\2\2\u038e") - buf.write("\u038f\7v\2\2\u038f\u0390\7q\2\2\u0390\u03a2\7t\2\2\u0391") - buf.write("\u0392\7Q\2\2\u0392\u0393\7R\2\2\u0393\u0394\7G\2\2\u0394") - buf.write("\u0395\7T\2\2\u0395\u0396\7C\2\2\u0396\u0397\7V\2\2\u0397") - buf.write("\u0398\7Q\2\2\u0398\u03a2\7T\2\2\u0399\u039a\7Q\2\2\u039a") - buf.write("\u039b\7r\2\2\u039b\u039c\7g\2\2\u039c\u039d\7t\2\2\u039d") - buf.write("\u039e\7c\2\2\u039e\u039f\7v\2\2\u039f\u03a0\7q\2\2\u03a0") - buf.write("\u03a2\7t\2\2\u03a1\u0389\3\2\2\2\u03a1\u0391\3\2\2\2") - buf.write("\u03a1\u0399\3\2\2\2\u03a2.\3\2\2\2\u03a3\u03a4\7W\2\2") - buf.write("\u03a4\u03a5\7U\2\2\u03a5\u03ad\7G\2\2\u03a6\u03a7\7w") - buf.write("\2\2\u03a7\u03a8\7u\2\2\u03a8\u03ad\7g\2\2\u03a9\u03aa") - buf.write("\7W\2\2\u03aa\u03ab\7u\2\2\u03ab\u03ad\7g\2\2\u03ac\u03a3") - buf.write("\3\2\2\2\u03ac\u03a6\3\2\2\2\u03ac\u03a9\3\2\2\2\u03ad") - buf.write("\60\3\2\2\2\u03ae\u03af\7Q\2\2\u03af\u03b0\7P\2\2\u03b0") - buf.write("\u03b1\7N\2\2\u03b1\u03bb\7[\2\2\u03b2\u03b3\7q\2\2\u03b3") - buf.write("\u03b4\7p\2\2\u03b4\u03b5\7n\2\2\u03b5\u03bb\7{\2\2\u03b6") - buf.write("\u03b7\7Q\2\2\u03b7\u03b8\7p\2\2\u03b8\u03b9\7n\2\2\u03b9") - buf.write("\u03bb\7{\2\2\u03ba\u03ae\3\2\2\2\u03ba\u03b2\3\2\2\2") - buf.write("\u03ba\u03b6\3\2\2\2\u03bb\62\3\2\2\2\u03bc\u03bd\7?\2") - buf.write("\2\u03bd\u03be\7@\2\2\u03be\64\3\2\2\2\u03bf\u03c0\7C") - buf.write("\2\2\u03c0\u03c1\7U\2\2\u03c1\u03c2\7U\2\2\u03c2\u03c3") - buf.write("\7K\2\2\u03c3\u03c4\7I\2\2\u03c4\u03c5\7P\2\2\u03c5\u03c6") - buf.write("\7O\2\2\u03c6\u03c7\7G\2\2\u03c7\u03c8\7P\2\2\u03c8\u03de") - buf.write("\7V\2\2\u03c9\u03ca\7c\2\2\u03ca\u03cb\7u\2\2\u03cb\u03cc") - buf.write("\7u\2\2\u03cc\u03cd\7k\2\2\u03cd\u03ce\7i\2\2\u03ce\u03cf") - buf.write("\7p\2\2\u03cf\u03d0\7o\2\2\u03d0\u03d1\7g\2\2\u03d1\u03d2") - buf.write("\7p\2\2\u03d2\u03de\7v\2\2\u03d3\u03d4\7C\2\2\u03d4\u03d5") - buf.write("\7u\2\2\u03d5\u03d6\7u\2\2\u03d6\u03d7\7k\2\2\u03d7\u03d8") - buf.write("\7i\2\2\u03d8\u03d9\7p\2\2\u03d9\u03da\7o\2\2\u03da\u03db") - buf.write("\7g\2\2\u03db\u03dc\7p\2\2\u03dc\u03de\7v\2\2\u03dd\u03bf") - buf.write("\3\2\2\2\u03dd\u03c9\3\2\2\2\u03dd\u03d3\3\2\2\2\u03de") - buf.write("\66\3\2\2\2\u03df\u03e2\7\60\2\2\u03e0\u03e1\7^\2\2\u03e1") - buf.write("\u03e3\7c\2\2\u03e2\u03e0\3\2\2\2\u03e3\u03e4\3\2\2\2") - buf.write("\u03e4\u03e2\3\2\2\2\u03e4\u03e5\3\2\2\2\u03e5\u03e6\3") - buf.write("\2\2\2\u03e6\u03e7\7\60\2\2\u03e78\3\2\2\2\u03e8\u03e9") - buf.write("\7?\2\2\u03e9\u03f4\7?\2\2\u03ea\u03eb\7#\2\2\u03eb\u03f4") - buf.write("\7?\2\2\u03ec\u03ed\7>\2\2\u03ed\u03f4\7?\2\2\u03ee\u03ef") - buf.write("\7@\2\2\u03ef\u03f4\7?\2\2\u03f0\u03f4\t\2\2\2\u03f1\u03f2") - buf.write("\7\61\2\2\u03f2\u03f4\7?\2\2\u03f3\u03e8\3\2\2\2\u03f3") - buf.write("\u03ea\3\2\2\2\u03f3\u03ec\3\2\2\2\u03f3\u03ee\3\2\2\2") - buf.write("\u03f3\u03f0\3\2\2\2\u03f3\u03f1\3\2\2\2\u03f4:\3\2\2") - buf.write("\2\u03f5\u03f6\7F\2\2\u03f6\u03f7\7Q\2\2\u03f7\u03f8\7") - buf.write("W\2\2\u03f8\u03f9\7D\2\2\u03f9\u03fa\7N\2\2\u03fa\u03fb") - buf.write("\7G\2\2\u03fb\u03fc\7R\2\2\u03fc\u03fd\7T\2\2\u03fd\u03fe") - buf.write("\7G\2\2\u03fe\u03ff\7E\2\2\u03ff\u0400\7K\2\2\u0400\u0401") - buf.write("\7U\2\2\u0401\u0402\7K\2\2\u0402\u0403\7Q\2\2\u0403\u0434") - buf.write("\7P\2\2\u0404\u0405\7f\2\2\u0405\u0406\7q\2\2\u0406\u0407") - buf.write("\7w\2\2\u0407\u0408\7d\2\2\u0408\u0409\7n\2\2\u0409\u040a") - buf.write("\7g\2\2\u040a\u040b\7r\2\2\u040b\u040c\7t\2\2\u040c\u040d") - buf.write("\7g\2\2\u040d\u040e\7e\2\2\u040e\u040f\7k\2\2\u040f\u0410") - buf.write("\7u\2\2\u0410\u0411\7k\2\2\u0411\u0412\7q\2\2\u0412\u0434") - buf.write("\7p\2\2\u0413\u0414\7f\2\2\u0414\u0415\7q\2\2\u0415\u0416") - buf.write("\7w\2\2\u0416\u0417\7d\2\2\u0417\u0418\7n\2\2\u0418\u0419") - buf.write("\7g\2\2\u0419\u041a\7\"\2\2\u041a\u041b\7r\2\2\u041b\u041c") - buf.write("\7t\2\2\u041c\u041d\7g\2\2\u041d\u041e\7e\2\2\u041e\u041f") - buf.write("\7k\2\2\u041f\u0420\7u\2\2\u0420\u0421\7k\2\2\u0421\u0422") - buf.write("\7q\2\2\u0422\u0434\7p\2\2\u0423\u0424\7F\2\2\u0424\u0425") - buf.write("\7Q\2\2\u0425\u0426\7W\2\2\u0426\u0427\7D\2\2\u0427\u0428") - buf.write("\7N\2\2\u0428\u0429\7G\2\2\u0429\u042a\7\"\2\2\u042a\u042b") - buf.write("\7R\2\2\u042b\u042c\7T\2\2\u042c\u042d\7G\2\2\u042d\u042e") - buf.write("\7E\2\2\u042e\u042f\7K\2\2\u042f\u0430\7U\2\2\u0430\u0431") - buf.write("\7K\2\2\u0431\u0432\7Q\2\2\u0432\u0434\7P\2\2\u0433\u03f5") - buf.write("\3\2\2\2\u0433\u0404\3\2\2\2\u0433\u0413\3\2\2\2\u0433") - buf.write("\u0423\3\2\2\2\u0434<\3\2\2\2\u0435\u0436\7<\2\2\u0436") - buf.write("\u0437\7<\2\2\u0437>\3\2\2\2\u0438\u0439\7c\2\2\u0439") - buf.write("\u043a\7u\2\2\u043a\u043b\7u\2\2\u043b\u043c\7k\2\2\u043c") - buf.write("\u043d\7i\2\2\u043d\u044b\7p\2\2\u043e\u043f\7C\2\2\u043f") - buf.write("\u0440\7U\2\2\u0440\u0441\7U\2\2\u0441\u0442\7K\2\2\u0442") - buf.write("\u0443\7I\2\2\u0443\u044b\7P\2\2\u0444\u0445\7C\2\2\u0445") - buf.write("\u0446\7u\2\2\u0446\u0447\7u\2\2\u0447\u0448\7k\2\2\u0448") - buf.write("\u0449\7i\2\2\u0449\u044b\7p\2\2\u044a\u0438\3\2\2\2\u044a") - buf.write("\u043e\3\2\2\2\u044a\u0444\3\2\2\2\u044b@\3\2\2\2\u044c") - buf.write("\u044d\7E\2\2\u044d\u044e\7Q\2\2\u044e\u044f\7O\2\2\u044f") - buf.write("\u0450\7O\2\2\u0450\u0451\7Q\2\2\u0451\u045f\7P\2\2\u0452") - buf.write("\u0453\7e\2\2\u0453\u0454\7q\2\2\u0454\u0455\7o\2\2\u0455") - buf.write("\u0456\7o\2\2\u0456\u0457\7q\2\2\u0457\u045f\7p\2\2\u0458") - buf.write("\u0459\7E\2\2\u0459\u045a\7q\2\2\u045a\u045b\7o\2\2\u045b") - buf.write("\u045c\7o\2\2\u045c\u045d\7q\2\2\u045d\u045f\7p\2\2\u045e") - buf.write("\u044c\3\2\2\2\u045e\u0452\3\2\2\2\u045e\u0458\3\2\2\2") - buf.write("\u045fB\3\2\2\2\u0460\u0461\7G\2\2\u0461\u0462\7N\2\2") - buf.write("\u0462\u0463\7U\2\2\u0463\u0464\7G\2\2\u0464\u0465\7Y") - buf.write("\2\2\u0465\u0466\7J\2\2\u0466\u0467\7G\2\2\u0467\u0468") - buf.write("\7T\2\2\u0468\u047c\7G\2\2\u0469\u046a\7g\2\2\u046a\u046b") - buf.write("\7n\2\2\u046b\u046c\7u\2\2\u046c\u046d\7g\2\2\u046d\u046e") - buf.write("\7y\2\2\u046e\u046f\7j\2\2\u046f\u0470\7g\2\2\u0470\u0471") - buf.write("\7t\2\2\u0471\u047c\7g\2\2\u0472\u0473\7G\2\2\u0473\u0474") - buf.write("\7n\2\2\u0474\u0475\7u\2\2\u0475\u0476\7g\2\2\u0476\u0477") - buf.write("\7y\2\2\u0477\u0478\7j\2\2\u0478\u0479\7g\2\2\u0479\u047a") - buf.write("\7t\2\2\u047a\u047c\7g\2\2\u047b\u0460\3\2\2\2\u047b\u0469") - buf.write("\3\2\2\2\u047b\u0472\3\2\2\2\u047cD\3\2\2\2\u047d\u047e") - buf.write("\7T\2\2\u047e\u047f\7G\2\2\u047f\u0480\7C\2\2\u0480\u048a") - buf.write("\7N\2\2\u0481\u0482\7t\2\2\u0482\u0483\7g\2\2\u0483\u0484") - buf.write("\7c\2\2\u0484\u048a\7n\2\2\u0485\u0486\7T\2\2\u0486\u0487") - buf.write("\7g\2\2\u0487\u0488\7c\2\2\u0488\u048a\7n\2\2\u0489\u047d") - buf.write("\3\2\2\2\u0489\u0481\3\2\2\2\u0489\u0485\3\2\2\2\u048a") - buf.write("F\3\2\2\2\u048b\u048c\7G\2\2\u048c\u048d\7S\2\2\u048d") - buf.write("\u048e\7W\2\2\u048e\u048f\7K\2\2\u048f\u0490\7X\2\2\u0490") - buf.write("\u0491\7C\2\2\u0491\u0492\7N\2\2\u0492\u0493\7G\2\2\u0493") - buf.write("\u0494\7P\2\2\u0494\u0495\7E\2\2\u0495\u04ad\7G\2\2\u0496") - buf.write("\u0497\7g\2\2\u0497\u0498\7s\2\2\u0498\u0499\7w\2\2\u0499") - buf.write("\u049a\7k\2\2\u049a\u049b\7x\2\2\u049b\u049c\7c\2\2\u049c") - buf.write("\u049d\7n\2\2\u049d\u049e\7g\2\2\u049e\u049f\7p\2\2\u049f") - buf.write("\u04a0\7e\2\2\u04a0\u04ad\7g\2\2\u04a1\u04a2\7G\2\2\u04a2") - buf.write("\u04a3\7s\2\2\u04a3\u04a4\7w\2\2\u04a4\u04a5\7k\2\2\u04a5") - buf.write("\u04a6\7x\2\2\u04a6\u04a7\7c\2\2\u04a7\u04a8\7n\2\2\u04a8") - buf.write("\u04a9\7g\2\2\u04a9\u04aa\7p\2\2\u04aa\u04ab\7e\2\2\u04ab") - buf.write("\u04ad\7g\2\2\u04ac\u048b\3\2\2\2\u04ac\u0496\3\2\2\2") - buf.write("\u04ac\u04a1\3\2\2\2\u04adH\3\2\2\2\u04ae\u04af\7d\2\2") - buf.write("\u04af\u04b0\7n\2\2\u04b0\u04b1\7q\2\2\u04b1\u04b2\7e") - buf.write("\2\2\u04b2\u04b3\7m\2\2\u04b3\u04b4\7f\2\2\u04b4\u04b5") - buf.write("\7c\2\2\u04b5\u04b6\7v\2\2\u04b6\u04ca\7c\2\2\u04b7\u04b8") - buf.write("\7D\2\2\u04b8\u04b9\7N\2\2\u04b9\u04ba\7Q\2\2\u04ba\u04bb") - buf.write("\7E\2\2\u04bb\u04bc\7M\2\2\u04bc\u04bd\7F\2\2\u04bd\u04be") - buf.write("\7C\2\2\u04be\u04bf\7V\2\2\u04bf\u04ca\7C\2\2\u04c0\u04c1") - buf.write("\7D\2\2\u04c1\u04c2\7n\2\2\u04c2\u04c3\7q\2\2\u04c3\u04c4") - buf.write("\7e\2\2\u04c4\u04c5\7m\2\2\u04c5\u04c6\7f\2\2\u04c6\u04c7") - buf.write("\7c\2\2\u04c7\u04c8\7v\2\2\u04c8\u04ca\7c\2\2\u04c9\u04ae") - buf.write("\3\2\2\2\u04c9\u04b7\3\2\2\2\u04c9\u04c0\3\2\2\2\u04ca") - buf.write("J\3\2\2\2\u04cb\u04cc\7r\2\2\u04cc\u04cd\7q\2\2\u04cd") - buf.write("\u04ce\7k\2\2\u04ce\u04cf\7p\2\2\u04cf\u04d0\7v\2\2\u04d0") - buf.write("\u04d1\7g\2\2\u04d1\u04e1\7t\2\2\u04d2\u04d3\7R\2\2\u04d3") - buf.write("\u04d4\7Q\2\2\u04d4\u04d5\7K\2\2\u04d5\u04d6\7P\2\2\u04d6") - buf.write("\u04d7\7V\2\2\u04d7\u04d8\7G\2\2\u04d8\u04e1\7T\2\2\u04d9") - buf.write("\u04da\7R\2\2\u04da\u04db\7q\2\2\u04db\u04dc\7k\2\2\u04dc") - buf.write("\u04dd\7p\2\2\u04dd\u04de\7v\2\2\u04de\u04df\7g\2\2\u04df") - buf.write("\u04e1\7t\2\2\u04e0\u04cb\3\2\2\2\u04e0\u04d2\3\2\2\2") - buf.write("\u04e0\u04d9\3\2\2\2\u04e1L\3\2\2\2\u04e2\u04e3\7r\2\2") - buf.write("\u04e3\u04e4\7t\2\2\u04e4\u04e5\7k\2\2\u04e5\u04e6\7x") - buf.write("\2\2\u04e6\u04e7\7c\2\2\u04e7\u04e8\7v\2\2\u04e8\u04f8") - buf.write("\7g\2\2\u04e9\u04ea\7R\2\2\u04ea\u04eb\7T\2\2\u04eb\u04ec") - buf.write("\7K\2\2\u04ec\u04ed\7X\2\2\u04ed\u04ee\7C\2\2\u04ee\u04ef") - buf.write("\7V\2\2\u04ef\u04f8\7G\2\2\u04f0\u04f1\7R\2\2\u04f1\u04f2") - buf.write("\7t\2\2\u04f2\u04f3\7k\2\2\u04f3\u04f4\7x\2\2\u04f4\u04f5") - buf.write("\7c\2\2\u04f5\u04f6\7v\2\2\u04f6\u04f8\7g\2\2\u04f7\u04e2") - buf.write("\3\2\2\2\u04f7\u04e9\3\2\2\2\u04f7\u04f0\3\2\2\2\u04f8") - buf.write("N\3\2\2\2\u04f9\u04fa\5M\'\2\u04faP\3\2\2\2\u04fb\u04fc") - buf.write("\7u\2\2\u04fc\u04fd\7g\2\2\u04fd\u04fe\7s\2\2\u04fe\u04ff") - buf.write("\7w\2\2\u04ff\u0500\7g\2\2\u0500\u0501\7p\2\2\u0501\u0502") - buf.write("\7e\2\2\u0502\u0514\7g\2\2\u0503\u0504\7U\2\2\u0504\u0505") - buf.write("\7G\2\2\u0505\u0506\7S\2\2\u0506\u0507\7W\2\2\u0507\u0508") - buf.write("\7G\2\2\u0508\u0509\7P\2\2\u0509\u050a\7E\2\2\u050a\u0514") - buf.write("\7G\2\2\u050b\u050c\7U\2\2\u050c\u050d\7g\2\2\u050d\u050e") - buf.write("\7s\2\2\u050e\u050f\7w\2\2\u050f\u0510\7g\2\2\u0510\u0511") - buf.write("\7p\2\2\u0511\u0512\7e\2\2\u0512\u0514\7g\2\2\u0513\u04fb") - buf.write("\3\2\2\2\u0513\u0503\3\2\2\2\u0513\u050b\3\2\2\2\u0514") - buf.write("R\3\2\2\2\u0515\u0516\7r\2\2\u0516\u0517\7w\2\2\u0517") - buf.write("\u0518\7d\2\2\u0518\u0519\7n\2\2\u0519\u051a\7k\2\2\u051a") - buf.write("\u0528\7e\2\2\u051b\u051c\7R\2\2\u051c\u051d\7W\2\2\u051d") - buf.write("\u051e\7D\2\2\u051e\u051f\7N\2\2\u051f\u0520\7K\2\2\u0520") - buf.write("\u0528\7E\2\2\u0521\u0522\7R\2\2\u0522\u0523\7w\2\2\u0523") - buf.write("\u0524\7d\2\2\u0524\u0525\7n\2\2\u0525\u0526\7k\2\2\u0526") - buf.write("\u0528\7e\2\2\u0527\u0515\3\2\2\2\u0527\u051b\3\2\2\2") - buf.write("\u0527\u0521\3\2\2\2\u0528T\3\2\2\2\u0529\u052c\5O(\2") - buf.write("\u052a\u052c\5S*\2\u052b\u0529\3\2\2\2\u052b\u052a\3\2") - buf.write("\2\2\u052cV\3\2\2\2\u052d\u052e\7k\2\2\u052e\u052f\7o") - buf.write("\2\2\u052f\u0530\7r\2\2\u0530\u0531\7n\2\2\u0531\u0532") - buf.write("\7k\2\2\u0532\u0533\7e\2\2\u0533\u0534\7k\2\2\u0534\u0546") - buf.write("\7v\2\2\u0535\u0536\7K\2\2\u0536\u0537\7O\2\2\u0537\u0538") - buf.write("\7R\2\2\u0538\u0539\7N\2\2\u0539\u053a\7K\2\2\u053a\u053b") - buf.write("\7E\2\2\u053b\u053c\7K\2\2\u053c\u0546\7V\2\2\u053d\u053e") - buf.write("\7K\2\2\u053e\u053f\7o\2\2\u053f\u0540\7r\2\2\u0540\u0541") - buf.write("\7n\2\2\u0541\u0542\7k\2\2\u0542\u0543\7e\2\2\u0543\u0544") - buf.write("\7k\2\2\u0544\u0546\7v\2\2\u0545\u052d\3\2\2\2\u0545\u0535") - buf.write("\3\2\2\2\u0545\u053d\3\2\2\2\u0546X\3\2\2\2\u0547\u0548") - buf.write("\7p\2\2\u0548\u0549\7q\2\2\u0549\u054a\7p\2\2\u054a\u0554") - buf.write("\7g\2\2\u054b\u054c\7P\2\2\u054c\u054d\7Q\2\2\u054d\u054e") - buf.write("\7P\2\2\u054e\u0554\7G\2\2\u054f\u0550\7P\2\2\u0550\u0551") - buf.write("\7q\2\2\u0551\u0552\7p\2\2\u0552\u0554\7g\2\2\u0553\u0547") - buf.write("\3\2\2\2\u0553\u054b\3\2\2\2\u0553\u054f\3\2\2\2\u0554") - buf.write("Z\3\2\2\2\u0555\u0556\7e\2\2\u0556\u0557\7j\2\2\u0557") - buf.write("\u0558\7c\2\2\u0558\u0559\7t\2\2\u0559\u055a\7c\2\2\u055a") - buf.write("\u055b\7e\2\2\u055b\u055c\7v\2\2\u055c\u055d\7g\2\2\u055d") - buf.write("\u0571\7t\2\2\u055e\u055f\7E\2\2\u055f\u0560\7J\2\2\u0560") - buf.write("\u0561\7C\2\2\u0561\u0562\7T\2\2\u0562\u0563\7C\2\2\u0563") - buf.write("\u0564\7E\2\2\u0564\u0565\7V\2\2\u0565\u0566\7G\2\2\u0566") - buf.write("\u0571\7T\2\2\u0567\u0568\7E\2\2\u0568\u0569\7j\2\2\u0569") - buf.write("\u056a\7c\2\2\u056a\u056b\7t\2\2\u056b\u056c\7c\2\2\u056c") - buf.write("\u056d\7e\2\2\u056d\u056e\7v\2\2\u056e\u056f\7g\2\2\u056f") - buf.write("\u0571\7t\2\2\u0570\u0555\3\2\2\2\u0570\u055e\3\2\2\2") - buf.write("\u0570\u0567\3\2\2\2\u0571\\\3\2\2\2\u0572\u0573\7r\2") - buf.write("\2\u0573\u0574\7c\2\2\u0574\u0575\7t\2\2\u0575\u0576\7") - buf.write("c\2\2\u0576\u0577\7o\2\2\u0577\u0578\7g\2\2\u0578\u0579") - buf.write("\7v\2\2\u0579\u057a\7g\2\2\u057a\u058e\7t\2\2\u057b\u057c") - buf.write("\7R\2\2\u057c\u057d\7C\2\2\u057d\u057e\7T\2\2\u057e\u057f") - buf.write("\7C\2\2\u057f\u0580\7O\2\2\u0580\u0581\7G\2\2\u0581\u0582") - buf.write("\7V\2\2\u0582\u0583\7G\2\2\u0583\u058e\7T\2\2\u0584\u0585") - buf.write("\7R\2\2\u0585\u0586\7c\2\2\u0586\u0587\7t\2\2\u0587\u0588") - buf.write("\7c\2\2\u0588\u0589\7o\2\2\u0589\u058a\7g\2\2\u058a\u058b") - buf.write("\7v\2\2\u058b\u058c\7g\2\2\u058c\u058e\7t\2\2\u058d\u0572") - buf.write("\3\2\2\2\u058d\u057b\3\2\2\2\u058d\u0584\3\2\2\2\u058e") - buf.write("^\3\2\2\2\u058f\u0590\7g\2\2\u0590\u0591\7z\2\2\u0591") - buf.write("\u0592\7v\2\2\u0592\u0593\7g\2\2\u0593\u0594\7t\2\2\u0594") - buf.write("\u0595\7p\2\2\u0595\u0596\7c\2\2\u0596\u05a8\7n\2\2\u0597") - buf.write("\u0598\7G\2\2\u0598\u0599\7Z\2\2\u0599\u059a\7V\2\2\u059a") - buf.write("\u059b\7G\2\2\u059b\u059c\7T\2\2\u059c\u059d\7P\2\2\u059d") - buf.write("\u059e\7C\2\2\u059e\u05a8\7N\2\2\u059f\u05a0\7G\2\2\u05a0") - buf.write("\u05a1\7z\2\2\u05a1\u05a2\7v\2\2\u05a2\u05a3\7g\2\2\u05a3") - buf.write("\u05a4\7t\2\2\u05a4\u05a5\7p\2\2\u05a5\u05a6\7c\2\2\u05a6") - buf.write("\u05a8\7n\2\2\u05a7\u058f\3\2\2\2\u05a7\u0597\3\2\2\2") - buf.write("\u05a7\u059f\3\2\2\2\u05a8`\3\2\2\2\u05a9\u05aa\7k\2\2") - buf.write("\u05aa\u05ab\7p\2\2\u05ab\u05ac\7v\2\2\u05ac\u05ad\7t") - buf.write("\2\2\u05ad\u05ae\7k\2\2\u05ae\u05af\7p\2\2\u05af\u05b0") - buf.write("\7u\2\2\u05b0\u05b1\7k\2\2\u05b1\u05c5\7e\2\2\u05b2\u05b3") - buf.write("\7K\2\2\u05b3\u05b4\7P\2\2\u05b4\u05b5\7V\2\2\u05b5\u05b6") - buf.write("\7T\2\2\u05b6\u05b7\7K\2\2\u05b7\u05b8\7P\2\2\u05b8\u05b9") - buf.write("\7U\2\2\u05b9\u05ba\7K\2\2\u05ba\u05c5\7E\2\2\u05bb\u05bc") - buf.write("\7K\2\2\u05bc\u05bd\7p\2\2\u05bd\u05be\7v\2\2\u05be\u05bf") - buf.write("\7t\2\2\u05bf\u05c0\7k\2\2\u05c0\u05c1\7p\2\2\u05c1\u05c2") - buf.write("\7u\2\2\u05c2\u05c3\7k\2\2\u05c3\u05c5\7e\2\2\u05c4\u05a9") - buf.write("\3\2\2\2\u05c4\u05b2\3\2\2\2\u05c4\u05bb\3\2\2\2\u05c5") - buf.write("b\3\2\2\2\u05c6\u05c7\7u\2\2\u05c7\u05c8\7c\2\2\u05c8") - buf.write("\u05c9\7x\2\2\u05c9\u05d3\7g\2\2\u05ca\u05cb\7U\2\2\u05cb") - buf.write("\u05cc\7C\2\2\u05cc\u05cd\7X\2\2\u05cd\u05d3\7G\2\2\u05ce") - buf.write("\u05cf\7U\2\2\u05cf\u05d0\7c\2\2\u05d0\u05d1\7x\2\2\u05d1") - buf.write("\u05d3\7g\2\2\u05d2\u05c6\3\2\2\2\u05d2\u05ca\3\2\2\2") - buf.write("\u05d2\u05ce\3\2\2\2\u05d3d\3\2\2\2\u05d4\u05d5\7f\2\2") - buf.write("\u05d5\u05d6\7c\2\2\u05d6\u05d7\7v\2\2\u05d7\u05e1\7c") - buf.write("\2\2\u05d8\u05d9\7F\2\2\u05d9\u05da\7C\2\2\u05da\u05db") - buf.write("\7V\2\2\u05db\u05e1\7C\2\2\u05dc\u05dd\7F\2\2\u05dd\u05de") - buf.write("\7c\2\2\u05de\u05df\7v\2\2\u05df\u05e1\7c\2\2\u05e0\u05d4") - buf.write("\3\2\2\2\u05e0\u05d8\3\2\2\2\u05e0\u05dc\3\2\2\2\u05e1") - buf.write("f\3\2\2\2\u05e2\u05e3\7I\2\2\u05e3\u05e9\7Q\2\2\u05e4") - buf.write("\u05e5\7i\2\2\u05e5\u05e9\7q\2\2\u05e6\u05e7\7I\2\2\u05e7") - buf.write("\u05e9\7q\2\2\u05e8\u05e2\3\2\2\2\u05e8\u05e4\3\2\2\2") - buf.write("\u05e8\u05e6\3\2\2\2\u05e9h\3\2\2\2\u05ea\u05eb\7I\2\2") - buf.write("\u05eb\u05ec\7Q\2\2\u05ec\u05ed\7V\2\2\u05ed\u05f7\7Q") - buf.write("\2\2\u05ee\u05ef\7i\2\2\u05ef\u05f0\7q\2\2\u05f0\u05f1") - buf.write("\7v\2\2\u05f1\u05f7\7q\2\2\u05f2\u05f3\7I\2\2\u05f3\u05f4") - buf.write("\7q\2\2\u05f4\u05f5\7v\2\2\u05f5\u05f7\7q\2\2\u05f6\u05ea") - buf.write("\3\2\2\2\u05f6\u05ee\3\2\2\2\u05f6\u05f2\3\2\2\2\u05f7") - buf.write("j\3\2\2\2\u05f8\u05f9\7K\2\2\u05f9\u05ff\7H\2\2\u05fa") - buf.write("\u05fb\7k\2\2\u05fb\u05ff\7h\2\2\u05fc\u05fd\7K\2\2\u05fd") - buf.write("\u05ff\7h\2\2\u05fe\u05f8\3\2\2\2\u05fe\u05fa\3\2\2\2") - buf.write("\u05fe\u05fc\3\2\2\2\u05ffl\3\2\2\2\u0600\u0601\7V\2\2") - buf.write("\u0601\u0602\7J\2\2\u0602\u0603\7G\2\2\u0603\u0609\7P") - buf.write("\2\2\u0604\u0605\7v\2\2\u0605\u0606\7j\2\2\u0606\u0607") - buf.write("\7g\2\2\u0607\u0609\7p\2\2\u0608\u0600\3\2\2\2\u0608\u0604") - buf.write("\3\2\2\2\u0609n\3\2\2\2\u060a\u060b\7G\2\2\u060b\u060c") - buf.write("\7N\2\2\u060c\u060d\7U\2\2\u060d\u0613\7G\2\2\u060e\u060f") - buf.write("\7g\2\2\u060f\u0610\7n\2\2\u0610\u0611\7u\2\2\u0611\u0613") - buf.write("\7g\2\2\u0612\u060a\3\2\2\2\u0612\u060e\3\2\2\2\u0613") - buf.write("p\3\2\2\2\u0614\u0615\7G\2\2\u0615\u0616\7P\2\2\u0616") - buf.write("\u0617\7F\2\2\u0617\u0618\7K\2\2\u0618\u061f\7H\2\2\u0619") - buf.write("\u061a\7g\2\2\u061a\u061b\7p\2\2\u061b\u061c\7f\2\2\u061c") - buf.write("\u061d\7k\2\2\u061d\u061f\7h\2\2\u061e\u0614\3\2\2\2\u061e") - buf.write("\u0619\3\2\2\2\u061fr\3\2\2\2\u0620\u0621\7T\2\2\u0621") - buf.write("\u0622\7G\2\2\u0622\u0623\7U\2\2\u0623\u0624\7W\2\2\u0624") - buf.write("\u0625\7N\2\2\u0625\u062d\7V\2\2\u0626\u0627\7t\2\2\u0627") - buf.write("\u0628\7g\2\2\u0628\u0629\7u\2\2\u0629\u062a\7w\2\2\u062a") - buf.write("\u062b\7n\2\2\u062b\u062d\7v\2\2\u062c\u0620\3\2\2\2\u062c") - buf.write("\u0626\3\2\2\2\u062dt\3\2\2\2\u062e\u062f\7G\2\2\u062f") - buf.write("\u0630\7N\2\2\u0630\u0631\7U\2\2\u0631\u0632\7G\2\2\u0632") - buf.write("\u0633\7K\2\2\u0633\u0641\7H\2\2\u0634\u0635\7g\2\2\u0635") - buf.write("\u0636\7n\2\2\u0636\u0637\7u\2\2\u0637\u0638\7g\2\2\u0638") - buf.write("\u0639\7k\2\2\u0639\u0641\7h\2\2\u063a\u063b\7G\2\2\u063b") - buf.write("\u063c\7n\2\2\u063c\u063d\7u\2\2\u063d\u063e\7g\2\2\u063e") - buf.write("\u063f\7k\2\2\u063f\u0641\7h\2\2\u0640\u062e\3\2\2\2\u0640") - buf.write("\u0634\3\2\2\2\u0640\u063a\3\2\2\2\u0641v\3\2\2\2\u0642") - buf.write("\u0643\7F\2\2\u0643\u0649\7Q\2\2\u0644\u0645\7f\2\2\u0645") - buf.write("\u0649\7q\2\2\u0646\u0647\7F\2\2\u0647\u0649\7q\2\2\u0648") - buf.write("\u0642\3\2\2\2\u0648\u0644\3\2\2\2\u0648\u0646\3\2\2\2") - buf.write("\u0649x\3\2\2\2\u064a\u064b\7K\2\2\u064b\u064c\7P\2\2") - buf.write("\u064c\u064d\7E\2\2\u064d\u064e\7N\2\2\u064e\u064f\7W") - buf.write("\2\2\u064f\u0650\7F\2\2\u0650\u0660\7G\2\2\u0651\u0652") - buf.write("\7k\2\2\u0652\u0653\7p\2\2\u0653\u0654\7e\2\2\u0654\u0655") - buf.write("\7n\2\2\u0655\u0656\7w\2\2\u0656\u0657\7f\2\2\u0657\u0660") - buf.write("\7g\2\2\u0658\u0659\7K\2\2\u0659\u065a\7p\2\2\u065a\u065b") - buf.write("\7e\2\2\u065b\u065c\7n\2\2\u065c\u065d\7w\2\2\u065d\u065e") - buf.write("\7f\2\2\u065e\u0660\7g\2\2\u065f\u064a\3\2\2\2\u065f\u0651") - buf.write("\3\2\2\2\u065f\u0658\3\2\2\2\u0660z\3\2\2\2\u0661\u0662") - buf.write("\7E\2\2\u0662\u0663\7Q\2\2\u0663\u0664\7P\2\2\u0664\u0665") - buf.write("\7V\2\2\u0665\u0666\7K\2\2\u0666\u0667\7P\2\2\u0667\u0668") - buf.write("\7W\2\2\u0668\u067a\7G\2\2\u0669\u066a\7e\2\2\u066a\u066b") - buf.write("\7q\2\2\u066b\u066c\7p\2\2\u066c\u066d\7v\2\2\u066d\u066e") - buf.write("\7k\2\2\u066e\u066f\7p\2\2\u066f\u0670\7w\2\2\u0670\u067a") - buf.write("\7g\2\2\u0671\u0672\7E\2\2\u0672\u0673\7q\2\2\u0673\u0674") - buf.write("\7p\2\2\u0674\u0675\7v\2\2\u0675\u0676\7k\2\2\u0676\u0677") - buf.write("\7p\2\2\u0677\u0678\7w\2\2\u0678\u067a\7g\2\2\u0679\u0661") - buf.write("\3\2\2\2\u0679\u0669\3\2\2\2\u0679\u0671\3\2\2\2\u067a") - buf.write("|\3\2\2\2\u067b\u067c\7G\2\2\u067c\u067d\7P\2\2\u067d") - buf.write("\u067e\7F\2\2\u067e\u067f\7Y\2\2\u067f\u0680\7J\2\2\u0680") - buf.write("\u0681\7G\2\2\u0681\u0682\7T\2\2\u0682\u0694\7G\2\2\u0683") - buf.write("\u0684\7g\2\2\u0684\u0685\7p\2\2\u0685\u0686\7f\2\2\u0686") - buf.write("\u0687\7y\2\2\u0687\u0688\7j\2\2\u0688\u0689\7g\2\2\u0689") - buf.write("\u068a\7t\2\2\u068a\u0694\7g\2\2\u068b\u068c\7G\2\2\u068c") - buf.write("\u068d\7p\2\2\u068d\u068e\7f\2\2\u068e\u068f\7y\2\2\u068f") - buf.write("\u0690\7j\2\2\u0690\u0691\7g\2\2\u0691\u0692\7t\2\2\u0692") - buf.write("\u0694\7g\2\2\u0693\u067b\3\2\2\2\u0693\u0683\3\2\2\2") - buf.write("\u0693\u068b\3\2\2\2\u0694~\3\2\2\2\u0695\u0696\7Y\2\2") - buf.write("\u0696\u0697\7J\2\2\u0697\u0698\7G\2\2\u0698\u0699\7T") - buf.write("\2\2\u0699\u06a5\7G\2\2\u069a\u069b\7y\2\2\u069b\u069c") - buf.write("\7j\2\2\u069c\u069d\7g\2\2\u069d\u069e\7t\2\2\u069e\u06a5") - buf.write("\7g\2\2\u069f\u06a0\7Y\2\2\u06a0\u06a1\7j\2\2\u06a1\u06a2") - buf.write("\7g\2\2\u06a2\u06a3\7t\2\2\u06a3\u06a5\7g\2\2\u06a4\u0695") - buf.write("\3\2\2\2\u06a4\u069a\3\2\2\2\u06a4\u069f\3\2\2\2\u06a5") - buf.write("\u0080\3\2\2\2\u06a6\u06a7\7G\2\2\u06a7\u06a8\7P\2\2\u06a8") - buf.write("\u06a9\7F\2\2\u06a9\u06aa\7U\2\2\u06aa\u06ab\7G\2\2\u06ab") - buf.write("\u06ac\7N\2\2\u06ac\u06ad\7G\2\2\u06ad\u06ae\7E\2\2\u06ae") - buf.write("\u06b9\7V\2\2\u06af\u06b0\7g\2\2\u06b0\u06b1\7p\2\2\u06b1") - buf.write("\u06b2\7f\2\2\u06b2\u06b3\7u\2\2\u06b3\u06b4\7g\2\2\u06b4") - buf.write("\u06b5\7n\2\2\u06b5\u06b6\7g\2\2\u06b6\u06b7\7e\2\2\u06b7") - buf.write("\u06b9\7v\2\2\u06b8\u06a6\3\2\2\2\u06b8\u06af\3\2\2\2") - buf.write("\u06b9\u0082\3\2\2\2\u06ba\u06bb\7U\2\2\u06bb\u06bc\7") - buf.write("G\2\2\u06bc\u06bd\7N\2\2\u06bd\u06be\7G\2\2\u06be\u06bf") - buf.write("\7E\2\2\u06bf\u06c0\7V\2\2\u06c0\u06c1\7E\2\2\u06c1\u06c2") - buf.write("\7C\2\2\u06c2\u06c3\7U\2\2\u06c3\u06cf\7G\2\2\u06c4\u06c5") - buf.write("\7u\2\2\u06c5\u06c6\7g\2\2\u06c6\u06c7\7n\2\2\u06c7\u06c8") - buf.write("\7g\2\2\u06c8\u06c9\7e\2\2\u06c9\u06ca\7v\2\2\u06ca\u06cb") - buf.write("\7e\2\2\u06cb\u06cc\7c\2\2\u06cc\u06cd\7u\2\2\u06cd\u06cf") - buf.write("\7g\2\2\u06ce\u06ba\3\2\2\2\u06ce\u06c4\3\2\2\2\u06cf") - buf.write("\u0084\3\2\2\2\u06d0\u06d1\7U\2\2\u06d1\u06d2\7G\2\2\u06d2") - buf.write("\u06d3\7N\2\2\u06d3\u06d4\7G\2\2\u06d4\u06d5\7E\2\2\u06d5") - buf.write("\u06dd\7V\2\2\u06d6\u06d7\7u\2\2\u06d7\u06d8\7g\2\2\u06d8") - buf.write("\u06d9\7n\2\2\u06d9\u06da\7g\2\2\u06da\u06db\7e\2\2\u06db") - buf.write("\u06dd\7v\2\2\u06dc\u06d0\3\2\2\2\u06dc\u06d6\3\2\2\2") - buf.write("\u06dd\u0086\3\2\2\2\u06de\u06df\7e\2\2\u06df\u06e0\7") - buf.write("c\2\2\u06e0\u06e1\7u\2\2\u06e1\u06eb\7g\2\2\u06e2\u06e3") - buf.write("\7E\2\2\u06e3\u06e4\7C\2\2\u06e4\u06e5\7U\2\2\u06e5\u06eb") - buf.write("\7G\2\2\u06e6\u06e7\7E\2\2\u06e7\u06e8\7c\2\2\u06e8\u06e9") - buf.write("\7u\2\2\u06e9\u06eb\7g\2\2\u06ea\u06de\3\2\2\2\u06ea\u06e2") - buf.write("\3\2\2\2\u06ea\u06e6\3\2\2\2\u06eb\u0088\3\2\2\2\u06ec") - buf.write("\u06ed\7F\2\2\u06ed\u06ee\7G\2\2\u06ee\u06ef\7H\2\2\u06ef") - buf.write("\u06f0\7C\2\2\u06f0\u06f1\7W\2\2\u06f1\u06f2\7N\2\2\u06f2") - buf.write("\u0702\7V\2\2\u06f3\u06f4\7f\2\2\u06f4\u06f5\7g\2\2\u06f5") - buf.write("\u06f6\7h\2\2\u06f6\u06f7\7c\2\2\u06f7\u06f8\7w\2\2\u06f8") - buf.write("\u06f9\7n\2\2\u06f9\u0702\7v\2\2\u06fa\u06fb\7F\2\2\u06fb") - buf.write("\u06fc\7g\2\2\u06fc\u06fd\7h\2\2\u06fd\u06fe\7c\2\2\u06fe") - buf.write("\u06ff\7w\2\2\u06ff\u0700\7n\2\2\u0700\u0702\7v\2\2\u0701") - buf.write("\u06ec\3\2\2\2\u0701\u06f3\3\2\2\2\u0701\u06fa\3\2\2\2") - buf.write("\u0702\u008a\3\2\2\2\u0703\u0704\7F\2\2\u0704\u0705\7") - buf.write("K\2\2\u0705\u0706\7T\2\2\u0706\u0707\7G\2\2\u0707\u0708") - buf.write("\7E\2\2\u0708\u0716\7V\2\2\u0709\u070a\7f\2\2\u070a\u070b") - buf.write("\7k\2\2\u070b\u070c\7t\2\2\u070c\u070d\7g\2\2\u070d\u070e") - buf.write("\7e\2\2\u070e\u0716\7v\2\2\u070f\u0710\7F\2\2\u0710\u0711") - buf.write("\7k\2\2\u0711\u0712\7t\2\2\u0712\u0713\7g\2\2\u0713\u0714") - buf.write("\7e\2\2\u0714\u0716\7v\2\2\u0715\u0703\3\2\2\2\u0715\u0709") - buf.write("\3\2\2\2\u0715\u070f\3\2\2\2\u0716\u008c\3\2\2\2\u0717") - buf.write("\u0718\7U\2\2\u0718\u0719\7V\2\2\u0719\u071a\7Q\2\2\u071a") - buf.write("\u0724\7R\2\2\u071b\u071c\7u\2\2\u071c\u071d\7v\2\2\u071d") - buf.write("\u071e\7q\2\2\u071e\u0724\7r\2\2\u071f\u0720\7U\2\2\u0720") - buf.write("\u0721\7v\2\2\u0721\u0722\7q\2\2\u0722\u0724\7r\2\2\u0723") - buf.write("\u0717\3\2\2\2\u0723\u071b\3\2\2\2\u0723\u071f\3\2\2\2") - buf.write("\u0724\u008e\3\2\2\2\u0725\u0726\7T\2\2\u0726\u0727\7") - buf.write("G\2\2\u0727\u072f\7E\2\2\u0728\u0729\7t\2\2\u0729\u072a") - buf.write("\7g\2\2\u072a\u072f\7e\2\2\u072b\u072c\7T\2\2\u072c\u072d") - buf.write("\7g\2\2\u072d\u072f\7e\2\2\u072e\u0725\3\2\2\2\u072e\u0728") - buf.write("\3\2\2\2\u072e\u072b\3\2\2\2\u072f\u0090\3\2\2\2\u0730") - buf.write("\u0731\7G\2\2\u0731\u0732\7P\2\2\u0732\u0733\7F\2\2\u0733") - buf.write("\u0734\7F\2\2\u0734\u073b\7Q\2\2\u0735\u0736\7g\2\2\u0736") - buf.write("\u0737\7p\2\2\u0737\u0738\7f\2\2\u0738\u0739\7f\2\2\u0739") - buf.write("\u073b\7q\2\2\u073a\u0730\3\2\2\2\u073a\u0735\3\2\2\2") - buf.write("\u073b\u0092\3\2\2\2\u073c\u073d\7r\2\2\u073d\u073e\7") - buf.write("c\2\2\u073e\u073f\7w\2\2\u073f\u0740\7u\2\2\u0740\u0747") - buf.write("\7g\2\2\u0741\u0742\7R\2\2\u0742\u0743\7C\2\2\u0743\u0744") - buf.write("\7W\2\2\u0744\u0745\7U\2\2\u0745\u0747\7G\2\2\u0746\u073c") - buf.write("\3\2\2\2\u0746\u0741\3\2\2\2\u0747\u0094\3\2\2\2\u0748") - buf.write("\u0749\7Y\2\2\u0749\u074a\7T\2\2\u074a\u074b\7K\2\2\u074b") - buf.write("\u074c\7V\2\2\u074c\u0753\7G\2\2\u074d\u074e\7y\2\2\u074e") - buf.write("\u074f\7t\2\2\u074f\u0750\7k\2\2\u0750\u0751\7v\2\2\u0751") - buf.write("\u0753\7g\2\2\u0752\u0748\3\2\2\2\u0752\u074d\3\2\2\2") - buf.write("\u0753\u0096\3\2\2\2\u0754\u0755\7T\2\2\u0755\u0756\7") - buf.write("G\2\2\u0756\u0757\7C\2\2\u0757\u075d\7F\2\2\u0758\u0759") - buf.write("\7t\2\2\u0759\u075a\7g\2\2\u075a\u075b\7c\2\2\u075b\u075d") - buf.write("\7f\2\2\u075c\u0754\3\2\2\2\u075c\u0758\3\2\2\2\u075d") - buf.write("\u0098\3\2\2\2\u075e\u075f\7R\2\2\u075f\u0760\7T\2\2\u0760") - buf.write("\u0761\7K\2\2\u0761\u0762\7P\2\2\u0762\u0769\7V\2\2\u0763") - buf.write("\u0764\7r\2\2\u0764\u0765\7t\2\2\u0765\u0766\7k\2\2\u0766") - buf.write("\u0767\7p\2\2\u0767\u0769\7v\2\2\u0768\u075e\3\2\2\2\u0768") - buf.write("\u0763\3\2\2\2\u0769\u009a\3\2\2\2\u076a\u076b\7Q\2\2") - buf.write("\u076b\u076c\7R\2\2\u076c\u076d\7G\2\2\u076d\u0773\7P") - buf.write("\2\2\u076e\u076f\7q\2\2\u076f\u0770\7r\2\2\u0770\u0771") - buf.write("\7g\2\2\u0771\u0773\7p\2\2\u0772\u076a\3\2\2\2\u0772\u076e") - buf.write("\3\2\2\2\u0773\u009c\3\2\2\2\u0774\u0775\7H\2\2\u0775") - buf.write("\u0776\7O\2\2\u0776\u077b\7V\2\2\u0777\u0778\7h\2\2\u0778") - buf.write("\u0779\7o\2\2\u0779\u077b\7v\2\2\u077a\u0774\3\2\2\2\u077a") - buf.write("\u0777\3\2\2\2\u077b\u009e\3\2\2\2\u077c\u077d\7W\2\2") - buf.write("\u077d\u077e\7P\2\2\u077e\u077f\7K\2\2\u077f\u0785\7V") - buf.write("\2\2\u0780\u0781\7w\2\2\u0781\u0782\7p\2\2\u0782\u0783") - buf.write("\7k\2\2\u0783\u0785\7v\2\2\u0784\u077c\3\2\2\2\u0784\u0780") - buf.write("\3\2\2\2\u0785\u00a0\3\2\2\2\u0786\u0787\7R\2\2\u0787") - buf.write("\u0788\7C\2\2\u0788\u078d\7F\2\2\u0789\u078a\7r\2\2\u078a") - buf.write("\u078b\7c\2\2\u078b\u078d\7f\2\2\u078c\u0786\3\2\2\2\u078c") - buf.write("\u0789\3\2\2\2\u078d\u00a2\3\2\2\2\u078e\u078f\7C\2\2") - buf.write("\u078f\u0790\7E\2\2\u0790\u0791\7V\2\2\u0791\u0792\7K") - buf.write("\2\2\u0792\u0793\7Q\2\2\u0793\u079b\7P\2\2\u0794\u0795") - buf.write("\7c\2\2\u0795\u0796\7e\2\2\u0796\u0797\7v\2\2\u0797\u0798") - buf.write("\7k\2\2\u0798\u0799\7q\2\2\u0799\u079b\7p\2\2\u079a\u078e") - buf.write("\3\2\2\2\u079a\u0794\3\2\2\2\u079b\u00a4\3\2\2\2\u079c") - buf.write("\u079d\7F\2\2\u079d\u079e\7G\2\2\u079e\u079f\7N\2\2\u079f") - buf.write("\u07a0\7K\2\2\u07a0\u07a7\7O\2\2\u07a1\u07a2\7f\2\2\u07a2") - buf.write("\u07a3\7g\2\2\u07a3\u07a4\7n\2\2\u07a4\u07a5\7k\2\2\u07a5") - buf.write("\u07a7\7o\2\2\u07a6\u079c\3\2\2\2\u07a6\u07a1\3\2\2\2") - buf.write("\u07a7\u00a6\3\2\2\2\u07a8\u07a9\7K\2\2\u07a9\u07aa\7") - buf.write("Q\2\2\u07aa\u07ab\7N\2\2\u07ab\u07ac\7G\2\2\u07ac\u07ad") - buf.write("\7P\2\2\u07ad\u07ae\7I\2\2\u07ae\u07af\7V\2\2\u07af\u07b9") - buf.write("\7J\2\2\u07b0\u07b1\7k\2\2\u07b1\u07b2\7q\2\2\u07b2\u07b3") - buf.write("\7n\2\2\u07b3\u07b4\7g\2\2\u07b4\u07b5\7p\2\2\u07b5\u07b6") - buf.write("\7i\2\2\u07b6\u07b7\7v\2\2\u07b7\u07b9\7j\2\2\u07b8\u07a8") - buf.write("\3\2\2\2\u07b8\u07b0\3\2\2\2\u07b9\u00a8\3\2\2\2\u07ba") - buf.write("\u07bb\7T\2\2\u07bb\u07bc\7G\2\2\u07bc\u07bd\7C\2\2\u07bd") - buf.write("\u07be\7F\2\2\u07be\u07bf\7Y\2\2\u07bf\u07c0\7T\2\2\u07c0") - buf.write("\u07c1\7K\2\2\u07c1\u07c2\7V\2\2\u07c2\u07cd\7G\2\2\u07c3") - buf.write("\u07c4\7t\2\2\u07c4\u07c5\7g\2\2\u07c5\u07c6\7c\2\2\u07c6") - buf.write("\u07c7\7f\2\2\u07c7\u07c8\7y\2\2\u07c8\u07c9\7t\2\2\u07c9") - buf.write("\u07ca\7k\2\2\u07ca\u07cb\7v\2\2\u07cb\u07cd\7g\2\2\u07cc") - buf.write("\u07ba\3\2\2\2\u07cc\u07c3\3\2\2\2\u07cd\u00aa\3\2\2\2") - buf.write("\u07ce\u07cf\7g\2\2\u07cf\u07d0\7t\2\2\u07d0\u07d5\7t") - buf.write("\2\2\u07d1\u07d2\7G\2\2\u07d2\u07d3\7T\2\2\u07d3\u07d5") - buf.write("\7T\2\2\u07d4\u07ce\3\2\2\2\u07d4\u07d1\3\2\2\2\u07d5") - buf.write("\u00ac\3\2\2\2\u07d6\u07d7\7U\2\2\u07d7\u07d8\7K\2\2\u07d8") - buf.write("\u07d9\7\\\2\2\u07d9\u07df\7G\2\2\u07da\u07db\7u\2\2\u07db") - buf.write("\u07dc\7k\2\2\u07dc\u07dd\7|\2\2\u07dd\u07df\7g\2\2\u07de") - buf.write("\u07d6\3\2\2\2\u07de\u07da\3\2\2\2\u07df\u00ae\3\2\2\2") - buf.write("\u07e0\u07e1\7C\2\2\u07e1\u07e2\7F\2\2\u07e2\u07e3\7X") - buf.write("\2\2\u07e3\u07e4\7C\2\2\u07e4\u07e5\7P\2\2\u07e5\u07e6") - buf.write("\7E\2\2\u07e6\u07ef\7G\2\2\u07e7\u07e8\7c\2\2\u07e8\u07e9") - buf.write("\7f\2\2\u07e9\u07ea\7x\2\2\u07ea\u07eb\7c\2\2\u07eb\u07ec") - buf.write("\7p\2\2\u07ec\u07ed\7e\2\2\u07ed\u07ef\7g\2\2\u07ee\u07e0") - buf.write("\3\2\2\2\u07ee\u07e7\3\2\2\2\u07ef\u00b0\3\2\2\2\u07f0") - buf.write("\u07f1\7P\2\2\u07f1\u07f2\7O\2\2\u07f2\u07f7\7N\2\2\u07f3") - buf.write("\u07f4\7p\2\2\u07f4\u07f5\7o\2\2\u07f5\u07f7\7n\2\2\u07f6") - buf.write("\u07f0\3\2\2\2\u07f6\u07f3\3\2\2\2\u07f7\u00b2\3\2\2\2") - buf.write("\u07f8\u07f9\7K\2\2\u07f9\u07fa\7Q\2\2\u07fa\u07fb\7U") - buf.write("\2\2\u07fb\u07fc\7V\2\2\u07fc\u07fd\7C\2\2\u07fd\u0805") - buf.write("\7V\2\2\u07fe\u07ff\7k\2\2\u07ff\u0800\7q\2\2\u0800\u0801") - buf.write("\7u\2\2\u0801\u0802\7v\2\2\u0802\u0803\7c\2\2\u0803\u0805") - buf.write("\7v\2\2\u0804\u07f8\3\2\2\2\u0804\u07fe\3\2\2\2\u0805") - buf.write("\u00b4\3\2\2\2\u0806\u0807\7H\2\2\u0807\u0808\7Q\2\2\u0808") - buf.write("\u0809\7T\2\2\u0809\u080a\7O\2\2\u080a\u080b\7C\2\2\u080b") - buf.write("\u0813\7V\2\2\u080c\u080d\7h\2\2\u080d\u080e\7q\2\2\u080e") - buf.write("\u080f\7t\2\2\u080f\u0810\7o\2\2\u0810\u0811\7c\2\2\u0811") - buf.write("\u0813\7v\2\2\u0812\u0806\3\2\2\2\u0812\u080c\3\2\2\2") - buf.write("\u0813\u00b6\3\2\2\2\u0814\u0815\7N\2\2\u0815\u0816\7") - buf.write("G\2\2\u0816\u081b\7V\2\2\u0817\u0818\7n\2\2\u0818\u0819") - buf.write("\7g\2\2\u0819\u081b\7v\2\2\u081a\u0814\3\2\2\2\u081a\u0817") - buf.write("\3\2\2\2\u081b\u00b8\3\2\2\2\u081c\u081d\7E\2\2\u081d") - buf.write("\u081e\7C\2\2\u081e\u081f\7N\2\2\u081f\u0825\7N\2\2\u0820") - buf.write("\u0821\7e\2\2\u0821\u0822\7c\2\2\u0822\u0823\7n\2\2\u0823") - buf.write("\u0825\7n\2\2\u0824\u081c\3\2\2\2\u0824\u0820\3\2\2\2") - buf.write("\u0825\u00ba\3\2\2\2\u0826\u0827\7T\2\2\u0827\u0828\7") - buf.write("G\2\2\u0828\u0829\7V\2\2\u0829\u082a\7W\2\2\u082a\u082b") - buf.write("\7T\2\2\u082b\u0839\7P\2\2\u082c\u082d\7t\2\2\u082d\u082e") - buf.write("\7g\2\2\u082e\u082f\7v\2\2\u082f\u0830\7w\2\2\u0830\u0831") - buf.write("\7t\2\2\u0831\u0839\7p\2\2\u0832\u0833\7T\2\2\u0833\u0834") - buf.write("\7g\2\2\u0834\u0835\7v\2\2\u0835\u0836\7w\2\2\u0836\u0837") - buf.write("\7t\2\2\u0837\u0839\7p\2\2\u0838\u0826\3\2\2\2\u0838\u082c") - buf.write("\3\2\2\2\u0838\u0832\3\2\2\2\u0839\u00bc\3\2\2\2\u083a") - buf.write("\u083b\7E\2\2\u083b\u083c\7N\2\2\u083c\u083d\7Q\2\2\u083d") - buf.write("\u083e\7U\2\2\u083e\u0845\7G\2\2\u083f\u0840\7e\2\2\u0840") - buf.write("\u0841\7n\2\2\u0841\u0842\7q\2\2\u0842\u0843\7u\2\2\u0843") - buf.write("\u0845\7g\2\2\u0844\u083a\3\2\2\2\u0844\u083f\3\2\2\2") - buf.write("\u0845\u00be\3\2\2\2\u0846\u0847\7F\2\2\u0847\u0848\7") - buf.write("Q\2\2\u0848\u0849\7W\2\2\u0849\u084a\7D\2\2\u084a\u084b") - buf.write("\7N\2\2\u084b\u0853\7G\2\2\u084c\u084d\7f\2\2\u084d\u084e") - buf.write("\7q\2\2\u084e\u084f\7w\2\2\u084f\u0850\7d\2\2\u0850\u0851") - buf.write("\7n\2\2\u0851\u0853\7g\2\2\u0852\u0846\3\2\2\2\u0852\u084c") - buf.write("\3\2\2\2\u0853\u00c0\3\2\2\2\u0854\u0855\7K\2\2\u0855") - buf.write("\u0856\7Q\2\2\u0856\u0857\7U\2\2\u0857\u0858\7V\2\2\u0858") - buf.write("\u0859\7C\2\2\u0859\u085a\7T\2\2\u085a\u0863\7V\2\2\u085b") - buf.write("\u085c\7k\2\2\u085c\u085d\7q\2\2\u085d\u085e\7u\2\2\u085e") - buf.write("\u085f\7v\2\2\u085f\u0860\7c\2\2\u0860\u0861\7t\2\2\u0861") - buf.write("\u0863\7v\2\2\u0862\u0854\3\2\2\2\u0862\u085b\3\2\2\2") - buf.write("\u0863\u00c2\3\2\2\2\u0864\u0865\7U\2\2\u0865\u0866\7") - buf.write("G\2\2\u0866\u0867\7S\2\2\u0867\u0868\7W\2\2\u0868\u0869") - buf.write("\7G\2\2\u0869\u086a\7P\2\2\u086a\u086b\7V\2\2\u086b\u086c") - buf.write("\7K\2\2\u086c\u086d\7C\2\2\u086d\u0879\7N\2\2\u086e\u086f") - buf.write("\7u\2\2\u086f\u0870\7g\2\2\u0870\u0871\7s\2\2\u0871\u0872") - buf.write("\7w\2\2\u0872\u0873\7g\2\2\u0873\u0874\7p\2\2\u0874\u0875") - buf.write("\7v\2\2\u0875\u0876\7k\2\2\u0876\u0877\7c\2\2\u0877\u0879") - buf.write("\7n\2\2\u0878\u0864\3\2\2\2\u0878\u086e\3\2\2\2\u0879") - buf.write("\u00c4\3\2\2\2\u087a\u087b\7N\2\2\u087b\u087c\7C\2\2\u087c") - buf.write("\u087d\7D\2\2\u087d\u087e\7G\2\2\u087e\u0885\7N\2\2\u087f") - buf.write("\u0880\7n\2\2\u0880\u0881\7c\2\2\u0881\u0882\7d\2\2\u0882") - buf.write("\u0883\7g\2\2\u0883\u0885\7n\2\2\u0884\u087a\3\2\2\2\u0884") - buf.write("\u087f\3\2\2\2\u0885\u00c6\3\2\2\2\u0886\u0887\7h\2\2") - buf.write("\u0887\u0888\7k\2\2\u0888\u0889\7n\2\2\u0889\u088f\7g") - buf.write("\2\2\u088a\u088b\7H\2\2\u088b\u088c\7K\2\2\u088c\u088d") - buf.write("\7N\2\2\u088d\u088f\7G\2\2\u088e\u0886\3\2\2\2\u088e\u088a") - buf.write("\3\2\2\2\u088f\u00c8\3\2\2\2\u0890\u0891\7U\2\2\u0891") - buf.write("\u0892\7V\2\2\u0892\u0893\7C\2\2\u0893\u0894\7V\2\2\u0894") - buf.write("\u0895\7W\2\2\u0895\u089d\7U\2\2\u0896\u0897\7u\2\2\u0897") - buf.write("\u0898\7v\2\2\u0898\u0899\7c\2\2\u0899\u089a\7v\2\2\u089a") - buf.write("\u089b\7w\2\2\u089b\u089d\7u\2\2\u089c\u0890\3\2\2\2\u089c") - buf.write("\u0896\3\2\2\2\u089d\u00ca\3\2\2\2\u089e\u089f\7C\2\2") - buf.write("\u089f\u08a0\7E\2\2\u08a0\u08a1\7E\2\2\u08a1\u08a2\7G") - buf.write("\2\2\u08a2\u08a3\7U\2\2\u08a3\u08ab\7U\2\2\u08a4\u08a5") - buf.write("\7c\2\2\u08a5\u08a6\7e\2\2\u08a6\u08a7\7e\2\2\u08a7\u08a8") - buf.write("\7g\2\2\u08a8\u08a9\7u\2\2\u08a9\u08ab\7u\2\2\u08aa\u089e") - buf.write("\3\2\2\2\u08aa\u08a4\3\2\2\2\u08ab\u00cc\3\2\2\2\u08ac") - buf.write("\u08ad\7R\2\2\u08ad\u08ae\7Q\2\2\u08ae\u08af\7U\2\2\u08af") - buf.write("\u08b0\7K\2\2\u08b0\u08b1\7V\2\2\u08b1\u08b2\7K\2\2\u08b2") - buf.write("\u08b3\7Q\2\2\u08b3\u08bd\7P\2\2\u08b4\u08b5\7r\2\2\u08b5") - buf.write("\u08b6\7q\2\2\u08b6\u08b7\7u\2\2\u08b7\u08b8\7k\2\2\u08b8") - buf.write("\u08b9\7v\2\2\u08b9\u08ba\7k\2\2\u08ba\u08bb\7q\2\2\u08bb") - buf.write("\u08bd\7p\2\2\u08bc\u08ac\3\2\2\2\u08bc\u08b4\3\2\2\2") - buf.write("\u08bd\u00ce\3\2\2\2\u08be\u08bf\7H\2\2\u08bf\u08c0\7") - buf.write("Q\2\2\u08c0\u08c1\7T\2\2\u08c1\u08c7\7O\2\2\u08c2\u08c3") - buf.write("\7h\2\2\u08c3\u08c4\7q\2\2\u08c4\u08c5\7t\2\2\u08c5\u08c7") - buf.write("\7o\2\2\u08c6\u08be\3\2\2\2\u08c6\u08c2\3\2\2\2\u08c7") - buf.write("\u00d0\3\2\2\2\u08c8\u08c9\7T\2\2\u08c9\u08ca\7G\2\2\u08ca") - buf.write("\u08cb\7E\2\2\u08cb\u08d1\7N\2\2\u08cc\u08cd\7t\2\2\u08cd") - buf.write("\u08ce\7g\2\2\u08ce\u08cf\7e\2\2\u08cf\u08d1\7n\2\2\u08d0") - buf.write("\u08c8\3\2\2\2\u08d0\u08cc\3\2\2\2\u08d1\u00d2\3\2\2\2") - buf.write("\u08d2\u08d3\7G\2\2\u08d3\u08d4\7Z\2\2\u08d4\u08d5\7K") - buf.write("\2\2\u08d5\u08d6\7U\2\2\u08d6\u08dd\7V\2\2\u08d7\u08d8") - buf.write("\7g\2\2\u08d8\u08d9\7z\2\2\u08d9\u08da\7k\2\2\u08da\u08db") - buf.write("\7u\2\2\u08db\u08dd\7v\2\2\u08dc\u08d2\3\2\2\2\u08dc\u08d7") - buf.write("\3\2\2\2\u08dd\u00d4\3\2\2\2\u08de\u08df\7Q\2\2\u08df") - buf.write("\u08e0\7R\2\2\u08e0\u08e1\7G\2\2\u08e1\u08e2\7P\2\2\u08e2") - buf.write("\u08e3\7G\2\2\u08e3\u08eb\7F\2\2\u08e4\u08e5\7q\2\2\u08e5") - buf.write("\u08e6\7r\2\2\u08e6\u08e7\7g\2\2\u08e7\u08e8\7p\2\2\u08e8") - buf.write("\u08e9\7g\2\2\u08e9\u08eb\7f\2\2\u08ea\u08de\3\2\2\2\u08ea") - buf.write("\u08e4\3\2\2\2\u08eb\u00d6\3\2\2\2\u08ec\u08ed\7P\2\2") - buf.write("\u08ed\u08ee\7W\2\2\u08ee\u08ef\7O\2\2\u08ef\u08f0\7D") - buf.write("\2\2\u08f0\u08f1\7G\2\2\u08f1\u08f9\7T\2\2\u08f2\u08f3") - buf.write("\7p\2\2\u08f3\u08f4\7w\2\2\u08f4\u08f5\7o\2\2\u08f5\u08f6") - buf.write("\7d\2\2\u08f6\u08f7\7g\2\2\u08f7\u08f9\7t\2\2\u08f8\u08ec") - buf.write("\3\2\2\2\u08f8\u08f2\3\2\2\2\u08f9\u00d8\3\2\2\2\u08fa") - buf.write("\u08fb\7P\2\2\u08fb\u08fc\7C\2\2\u08fc\u08fd\7O\2\2\u08fd") - buf.write("\u08fe\7G\2\2\u08fe\u0905\7F\2\2\u08ff\u0900\7p\2\2\u0900") - buf.write("\u0901\7c\2\2\u0901\u0902\7o\2\2\u0902\u0903\7g\2\2\u0903") - buf.write("\u0905\7f\2\2\u0904\u08fa\3\2\2\2\u0904\u08ff\3\2\2\2") - buf.write("\u0905\u00da\3\2\2\2\u0906\u0907\7P\2\2\u0907\u0908\7") - buf.write("C\2\2\u0908\u0909\7O\2\2\u0909\u090f\7G\2\2\u090a\u090b") - buf.write("\7p\2\2\u090b\u090c\7c\2\2\u090c\u090d\7o\2\2\u090d\u090f") - buf.write("\7g\2\2\u090e\u0906\3\2\2\2\u090e\u090a\3\2\2\2\u090f") - buf.write("\u00dc\3\2\2\2\u0910\u0911\7H\2\2\u0911\u0912\7Q\2\2\u0912") - buf.write("\u0913\7T\2\2\u0913\u0914\7O\2\2\u0914\u0915\7C\2\2\u0915") - buf.write("\u0916\7V\2\2\u0916\u0917\7V\2\2\u0917\u0918\7G\2\2\u0918") - buf.write("\u0923\7F\2\2\u0919\u091a\7h\2\2\u091a\u091b\7q\2\2\u091b") - buf.write("\u091c\7t\2\2\u091c\u091d\7o\2\2\u091d\u091e\7c\2\2\u091e") - buf.write("\u091f\7v\2\2\u091f\u0920\7v\2\2\u0920\u0921\7g\2\2\u0921") - buf.write("\u0923\7f\2\2\u0922\u0910\3\2\2\2\u0922\u0919\3\2\2\2") - buf.write("\u0923\u00de\3\2\2\2\u0924\u0925\7W\2\2\u0925\u0926\7") - buf.write("P\2\2\u0926\u0927\7H\2\2\u0927\u0928\7Q\2\2\u0928\u0929") - buf.write("\7T\2\2\u0929\u092a\7O\2\2\u092a\u092b\7C\2\2\u092b\u092c") - buf.write("\7V\2\2\u092c\u092d\7V\2\2\u092d\u092e\7G\2\2\u092e\u093b") - buf.write("\7F\2\2\u092f\u0930\7w\2\2\u0930\u0931\7p\2\2\u0931\u0932") - buf.write("\7h\2\2\u0932\u0933\7q\2\2\u0933\u0934\7t\2\2\u0934\u0935") - buf.write("\7o\2\2\u0935\u0936\7c\2\2\u0936\u0937\7v\2\2\u0937\u0938") - buf.write("\7v\2\2\u0938\u0939\7g\2\2\u0939\u093b\7f\2\2\u093a\u0924") - buf.write("\3\2\2\2\u093a\u092f\3\2\2\2\u093b\u00e0\3\2\2\2\u093c") - buf.write("\u093d\7P\2\2\u093d\u093e\7G\2\2\u093e\u093f\7Z\2\2\u093f") - buf.write("\u0940\7V\2\2\u0940\u0941\7T\2\2\u0941\u0942\7G\2\2\u0942") - buf.write("\u094b\7E\2\2\u0943\u0944\7p\2\2\u0944\u0945\7g\2\2\u0945") - buf.write("\u0946\7z\2\2\u0946\u0947\7v\2\2\u0947\u0948\7t\2\2\u0948") - buf.write("\u0949\7g\2\2\u0949\u094b\7e\2\2\u094a\u093c\3\2\2\2\u094a") - buf.write("\u0943\3\2\2\2\u094b\u00e2\3\2\2\2\u094c\u094d\7K\2\2") - buf.write("\u094d\u094e\7P\2\2\u094e\u094f\7S\2\2\u094f\u0950\7W") - buf.write("\2\2\u0950\u0951\7K\2\2\u0951\u0952\7T\2\2\u0952\u095b") - buf.write("\7G\2\2\u0953\u0954\7k\2\2\u0954\u0955\7p\2\2\u0955\u0956") - buf.write("\7s\2\2\u0956\u0957\7w\2\2\u0957\u0958\7k\2\2\u0958\u0959") - buf.write("\7t\2\2\u0959\u095b\7g\2\2\u095a\u094c\3\2\2\2\u095a\u0953") - buf.write("\3\2\2\2\u095b\u00e4\3\2\2\2\u095c\u095d\7D\2\2\u095d") - buf.write("\u095e\7C\2\2\u095e\u095f\7E\2\2\u095f\u0960\7M\2\2\u0960") - buf.write("\u0961\7U\2\2\u0961\u0962\7R\2\2\u0962\u0963\7C\2\2\u0963") - buf.write("\u0964\7E\2\2\u0964\u096f\7G\2\2\u0965\u0966\7d\2\2\u0966") - buf.write("\u0967\7c\2\2\u0967\u0968\7e\2\2\u0968\u0969\7m\2\2\u0969") - buf.write("\u096a\7u\2\2\u096a\u096b\7r\2\2\u096b\u096c\7c\2\2\u096c") - buf.write("\u096d\7e\2\2\u096d\u096f\7g\2\2\u096e\u095c\3\2\2\2\u096e") - buf.write("\u0965\3\2\2\2\u096f\u00e6\3\2\2\2\u0970\u0971\7G\2\2") - buf.write("\u0971\u0972\7P\2\2\u0972\u0973\7F\2\2\u0973\u0974\7H") - buf.write("\2\2\u0974\u0975\7K\2\2\u0975\u0976\7N\2\2\u0976\u097f") - buf.write("\7G\2\2\u0977\u0978\7g\2\2\u0978\u0979\7p\2\2\u0979\u097a") - buf.write("\7f\2\2\u097a\u097b\7h\2\2\u097b\u097c\7k\2\2\u097c\u097d") - buf.write("\7n\2\2\u097d\u097f\7g\2\2\u097e\u0970\3\2\2\2\u097e\u0977") - buf.write("\3\2\2\2\u097f\u00e8\3\2\2\2\u0980\u0981\7T\2\2\u0981") - buf.write("\u0982\7G\2\2\u0982\u0983\7Y\2\2\u0983\u0984\7K\2\2\u0984") - buf.write("\u0985\7P\2\2\u0985\u098d\7F\2\2\u0986\u0987\7t\2\2\u0987") - buf.write("\u0988\7g\2\2\u0988\u0989\7y\2\2\u0989\u098a\7k\2\2\u098a") - buf.write("\u098b\7p\2\2\u098b\u098d\7f\2\2\u098c\u0980\3\2\2\2\u098c") - buf.write("\u0986\3\2\2\2\u098d\u00ea\3\2\2\2\u098e\u098f\7g\2\2") - buf.write("\u098f\u0990\7p\2\2\u0990\u0991\7f\2\2\u0991\u0992\7d") - buf.write("\2\2\u0992\u0993\7n\2\2\u0993\u0994\7q\2\2\u0994\u0995") - buf.write("\7e\2\2\u0995\u0996\7m\2\2\u0996\u0997\7f\2\2\u0997\u0998") - buf.write("\7c\2\2\u0998\u0999\7v\2\2\u0999\u09a7\7c\2\2\u099a\u099b") - buf.write("\7G\2\2\u099b\u099c\7P\2\2\u099c\u099d\7F\2\2\u099d\u099e") - buf.write("\7D\2\2\u099e\u099f\7N\2\2\u099f\u09a0\7Q\2\2\u09a0\u09a1") - buf.write("\7E\2\2\u09a1\u09a2\7M\2\2\u09a2\u09a3\7F\2\2\u09a3\u09a4") - buf.write("\7C\2\2\u09a4\u09a5\7V\2\2\u09a5\u09a7\7C\2\2\u09a6\u098e") - buf.write("\3\2\2\2\u09a6\u099a\3\2\2\2\u09a7\u00ec\3\2\2\2\u09a8") - buf.write("\u09a9\7G\2\2\u09a9\u09aa\7P\2\2\u09aa\u09ab\7F\2\2\u09ab") - buf.write("\u09ac\7D\2\2\u09ac\u09ad\7N\2\2\u09ad\u09ae\7Q\2\2\u09ae") - buf.write("\u09af\7E\2\2\u09af\u09b9\7M\2\2\u09b0\u09b1\7g\2\2\u09b1") - buf.write("\u09b2\7p\2\2\u09b2\u09b3\7f\2\2\u09b3\u09b4\7d\2\2\u09b4") - buf.write("\u09b5\7n\2\2\u09b5\u09b6\7q\2\2\u09b6\u09b7\7e\2\2\u09b7") - buf.write("\u09b9\7m\2\2\u09b8\u09a8\3\2\2\2\u09b8\u09b0\3\2\2\2") - buf.write("\u09b9\u00ee\3\2\2\2\u09ba\u09bb\7\17\2\2\u09bb\u09be") - buf.write("\7\f\2\2\u09bc\u09be\t\3\2\2\u09bd\u09ba\3\2\2\2\u09bd") - buf.write("\u09bc\3\2\2\2\u09be\u00f0\3\2\2\2\u09bf\u09c0\7M\2\2") - buf.write("\u09c0\u09c1\7K\2\2\u09c1\u09c2\7P\2\2\u09c2\u09c8\7F") - buf.write("\2\2\u09c3\u09c4\7m\2\2\u09c4\u09c5\7k\2\2\u09c5\u09c6") - buf.write("\7p\2\2\u09c6\u09c8\7f\2\2\u09c7\u09bf\3\2\2\2\u09c7\u09c3") - buf.write("\3\2\2\2\u09c8\u00f2\3\2\2\2\u09c9\u09ca\7N\2\2\u09ca") - buf.write("\u09cb\7G\2\2\u09cb\u09d0\7P\2\2\u09cc\u09cd\7n\2\2\u09cd") - buf.write("\u09ce\7g\2\2\u09ce\u09d0\7p\2\2\u09cf\u09c9\3\2\2\2\u09cf") - buf.write("\u09cc\3\2\2\2\u09d0\u00f4\3\2\2\2\u09d1\u09d4\t\4\2\2") - buf.write("\u09d2\u09d4\5\u00efx\2\u09d3\u09d1\3\2\2\2\u09d3\u09d2") - buf.write("\3\2\2\2\u09d4\u09d5\3\2\2\2\u09d5\u09d3\3\2\2\2\u09d5") - buf.write("\u09d6\3\2\2\2\u09d6\u09d7\3\2\2\2\u09d7\u09d8\b{\2\2") - buf.write("\u09d8\u00f6\3\2\2\2\u09d9\u09db\7\13\2\2\u09da\u09d9") - buf.write("\3\2\2\2\u09db\u09de\3\2\2\2\u09dc\u09da\3\2\2\2\u09dc") - buf.write("\u09dd\3\2\2\2\u09dd\u09e2\3\2\2\2\u09de\u09dc\3\2\2\2") - buf.write("\u09df\u09e1\7\"\2\2\u09e0\u09df\3\2\2\2\u09e1\u09e4\3") - buf.write("\2\2\2\u09e2\u09e0\3\2\2\2\u09e2\u09e3\3\2\2\2\u09e3\u09e5") - buf.write("\3\2\2\2\u09e4\u09e2\3\2\2\2\u09e5\u09e9\7#\2\2\u09e6") - buf.write("\u09e8\n\5\2\2\u09e7\u09e6\3\2\2\2\u09e8\u09eb\3\2\2\2") - buf.write("\u09e9\u09e7\3\2\2\2\u09e9\u09ea\3\2\2\2\u09ea\u09ef\3") - buf.write("\2\2\2\u09eb\u09e9\3\2\2\2\u09ec\u09ee\t\5\2\2\u09ed\u09ec") - buf.write("\3\2\2\2\u09ee\u09f1\3\2\2\2\u09ef\u09ed\3\2\2\2\u09ef") - buf.write("\u09f0\3\2\2\2\u09f0\u0a01\3\2\2\2\u09f1\u09ef\3\2\2\2") - buf.write("\u09f2\u09f3\6|\2\2\u09f3\u09f7\t\6\2\2\u09f4\u09f6\n") - buf.write("\5\2\2\u09f5\u09f4\3\2\2\2\u09f6\u09f9\3\2\2\2\u09f7\u09f5") - buf.write("\3\2\2\2\u09f7\u09f8\3\2\2\2\u09f8\u09fd\3\2\2\2\u09f9") - buf.write("\u09f7\3\2\2\2\u09fa\u09fc\t\5\2\2\u09fb\u09fa\3\2\2\2") - buf.write("\u09fc\u09ff\3\2\2\2\u09fd\u09fb\3\2\2\2\u09fd\u09fe\3") - buf.write("\2\2\2\u09fe\u0a01\3\2\2\2\u09ff\u09fd\3\2\2\2\u0a00\u09dc") - buf.write("\3\2\2\2\u0a00\u09f2\3\2\2\2\u0a01\u0a02\3\2\2\2\u0a02") - buf.write("\u0a03\b|\2\2\u0a03\u00f8\3\2\2\2\u0a04\u0a05\7&\2\2\u0a05") - buf.write("\u00fa\3\2\2\2\u0a06\u0a07\7.\2\2\u0a07\u00fc\3\2\2\2") - buf.write("\u0a08\u0a09\7*\2\2\u0a09\u00fe\3\2\2\2\u0a0a\u0a0b\7") - buf.write("\'\2\2\u0a0b\u0100\3\2\2\2\u0a0c\u0a0d\7y\2\2\u0a0d\u0a0e") - buf.write("\7j\2\2\u0a0e\u0a0f\7k\2\2\u0a0f\u0a10\7n\2\2\u0a10\u0a17") - buf.write("\7g\2\2\u0a11\u0a12\7Y\2\2\u0a12\u0a13\7J\2\2\u0a13\u0a14") - buf.write("\7K\2\2\u0a14\u0a15\7N\2\2\u0a15\u0a17\7G\2\2\u0a16\u0a0c") - buf.write("\3\2\2\2\u0a16\u0a11\3\2\2\2\u0a17\u0102\3\2\2\2\u0a18") - buf.write("\u0a19\7C\2\2\u0a19\u0a1a\7N\2\2\u0a1a\u0a1b\7N\2\2\u0a1b") - buf.write("\u0a1c\7Q\2\2\u0a1c\u0a1d\7E\2\2\u0a1d\u0a1e\7C\2\2\u0a1e") - buf.write("\u0a1f\7V\2\2\u0a1f\u0a29\7G\2\2\u0a20\u0a21\7c\2\2\u0a21") - buf.write("\u0a22\7n\2\2\u0a22\u0a23\7n\2\2\u0a23\u0a24\7q\2\2\u0a24") - buf.write("\u0a25\7e\2\2\u0a25\u0a26\7c\2\2\u0a26\u0a27\7v\2\2\u0a27") - buf.write("\u0a29\7g\2\2\u0a28\u0a18\3\2\2\2\u0a28\u0a20\3\2\2\2") - buf.write("\u0a29\u0104\3\2\2\2\u0a2a\u0a2b\7U\2\2\u0a2b\u0a2c\7") - buf.write("V\2\2\u0a2c\u0a2d\7C\2\2\u0a2d\u0a33\7V\2\2\u0a2e\u0a2f") - buf.write("\7u\2\2\u0a2f\u0a30\7v\2\2\u0a30\u0a31\7c\2\2\u0a31\u0a33") - buf.write("\7v\2\2\u0a32\u0a2a\3\2\2\2\u0a32\u0a2e\3\2\2\2\u0a33") - buf.write("\u0106\3\2\2\2\u0a34\u0a35\7+\2\2\u0a35\u0108\3\2\2\2") - buf.write("\u0a36\u0a37\7<\2\2\u0a37\u010a\3\2\2\2\u0a38\u0a39\7") - buf.write("?\2\2\u0a39\u010c\3\2\2\2\u0a3a\u0a3b\7/\2\2\u0a3b\u010e") - buf.write("\3\2\2\2\u0a3c\u0a3d\7-\2\2\u0a3d\u0110\3\2\2\2\u0a3e") - buf.write("\u0a3f\7\61\2\2\u0a3f\u0112\3\2\2\2\u0a40\u0a41\7,\2\2") - buf.write("\u0a41\u0114\3\2\2\2\u0a42\u0a43\t\7\2\2\u0a43\u0116\3") - buf.write("\2\2\2\u0a44\u0a45\7,\2\2\u0a45\u0a46\7,\2\2\u0a46\u0118") - buf.write("\3\2\2\2\u0a47\u0a48\7\60\2\2\u0a48\u0a49\7p\2\2\u0a49") - buf.write("\u0a4a\7q\2\2\u0a4a\u0a4b\7v\2\2\u0a4b\u0a52\7\60\2\2") - buf.write("\u0a4c\u0a4d\7\60\2\2\u0a4d\u0a4e\7P\2\2\u0a4e\u0a4f\7") - buf.write("Q\2\2\u0a4f\u0a50\7V\2\2\u0a50\u0a52\7\60\2\2\u0a51\u0a47") - buf.write("\3\2\2\2\u0a51\u0a4c\3\2\2\2\u0a52\u011a\3\2\2\2\u0a53") - buf.write("\u0a54\7\60\2\2\u0a54\u0a55\7c\2\2\u0a55\u0a56\7p\2\2") - buf.write("\u0a56\u0a57\7f\2\2\u0a57\u0a5e\7\60\2\2\u0a58\u0a59\7") - buf.write("\60\2\2\u0a59\u0a5a\7C\2\2\u0a5a\u0a5b\7P\2\2\u0a5b\u0a5c") - buf.write("\7F\2\2\u0a5c\u0a5e\7\60\2\2\u0a5d\u0a53\3\2\2\2\u0a5d") - buf.write("\u0a58\3\2\2\2\u0a5e\u011c\3\2\2\2\u0a5f\u0a60\7\60\2") - buf.write("\2\u0a60\u0a61\7q\2\2\u0a61\u0a62\7t\2\2\u0a62\u0a68\7") - buf.write("\60\2\2\u0a63\u0a64\7\60\2\2\u0a64\u0a65\7Q\2\2\u0a65") - buf.write("\u0a66\7T\2\2\u0a66\u0a68\7\60\2\2\u0a67\u0a5f\3\2\2\2") - buf.write("\u0a67\u0a63\3\2\2\2\u0a68\u011e\3\2\2\2\u0a69\u0a6a\7") - buf.write("\60\2\2\u0a6a\u0a6b\7g\2\2\u0a6b\u0a6c\7s\2\2\u0a6c\u0a6d") - buf.write("\7x\2\2\u0a6d\u0a74\7\60\2\2\u0a6e\u0a6f\7\60\2\2\u0a6f") - buf.write("\u0a70\7G\2\2\u0a70\u0a71\7S\2\2\u0a71\u0a72\7X\2\2\u0a72") - buf.write("\u0a74\7\60\2\2\u0a73\u0a69\3\2\2\2\u0a73\u0a6e\3\2\2") - buf.write("\2\u0a74\u0120\3\2\2\2\u0a75\u0a76\7\60\2\2\u0a76\u0a77") - buf.write("\7p\2\2\u0a77\u0a78\7g\2\2\u0a78\u0a79\7s\2\2\u0a79\u0a7a") - buf.write("\7x\2\2\u0a7a\u0a82\7\60\2\2\u0a7b\u0a7c\7\60\2\2\u0a7c") - buf.write("\u0a7d\7P\2\2\u0a7d\u0a7e\7G\2\2\u0a7e\u0a7f\7S\2\2\u0a7f") - buf.write("\u0a80\7X\2\2\u0a80\u0a82\7\60\2\2\u0a81\u0a75\3\2\2\2") - buf.write("\u0a81\u0a7b\3\2\2\2\u0a82\u0122\3\2\2\2\u0a83\u0a84\7") - buf.write("\60\2\2\u0a84\u0a85\7z\2\2\u0a85\u0a86\7q\2\2\u0a86\u0a87") - buf.write("\7t\2\2\u0a87\u0a8e\7\60\2\2\u0a88\u0a89\7\60\2\2\u0a89") - buf.write("\u0a8a\7Z\2\2\u0a8a\u0a8b\7Q\2\2\u0a8b\u0a8c\7T\2\2\u0a8c") - buf.write("\u0a8e\7\60\2\2\u0a8d\u0a83\3\2\2\2\u0a8d\u0a88\3\2\2") - buf.write("\2\u0a8e\u0124\3\2\2\2\u0a8f\u0a90\7\60\2\2\u0a90\u0a91") - buf.write("\7g\2\2\u0a91\u0a92\7q\2\2\u0a92\u0a93\7t\2\2\u0a93\u0a9a") - buf.write("\7\60\2\2\u0a94\u0a95\7\60\2\2\u0a95\u0a96\7G\2\2\u0a96") - buf.write("\u0a97\7Q\2\2\u0a97\u0a98\7T\2\2\u0a98\u0a9a\7\60\2\2") - buf.write("\u0a99\u0a8f\3\2\2\2\u0a99\u0a94\3\2\2\2\u0a9a\u0126\3") - buf.write("\2\2\2\u0a9b\u0a9c\7\60\2\2\u0a9c\u0a9d\7n\2\2\u0a9d\u0a9e") - buf.write("\7v\2\2\u0a9e\u0aa4\7\60\2\2\u0a9f\u0aa0\7\60\2\2\u0aa0") - buf.write("\u0aa1\7N\2\2\u0aa1\u0aa2\7V\2\2\u0aa2\u0aa4\7\60\2\2") - buf.write("\u0aa3\u0a9b\3\2\2\2\u0aa3\u0a9f\3\2\2\2\u0aa4\u0128\3") - buf.write("\2\2\2\u0aa5\u0aa6\7\60\2\2\u0aa6\u0aa7\7n\2\2\u0aa7\u0aa8") - buf.write("\7g\2\2\u0aa8\u0aae\7\60\2\2\u0aa9\u0aaa\7\60\2\2\u0aaa") - buf.write("\u0aab\7N\2\2\u0aab\u0aac\7G\2\2\u0aac\u0aae\7\60\2\2") - buf.write("\u0aad\u0aa5\3\2\2\2\u0aad\u0aa9\3\2\2\2\u0aae\u012a\3") - buf.write("\2\2\2\u0aaf\u0ab0\7\60\2\2\u0ab0\u0ab1\7i\2\2\u0ab1\u0ab2") - buf.write("\7v\2\2\u0ab2\u0ab8\7\60\2\2\u0ab3\u0ab4\7\60\2\2\u0ab4") - buf.write("\u0ab5\7I\2\2\u0ab5\u0ab6\7V\2\2\u0ab6\u0ab8\7\60\2\2") - buf.write("\u0ab7\u0aaf\3\2\2\2\u0ab7\u0ab3\3\2\2\2\u0ab8\u012c\3") - buf.write("\2\2\2\u0ab9\u0aba\7\60\2\2\u0aba\u0abb\7i\2\2\u0abb\u0abc") - buf.write("\7g\2\2\u0abc\u0ac2\7\60\2\2\u0abd\u0abe\7\60\2\2\u0abe") - buf.write("\u0abf\7I\2\2\u0abf\u0ac0\7G\2\2\u0ac0\u0ac2\7\60\2\2") - buf.write("\u0ac1\u0ab9\3\2\2\2\u0ac1\u0abd\3\2\2\2\u0ac2\u012e\3") - buf.write("\2\2\2\u0ac3\u0ac4\7\60\2\2\u0ac4\u0ac5\7p\2\2\u0ac5\u0ac6") - buf.write("\7g\2\2\u0ac6\u0acc\7\60\2\2\u0ac7\u0ac8\7\60\2\2\u0ac8") - buf.write("\u0ac9\7P\2\2\u0ac9\u0aca\7G\2\2\u0aca\u0acc\7\60\2\2") - buf.write("\u0acb\u0ac3\3\2\2\2\u0acb\u0ac7\3\2\2\2\u0acc\u0130\3") - buf.write("\2\2\2\u0acd\u0ace\7\60\2\2\u0ace\u0acf\7g\2\2\u0acf\u0ad0") - buf.write("\7s\2\2\u0ad0\u0ad6\7\60\2\2\u0ad1\u0ad2\7\60\2\2\u0ad2") - buf.write("\u0ad3\7G\2\2\u0ad3\u0ad4\7S\2\2\u0ad4\u0ad6\7\60\2\2") - buf.write("\u0ad5\u0acd\3\2\2\2\u0ad5\u0ad1\3\2\2\2\u0ad6\u0132\3") - buf.write("\2\2\2\u0ad7\u0ad8\7\60\2\2\u0ad8\u0ad9\7v\2\2\u0ad9\u0ada") - buf.write("\7t\2\2\u0ada\u0adb\7w\2\2\u0adb\u0adc\7g\2\2\u0adc\u0ae4") - buf.write("\7\60\2\2\u0add\u0ade\7\60\2\2\u0ade\u0adf\7V\2\2\u0adf") - buf.write("\u0ae0\7T\2\2\u0ae0\u0ae1\7W\2\2\u0ae1\u0ae2\7G\2\2\u0ae2") - buf.write("\u0ae4\7\60\2\2\u0ae3\u0ad7\3\2\2\2\u0ae3\u0add\3\2\2") - buf.write("\2\u0ae4\u0134\3\2\2\2\u0ae5\u0ae6\7\60\2\2\u0ae6\u0ae7") - buf.write("\7h\2\2\u0ae7\u0ae8\7c\2\2\u0ae8\u0ae9\7n\2\2\u0ae9\u0aea") - buf.write("\7u\2\2\u0aea\u0aeb\7g\2\2\u0aeb\u0af4\7\60\2\2\u0aec") - buf.write("\u0aed\7\60\2\2\u0aed\u0aee\7H\2\2\u0aee\u0aef\7C\2\2") - buf.write("\u0aef\u0af0\7N\2\2\u0af0\u0af1\7U\2\2\u0af1\u0af2\7G") - buf.write("\2\2\u0af2\u0af4\7\60\2\2\u0af3\u0ae5\3\2\2\2\u0af3\u0aec") - buf.write("\3\2\2\2\u0af4\u0136\3\2\2\2\u0af5\u0af7\5\u01a5\u00d3") - buf.write("\2\u0af6\u0af5\3\2\2\2\u0af7\u0af8\3\2\2\2\u0af8\u0af6") - buf.write("\3\2\2\2\u0af8\u0af9\3\2\2\2\u0af9\u0afa\3\2\2\2\u0afa") - buf.write("\u0afb\t\b\2\2\u0afb\u0138\3\2\2\2\u0afc\u0afe\t\t\2\2") - buf.write("\u0afd\u0afc\3\2\2\2\u0afd\u0afe\3\2\2\2\u0afe\u0b00\3") - buf.write("\2\2\2\u0aff\u0b01\5\u01a5\u00d3\2\u0b00\u0aff\3\2\2\2") - buf.write("\u0b01\u0b02\3\2\2\2\u0b02\u0b00\3\2\2\2\u0b02\u0b03\3") - buf.write("\2\2\2\u0b03\u0b04\3\2\2\2\u0b04\u0b05\t\n\2\2\u0b05\u013a") - buf.write("\3\2\2\2\u0b06\u0b0b\t\13\2\2\u0b07\u0b08\t\f\2\2\u0b08") - buf.write("\u0b0b\t\r\2\2\u0b09\u0b0b\t\16\2\2\u0b0a\u0b06\3\2\2") - buf.write("\2\u0b0a\u0b07\3\2\2\2\u0b0a\u0b09\3\2\2\2\u0b0b\u0b12") - buf.write("\3\2\2\2\u0b0c\u0b0e\5\u01a5\u00d3\2\u0b0d\u0b0c\3\2\2") - buf.write("\2\u0b0e\u0b0f\3\2\2\2\u0b0f\u0b0d\3\2\2\2\u0b0f\u0b10") - buf.write("\3\2\2\2\u0b10\u0b13\3\2\2\2\u0b11\u0b13\7,\2\2\u0b12") - buf.write("\u0b0d\3\2\2\2\u0b12\u0b11\3\2\2\2\u0b13\u0b14\3\2\2\2") - buf.write("\u0b14\u0b16\7\60\2\2\u0b15\u0b17\5\u01a5\u00d3\2\u0b16") - buf.write("\u0b15\3\2\2\2\u0b17\u0b18\3\2\2\2\u0b18\u0b16\3\2\2\2") - buf.write("\u0b18\u0b19\3\2\2\2\u0b19\u0b20\3\2\2\2\u0b1a\u0b1c\t") - buf.write("\17\2\2\u0b1b\u0b1d\5\u01a5\u00d3\2\u0b1c\u0b1b\3\2\2") - buf.write("\2\u0b1d\u0b1e\3\2\2\2\u0b1e\u0b1c\3\2\2\2\u0b1e\u0b1f") - buf.write("\3\2\2\2\u0b1f\u0b21\3\2\2\2\u0b20\u0b1a\3\2\2\2\u0b20") - buf.write("\u0b21\3\2\2\2\u0b21\u013c\3\2\2\2\u0b22\u0b23\7E\2\2") - buf.write("\u0b23\u0b24\7E\2\2\u0b24\u0b25\7Q\2\2\u0b25\u0b26\7P") - buf.write("\2\2\u0b26\u013e\3\2\2\2\u0b27\u0b28\7J\2\2\u0b28\u0b29") - buf.write("\7Q\2\2\u0b29\u0b2a\7N\2\2\u0b2a\u0b2b\7N\2\2\u0b2b\u0b2c") - buf.write("\7G\2\2\u0b2c\u0b2d\7T\2\2\u0b2d\u0b2e\7K\2\2\u0b2e\u0b2f") - buf.write("\7V\2\2\u0b2f\u0b30\7J\2\2\u0b30\u0140\3\2\2\2\u0b31\u0b32") - buf.write("\7E\2\2\u0b32\u0b33\7Q\2\2\u0b33\u0b34\7P\2\2\u0b34\u0b35") - buf.write("\7E\2\2\u0b35\u0b36\7C\2\2\u0b36\u0b37\7V\2\2\u0b37\u0b38") - buf.write("\7Q\2\2\u0b38\u0b39\7R\2\2\u0b39\u0142\3\2\2\2\u0b3a\u0b3b") - buf.write("\7E\2\2\u0b3b\u0b3c\7V\2\2\u0b3c\u0b3d\7T\2\2\u0b3d\u0b3e") - buf.write("\7N\2\2\u0b3e\u0b3f\7F\2\2\u0b3f\u0b40\7K\2\2\u0b40\u0b41") - buf.write("\7T\2\2\u0b41\u0b42\7G\2\2\u0b42\u0b43\7E\2\2\u0b43\u0b44") - buf.write("\7V\2\2\u0b44\u0144\3\2\2\2\u0b45\u0b46\7E\2\2\u0b46\u0b47") - buf.write("\7V\2\2\u0b47\u0b48\7T\2\2\u0b48\u0b49\7N\2\2\u0b49\u0b4a") - buf.write("\7T\2\2\u0b4a\u0b4b\7G\2\2\u0b4b\u0b4c\7E\2\2\u0b4c\u0146") - buf.write("\3\2\2\2\u0b4d\u0b4e\7V\2\2\u0b4e\u0b4f\7Q\2\2\u0b4f\u0148") - buf.write("\3\2\2\2\u0b50\u0b51\7U\2\2\u0b51\u0b52\7W\2\2\u0b52\u0b53") - buf.write("\7D\2\2\u0b53\u0b54\7R\2\2\u0b54\u0b55\7T\2\2\u0b55\u0b56") - buf.write("\7Q\2\2\u0b56\u0b57\7I\2\2\u0b57\u0b58\7T\2\2\u0b58\u0b59") - buf.write("\7C\2\2\u0b59\u0b5a\7O\2\2\u0b5a\u0b5b\7D\2\2\u0b5b\u0b5c") - buf.write("\7N\2\2\u0b5c\u0b5d\7Q\2\2\u0b5d\u0b5e\7E\2\2\u0b5e\u0b5f") - buf.write("\7M\2\2\u0b5f\u014a\3\2\2\2\u0b60\u0b61\7F\2\2\u0b61\u0b62") - buf.write("\7Q\2\2\u0b62\u0b63\7D\2\2\u0b63\u0b64\7N\2\2\u0b64\u0b65") - buf.write("\7Q\2\2\u0b65\u0b66\7E\2\2\u0b66\u0b67\7M\2\2\u0b67\u014c") - buf.write("\3\2\2\2\u0b68\u0b69\7C\2\2\u0b69\u0b6a\7K\2\2\u0b6a\u0b6b") - buf.write("\7H\2\2\u0b6b\u014e\3\2\2\2\u0b6c\u0b6d\7V\2\2\u0b6d\u0b6e") - buf.write("\7J\2\2\u0b6e\u0b6f\7G\2\2\u0b6f\u0b70\7P\2\2\u0b70\u0b71") - buf.write("\7D\2\2\u0b71\u0b72\7N\2\2\u0b72\u0b73\7Q\2\2\u0b73\u0b74") - buf.write("\7E\2\2\u0b74\u0b75\7M\2\2\u0b75\u0150\3\2\2\2\u0b76\u0b77") - buf.write("\7G\2\2\u0b77\u0b78\7N\2\2\u0b78\u0b79\7U\2\2\u0b79\u0b7a") - buf.write("\7G\2\2\u0b7a\u0b7b\7D\2\2\u0b7b\u0b7c\7N\2\2\u0b7c\u0b7d") - buf.write("\7Q\2\2\u0b7d\u0b7e\7E\2\2\u0b7e\u0b7f\7M\2\2\u0b7f\u0152") - buf.write("\3\2\2\2\u0b80\u0b81\7E\2\2\u0b81\u0b82\7Q\2\2\u0b82\u0b83") - buf.write("\7F\2\2\u0b83\u0b84\7G\2\2\u0b84\u0b85\7T\2\2\u0b85\u0b86") - buf.write("\7Q\2\2\u0b86\u0b87\7Q\2\2\u0b87\u0b88\7V\2\2\u0b88\u0154") - buf.write("\3\2\2\2\u0b89\u0b8a\7E\2\2\u0b8a\u0b8b\7Q\2\2\u0b8b\u0b8c") - buf.write("\7O\2\2\u0b8c\u0b8d\7R\2\2\u0b8d\u0b8e\7N\2\2\u0b8e\u0b8f") - buf.write("\7G\2\2\u0b8f\u0b98\7Z\2\2\u0b90\u0b91\7e\2\2\u0b91\u0b92") - buf.write("\7q\2\2\u0b92\u0b93\7o\2\2\u0b93\u0b94\7r\2\2\u0b94\u0b95") - buf.write("\7n\2\2\u0b95\u0b96\7g\2\2\u0b96\u0b98\7z\2\2\u0b97\u0b89") - buf.write("\3\2\2\2\u0b97\u0b90\3\2\2\2\u0b98\u0156\3\2\2\2\u0b99") - buf.write("\u0b9a\7R\2\2\u0b9a\u0b9b\7T\2\2\u0b9b\u0b9c\7G\2\2\u0b9c") - buf.write("\u0b9d\7E\2\2\u0b9d\u0b9e\7K\2\2\u0b9e\u0b9f\7U\2\2\u0b9f") - buf.write("\u0ba0\7K\2\2\u0ba0\u0ba1\7Q\2\2\u0ba1\u0bac\7P\2\2\u0ba2") - buf.write("\u0ba3\7r\2\2\u0ba3\u0ba4\7t\2\2\u0ba4\u0ba5\7g\2\2\u0ba5") - buf.write("\u0ba6\7e\2\2\u0ba6\u0ba7\7k\2\2\u0ba7\u0ba8\7u\2\2\u0ba8") - buf.write("\u0ba9\7k\2\2\u0ba9\u0baa\7q\2\2\u0baa\u0bac\7p\2\2\u0bab") - buf.write("\u0b99\3\2\2\2\u0bab\u0ba2\3\2\2\2\u0bac\u0158\3\2\2\2") - buf.write("\u0bad\u0bae\7K\2\2\u0bae\u0baf\7P\2\2\u0baf\u0bb0\7V") - buf.write("\2\2\u0bb0\u0bb1\7G\2\2\u0bb1\u0bb2\7I\2\2\u0bb2\u0bb3") - buf.write("\7G\2\2\u0bb3\u0bc3\7T\2\2\u0bb4\u0bb5\7k\2\2\u0bb5\u0bb6") - buf.write("\7p\2\2\u0bb6\u0bb7\7v\2\2\u0bb7\u0bb8\7g\2\2\u0bb8\u0bb9") - buf.write("\7i\2\2\u0bb9\u0bba\7g\2\2\u0bba\u0bc3\7t\2\2\u0bbb\u0bbc") - buf.write("\7K\2\2\u0bbc\u0bbd\7p\2\2\u0bbd\u0bbe\7v\2\2\u0bbe\u0bbf") - buf.write("\7g\2\2\u0bbf\u0bc0\7i\2\2\u0bc0\u0bc1\7g\2\2\u0bc1\u0bc3") - buf.write("\7t\2\2\u0bc2\u0bad\3\2\2\2\u0bc2\u0bb4\3\2\2\2\u0bc2") - buf.write("\u0bbb\3\2\2\2\u0bc3\u015a\3\2\2\2\u0bc4\u0bc5\7N\2\2") - buf.write("\u0bc5\u0bc6\7Q\2\2\u0bc6\u0bc7\7I\2\2\u0bc7\u0bc8\7K") - buf.write("\2\2\u0bc8\u0bc9\7E\2\2\u0bc9\u0bca\7C\2\2\u0bca\u0bda") - buf.write("\7N\2\2\u0bcb\u0bcc\7n\2\2\u0bcc\u0bcd\7q\2\2\u0bcd\u0bce") - buf.write("\7i\2\2\u0bce\u0bcf\7k\2\2\u0bcf\u0bd0\7e\2\2\u0bd0\u0bd1") - buf.write("\7c\2\2\u0bd1\u0bda\7n\2\2\u0bd2\u0bd3\7N\2\2\u0bd3\u0bd4") - buf.write("\7q\2\2\u0bd4\u0bd5\7i\2\2\u0bd5\u0bd6\7k\2\2\u0bd6\u0bd7") - buf.write("\7e\2\2\u0bd7\u0bd8\7c\2\2\u0bd8\u0bda\7n\2\2\u0bd9\u0bc4") - buf.write("\3\2\2\2\u0bd9\u0bcb\3\2\2\2\u0bd9\u0bd2\3\2\2\2\u0bda") - buf.write("\u015c\3\2\2\2\u0bdb\u0bdc\7a\2\2\u0bdc\u015e\3\2\2\2") - buf.write("\u0bdd\u0bde\5\u015d\u00af\2\u0bde\u0160\3\2\2\2\u0bdf") - buf.write("\u0be0\7*\2\2\u0be0\u0be1\7\61\2\2\u0be1\u0162\3\2\2\2") - buf.write("\u0be2\u0be3\7\60\2\2\u0be3\u0164\3\2\2\2\u0be4\u0be5") - buf.write("\7\61\2\2\u0be5\u0be6\7+\2\2\u0be6\u0166\3\2\2\2\u0be7") - buf.write("\u0be8\t\20\2\2\u0be8\u0bea\7)\2\2\u0be9\u0beb\t\21\2") - buf.write("\2\u0bea\u0be9\3\2\2\2\u0beb\u0bec\3\2\2\2\u0bec\u0bea") - buf.write("\3\2\2\2\u0bec\u0bed\3\2\2\2\u0bed\u0bee\3\2\2\2\u0bee") - buf.write("\u0bf8\7)\2\2\u0bef\u0bf0\t\20\2\2\u0bf0\u0bf2\7$\2\2") - buf.write("\u0bf1\u0bf3\t\21\2\2\u0bf2\u0bf1\3\2\2\2\u0bf3\u0bf4") - buf.write("\3\2\2\2\u0bf4\u0bf2\3\2\2\2\u0bf4\u0bf5\3\2\2\2\u0bf5") - buf.write("\u0bf6\3\2\2\2\u0bf6\u0bf8\7$\2\2\u0bf7\u0be7\3\2\2\2") - buf.write("\u0bf7\u0bef\3\2\2\2\u0bf8\u0168\3\2\2\2\u0bf9\u0bfa\t") - buf.write("\22\2\2\u0bfa\u0bfc\7)\2\2\u0bfb\u0bfd\t\23\2\2\u0bfc") - buf.write("\u0bfb\3\2\2\2\u0bfd\u0bfe\3\2\2\2\u0bfe\u0bfc\3\2\2\2") - buf.write("\u0bfe\u0bff\3\2\2\2\u0bff\u0c00\3\2\2\2\u0c00\u0c0a\7") - buf.write(")\2\2\u0c01\u0c02\t\22\2\2\u0c02\u0c04\7$\2\2\u0c03\u0c05") - buf.write("\t\23\2\2\u0c04\u0c03\3\2\2\2\u0c05\u0c06\3\2\2\2\u0c06") - buf.write("\u0c04\3\2\2\2\u0c06\u0c07\3\2\2\2\u0c07\u0c08\3\2\2\2") - buf.write("\u0c08\u0c0a\7$\2\2\u0c09\u0bf9\3\2\2\2\u0c09\u0c01\3") - buf.write("\2\2\2\u0c0a\u016a\3\2\2\2\u0c0b\u0c0c\t\24\2\2\u0c0c") - buf.write("\u0c0e\7$\2\2\u0c0d\u0c0f\t\25\2\2\u0c0e\u0c0d\3\2\2\2") - buf.write("\u0c0f\u0c10\3\2\2\2\u0c10\u0c0e\3\2\2\2\u0c10\u0c11\3") - buf.write("\2\2\2\u0c11\u0c12\3\2\2\2\u0c12\u0c1c\7$\2\2\u0c13\u0c14") - buf.write("\t\24\2\2\u0c14\u0c16\7)\2\2\u0c15\u0c17\t\25\2\2\u0c16") - buf.write("\u0c15\3\2\2\2\u0c17\u0c18\3\2\2\2\u0c18\u0c16\3\2\2\2") - buf.write("\u0c18\u0c19\3\2\2\2\u0c19\u0c1a\3\2\2\2\u0c1a\u0c1c\7") - buf.write(")\2\2\u0c1b\u0c0b\3\2\2\2\u0c1b\u0c13\3\2\2\2\u0c1c\u016c") - buf.write("\3\2\2\2\u0c1d\u0c41\7)\2\2\u0c1e\u0c1f\7)\2\2\u0c1f\u0c40") - buf.write("\7)\2\2\u0c20\u0c40\n\26\2\2\u0c21\u0c27\7\f\2\2\u0c22") - buf.write("\u0c24\7\17\2\2\u0c23\u0c25\7\f\2\2\u0c24\u0c23\3\2\2") - buf.write("\2\u0c24\u0c25\3\2\2\2\u0c25\u0c27\3\2\2\2\u0c26\u0c21") - buf.write("\3\2\2\2\u0c26\u0c22\3\2\2\2\u0c27\u0c28\3\2\2\2\u0c28") - buf.write("\u0c29\7\"\2\2\u0c29\u0c2a\7\"\2\2\u0c2a\u0c2b\7\"\2\2") - buf.write("\u0c2b\u0c2c\7\"\2\2\u0c2c\u0c2d\7\"\2\2\u0c2d\u0c2e\3") - buf.write("\2\2\2\u0c2e\u0c2f\5\u0197\u00cc\2\u0c2f\u0c35\3\2\2\2") - buf.write("\u0c30\u0c36\7\f\2\2\u0c31\u0c33\7\17\2\2\u0c32\u0c34") - buf.write("\7\f\2\2\u0c33\u0c32\3\2\2\2\u0c33\u0c34\3\2\2\2\u0c34") - buf.write("\u0c36\3\2\2\2\u0c35\u0c30\3\2\2\2\u0c35\u0c31\3\2\2\2") - buf.write("\u0c36\u0c37\3\2\2\2\u0c37\u0c38\7\"\2\2\u0c38\u0c39\7") - buf.write("\"\2\2\u0c39\u0c3a\7\"\2\2\u0c3a\u0c3b\7\"\2\2\u0c3b\u0c3c") - buf.write("\7\"\2\2\u0c3c\u0c3d\3\2\2\2\u0c3d\u0c3e\5\u0197\u00cc") - buf.write("\2\u0c3e\u0c40\3\2\2\2\u0c3f\u0c1e\3\2\2\2\u0c3f\u0c20") - buf.write("\3\2\2\2\u0c3f\u0c26\3\2\2\2\u0c40\u0c43\3\2\2\2\u0c41") - buf.write("\u0c3f\3\2\2\2\u0c41\u0c42\3\2\2\2\u0c42\u0c44\3\2\2\2") - buf.write("\u0c43\u0c41\3\2\2\2\u0c44\u0c5a\7)\2\2\u0c45\u0c4b\7") - buf.write(")\2\2\u0c46\u0c4a\n\27\2\2\u0c47\u0c48\7)\2\2\u0c48\u0c4a") - buf.write("\7)\2\2\u0c49\u0c46\3\2\2\2\u0c49\u0c47\3\2\2\2\u0c4a") - buf.write("\u0c4d\3\2\2\2\u0c4b\u0c49\3\2\2\2\u0c4b\u0c4c\3\2\2\2") - buf.write("\u0c4c\u0c4e\3\2\2\2\u0c4d\u0c4b\3\2\2\2\u0c4e\u0c5a\7") - buf.write(")\2\2\u0c4f\u0c55\7$\2\2\u0c50\u0c54\n\30\2\2\u0c51\u0c52") - buf.write("\7$\2\2\u0c52\u0c54\7$\2\2\u0c53\u0c50\3\2\2\2\u0c53\u0c51") - buf.write("\3\2\2\2\u0c54\u0c57\3\2\2\2\u0c55\u0c53\3\2\2\2\u0c55") - buf.write("\u0c56\3\2\2\2\u0c56\u0c58\3\2\2\2\u0c57\u0c55\3\2\2\2") - buf.write("\u0c58\u0c5a\7$\2\2\u0c59\u0c1d\3\2\2\2\u0c59\u0c45\3") - buf.write("\2\2\2\u0c59\u0c4f\3\2\2\2\u0c5a\u016e\3\2\2\2\u0c5b\u0c5d") - buf.write("\5\u01a5\u00d3\2\u0c5c\u0c5b\3\2\2\2\u0c5d\u0c5e\3\2\2") - buf.write("\2\u0c5e\u0c5c\3\2\2\2\u0c5e\u0c5f\3\2\2\2\u0c5f\u0c60") - buf.write("\3\2\2\2\u0c60\u0c64\7\60\2\2\u0c61\u0c63\5\u01a5\u00d3") - buf.write("\2\u0c62\u0c61\3\2\2\2\u0c63\u0c66\3\2\2\2\u0c64\u0c62") - buf.write("\3\2\2\2\u0c64\u0c65\3\2\2\2\u0c65\u0c68\3\2\2\2\u0c66") - buf.write("\u0c64\3\2\2\2\u0c67\u0c69\5\u01a1\u00d1\2\u0c68\u0c67") - buf.write("\3\2\2\2\u0c68\u0c69\3\2\2\2\u0c69\u0c81\3\2\2\2\u0c6a") - buf.write("\u0c6c\5\u01a5\u00d3\2\u0c6b\u0c6a\3\2\2\2\u0c6c\u0c6f") - buf.write("\3\2\2\2\u0c6d\u0c6b\3\2\2\2\u0c6d\u0c6e\3\2\2\2\u0c6e") - buf.write("\u0c70\3\2\2\2\u0c6f\u0c6d\3\2\2\2\u0c70\u0c72\7\60\2") - buf.write("\2\u0c71\u0c73\5\u01a5\u00d3\2\u0c72\u0c71\3\2\2\2\u0c73") - buf.write("\u0c74\3\2\2\2\u0c74\u0c72\3\2\2\2\u0c74\u0c75\3\2\2\2") - buf.write("\u0c75\u0c77\3\2\2\2\u0c76\u0c78\5\u01a1\u00d1\2\u0c77") - buf.write("\u0c76\3\2\2\2\u0c77\u0c78\3\2\2\2\u0c78\u0c81\3\2\2\2") - buf.write("\u0c79\u0c7b\5\u01a5\u00d3\2\u0c7a\u0c79\3\2\2\2\u0c7b") - buf.write("\u0c7c\3\2\2\2\u0c7c\u0c7a\3\2\2\2\u0c7c\u0c7d\3\2\2\2") - buf.write("\u0c7d\u0c7e\3\2\2\2\u0c7e\u0c7f\5\u01a1\u00d1\2\u0c7f") - buf.write("\u0c81\3\2\2\2\u0c80\u0c5c\3\2\2\2\u0c80\u0c6d\3\2\2\2") - buf.write("\u0c80\u0c7a\3\2\2\2\u0c81\u0170\3\2\2\2\u0c82\u0c83\7") - buf.write("F\2\2\u0c83\u0c84\7G\2\2\u0c84\u0c85\7C\2\2\u0c85\u0c86") - buf.write("\7N\2\2\u0c86\u0c87\7N\2\2\u0c87\u0c88\7Q\2\2\u0c88\u0c89") - buf.write("\7E\2\2\u0c89\u0c8a\7C\2\2\u0c8a\u0c8b\7V\2\2\u0c8b\u0c97") - buf.write("\7G\2\2\u0c8c\u0c8d\7f\2\2\u0c8d\u0c8e\7g\2\2\u0c8e\u0c8f") - buf.write("\7c\2\2\u0c8f\u0c90\7n\2\2\u0c90\u0c91\7n\2\2\u0c91\u0c92") - buf.write("\7q\2\2\u0c92\u0c93\7e\2\2\u0c93\u0c94\7c\2\2\u0c94\u0c95") - buf.write("\7v\2\2\u0c95\u0c97\7g\2\2\u0c96\u0c82\3\2\2\2\u0c96\u0c8c") - buf.write("\3\2\2\2\u0c97\u0172\3\2\2\2\u0c98\u0c99\7P\2\2\u0c99") - buf.write("\u0c9a\7W\2\2\u0c9a\u0c9b\7N\2\2\u0c9b\u0c9c\7N\2\2\u0c9c") - buf.write("\u0c9d\7K\2\2\u0c9d\u0c9e\7H\2\2\u0c9e\u0ca7\7[\2\2\u0c9f") - buf.write("\u0ca0\7p\2\2\u0ca0\u0ca1\7w\2\2\u0ca1\u0ca2\7n\2\2\u0ca2") - buf.write("\u0ca3\7n\2\2\u0ca3\u0ca4\7k\2\2\u0ca4\u0ca5\7h\2\2\u0ca5") - buf.write("\u0ca7\7{\2\2\u0ca6\u0c98\3\2\2\2\u0ca6\u0c9f\3\2\2\2") - buf.write("\u0ca7\u0174\3\2\2\2\u0ca8\u0ca9\7E\2\2\u0ca9\u0caa\7") - buf.write("[\2\2\u0caa\u0cab\7E\2\2\u0cab\u0cac\7N\2\2\u0cac\u0cb3") - buf.write("\7G\2\2\u0cad\u0cae\7e\2\2\u0cae\u0caf\7{\2\2\u0caf\u0cb0") - buf.write("\7e\2\2\u0cb0\u0cb1\7n\2\2\u0cb1\u0cb3\7g\2\2\u0cb2\u0ca8") - buf.write("\3\2\2\2\u0cb2\u0cad\3\2\2\2\u0cb3\u0176\3\2\2\2\u0cb4") - buf.write("\u0cb5\7G\2\2\u0cb5\u0cb6\7P\2\2\u0cb6\u0cb7\7F\2\2\u0cb7") - buf.write("\u0cb8\7V\2\2\u0cb8\u0cb9\7[\2\2\u0cb9\u0cba\7R\2\2\u0cba") - buf.write("\u0cd1\7G\2\2\u0cbb\u0cbc\7g\2\2\u0cbc\u0cbd\7p\2\2\u0cbd") - buf.write("\u0cbe\7f\2\2\u0cbe\u0cbf\7v\2\2\u0cbf\u0cc0\7{\2\2\u0cc0") - buf.write("\u0cc1\7r\2\2\u0cc1\u0cd1\7g\2\2\u0cc2\u0cc3\7G\2\2\u0cc3") - buf.write("\u0cc4\7p\2\2\u0cc4\u0cc5\7f\2\2\u0cc5\u0cc6\7v\2\2\u0cc6") - buf.write("\u0cc7\7{\2\2\u0cc7\u0cc8\7r\2\2\u0cc8\u0cd1\7g\2\2\u0cc9") - buf.write("\u0cca\7G\2\2\u0cca\u0ccb\7p\2\2\u0ccb\u0ccc\7f\2\2\u0ccc") - buf.write("\u0ccd\7V\2\2\u0ccd\u0cce\7{\2\2\u0cce\u0ccf\7r\2\2\u0ccf") - buf.write("\u0cd1\7g\2\2\u0cd0\u0cb4\3\2\2\2\u0cd0\u0cbb\3\2\2\2") - buf.write("\u0cd0\u0cc2\3\2\2\2\u0cd0\u0cc9\3\2\2\2\u0cd1\u0178\3") - buf.write("\2\2\2\u0cd2\u0cd3\7K\2\2\u0cd3\u0cd4\7P\2\2\u0cd4\u0cd5") - buf.write("\7V\2\2\u0cd5\u0cd6\7G\2\2\u0cd6\u0cd7\7T\2\2\u0cd7\u0cd8") - buf.write("\7H\2\2\u0cd8\u0cd9\7C\2\2\u0cd9\u0cda\7E\2\2\u0cda\u0cee") - buf.write("\7G\2\2\u0cdb\u0cdc\7k\2\2\u0cdc\u0cdd\7p\2\2\u0cdd\u0cde") - buf.write("\7v\2\2\u0cde\u0cdf\7g\2\2\u0cdf\u0ce0\7t\2\2\u0ce0\u0ce1") - buf.write("\7h\2\2\u0ce1\u0ce2\7c\2\2\u0ce2\u0ce3\7e\2\2\u0ce3\u0cee") - buf.write("\7g\2\2\u0ce4\u0ce5\7K\2\2\u0ce5\u0ce6\7p\2\2\u0ce6\u0ce7") - buf.write("\7v\2\2\u0ce7\u0ce8\7g\2\2\u0ce8\u0ce9\7t\2\2\u0ce9\u0cea") - buf.write("\7h\2\2\u0cea\u0ceb\7c\2\2\u0ceb\u0cec\7e\2\2\u0cec\u0cee") - buf.write("\7g\2\2\u0ced\u0cd2\3\2\2\2\u0ced\u0cdb\3\2\2\2\u0ced") - buf.write("\u0ce4\3\2\2\2\u0cee\u017a\3\2\2\2\u0cef\u0cf0\7U\2\2") - buf.write("\u0cf0\u0cf1\7R\2\2\u0cf1\u0cf2\7Q\2\2\u0cf2\u0cf3\7H") - buf.write("\2\2\u0cf3\u0cf4\7H\2\2\u0cf4\u017c\3\2\2\2\u0cf5\u0cf6") - buf.write("\7U\2\2\u0cf6\u0cf7\7R\2\2\u0cf7\u0cf8\7Q\2\2\u0cf8\u0cf9") - buf.write("\7P\2\2\u0cf9\u017e\3\2\2\2\u0cfa\u0cfc\5\u01a5\u00d3") - buf.write("\2\u0cfb\u0cfa\3\2\2\2\u0cfc\u0cfd\3\2\2\2\u0cfd\u0cfb") - buf.write("\3\2\2\2\u0cfd\u0cfe\3\2\2\2\u0cfe\u0180\3\2\2\2\u0cff") - buf.write("\u0d00\7v\2\2\u0d00\u0d01\7{\2\2\u0d01\u0d02\7r\2\2\u0d02") - buf.write("\u0d0c\7g\2\2\u0d03\u0d04\7V\2\2\u0d04\u0d05\7[\2\2\u0d05") - buf.write("\u0d06\7R\2\2\u0d06\u0d0c\7G\2\2\u0d07\u0d08\7V\2\2\u0d08") - buf.write("\u0d09\7{\2\2\u0d09\u0d0a\7r\2\2\u0d0a\u0d0c\7g\2\2\u0d0b") - buf.write("\u0cff\3\2\2\2\u0d0b\u0d03\3\2\2\2\u0d0b\u0d07\3\2\2\2") - buf.write("\u0d0c\u0182\3\2\2\2\u0d0d\u0d11\5\u018b\u00c6\2\u0d0e") - buf.write("\u0d10\5\u0189\u00c5\2\u0d0f\u0d0e\3\2\2\2\u0d10\u0d13") - buf.write("\3\2\2\2\u0d11\u0d0f\3\2\2\2\u0d11\u0d12\3\2\2\2\u0d12") - buf.write("\u0184\3\2\2\2\u0d13\u0d11\3\2\2\2\u0d14\u0d15\7G\2\2") - buf.write("\u0d15\u0d16\7Z\2\2\u0d16\u0d17\7K\2\2\u0d17\u0d1d\7V") - buf.write("\2\2\u0d18\u0d19\7g\2\2\u0d19\u0d1a\7z\2\2\u0d1a\u0d1b") - buf.write("\7k\2\2\u0d1b\u0d1d\7v\2\2\u0d1c\u0d14\3\2\2\2\u0d1c\u0d18") - buf.write("\3\2\2\2\u0d1d\u0186\3\2\2\2\u0d1e\u0d1f\7D\2\2\u0d1f") - buf.write("\u0d20\7N\2\2\u0d20\u0d21\7C\2\2\u0d21\u0d22\7P\2\2\u0d22") - buf.write("\u0d29\7M\2\2\u0d23\u0d24\7d\2\2\u0d24\u0d25\7n\2\2\u0d25") - buf.write("\u0d26\7c\2\2\u0d26\u0d27\7p\2\2\u0d27\u0d29\7m\2\2\u0d28") - buf.write("\u0d1e\3\2\2\2\u0d28\u0d23\3\2\2\2\u0d29\u0188\3\2\2\2") - buf.write("\u0d2a\u0d2e\5\u018b\u00c6\2\u0d2b\u0d2e\5\u01a5\u00d3") - buf.write("\2\u0d2c\u0d2e\5\u015d\u00af\2\u0d2d\u0d2a\3\2\2\2\u0d2d") - buf.write("\u0d2b\3\2\2\2\u0d2d\u0d2c\3\2\2\2\u0d2e\u018a\3\2\2\2") - buf.write("\u0d2f\u0d30\t\31\2\2\u0d30\u018c\3\2\2\2\u0d31\u0d32") - buf.write("\5\u0113\u008a\2\u0d32\u018e\3\2\2\2\u0d33\u0d37\7$\2") - buf.write("\2\u0d34\u0d36\n\32\2\2\u0d35\u0d34\3\2\2\2\u0d36\u0d39") - buf.write("\3\2\2\2\u0d37\u0d35\3\2\2\2\u0d37\u0d38\3\2\2\2\u0d38") - buf.write("\u0d3a\3\2\2\2\u0d39\u0d37\3\2\2\2\u0d3a\u0d3b\7$\2\2") - buf.write("\u0d3b\u0190\3\2\2\2\u0d3c\u0d3e\t\5\2\2\u0d3d\u0d3c\3") - buf.write("\2\2\2\u0d3e\u0d3f\3\2\2\2\u0d3f\u0d3d\3\2\2\2\u0d3f\u0d40") - buf.write("\3\2\2\2\u0d40\u0192\3\2\2\2\u0d41\u0d43\t\4\2\2\u0d42") - buf.write("\u0d41\3\2\2\2\u0d43\u0d44\3\2\2\2\u0d44\u0d42\3\2\2\2") - buf.write("\u0d44\u0d45\3\2\2\2\u0d45\u0194\3\2\2\2\u0d46\u0d48\7") - buf.write("(\2\2\u0d47\u0d49\5\u0193\u00ca\2\u0d48\u0d47\3\2\2\2") - buf.write("\u0d48\u0d49\3\2\2\2\u0d49\u0d4b\3\2\2\2\u0d4a\u0d4c\5") - buf.write("\u00f7|\2\u0d4b\u0d4a\3\2\2\2\u0d4b\u0d4c\3\2\2\2\u0d4c") - buf.write("\u0d4d\3\2\2\2\u0d4d\u0d5b\5\u00efx\2\u0d4e\u0d50\5\u0193") - buf.write("\u00ca\2\u0d4f\u0d4e\3\2\2\2\u0d50\u0d53\3\2\2\2\u0d51") - buf.write("\u0d4f\3\2\2\2\u0d51\u0d52\3\2\2\2\u0d52\u0d57\3\2\2\2") - buf.write("\u0d53\u0d51\3\2\2\2\u0d54\u0d56\t\4\2\2\u0d55\u0d54\3") - buf.write("\2\2\2\u0d56\u0d59\3\2\2\2\u0d57\u0d55\3\2\2\2\u0d57\u0d58") - buf.write("\3\2\2\2\u0d58\u0d5a\3\2\2\2\u0d59\u0d57\3\2\2\2\u0d5a") - buf.write("\u0d5c\7(\2\2\u0d5b\u0d51\3\2\2\2\u0d5b\u0d5c\3\2\2\2") - buf.write("\u0d5c\u0d73\3\2\2\2\u0d5d\u0d5f\5\u0193\u00ca\2\u0d5e") - buf.write("\u0d5d\3\2\2\2\u0d5e\u0d5f\3\2\2\2\u0d5f\u0d61\3\2\2\2") - buf.write("\u0d60\u0d62\5\u00f7|\2\u0d61\u0d60\3\2\2\2\u0d61\u0d62") - buf.write("\3\2\2\2\u0d62\u0d63\3\2\2\2\u0d63\u0d67\5\u00efx\2\u0d64") - buf.write("\u0d66\5\u0193\u00ca\2\u0d65\u0d64\3\2\2\2\u0d66\u0d69") - buf.write("\3\2\2\2\u0d67\u0d65\3\2\2\2\u0d67\u0d68\3\2\2\2\u0d68") - buf.write("\u0d6d\3\2\2\2\u0d69\u0d67\3\2\2\2\u0d6a\u0d6c\t\4\2\2") - buf.write("\u0d6b\u0d6a\3\2\2\2\u0d6c\u0d6f\3\2\2\2\u0d6d\u0d6b\3") - buf.write("\2\2\2\u0d6d\u0d6e\3\2\2\2\u0d6e\u0d70\3\2\2\2\u0d6f\u0d6d") - buf.write("\3\2\2\2\u0d70\u0d71\7(\2\2\u0d71\u0d73\3\2\2\2\u0d72") - buf.write("\u0d46\3\2\2\2\u0d72\u0d5e\3\2\2\2\u0d73\u0d74\3\2\2\2") - buf.write("\u0d74\u0d75\b\u00cb\2\2\u0d75\u0196\3\2\2\2\u0d76\u0d77") - buf.write("\n\33\2\2\u0d77\u0198\3\2\2\2\u0d78\u0d7b\5\u01a3\u00d2") - buf.write("\2\u0d79\u0d7b\5\u01a5\u00d3\2\u0d7a\u0d78\3\2\2\2\u0d7a") - buf.write("\u0d79\3\2\2\2\u0d7b\u019a\3\2\2\2\u0d7c\u0d7f\5\u01a5") - buf.write("\u00d3\2\u0d7d\u0d7f\4ch\2\u0d7e\u0d7c\3\2\2\2\u0d7e\u0d7d") - buf.write("\3\2\2\2\u0d7f\u019c\3\2\2\2\u0d80\u0d81\t\t\2\2\u0d81") - buf.write("\u019e\3\2\2\2\u0d82\u0d84\t\34\2\2\u0d83\u0d85\5\u01a5") - buf.write("\u00d3\2\u0d84\u0d83\3\2\2\2\u0d85\u0d86\3\2\2\2\u0d86") - buf.write("\u0d84\3\2\2\2\u0d86\u0d87\3\2\2\2\u0d87\u0d88\3\2\2\2") - buf.write("\u0d88\u0d8a\7\60\2\2\u0d89\u0d8b\5\u01a5\u00d3\2\u0d8a") - buf.write("\u0d89\3\2\2\2\u0d8b\u0d8c\3\2\2\2\u0d8c\u0d8a\3\2\2\2") - buf.write("\u0d8c\u0d8d\3\2\2\2\u0d8d\u0da3\3\2\2\2\u0d8e\u0d90\t") - buf.write("\35\2\2\u0d8f\u0d91\5\u01a5\u00d3\2\u0d90\u0d8f\3\2\2") - buf.write("\2\u0d91\u0d92\3\2\2\2\u0d92\u0d90\3\2\2\2\u0d92\u0d93") - buf.write("\3\2\2\2\u0d93\u0d94\3\2\2\2\u0d94\u0d96\7\60\2\2\u0d95") - buf.write("\u0d97\5\u01a5\u00d3\2\u0d96\u0d95\3\2\2\2\u0d97\u0d98") - buf.write("\3\2\2\2\u0d98\u0d96\3\2\2\2\u0d98\u0d99\3\2\2\2\u0d99") - buf.write("\u0da0\3\2\2\2\u0d9a\u0d9c\7g\2\2\u0d9b\u0d9d\5\u01a5") - buf.write("\u00d3\2\u0d9c\u0d9b\3\2\2\2\u0d9d\u0d9e\3\2\2\2\u0d9e") - buf.write("\u0d9c\3\2\2\2\u0d9e\u0d9f\3\2\2\2\u0d9f\u0da1\3\2\2\2") - buf.write("\u0da0\u0d9a\3\2\2\2\u0da0\u0da1\3\2\2\2\u0da1\u0da3\3") - buf.write("\2\2\2\u0da2\u0d82\3\2\2\2\u0da2\u0d8e\3\2\2\2\u0da3\u01a0") - buf.write("\3\2\2\2\u0da4\u0da6\t\36\2\2\u0da5\u0da7\5\u019d\u00cf") - buf.write("\2\u0da6\u0da5\3\2\2\2\u0da6\u0da7\3\2\2\2\u0da7\u0da9") - buf.write("\3\2\2\2\u0da8\u0daa\5\u01a5\u00d3\2\u0da9\u0da8\3\2\2") - buf.write("\2\u0daa\u0dab\3\2\2\2\u0dab\u0da9\3\2\2\2\u0dab\u0dac") - buf.write("\3\2\2\2\u0dac\u01a2\3\2\2\2\u0dad\u0daf\t\31\2\2\u0dae") - buf.write("\u0dad\3\2\2\2\u0daf\u01a4\3\2\2\2\u0db0\u0db1\4\62;\2") - buf.write("\u0db1\u01a6\3\2\2\2\u00e1\2\u01c2\u01dc\u01f0\u020d\u0224") - buf.write("\u0235\u024f\u0260\u0280\u02a7\u02c4\u02cf\u02ec\u0300") - buf.write("\u0323\u033d\u034f\u0363\u036b\u0376\u0387\u03a1\u03ac") - buf.write("\u03ba\u03dd\u03e4\u03f3\u0433\u044a\u045e\u047b\u0489") - buf.write("\u04ac\u04c9\u04e0\u04f7\u0513\u0527\u052b\u0545\u0553") - buf.write("\u0570\u058d\u05a7\u05c4\u05d2\u05e0\u05e8\u05f6\u05fe") - buf.write("\u0608\u0612\u061e\u062c\u0640\u0648\u065f\u0679\u0693") - buf.write("\u06a4\u06b8\u06ce\u06dc\u06ea\u0701\u0715\u0723\u072e") - buf.write("\u073a\u0746\u0752\u075c\u0768\u0772\u077a\u0784\u078c") - buf.write("\u079a\u07a6\u07b8\u07cc\u07d4\u07de\u07ee\u07f6\u0804") - buf.write("\u0812\u081a\u0824\u0838\u0844\u0852\u0862\u0878\u0884") - buf.write("\u088e\u089c\u08aa\u08bc\u08c6\u08d0\u08dc\u08ea\u08f8") - buf.write("\u0904\u090e\u0922\u093a\u094a\u095a\u096e\u097e\u098c") - buf.write("\u09a6\u09b8\u09bd\u09c7\u09cf\u09d3\u09d5\u09dc\u09e2") - buf.write("\u09e9\u09ef\u09f7\u09fd\u0a00\u0a16\u0a28\u0a32\u0a51") - buf.write("\u0a5d\u0a67\u0a73\u0a81\u0a8d\u0a99\u0aa3\u0aad\u0ab7") - buf.write("\u0ac1\u0acb\u0ad5\u0ae3\u0af3\u0af8\u0afd\u0b02\u0b0a") - buf.write("\u0b0f\u0b12\u0b18\u0b1e\u0b20\u0b97\u0bab\u0bc2\u0bd9") - buf.write("\u0bec\u0bf4\u0bf7\u0bfe\u0c06\u0c09\u0c10\u0c18\u0c1b") - buf.write("\u0c24\u0c26\u0c33\u0c35\u0c3f\u0c41\u0c49\u0c4b\u0c53") - buf.write("\u0c55\u0c59\u0c5e\u0c64\u0c68\u0c6d\u0c74\u0c77\u0c7c") - buf.write("\u0c80\u0c96\u0ca6\u0cb2\u0cd0\u0ced\u0cfd\u0d0b\u0d11") - buf.write("\u0d1c\u0d28\u0d2d\u0d37\u0d3f\u0d44\u0d48\u0d4b\u0d51") - buf.write("\u0d57\u0d5b\u0d5e\u0d61\u0d67\u0d6d\u0d72\u0d7a\u0d7e") - buf.write("\u0d86\u0d8c\u0d92\u0d98\u0d9e\u0da0\u0da2\u0da6\u0dab") - buf.write("\u0dae\3\b\2\2") - return buf.getvalue() - + return [ + 4,0,195,3504,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,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,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, + 1,0,3,0,449,8,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,475,8,1,1,2, + 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, + 1,2,3,2,495,8,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3, + 1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3, + 524,8,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,547,8,4,1,5,1,5,1,5,1,5,1,5,1,5, + 1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,564,8,5,1,6,1,6,1,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6, + 1,6,1,6,1,6,1,6,3,6,590,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7, + 1,7,1,7,1,7,1,7,1,7,1,7,3,7,607,8,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,639,8,8,1,9,1,9,1,9,1,9,1,9,1,9, + 1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9, + 1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9, + 678,8,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,1,10,3,10,707,8,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1, + 11,1,11,3,11,718,8,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1, + 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1, + 12,1,12,1,12,1,12,1,12,1,12,3,12,747,8,12,1,13,1,13,1,13,1,13,1, + 13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1, + 13,3,13,767,8,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1, + 14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1, + 14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,3,14,802,8, + 14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1, + 15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,828, + 8,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,3,16,846,8,16,1,17,1,17,1,17,1,17,1,17,1,17, + 1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17, + 866,8,17,1,18,1,18,1,18,1,18,1,18,1,18,3,18,874,8,18,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,885,8,19,1,20,1,20,1,20,1, + 20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,3,20,902, + 8,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21, + 928,8,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,939,8, + 22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3, + 23,953,8,23,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1, + 25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1, + 25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,988,8,25,1, + 26,1,26,1,26,4,26,993,8,26,11,26,12,26,994,1,26,1,26,1,27,1,27,1, + 27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,1010,8,27,1,28,1, + 28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1, + 28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1, + 28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1, + 28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1, + 28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,1074,8,28,1,29,1, + 29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1, + 30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,1097,8,30,1,31,1,31,1,31,1, + 31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1, + 31,1,31,3,31,1117,8,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,32,1,32,1,32,1,32,1,32,3,32,1146,8,32,1,33,1,33,1,33,1,33,1, + 33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,1160,8,33,1,34,1,34,1, + 34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1, + 34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1, + 34,1,34,1,34,1,34,1,34,3,34,1195,8,34,1,35,1,35,1,35,1,35,1,35,1, + 35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1, + 35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,3,35,1224,8,35,1,36,1, + 36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1, + 36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,1247,8,36,1,37,1,37,1,37,1, + 37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1, + 37,1,37,1,37,1,37,1,37,3,37,1270,8,37,1,38,1,38,1,39,1,39,1,39,1, + 39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1, + 39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3,39,1298,8,39,1,40,1,40,1, + 40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1, + 40,1,40,1,40,3,40,1318,8,40,1,41,1,41,3,41,1322,8,41,1,42,1,42,1, + 42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, + 42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,3,42,1348,8,42,1,43,1, + 43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,3,43,1362,8, + 43,1,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,1,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,1,44,3,44,1391,8,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1, + 45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1, + 45,1,45,1,45,1,45,1,45,1,45,3,45,1420,8,45,1,46,1,46,1,46,1,46,1, + 46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1, + 46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1446,8,46,1,47,1,47,1,47,1, + 47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, + 47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1475,8, + 47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3, + 48,1489,8,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1, + 49,1,49,3,49,1503,8,49,1,50,1,50,1,50,1,50,1,50,1,50,3,50,1511,8, + 50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,3, + 51,1525,8,51,1,52,1,52,1,52,1,52,1,52,1,52,3,52,1533,8,52,1,53,1, + 53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1543,8,53,1,54,1,54,1,54,1, + 54,1,54,1,54,1,54,1,54,3,54,1553,8,54,1,55,1,55,1,55,1,55,1,55,1, + 55,1,55,1,55,1,55,1,55,3,55,1565,8,55,1,56,1,56,1,56,1,56,1,56,1, + 56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,1579,8,56,1,57,1,57,1,57,1, + 57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1, + 57,1,57,3,57,1599,8,57,1,58,1,58,1,58,1,58,1,58,1,58,3,58,1607,8, + 58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1, + 59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,3,59,1630,8,59,1,60,1, + 60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1, + 60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,1656,8,60,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,3,61,1682,8, + 61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1, + 62,1,62,1,62,3,62,1699,8,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, + 63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,3,63,1719,8, + 63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1, + 64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,3,64,1741,8,64,1,65,1,65,1, + 65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,65,1755,8,65,1, + 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,1769, + 8,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67, + 1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,1792,8,67,1,68, + 1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68, + 1,68,1,68,1,68,1,68,3,68,1812,8,68,1,69,1,69,1,69,1,69,1,69,1,69, + 1,69,1,69,1,69,1,69,1,69,1,69,3,69,1826,8,69,1,70,1,70,1,70,1,70, + 1,70,1,70,1,70,1,70,1,70,3,70,1837,8,70,1,71,1,71,1,71,1,71,1,71, + 1,71,1,71,1,71,1,71,1,71,3,71,1849,8,71,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,3,72,1861,8,72,1,73,1,73,1,73,1,73,1,73, + 1,73,1,73,1,73,1,73,1,73,3,73,1873,8,73,1,74,1,74,1,74,1,74,1,74, + 1,74,1,74,1,74,3,74,1883,8,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75, + 1,75,1,75,1,75,3,75,1895,8,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76, + 1,76,3,76,1905,8,76,1,77,1,77,1,77,1,77,1,77,1,77,3,77,1913,8,77, + 1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,3,78,1923,8,78,1,79,1,79, + 1,79,1,79,1,79,1,79,3,79,1931,8,79,1,80,1,80,1,80,1,80,1,80,1,80, + 1,80,1,80,1,80,1,80,1,80,1,80,3,80,1945,8,80,1,81,1,81,1,81,1,81, + 1,81,1,81,1,81,1,81,1,81,1,81,3,81,1957,8,81,1,82,1,82,1,82,1,82, + 1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,3,82, + 1975,8,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83, + 1,83,1,83,1,83,1,83,1,83,1,83,1,83,3,83,1995,8,83,1,84,1,84,1,84, + 1,84,1,84,1,84,3,84,2003,8,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85, + 1,85,3,85,2013,8,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86, + 1,86,1,86,1,86,1,86,1,86,3,86,2029,8,86,1,87,1,87,1,87,1,87,1,87, + 1,87,3,87,2037,8,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88, + 1,88,1,88,1,88,3,88,2051,8,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89, + 1,89,1,89,1,89,1,89,1,89,3,89,2065,8,89,1,90,1,90,1,90,1,90,1,90, + 1,90,3,90,2073,8,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,3,91, + 2083,8,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92, + 1,92,1,92,1,92,1,92,1,92,1,92,1,92,3,92,2103,8,92,1,93,1,93,1,93, + 1,93,1,93,1,93,1,93,1,93,1,93,1,93,3,93,2115,8,93,1,94,1,94,1,94, + 1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,3,94,2129,8,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,1,95, + 3,95,2145,8,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96, + 1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,3,96,2167,8,96, + 1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,3,97,2179,8,97, + 1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,2189,8,98,1,99,1,99, + 1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99,2203,8,99, + 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,3,100,2217,8,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,3,101,2235, + 8,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,3,102,2245, + 8,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,3,103,2255, + 8,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104, + 3,104,2267,8,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, + 1,105,1,105,1,105,1,105,3,105,2281,8,105,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,3,106,2295,8,106, + 1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,3,107, + 2307,8,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108, + 2317,8,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109, + 1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,3,109,2337, + 8,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, + 1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, + 1,110,3,110,2361,8,110,1,111,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,3,111,2377,8,111,1,112, + 1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112, + 1,112,1,112,3,112,2393,8,112,1,113,1,113,1,113,1,113,1,113,1,113, + 1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113, + 1,113,3,113,2413,8,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114, + 1,114,1,114,1,114,1,114,1,114,1,114,1,114,3,114,2429,8,114,1,115, + 1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115, + 3,115,2443,8,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116, + 1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116, + 1,116,1,116,1,116,1,116,1,116,3,116,2469,8,116,1,117,1,117,1,117, + 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117, + 1,117,1,117,3,117,2487,8,117,1,118,1,118,1,118,3,118,2492,8,118, + 1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,3,119,2502,8,119, + 1,120,1,120,1,120,1,120,1,120,1,120,3,120,2510,8,120,1,121,1,121, + 4,121,2514,8,121,11,121,12,121,2515,1,121,1,121,1,122,5,122,2521, + 8,122,10,122,12,122,2524,9,122,1,122,5,122,2527,8,122,10,122,12, + 122,2530,9,122,1,122,1,122,5,122,2534,8,122,10,122,12,122,2537,9, + 122,1,122,5,122,2540,8,122,10,122,12,122,2543,9,122,1,122,1,122, + 1,122,5,122,2548,8,122,10,122,12,122,2551,9,122,1,122,5,122,2554, + 8,122,10,122,12,122,2557,9,122,3,122,2559,8,122,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,127,1,127, + 1,127,1,127,1,127,1,127,1,127,1,127,3,127,2581,8,127,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,3,128,2599,8,128,1,129,1,129,1,129,1,129,1,129, + 1,129,1,129,1,129,3,129,2609,8,129,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,139,1,139,1,139,1,139,1,139, + 1,139,1,139,3,139,2640,8,139,1,140,1,140,1,140,1,140,1,140,1,140, + 1,140,1,140,1,140,1,140,3,140,2652,8,140,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,3,141,2662,8,141,1,142,1,142,1,142,1,142, + 1,142,1,142,1,142,1,142,1,142,1,142,3,142,2674,8,142,1,143,1,143, + 1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,3,143, + 2688,8,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144, + 1,144,3,144,2700,8,144,1,145,1,145,1,145,1,145,1,145,1,145,1,145, + 1,145,1,145,1,145,3,145,2712,8,145,1,146,1,146,1,146,1,146,1,146, + 1,146,1,146,1,146,3,146,2722,8,146,1,147,1,147,1,147,1,147,1,147, + 1,147,1,147,1,147,3,147,2732,8,147,1,148,1,148,1,148,1,148,1,148, + 1,148,1,148,1,148,3,148,2742,8,148,1,149,1,149,1,149,1,149,1,149, + 1,149,1,149,1,149,3,149,2752,8,149,1,150,1,150,1,150,1,150,1,150, + 1,150,1,150,1,150,3,150,2762,8,150,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,3,151,2772,8,151,1,152,1,152,1,152,1,152,1,152, + 1,152,1,152,1,152,1,152,1,152,1,152,1,152,3,152,2786,8,152,1,153, + 1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153, + 1,153,1,153,3,153,2802,8,153,1,154,4,154,2805,8,154,11,154,12,154, + 2806,1,154,1,154,1,155,3,155,2812,8,155,1,155,4,155,2815,8,155,11, + 155,12,155,2816,1,155,1,155,1,156,1,156,1,156,1,156,3,156,2825,8, + 156,1,156,4,156,2828,8,156,11,156,12,156,2829,1,156,3,156,2833,8, + 156,1,156,1,156,4,156,2837,8,156,11,156,12,156,2838,1,156,1,156, + 4,156,2843,8,156,11,156,12,156,2844,3,156,2847,8,156,1,157,1,157, + 1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158, + 1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159, + 1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160, + 1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,162,1,162,1,162, + 1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,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,164,1,164,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166, + 1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167, + 1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168, + 1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169, + 1,169,1,169,1,169,1,169,1,169,3,169,2966,8,169,1,170,1,170,1,170, + 1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170, + 1,170,1,170,1,170,1,170,3,170,2986,8,170,1,171,1,171,1,171,1,171, + 1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, + 1,171,1,171,1,171,1,171,1,171,1,171,3,171,3009,8,171,1,172,1,172, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,3,172,3032,8,172, + 1,173,1,173,1,174,1,174,1,175,1,175,1,175,1,176,1,176,1,177,1,177, + 1,177,1,178,1,178,1,178,4,178,3049,8,178,11,178,12,178,3050,1,178, + 1,178,1,178,1,178,4,178,3057,8,178,11,178,12,178,3058,1,178,3,178, + 3062,8,178,1,179,1,179,1,179,4,179,3067,8,179,11,179,12,179,3068, + 1,179,1,179,1,179,1,179,4,179,3075,8,179,11,179,12,179,3076,1,179, + 3,179,3080,8,179,1,180,1,180,1,180,4,180,3085,8,180,11,180,12,180, + 3086,1,180,1,180,1,180,1,180,4,180,3093,8,180,11,180,12,180,3094, + 1,180,3,180,3098,8,180,1,181,1,181,1,181,1,181,1,181,1,181,1,181, + 3,181,3107,8,181,3,181,3109,8,181,1,181,1,181,1,181,1,181,1,181, + 1,181,1,181,1,181,1,181,1,181,1,181,3,181,3122,8,181,3,181,3124, + 8,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,5,181,3134, + 8,181,10,181,12,181,3137,9,181,1,181,1,181,1,181,1,181,1,181,5,181, + 3144,8,181,10,181,12,181,3147,9,181,1,181,1,181,1,181,1,181,1,181, + 5,181,3154,8,181,10,181,12,181,3157,9,181,1,181,3,181,3160,8,181, + 1,182,4,182,3163,8,182,11,182,12,182,3164,1,182,1,182,5,182,3169, + 8,182,10,182,12,182,3172,9,182,1,182,3,182,3175,8,182,1,182,5,182, + 3178,8,182,10,182,12,182,3181,9,182,1,182,1,182,4,182,3185,8,182, + 11,182,12,182,3186,1,182,3,182,3190,8,182,1,182,4,182,3193,8,182, + 11,182,12,182,3194,1,182,1,182,3,182,3199,8,182,1,183,1,183,1,183, + 1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183, + 1,183,1,183,1,183,1,183,1,183,1,183,3,183,3221,8,183,1,184,1,184, + 1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184, + 1,184,3,184,3237,8,184,1,185,1,185,1,185,1,185,1,185,1,185,1,185, + 1,185,1,185,1,185,3,185,3249,8,185,1,186,1,186,1,186,1,186,1,186, + 1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186, + 1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186, + 1,186,3,186,3279,8,186,1,187,1,187,1,187,1,187,1,187,1,187,1,187, + 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187, + 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,3,187,3308, + 8,187,1,188,1,188,1,188,1,188,1,188,1,188,1,189,1,189,1,189,1,189, + 1,189,1,190,4,190,3322,8,190,11,190,12,190,3323,1,191,1,191,1,191, + 1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,3,191,3338, + 8,191,1,192,1,192,5,192,3342,8,192,10,192,12,192,3345,9,192,1,193, + 1,193,1,193,1,193,1,193,1,193,1,193,1,193,3,193,3355,8,193,1,194, + 1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194,3,194,3367, + 8,194,1,195,1,195,1,195,3,195,3372,8,195,1,196,1,196,1,197,1,197, + 1,198,1,198,5,198,3380,8,198,10,198,12,198,3383,9,198,1,198,1,198, + 1,199,4,199,3388,8,199,11,199,12,199,3389,1,200,4,200,3393,8,200, + 11,200,12,200,3394,1,201,1,201,3,201,3399,8,201,1,201,3,201,3402, + 8,201,1,201,1,201,5,201,3406,8,201,10,201,12,201,3409,9,201,1,201, + 5,201,3412,8,201,10,201,12,201,3415,9,201,1,201,3,201,3418,8,201, + 1,201,3,201,3421,8,201,1,201,3,201,3424,8,201,1,201,1,201,5,201, + 3428,8,201,10,201,12,201,3431,9,201,1,201,5,201,3434,8,201,10,201, + 12,201,3437,9,201,1,201,1,201,3,201,3441,8,201,1,201,1,201,1,202, + 1,202,1,203,1,203,3,203,3449,8,203,1,204,1,204,3,204,3453,8,204, + 1,205,1,205,1,206,1,206,4,206,3459,8,206,11,206,12,206,3460,1,206, + 1,206,4,206,3465,8,206,11,206,12,206,3466,1,206,1,206,4,206,3471, + 8,206,11,206,12,206,3472,1,206,1,206,4,206,3477,8,206,11,206,12, + 206,3478,1,206,1,206,4,206,3483,8,206,11,206,12,206,3484,3,206,3487, + 8,206,3,206,3489,8,206,1,207,1,207,3,207,3493,8,207,1,207,4,207, + 3496,8,207,11,207,12,207,3497,1,208,3,208,3501,8,208,1,209,1,209, + 0,0,210,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,0,77,38,79,39,81,0,83,40,85,41,87,42,89,43, + 91,44,93,45,95,46,97,47,99,48,101,49,103,50,105,51,107,52,109,53, + 111,54,113,55,115,56,117,57,119,58,121,59,123,60,125,61,127,62,129, + 63,131,64,133,65,135,66,137,67,139,68,141,69,143,70,145,71,147,72, + 149,73,151,74,153,75,155,76,157,77,159,78,161,79,163,80,165,81,167, + 82,169,83,171,84,173,85,175,86,177,87,179,88,181,89,183,90,185,91, + 187,92,189,93,191,94,193,95,195,96,197,97,199,98,201,99,203,100, + 205,101,207,102,209,103,211,104,213,105,215,106,217,107,219,108, + 221,109,223,110,225,111,227,112,229,113,231,114,233,115,235,116, + 237,0,239,117,241,118,243,119,245,120,247,121,249,122,251,123,253, + 124,255,125,257,126,259,127,261,128,263,129,265,130,267,131,269, + 132,271,133,273,0,275,134,277,135,279,136,281,137,283,138,285,139, + 287,140,289,141,291,142,293,143,295,144,297,145,299,146,301,147, + 303,148,305,149,307,150,309,151,311,152,313,153,315,154,317,155, + 319,156,321,157,323,158,325,159,327,160,329,161,331,162,333,163, + 335,164,337,165,339,166,341,167,343,168,345,169,347,0,349,170,351, + 171,353,172,355,173,357,174,359,175,361,176,363,177,365,178,367, + 179,369,180,371,181,373,182,375,183,377,184,379,185,381,186,383, + 187,385,188,387,189,389,190,391,191,393,0,395,192,397,193,399,194, + 401,0,403,195,405,0,407,0,409,0,411,0,413,0,415,0,417,0,419,0,1, + 0,29,2,0,60,60,62,62,4,0,10,10,13,13,133,133,8232,8233,2,0,9,9,32, + 32,2,0,10,10,13,13,2,0,67,67,99,99,2,0,47,47,58,58,2,0,88,88,120, + 120,2,0,43,43,45,45,2,0,80,80,112,112,4,0,65,66,68,69,97,98,100, + 101,2,0,69,69,101,101,4,0,78,78,83,83,110,110,115,115,12,0,70,71, + 73,73,76,76,79,79,81,81,90,90,102,103,105,105,108,108,111,111,113, + 113,122,122,4,0,68,69,81,81,100,101,113,113,2,0,90,90,122,122,3, + 0,48,57,65,70,97,102,2,0,66,66,98,98,1,0,48,49,2,0,79,79,111,111, + 1,0,48,55,3,0,10,10,13,13,39,39,1,0,39,39,1,0,34,34,2,0,65,90,97, + 122,3,0,10,10,13,13,34,34,2,0,32,32,48,48,3,0,100,100,102,102,105, + 105,2,0,101,101,103,103,2,0,68,69,100,101,3783,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,77,1,0,0,0,0,79,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,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0, + 0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1, + 0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0, + 227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,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,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,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341, + 1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0, + 0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1, + 0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0, + 371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0, + 0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389, + 1,0,0,0,0,391,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0, + 0,403,1,0,0,0,1,448,1,0,0,0,3,474,1,0,0,0,5,494,1,0,0,0,7,523,1, + 0,0,0,9,546,1,0,0,0,11,563,1,0,0,0,13,589,1,0,0,0,15,606,1,0,0,0, + 17,638,1,0,0,0,19,677,1,0,0,0,21,706,1,0,0,0,23,717,1,0,0,0,25,746, + 1,0,0,0,27,766,1,0,0,0,29,801,1,0,0,0,31,827,1,0,0,0,33,845,1,0, + 0,0,35,865,1,0,0,0,37,873,1,0,0,0,39,884,1,0,0,0,41,901,1,0,0,0, + 43,927,1,0,0,0,45,938,1,0,0,0,47,952,1,0,0,0,49,954,1,0,0,0,51,987, + 1,0,0,0,53,989,1,0,0,0,55,1009,1,0,0,0,57,1073,1,0,0,0,59,1075,1, + 0,0,0,61,1096,1,0,0,0,63,1116,1,0,0,0,65,1145,1,0,0,0,67,1159,1, + 0,0,0,69,1194,1,0,0,0,71,1223,1,0,0,0,73,1246,1,0,0,0,75,1269,1, + 0,0,0,77,1271,1,0,0,0,79,1297,1,0,0,0,81,1317,1,0,0,0,83,1321,1, + 0,0,0,85,1347,1,0,0,0,87,1361,1,0,0,0,89,1390,1,0,0,0,91,1419,1, + 0,0,0,93,1445,1,0,0,0,95,1474,1,0,0,0,97,1488,1,0,0,0,99,1502,1, + 0,0,0,101,1510,1,0,0,0,103,1524,1,0,0,0,105,1532,1,0,0,0,107,1542, + 1,0,0,0,109,1552,1,0,0,0,111,1564,1,0,0,0,113,1578,1,0,0,0,115,1598, + 1,0,0,0,117,1606,1,0,0,0,119,1629,1,0,0,0,121,1655,1,0,0,0,123,1681, + 1,0,0,0,125,1698,1,0,0,0,127,1718,1,0,0,0,129,1740,1,0,0,0,131,1754, + 1,0,0,0,133,1768,1,0,0,0,135,1791,1,0,0,0,137,1811,1,0,0,0,139,1825, + 1,0,0,0,141,1836,1,0,0,0,143,1848,1,0,0,0,145,1860,1,0,0,0,147,1872, + 1,0,0,0,149,1882,1,0,0,0,151,1894,1,0,0,0,153,1904,1,0,0,0,155,1912, + 1,0,0,0,157,1922,1,0,0,0,159,1930,1,0,0,0,161,1944,1,0,0,0,163,1956, + 1,0,0,0,165,1974,1,0,0,0,167,1994,1,0,0,0,169,2002,1,0,0,0,171,2012, + 1,0,0,0,173,2028,1,0,0,0,175,2036,1,0,0,0,177,2050,1,0,0,0,179,2064, + 1,0,0,0,181,2072,1,0,0,0,183,2082,1,0,0,0,185,2102,1,0,0,0,187,2114, + 1,0,0,0,189,2128,1,0,0,0,191,2144,1,0,0,0,193,2166,1,0,0,0,195,2178, + 1,0,0,0,197,2188,1,0,0,0,199,2202,1,0,0,0,201,2216,1,0,0,0,203,2234, + 1,0,0,0,205,2244,1,0,0,0,207,2254,1,0,0,0,209,2266,1,0,0,0,211,2280, + 1,0,0,0,213,2294,1,0,0,0,215,2306,1,0,0,0,217,2316,1,0,0,0,219,2336, + 1,0,0,0,221,2360,1,0,0,0,223,2376,1,0,0,0,225,2392,1,0,0,0,227,2412, + 1,0,0,0,229,2428,1,0,0,0,231,2442,1,0,0,0,233,2468,1,0,0,0,235,2486, + 1,0,0,0,237,2491,1,0,0,0,239,2501,1,0,0,0,241,2509,1,0,0,0,243,2513, + 1,0,0,0,245,2558,1,0,0,0,247,2562,1,0,0,0,249,2564,1,0,0,0,251,2566, + 1,0,0,0,253,2568,1,0,0,0,255,2580,1,0,0,0,257,2598,1,0,0,0,259,2608, + 1,0,0,0,261,2610,1,0,0,0,263,2612,1,0,0,0,265,2614,1,0,0,0,267,2616, + 1,0,0,0,269,2618,1,0,0,0,271,2620,1,0,0,0,273,2622,1,0,0,0,275,2624, + 1,0,0,0,277,2626,1,0,0,0,279,2639,1,0,0,0,281,2651,1,0,0,0,283,2661, + 1,0,0,0,285,2673,1,0,0,0,287,2687,1,0,0,0,289,2699,1,0,0,0,291,2711, + 1,0,0,0,293,2721,1,0,0,0,295,2731,1,0,0,0,297,2741,1,0,0,0,299,2751, + 1,0,0,0,301,2761,1,0,0,0,303,2771,1,0,0,0,305,2785,1,0,0,0,307,2801, + 1,0,0,0,309,2804,1,0,0,0,311,2811,1,0,0,0,313,2824,1,0,0,0,315,2848, + 1,0,0,0,317,2853,1,0,0,0,319,2863,1,0,0,0,321,2872,1,0,0,0,323,2883, + 1,0,0,0,325,2891,1,0,0,0,327,2894,1,0,0,0,329,2910,1,0,0,0,331,2918, + 1,0,0,0,333,2922,1,0,0,0,335,2932,1,0,0,0,337,2942,1,0,0,0,339,2965, + 1,0,0,0,341,2985,1,0,0,0,343,3008,1,0,0,0,345,3031,1,0,0,0,347,3033, + 1,0,0,0,349,3035,1,0,0,0,351,3037,1,0,0,0,353,3040,1,0,0,0,355,3042, + 1,0,0,0,357,3061,1,0,0,0,359,3079,1,0,0,0,361,3097,1,0,0,0,363,3159, + 1,0,0,0,365,3198,1,0,0,0,367,3220,1,0,0,0,369,3236,1,0,0,0,371,3248, + 1,0,0,0,373,3278,1,0,0,0,375,3307,1,0,0,0,377,3309,1,0,0,0,379,3315, + 1,0,0,0,381,3321,1,0,0,0,383,3337,1,0,0,0,385,3339,1,0,0,0,387,3354, + 1,0,0,0,389,3366,1,0,0,0,391,3371,1,0,0,0,393,3373,1,0,0,0,395,3375, + 1,0,0,0,397,3377,1,0,0,0,399,3387,1,0,0,0,401,3392,1,0,0,0,403,3440, + 1,0,0,0,405,3444,1,0,0,0,407,3448,1,0,0,0,409,3452,1,0,0,0,411,3454, + 1,0,0,0,413,3488,1,0,0,0,415,3490,1,0,0,0,417,3500,1,0,0,0,419,3502, + 1,0,0,0,421,422,5,82,0,0,422,423,5,69,0,0,423,424,5,67,0,0,424,425, + 5,85,0,0,425,426,5,82,0,0,426,427,5,83,0,0,427,428,5,73,0,0,428, + 429,5,86,0,0,429,449,5,69,0,0,430,431,5,114,0,0,431,432,5,101,0, + 0,432,433,5,99,0,0,433,434,5,117,0,0,434,435,5,114,0,0,435,436,5, + 115,0,0,436,437,5,105,0,0,437,438,5,118,0,0,438,449,5,101,0,0,439, + 440,5,82,0,0,440,441,5,101,0,0,441,442,5,99,0,0,442,443,5,117,0, + 0,443,444,5,114,0,0,444,445,5,115,0,0,445,446,5,105,0,0,446,447, + 5,118,0,0,447,449,5,101,0,0,448,421,1,0,0,0,448,430,1,0,0,0,448, + 439,1,0,0,0,449,2,1,0,0,0,450,451,5,99,0,0,451,452,5,111,0,0,452, + 453,5,110,0,0,453,454,5,116,0,0,454,455,5,97,0,0,455,456,5,105,0, + 0,456,457,5,110,0,0,457,475,5,115,0,0,458,459,5,67,0,0,459,460,5, + 79,0,0,460,461,5,78,0,0,461,462,5,84,0,0,462,463,5,65,0,0,463,464, + 5,73,0,0,464,465,5,78,0,0,465,475,5,83,0,0,466,467,5,67,0,0,467, + 468,5,111,0,0,468,469,5,110,0,0,469,470,5,116,0,0,470,471,5,97,0, + 0,471,472,5,105,0,0,472,473,5,110,0,0,473,475,5,115,0,0,474,450, + 1,0,0,0,474,458,1,0,0,0,474,466,1,0,0,0,475,4,1,0,0,0,476,477,5, + 77,0,0,477,478,5,79,0,0,478,479,5,68,0,0,479,480,5,85,0,0,480,481, + 5,76,0,0,481,495,5,69,0,0,482,483,5,109,0,0,483,484,5,111,0,0,484, + 485,5,100,0,0,485,486,5,117,0,0,486,487,5,108,0,0,487,495,5,101, + 0,0,488,489,5,77,0,0,489,490,5,111,0,0,490,491,5,100,0,0,491,492, + 5,117,0,0,492,493,5,108,0,0,493,495,5,101,0,0,494,476,1,0,0,0,494, + 482,1,0,0,0,494,488,1,0,0,0,495,6,1,0,0,0,496,497,5,69,0,0,497,498, + 5,78,0,0,498,499,5,68,0,0,499,500,5,77,0,0,500,501,5,79,0,0,501, + 502,5,68,0,0,502,503,5,85,0,0,503,504,5,76,0,0,504,524,5,69,0,0, + 505,506,5,101,0,0,506,507,5,110,0,0,507,508,5,100,0,0,508,509,5, + 109,0,0,509,510,5,111,0,0,510,511,5,100,0,0,511,512,5,117,0,0,512, + 513,5,108,0,0,513,524,5,101,0,0,514,515,5,69,0,0,515,516,5,110,0, + 0,516,517,5,100,0,0,517,518,5,109,0,0,518,519,5,111,0,0,519,520, + 5,100,0,0,520,521,5,117,0,0,521,522,5,108,0,0,522,524,5,101,0,0, + 523,496,1,0,0,0,523,505,1,0,0,0,523,514,1,0,0,0,524,8,1,0,0,0,525, + 526,5,112,0,0,526,527,5,114,0,0,527,528,5,111,0,0,528,529,5,103, + 0,0,529,530,5,114,0,0,530,531,5,97,0,0,531,547,5,109,0,0,532,533, + 5,80,0,0,533,534,5,82,0,0,534,535,5,79,0,0,535,536,5,71,0,0,536, + 537,5,82,0,0,537,538,5,65,0,0,538,547,5,77,0,0,539,540,5,80,0,0, + 540,541,5,114,0,0,541,542,5,111,0,0,542,543,5,103,0,0,543,544,5, + 114,0,0,544,545,5,97,0,0,545,547,5,109,0,0,546,525,1,0,0,0,546,532, + 1,0,0,0,546,539,1,0,0,0,547,10,1,0,0,0,548,549,5,101,0,0,549,550, + 5,110,0,0,550,551,5,116,0,0,551,552,5,114,0,0,552,564,5,121,0,0, + 553,554,5,69,0,0,554,555,5,78,0,0,555,556,5,84,0,0,556,557,5,82, + 0,0,557,564,5,89,0,0,558,559,5,69,0,0,559,560,5,110,0,0,560,561, + 5,116,0,0,561,562,5,114,0,0,562,564,5,121,0,0,563,548,1,0,0,0,563, + 553,1,0,0,0,563,558,1,0,0,0,564,12,1,0,0,0,565,566,5,102,0,0,566, + 567,5,117,0,0,567,568,5,110,0,0,568,569,5,99,0,0,569,570,5,116,0, + 0,570,571,5,105,0,0,571,572,5,111,0,0,572,590,5,110,0,0,573,574, + 5,70,0,0,574,575,5,85,0,0,575,576,5,78,0,0,576,577,5,67,0,0,577, + 578,5,84,0,0,578,579,5,73,0,0,579,580,5,79,0,0,580,590,5,78,0,0, + 581,582,5,70,0,0,582,583,5,117,0,0,583,584,5,110,0,0,584,585,5,99, + 0,0,585,586,5,116,0,0,586,587,5,105,0,0,587,588,5,111,0,0,588,590, + 5,110,0,0,589,565,1,0,0,0,589,573,1,0,0,0,589,581,1,0,0,0,590,14, + 1,0,0,0,591,592,5,98,0,0,592,593,5,108,0,0,593,594,5,111,0,0,594, + 595,5,99,0,0,595,607,5,107,0,0,596,597,5,66,0,0,597,598,5,76,0,0, + 598,599,5,79,0,0,599,600,5,67,0,0,600,607,5,75,0,0,601,602,5,66, + 0,0,602,603,5,108,0,0,603,604,5,111,0,0,604,605,5,99,0,0,605,607, + 5,107,0,0,606,591,1,0,0,0,606,596,1,0,0,0,606,601,1,0,0,0,607,16, + 1,0,0,0,608,609,5,115,0,0,609,610,5,117,0,0,610,611,5,98,0,0,611, + 612,5,114,0,0,612,613,5,111,0,0,613,614,5,117,0,0,614,615,5,116, + 0,0,615,616,5,105,0,0,616,617,5,110,0,0,617,639,5,101,0,0,618,619, + 5,83,0,0,619,620,5,85,0,0,620,621,5,66,0,0,621,622,5,82,0,0,622, + 623,5,79,0,0,623,624,5,85,0,0,624,625,5,84,0,0,625,626,5,73,0,0, + 626,627,5,78,0,0,627,639,5,69,0,0,628,629,5,83,0,0,629,630,5,117, + 0,0,630,631,5,98,0,0,631,632,5,114,0,0,632,633,5,111,0,0,633,634, + 5,117,0,0,634,635,5,116,0,0,635,636,5,105,0,0,636,637,5,110,0,0, + 637,639,5,101,0,0,638,608,1,0,0,0,638,618,1,0,0,0,638,628,1,0,0, + 0,639,18,1,0,0,0,640,641,5,69,0,0,641,642,5,78,0,0,642,643,5,68, + 0,0,643,644,5,73,0,0,644,645,5,78,0,0,645,646,5,84,0,0,646,647,5, + 69,0,0,647,648,5,82,0,0,648,649,5,70,0,0,649,650,5,65,0,0,650,651, + 5,67,0,0,651,678,5,69,0,0,652,653,5,32,0,0,653,654,5,101,0,0,654, + 655,5,110,0,0,655,656,5,100,0,0,656,657,5,105,0,0,657,658,5,110, + 0,0,658,659,5,116,0,0,659,660,5,101,0,0,660,661,5,114,0,0,661,662, + 5,102,0,0,662,663,5,97,0,0,663,664,5,99,0,0,664,678,5,101,0,0,665, + 666,5,69,0,0,666,667,5,110,0,0,667,668,5,100,0,0,668,669,5,105,0, + 0,669,670,5,110,0,0,670,671,5,116,0,0,671,672,5,101,0,0,672,673, + 5,114,0,0,673,674,5,102,0,0,674,675,5,97,0,0,675,676,5,99,0,0,676, + 678,5,101,0,0,677,640,1,0,0,0,677,652,1,0,0,0,677,665,1,0,0,0,678, + 20,1,0,0,0,679,680,5,112,0,0,680,681,5,114,0,0,681,682,5,111,0,0, + 682,683,5,99,0,0,683,684,5,101,0,0,684,685,5,100,0,0,685,686,5,117, + 0,0,686,687,5,114,0,0,687,707,5,101,0,0,688,689,5,80,0,0,689,690, + 5,82,0,0,690,691,5,79,0,0,691,692,5,67,0,0,692,693,5,69,0,0,693, + 694,5,68,0,0,694,695,5,85,0,0,695,696,5,82,0,0,696,707,5,69,0,0, + 697,698,5,80,0,0,698,699,5,114,0,0,699,700,5,111,0,0,700,701,5,99, + 0,0,701,702,5,101,0,0,702,703,5,100,0,0,703,704,5,117,0,0,704,705, + 5,114,0,0,705,707,5,101,0,0,706,679,1,0,0,0,706,688,1,0,0,0,706, + 697,1,0,0,0,707,22,1,0,0,0,708,709,5,69,0,0,709,710,5,78,0,0,710, + 718,5,68,0,0,711,712,5,101,0,0,712,713,5,110,0,0,713,718,5,100,0, + 0,714,715,5,69,0,0,715,716,5,110,0,0,716,718,5,100,0,0,717,708,1, + 0,0,0,717,711,1,0,0,0,717,714,1,0,0,0,718,24,1,0,0,0,719,720,5,100, + 0,0,720,721,5,105,0,0,721,722,5,109,0,0,722,723,5,101,0,0,723,724, + 5,110,0,0,724,725,5,115,0,0,725,726,5,105,0,0,726,727,5,111,0,0, + 727,747,5,110,0,0,728,729,5,68,0,0,729,730,5,73,0,0,730,731,5,77, + 0,0,731,732,5,69,0,0,732,733,5,78,0,0,733,734,5,83,0,0,734,735,5, + 73,0,0,735,736,5,79,0,0,736,747,5,78,0,0,737,738,5,68,0,0,738,739, + 5,105,0,0,739,740,5,109,0,0,740,741,5,101,0,0,741,742,5,110,0,0, + 742,743,5,115,0,0,743,744,5,105,0,0,744,745,5,111,0,0,745,747,5, + 110,0,0,746,719,1,0,0,0,746,728,1,0,0,0,746,737,1,0,0,0,747,26,1, + 0,0,0,748,749,5,84,0,0,749,750,5,65,0,0,750,751,5,82,0,0,751,752, + 5,71,0,0,752,753,5,69,0,0,753,767,5,84,0,0,754,755,5,116,0,0,755, + 756,5,97,0,0,756,757,5,114,0,0,757,758,5,103,0,0,758,759,5,101,0, + 0,759,767,5,116,0,0,760,761,5,84,0,0,761,762,5,97,0,0,762,763,5, + 114,0,0,763,764,5,103,0,0,764,765,5,101,0,0,765,767,5,116,0,0,766, + 748,1,0,0,0,766,754,1,0,0,0,766,760,1,0,0,0,767,28,1,0,0,0,768,769, + 5,65,0,0,769,770,5,76,0,0,770,771,5,76,0,0,771,772,5,79,0,0,772, + 773,5,67,0,0,773,774,5,65,0,0,774,775,5,84,0,0,775,776,5,65,0,0, + 776,777,5,66,0,0,777,778,5,76,0,0,778,802,5,69,0,0,779,780,5,97, + 0,0,780,781,5,108,0,0,781,782,5,108,0,0,782,783,5,111,0,0,783,784, + 5,99,0,0,784,785,5,97,0,0,785,786,5,116,0,0,786,787,5,97,0,0,787, + 788,5,98,0,0,788,789,5,108,0,0,789,802,5,101,0,0,790,791,5,65,0, + 0,791,792,5,108,0,0,792,793,5,108,0,0,793,794,5,111,0,0,794,795, + 5,99,0,0,795,796,5,97,0,0,796,797,5,116,0,0,797,798,5,97,0,0,798, + 799,5,98,0,0,799,800,5,108,0,0,800,802,5,101,0,0,801,768,1,0,0,0, + 801,779,1,0,0,0,801,790,1,0,0,0,802,30,1,0,0,0,803,804,5,79,0,0, + 804,805,5,80,0,0,805,806,5,84,0,0,806,807,5,73,0,0,807,808,5,79, + 0,0,808,809,5,78,0,0,809,810,5,65,0,0,810,828,5,76,0,0,811,812,5, + 111,0,0,812,813,5,112,0,0,813,814,5,116,0,0,814,815,5,105,0,0,815, + 816,5,111,0,0,816,817,5,110,0,0,817,818,5,97,0,0,818,828,5,108,0, + 0,819,820,5,79,0,0,820,821,5,112,0,0,821,822,5,116,0,0,822,823,5, + 105,0,0,823,824,5,111,0,0,824,825,5,110,0,0,825,826,5,97,0,0,826, + 828,5,108,0,0,827,803,1,0,0,0,827,811,1,0,0,0,827,819,1,0,0,0,828, + 32,1,0,0,0,829,830,5,78,0,0,830,831,5,65,0,0,831,832,5,77,0,0,832, + 833,5,69,0,0,833,834,5,76,0,0,834,835,5,73,0,0,835,836,5,83,0,0, + 836,846,5,84,0,0,837,838,5,110,0,0,838,839,5,97,0,0,839,840,5,109, + 0,0,840,841,5,101,0,0,841,842,5,108,0,0,842,843,5,105,0,0,843,844, + 5,115,0,0,844,846,5,116,0,0,845,829,1,0,0,0,845,837,1,0,0,0,846, + 34,1,0,0,0,847,848,5,73,0,0,848,849,5,78,0,0,849,850,5,84,0,0,850, + 851,5,69,0,0,851,852,5,78,0,0,852,866,5,84,0,0,853,854,5,105,0,0, + 854,855,5,110,0,0,855,856,5,116,0,0,856,857,5,101,0,0,857,858,5, + 110,0,0,858,866,5,116,0,0,859,860,5,73,0,0,860,861,5,110,0,0,861, + 862,5,116,0,0,862,863,5,101,0,0,863,864,5,110,0,0,864,866,5,116, + 0,0,865,847,1,0,0,0,865,853,1,0,0,0,865,859,1,0,0,0,866,36,1,0,0, + 0,867,868,5,73,0,0,868,874,5,78,0,0,869,870,5,105,0,0,870,874,5, + 110,0,0,871,872,5,73,0,0,872,874,5,110,0,0,873,867,1,0,0,0,873,869, + 1,0,0,0,873,871,1,0,0,0,874,38,1,0,0,0,875,876,5,79,0,0,876,877, + 5,85,0,0,877,885,5,84,0,0,878,879,5,111,0,0,879,880,5,117,0,0,880, + 885,5,116,0,0,881,882,5,79,0,0,882,883,5,117,0,0,883,885,5,116,0, + 0,884,875,1,0,0,0,884,878,1,0,0,0,884,881,1,0,0,0,885,40,1,0,0,0, + 886,887,5,73,0,0,887,888,5,78,0,0,888,889,5,79,0,0,889,890,5,85, + 0,0,890,902,5,84,0,0,891,892,5,105,0,0,892,893,5,110,0,0,893,894, + 5,111,0,0,894,895,5,117,0,0,895,902,5,116,0,0,896,897,5,73,0,0,897, + 898,5,110,0,0,898,899,5,111,0,0,899,900,5,117,0,0,900,902,5,116, + 0,0,901,886,1,0,0,0,901,891,1,0,0,0,901,896,1,0,0,0,902,42,1,0,0, + 0,903,904,5,111,0,0,904,905,5,112,0,0,905,906,5,101,0,0,906,907, + 5,114,0,0,907,908,5,97,0,0,908,909,5,116,0,0,909,910,5,111,0,0,910, + 928,5,114,0,0,911,912,5,79,0,0,912,913,5,80,0,0,913,914,5,69,0,0, + 914,915,5,82,0,0,915,916,5,65,0,0,916,917,5,84,0,0,917,918,5,79, + 0,0,918,928,5,82,0,0,919,920,5,79,0,0,920,921,5,112,0,0,921,922, + 5,101,0,0,922,923,5,114,0,0,923,924,5,97,0,0,924,925,5,116,0,0,925, + 926,5,111,0,0,926,928,5,114,0,0,927,903,1,0,0,0,927,911,1,0,0,0, + 927,919,1,0,0,0,928,44,1,0,0,0,929,930,5,85,0,0,930,931,5,83,0,0, + 931,939,5,69,0,0,932,933,5,117,0,0,933,934,5,115,0,0,934,939,5,101, + 0,0,935,936,5,85,0,0,936,937,5,115,0,0,937,939,5,101,0,0,938,929, + 1,0,0,0,938,932,1,0,0,0,938,935,1,0,0,0,939,46,1,0,0,0,940,941,5, + 79,0,0,941,942,5,78,0,0,942,943,5,76,0,0,943,953,5,89,0,0,944,945, + 5,111,0,0,945,946,5,110,0,0,946,947,5,108,0,0,947,953,5,121,0,0, + 948,949,5,79,0,0,949,950,5,110,0,0,950,951,5,108,0,0,951,953,5,121, + 0,0,952,940,1,0,0,0,952,944,1,0,0,0,952,948,1,0,0,0,953,48,1,0,0, + 0,954,955,5,61,0,0,955,956,5,62,0,0,956,50,1,0,0,0,957,958,5,65, + 0,0,958,959,5,83,0,0,959,960,5,83,0,0,960,961,5,73,0,0,961,962,5, + 71,0,0,962,963,5,78,0,0,963,964,5,77,0,0,964,965,5,69,0,0,965,966, + 5,78,0,0,966,988,5,84,0,0,967,968,5,97,0,0,968,969,5,115,0,0,969, + 970,5,115,0,0,970,971,5,105,0,0,971,972,5,103,0,0,972,973,5,110, + 0,0,973,974,5,109,0,0,974,975,5,101,0,0,975,976,5,110,0,0,976,988, + 5,116,0,0,977,978,5,65,0,0,978,979,5,115,0,0,979,980,5,115,0,0,980, + 981,5,105,0,0,981,982,5,103,0,0,982,983,5,110,0,0,983,984,5,109, + 0,0,984,985,5,101,0,0,985,986,5,110,0,0,986,988,5,116,0,0,987,957, + 1,0,0,0,987,967,1,0,0,0,987,977,1,0,0,0,988,52,1,0,0,0,989,992,5, + 46,0,0,990,991,5,92,0,0,991,993,5,97,0,0,992,990,1,0,0,0,993,994, + 1,0,0,0,994,992,1,0,0,0,994,995,1,0,0,0,995,996,1,0,0,0,996,997, + 5,46,0,0,997,54,1,0,0,0,998,999,5,61,0,0,999,1010,5,61,0,0,1000, + 1001,5,33,0,0,1001,1010,5,61,0,0,1002,1003,5,60,0,0,1003,1010,5, + 61,0,0,1004,1005,5,62,0,0,1005,1010,5,61,0,0,1006,1010,7,0,0,0,1007, + 1008,5,47,0,0,1008,1010,5,61,0,0,1009,998,1,0,0,0,1009,1000,1,0, + 0,0,1009,1002,1,0,0,0,1009,1004,1,0,0,0,1009,1006,1,0,0,0,1009,1007, + 1,0,0,0,1010,56,1,0,0,0,1011,1012,5,68,0,0,1012,1013,5,79,0,0,1013, + 1014,5,85,0,0,1014,1015,5,66,0,0,1015,1016,5,76,0,0,1016,1017,5, + 69,0,0,1017,1018,5,80,0,0,1018,1019,5,82,0,0,1019,1020,5,69,0,0, + 1020,1021,5,67,0,0,1021,1022,5,73,0,0,1022,1023,5,83,0,0,1023,1024, + 5,73,0,0,1024,1025,5,79,0,0,1025,1074,5,78,0,0,1026,1027,5,100,0, + 0,1027,1028,5,111,0,0,1028,1029,5,117,0,0,1029,1030,5,98,0,0,1030, + 1031,5,108,0,0,1031,1032,5,101,0,0,1032,1033,5,112,0,0,1033,1034, + 5,114,0,0,1034,1035,5,101,0,0,1035,1036,5,99,0,0,1036,1037,5,105, + 0,0,1037,1038,5,115,0,0,1038,1039,5,105,0,0,1039,1040,5,111,0,0, + 1040,1074,5,110,0,0,1041,1042,5,100,0,0,1042,1043,5,111,0,0,1043, + 1044,5,117,0,0,1044,1045,5,98,0,0,1045,1046,5,108,0,0,1046,1047, + 5,101,0,0,1047,1048,5,32,0,0,1048,1049,5,112,0,0,1049,1050,5,114, + 0,0,1050,1051,5,101,0,0,1051,1052,5,99,0,0,1052,1053,5,105,0,0,1053, + 1054,5,115,0,0,1054,1055,5,105,0,0,1055,1056,5,111,0,0,1056,1074, + 5,110,0,0,1057,1058,5,68,0,0,1058,1059,5,79,0,0,1059,1060,5,85,0, + 0,1060,1061,5,66,0,0,1061,1062,5,76,0,0,1062,1063,5,69,0,0,1063, + 1064,5,32,0,0,1064,1065,5,80,0,0,1065,1066,5,82,0,0,1066,1067,5, + 69,0,0,1067,1068,5,67,0,0,1068,1069,5,73,0,0,1069,1070,5,83,0,0, + 1070,1071,5,73,0,0,1071,1072,5,79,0,0,1072,1074,5,78,0,0,1073,1011, + 1,0,0,0,1073,1026,1,0,0,0,1073,1041,1,0,0,0,1073,1057,1,0,0,0,1074, + 58,1,0,0,0,1075,1076,5,58,0,0,1076,1077,5,58,0,0,1077,60,1,0,0,0, + 1078,1079,5,97,0,0,1079,1080,5,115,0,0,1080,1081,5,115,0,0,1081, + 1082,5,105,0,0,1082,1083,5,103,0,0,1083,1097,5,110,0,0,1084,1085, + 5,65,0,0,1085,1086,5,83,0,0,1086,1087,5,83,0,0,1087,1088,5,73,0, + 0,1088,1089,5,71,0,0,1089,1097,5,78,0,0,1090,1091,5,65,0,0,1091, + 1092,5,115,0,0,1092,1093,5,115,0,0,1093,1094,5,105,0,0,1094,1095, + 5,103,0,0,1095,1097,5,110,0,0,1096,1078,1,0,0,0,1096,1084,1,0,0, + 0,1096,1090,1,0,0,0,1097,62,1,0,0,0,1098,1099,5,67,0,0,1099,1100, + 5,79,0,0,1100,1101,5,77,0,0,1101,1102,5,77,0,0,1102,1103,5,79,0, + 0,1103,1117,5,78,0,0,1104,1105,5,99,0,0,1105,1106,5,111,0,0,1106, + 1107,5,109,0,0,1107,1108,5,109,0,0,1108,1109,5,111,0,0,1109,1117, + 5,110,0,0,1110,1111,5,67,0,0,1111,1112,5,111,0,0,1112,1113,5,109, + 0,0,1113,1114,5,109,0,0,1114,1115,5,111,0,0,1115,1117,5,110,0,0, + 1116,1098,1,0,0,0,1116,1104,1,0,0,0,1116,1110,1,0,0,0,1117,64,1, + 0,0,0,1118,1119,5,69,0,0,1119,1120,5,76,0,0,1120,1121,5,83,0,0,1121, + 1122,5,69,0,0,1122,1123,5,87,0,0,1123,1124,5,72,0,0,1124,1125,5, + 69,0,0,1125,1126,5,82,0,0,1126,1146,5,69,0,0,1127,1128,5,101,0,0, + 1128,1129,5,108,0,0,1129,1130,5,115,0,0,1130,1131,5,101,0,0,1131, + 1132,5,119,0,0,1132,1133,5,104,0,0,1133,1134,5,101,0,0,1134,1135, + 5,114,0,0,1135,1146,5,101,0,0,1136,1137,5,69,0,0,1137,1138,5,108, + 0,0,1138,1139,5,115,0,0,1139,1140,5,101,0,0,1140,1141,5,119,0,0, + 1141,1142,5,104,0,0,1142,1143,5,101,0,0,1143,1144,5,114,0,0,1144, + 1146,5,101,0,0,1145,1118,1,0,0,0,1145,1127,1,0,0,0,1145,1136,1,0, + 0,0,1146,66,1,0,0,0,1147,1148,5,82,0,0,1148,1149,5,69,0,0,1149,1150, + 5,65,0,0,1150,1160,5,76,0,0,1151,1152,5,114,0,0,1152,1153,5,101, + 0,0,1153,1154,5,97,0,0,1154,1160,5,108,0,0,1155,1156,5,82,0,0,1156, + 1157,5,101,0,0,1157,1158,5,97,0,0,1158,1160,5,108,0,0,1159,1147, + 1,0,0,0,1159,1151,1,0,0,0,1159,1155,1,0,0,0,1160,68,1,0,0,0,1161, + 1162,5,69,0,0,1162,1163,5,81,0,0,1163,1164,5,85,0,0,1164,1165,5, + 73,0,0,1165,1166,5,86,0,0,1166,1167,5,65,0,0,1167,1168,5,76,0,0, + 1168,1169,5,69,0,0,1169,1170,5,78,0,0,1170,1171,5,67,0,0,1171,1195, + 5,69,0,0,1172,1173,5,101,0,0,1173,1174,5,113,0,0,1174,1175,5,117, + 0,0,1175,1176,5,105,0,0,1176,1177,5,118,0,0,1177,1178,5,97,0,0,1178, + 1179,5,108,0,0,1179,1180,5,101,0,0,1180,1181,5,110,0,0,1181,1182, + 5,99,0,0,1182,1195,5,101,0,0,1183,1184,5,69,0,0,1184,1185,5,113, + 0,0,1185,1186,5,117,0,0,1186,1187,5,105,0,0,1187,1188,5,118,0,0, + 1188,1189,5,97,0,0,1189,1190,5,108,0,0,1190,1191,5,101,0,0,1191, + 1192,5,110,0,0,1192,1193,5,99,0,0,1193,1195,5,101,0,0,1194,1161, + 1,0,0,0,1194,1172,1,0,0,0,1194,1183,1,0,0,0,1195,70,1,0,0,0,1196, + 1197,5,98,0,0,1197,1198,5,108,0,0,1198,1199,5,111,0,0,1199,1200, + 5,99,0,0,1200,1201,5,107,0,0,1201,1202,5,100,0,0,1202,1203,5,97, + 0,0,1203,1204,5,116,0,0,1204,1224,5,97,0,0,1205,1206,5,66,0,0,1206, + 1207,5,76,0,0,1207,1208,5,79,0,0,1208,1209,5,67,0,0,1209,1210,5, + 75,0,0,1210,1211,5,68,0,0,1211,1212,5,65,0,0,1212,1213,5,84,0,0, + 1213,1224,5,65,0,0,1214,1215,5,66,0,0,1215,1216,5,108,0,0,1216,1217, + 5,111,0,0,1217,1218,5,99,0,0,1218,1219,5,107,0,0,1219,1220,5,100, + 0,0,1220,1221,5,97,0,0,1221,1222,5,116,0,0,1222,1224,5,97,0,0,1223, + 1196,1,0,0,0,1223,1205,1,0,0,0,1223,1214,1,0,0,0,1224,72,1,0,0,0, + 1225,1226,5,112,0,0,1226,1227,5,111,0,0,1227,1228,5,105,0,0,1228, + 1229,5,110,0,0,1229,1230,5,116,0,0,1230,1231,5,101,0,0,1231,1247, + 5,114,0,0,1232,1233,5,80,0,0,1233,1234,5,79,0,0,1234,1235,5,73,0, + 0,1235,1236,5,78,0,0,1236,1237,5,84,0,0,1237,1238,5,69,0,0,1238, + 1247,5,82,0,0,1239,1240,5,80,0,0,1240,1241,5,111,0,0,1241,1242,5, + 105,0,0,1242,1243,5,110,0,0,1243,1244,5,116,0,0,1244,1245,5,101, + 0,0,1245,1247,5,114,0,0,1246,1225,1,0,0,0,1246,1232,1,0,0,0,1246, + 1239,1,0,0,0,1247,74,1,0,0,0,1248,1249,5,112,0,0,1249,1250,5,114, + 0,0,1250,1251,5,105,0,0,1251,1252,5,118,0,0,1252,1253,5,97,0,0,1253, + 1254,5,116,0,0,1254,1270,5,101,0,0,1255,1256,5,80,0,0,1256,1257, + 5,82,0,0,1257,1258,5,73,0,0,1258,1259,5,86,0,0,1259,1260,5,65,0, + 0,1260,1261,5,84,0,0,1261,1270,5,69,0,0,1262,1263,5,80,0,0,1263, + 1264,5,114,0,0,1264,1265,5,105,0,0,1265,1266,5,118,0,0,1266,1267, + 5,97,0,0,1267,1268,5,116,0,0,1268,1270,5,101,0,0,1269,1248,1,0,0, + 0,1269,1255,1,0,0,0,1269,1262,1,0,0,0,1270,76,1,0,0,0,1271,1272, + 3,75,37,0,1272,78,1,0,0,0,1273,1274,5,115,0,0,1274,1275,5,101,0, + 0,1275,1276,5,113,0,0,1276,1277,5,117,0,0,1277,1278,5,101,0,0,1278, + 1279,5,110,0,0,1279,1280,5,99,0,0,1280,1298,5,101,0,0,1281,1282, + 5,83,0,0,1282,1283,5,69,0,0,1283,1284,5,81,0,0,1284,1285,5,85,0, + 0,1285,1286,5,69,0,0,1286,1287,5,78,0,0,1287,1288,5,67,0,0,1288, + 1298,5,69,0,0,1289,1290,5,83,0,0,1290,1291,5,101,0,0,1291,1292,5, + 113,0,0,1292,1293,5,117,0,0,1293,1294,5,101,0,0,1294,1295,5,110, + 0,0,1295,1296,5,99,0,0,1296,1298,5,101,0,0,1297,1273,1,0,0,0,1297, + 1281,1,0,0,0,1297,1289,1,0,0,0,1298,80,1,0,0,0,1299,1300,5,112,0, + 0,1300,1301,5,117,0,0,1301,1302,5,98,0,0,1302,1303,5,108,0,0,1303, + 1304,5,105,0,0,1304,1318,5,99,0,0,1305,1306,5,80,0,0,1306,1307,5, + 85,0,0,1307,1308,5,66,0,0,1308,1309,5,76,0,0,1309,1310,5,73,0,0, + 1310,1318,5,67,0,0,1311,1312,5,80,0,0,1312,1313,5,117,0,0,1313,1314, + 5,98,0,0,1314,1315,5,108,0,0,1315,1316,5,105,0,0,1316,1318,5,99, + 0,0,1317,1299,1,0,0,0,1317,1305,1,0,0,0,1317,1311,1,0,0,0,1318,82, + 1,0,0,0,1319,1322,3,77,38,0,1320,1322,3,81,40,0,1321,1319,1,0,0, + 0,1321,1320,1,0,0,0,1322,84,1,0,0,0,1323,1324,5,105,0,0,1324,1325, + 5,109,0,0,1325,1326,5,112,0,0,1326,1327,5,108,0,0,1327,1328,5,105, + 0,0,1328,1329,5,99,0,0,1329,1330,5,105,0,0,1330,1348,5,116,0,0,1331, + 1332,5,73,0,0,1332,1333,5,77,0,0,1333,1334,5,80,0,0,1334,1335,5, + 76,0,0,1335,1336,5,73,0,0,1336,1337,5,67,0,0,1337,1338,5,73,0,0, + 1338,1348,5,84,0,0,1339,1340,5,73,0,0,1340,1341,5,109,0,0,1341,1342, + 5,112,0,0,1342,1343,5,108,0,0,1343,1344,5,105,0,0,1344,1345,5,99, + 0,0,1345,1346,5,105,0,0,1346,1348,5,116,0,0,1347,1323,1,0,0,0,1347, + 1331,1,0,0,0,1347,1339,1,0,0,0,1348,86,1,0,0,0,1349,1350,5,110,0, + 0,1350,1351,5,111,0,0,1351,1352,5,110,0,0,1352,1362,5,101,0,0,1353, + 1354,5,78,0,0,1354,1355,5,79,0,0,1355,1356,5,78,0,0,1356,1362,5, + 69,0,0,1357,1358,5,78,0,0,1358,1359,5,111,0,0,1359,1360,5,110,0, + 0,1360,1362,5,101,0,0,1361,1349,1,0,0,0,1361,1353,1,0,0,0,1361,1357, + 1,0,0,0,1362,88,1,0,0,0,1363,1364,5,99,0,0,1364,1365,5,104,0,0,1365, + 1366,5,97,0,0,1366,1367,5,114,0,0,1367,1368,5,97,0,0,1368,1369,5, + 99,0,0,1369,1370,5,116,0,0,1370,1371,5,101,0,0,1371,1391,5,114,0, + 0,1372,1373,5,67,0,0,1373,1374,5,72,0,0,1374,1375,5,65,0,0,1375, + 1376,5,82,0,0,1376,1377,5,65,0,0,1377,1378,5,67,0,0,1378,1379,5, + 84,0,0,1379,1380,5,69,0,0,1380,1391,5,82,0,0,1381,1382,5,67,0,0, + 1382,1383,5,104,0,0,1383,1384,5,97,0,0,1384,1385,5,114,0,0,1385, + 1386,5,97,0,0,1386,1387,5,99,0,0,1387,1388,5,116,0,0,1388,1389,5, + 101,0,0,1389,1391,5,114,0,0,1390,1363,1,0,0,0,1390,1372,1,0,0,0, + 1390,1381,1,0,0,0,1391,90,1,0,0,0,1392,1393,5,112,0,0,1393,1394, + 5,97,0,0,1394,1395,5,114,0,0,1395,1396,5,97,0,0,1396,1397,5,109, + 0,0,1397,1398,5,101,0,0,1398,1399,5,116,0,0,1399,1400,5,101,0,0, + 1400,1420,5,114,0,0,1401,1402,5,80,0,0,1402,1403,5,65,0,0,1403,1404, + 5,82,0,0,1404,1405,5,65,0,0,1405,1406,5,77,0,0,1406,1407,5,69,0, + 0,1407,1408,5,84,0,0,1408,1409,5,69,0,0,1409,1420,5,82,0,0,1410, + 1411,5,80,0,0,1411,1412,5,97,0,0,1412,1413,5,114,0,0,1413,1414,5, + 97,0,0,1414,1415,5,109,0,0,1415,1416,5,101,0,0,1416,1417,5,116,0, + 0,1417,1418,5,101,0,0,1418,1420,5,114,0,0,1419,1392,1,0,0,0,1419, + 1401,1,0,0,0,1419,1410,1,0,0,0,1420,92,1,0,0,0,1421,1422,5,101,0, + 0,1422,1423,5,120,0,0,1423,1424,5,116,0,0,1424,1425,5,101,0,0,1425, + 1426,5,114,0,0,1426,1427,5,110,0,0,1427,1428,5,97,0,0,1428,1446, + 5,108,0,0,1429,1430,5,69,0,0,1430,1431,5,88,0,0,1431,1432,5,84,0, + 0,1432,1433,5,69,0,0,1433,1434,5,82,0,0,1434,1435,5,78,0,0,1435, + 1436,5,65,0,0,1436,1446,5,76,0,0,1437,1438,5,69,0,0,1438,1439,5, + 120,0,0,1439,1440,5,116,0,0,1440,1441,5,101,0,0,1441,1442,5,114, + 0,0,1442,1443,5,110,0,0,1443,1444,5,97,0,0,1444,1446,5,108,0,0,1445, + 1421,1,0,0,0,1445,1429,1,0,0,0,1445,1437,1,0,0,0,1446,94,1,0,0,0, + 1447,1448,5,105,0,0,1448,1449,5,110,0,0,1449,1450,5,116,0,0,1450, + 1451,5,114,0,0,1451,1452,5,105,0,0,1452,1453,5,110,0,0,1453,1454, + 5,115,0,0,1454,1455,5,105,0,0,1455,1475,5,99,0,0,1456,1457,5,73, + 0,0,1457,1458,5,78,0,0,1458,1459,5,84,0,0,1459,1460,5,82,0,0,1460, + 1461,5,73,0,0,1461,1462,5,78,0,0,1462,1463,5,83,0,0,1463,1464,5, + 73,0,0,1464,1475,5,67,0,0,1465,1466,5,73,0,0,1466,1467,5,110,0,0, + 1467,1468,5,116,0,0,1468,1469,5,114,0,0,1469,1470,5,105,0,0,1470, + 1471,5,110,0,0,1471,1472,5,115,0,0,1472,1473,5,105,0,0,1473,1475, + 5,99,0,0,1474,1447,1,0,0,0,1474,1456,1,0,0,0,1474,1465,1,0,0,0,1475, + 96,1,0,0,0,1476,1477,5,115,0,0,1477,1478,5,97,0,0,1478,1479,5,118, + 0,0,1479,1489,5,101,0,0,1480,1481,5,83,0,0,1481,1482,5,65,0,0,1482, + 1483,5,86,0,0,1483,1489,5,69,0,0,1484,1485,5,83,0,0,1485,1486,5, + 97,0,0,1486,1487,5,118,0,0,1487,1489,5,101,0,0,1488,1476,1,0,0,0, + 1488,1480,1,0,0,0,1488,1484,1,0,0,0,1489,98,1,0,0,0,1490,1491,5, + 100,0,0,1491,1492,5,97,0,0,1492,1493,5,116,0,0,1493,1503,5,97,0, + 0,1494,1495,5,68,0,0,1495,1496,5,65,0,0,1496,1497,5,84,0,0,1497, + 1503,5,65,0,0,1498,1499,5,68,0,0,1499,1500,5,97,0,0,1500,1501,5, + 116,0,0,1501,1503,5,97,0,0,1502,1490,1,0,0,0,1502,1494,1,0,0,0,1502, + 1498,1,0,0,0,1503,100,1,0,0,0,1504,1505,5,71,0,0,1505,1511,5,79, + 0,0,1506,1507,5,103,0,0,1507,1511,5,111,0,0,1508,1509,5,71,0,0,1509, + 1511,5,111,0,0,1510,1504,1,0,0,0,1510,1506,1,0,0,0,1510,1508,1,0, + 0,0,1511,102,1,0,0,0,1512,1513,5,71,0,0,1513,1514,5,79,0,0,1514, + 1515,5,84,0,0,1515,1525,5,79,0,0,1516,1517,5,103,0,0,1517,1518,5, + 111,0,0,1518,1519,5,116,0,0,1519,1525,5,111,0,0,1520,1521,5,71,0, + 0,1521,1522,5,111,0,0,1522,1523,5,116,0,0,1523,1525,5,111,0,0,1524, + 1512,1,0,0,0,1524,1516,1,0,0,0,1524,1520,1,0,0,0,1525,104,1,0,0, + 0,1526,1527,5,73,0,0,1527,1533,5,70,0,0,1528,1529,5,105,0,0,1529, + 1533,5,102,0,0,1530,1531,5,73,0,0,1531,1533,5,102,0,0,1532,1526, + 1,0,0,0,1532,1528,1,0,0,0,1532,1530,1,0,0,0,1533,106,1,0,0,0,1534, + 1535,5,84,0,0,1535,1536,5,72,0,0,1536,1537,5,69,0,0,1537,1543,5, + 78,0,0,1538,1539,5,116,0,0,1539,1540,5,104,0,0,1540,1541,5,101,0, + 0,1541,1543,5,110,0,0,1542,1534,1,0,0,0,1542,1538,1,0,0,0,1543,108, + 1,0,0,0,1544,1545,5,69,0,0,1545,1546,5,76,0,0,1546,1547,5,83,0,0, + 1547,1553,5,69,0,0,1548,1549,5,101,0,0,1549,1550,5,108,0,0,1550, + 1551,5,115,0,0,1551,1553,5,101,0,0,1552,1544,1,0,0,0,1552,1548,1, + 0,0,0,1553,110,1,0,0,0,1554,1555,5,69,0,0,1555,1556,5,78,0,0,1556, + 1557,5,68,0,0,1557,1558,5,73,0,0,1558,1565,5,70,0,0,1559,1560,5, + 101,0,0,1560,1561,5,110,0,0,1561,1562,5,100,0,0,1562,1563,5,105, + 0,0,1563,1565,5,102,0,0,1564,1554,1,0,0,0,1564,1559,1,0,0,0,1565, + 112,1,0,0,0,1566,1567,5,82,0,0,1567,1568,5,69,0,0,1568,1569,5,83, + 0,0,1569,1570,5,85,0,0,1570,1571,5,76,0,0,1571,1579,5,84,0,0,1572, + 1573,5,114,0,0,1573,1574,5,101,0,0,1574,1575,5,115,0,0,1575,1576, + 5,117,0,0,1576,1577,5,108,0,0,1577,1579,5,116,0,0,1578,1566,1,0, + 0,0,1578,1572,1,0,0,0,1579,114,1,0,0,0,1580,1581,5,69,0,0,1581,1582, + 5,76,0,0,1582,1583,5,83,0,0,1583,1584,5,69,0,0,1584,1585,5,73,0, + 0,1585,1599,5,70,0,0,1586,1587,5,101,0,0,1587,1588,5,108,0,0,1588, + 1589,5,115,0,0,1589,1590,5,101,0,0,1590,1591,5,105,0,0,1591,1599, + 5,102,0,0,1592,1593,5,69,0,0,1593,1594,5,108,0,0,1594,1595,5,115, + 0,0,1595,1596,5,101,0,0,1596,1597,5,105,0,0,1597,1599,5,102,0,0, + 1598,1580,1,0,0,0,1598,1586,1,0,0,0,1598,1592,1,0,0,0,1599,116,1, + 0,0,0,1600,1601,5,68,0,0,1601,1607,5,79,0,0,1602,1603,5,100,0,0, + 1603,1607,5,111,0,0,1604,1605,5,68,0,0,1605,1607,5,111,0,0,1606, + 1600,1,0,0,0,1606,1602,1,0,0,0,1606,1604,1,0,0,0,1607,118,1,0,0, + 0,1608,1609,5,73,0,0,1609,1610,5,78,0,0,1610,1611,5,67,0,0,1611, + 1612,5,76,0,0,1612,1613,5,85,0,0,1613,1614,5,68,0,0,1614,1630,5, + 69,0,0,1615,1616,5,105,0,0,1616,1617,5,110,0,0,1617,1618,5,99,0, + 0,1618,1619,5,108,0,0,1619,1620,5,117,0,0,1620,1621,5,100,0,0,1621, + 1630,5,101,0,0,1622,1623,5,73,0,0,1623,1624,5,110,0,0,1624,1625, + 5,99,0,0,1625,1626,5,108,0,0,1626,1627,5,117,0,0,1627,1628,5,100, + 0,0,1628,1630,5,101,0,0,1629,1608,1,0,0,0,1629,1615,1,0,0,0,1629, + 1622,1,0,0,0,1630,120,1,0,0,0,1631,1632,5,67,0,0,1632,1633,5,79, + 0,0,1633,1634,5,78,0,0,1634,1635,5,84,0,0,1635,1636,5,73,0,0,1636, + 1637,5,78,0,0,1637,1638,5,85,0,0,1638,1656,5,69,0,0,1639,1640,5, + 99,0,0,1640,1641,5,111,0,0,1641,1642,5,110,0,0,1642,1643,5,116,0, + 0,1643,1644,5,105,0,0,1644,1645,5,110,0,0,1645,1646,5,117,0,0,1646, + 1656,5,101,0,0,1647,1648,5,67,0,0,1648,1649,5,111,0,0,1649,1650, + 5,110,0,0,1650,1651,5,116,0,0,1651,1652,5,105,0,0,1652,1653,5,110, + 0,0,1653,1654,5,117,0,0,1654,1656,5,101,0,0,1655,1631,1,0,0,0,1655, + 1639,1,0,0,0,1655,1647,1,0,0,0,1656,122,1,0,0,0,1657,1658,5,69,0, + 0,1658,1659,5,78,0,0,1659,1660,5,68,0,0,1660,1661,5,87,0,0,1661, + 1662,5,72,0,0,1662,1663,5,69,0,0,1663,1664,5,82,0,0,1664,1682,5, + 69,0,0,1665,1666,5,101,0,0,1666,1667,5,110,0,0,1667,1668,5,100,0, + 0,1668,1669,5,119,0,0,1669,1670,5,104,0,0,1670,1671,5,101,0,0,1671, + 1672,5,114,0,0,1672,1682,5,101,0,0,1673,1674,5,69,0,0,1674,1675, + 5,110,0,0,1675,1676,5,100,0,0,1676,1677,5,119,0,0,1677,1678,5,104, + 0,0,1678,1679,5,101,0,0,1679,1680,5,114,0,0,1680,1682,5,101,0,0, + 1681,1657,1,0,0,0,1681,1665,1,0,0,0,1681,1673,1,0,0,0,1682,124,1, + 0,0,0,1683,1684,5,87,0,0,1684,1685,5,72,0,0,1685,1686,5,69,0,0,1686, + 1687,5,82,0,0,1687,1699,5,69,0,0,1688,1689,5,119,0,0,1689,1690,5, + 104,0,0,1690,1691,5,101,0,0,1691,1692,5,114,0,0,1692,1699,5,101, + 0,0,1693,1694,5,87,0,0,1694,1695,5,104,0,0,1695,1696,5,101,0,0,1696, + 1697,5,114,0,0,1697,1699,5,101,0,0,1698,1683,1,0,0,0,1698,1688,1, + 0,0,0,1698,1693,1,0,0,0,1699,126,1,0,0,0,1700,1701,5,69,0,0,1701, + 1702,5,78,0,0,1702,1703,5,68,0,0,1703,1704,5,83,0,0,1704,1705,5, + 69,0,0,1705,1706,5,76,0,0,1706,1707,5,69,0,0,1707,1708,5,67,0,0, + 1708,1719,5,84,0,0,1709,1710,5,101,0,0,1710,1711,5,110,0,0,1711, + 1712,5,100,0,0,1712,1713,5,115,0,0,1713,1714,5,101,0,0,1714,1715, + 5,108,0,0,1715,1716,5,101,0,0,1716,1717,5,99,0,0,1717,1719,5,116, + 0,0,1718,1700,1,0,0,0,1718,1709,1,0,0,0,1719,128,1,0,0,0,1720,1721, + 5,83,0,0,1721,1722,5,69,0,0,1722,1723,5,76,0,0,1723,1724,5,69,0, + 0,1724,1725,5,67,0,0,1725,1726,5,84,0,0,1726,1727,5,67,0,0,1727, + 1728,5,65,0,0,1728,1729,5,83,0,0,1729,1741,5,69,0,0,1730,1731,5, + 115,0,0,1731,1732,5,101,0,0,1732,1733,5,108,0,0,1733,1734,5,101, + 0,0,1734,1735,5,99,0,0,1735,1736,5,116,0,0,1736,1737,5,99,0,0,1737, + 1738,5,97,0,0,1738,1739,5,115,0,0,1739,1741,5,101,0,0,1740,1720, + 1,0,0,0,1740,1730,1,0,0,0,1741,130,1,0,0,0,1742,1743,5,83,0,0,1743, + 1744,5,69,0,0,1744,1745,5,76,0,0,1745,1746,5,69,0,0,1746,1747,5, + 67,0,0,1747,1755,5,84,0,0,1748,1749,5,115,0,0,1749,1750,5,101,0, + 0,1750,1751,5,108,0,0,1751,1752,5,101,0,0,1752,1753,5,99,0,0,1753, + 1755,5,116,0,0,1754,1742,1,0,0,0,1754,1748,1,0,0,0,1755,132,1,0, + 0,0,1756,1757,5,99,0,0,1757,1758,5,97,0,0,1758,1759,5,115,0,0,1759, + 1769,5,101,0,0,1760,1761,5,67,0,0,1761,1762,5,65,0,0,1762,1763,5, + 83,0,0,1763,1769,5,69,0,0,1764,1765,5,67,0,0,1765,1766,5,97,0,0, + 1766,1767,5,115,0,0,1767,1769,5,101,0,0,1768,1756,1,0,0,0,1768,1760, + 1,0,0,0,1768,1764,1,0,0,0,1769,134,1,0,0,0,1770,1771,5,68,0,0,1771, + 1772,5,69,0,0,1772,1773,5,70,0,0,1773,1774,5,65,0,0,1774,1775,5, + 85,0,0,1775,1776,5,76,0,0,1776,1792,5,84,0,0,1777,1778,5,100,0,0, + 1778,1779,5,101,0,0,1779,1780,5,102,0,0,1780,1781,5,97,0,0,1781, + 1782,5,117,0,0,1782,1783,5,108,0,0,1783,1792,5,116,0,0,1784,1785, + 5,68,0,0,1785,1786,5,101,0,0,1786,1787,5,102,0,0,1787,1788,5,97, + 0,0,1788,1789,5,117,0,0,1789,1790,5,108,0,0,1790,1792,5,116,0,0, + 1791,1770,1,0,0,0,1791,1777,1,0,0,0,1791,1784,1,0,0,0,1792,136,1, + 0,0,0,1793,1794,5,68,0,0,1794,1795,5,73,0,0,1795,1796,5,82,0,0,1796, + 1797,5,69,0,0,1797,1798,5,67,0,0,1798,1812,5,84,0,0,1799,1800,5, + 100,0,0,1800,1801,5,105,0,0,1801,1802,5,114,0,0,1802,1803,5,101, + 0,0,1803,1804,5,99,0,0,1804,1812,5,116,0,0,1805,1806,5,68,0,0,1806, + 1807,5,105,0,0,1807,1808,5,114,0,0,1808,1809,5,101,0,0,1809,1810, + 5,99,0,0,1810,1812,5,116,0,0,1811,1793,1,0,0,0,1811,1799,1,0,0,0, + 1811,1805,1,0,0,0,1812,138,1,0,0,0,1813,1814,5,83,0,0,1814,1815, + 5,84,0,0,1815,1816,5,79,0,0,1816,1826,5,80,0,0,1817,1818,5,115,0, + 0,1818,1819,5,116,0,0,1819,1820,5,111,0,0,1820,1826,5,112,0,0,1821, + 1822,5,83,0,0,1822,1823,5,116,0,0,1823,1824,5,111,0,0,1824,1826, + 5,112,0,0,1825,1813,1,0,0,0,1825,1817,1,0,0,0,1825,1821,1,0,0,0, + 1826,140,1,0,0,0,1827,1828,5,82,0,0,1828,1829,5,69,0,0,1829,1837, + 5,67,0,0,1830,1831,5,114,0,0,1831,1832,5,101,0,0,1832,1837,5,99, + 0,0,1833,1834,5,82,0,0,1834,1835,5,101,0,0,1835,1837,5,99,0,0,1836, + 1827,1,0,0,0,1836,1830,1,0,0,0,1836,1833,1,0,0,0,1837,142,1,0,0, + 0,1838,1839,5,69,0,0,1839,1840,5,78,0,0,1840,1841,5,68,0,0,1841, + 1842,5,68,0,0,1842,1849,5,79,0,0,1843,1844,5,101,0,0,1844,1845,5, + 110,0,0,1845,1846,5,100,0,0,1846,1847,5,100,0,0,1847,1849,5,111, + 0,0,1848,1838,1,0,0,0,1848,1843,1,0,0,0,1849,144,1,0,0,0,1850,1851, + 5,112,0,0,1851,1852,5,97,0,0,1852,1853,5,117,0,0,1853,1854,5,115, + 0,0,1854,1861,5,101,0,0,1855,1856,5,80,0,0,1856,1857,5,65,0,0,1857, + 1858,5,85,0,0,1858,1859,5,83,0,0,1859,1861,5,69,0,0,1860,1850,1, + 0,0,0,1860,1855,1,0,0,0,1861,146,1,0,0,0,1862,1863,5,87,0,0,1863, + 1864,5,82,0,0,1864,1865,5,73,0,0,1865,1866,5,84,0,0,1866,1873,5, + 69,0,0,1867,1868,5,119,0,0,1868,1869,5,114,0,0,1869,1870,5,105,0, + 0,1870,1871,5,116,0,0,1871,1873,5,101,0,0,1872,1862,1,0,0,0,1872, + 1867,1,0,0,0,1873,148,1,0,0,0,1874,1875,5,82,0,0,1875,1876,5,69, + 0,0,1876,1877,5,65,0,0,1877,1883,5,68,0,0,1878,1879,5,114,0,0,1879, + 1880,5,101,0,0,1880,1881,5,97,0,0,1881,1883,5,100,0,0,1882,1874, + 1,0,0,0,1882,1878,1,0,0,0,1883,150,1,0,0,0,1884,1885,5,80,0,0,1885, + 1886,5,82,0,0,1886,1887,5,73,0,0,1887,1888,5,78,0,0,1888,1895,5, + 84,0,0,1889,1890,5,112,0,0,1890,1891,5,114,0,0,1891,1892,5,105,0, + 0,1892,1893,5,110,0,0,1893,1895,5,116,0,0,1894,1884,1,0,0,0,1894, + 1889,1,0,0,0,1895,152,1,0,0,0,1896,1897,5,79,0,0,1897,1898,5,80, + 0,0,1898,1899,5,69,0,0,1899,1905,5,78,0,0,1900,1901,5,111,0,0,1901, + 1902,5,112,0,0,1902,1903,5,101,0,0,1903,1905,5,110,0,0,1904,1896, + 1,0,0,0,1904,1900,1,0,0,0,1905,154,1,0,0,0,1906,1907,5,70,0,0,1907, + 1908,5,77,0,0,1908,1913,5,84,0,0,1909,1910,5,102,0,0,1910,1911,5, + 109,0,0,1911,1913,5,116,0,0,1912,1906,1,0,0,0,1912,1909,1,0,0,0, + 1913,156,1,0,0,0,1914,1915,5,85,0,0,1915,1916,5,78,0,0,1916,1917, + 5,73,0,0,1917,1923,5,84,0,0,1918,1919,5,117,0,0,1919,1920,5,110, + 0,0,1920,1921,5,105,0,0,1921,1923,5,116,0,0,1922,1914,1,0,0,0,1922, + 1918,1,0,0,0,1923,158,1,0,0,0,1924,1925,5,80,0,0,1925,1926,5,65, + 0,0,1926,1931,5,68,0,0,1927,1928,5,112,0,0,1928,1929,5,97,0,0,1929, + 1931,5,100,0,0,1930,1924,1,0,0,0,1930,1927,1,0,0,0,1931,160,1,0, + 0,0,1932,1933,5,65,0,0,1933,1934,5,67,0,0,1934,1935,5,84,0,0,1935, + 1936,5,73,0,0,1936,1937,5,79,0,0,1937,1945,5,78,0,0,1938,1939,5, + 97,0,0,1939,1940,5,99,0,0,1940,1941,5,116,0,0,1941,1942,5,105,0, + 0,1942,1943,5,111,0,0,1943,1945,5,110,0,0,1944,1932,1,0,0,0,1944, + 1938,1,0,0,0,1945,162,1,0,0,0,1946,1947,5,68,0,0,1947,1948,5,69, + 0,0,1948,1949,5,76,0,0,1949,1950,5,73,0,0,1950,1957,5,77,0,0,1951, + 1952,5,100,0,0,1952,1953,5,101,0,0,1953,1954,5,108,0,0,1954,1955, + 5,105,0,0,1955,1957,5,109,0,0,1956,1946,1,0,0,0,1956,1951,1,0,0, + 0,1957,164,1,0,0,0,1958,1959,5,73,0,0,1959,1960,5,79,0,0,1960,1961, + 5,76,0,0,1961,1962,5,69,0,0,1962,1963,5,78,0,0,1963,1964,5,71,0, + 0,1964,1965,5,84,0,0,1965,1975,5,72,0,0,1966,1967,5,105,0,0,1967, + 1968,5,111,0,0,1968,1969,5,108,0,0,1969,1970,5,101,0,0,1970,1971, + 5,110,0,0,1971,1972,5,103,0,0,1972,1973,5,116,0,0,1973,1975,5,104, + 0,0,1974,1958,1,0,0,0,1974,1966,1,0,0,0,1975,166,1,0,0,0,1976,1977, + 5,82,0,0,1977,1978,5,69,0,0,1978,1979,5,65,0,0,1979,1980,5,68,0, + 0,1980,1981,5,87,0,0,1981,1982,5,82,0,0,1982,1983,5,73,0,0,1983, + 1984,5,84,0,0,1984,1995,5,69,0,0,1985,1986,5,114,0,0,1986,1987,5, + 101,0,0,1987,1988,5,97,0,0,1988,1989,5,100,0,0,1989,1990,5,119,0, + 0,1990,1991,5,114,0,0,1991,1992,5,105,0,0,1992,1993,5,116,0,0,1993, + 1995,5,101,0,0,1994,1976,1,0,0,0,1994,1985,1,0,0,0,1995,168,1,0, + 0,0,1996,1997,5,101,0,0,1997,1998,5,114,0,0,1998,2003,5,114,0,0, + 1999,2000,5,69,0,0,2000,2001,5,82,0,0,2001,2003,5,82,0,0,2002,1996, + 1,0,0,0,2002,1999,1,0,0,0,2003,170,1,0,0,0,2004,2005,5,83,0,0,2005, + 2006,5,73,0,0,2006,2007,5,90,0,0,2007,2013,5,69,0,0,2008,2009,5, + 115,0,0,2009,2010,5,105,0,0,2010,2011,5,122,0,0,2011,2013,5,101, + 0,0,2012,2004,1,0,0,0,2012,2008,1,0,0,0,2013,172,1,0,0,0,2014,2015, + 5,65,0,0,2015,2016,5,68,0,0,2016,2017,5,86,0,0,2017,2018,5,65,0, + 0,2018,2019,5,78,0,0,2019,2020,5,67,0,0,2020,2029,5,69,0,0,2021, + 2022,5,97,0,0,2022,2023,5,100,0,0,2023,2024,5,118,0,0,2024,2025, + 5,97,0,0,2025,2026,5,110,0,0,2026,2027,5,99,0,0,2027,2029,5,101, + 0,0,2028,2014,1,0,0,0,2028,2021,1,0,0,0,2029,174,1,0,0,0,2030,2031, + 5,78,0,0,2031,2032,5,77,0,0,2032,2037,5,76,0,0,2033,2034,5,110,0, + 0,2034,2035,5,109,0,0,2035,2037,5,108,0,0,2036,2030,1,0,0,0,2036, + 2033,1,0,0,0,2037,176,1,0,0,0,2038,2039,5,73,0,0,2039,2040,5,79, + 0,0,2040,2041,5,83,0,0,2041,2042,5,84,0,0,2042,2043,5,65,0,0,2043, + 2051,5,84,0,0,2044,2045,5,105,0,0,2045,2046,5,111,0,0,2046,2047, + 5,115,0,0,2047,2048,5,116,0,0,2048,2049,5,97,0,0,2049,2051,5,116, + 0,0,2050,2038,1,0,0,0,2050,2044,1,0,0,0,2051,178,1,0,0,0,2052,2053, + 5,70,0,0,2053,2054,5,79,0,0,2054,2055,5,82,0,0,2055,2056,5,77,0, + 0,2056,2057,5,65,0,0,2057,2065,5,84,0,0,2058,2059,5,102,0,0,2059, + 2060,5,111,0,0,2060,2061,5,114,0,0,2061,2062,5,109,0,0,2062,2063, + 5,97,0,0,2063,2065,5,116,0,0,2064,2052,1,0,0,0,2064,2058,1,0,0,0, + 2065,180,1,0,0,0,2066,2067,5,76,0,0,2067,2068,5,69,0,0,2068,2073, + 5,84,0,0,2069,2070,5,108,0,0,2070,2071,5,101,0,0,2071,2073,5,116, + 0,0,2072,2066,1,0,0,0,2072,2069,1,0,0,0,2073,182,1,0,0,0,2074,2075, + 5,67,0,0,2075,2076,5,65,0,0,2076,2077,5,76,0,0,2077,2083,5,76,0, + 0,2078,2079,5,99,0,0,2079,2080,5,97,0,0,2080,2081,5,108,0,0,2081, + 2083,5,108,0,0,2082,2074,1,0,0,0,2082,2078,1,0,0,0,2083,184,1,0, + 0,0,2084,2085,5,82,0,0,2085,2086,5,69,0,0,2086,2087,5,84,0,0,2087, + 2088,5,85,0,0,2088,2089,5,82,0,0,2089,2103,5,78,0,0,2090,2091,5, + 114,0,0,2091,2092,5,101,0,0,2092,2093,5,116,0,0,2093,2094,5,117, + 0,0,2094,2095,5,114,0,0,2095,2103,5,110,0,0,2096,2097,5,82,0,0,2097, + 2098,5,101,0,0,2098,2099,5,116,0,0,2099,2100,5,117,0,0,2100,2101, + 5,114,0,0,2101,2103,5,110,0,0,2102,2084,1,0,0,0,2102,2090,1,0,0, + 0,2102,2096,1,0,0,0,2103,186,1,0,0,0,2104,2105,5,67,0,0,2105,2106, + 5,76,0,0,2106,2107,5,79,0,0,2107,2108,5,83,0,0,2108,2115,5,69,0, + 0,2109,2110,5,99,0,0,2110,2111,5,108,0,0,2111,2112,5,111,0,0,2112, + 2113,5,115,0,0,2113,2115,5,101,0,0,2114,2104,1,0,0,0,2114,2109,1, + 0,0,0,2115,188,1,0,0,0,2116,2117,5,68,0,0,2117,2118,5,79,0,0,2118, + 2119,5,85,0,0,2119,2120,5,66,0,0,2120,2121,5,76,0,0,2121,2129,5, + 69,0,0,2122,2123,5,100,0,0,2123,2124,5,111,0,0,2124,2125,5,117,0, + 0,2125,2126,5,98,0,0,2126,2127,5,108,0,0,2127,2129,5,101,0,0,2128, + 2116,1,0,0,0,2128,2122,1,0,0,0,2129,190,1,0,0,0,2130,2131,5,73,0, + 0,2131,2132,5,79,0,0,2132,2133,5,83,0,0,2133,2134,5,84,0,0,2134, + 2135,5,65,0,0,2135,2136,5,82,0,0,2136,2145,5,84,0,0,2137,2138,5, + 105,0,0,2138,2139,5,111,0,0,2139,2140,5,115,0,0,2140,2141,5,116, + 0,0,2141,2142,5,97,0,0,2142,2143,5,114,0,0,2143,2145,5,116,0,0,2144, + 2130,1,0,0,0,2144,2137,1,0,0,0,2145,192,1,0,0,0,2146,2147,5,83,0, + 0,2147,2148,5,69,0,0,2148,2149,5,81,0,0,2149,2150,5,85,0,0,2150, + 2151,5,69,0,0,2151,2152,5,78,0,0,2152,2153,5,84,0,0,2153,2154,5, + 73,0,0,2154,2155,5,65,0,0,2155,2167,5,76,0,0,2156,2157,5,115,0,0, + 2157,2158,5,101,0,0,2158,2159,5,113,0,0,2159,2160,5,117,0,0,2160, + 2161,5,101,0,0,2161,2162,5,110,0,0,2162,2163,5,116,0,0,2163,2164, + 5,105,0,0,2164,2165,5,97,0,0,2165,2167,5,108,0,0,2166,2146,1,0,0, + 0,2166,2156,1,0,0,0,2167,194,1,0,0,0,2168,2169,5,76,0,0,2169,2170, + 5,65,0,0,2170,2171,5,66,0,0,2171,2172,5,69,0,0,2172,2179,5,76,0, + 0,2173,2174,5,108,0,0,2174,2175,5,97,0,0,2175,2176,5,98,0,0,2176, + 2177,5,101,0,0,2177,2179,5,108,0,0,2178,2168,1,0,0,0,2178,2173,1, + 0,0,0,2179,196,1,0,0,0,2180,2181,5,102,0,0,2181,2182,5,105,0,0,2182, + 2183,5,108,0,0,2183,2189,5,101,0,0,2184,2185,5,70,0,0,2185,2186, + 5,73,0,0,2186,2187,5,76,0,0,2187,2189,5,69,0,0,2188,2180,1,0,0,0, + 2188,2184,1,0,0,0,2189,198,1,0,0,0,2190,2191,5,83,0,0,2191,2192, + 5,84,0,0,2192,2193,5,65,0,0,2193,2194,5,84,0,0,2194,2195,5,85,0, + 0,2195,2203,5,83,0,0,2196,2197,5,115,0,0,2197,2198,5,116,0,0,2198, + 2199,5,97,0,0,2199,2200,5,116,0,0,2200,2201,5,117,0,0,2201,2203, + 5,115,0,0,2202,2190,1,0,0,0,2202,2196,1,0,0,0,2203,200,1,0,0,0,2204, + 2205,5,65,0,0,2205,2206,5,67,0,0,2206,2207,5,67,0,0,2207,2208,5, + 69,0,0,2208,2209,5,83,0,0,2209,2217,5,83,0,0,2210,2211,5,97,0,0, + 2211,2212,5,99,0,0,2212,2213,5,99,0,0,2213,2214,5,101,0,0,2214,2215, + 5,115,0,0,2215,2217,5,115,0,0,2216,2204,1,0,0,0,2216,2210,1,0,0, + 0,2217,202,1,0,0,0,2218,2219,5,80,0,0,2219,2220,5,79,0,0,2220,2221, + 5,83,0,0,2221,2222,5,73,0,0,2222,2223,5,84,0,0,2223,2224,5,73,0, + 0,2224,2225,5,79,0,0,2225,2235,5,78,0,0,2226,2227,5,112,0,0,2227, + 2228,5,111,0,0,2228,2229,5,115,0,0,2229,2230,5,105,0,0,2230,2231, + 5,116,0,0,2231,2232,5,105,0,0,2232,2233,5,111,0,0,2233,2235,5,110, + 0,0,2234,2218,1,0,0,0,2234,2226,1,0,0,0,2235,204,1,0,0,0,2236,2237, + 5,70,0,0,2237,2238,5,79,0,0,2238,2239,5,82,0,0,2239,2245,5,77,0, + 0,2240,2241,5,102,0,0,2241,2242,5,111,0,0,2242,2243,5,114,0,0,2243, + 2245,5,109,0,0,2244,2236,1,0,0,0,2244,2240,1,0,0,0,2245,206,1,0, + 0,0,2246,2247,5,82,0,0,2247,2248,5,69,0,0,2248,2249,5,67,0,0,2249, + 2255,5,76,0,0,2250,2251,5,114,0,0,2251,2252,5,101,0,0,2252,2253, + 5,99,0,0,2253,2255,5,108,0,0,2254,2246,1,0,0,0,2254,2250,1,0,0,0, + 2255,208,1,0,0,0,2256,2257,5,69,0,0,2257,2258,5,88,0,0,2258,2259, + 5,73,0,0,2259,2260,5,83,0,0,2260,2267,5,84,0,0,2261,2262,5,101,0, + 0,2262,2263,5,120,0,0,2263,2264,5,105,0,0,2264,2265,5,115,0,0,2265, + 2267,5,116,0,0,2266,2256,1,0,0,0,2266,2261,1,0,0,0,2267,210,1,0, + 0,0,2268,2269,5,79,0,0,2269,2270,5,80,0,0,2270,2271,5,69,0,0,2271, + 2272,5,78,0,0,2272,2273,5,69,0,0,2273,2281,5,68,0,0,2274,2275,5, + 111,0,0,2275,2276,5,112,0,0,2276,2277,5,101,0,0,2277,2278,5,110, + 0,0,2278,2279,5,101,0,0,2279,2281,5,100,0,0,2280,2268,1,0,0,0,2280, + 2274,1,0,0,0,2281,212,1,0,0,0,2282,2283,5,78,0,0,2283,2284,5,85, + 0,0,2284,2285,5,77,0,0,2285,2286,5,66,0,0,2286,2287,5,69,0,0,2287, + 2295,5,82,0,0,2288,2289,5,110,0,0,2289,2290,5,117,0,0,2290,2291, + 5,109,0,0,2291,2292,5,98,0,0,2292,2293,5,101,0,0,2293,2295,5,114, + 0,0,2294,2282,1,0,0,0,2294,2288,1,0,0,0,2295,214,1,0,0,0,2296,2297, + 5,78,0,0,2297,2298,5,65,0,0,2298,2299,5,77,0,0,2299,2300,5,69,0, + 0,2300,2307,5,68,0,0,2301,2302,5,110,0,0,2302,2303,5,97,0,0,2303, + 2304,5,109,0,0,2304,2305,5,101,0,0,2305,2307,5,100,0,0,2306,2296, + 1,0,0,0,2306,2301,1,0,0,0,2307,216,1,0,0,0,2308,2309,5,78,0,0,2309, + 2310,5,65,0,0,2310,2311,5,77,0,0,2311,2317,5,69,0,0,2312,2313,5, + 110,0,0,2313,2314,5,97,0,0,2314,2315,5,109,0,0,2315,2317,5,101,0, + 0,2316,2308,1,0,0,0,2316,2312,1,0,0,0,2317,218,1,0,0,0,2318,2319, + 5,70,0,0,2319,2320,5,79,0,0,2320,2321,5,82,0,0,2321,2322,5,77,0, + 0,2322,2323,5,65,0,0,2323,2324,5,84,0,0,2324,2325,5,84,0,0,2325, + 2326,5,69,0,0,2326,2337,5,68,0,0,2327,2328,5,102,0,0,2328,2329,5, + 111,0,0,2329,2330,5,114,0,0,2330,2331,5,109,0,0,2331,2332,5,97,0, + 0,2332,2333,5,116,0,0,2333,2334,5,116,0,0,2334,2335,5,101,0,0,2335, + 2337,5,100,0,0,2336,2318,1,0,0,0,2336,2327,1,0,0,0,2337,220,1,0, + 0,0,2338,2339,5,85,0,0,2339,2340,5,78,0,0,2340,2341,5,70,0,0,2341, + 2342,5,79,0,0,2342,2343,5,82,0,0,2343,2344,5,77,0,0,2344,2345,5, + 65,0,0,2345,2346,5,84,0,0,2346,2347,5,84,0,0,2347,2348,5,69,0,0, + 2348,2361,5,68,0,0,2349,2350,5,117,0,0,2350,2351,5,110,0,0,2351, + 2352,5,102,0,0,2352,2353,5,111,0,0,2353,2354,5,114,0,0,2354,2355, + 5,109,0,0,2355,2356,5,97,0,0,2356,2357,5,116,0,0,2357,2358,5,116, + 0,0,2358,2359,5,101,0,0,2359,2361,5,100,0,0,2360,2338,1,0,0,0,2360, + 2349,1,0,0,0,2361,222,1,0,0,0,2362,2363,5,78,0,0,2363,2364,5,69, + 0,0,2364,2365,5,88,0,0,2365,2366,5,84,0,0,2366,2367,5,82,0,0,2367, + 2368,5,69,0,0,2368,2377,5,67,0,0,2369,2370,5,110,0,0,2370,2371,5, + 101,0,0,2371,2372,5,120,0,0,2372,2373,5,116,0,0,2373,2374,5,114, + 0,0,2374,2375,5,101,0,0,2375,2377,5,99,0,0,2376,2362,1,0,0,0,2376, + 2369,1,0,0,0,2377,224,1,0,0,0,2378,2379,5,73,0,0,2379,2380,5,78, + 0,0,2380,2381,5,81,0,0,2381,2382,5,85,0,0,2382,2383,5,73,0,0,2383, + 2384,5,82,0,0,2384,2393,5,69,0,0,2385,2386,5,105,0,0,2386,2387,5, + 110,0,0,2387,2388,5,113,0,0,2388,2389,5,117,0,0,2389,2390,5,105, + 0,0,2390,2391,5,114,0,0,2391,2393,5,101,0,0,2392,2378,1,0,0,0,2392, + 2385,1,0,0,0,2393,226,1,0,0,0,2394,2395,5,66,0,0,2395,2396,5,65, + 0,0,2396,2397,5,67,0,0,2397,2398,5,75,0,0,2398,2399,5,83,0,0,2399, + 2400,5,80,0,0,2400,2401,5,65,0,0,2401,2402,5,67,0,0,2402,2413,5, + 69,0,0,2403,2404,5,98,0,0,2404,2405,5,97,0,0,2405,2406,5,99,0,0, + 2406,2407,5,107,0,0,2407,2408,5,115,0,0,2408,2409,5,112,0,0,2409, + 2410,5,97,0,0,2410,2411,5,99,0,0,2411,2413,5,101,0,0,2412,2394,1, + 0,0,0,2412,2403,1,0,0,0,2413,228,1,0,0,0,2414,2415,5,69,0,0,2415, + 2416,5,78,0,0,2416,2417,5,68,0,0,2417,2418,5,70,0,0,2418,2419,5, + 73,0,0,2419,2420,5,76,0,0,2420,2429,5,69,0,0,2421,2422,5,101,0,0, + 2422,2423,5,110,0,0,2423,2424,5,100,0,0,2424,2425,5,102,0,0,2425, + 2426,5,105,0,0,2426,2427,5,108,0,0,2427,2429,5,101,0,0,2428,2414, + 1,0,0,0,2428,2421,1,0,0,0,2429,230,1,0,0,0,2430,2431,5,82,0,0,2431, + 2432,5,69,0,0,2432,2433,5,87,0,0,2433,2434,5,73,0,0,2434,2435,5, + 78,0,0,2435,2443,5,68,0,0,2436,2437,5,114,0,0,2437,2438,5,101,0, + 0,2438,2439,5,119,0,0,2439,2440,5,105,0,0,2440,2441,5,110,0,0,2441, + 2443,5,100,0,0,2442,2430,1,0,0,0,2442,2436,1,0,0,0,2443,232,1,0, + 0,0,2444,2445,5,101,0,0,2445,2446,5,110,0,0,2446,2447,5,100,0,0, + 2447,2448,5,98,0,0,2448,2449,5,108,0,0,2449,2450,5,111,0,0,2450, + 2451,5,99,0,0,2451,2452,5,107,0,0,2452,2453,5,100,0,0,2453,2454, + 5,97,0,0,2454,2455,5,116,0,0,2455,2469,5,97,0,0,2456,2457,5,69,0, + 0,2457,2458,5,78,0,0,2458,2459,5,68,0,0,2459,2460,5,66,0,0,2460, + 2461,5,76,0,0,2461,2462,5,79,0,0,2462,2463,5,67,0,0,2463,2464,5, + 75,0,0,2464,2465,5,68,0,0,2465,2466,5,65,0,0,2466,2467,5,84,0,0, + 2467,2469,5,65,0,0,2468,2444,1,0,0,0,2468,2456,1,0,0,0,2469,234, + 1,0,0,0,2470,2471,5,69,0,0,2471,2472,5,78,0,0,2472,2473,5,68,0,0, + 2473,2474,5,66,0,0,2474,2475,5,76,0,0,2475,2476,5,79,0,0,2476,2477, + 5,67,0,0,2477,2487,5,75,0,0,2478,2479,5,101,0,0,2479,2480,5,110, + 0,0,2480,2481,5,100,0,0,2481,2482,5,98,0,0,2482,2483,5,108,0,0,2483, + 2484,5,111,0,0,2484,2485,5,99,0,0,2485,2487,5,107,0,0,2486,2470, + 1,0,0,0,2486,2478,1,0,0,0,2487,236,1,0,0,0,2488,2489,5,13,0,0,2489, + 2492,5,10,0,0,2490,2492,7,1,0,0,2491,2488,1,0,0,0,2491,2490,1,0, + 0,0,2492,238,1,0,0,0,2493,2494,5,75,0,0,2494,2495,5,73,0,0,2495, + 2496,5,78,0,0,2496,2502,5,68,0,0,2497,2498,5,107,0,0,2498,2499,5, + 105,0,0,2499,2500,5,110,0,0,2500,2502,5,100,0,0,2501,2493,1,0,0, + 0,2501,2497,1,0,0,0,2502,240,1,0,0,0,2503,2504,5,76,0,0,2504,2505, + 5,69,0,0,2505,2510,5,78,0,0,2506,2507,5,108,0,0,2507,2508,5,101, + 0,0,2508,2510,5,110,0,0,2509,2503,1,0,0,0,2509,2506,1,0,0,0,2510, + 242,1,0,0,0,2511,2514,7,2,0,0,2512,2514,3,237,118,0,2513,2511,1, + 0,0,0,2513,2512,1,0,0,0,2514,2515,1,0,0,0,2515,2513,1,0,0,0,2515, + 2516,1,0,0,0,2516,2517,1,0,0,0,2517,2518,6,121,0,0,2518,244,1,0, + 0,0,2519,2521,5,9,0,0,2520,2519,1,0,0,0,2521,2524,1,0,0,0,2522,2520, + 1,0,0,0,2522,2523,1,0,0,0,2523,2528,1,0,0,0,2524,2522,1,0,0,0,2525, + 2527,5,32,0,0,2526,2525,1,0,0,0,2527,2530,1,0,0,0,2528,2526,1,0, + 0,0,2528,2529,1,0,0,0,2529,2531,1,0,0,0,2530,2528,1,0,0,0,2531,2535, + 5,33,0,0,2532,2534,8,3,0,0,2533,2532,1,0,0,0,2534,2537,1,0,0,0,2535, + 2533,1,0,0,0,2535,2536,1,0,0,0,2536,2541,1,0,0,0,2537,2535,1,0,0, + 0,2538,2540,7,3,0,0,2539,2538,1,0,0,0,2540,2543,1,0,0,0,2541,2539, + 1,0,0,0,2541,2542,1,0,0,0,2542,2559,1,0,0,0,2543,2541,1,0,0,0,2544, + 2545,4,122,0,0,2545,2549,7,4,0,0,2546,2548,8,3,0,0,2547,2546,1,0, + 0,0,2548,2551,1,0,0,0,2549,2547,1,0,0,0,2549,2550,1,0,0,0,2550,2555, + 1,0,0,0,2551,2549,1,0,0,0,2552,2554,7,3,0,0,2553,2552,1,0,0,0,2554, + 2557,1,0,0,0,2555,2553,1,0,0,0,2555,2556,1,0,0,0,2556,2559,1,0,0, + 0,2557,2555,1,0,0,0,2558,2522,1,0,0,0,2558,2544,1,0,0,0,2559,2560, + 1,0,0,0,2560,2561,6,122,0,0,2561,246,1,0,0,0,2562,2563,5,36,0,0, + 2563,248,1,0,0,0,2564,2565,5,44,0,0,2565,250,1,0,0,0,2566,2567,5, + 40,0,0,2567,252,1,0,0,0,2568,2569,5,37,0,0,2569,254,1,0,0,0,2570, + 2571,5,119,0,0,2571,2572,5,104,0,0,2572,2573,5,105,0,0,2573,2574, + 5,108,0,0,2574,2581,5,101,0,0,2575,2576,5,87,0,0,2576,2577,5,72, + 0,0,2577,2578,5,73,0,0,2578,2579,5,76,0,0,2579,2581,5,69,0,0,2580, + 2570,1,0,0,0,2580,2575,1,0,0,0,2581,256,1,0,0,0,2582,2583,5,65,0, + 0,2583,2584,5,76,0,0,2584,2585,5,76,0,0,2585,2586,5,79,0,0,2586, + 2587,5,67,0,0,2587,2588,5,65,0,0,2588,2589,5,84,0,0,2589,2599,5, + 69,0,0,2590,2591,5,97,0,0,2591,2592,5,108,0,0,2592,2593,5,108,0, + 0,2593,2594,5,111,0,0,2594,2595,5,99,0,0,2595,2596,5,97,0,0,2596, + 2597,5,116,0,0,2597,2599,5,101,0,0,2598,2582,1,0,0,0,2598,2590,1, + 0,0,0,2599,258,1,0,0,0,2600,2601,5,83,0,0,2601,2602,5,84,0,0,2602, + 2603,5,65,0,0,2603,2609,5,84,0,0,2604,2605,5,115,0,0,2605,2606,5, + 116,0,0,2606,2607,5,97,0,0,2607,2609,5,116,0,0,2608,2600,1,0,0,0, + 2608,2604,1,0,0,0,2609,260,1,0,0,0,2610,2611,5,41,0,0,2611,262,1, + 0,0,0,2612,2613,5,58,0,0,2613,264,1,0,0,0,2614,2615,5,61,0,0,2615, + 266,1,0,0,0,2616,2617,5,45,0,0,2617,268,1,0,0,0,2618,2619,5,43,0, + 0,2619,270,1,0,0,0,2620,2621,5,47,0,0,2621,272,1,0,0,0,2622,2623, + 5,42,0,0,2623,274,1,0,0,0,2624,2625,7,5,0,0,2625,276,1,0,0,0,2626, + 2627,5,42,0,0,2627,2628,5,42,0,0,2628,278,1,0,0,0,2629,2630,5,46, + 0,0,2630,2631,5,110,0,0,2631,2632,5,111,0,0,2632,2633,5,116,0,0, + 2633,2640,5,46,0,0,2634,2635,5,46,0,0,2635,2636,5,78,0,0,2636,2637, + 5,79,0,0,2637,2638,5,84,0,0,2638,2640,5,46,0,0,2639,2629,1,0,0,0, + 2639,2634,1,0,0,0,2640,280,1,0,0,0,2641,2642,5,46,0,0,2642,2643, + 5,97,0,0,2643,2644,5,110,0,0,2644,2645,5,100,0,0,2645,2652,5,46, + 0,0,2646,2647,5,46,0,0,2647,2648,5,65,0,0,2648,2649,5,78,0,0,2649, + 2650,5,68,0,0,2650,2652,5,46,0,0,2651,2641,1,0,0,0,2651,2646,1,0, + 0,0,2652,282,1,0,0,0,2653,2654,5,46,0,0,2654,2655,5,111,0,0,2655, + 2656,5,114,0,0,2656,2662,5,46,0,0,2657,2658,5,46,0,0,2658,2659,5, + 79,0,0,2659,2660,5,82,0,0,2660,2662,5,46,0,0,2661,2653,1,0,0,0,2661, + 2657,1,0,0,0,2662,284,1,0,0,0,2663,2664,5,46,0,0,2664,2665,5,101, + 0,0,2665,2666,5,113,0,0,2666,2667,5,118,0,0,2667,2674,5,46,0,0,2668, + 2669,5,46,0,0,2669,2670,5,69,0,0,2670,2671,5,81,0,0,2671,2672,5, + 86,0,0,2672,2674,5,46,0,0,2673,2663,1,0,0,0,2673,2668,1,0,0,0,2674, + 286,1,0,0,0,2675,2676,5,46,0,0,2676,2677,5,110,0,0,2677,2678,5,101, + 0,0,2678,2679,5,113,0,0,2679,2680,5,118,0,0,2680,2688,5,46,0,0,2681, + 2682,5,46,0,0,2682,2683,5,78,0,0,2683,2684,5,69,0,0,2684,2685,5, + 81,0,0,2685,2686,5,86,0,0,2686,2688,5,46,0,0,2687,2675,1,0,0,0,2687, + 2681,1,0,0,0,2688,288,1,0,0,0,2689,2690,5,46,0,0,2690,2691,5,120, + 0,0,2691,2692,5,111,0,0,2692,2693,5,114,0,0,2693,2700,5,46,0,0,2694, + 2695,5,46,0,0,2695,2696,5,88,0,0,2696,2697,5,79,0,0,2697,2698,5, + 82,0,0,2698,2700,5,46,0,0,2699,2689,1,0,0,0,2699,2694,1,0,0,0,2700, + 290,1,0,0,0,2701,2702,5,46,0,0,2702,2703,5,101,0,0,2703,2704,5,111, + 0,0,2704,2705,5,114,0,0,2705,2712,5,46,0,0,2706,2707,5,46,0,0,2707, + 2708,5,69,0,0,2708,2709,5,79,0,0,2709,2710,5,82,0,0,2710,2712,5, + 46,0,0,2711,2701,1,0,0,0,2711,2706,1,0,0,0,2712,292,1,0,0,0,2713, + 2714,5,46,0,0,2714,2715,5,108,0,0,2715,2716,5,116,0,0,2716,2722, + 5,46,0,0,2717,2718,5,46,0,0,2718,2719,5,76,0,0,2719,2720,5,84,0, + 0,2720,2722,5,46,0,0,2721,2713,1,0,0,0,2721,2717,1,0,0,0,2722,294, + 1,0,0,0,2723,2724,5,46,0,0,2724,2725,5,108,0,0,2725,2726,5,101,0, + 0,2726,2732,5,46,0,0,2727,2728,5,46,0,0,2728,2729,5,76,0,0,2729, + 2730,5,69,0,0,2730,2732,5,46,0,0,2731,2723,1,0,0,0,2731,2727,1,0, + 0,0,2732,296,1,0,0,0,2733,2734,5,46,0,0,2734,2735,5,103,0,0,2735, + 2736,5,116,0,0,2736,2742,5,46,0,0,2737,2738,5,46,0,0,2738,2739,5, + 71,0,0,2739,2740,5,84,0,0,2740,2742,5,46,0,0,2741,2733,1,0,0,0,2741, + 2737,1,0,0,0,2742,298,1,0,0,0,2743,2744,5,46,0,0,2744,2745,5,103, + 0,0,2745,2746,5,101,0,0,2746,2752,5,46,0,0,2747,2748,5,46,0,0,2748, + 2749,5,71,0,0,2749,2750,5,69,0,0,2750,2752,5,46,0,0,2751,2743,1, + 0,0,0,2751,2747,1,0,0,0,2752,300,1,0,0,0,2753,2754,5,46,0,0,2754, + 2755,5,110,0,0,2755,2756,5,101,0,0,2756,2762,5,46,0,0,2757,2758, + 5,46,0,0,2758,2759,5,78,0,0,2759,2760,5,69,0,0,2760,2762,5,46,0, + 0,2761,2753,1,0,0,0,2761,2757,1,0,0,0,2762,302,1,0,0,0,2763,2764, + 5,46,0,0,2764,2765,5,101,0,0,2765,2766,5,113,0,0,2766,2772,5,46, + 0,0,2767,2768,5,46,0,0,2768,2769,5,69,0,0,2769,2770,5,81,0,0,2770, + 2772,5,46,0,0,2771,2763,1,0,0,0,2771,2767,1,0,0,0,2772,304,1,0,0, + 0,2773,2774,5,46,0,0,2774,2775,5,116,0,0,2775,2776,5,114,0,0,2776, + 2777,5,117,0,0,2777,2778,5,101,0,0,2778,2786,5,46,0,0,2779,2780, + 5,46,0,0,2780,2781,5,84,0,0,2781,2782,5,82,0,0,2782,2783,5,85,0, + 0,2783,2784,5,69,0,0,2784,2786,5,46,0,0,2785,2773,1,0,0,0,2785,2779, + 1,0,0,0,2786,306,1,0,0,0,2787,2788,5,46,0,0,2788,2789,5,102,0,0, + 2789,2790,5,97,0,0,2790,2791,5,108,0,0,2791,2792,5,115,0,0,2792, + 2793,5,101,0,0,2793,2802,5,46,0,0,2794,2795,5,46,0,0,2795,2796,5, + 70,0,0,2796,2797,5,65,0,0,2797,2798,5,76,0,0,2798,2799,5,83,0,0, + 2799,2800,5,69,0,0,2800,2802,5,46,0,0,2801,2787,1,0,0,0,2801,2794, + 1,0,0,0,2802,308,1,0,0,0,2803,2805,3,419,209,0,2804,2803,1,0,0,0, + 2805,2806,1,0,0,0,2806,2804,1,0,0,0,2806,2807,1,0,0,0,2807,2808, + 1,0,0,0,2808,2809,7,6,0,0,2809,310,1,0,0,0,2810,2812,7,7,0,0,2811, + 2810,1,0,0,0,2811,2812,1,0,0,0,2812,2814,1,0,0,0,2813,2815,3,419, + 209,0,2814,2813,1,0,0,0,2815,2816,1,0,0,0,2816,2814,1,0,0,0,2816, + 2817,1,0,0,0,2817,2818,1,0,0,0,2818,2819,7,8,0,0,2819,312,1,0,0, + 0,2820,2825,7,9,0,0,2821,2822,7,10,0,0,2822,2825,7,11,0,0,2823,2825, + 7,12,0,0,2824,2820,1,0,0,0,2824,2821,1,0,0,0,2824,2823,1,0,0,0,2825, + 2832,1,0,0,0,2826,2828,3,419,209,0,2827,2826,1,0,0,0,2828,2829,1, + 0,0,0,2829,2827,1,0,0,0,2829,2830,1,0,0,0,2830,2833,1,0,0,0,2831, + 2833,5,42,0,0,2832,2827,1,0,0,0,2832,2831,1,0,0,0,2833,2834,1,0, + 0,0,2834,2836,5,46,0,0,2835,2837,3,419,209,0,2836,2835,1,0,0,0,2837, + 2838,1,0,0,0,2838,2836,1,0,0,0,2838,2839,1,0,0,0,2839,2846,1,0,0, + 0,2840,2842,7,13,0,0,2841,2843,3,419,209,0,2842,2841,1,0,0,0,2843, + 2844,1,0,0,0,2844,2842,1,0,0,0,2844,2845,1,0,0,0,2845,2847,1,0,0, + 0,2846,2840,1,0,0,0,2846,2847,1,0,0,0,2847,314,1,0,0,0,2848,2849, + 5,67,0,0,2849,2850,5,67,0,0,2850,2851,5,79,0,0,2851,2852,5,78,0, + 0,2852,316,1,0,0,0,2853,2854,5,72,0,0,2854,2855,5,79,0,0,2855,2856, + 5,76,0,0,2856,2857,5,76,0,0,2857,2858,5,69,0,0,2858,2859,5,82,0, + 0,2859,2860,5,73,0,0,2860,2861,5,84,0,0,2861,2862,5,72,0,0,2862, + 318,1,0,0,0,2863,2864,5,67,0,0,2864,2865,5,79,0,0,2865,2866,5,78, + 0,0,2866,2867,5,67,0,0,2867,2868,5,65,0,0,2868,2869,5,84,0,0,2869, + 2870,5,79,0,0,2870,2871,5,80,0,0,2871,320,1,0,0,0,2872,2873,5,67, + 0,0,2873,2874,5,84,0,0,2874,2875,5,82,0,0,2875,2876,5,76,0,0,2876, + 2877,5,68,0,0,2877,2878,5,73,0,0,2878,2879,5,82,0,0,2879,2880,5, + 69,0,0,2880,2881,5,67,0,0,2881,2882,5,84,0,0,2882,322,1,0,0,0,2883, + 2884,5,67,0,0,2884,2885,5,84,0,0,2885,2886,5,82,0,0,2886,2887,5, + 76,0,0,2887,2888,5,82,0,0,2888,2889,5,69,0,0,2889,2890,5,67,0,0, + 2890,324,1,0,0,0,2891,2892,5,84,0,0,2892,2893,5,79,0,0,2893,326, + 1,0,0,0,2894,2895,5,83,0,0,2895,2896,5,85,0,0,2896,2897,5,66,0,0, + 2897,2898,5,80,0,0,2898,2899,5,82,0,0,2899,2900,5,79,0,0,2900,2901, + 5,71,0,0,2901,2902,5,82,0,0,2902,2903,5,65,0,0,2903,2904,5,77,0, + 0,2904,2905,5,66,0,0,2905,2906,5,76,0,0,2906,2907,5,79,0,0,2907, + 2908,5,67,0,0,2908,2909,5,75,0,0,2909,328,1,0,0,0,2910,2911,5,68, + 0,0,2911,2912,5,79,0,0,2912,2913,5,66,0,0,2913,2914,5,76,0,0,2914, + 2915,5,79,0,0,2915,2916,5,67,0,0,2916,2917,5,75,0,0,2917,330,1,0, + 0,0,2918,2919,5,65,0,0,2919,2920,5,73,0,0,2920,2921,5,70,0,0,2921, + 332,1,0,0,0,2922,2923,5,84,0,0,2923,2924,5,72,0,0,2924,2925,5,69, + 0,0,2925,2926,5,78,0,0,2926,2927,5,66,0,0,2927,2928,5,76,0,0,2928, + 2929,5,79,0,0,2929,2930,5,67,0,0,2930,2931,5,75,0,0,2931,334,1,0, + 0,0,2932,2933,5,69,0,0,2933,2934,5,76,0,0,2934,2935,5,83,0,0,2935, + 2936,5,69,0,0,2936,2937,5,66,0,0,2937,2938,5,76,0,0,2938,2939,5, + 79,0,0,2939,2940,5,67,0,0,2940,2941,5,75,0,0,2941,336,1,0,0,0,2942, + 2943,5,67,0,0,2943,2944,5,79,0,0,2944,2945,5,68,0,0,2945,2946,5, + 69,0,0,2946,2947,5,82,0,0,2947,2948,5,79,0,0,2948,2949,5,79,0,0, + 2949,2950,5,84,0,0,2950,338,1,0,0,0,2951,2952,5,67,0,0,2952,2953, + 5,79,0,0,2953,2954,5,77,0,0,2954,2955,5,80,0,0,2955,2956,5,76,0, + 0,2956,2957,5,69,0,0,2957,2966,5,88,0,0,2958,2959,5,99,0,0,2959, + 2960,5,111,0,0,2960,2961,5,109,0,0,2961,2962,5,112,0,0,2962,2963, + 5,108,0,0,2963,2964,5,101,0,0,2964,2966,5,120,0,0,2965,2951,1,0, + 0,0,2965,2958,1,0,0,0,2966,340,1,0,0,0,2967,2968,5,80,0,0,2968,2969, + 5,82,0,0,2969,2970,5,69,0,0,2970,2971,5,67,0,0,2971,2972,5,73,0, + 0,2972,2973,5,83,0,0,2973,2974,5,73,0,0,2974,2975,5,79,0,0,2975, + 2986,5,78,0,0,2976,2977,5,112,0,0,2977,2978,5,114,0,0,2978,2979, + 5,101,0,0,2979,2980,5,99,0,0,2980,2981,5,105,0,0,2981,2982,5,115, + 0,0,2982,2983,5,105,0,0,2983,2984,5,111,0,0,2984,2986,5,110,0,0, + 2985,2967,1,0,0,0,2985,2976,1,0,0,0,2986,342,1,0,0,0,2987,2988,5, + 73,0,0,2988,2989,5,78,0,0,2989,2990,5,84,0,0,2990,2991,5,69,0,0, + 2991,2992,5,71,0,0,2992,2993,5,69,0,0,2993,3009,5,82,0,0,2994,2995, + 5,105,0,0,2995,2996,5,110,0,0,2996,2997,5,116,0,0,2997,2998,5,101, + 0,0,2998,2999,5,103,0,0,2999,3000,5,101,0,0,3000,3009,5,114,0,0, + 3001,3002,5,73,0,0,3002,3003,5,110,0,0,3003,3004,5,116,0,0,3004, + 3005,5,101,0,0,3005,3006,5,103,0,0,3006,3007,5,101,0,0,3007,3009, + 5,114,0,0,3008,2987,1,0,0,0,3008,2994,1,0,0,0,3008,3001,1,0,0,0, + 3009,344,1,0,0,0,3010,3011,5,76,0,0,3011,3012,5,79,0,0,3012,3013, + 5,71,0,0,3013,3014,5,73,0,0,3014,3015,5,67,0,0,3015,3016,5,65,0, + 0,3016,3032,5,76,0,0,3017,3018,5,108,0,0,3018,3019,5,111,0,0,3019, + 3020,5,103,0,0,3020,3021,5,105,0,0,3021,3022,5,99,0,0,3022,3023, + 5,97,0,0,3023,3032,5,108,0,0,3024,3025,5,76,0,0,3025,3026,5,111, + 0,0,3026,3027,5,103,0,0,3027,3028,5,105,0,0,3028,3029,5,99,0,0,3029, + 3030,5,97,0,0,3030,3032,5,108,0,0,3031,3010,1,0,0,0,3031,3017,1, + 0,0,0,3031,3024,1,0,0,0,3032,346,1,0,0,0,3033,3034,5,95,0,0,3034, + 348,1,0,0,0,3035,3036,3,347,173,0,3036,350,1,0,0,0,3037,3038,5,40, + 0,0,3038,3039,5,47,0,0,3039,352,1,0,0,0,3040,3041,5,46,0,0,3041, + 354,1,0,0,0,3042,3043,5,47,0,0,3043,3044,5,41,0,0,3044,356,1,0,0, + 0,3045,3046,7,14,0,0,3046,3048,5,39,0,0,3047,3049,7,15,0,0,3048, + 3047,1,0,0,0,3049,3050,1,0,0,0,3050,3048,1,0,0,0,3050,3051,1,0,0, + 0,3051,3052,1,0,0,0,3052,3062,5,39,0,0,3053,3054,7,14,0,0,3054,3056, + 5,34,0,0,3055,3057,7,15,0,0,3056,3055,1,0,0,0,3057,3058,1,0,0,0, + 3058,3056,1,0,0,0,3058,3059,1,0,0,0,3059,3060,1,0,0,0,3060,3062, + 5,34,0,0,3061,3045,1,0,0,0,3061,3053,1,0,0,0,3062,358,1,0,0,0,3063, + 3064,7,16,0,0,3064,3066,5,39,0,0,3065,3067,7,17,0,0,3066,3065,1, + 0,0,0,3067,3068,1,0,0,0,3068,3066,1,0,0,0,3068,3069,1,0,0,0,3069, + 3070,1,0,0,0,3070,3080,5,39,0,0,3071,3072,7,16,0,0,3072,3074,5,34, + 0,0,3073,3075,7,17,0,0,3074,3073,1,0,0,0,3075,3076,1,0,0,0,3076, + 3074,1,0,0,0,3076,3077,1,0,0,0,3077,3078,1,0,0,0,3078,3080,5,34, + 0,0,3079,3063,1,0,0,0,3079,3071,1,0,0,0,3080,360,1,0,0,0,3081,3082, + 7,18,0,0,3082,3084,5,34,0,0,3083,3085,7,19,0,0,3084,3083,1,0,0,0, + 3085,3086,1,0,0,0,3086,3084,1,0,0,0,3086,3087,1,0,0,0,3087,3088, + 1,0,0,0,3088,3098,5,34,0,0,3089,3090,7,18,0,0,3090,3092,5,39,0,0, + 3091,3093,7,19,0,0,3092,3091,1,0,0,0,3093,3094,1,0,0,0,3094,3092, + 1,0,0,0,3094,3095,1,0,0,0,3095,3096,1,0,0,0,3096,3098,5,39,0,0,3097, + 3081,1,0,0,0,3097,3089,1,0,0,0,3098,362,1,0,0,0,3099,3135,5,39,0, + 0,3100,3101,5,39,0,0,3101,3134,5,39,0,0,3102,3134,8,20,0,0,3103, + 3109,5,10,0,0,3104,3106,5,13,0,0,3105,3107,5,10,0,0,3106,3105,1, + 0,0,0,3106,3107,1,0,0,0,3107,3109,1,0,0,0,3108,3103,1,0,0,0,3108, + 3104,1,0,0,0,3109,3110,1,0,0,0,3110,3111,5,32,0,0,3111,3112,5,32, + 0,0,3112,3113,5,32,0,0,3113,3114,5,32,0,0,3114,3115,5,32,0,0,3115, + 3116,1,0,0,0,3116,3117,3,405,202,0,3117,3123,1,0,0,0,3118,3124,5, + 10,0,0,3119,3121,5,13,0,0,3120,3122,5,10,0,0,3121,3120,1,0,0,0,3121, + 3122,1,0,0,0,3122,3124,1,0,0,0,3123,3118,1,0,0,0,3123,3119,1,0,0, + 0,3124,3125,1,0,0,0,3125,3126,5,32,0,0,3126,3127,5,32,0,0,3127,3128, + 5,32,0,0,3128,3129,5,32,0,0,3129,3130,5,32,0,0,3130,3131,1,0,0,0, + 3131,3132,3,405,202,0,3132,3134,1,0,0,0,3133,3100,1,0,0,0,3133,3102, + 1,0,0,0,3133,3108,1,0,0,0,3134,3137,1,0,0,0,3135,3133,1,0,0,0,3135, + 3136,1,0,0,0,3136,3138,1,0,0,0,3137,3135,1,0,0,0,3138,3160,5,39, + 0,0,3139,3145,5,39,0,0,3140,3144,8,21,0,0,3141,3142,5,39,0,0,3142, + 3144,5,39,0,0,3143,3140,1,0,0,0,3143,3141,1,0,0,0,3144,3147,1,0, + 0,0,3145,3143,1,0,0,0,3145,3146,1,0,0,0,3146,3148,1,0,0,0,3147,3145, + 1,0,0,0,3148,3160,5,39,0,0,3149,3155,5,34,0,0,3150,3154,8,22,0,0, + 3151,3152,5,34,0,0,3152,3154,5,34,0,0,3153,3150,1,0,0,0,3153,3151, + 1,0,0,0,3154,3157,1,0,0,0,3155,3153,1,0,0,0,3155,3156,1,0,0,0,3156, + 3158,1,0,0,0,3157,3155,1,0,0,0,3158,3160,5,34,0,0,3159,3099,1,0, + 0,0,3159,3139,1,0,0,0,3159,3149,1,0,0,0,3160,364,1,0,0,0,3161,3163, + 3,419,209,0,3162,3161,1,0,0,0,3163,3164,1,0,0,0,3164,3162,1,0,0, + 0,3164,3165,1,0,0,0,3165,3166,1,0,0,0,3166,3170,5,46,0,0,3167,3169, + 3,419,209,0,3168,3167,1,0,0,0,3169,3172,1,0,0,0,3170,3168,1,0,0, + 0,3170,3171,1,0,0,0,3171,3174,1,0,0,0,3172,3170,1,0,0,0,3173,3175, + 3,415,207,0,3174,3173,1,0,0,0,3174,3175,1,0,0,0,3175,3199,1,0,0, + 0,3176,3178,3,419,209,0,3177,3176,1,0,0,0,3178,3181,1,0,0,0,3179, + 3177,1,0,0,0,3179,3180,1,0,0,0,3180,3182,1,0,0,0,3181,3179,1,0,0, + 0,3182,3184,5,46,0,0,3183,3185,3,419,209,0,3184,3183,1,0,0,0,3185, + 3186,1,0,0,0,3186,3184,1,0,0,0,3186,3187,1,0,0,0,3187,3189,1,0,0, + 0,3188,3190,3,415,207,0,3189,3188,1,0,0,0,3189,3190,1,0,0,0,3190, + 3199,1,0,0,0,3191,3193,3,419,209,0,3192,3191,1,0,0,0,3193,3194,1, + 0,0,0,3194,3192,1,0,0,0,3194,3195,1,0,0,0,3195,3196,1,0,0,0,3196, + 3197,3,415,207,0,3197,3199,1,0,0,0,3198,3162,1,0,0,0,3198,3179,1, + 0,0,0,3198,3192,1,0,0,0,3199,366,1,0,0,0,3200,3201,5,68,0,0,3201, + 3202,5,69,0,0,3202,3203,5,65,0,0,3203,3204,5,76,0,0,3204,3205,5, + 76,0,0,3205,3206,5,79,0,0,3206,3207,5,67,0,0,3207,3208,5,65,0,0, + 3208,3209,5,84,0,0,3209,3221,5,69,0,0,3210,3211,5,100,0,0,3211,3212, + 5,101,0,0,3212,3213,5,97,0,0,3213,3214,5,108,0,0,3214,3215,5,108, + 0,0,3215,3216,5,111,0,0,3216,3217,5,99,0,0,3217,3218,5,97,0,0,3218, + 3219,5,116,0,0,3219,3221,5,101,0,0,3220,3200,1,0,0,0,3220,3210,1, + 0,0,0,3221,368,1,0,0,0,3222,3223,5,78,0,0,3223,3224,5,85,0,0,3224, + 3225,5,76,0,0,3225,3226,5,76,0,0,3226,3227,5,73,0,0,3227,3228,5, + 70,0,0,3228,3237,5,89,0,0,3229,3230,5,110,0,0,3230,3231,5,117,0, + 0,3231,3232,5,108,0,0,3232,3233,5,108,0,0,3233,3234,5,105,0,0,3234, + 3235,5,102,0,0,3235,3237,5,121,0,0,3236,3222,1,0,0,0,3236,3229,1, + 0,0,0,3237,370,1,0,0,0,3238,3239,5,67,0,0,3239,3240,5,89,0,0,3240, + 3241,5,67,0,0,3241,3242,5,76,0,0,3242,3249,5,69,0,0,3243,3244,5, + 99,0,0,3244,3245,5,121,0,0,3245,3246,5,99,0,0,3246,3247,5,108,0, + 0,3247,3249,5,101,0,0,3248,3238,1,0,0,0,3248,3243,1,0,0,0,3249,372, + 1,0,0,0,3250,3251,5,69,0,0,3251,3252,5,78,0,0,3252,3253,5,68,0,0, + 3253,3254,5,84,0,0,3254,3255,5,89,0,0,3255,3256,5,80,0,0,3256,3279, + 5,69,0,0,3257,3258,5,101,0,0,3258,3259,5,110,0,0,3259,3260,5,100, + 0,0,3260,3261,5,116,0,0,3261,3262,5,121,0,0,3262,3263,5,112,0,0, + 3263,3279,5,101,0,0,3264,3265,5,69,0,0,3265,3266,5,110,0,0,3266, + 3267,5,100,0,0,3267,3268,5,116,0,0,3268,3269,5,121,0,0,3269,3270, + 5,112,0,0,3270,3279,5,101,0,0,3271,3272,5,69,0,0,3272,3273,5,110, + 0,0,3273,3274,5,100,0,0,3274,3275,5,84,0,0,3275,3276,5,121,0,0,3276, + 3277,5,112,0,0,3277,3279,5,101,0,0,3278,3250,1,0,0,0,3278,3257,1, + 0,0,0,3278,3264,1,0,0,0,3278,3271,1,0,0,0,3279,374,1,0,0,0,3280, + 3281,5,73,0,0,3281,3282,5,78,0,0,3282,3283,5,84,0,0,3283,3284,5, + 69,0,0,3284,3285,5,82,0,0,3285,3286,5,70,0,0,3286,3287,5,65,0,0, + 3287,3288,5,67,0,0,3288,3308,5,69,0,0,3289,3290,5,105,0,0,3290,3291, + 5,110,0,0,3291,3292,5,116,0,0,3292,3293,5,101,0,0,3293,3294,5,114, + 0,0,3294,3295,5,102,0,0,3295,3296,5,97,0,0,3296,3297,5,99,0,0,3297, + 3308,5,101,0,0,3298,3299,5,73,0,0,3299,3300,5,110,0,0,3300,3301, + 5,116,0,0,3301,3302,5,101,0,0,3302,3303,5,114,0,0,3303,3304,5,102, + 0,0,3304,3305,5,97,0,0,3305,3306,5,99,0,0,3306,3308,5,101,0,0,3307, + 3280,1,0,0,0,3307,3289,1,0,0,0,3307,3298,1,0,0,0,3308,376,1,0,0, + 0,3309,3310,5,83,0,0,3310,3311,5,80,0,0,3311,3312,5,79,0,0,3312, + 3313,5,70,0,0,3313,3314,5,70,0,0,3314,378,1,0,0,0,3315,3316,5,83, + 0,0,3316,3317,5,80,0,0,3317,3318,5,79,0,0,3318,3319,5,78,0,0,3319, + 380,1,0,0,0,3320,3322,3,419,209,0,3321,3320,1,0,0,0,3322,3323,1, + 0,0,0,3323,3321,1,0,0,0,3323,3324,1,0,0,0,3324,382,1,0,0,0,3325, + 3326,5,116,0,0,3326,3327,5,121,0,0,3327,3328,5,112,0,0,3328,3338, + 5,101,0,0,3329,3330,5,84,0,0,3330,3331,5,89,0,0,3331,3332,5,80,0, + 0,3332,3338,5,69,0,0,3333,3334,5,84,0,0,3334,3335,5,121,0,0,3335, + 3336,5,112,0,0,3336,3338,5,101,0,0,3337,3325,1,0,0,0,3337,3329,1, + 0,0,0,3337,3333,1,0,0,0,3338,384,1,0,0,0,3339,3343,3,393,196,0,3340, + 3342,3,391,195,0,3341,3340,1,0,0,0,3342,3345,1,0,0,0,3343,3341,1, + 0,0,0,3343,3344,1,0,0,0,3344,386,1,0,0,0,3345,3343,1,0,0,0,3346, + 3347,5,69,0,0,3347,3348,5,88,0,0,3348,3349,5,73,0,0,3349,3355,5, + 84,0,0,3350,3351,5,101,0,0,3351,3352,5,120,0,0,3352,3353,5,105,0, + 0,3353,3355,5,116,0,0,3354,3346,1,0,0,0,3354,3350,1,0,0,0,3355,388, + 1,0,0,0,3356,3357,5,66,0,0,3357,3358,5,76,0,0,3358,3359,5,65,0,0, + 3359,3360,5,78,0,0,3360,3367,5,75,0,0,3361,3362,5,98,0,0,3362,3363, + 5,108,0,0,3363,3364,5,97,0,0,3364,3365,5,110,0,0,3365,3367,5,107, + 0,0,3366,3356,1,0,0,0,3366,3361,1,0,0,0,3367,390,1,0,0,0,3368,3372, + 3,393,196,0,3369,3372,3,419,209,0,3370,3372,3,347,173,0,3371,3368, + 1,0,0,0,3371,3369,1,0,0,0,3371,3370,1,0,0,0,3372,392,1,0,0,0,3373, + 3374,7,23,0,0,3374,394,1,0,0,0,3375,3376,3,273,136,0,3376,396,1, + 0,0,0,3377,3381,5,34,0,0,3378,3380,8,24,0,0,3379,3378,1,0,0,0,3380, + 3383,1,0,0,0,3381,3379,1,0,0,0,3381,3382,1,0,0,0,3382,3384,1,0,0, + 0,3383,3381,1,0,0,0,3384,3385,5,34,0,0,3385,398,1,0,0,0,3386,3388, + 7,3,0,0,3387,3386,1,0,0,0,3388,3389,1,0,0,0,3389,3387,1,0,0,0,3389, + 3390,1,0,0,0,3390,400,1,0,0,0,3391,3393,7,2,0,0,3392,3391,1,0,0, + 0,3393,3394,1,0,0,0,3394,3392,1,0,0,0,3394,3395,1,0,0,0,3395,402, + 1,0,0,0,3396,3398,5,38,0,0,3397,3399,3,401,200,0,3398,3397,1,0,0, + 0,3398,3399,1,0,0,0,3399,3401,1,0,0,0,3400,3402,3,245,122,0,3401, + 3400,1,0,0,0,3401,3402,1,0,0,0,3402,3403,1,0,0,0,3403,3417,3,237, + 118,0,3404,3406,3,401,200,0,3405,3404,1,0,0,0,3406,3409,1,0,0,0, + 3407,3405,1,0,0,0,3407,3408,1,0,0,0,3408,3413,1,0,0,0,3409,3407, + 1,0,0,0,3410,3412,7,2,0,0,3411,3410,1,0,0,0,3412,3415,1,0,0,0,3413, + 3411,1,0,0,0,3413,3414,1,0,0,0,3414,3416,1,0,0,0,3415,3413,1,0,0, + 0,3416,3418,5,38,0,0,3417,3407,1,0,0,0,3417,3418,1,0,0,0,3418,3441, + 1,0,0,0,3419,3421,3,401,200,0,3420,3419,1,0,0,0,3420,3421,1,0,0, + 0,3421,3423,1,0,0,0,3422,3424,3,245,122,0,3423,3422,1,0,0,0,3423, + 3424,1,0,0,0,3424,3425,1,0,0,0,3425,3429,3,237,118,0,3426,3428,3, + 401,200,0,3427,3426,1,0,0,0,3428,3431,1,0,0,0,3429,3427,1,0,0,0, + 3429,3430,1,0,0,0,3430,3435,1,0,0,0,3431,3429,1,0,0,0,3432,3434, + 7,2,0,0,3433,3432,1,0,0,0,3434,3437,1,0,0,0,3435,3433,1,0,0,0,3435, + 3436,1,0,0,0,3436,3438,1,0,0,0,3437,3435,1,0,0,0,3438,3439,5,38, + 0,0,3439,3441,1,0,0,0,3440,3396,1,0,0,0,3440,3420,1,0,0,0,3441,3442, + 1,0,0,0,3442,3443,6,201,0,0,3443,404,1,0,0,0,3444,3445,8,25,0,0, + 3445,406,1,0,0,0,3446,3449,3,417,208,0,3447,3449,3,419,209,0,3448, + 3446,1,0,0,0,3448,3447,1,0,0,0,3449,408,1,0,0,0,3450,3453,3,419, + 209,0,3451,3453,2,97,102,0,3452,3450,1,0,0,0,3452,3451,1,0,0,0,3453, + 410,1,0,0,0,3454,3455,7,7,0,0,3455,412,1,0,0,0,3456,3458,7,26,0, + 0,3457,3459,3,419,209,0,3458,3457,1,0,0,0,3459,3460,1,0,0,0,3460, + 3458,1,0,0,0,3460,3461,1,0,0,0,3461,3462,1,0,0,0,3462,3464,5,46, + 0,0,3463,3465,3,419,209,0,3464,3463,1,0,0,0,3465,3466,1,0,0,0,3466, + 3464,1,0,0,0,3466,3467,1,0,0,0,3467,3489,1,0,0,0,3468,3470,7,27, + 0,0,3469,3471,3,419,209,0,3470,3469,1,0,0,0,3471,3472,1,0,0,0,3472, + 3470,1,0,0,0,3472,3473,1,0,0,0,3473,3474,1,0,0,0,3474,3476,5,46, + 0,0,3475,3477,3,419,209,0,3476,3475,1,0,0,0,3477,3478,1,0,0,0,3478, + 3476,1,0,0,0,3478,3479,1,0,0,0,3479,3486,1,0,0,0,3480,3482,5,101, + 0,0,3481,3483,3,419,209,0,3482,3481,1,0,0,0,3483,3484,1,0,0,0,3484, + 3482,1,0,0,0,3484,3485,1,0,0,0,3485,3487,1,0,0,0,3486,3480,1,0,0, + 0,3486,3487,1,0,0,0,3487,3489,1,0,0,0,3488,3456,1,0,0,0,3488,3468, + 1,0,0,0,3489,414,1,0,0,0,3490,3492,7,28,0,0,3491,3493,3,411,205, + 0,3492,3491,1,0,0,0,3492,3493,1,0,0,0,3493,3495,1,0,0,0,3494,3496, + 3,419,209,0,3495,3494,1,0,0,0,3496,3497,1,0,0,0,3497,3495,1,0,0, + 0,3497,3498,1,0,0,0,3498,416,1,0,0,0,3499,3501,7,23,0,0,3500,3499, + 1,0,0,0,3501,418,1,0,0,0,3502,3503,2,48,57,0,3503,420,1,0,0,0,223, + 0,448,474,494,523,546,563,589,606,638,677,706,717,746,766,801,827, + 845,865,873,884,901,927,938,952,987,994,1009,1073,1096,1116,1145, + 1159,1194,1223,1246,1269,1297,1317,1321,1347,1361,1390,1419,1445, + 1474,1488,1502,1510,1524,1532,1542,1552,1564,1578,1598,1606,1629, + 1655,1681,1698,1718,1740,1754,1768,1791,1811,1825,1836,1848,1860, + 1872,1882,1894,1904,1912,1922,1930,1944,1956,1974,1994,2002,2012, + 2028,2036,2050,2064,2072,2082,2102,2114,2128,2144,2166,2178,2188, + 2202,2216,2234,2244,2254,2266,2280,2294,2306,2316,2336,2360,2376, + 2392,2412,2428,2442,2468,2486,2491,2501,2509,2513,2515,2522,2528, + 2535,2541,2549,2555,2558,2580,2598,2608,2639,2651,2661,2673,2687, + 2699,2711,2721,2731,2741,2751,2761,2771,2785,2801,2806,2811,2816, + 2824,2829,2832,2838,2844,2846,2965,2985,3008,3031,3050,3058,3061, + 3068,3076,3079,3086,3094,3097,3106,3108,3121,3123,3133,3135,3143, + 3145,3153,3155,3159,3164,3170,3174,3179,3186,3189,3194,3198,3220, + 3236,3248,3278,3307,3323,3337,3343,3354,3366,3371,3381,3389,3394, + 3398,3401,3407,3413,3417,3420,3423,3429,3435,3440,3448,3452,3460, + 3466,3472,3478,3484,3486,3488,3492,3497,3500,1,6,0,0 + ] class Fortran90Lexer(Lexer): @@ -2012,7 +1719,7 @@ class Fortran90Lexer(Lexer): def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran90Parser.interp b/src/pycropml/transpiler/antlr_py/grammars/Fortran90Parser.interp index eb7967ae..cd8a47e3 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran90Parser.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran90Parser.interp @@ -746,4 +746,4 @@ ifStmt atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 197, 3720, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196, 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201, 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205, 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210, 9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, 9, 214, 4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, 4, 219, 9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, 9, 223, 4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, 4, 228, 9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, 9, 232, 4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, 4, 237, 9, 237, 4, 238, 9, 238, 4, 239, 9, 239, 4, 240, 9, 240, 4, 241, 9, 241, 4, 242, 9, 242, 4, 243, 9, 243, 4, 244, 9, 244, 4, 245, 9, 245, 4, 246, 9, 246, 4, 247, 9, 247, 4, 248, 9, 248, 4, 249, 9, 249, 4, 250, 9, 250, 4, 251, 9, 251, 4, 252, 9, 252, 4, 253, 9, 253, 4, 254, 9, 254, 4, 255, 9, 255, 4, 256, 9, 256, 4, 257, 9, 257, 4, 258, 9, 258, 4, 259, 9, 259, 4, 260, 9, 260, 4, 261, 9, 261, 4, 262, 9, 262, 4, 263, 9, 263, 4, 264, 9, 264, 4, 265, 9, 265, 4, 266, 9, 266, 4, 267, 9, 267, 4, 268, 9, 268, 4, 269, 9, 269, 4, 270, 9, 270, 4, 271, 9, 271, 4, 272, 9, 272, 4, 273, 9, 273, 4, 274, 9, 274, 4, 275, 9, 275, 4, 276, 9, 276, 4, 277, 9, 277, 4, 278, 9, 278, 4, 279, 9, 279, 4, 280, 9, 280, 4, 281, 9, 281, 4, 282, 9, 282, 4, 283, 9, 283, 4, 284, 9, 284, 4, 285, 9, 285, 4, 286, 9, 286, 4, 287, 9, 287, 4, 288, 9, 288, 4, 289, 9, 289, 4, 290, 9, 290, 4, 291, 9, 291, 4, 292, 9, 292, 4, 293, 9, 293, 4, 294, 9, 294, 4, 295, 9, 295, 4, 296, 9, 296, 4, 297, 9, 297, 4, 298, 9, 298, 4, 299, 9, 299, 4, 300, 9, 300, 4, 301, 9, 301, 4, 302, 9, 302, 4, 303, 9, 303, 4, 304, 9, 304, 4, 305, 9, 305, 4, 306, 9, 306, 4, 307, 9, 307, 4, 308, 9, 308, 4, 309, 9, 309, 4, 310, 9, 310, 4, 311, 9, 311, 4, 312, 9, 312, 4, 313, 9, 313, 4, 314, 9, 314, 4, 315, 9, 315, 4, 316, 9, 316, 4, 317, 9, 317, 4, 318, 9, 318, 4, 319, 9, 319, 4, 320, 9, 320, 4, 321, 9, 321, 4, 322, 9, 322, 4, 323, 9, 323, 4, 324, 9, 324, 4, 325, 9, 325, 4, 326, 9, 326, 4, 327, 9, 327, 4, 328, 9, 328, 4, 329, 9, 329, 4, 330, 9, 330, 4, 331, 9, 331, 4, 332, 9, 332, 4, 333, 9, 333, 4, 334, 9, 334, 4, 335, 9, 335, 4, 336, 9, 336, 4, 337, 9, 337, 4, 338, 9, 338, 4, 339, 9, 339, 4, 340, 9, 340, 4, 341, 9, 341, 4, 342, 9, 342, 4, 343, 9, 343, 4, 344, 9, 344, 4, 345, 9, 345, 4, 346, 9, 346, 4, 347, 9, 347, 4, 348, 9, 348, 4, 349, 9, 349, 3, 2, 3, 2, 3, 3, 6, 3, 702, 10, 3, 13, 3, 14, 3, 703, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 711, 10, 4, 3, 5, 5, 5, 714, 10, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 7, 5, 7, 722, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 728, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 738, 10, 8, 3, 8, 3, 8, 7, 8, 742, 10, 8, 12, 8, 14, 8, 745, 11, 8, 3, 9, 3, 9, 5, 9, 749, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 758, 10, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 777, 10, 11, 3, 12, 3, 12, 3, 12, 7, 12, 782, 10, 12, 12, 12, 14, 12, 785, 11, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 793, 10, 13, 3, 14, 3, 14, 3, 14, 7, 14, 798, 10, 14, 12, 14, 14, 14, 801, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 6, 18, 815, 10, 18, 13, 18, 14, 18, 816, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 827, 10, 20, 5, 20, 829, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 838, 10, 21, 3, 22, 3, 22, 5, 22, 842, 10, 22, 3, 22, 3, 22, 3, 22, 5, 22, 847, 10, 22, 5, 22, 849, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 856, 10, 23, 12, 23, 14, 23, 859, 11, 23, 3, 24, 3, 24, 3, 25, 3, 25, 5, 25, 865, 10, 25, 3, 25, 3, 25, 3, 25, 5, 25, 870, 10, 25, 3, 25, 3, 25, 3, 25, 5, 25, 875, 10, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 881, 10, 25, 3, 25, 5, 25, 884, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 890, 10, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 899, 10, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 916, 10, 27, 12, 27, 14, 27, 919, 11, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 931, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 942, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 952, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 961, 10, 31, 3, 32, 3, 32, 3, 32, 5, 32, 966, 10, 32, 3, 32, 3, 32, 5, 32, 970, 10, 32, 3, 32, 5, 32, 973, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 5, 34, 985, 10, 34, 3, 34, 5, 34, 988, 10, 34, 3, 35, 3, 35, 3, 35, 7, 35, 993, 10, 35, 12, 35, 14, 35, 996, 11, 35, 3, 36, 3, 36, 5, 36, 1000, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 1006, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 1022, 10, 38, 3, 39, 3, 39, 5, 39, 1026, 10, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 7, 40, 1033, 10, 40, 12, 40, 14, 40, 1036, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 1044, 10, 41, 3, 42, 3, 42, 5, 42, 1048, 10, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 7, 43, 1055, 10, 43, 12, 43, 14, 43, 1058, 11, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 1066, 10, 44, 3, 45, 3, 45, 5, 45, 1070, 10, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 7, 46, 1077, 10, 46, 12, 46, 14, 46, 1080, 11, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 7, 49, 1109, 10, 49, 12, 49, 14, 49, 1112, 11, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 1123, 10, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 3, 57, 3, 57, 5, 57, 1139, 10, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 7, 58, 1146, 10, 58, 12, 58, 14, 58, 1149, 11, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 1157, 10, 59, 3, 60, 3, 60, 3, 61, 3, 61, 5, 61, 1163, 10, 61, 3, 61, 3, 61, 5, 61, 1167, 10, 61, 3, 62, 3, 62, 3, 62, 7, 62, 1172, 10, 62, 12, 62, 14, 62, 1175, 11, 62, 3, 63, 3, 63, 5, 63, 1179, 10, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 1189, 10, 65, 3, 66, 6, 66, 1192, 10, 66, 13, 66, 14, 66, 1193, 3, 67, 3, 67, 5, 67, 1198, 10, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 70, 6, 70, 1208, 10, 70, 13, 70, 14, 70, 1209, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 73, 6, 73, 1218, 10, 73, 13, 73, 14, 73, 1219, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 76, 6, 76, 1228, 10, 76, 13, 76, 14, 76, 1229, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 79, 6, 79, 1241, 10, 79, 13, 79, 14, 79, 1242, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 1250, 10, 80, 3, 81, 6, 81, 1253, 10, 81, 13, 81, 14, 81, 1254, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 5, 83, 1262, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1269, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 7, 83, 1276, 10, 83, 12, 83, 14, 83, 1279, 11, 83, 3, 84, 3, 84, 5, 84, 1283, 10, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 5, 86, 1298, 10, 86, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 5, 88, 1307, 10, 88, 3, 88, 3, 88, 3, 88, 5, 88, 1312, 10, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 7, 89, 1321, 10, 89, 12, 89, 14, 89, 1324, 11, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 1345, 10, 90, 3, 91, 3, 91, 3, 91, 7, 91, 1350, 10, 91, 12, 91, 14, 91, 1353, 11, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 5, 92, 1398, 10, 92, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 5, 94, 1406, 10, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 5, 95, 1417, 10, 95, 3, 95, 3, 95, 3, 95, 7, 95, 1422, 10, 95, 12, 95, 14, 95, 1425, 11, 95, 3, 96, 3, 96, 3, 96, 3, 96, 5, 96, 1431, 10, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 1448, 10, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 5, 99, 1457, 10, 99, 3, 99, 5, 99, 1460, 10, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 1467, 10, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 5, 101, 1478, 10, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 5, 102, 1493, 10, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 7, 103, 1500, 10, 103, 12, 103, 14, 103, 1503, 11, 103, 3, 104, 3, 104, 5, 104, 1507, 10, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 7, 106, 1516, 10, 106, 12, 106, 14, 106, 1519, 11, 106, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 5, 108, 1530, 10, 108, 3, 109, 3, 109, 5, 109, 1534, 10, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 5, 110, 1542, 10, 110, 5, 110, 1544, 10, 110, 3, 111, 3, 111, 3, 112, 5, 112, 1549, 10, 112, 3, 112, 5, 112, 1552, 10, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 5, 112, 1559, 10, 112, 3, 113, 3, 113, 5, 113, 1563, 10, 113, 3, 113, 3, 113, 3, 114, 3, 114, 5, 114, 1569, 10, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 7, 115, 1576, 10, 115, 12, 115, 14, 115, 1579, 11, 115, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 7, 117, 1588, 10, 117, 12, 117, 14, 117, 1591, 11, 117, 3, 118, 3, 118, 3, 118, 3, 118, 5, 118, 1597, 10, 118, 5, 118, 1599, 10, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 5, 120, 1613, 10, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 5, 121, 1625, 10, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 7, 122, 1632, 10, 122, 12, 122, 14, 122, 1635, 11, 122, 3, 123, 3, 123, 5, 123, 1639, 10, 123, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 5, 125, 1656, 10, 125, 3, 126, 3, 126, 3, 126, 7, 126, 1661, 10, 126, 12, 126, 14, 126, 1664, 11, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 5, 127, 1709, 10, 127, 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 7, 129, 1716, 10, 129, 12, 129, 14, 129, 1719, 11, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 5, 130, 1727, 10, 130, 3, 131, 3, 131, 5, 131, 1731, 10, 131, 3, 132, 3, 132, 3, 132, 7, 132, 1736, 10, 132, 12, 132, 14, 132, 1739, 11, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 5, 133, 1746, 10, 133, 3, 134, 3, 134, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 7, 136, 1755, 10, 136, 12, 136, 14, 136, 1758, 11, 136, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 5, 138, 1787, 10, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 5, 139, 1799, 10, 139, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 5, 141, 1837, 10, 141, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 5, 142, 1845, 10, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 5, 143, 1852, 10, 143, 3, 144, 3, 144, 5, 144, 1856, 10, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 5, 144, 1871, 10, 144, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 149, 3, 149, 5, 149, 1888, 10, 149, 3, 150, 3, 150, 3, 150, 3, 151, 3, 151, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 5, 153, 1900, 10, 153, 3, 153, 3, 153, 3, 153, 3, 153, 7, 153, 1906, 10, 153, 12, 153, 14, 153, 1909, 11, 153, 3, 154, 3, 154, 5, 154, 1913, 10, 154, 3, 155, 3, 155, 3, 156, 3, 156, 5, 156, 1919, 10, 156, 3, 157, 3, 157, 3, 157, 3, 157, 3, 158, 3, 158, 3, 159, 3, 159, 5, 159, 1929, 10, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 5, 159, 1939, 10, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 5, 159, 1955, 10, 159, 3, 160, 6, 160, 1958, 10, 160, 13, 160, 14, 160, 1959, 3, 161, 3, 161, 5, 161, 1964, 10, 161, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 5, 162, 1971, 10, 162, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 5, 163, 1979, 10, 163, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 7, 164, 1987, 10, 164, 12, 164, 14, 164, 1990, 11, 164, 3, 165, 3, 165, 3, 166, 3, 166, 3, 166, 5, 166, 1997, 10, 166, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 7, 167, 2004, 10, 167, 12, 167, 14, 167, 2007, 11, 167, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 169, 3, 169, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 5, 170, 2046, 10, 170, 3, 171, 3, 171, 3, 171, 3, 171, 5, 171, 2052, 10, 171, 3, 172, 3, 172, 5, 172, 2056, 10, 172, 3, 172, 3, 172, 3, 172, 5, 172, 2061, 10, 172, 5, 172, 2063, 10, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 7, 173, 2070, 10, 173, 12, 173, 14, 173, 2073, 11, 173, 3, 174, 3, 174, 5, 174, 2077, 10, 174, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 5, 175, 2085, 10, 175, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 5, 176, 2092, 10, 176, 3, 177, 6, 177, 2095, 10, 177, 13, 177, 14, 177, 2096, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 5, 178, 2109, 10, 178, 3, 179, 3, 179, 3, 179, 7, 179, 2114, 10, 179, 12, 179, 14, 179, 2117, 11, 179, 3, 179, 5, 179, 2120, 10, 179, 3, 179, 3, 179, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 181, 7, 181, 2131, 10, 181, 12, 181, 14, 181, 2134, 11, 181, 3, 182, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 5, 183, 2152, 10, 183, 3, 184, 3, 184, 3, 184, 3, 185, 3, 185, 3, 186, 3, 186, 3, 186, 5, 186, 2162, 10, 186, 3, 187, 3, 187, 5, 187, 2166, 10, 187, 3, 188, 5, 188, 2169, 10, 188, 3, 188, 3, 188, 5, 188, 2173, 10, 188, 3, 188, 7, 188, 2176, 10, 188, 12, 188, 14, 188, 2179, 11, 188, 3, 188, 3, 188, 3, 189, 3, 189, 5, 189, 2185, 10, 189, 3, 189, 3, 189, 3, 189, 5, 189, 2190, 10, 189, 5, 189, 2192, 10, 189, 3, 190, 3, 190, 3, 191, 3, 191, 3, 191, 3, 192, 3, 192, 3, 192, 3, 192, 7, 192, 2203, 10, 192, 12, 192, 14, 192, 2206, 11, 192, 3, 192, 3, 192, 3, 192, 3, 193, 3, 193, 3, 194, 3, 194, 3, 195, 3, 195, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 5, 196, 2222, 10, 196, 3, 197, 3, 197, 3, 197, 3, 197, 3, 198, 3, 198, 3, 198, 5, 198, 2231, 10, 198, 3, 198, 7, 198, 2234, 10, 198, 12, 198, 14, 198, 2237, 11, 198, 3, 199, 3, 199, 3, 199, 3, 200, 3, 200, 3, 200, 7, 200, 2245, 10, 200, 12, 200, 14, 200, 2248, 11, 200, 3, 200, 3, 200, 3, 201, 3, 201, 3, 201, 7, 201, 2255, 10, 201, 12, 201, 14, 201, 2258, 11, 201, 3, 201, 3, 201, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 5, 202, 2271, 10, 202, 3, 203, 3, 203, 5, 203, 2275, 10, 203, 3, 204, 3, 204, 5, 204, 2279, 10, 204, 3, 204, 5, 204, 2282, 10, 204, 3, 205, 3, 205, 3, 205, 3, 205, 3, 206, 6, 206, 2289, 10, 206, 13, 206, 14, 206, 2290, 3, 207, 3, 207, 3, 208, 3, 208, 5, 208, 2297, 10, 208, 3, 208, 3, 208, 3, 208, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 5, 209, 2324, 10, 209, 3, 210, 6, 210, 2327, 10, 210, 13, 210, 14, 210, 2328, 3, 211, 3, 211, 3, 211, 5, 211, 2334, 10, 211, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 7, 212, 2342, 10, 212, 12, 212, 14, 212, 2345, 11, 212, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 5, 213, 2355, 10, 213, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 5, 214, 2367, 10, 214, 3, 215, 3, 215, 3, 216, 5, 216, 2372, 10, 216, 3, 216, 3, 216, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 5, 217, 2382, 10, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 5, 217, 2389, 10, 217, 3, 218, 3, 218, 3, 219, 3, 219, 3, 219, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 5, 220, 2425, 10, 220, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 5, 222, 2438, 10, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 5, 222, 2445, 10, 222, 3, 223, 3, 223, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 225, 3, 225, 3, 225, 7, 225, 2457, 10, 225, 12, 225, 14, 225, 2460, 11, 225, 3, 226, 3, 226, 5, 226, 2464, 10, 226, 3, 227, 3, 227, 3, 227, 5, 227, 2469, 10, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 7, 227, 2476, 10, 227, 12, 227, 14, 227, 2479, 11, 227, 3, 228, 3, 228, 5, 228, 2483, 10, 228, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 5, 229, 2499, 10, 229, 3, 230, 3, 230, 3, 230, 7, 230, 2504, 10, 230, 12, 230, 14, 230, 2507, 11, 230, 3, 231, 3, 231, 5, 231, 2511, 10, 231, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 5, 232, 2527, 10, 232, 3, 233, 3, 233, 3, 233, 7, 233, 2532, 10, 233, 12, 233, 14, 233, 2535, 11, 233, 3, 234, 3, 234, 3, 234, 3, 234, 5, 234, 2541, 10, 234, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 7, 235, 2548, 10, 235, 12, 235, 14, 235, 2551, 11, 235, 3, 236, 3, 236, 3, 236, 3, 236, 3, 237, 3, 237, 5, 237, 2559, 10, 237, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 5, 238, 2566, 10, 238, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 5, 239, 2582, 10, 239, 3, 239, 3, 239, 3, 239, 7, 239, 2587, 10, 239, 12, 239, 14, 239, 2590, 11, 239, 3, 240, 3, 240, 3, 240, 3, 241, 3, 241, 5, 241, 2597, 10, 241, 3, 241, 3, 241, 3, 241, 3, 241, 3, 242, 3, 242, 3, 242, 7, 242, 2606, 10, 242, 12, 242, 14, 242, 2609, 11, 242, 3, 243, 3, 243, 3, 244, 3, 244, 5, 244, 2615, 10, 244, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 5, 245, 2624, 10, 245, 3, 246, 3, 246, 3, 246, 5, 246, 2629, 10, 246, 3, 246, 3, 246, 3, 246, 5, 246, 2634, 10, 246, 5, 246, 2636, 10, 246, 3, 247, 3, 247, 3, 247, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 5, 248, 2658, 10, 248, 3, 249, 3, 249, 3, 249, 3, 249, 3, 250, 3, 250, 3, 250, 7, 250, 2667, 10, 250, 12, 250, 14, 250, 2670, 11, 250, 3, 251, 3, 251, 5, 251, 2674, 10, 251, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 5, 252, 2685, 10, 252, 3, 252, 3, 252, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 5, 253, 2694, 10, 253, 3, 254, 3, 254, 3, 254, 3, 254, 3, 254, 3, 254, 3, 254, 5, 254, 2703, 10, 254, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 5, 255, 2715, 10, 255, 3, 255, 3, 255, 3, 255, 7, 255, 2720, 10, 255, 12, 255, 14, 255, 2723, 11, 255, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 5, 256, 2755, 10, 256, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 5, 257, 2764, 10, 257, 3, 258, 3, 258, 5, 258, 2768, 10, 258, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 5, 259, 2780, 10, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 7, 259, 2788, 10, 259, 12, 259, 14, 259, 2791, 11, 259, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 5, 260, 2802, 10, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 5, 260, 2815, 10, 260, 3, 260, 3, 260, 5, 260, 2819, 10, 260, 3, 261, 3, 261, 3, 261, 5, 261, 2824, 10, 261, 3, 262, 3, 262, 5, 262, 2828, 10, 262, 3, 263, 3, 263, 3, 263, 3, 263, 3, 263, 3, 264, 5, 264, 2836, 10, 264, 3, 264, 5, 264, 2839, 10, 264, 3, 264, 3, 264, 7, 264, 2843, 10, 264, 12, 264, 14, 264, 2846, 11, 264, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 5, 265, 2887, 10, 265, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 5, 266, 2902, 10, 266, 3, 267, 5, 267, 2905, 10, 267, 3, 267, 5, 267, 2908, 10, 267, 3, 267, 3, 267, 7, 267, 2912, 10, 267, 12, 267, 14, 267, 2915, 11, 267, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 3, 268, 5, 268, 2992, 10, 268, 3, 269, 3, 269, 3, 269, 5, 269, 2997, 10, 269, 3, 269, 3, 269, 3, 269, 3, 269, 5, 269, 3003, 10, 269, 3, 269, 3, 269, 3, 269, 3, 269, 3, 269, 3, 269, 3, 269, 3, 269, 5, 269, 3013, 10, 269, 3, 269, 3, 269, 3, 269, 3, 269, 3, 269, 5, 269, 3020, 10, 269, 3, 270, 3, 270, 3, 270, 3, 271, 3, 271, 3, 271, 5, 271, 3028, 10, 271, 3, 271, 3, 271, 3, 272, 3, 272, 3, 272, 3, 272, 3, 272, 5, 272, 3037, 10, 272, 3, 272, 3, 272, 3, 273, 3, 273, 3, 273, 7, 273, 3044, 10, 273, 12, 273, 14, 273, 3047, 11, 273, 3, 274, 3, 274, 3, 274, 5, 274, 3052, 10, 274, 3, 274, 3, 274, 3, 274, 3, 274, 5, 274, 3058, 10, 274, 3, 274, 3, 274, 3, 274, 3, 274, 5, 274, 3064, 10, 274, 3, 275, 3, 275, 3, 276, 3, 276, 3, 276, 3, 276, 3, 276, 3, 277, 5, 277, 3074, 10, 277, 3, 277, 5, 277, 3077, 10, 277, 3, 277, 3, 277, 7, 277, 3081, 10, 277, 12, 277, 14, 277, 3084, 11, 277, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 5, 278, 3097, 10, 278, 3, 279, 3, 279, 7, 279, 3101, 10, 279, 12, 279, 14, 279, 3104, 11, 279, 3, 280, 3, 280, 3, 280, 3, 280, 3, 280, 5, 280, 3111, 10, 280, 3, 281, 3, 281, 3, 281, 5, 281, 3116, 10, 281, 3, 282, 3, 282, 3, 282, 3, 282, 3, 282, 3, 282, 3, 283, 3, 283, 3, 283, 3, 283, 3, 283, 3, 283, 3, 283, 3, 283, 5, 283, 3132, 10, 283, 3, 284, 3, 284, 3, 285, 5, 285, 3137, 10, 285, 3, 285, 3, 285, 7, 285, 3141, 10, 285, 12, 285, 14, 285, 3144, 11, 285, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 5, 286, 3160, 10, 286, 3, 287, 3, 287, 3, 287, 3, 287, 3, 287, 3, 287, 3, 287, 3, 287, 3, 287, 3, 287, 3, 288, 3, 288, 3, 289, 3, 289, 3, 290, 5, 290, 3177, 10, 290, 3, 290, 3, 290, 5, 290, 3181, 10, 290, 3, 290, 5, 290, 3184, 10, 290, 3, 290, 3, 290, 3, 290, 3, 290, 5, 290, 3190, 10, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 5, 290, 3206, 10, 290, 3, 291, 3, 291, 3, 291, 7, 291, 3211, 10, 291, 12, 291, 14, 291, 3214, 11, 291, 3, 291, 3, 291, 3, 292, 3, 292, 5, 292, 3220, 10, 292, 3, 292, 5, 292, 3223, 10, 292, 3, 292, 3, 292, 5, 292, 3227, 10, 292, 3, 292, 5, 292, 3230, 10, 292, 3, 292, 3, 292, 3, 292, 3, 292, 3, 292, 3, 292, 5, 292, 3238, 10, 292, 3, 292, 3, 292, 5, 292, 3242, 10, 292, 3, 293, 3, 293, 3, 293, 3, 294, 3, 294, 3, 294, 3, 294, 3, 294, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 5, 295, 3259, 10, 295, 3, 296, 3, 296, 5, 296, 3263, 10, 296, 3, 297, 5, 297, 3266, 10, 297, 3, 297, 6, 297, 3269, 10, 297, 13, 297, 14, 297, 3270, 3, 298, 3, 298, 5, 298, 3275, 10, 298, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 5, 299, 3286, 10, 299, 3, 300, 3, 300, 5, 300, 3290, 10, 300, 3, 301, 3, 301, 3, 301, 3, 301, 5, 301, 3296, 10, 301, 3, 301, 3, 301, 3, 301, 7, 301, 3301, 10, 301, 12, 301, 14, 301, 3304, 11, 301, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 7, 302, 3317, 10, 302, 12, 302, 14, 302, 3320, 11, 302, 3, 303, 3, 303, 3, 303, 3, 303, 3, 303, 5, 303, 3327, 10, 303, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 5, 304, 3337, 10, 304, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 5, 305, 3348, 10, 305, 3, 306, 3, 306, 3, 307, 3, 307, 5, 307, 3354, 10, 307, 3, 307, 3, 307, 3, 307, 3, 307, 3, 307, 3, 307, 5, 307, 3362, 10, 307, 3, 308, 3, 308, 3, 308, 3, 309, 3, 309, 3, 309, 3, 309, 5, 309, 3371, 10, 309, 3, 310, 3, 310, 3, 310, 7, 310, 3376, 10, 310, 12, 310, 14, 310, 3379, 11, 310, 3, 311, 3, 311, 3, 311, 3, 311, 3, 311, 3, 311, 3, 311, 3, 311, 5, 311, 3389, 10, 311, 3, 312, 5, 312, 3392, 10, 312, 3, 312, 3, 312, 7, 312, 3396, 10, 312, 12, 312, 14, 312, 3399, 11, 312, 3, 313, 3, 313, 3, 313, 3, 313, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 7, 314, 3412, 10, 314, 12, 314, 14, 314, 3415, 11, 314, 3, 315, 3, 315, 3, 316, 3, 316, 3, 316, 7, 316, 3422, 10, 316, 12, 316, 14, 316, 3425, 11, 316, 3, 317, 3, 317, 3, 317, 7, 317, 3430, 10, 317, 12, 317, 14, 317, 3433, 11, 317, 3, 318, 3, 318, 3, 318, 7, 318, 3438, 10, 318, 12, 318, 14, 318, 3441, 11, 318, 3, 319, 5, 319, 3444, 10, 319, 3, 319, 3, 319, 3, 320, 3, 320, 3, 321, 3, 321, 3, 321, 3, 321, 7, 321, 3454, 10, 321, 12, 321, 14, 321, 3457, 11, 321, 3, 322, 3, 322, 3, 322, 5, 322, 3462, 10, 322, 3, 322, 3, 322, 5, 322, 3466, 10, 322, 3, 322, 7, 322, 3469, 10, 322, 12, 322, 14, 322, 3472, 11, 322, 3, 323, 5, 323, 3475, 10, 323, 3, 323, 3, 323, 3, 323, 7, 323, 3480, 10, 323, 12, 323, 14, 323, 3483, 11, 323, 3, 324, 3, 324, 3, 325, 3, 325, 3, 325, 7, 325, 3490, 10, 325, 12, 325, 14, 325, 3493, 11, 325, 3, 326, 3, 326, 3, 326, 7, 326, 3498, 10, 326, 12, 326, 14, 326, 3501, 11, 326, 3, 327, 3, 327, 3, 327, 3, 327, 5, 327, 3507, 10, 327, 3, 328, 3, 328, 3, 329, 3, 329, 3, 329, 3, 329, 3, 329, 3, 329, 3, 329, 3, 329, 3, 329, 3, 329, 5, 329, 3521, 10, 329, 3, 330, 3, 330, 3, 330, 3, 330, 3, 331, 3, 331, 5, 331, 3529, 10, 331, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, 5, 332, 3541, 10, 332, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, 7, 332, 3549, 10, 332, 12, 332, 14, 332, 3552, 11, 332, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 5, 333, 3598, 10, 333, 3, 334, 3, 334, 3, 334, 3, 334, 3, 334, 3, 334, 3, 334, 3, 334, 5, 334, 3608, 10, 334, 3, 335, 3, 335, 3, 335, 3, 335, 3, 335, 3, 335, 5, 335, 3616, 10, 335, 3, 335, 3, 335, 3, 335, 7, 335, 3621, 10, 335, 12, 335, 14, 335, 3624, 11, 335, 3, 336, 3, 336, 3, 336, 3, 336, 3, 337, 3, 337, 7, 337, 3632, 10, 337, 12, 337, 14, 337, 3635, 11, 337, 3, 338, 3, 338, 3, 338, 5, 338, 3640, 10, 338, 3, 339, 3, 339, 3, 339, 3, 339, 3, 340, 3, 340, 3, 340, 7, 340, 3649, 10, 340, 12, 340, 14, 340, 3652, 11, 340, 3, 341, 3, 341, 5, 341, 3656, 10, 341, 3, 341, 5, 341, 3659, 10, 341, 3, 342, 3, 342, 5, 342, 3663, 10, 342, 3, 342, 3, 342, 3, 342, 3, 342, 3, 342, 3, 342, 3, 342, 5, 342, 3672, 10, 342, 3, 343, 3, 343, 3, 343, 3, 343, 3, 343, 3, 343, 3, 343, 3, 343, 3, 343, 5, 343, 3683, 10, 343, 3, 344, 3, 344, 5, 344, 3687, 10, 344, 3, 345, 3, 345, 3, 345, 3, 345, 3, 345, 3, 345, 3, 345, 3, 345, 5, 345, 3697, 10, 345, 3, 346, 3, 346, 3, 346, 3, 346, 3, 346, 3, 347, 5, 347, 3705, 10, 347, 3, 347, 3, 347, 3, 347, 5, 347, 3710, 10, 347, 3, 348, 3, 348, 3, 349, 3, 349, 3, 349, 3, 349, 3, 349, 3, 349, 3, 349, 2, 27, 14, 44, 52, 96, 164, 176, 188, 204, 232, 242, 304, 326, 332, 344, 422, 452, 468, 476, 508, 516, 600, 602, 626, 662, 668, 350, 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, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 2, 14, 3, 2, 21, 23, 3, 2, 133, 134, 3, 2, 145, 150, 3, 2, 141, 142, 3, 2, 40, 41, 3, 2, 176, 178, 4, 2, 179, 179, 188, 188, 4, 2, 135, 135, 194, 194, 4, 2, 30, 30, 145, 150, 5, 2, 36, 36, 86, 86, 190, 190, 3, 2, 151, 152, 4, 2, 180, 180, 188, 188, 2, 3924, 2, 698, 3, 2, 2, 2, 4, 701, 3, 2, 2, 2, 6, 710, 3, 2, 2, 2, 8, 713, 3, 2, 2, 2, 10, 717, 3, 2, 2, 2, 12, 727, 3, 2, 2, 2, 14, 737, 3, 2, 2, 2, 16, 748, 3, 2, 2, 2, 18, 757, 3, 2, 2, 2, 20, 776, 3, 2, 2, 2, 22, 778, 3, 2, 2, 2, 24, 792, 3, 2, 2, 2, 26, 794, 3, 2, 2, 2, 28, 802, 3, 2, 2, 2, 30, 806, 3, 2, 2, 2, 32, 808, 3, 2, 2, 2, 34, 814, 3, 2, 2, 2, 36, 818, 3, 2, 2, 2, 38, 828, 3, 2, 2, 2, 40, 837, 3, 2, 2, 2, 42, 848, 3, 2, 2, 2, 44, 850, 3, 2, 2, 2, 46, 860, 3, 2, 2, 2, 48, 883, 3, 2, 2, 2, 50, 885, 3, 2, 2, 2, 52, 898, 3, 2, 2, 2, 54, 930, 3, 2, 2, 2, 56, 941, 3, 2, 2, 2, 58, 951, 3, 2, 2, 2, 60, 960, 3, 2, 2, 2, 62, 972, 3, 2, 2, 2, 64, 974, 3, 2, 2, 2, 66, 987, 3, 2, 2, 2, 68, 989, 3, 2, 2, 2, 70, 999, 3, 2, 2, 2, 72, 1005, 3, 2, 2, 2, 74, 1021, 3, 2, 2, 2, 76, 1023, 3, 2, 2, 2, 78, 1029, 3, 2, 2, 2, 80, 1043, 3, 2, 2, 2, 82, 1045, 3, 2, 2, 2, 84, 1051, 3, 2, 2, 2, 86, 1065, 3, 2, 2, 2, 88, 1067, 3, 2, 2, 2, 90, 1073, 3, 2, 2, 2, 92, 1081, 3, 2, 2, 2, 94, 1083, 3, 2, 2, 2, 96, 1086, 3, 2, 2, 2, 98, 1113, 3, 2, 2, 2, 100, 1115, 3, 2, 2, 2, 102, 1117, 3, 2, 2, 2, 104, 1126, 3, 2, 2, 2, 106, 1130, 3, 2, 2, 2, 108, 1132, 3, 2, 2, 2, 110, 1134, 3, 2, 2, 2, 112, 1136, 3, 2, 2, 2, 114, 1142, 3, 2, 2, 2, 116, 1156, 3, 2, 2, 2, 118, 1158, 3, 2, 2, 2, 120, 1166, 3, 2, 2, 2, 122, 1168, 3, 2, 2, 2, 124, 1178, 3, 2, 2, 2, 126, 1180, 3, 2, 2, 2, 128, 1188, 3, 2, 2, 2, 130, 1191, 3, 2, 2, 2, 132, 1197, 3, 2, 2, 2, 134, 1199, 3, 2, 2, 2, 136, 1203, 3, 2, 2, 2, 138, 1207, 3, 2, 2, 2, 140, 1211, 3, 2, 2, 2, 142, 1213, 3, 2, 2, 2, 144, 1217, 3, 2, 2, 2, 146, 1221, 3, 2, 2, 2, 148, 1223, 3, 2, 2, 2, 150, 1227, 3, 2, 2, 2, 152, 1231, 3, 2, 2, 2, 154, 1237, 3, 2, 2, 2, 156, 1240, 3, 2, 2, 2, 158, 1249, 3, 2, 2, 2, 160, 1252, 3, 2, 2, 2, 162, 1256, 3, 2, 2, 2, 164, 1259, 3, 2, 2, 2, 166, 1282, 3, 2, 2, 2, 168, 1284, 3, 2, 2, 2, 170, 1297, 3, 2, 2, 2, 172, 1299, 3, 2, 2, 2, 174, 1311, 3, 2, 2, 2, 176, 1313, 3, 2, 2, 2, 178, 1344, 3, 2, 2, 2, 180, 1346, 3, 2, 2, 2, 182, 1397, 3, 2, 2, 2, 184, 1399, 3, 2, 2, 2, 186, 1405, 3, 2, 2, 2, 188, 1416, 3, 2, 2, 2, 190, 1430, 3, 2, 2, 2, 192, 1447, 3, 2, 2, 2, 194, 1449, 3, 2, 2, 2, 196, 1456, 3, 2, 2, 2, 198, 1466, 3, 2, 2, 2, 200, 1477, 3, 2, 2, 2, 202, 1492, 3, 2, 2, 2, 204, 1494, 3, 2, 2, 2, 206, 1506, 3, 2, 2, 2, 208, 1508, 3, 2, 2, 2, 210, 1512, 3, 2, 2, 2, 212, 1520, 3, 2, 2, 2, 214, 1529, 3, 2, 2, 2, 216, 1531, 3, 2, 2, 2, 218, 1543, 3, 2, 2, 2, 220, 1545, 3, 2, 2, 2, 222, 1558, 3, 2, 2, 2, 224, 1560, 3, 2, 2, 2, 226, 1566, 3, 2, 2, 2, 228, 1572, 3, 2, 2, 2, 230, 1580, 3, 2, 2, 2, 232, 1582, 3, 2, 2, 2, 234, 1598, 3, 2, 2, 2, 236, 1600, 3, 2, 2, 2, 238, 1612, 3, 2, 2, 2, 240, 1624, 3, 2, 2, 2, 242, 1626, 3, 2, 2, 2, 244, 1638, 3, 2, 2, 2, 246, 1640, 3, 2, 2, 2, 248, 1655, 3, 2, 2, 2, 250, 1657, 3, 2, 2, 2, 252, 1708, 3, 2, 2, 2, 254, 1710, 3, 2, 2, 2, 256, 1712, 3, 2, 2, 2, 258, 1726, 3, 2, 2, 2, 260, 1730, 3, 2, 2, 2, 262, 1732, 3, 2, 2, 2, 264, 1745, 3, 2, 2, 2, 266, 1747, 3, 2, 2, 2, 268, 1749, 3, 2, 2, 2, 270, 1751, 3, 2, 2, 2, 272, 1759, 3, 2, 2, 2, 274, 1786, 3, 2, 2, 2, 276, 1798, 3, 2, 2, 2, 278, 1800, 3, 2, 2, 2, 280, 1836, 3, 2, 2, 2, 282, 1844, 3, 2, 2, 2, 284, 1851, 3, 2, 2, 2, 286, 1870, 3, 2, 2, 2, 288, 1872, 3, 2, 2, 2, 290, 1874, 3, 2, 2, 2, 292, 1879, 3, 2, 2, 2, 294, 1883, 3, 2, 2, 2, 296, 1887, 3, 2, 2, 2, 298, 1889, 3, 2, 2, 2, 300, 1892, 3, 2, 2, 2, 302, 1894, 3, 2, 2, 2, 304, 1899, 3, 2, 2, 2, 306, 1912, 3, 2, 2, 2, 308, 1914, 3, 2, 2, 2, 310, 1918, 3, 2, 2, 2, 312, 1920, 3, 2, 2, 2, 314, 1924, 3, 2, 2, 2, 316, 1954, 3, 2, 2, 2, 318, 1957, 3, 2, 2, 2, 320, 1963, 3, 2, 2, 2, 322, 1970, 3, 2, 2, 2, 324, 1978, 3, 2, 2, 2, 326, 1980, 3, 2, 2, 2, 328, 1991, 3, 2, 2, 2, 330, 1996, 3, 2, 2, 2, 332, 1998, 3, 2, 2, 2, 334, 2008, 3, 2, 2, 2, 336, 2013, 3, 2, 2, 2, 338, 2045, 3, 2, 2, 2, 340, 2051, 3, 2, 2, 2, 342, 2062, 3, 2, 2, 2, 344, 2064, 3, 2, 2, 2, 346, 2076, 3, 2, 2, 2, 348, 2084, 3, 2, 2, 2, 350, 2091, 3, 2, 2, 2, 352, 2094, 3, 2, 2, 2, 354, 2108, 3, 2, 2, 2, 356, 2110, 3, 2, 2, 2, 358, 2123, 3, 2, 2, 2, 360, 2132, 3, 2, 2, 2, 362, 2135, 3, 2, 2, 2, 364, 2151, 3, 2, 2, 2, 366, 2153, 3, 2, 2, 2, 368, 2156, 3, 2, 2, 2, 370, 2161, 3, 2, 2, 2, 372, 2165, 3, 2, 2, 2, 374, 2168, 3, 2, 2, 2, 376, 2191, 3, 2, 2, 2, 378, 2193, 3, 2, 2, 2, 380, 2195, 3, 2, 2, 2, 382, 2198, 3, 2, 2, 2, 384, 2210, 3, 2, 2, 2, 386, 2212, 3, 2, 2, 2, 388, 2214, 3, 2, 2, 2, 390, 2221, 3, 2, 2, 2, 392, 2223, 3, 2, 2, 2, 394, 2227, 3, 2, 2, 2, 396, 2238, 3, 2, 2, 2, 398, 2241, 3, 2, 2, 2, 400, 2251, 3, 2, 2, 2, 402, 2270, 3, 2, 2, 2, 404, 2274, 3, 2, 2, 2, 406, 2276, 3, 2, 2, 2, 408, 2283, 3, 2, 2, 2, 410, 2288, 3, 2, 2, 2, 412, 2292, 3, 2, 2, 2, 414, 2294, 3, 2, 2, 2, 416, 2323, 3, 2, 2, 2, 418, 2326, 3, 2, 2, 2, 420, 2333, 3, 2, 2, 2, 422, 2335, 3, 2, 2, 2, 424, 2354, 3, 2, 2, 2, 426, 2366, 3, 2, 2, 2, 428, 2368, 3, 2, 2, 2, 430, 2371, 3, 2, 2, 2, 432, 2388, 3, 2, 2, 2, 434, 2390, 3, 2, 2, 2, 436, 2392, 3, 2, 2, 2, 438, 2424, 3, 2, 2, 2, 440, 2426, 3, 2, 2, 2, 442, 2444, 3, 2, 2, 2, 444, 2446, 3, 2, 2, 2, 446, 2448, 3, 2, 2, 2, 448, 2453, 3, 2, 2, 2, 450, 2463, 3, 2, 2, 2, 452, 2465, 3, 2, 2, 2, 454, 2480, 3, 2, 2, 2, 456, 2498, 3, 2, 2, 2, 458, 2500, 3, 2, 2, 2, 460, 2508, 3, 2, 2, 2, 462, 2526, 3, 2, 2, 2, 464, 2528, 3, 2, 2, 2, 466, 2540, 3, 2, 2, 2, 468, 2542, 3, 2, 2, 2, 470, 2552, 3, 2, 2, 2, 472, 2556, 3, 2, 2, 2, 474, 2560, 3, 2, 2, 2, 476, 2581, 3, 2, 2, 2, 478, 2591, 3, 2, 2, 2, 480, 2594, 3, 2, 2, 2, 482, 2602, 3, 2, 2, 2, 484, 2610, 3, 2, 2, 2, 486, 2612, 3, 2, 2, 2, 488, 2623, 3, 2, 2, 2, 490, 2635, 3, 2, 2, 2, 492, 2637, 3, 2, 2, 2, 494, 2657, 3, 2, 2, 2, 496, 2659, 3, 2, 2, 2, 498, 2663, 3, 2, 2, 2, 500, 2673, 3, 2, 2, 2, 502, 2675, 3, 2, 2, 2, 504, 2693, 3, 2, 2, 2, 506, 2702, 3, 2, 2, 2, 508, 2714, 3, 2, 2, 2, 510, 2754, 3, 2, 2, 2, 512, 2763, 3, 2, 2, 2, 514, 2767, 3, 2, 2, 2, 516, 2779, 3, 2, 2, 2, 518, 2818, 3, 2, 2, 2, 520, 2823, 3, 2, 2, 2, 522, 2825, 3, 2, 2, 2, 524, 2829, 3, 2, 2, 2, 526, 2835, 3, 2, 2, 2, 528, 2886, 3, 2, 2, 2, 530, 2901, 3, 2, 2, 2, 532, 2904, 3, 2, 2, 2, 534, 2991, 3, 2, 2, 2, 536, 3019, 3, 2, 2, 2, 538, 3021, 3, 2, 2, 2, 540, 3027, 3, 2, 2, 2, 542, 3031, 3, 2, 2, 2, 544, 3040, 3, 2, 2, 2, 546, 3063, 3, 2, 2, 2, 548, 3065, 3, 2, 2, 2, 550, 3067, 3, 2, 2, 2, 552, 3073, 3, 2, 2, 2, 554, 3096, 3, 2, 2, 2, 556, 3098, 3, 2, 2, 2, 558, 3110, 3, 2, 2, 2, 560, 3115, 3, 2, 2, 2, 562, 3117, 3, 2, 2, 2, 564, 3131, 3, 2, 2, 2, 566, 3133, 3, 2, 2, 2, 568, 3136, 3, 2, 2, 2, 570, 3159, 3, 2, 2, 2, 572, 3161, 3, 2, 2, 2, 574, 3171, 3, 2, 2, 2, 576, 3173, 3, 2, 2, 2, 578, 3205, 3, 2, 2, 2, 580, 3207, 3, 2, 2, 2, 582, 3241, 3, 2, 2, 2, 584, 3243, 3, 2, 2, 2, 586, 3246, 3, 2, 2, 2, 588, 3258, 3, 2, 2, 2, 590, 3262, 3, 2, 2, 2, 592, 3265, 3, 2, 2, 2, 594, 3272, 3, 2, 2, 2, 596, 3285, 3, 2, 2, 2, 598, 3289, 3, 2, 2, 2, 600, 3295, 3, 2, 2, 2, 602, 3305, 3, 2, 2, 2, 604, 3326, 3, 2, 2, 2, 606, 3336, 3, 2, 2, 2, 608, 3347, 3, 2, 2, 2, 610, 3349, 3, 2, 2, 2, 612, 3361, 3, 2, 2, 2, 614, 3363, 3, 2, 2, 2, 616, 3370, 3, 2, 2, 2, 618, 3372, 3, 2, 2, 2, 620, 3388, 3, 2, 2, 2, 622, 3391, 3, 2, 2, 2, 624, 3400, 3, 2, 2, 2, 626, 3404, 3, 2, 2, 2, 628, 3416, 3, 2, 2, 2, 630, 3418, 3, 2, 2, 2, 632, 3426, 3, 2, 2, 2, 634, 3434, 3, 2, 2, 2, 636, 3443, 3, 2, 2, 2, 638, 3447, 3, 2, 2, 2, 640, 3449, 3, 2, 2, 2, 642, 3458, 3, 2, 2, 2, 644, 3474, 3, 2, 2, 2, 646, 3484, 3, 2, 2, 2, 648, 3486, 3, 2, 2, 2, 650, 3494, 3, 2, 2, 2, 652, 3506, 3, 2, 2, 2, 654, 3508, 3, 2, 2, 2, 656, 3520, 3, 2, 2, 2, 658, 3522, 3, 2, 2, 2, 660, 3528, 3, 2, 2, 2, 662, 3540, 3, 2, 2, 2, 664, 3597, 3, 2, 2, 2, 666, 3607, 3, 2, 2, 2, 668, 3615, 3, 2, 2, 2, 670, 3625, 3, 2, 2, 2, 672, 3629, 3, 2, 2, 2, 674, 3639, 3, 2, 2, 2, 676, 3641, 3, 2, 2, 2, 678, 3645, 3, 2, 2, 2, 680, 3658, 3, 2, 2, 2, 682, 3671, 3, 2, 2, 2, 684, 3682, 3, 2, 2, 2, 686, 3686, 3, 2, 2, 2, 688, 3696, 3, 2, 2, 2, 690, 3698, 3, 2, 2, 2, 692, 3709, 3, 2, 2, 2, 694, 3711, 3, 2, 2, 2, 696, 3713, 3, 2, 2, 2, 698, 699, 5, 4, 3, 2, 699, 3, 3, 2, 2, 2, 700, 702, 5, 6, 4, 2, 701, 700, 3, 2, 2, 2, 702, 703, 3, 2, 2, 2, 703, 701, 3, 2, 2, 2, 703, 704, 3, 2, 2, 2, 704, 5, 3, 2, 2, 2, 705, 711, 5, 8, 5, 2, 706, 711, 5, 312, 157, 2, 707, 711, 5, 608, 305, 2, 708, 711, 5, 40, 21, 2, 709, 711, 5, 60, 31, 2, 710, 705, 3, 2, 2, 2, 710, 706, 3, 2, 2, 2, 710, 707, 3, 2, 2, 2, 710, 708, 3, 2, 2, 2, 710, 709, 3, 2, 2, 2, 711, 7, 3, 2, 2, 2, 712, 714, 5, 10, 6, 2, 713, 712, 3, 2, 2, 2, 713, 714, 3, 2, 2, 2, 714, 715, 3, 2, 2, 2, 715, 716, 5, 12, 7, 2, 716, 9, 3, 2, 2, 2, 717, 718, 7, 7, 2, 2, 718, 719, 7, 190, 2, 2, 719, 11, 3, 2, 2, 2, 720, 722, 5, 318, 160, 2, 721, 720, 3, 2, 2, 2, 721, 722, 3, 2, 2, 2, 722, 723, 3, 2, 2, 2, 723, 728, 5, 38, 20, 2, 724, 725, 5, 14, 8, 2, 725, 726, 5, 38, 20, 2, 726, 728, 3, 2, 2, 2, 727, 721, 3, 2, 2, 2, 727, 724, 3, 2, 2, 2, 728, 13, 3, 2, 2, 2, 729, 730, 8, 8, 1, 2, 730, 731, 5, 318, 160, 2, 731, 732, 5, 308, 155, 2, 732, 733, 5, 16, 9, 2, 733, 738, 3, 2, 2, 2, 734, 735, 5, 308, 155, 2, 735, 736, 5, 16, 9, 2, 736, 738, 3, 2, 2, 2, 737, 729, 3, 2, 2, 2, 737, 734, 3, 2, 2, 2, 738, 743, 3, 2, 2, 2, 739, 740, 12, 3, 2, 2, 740, 742, 5, 16, 9, 2, 741, 739, 3, 2, 2, 2, 742, 745, 3, 2, 2, 2, 743, 741, 3, 2, 2, 2, 743, 744, 3, 2, 2, 2, 744, 15, 3, 2, 2, 2, 745, 743, 3, 2, 2, 2, 746, 749, 5, 312, 157, 2, 747, 749, 5, 608, 305, 2, 748, 746, 3, 2, 2, 2, 748, 747, 3, 2, 2, 2, 749, 17, 3, 2, 2, 2, 750, 758, 5, 616, 309, 2, 751, 758, 5, 32, 17, 2, 752, 758, 5, 50, 26, 2, 753, 758, 5, 64, 33, 2, 754, 758, 5, 72, 37, 2, 755, 758, 5, 614, 308, 2, 756, 758, 5, 20, 11, 2, 757, 750, 3, 2, 2, 2, 757, 751, 3, 2, 2, 2, 757, 752, 3, 2, 2, 2, 757, 753, 3, 2, 2, 2, 757, 754, 3, 2, 2, 2, 757, 755, 3, 2, 2, 2, 757, 756, 3, 2, 2, 2, 758, 19, 3, 2, 2, 2, 759, 760, 7, 25, 2, 2, 760, 777, 7, 190, 2, 2, 761, 762, 7, 25, 2, 2, 762, 763, 7, 190, 2, 2, 763, 764, 7, 124, 2, 2, 764, 765, 7, 26, 2, 2, 765, 777, 7, 131, 2, 2, 766, 767, 7, 25, 2, 2, 767, 768, 7, 190, 2, 2, 768, 769, 7, 124, 2, 2, 769, 777, 5, 26, 14, 2, 770, 771, 7, 25, 2, 2, 771, 772, 7, 190, 2, 2, 772, 773, 7, 124, 2, 2, 773, 774, 7, 26, 2, 2, 774, 775, 7, 131, 2, 2, 775, 777, 5, 22, 12, 2, 776, 759, 3, 2, 2, 2, 776, 761, 3, 2, 2, 2, 776, 766, 3, 2, 2, 2, 776, 770, 3, 2, 2, 2, 777, 21, 3, 2, 2, 2, 778, 783, 5, 24, 13, 2, 779, 780, 7, 124, 2, 2, 780, 782, 5, 24, 13, 2, 781, 779, 3, 2, 2, 2, 782, 785, 3, 2, 2, 2, 783, 781, 3, 2, 2, 2, 783, 784, 3, 2, 2, 2, 784, 23, 3, 2, 2, 2, 785, 783, 3, 2, 2, 2, 786, 793, 5, 200, 101, 2, 787, 788, 5, 302, 152, 2, 788, 789, 7, 27, 2, 2, 789, 790, 5, 30, 16, 2, 790, 793, 3, 2, 2, 2, 791, 793, 5, 30, 16, 2, 792, 786, 3, 2, 2, 2, 792, 787, 3, 2, 2, 2, 792, 791, 3, 2, 2, 2, 793, 25, 3, 2, 2, 2, 794, 799, 5, 28, 15, 2, 795, 796, 7, 124, 2, 2, 796, 798, 5, 28, 15, 2, 797, 795, 3, 2, 2, 2, 798, 801, 3, 2, 2, 2, 799, 797, 3, 2, 2, 2, 799, 800, 3, 2, 2, 2, 800, 27, 3, 2, 2, 2, 801, 799, 3, 2, 2, 2, 802, 803, 5, 302, 152, 2, 803, 804, 7, 27, 2, 2, 804, 805, 5, 30, 16, 2, 805, 29, 3, 2, 2, 2, 806, 807, 5, 302, 152, 2, 807, 31, 3, 2, 2, 2, 808, 809, 7, 46, 2, 2, 809, 810, 7, 125, 2, 2, 810, 811, 5, 34, 18, 2, 811, 812, 7, 130, 2, 2, 812, 33, 3, 2, 2, 2, 813, 815, 5, 36, 19, 2, 814, 813, 3, 2, 2, 2, 815, 816, 3, 2, 2, 2, 816, 814, 3, 2, 2, 2, 816, 817, 3, 2, 2, 2, 817, 35, 3, 2, 2, 2, 818, 819, 7, 190, 2, 2, 819, 820, 7, 132, 2, 2, 820, 821, 5, 626, 314, 2, 821, 37, 3, 2, 2, 2, 822, 829, 7, 14, 2, 2, 823, 824, 7, 14, 2, 2, 824, 826, 7, 7, 2, 2, 825, 827, 7, 190, 2, 2, 826, 825, 3, 2, 2, 2, 826, 827, 3, 2, 2, 2, 827, 829, 3, 2, 2, 2, 828, 822, 3, 2, 2, 2, 828, 823, 3, 2, 2, 2, 829, 39, 3, 2, 2, 2, 830, 831, 5, 42, 22, 2, 831, 832, 5, 44, 23, 2, 832, 833, 5, 48, 25, 2, 833, 838, 3, 2, 2, 2, 834, 835, 5, 42, 22, 2, 835, 836, 5, 48, 25, 2, 836, 838, 3, 2, 2, 2, 837, 830, 3, 2, 2, 2, 837, 834, 3, 2, 2, 2, 838, 41, 3, 2, 2, 2, 839, 841, 7, 38, 2, 2, 840, 842, 7, 190, 2, 2, 841, 840, 3, 2, 2, 2, 841, 842, 3, 2, 2, 2, 842, 849, 3, 2, 2, 2, 843, 844, 7, 10, 2, 2, 844, 846, 7, 50, 2, 2, 845, 847, 7, 190, 2, 2, 846, 845, 3, 2, 2, 2, 846, 847, 3, 2, 2, 2, 847, 849, 3, 2, 2, 2, 848, 839, 3, 2, 2, 2, 848, 843, 3, 2, 2, 2, 849, 43, 3, 2, 2, 2, 850, 851, 8, 23, 1, 2, 851, 852, 5, 46, 24, 2, 852, 857, 3, 2, 2, 2, 853, 854, 12, 3, 2, 2, 854, 856, 5, 46, 24, 2, 855, 853, 3, 2, 2, 2, 856, 859, 3, 2, 2, 2, 857, 855, 3, 2, 2, 2, 857, 858, 3, 2, 2, 2, 858, 45, 3, 2, 2, 2, 859, 857, 3, 2, 2, 2, 860, 861, 5, 18, 10, 2, 861, 47, 3, 2, 2, 2, 862, 864, 7, 117, 2, 2, 863, 865, 7, 190, 2, 2, 864, 863, 3, 2, 2, 2, 864, 865, 3, 2, 2, 2, 865, 884, 3, 2, 2, 2, 866, 867, 7, 14, 2, 2, 867, 869, 7, 38, 2, 2, 868, 870, 7, 190, 2, 2, 869, 868, 3, 2, 2, 2, 869, 870, 3, 2, 2, 2, 870, 884, 3, 2, 2, 2, 871, 872, 7, 118, 2, 2, 872, 874, 7, 50, 2, 2, 873, 875, 7, 190, 2, 2, 874, 873, 3, 2, 2, 2, 874, 875, 3, 2, 2, 2, 875, 884, 3, 2, 2, 2, 876, 877, 7, 14, 2, 2, 877, 878, 7, 10, 2, 2, 878, 880, 7, 50, 2, 2, 879, 881, 7, 190, 2, 2, 880, 879, 3, 2, 2, 2, 880, 881, 3, 2, 2, 2, 881, 884, 3, 2, 2, 2, 882, 884, 7, 14, 2, 2, 883, 862, 3, 2, 2, 2, 883, 866, 3, 2, 2, 2, 883, 871, 3, 2, 2, 2, 883, 876, 3, 2, 2, 2, 883, 882, 3, 2, 2, 2, 884, 49, 3, 2, 2, 2, 885, 886, 7, 188, 2, 2, 886, 887, 7, 90, 2, 2, 887, 889, 7, 125, 2, 2, 888, 890, 5, 52, 27, 2, 889, 888, 3, 2, 2, 2, 889, 890, 3, 2, 2, 2, 890, 891, 3, 2, 2, 2, 891, 892, 7, 130, 2, 2, 892, 51, 3, 2, 2, 2, 893, 894, 8, 27, 1, 2, 894, 899, 5, 54, 28, 2, 895, 899, 7, 136, 2, 2, 896, 897, 7, 136, 2, 2, 897, 899, 5, 54, 28, 2, 898, 893, 3, 2, 2, 2, 898, 895, 3, 2, 2, 2, 898, 896, 3, 2, 2, 2, 899, 917, 3, 2, 2, 2, 900, 901, 12, 7, 2, 2, 901, 916, 7, 136, 2, 2, 902, 903, 12, 6, 2, 2, 903, 904, 7, 136, 2, 2, 904, 916, 5, 54, 28, 2, 905, 906, 12, 5, 2, 2, 906, 907, 7, 124, 2, 2, 907, 916, 5, 54, 28, 2, 908, 909, 12, 4, 2, 2, 909, 910, 7, 124, 2, 2, 910, 916, 7, 136, 2, 2, 911, 912, 12, 3, 2, 2, 912, 913, 7, 124, 2, 2, 913, 914, 7, 136, 2, 2, 914, 916, 5, 54, 28, 2, 915, 900, 3, 2, 2, 2, 915, 902, 3, 2, 2, 2, 915, 905, 3, 2, 2, 2, 915, 908, 3, 2, 2, 2, 915, 911, 3, 2, 2, 2, 916, 919, 3, 2, 2, 2, 917, 915, 3, 2, 2, 2, 917, 918, 3, 2, 2, 2, 918, 53, 3, 2, 2, 2, 919, 917, 3, 2, 2, 2, 920, 931, 5, 56, 29, 2, 921, 922, 7, 188, 2, 2, 922, 931, 5, 56, 29, 2, 923, 931, 7, 153, 2, 2, 924, 931, 7, 154, 2, 2, 925, 926, 7, 154, 2, 2, 926, 931, 5, 56, 29, 2, 927, 928, 7, 154, 2, 2, 928, 929, 7, 188, 2, 2, 929, 931, 5, 56, 29, 2, 930, 920, 3, 2, 2, 2, 930, 921, 3, 2, 2, 2, 930, 923, 3, 2, 2, 2, 930, 924, 3, 2, 2, 2, 930, 925, 3, 2, 2, 2, 930, 927, 3, 2, 2, 2, 931, 55, 3, 2, 2, 2, 932, 942, 7, 155, 2, 2, 933, 942, 5, 58, 30, 2, 934, 942, 7, 179, 2, 2, 935, 942, 7, 157, 2, 2, 936, 942, 7, 190, 2, 2, 937, 938, 7, 125, 2, 2, 938, 939, 5, 52, 27, 2, 939, 940, 7, 130, 2, 2, 940, 942, 3, 2, 2, 2, 941, 932, 3, 2, 2, 2, 941, 933, 3, 2, 2, 2, 941, 934, 3, 2, 2, 2, 941, 935, 3, 2, 2, 2, 941, 936, 3, 2, 2, 2, 941, 937, 3, 2, 2, 2, 942, 57, 3, 2, 2, 2, 943, 944, 7, 180, 2, 2, 944, 945, 7, 186, 2, 2, 945, 946, 7, 180, 2, 2, 946, 952, 7, 187, 2, 2, 947, 948, 7, 190, 2, 2, 948, 949, 7, 186, 2, 2, 949, 950, 7, 180, 2, 2, 950, 952, 7, 187, 2, 2, 951, 943, 3, 2, 2, 2, 951, 947, 3, 2, 2, 2, 952, 59, 3, 2, 2, 2, 953, 954, 5, 298, 150, 2, 954, 955, 5, 304, 153, 2, 955, 956, 5, 62, 32, 2, 956, 961, 3, 2, 2, 2, 957, 958, 5, 298, 150, 2, 958, 959, 5, 62, 32, 2, 959, 961, 3, 2, 2, 2, 960, 953, 3, 2, 2, 2, 960, 957, 3, 2, 2, 2, 961, 61, 3, 2, 2, 2, 962, 963, 7, 14, 2, 2, 963, 965, 7, 5, 2, 2, 964, 966, 7, 190, 2, 2, 965, 964, 3, 2, 2, 2, 965, 966, 3, 2, 2, 2, 966, 973, 3, 2, 2, 2, 967, 969, 7, 6, 2, 2, 968, 970, 7, 190, 2, 2, 969, 968, 3, 2, 2, 2, 969, 970, 3, 2, 2, 2, 970, 973, 3, 2, 2, 2, 971, 973, 7, 14, 2, 2, 972, 962, 3, 2, 2, 2, 972, 967, 3, 2, 2, 2, 972, 971, 3, 2, 2, 2, 973, 63, 3, 2, 2, 2, 974, 975, 7, 8, 2, 2, 975, 976, 7, 190, 2, 2, 976, 977, 5, 66, 34, 2, 977, 978, 7, 57, 2, 2, 978, 979, 7, 125, 2, 2, 979, 980, 7, 190, 2, 2, 980, 981, 7, 130, 2, 2, 981, 65, 3, 2, 2, 2, 982, 984, 7, 125, 2, 2, 983, 985, 5, 68, 35, 2, 984, 983, 3, 2, 2, 2, 984, 985, 3, 2, 2, 2, 985, 986, 3, 2, 2, 2, 986, 988, 7, 130, 2, 2, 987, 982, 3, 2, 2, 2, 987, 988, 3, 2, 2, 2, 988, 67, 3, 2, 2, 2, 989, 994, 5, 70, 36, 2, 990, 991, 7, 124, 2, 2, 991, 993, 5, 70, 36, 2, 992, 990, 3, 2, 2, 2, 993, 996, 3, 2, 2, 2, 994, 992, 3, 2, 2, 2, 994, 995, 3, 2, 2, 2, 995, 69, 3, 2, 2, 2, 996, 994, 3, 2, 2, 2, 997, 1000, 5, 108, 55, 2, 998, 1000, 7, 194, 2, 2, 999, 997, 3, 2, 2, 2, 999, 998, 3, 2, 2, 2, 1000, 71, 3, 2, 2, 2, 1001, 1006, 5, 236, 119, 2, 1002, 1006, 5, 194, 98, 2, 1003, 1006, 5, 174, 88, 2, 1004, 1006, 5, 74, 38, 2, 1005, 1001, 3, 2, 2, 2, 1005, 1002, 3, 2, 2, 2, 1005, 1003, 3, 2, 2, 2, 1005, 1004, 3, 2, 2, 2, 1006, 73, 3, 2, 2, 2, 1007, 1022, 5, 162, 82, 2, 1008, 1022, 5, 394, 198, 2, 1009, 1022, 5, 158, 80, 2, 1010, 1022, 5, 148, 75, 2, 1011, 1022, 5, 142, 72, 2, 1012, 1022, 5, 136, 69, 2, 1013, 1022, 5, 128, 65, 2, 1014, 1022, 5, 120, 61, 2, 1015, 1022, 5, 112, 57, 2, 1016, 1022, 5, 102, 52, 2, 1017, 1022, 5, 94, 48, 2, 1018, 1022, 5, 88, 45, 2, 1019, 1022, 5, 82, 42, 2, 1020, 1022, 5, 76, 39, 2, 1021, 1007, 3, 2, 2, 2, 1021, 1008, 3, 2, 2, 2, 1021, 1009, 3, 2, 2, 2, 1021, 1010, 3, 2, 2, 2, 1021, 1011, 3, 2, 2, 2, 1021, 1012, 3, 2, 2, 2, 1021, 1013, 3, 2, 2, 2, 1021, 1014, 3, 2, 2, 2, 1021, 1015, 3, 2, 2, 2, 1021, 1016, 3, 2, 2, 2, 1021, 1017, 3, 2, 2, 2, 1021, 1018, 3, 2, 2, 2, 1021, 1019, 3, 2, 2, 2, 1021, 1020, 3, 2, 2, 2, 1022, 75, 3, 2, 2, 2, 1023, 1025, 7, 16, 2, 2, 1024, 1026, 7, 32, 2, 2, 1025, 1024, 3, 2, 2, 2, 1025, 1026, 3, 2, 2, 2, 1026, 1027, 3, 2, 2, 2, 1027, 1028, 5, 78, 40, 2, 1028, 77, 3, 2, 2, 2, 1029, 1034, 5, 80, 41, 2, 1030, 1031, 7, 124, 2, 2, 1031, 1033, 5, 80, 41, 2, 1032, 1030, 3, 2, 2, 2, 1033, 1036, 3, 2, 2, 2, 1034, 1032, 3, 2, 2, 2, 1034, 1035, 3, 2, 2, 2, 1035, 79, 3, 2, 2, 2, 1036, 1034, 3, 2, 2, 2, 1037, 1044, 5, 184, 93, 2, 1038, 1039, 5, 184, 93, 2, 1039, 1040, 7, 125, 2, 2, 1040, 1041, 5, 186, 94, 2, 1041, 1042, 7, 130, 2, 2, 1042, 1044, 3, 2, 2, 2, 1043, 1037, 3, 2, 2, 2, 1043, 1038, 3, 2, 2, 2, 1044, 81, 3, 2, 2, 2, 1045, 1047, 7, 39, 2, 2, 1046, 1048, 7, 32, 2, 2, 1047, 1046, 3, 2, 2, 2, 1047, 1048, 3, 2, 2, 2, 1048, 1049, 3, 2, 2, 2, 1049, 1050, 5, 84, 43, 2, 1050, 83, 3, 2, 2, 2, 1051, 1056, 5, 86, 44, 2, 1052, 1053, 7, 124, 2, 2, 1053, 1055, 5, 86, 44, 2, 1054, 1052, 3, 2, 2, 2, 1055, 1058, 3, 2, 2, 2, 1056, 1054, 3, 2, 2, 2, 1056, 1057, 3, 2, 2, 2, 1057, 85, 3, 2, 2, 2, 1058, 1056, 3, 2, 2, 2, 1059, 1066, 5, 184, 93, 2, 1060, 1061, 5, 184, 93, 2, 1061, 1062, 7, 125, 2, 2, 1062, 1063, 5, 270, 136, 2, 1063, 1064, 7, 130, 2, 2, 1064, 1066, 3, 2, 2, 2, 1065, 1059, 3, 2, 2, 2, 1065, 1060, 3, 2, 2, 2, 1066, 87, 3, 2, 2, 2, 1067, 1069, 7, 18, 2, 2, 1068, 1070, 7, 32, 2, 2, 1069, 1068, 3, 2, 2, 2, 1069, 1070, 3, 2, 2, 2, 1070, 1071, 3, 2, 2, 2, 1071, 1072, 5, 90, 46, 2, 1072, 89, 3, 2, 2, 2, 1073, 1078, 5, 92, 47, 2, 1074, 1075, 7, 124, 2, 2, 1075, 1077, 5, 92, 47, 2, 1076, 1074, 3, 2, 2, 2, 1077, 1080, 3, 2, 2, 2, 1078, 1076, 3, 2, 2, 2, 1078, 1079, 3, 2, 2, 2, 1079, 91, 3, 2, 2, 2, 1080, 1078, 3, 2, 2, 2, 1081, 1082, 5, 108, 55, 2, 1082, 93, 3, 2, 2, 2, 1083, 1084, 7, 19, 2, 2, 1084, 1085, 5, 96, 49, 2, 1085, 95, 3, 2, 2, 2, 1086, 1087, 8, 49, 1, 2, 1087, 1088, 7, 135, 2, 2, 1088, 1089, 5, 98, 50, 2, 1089, 1090, 7, 135, 2, 2, 1090, 1091, 5, 100, 51, 2, 1091, 1110, 3, 2, 2, 2, 1092, 1093, 12, 5, 2, 2, 1093, 1094, 7, 135, 2, 2, 1094, 1095, 5, 98, 50, 2, 1095, 1096, 7, 135, 2, 2, 1096, 1097, 5, 100, 51, 2, 1097, 1109, 3, 2, 2, 2, 1098, 1099, 12, 4, 2, 2, 1099, 1100, 7, 124, 2, 2, 1100, 1101, 7, 135, 2, 2, 1101, 1102, 5, 98, 50, 2, 1102, 1103, 7, 135, 2, 2, 1103, 1104, 5, 100, 51, 2, 1104, 1109, 3, 2, 2, 2, 1105, 1106, 12, 3, 2, 2, 1106, 1107, 7, 124, 2, 2, 1107, 1109, 5, 100, 51, 2, 1108, 1092, 3, 2, 2, 2, 1108, 1098, 3, 2, 2, 2, 1108, 1105, 3, 2, 2, 2, 1109, 1112, 3, 2, 2, 2, 1110, 1108, 3, 2, 2, 2, 1110, 1111, 3, 2, 2, 2, 1111, 97, 3, 2, 2, 2, 1112, 1110, 3, 2, 2, 2, 1113, 1114, 7, 190, 2, 2, 1114, 99, 3, 2, 2, 2, 1115, 1116, 5, 434, 218, 2, 1116, 101, 3, 2, 2, 2, 1117, 1118, 7, 20, 2, 2, 1118, 1119, 7, 125, 2, 2, 1119, 1120, 5, 110, 56, 2, 1120, 1122, 7, 130, 2, 2, 1121, 1123, 7, 32, 2, 2, 1122, 1121, 3, 2, 2, 2, 1122, 1123, 3, 2, 2, 2, 1123, 1124, 3, 2, 2, 2, 1124, 1125, 5, 104, 53, 2, 1125, 103, 3, 2, 2, 2, 1126, 1127, 5, 106, 54, 2, 1127, 1128, 7, 124, 2, 2, 1128, 1129, 5, 106, 54, 2, 1129, 105, 3, 2, 2, 2, 1130, 1131, 5, 108, 55, 2, 1131, 107, 3, 2, 2, 2, 1132, 1133, 7, 190, 2, 2, 1133, 109, 3, 2, 2, 2, 1134, 1135, 9, 2, 2, 2, 1135, 111, 3, 2, 2, 2, 1136, 1138, 7, 17, 2, 2, 1137, 1139, 7, 32, 2, 2, 1138, 1137, 3, 2, 2, 2, 1138, 1139, 3, 2, 2, 2, 1139, 1140, 3, 2, 2, 2, 1140, 1141, 5, 114, 58, 2, 1141, 113, 3, 2, 2, 2, 1142, 1147, 5, 116, 59, 2, 1143, 1144, 7, 124, 2, 2, 1144, 1146, 5, 116, 59, 2, 1145, 1143, 3, 2, 2, 2, 1146, 1149, 3, 2, 2, 2, 1147, 1145, 3, 2, 2, 2, 1147, 1148, 3, 2, 2, 2, 1148, 115, 3, 2, 2, 2, 1149, 1147, 3, 2, 2, 2, 1150, 1157, 5, 118, 60, 2, 1151, 1152, 5, 118, 60, 2, 1152, 1153, 7, 125, 2, 2, 1153, 1154, 5, 270, 136, 2, 1154, 1155, 7, 130, 2, 2, 1155, 1157, 3, 2, 2, 2, 1156, 1150, 3, 2, 2, 2, 1156, 1151, 3, 2, 2, 2, 1157, 117, 3, 2, 2, 2, 1158, 1159, 5, 302, 152, 2, 1159, 119, 3, 2, 2, 2, 1160, 1162, 7, 42, 2, 2, 1161, 1163, 7, 32, 2, 2, 1162, 1161, 3, 2, 2, 2, 1162, 1163, 3, 2, 2, 2, 1163, 1164, 3, 2, 2, 2, 1164, 1167, 5, 122, 62, 2, 1165, 1167, 7, 42, 2, 2, 1166, 1160, 3, 2, 2, 2, 1166, 1165, 3, 2, 2, 2, 1167, 121, 3, 2, 2, 2, 1168, 1173, 5, 124, 63, 2, 1169, 1170, 7, 124, 2, 2, 1170, 1172, 5, 124, 63, 2, 1171, 1169, 3, 2, 2, 2, 1172, 1175, 3, 2, 2, 2, 1173, 1171, 3, 2, 2, 2, 1173, 1174, 3, 2, 2, 2, 1174, 123, 3, 2, 2, 2, 1175, 1173, 3, 2, 2, 2, 1176, 1179, 5, 126, 64, 2, 1177, 1179, 5, 200, 101, 2, 1178, 1176, 3, 2, 2, 2, 1178, 1177, 3, 2, 2, 2, 1179, 125, 3, 2, 2, 2, 1180, 1181, 5, 302, 152, 2, 1181, 127, 3, 2, 2, 2, 1182, 1189, 7, 49, 2, 2, 1183, 1184, 7, 49, 2, 2, 1184, 1189, 5, 130, 66, 2, 1185, 1186, 7, 49, 2, 2, 1186, 1187, 7, 32, 2, 2, 1187, 1189, 5, 130, 66, 2, 1188, 1182, 3, 2, 2, 2, 1188, 1183, 3, 2, 2, 2, 1188, 1185, 3, 2, 2, 2, 1189, 129, 3, 2, 2, 2, 1190, 1192, 5, 132, 67, 2, 1191, 1190, 3, 2, 2, 2, 1192, 1193, 3, 2, 2, 2, 1193, 1191, 3, 2, 2, 2, 1193, 1194, 3, 2, 2, 2, 1194, 131, 3, 2, 2, 2, 1195, 1198, 5, 434, 218, 2, 1196, 1198, 5, 134, 68, 2, 1197, 1195, 3, 2, 2, 2, 1197, 1196, 3, 2, 2, 2, 1198, 133, 3, 2, 2, 2, 1199, 1200, 7, 135, 2, 2, 1200, 1201, 5, 172, 87, 2, 1201, 1202, 7, 135, 2, 2, 1202, 135, 3, 2, 2, 2, 1203, 1204, 7, 48, 2, 2, 1204, 1205, 5, 138, 70, 2, 1205, 137, 3, 2, 2, 2, 1206, 1208, 5, 140, 71, 2, 1207, 1206, 3, 2, 2, 2, 1208, 1209, 3, 2, 2, 2, 1209, 1207, 3, 2, 2, 2, 1209, 1210, 3, 2, 2, 2, 1210, 139, 3, 2, 2, 2, 1211, 1212, 7, 190, 2, 2, 1212, 141, 3, 2, 2, 2, 1213, 1214, 7, 47, 2, 2, 1214, 1215, 5, 144, 73, 2, 1215, 143, 3, 2, 2, 2, 1216, 1218, 5, 146, 74, 2, 1217, 1216, 3, 2, 2, 2, 1218, 1219, 3, 2, 2, 2, 1219, 1217, 3, 2, 2, 2, 1219, 1220, 3, 2, 2, 2, 1220, 145, 3, 2, 2, 2, 1221, 1222, 7, 190, 2, 2, 1222, 147, 3, 2, 2, 2, 1223, 1224, 7, 37, 2, 2, 1224, 1225, 5, 150, 76, 2, 1225, 149, 3, 2, 2, 2, 1226, 1228, 5, 152, 77, 2, 1227, 1226, 3, 2, 2, 2, 1228, 1229, 3, 2, 2, 2, 1229, 1227, 3, 2, 2, 2, 1229, 1230, 3, 2, 2, 2, 1230, 151, 3, 2, 2, 2, 1231, 1232, 7, 125, 2, 2, 1232, 1233, 5, 154, 78, 2, 1233, 1234, 7, 124, 2, 2, 1234, 1235, 5, 156, 79, 2, 1235, 1236, 7, 130, 2, 2, 1236, 153, 3, 2, 2, 2, 1237, 1238, 5, 406, 204, 2, 1238, 155, 3, 2, 2, 2, 1239, 1241, 5, 154, 78, 2, 1240, 1239, 3, 2, 2, 2, 1241, 1242, 3, 2, 2, 2, 1242, 1240, 3, 2, 2, 2, 1242, 1243, 3, 2, 2, 2, 1243, 157, 3, 2, 2, 2, 1244, 1245, 7, 15, 2, 2, 1245, 1250, 5, 160, 81, 2, 1246, 1247, 7, 15, 2, 2, 1247, 1248, 7, 32, 2, 2, 1248, 1250, 5, 160, 81, 2, 1249, 1244, 3, 2, 2, 2, 1249, 1246, 3, 2, 2, 2, 1250, 159, 3, 2, 2, 2, 1251, 1253, 5, 168, 85, 2, 1252, 1251, 3, 2, 2, 2, 1253, 1254, 3, 2, 2, 2, 1254, 1252, 3, 2, 2, 2, 1254, 1255, 3, 2, 2, 2, 1255, 161, 3, 2, 2, 2, 1256, 1257, 7, 34, 2, 2, 1257, 1258, 5, 164, 83, 2, 1258, 163, 3, 2, 2, 2, 1259, 1261, 8, 83, 1, 2, 1260, 1262, 5, 170, 86, 2, 1261, 1260, 3, 2, 2, 2, 1261, 1262, 3, 2, 2, 2, 1262, 1263, 3, 2, 2, 2, 1263, 1264, 5, 166, 84, 2, 1264, 1277, 3, 2, 2, 2, 1265, 1266, 12, 4, 2, 2, 1266, 1268, 7, 124, 2, 2, 1267, 1269, 5, 170, 86, 2, 1268, 1267, 3, 2, 2, 2, 1268, 1269, 3, 2, 2, 2, 1269, 1270, 3, 2, 2, 2, 1270, 1276, 5, 166, 84, 2, 1271, 1272, 12, 3, 2, 2, 1272, 1273, 5, 170, 86, 2, 1273, 1274, 5, 166, 84, 2, 1274, 1276, 3, 2, 2, 2, 1275, 1265, 3, 2, 2, 2, 1275, 1271, 3, 2, 2, 2, 1276, 1279, 3, 2, 2, 2, 1277, 1275, 3, 2, 2, 2, 1277, 1278, 3, 2, 2, 2, 1278, 165, 3, 2, 2, 2, 1279, 1277, 3, 2, 2, 2, 1280, 1283, 5, 434, 218, 2, 1281, 1283, 5, 168, 85, 2, 1282, 1280, 3, 2, 2, 2, 1282, 1281, 3, 2, 2, 2, 1283, 167, 3, 2, 2, 2, 1284, 1285, 5, 434, 218, 2, 1285, 1286, 7, 125, 2, 2, 1286, 1287, 5, 186, 94, 2, 1287, 1288, 7, 130, 2, 2, 1288, 169, 3, 2, 2, 2, 1289, 1290, 7, 135, 2, 2, 1290, 1291, 7, 186, 2, 2, 1291, 1292, 7, 135, 2, 2, 1292, 1298, 7, 187, 2, 2, 1293, 1294, 7, 135, 2, 2, 1294, 1295, 5, 172, 87, 2, 1295, 1296, 7, 135, 2, 2, 1296, 1298, 3, 2, 2, 2, 1297, 1289, 3, 2, 2, 2, 1297, 1293, 3, 2, 2, 2, 1298, 171, 3, 2, 2, 2, 1299, 1300, 7, 190, 2, 2, 1300, 173, 3, 2, 2, 2, 1301, 1302, 5, 274, 138, 2, 1302, 1303, 5, 180, 91, 2, 1303, 1312, 3, 2, 2, 2, 1304, 1306, 5, 274, 138, 2, 1305, 1307, 5, 176, 89, 2, 1306, 1305, 3, 2, 2, 2, 1306, 1307, 3, 2, 2, 2, 1307, 1308, 3, 2, 2, 2, 1308, 1309, 7, 32, 2, 2, 1309, 1310, 5, 180, 91, 2, 1310, 1312, 3, 2, 2, 2, 1311, 1301, 3, 2, 2, 2, 1311, 1304, 3, 2, 2, 2, 1312, 175, 3, 2, 2, 2, 1313, 1314, 8, 89, 1, 2, 1314, 1315, 7, 124, 2, 2, 1315, 1316, 5, 178, 90, 2, 1316, 1322, 3, 2, 2, 2, 1317, 1318, 12, 3, 2, 2, 1318, 1319, 7, 124, 2, 2, 1319, 1321, 5, 178, 90, 2, 1320, 1317, 3, 2, 2, 2, 1321, 1324, 3, 2, 2, 2, 1322, 1320, 3, 2, 2, 2, 1322, 1323, 3, 2, 2, 2, 1323, 177, 3, 2, 2, 2, 1324, 1322, 3, 2, 2, 2, 1325, 1345, 7, 46, 2, 2, 1326, 1345, 7, 42, 2, 2, 1327, 1345, 7, 17, 2, 2, 1328, 1329, 7, 15, 2, 2, 1329, 1330, 7, 125, 2, 2, 1330, 1331, 5, 186, 94, 2, 1331, 1332, 7, 130, 2, 2, 1332, 1345, 3, 2, 2, 2, 1333, 1345, 7, 47, 2, 2, 1334, 1335, 7, 20, 2, 2, 1335, 1336, 7, 125, 2, 2, 1336, 1337, 5, 110, 56, 2, 1337, 1338, 7, 130, 2, 2, 1338, 1345, 3, 2, 2, 2, 1339, 1345, 7, 48, 2, 2, 1340, 1345, 7, 18, 2, 2, 1341, 1345, 7, 39, 2, 2, 1342, 1345, 7, 49, 2, 2, 1343, 1345, 7, 16, 2, 2, 1344, 1325, 3, 2, 2, 2, 1344, 1326, 3, 2, 2, 2, 1344, 1327, 3, 2, 2, 2, 1344, 1328, 3, 2, 2, 2, 1344, 1333, 3, 2, 2, 2, 1344, 1334, 3, 2, 2, 2, 1344, 1339, 3, 2, 2, 2, 1344, 1340, 3, 2, 2, 2, 1344, 1341, 3, 2, 2, 2, 1344, 1342, 3, 2, 2, 2, 1344, 1343, 3, 2, 2, 2, 1345, 179, 3, 2, 2, 2, 1346, 1351, 5, 182, 92, 2, 1347, 1348, 7, 124, 2, 2, 1348, 1350, 5, 182, 92, 2, 1349, 1347, 3, 2, 2, 2, 1350, 1353, 3, 2, 2, 2, 1351, 1349, 3, 2, 2, 2, 1351, 1352, 3, 2, 2, 2, 1352, 181, 3, 2, 2, 2, 1353, 1351, 3, 2, 2, 2, 1354, 1398, 5, 184, 93, 2, 1355, 1356, 5, 184, 93, 2, 1356, 1357, 7, 125, 2, 2, 1357, 1358, 5, 186, 94, 2, 1358, 1359, 7, 130, 2, 2, 1359, 1398, 3, 2, 2, 2, 1360, 1361, 5, 184, 93, 2, 1361, 1362, 7, 194, 2, 2, 1362, 1363, 5, 284, 143, 2, 1363, 1398, 3, 2, 2, 2, 1364, 1365, 5, 184, 93, 2, 1365, 1366, 7, 125, 2, 2, 1366, 1367, 5, 186, 94, 2, 1367, 1368, 7, 130, 2, 2, 1368, 1369, 7, 194, 2, 2, 1369, 1370, 5, 284, 143, 2, 1370, 1398, 3, 2, 2, 2, 1371, 1372, 5, 184, 93, 2, 1372, 1373, 7, 132, 2, 2, 1373, 1374, 5, 626, 314, 2, 1374, 1398, 3, 2, 2, 2, 1375, 1376, 5, 184, 93, 2, 1376, 1377, 7, 125, 2, 2, 1377, 1378, 5, 186, 94, 2, 1378, 1379, 7, 130, 2, 2, 1379, 1380, 7, 132, 2, 2, 1380, 1381, 5, 626, 314, 2, 1381, 1398, 3, 2, 2, 2, 1382, 1383, 5, 184, 93, 2, 1383, 1384, 7, 194, 2, 2, 1384, 1385, 5, 284, 143, 2, 1385, 1386, 7, 132, 2, 2, 1386, 1387, 5, 626, 314, 2, 1387, 1398, 3, 2, 2, 2, 1388, 1389, 5, 184, 93, 2, 1389, 1390, 7, 194, 2, 2, 1390, 1391, 5, 284, 143, 2, 1391, 1392, 7, 125, 2, 2, 1392, 1393, 5, 186, 94, 2, 1393, 1394, 7, 130, 2, 2, 1394, 1395, 7, 132, 2, 2, 1395, 1396, 5, 626, 314, 2, 1396, 1398, 3, 2, 2, 2, 1397, 1354, 3, 2, 2, 2, 1397, 1355, 3, 2, 2, 2, 1397, 1360, 3, 2, 2, 2, 1397, 1364, 3, 2, 2, 2, 1397, 1371, 3, 2, 2, 2, 1397, 1375, 3, 2, 2, 2, 1397, 1382, 3, 2, 2, 2, 1397, 1388, 3, 2, 2, 2, 1398, 183, 3, 2, 2, 2, 1399, 1400, 7, 190, 2, 2, 1400, 185, 3, 2, 2, 2, 1401, 1406, 5, 262, 132, 2, 1402, 1406, 5, 192, 97, 2, 1403, 1406, 5, 188, 95, 2, 1404, 1406, 5, 270, 136, 2, 1405, 1401, 3, 2, 2, 2, 1405, 1402, 3, 2, 2, 2, 1405, 1403, 3, 2, 2, 2, 1405, 1404, 3, 2, 2, 2, 1406, 187, 3, 2, 2, 2, 1407, 1408, 8, 95, 1, 2, 1408, 1409, 5, 266, 134, 2, 1409, 1410, 7, 131, 2, 2, 1410, 1417, 3, 2, 2, 2, 1411, 1412, 5, 270, 136, 2, 1412, 1413, 7, 124, 2, 2, 1413, 1414, 5, 266, 134, 2, 1414, 1415, 7, 131, 2, 2, 1415, 1417, 3, 2, 2, 2, 1416, 1407, 3, 2, 2, 2, 1416, 1411, 3, 2, 2, 2, 1417, 1423, 3, 2, 2, 2, 1418, 1419, 12, 3, 2, 2, 1419, 1420, 7, 124, 2, 2, 1420, 1422, 5, 190, 96, 2, 1421, 1418, 3, 2, 2, 2, 1422, 1425, 3, 2, 2, 2, 1423, 1421, 3, 2, 2, 2, 1423, 1424, 3, 2, 2, 2, 1424, 189, 3, 2, 2, 2, 1425, 1423, 3, 2, 2, 2, 1426, 1427, 5, 266, 134, 2, 1427, 1428, 7, 131, 2, 2, 1428, 1431, 3, 2, 2, 2, 1429, 1431, 7, 131, 2, 2, 1430, 1426, 3, 2, 2, 2, 1430, 1429, 3, 2, 2, 2, 1431, 191, 3, 2, 2, 2, 1432, 1448, 7, 194, 2, 2, 1433, 1434, 5, 266, 134, 2, 1434, 1435, 7, 131, 2, 2, 1435, 1436, 7, 194, 2, 2, 1436, 1448, 3, 2, 2, 2, 1437, 1438, 5, 262, 132, 2, 1438, 1439, 7, 124, 2, 2, 1439, 1440, 7, 194, 2, 2, 1440, 1448, 3, 2, 2, 2, 1441, 1442, 5, 262, 132, 2, 1442, 1443, 7, 124, 2, 2, 1443, 1444, 5, 266, 134, 2, 1444, 1445, 7, 131, 2, 2, 1445, 1446, 7, 194, 2, 2, 1446, 1448, 3, 2, 2, 2, 1447, 1432, 3, 2, 2, 2, 1447, 1433, 3, 2, 2, 2, 1447, 1437, 3, 2, 2, 2, 1447, 1441, 3, 2, 2, 2, 1448, 193, 3, 2, 2, 2, 1449, 1450, 5, 198, 100, 2, 1450, 1451, 5, 204, 103, 2, 1451, 1452, 5, 196, 99, 2, 1452, 195, 3, 2, 2, 2, 1453, 1457, 7, 12, 2, 2, 1454, 1455, 7, 14, 2, 2, 1455, 1457, 7, 185, 2, 2, 1456, 1453, 3, 2, 2, 2, 1456, 1454, 3, 2, 2, 2, 1457, 1459, 3, 2, 2, 2, 1458, 1460, 7, 190, 2, 2, 1459, 1458, 3, 2, 2, 2, 1459, 1460, 3, 2, 2, 2, 1460, 197, 3, 2, 2, 2, 1461, 1462, 7, 185, 2, 2, 1462, 1467, 7, 190, 2, 2, 1463, 1464, 7, 185, 2, 2, 1464, 1467, 5, 200, 101, 2, 1465, 1467, 7, 185, 2, 2, 1466, 1461, 3, 2, 2, 2, 1466, 1463, 3, 2, 2, 2, 1466, 1465, 3, 2, 2, 2, 1467, 199, 3, 2, 2, 2, 1468, 1469, 7, 24, 2, 2, 1469, 1470, 7, 125, 2, 2, 1470, 1471, 5, 202, 102, 2, 1471, 1472, 7, 130, 2, 2, 1472, 1478, 3, 2, 2, 2, 1473, 1474, 7, 28, 2, 2, 1474, 1475, 7, 125, 2, 2, 1475, 1476, 7, 132, 2, 2, 1476, 1478, 7, 130, 2, 2, 1477, 1468, 3, 2, 2, 2, 1477, 1473, 3, 2, 2, 2, 1478, 201, 3, 2, 2, 2, 1479, 1493, 7, 29, 2, 2, 1480, 1493, 7, 137, 2, 2, 1481, 1493, 7, 194, 2, 2, 1482, 1493, 9, 3, 2, 2, 1483, 1493, 9, 4, 2, 2, 1484, 1485, 7, 135, 2, 2, 1485, 1486, 7, 186, 2, 2, 1486, 1487, 7, 135, 2, 2, 1487, 1493, 7, 187, 2, 2, 1488, 1493, 7, 138, 2, 2, 1489, 1493, 7, 139, 2, 2, 1490, 1493, 7, 140, 2, 2, 1491, 1493, 9, 5, 2, 2, 1492, 1479, 3, 2, 2, 2, 1492, 1480, 3, 2, 2, 2, 1492, 1481, 3, 2, 2, 2, 1492, 1482, 3, 2, 2, 2, 1492, 1483, 3, 2, 2, 2, 1492, 1484, 3, 2, 2, 2, 1492, 1488, 3, 2, 2, 2, 1492, 1489, 3, 2, 2, 2, 1492, 1490, 3, 2, 2, 2, 1492, 1491, 3, 2, 2, 2, 1493, 203, 3, 2, 2, 2, 1494, 1495, 8, 103, 1, 2, 1495, 1496, 5, 206, 104, 2, 1496, 1501, 3, 2, 2, 2, 1497, 1498, 12, 3, 2, 2, 1498, 1500, 5, 206, 104, 2, 1499, 1497, 3, 2, 2, 2, 1500, 1503, 3, 2, 2, 2, 1501, 1499, 3, 2, 2, 2, 1501, 1502, 3, 2, 2, 2, 1502, 205, 3, 2, 2, 2, 1503, 1501, 3, 2, 2, 2, 1504, 1507, 5, 214, 108, 2, 1505, 1507, 5, 208, 105, 2, 1506, 1504, 3, 2, 2, 2, 1506, 1505, 3, 2, 2, 2, 1507, 207, 3, 2, 2, 2, 1508, 1509, 7, 5, 2, 2, 1509, 1510, 7, 13, 2, 2, 1510, 1511, 5, 210, 106, 2, 1511, 209, 3, 2, 2, 2, 1512, 1517, 5, 212, 107, 2, 1513, 1514, 7, 124, 2, 2, 1514, 1516, 5, 212, 107, 2, 1515, 1513, 3, 2, 2, 2, 1516, 1519, 3, 2, 2, 2, 1517, 1515, 3, 2, 2, 2, 1517, 1518, 3, 2, 2, 2, 1518, 211, 3, 2, 2, 2, 1519, 1517, 3, 2, 2, 2, 1520, 1521, 5, 302, 152, 2, 1521, 213, 3, 2, 2, 2, 1522, 1523, 5, 222, 112, 2, 1523, 1524, 7, 190, 2, 2, 1524, 1525, 5, 224, 113, 2, 1525, 1530, 3, 2, 2, 2, 1526, 1527, 7, 11, 2, 2, 1527, 1528, 7, 190, 2, 2, 1528, 1530, 5, 216, 109, 2, 1529, 1522, 3, 2, 2, 2, 1529, 1526, 3, 2, 2, 2, 1530, 215, 3, 2, 2, 2, 1531, 1533, 5, 66, 34, 2, 1532, 1534, 5, 232, 117, 2, 1533, 1532, 3, 2, 2, 2, 1533, 1534, 3, 2, 2, 2, 1534, 1535, 3, 2, 2, 2, 1535, 1536, 5, 218, 110, 2, 1536, 217, 3, 2, 2, 2, 1537, 1544, 7, 14, 2, 2, 1538, 1539, 7, 14, 2, 2, 1539, 1541, 7, 11, 2, 2, 1540, 1542, 7, 190, 2, 2, 1541, 1540, 3, 2, 2, 2, 1541, 1542, 3, 2, 2, 2, 1542, 1544, 3, 2, 2, 2, 1543, 1537, 3, 2, 2, 2, 1543, 1538, 3, 2, 2, 2, 1544, 219, 3, 2, 2, 2, 1545, 1546, 7, 3, 2, 2, 1546, 221, 3, 2, 2, 2, 1547, 1549, 5, 220, 111, 2, 1548, 1547, 3, 2, 2, 2, 1548, 1549, 3, 2, 2, 2, 1549, 1551, 3, 2, 2, 2, 1550, 1552, 5, 274, 138, 2, 1551, 1550, 3, 2, 2, 2, 1551, 1552, 3, 2, 2, 2, 1552, 1553, 3, 2, 2, 2, 1553, 1559, 7, 9, 2, 2, 1554, 1555, 5, 274, 138, 2, 1555, 1556, 7, 3, 2, 2, 1556, 1557, 7, 9, 2, 2, 1557, 1559, 3, 2, 2, 2, 1558, 1548, 3, 2, 2, 2, 1558, 1554, 3, 2, 2, 2, 1559, 223, 3, 2, 2, 2, 1560, 1562, 5, 226, 114, 2, 1561, 1563, 5, 232, 117, 2, 1562, 1561, 3, 2, 2, 2, 1562, 1563, 3, 2, 2, 2, 1563, 1564, 3, 2, 2, 2, 1564, 1565, 5, 234, 118, 2, 1565, 225, 3, 2, 2, 2, 1566, 1568, 7, 125, 2, 2, 1567, 1569, 5, 228, 115, 2, 1568, 1567, 3, 2, 2, 2, 1568, 1569, 3, 2, 2, 2, 1569, 1570, 3, 2, 2, 2, 1570, 1571, 7, 130, 2, 2, 1571, 227, 3, 2, 2, 2, 1572, 1577, 5, 230, 116, 2, 1573, 1574, 7, 124, 2, 2, 1574, 1576, 5, 230, 116, 2, 1575, 1573, 3, 2, 2, 2, 1576, 1579, 3, 2, 2, 2, 1577, 1575, 3, 2, 2, 2, 1577, 1578, 3, 2, 2, 2, 1578, 229, 3, 2, 2, 2, 1579, 1577, 3, 2, 2, 2, 1580, 1581, 5, 108, 55, 2, 1581, 231, 3, 2, 2, 2, 1582, 1583, 8, 117, 1, 2, 1583, 1584, 5, 18, 10, 2, 1584, 1589, 3, 2, 2, 2, 1585, 1586, 12, 3, 2, 2, 1586, 1588, 5, 18, 10, 2, 1587, 1585, 3, 2, 2, 2, 1588, 1591, 3, 2, 2, 2, 1589, 1587, 3, 2, 2, 2, 1589, 1590, 3, 2, 2, 2, 1590, 233, 3, 2, 2, 2, 1591, 1589, 3, 2, 2, 2, 1592, 1599, 7, 14, 2, 2, 1593, 1594, 7, 14, 2, 2, 1594, 1596, 7, 9, 2, 2, 1595, 1597, 7, 190, 2, 2, 1596, 1595, 3, 2, 2, 2, 1596, 1597, 3, 2, 2, 2, 1597, 1599, 3, 2, 2, 2, 1598, 1592, 3, 2, 2, 2, 1598, 1593, 3, 2, 2, 2, 1599, 235, 3, 2, 2, 2, 1600, 1601, 5, 240, 121, 2, 1601, 1602, 5, 242, 122, 2, 1602, 1603, 5, 238, 120, 2, 1603, 237, 3, 2, 2, 2, 1604, 1605, 7, 184, 2, 2, 1605, 1613, 7, 190, 2, 2, 1606, 1613, 7, 184, 2, 2, 1607, 1608, 7, 14, 2, 2, 1608, 1609, 7, 189, 2, 2, 1609, 1613, 7, 190, 2, 2, 1610, 1611, 7, 14, 2, 2, 1611, 1613, 7, 189, 2, 2, 1612, 1604, 3, 2, 2, 2, 1612, 1606, 3, 2, 2, 2, 1612, 1607, 3, 2, 2, 2, 1612, 1610, 3, 2, 2, 2, 1613, 239, 3, 2, 2, 2, 1614, 1615, 7, 189, 2, 2, 1615, 1625, 7, 190, 2, 2, 1616, 1617, 7, 189, 2, 2, 1617, 1618, 7, 32, 2, 2, 1618, 1625, 7, 190, 2, 2, 1619, 1620, 7, 189, 2, 2, 1620, 1621, 7, 124, 2, 2, 1621, 1622, 7, 42, 2, 2, 1622, 1623, 7, 32, 2, 2, 1623, 1625, 7, 190, 2, 2, 1624, 1614, 3, 2, 2, 2, 1624, 1616, 3, 2, 2, 2, 1624, 1619, 3, 2, 2, 2, 1625, 241, 3, 2, 2, 2, 1626, 1627, 8, 122, 1, 2, 1627, 1628, 5, 244, 123, 2, 1628, 1633, 3, 2, 2, 2, 1629, 1630, 12, 3, 2, 2, 1630, 1632, 5, 244, 123, 2, 1631, 1629, 3, 2, 2, 2, 1632, 1635, 3, 2, 2, 2, 1633, 1631, 3, 2, 2, 2, 1633, 1634, 3, 2, 2, 2, 1634, 243, 3, 2, 2, 2, 1635, 1633, 3, 2, 2, 2, 1636, 1639, 5, 246, 124, 2, 1637, 1639, 5, 248, 125, 2, 1638, 1636, 3, 2, 2, 2, 1638, 1637, 3, 2, 2, 2, 1639, 245, 3, 2, 2, 2, 1640, 1641, 9, 6, 2, 2, 1641, 247, 3, 2, 2, 2, 1642, 1643, 5, 274, 138, 2, 1643, 1644, 7, 124, 2, 2, 1644, 1645, 5, 256, 129, 2, 1645, 1646, 7, 32, 2, 2, 1646, 1647, 5, 250, 126, 2, 1647, 1656, 3, 2, 2, 2, 1648, 1649, 5, 274, 138, 2, 1649, 1650, 7, 32, 2, 2, 1650, 1651, 5, 250, 126, 2, 1651, 1656, 3, 2, 2, 2, 1652, 1653, 5, 274, 138, 2, 1653, 1654, 5, 250, 126, 2, 1654, 1656, 3, 2, 2, 2, 1655, 1642, 3, 2, 2, 2, 1655, 1648, 3, 2, 2, 2, 1655, 1652, 3, 2, 2, 2, 1656, 249, 3, 2, 2, 2, 1657, 1662, 5, 252, 127, 2, 1658, 1659, 7, 124, 2, 2, 1659, 1661, 5, 252, 127, 2, 1660, 1658, 3, 2, 2, 2, 1661, 1664, 3, 2, 2, 2, 1662, 1660, 3, 2, 2, 2, 1662, 1663, 3, 2, 2, 2, 1663, 251, 3, 2, 2, 2, 1664, 1662, 3, 2, 2, 2, 1665, 1666, 5, 254, 128, 2, 1666, 1667, 7, 125, 2, 2, 1667, 1668, 5, 260, 131, 2, 1668, 1669, 7, 130, 2, 2, 1669, 1670, 7, 194, 2, 2, 1670, 1671, 5, 284, 143, 2, 1671, 1709, 3, 2, 2, 2, 1672, 1673, 5, 254, 128, 2, 1673, 1674, 7, 125, 2, 2, 1674, 1675, 5, 260, 131, 2, 1675, 1676, 7, 130, 2, 2, 1676, 1677, 7, 132, 2, 2, 1677, 1678, 5, 626, 314, 2, 1678, 1709, 3, 2, 2, 2, 1679, 1680, 5, 254, 128, 2, 1680, 1681, 7, 125, 2, 2, 1681, 1682, 5, 260, 131, 2, 1682, 1683, 7, 130, 2, 2, 1683, 1709, 3, 2, 2, 2, 1684, 1685, 5, 254, 128, 2, 1685, 1686, 7, 194, 2, 2, 1686, 1687, 5, 284, 143, 2, 1687, 1709, 3, 2, 2, 2, 1688, 1689, 5, 254, 128, 2, 1689, 1690, 7, 132, 2, 2, 1690, 1691, 5, 626, 314, 2, 1691, 1709, 3, 2, 2, 2, 1692, 1693, 5, 254, 128, 2, 1693, 1694, 7, 194, 2, 2, 1694, 1695, 5, 284, 143, 2, 1695, 1696, 7, 132, 2, 2, 1696, 1697, 5, 626, 314, 2, 1697, 1709, 3, 2, 2, 2, 1698, 1699, 5, 254, 128, 2, 1699, 1700, 7, 194, 2, 2, 1700, 1701, 5, 284, 143, 2, 1701, 1702, 7, 125, 2, 2, 1702, 1703, 5, 260, 131, 2, 1703, 1704, 7, 130, 2, 2, 1704, 1705, 7, 132, 2, 2, 1705, 1706, 5, 626, 314, 2, 1706, 1709, 3, 2, 2, 2, 1707, 1709, 5, 254, 128, 2, 1708, 1665, 3, 2, 2, 2, 1708, 1672, 3, 2, 2, 2, 1708, 1679, 3, 2, 2, 2, 1708, 1684, 3, 2, 2, 2, 1708, 1688, 3, 2, 2, 2, 1708, 1692, 3, 2, 2, 2, 1708, 1698, 3, 2, 2, 2, 1708, 1707, 3, 2, 2, 2, 1709, 253, 3, 2, 2, 2, 1710, 1711, 7, 190, 2, 2, 1711, 255, 3, 2, 2, 2, 1712, 1717, 5, 258, 130, 2, 1713, 1714, 7, 124, 2, 2, 1714, 1716, 5, 258, 130, 2, 1715, 1713, 3, 2, 2, 2, 1716, 1719, 3, 2, 2, 2, 1717, 1715, 3, 2, 2, 2, 1717, 1718, 3, 2, 2, 2, 1718, 257, 3, 2, 2, 2, 1719, 1717, 3, 2, 2, 2, 1720, 1727, 7, 39, 2, 2, 1721, 1722, 7, 15, 2, 2, 1722, 1723, 7, 125, 2, 2, 1723, 1724, 5, 260, 131, 2, 1724, 1725, 7, 130, 2, 2, 1725, 1727, 3, 2, 2, 2, 1726, 1720, 3, 2, 2, 2, 1726, 1721, 3, 2, 2, 2, 1727, 259, 3, 2, 2, 2, 1728, 1731, 5, 262, 132, 2, 1729, 1731, 5, 270, 136, 2, 1730, 1728, 3, 2, 2, 2, 1730, 1729, 3, 2, 2, 2, 1731, 261, 3, 2, 2, 2, 1732, 1737, 5, 264, 133, 2, 1733, 1734, 7, 124, 2, 2, 1734, 1736, 5, 264, 133, 2, 1735, 1733, 3, 2, 2, 2, 1736, 1739, 3, 2, 2, 2, 1737, 1735, 3, 2, 2, 2, 1737, 1738, 3, 2, 2, 2, 1738, 263, 3, 2, 2, 2, 1739, 1737, 3, 2, 2, 2, 1740, 1741, 5, 266, 134, 2, 1741, 1742, 7, 131, 2, 2, 1742, 1743, 5, 268, 135, 2, 1743, 1746, 3, 2, 2, 2, 1744, 1746, 5, 268, 135, 2, 1745, 1740, 3, 2, 2, 2, 1745, 1744, 3, 2, 2, 2, 1746, 265, 3, 2, 2, 2, 1747, 1748, 5, 626, 314, 2, 1748, 267, 3, 2, 2, 2, 1749, 1750, 5, 626, 314, 2, 1750, 269, 3, 2, 2, 2, 1751, 1756, 5, 272, 137, 2, 1752, 1753, 7, 124, 2, 2, 1753, 1755, 5, 272, 137, 2, 1754, 1752, 3, 2, 2, 2, 1755, 1758, 3, 2, 2, 2, 1756, 1754, 3, 2, 2, 2, 1756, 1757, 3, 2, 2, 2, 1757, 271, 3, 2, 2, 2, 1758, 1756, 3, 2, 2, 2, 1759, 1760, 7, 131, 2, 2, 1760, 273, 3, 2, 2, 2, 1761, 1787, 7, 170, 2, 2, 1762, 1787, 7, 36, 2, 2, 1763, 1787, 7, 31, 2, 2, 1764, 1787, 7, 168, 2, 2, 1765, 1787, 7, 171, 2, 2, 1766, 1787, 7, 45, 2, 2, 1767, 1768, 7, 45, 2, 2, 1768, 1787, 5, 282, 142, 2, 1769, 1770, 7, 170, 2, 2, 1770, 1787, 5, 276, 139, 2, 1771, 1772, 7, 36, 2, 2, 1772, 1787, 5, 276, 139, 2, 1773, 1774, 7, 95, 2, 2, 1774, 1787, 7, 169, 2, 2, 1775, 1776, 7, 168, 2, 2, 1776, 1787, 5, 276, 139, 2, 1777, 1778, 7, 45, 2, 2, 1778, 1787, 5, 280, 141, 2, 1779, 1780, 7, 171, 2, 2, 1780, 1787, 5, 276, 139, 2, 1781, 1782, 7, 189, 2, 2, 1782, 1783, 7, 125, 2, 2, 1783, 1784, 5, 278, 140, 2, 1784, 1785, 7, 130, 2, 2, 1785, 1787, 3, 2, 2, 2, 1786, 1761, 3, 2, 2, 2, 1786, 1762, 3, 2, 2, 2, 1786, 1763, 3, 2, 2, 2, 1786, 1764, 3, 2, 2, 2, 1786, 1765, 3, 2, 2, 2, 1786, 1766, 3, 2, 2, 2, 1786, 1767, 3, 2, 2, 2, 1786, 1769, 3, 2, 2, 2, 1786, 1771, 3, 2, 2, 2, 1786, 1773, 3, 2, 2, 2, 1786, 1775, 3, 2, 2, 2, 1786, 1777, 3, 2, 2, 2, 1786, 1779, 3, 2, 2, 2, 1786, 1781, 3, 2, 2, 2, 1787, 275, 3, 2, 2, 2, 1788, 1789, 7, 125, 2, 2, 1789, 1790, 7, 119, 2, 2, 1790, 1791, 7, 132, 2, 2, 1791, 1792, 5, 626, 314, 2, 1792, 1793, 7, 130, 2, 2, 1793, 1799, 3, 2, 2, 2, 1794, 1795, 7, 125, 2, 2, 1795, 1796, 5, 626, 314, 2, 1796, 1797, 7, 130, 2, 2, 1797, 1799, 3, 2, 2, 2, 1798, 1788, 3, 2, 2, 2, 1798, 1794, 3, 2, 2, 2, 1799, 277, 3, 2, 2, 2, 1800, 1801, 5, 302, 152, 2, 1801, 279, 3, 2, 2, 2, 1802, 1803, 7, 125, 2, 2, 1803, 1804, 7, 120, 2, 2, 1804, 1805, 7, 132, 2, 2, 1805, 1806, 5, 296, 149, 2, 1806, 1807, 7, 124, 2, 2, 1807, 1808, 7, 119, 2, 2, 1808, 1809, 7, 132, 2, 2, 1809, 1810, 5, 626, 314, 2, 1810, 1811, 7, 130, 2, 2, 1811, 1837, 3, 2, 2, 2, 1812, 1813, 7, 125, 2, 2, 1813, 1814, 7, 120, 2, 2, 1814, 1815, 7, 132, 2, 2, 1815, 1816, 5, 296, 149, 2, 1816, 1817, 7, 124, 2, 2, 1817, 1818, 5, 626, 314, 2, 1818, 1819, 7, 130, 2, 2, 1819, 1837, 3, 2, 2, 2, 1820, 1821, 7, 125, 2, 2, 1821, 1822, 7, 120, 2, 2, 1822, 1823, 7, 132, 2, 2, 1823, 1824, 5, 296, 149, 2, 1824, 1825, 7, 130, 2, 2, 1825, 1837, 3, 2, 2, 2, 1826, 1827, 7, 125, 2, 2, 1827, 1828, 7, 119, 2, 2, 1828, 1829, 7, 132, 2, 2, 1829, 1830, 5, 626, 314, 2, 1830, 1831, 7, 130, 2, 2, 1831, 1837, 3, 2, 2, 2, 1832, 1833, 7, 125, 2, 2, 1833, 1834, 5, 626, 314, 2, 1834, 1835, 7, 130, 2, 2, 1835, 1837, 3, 2, 2, 2, 1836, 1802, 3, 2, 2, 2, 1836, 1812, 3, 2, 2, 2, 1836, 1820, 3, 2, 2, 2, 1836, 1826, 3, 2, 2, 2, 1836, 1832, 3, 2, 2, 2, 1837, 281, 3, 2, 2, 2, 1838, 1839, 7, 194, 2, 2, 1839, 1845, 5, 284, 143, 2, 1840, 1841, 7, 125, 2, 2, 1841, 1842, 5, 296, 149, 2, 1842, 1843, 7, 130, 2, 2, 1843, 1845, 3, 2, 2, 2, 1844, 1838, 3, 2, 2, 2, 1844, 1840, 3, 2, 2, 2, 1845, 283, 3, 2, 2, 2, 1846, 1847, 7, 125, 2, 2, 1847, 1848, 5, 296, 149, 2, 1848, 1849, 7, 130, 2, 2, 1849, 1852, 3, 2, 2, 2, 1850, 1852, 5, 286, 144, 2, 1851, 1846, 3, 2, 2, 2, 1851, 1850, 3, 2, 2, 2, 1852, 285, 3, 2, 2, 2, 1853, 1871, 5, 294, 148, 2, 1854, 1856, 9, 3, 2, 2, 1855, 1854, 3, 2, 2, 2, 1855, 1856, 3, 2, 2, 2, 1856, 1857, 3, 2, 2, 2, 1857, 1871, 5, 688, 345, 2, 1858, 1871, 7, 179, 2, 2, 1859, 1871, 7, 157, 2, 2, 1860, 1871, 5, 684, 343, 2, 1861, 1862, 7, 188, 2, 2, 1862, 1863, 7, 172, 2, 2, 1863, 1871, 7, 179, 2, 2, 1864, 1865, 5, 294, 148, 2, 1865, 1866, 7, 172, 2, 2, 1866, 1867, 7, 179, 2, 2, 1867, 1871, 3, 2, 2, 2, 1868, 1871, 5, 290, 146, 2, 1869, 1871, 5, 288, 145, 2, 1870, 1853, 3, 2, 2, 2, 1870, 1855, 3, 2, 2, 2, 1870, 1858, 3, 2, 2, 2, 1870, 1859, 3, 2, 2, 2, 1870, 1860, 3, 2, 2, 2, 1870, 1861, 3, 2, 2, 2, 1870, 1864, 3, 2, 2, 2, 1870, 1868, 3, 2, 2, 2, 1870, 1869, 3, 2, 2, 2, 1871, 287, 3, 2, 2, 2, 1872, 1873, 9, 7, 2, 2, 1873, 289, 3, 2, 2, 2, 1874, 1875, 5, 278, 140, 2, 1875, 1876, 7, 125, 2, 2, 1876, 1877, 5, 292, 147, 2, 1877, 1878, 7, 130, 2, 2, 1878, 291, 3, 2, 2, 2, 1879, 1880, 5, 626, 314, 2, 1880, 1881, 7, 124, 2, 2, 1881, 1882, 5, 626, 314, 2, 1882, 293, 3, 2, 2, 2, 1883, 1884, 7, 190, 2, 2, 1884, 295, 3, 2, 2, 2, 1885, 1888, 5, 626, 314, 2, 1886, 1888, 7, 194, 2, 2, 1887, 1885, 3, 2, 2, 2, 1887, 1886, 3, 2, 2, 2, 1888, 297, 3, 2, 2, 2, 1889, 1890, 7, 5, 2, 2, 1890, 1891, 5, 300, 151, 2, 1891, 299, 3, 2, 2, 2, 1892, 1893, 5, 302, 152, 2, 1893, 301, 3, 2, 2, 2, 1894, 1895, 7, 190, 2, 2, 1895, 303, 3, 2, 2, 2, 1896, 1897, 8, 153, 1, 2, 1897, 1900, 5, 18, 10, 2, 1898, 1900, 5, 306, 154, 2, 1899, 1896, 3, 2, 2, 2, 1899, 1898, 3, 2, 2, 2, 1900, 1907, 3, 2, 2, 2, 1901, 1902, 12, 4, 2, 2, 1902, 1906, 5, 18, 10, 2, 1903, 1904, 12, 3, 2, 2, 1904, 1906, 5, 306, 154, 2, 1905, 1901, 3, 2, 2, 2, 1905, 1903, 3, 2, 2, 2, 1906, 1909, 3, 2, 2, 2, 1907, 1905, 3, 2, 2, 2, 1907, 1908, 3, 2, 2, 2, 1908, 305, 3, 2, 2, 2, 1909, 1907, 3, 2, 2, 2, 1910, 1913, 5, 308, 155, 2, 1911, 1913, 5, 310, 156, 2, 1912, 1910, 3, 2, 2, 2, 1912, 1911, 3, 2, 2, 2, 1913, 307, 3, 2, 2, 2, 1914, 1915, 7, 4, 2, 2, 1915, 309, 3, 2, 2, 2, 1916, 1919, 5, 312, 157, 2, 1917, 1919, 5, 608, 305, 2, 1918, 1916, 3, 2, 2, 2, 1918, 1917, 3, 2, 2, 2, 1919, 311, 3, 2, 2, 2, 1920, 1921, 5, 222, 112, 2, 1921, 1922, 5, 314, 158, 2, 1922, 1923, 5, 316, 159, 2, 1923, 313, 3, 2, 2, 2, 1924, 1925, 7, 190, 2, 2, 1925, 315, 3, 2, 2, 2, 1926, 1928, 5, 226, 114, 2, 1927, 1929, 5, 318, 160, 2, 1928, 1927, 3, 2, 2, 2, 1928, 1929, 3, 2, 2, 2, 1929, 1930, 3, 2, 2, 2, 1930, 1931, 5, 234, 118, 2, 1931, 1955, 3, 2, 2, 2, 1932, 1933, 5, 226, 114, 2, 1933, 1934, 7, 57, 2, 2, 1934, 1935, 7, 125, 2, 2, 1935, 1936, 7, 190, 2, 2, 1936, 1938, 7, 130, 2, 2, 1937, 1939, 5, 318, 160, 2, 1938, 1937, 3, 2, 2, 2, 1938, 1939, 3, 2, 2, 2, 1939, 1940, 3, 2, 2, 2, 1940, 1941, 5, 234, 118, 2, 1941, 1955, 3, 2, 2, 2, 1942, 1943, 5, 226, 114, 2, 1943, 1944, 7, 57, 2, 2, 1944, 1945, 7, 125, 2, 2, 1945, 1946, 7, 190, 2, 2, 1946, 1947, 7, 130, 2, 2, 1947, 1948, 5, 14, 8, 2, 1948, 1949, 5, 234, 118, 2, 1949, 1955, 3, 2, 2, 2, 1950, 1951, 5, 226, 114, 2, 1951, 1952, 5, 14, 8, 2, 1952, 1953, 5, 234, 118, 2, 1953, 1955, 3, 2, 2, 2, 1954, 1926, 3, 2, 2, 2, 1954, 1932, 3, 2, 2, 2, 1954, 1942, 3, 2, 2, 2, 1954, 1950, 3, 2, 2, 2, 1955, 317, 3, 2, 2, 2, 1956, 1958, 5, 320, 161, 2, 1957, 1956, 3, 2, 2, 2, 1958, 1959, 3, 2, 2, 2, 1959, 1957, 3, 2, 2, 2, 1959, 1960, 3, 2, 2, 2, 1960, 319, 3, 2, 2, 2, 1961, 1964, 5, 18, 10, 2, 1962, 1964, 5, 322, 162, 2, 1963, 1961, 3, 2, 2, 2, 1963, 1962, 3, 2, 2, 2, 1964, 321, 3, 2, 2, 2, 1965, 1971, 5, 438, 220, 2, 1966, 1971, 5, 372, 187, 2, 1967, 1971, 5, 356, 179, 2, 1968, 1971, 5, 338, 170, 2, 1969, 1971, 5, 324, 163, 2, 1970, 1965, 3, 2, 2, 2, 1970, 1966, 3, 2, 2, 2, 1970, 1967, 3, 2, 2, 2, 1970, 1968, 3, 2, 2, 2, 1970, 1969, 3, 2, 2, 2, 1971, 323, 3, 2, 2, 2, 1972, 1973, 5, 332, 167, 2, 1973, 1974, 5, 330, 166, 2, 1974, 1979, 3, 2, 2, 2, 1975, 1976, 5, 326, 164, 2, 1976, 1977, 5, 330, 166, 2, 1977, 1979, 3, 2, 2, 2, 1978, 1972, 3, 2, 2, 2, 1978, 1975, 3, 2, 2, 2, 1979, 325, 3, 2, 2, 2, 1980, 1981, 8, 164, 1, 2, 1981, 1982, 5, 332, 167, 2, 1982, 1983, 5, 328, 165, 2, 1983, 1988, 3, 2, 2, 2, 1984, 1985, 12, 3, 2, 2, 1985, 1987, 5, 578, 290, 2, 1986, 1984, 3, 2, 2, 2, 1987, 1990, 3, 2, 2, 2, 1988, 1986, 3, 2, 2, 2, 1988, 1989, 3, 2, 2, 2, 1989, 327, 3, 2, 2, 2, 1990, 1988, 3, 2, 2, 2, 1991, 1992, 7, 35, 2, 2, 1992, 329, 3, 2, 2, 2, 1993, 1997, 7, 62, 2, 2, 1994, 1995, 7, 14, 2, 2, 1995, 1997, 7, 63, 2, 2, 1996, 1993, 3, 2, 2, 2, 1996, 1994, 3, 2, 2, 2, 1997, 331, 3, 2, 2, 2, 1998, 1999, 8, 167, 1, 2, 1999, 2000, 5, 334, 168, 2, 2000, 2005, 3, 2, 2, 2, 2001, 2002, 12, 3, 2, 2, 2002, 2004, 5, 578, 290, 2, 2003, 2001, 3, 2, 2, 2, 2004, 2007, 3, 2, 2, 2, 2005, 2003, 3, 2, 2, 2, 2005, 2006, 3, 2, 2, 2, 2006, 333, 3, 2, 2, 2, 2007, 2005, 3, 2, 2, 2, 2008, 2009, 7, 63, 2, 2, 2009, 2010, 7, 125, 2, 2, 2010, 2011, 5, 336, 169, 2, 2011, 2012, 7, 130, 2, 2, 2012, 335, 3, 2, 2, 2, 2013, 2014, 5, 626, 314, 2, 2014, 337, 3, 2, 2, 2, 2015, 2016, 7, 190, 2, 2, 2016, 2017, 7, 131, 2, 2, 2017, 2018, 7, 65, 2, 2, 2018, 2019, 7, 125, 2, 2, 2019, 2020, 5, 626, 314, 2, 2020, 2021, 7, 130, 2, 2, 2021, 2022, 5, 340, 171, 2, 2022, 2046, 3, 2, 2, 2, 2023, 2024, 7, 65, 2, 2, 2024, 2025, 7, 125, 2, 2, 2025, 2026, 5, 626, 314, 2, 2026, 2027, 7, 130, 2, 2, 2027, 2028, 5, 340, 171, 2, 2028, 2046, 3, 2, 2, 2, 2029, 2030, 7, 190, 2, 2, 2030, 2031, 7, 131, 2, 2, 2031, 2032, 7, 66, 2, 2, 2032, 2033, 7, 67, 2, 2, 2033, 2034, 7, 125, 2, 2, 2034, 2035, 5, 626, 314, 2, 2035, 2036, 7, 130, 2, 2, 2036, 2037, 5, 340, 171, 2, 2037, 2046, 3, 2, 2, 2, 2038, 2039, 7, 66, 2, 2, 2039, 2040, 7, 67, 2, 2, 2040, 2041, 7, 125, 2, 2, 2041, 2042, 5, 626, 314, 2, 2042, 2043, 7, 130, 2, 2, 2043, 2044, 5, 340, 171, 2, 2044, 2046, 3, 2, 2, 2, 2045, 2015, 3, 2, 2, 2, 2045, 2023, 3, 2, 2, 2, 2045, 2029, 3, 2, 2, 2, 2045, 2038, 3, 2, 2, 2, 2046, 339, 3, 2, 2, 2, 2047, 2048, 5, 344, 173, 2, 2048, 2049, 5, 342, 172, 2, 2049, 2052, 3, 2, 2, 2, 2050, 2052, 5, 342, 172, 2, 2051, 2047, 3, 2, 2, 2, 2051, 2050, 3, 2, 2, 2, 2052, 341, 3, 2, 2, 2, 2053, 2055, 7, 64, 2, 2, 2054, 2056, 7, 190, 2, 2, 2055, 2054, 3, 2, 2, 2, 2055, 2056, 3, 2, 2, 2, 2056, 2063, 3, 2, 2, 2, 2057, 2058, 7, 14, 2, 2, 2058, 2060, 7, 66, 2, 2, 2059, 2061, 7, 190, 2, 2, 2060, 2059, 3, 2, 2, 2, 2060, 2061, 3, 2, 2, 2, 2061, 2063, 3, 2, 2, 2, 2062, 2053, 3, 2, 2, 2, 2062, 2057, 3, 2, 2, 2, 2063, 343, 3, 2, 2, 2, 2064, 2065, 8, 173, 1, 2, 2065, 2066, 5, 348, 175, 2, 2066, 2071, 3, 2, 2, 2, 2067, 2068, 12, 3, 2, 2, 2068, 2070, 5, 346, 174, 2, 2069, 2067, 3, 2, 2, 2, 2070, 2073, 3, 2, 2, 2, 2071, 2069, 3, 2, 2, 2, 2071, 2072, 3, 2, 2, 2, 2072, 345, 3, 2, 2, 2, 2073, 2071, 3, 2, 2, 2, 2074, 2077, 5, 348, 175, 2, 2075, 2077, 5, 390, 196, 2, 2076, 2074, 3, 2, 2, 2, 2076, 2075, 3, 2, 2, 2, 2077, 347, 3, 2, 2, 2, 2078, 2079, 7, 67, 2, 2, 2079, 2085, 5, 350, 176, 2, 2080, 2081, 7, 67, 2, 2, 2081, 2082, 5, 350, 176, 2, 2082, 2083, 7, 190, 2, 2, 2083, 2085, 3, 2, 2, 2, 2084, 2078, 3, 2, 2, 2, 2084, 2080, 3, 2, 2, 2, 2085, 349, 3, 2, 2, 2, 2086, 2087, 7, 125, 2, 2, 2087, 2088, 5, 352, 177, 2, 2088, 2089, 7, 130, 2, 2, 2089, 2092, 3, 2, 2, 2, 2090, 2092, 7, 68, 2, 2, 2091, 2086, 3, 2, 2, 2, 2091, 2090, 3, 2, 2, 2, 2092, 351, 3, 2, 2, 2, 2093, 2095, 5, 354, 178, 2, 2094, 2093, 3, 2, 2, 2, 2095, 2096, 3, 2, 2, 2, 2096, 2094, 3, 2, 2, 2, 2096, 2097, 3, 2, 2, 2, 2097, 353, 3, 2, 2, 2, 2098, 2109, 5, 626, 314, 2, 2099, 2100, 5, 626, 314, 2, 2100, 2101, 7, 131, 2, 2, 2101, 2109, 3, 2, 2, 2, 2102, 2103, 7, 131, 2, 2, 2103, 2109, 5, 626, 314, 2, 2104, 2105, 5, 626, 314, 2, 2105, 2106, 7, 131, 2, 2, 2106, 2107, 5, 626, 314, 2, 2107, 2109, 3, 2, 2, 2, 2108, 2098, 3, 2, 2, 2, 2108, 2099, 3, 2, 2, 2, 2108, 2102, 3, 2, 2, 2, 2108, 2104, 3, 2, 2, 2, 2109, 355, 3, 2, 2, 2, 2110, 2111, 5, 358, 180, 2, 2111, 2115, 5, 360, 181, 2, 2112, 2114, 5, 362, 182, 2, 2113, 2112, 3, 2, 2, 2, 2114, 2117, 3, 2, 2, 2, 2115, 2113, 3, 2, 2, 2, 2115, 2116, 3, 2, 2, 2, 2116, 2119, 3, 2, 2, 2, 2117, 2115, 3, 2, 2, 2, 2118, 2120, 5, 366, 184, 2, 2119, 2118, 3, 2, 2, 2, 2119, 2120, 3, 2, 2, 2, 2120, 2121, 3, 2, 2, 2, 2121, 2122, 5, 370, 186, 2, 2122, 357, 3, 2, 2, 2, 2123, 2124, 7, 53, 2, 2, 2124, 2125, 7, 125, 2, 2, 2125, 2126, 5, 626, 314, 2, 2126, 2127, 7, 130, 2, 2, 2127, 2128, 7, 54, 2, 2, 2128, 359, 3, 2, 2, 2, 2129, 2131, 5, 390, 196, 2, 2130, 2129, 3, 2, 2, 2, 2131, 2134, 3, 2, 2, 2, 2132, 2130, 3, 2, 2, 2, 2132, 2133, 3, 2, 2, 2, 2133, 361, 3, 2, 2, 2, 2134, 2132, 3, 2, 2, 2, 2135, 2136, 5, 364, 183, 2, 2136, 2137, 5, 360, 181, 2, 2137, 363, 3, 2, 2, 2, 2138, 2139, 7, 58, 2, 2, 2139, 2140, 7, 125, 2, 2, 2140, 2141, 5, 626, 314, 2, 2141, 2142, 7, 130, 2, 2, 2142, 2143, 7, 54, 2, 2, 2143, 2152, 3, 2, 2, 2, 2144, 2145, 7, 55, 2, 2, 2145, 2146, 7, 53, 2, 2, 2146, 2147, 7, 125, 2, 2, 2147, 2148, 5, 626, 314, 2, 2148, 2149, 7, 130, 2, 2, 2149, 2150, 7, 54, 2, 2, 2150, 2152, 3, 2, 2, 2, 2151, 2138, 3, 2, 2, 2, 2151, 2144, 3, 2, 2, 2, 2152, 365, 3, 2, 2, 2, 2153, 2154, 5, 368, 185, 2, 2154, 2155, 5, 360, 181, 2, 2155, 367, 3, 2, 2, 2, 2156, 2157, 7, 55, 2, 2, 2157, 369, 3, 2, 2, 2, 2158, 2162, 7, 56, 2, 2, 2159, 2160, 7, 14, 2, 2, 2160, 2162, 7, 53, 2, 2, 2161, 2158, 3, 2, 2, 2, 2161, 2159, 3, 2, 2, 2, 2162, 371, 3, 2, 2, 2, 2163, 2166, 5, 382, 192, 2, 2164, 2166, 5, 374, 188, 2, 2165, 2163, 3, 2, 2, 2, 2165, 2164, 3, 2, 2, 2, 2166, 373, 3, 2, 2, 2, 2167, 2169, 5, 380, 191, 2, 2168, 2167, 3, 2, 2, 2, 2168, 2169, 3, 2, 2, 2, 2169, 2170, 3, 2, 2, 2, 2170, 2172, 7, 59, 2, 2, 2171, 2173, 5, 430, 216, 2, 2172, 2171, 3, 2, 2, 2, 2172, 2173, 3, 2, 2, 2, 2173, 2177, 3, 2, 2, 2, 2174, 2176, 5, 390, 196, 2, 2175, 2174, 3, 2, 2, 2, 2176, 2179, 3, 2, 2, 2, 2177, 2175, 3, 2, 2, 2, 2177, 2178, 3, 2, 2, 2, 2178, 2180, 3, 2, 2, 2, 2179, 2177, 3, 2, 2, 2, 2180, 2181, 5, 376, 189, 2, 2181, 375, 3, 2, 2, 2, 2182, 2184, 7, 72, 2, 2, 2183, 2185, 5, 378, 190, 2, 2184, 2183, 3, 2, 2, 2, 2184, 2185, 3, 2, 2, 2, 2185, 2192, 3, 2, 2, 2, 2186, 2187, 7, 14, 2, 2, 2187, 2189, 7, 59, 2, 2, 2188, 2190, 5, 378, 190, 2, 2189, 2188, 3, 2, 2, 2, 2189, 2190, 3, 2, 2, 2, 2190, 2192, 3, 2, 2, 2, 2191, 2182, 3, 2, 2, 2, 2191, 2186, 3, 2, 2, 2, 2192, 377, 3, 2, 2, 2, 2193, 2194, 5, 302, 152, 2, 2194, 379, 3, 2, 2, 2, 2195, 2196, 7, 190, 2, 2, 2196, 2197, 7, 131, 2, 2, 2197, 381, 3, 2, 2, 2, 2198, 2199, 7, 59, 2, 2, 2199, 2200, 5, 384, 193, 2, 2200, 2204, 5, 430, 216, 2, 2201, 2203, 5, 390, 196, 2, 2202, 2201, 3, 2, 2, 2, 2203, 2206, 3, 2, 2, 2, 2204, 2202, 3, 2, 2, 2, 2204, 2205, 3, 2, 2, 2, 2205, 2207, 3, 2, 2, 2, 2206, 2204, 3, 2, 2, 2, 2207, 2208, 5, 386, 194, 2, 2208, 2209, 5, 388, 195, 2, 2209, 383, 3, 2, 2, 2, 2210, 2211, 7, 188, 2, 2, 2211, 385, 3, 2, 2, 2, 2212, 2213, 7, 188, 2, 2, 2213, 387, 3, 2, 2, 2, 2214, 2215, 5, 438, 220, 2, 2215, 389, 3, 2, 2, 2, 2216, 2222, 5, 322, 162, 2, 2217, 2222, 5, 50, 26, 2, 2218, 2222, 5, 394, 198, 2, 2219, 2222, 5, 64, 33, 2, 2220, 2222, 5, 392, 197, 2, 2221, 2216, 3, 2, 2, 2, 2221, 2217, 3, 2, 2, 2, 2221, 2218, 3, 2, 2, 2, 2221, 2219, 3, 2, 2, 2, 2221, 2220, 3, 2, 2, 2, 2222, 391, 3, 2, 2, 2, 2223, 2224, 7, 59, 2, 2, 2224, 2225, 5, 574, 288, 2, 2225, 2226, 5, 430, 216, 2, 2226, 393, 3, 2, 2, 2, 2227, 2228, 7, 50, 2, 2, 2228, 2235, 5, 396, 199, 2, 2229, 2231, 7, 124, 2, 2, 2230, 2229, 3, 2, 2, 2, 2230, 2231, 3, 2, 2, 2, 2231, 2232, 3, 2, 2, 2, 2232, 2234, 5, 396, 199, 2, 2233, 2230, 3, 2, 2, 2, 2234, 2237, 3, 2, 2, 2, 2235, 2233, 3, 2, 2, 2, 2235, 2236, 3, 2, 2, 2, 2236, 395, 3, 2, 2, 2, 2237, 2235, 3, 2, 2, 2, 2238, 2239, 5, 398, 200, 2, 2239, 2240, 5, 400, 201, 2, 2240, 397, 3, 2, 2, 2, 2241, 2246, 5, 404, 203, 2, 2242, 2243, 7, 124, 2, 2, 2243, 2245, 5, 404, 203, 2, 2244, 2242, 3, 2, 2, 2, 2245, 2248, 3, 2, 2, 2, 2246, 2244, 3, 2, 2, 2, 2246, 2247, 3, 2, 2, 2, 2247, 2249, 3, 2, 2, 2, 2248, 2246, 3, 2, 2, 2, 2249, 2250, 7, 135, 2, 2, 2250, 399, 3, 2, 2, 2, 2251, 2256, 5, 402, 202, 2, 2252, 2253, 7, 124, 2, 2, 2253, 2255, 5, 402, 202, 2, 2254, 2252, 3, 2, 2, 2, 2255, 2258, 3, 2, 2, 2, 2256, 2254, 3, 2, 2, 2, 2256, 2257, 3, 2, 2, 2, 2257, 2259, 3, 2, 2, 2, 2258, 2256, 3, 2, 2, 2, 2259, 2260, 7, 135, 2, 2, 2260, 401, 3, 2, 2, 2, 2261, 2271, 5, 286, 144, 2, 2262, 2263, 5, 286, 144, 2, 2263, 2264, 7, 194, 2, 2, 2264, 2265, 5, 286, 144, 2, 2265, 2271, 3, 2, 2, 2, 2266, 2267, 5, 294, 148, 2, 2267, 2268, 7, 194, 2, 2, 2268, 2269, 5, 286, 144, 2, 2269, 2271, 3, 2, 2, 2, 2270, 2261, 3, 2, 2, 2, 2270, 2262, 3, 2, 2, 2, 2270, 2266, 3, 2, 2, 2, 2271, 403, 3, 2, 2, 2, 2272, 2275, 5, 406, 204, 2, 2273, 2275, 5, 416, 209, 2, 2274, 2272, 3, 2, 2, 2, 2274, 2273, 3, 2, 2, 2, 2275, 405, 3, 2, 2, 2, 2276, 2278, 5, 434, 218, 2, 2277, 2279, 5, 408, 205, 2, 2278, 2277, 3, 2, 2, 2, 2278, 2279, 3, 2, 2, 2, 2279, 2281, 3, 2, 2, 2, 2280, 2282, 5, 414, 208, 2, 2281, 2280, 3, 2, 2, 2, 2281, 2282, 3, 2, 2, 2, 2282, 407, 3, 2, 2, 2, 2283, 2284, 7, 125, 2, 2, 2284, 2285, 5, 410, 206, 2, 2285, 2286, 7, 130, 2, 2, 2286, 409, 3, 2, 2, 2, 2287, 2289, 5, 412, 207, 2, 2288, 2287, 3, 2, 2, 2, 2289, 2290, 3, 2, 2, 2, 2290, 2288, 3, 2, 2, 2, 2290, 2291, 3, 2, 2, 2, 2291, 411, 3, 2, 2, 2, 2292, 2293, 5, 626, 314, 2, 2293, 413, 3, 2, 2, 2, 2294, 2296, 7, 125, 2, 2, 2295, 2297, 5, 626, 314, 2, 2296, 2295, 3, 2, 2, 2, 2296, 2297, 3, 2, 2, 2, 2297, 2298, 3, 2, 2, 2, 2298, 2299, 5, 682, 342, 2, 2299, 2300, 7, 130, 2, 2, 2300, 415, 3, 2, 2, 2, 2301, 2302, 7, 125, 2, 2, 2302, 2303, 5, 418, 210, 2, 2303, 2304, 7, 124, 2, 2, 2304, 2305, 5, 428, 215, 2, 2305, 2306, 7, 132, 2, 2, 2306, 2307, 5, 626, 314, 2, 2307, 2308, 7, 124, 2, 2, 2308, 2309, 5, 626, 314, 2, 2309, 2310, 7, 130, 2, 2, 2310, 2324, 3, 2, 2, 2, 2311, 2312, 7, 125, 2, 2, 2312, 2313, 5, 418, 210, 2, 2313, 2314, 7, 124, 2, 2, 2314, 2315, 5, 428, 215, 2, 2315, 2316, 7, 132, 2, 2, 2316, 2317, 5, 626, 314, 2, 2317, 2318, 7, 124, 2, 2, 2318, 2319, 5, 626, 314, 2, 2319, 2320, 7, 124, 2, 2, 2320, 2321, 5, 626, 314, 2, 2321, 2322, 7, 130, 2, 2, 2322, 2324, 3, 2, 2, 2, 2323, 2301, 3, 2, 2, 2, 2323, 2311, 3, 2, 2, 2, 2324, 417, 3, 2, 2, 2, 2325, 2327, 5, 420, 211, 2, 2326, 2325, 3, 2, 2, 2, 2327, 2328, 3, 2, 2, 2, 2328, 2326, 3, 2, 2, 2, 2328, 2329, 3, 2, 2, 2, 2329, 419, 3, 2, 2, 2, 2330, 2334, 5, 426, 214, 2, 2331, 2334, 5, 416, 209, 2, 2332, 2334, 5, 422, 212, 2, 2333, 2330, 3, 2, 2, 2, 2333, 2331, 3, 2, 2, 2, 2333, 2332, 3, 2, 2, 2, 2334, 421, 3, 2, 2, 2, 2335, 2336, 8, 212, 1, 2, 2336, 2337, 5, 434, 218, 2, 2337, 2338, 5, 424, 213, 2, 2338, 2343, 3, 2, 2, 2, 2339, 2340, 12, 3, 2, 2, 2340, 2342, 5, 424, 213, 2, 2341, 2339, 3, 2, 2, 2, 2342, 2345, 3, 2, 2, 2, 2343, 2341, 3, 2, 2, 2, 2343, 2344, 3, 2, 2, 2, 2344, 423, 3, 2, 2, 2, 2345, 2343, 3, 2, 2, 2, 2346, 2347, 7, 125, 2, 2, 2347, 2348, 5, 678, 340, 2, 2348, 2349, 7, 130, 2, 2, 2349, 2350, 7, 126, 2, 2, 2350, 2351, 7, 190, 2, 2, 2351, 2355, 3, 2, 2, 2, 2352, 2353, 7, 126, 2, 2, 2353, 2355, 7, 190, 2, 2, 2354, 2346, 3, 2, 2, 2, 2354, 2352, 3, 2, 2, 2, 2355, 425, 3, 2, 2, 2, 2356, 2357, 5, 434, 218, 2, 2357, 2358, 7, 125, 2, 2, 2358, 2359, 5, 678, 340, 2, 2359, 2360, 7, 130, 2, 2, 2360, 2367, 3, 2, 2, 2, 2361, 2362, 5, 422, 212, 2, 2362, 2363, 7, 125, 2, 2, 2363, 2364, 5, 678, 340, 2, 2364, 2365, 7, 130, 2, 2, 2365, 2367, 3, 2, 2, 2, 2366, 2356, 3, 2, 2, 2, 2366, 2361, 3, 2, 2, 2, 2367, 427, 3, 2, 2, 2, 2368, 2369, 7, 190, 2, 2, 2369, 429, 3, 2, 2, 2, 2370, 2372, 7, 124, 2, 2, 2371, 2370, 3, 2, 2, 2, 2371, 2372, 3, 2, 2, 2, 2372, 2373, 3, 2, 2, 2, 2373, 2374, 5, 432, 217, 2, 2374, 431, 3, 2, 2, 2, 2375, 2376, 5, 434, 218, 2, 2376, 2377, 7, 132, 2, 2, 2377, 2378, 5, 626, 314, 2, 2378, 2379, 7, 124, 2, 2, 2379, 2381, 5, 626, 314, 2, 2380, 2382, 5, 436, 219, 2, 2381, 2380, 3, 2, 2, 2, 2381, 2382, 3, 2, 2, 2, 2382, 2389, 3, 2, 2, 2, 2383, 2384, 7, 127, 2, 2, 2384, 2385, 7, 125, 2, 2, 2385, 2386, 5, 626, 314, 2, 2386, 2387, 7, 130, 2, 2, 2387, 2389, 3, 2, 2, 2, 2388, 2375, 3, 2, 2, 2, 2388, 2383, 3, 2, 2, 2, 2389, 433, 3, 2, 2, 2, 2390, 2391, 7, 190, 2, 2, 2391, 435, 3, 2, 2, 2, 2392, 2393, 7, 124, 2, 2, 2393, 2394, 5, 626, 314, 2, 2394, 437, 3, 2, 2, 2, 2395, 2425, 5, 572, 287, 2, 2396, 2425, 5, 578, 290, 2, 2397, 2425, 5, 586, 294, 2, 2398, 2425, 5, 588, 295, 2, 2399, 2425, 5, 564, 283, 2, 2400, 2425, 5, 550, 276, 2, 2401, 2425, 5, 548, 275, 2, 2402, 2425, 5, 546, 274, 2, 2403, 2425, 5, 540, 271, 2, 2404, 2425, 5, 542, 272, 2, 2405, 2425, 5, 536, 269, 2, 2406, 2425, 5, 696, 349, 2, 2407, 2425, 5, 530, 266, 2, 2408, 2425, 5, 524, 263, 2, 2409, 2425, 5, 522, 262, 2, 2410, 2425, 5, 512, 257, 2, 2411, 2425, 5, 490, 246, 2, 2412, 2425, 5, 486, 244, 2, 2413, 2425, 5, 488, 245, 2, 2414, 2425, 5, 478, 240, 2, 2415, 2425, 5, 472, 237, 2, 2416, 2425, 5, 474, 238, 2, 2417, 2425, 5, 462, 232, 2, 2418, 2425, 5, 460, 231, 2, 2419, 2425, 5, 456, 229, 2, 2420, 2425, 5, 454, 228, 2, 2421, 2425, 5, 446, 224, 2, 2422, 2425, 5, 442, 222, 2, 2423, 2425, 5, 440, 221, 2, 2424, 2395, 3, 2, 2, 2, 2424, 2396, 3, 2, 2, 2, 2424, 2397, 3, 2, 2, 2, 2424, 2398, 3, 2, 2, 2, 2424, 2399, 3, 2, 2, 2, 2424, 2400, 3, 2, 2, 2, 2424, 2401, 3, 2, 2, 2, 2424, 2402, 3, 2, 2, 2, 2424, 2403, 3, 2, 2, 2, 2424, 2404, 3, 2, 2, 2, 2424, 2405, 3, 2, 2, 2, 2424, 2406, 3, 2, 2, 2, 2424, 2407, 3, 2, 2, 2, 2424, 2408, 3, 2, 2, 2, 2424, 2409, 3, 2, 2, 2, 2424, 2410, 3, 2, 2, 2, 2424, 2411, 3, 2, 2, 2, 2424, 2412, 3, 2, 2, 2, 2424, 2413, 3, 2, 2, 2, 2424, 2414, 3, 2, 2, 2, 2424, 2415, 3, 2, 2, 2, 2424, 2416, 3, 2, 2, 2, 2424, 2417, 3, 2, 2, 2, 2424, 2418, 3, 2, 2, 2, 2424, 2419, 3, 2, 2, 2, 2424, 2420, 3, 2, 2, 2, 2424, 2421, 3, 2, 2, 2, 2424, 2422, 3, 2, 2, 2, 2424, 2423, 3, 2, 2, 2, 2425, 439, 3, 2, 2, 2, 2426, 2427, 7, 63, 2, 2, 2427, 2428, 7, 125, 2, 2, 2428, 2429, 5, 336, 169, 2, 2429, 2430, 7, 130, 2, 2, 2430, 2431, 5, 578, 290, 2, 2431, 441, 3, 2, 2, 2, 2432, 2433, 7, 190, 2, 2, 2433, 2434, 7, 27, 2, 2, 2434, 2445, 5, 444, 223, 2, 2435, 2437, 7, 190, 2, 2, 2436, 2438, 5, 580, 291, 2, 2437, 2436, 3, 2, 2, 2, 2437, 2438, 3, 2, 2, 2, 2438, 2439, 3, 2, 2, 2, 2439, 2440, 7, 126, 2, 2, 2440, 2441, 5, 672, 337, 2, 2441, 2442, 7, 27, 2, 2, 2442, 2443, 5, 444, 223, 2, 2443, 2445, 3, 2, 2, 2, 2444, 2432, 3, 2, 2, 2, 2444, 2435, 3, 2, 2, 2, 2445, 443, 3, 2, 2, 2, 2446, 2447, 5, 626, 314, 2, 2447, 445, 3, 2, 2, 2, 2448, 2449, 7, 182, 2, 2, 2449, 2450, 7, 125, 2, 2, 2450, 2451, 5, 448, 225, 2, 2451, 2452, 7, 130, 2, 2, 2452, 447, 3, 2, 2, 2, 2453, 2458, 5, 450, 226, 2, 2454, 2455, 7, 124, 2, 2, 2455, 2457, 5, 450, 226, 2, 2456, 2454, 3, 2, 2, 2, 2457, 2460, 3, 2, 2, 2, 2458, 2456, 3, 2, 2, 2, 2458, 2459, 3, 2, 2, 2, 2459, 449, 3, 2, 2, 2, 2460, 2458, 3, 2, 2, 2, 2461, 2464, 7, 190, 2, 2, 2462, 2464, 5, 452, 227, 2, 2463, 2461, 3, 2, 2, 2, 2463, 2462, 3, 2, 2, 2, 2464, 451, 3, 2, 2, 2, 2465, 2466, 8, 227, 1, 2, 2466, 2468, 7, 190, 2, 2, 2467, 2469, 5, 580, 291, 2, 2468, 2467, 3, 2, 2, 2, 2468, 2469, 3, 2, 2, 2, 2469, 2470, 3, 2, 2, 2, 2470, 2471, 7, 126, 2, 2, 2471, 2472, 7, 190, 2, 2, 2472, 2477, 3, 2, 2, 2, 2473, 2474, 12, 3, 2, 2, 2474, 2476, 5, 424, 213, 2, 2475, 2473, 3, 2, 2, 2, 2476, 2479, 3, 2, 2, 2, 2477, 2475, 3, 2, 2, 2, 2477, 2478, 3, 2, 2, 2, 2478, 453, 3, 2, 2, 2, 2479, 2477, 3, 2, 2, 2, 2480, 2482, 7, 191, 2, 2, 2481, 2483, 5, 378, 190, 2, 2482, 2481, 3, 2, 2, 2, 2482, 2483, 3, 2, 2, 2, 2483, 455, 3, 2, 2, 2, 2484, 2485, 7, 181, 2, 2, 2485, 2486, 7, 125, 2, 2, 2486, 2487, 5, 458, 230, 2, 2487, 2488, 7, 124, 2, 2, 2488, 2489, 7, 129, 2, 2, 2489, 2490, 7, 132, 2, 2, 2490, 2491, 5, 406, 204, 2, 2491, 2492, 7, 130, 2, 2, 2492, 2499, 3, 2, 2, 2, 2493, 2494, 7, 181, 2, 2, 2494, 2495, 7, 125, 2, 2, 2495, 2496, 5, 458, 230, 2, 2496, 2497, 7, 130, 2, 2, 2497, 2499, 3, 2, 2, 2, 2498, 2484, 3, 2, 2, 2, 2498, 2493, 3, 2, 2, 2, 2499, 457, 3, 2, 2, 2, 2500, 2505, 5, 468, 235, 2, 2501, 2502, 7, 124, 2, 2, 2502, 2504, 5, 468, 235, 2, 2503, 2501, 3, 2, 2, 2, 2504, 2507, 3, 2, 2, 2, 2505, 2503, 3, 2, 2, 2, 2505, 2506, 3, 2, 2, 2, 2506, 459, 3, 2, 2, 2, 2507, 2505, 3, 2, 2, 2, 2508, 2510, 7, 183, 2, 2, 2509, 2511, 5, 378, 190, 2, 2510, 2509, 3, 2, 2, 2, 2510, 2511, 3, 2, 2, 2, 2511, 461, 3, 2, 2, 2, 2512, 2513, 7, 128, 2, 2, 2513, 2514, 7, 125, 2, 2, 2514, 2515, 5, 464, 233, 2, 2515, 2516, 7, 124, 2, 2, 2516, 2517, 7, 129, 2, 2, 2517, 2518, 7, 132, 2, 2, 2518, 2519, 5, 406, 204, 2, 2519, 2520, 7, 130, 2, 2, 2520, 2527, 3, 2, 2, 2, 2521, 2522, 7, 128, 2, 2, 2522, 2523, 7, 125, 2, 2, 2523, 2524, 5, 464, 233, 2, 2524, 2525, 7, 130, 2, 2, 2525, 2527, 3, 2, 2, 2, 2526, 2512, 3, 2, 2, 2, 2526, 2521, 3, 2, 2, 2, 2527, 463, 3, 2, 2, 2, 2528, 2533, 5, 466, 234, 2, 2529, 2530, 7, 124, 2, 2, 2530, 2532, 5, 466, 234, 2, 2531, 2529, 3, 2, 2, 2, 2532, 2535, 3, 2, 2, 2, 2533, 2531, 3, 2, 2, 2, 2533, 2534, 3, 2, 2, 2, 2534, 465, 3, 2, 2, 2, 2535, 2533, 3, 2, 2, 2, 2536, 2541, 5, 468, 235, 2, 2537, 2538, 5, 468, 235, 2, 2538, 2539, 5, 470, 236, 2, 2539, 2541, 3, 2, 2, 2, 2540, 2536, 3, 2, 2, 2, 2540, 2537, 3, 2, 2, 2, 2541, 467, 3, 2, 2, 2, 2542, 2543, 8, 235, 1, 2, 2543, 2544, 5, 434, 218, 2, 2544, 2549, 3, 2, 2, 2, 2545, 2546, 12, 3, 2, 2, 2546, 2548, 5, 424, 213, 2, 2547, 2545, 3, 2, 2, 2, 2548, 2551, 3, 2, 2, 2, 2549, 2547, 3, 2, 2, 2, 2549, 2550, 3, 2, 2, 2, 2550, 469, 3, 2, 2, 2, 2551, 2549, 3, 2, 2, 2, 2552, 2553, 7, 125, 2, 2, 2553, 2554, 5, 678, 340, 2, 2554, 2555, 7, 130, 2, 2, 2555, 471, 3, 2, 2, 2, 2556, 2558, 7, 70, 2, 2, 2557, 2559, 9, 8, 2, 2, 2558, 2557, 3, 2, 2, 2, 2558, 2559, 3, 2, 2, 2, 2559, 473, 3, 2, 2, 2, 2560, 2561, 7, 74, 2, 2, 2561, 2562, 7, 125, 2, 2, 2562, 2563, 5, 476, 239, 2, 2563, 2565, 7, 130, 2, 2, 2564, 2566, 5, 514, 258, 2, 2565, 2564, 3, 2, 2, 2, 2565, 2566, 3, 2, 2, 2, 2566, 475, 3, 2, 2, 2, 2567, 2568, 8, 239, 1, 2, 2568, 2569, 5, 590, 296, 2, 2569, 2570, 7, 123, 2, 2, 2570, 2571, 7, 124, 2, 2, 2571, 2582, 3, 2, 2, 2, 2572, 2573, 5, 590, 296, 2, 2573, 2574, 7, 124, 2, 2, 2574, 2575, 5, 520, 261, 2, 2575, 2582, 3, 2, 2, 2, 2576, 2577, 5, 590, 296, 2, 2577, 2578, 7, 124, 2, 2, 2578, 2579, 5, 510, 256, 2, 2579, 2582, 3, 2, 2, 2, 2580, 2582, 5, 510, 256, 2, 2581, 2567, 3, 2, 2, 2, 2581, 2572, 3, 2, 2, 2, 2581, 2576, 3, 2, 2, 2, 2581, 2580, 3, 2, 2, 2, 2582, 2588, 3, 2, 2, 2, 2583, 2584, 12, 3, 2, 2, 2584, 2585, 7, 124, 2, 2, 2585, 2587, 5, 510, 256, 2, 2586, 2583, 3, 2, 2, 2, 2587, 2590, 3, 2, 2, 2, 2588, 2586, 3, 2, 2, 2, 2588, 2589, 3, 2, 2, 2, 2589, 477, 3, 2, 2, 2, 2590, 2588, 3, 2, 2, 2, 2591, 2592, 7, 190, 2, 2, 2592, 2593, 5, 480, 241, 2, 2593, 479, 3, 2, 2, 2, 2594, 2596, 7, 125, 2, 2, 2595, 2597, 5, 482, 242, 2, 2596, 2595, 3, 2, 2, 2, 2596, 2597, 3, 2, 2, 2, 2597, 2598, 3, 2, 2, 2, 2598, 2599, 7, 130, 2, 2, 2599, 2600, 7, 132, 2, 2, 2600, 2601, 5, 626, 314, 2, 2601, 481, 3, 2, 2, 2, 2602, 2607, 5, 484, 243, 2, 2603, 2604, 7, 124, 2, 2, 2604, 2606, 5, 484, 243, 2, 2605, 2603, 3, 2, 2, 2, 2606, 2609, 3, 2, 2, 2, 2607, 2605, 3, 2, 2, 2, 2607, 2608, 3, 2, 2, 2, 2608, 483, 3, 2, 2, 2, 2609, 2607, 3, 2, 2, 2, 2610, 2611, 7, 190, 2, 2, 2611, 485, 3, 2, 2, 2, 2612, 2614, 7, 93, 2, 2, 2613, 2615, 5, 626, 314, 2, 2614, 2613, 3, 2, 2, 2, 2614, 2615, 3, 2, 2, 2, 2615, 487, 3, 2, 2, 2, 2616, 2617, 7, 116, 2, 2, 2617, 2624, 5, 590, 296, 2, 2618, 2619, 7, 116, 2, 2, 2619, 2620, 7, 125, 2, 2, 2620, 2621, 5, 592, 297, 2, 2621, 2622, 7, 130, 2, 2, 2622, 2624, 3, 2, 2, 2, 2623, 2616, 3, 2, 2, 2, 2623, 2618, 3, 2, 2, 2, 2624, 489, 3, 2, 2, 2, 2625, 2626, 7, 75, 2, 2, 2626, 2628, 5, 504, 253, 2, 2627, 2629, 5, 498, 250, 2, 2628, 2627, 3, 2, 2, 2, 2628, 2629, 3, 2, 2, 2, 2629, 2636, 3, 2, 2, 2, 2630, 2631, 7, 75, 2, 2, 2631, 2633, 5, 494, 248, 2, 2632, 2634, 5, 492, 247, 2, 2633, 2632, 3, 2, 2, 2, 2633, 2634, 3, 2, 2, 2, 2634, 2636, 3, 2, 2, 2, 2635, 2625, 3, 2, 2, 2, 2635, 2630, 3, 2, 2, 2, 2636, 491, 3, 2, 2, 2, 2637, 2638, 7, 124, 2, 2, 2638, 2639, 5, 498, 250, 2, 2639, 493, 3, 2, 2, 2, 2640, 2658, 5, 574, 288, 2, 2641, 2658, 7, 194, 2, 2, 2642, 2658, 5, 560, 281, 2, 2643, 2644, 5, 560, 281, 2, 2644, 2645, 7, 135, 2, 2, 2645, 2646, 7, 186, 2, 2, 2646, 2647, 7, 135, 2, 2, 2647, 2648, 7, 187, 2, 2, 2648, 2649, 5, 558, 280, 2, 2649, 2658, 3, 2, 2, 2, 2650, 2651, 5, 496, 249, 2, 2651, 2652, 7, 135, 2, 2, 2652, 2653, 7, 186, 2, 2, 2653, 2654, 7, 135, 2, 2, 2654, 2655, 7, 187, 2, 2, 2655, 2656, 5, 558, 280, 2, 2656, 2658, 3, 2, 2, 2, 2657, 2640, 3, 2, 2, 2, 2657, 2641, 3, 2, 2, 2, 2657, 2642, 3, 2, 2, 2, 2657, 2643, 3, 2, 2, 2, 2657, 2650, 3, 2, 2, 2, 2658, 495, 3, 2, 2, 2, 2659, 2660, 7, 125, 2, 2, 2660, 2661, 5, 600, 301, 2, 2661, 2662, 7, 130, 2, 2, 2662, 497, 3, 2, 2, 2, 2663, 2668, 5, 500, 251, 2, 2664, 2665, 7, 124, 2, 2, 2665, 2667, 5, 500, 251, 2, 2666, 2664, 3, 2, 2, 2, 2667, 2670, 3, 2, 2, 2, 2668, 2666, 3, 2, 2, 2, 2668, 2669, 3, 2, 2, 2, 2669, 499, 3, 2, 2, 2, 2670, 2668, 3, 2, 2, 2, 2671, 2674, 5, 672, 337, 2, 2672, 2674, 5, 502, 252, 2, 2673, 2671, 3, 2, 2, 2, 2673, 2672, 3, 2, 2, 2, 2674, 501, 3, 2, 2, 2, 2675, 2676, 7, 125, 2, 2, 2676, 2677, 5, 498, 250, 2, 2677, 2678, 7, 124, 2, 2, 2678, 2679, 5, 428, 215, 2, 2679, 2680, 7, 132, 2, 2, 2680, 2681, 5, 626, 314, 2, 2681, 2682, 7, 124, 2, 2, 2682, 2684, 5, 626, 314, 2, 2683, 2685, 5, 436, 219, 2, 2684, 2683, 3, 2, 2, 2, 2684, 2685, 3, 2, 2, 2, 2685, 2686, 3, 2, 2, 2, 2686, 2687, 7, 130, 2, 2, 2687, 503, 3, 2, 2, 2, 2688, 2694, 5, 506, 254, 2, 2689, 2690, 7, 125, 2, 2, 2690, 2691, 5, 508, 255, 2, 2691, 2692, 7, 130, 2, 2, 2692, 2694, 3, 2, 2, 2, 2693, 2688, 3, 2, 2, 2, 2693, 2689, 3, 2, 2, 2, 2694, 505, 3, 2, 2, 2, 2695, 2696, 7, 125, 2, 2, 2696, 2697, 5, 600, 301, 2, 2697, 2698, 7, 130, 2, 2, 2698, 2703, 3, 2, 2, 2, 2699, 2700, 7, 125, 2, 2, 2700, 2701, 7, 194, 2, 2, 2701, 2703, 7, 130, 2, 2, 2702, 2695, 3, 2, 2, 2, 2702, 2699, 3, 2, 2, 2, 2703, 507, 3, 2, 2, 2, 2704, 2705, 8, 255, 1, 2, 2705, 2706, 5, 590, 296, 2, 2706, 2707, 7, 124, 2, 2, 2707, 2708, 5, 510, 256, 2, 2708, 2715, 3, 2, 2, 2, 2709, 2710, 5, 590, 296, 2, 2710, 2711, 7, 124, 2, 2, 2711, 2712, 5, 520, 261, 2, 2712, 2715, 3, 2, 2, 2, 2713, 2715, 5, 510, 256, 2, 2714, 2704, 3, 2, 2, 2, 2714, 2709, 3, 2, 2, 2, 2714, 2713, 3, 2, 2, 2, 2715, 2721, 3, 2, 2, 2, 2716, 2717, 12, 3, 2, 2, 2717, 2718, 7, 124, 2, 2, 2718, 2720, 5, 510, 256, 2, 2719, 2716, 3, 2, 2, 2, 2720, 2723, 3, 2, 2, 2, 2721, 2719, 3, 2, 2, 2, 2721, 2722, 3, 2, 2, 2, 2722, 509, 3, 2, 2, 2, 2723, 2721, 3, 2, 2, 2, 2724, 2725, 7, 78, 2, 2, 2725, 2726, 7, 132, 2, 2, 2726, 2755, 5, 520, 261, 2, 2727, 2728, 7, 79, 2, 2, 2728, 2729, 7, 132, 2, 2, 2729, 2755, 5, 590, 296, 2, 2730, 2731, 7, 71, 2, 2, 2731, 2732, 7, 132, 2, 2, 2732, 2755, 5, 626, 314, 2, 2733, 2734, 7, 14, 2, 2, 2734, 2735, 7, 132, 2, 2, 2735, 2755, 5, 574, 288, 2, 2736, 2737, 7, 85, 2, 2, 2737, 2738, 7, 132, 2, 2, 2738, 2755, 5, 574, 288, 2, 2739, 2740, 7, 89, 2, 2, 2740, 2741, 7, 132, 2, 2, 2741, 2755, 5, 598, 300, 2, 2742, 2743, 7, 88, 2, 2, 2743, 2744, 7, 132, 2, 2, 2744, 2755, 5, 98, 50, 2, 2745, 2746, 7, 87, 2, 2, 2746, 2747, 7, 132, 2, 2, 2747, 2755, 5, 556, 279, 2, 2748, 2749, 7, 86, 2, 2, 2749, 2750, 7, 132, 2, 2, 2750, 2755, 5, 406, 204, 2, 2751, 2752, 7, 144, 2, 2, 2752, 2753, 7, 132, 2, 2, 2753, 2755, 5, 574, 288, 2, 2754, 2724, 3, 2, 2, 2, 2754, 2727, 3, 2, 2, 2, 2754, 2730, 3, 2, 2, 2, 2754, 2733, 3, 2, 2, 2, 2754, 2736, 3, 2, 2, 2, 2754, 2739, 3, 2, 2, 2, 2754, 2742, 3, 2, 2, 2, 2754, 2745, 3, 2, 2, 2, 2754, 2748, 3, 2, 2, 2, 2754, 2751, 3, 2, 2, 2, 2755, 511, 3, 2, 2, 2, 2756, 2757, 7, 76, 2, 2, 2757, 2758, 5, 520, 261, 2, 2758, 2759, 7, 124, 2, 2, 2759, 2760, 5, 514, 258, 2, 2760, 2764, 3, 2, 2, 2, 2761, 2762, 7, 76, 2, 2, 2762, 2764, 5, 520, 261, 2, 2763, 2756, 3, 2, 2, 2, 2763, 2761, 3, 2, 2, 2, 2764, 513, 3, 2, 2, 2, 2765, 2768, 5, 626, 314, 2, 2766, 2768, 5, 516, 259, 2, 2767, 2765, 3, 2, 2, 2, 2767, 2766, 3, 2, 2, 2, 2768, 515, 3, 2, 2, 2, 2769, 2770, 8, 259, 1, 2, 2770, 2771, 5, 626, 314, 2, 2771, 2772, 7, 124, 2, 2, 2772, 2773, 5, 626, 314, 2, 2773, 2780, 3, 2, 2, 2, 2774, 2775, 5, 626, 314, 2, 2775, 2776, 7, 124, 2, 2, 2776, 2777, 5, 518, 260, 2, 2777, 2780, 3, 2, 2, 2, 2778, 2780, 5, 518, 260, 2, 2779, 2769, 3, 2, 2, 2, 2779, 2774, 3, 2, 2, 2, 2779, 2778, 3, 2, 2, 2, 2780, 2789, 3, 2, 2, 2, 2781, 2782, 12, 4, 2, 2, 2782, 2783, 7, 124, 2, 2, 2783, 2788, 5, 626, 314, 2, 2784, 2785, 12, 3, 2, 2, 2785, 2786, 7, 124, 2, 2, 2786, 2788, 5, 518, 260, 2, 2787, 2781, 3, 2, 2, 2, 2787, 2784, 3, 2, 2, 2, 2788, 2791, 3, 2, 2, 2, 2789, 2787, 3, 2, 2, 2, 2789, 2790, 3, 2, 2, 2, 2790, 517, 3, 2, 2, 2, 2791, 2789, 3, 2, 2, 2, 2792, 2793, 7, 125, 2, 2, 2793, 2794, 5, 626, 314, 2, 2794, 2795, 7, 124, 2, 2, 2795, 2796, 5, 428, 215, 2, 2796, 2797, 7, 132, 2, 2, 2797, 2798, 5, 626, 314, 2, 2798, 2799, 7, 124, 2, 2, 2799, 2801, 5, 626, 314, 2, 2800, 2802, 5, 436, 219, 2, 2801, 2800, 3, 2, 2, 2, 2801, 2802, 3, 2, 2, 2, 2802, 2803, 3, 2, 2, 2, 2803, 2804, 7, 130, 2, 2, 2804, 2819, 3, 2, 2, 2, 2805, 2806, 7, 125, 2, 2, 2806, 2807, 5, 516, 259, 2, 2807, 2808, 7, 124, 2, 2, 2808, 2809, 5, 428, 215, 2, 2809, 2810, 7, 132, 2, 2, 2810, 2811, 5, 626, 314, 2, 2811, 2812, 7, 124, 2, 2, 2812, 2814, 5, 626, 314, 2, 2813, 2815, 5, 436, 219, 2, 2814, 2813, 3, 2, 2, 2, 2814, 2815, 3, 2, 2, 2, 2815, 2816, 3, 2, 2, 2, 2816, 2817, 7, 130, 2, 2, 2817, 2819, 3, 2, 2, 2, 2818, 2792, 3, 2, 2, 2, 2818, 2805, 3, 2, 2, 2, 2819, 519, 3, 2, 2, 2, 2820, 2824, 5, 574, 288, 2, 2821, 2824, 5, 556, 279, 2, 2822, 2824, 7, 194, 2, 2, 2823, 2820, 3, 2, 2, 2, 2823, 2821, 3, 2, 2, 2, 2823, 2822, 3, 2, 2, 2, 2824, 521, 3, 2, 2, 2, 2825, 2827, 7, 73, 2, 2, 2826, 2828, 9, 8, 2, 2, 2827, 2826, 3, 2, 2, 2, 2827, 2828, 3, 2, 2, 2, 2828, 523, 3, 2, 2, 2, 2829, 2830, 7, 77, 2, 2, 2830, 2831, 7, 125, 2, 2, 2831, 2832, 5, 526, 264, 2, 2832, 2833, 7, 130, 2, 2, 2833, 525, 3, 2, 2, 2, 2834, 2836, 5, 594, 298, 2, 2835, 2834, 3, 2, 2, 2, 2835, 2836, 3, 2, 2, 2, 2836, 2838, 3, 2, 2, 2, 2837, 2839, 5, 528, 265, 2, 2838, 2837, 3, 2, 2, 2, 2838, 2839, 3, 2, 2, 2, 2839, 2844, 3, 2, 2, 2, 2840, 2841, 7, 124, 2, 2, 2841, 2843, 5, 528, 265, 2, 2842, 2840, 3, 2, 2, 2, 2843, 2846, 3, 2, 2, 2, 2844, 2842, 3, 2, 2, 2, 2844, 2845, 3, 2, 2, 2, 2845, 527, 3, 2, 2, 2, 2846, 2844, 3, 2, 2, 2, 2847, 2848, 7, 79, 2, 2, 2848, 2849, 7, 132, 2, 2, 2849, 2887, 5, 590, 296, 2, 2850, 2851, 7, 85, 2, 2, 2851, 2852, 7, 132, 2, 2, 2852, 2887, 5, 574, 288, 2, 2853, 2854, 7, 99, 2, 2, 2854, 2855, 7, 132, 2, 2, 2855, 2887, 5, 556, 279, 2, 2856, 2857, 7, 100, 2, 2, 2857, 2858, 7, 132, 2, 2, 2858, 2887, 5, 556, 279, 2, 2859, 2860, 7, 101, 2, 2, 2860, 2861, 7, 132, 2, 2, 2861, 2887, 5, 556, 279, 2, 2862, 2863, 7, 103, 2, 2, 2863, 2864, 7, 132, 2, 2, 2864, 2887, 5, 556, 279, 2, 2865, 2866, 7, 104, 2, 2, 2866, 2867, 7, 132, 2, 2, 2867, 2887, 5, 626, 314, 2, 2868, 2869, 7, 192, 2, 2, 2869, 2870, 7, 132, 2, 2, 2870, 2887, 5, 556, 279, 2, 2871, 2872, 7, 89, 2, 2, 2872, 2873, 7, 132, 2, 2, 2873, 2887, 5, 598, 300, 2, 2874, 2875, 7, 102, 2, 2, 2875, 2876, 7, 132, 2, 2, 2876, 2887, 5, 556, 279, 2, 2877, 2878, 7, 81, 2, 2, 2878, 2879, 7, 132, 2, 2, 2879, 2887, 5, 556, 279, 2, 2880, 2881, 7, 82, 2, 2, 2881, 2882, 7, 132, 2, 2, 2882, 2887, 5, 556, 279, 2, 2883, 2884, 7, 80, 2, 2, 2884, 2885, 7, 132, 2, 2, 2885, 2887, 5, 556, 279, 2, 2886, 2847, 3, 2, 2, 2, 2886, 2850, 3, 2, 2, 2, 2886, 2853, 3, 2, 2, 2, 2886, 2856, 3, 2, 2, 2, 2886, 2859, 3, 2, 2, 2, 2886, 2862, 3, 2, 2, 2, 2886, 2865, 3, 2, 2, 2, 2886, 2868, 3, 2, 2, 2, 2886, 2871, 3, 2, 2, 2, 2886, 2874, 3, 2, 2, 2, 2886, 2877, 3, 2, 2, 2, 2886, 2880, 3, 2, 2, 2, 2886, 2883, 3, 2, 2, 2, 2887, 529, 3, 2, 2, 2, 2888, 2889, 7, 113, 2, 2, 2889, 2890, 7, 125, 2, 2, 2890, 2891, 5, 532, 267, 2, 2891, 2892, 7, 130, 2, 2, 2892, 2902, 3, 2, 2, 2, 2893, 2894, 7, 113, 2, 2, 2894, 2895, 7, 125, 2, 2, 2895, 2896, 7, 83, 2, 2, 2896, 2897, 7, 132, 2, 2, 2897, 2898, 5, 598, 300, 2, 2898, 2899, 7, 130, 2, 2, 2899, 2900, 5, 514, 258, 2, 2900, 2902, 3, 2, 2, 2, 2901, 2888, 3, 2, 2, 2, 2901, 2893, 3, 2, 2, 2, 2902, 531, 3, 2, 2, 2, 2903, 2905, 5, 590, 296, 2, 2904, 2903, 3, 2, 2, 2, 2904, 2905, 3, 2, 2, 2, 2905, 2907, 3, 2, 2, 2, 2906, 2908, 5, 534, 268, 2, 2907, 2906, 3, 2, 2, 2, 2907, 2908, 3, 2, 2, 2, 2908, 2913, 3, 2, 2, 2, 2909, 2910, 7, 124, 2, 2, 2910, 2912, 5, 534, 268, 2, 2911, 2909, 3, 2, 2, 2, 2912, 2915, 3, 2, 2, 2, 2913, 2911, 3, 2, 2, 2, 2913, 2914, 3, 2, 2, 2, 2914, 533, 3, 2, 2, 2, 2915, 2913, 3, 2, 2, 2, 2916, 2917, 7, 79, 2, 2, 2917, 2918, 7, 132, 2, 2, 2918, 2992, 5, 590, 296, 2, 2919, 2920, 7, 99, 2, 2, 2920, 2921, 7, 132, 2, 2, 2921, 2992, 5, 556, 279, 2, 2922, 2923, 7, 85, 2, 2, 2923, 2924, 7, 132, 2, 2, 2924, 2992, 5, 574, 288, 2, 2925, 2926, 7, 89, 2, 2, 2926, 2927, 7, 132, 2, 2, 2927, 2992, 5, 598, 300, 2, 2928, 2929, 7, 105, 2, 2, 2929, 2930, 7, 132, 2, 2, 2930, 2992, 5, 598, 300, 2, 2931, 2932, 7, 106, 2, 2, 2932, 2933, 7, 132, 2, 2, 2933, 2992, 5, 598, 300, 2, 2934, 2935, 7, 107, 2, 2, 2935, 2936, 7, 132, 2, 2, 2936, 2992, 5, 598, 300, 2, 2937, 2938, 7, 108, 2, 2, 2938, 2939, 7, 132, 2, 2, 2939, 2992, 5, 598, 300, 2, 2940, 2941, 7, 190, 2, 2, 2941, 2942, 7, 132, 2, 2, 2942, 2992, 5, 598, 300, 2, 2943, 2944, 7, 101, 2, 2, 2944, 2945, 7, 132, 2, 2, 2945, 2992, 5, 598, 300, 2, 2946, 2947, 7, 97, 2, 2, 2947, 2948, 7, 132, 2, 2, 2948, 2992, 5, 598, 300, 2, 2949, 2950, 7, 69, 2, 2, 2950, 2951, 7, 132, 2, 2, 2951, 2992, 5, 598, 300, 2, 2952, 2953, 7, 103, 2, 2, 2953, 2954, 7, 132, 2, 2, 2954, 2992, 5, 598, 300, 2, 2955, 2956, 7, 110, 2, 2, 2956, 2957, 7, 132, 2, 2, 2957, 2992, 5, 598, 300, 2, 2958, 2959, 7, 111, 2, 2, 2959, 2960, 7, 132, 2, 2, 2960, 2992, 5, 598, 300, 2, 2961, 2962, 7, 104, 2, 2, 2962, 2963, 7, 132, 2, 2, 2963, 2992, 5, 626, 314, 2, 2964, 2965, 7, 112, 2, 2, 2965, 2966, 7, 132, 2, 2, 2966, 2992, 5, 598, 300, 2, 2967, 2968, 7, 192, 2, 2, 2968, 2969, 7, 132, 2, 2, 2969, 2992, 5, 598, 300, 2, 2970, 2971, 7, 102, 2, 2, 2971, 2972, 7, 132, 2, 2, 2972, 2992, 5, 598, 300, 2, 2973, 2974, 7, 81, 2, 2, 2974, 2975, 7, 132, 2, 2, 2975, 2992, 5, 598, 300, 2, 2976, 2977, 7, 75, 2, 2, 2977, 2978, 7, 132, 2, 2, 2978, 2992, 5, 598, 300, 2, 2979, 2980, 7, 74, 2, 2, 2980, 2981, 7, 132, 2, 2, 2981, 2992, 5, 598, 300, 2, 2982, 2983, 7, 84, 2, 2, 2983, 2984, 7, 132, 2, 2, 2984, 2992, 5, 598, 300, 2, 2985, 2986, 7, 82, 2, 2, 2986, 2987, 7, 132, 2, 2, 2987, 2992, 5, 598, 300, 2, 2988, 2989, 7, 80, 2, 2, 2989, 2990, 7, 132, 2, 2, 2990, 2992, 5, 598, 300, 2, 2991, 2916, 3, 2, 2, 2, 2991, 2919, 3, 2, 2, 2, 2991, 2922, 3, 2, 2, 2, 2991, 2925, 3, 2, 2, 2, 2991, 2928, 3, 2, 2, 2, 2991, 2931, 3, 2, 2, 2, 2991, 2934, 3, 2, 2, 2, 2991, 2937, 3, 2, 2, 2, 2991, 2940, 3, 2, 2, 2, 2991, 2943, 3, 2, 2, 2, 2991, 2946, 3, 2, 2, 2, 2991, 2949, 3, 2, 2, 2, 2991, 2952, 3, 2, 2, 2, 2991, 2955, 3, 2, 2, 2, 2991, 2958, 3, 2, 2, 2, 2991, 2961, 3, 2, 2, 2, 2991, 2964, 3, 2, 2, 2, 2991, 2967, 3, 2, 2, 2, 2991, 2970, 3, 2, 2, 2, 2991, 2973, 3, 2, 2, 2, 2991, 2976, 3, 2, 2, 2, 2991, 2979, 3, 2, 2, 2, 2991, 2982, 3, 2, 2, 2, 2991, 2985, 3, 2, 2, 2, 2991, 2988, 3, 2, 2, 2, 2992, 535, 3, 2, 2, 2, 2993, 2997, 7, 52, 2, 2, 2994, 2995, 7, 51, 2, 2, 2995, 2997, 7, 161, 2, 2, 2996, 2993, 3, 2, 2, 2, 2996, 2994, 3, 2, 2, 2, 2997, 2998, 3, 2, 2, 2, 2998, 3020, 5, 434, 218, 2, 2999, 3003, 7, 52, 2, 2, 3000, 3001, 7, 51, 2, 2, 3001, 3003, 7, 161, 2, 2, 3002, 2999, 3, 2, 2, 2, 3002, 3000, 3, 2, 2, 2, 3003, 3004, 3, 2, 2, 2, 3004, 3005, 5, 434, 218, 2, 3005, 3006, 7, 125, 2, 2, 3006, 3007, 5, 544, 273, 2, 3007, 3008, 7, 130, 2, 2, 3008, 3020, 3, 2, 2, 2, 3009, 3013, 7, 52, 2, 2, 3010, 3011, 7, 51, 2, 2, 3011, 3013, 7, 161, 2, 2, 3012, 3009, 3, 2, 2, 2, 3012, 3010, 3, 2, 2, 2, 3013, 3014, 3, 2, 2, 2, 3014, 3015, 5, 538, 270, 2, 3015, 3016, 7, 125, 2, 2, 3016, 3017, 5, 544, 273, 2, 3017, 3018, 7, 130, 2, 2, 3018, 3020, 3, 2, 2, 2, 3019, 2996, 3, 2, 2, 2, 3019, 3002, 3, 2, 2, 2, 3019, 3012, 3, 2, 2, 2, 3020, 537, 3, 2, 2, 2, 3021, 3022, 5, 434, 218, 2, 3022, 3023, 7, 124, 2, 2, 3023, 539, 3, 2, 2, 2, 3024, 3028, 7, 52, 2, 2, 3025, 3026, 7, 51, 2, 2, 3026, 3028, 7, 161, 2, 2, 3027, 3024, 3, 2, 2, 2, 3027, 3025, 3, 2, 2, 2, 3028, 3029, 3, 2, 2, 2, 3029, 3030, 5, 574, 288, 2, 3030, 541, 3, 2, 2, 2, 3031, 3032, 7, 52, 2, 2, 3032, 3033, 7, 125, 2, 2, 3033, 3034, 5, 544, 273, 2, 3034, 3036, 7, 130, 2, 2, 3035, 3037, 7, 124, 2, 2, 3036, 3035, 3, 2, 2, 2, 3036, 3037, 3, 2, 2, 2, 3037, 3038, 3, 2, 2, 2, 3038, 3039, 5, 626, 314, 2, 3039, 543, 3, 2, 2, 2, 3040, 3045, 5, 574, 288, 2, 3041, 3042, 7, 124, 2, 2, 3042, 3044, 5, 574, 288, 2, 3043, 3041, 3, 2, 2, 2, 3044, 3047, 3, 2, 2, 2, 3045, 3043, 3, 2, 2, 2, 3045, 3046, 3, 2, 2, 2, 3046, 545, 3, 2, 2, 2, 3047, 3045, 3, 2, 2, 2, 3048, 3052, 7, 115, 2, 2, 3049, 3050, 7, 14, 2, 2, 3050, 3052, 7, 99, 2, 2, 3051, 3048, 3, 2, 2, 2, 3051, 3049, 3, 2, 2, 2, 3052, 3053, 3, 2, 2, 2, 3053, 3064, 5, 590, 296, 2, 3054, 3058, 7, 115, 2, 2, 3055, 3056, 7, 14, 2, 2, 3056, 3058, 7, 99, 2, 2, 3057, 3054, 3, 2, 2, 2, 3057, 3055, 3, 2, 2, 2, 3058, 3059, 3, 2, 2, 2, 3059, 3060, 7, 125, 2, 2, 3060, 3061, 5, 592, 297, 2, 3061, 3062, 7, 130, 2, 2, 3062, 3064, 3, 2, 2, 2, 3063, 3051, 3, 2, 2, 2, 3063, 3057, 3, 2, 2, 2, 3064, 547, 3, 2, 2, 2, 3065, 3066, 7, 61, 2, 2, 3066, 549, 3, 2, 2, 2, 3067, 3068, 7, 94, 2, 2, 3068, 3069, 7, 125, 2, 2, 3069, 3070, 5, 552, 277, 2, 3070, 3071, 7, 130, 2, 2, 3071, 551, 3, 2, 2, 2, 3072, 3074, 5, 594, 298, 2, 3073, 3072, 3, 2, 2, 2, 3073, 3074, 3, 2, 2, 2, 3074, 3076, 3, 2, 2, 2, 3075, 3077, 5, 554, 278, 2, 3076, 3075, 3, 2, 2, 2, 3076, 3077, 3, 2, 2, 2, 3077, 3082, 3, 2, 2, 2, 3078, 3079, 7, 124, 2, 2, 3079, 3081, 5, 554, 278, 2, 3080, 3078, 3, 2, 2, 2, 3081, 3084, 3, 2, 2, 2, 3082, 3080, 3, 2, 2, 2, 3082, 3083, 3, 2, 2, 2, 3083, 553, 3, 2, 2, 2, 3084, 3082, 3, 2, 2, 2, 3085, 3086, 7, 79, 2, 2, 3086, 3087, 7, 132, 2, 2, 3087, 3097, 5, 590, 296, 2, 3088, 3089, 7, 85, 2, 2, 3089, 3090, 7, 132, 2, 2, 3090, 3097, 5, 574, 288, 2, 3091, 3092, 7, 100, 2, 2, 3092, 3093, 7, 132, 2, 2, 3093, 3097, 5, 556, 279, 2, 3094, 3095, 7, 89, 2, 2, 3095, 3097, 5, 598, 300, 2, 3096, 3085, 3, 2, 2, 2, 3096, 3088, 3, 2, 2, 2, 3096, 3091, 3, 2, 2, 2, 3096, 3094, 3, 2, 2, 2, 3097, 555, 3, 2, 2, 2, 3098, 3102, 5, 558, 280, 2, 3099, 3101, 5, 562, 282, 2, 3100, 3099, 3, 2, 2, 2, 3101, 3104, 3, 2, 2, 2, 3102, 3100, 3, 2, 2, 2, 3102, 3103, 3, 2, 2, 2, 3103, 557, 3, 2, 2, 2, 3104, 3102, 3, 2, 2, 2, 3105, 3111, 5, 560, 281, 2, 3106, 3107, 7, 125, 2, 2, 3107, 3108, 5, 556, 279, 2, 3108, 3109, 7, 130, 2, 2, 3109, 3111, 3, 2, 2, 2, 3110, 3105, 3, 2, 2, 2, 3110, 3106, 3, 2, 2, 2, 3111, 559, 3, 2, 2, 2, 3112, 3116, 7, 179, 2, 2, 3113, 3116, 5, 672, 337, 2, 3114, 3116, 5, 666, 334, 2, 3115, 3112, 3, 2, 2, 2, 3115, 3113, 3, 2, 2, 2, 3115, 3114, 3, 2, 2, 2, 3116, 561, 3, 2, 2, 2, 3117, 3118, 5, 558, 280, 2, 3118, 3119, 7, 135, 2, 2, 3119, 3120, 7, 186, 2, 2, 3120, 3121, 7, 135, 2, 2, 3121, 3122, 7, 187, 2, 2, 3122, 563, 3, 2, 2, 2, 3123, 3124, 7, 92, 2, 2, 3124, 3132, 5, 566, 284, 2, 3125, 3126, 7, 92, 2, 2, 3126, 3127, 5, 566, 284, 2, 3127, 3128, 7, 125, 2, 2, 3128, 3129, 5, 568, 285, 2, 3129, 3130, 7, 130, 2, 2, 3130, 3132, 3, 2, 2, 2, 3131, 3123, 3, 2, 2, 2, 3131, 3125, 3, 2, 2, 2, 3132, 565, 3, 2, 2, 2, 3133, 3134, 7, 190, 2, 2, 3134, 567, 3, 2, 2, 2, 3135, 3137, 5, 570, 286, 2, 3136, 3135, 3, 2, 2, 2, 3136, 3137, 3, 2, 2, 2, 3137, 3142, 3, 2, 2, 2, 3138, 3139, 7, 124, 2, 2, 3139, 3141, 5, 570, 286, 2, 3140, 3138, 3, 2, 2, 2, 3141, 3144, 3, 2, 2, 2, 3142, 3140, 3, 2, 2, 2, 3142, 3143, 3, 2, 2, 2, 3143, 569, 3, 2, 2, 2, 3144, 3142, 3, 2, 2, 2, 3145, 3160, 5, 626, 314, 2, 3146, 3160, 7, 157, 2, 2, 3147, 3148, 7, 194, 2, 2, 3148, 3160, 5, 574, 288, 2, 3149, 3150, 7, 190, 2, 2, 3150, 3151, 7, 132, 2, 2, 3151, 3160, 5, 626, 314, 2, 3152, 3153, 7, 190, 2, 2, 3153, 3154, 7, 132, 2, 2, 3154, 3160, 7, 157, 2, 2, 3155, 3156, 7, 190, 2, 2, 3156, 3157, 7, 132, 2, 2, 3157, 3158, 7, 194, 2, 2, 3158, 3160, 5, 574, 288, 2, 3159, 3145, 3, 2, 2, 2, 3159, 3146, 3, 2, 2, 2, 3159, 3147, 3, 2, 2, 2, 3159, 3149, 3, 2, 2, 2, 3159, 3152, 3, 2, 2, 2, 3159, 3155, 3, 2, 2, 2, 3160, 571, 3, 2, 2, 2, 3161, 3162, 7, 53, 2, 2, 3162, 3163, 7, 125, 2, 2, 3163, 3164, 5, 626, 314, 2, 3164, 3165, 7, 130, 2, 2, 3165, 3166, 5, 574, 288, 2, 3166, 3167, 7, 124, 2, 2, 3167, 3168, 5, 574, 288, 2, 3168, 3169, 7, 124, 2, 2, 3169, 3170, 5, 574, 288, 2, 3170, 573, 3, 2, 2, 2, 3171, 3172, 5, 576, 289, 2, 3172, 575, 3, 2, 2, 2, 3173, 3174, 7, 188, 2, 2, 3174, 577, 3, 2, 2, 2, 3175, 3177, 5, 576, 289, 2, 3176, 3175, 3, 2, 2, 2, 3176, 3177, 3, 2, 2, 2, 3177, 3178, 3, 2, 2, 2, 3178, 3180, 7, 190, 2, 2, 3179, 3181, 5, 580, 291, 2, 3180, 3179, 3, 2, 2, 2, 3180, 3181, 3, 2, 2, 2, 3181, 3183, 3, 2, 2, 2, 3182, 3184, 5, 414, 208, 2, 3183, 3182, 3, 2, 2, 2, 3183, 3184, 3, 2, 2, 2, 3184, 3185, 3, 2, 2, 2, 3185, 3186, 7, 132, 2, 2, 3186, 3206, 5, 626, 314, 2, 3187, 3189, 7, 190, 2, 2, 3188, 3190, 5, 580, 291, 2, 3189, 3188, 3, 2, 2, 2, 3189, 3190, 3, 2, 2, 2, 3190, 3191, 3, 2, 2, 2, 3191, 3192, 7, 126, 2, 2, 3192, 3193, 5, 672, 337, 2, 3193, 3194, 7, 132, 2, 2, 3194, 3195, 5, 626, 314, 2, 3195, 3206, 3, 2, 2, 2, 3196, 3197, 7, 190, 2, 2, 3197, 3198, 7, 125, 2, 2, 3198, 3199, 5, 482, 242, 2, 3199, 3200, 7, 130, 2, 2, 3200, 3201, 7, 126, 2, 2, 3201, 3202, 5, 672, 337, 2, 3202, 3203, 7, 132, 2, 2, 3203, 3204, 5, 626, 314, 2, 3204, 3206, 3, 2, 2, 2, 3205, 3176, 3, 2, 2, 2, 3205, 3187, 3, 2, 2, 2, 3205, 3196, 3, 2, 2, 2, 3206, 579, 3, 2, 2, 2, 3207, 3208, 7, 125, 2, 2, 3208, 3212, 5, 582, 292, 2, 3209, 3211, 5, 584, 293, 2, 3210, 3209, 3, 2, 2, 2, 3211, 3214, 3, 2, 2, 2, 3212, 3210, 3, 2, 2, 2, 3212, 3213, 3, 2, 2, 2, 3213, 3215, 3, 2, 2, 2, 3214, 3212, 3, 2, 2, 2, 3215, 3216, 7, 130, 2, 2, 3216, 581, 3, 2, 2, 2, 3217, 3219, 5, 626, 314, 2, 3218, 3220, 7, 131, 2, 2, 3219, 3218, 3, 2, 2, 2, 3219, 3220, 3, 2, 2, 2, 3220, 3222, 3, 2, 2, 2, 3221, 3223, 5, 626, 314, 2, 3222, 3221, 3, 2, 2, 2, 3222, 3223, 3, 2, 2, 2, 3223, 3242, 3, 2, 2, 2, 3224, 3226, 7, 131, 2, 2, 3225, 3227, 5, 626, 314, 2, 3226, 3225, 3, 2, 2, 2, 3226, 3227, 3, 2, 2, 2, 3227, 3242, 3, 2, 2, 2, 3228, 3230, 5, 626, 314, 2, 3229, 3228, 3, 2, 2, 2, 3229, 3230, 3, 2, 2, 2, 3230, 3231, 3, 2, 2, 2, 3231, 3232, 7, 131, 2, 2, 3232, 3233, 5, 626, 314, 2, 3233, 3234, 7, 131, 2, 2, 3234, 3235, 5, 626, 314, 2, 3235, 3242, 3, 2, 2, 2, 3236, 3238, 5, 626, 314, 2, 3237, 3236, 3, 2, 2, 2, 3237, 3238, 3, 2, 2, 2, 3238, 3239, 3, 2, 2, 2, 3239, 3240, 7, 32, 2, 2, 3240, 3242, 5, 626, 314, 2, 3241, 3217, 3, 2, 2, 2, 3241, 3224, 3, 2, 2, 2, 3241, 3229, 3, 2, 2, 2, 3241, 3237, 3, 2, 2, 2, 3242, 583, 3, 2, 2, 2, 3243, 3244, 7, 124, 2, 2, 3244, 3245, 5, 680, 341, 2, 3245, 585, 3, 2, 2, 2, 3246, 3247, 7, 33, 2, 2, 3247, 3248, 5, 574, 288, 2, 3248, 3249, 7, 161, 2, 2, 3249, 3250, 5, 434, 218, 2, 3250, 587, 3, 2, 2, 2, 3251, 3252, 7, 114, 2, 2, 3252, 3259, 5, 590, 296, 2, 3253, 3254, 7, 114, 2, 2, 3254, 3255, 7, 125, 2, 2, 3255, 3256, 5, 592, 297, 2, 3256, 3257, 7, 130, 2, 2, 3257, 3259, 3, 2, 2, 2, 3258, 3251, 3, 2, 2, 2, 3258, 3253, 3, 2, 2, 2, 3259, 589, 3, 2, 2, 2, 3260, 3263, 5, 600, 301, 2, 3261, 3263, 7, 194, 2, 2, 3262, 3260, 3, 2, 2, 2, 3262, 3261, 3, 2, 2, 2, 3263, 591, 3, 2, 2, 2, 3264, 3266, 5, 594, 298, 2, 3265, 3264, 3, 2, 2, 2, 3265, 3266, 3, 2, 2, 2, 3266, 3268, 3, 2, 2, 2, 3267, 3269, 5, 596, 299, 2, 3268, 3267, 3, 2, 2, 2, 3269, 3270, 3, 2, 2, 2, 3270, 3268, 3, 2, 2, 2, 3270, 3271, 3, 2, 2, 2, 3271, 593, 3, 2, 2, 2, 3272, 3274, 5, 590, 296, 2, 3273, 3275, 7, 124, 2, 2, 3274, 3273, 3, 2, 2, 2, 3274, 3275, 3, 2, 2, 2, 3275, 595, 3, 2, 2, 2, 3276, 3277, 7, 79, 2, 2, 3277, 3278, 7, 132, 2, 2, 3278, 3286, 5, 590, 296, 2, 3279, 3280, 7, 85, 2, 2, 3280, 3281, 7, 132, 2, 2, 3281, 3286, 5, 574, 288, 2, 3282, 3283, 7, 89, 2, 2, 3283, 3284, 7, 132, 2, 2, 3284, 3286, 5, 598, 300, 2, 3285, 3276, 3, 2, 2, 2, 3285, 3279, 3, 2, 2, 2, 3285, 3282, 3, 2, 2, 2, 3286, 597, 3, 2, 2, 2, 3287, 3290, 5, 434, 218, 2, 3288, 3290, 5, 426, 214, 2, 3289, 3287, 3, 2, 2, 2, 3289, 3288, 3, 2, 2, 2, 3290, 599, 3, 2, 2, 2, 3291, 3292, 8, 301, 1, 2, 3292, 3296, 5, 602, 302, 2, 3293, 3294, 9, 3, 2, 2, 3294, 3296, 5, 602, 302, 2, 3295, 3291, 3, 2, 2, 2, 3295, 3293, 3, 2, 2, 2, 3296, 3302, 3, 2, 2, 2, 3297, 3298, 12, 3, 2, 2, 3298, 3299, 9, 3, 2, 2, 3299, 3301, 5, 602, 302, 2, 3300, 3297, 3, 2, 2, 2, 3301, 3304, 3, 2, 2, 2, 3302, 3300, 3, 2, 2, 2, 3302, 3303, 3, 2, 2, 2, 3303, 601, 3, 2, 2, 2, 3304, 3302, 3, 2, 2, 2, 3305, 3306, 8, 302, 1, 2, 3306, 3307, 5, 604, 303, 2, 3307, 3318, 3, 2, 2, 2, 3308, 3309, 12, 4, 2, 2, 3309, 3310, 9, 9, 2, 2, 3310, 3317, 5, 604, 303, 2, 3311, 3312, 12, 3, 2, 2, 3312, 3313, 7, 135, 2, 2, 3313, 3314, 7, 135, 2, 2, 3314, 3315, 3, 2, 2, 2, 3315, 3317, 5, 606, 304, 2, 3316, 3308, 3, 2, 2, 2, 3316, 3311, 3, 2, 2, 2, 3317, 3320, 3, 2, 2, 2, 3318, 3316, 3, 2, 2, 2, 3318, 3319, 3, 2, 2, 2, 3319, 603, 3, 2, 2, 2, 3320, 3318, 3, 2, 2, 2, 3321, 3327, 5, 606, 304, 2, 3322, 3323, 5, 606, 304, 2, 3323, 3324, 7, 137, 2, 2, 3324, 3325, 5, 604, 303, 2, 3325, 3327, 3, 2, 2, 2, 3326, 3321, 3, 2, 2, 2, 3326, 3322, 3, 2, 2, 2, 3327, 605, 3, 2, 2, 2, 3328, 3337, 7, 188, 2, 2, 3329, 3337, 7, 179, 2, 2, 3330, 3337, 5, 672, 337, 2, 3331, 3337, 5, 666, 334, 2, 3332, 3333, 7, 125, 2, 2, 3333, 3334, 5, 600, 301, 2, 3334, 3335, 7, 130, 2, 2, 3335, 3337, 3, 2, 2, 2, 3336, 3328, 3, 2, 2, 2, 3336, 3329, 3, 2, 2, 2, 3336, 3330, 3, 2, 2, 2, 3336, 3331, 3, 2, 2, 2, 3336, 3332, 3, 2, 2, 2, 3337, 607, 3, 2, 2, 2, 3338, 3339, 7, 11, 2, 2, 3339, 3340, 5, 610, 306, 2, 3340, 3341, 5, 612, 307, 2, 3341, 3348, 3, 2, 2, 2, 3342, 3343, 7, 3, 2, 2, 3343, 3344, 7, 11, 2, 2, 3344, 3345, 5, 610, 306, 2, 3345, 3346, 5, 612, 307, 2, 3346, 3348, 3, 2, 2, 2, 3347, 3338, 3, 2, 2, 2, 3347, 3342, 3, 2, 2, 2, 3348, 609, 3, 2, 2, 2, 3349, 3350, 7, 190, 2, 2, 3350, 611, 3, 2, 2, 2, 3351, 3353, 5, 66, 34, 2, 3352, 3354, 5, 318, 160, 2, 3353, 3352, 3, 2, 2, 2, 3353, 3354, 3, 2, 2, 2, 3354, 3355, 3, 2, 2, 2, 3355, 3356, 5, 218, 110, 2, 3356, 3362, 3, 2, 2, 2, 3357, 3358, 5, 66, 34, 2, 3358, 3359, 5, 14, 8, 2, 3359, 3360, 5, 218, 110, 2, 3360, 3362, 3, 2, 2, 2, 3361, 3351, 3, 2, 2, 2, 3361, 3357, 3, 2, 2, 2, 3362, 613, 3, 2, 2, 2, 3363, 3364, 7, 60, 2, 2, 3364, 3365, 7, 179, 2, 2, 3365, 615, 3, 2, 2, 2, 3366, 3367, 7, 43, 2, 2, 3367, 3371, 5, 618, 310, 2, 3368, 3369, 7, 43, 2, 2, 3369, 3371, 7, 44, 2, 2, 3370, 3366, 3, 2, 2, 2, 3370, 3368, 3, 2, 2, 2, 3371, 617, 3, 2, 2, 2, 3372, 3377, 5, 620, 311, 2, 3373, 3374, 7, 124, 2, 2, 3374, 3376, 5, 620, 311, 2, 3375, 3373, 3, 2, 2, 2, 3376, 3379, 3, 2, 2, 2, 3377, 3375, 3, 2, 2, 2, 3377, 3378, 3, 2, 2, 2, 3378, 619, 3, 2, 2, 2, 3379, 3377, 3, 2, 2, 2, 3380, 3381, 5, 274, 138, 2, 3381, 3382, 5, 622, 312, 2, 3382, 3389, 3, 2, 2, 2, 3383, 3384, 5, 274, 138, 2, 3384, 3385, 7, 125, 2, 2, 3385, 3386, 5, 622, 312, 2, 3386, 3387, 7, 130, 2, 2, 3387, 3389, 3, 2, 2, 2, 3388, 3380, 3, 2, 2, 2, 3388, 3383, 3, 2, 2, 2, 3389, 621, 3, 2, 2, 2, 3390, 3392, 5, 624, 313, 2, 3391, 3390, 3, 2, 2, 2, 3391, 3392, 3, 2, 2, 2, 3392, 3397, 3, 2, 2, 2, 3393, 3394, 7, 124, 2, 2, 3394, 3396, 5, 624, 313, 2, 3395, 3393, 3, 2, 2, 2, 3396, 3399, 3, 2, 2, 2, 3397, 3395, 3, 2, 2, 2, 3397, 3398, 3, 2, 2, 2, 3398, 623, 3, 2, 2, 2, 3399, 3397, 3, 2, 2, 2, 3400, 3401, 7, 190, 2, 2, 3401, 3402, 7, 133, 2, 2, 3402, 3403, 7, 190, 2, 2, 3403, 625, 3, 2, 2, 2, 3404, 3405, 8, 314, 1, 2, 3405, 3406, 5, 630, 316, 2, 3406, 3413, 3, 2, 2, 2, 3407, 3408, 12, 3, 2, 2, 3408, 3409, 5, 628, 315, 2, 3409, 3410, 5, 630, 316, 2, 3410, 3412, 3, 2, 2, 2, 3411, 3407, 3, 2, 2, 2, 3412, 3415, 3, 2, 2, 2, 3413, 3411, 3, 2, 2, 2, 3413, 3414, 3, 2, 2, 2, 3414, 627, 3, 2, 2, 2, 3415, 3413, 3, 2, 2, 2, 3416, 3417, 7, 29, 2, 2, 3417, 629, 3, 2, 2, 2, 3418, 3423, 5, 632, 317, 2, 3419, 3420, 9, 5, 2, 2, 3420, 3422, 5, 632, 317, 2, 3421, 3419, 3, 2, 2, 2, 3422, 3425, 3, 2, 2, 2, 3423, 3421, 3, 2, 2, 2, 3423, 3424, 3, 2, 2, 2, 3424, 631, 3, 2, 2, 2, 3425, 3423, 3, 2, 2, 2, 3426, 3431, 5, 634, 318, 2, 3427, 3428, 7, 140, 2, 2, 3428, 3430, 5, 634, 318, 2, 3429, 3427, 3, 2, 2, 2, 3430, 3433, 3, 2, 2, 2, 3431, 3429, 3, 2, 2, 2, 3431, 3432, 3, 2, 2, 2, 3432, 633, 3, 2, 2, 2, 3433, 3431, 3, 2, 2, 2, 3434, 3439, 5, 636, 319, 2, 3435, 3436, 7, 139, 2, 2, 3436, 3438, 5, 636, 319, 2, 3437, 3435, 3, 2, 2, 2, 3438, 3441, 3, 2, 2, 2, 3439, 3437, 3, 2, 2, 2, 3439, 3440, 3, 2, 2, 2, 3440, 635, 3, 2, 2, 2, 3441, 3439, 3, 2, 2, 2, 3442, 3444, 7, 138, 2, 2, 3443, 3442, 3, 2, 2, 2, 3443, 3444, 3, 2, 2, 2, 3444, 3445, 3, 2, 2, 2, 3445, 3446, 5, 640, 321, 2, 3446, 637, 3, 2, 2, 2, 3447, 3448, 9, 10, 2, 2, 3448, 639, 3, 2, 2, 2, 3449, 3455, 5, 642, 322, 2, 3450, 3451, 5, 638, 320, 2, 3451, 3452, 5, 642, 322, 2, 3452, 3454, 3, 2, 2, 2, 3453, 3450, 3, 2, 2, 2, 3454, 3457, 3, 2, 2, 2, 3455, 3453, 3, 2, 2, 2, 3455, 3456, 3, 2, 2, 2, 3456, 641, 3, 2, 2, 2, 3457, 3455, 3, 2, 2, 2, 3458, 3470, 5, 644, 323, 2, 3459, 3461, 7, 135, 2, 2, 3460, 3462, 7, 186, 2, 2, 3461, 3460, 3, 2, 2, 2, 3461, 3462, 3, 2, 2, 2, 3462, 3463, 3, 2, 2, 2, 3463, 3465, 7, 135, 2, 2, 3464, 3466, 7, 187, 2, 2, 3465, 3464, 3, 2, 2, 2, 3465, 3466, 3, 2, 2, 2, 3466, 3467, 3, 2, 2, 2, 3467, 3469, 5, 644, 323, 2, 3468, 3459, 3, 2, 2, 2, 3469, 3472, 3, 2, 2, 2, 3470, 3468, 3, 2, 2, 2, 3470, 3471, 3, 2, 2, 2, 3471, 643, 3, 2, 2, 2, 3472, 3470, 3, 2, 2, 2, 3473, 3475, 5, 646, 324, 2, 3474, 3473, 3, 2, 2, 2, 3474, 3475, 3, 2, 2, 2, 3475, 3476, 3, 2, 2, 2, 3476, 3481, 5, 648, 325, 2, 3477, 3478, 9, 3, 2, 2, 3478, 3480, 5, 648, 325, 2, 3479, 3477, 3, 2, 2, 2, 3480, 3483, 3, 2, 2, 2, 3481, 3479, 3, 2, 2, 2, 3481, 3482, 3, 2, 2, 2, 3482, 645, 3, 2, 2, 2, 3483, 3481, 3, 2, 2, 2, 3484, 3485, 9, 3, 2, 2, 3485, 647, 3, 2, 2, 2, 3486, 3491, 5, 650, 326, 2, 3487, 3488, 9, 9, 2, 2, 3488, 3490, 5, 650, 326, 2, 3489, 3487, 3, 2, 2, 2, 3490, 3493, 3, 2, 2, 2, 3491, 3489, 3, 2, 2, 2, 3491, 3492, 3, 2, 2, 2, 3492, 649, 3, 2, 2, 2, 3493, 3491, 3, 2, 2, 2, 3494, 3499, 5, 652, 327, 2, 3495, 3496, 7, 137, 2, 2, 3496, 3498, 5, 652, 327, 2, 3497, 3495, 3, 2, 2, 2, 3498, 3501, 3, 2, 2, 2, 3499, 3497, 3, 2, 2, 2, 3499, 3500, 3, 2, 2, 2, 3500, 651, 3, 2, 2, 2, 3501, 3499, 3, 2, 2, 2, 3502, 3507, 5, 656, 329, 2, 3503, 3504, 5, 654, 328, 2, 3504, 3505, 5, 656, 329, 2, 3505, 3507, 3, 2, 2, 2, 3506, 3502, 3, 2, 2, 2, 3506, 3503, 3, 2, 2, 2, 3507, 653, 3, 2, 2, 2, 3508, 3509, 7, 29, 2, 2, 3509, 655, 3, 2, 2, 2, 3510, 3521, 5, 688, 345, 2, 3511, 3521, 5, 672, 337, 2, 3512, 3521, 5, 666, 334, 2, 3513, 3514, 7, 125, 2, 2, 3514, 3515, 5, 626, 314, 2, 3515, 3516, 7, 130, 2, 2, 3516, 3521, 3, 2, 2, 2, 3517, 3521, 7, 179, 2, 2, 3518, 3521, 5, 684, 343, 2, 3519, 3521, 5, 658, 330, 2, 3520, 3510, 3, 2, 2, 2, 3520, 3511, 3, 2, 2, 2, 3520, 3512, 3, 2, 2, 2, 3520, 3513, 3, 2, 2, 2, 3520, 3517, 3, 2, 2, 2, 3520, 3518, 3, 2, 2, 2, 3520, 3519, 3, 2, 2, 2, 3521, 657, 3, 2, 2, 2, 3522, 3523, 7, 173, 2, 2, 3523, 3524, 5, 660, 331, 2, 3524, 3525, 7, 175, 2, 2, 3525, 659, 3, 2, 2, 2, 3526, 3529, 5, 626, 314, 2, 3527, 3529, 5, 662, 332, 2, 3528, 3526, 3, 2, 2, 2, 3528, 3527, 3, 2, 2, 2, 3529, 661, 3, 2, 2, 2, 3530, 3531, 8, 332, 1, 2, 3531, 3532, 5, 626, 314, 2, 3532, 3533, 7, 124, 2, 2, 3533, 3534, 5, 626, 314, 2, 3534, 3541, 3, 2, 2, 2, 3535, 3536, 5, 626, 314, 2, 3536, 3537, 7, 124, 2, 2, 3537, 3538, 5, 664, 333, 2, 3538, 3541, 3, 2, 2, 2, 3539, 3541, 5, 664, 333, 2, 3540, 3530, 3, 2, 2, 2, 3540, 3535, 3, 2, 2, 2, 3540, 3539, 3, 2, 2, 2, 3541, 3550, 3, 2, 2, 2, 3542, 3543, 12, 4, 2, 2, 3543, 3544, 7, 124, 2, 2, 3544, 3549, 5, 626, 314, 2, 3545, 3546, 12, 3, 2, 2, 3546, 3547, 7, 124, 2, 2, 3547, 3549, 5, 664, 333, 2, 3548, 3542, 3, 2, 2, 2, 3548, 3545, 3, 2, 2, 2, 3549, 3552, 3, 2, 2, 2, 3550, 3548, 3, 2, 2, 2, 3550, 3551, 3, 2, 2, 2, 3551, 663, 3, 2, 2, 2, 3552, 3550, 3, 2, 2, 2, 3553, 3554, 7, 125, 2, 2, 3554, 3555, 5, 626, 314, 2, 3555, 3556, 7, 124, 2, 2, 3556, 3557, 5, 428, 215, 2, 3557, 3558, 7, 132, 2, 2, 3558, 3559, 5, 626, 314, 2, 3559, 3560, 7, 124, 2, 2, 3560, 3561, 5, 626, 314, 2, 3561, 3562, 7, 130, 2, 2, 3562, 3598, 3, 2, 2, 2, 3563, 3564, 7, 125, 2, 2, 3564, 3565, 5, 626, 314, 2, 3565, 3566, 7, 124, 2, 2, 3566, 3567, 5, 428, 215, 2, 3567, 3568, 7, 132, 2, 2, 3568, 3569, 5, 626, 314, 2, 3569, 3570, 7, 124, 2, 2, 3570, 3571, 5, 626, 314, 2, 3571, 3572, 7, 124, 2, 2, 3572, 3573, 5, 626, 314, 2, 3573, 3574, 7, 130, 2, 2, 3574, 3598, 3, 2, 2, 2, 3575, 3576, 7, 125, 2, 2, 3576, 3577, 5, 664, 333, 2, 3577, 3578, 7, 124, 2, 2, 3578, 3579, 5, 428, 215, 2, 3579, 3580, 7, 132, 2, 2, 3580, 3581, 5, 626, 314, 2, 3581, 3582, 7, 124, 2, 2, 3582, 3583, 5, 626, 314, 2, 3583, 3584, 7, 130, 2, 2, 3584, 3598, 3, 2, 2, 2, 3585, 3586, 7, 125, 2, 2, 3586, 3587, 5, 664, 333, 2, 3587, 3588, 7, 124, 2, 2, 3588, 3589, 5, 428, 215, 2, 3589, 3590, 7, 132, 2, 2, 3590, 3591, 5, 626, 314, 2, 3591, 3592, 7, 124, 2, 2, 3592, 3593, 5, 626, 314, 2, 3593, 3594, 7, 124, 2, 2, 3594, 3595, 5, 626, 314, 2, 3595, 3596, 7, 130, 2, 2, 3596, 3598, 3, 2, 2, 2, 3597, 3553, 3, 2, 2, 2, 3597, 3563, 3, 2, 2, 2, 3597, 3575, 3, 2, 2, 2, 3597, 3585, 3, 2, 2, 2, 3598, 665, 3, 2, 2, 2, 3599, 3600, 7, 190, 2, 2, 3600, 3601, 7, 125, 2, 2, 3601, 3608, 7, 130, 2, 2, 3602, 3603, 7, 190, 2, 2, 3603, 3604, 7, 125, 2, 2, 3604, 3605, 5, 668, 335, 2, 3605, 3606, 7, 130, 2, 2, 3606, 3608, 3, 2, 2, 2, 3607, 3599, 3, 2, 2, 2, 3607, 3602, 3, 2, 2, 2, 3608, 667, 3, 2, 2, 2, 3609, 3610, 8, 335, 1, 2, 3610, 3616, 5, 670, 336, 2, 3611, 3612, 5, 678, 340, 2, 3612, 3613, 7, 124, 2, 2, 3613, 3614, 5, 670, 336, 2, 3614, 3616, 3, 2, 2, 2, 3615, 3609, 3, 2, 2, 2, 3615, 3611, 3, 2, 2, 2, 3616, 3622, 3, 2, 2, 2, 3617, 3618, 12, 4, 2, 2, 3618, 3619, 7, 124, 2, 2, 3619, 3621, 5, 670, 336, 2, 3620, 3617, 3, 2, 2, 2, 3621, 3624, 3, 2, 2, 2, 3622, 3620, 3, 2, 2, 2, 3622, 3623, 3, 2, 2, 2, 3623, 669, 3, 2, 2, 2, 3624, 3622, 3, 2, 2, 2, 3625, 3626, 7, 190, 2, 2, 3626, 3627, 7, 132, 2, 2, 3627, 3628, 5, 626, 314, 2, 3628, 671, 3, 2, 2, 2, 3629, 3633, 9, 11, 2, 2, 3630, 3632, 5, 674, 338, 2, 3631, 3630, 3, 2, 2, 2, 3632, 3635, 3, 2, 2, 2, 3633, 3631, 3, 2, 2, 2, 3633, 3634, 3, 2, 2, 2, 3634, 673, 3, 2, 2, 2, 3635, 3633, 3, 2, 2, 2, 3636, 3640, 5, 676, 339, 2, 3637, 3638, 7, 126, 2, 2, 3638, 3640, 7, 190, 2, 2, 3639, 3636, 3, 2, 2, 2, 3639, 3637, 3, 2, 2, 2, 3640, 675, 3, 2, 2, 2, 3641, 3642, 7, 125, 2, 2, 3642, 3643, 5, 678, 340, 2, 3643, 3644, 7, 130, 2, 2, 3644, 677, 3, 2, 2, 2, 3645, 3650, 5, 680, 341, 2, 3646, 3647, 7, 124, 2, 2, 3647, 3649, 5, 680, 341, 2, 3648, 3646, 3, 2, 2, 2, 3649, 3652, 3, 2, 2, 2, 3650, 3648, 3, 2, 2, 2, 3650, 3651, 3, 2, 2, 2, 3651, 679, 3, 2, 2, 2, 3652, 3650, 3, 2, 2, 2, 3653, 3655, 5, 626, 314, 2, 3654, 3656, 5, 682, 342, 2, 3655, 3654, 3, 2, 2, 2, 3655, 3656, 3, 2, 2, 2, 3656, 3659, 3, 2, 2, 2, 3657, 3659, 5, 682, 342, 2, 3658, 3653, 3, 2, 2, 2, 3658, 3657, 3, 2, 2, 2, 3659, 681, 3, 2, 2, 2, 3660, 3662, 7, 131, 2, 2, 3661, 3663, 5, 626, 314, 2, 3662, 3661, 3, 2, 2, 2, 3662, 3663, 3, 2, 2, 2, 3663, 3672, 3, 2, 2, 2, 3664, 3665, 7, 131, 2, 2, 3665, 3666, 5, 626, 314, 2, 3666, 3667, 7, 131, 2, 2, 3667, 3668, 5, 626, 314, 2, 3668, 3672, 3, 2, 2, 2, 3669, 3670, 7, 32, 2, 2, 3670, 3672, 5, 626, 314, 2, 3671, 3660, 3, 2, 2, 2, 3671, 3664, 3, 2, 2, 2, 3671, 3669, 3, 2, 2, 2, 3672, 683, 3, 2, 2, 2, 3673, 3683, 9, 12, 2, 2, 3674, 3675, 7, 151, 2, 2, 3675, 3676, 7, 172, 2, 2, 3676, 3683, 5, 686, 344, 2, 3677, 3678, 7, 152, 2, 2, 3678, 3679, 7, 172, 2, 2, 3679, 3680, 5, 686, 344, 2, 3680, 3681, 7, 174, 2, 2, 3681, 3683, 3, 2, 2, 2, 3682, 3673, 3, 2, 2, 2, 3682, 3674, 3, 2, 2, 2, 3682, 3677, 3, 2, 2, 2, 3683, 685, 3, 2, 2, 2, 3684, 3687, 7, 188, 2, 2, 3685, 3687, 5, 294, 148, 2, 3686, 3684, 3, 2, 2, 2, 3686, 3685, 3, 2, 2, 2, 3687, 687, 3, 2, 2, 2, 3688, 3697, 9, 13, 2, 2, 3689, 3697, 5, 690, 346, 2, 3690, 3691, 7, 188, 2, 2, 3691, 3692, 7, 172, 2, 2, 3692, 3697, 5, 686, 344, 2, 3693, 3694, 7, 180, 2, 2, 3694, 3695, 7, 172, 2, 2, 3695, 3697, 5, 686, 344, 2, 3696, 3688, 3, 2, 2, 2, 3696, 3689, 3, 2, 2, 2, 3696, 3690, 3, 2, 2, 2, 3696, 3693, 3, 2, 2, 2, 3697, 689, 3, 2, 2, 2, 3698, 3699, 7, 125, 2, 2, 3699, 3700, 5, 692, 347, 2, 3700, 3701, 7, 124, 2, 2, 3701, 3702, 7, 130, 2, 2, 3702, 691, 3, 2, 2, 2, 3703, 3705, 9, 3, 2, 2, 3704, 3703, 3, 2, 2, 2, 3704, 3705, 3, 2, 2, 2, 3705, 3706, 3, 2, 2, 2, 3706, 3710, 7, 188, 2, 2, 3707, 3710, 7, 180, 2, 2, 3708, 3710, 7, 190, 2, 2, 3709, 3704, 3, 2, 2, 2, 3709, 3707, 3, 2, 2, 2, 3709, 3708, 3, 2, 2, 2, 3710, 693, 3, 2, 2, 2, 3711, 3712, 5, 626, 314, 2, 3712, 695, 3, 2, 2, 2, 3713, 3714, 7, 53, 2, 2, 3714, 3715, 7, 125, 2, 2, 3715, 3716, 5, 626, 314, 2, 3716, 3717, 7, 130, 2, 2, 3717, 3718, 5, 438, 220, 2, 3718, 697, 3, 2, 2, 2, 333, 703, 710, 713, 721, 727, 737, 743, 748, 757, 776, 783, 792, 799, 816, 826, 828, 837, 841, 846, 848, 857, 864, 869, 874, 880, 883, 889, 898, 915, 917, 930, 941, 951, 960, 965, 969, 972, 984, 987, 994, 999, 1005, 1021, 1025, 1034, 1043, 1047, 1056, 1065, 1069, 1078, 1108, 1110, 1122, 1138, 1147, 1156, 1162, 1166, 1173, 1178, 1188, 1193, 1197, 1209, 1219, 1229, 1242, 1249, 1254, 1261, 1268, 1275, 1277, 1282, 1297, 1306, 1311, 1322, 1344, 1351, 1397, 1405, 1416, 1423, 1430, 1447, 1456, 1459, 1466, 1477, 1492, 1501, 1506, 1517, 1529, 1533, 1541, 1543, 1548, 1551, 1558, 1562, 1568, 1577, 1589, 1596, 1598, 1612, 1624, 1633, 1638, 1655, 1662, 1708, 1717, 1726, 1730, 1737, 1745, 1756, 1786, 1798, 1836, 1844, 1851, 1855, 1870, 1887, 1899, 1905, 1907, 1912, 1918, 1928, 1938, 1954, 1959, 1963, 1970, 1978, 1988, 1996, 2005, 2045, 2051, 2055, 2060, 2062, 2071, 2076, 2084, 2091, 2096, 2108, 2115, 2119, 2132, 2151, 2161, 2165, 2168, 2172, 2177, 2184, 2189, 2191, 2204, 2221, 2230, 2235, 2246, 2256, 2270, 2274, 2278, 2281, 2290, 2296, 2323, 2328, 2333, 2343, 2354, 2366, 2371, 2381, 2388, 2424, 2437, 2444, 2458, 2463, 2468, 2477, 2482, 2498, 2505, 2510, 2526, 2533, 2540, 2549, 2558, 2565, 2581, 2588, 2596, 2607, 2614, 2623, 2628, 2633, 2635, 2657, 2668, 2673, 2684, 2693, 2702, 2714, 2721, 2754, 2763, 2767, 2779, 2787, 2789, 2801, 2814, 2818, 2823, 2827, 2835, 2838, 2844, 2886, 2901, 2904, 2907, 2913, 2991, 2996, 3002, 3012, 3019, 3027, 3036, 3045, 3051, 3057, 3063, 3073, 3076, 3082, 3096, 3102, 3110, 3115, 3131, 3136, 3142, 3159, 3176, 3180, 3183, 3189, 3205, 3212, 3219, 3222, 3226, 3229, 3237, 3241, 3258, 3262, 3265, 3270, 3274, 3285, 3289, 3295, 3302, 3316, 3318, 3326, 3336, 3347, 3353, 3361, 3370, 3377, 3388, 3391, 3397, 3413, 3423, 3431, 3439, 3443, 3455, 3461, 3465, 3470, 3474, 3481, 3491, 3499, 3506, 3520, 3528, 3540, 3548, 3550, 3597, 3607, 3615, 3622, 3633, 3639, 3650, 3655, 3658, 3662, 3671, 3682, 3686, 3696, 3704, 3709] \ No newline at end of file +[4, 1, 195, 3718, 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, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 1, 0, 1, 0, 1, 1, 4, 1, 700, 8, 1, 11, 1, 12, 1, 701, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 709, 8, 2, 1, 3, 3, 3, 712, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 3, 5, 720, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 726, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 736, 8, 6, 1, 6, 1, 6, 5, 6, 740, 8, 6, 10, 6, 12, 6, 743, 9, 6, 1, 7, 1, 7, 3, 7, 747, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 756, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 775, 8, 9, 1, 10, 1, 10, 1, 10, 5, 10, 780, 8, 10, 10, 10, 12, 10, 783, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 791, 8, 11, 1, 12, 1, 12, 1, 12, 5, 12, 796, 8, 12, 10, 12, 12, 12, 799, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 4, 16, 813, 8, 16, 11, 16, 12, 16, 814, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 825, 8, 18, 3, 18, 827, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 836, 8, 19, 1, 20, 1, 20, 3, 20, 840, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 845, 8, 20, 3, 20, 847, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 854, 8, 21, 10, 21, 12, 21, 857, 9, 21, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 863, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 868, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 873, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 879, 8, 23, 1, 23, 3, 23, 882, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 888, 8, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 897, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 914, 8, 25, 10, 25, 12, 25, 917, 9, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 929, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 940, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 950, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 959, 8, 29, 1, 30, 1, 30, 1, 30, 3, 30, 964, 8, 30, 1, 30, 1, 30, 3, 30, 968, 8, 30, 1, 30, 3, 30, 971, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 983, 8, 32, 1, 32, 3, 32, 986, 8, 32, 1, 33, 1, 33, 1, 33, 5, 33, 991, 8, 33, 10, 33, 12, 33, 994, 9, 33, 1, 34, 1, 34, 3, 34, 998, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1004, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1020, 8, 36, 1, 37, 1, 37, 3, 37, 1024, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 5, 38, 1031, 8, 38, 10, 38, 12, 38, 1034, 9, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1042, 8, 39, 1, 40, 1, 40, 3, 40, 1046, 8, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 5, 41, 1053, 8, 41, 10, 41, 12, 41, 1056, 9, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1064, 8, 42, 1, 43, 1, 43, 3, 43, 1068, 8, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 5, 44, 1075, 8, 44, 10, 44, 12, 44, 1078, 9, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1107, 8, 47, 10, 47, 12, 47, 1110, 9, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1121, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 1137, 8, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 5, 56, 1144, 8, 56, 10, 56, 12, 56, 1147, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1155, 8, 57, 1, 58, 1, 58, 1, 59, 1, 59, 3, 59, 1161, 8, 59, 1, 59, 1, 59, 3, 59, 1165, 8, 59, 1, 60, 1, 60, 1, 60, 5, 60, 1170, 8, 60, 10, 60, 12, 60, 1173, 9, 60, 1, 61, 1, 61, 3, 61, 1177, 8, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1187, 8, 63, 1, 64, 4, 64, 1190, 8, 64, 11, 64, 12, 64, 1191, 1, 65, 1, 65, 3, 65, 1196, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 4, 68, 1206, 8, 68, 11, 68, 12, 68, 1207, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 4, 71, 1216, 8, 71, 11, 71, 12, 71, 1217, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 4, 74, 1226, 8, 74, 11, 74, 12, 74, 1227, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 4, 77, 1239, 8, 77, 11, 77, 12, 77, 1240, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1248, 8, 78, 1, 79, 4, 79, 1251, 8, 79, 11, 79, 12, 79, 1252, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 3, 81, 1260, 8, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1267, 8, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 1274, 8, 81, 10, 81, 12, 81, 1277, 9, 81, 1, 82, 1, 82, 3, 82, 1281, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1296, 8, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 1305, 8, 86, 1, 86, 1, 86, 1, 86, 3, 86, 1310, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 5, 87, 1319, 8, 87, 10, 87, 12, 87, 1322, 9, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1343, 8, 88, 1, 89, 1, 89, 1, 89, 5, 89, 1348, 8, 89, 10, 89, 12, 89, 1351, 9, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1396, 8, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1404, 8, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1415, 8, 93, 1, 93, 1, 93, 1, 93, 5, 93, 1420, 8, 93, 10, 93, 12, 93, 1423, 9, 93, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1429, 8, 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, 1, 95, 1, 95, 3, 95, 1446, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 3, 97, 1455, 8, 97, 1, 97, 3, 97, 1458, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1465, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1476, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1491, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 1498, 8, 101, 10, 101, 12, 101, 1501, 9, 101, 1, 102, 1, 102, 3, 102, 1505, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 5, 104, 1514, 8, 104, 10, 104, 12, 104, 1517, 9, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1528, 8, 106, 1, 107, 1, 107, 3, 107, 1532, 8, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1540, 8, 108, 3, 108, 1542, 8, 108, 1, 109, 1, 109, 1, 110, 3, 110, 1547, 8, 110, 1, 110, 3, 110, 1550, 8, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 1557, 8, 110, 1, 111, 1, 111, 3, 111, 1561, 8, 111, 1, 111, 1, 111, 1, 112, 1, 112, 3, 112, 1567, 8, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 5, 113, 1574, 8, 113, 10, 113, 12, 113, 1577, 9, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 5, 115, 1586, 8, 115, 10, 115, 12, 115, 1589, 9, 115, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 1595, 8, 116, 3, 116, 1597, 8, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 1611, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1623, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 5, 120, 1630, 8, 120, 10, 120, 12, 120, 1633, 9, 120, 1, 121, 1, 121, 3, 121, 1637, 8, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1654, 8, 123, 1, 124, 1, 124, 1, 124, 5, 124, 1659, 8, 124, 10, 124, 12, 124, 1662, 9, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 3, 125, 1707, 8, 125, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 5, 127, 1714, 8, 127, 10, 127, 12, 127, 1717, 9, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 1725, 8, 128, 1, 129, 1, 129, 3, 129, 1729, 8, 129, 1, 130, 1, 130, 1, 130, 5, 130, 1734, 8, 130, 10, 130, 12, 130, 1737, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1744, 8, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 5, 134, 1753, 8, 134, 10, 134, 12, 134, 1756, 9, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 1785, 8, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 3, 137, 1797, 8, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 1835, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 1843, 8, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 1850, 8, 141, 1, 142, 1, 142, 3, 142, 1854, 8, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 1869, 8, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 1886, 8, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 3, 151, 1898, 8, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 1904, 8, 151, 10, 151, 12, 151, 1907, 9, 151, 1, 152, 1, 152, 3, 152, 1911, 8, 152, 1, 153, 1, 153, 1, 154, 1, 154, 3, 154, 1917, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 157, 1, 157, 3, 157, 1927, 8, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 1937, 8, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 1953, 8, 157, 1, 158, 4, 158, 1956, 8, 158, 11, 158, 12, 158, 1957, 1, 159, 1, 159, 3, 159, 1962, 8, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 3, 160, 1969, 8, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 3, 161, 1977, 8, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 5, 162, 1985, 8, 162, 10, 162, 12, 162, 1988, 9, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 3, 164, 1995, 8, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 5, 165, 2002, 8, 165, 10, 165, 12, 165, 2005, 9, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 2044, 8, 168, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 2050, 8, 169, 1, 170, 1, 170, 3, 170, 2054, 8, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2059, 8, 170, 3, 170, 2061, 8, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 5, 171, 2068, 8, 171, 10, 171, 12, 171, 2071, 9, 171, 1, 172, 1, 172, 3, 172, 2075, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 2083, 8, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 2090, 8, 174, 1, 175, 4, 175, 2093, 8, 175, 11, 175, 12, 175, 2094, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 3, 176, 2107, 8, 176, 1, 177, 1, 177, 1, 177, 5, 177, 2112, 8, 177, 10, 177, 12, 177, 2115, 9, 177, 1, 177, 3, 177, 2118, 8, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 5, 179, 2129, 8, 179, 10, 179, 12, 179, 2132, 9, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 3, 181, 2150, 8, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 3, 184, 2160, 8, 184, 1, 185, 1, 185, 3, 185, 2164, 8, 185, 1, 186, 3, 186, 2167, 8, 186, 1, 186, 1, 186, 3, 186, 2171, 8, 186, 1, 186, 5, 186, 2174, 8, 186, 10, 186, 12, 186, 2177, 9, 186, 1, 186, 1, 186, 1, 187, 1, 187, 3, 187, 2183, 8, 187, 1, 187, 1, 187, 1, 187, 3, 187, 2188, 8, 187, 3, 187, 2190, 8, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 5, 190, 2201, 8, 190, 10, 190, 12, 190, 2204, 9, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 2220, 8, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 3, 196, 2229, 8, 196, 1, 196, 5, 196, 2232, 8, 196, 10, 196, 12, 196, 2235, 9, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 5, 198, 2243, 8, 198, 10, 198, 12, 198, 2246, 9, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 5, 199, 2253, 8, 199, 10, 199, 12, 199, 2256, 9, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2269, 8, 200, 1, 201, 1, 201, 3, 201, 2273, 8, 201, 1, 202, 1, 202, 3, 202, 2277, 8, 202, 1, 202, 3, 202, 2280, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 4, 204, 2287, 8, 204, 11, 204, 12, 204, 2288, 1, 205, 1, 205, 1, 206, 1, 206, 3, 206, 2295, 8, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2322, 8, 207, 1, 208, 4, 208, 2325, 8, 208, 11, 208, 12, 208, 2326, 1, 209, 1, 209, 1, 209, 3, 209, 2332, 8, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 5, 210, 2340, 8, 210, 10, 210, 12, 210, 2343, 9, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 3, 211, 2353, 8, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2365, 8, 212, 1, 213, 1, 213, 1, 214, 3, 214, 2370, 8, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 3, 215, 2380, 8, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 3, 215, 2387, 8, 215, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 2423, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 3, 220, 2436, 8, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 3, 220, 2443, 8, 220, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 5, 223, 2455, 8, 223, 10, 223, 12, 223, 2458, 9, 223, 1, 224, 1, 224, 3, 224, 2462, 8, 224, 1, 225, 1, 225, 1, 225, 3, 225, 2467, 8, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 2474, 8, 225, 10, 225, 12, 225, 2477, 9, 225, 1, 226, 1, 226, 3, 226, 2481, 8, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 2497, 8, 227, 1, 228, 1, 228, 1, 228, 5, 228, 2502, 8, 228, 10, 228, 12, 228, 2505, 9, 228, 1, 229, 1, 229, 3, 229, 2509, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 2525, 8, 230, 1, 231, 1, 231, 1, 231, 5, 231, 2530, 8, 231, 10, 231, 12, 231, 2533, 9, 231, 1, 232, 1, 232, 1, 232, 1, 232, 3, 232, 2539, 8, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 2546, 8, 233, 10, 233, 12, 233, 2549, 9, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 3, 235, 2557, 8, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 2564, 8, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 3, 237, 2580, 8, 237, 1, 237, 1, 237, 1, 237, 5, 237, 2585, 8, 237, 10, 237, 12, 237, 2588, 9, 237, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 3, 239, 2595, 8, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 5, 240, 2604, 8, 240, 10, 240, 12, 240, 2607, 9, 240, 1, 241, 1, 241, 1, 242, 1, 242, 3, 242, 2613, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 2622, 8, 243, 1, 244, 1, 244, 1, 244, 3, 244, 2627, 8, 244, 1, 244, 1, 244, 1, 244, 3, 244, 2632, 8, 244, 3, 244, 2634, 8, 244, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 2656, 8, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 5, 248, 2665, 8, 248, 10, 248, 12, 248, 2668, 9, 248, 1, 249, 1, 249, 3, 249, 2672, 8, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 3, 250, 2683, 8, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 3, 251, 2692, 8, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 2701, 8, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 3, 253, 2713, 8, 253, 1, 253, 1, 253, 1, 253, 5, 253, 2718, 8, 253, 10, 253, 12, 253, 2721, 9, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 3, 254, 2753, 8, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 2762, 8, 255, 1, 256, 1, 256, 3, 256, 2766, 8, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 2778, 8, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 5, 257, 2786, 8, 257, 10, 257, 12, 257, 2789, 9, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 2800, 8, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 2813, 8, 258, 1, 258, 1, 258, 3, 258, 2817, 8, 258, 1, 259, 1, 259, 1, 259, 3, 259, 2822, 8, 259, 1, 260, 1, 260, 3, 260, 2826, 8, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 3, 262, 2834, 8, 262, 1, 262, 3, 262, 2837, 8, 262, 1, 262, 1, 262, 5, 262, 2841, 8, 262, 10, 262, 12, 262, 2844, 9, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 2885, 8, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 2900, 8, 264, 1, 265, 3, 265, 2903, 8, 265, 1, 265, 3, 265, 2906, 8, 265, 1, 265, 1, 265, 5, 265, 2910, 8, 265, 10, 265, 12, 265, 2913, 9, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 3, 266, 2990, 8, 266, 1, 267, 1, 267, 1, 267, 3, 267, 2995, 8, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 3001, 8, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 3011, 8, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 3018, 8, 267, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 3, 269, 3026, 8, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 3035, 8, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 5, 271, 3042, 8, 271, 10, 271, 12, 271, 3045, 9, 271, 1, 272, 1, 272, 1, 272, 3, 272, 3050, 8, 272, 1, 272, 1, 272, 1, 272, 1, 272, 3, 272, 3056, 8, 272, 1, 272, 1, 272, 1, 272, 1, 272, 3, 272, 3062, 8, 272, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 3, 275, 3072, 8, 275, 1, 275, 3, 275, 3075, 8, 275, 1, 275, 1, 275, 5, 275, 3079, 8, 275, 10, 275, 12, 275, 3082, 9, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 3095, 8, 276, 1, 277, 1, 277, 5, 277, 3099, 8, 277, 10, 277, 12, 277, 3102, 9, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 3109, 8, 278, 1, 279, 1, 279, 1, 279, 3, 279, 3114, 8, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 3130, 8, 281, 1, 282, 1, 282, 1, 283, 3, 283, 3135, 8, 283, 1, 283, 1, 283, 5, 283, 3139, 8, 283, 10, 283, 12, 283, 3142, 9, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 3158, 8, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 287, 1, 287, 1, 288, 3, 288, 3175, 8, 288, 1, 288, 1, 288, 3, 288, 3179, 8, 288, 1, 288, 3, 288, 3182, 8, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 3188, 8, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 3204, 8, 288, 1, 289, 1, 289, 1, 289, 5, 289, 3209, 8, 289, 10, 289, 12, 289, 3212, 9, 289, 1, 289, 1, 289, 1, 290, 1, 290, 3, 290, 3218, 8, 290, 1, 290, 3, 290, 3221, 8, 290, 1, 290, 1, 290, 3, 290, 3225, 8, 290, 1, 290, 3, 290, 3228, 8, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 3236, 8, 290, 1, 290, 1, 290, 3, 290, 3240, 8, 290, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 3, 293, 3257, 8, 293, 1, 294, 1, 294, 3, 294, 3261, 8, 294, 1, 295, 3, 295, 3264, 8, 295, 1, 295, 4, 295, 3267, 8, 295, 11, 295, 12, 295, 3268, 1, 296, 1, 296, 3, 296, 3273, 8, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 3284, 8, 297, 1, 298, 1, 298, 3, 298, 3288, 8, 298, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 3294, 8, 299, 1, 299, 1, 299, 1, 299, 5, 299, 3299, 8, 299, 10, 299, 12, 299, 3302, 9, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 5, 300, 3315, 8, 300, 10, 300, 12, 300, 3318, 9, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 3, 301, 3325, 8, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 3335, 8, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 3, 303, 3346, 8, 303, 1, 304, 1, 304, 1, 305, 1, 305, 3, 305, 3352, 8, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 3, 305, 3360, 8, 305, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 3369, 8, 307, 1, 308, 1, 308, 1, 308, 5, 308, 3374, 8, 308, 10, 308, 12, 308, 3377, 9, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 3387, 8, 309, 1, 310, 3, 310, 3390, 8, 310, 1, 310, 1, 310, 5, 310, 3394, 8, 310, 10, 310, 12, 310, 3397, 9, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 5, 312, 3410, 8, 312, 10, 312, 12, 312, 3413, 9, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 5, 314, 3420, 8, 314, 10, 314, 12, 314, 3423, 9, 314, 1, 315, 1, 315, 1, 315, 5, 315, 3428, 8, 315, 10, 315, 12, 315, 3431, 9, 315, 1, 316, 1, 316, 1, 316, 5, 316, 3436, 8, 316, 10, 316, 12, 316, 3439, 9, 316, 1, 317, 3, 317, 3442, 8, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 5, 319, 3452, 8, 319, 10, 319, 12, 319, 3455, 9, 319, 1, 320, 1, 320, 1, 320, 3, 320, 3460, 8, 320, 1, 320, 1, 320, 3, 320, 3464, 8, 320, 1, 320, 5, 320, 3467, 8, 320, 10, 320, 12, 320, 3470, 9, 320, 1, 321, 3, 321, 3473, 8, 321, 1, 321, 1, 321, 1, 321, 5, 321, 3478, 8, 321, 10, 321, 12, 321, 3481, 9, 321, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 5, 323, 3488, 8, 323, 10, 323, 12, 323, 3491, 9, 323, 1, 324, 1, 324, 1, 324, 5, 324, 3496, 8, 324, 10, 324, 12, 324, 3499, 9, 324, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 3505, 8, 325, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 3, 327, 3519, 8, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 3, 329, 3527, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 3, 330, 3539, 8, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 5, 330, 3547, 8, 330, 10, 330, 12, 330, 3550, 9, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 3, 331, 3596, 8, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 3, 332, 3606, 8, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 3, 333, 3614, 8, 333, 1, 333, 1, 333, 1, 333, 5, 333, 3619, 8, 333, 10, 333, 12, 333, 3622, 9, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 5, 335, 3630, 8, 335, 10, 335, 12, 335, 3633, 9, 335, 1, 336, 1, 336, 1, 336, 3, 336, 3638, 8, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 5, 338, 3647, 8, 338, 10, 338, 12, 338, 3650, 9, 338, 1, 339, 1, 339, 3, 339, 3654, 8, 339, 1, 339, 3, 339, 3657, 8, 339, 1, 340, 1, 340, 3, 340, 3661, 8, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 3670, 8, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 3681, 8, 341, 1, 342, 1, 342, 3, 342, 3685, 8, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 3695, 8, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 3, 345, 3703, 8, 345, 1, 345, 1, 345, 1, 345, 3, 345, 3708, 8, 345, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 0, 25, 12, 42, 50, 94, 162, 174, 186, 202, 230, 240, 302, 324, 330, 342, 420, 450, 466, 474, 506, 514, 598, 600, 624, 660, 666, 348, 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, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 0, 12, 1, 0, 19, 21, 1, 0, 131, 132, 1, 0, 143, 148, 1, 0, 139, 140, 1, 0, 38, 39, 1, 0, 174, 176, 2, 0, 177, 177, 186, 186, 2, 0, 133, 133, 192, 192, 2, 0, 28, 28, 143, 148, 3, 0, 34, 34, 84, 84, 188, 188, 1, 0, 149, 150, 2, 0, 178, 178, 186, 186, 3922, 0, 696, 1, 0, 0, 0, 2, 699, 1, 0, 0, 0, 4, 708, 1, 0, 0, 0, 6, 711, 1, 0, 0, 0, 8, 715, 1, 0, 0, 0, 10, 725, 1, 0, 0, 0, 12, 735, 1, 0, 0, 0, 14, 746, 1, 0, 0, 0, 16, 755, 1, 0, 0, 0, 18, 774, 1, 0, 0, 0, 20, 776, 1, 0, 0, 0, 22, 790, 1, 0, 0, 0, 24, 792, 1, 0, 0, 0, 26, 800, 1, 0, 0, 0, 28, 804, 1, 0, 0, 0, 30, 806, 1, 0, 0, 0, 32, 812, 1, 0, 0, 0, 34, 816, 1, 0, 0, 0, 36, 826, 1, 0, 0, 0, 38, 835, 1, 0, 0, 0, 40, 846, 1, 0, 0, 0, 42, 848, 1, 0, 0, 0, 44, 858, 1, 0, 0, 0, 46, 881, 1, 0, 0, 0, 48, 883, 1, 0, 0, 0, 50, 896, 1, 0, 0, 0, 52, 928, 1, 0, 0, 0, 54, 939, 1, 0, 0, 0, 56, 949, 1, 0, 0, 0, 58, 958, 1, 0, 0, 0, 60, 970, 1, 0, 0, 0, 62, 972, 1, 0, 0, 0, 64, 985, 1, 0, 0, 0, 66, 987, 1, 0, 0, 0, 68, 997, 1, 0, 0, 0, 70, 1003, 1, 0, 0, 0, 72, 1019, 1, 0, 0, 0, 74, 1021, 1, 0, 0, 0, 76, 1027, 1, 0, 0, 0, 78, 1041, 1, 0, 0, 0, 80, 1043, 1, 0, 0, 0, 82, 1049, 1, 0, 0, 0, 84, 1063, 1, 0, 0, 0, 86, 1065, 1, 0, 0, 0, 88, 1071, 1, 0, 0, 0, 90, 1079, 1, 0, 0, 0, 92, 1081, 1, 0, 0, 0, 94, 1084, 1, 0, 0, 0, 96, 1111, 1, 0, 0, 0, 98, 1113, 1, 0, 0, 0, 100, 1115, 1, 0, 0, 0, 102, 1124, 1, 0, 0, 0, 104, 1128, 1, 0, 0, 0, 106, 1130, 1, 0, 0, 0, 108, 1132, 1, 0, 0, 0, 110, 1134, 1, 0, 0, 0, 112, 1140, 1, 0, 0, 0, 114, 1154, 1, 0, 0, 0, 116, 1156, 1, 0, 0, 0, 118, 1164, 1, 0, 0, 0, 120, 1166, 1, 0, 0, 0, 122, 1176, 1, 0, 0, 0, 124, 1178, 1, 0, 0, 0, 126, 1186, 1, 0, 0, 0, 128, 1189, 1, 0, 0, 0, 130, 1195, 1, 0, 0, 0, 132, 1197, 1, 0, 0, 0, 134, 1201, 1, 0, 0, 0, 136, 1205, 1, 0, 0, 0, 138, 1209, 1, 0, 0, 0, 140, 1211, 1, 0, 0, 0, 142, 1215, 1, 0, 0, 0, 144, 1219, 1, 0, 0, 0, 146, 1221, 1, 0, 0, 0, 148, 1225, 1, 0, 0, 0, 150, 1229, 1, 0, 0, 0, 152, 1235, 1, 0, 0, 0, 154, 1238, 1, 0, 0, 0, 156, 1247, 1, 0, 0, 0, 158, 1250, 1, 0, 0, 0, 160, 1254, 1, 0, 0, 0, 162, 1257, 1, 0, 0, 0, 164, 1280, 1, 0, 0, 0, 166, 1282, 1, 0, 0, 0, 168, 1295, 1, 0, 0, 0, 170, 1297, 1, 0, 0, 0, 172, 1309, 1, 0, 0, 0, 174, 1311, 1, 0, 0, 0, 176, 1342, 1, 0, 0, 0, 178, 1344, 1, 0, 0, 0, 180, 1395, 1, 0, 0, 0, 182, 1397, 1, 0, 0, 0, 184, 1403, 1, 0, 0, 0, 186, 1414, 1, 0, 0, 0, 188, 1428, 1, 0, 0, 0, 190, 1445, 1, 0, 0, 0, 192, 1447, 1, 0, 0, 0, 194, 1454, 1, 0, 0, 0, 196, 1464, 1, 0, 0, 0, 198, 1475, 1, 0, 0, 0, 200, 1490, 1, 0, 0, 0, 202, 1492, 1, 0, 0, 0, 204, 1504, 1, 0, 0, 0, 206, 1506, 1, 0, 0, 0, 208, 1510, 1, 0, 0, 0, 210, 1518, 1, 0, 0, 0, 212, 1527, 1, 0, 0, 0, 214, 1529, 1, 0, 0, 0, 216, 1541, 1, 0, 0, 0, 218, 1543, 1, 0, 0, 0, 220, 1556, 1, 0, 0, 0, 222, 1558, 1, 0, 0, 0, 224, 1564, 1, 0, 0, 0, 226, 1570, 1, 0, 0, 0, 228, 1578, 1, 0, 0, 0, 230, 1580, 1, 0, 0, 0, 232, 1596, 1, 0, 0, 0, 234, 1598, 1, 0, 0, 0, 236, 1610, 1, 0, 0, 0, 238, 1622, 1, 0, 0, 0, 240, 1624, 1, 0, 0, 0, 242, 1636, 1, 0, 0, 0, 244, 1638, 1, 0, 0, 0, 246, 1653, 1, 0, 0, 0, 248, 1655, 1, 0, 0, 0, 250, 1706, 1, 0, 0, 0, 252, 1708, 1, 0, 0, 0, 254, 1710, 1, 0, 0, 0, 256, 1724, 1, 0, 0, 0, 258, 1728, 1, 0, 0, 0, 260, 1730, 1, 0, 0, 0, 262, 1743, 1, 0, 0, 0, 264, 1745, 1, 0, 0, 0, 266, 1747, 1, 0, 0, 0, 268, 1749, 1, 0, 0, 0, 270, 1757, 1, 0, 0, 0, 272, 1784, 1, 0, 0, 0, 274, 1796, 1, 0, 0, 0, 276, 1798, 1, 0, 0, 0, 278, 1834, 1, 0, 0, 0, 280, 1842, 1, 0, 0, 0, 282, 1849, 1, 0, 0, 0, 284, 1868, 1, 0, 0, 0, 286, 1870, 1, 0, 0, 0, 288, 1872, 1, 0, 0, 0, 290, 1877, 1, 0, 0, 0, 292, 1881, 1, 0, 0, 0, 294, 1885, 1, 0, 0, 0, 296, 1887, 1, 0, 0, 0, 298, 1890, 1, 0, 0, 0, 300, 1892, 1, 0, 0, 0, 302, 1897, 1, 0, 0, 0, 304, 1910, 1, 0, 0, 0, 306, 1912, 1, 0, 0, 0, 308, 1916, 1, 0, 0, 0, 310, 1918, 1, 0, 0, 0, 312, 1922, 1, 0, 0, 0, 314, 1952, 1, 0, 0, 0, 316, 1955, 1, 0, 0, 0, 318, 1961, 1, 0, 0, 0, 320, 1968, 1, 0, 0, 0, 322, 1976, 1, 0, 0, 0, 324, 1978, 1, 0, 0, 0, 326, 1989, 1, 0, 0, 0, 328, 1994, 1, 0, 0, 0, 330, 1996, 1, 0, 0, 0, 332, 2006, 1, 0, 0, 0, 334, 2011, 1, 0, 0, 0, 336, 2043, 1, 0, 0, 0, 338, 2049, 1, 0, 0, 0, 340, 2060, 1, 0, 0, 0, 342, 2062, 1, 0, 0, 0, 344, 2074, 1, 0, 0, 0, 346, 2082, 1, 0, 0, 0, 348, 2089, 1, 0, 0, 0, 350, 2092, 1, 0, 0, 0, 352, 2106, 1, 0, 0, 0, 354, 2108, 1, 0, 0, 0, 356, 2121, 1, 0, 0, 0, 358, 2130, 1, 0, 0, 0, 360, 2133, 1, 0, 0, 0, 362, 2149, 1, 0, 0, 0, 364, 2151, 1, 0, 0, 0, 366, 2154, 1, 0, 0, 0, 368, 2159, 1, 0, 0, 0, 370, 2163, 1, 0, 0, 0, 372, 2166, 1, 0, 0, 0, 374, 2189, 1, 0, 0, 0, 376, 2191, 1, 0, 0, 0, 378, 2193, 1, 0, 0, 0, 380, 2196, 1, 0, 0, 0, 382, 2208, 1, 0, 0, 0, 384, 2210, 1, 0, 0, 0, 386, 2212, 1, 0, 0, 0, 388, 2219, 1, 0, 0, 0, 390, 2221, 1, 0, 0, 0, 392, 2225, 1, 0, 0, 0, 394, 2236, 1, 0, 0, 0, 396, 2239, 1, 0, 0, 0, 398, 2249, 1, 0, 0, 0, 400, 2268, 1, 0, 0, 0, 402, 2272, 1, 0, 0, 0, 404, 2274, 1, 0, 0, 0, 406, 2281, 1, 0, 0, 0, 408, 2286, 1, 0, 0, 0, 410, 2290, 1, 0, 0, 0, 412, 2292, 1, 0, 0, 0, 414, 2321, 1, 0, 0, 0, 416, 2324, 1, 0, 0, 0, 418, 2331, 1, 0, 0, 0, 420, 2333, 1, 0, 0, 0, 422, 2352, 1, 0, 0, 0, 424, 2364, 1, 0, 0, 0, 426, 2366, 1, 0, 0, 0, 428, 2369, 1, 0, 0, 0, 430, 2386, 1, 0, 0, 0, 432, 2388, 1, 0, 0, 0, 434, 2390, 1, 0, 0, 0, 436, 2422, 1, 0, 0, 0, 438, 2424, 1, 0, 0, 0, 440, 2442, 1, 0, 0, 0, 442, 2444, 1, 0, 0, 0, 444, 2446, 1, 0, 0, 0, 446, 2451, 1, 0, 0, 0, 448, 2461, 1, 0, 0, 0, 450, 2463, 1, 0, 0, 0, 452, 2478, 1, 0, 0, 0, 454, 2496, 1, 0, 0, 0, 456, 2498, 1, 0, 0, 0, 458, 2506, 1, 0, 0, 0, 460, 2524, 1, 0, 0, 0, 462, 2526, 1, 0, 0, 0, 464, 2538, 1, 0, 0, 0, 466, 2540, 1, 0, 0, 0, 468, 2550, 1, 0, 0, 0, 470, 2554, 1, 0, 0, 0, 472, 2558, 1, 0, 0, 0, 474, 2579, 1, 0, 0, 0, 476, 2589, 1, 0, 0, 0, 478, 2592, 1, 0, 0, 0, 480, 2600, 1, 0, 0, 0, 482, 2608, 1, 0, 0, 0, 484, 2610, 1, 0, 0, 0, 486, 2621, 1, 0, 0, 0, 488, 2633, 1, 0, 0, 0, 490, 2635, 1, 0, 0, 0, 492, 2655, 1, 0, 0, 0, 494, 2657, 1, 0, 0, 0, 496, 2661, 1, 0, 0, 0, 498, 2671, 1, 0, 0, 0, 500, 2673, 1, 0, 0, 0, 502, 2691, 1, 0, 0, 0, 504, 2700, 1, 0, 0, 0, 506, 2712, 1, 0, 0, 0, 508, 2752, 1, 0, 0, 0, 510, 2761, 1, 0, 0, 0, 512, 2765, 1, 0, 0, 0, 514, 2777, 1, 0, 0, 0, 516, 2816, 1, 0, 0, 0, 518, 2821, 1, 0, 0, 0, 520, 2823, 1, 0, 0, 0, 522, 2827, 1, 0, 0, 0, 524, 2833, 1, 0, 0, 0, 526, 2884, 1, 0, 0, 0, 528, 2899, 1, 0, 0, 0, 530, 2902, 1, 0, 0, 0, 532, 2989, 1, 0, 0, 0, 534, 3017, 1, 0, 0, 0, 536, 3019, 1, 0, 0, 0, 538, 3025, 1, 0, 0, 0, 540, 3029, 1, 0, 0, 0, 542, 3038, 1, 0, 0, 0, 544, 3061, 1, 0, 0, 0, 546, 3063, 1, 0, 0, 0, 548, 3065, 1, 0, 0, 0, 550, 3071, 1, 0, 0, 0, 552, 3094, 1, 0, 0, 0, 554, 3096, 1, 0, 0, 0, 556, 3108, 1, 0, 0, 0, 558, 3113, 1, 0, 0, 0, 560, 3115, 1, 0, 0, 0, 562, 3129, 1, 0, 0, 0, 564, 3131, 1, 0, 0, 0, 566, 3134, 1, 0, 0, 0, 568, 3157, 1, 0, 0, 0, 570, 3159, 1, 0, 0, 0, 572, 3169, 1, 0, 0, 0, 574, 3171, 1, 0, 0, 0, 576, 3203, 1, 0, 0, 0, 578, 3205, 1, 0, 0, 0, 580, 3239, 1, 0, 0, 0, 582, 3241, 1, 0, 0, 0, 584, 3244, 1, 0, 0, 0, 586, 3256, 1, 0, 0, 0, 588, 3260, 1, 0, 0, 0, 590, 3263, 1, 0, 0, 0, 592, 3270, 1, 0, 0, 0, 594, 3283, 1, 0, 0, 0, 596, 3287, 1, 0, 0, 0, 598, 3293, 1, 0, 0, 0, 600, 3303, 1, 0, 0, 0, 602, 3324, 1, 0, 0, 0, 604, 3334, 1, 0, 0, 0, 606, 3345, 1, 0, 0, 0, 608, 3347, 1, 0, 0, 0, 610, 3359, 1, 0, 0, 0, 612, 3361, 1, 0, 0, 0, 614, 3368, 1, 0, 0, 0, 616, 3370, 1, 0, 0, 0, 618, 3386, 1, 0, 0, 0, 620, 3389, 1, 0, 0, 0, 622, 3398, 1, 0, 0, 0, 624, 3402, 1, 0, 0, 0, 626, 3414, 1, 0, 0, 0, 628, 3416, 1, 0, 0, 0, 630, 3424, 1, 0, 0, 0, 632, 3432, 1, 0, 0, 0, 634, 3441, 1, 0, 0, 0, 636, 3445, 1, 0, 0, 0, 638, 3447, 1, 0, 0, 0, 640, 3456, 1, 0, 0, 0, 642, 3472, 1, 0, 0, 0, 644, 3482, 1, 0, 0, 0, 646, 3484, 1, 0, 0, 0, 648, 3492, 1, 0, 0, 0, 650, 3504, 1, 0, 0, 0, 652, 3506, 1, 0, 0, 0, 654, 3518, 1, 0, 0, 0, 656, 3520, 1, 0, 0, 0, 658, 3526, 1, 0, 0, 0, 660, 3538, 1, 0, 0, 0, 662, 3595, 1, 0, 0, 0, 664, 3605, 1, 0, 0, 0, 666, 3613, 1, 0, 0, 0, 668, 3623, 1, 0, 0, 0, 670, 3627, 1, 0, 0, 0, 672, 3637, 1, 0, 0, 0, 674, 3639, 1, 0, 0, 0, 676, 3643, 1, 0, 0, 0, 678, 3656, 1, 0, 0, 0, 680, 3669, 1, 0, 0, 0, 682, 3680, 1, 0, 0, 0, 684, 3684, 1, 0, 0, 0, 686, 3694, 1, 0, 0, 0, 688, 3696, 1, 0, 0, 0, 690, 3707, 1, 0, 0, 0, 692, 3709, 1, 0, 0, 0, 694, 3711, 1, 0, 0, 0, 696, 697, 3, 2, 1, 0, 697, 1, 1, 0, 0, 0, 698, 700, 3, 4, 2, 0, 699, 698, 1, 0, 0, 0, 700, 701, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 701, 702, 1, 0, 0, 0, 702, 3, 1, 0, 0, 0, 703, 709, 3, 6, 3, 0, 704, 709, 3, 310, 155, 0, 705, 709, 3, 606, 303, 0, 706, 709, 3, 38, 19, 0, 707, 709, 3, 58, 29, 0, 708, 703, 1, 0, 0, 0, 708, 704, 1, 0, 0, 0, 708, 705, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 708, 707, 1, 0, 0, 0, 709, 5, 1, 0, 0, 0, 710, 712, 3, 8, 4, 0, 711, 710, 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 713, 714, 3, 10, 5, 0, 714, 7, 1, 0, 0, 0, 715, 716, 5, 5, 0, 0, 716, 717, 5, 188, 0, 0, 717, 9, 1, 0, 0, 0, 718, 720, 3, 316, 158, 0, 719, 718, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 726, 3, 36, 18, 0, 722, 723, 3, 12, 6, 0, 723, 724, 3, 36, 18, 0, 724, 726, 1, 0, 0, 0, 725, 719, 1, 0, 0, 0, 725, 722, 1, 0, 0, 0, 726, 11, 1, 0, 0, 0, 727, 728, 6, 6, -1, 0, 728, 729, 3, 316, 158, 0, 729, 730, 3, 306, 153, 0, 730, 731, 3, 14, 7, 0, 731, 736, 1, 0, 0, 0, 732, 733, 3, 306, 153, 0, 733, 734, 3, 14, 7, 0, 734, 736, 1, 0, 0, 0, 735, 727, 1, 0, 0, 0, 735, 732, 1, 0, 0, 0, 736, 741, 1, 0, 0, 0, 737, 738, 10, 1, 0, 0, 738, 740, 3, 14, 7, 0, 739, 737, 1, 0, 0, 0, 740, 743, 1, 0, 0, 0, 741, 739, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 13, 1, 0, 0, 0, 743, 741, 1, 0, 0, 0, 744, 747, 3, 310, 155, 0, 745, 747, 3, 606, 303, 0, 746, 744, 1, 0, 0, 0, 746, 745, 1, 0, 0, 0, 747, 15, 1, 0, 0, 0, 748, 756, 3, 614, 307, 0, 749, 756, 3, 30, 15, 0, 750, 756, 3, 48, 24, 0, 751, 756, 3, 62, 31, 0, 752, 756, 3, 70, 35, 0, 753, 756, 3, 612, 306, 0, 754, 756, 3, 18, 9, 0, 755, 748, 1, 0, 0, 0, 755, 749, 1, 0, 0, 0, 755, 750, 1, 0, 0, 0, 755, 751, 1, 0, 0, 0, 755, 752, 1, 0, 0, 0, 755, 753, 1, 0, 0, 0, 755, 754, 1, 0, 0, 0, 756, 17, 1, 0, 0, 0, 757, 758, 5, 23, 0, 0, 758, 775, 5, 188, 0, 0, 759, 760, 5, 23, 0, 0, 760, 761, 5, 188, 0, 0, 761, 762, 5, 122, 0, 0, 762, 763, 5, 24, 0, 0, 763, 775, 5, 129, 0, 0, 764, 765, 5, 23, 0, 0, 765, 766, 5, 188, 0, 0, 766, 767, 5, 122, 0, 0, 767, 775, 3, 24, 12, 0, 768, 769, 5, 23, 0, 0, 769, 770, 5, 188, 0, 0, 770, 771, 5, 122, 0, 0, 771, 772, 5, 24, 0, 0, 772, 773, 5, 129, 0, 0, 773, 775, 3, 20, 10, 0, 774, 757, 1, 0, 0, 0, 774, 759, 1, 0, 0, 0, 774, 764, 1, 0, 0, 0, 774, 768, 1, 0, 0, 0, 775, 19, 1, 0, 0, 0, 776, 781, 3, 22, 11, 0, 777, 778, 5, 122, 0, 0, 778, 780, 3, 22, 11, 0, 779, 777, 1, 0, 0, 0, 780, 783, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 21, 1, 0, 0, 0, 783, 781, 1, 0, 0, 0, 784, 791, 3, 198, 99, 0, 785, 786, 3, 300, 150, 0, 786, 787, 5, 25, 0, 0, 787, 788, 3, 28, 14, 0, 788, 791, 1, 0, 0, 0, 789, 791, 3, 28, 14, 0, 790, 784, 1, 0, 0, 0, 790, 785, 1, 0, 0, 0, 790, 789, 1, 0, 0, 0, 791, 23, 1, 0, 0, 0, 792, 797, 3, 26, 13, 0, 793, 794, 5, 122, 0, 0, 794, 796, 3, 26, 13, 0, 795, 793, 1, 0, 0, 0, 796, 799, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 25, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 800, 801, 3, 300, 150, 0, 801, 802, 5, 25, 0, 0, 802, 803, 3, 28, 14, 0, 803, 27, 1, 0, 0, 0, 804, 805, 3, 300, 150, 0, 805, 29, 1, 0, 0, 0, 806, 807, 5, 44, 0, 0, 807, 808, 5, 123, 0, 0, 808, 809, 3, 32, 16, 0, 809, 810, 5, 128, 0, 0, 810, 31, 1, 0, 0, 0, 811, 813, 3, 34, 17, 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, 33, 1, 0, 0, 0, 816, 817, 5, 188, 0, 0, 817, 818, 5, 130, 0, 0, 818, 819, 3, 624, 312, 0, 819, 35, 1, 0, 0, 0, 820, 827, 5, 12, 0, 0, 821, 822, 5, 12, 0, 0, 822, 824, 5, 5, 0, 0, 823, 825, 5, 188, 0, 0, 824, 823, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 827, 1, 0, 0, 0, 826, 820, 1, 0, 0, 0, 826, 821, 1, 0, 0, 0, 827, 37, 1, 0, 0, 0, 828, 829, 3, 40, 20, 0, 829, 830, 3, 42, 21, 0, 830, 831, 3, 46, 23, 0, 831, 836, 1, 0, 0, 0, 832, 833, 3, 40, 20, 0, 833, 834, 3, 46, 23, 0, 834, 836, 1, 0, 0, 0, 835, 828, 1, 0, 0, 0, 835, 832, 1, 0, 0, 0, 836, 39, 1, 0, 0, 0, 837, 839, 5, 36, 0, 0, 838, 840, 5, 188, 0, 0, 839, 838, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 847, 1, 0, 0, 0, 841, 842, 5, 8, 0, 0, 842, 844, 5, 48, 0, 0, 843, 845, 5, 188, 0, 0, 844, 843, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 847, 1, 0, 0, 0, 846, 837, 1, 0, 0, 0, 846, 841, 1, 0, 0, 0, 847, 41, 1, 0, 0, 0, 848, 849, 6, 21, -1, 0, 849, 850, 3, 44, 22, 0, 850, 855, 1, 0, 0, 0, 851, 852, 10, 1, 0, 0, 852, 854, 3, 44, 22, 0, 853, 851, 1, 0, 0, 0, 854, 857, 1, 0, 0, 0, 855, 853, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, 43, 1, 0, 0, 0, 857, 855, 1, 0, 0, 0, 858, 859, 3, 16, 8, 0, 859, 45, 1, 0, 0, 0, 860, 862, 5, 115, 0, 0, 861, 863, 5, 188, 0, 0, 862, 861, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 882, 1, 0, 0, 0, 864, 865, 5, 12, 0, 0, 865, 867, 5, 36, 0, 0, 866, 868, 5, 188, 0, 0, 867, 866, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 882, 1, 0, 0, 0, 869, 870, 5, 116, 0, 0, 870, 872, 5, 48, 0, 0, 871, 873, 5, 188, 0, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 882, 1, 0, 0, 0, 874, 875, 5, 12, 0, 0, 875, 876, 5, 8, 0, 0, 876, 878, 5, 48, 0, 0, 877, 879, 5, 188, 0, 0, 878, 877, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 882, 1, 0, 0, 0, 880, 882, 5, 12, 0, 0, 881, 860, 1, 0, 0, 0, 881, 864, 1, 0, 0, 0, 881, 869, 1, 0, 0, 0, 881, 874, 1, 0, 0, 0, 881, 880, 1, 0, 0, 0, 882, 47, 1, 0, 0, 0, 883, 884, 5, 186, 0, 0, 884, 885, 5, 88, 0, 0, 885, 887, 5, 123, 0, 0, 886, 888, 3, 50, 25, 0, 887, 886, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 890, 5, 128, 0, 0, 890, 49, 1, 0, 0, 0, 891, 892, 6, 25, -1, 0, 892, 897, 3, 52, 26, 0, 893, 897, 5, 134, 0, 0, 894, 895, 5, 134, 0, 0, 895, 897, 3, 52, 26, 0, 896, 891, 1, 0, 0, 0, 896, 893, 1, 0, 0, 0, 896, 894, 1, 0, 0, 0, 897, 915, 1, 0, 0, 0, 898, 899, 10, 5, 0, 0, 899, 914, 5, 134, 0, 0, 900, 901, 10, 4, 0, 0, 901, 902, 5, 134, 0, 0, 902, 914, 3, 52, 26, 0, 903, 904, 10, 3, 0, 0, 904, 905, 5, 122, 0, 0, 905, 914, 3, 52, 26, 0, 906, 907, 10, 2, 0, 0, 907, 908, 5, 122, 0, 0, 908, 914, 5, 134, 0, 0, 909, 910, 10, 1, 0, 0, 910, 911, 5, 122, 0, 0, 911, 912, 5, 134, 0, 0, 912, 914, 3, 52, 26, 0, 913, 898, 1, 0, 0, 0, 913, 900, 1, 0, 0, 0, 913, 903, 1, 0, 0, 0, 913, 906, 1, 0, 0, 0, 913, 909, 1, 0, 0, 0, 914, 917, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 51, 1, 0, 0, 0, 917, 915, 1, 0, 0, 0, 918, 929, 3, 54, 27, 0, 919, 920, 5, 186, 0, 0, 920, 929, 3, 54, 27, 0, 921, 929, 5, 151, 0, 0, 922, 929, 5, 152, 0, 0, 923, 924, 5, 152, 0, 0, 924, 929, 3, 54, 27, 0, 925, 926, 5, 152, 0, 0, 926, 927, 5, 186, 0, 0, 927, 929, 3, 54, 27, 0, 928, 918, 1, 0, 0, 0, 928, 919, 1, 0, 0, 0, 928, 921, 1, 0, 0, 0, 928, 922, 1, 0, 0, 0, 928, 923, 1, 0, 0, 0, 928, 925, 1, 0, 0, 0, 929, 53, 1, 0, 0, 0, 930, 940, 5, 153, 0, 0, 931, 940, 3, 56, 28, 0, 932, 940, 5, 177, 0, 0, 933, 940, 5, 155, 0, 0, 934, 940, 5, 188, 0, 0, 935, 936, 5, 123, 0, 0, 936, 937, 3, 50, 25, 0, 937, 938, 5, 128, 0, 0, 938, 940, 1, 0, 0, 0, 939, 930, 1, 0, 0, 0, 939, 931, 1, 0, 0, 0, 939, 932, 1, 0, 0, 0, 939, 933, 1, 0, 0, 0, 939, 934, 1, 0, 0, 0, 939, 935, 1, 0, 0, 0, 940, 55, 1, 0, 0, 0, 941, 942, 5, 178, 0, 0, 942, 943, 5, 184, 0, 0, 943, 944, 5, 178, 0, 0, 944, 950, 5, 185, 0, 0, 945, 946, 5, 188, 0, 0, 946, 947, 5, 184, 0, 0, 947, 948, 5, 178, 0, 0, 948, 950, 5, 185, 0, 0, 949, 941, 1, 0, 0, 0, 949, 945, 1, 0, 0, 0, 950, 57, 1, 0, 0, 0, 951, 952, 3, 296, 148, 0, 952, 953, 3, 302, 151, 0, 953, 954, 3, 60, 30, 0, 954, 959, 1, 0, 0, 0, 955, 956, 3, 296, 148, 0, 956, 957, 3, 60, 30, 0, 957, 959, 1, 0, 0, 0, 958, 951, 1, 0, 0, 0, 958, 955, 1, 0, 0, 0, 959, 59, 1, 0, 0, 0, 960, 961, 5, 12, 0, 0, 961, 963, 5, 3, 0, 0, 962, 964, 5, 188, 0, 0, 963, 962, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 971, 1, 0, 0, 0, 965, 967, 5, 4, 0, 0, 966, 968, 5, 188, 0, 0, 967, 966, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 971, 1, 0, 0, 0, 969, 971, 5, 12, 0, 0, 970, 960, 1, 0, 0, 0, 970, 965, 1, 0, 0, 0, 970, 969, 1, 0, 0, 0, 971, 61, 1, 0, 0, 0, 972, 973, 5, 6, 0, 0, 973, 974, 5, 188, 0, 0, 974, 975, 3, 64, 32, 0, 975, 976, 5, 55, 0, 0, 976, 977, 5, 123, 0, 0, 977, 978, 5, 188, 0, 0, 978, 979, 5, 128, 0, 0, 979, 63, 1, 0, 0, 0, 980, 982, 5, 123, 0, 0, 981, 983, 3, 66, 33, 0, 982, 981, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 984, 1, 0, 0, 0, 984, 986, 5, 128, 0, 0, 985, 980, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 65, 1, 0, 0, 0, 987, 992, 3, 68, 34, 0, 988, 989, 5, 122, 0, 0, 989, 991, 3, 68, 34, 0, 990, 988, 1, 0, 0, 0, 991, 994, 1, 0, 0, 0, 992, 990, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, 67, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 995, 998, 3, 106, 53, 0, 996, 998, 5, 192, 0, 0, 997, 995, 1, 0, 0, 0, 997, 996, 1, 0, 0, 0, 998, 69, 1, 0, 0, 0, 999, 1004, 3, 234, 117, 0, 1000, 1004, 3, 192, 96, 0, 1001, 1004, 3, 172, 86, 0, 1002, 1004, 3, 72, 36, 0, 1003, 999, 1, 0, 0, 0, 1003, 1000, 1, 0, 0, 0, 1003, 1001, 1, 0, 0, 0, 1003, 1002, 1, 0, 0, 0, 1004, 71, 1, 0, 0, 0, 1005, 1020, 3, 160, 80, 0, 1006, 1020, 3, 392, 196, 0, 1007, 1020, 3, 156, 78, 0, 1008, 1020, 3, 146, 73, 0, 1009, 1020, 3, 140, 70, 0, 1010, 1020, 3, 134, 67, 0, 1011, 1020, 3, 126, 63, 0, 1012, 1020, 3, 118, 59, 0, 1013, 1020, 3, 110, 55, 0, 1014, 1020, 3, 100, 50, 0, 1015, 1020, 3, 92, 46, 0, 1016, 1020, 3, 86, 43, 0, 1017, 1020, 3, 80, 40, 0, 1018, 1020, 3, 74, 37, 0, 1019, 1005, 1, 0, 0, 0, 1019, 1006, 1, 0, 0, 0, 1019, 1007, 1, 0, 0, 0, 1019, 1008, 1, 0, 0, 0, 1019, 1009, 1, 0, 0, 0, 1019, 1010, 1, 0, 0, 0, 1019, 1011, 1, 0, 0, 0, 1019, 1012, 1, 0, 0, 0, 1019, 1013, 1, 0, 0, 0, 1019, 1014, 1, 0, 0, 0, 1019, 1015, 1, 0, 0, 0, 1019, 1016, 1, 0, 0, 0, 1019, 1017, 1, 0, 0, 0, 1019, 1018, 1, 0, 0, 0, 1020, 73, 1, 0, 0, 0, 1021, 1023, 5, 14, 0, 0, 1022, 1024, 5, 30, 0, 0, 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1026, 3, 76, 38, 0, 1026, 75, 1, 0, 0, 0, 1027, 1032, 3, 78, 39, 0, 1028, 1029, 5, 122, 0, 0, 1029, 1031, 3, 78, 39, 0, 1030, 1028, 1, 0, 0, 0, 1031, 1034, 1, 0, 0, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 77, 1, 0, 0, 0, 1034, 1032, 1, 0, 0, 0, 1035, 1042, 3, 182, 91, 0, 1036, 1037, 3, 182, 91, 0, 1037, 1038, 5, 123, 0, 0, 1038, 1039, 3, 184, 92, 0, 1039, 1040, 5, 128, 0, 0, 1040, 1042, 1, 0, 0, 0, 1041, 1035, 1, 0, 0, 0, 1041, 1036, 1, 0, 0, 0, 1042, 79, 1, 0, 0, 0, 1043, 1045, 5, 37, 0, 0, 1044, 1046, 5, 30, 0, 0, 1045, 1044, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 3, 82, 41, 0, 1048, 81, 1, 0, 0, 0, 1049, 1054, 3, 84, 42, 0, 1050, 1051, 5, 122, 0, 0, 1051, 1053, 3, 84, 42, 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, 83, 1, 0, 0, 0, 1056, 1054, 1, 0, 0, 0, 1057, 1064, 3, 182, 91, 0, 1058, 1059, 3, 182, 91, 0, 1059, 1060, 5, 123, 0, 0, 1060, 1061, 3, 268, 134, 0, 1061, 1062, 5, 128, 0, 0, 1062, 1064, 1, 0, 0, 0, 1063, 1057, 1, 0, 0, 0, 1063, 1058, 1, 0, 0, 0, 1064, 85, 1, 0, 0, 0, 1065, 1067, 5, 16, 0, 0, 1066, 1068, 5, 30, 0, 0, 1067, 1066, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1069, 1, 0, 0, 0, 1069, 1070, 3, 88, 44, 0, 1070, 87, 1, 0, 0, 0, 1071, 1076, 3, 90, 45, 0, 1072, 1073, 5, 122, 0, 0, 1073, 1075, 3, 90, 45, 0, 1074, 1072, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 89, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1079, 1080, 3, 106, 53, 0, 1080, 91, 1, 0, 0, 0, 1081, 1082, 5, 17, 0, 0, 1082, 1083, 3, 94, 47, 0, 1083, 93, 1, 0, 0, 0, 1084, 1085, 6, 47, -1, 0, 1085, 1086, 5, 133, 0, 0, 1086, 1087, 3, 96, 48, 0, 1087, 1088, 5, 133, 0, 0, 1088, 1089, 3, 98, 49, 0, 1089, 1108, 1, 0, 0, 0, 1090, 1091, 10, 3, 0, 0, 1091, 1092, 5, 133, 0, 0, 1092, 1093, 3, 96, 48, 0, 1093, 1094, 5, 133, 0, 0, 1094, 1095, 3, 98, 49, 0, 1095, 1107, 1, 0, 0, 0, 1096, 1097, 10, 2, 0, 0, 1097, 1098, 5, 122, 0, 0, 1098, 1099, 5, 133, 0, 0, 1099, 1100, 3, 96, 48, 0, 1100, 1101, 5, 133, 0, 0, 1101, 1102, 3, 98, 49, 0, 1102, 1107, 1, 0, 0, 0, 1103, 1104, 10, 1, 0, 0, 1104, 1105, 5, 122, 0, 0, 1105, 1107, 3, 98, 49, 0, 1106, 1090, 1, 0, 0, 0, 1106, 1096, 1, 0, 0, 0, 1106, 1103, 1, 0, 0, 0, 1107, 1110, 1, 0, 0, 0, 1108, 1106, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 95, 1, 0, 0, 0, 1110, 1108, 1, 0, 0, 0, 1111, 1112, 5, 188, 0, 0, 1112, 97, 1, 0, 0, 0, 1113, 1114, 3, 432, 216, 0, 1114, 99, 1, 0, 0, 0, 1115, 1116, 5, 18, 0, 0, 1116, 1117, 5, 123, 0, 0, 1117, 1118, 3, 108, 54, 0, 1118, 1120, 5, 128, 0, 0, 1119, 1121, 5, 30, 0, 0, 1120, 1119, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1123, 3, 102, 51, 0, 1123, 101, 1, 0, 0, 0, 1124, 1125, 3, 104, 52, 0, 1125, 1126, 5, 122, 0, 0, 1126, 1127, 3, 104, 52, 0, 1127, 103, 1, 0, 0, 0, 1128, 1129, 3, 106, 53, 0, 1129, 105, 1, 0, 0, 0, 1130, 1131, 5, 188, 0, 0, 1131, 107, 1, 0, 0, 0, 1132, 1133, 7, 0, 0, 0, 1133, 109, 1, 0, 0, 0, 1134, 1136, 5, 15, 0, 0, 1135, 1137, 5, 30, 0, 0, 1136, 1135, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1139, 3, 112, 56, 0, 1139, 111, 1, 0, 0, 0, 1140, 1145, 3, 114, 57, 0, 1141, 1142, 5, 122, 0, 0, 1142, 1144, 3, 114, 57, 0, 1143, 1141, 1, 0, 0, 0, 1144, 1147, 1, 0, 0, 0, 1145, 1143, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 113, 1, 0, 0, 0, 1147, 1145, 1, 0, 0, 0, 1148, 1155, 3, 116, 58, 0, 1149, 1150, 3, 116, 58, 0, 1150, 1151, 5, 123, 0, 0, 1151, 1152, 3, 268, 134, 0, 1152, 1153, 5, 128, 0, 0, 1153, 1155, 1, 0, 0, 0, 1154, 1148, 1, 0, 0, 0, 1154, 1149, 1, 0, 0, 0, 1155, 115, 1, 0, 0, 0, 1156, 1157, 3, 300, 150, 0, 1157, 117, 1, 0, 0, 0, 1158, 1160, 5, 40, 0, 0, 1159, 1161, 5, 30, 0, 0, 1160, 1159, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1165, 3, 120, 60, 0, 1163, 1165, 5, 40, 0, 0, 1164, 1158, 1, 0, 0, 0, 1164, 1163, 1, 0, 0, 0, 1165, 119, 1, 0, 0, 0, 1166, 1171, 3, 122, 61, 0, 1167, 1168, 5, 122, 0, 0, 1168, 1170, 3, 122, 61, 0, 1169, 1167, 1, 0, 0, 0, 1170, 1173, 1, 0, 0, 0, 1171, 1169, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 121, 1, 0, 0, 0, 1173, 1171, 1, 0, 0, 0, 1174, 1177, 3, 124, 62, 0, 1175, 1177, 3, 198, 99, 0, 1176, 1174, 1, 0, 0, 0, 1176, 1175, 1, 0, 0, 0, 1177, 123, 1, 0, 0, 0, 1178, 1179, 3, 300, 150, 0, 1179, 125, 1, 0, 0, 0, 1180, 1187, 5, 47, 0, 0, 1181, 1182, 5, 47, 0, 0, 1182, 1187, 3, 128, 64, 0, 1183, 1184, 5, 47, 0, 0, 1184, 1185, 5, 30, 0, 0, 1185, 1187, 3, 128, 64, 0, 1186, 1180, 1, 0, 0, 0, 1186, 1181, 1, 0, 0, 0, 1186, 1183, 1, 0, 0, 0, 1187, 127, 1, 0, 0, 0, 1188, 1190, 3, 130, 65, 0, 1189, 1188, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1189, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 129, 1, 0, 0, 0, 1193, 1196, 3, 432, 216, 0, 1194, 1196, 3, 132, 66, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1194, 1, 0, 0, 0, 1196, 131, 1, 0, 0, 0, 1197, 1198, 5, 133, 0, 0, 1198, 1199, 3, 170, 85, 0, 1199, 1200, 5, 133, 0, 0, 1200, 133, 1, 0, 0, 0, 1201, 1202, 5, 46, 0, 0, 1202, 1203, 3, 136, 68, 0, 1203, 135, 1, 0, 0, 0, 1204, 1206, 3, 138, 69, 0, 1205, 1204, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1205, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 137, 1, 0, 0, 0, 1209, 1210, 5, 188, 0, 0, 1210, 139, 1, 0, 0, 0, 1211, 1212, 5, 45, 0, 0, 1212, 1213, 3, 142, 71, 0, 1213, 141, 1, 0, 0, 0, 1214, 1216, 3, 144, 72, 0, 1215, 1214, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 143, 1, 0, 0, 0, 1219, 1220, 5, 188, 0, 0, 1220, 145, 1, 0, 0, 0, 1221, 1222, 5, 35, 0, 0, 1222, 1223, 3, 148, 74, 0, 1223, 147, 1, 0, 0, 0, 1224, 1226, 3, 150, 75, 0, 1225, 1224, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1225, 1, 0, 0, 0, 1227, 1228, 1, 0, 0, 0, 1228, 149, 1, 0, 0, 0, 1229, 1230, 5, 123, 0, 0, 1230, 1231, 3, 152, 76, 0, 1231, 1232, 5, 122, 0, 0, 1232, 1233, 3, 154, 77, 0, 1233, 1234, 5, 128, 0, 0, 1234, 151, 1, 0, 0, 0, 1235, 1236, 3, 404, 202, 0, 1236, 153, 1, 0, 0, 0, 1237, 1239, 3, 152, 76, 0, 1238, 1237, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1238, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 155, 1, 0, 0, 0, 1242, 1243, 5, 13, 0, 0, 1243, 1248, 3, 158, 79, 0, 1244, 1245, 5, 13, 0, 0, 1245, 1246, 5, 30, 0, 0, 1246, 1248, 3, 158, 79, 0, 1247, 1242, 1, 0, 0, 0, 1247, 1244, 1, 0, 0, 0, 1248, 157, 1, 0, 0, 0, 1249, 1251, 3, 166, 83, 0, 1250, 1249, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 1250, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 159, 1, 0, 0, 0, 1254, 1255, 5, 32, 0, 0, 1255, 1256, 3, 162, 81, 0, 1256, 161, 1, 0, 0, 0, 1257, 1259, 6, 81, -1, 0, 1258, 1260, 3, 168, 84, 0, 1259, 1258, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1262, 3, 164, 82, 0, 1262, 1275, 1, 0, 0, 0, 1263, 1264, 10, 2, 0, 0, 1264, 1266, 5, 122, 0, 0, 1265, 1267, 3, 168, 84, 0, 1266, 1265, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1274, 3, 164, 82, 0, 1269, 1270, 10, 1, 0, 0, 1270, 1271, 3, 168, 84, 0, 1271, 1272, 3, 164, 82, 0, 1272, 1274, 1, 0, 0, 0, 1273, 1263, 1, 0, 0, 0, 1273, 1269, 1, 0, 0, 0, 1274, 1277, 1, 0, 0, 0, 1275, 1273, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 163, 1, 0, 0, 0, 1277, 1275, 1, 0, 0, 0, 1278, 1281, 3, 432, 216, 0, 1279, 1281, 3, 166, 83, 0, 1280, 1278, 1, 0, 0, 0, 1280, 1279, 1, 0, 0, 0, 1281, 165, 1, 0, 0, 0, 1282, 1283, 3, 432, 216, 0, 1283, 1284, 5, 123, 0, 0, 1284, 1285, 3, 184, 92, 0, 1285, 1286, 5, 128, 0, 0, 1286, 167, 1, 0, 0, 0, 1287, 1288, 5, 133, 0, 0, 1288, 1289, 5, 184, 0, 0, 1289, 1290, 5, 133, 0, 0, 1290, 1296, 5, 185, 0, 0, 1291, 1292, 5, 133, 0, 0, 1292, 1293, 3, 170, 85, 0, 1293, 1294, 5, 133, 0, 0, 1294, 1296, 1, 0, 0, 0, 1295, 1287, 1, 0, 0, 0, 1295, 1291, 1, 0, 0, 0, 1296, 169, 1, 0, 0, 0, 1297, 1298, 5, 188, 0, 0, 1298, 171, 1, 0, 0, 0, 1299, 1300, 3, 272, 136, 0, 1300, 1301, 3, 178, 89, 0, 1301, 1310, 1, 0, 0, 0, 1302, 1304, 3, 272, 136, 0, 1303, 1305, 3, 174, 87, 0, 1304, 1303, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1307, 5, 30, 0, 0, 1307, 1308, 3, 178, 89, 0, 1308, 1310, 1, 0, 0, 0, 1309, 1299, 1, 0, 0, 0, 1309, 1302, 1, 0, 0, 0, 1310, 173, 1, 0, 0, 0, 1311, 1312, 6, 87, -1, 0, 1312, 1313, 5, 122, 0, 0, 1313, 1314, 3, 176, 88, 0, 1314, 1320, 1, 0, 0, 0, 1315, 1316, 10, 1, 0, 0, 1316, 1317, 5, 122, 0, 0, 1317, 1319, 3, 176, 88, 0, 1318, 1315, 1, 0, 0, 0, 1319, 1322, 1, 0, 0, 0, 1320, 1318, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 175, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1323, 1343, 5, 44, 0, 0, 1324, 1343, 5, 40, 0, 0, 1325, 1343, 5, 15, 0, 0, 1326, 1327, 5, 13, 0, 0, 1327, 1328, 5, 123, 0, 0, 1328, 1329, 3, 184, 92, 0, 1329, 1330, 5, 128, 0, 0, 1330, 1343, 1, 0, 0, 0, 1331, 1343, 5, 45, 0, 0, 1332, 1333, 5, 18, 0, 0, 1333, 1334, 5, 123, 0, 0, 1334, 1335, 3, 108, 54, 0, 1335, 1336, 5, 128, 0, 0, 1336, 1343, 1, 0, 0, 0, 1337, 1343, 5, 46, 0, 0, 1338, 1343, 5, 16, 0, 0, 1339, 1343, 5, 37, 0, 0, 1340, 1343, 5, 47, 0, 0, 1341, 1343, 5, 14, 0, 0, 1342, 1323, 1, 0, 0, 0, 1342, 1324, 1, 0, 0, 0, 1342, 1325, 1, 0, 0, 0, 1342, 1326, 1, 0, 0, 0, 1342, 1331, 1, 0, 0, 0, 1342, 1332, 1, 0, 0, 0, 1342, 1337, 1, 0, 0, 0, 1342, 1338, 1, 0, 0, 0, 1342, 1339, 1, 0, 0, 0, 1342, 1340, 1, 0, 0, 0, 1342, 1341, 1, 0, 0, 0, 1343, 177, 1, 0, 0, 0, 1344, 1349, 3, 180, 90, 0, 1345, 1346, 5, 122, 0, 0, 1346, 1348, 3, 180, 90, 0, 1347, 1345, 1, 0, 0, 0, 1348, 1351, 1, 0, 0, 0, 1349, 1347, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 179, 1, 0, 0, 0, 1351, 1349, 1, 0, 0, 0, 1352, 1396, 3, 182, 91, 0, 1353, 1354, 3, 182, 91, 0, 1354, 1355, 5, 123, 0, 0, 1355, 1356, 3, 184, 92, 0, 1356, 1357, 5, 128, 0, 0, 1357, 1396, 1, 0, 0, 0, 1358, 1359, 3, 182, 91, 0, 1359, 1360, 5, 192, 0, 0, 1360, 1361, 3, 282, 141, 0, 1361, 1396, 1, 0, 0, 0, 1362, 1363, 3, 182, 91, 0, 1363, 1364, 5, 123, 0, 0, 1364, 1365, 3, 184, 92, 0, 1365, 1366, 5, 128, 0, 0, 1366, 1367, 5, 192, 0, 0, 1367, 1368, 3, 282, 141, 0, 1368, 1396, 1, 0, 0, 0, 1369, 1370, 3, 182, 91, 0, 1370, 1371, 5, 130, 0, 0, 1371, 1372, 3, 624, 312, 0, 1372, 1396, 1, 0, 0, 0, 1373, 1374, 3, 182, 91, 0, 1374, 1375, 5, 123, 0, 0, 1375, 1376, 3, 184, 92, 0, 1376, 1377, 5, 128, 0, 0, 1377, 1378, 5, 130, 0, 0, 1378, 1379, 3, 624, 312, 0, 1379, 1396, 1, 0, 0, 0, 1380, 1381, 3, 182, 91, 0, 1381, 1382, 5, 192, 0, 0, 1382, 1383, 3, 282, 141, 0, 1383, 1384, 5, 130, 0, 0, 1384, 1385, 3, 624, 312, 0, 1385, 1396, 1, 0, 0, 0, 1386, 1387, 3, 182, 91, 0, 1387, 1388, 5, 192, 0, 0, 1388, 1389, 3, 282, 141, 0, 1389, 1390, 5, 123, 0, 0, 1390, 1391, 3, 184, 92, 0, 1391, 1392, 5, 128, 0, 0, 1392, 1393, 5, 130, 0, 0, 1393, 1394, 3, 624, 312, 0, 1394, 1396, 1, 0, 0, 0, 1395, 1352, 1, 0, 0, 0, 1395, 1353, 1, 0, 0, 0, 1395, 1358, 1, 0, 0, 0, 1395, 1362, 1, 0, 0, 0, 1395, 1369, 1, 0, 0, 0, 1395, 1373, 1, 0, 0, 0, 1395, 1380, 1, 0, 0, 0, 1395, 1386, 1, 0, 0, 0, 1396, 181, 1, 0, 0, 0, 1397, 1398, 5, 188, 0, 0, 1398, 183, 1, 0, 0, 0, 1399, 1404, 3, 260, 130, 0, 1400, 1404, 3, 190, 95, 0, 1401, 1404, 3, 186, 93, 0, 1402, 1404, 3, 268, 134, 0, 1403, 1399, 1, 0, 0, 0, 1403, 1400, 1, 0, 0, 0, 1403, 1401, 1, 0, 0, 0, 1403, 1402, 1, 0, 0, 0, 1404, 185, 1, 0, 0, 0, 1405, 1406, 6, 93, -1, 0, 1406, 1407, 3, 264, 132, 0, 1407, 1408, 5, 129, 0, 0, 1408, 1415, 1, 0, 0, 0, 1409, 1410, 3, 268, 134, 0, 1410, 1411, 5, 122, 0, 0, 1411, 1412, 3, 264, 132, 0, 1412, 1413, 5, 129, 0, 0, 1413, 1415, 1, 0, 0, 0, 1414, 1405, 1, 0, 0, 0, 1414, 1409, 1, 0, 0, 0, 1415, 1421, 1, 0, 0, 0, 1416, 1417, 10, 1, 0, 0, 1417, 1418, 5, 122, 0, 0, 1418, 1420, 3, 188, 94, 0, 1419, 1416, 1, 0, 0, 0, 1420, 1423, 1, 0, 0, 0, 1421, 1419, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 187, 1, 0, 0, 0, 1423, 1421, 1, 0, 0, 0, 1424, 1425, 3, 264, 132, 0, 1425, 1426, 5, 129, 0, 0, 1426, 1429, 1, 0, 0, 0, 1427, 1429, 5, 129, 0, 0, 1428, 1424, 1, 0, 0, 0, 1428, 1427, 1, 0, 0, 0, 1429, 189, 1, 0, 0, 0, 1430, 1446, 5, 192, 0, 0, 1431, 1432, 3, 264, 132, 0, 1432, 1433, 5, 129, 0, 0, 1433, 1434, 5, 192, 0, 0, 1434, 1446, 1, 0, 0, 0, 1435, 1436, 3, 260, 130, 0, 1436, 1437, 5, 122, 0, 0, 1437, 1438, 5, 192, 0, 0, 1438, 1446, 1, 0, 0, 0, 1439, 1440, 3, 260, 130, 0, 1440, 1441, 5, 122, 0, 0, 1441, 1442, 3, 264, 132, 0, 1442, 1443, 5, 129, 0, 0, 1443, 1444, 5, 192, 0, 0, 1444, 1446, 1, 0, 0, 0, 1445, 1430, 1, 0, 0, 0, 1445, 1431, 1, 0, 0, 0, 1445, 1435, 1, 0, 0, 0, 1445, 1439, 1, 0, 0, 0, 1446, 191, 1, 0, 0, 0, 1447, 1448, 3, 196, 98, 0, 1448, 1449, 3, 202, 101, 0, 1449, 1450, 3, 194, 97, 0, 1450, 193, 1, 0, 0, 0, 1451, 1455, 5, 10, 0, 0, 1452, 1453, 5, 12, 0, 0, 1453, 1455, 5, 183, 0, 0, 1454, 1451, 1, 0, 0, 0, 1454, 1452, 1, 0, 0, 0, 1455, 1457, 1, 0, 0, 0, 1456, 1458, 5, 188, 0, 0, 1457, 1456, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 195, 1, 0, 0, 0, 1459, 1460, 5, 183, 0, 0, 1460, 1465, 5, 188, 0, 0, 1461, 1462, 5, 183, 0, 0, 1462, 1465, 3, 198, 99, 0, 1463, 1465, 5, 183, 0, 0, 1464, 1459, 1, 0, 0, 0, 1464, 1461, 1, 0, 0, 0, 1464, 1463, 1, 0, 0, 0, 1465, 197, 1, 0, 0, 0, 1466, 1467, 5, 22, 0, 0, 1467, 1468, 5, 123, 0, 0, 1468, 1469, 3, 200, 100, 0, 1469, 1470, 5, 128, 0, 0, 1470, 1476, 1, 0, 0, 0, 1471, 1472, 5, 26, 0, 0, 1472, 1473, 5, 123, 0, 0, 1473, 1474, 5, 130, 0, 0, 1474, 1476, 5, 128, 0, 0, 1475, 1466, 1, 0, 0, 0, 1475, 1471, 1, 0, 0, 0, 1476, 199, 1, 0, 0, 0, 1477, 1491, 5, 27, 0, 0, 1478, 1491, 5, 135, 0, 0, 1479, 1491, 5, 192, 0, 0, 1480, 1491, 7, 1, 0, 0, 1481, 1491, 7, 2, 0, 0, 1482, 1483, 5, 133, 0, 0, 1483, 1484, 5, 184, 0, 0, 1484, 1485, 5, 133, 0, 0, 1485, 1491, 5, 185, 0, 0, 1486, 1491, 5, 136, 0, 0, 1487, 1491, 5, 137, 0, 0, 1488, 1491, 5, 138, 0, 0, 1489, 1491, 7, 3, 0, 0, 1490, 1477, 1, 0, 0, 0, 1490, 1478, 1, 0, 0, 0, 1490, 1479, 1, 0, 0, 0, 1490, 1480, 1, 0, 0, 0, 1490, 1481, 1, 0, 0, 0, 1490, 1482, 1, 0, 0, 0, 1490, 1486, 1, 0, 0, 0, 1490, 1487, 1, 0, 0, 0, 1490, 1488, 1, 0, 0, 0, 1490, 1489, 1, 0, 0, 0, 1491, 201, 1, 0, 0, 0, 1492, 1493, 6, 101, -1, 0, 1493, 1494, 3, 204, 102, 0, 1494, 1499, 1, 0, 0, 0, 1495, 1496, 10, 1, 0, 0, 1496, 1498, 3, 204, 102, 0, 1497, 1495, 1, 0, 0, 0, 1498, 1501, 1, 0, 0, 0, 1499, 1497, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 203, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 3, 212, 106, 0, 1503, 1505, 3, 206, 103, 0, 1504, 1502, 1, 0, 0, 0, 1504, 1503, 1, 0, 0, 0, 1505, 205, 1, 0, 0, 0, 1506, 1507, 5, 3, 0, 0, 1507, 1508, 5, 11, 0, 0, 1508, 1509, 3, 208, 104, 0, 1509, 207, 1, 0, 0, 0, 1510, 1515, 3, 210, 105, 0, 1511, 1512, 5, 122, 0, 0, 1512, 1514, 3, 210, 105, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1517, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 209, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1519, 3, 300, 150, 0, 1519, 211, 1, 0, 0, 0, 1520, 1521, 3, 220, 110, 0, 1521, 1522, 5, 188, 0, 0, 1522, 1523, 3, 222, 111, 0, 1523, 1528, 1, 0, 0, 0, 1524, 1525, 5, 9, 0, 0, 1525, 1526, 5, 188, 0, 0, 1526, 1528, 3, 214, 107, 0, 1527, 1520, 1, 0, 0, 0, 1527, 1524, 1, 0, 0, 0, 1528, 213, 1, 0, 0, 0, 1529, 1531, 3, 64, 32, 0, 1530, 1532, 3, 230, 115, 0, 1531, 1530, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1534, 3, 216, 108, 0, 1534, 215, 1, 0, 0, 0, 1535, 1542, 5, 12, 0, 0, 1536, 1537, 5, 12, 0, 0, 1537, 1539, 5, 9, 0, 0, 1538, 1540, 5, 188, 0, 0, 1539, 1538, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1542, 1, 0, 0, 0, 1541, 1535, 1, 0, 0, 0, 1541, 1536, 1, 0, 0, 0, 1542, 217, 1, 0, 0, 0, 1543, 1544, 5, 1, 0, 0, 1544, 219, 1, 0, 0, 0, 1545, 1547, 3, 218, 109, 0, 1546, 1545, 1, 0, 0, 0, 1546, 1547, 1, 0, 0, 0, 1547, 1549, 1, 0, 0, 0, 1548, 1550, 3, 272, 136, 0, 1549, 1548, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1557, 5, 7, 0, 0, 1552, 1553, 3, 272, 136, 0, 1553, 1554, 5, 1, 0, 0, 1554, 1555, 5, 7, 0, 0, 1555, 1557, 1, 0, 0, 0, 1556, 1546, 1, 0, 0, 0, 1556, 1552, 1, 0, 0, 0, 1557, 221, 1, 0, 0, 0, 1558, 1560, 3, 224, 112, 0, 1559, 1561, 3, 230, 115, 0, 1560, 1559, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1563, 3, 232, 116, 0, 1563, 223, 1, 0, 0, 0, 1564, 1566, 5, 123, 0, 0, 1565, 1567, 3, 226, 113, 0, 1566, 1565, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 5, 128, 0, 0, 1569, 225, 1, 0, 0, 0, 1570, 1575, 3, 228, 114, 0, 1571, 1572, 5, 122, 0, 0, 1572, 1574, 3, 228, 114, 0, 1573, 1571, 1, 0, 0, 0, 1574, 1577, 1, 0, 0, 0, 1575, 1573, 1, 0, 0, 0, 1575, 1576, 1, 0, 0, 0, 1576, 227, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1578, 1579, 3, 106, 53, 0, 1579, 229, 1, 0, 0, 0, 1580, 1581, 6, 115, -1, 0, 1581, 1582, 3, 16, 8, 0, 1582, 1587, 1, 0, 0, 0, 1583, 1584, 10, 1, 0, 0, 1584, 1586, 3, 16, 8, 0, 1585, 1583, 1, 0, 0, 0, 1586, 1589, 1, 0, 0, 0, 1587, 1585, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 231, 1, 0, 0, 0, 1589, 1587, 1, 0, 0, 0, 1590, 1597, 5, 12, 0, 0, 1591, 1592, 5, 12, 0, 0, 1592, 1594, 5, 7, 0, 0, 1593, 1595, 5, 188, 0, 0, 1594, 1593, 1, 0, 0, 0, 1594, 1595, 1, 0, 0, 0, 1595, 1597, 1, 0, 0, 0, 1596, 1590, 1, 0, 0, 0, 1596, 1591, 1, 0, 0, 0, 1597, 233, 1, 0, 0, 0, 1598, 1599, 3, 238, 119, 0, 1599, 1600, 3, 240, 120, 0, 1600, 1601, 3, 236, 118, 0, 1601, 235, 1, 0, 0, 0, 1602, 1603, 5, 182, 0, 0, 1603, 1611, 5, 188, 0, 0, 1604, 1611, 5, 182, 0, 0, 1605, 1606, 5, 12, 0, 0, 1606, 1607, 5, 187, 0, 0, 1607, 1611, 5, 188, 0, 0, 1608, 1609, 5, 12, 0, 0, 1609, 1611, 5, 187, 0, 0, 1610, 1602, 1, 0, 0, 0, 1610, 1604, 1, 0, 0, 0, 1610, 1605, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1611, 237, 1, 0, 0, 0, 1612, 1613, 5, 187, 0, 0, 1613, 1623, 5, 188, 0, 0, 1614, 1615, 5, 187, 0, 0, 1615, 1616, 5, 30, 0, 0, 1616, 1623, 5, 188, 0, 0, 1617, 1618, 5, 187, 0, 0, 1618, 1619, 5, 122, 0, 0, 1619, 1620, 5, 40, 0, 0, 1620, 1621, 5, 30, 0, 0, 1621, 1623, 5, 188, 0, 0, 1622, 1612, 1, 0, 0, 0, 1622, 1614, 1, 0, 0, 0, 1622, 1617, 1, 0, 0, 0, 1623, 239, 1, 0, 0, 0, 1624, 1625, 6, 120, -1, 0, 1625, 1626, 3, 242, 121, 0, 1626, 1631, 1, 0, 0, 0, 1627, 1628, 10, 1, 0, 0, 1628, 1630, 3, 242, 121, 0, 1629, 1627, 1, 0, 0, 0, 1630, 1633, 1, 0, 0, 0, 1631, 1629, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 241, 1, 0, 0, 0, 1633, 1631, 1, 0, 0, 0, 1634, 1637, 3, 244, 122, 0, 1635, 1637, 3, 246, 123, 0, 1636, 1634, 1, 0, 0, 0, 1636, 1635, 1, 0, 0, 0, 1637, 243, 1, 0, 0, 0, 1638, 1639, 7, 4, 0, 0, 1639, 245, 1, 0, 0, 0, 1640, 1641, 3, 272, 136, 0, 1641, 1642, 5, 122, 0, 0, 1642, 1643, 3, 254, 127, 0, 1643, 1644, 5, 30, 0, 0, 1644, 1645, 3, 248, 124, 0, 1645, 1654, 1, 0, 0, 0, 1646, 1647, 3, 272, 136, 0, 1647, 1648, 5, 30, 0, 0, 1648, 1649, 3, 248, 124, 0, 1649, 1654, 1, 0, 0, 0, 1650, 1651, 3, 272, 136, 0, 1651, 1652, 3, 248, 124, 0, 1652, 1654, 1, 0, 0, 0, 1653, 1640, 1, 0, 0, 0, 1653, 1646, 1, 0, 0, 0, 1653, 1650, 1, 0, 0, 0, 1654, 247, 1, 0, 0, 0, 1655, 1660, 3, 250, 125, 0, 1656, 1657, 5, 122, 0, 0, 1657, 1659, 3, 250, 125, 0, 1658, 1656, 1, 0, 0, 0, 1659, 1662, 1, 0, 0, 0, 1660, 1658, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 249, 1, 0, 0, 0, 1662, 1660, 1, 0, 0, 0, 1663, 1664, 3, 252, 126, 0, 1664, 1665, 5, 123, 0, 0, 1665, 1666, 3, 258, 129, 0, 1666, 1667, 5, 128, 0, 0, 1667, 1668, 5, 192, 0, 0, 1668, 1669, 3, 282, 141, 0, 1669, 1707, 1, 0, 0, 0, 1670, 1671, 3, 252, 126, 0, 1671, 1672, 5, 123, 0, 0, 1672, 1673, 3, 258, 129, 0, 1673, 1674, 5, 128, 0, 0, 1674, 1675, 5, 130, 0, 0, 1675, 1676, 3, 624, 312, 0, 1676, 1707, 1, 0, 0, 0, 1677, 1678, 3, 252, 126, 0, 1678, 1679, 5, 123, 0, 0, 1679, 1680, 3, 258, 129, 0, 1680, 1681, 5, 128, 0, 0, 1681, 1707, 1, 0, 0, 0, 1682, 1683, 3, 252, 126, 0, 1683, 1684, 5, 192, 0, 0, 1684, 1685, 3, 282, 141, 0, 1685, 1707, 1, 0, 0, 0, 1686, 1687, 3, 252, 126, 0, 1687, 1688, 5, 130, 0, 0, 1688, 1689, 3, 624, 312, 0, 1689, 1707, 1, 0, 0, 0, 1690, 1691, 3, 252, 126, 0, 1691, 1692, 5, 192, 0, 0, 1692, 1693, 3, 282, 141, 0, 1693, 1694, 5, 130, 0, 0, 1694, 1695, 3, 624, 312, 0, 1695, 1707, 1, 0, 0, 0, 1696, 1697, 3, 252, 126, 0, 1697, 1698, 5, 192, 0, 0, 1698, 1699, 3, 282, 141, 0, 1699, 1700, 5, 123, 0, 0, 1700, 1701, 3, 258, 129, 0, 1701, 1702, 5, 128, 0, 0, 1702, 1703, 5, 130, 0, 0, 1703, 1704, 3, 624, 312, 0, 1704, 1707, 1, 0, 0, 0, 1705, 1707, 3, 252, 126, 0, 1706, 1663, 1, 0, 0, 0, 1706, 1670, 1, 0, 0, 0, 1706, 1677, 1, 0, 0, 0, 1706, 1682, 1, 0, 0, 0, 1706, 1686, 1, 0, 0, 0, 1706, 1690, 1, 0, 0, 0, 1706, 1696, 1, 0, 0, 0, 1706, 1705, 1, 0, 0, 0, 1707, 251, 1, 0, 0, 0, 1708, 1709, 5, 188, 0, 0, 1709, 253, 1, 0, 0, 0, 1710, 1715, 3, 256, 128, 0, 1711, 1712, 5, 122, 0, 0, 1712, 1714, 3, 256, 128, 0, 1713, 1711, 1, 0, 0, 0, 1714, 1717, 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 255, 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1725, 5, 37, 0, 0, 1719, 1720, 5, 13, 0, 0, 1720, 1721, 5, 123, 0, 0, 1721, 1722, 3, 258, 129, 0, 1722, 1723, 5, 128, 0, 0, 1723, 1725, 1, 0, 0, 0, 1724, 1718, 1, 0, 0, 0, 1724, 1719, 1, 0, 0, 0, 1725, 257, 1, 0, 0, 0, 1726, 1729, 3, 260, 130, 0, 1727, 1729, 3, 268, 134, 0, 1728, 1726, 1, 0, 0, 0, 1728, 1727, 1, 0, 0, 0, 1729, 259, 1, 0, 0, 0, 1730, 1735, 3, 262, 131, 0, 1731, 1732, 5, 122, 0, 0, 1732, 1734, 3, 262, 131, 0, 1733, 1731, 1, 0, 0, 0, 1734, 1737, 1, 0, 0, 0, 1735, 1733, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 261, 1, 0, 0, 0, 1737, 1735, 1, 0, 0, 0, 1738, 1739, 3, 264, 132, 0, 1739, 1740, 5, 129, 0, 0, 1740, 1741, 3, 266, 133, 0, 1741, 1744, 1, 0, 0, 0, 1742, 1744, 3, 266, 133, 0, 1743, 1738, 1, 0, 0, 0, 1743, 1742, 1, 0, 0, 0, 1744, 263, 1, 0, 0, 0, 1745, 1746, 3, 624, 312, 0, 1746, 265, 1, 0, 0, 0, 1747, 1748, 3, 624, 312, 0, 1748, 267, 1, 0, 0, 0, 1749, 1754, 3, 270, 135, 0, 1750, 1751, 5, 122, 0, 0, 1751, 1753, 3, 270, 135, 0, 1752, 1750, 1, 0, 0, 0, 1753, 1756, 1, 0, 0, 0, 1754, 1752, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 269, 1, 0, 0, 0, 1756, 1754, 1, 0, 0, 0, 1757, 1758, 5, 129, 0, 0, 1758, 271, 1, 0, 0, 0, 1759, 1785, 5, 168, 0, 0, 1760, 1785, 5, 34, 0, 0, 1761, 1785, 5, 29, 0, 0, 1762, 1785, 5, 166, 0, 0, 1763, 1785, 5, 169, 0, 0, 1764, 1785, 5, 43, 0, 0, 1765, 1766, 5, 43, 0, 0, 1766, 1785, 3, 280, 140, 0, 1767, 1768, 5, 168, 0, 0, 1768, 1785, 3, 274, 137, 0, 1769, 1770, 5, 34, 0, 0, 1770, 1785, 3, 274, 137, 0, 1771, 1772, 5, 93, 0, 0, 1772, 1785, 5, 167, 0, 0, 1773, 1774, 5, 166, 0, 0, 1774, 1785, 3, 274, 137, 0, 1775, 1776, 5, 43, 0, 0, 1776, 1785, 3, 278, 139, 0, 1777, 1778, 5, 169, 0, 0, 1778, 1785, 3, 274, 137, 0, 1779, 1780, 5, 187, 0, 0, 1780, 1781, 5, 123, 0, 0, 1781, 1782, 3, 276, 138, 0, 1782, 1783, 5, 128, 0, 0, 1783, 1785, 1, 0, 0, 0, 1784, 1759, 1, 0, 0, 0, 1784, 1760, 1, 0, 0, 0, 1784, 1761, 1, 0, 0, 0, 1784, 1762, 1, 0, 0, 0, 1784, 1763, 1, 0, 0, 0, 1784, 1764, 1, 0, 0, 0, 1784, 1765, 1, 0, 0, 0, 1784, 1767, 1, 0, 0, 0, 1784, 1769, 1, 0, 0, 0, 1784, 1771, 1, 0, 0, 0, 1784, 1773, 1, 0, 0, 0, 1784, 1775, 1, 0, 0, 0, 1784, 1777, 1, 0, 0, 0, 1784, 1779, 1, 0, 0, 0, 1785, 273, 1, 0, 0, 0, 1786, 1787, 5, 123, 0, 0, 1787, 1788, 5, 117, 0, 0, 1788, 1789, 5, 130, 0, 0, 1789, 1790, 3, 624, 312, 0, 1790, 1791, 5, 128, 0, 0, 1791, 1797, 1, 0, 0, 0, 1792, 1793, 5, 123, 0, 0, 1793, 1794, 3, 624, 312, 0, 1794, 1795, 5, 128, 0, 0, 1795, 1797, 1, 0, 0, 0, 1796, 1786, 1, 0, 0, 0, 1796, 1792, 1, 0, 0, 0, 1797, 275, 1, 0, 0, 0, 1798, 1799, 3, 300, 150, 0, 1799, 277, 1, 0, 0, 0, 1800, 1801, 5, 123, 0, 0, 1801, 1802, 5, 118, 0, 0, 1802, 1803, 5, 130, 0, 0, 1803, 1804, 3, 294, 147, 0, 1804, 1805, 5, 122, 0, 0, 1805, 1806, 5, 117, 0, 0, 1806, 1807, 5, 130, 0, 0, 1807, 1808, 3, 624, 312, 0, 1808, 1809, 5, 128, 0, 0, 1809, 1835, 1, 0, 0, 0, 1810, 1811, 5, 123, 0, 0, 1811, 1812, 5, 118, 0, 0, 1812, 1813, 5, 130, 0, 0, 1813, 1814, 3, 294, 147, 0, 1814, 1815, 5, 122, 0, 0, 1815, 1816, 3, 624, 312, 0, 1816, 1817, 5, 128, 0, 0, 1817, 1835, 1, 0, 0, 0, 1818, 1819, 5, 123, 0, 0, 1819, 1820, 5, 118, 0, 0, 1820, 1821, 5, 130, 0, 0, 1821, 1822, 3, 294, 147, 0, 1822, 1823, 5, 128, 0, 0, 1823, 1835, 1, 0, 0, 0, 1824, 1825, 5, 123, 0, 0, 1825, 1826, 5, 117, 0, 0, 1826, 1827, 5, 130, 0, 0, 1827, 1828, 3, 624, 312, 0, 1828, 1829, 5, 128, 0, 0, 1829, 1835, 1, 0, 0, 0, 1830, 1831, 5, 123, 0, 0, 1831, 1832, 3, 624, 312, 0, 1832, 1833, 5, 128, 0, 0, 1833, 1835, 1, 0, 0, 0, 1834, 1800, 1, 0, 0, 0, 1834, 1810, 1, 0, 0, 0, 1834, 1818, 1, 0, 0, 0, 1834, 1824, 1, 0, 0, 0, 1834, 1830, 1, 0, 0, 0, 1835, 279, 1, 0, 0, 0, 1836, 1837, 5, 192, 0, 0, 1837, 1843, 3, 282, 141, 0, 1838, 1839, 5, 123, 0, 0, 1839, 1840, 3, 294, 147, 0, 1840, 1841, 5, 128, 0, 0, 1841, 1843, 1, 0, 0, 0, 1842, 1836, 1, 0, 0, 0, 1842, 1838, 1, 0, 0, 0, 1843, 281, 1, 0, 0, 0, 1844, 1845, 5, 123, 0, 0, 1845, 1846, 3, 294, 147, 0, 1846, 1847, 5, 128, 0, 0, 1847, 1850, 1, 0, 0, 0, 1848, 1850, 3, 284, 142, 0, 1849, 1844, 1, 0, 0, 0, 1849, 1848, 1, 0, 0, 0, 1850, 283, 1, 0, 0, 0, 1851, 1869, 3, 292, 146, 0, 1852, 1854, 7, 1, 0, 0, 1853, 1852, 1, 0, 0, 0, 1853, 1854, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1869, 3, 686, 343, 0, 1856, 1869, 5, 177, 0, 0, 1857, 1869, 5, 155, 0, 0, 1858, 1869, 3, 682, 341, 0, 1859, 1860, 5, 186, 0, 0, 1860, 1861, 5, 170, 0, 0, 1861, 1869, 5, 177, 0, 0, 1862, 1863, 3, 292, 146, 0, 1863, 1864, 5, 170, 0, 0, 1864, 1865, 5, 177, 0, 0, 1865, 1869, 1, 0, 0, 0, 1866, 1869, 3, 288, 144, 0, 1867, 1869, 3, 286, 143, 0, 1868, 1851, 1, 0, 0, 0, 1868, 1853, 1, 0, 0, 0, 1868, 1856, 1, 0, 0, 0, 1868, 1857, 1, 0, 0, 0, 1868, 1858, 1, 0, 0, 0, 1868, 1859, 1, 0, 0, 0, 1868, 1862, 1, 0, 0, 0, 1868, 1866, 1, 0, 0, 0, 1868, 1867, 1, 0, 0, 0, 1869, 285, 1, 0, 0, 0, 1870, 1871, 7, 5, 0, 0, 1871, 287, 1, 0, 0, 0, 1872, 1873, 3, 276, 138, 0, 1873, 1874, 5, 123, 0, 0, 1874, 1875, 3, 290, 145, 0, 1875, 1876, 5, 128, 0, 0, 1876, 289, 1, 0, 0, 0, 1877, 1878, 3, 624, 312, 0, 1878, 1879, 5, 122, 0, 0, 1879, 1880, 3, 624, 312, 0, 1880, 291, 1, 0, 0, 0, 1881, 1882, 5, 188, 0, 0, 1882, 293, 1, 0, 0, 0, 1883, 1886, 3, 624, 312, 0, 1884, 1886, 5, 192, 0, 0, 1885, 1883, 1, 0, 0, 0, 1885, 1884, 1, 0, 0, 0, 1886, 295, 1, 0, 0, 0, 1887, 1888, 5, 3, 0, 0, 1888, 1889, 3, 298, 149, 0, 1889, 297, 1, 0, 0, 0, 1890, 1891, 3, 300, 150, 0, 1891, 299, 1, 0, 0, 0, 1892, 1893, 5, 188, 0, 0, 1893, 301, 1, 0, 0, 0, 1894, 1895, 6, 151, -1, 0, 1895, 1898, 3, 16, 8, 0, 1896, 1898, 3, 304, 152, 0, 1897, 1894, 1, 0, 0, 0, 1897, 1896, 1, 0, 0, 0, 1898, 1905, 1, 0, 0, 0, 1899, 1900, 10, 2, 0, 0, 1900, 1904, 3, 16, 8, 0, 1901, 1902, 10, 1, 0, 0, 1902, 1904, 3, 304, 152, 0, 1903, 1899, 1, 0, 0, 0, 1903, 1901, 1, 0, 0, 0, 1904, 1907, 1, 0, 0, 0, 1905, 1903, 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 303, 1, 0, 0, 0, 1907, 1905, 1, 0, 0, 0, 1908, 1911, 3, 306, 153, 0, 1909, 1911, 3, 308, 154, 0, 1910, 1908, 1, 0, 0, 0, 1910, 1909, 1, 0, 0, 0, 1911, 305, 1, 0, 0, 0, 1912, 1913, 5, 2, 0, 0, 1913, 307, 1, 0, 0, 0, 1914, 1917, 3, 310, 155, 0, 1915, 1917, 3, 606, 303, 0, 1916, 1914, 1, 0, 0, 0, 1916, 1915, 1, 0, 0, 0, 1917, 309, 1, 0, 0, 0, 1918, 1919, 3, 220, 110, 0, 1919, 1920, 3, 312, 156, 0, 1920, 1921, 3, 314, 157, 0, 1921, 311, 1, 0, 0, 0, 1922, 1923, 5, 188, 0, 0, 1923, 313, 1, 0, 0, 0, 1924, 1926, 3, 224, 112, 0, 1925, 1927, 3, 316, 158, 0, 1926, 1925, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1929, 3, 232, 116, 0, 1929, 1953, 1, 0, 0, 0, 1930, 1931, 3, 224, 112, 0, 1931, 1932, 5, 55, 0, 0, 1932, 1933, 5, 123, 0, 0, 1933, 1934, 5, 188, 0, 0, 1934, 1936, 5, 128, 0, 0, 1935, 1937, 3, 316, 158, 0, 1936, 1935, 1, 0, 0, 0, 1936, 1937, 1, 0, 0, 0, 1937, 1938, 1, 0, 0, 0, 1938, 1939, 3, 232, 116, 0, 1939, 1953, 1, 0, 0, 0, 1940, 1941, 3, 224, 112, 0, 1941, 1942, 5, 55, 0, 0, 1942, 1943, 5, 123, 0, 0, 1943, 1944, 5, 188, 0, 0, 1944, 1945, 5, 128, 0, 0, 1945, 1946, 3, 12, 6, 0, 1946, 1947, 3, 232, 116, 0, 1947, 1953, 1, 0, 0, 0, 1948, 1949, 3, 224, 112, 0, 1949, 1950, 3, 12, 6, 0, 1950, 1951, 3, 232, 116, 0, 1951, 1953, 1, 0, 0, 0, 1952, 1924, 1, 0, 0, 0, 1952, 1930, 1, 0, 0, 0, 1952, 1940, 1, 0, 0, 0, 1952, 1948, 1, 0, 0, 0, 1953, 315, 1, 0, 0, 0, 1954, 1956, 3, 318, 159, 0, 1955, 1954, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1955, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 317, 1, 0, 0, 0, 1959, 1962, 3, 16, 8, 0, 1960, 1962, 3, 320, 160, 0, 1961, 1959, 1, 0, 0, 0, 1961, 1960, 1, 0, 0, 0, 1962, 319, 1, 0, 0, 0, 1963, 1969, 3, 436, 218, 0, 1964, 1969, 3, 370, 185, 0, 1965, 1969, 3, 354, 177, 0, 1966, 1969, 3, 336, 168, 0, 1967, 1969, 3, 322, 161, 0, 1968, 1963, 1, 0, 0, 0, 1968, 1964, 1, 0, 0, 0, 1968, 1965, 1, 0, 0, 0, 1968, 1966, 1, 0, 0, 0, 1968, 1967, 1, 0, 0, 0, 1969, 321, 1, 0, 0, 0, 1970, 1971, 3, 330, 165, 0, 1971, 1972, 3, 328, 164, 0, 1972, 1977, 1, 0, 0, 0, 1973, 1974, 3, 324, 162, 0, 1974, 1975, 3, 328, 164, 0, 1975, 1977, 1, 0, 0, 0, 1976, 1970, 1, 0, 0, 0, 1976, 1973, 1, 0, 0, 0, 1977, 323, 1, 0, 0, 0, 1978, 1979, 6, 162, -1, 0, 1979, 1980, 3, 330, 165, 0, 1980, 1981, 3, 326, 163, 0, 1981, 1986, 1, 0, 0, 0, 1982, 1983, 10, 1, 0, 0, 1983, 1985, 3, 576, 288, 0, 1984, 1982, 1, 0, 0, 0, 1985, 1988, 1, 0, 0, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 325, 1, 0, 0, 0, 1988, 1986, 1, 0, 0, 0, 1989, 1990, 5, 33, 0, 0, 1990, 327, 1, 0, 0, 0, 1991, 1995, 5, 60, 0, 0, 1992, 1993, 5, 12, 0, 0, 1993, 1995, 5, 61, 0, 0, 1994, 1991, 1, 0, 0, 0, 1994, 1992, 1, 0, 0, 0, 1995, 329, 1, 0, 0, 0, 1996, 1997, 6, 165, -1, 0, 1997, 1998, 3, 332, 166, 0, 1998, 2003, 1, 0, 0, 0, 1999, 2000, 10, 1, 0, 0, 2000, 2002, 3, 576, 288, 0, 2001, 1999, 1, 0, 0, 0, 2002, 2005, 1, 0, 0, 0, 2003, 2001, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 331, 1, 0, 0, 0, 2005, 2003, 1, 0, 0, 0, 2006, 2007, 5, 61, 0, 0, 2007, 2008, 5, 123, 0, 0, 2008, 2009, 3, 334, 167, 0, 2009, 2010, 5, 128, 0, 0, 2010, 333, 1, 0, 0, 0, 2011, 2012, 3, 624, 312, 0, 2012, 335, 1, 0, 0, 0, 2013, 2014, 5, 188, 0, 0, 2014, 2015, 5, 129, 0, 0, 2015, 2016, 5, 63, 0, 0, 2016, 2017, 5, 123, 0, 0, 2017, 2018, 3, 624, 312, 0, 2018, 2019, 5, 128, 0, 0, 2019, 2020, 3, 338, 169, 0, 2020, 2044, 1, 0, 0, 0, 2021, 2022, 5, 63, 0, 0, 2022, 2023, 5, 123, 0, 0, 2023, 2024, 3, 624, 312, 0, 2024, 2025, 5, 128, 0, 0, 2025, 2026, 3, 338, 169, 0, 2026, 2044, 1, 0, 0, 0, 2027, 2028, 5, 188, 0, 0, 2028, 2029, 5, 129, 0, 0, 2029, 2030, 5, 64, 0, 0, 2030, 2031, 5, 65, 0, 0, 2031, 2032, 5, 123, 0, 0, 2032, 2033, 3, 624, 312, 0, 2033, 2034, 5, 128, 0, 0, 2034, 2035, 3, 338, 169, 0, 2035, 2044, 1, 0, 0, 0, 2036, 2037, 5, 64, 0, 0, 2037, 2038, 5, 65, 0, 0, 2038, 2039, 5, 123, 0, 0, 2039, 2040, 3, 624, 312, 0, 2040, 2041, 5, 128, 0, 0, 2041, 2042, 3, 338, 169, 0, 2042, 2044, 1, 0, 0, 0, 2043, 2013, 1, 0, 0, 0, 2043, 2021, 1, 0, 0, 0, 2043, 2027, 1, 0, 0, 0, 2043, 2036, 1, 0, 0, 0, 2044, 337, 1, 0, 0, 0, 2045, 2046, 3, 342, 171, 0, 2046, 2047, 3, 340, 170, 0, 2047, 2050, 1, 0, 0, 0, 2048, 2050, 3, 340, 170, 0, 2049, 2045, 1, 0, 0, 0, 2049, 2048, 1, 0, 0, 0, 2050, 339, 1, 0, 0, 0, 2051, 2053, 5, 62, 0, 0, 2052, 2054, 5, 188, 0, 0, 2053, 2052, 1, 0, 0, 0, 2053, 2054, 1, 0, 0, 0, 2054, 2061, 1, 0, 0, 0, 2055, 2056, 5, 12, 0, 0, 2056, 2058, 5, 64, 0, 0, 2057, 2059, 5, 188, 0, 0, 2058, 2057, 1, 0, 0, 0, 2058, 2059, 1, 0, 0, 0, 2059, 2061, 1, 0, 0, 0, 2060, 2051, 1, 0, 0, 0, 2060, 2055, 1, 0, 0, 0, 2061, 341, 1, 0, 0, 0, 2062, 2063, 6, 171, -1, 0, 2063, 2064, 3, 346, 173, 0, 2064, 2069, 1, 0, 0, 0, 2065, 2066, 10, 1, 0, 0, 2066, 2068, 3, 344, 172, 0, 2067, 2065, 1, 0, 0, 0, 2068, 2071, 1, 0, 0, 0, 2069, 2067, 1, 0, 0, 0, 2069, 2070, 1, 0, 0, 0, 2070, 343, 1, 0, 0, 0, 2071, 2069, 1, 0, 0, 0, 2072, 2075, 3, 346, 173, 0, 2073, 2075, 3, 388, 194, 0, 2074, 2072, 1, 0, 0, 0, 2074, 2073, 1, 0, 0, 0, 2075, 345, 1, 0, 0, 0, 2076, 2077, 5, 65, 0, 0, 2077, 2083, 3, 348, 174, 0, 2078, 2079, 5, 65, 0, 0, 2079, 2080, 3, 348, 174, 0, 2080, 2081, 5, 188, 0, 0, 2081, 2083, 1, 0, 0, 0, 2082, 2076, 1, 0, 0, 0, 2082, 2078, 1, 0, 0, 0, 2083, 347, 1, 0, 0, 0, 2084, 2085, 5, 123, 0, 0, 2085, 2086, 3, 350, 175, 0, 2086, 2087, 5, 128, 0, 0, 2087, 2090, 1, 0, 0, 0, 2088, 2090, 5, 66, 0, 0, 2089, 2084, 1, 0, 0, 0, 2089, 2088, 1, 0, 0, 0, 2090, 349, 1, 0, 0, 0, 2091, 2093, 3, 352, 176, 0, 2092, 2091, 1, 0, 0, 0, 2093, 2094, 1, 0, 0, 0, 2094, 2092, 1, 0, 0, 0, 2094, 2095, 1, 0, 0, 0, 2095, 351, 1, 0, 0, 0, 2096, 2107, 3, 624, 312, 0, 2097, 2098, 3, 624, 312, 0, 2098, 2099, 5, 129, 0, 0, 2099, 2107, 1, 0, 0, 0, 2100, 2101, 5, 129, 0, 0, 2101, 2107, 3, 624, 312, 0, 2102, 2103, 3, 624, 312, 0, 2103, 2104, 5, 129, 0, 0, 2104, 2105, 3, 624, 312, 0, 2105, 2107, 1, 0, 0, 0, 2106, 2096, 1, 0, 0, 0, 2106, 2097, 1, 0, 0, 0, 2106, 2100, 1, 0, 0, 0, 2106, 2102, 1, 0, 0, 0, 2107, 353, 1, 0, 0, 0, 2108, 2109, 3, 356, 178, 0, 2109, 2113, 3, 358, 179, 0, 2110, 2112, 3, 360, 180, 0, 2111, 2110, 1, 0, 0, 0, 2112, 2115, 1, 0, 0, 0, 2113, 2111, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2117, 1, 0, 0, 0, 2115, 2113, 1, 0, 0, 0, 2116, 2118, 3, 364, 182, 0, 2117, 2116, 1, 0, 0, 0, 2117, 2118, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2120, 3, 368, 184, 0, 2120, 355, 1, 0, 0, 0, 2121, 2122, 5, 51, 0, 0, 2122, 2123, 5, 123, 0, 0, 2123, 2124, 3, 624, 312, 0, 2124, 2125, 5, 128, 0, 0, 2125, 2126, 5, 52, 0, 0, 2126, 357, 1, 0, 0, 0, 2127, 2129, 3, 388, 194, 0, 2128, 2127, 1, 0, 0, 0, 2129, 2132, 1, 0, 0, 0, 2130, 2128, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 359, 1, 0, 0, 0, 2132, 2130, 1, 0, 0, 0, 2133, 2134, 3, 362, 181, 0, 2134, 2135, 3, 358, 179, 0, 2135, 361, 1, 0, 0, 0, 2136, 2137, 5, 56, 0, 0, 2137, 2138, 5, 123, 0, 0, 2138, 2139, 3, 624, 312, 0, 2139, 2140, 5, 128, 0, 0, 2140, 2141, 5, 52, 0, 0, 2141, 2150, 1, 0, 0, 0, 2142, 2143, 5, 53, 0, 0, 2143, 2144, 5, 51, 0, 0, 2144, 2145, 5, 123, 0, 0, 2145, 2146, 3, 624, 312, 0, 2146, 2147, 5, 128, 0, 0, 2147, 2148, 5, 52, 0, 0, 2148, 2150, 1, 0, 0, 0, 2149, 2136, 1, 0, 0, 0, 2149, 2142, 1, 0, 0, 0, 2150, 363, 1, 0, 0, 0, 2151, 2152, 3, 366, 183, 0, 2152, 2153, 3, 358, 179, 0, 2153, 365, 1, 0, 0, 0, 2154, 2155, 5, 53, 0, 0, 2155, 367, 1, 0, 0, 0, 2156, 2160, 5, 54, 0, 0, 2157, 2158, 5, 12, 0, 0, 2158, 2160, 5, 51, 0, 0, 2159, 2156, 1, 0, 0, 0, 2159, 2157, 1, 0, 0, 0, 2160, 369, 1, 0, 0, 0, 2161, 2164, 3, 380, 190, 0, 2162, 2164, 3, 372, 186, 0, 2163, 2161, 1, 0, 0, 0, 2163, 2162, 1, 0, 0, 0, 2164, 371, 1, 0, 0, 0, 2165, 2167, 3, 378, 189, 0, 2166, 2165, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2170, 5, 57, 0, 0, 2169, 2171, 3, 428, 214, 0, 2170, 2169, 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2175, 1, 0, 0, 0, 2172, 2174, 3, 388, 194, 0, 2173, 2172, 1, 0, 0, 0, 2174, 2177, 1, 0, 0, 0, 2175, 2173, 1, 0, 0, 0, 2175, 2176, 1, 0, 0, 0, 2176, 2178, 1, 0, 0, 0, 2177, 2175, 1, 0, 0, 0, 2178, 2179, 3, 374, 187, 0, 2179, 373, 1, 0, 0, 0, 2180, 2182, 5, 70, 0, 0, 2181, 2183, 3, 376, 188, 0, 2182, 2181, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 2190, 1, 0, 0, 0, 2184, 2185, 5, 12, 0, 0, 2185, 2187, 5, 57, 0, 0, 2186, 2188, 3, 376, 188, 0, 2187, 2186, 1, 0, 0, 0, 2187, 2188, 1, 0, 0, 0, 2188, 2190, 1, 0, 0, 0, 2189, 2180, 1, 0, 0, 0, 2189, 2184, 1, 0, 0, 0, 2190, 375, 1, 0, 0, 0, 2191, 2192, 3, 300, 150, 0, 2192, 377, 1, 0, 0, 0, 2193, 2194, 5, 188, 0, 0, 2194, 2195, 5, 129, 0, 0, 2195, 379, 1, 0, 0, 0, 2196, 2197, 5, 57, 0, 0, 2197, 2198, 3, 382, 191, 0, 2198, 2202, 3, 428, 214, 0, 2199, 2201, 3, 388, 194, 0, 2200, 2199, 1, 0, 0, 0, 2201, 2204, 1, 0, 0, 0, 2202, 2200, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2205, 1, 0, 0, 0, 2204, 2202, 1, 0, 0, 0, 2205, 2206, 3, 384, 192, 0, 2206, 2207, 3, 386, 193, 0, 2207, 381, 1, 0, 0, 0, 2208, 2209, 5, 186, 0, 0, 2209, 383, 1, 0, 0, 0, 2210, 2211, 5, 186, 0, 0, 2211, 385, 1, 0, 0, 0, 2212, 2213, 3, 436, 218, 0, 2213, 387, 1, 0, 0, 0, 2214, 2220, 3, 320, 160, 0, 2215, 2220, 3, 48, 24, 0, 2216, 2220, 3, 392, 196, 0, 2217, 2220, 3, 62, 31, 0, 2218, 2220, 3, 390, 195, 0, 2219, 2214, 1, 0, 0, 0, 2219, 2215, 1, 0, 0, 0, 2219, 2216, 1, 0, 0, 0, 2219, 2217, 1, 0, 0, 0, 2219, 2218, 1, 0, 0, 0, 2220, 389, 1, 0, 0, 0, 2221, 2222, 5, 57, 0, 0, 2222, 2223, 3, 572, 286, 0, 2223, 2224, 3, 428, 214, 0, 2224, 391, 1, 0, 0, 0, 2225, 2226, 5, 48, 0, 0, 2226, 2233, 3, 394, 197, 0, 2227, 2229, 5, 122, 0, 0, 2228, 2227, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2232, 3, 394, 197, 0, 2231, 2228, 1, 0, 0, 0, 2232, 2235, 1, 0, 0, 0, 2233, 2231, 1, 0, 0, 0, 2233, 2234, 1, 0, 0, 0, 2234, 393, 1, 0, 0, 0, 2235, 2233, 1, 0, 0, 0, 2236, 2237, 3, 396, 198, 0, 2237, 2238, 3, 398, 199, 0, 2238, 395, 1, 0, 0, 0, 2239, 2244, 3, 402, 201, 0, 2240, 2241, 5, 122, 0, 0, 2241, 2243, 3, 402, 201, 0, 2242, 2240, 1, 0, 0, 0, 2243, 2246, 1, 0, 0, 0, 2244, 2242, 1, 0, 0, 0, 2244, 2245, 1, 0, 0, 0, 2245, 2247, 1, 0, 0, 0, 2246, 2244, 1, 0, 0, 0, 2247, 2248, 5, 133, 0, 0, 2248, 397, 1, 0, 0, 0, 2249, 2254, 3, 400, 200, 0, 2250, 2251, 5, 122, 0, 0, 2251, 2253, 3, 400, 200, 0, 2252, 2250, 1, 0, 0, 0, 2253, 2256, 1, 0, 0, 0, 2254, 2252, 1, 0, 0, 0, 2254, 2255, 1, 0, 0, 0, 2255, 2257, 1, 0, 0, 0, 2256, 2254, 1, 0, 0, 0, 2257, 2258, 5, 133, 0, 0, 2258, 399, 1, 0, 0, 0, 2259, 2269, 3, 284, 142, 0, 2260, 2261, 3, 284, 142, 0, 2261, 2262, 5, 192, 0, 0, 2262, 2263, 3, 284, 142, 0, 2263, 2269, 1, 0, 0, 0, 2264, 2265, 3, 292, 146, 0, 2265, 2266, 5, 192, 0, 0, 2266, 2267, 3, 284, 142, 0, 2267, 2269, 1, 0, 0, 0, 2268, 2259, 1, 0, 0, 0, 2268, 2260, 1, 0, 0, 0, 2268, 2264, 1, 0, 0, 0, 2269, 401, 1, 0, 0, 0, 2270, 2273, 3, 404, 202, 0, 2271, 2273, 3, 414, 207, 0, 2272, 2270, 1, 0, 0, 0, 2272, 2271, 1, 0, 0, 0, 2273, 403, 1, 0, 0, 0, 2274, 2276, 3, 432, 216, 0, 2275, 2277, 3, 406, 203, 0, 2276, 2275, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2279, 1, 0, 0, 0, 2278, 2280, 3, 412, 206, 0, 2279, 2278, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 405, 1, 0, 0, 0, 2281, 2282, 5, 123, 0, 0, 2282, 2283, 3, 408, 204, 0, 2283, 2284, 5, 128, 0, 0, 2284, 407, 1, 0, 0, 0, 2285, 2287, 3, 410, 205, 0, 2286, 2285, 1, 0, 0, 0, 2287, 2288, 1, 0, 0, 0, 2288, 2286, 1, 0, 0, 0, 2288, 2289, 1, 0, 0, 0, 2289, 409, 1, 0, 0, 0, 2290, 2291, 3, 624, 312, 0, 2291, 411, 1, 0, 0, 0, 2292, 2294, 5, 123, 0, 0, 2293, 2295, 3, 624, 312, 0, 2294, 2293, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2296, 1, 0, 0, 0, 2296, 2297, 3, 680, 340, 0, 2297, 2298, 5, 128, 0, 0, 2298, 413, 1, 0, 0, 0, 2299, 2300, 5, 123, 0, 0, 2300, 2301, 3, 416, 208, 0, 2301, 2302, 5, 122, 0, 0, 2302, 2303, 3, 426, 213, 0, 2303, 2304, 5, 130, 0, 0, 2304, 2305, 3, 624, 312, 0, 2305, 2306, 5, 122, 0, 0, 2306, 2307, 3, 624, 312, 0, 2307, 2308, 5, 128, 0, 0, 2308, 2322, 1, 0, 0, 0, 2309, 2310, 5, 123, 0, 0, 2310, 2311, 3, 416, 208, 0, 2311, 2312, 5, 122, 0, 0, 2312, 2313, 3, 426, 213, 0, 2313, 2314, 5, 130, 0, 0, 2314, 2315, 3, 624, 312, 0, 2315, 2316, 5, 122, 0, 0, 2316, 2317, 3, 624, 312, 0, 2317, 2318, 5, 122, 0, 0, 2318, 2319, 3, 624, 312, 0, 2319, 2320, 5, 128, 0, 0, 2320, 2322, 1, 0, 0, 0, 2321, 2299, 1, 0, 0, 0, 2321, 2309, 1, 0, 0, 0, 2322, 415, 1, 0, 0, 0, 2323, 2325, 3, 418, 209, 0, 2324, 2323, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2324, 1, 0, 0, 0, 2326, 2327, 1, 0, 0, 0, 2327, 417, 1, 0, 0, 0, 2328, 2332, 3, 424, 212, 0, 2329, 2332, 3, 414, 207, 0, 2330, 2332, 3, 420, 210, 0, 2331, 2328, 1, 0, 0, 0, 2331, 2329, 1, 0, 0, 0, 2331, 2330, 1, 0, 0, 0, 2332, 419, 1, 0, 0, 0, 2333, 2334, 6, 210, -1, 0, 2334, 2335, 3, 432, 216, 0, 2335, 2336, 3, 422, 211, 0, 2336, 2341, 1, 0, 0, 0, 2337, 2338, 10, 1, 0, 0, 2338, 2340, 3, 422, 211, 0, 2339, 2337, 1, 0, 0, 0, 2340, 2343, 1, 0, 0, 0, 2341, 2339, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 421, 1, 0, 0, 0, 2343, 2341, 1, 0, 0, 0, 2344, 2345, 5, 123, 0, 0, 2345, 2346, 3, 676, 338, 0, 2346, 2347, 5, 128, 0, 0, 2347, 2348, 5, 124, 0, 0, 2348, 2349, 5, 188, 0, 0, 2349, 2353, 1, 0, 0, 0, 2350, 2351, 5, 124, 0, 0, 2351, 2353, 5, 188, 0, 0, 2352, 2344, 1, 0, 0, 0, 2352, 2350, 1, 0, 0, 0, 2353, 423, 1, 0, 0, 0, 2354, 2355, 3, 432, 216, 0, 2355, 2356, 5, 123, 0, 0, 2356, 2357, 3, 676, 338, 0, 2357, 2358, 5, 128, 0, 0, 2358, 2365, 1, 0, 0, 0, 2359, 2360, 3, 420, 210, 0, 2360, 2361, 5, 123, 0, 0, 2361, 2362, 3, 676, 338, 0, 2362, 2363, 5, 128, 0, 0, 2363, 2365, 1, 0, 0, 0, 2364, 2354, 1, 0, 0, 0, 2364, 2359, 1, 0, 0, 0, 2365, 425, 1, 0, 0, 0, 2366, 2367, 5, 188, 0, 0, 2367, 427, 1, 0, 0, 0, 2368, 2370, 5, 122, 0, 0, 2369, 2368, 1, 0, 0, 0, 2369, 2370, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 3, 430, 215, 0, 2372, 429, 1, 0, 0, 0, 2373, 2374, 3, 432, 216, 0, 2374, 2375, 5, 130, 0, 0, 2375, 2376, 3, 624, 312, 0, 2376, 2377, 5, 122, 0, 0, 2377, 2379, 3, 624, 312, 0, 2378, 2380, 3, 434, 217, 0, 2379, 2378, 1, 0, 0, 0, 2379, 2380, 1, 0, 0, 0, 2380, 2387, 1, 0, 0, 0, 2381, 2382, 5, 125, 0, 0, 2382, 2383, 5, 123, 0, 0, 2383, 2384, 3, 624, 312, 0, 2384, 2385, 5, 128, 0, 0, 2385, 2387, 1, 0, 0, 0, 2386, 2373, 1, 0, 0, 0, 2386, 2381, 1, 0, 0, 0, 2387, 431, 1, 0, 0, 0, 2388, 2389, 5, 188, 0, 0, 2389, 433, 1, 0, 0, 0, 2390, 2391, 5, 122, 0, 0, 2391, 2392, 3, 624, 312, 0, 2392, 435, 1, 0, 0, 0, 2393, 2423, 3, 570, 285, 0, 2394, 2423, 3, 576, 288, 0, 2395, 2423, 3, 584, 292, 0, 2396, 2423, 3, 586, 293, 0, 2397, 2423, 3, 562, 281, 0, 2398, 2423, 3, 548, 274, 0, 2399, 2423, 3, 546, 273, 0, 2400, 2423, 3, 544, 272, 0, 2401, 2423, 3, 538, 269, 0, 2402, 2423, 3, 540, 270, 0, 2403, 2423, 3, 534, 267, 0, 2404, 2423, 3, 694, 347, 0, 2405, 2423, 3, 528, 264, 0, 2406, 2423, 3, 522, 261, 0, 2407, 2423, 3, 520, 260, 0, 2408, 2423, 3, 510, 255, 0, 2409, 2423, 3, 488, 244, 0, 2410, 2423, 3, 484, 242, 0, 2411, 2423, 3, 486, 243, 0, 2412, 2423, 3, 476, 238, 0, 2413, 2423, 3, 470, 235, 0, 2414, 2423, 3, 472, 236, 0, 2415, 2423, 3, 460, 230, 0, 2416, 2423, 3, 458, 229, 0, 2417, 2423, 3, 454, 227, 0, 2418, 2423, 3, 452, 226, 0, 2419, 2423, 3, 444, 222, 0, 2420, 2423, 3, 440, 220, 0, 2421, 2423, 3, 438, 219, 0, 2422, 2393, 1, 0, 0, 0, 2422, 2394, 1, 0, 0, 0, 2422, 2395, 1, 0, 0, 0, 2422, 2396, 1, 0, 0, 0, 2422, 2397, 1, 0, 0, 0, 2422, 2398, 1, 0, 0, 0, 2422, 2399, 1, 0, 0, 0, 2422, 2400, 1, 0, 0, 0, 2422, 2401, 1, 0, 0, 0, 2422, 2402, 1, 0, 0, 0, 2422, 2403, 1, 0, 0, 0, 2422, 2404, 1, 0, 0, 0, 2422, 2405, 1, 0, 0, 0, 2422, 2406, 1, 0, 0, 0, 2422, 2407, 1, 0, 0, 0, 2422, 2408, 1, 0, 0, 0, 2422, 2409, 1, 0, 0, 0, 2422, 2410, 1, 0, 0, 0, 2422, 2411, 1, 0, 0, 0, 2422, 2412, 1, 0, 0, 0, 2422, 2413, 1, 0, 0, 0, 2422, 2414, 1, 0, 0, 0, 2422, 2415, 1, 0, 0, 0, 2422, 2416, 1, 0, 0, 0, 2422, 2417, 1, 0, 0, 0, 2422, 2418, 1, 0, 0, 0, 2422, 2419, 1, 0, 0, 0, 2422, 2420, 1, 0, 0, 0, 2422, 2421, 1, 0, 0, 0, 2423, 437, 1, 0, 0, 0, 2424, 2425, 5, 61, 0, 0, 2425, 2426, 5, 123, 0, 0, 2426, 2427, 3, 334, 167, 0, 2427, 2428, 5, 128, 0, 0, 2428, 2429, 3, 576, 288, 0, 2429, 439, 1, 0, 0, 0, 2430, 2431, 5, 188, 0, 0, 2431, 2432, 5, 25, 0, 0, 2432, 2443, 3, 442, 221, 0, 2433, 2435, 5, 188, 0, 0, 2434, 2436, 3, 578, 289, 0, 2435, 2434, 1, 0, 0, 0, 2435, 2436, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 2438, 5, 124, 0, 0, 2438, 2439, 3, 670, 335, 0, 2439, 2440, 5, 25, 0, 0, 2440, 2441, 3, 442, 221, 0, 2441, 2443, 1, 0, 0, 0, 2442, 2430, 1, 0, 0, 0, 2442, 2433, 1, 0, 0, 0, 2443, 441, 1, 0, 0, 0, 2444, 2445, 3, 624, 312, 0, 2445, 443, 1, 0, 0, 0, 2446, 2447, 5, 180, 0, 0, 2447, 2448, 5, 123, 0, 0, 2448, 2449, 3, 446, 223, 0, 2449, 2450, 5, 128, 0, 0, 2450, 445, 1, 0, 0, 0, 2451, 2456, 3, 448, 224, 0, 2452, 2453, 5, 122, 0, 0, 2453, 2455, 3, 448, 224, 0, 2454, 2452, 1, 0, 0, 0, 2455, 2458, 1, 0, 0, 0, 2456, 2454, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 447, 1, 0, 0, 0, 2458, 2456, 1, 0, 0, 0, 2459, 2462, 5, 188, 0, 0, 2460, 2462, 3, 450, 225, 0, 2461, 2459, 1, 0, 0, 0, 2461, 2460, 1, 0, 0, 0, 2462, 449, 1, 0, 0, 0, 2463, 2464, 6, 225, -1, 0, 2464, 2466, 5, 188, 0, 0, 2465, 2467, 3, 578, 289, 0, 2466, 2465, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 2468, 1, 0, 0, 0, 2468, 2469, 5, 124, 0, 0, 2469, 2470, 5, 188, 0, 0, 2470, 2475, 1, 0, 0, 0, 2471, 2472, 10, 1, 0, 0, 2472, 2474, 3, 422, 211, 0, 2473, 2471, 1, 0, 0, 0, 2474, 2477, 1, 0, 0, 0, 2475, 2473, 1, 0, 0, 0, 2475, 2476, 1, 0, 0, 0, 2476, 451, 1, 0, 0, 0, 2477, 2475, 1, 0, 0, 0, 2478, 2480, 5, 189, 0, 0, 2479, 2481, 3, 376, 188, 0, 2480, 2479, 1, 0, 0, 0, 2480, 2481, 1, 0, 0, 0, 2481, 453, 1, 0, 0, 0, 2482, 2483, 5, 179, 0, 0, 2483, 2484, 5, 123, 0, 0, 2484, 2485, 3, 456, 228, 0, 2485, 2486, 5, 122, 0, 0, 2486, 2487, 5, 127, 0, 0, 2487, 2488, 5, 130, 0, 0, 2488, 2489, 3, 404, 202, 0, 2489, 2490, 5, 128, 0, 0, 2490, 2497, 1, 0, 0, 0, 2491, 2492, 5, 179, 0, 0, 2492, 2493, 5, 123, 0, 0, 2493, 2494, 3, 456, 228, 0, 2494, 2495, 5, 128, 0, 0, 2495, 2497, 1, 0, 0, 0, 2496, 2482, 1, 0, 0, 0, 2496, 2491, 1, 0, 0, 0, 2497, 455, 1, 0, 0, 0, 2498, 2503, 3, 466, 233, 0, 2499, 2500, 5, 122, 0, 0, 2500, 2502, 3, 466, 233, 0, 2501, 2499, 1, 0, 0, 0, 2502, 2505, 1, 0, 0, 0, 2503, 2501, 1, 0, 0, 0, 2503, 2504, 1, 0, 0, 0, 2504, 457, 1, 0, 0, 0, 2505, 2503, 1, 0, 0, 0, 2506, 2508, 5, 181, 0, 0, 2507, 2509, 3, 376, 188, 0, 2508, 2507, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 459, 1, 0, 0, 0, 2510, 2511, 5, 126, 0, 0, 2511, 2512, 5, 123, 0, 0, 2512, 2513, 3, 462, 231, 0, 2513, 2514, 5, 122, 0, 0, 2514, 2515, 5, 127, 0, 0, 2515, 2516, 5, 130, 0, 0, 2516, 2517, 3, 404, 202, 0, 2517, 2518, 5, 128, 0, 0, 2518, 2525, 1, 0, 0, 0, 2519, 2520, 5, 126, 0, 0, 2520, 2521, 5, 123, 0, 0, 2521, 2522, 3, 462, 231, 0, 2522, 2523, 5, 128, 0, 0, 2523, 2525, 1, 0, 0, 0, 2524, 2510, 1, 0, 0, 0, 2524, 2519, 1, 0, 0, 0, 2525, 461, 1, 0, 0, 0, 2526, 2531, 3, 464, 232, 0, 2527, 2528, 5, 122, 0, 0, 2528, 2530, 3, 464, 232, 0, 2529, 2527, 1, 0, 0, 0, 2530, 2533, 1, 0, 0, 0, 2531, 2529, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 463, 1, 0, 0, 0, 2533, 2531, 1, 0, 0, 0, 2534, 2539, 3, 466, 233, 0, 2535, 2536, 3, 466, 233, 0, 2536, 2537, 3, 468, 234, 0, 2537, 2539, 1, 0, 0, 0, 2538, 2534, 1, 0, 0, 0, 2538, 2535, 1, 0, 0, 0, 2539, 465, 1, 0, 0, 0, 2540, 2541, 6, 233, -1, 0, 2541, 2542, 3, 432, 216, 0, 2542, 2547, 1, 0, 0, 0, 2543, 2544, 10, 1, 0, 0, 2544, 2546, 3, 422, 211, 0, 2545, 2543, 1, 0, 0, 0, 2546, 2549, 1, 0, 0, 0, 2547, 2545, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 467, 1, 0, 0, 0, 2549, 2547, 1, 0, 0, 0, 2550, 2551, 5, 123, 0, 0, 2551, 2552, 3, 676, 338, 0, 2552, 2553, 5, 128, 0, 0, 2553, 469, 1, 0, 0, 0, 2554, 2556, 5, 68, 0, 0, 2555, 2557, 7, 6, 0, 0, 2556, 2555, 1, 0, 0, 0, 2556, 2557, 1, 0, 0, 0, 2557, 471, 1, 0, 0, 0, 2558, 2559, 5, 72, 0, 0, 2559, 2560, 5, 123, 0, 0, 2560, 2561, 3, 474, 237, 0, 2561, 2563, 5, 128, 0, 0, 2562, 2564, 3, 512, 256, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564, 473, 1, 0, 0, 0, 2565, 2566, 6, 237, -1, 0, 2566, 2567, 3, 588, 294, 0, 2567, 2568, 5, 121, 0, 0, 2568, 2569, 5, 122, 0, 0, 2569, 2580, 1, 0, 0, 0, 2570, 2571, 3, 588, 294, 0, 2571, 2572, 5, 122, 0, 0, 2572, 2573, 3, 518, 259, 0, 2573, 2580, 1, 0, 0, 0, 2574, 2575, 3, 588, 294, 0, 2575, 2576, 5, 122, 0, 0, 2576, 2577, 3, 508, 254, 0, 2577, 2580, 1, 0, 0, 0, 2578, 2580, 3, 508, 254, 0, 2579, 2565, 1, 0, 0, 0, 2579, 2570, 1, 0, 0, 0, 2579, 2574, 1, 0, 0, 0, 2579, 2578, 1, 0, 0, 0, 2580, 2586, 1, 0, 0, 0, 2581, 2582, 10, 1, 0, 0, 2582, 2583, 5, 122, 0, 0, 2583, 2585, 3, 508, 254, 0, 2584, 2581, 1, 0, 0, 0, 2585, 2588, 1, 0, 0, 0, 2586, 2584, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 475, 1, 0, 0, 0, 2588, 2586, 1, 0, 0, 0, 2589, 2590, 5, 188, 0, 0, 2590, 2591, 3, 478, 239, 0, 2591, 477, 1, 0, 0, 0, 2592, 2594, 5, 123, 0, 0, 2593, 2595, 3, 480, 240, 0, 2594, 2593, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 2597, 5, 128, 0, 0, 2597, 2598, 5, 130, 0, 0, 2598, 2599, 3, 624, 312, 0, 2599, 479, 1, 0, 0, 0, 2600, 2605, 3, 482, 241, 0, 2601, 2602, 5, 122, 0, 0, 2602, 2604, 3, 482, 241, 0, 2603, 2601, 1, 0, 0, 0, 2604, 2607, 1, 0, 0, 0, 2605, 2603, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 481, 1, 0, 0, 0, 2607, 2605, 1, 0, 0, 0, 2608, 2609, 5, 188, 0, 0, 2609, 483, 1, 0, 0, 0, 2610, 2612, 5, 91, 0, 0, 2611, 2613, 3, 624, 312, 0, 2612, 2611, 1, 0, 0, 0, 2612, 2613, 1, 0, 0, 0, 2613, 485, 1, 0, 0, 0, 2614, 2615, 5, 114, 0, 0, 2615, 2622, 3, 588, 294, 0, 2616, 2617, 5, 114, 0, 0, 2617, 2618, 5, 123, 0, 0, 2618, 2619, 3, 590, 295, 0, 2619, 2620, 5, 128, 0, 0, 2620, 2622, 1, 0, 0, 0, 2621, 2614, 1, 0, 0, 0, 2621, 2616, 1, 0, 0, 0, 2622, 487, 1, 0, 0, 0, 2623, 2624, 5, 73, 0, 0, 2624, 2626, 3, 502, 251, 0, 2625, 2627, 3, 496, 248, 0, 2626, 2625, 1, 0, 0, 0, 2626, 2627, 1, 0, 0, 0, 2627, 2634, 1, 0, 0, 0, 2628, 2629, 5, 73, 0, 0, 2629, 2631, 3, 492, 246, 0, 2630, 2632, 3, 490, 245, 0, 2631, 2630, 1, 0, 0, 0, 2631, 2632, 1, 0, 0, 0, 2632, 2634, 1, 0, 0, 0, 2633, 2623, 1, 0, 0, 0, 2633, 2628, 1, 0, 0, 0, 2634, 489, 1, 0, 0, 0, 2635, 2636, 5, 122, 0, 0, 2636, 2637, 3, 496, 248, 0, 2637, 491, 1, 0, 0, 0, 2638, 2656, 3, 572, 286, 0, 2639, 2656, 5, 192, 0, 0, 2640, 2656, 3, 558, 279, 0, 2641, 2642, 3, 558, 279, 0, 2642, 2643, 5, 133, 0, 0, 2643, 2644, 5, 184, 0, 0, 2644, 2645, 5, 133, 0, 0, 2645, 2646, 5, 185, 0, 0, 2646, 2647, 3, 556, 278, 0, 2647, 2656, 1, 0, 0, 0, 2648, 2649, 3, 494, 247, 0, 2649, 2650, 5, 133, 0, 0, 2650, 2651, 5, 184, 0, 0, 2651, 2652, 5, 133, 0, 0, 2652, 2653, 5, 185, 0, 0, 2653, 2654, 3, 556, 278, 0, 2654, 2656, 1, 0, 0, 0, 2655, 2638, 1, 0, 0, 0, 2655, 2639, 1, 0, 0, 0, 2655, 2640, 1, 0, 0, 0, 2655, 2641, 1, 0, 0, 0, 2655, 2648, 1, 0, 0, 0, 2656, 493, 1, 0, 0, 0, 2657, 2658, 5, 123, 0, 0, 2658, 2659, 3, 598, 299, 0, 2659, 2660, 5, 128, 0, 0, 2660, 495, 1, 0, 0, 0, 2661, 2666, 3, 498, 249, 0, 2662, 2663, 5, 122, 0, 0, 2663, 2665, 3, 498, 249, 0, 2664, 2662, 1, 0, 0, 0, 2665, 2668, 1, 0, 0, 0, 2666, 2664, 1, 0, 0, 0, 2666, 2667, 1, 0, 0, 0, 2667, 497, 1, 0, 0, 0, 2668, 2666, 1, 0, 0, 0, 2669, 2672, 3, 670, 335, 0, 2670, 2672, 3, 500, 250, 0, 2671, 2669, 1, 0, 0, 0, 2671, 2670, 1, 0, 0, 0, 2672, 499, 1, 0, 0, 0, 2673, 2674, 5, 123, 0, 0, 2674, 2675, 3, 496, 248, 0, 2675, 2676, 5, 122, 0, 0, 2676, 2677, 3, 426, 213, 0, 2677, 2678, 5, 130, 0, 0, 2678, 2679, 3, 624, 312, 0, 2679, 2680, 5, 122, 0, 0, 2680, 2682, 3, 624, 312, 0, 2681, 2683, 3, 434, 217, 0, 2682, 2681, 1, 0, 0, 0, 2682, 2683, 1, 0, 0, 0, 2683, 2684, 1, 0, 0, 0, 2684, 2685, 5, 128, 0, 0, 2685, 501, 1, 0, 0, 0, 2686, 2692, 3, 504, 252, 0, 2687, 2688, 5, 123, 0, 0, 2688, 2689, 3, 506, 253, 0, 2689, 2690, 5, 128, 0, 0, 2690, 2692, 1, 0, 0, 0, 2691, 2686, 1, 0, 0, 0, 2691, 2687, 1, 0, 0, 0, 2692, 503, 1, 0, 0, 0, 2693, 2694, 5, 123, 0, 0, 2694, 2695, 3, 598, 299, 0, 2695, 2696, 5, 128, 0, 0, 2696, 2701, 1, 0, 0, 0, 2697, 2698, 5, 123, 0, 0, 2698, 2699, 5, 192, 0, 0, 2699, 2701, 5, 128, 0, 0, 2700, 2693, 1, 0, 0, 0, 2700, 2697, 1, 0, 0, 0, 2701, 505, 1, 0, 0, 0, 2702, 2703, 6, 253, -1, 0, 2703, 2704, 3, 588, 294, 0, 2704, 2705, 5, 122, 0, 0, 2705, 2706, 3, 508, 254, 0, 2706, 2713, 1, 0, 0, 0, 2707, 2708, 3, 588, 294, 0, 2708, 2709, 5, 122, 0, 0, 2709, 2710, 3, 518, 259, 0, 2710, 2713, 1, 0, 0, 0, 2711, 2713, 3, 508, 254, 0, 2712, 2702, 1, 0, 0, 0, 2712, 2707, 1, 0, 0, 0, 2712, 2711, 1, 0, 0, 0, 2713, 2719, 1, 0, 0, 0, 2714, 2715, 10, 1, 0, 0, 2715, 2716, 5, 122, 0, 0, 2716, 2718, 3, 508, 254, 0, 2717, 2714, 1, 0, 0, 0, 2718, 2721, 1, 0, 0, 0, 2719, 2717, 1, 0, 0, 0, 2719, 2720, 1, 0, 0, 0, 2720, 507, 1, 0, 0, 0, 2721, 2719, 1, 0, 0, 0, 2722, 2723, 5, 76, 0, 0, 2723, 2724, 5, 130, 0, 0, 2724, 2753, 3, 518, 259, 0, 2725, 2726, 5, 77, 0, 0, 2726, 2727, 5, 130, 0, 0, 2727, 2753, 3, 588, 294, 0, 2728, 2729, 5, 69, 0, 0, 2729, 2730, 5, 130, 0, 0, 2730, 2753, 3, 624, 312, 0, 2731, 2732, 5, 12, 0, 0, 2732, 2733, 5, 130, 0, 0, 2733, 2753, 3, 572, 286, 0, 2734, 2735, 5, 83, 0, 0, 2735, 2736, 5, 130, 0, 0, 2736, 2753, 3, 572, 286, 0, 2737, 2738, 5, 87, 0, 0, 2738, 2739, 5, 130, 0, 0, 2739, 2753, 3, 596, 298, 0, 2740, 2741, 5, 86, 0, 0, 2741, 2742, 5, 130, 0, 0, 2742, 2753, 3, 96, 48, 0, 2743, 2744, 5, 85, 0, 0, 2744, 2745, 5, 130, 0, 0, 2745, 2753, 3, 554, 277, 0, 2746, 2747, 5, 84, 0, 0, 2747, 2748, 5, 130, 0, 0, 2748, 2753, 3, 404, 202, 0, 2749, 2750, 5, 142, 0, 0, 2750, 2751, 5, 130, 0, 0, 2751, 2753, 3, 572, 286, 0, 2752, 2722, 1, 0, 0, 0, 2752, 2725, 1, 0, 0, 0, 2752, 2728, 1, 0, 0, 0, 2752, 2731, 1, 0, 0, 0, 2752, 2734, 1, 0, 0, 0, 2752, 2737, 1, 0, 0, 0, 2752, 2740, 1, 0, 0, 0, 2752, 2743, 1, 0, 0, 0, 2752, 2746, 1, 0, 0, 0, 2752, 2749, 1, 0, 0, 0, 2753, 509, 1, 0, 0, 0, 2754, 2755, 5, 74, 0, 0, 2755, 2756, 3, 518, 259, 0, 2756, 2757, 5, 122, 0, 0, 2757, 2758, 3, 512, 256, 0, 2758, 2762, 1, 0, 0, 0, 2759, 2760, 5, 74, 0, 0, 2760, 2762, 3, 518, 259, 0, 2761, 2754, 1, 0, 0, 0, 2761, 2759, 1, 0, 0, 0, 2762, 511, 1, 0, 0, 0, 2763, 2766, 3, 624, 312, 0, 2764, 2766, 3, 514, 257, 0, 2765, 2763, 1, 0, 0, 0, 2765, 2764, 1, 0, 0, 0, 2766, 513, 1, 0, 0, 0, 2767, 2768, 6, 257, -1, 0, 2768, 2769, 3, 624, 312, 0, 2769, 2770, 5, 122, 0, 0, 2770, 2771, 3, 624, 312, 0, 2771, 2778, 1, 0, 0, 0, 2772, 2773, 3, 624, 312, 0, 2773, 2774, 5, 122, 0, 0, 2774, 2775, 3, 516, 258, 0, 2775, 2778, 1, 0, 0, 0, 2776, 2778, 3, 516, 258, 0, 2777, 2767, 1, 0, 0, 0, 2777, 2772, 1, 0, 0, 0, 2777, 2776, 1, 0, 0, 0, 2778, 2787, 1, 0, 0, 0, 2779, 2780, 10, 2, 0, 0, 2780, 2781, 5, 122, 0, 0, 2781, 2786, 3, 624, 312, 0, 2782, 2783, 10, 1, 0, 0, 2783, 2784, 5, 122, 0, 0, 2784, 2786, 3, 516, 258, 0, 2785, 2779, 1, 0, 0, 0, 2785, 2782, 1, 0, 0, 0, 2786, 2789, 1, 0, 0, 0, 2787, 2785, 1, 0, 0, 0, 2787, 2788, 1, 0, 0, 0, 2788, 515, 1, 0, 0, 0, 2789, 2787, 1, 0, 0, 0, 2790, 2791, 5, 123, 0, 0, 2791, 2792, 3, 624, 312, 0, 2792, 2793, 5, 122, 0, 0, 2793, 2794, 3, 426, 213, 0, 2794, 2795, 5, 130, 0, 0, 2795, 2796, 3, 624, 312, 0, 2796, 2797, 5, 122, 0, 0, 2797, 2799, 3, 624, 312, 0, 2798, 2800, 3, 434, 217, 0, 2799, 2798, 1, 0, 0, 0, 2799, 2800, 1, 0, 0, 0, 2800, 2801, 1, 0, 0, 0, 2801, 2802, 5, 128, 0, 0, 2802, 2817, 1, 0, 0, 0, 2803, 2804, 5, 123, 0, 0, 2804, 2805, 3, 514, 257, 0, 2805, 2806, 5, 122, 0, 0, 2806, 2807, 3, 426, 213, 0, 2807, 2808, 5, 130, 0, 0, 2808, 2809, 3, 624, 312, 0, 2809, 2810, 5, 122, 0, 0, 2810, 2812, 3, 624, 312, 0, 2811, 2813, 3, 434, 217, 0, 2812, 2811, 1, 0, 0, 0, 2812, 2813, 1, 0, 0, 0, 2813, 2814, 1, 0, 0, 0, 2814, 2815, 5, 128, 0, 0, 2815, 2817, 1, 0, 0, 0, 2816, 2790, 1, 0, 0, 0, 2816, 2803, 1, 0, 0, 0, 2817, 517, 1, 0, 0, 0, 2818, 2822, 3, 572, 286, 0, 2819, 2822, 3, 554, 277, 0, 2820, 2822, 5, 192, 0, 0, 2821, 2818, 1, 0, 0, 0, 2821, 2819, 1, 0, 0, 0, 2821, 2820, 1, 0, 0, 0, 2822, 519, 1, 0, 0, 0, 2823, 2825, 5, 71, 0, 0, 2824, 2826, 7, 6, 0, 0, 2825, 2824, 1, 0, 0, 0, 2825, 2826, 1, 0, 0, 0, 2826, 521, 1, 0, 0, 0, 2827, 2828, 5, 75, 0, 0, 2828, 2829, 5, 123, 0, 0, 2829, 2830, 3, 524, 262, 0, 2830, 2831, 5, 128, 0, 0, 2831, 523, 1, 0, 0, 0, 2832, 2834, 3, 592, 296, 0, 2833, 2832, 1, 0, 0, 0, 2833, 2834, 1, 0, 0, 0, 2834, 2836, 1, 0, 0, 0, 2835, 2837, 3, 526, 263, 0, 2836, 2835, 1, 0, 0, 0, 2836, 2837, 1, 0, 0, 0, 2837, 2842, 1, 0, 0, 0, 2838, 2839, 5, 122, 0, 0, 2839, 2841, 3, 526, 263, 0, 2840, 2838, 1, 0, 0, 0, 2841, 2844, 1, 0, 0, 0, 2842, 2840, 1, 0, 0, 0, 2842, 2843, 1, 0, 0, 0, 2843, 525, 1, 0, 0, 0, 2844, 2842, 1, 0, 0, 0, 2845, 2846, 5, 77, 0, 0, 2846, 2847, 5, 130, 0, 0, 2847, 2885, 3, 588, 294, 0, 2848, 2849, 5, 83, 0, 0, 2849, 2850, 5, 130, 0, 0, 2850, 2885, 3, 572, 286, 0, 2851, 2852, 5, 97, 0, 0, 2852, 2853, 5, 130, 0, 0, 2853, 2885, 3, 554, 277, 0, 2854, 2855, 5, 98, 0, 0, 2855, 2856, 5, 130, 0, 0, 2856, 2885, 3, 554, 277, 0, 2857, 2858, 5, 99, 0, 0, 2858, 2859, 5, 130, 0, 0, 2859, 2885, 3, 554, 277, 0, 2860, 2861, 5, 101, 0, 0, 2861, 2862, 5, 130, 0, 0, 2862, 2885, 3, 554, 277, 0, 2863, 2864, 5, 102, 0, 0, 2864, 2865, 5, 130, 0, 0, 2865, 2885, 3, 624, 312, 0, 2866, 2867, 5, 190, 0, 0, 2867, 2868, 5, 130, 0, 0, 2868, 2885, 3, 554, 277, 0, 2869, 2870, 5, 87, 0, 0, 2870, 2871, 5, 130, 0, 0, 2871, 2885, 3, 596, 298, 0, 2872, 2873, 5, 100, 0, 0, 2873, 2874, 5, 130, 0, 0, 2874, 2885, 3, 554, 277, 0, 2875, 2876, 5, 79, 0, 0, 2876, 2877, 5, 130, 0, 0, 2877, 2885, 3, 554, 277, 0, 2878, 2879, 5, 80, 0, 0, 2879, 2880, 5, 130, 0, 0, 2880, 2885, 3, 554, 277, 0, 2881, 2882, 5, 78, 0, 0, 2882, 2883, 5, 130, 0, 0, 2883, 2885, 3, 554, 277, 0, 2884, 2845, 1, 0, 0, 0, 2884, 2848, 1, 0, 0, 0, 2884, 2851, 1, 0, 0, 0, 2884, 2854, 1, 0, 0, 0, 2884, 2857, 1, 0, 0, 0, 2884, 2860, 1, 0, 0, 0, 2884, 2863, 1, 0, 0, 0, 2884, 2866, 1, 0, 0, 0, 2884, 2869, 1, 0, 0, 0, 2884, 2872, 1, 0, 0, 0, 2884, 2875, 1, 0, 0, 0, 2884, 2878, 1, 0, 0, 0, 2884, 2881, 1, 0, 0, 0, 2885, 527, 1, 0, 0, 0, 2886, 2887, 5, 111, 0, 0, 2887, 2888, 5, 123, 0, 0, 2888, 2889, 3, 530, 265, 0, 2889, 2890, 5, 128, 0, 0, 2890, 2900, 1, 0, 0, 0, 2891, 2892, 5, 111, 0, 0, 2892, 2893, 5, 123, 0, 0, 2893, 2894, 5, 81, 0, 0, 2894, 2895, 5, 130, 0, 0, 2895, 2896, 3, 596, 298, 0, 2896, 2897, 5, 128, 0, 0, 2897, 2898, 3, 512, 256, 0, 2898, 2900, 1, 0, 0, 0, 2899, 2886, 1, 0, 0, 0, 2899, 2891, 1, 0, 0, 0, 2900, 529, 1, 0, 0, 0, 2901, 2903, 3, 588, 294, 0, 2902, 2901, 1, 0, 0, 0, 2902, 2903, 1, 0, 0, 0, 2903, 2905, 1, 0, 0, 0, 2904, 2906, 3, 532, 266, 0, 2905, 2904, 1, 0, 0, 0, 2905, 2906, 1, 0, 0, 0, 2906, 2911, 1, 0, 0, 0, 2907, 2908, 5, 122, 0, 0, 2908, 2910, 3, 532, 266, 0, 2909, 2907, 1, 0, 0, 0, 2910, 2913, 1, 0, 0, 0, 2911, 2909, 1, 0, 0, 0, 2911, 2912, 1, 0, 0, 0, 2912, 531, 1, 0, 0, 0, 2913, 2911, 1, 0, 0, 0, 2914, 2915, 5, 77, 0, 0, 2915, 2916, 5, 130, 0, 0, 2916, 2990, 3, 588, 294, 0, 2917, 2918, 5, 97, 0, 0, 2918, 2919, 5, 130, 0, 0, 2919, 2990, 3, 554, 277, 0, 2920, 2921, 5, 83, 0, 0, 2921, 2922, 5, 130, 0, 0, 2922, 2990, 3, 572, 286, 0, 2923, 2924, 5, 87, 0, 0, 2924, 2925, 5, 130, 0, 0, 2925, 2990, 3, 596, 298, 0, 2926, 2927, 5, 103, 0, 0, 2927, 2928, 5, 130, 0, 0, 2928, 2990, 3, 596, 298, 0, 2929, 2930, 5, 104, 0, 0, 2930, 2931, 5, 130, 0, 0, 2931, 2990, 3, 596, 298, 0, 2932, 2933, 5, 105, 0, 0, 2933, 2934, 5, 130, 0, 0, 2934, 2990, 3, 596, 298, 0, 2935, 2936, 5, 106, 0, 0, 2936, 2937, 5, 130, 0, 0, 2937, 2990, 3, 596, 298, 0, 2938, 2939, 5, 188, 0, 0, 2939, 2940, 5, 130, 0, 0, 2940, 2990, 3, 596, 298, 0, 2941, 2942, 5, 99, 0, 0, 2942, 2943, 5, 130, 0, 0, 2943, 2990, 3, 596, 298, 0, 2944, 2945, 5, 95, 0, 0, 2945, 2946, 5, 130, 0, 0, 2946, 2990, 3, 596, 298, 0, 2947, 2948, 5, 67, 0, 0, 2948, 2949, 5, 130, 0, 0, 2949, 2990, 3, 596, 298, 0, 2950, 2951, 5, 101, 0, 0, 2951, 2952, 5, 130, 0, 0, 2952, 2990, 3, 596, 298, 0, 2953, 2954, 5, 108, 0, 0, 2954, 2955, 5, 130, 0, 0, 2955, 2990, 3, 596, 298, 0, 2956, 2957, 5, 109, 0, 0, 2957, 2958, 5, 130, 0, 0, 2958, 2990, 3, 596, 298, 0, 2959, 2960, 5, 102, 0, 0, 2960, 2961, 5, 130, 0, 0, 2961, 2990, 3, 624, 312, 0, 2962, 2963, 5, 110, 0, 0, 2963, 2964, 5, 130, 0, 0, 2964, 2990, 3, 596, 298, 0, 2965, 2966, 5, 190, 0, 0, 2966, 2967, 5, 130, 0, 0, 2967, 2990, 3, 596, 298, 0, 2968, 2969, 5, 100, 0, 0, 2969, 2970, 5, 130, 0, 0, 2970, 2990, 3, 596, 298, 0, 2971, 2972, 5, 79, 0, 0, 2972, 2973, 5, 130, 0, 0, 2973, 2990, 3, 596, 298, 0, 2974, 2975, 5, 73, 0, 0, 2975, 2976, 5, 130, 0, 0, 2976, 2990, 3, 596, 298, 0, 2977, 2978, 5, 72, 0, 0, 2978, 2979, 5, 130, 0, 0, 2979, 2990, 3, 596, 298, 0, 2980, 2981, 5, 82, 0, 0, 2981, 2982, 5, 130, 0, 0, 2982, 2990, 3, 596, 298, 0, 2983, 2984, 5, 80, 0, 0, 2984, 2985, 5, 130, 0, 0, 2985, 2990, 3, 596, 298, 0, 2986, 2987, 5, 78, 0, 0, 2987, 2988, 5, 130, 0, 0, 2988, 2990, 3, 596, 298, 0, 2989, 2914, 1, 0, 0, 0, 2989, 2917, 1, 0, 0, 0, 2989, 2920, 1, 0, 0, 0, 2989, 2923, 1, 0, 0, 0, 2989, 2926, 1, 0, 0, 0, 2989, 2929, 1, 0, 0, 0, 2989, 2932, 1, 0, 0, 0, 2989, 2935, 1, 0, 0, 0, 2989, 2938, 1, 0, 0, 0, 2989, 2941, 1, 0, 0, 0, 2989, 2944, 1, 0, 0, 0, 2989, 2947, 1, 0, 0, 0, 2989, 2950, 1, 0, 0, 0, 2989, 2953, 1, 0, 0, 0, 2989, 2956, 1, 0, 0, 0, 2989, 2959, 1, 0, 0, 0, 2989, 2962, 1, 0, 0, 0, 2989, 2965, 1, 0, 0, 0, 2989, 2968, 1, 0, 0, 0, 2989, 2971, 1, 0, 0, 0, 2989, 2974, 1, 0, 0, 0, 2989, 2977, 1, 0, 0, 0, 2989, 2980, 1, 0, 0, 0, 2989, 2983, 1, 0, 0, 0, 2989, 2986, 1, 0, 0, 0, 2990, 533, 1, 0, 0, 0, 2991, 2995, 5, 50, 0, 0, 2992, 2993, 5, 49, 0, 0, 2993, 2995, 5, 159, 0, 0, 2994, 2991, 1, 0, 0, 0, 2994, 2992, 1, 0, 0, 0, 2995, 2996, 1, 0, 0, 0, 2996, 3018, 3, 432, 216, 0, 2997, 3001, 5, 50, 0, 0, 2998, 2999, 5, 49, 0, 0, 2999, 3001, 5, 159, 0, 0, 3000, 2997, 1, 0, 0, 0, 3000, 2998, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0, 3002, 3003, 3, 432, 216, 0, 3003, 3004, 5, 123, 0, 0, 3004, 3005, 3, 542, 271, 0, 3005, 3006, 5, 128, 0, 0, 3006, 3018, 1, 0, 0, 0, 3007, 3011, 5, 50, 0, 0, 3008, 3009, 5, 49, 0, 0, 3009, 3011, 5, 159, 0, 0, 3010, 3007, 1, 0, 0, 0, 3010, 3008, 1, 0, 0, 0, 3011, 3012, 1, 0, 0, 0, 3012, 3013, 3, 536, 268, 0, 3013, 3014, 5, 123, 0, 0, 3014, 3015, 3, 542, 271, 0, 3015, 3016, 5, 128, 0, 0, 3016, 3018, 1, 0, 0, 0, 3017, 2994, 1, 0, 0, 0, 3017, 3000, 1, 0, 0, 0, 3017, 3010, 1, 0, 0, 0, 3018, 535, 1, 0, 0, 0, 3019, 3020, 3, 432, 216, 0, 3020, 3021, 5, 122, 0, 0, 3021, 537, 1, 0, 0, 0, 3022, 3026, 5, 50, 0, 0, 3023, 3024, 5, 49, 0, 0, 3024, 3026, 5, 159, 0, 0, 3025, 3022, 1, 0, 0, 0, 3025, 3023, 1, 0, 0, 0, 3026, 3027, 1, 0, 0, 0, 3027, 3028, 3, 572, 286, 0, 3028, 539, 1, 0, 0, 0, 3029, 3030, 5, 50, 0, 0, 3030, 3031, 5, 123, 0, 0, 3031, 3032, 3, 542, 271, 0, 3032, 3034, 5, 128, 0, 0, 3033, 3035, 5, 122, 0, 0, 3034, 3033, 1, 0, 0, 0, 3034, 3035, 1, 0, 0, 0, 3035, 3036, 1, 0, 0, 0, 3036, 3037, 3, 624, 312, 0, 3037, 541, 1, 0, 0, 0, 3038, 3043, 3, 572, 286, 0, 3039, 3040, 5, 122, 0, 0, 3040, 3042, 3, 572, 286, 0, 3041, 3039, 1, 0, 0, 0, 3042, 3045, 1, 0, 0, 0, 3043, 3041, 1, 0, 0, 0, 3043, 3044, 1, 0, 0, 0, 3044, 543, 1, 0, 0, 0, 3045, 3043, 1, 0, 0, 0, 3046, 3050, 5, 113, 0, 0, 3047, 3048, 5, 12, 0, 0, 3048, 3050, 5, 97, 0, 0, 3049, 3046, 1, 0, 0, 0, 3049, 3047, 1, 0, 0, 0, 3050, 3051, 1, 0, 0, 0, 3051, 3062, 3, 588, 294, 0, 3052, 3056, 5, 113, 0, 0, 3053, 3054, 5, 12, 0, 0, 3054, 3056, 5, 97, 0, 0, 3055, 3052, 1, 0, 0, 0, 3055, 3053, 1, 0, 0, 0, 3056, 3057, 1, 0, 0, 0, 3057, 3058, 5, 123, 0, 0, 3058, 3059, 3, 590, 295, 0, 3059, 3060, 5, 128, 0, 0, 3060, 3062, 1, 0, 0, 0, 3061, 3049, 1, 0, 0, 0, 3061, 3055, 1, 0, 0, 0, 3062, 545, 1, 0, 0, 0, 3063, 3064, 5, 59, 0, 0, 3064, 547, 1, 0, 0, 0, 3065, 3066, 5, 92, 0, 0, 3066, 3067, 5, 123, 0, 0, 3067, 3068, 3, 550, 275, 0, 3068, 3069, 5, 128, 0, 0, 3069, 549, 1, 0, 0, 0, 3070, 3072, 3, 592, 296, 0, 3071, 3070, 1, 0, 0, 0, 3071, 3072, 1, 0, 0, 0, 3072, 3074, 1, 0, 0, 0, 3073, 3075, 3, 552, 276, 0, 3074, 3073, 1, 0, 0, 0, 3074, 3075, 1, 0, 0, 0, 3075, 3080, 1, 0, 0, 0, 3076, 3077, 5, 122, 0, 0, 3077, 3079, 3, 552, 276, 0, 3078, 3076, 1, 0, 0, 0, 3079, 3082, 1, 0, 0, 0, 3080, 3078, 1, 0, 0, 0, 3080, 3081, 1, 0, 0, 0, 3081, 551, 1, 0, 0, 0, 3082, 3080, 1, 0, 0, 0, 3083, 3084, 5, 77, 0, 0, 3084, 3085, 5, 130, 0, 0, 3085, 3095, 3, 588, 294, 0, 3086, 3087, 5, 83, 0, 0, 3087, 3088, 5, 130, 0, 0, 3088, 3095, 3, 572, 286, 0, 3089, 3090, 5, 98, 0, 0, 3090, 3091, 5, 130, 0, 0, 3091, 3095, 3, 554, 277, 0, 3092, 3093, 5, 87, 0, 0, 3093, 3095, 3, 596, 298, 0, 3094, 3083, 1, 0, 0, 0, 3094, 3086, 1, 0, 0, 0, 3094, 3089, 1, 0, 0, 0, 3094, 3092, 1, 0, 0, 0, 3095, 553, 1, 0, 0, 0, 3096, 3100, 3, 556, 278, 0, 3097, 3099, 3, 560, 280, 0, 3098, 3097, 1, 0, 0, 0, 3099, 3102, 1, 0, 0, 0, 3100, 3098, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3101, 555, 1, 0, 0, 0, 3102, 3100, 1, 0, 0, 0, 3103, 3109, 3, 558, 279, 0, 3104, 3105, 5, 123, 0, 0, 3105, 3106, 3, 554, 277, 0, 3106, 3107, 5, 128, 0, 0, 3107, 3109, 1, 0, 0, 0, 3108, 3103, 1, 0, 0, 0, 3108, 3104, 1, 0, 0, 0, 3109, 557, 1, 0, 0, 0, 3110, 3114, 5, 177, 0, 0, 3111, 3114, 3, 670, 335, 0, 3112, 3114, 3, 664, 332, 0, 3113, 3110, 1, 0, 0, 0, 3113, 3111, 1, 0, 0, 0, 3113, 3112, 1, 0, 0, 0, 3114, 559, 1, 0, 0, 0, 3115, 3116, 3, 556, 278, 0, 3116, 3117, 5, 133, 0, 0, 3117, 3118, 5, 184, 0, 0, 3118, 3119, 5, 133, 0, 0, 3119, 3120, 5, 185, 0, 0, 3120, 561, 1, 0, 0, 0, 3121, 3122, 5, 90, 0, 0, 3122, 3130, 3, 564, 282, 0, 3123, 3124, 5, 90, 0, 0, 3124, 3125, 3, 564, 282, 0, 3125, 3126, 5, 123, 0, 0, 3126, 3127, 3, 566, 283, 0, 3127, 3128, 5, 128, 0, 0, 3128, 3130, 1, 0, 0, 0, 3129, 3121, 1, 0, 0, 0, 3129, 3123, 1, 0, 0, 0, 3130, 563, 1, 0, 0, 0, 3131, 3132, 5, 188, 0, 0, 3132, 565, 1, 0, 0, 0, 3133, 3135, 3, 568, 284, 0, 3134, 3133, 1, 0, 0, 0, 3134, 3135, 1, 0, 0, 0, 3135, 3140, 1, 0, 0, 0, 3136, 3137, 5, 122, 0, 0, 3137, 3139, 3, 568, 284, 0, 3138, 3136, 1, 0, 0, 0, 3139, 3142, 1, 0, 0, 0, 3140, 3138, 1, 0, 0, 0, 3140, 3141, 1, 0, 0, 0, 3141, 567, 1, 0, 0, 0, 3142, 3140, 1, 0, 0, 0, 3143, 3158, 3, 624, 312, 0, 3144, 3158, 5, 155, 0, 0, 3145, 3146, 5, 192, 0, 0, 3146, 3158, 3, 572, 286, 0, 3147, 3148, 5, 188, 0, 0, 3148, 3149, 5, 130, 0, 0, 3149, 3158, 3, 624, 312, 0, 3150, 3151, 5, 188, 0, 0, 3151, 3152, 5, 130, 0, 0, 3152, 3158, 5, 155, 0, 0, 3153, 3154, 5, 188, 0, 0, 3154, 3155, 5, 130, 0, 0, 3155, 3156, 5, 192, 0, 0, 3156, 3158, 3, 572, 286, 0, 3157, 3143, 1, 0, 0, 0, 3157, 3144, 1, 0, 0, 0, 3157, 3145, 1, 0, 0, 0, 3157, 3147, 1, 0, 0, 0, 3157, 3150, 1, 0, 0, 0, 3157, 3153, 1, 0, 0, 0, 3158, 569, 1, 0, 0, 0, 3159, 3160, 5, 51, 0, 0, 3160, 3161, 5, 123, 0, 0, 3161, 3162, 3, 624, 312, 0, 3162, 3163, 5, 128, 0, 0, 3163, 3164, 3, 572, 286, 0, 3164, 3165, 5, 122, 0, 0, 3165, 3166, 3, 572, 286, 0, 3166, 3167, 5, 122, 0, 0, 3167, 3168, 3, 572, 286, 0, 3168, 571, 1, 0, 0, 0, 3169, 3170, 3, 574, 287, 0, 3170, 573, 1, 0, 0, 0, 3171, 3172, 5, 186, 0, 0, 3172, 575, 1, 0, 0, 0, 3173, 3175, 3, 574, 287, 0, 3174, 3173, 1, 0, 0, 0, 3174, 3175, 1, 0, 0, 0, 3175, 3176, 1, 0, 0, 0, 3176, 3178, 5, 188, 0, 0, 3177, 3179, 3, 578, 289, 0, 3178, 3177, 1, 0, 0, 0, 3178, 3179, 1, 0, 0, 0, 3179, 3181, 1, 0, 0, 0, 3180, 3182, 3, 412, 206, 0, 3181, 3180, 1, 0, 0, 0, 3181, 3182, 1, 0, 0, 0, 3182, 3183, 1, 0, 0, 0, 3183, 3184, 5, 130, 0, 0, 3184, 3204, 3, 624, 312, 0, 3185, 3187, 5, 188, 0, 0, 3186, 3188, 3, 578, 289, 0, 3187, 3186, 1, 0, 0, 0, 3187, 3188, 1, 0, 0, 0, 3188, 3189, 1, 0, 0, 0, 3189, 3190, 5, 124, 0, 0, 3190, 3191, 3, 670, 335, 0, 3191, 3192, 5, 130, 0, 0, 3192, 3193, 3, 624, 312, 0, 3193, 3204, 1, 0, 0, 0, 3194, 3195, 5, 188, 0, 0, 3195, 3196, 5, 123, 0, 0, 3196, 3197, 3, 480, 240, 0, 3197, 3198, 5, 128, 0, 0, 3198, 3199, 5, 124, 0, 0, 3199, 3200, 3, 670, 335, 0, 3200, 3201, 5, 130, 0, 0, 3201, 3202, 3, 624, 312, 0, 3202, 3204, 1, 0, 0, 0, 3203, 3174, 1, 0, 0, 0, 3203, 3185, 1, 0, 0, 0, 3203, 3194, 1, 0, 0, 0, 3204, 577, 1, 0, 0, 0, 3205, 3206, 5, 123, 0, 0, 3206, 3210, 3, 580, 290, 0, 3207, 3209, 3, 582, 291, 0, 3208, 3207, 1, 0, 0, 0, 3209, 3212, 1, 0, 0, 0, 3210, 3208, 1, 0, 0, 0, 3210, 3211, 1, 0, 0, 0, 3211, 3213, 1, 0, 0, 0, 3212, 3210, 1, 0, 0, 0, 3213, 3214, 5, 128, 0, 0, 3214, 579, 1, 0, 0, 0, 3215, 3217, 3, 624, 312, 0, 3216, 3218, 5, 129, 0, 0, 3217, 3216, 1, 0, 0, 0, 3217, 3218, 1, 0, 0, 0, 3218, 3220, 1, 0, 0, 0, 3219, 3221, 3, 624, 312, 0, 3220, 3219, 1, 0, 0, 0, 3220, 3221, 1, 0, 0, 0, 3221, 3240, 1, 0, 0, 0, 3222, 3224, 5, 129, 0, 0, 3223, 3225, 3, 624, 312, 0, 3224, 3223, 1, 0, 0, 0, 3224, 3225, 1, 0, 0, 0, 3225, 3240, 1, 0, 0, 0, 3226, 3228, 3, 624, 312, 0, 3227, 3226, 1, 0, 0, 0, 3227, 3228, 1, 0, 0, 0, 3228, 3229, 1, 0, 0, 0, 3229, 3230, 5, 129, 0, 0, 3230, 3231, 3, 624, 312, 0, 3231, 3232, 5, 129, 0, 0, 3232, 3233, 3, 624, 312, 0, 3233, 3240, 1, 0, 0, 0, 3234, 3236, 3, 624, 312, 0, 3235, 3234, 1, 0, 0, 0, 3235, 3236, 1, 0, 0, 0, 3236, 3237, 1, 0, 0, 0, 3237, 3238, 5, 30, 0, 0, 3238, 3240, 3, 624, 312, 0, 3239, 3215, 1, 0, 0, 0, 3239, 3222, 1, 0, 0, 0, 3239, 3227, 1, 0, 0, 0, 3239, 3235, 1, 0, 0, 0, 3240, 581, 1, 0, 0, 0, 3241, 3242, 5, 122, 0, 0, 3242, 3243, 3, 678, 339, 0, 3243, 583, 1, 0, 0, 0, 3244, 3245, 5, 31, 0, 0, 3245, 3246, 3, 572, 286, 0, 3246, 3247, 5, 159, 0, 0, 3247, 3248, 3, 432, 216, 0, 3248, 585, 1, 0, 0, 0, 3249, 3250, 5, 112, 0, 0, 3250, 3257, 3, 588, 294, 0, 3251, 3252, 5, 112, 0, 0, 3252, 3253, 5, 123, 0, 0, 3253, 3254, 3, 590, 295, 0, 3254, 3255, 5, 128, 0, 0, 3255, 3257, 1, 0, 0, 0, 3256, 3249, 1, 0, 0, 0, 3256, 3251, 1, 0, 0, 0, 3257, 587, 1, 0, 0, 0, 3258, 3261, 3, 598, 299, 0, 3259, 3261, 5, 192, 0, 0, 3260, 3258, 1, 0, 0, 0, 3260, 3259, 1, 0, 0, 0, 3261, 589, 1, 0, 0, 0, 3262, 3264, 3, 592, 296, 0, 3263, 3262, 1, 0, 0, 0, 3263, 3264, 1, 0, 0, 0, 3264, 3266, 1, 0, 0, 0, 3265, 3267, 3, 594, 297, 0, 3266, 3265, 1, 0, 0, 0, 3267, 3268, 1, 0, 0, 0, 3268, 3266, 1, 0, 0, 0, 3268, 3269, 1, 0, 0, 0, 3269, 591, 1, 0, 0, 0, 3270, 3272, 3, 588, 294, 0, 3271, 3273, 5, 122, 0, 0, 3272, 3271, 1, 0, 0, 0, 3272, 3273, 1, 0, 0, 0, 3273, 593, 1, 0, 0, 0, 3274, 3275, 5, 77, 0, 0, 3275, 3276, 5, 130, 0, 0, 3276, 3284, 3, 588, 294, 0, 3277, 3278, 5, 83, 0, 0, 3278, 3279, 5, 130, 0, 0, 3279, 3284, 3, 572, 286, 0, 3280, 3281, 5, 87, 0, 0, 3281, 3282, 5, 130, 0, 0, 3282, 3284, 3, 596, 298, 0, 3283, 3274, 1, 0, 0, 0, 3283, 3277, 1, 0, 0, 0, 3283, 3280, 1, 0, 0, 0, 3284, 595, 1, 0, 0, 0, 3285, 3288, 3, 432, 216, 0, 3286, 3288, 3, 424, 212, 0, 3287, 3285, 1, 0, 0, 0, 3287, 3286, 1, 0, 0, 0, 3288, 597, 1, 0, 0, 0, 3289, 3290, 6, 299, -1, 0, 3290, 3294, 3, 600, 300, 0, 3291, 3292, 7, 1, 0, 0, 3292, 3294, 3, 600, 300, 0, 3293, 3289, 1, 0, 0, 0, 3293, 3291, 1, 0, 0, 0, 3294, 3300, 1, 0, 0, 0, 3295, 3296, 10, 1, 0, 0, 3296, 3297, 7, 1, 0, 0, 3297, 3299, 3, 600, 300, 0, 3298, 3295, 1, 0, 0, 0, 3299, 3302, 1, 0, 0, 0, 3300, 3298, 1, 0, 0, 0, 3300, 3301, 1, 0, 0, 0, 3301, 599, 1, 0, 0, 0, 3302, 3300, 1, 0, 0, 0, 3303, 3304, 6, 300, -1, 0, 3304, 3305, 3, 602, 301, 0, 3305, 3316, 1, 0, 0, 0, 3306, 3307, 10, 2, 0, 0, 3307, 3308, 7, 7, 0, 0, 3308, 3315, 3, 602, 301, 0, 3309, 3310, 10, 1, 0, 0, 3310, 3311, 5, 133, 0, 0, 3311, 3312, 5, 133, 0, 0, 3312, 3313, 1, 0, 0, 0, 3313, 3315, 3, 604, 302, 0, 3314, 3306, 1, 0, 0, 0, 3314, 3309, 1, 0, 0, 0, 3315, 3318, 1, 0, 0, 0, 3316, 3314, 1, 0, 0, 0, 3316, 3317, 1, 0, 0, 0, 3317, 601, 1, 0, 0, 0, 3318, 3316, 1, 0, 0, 0, 3319, 3325, 3, 604, 302, 0, 3320, 3321, 3, 604, 302, 0, 3321, 3322, 5, 135, 0, 0, 3322, 3323, 3, 602, 301, 0, 3323, 3325, 1, 0, 0, 0, 3324, 3319, 1, 0, 0, 0, 3324, 3320, 1, 0, 0, 0, 3325, 603, 1, 0, 0, 0, 3326, 3335, 5, 186, 0, 0, 3327, 3335, 5, 177, 0, 0, 3328, 3335, 3, 670, 335, 0, 3329, 3335, 3, 664, 332, 0, 3330, 3331, 5, 123, 0, 0, 3331, 3332, 3, 598, 299, 0, 3332, 3333, 5, 128, 0, 0, 3333, 3335, 1, 0, 0, 0, 3334, 3326, 1, 0, 0, 0, 3334, 3327, 1, 0, 0, 0, 3334, 3328, 1, 0, 0, 0, 3334, 3329, 1, 0, 0, 0, 3334, 3330, 1, 0, 0, 0, 3335, 605, 1, 0, 0, 0, 3336, 3337, 5, 9, 0, 0, 3337, 3338, 3, 608, 304, 0, 3338, 3339, 3, 610, 305, 0, 3339, 3346, 1, 0, 0, 0, 3340, 3341, 5, 1, 0, 0, 3341, 3342, 5, 9, 0, 0, 3342, 3343, 3, 608, 304, 0, 3343, 3344, 3, 610, 305, 0, 3344, 3346, 1, 0, 0, 0, 3345, 3336, 1, 0, 0, 0, 3345, 3340, 1, 0, 0, 0, 3346, 607, 1, 0, 0, 0, 3347, 3348, 5, 188, 0, 0, 3348, 609, 1, 0, 0, 0, 3349, 3351, 3, 64, 32, 0, 3350, 3352, 3, 316, 158, 0, 3351, 3350, 1, 0, 0, 0, 3351, 3352, 1, 0, 0, 0, 3352, 3353, 1, 0, 0, 0, 3353, 3354, 3, 216, 108, 0, 3354, 3360, 1, 0, 0, 0, 3355, 3356, 3, 64, 32, 0, 3356, 3357, 3, 12, 6, 0, 3357, 3358, 3, 216, 108, 0, 3358, 3360, 1, 0, 0, 0, 3359, 3349, 1, 0, 0, 0, 3359, 3355, 1, 0, 0, 0, 3360, 611, 1, 0, 0, 0, 3361, 3362, 5, 58, 0, 0, 3362, 3363, 5, 177, 0, 0, 3363, 613, 1, 0, 0, 0, 3364, 3365, 5, 41, 0, 0, 3365, 3369, 3, 616, 308, 0, 3366, 3367, 5, 41, 0, 0, 3367, 3369, 5, 42, 0, 0, 3368, 3364, 1, 0, 0, 0, 3368, 3366, 1, 0, 0, 0, 3369, 615, 1, 0, 0, 0, 3370, 3375, 3, 618, 309, 0, 3371, 3372, 5, 122, 0, 0, 3372, 3374, 3, 618, 309, 0, 3373, 3371, 1, 0, 0, 0, 3374, 3377, 1, 0, 0, 0, 3375, 3373, 1, 0, 0, 0, 3375, 3376, 1, 0, 0, 0, 3376, 617, 1, 0, 0, 0, 3377, 3375, 1, 0, 0, 0, 3378, 3379, 3, 272, 136, 0, 3379, 3380, 3, 620, 310, 0, 3380, 3387, 1, 0, 0, 0, 3381, 3382, 3, 272, 136, 0, 3382, 3383, 5, 123, 0, 0, 3383, 3384, 3, 620, 310, 0, 3384, 3385, 5, 128, 0, 0, 3385, 3387, 1, 0, 0, 0, 3386, 3378, 1, 0, 0, 0, 3386, 3381, 1, 0, 0, 0, 3387, 619, 1, 0, 0, 0, 3388, 3390, 3, 622, 311, 0, 3389, 3388, 1, 0, 0, 0, 3389, 3390, 1, 0, 0, 0, 3390, 3395, 1, 0, 0, 0, 3391, 3392, 5, 122, 0, 0, 3392, 3394, 3, 622, 311, 0, 3393, 3391, 1, 0, 0, 0, 3394, 3397, 1, 0, 0, 0, 3395, 3393, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 621, 1, 0, 0, 0, 3397, 3395, 1, 0, 0, 0, 3398, 3399, 5, 188, 0, 0, 3399, 3400, 5, 131, 0, 0, 3400, 3401, 5, 188, 0, 0, 3401, 623, 1, 0, 0, 0, 3402, 3403, 6, 312, -1, 0, 3403, 3404, 3, 628, 314, 0, 3404, 3411, 1, 0, 0, 0, 3405, 3406, 10, 1, 0, 0, 3406, 3407, 3, 626, 313, 0, 3407, 3408, 3, 628, 314, 0, 3408, 3410, 1, 0, 0, 0, 3409, 3405, 1, 0, 0, 0, 3410, 3413, 1, 0, 0, 0, 3411, 3409, 1, 0, 0, 0, 3411, 3412, 1, 0, 0, 0, 3412, 625, 1, 0, 0, 0, 3413, 3411, 1, 0, 0, 0, 3414, 3415, 5, 27, 0, 0, 3415, 627, 1, 0, 0, 0, 3416, 3421, 3, 630, 315, 0, 3417, 3418, 7, 3, 0, 0, 3418, 3420, 3, 630, 315, 0, 3419, 3417, 1, 0, 0, 0, 3420, 3423, 1, 0, 0, 0, 3421, 3419, 1, 0, 0, 0, 3421, 3422, 1, 0, 0, 0, 3422, 629, 1, 0, 0, 0, 3423, 3421, 1, 0, 0, 0, 3424, 3429, 3, 632, 316, 0, 3425, 3426, 5, 138, 0, 0, 3426, 3428, 3, 632, 316, 0, 3427, 3425, 1, 0, 0, 0, 3428, 3431, 1, 0, 0, 0, 3429, 3427, 1, 0, 0, 0, 3429, 3430, 1, 0, 0, 0, 3430, 631, 1, 0, 0, 0, 3431, 3429, 1, 0, 0, 0, 3432, 3437, 3, 634, 317, 0, 3433, 3434, 5, 137, 0, 0, 3434, 3436, 3, 634, 317, 0, 3435, 3433, 1, 0, 0, 0, 3436, 3439, 1, 0, 0, 0, 3437, 3435, 1, 0, 0, 0, 3437, 3438, 1, 0, 0, 0, 3438, 633, 1, 0, 0, 0, 3439, 3437, 1, 0, 0, 0, 3440, 3442, 5, 136, 0, 0, 3441, 3440, 1, 0, 0, 0, 3441, 3442, 1, 0, 0, 0, 3442, 3443, 1, 0, 0, 0, 3443, 3444, 3, 638, 319, 0, 3444, 635, 1, 0, 0, 0, 3445, 3446, 7, 8, 0, 0, 3446, 637, 1, 0, 0, 0, 3447, 3453, 3, 640, 320, 0, 3448, 3449, 3, 636, 318, 0, 3449, 3450, 3, 640, 320, 0, 3450, 3452, 1, 0, 0, 0, 3451, 3448, 1, 0, 0, 0, 3452, 3455, 1, 0, 0, 0, 3453, 3451, 1, 0, 0, 0, 3453, 3454, 1, 0, 0, 0, 3454, 639, 1, 0, 0, 0, 3455, 3453, 1, 0, 0, 0, 3456, 3468, 3, 642, 321, 0, 3457, 3459, 5, 133, 0, 0, 3458, 3460, 5, 184, 0, 0, 3459, 3458, 1, 0, 0, 0, 3459, 3460, 1, 0, 0, 0, 3460, 3461, 1, 0, 0, 0, 3461, 3463, 5, 133, 0, 0, 3462, 3464, 5, 185, 0, 0, 3463, 3462, 1, 0, 0, 0, 3463, 3464, 1, 0, 0, 0, 3464, 3465, 1, 0, 0, 0, 3465, 3467, 3, 642, 321, 0, 3466, 3457, 1, 0, 0, 0, 3467, 3470, 1, 0, 0, 0, 3468, 3466, 1, 0, 0, 0, 3468, 3469, 1, 0, 0, 0, 3469, 641, 1, 0, 0, 0, 3470, 3468, 1, 0, 0, 0, 3471, 3473, 3, 644, 322, 0, 3472, 3471, 1, 0, 0, 0, 3472, 3473, 1, 0, 0, 0, 3473, 3474, 1, 0, 0, 0, 3474, 3479, 3, 646, 323, 0, 3475, 3476, 7, 1, 0, 0, 3476, 3478, 3, 646, 323, 0, 3477, 3475, 1, 0, 0, 0, 3478, 3481, 1, 0, 0, 0, 3479, 3477, 1, 0, 0, 0, 3479, 3480, 1, 0, 0, 0, 3480, 643, 1, 0, 0, 0, 3481, 3479, 1, 0, 0, 0, 3482, 3483, 7, 1, 0, 0, 3483, 645, 1, 0, 0, 0, 3484, 3489, 3, 648, 324, 0, 3485, 3486, 7, 7, 0, 0, 3486, 3488, 3, 648, 324, 0, 3487, 3485, 1, 0, 0, 0, 3488, 3491, 1, 0, 0, 0, 3489, 3487, 1, 0, 0, 0, 3489, 3490, 1, 0, 0, 0, 3490, 647, 1, 0, 0, 0, 3491, 3489, 1, 0, 0, 0, 3492, 3497, 3, 650, 325, 0, 3493, 3494, 5, 135, 0, 0, 3494, 3496, 3, 650, 325, 0, 3495, 3493, 1, 0, 0, 0, 3496, 3499, 1, 0, 0, 0, 3497, 3495, 1, 0, 0, 0, 3497, 3498, 1, 0, 0, 0, 3498, 649, 1, 0, 0, 0, 3499, 3497, 1, 0, 0, 0, 3500, 3505, 3, 654, 327, 0, 3501, 3502, 3, 652, 326, 0, 3502, 3503, 3, 654, 327, 0, 3503, 3505, 1, 0, 0, 0, 3504, 3500, 1, 0, 0, 0, 3504, 3501, 1, 0, 0, 0, 3505, 651, 1, 0, 0, 0, 3506, 3507, 5, 27, 0, 0, 3507, 653, 1, 0, 0, 0, 3508, 3519, 3, 686, 343, 0, 3509, 3519, 3, 670, 335, 0, 3510, 3519, 3, 664, 332, 0, 3511, 3512, 5, 123, 0, 0, 3512, 3513, 3, 624, 312, 0, 3513, 3514, 5, 128, 0, 0, 3514, 3519, 1, 0, 0, 0, 3515, 3519, 5, 177, 0, 0, 3516, 3519, 3, 682, 341, 0, 3517, 3519, 3, 656, 328, 0, 3518, 3508, 1, 0, 0, 0, 3518, 3509, 1, 0, 0, 0, 3518, 3510, 1, 0, 0, 0, 3518, 3511, 1, 0, 0, 0, 3518, 3515, 1, 0, 0, 0, 3518, 3516, 1, 0, 0, 0, 3518, 3517, 1, 0, 0, 0, 3519, 655, 1, 0, 0, 0, 3520, 3521, 5, 171, 0, 0, 3521, 3522, 3, 658, 329, 0, 3522, 3523, 5, 173, 0, 0, 3523, 657, 1, 0, 0, 0, 3524, 3527, 3, 624, 312, 0, 3525, 3527, 3, 660, 330, 0, 3526, 3524, 1, 0, 0, 0, 3526, 3525, 1, 0, 0, 0, 3527, 659, 1, 0, 0, 0, 3528, 3529, 6, 330, -1, 0, 3529, 3530, 3, 624, 312, 0, 3530, 3531, 5, 122, 0, 0, 3531, 3532, 3, 624, 312, 0, 3532, 3539, 1, 0, 0, 0, 3533, 3534, 3, 624, 312, 0, 3534, 3535, 5, 122, 0, 0, 3535, 3536, 3, 662, 331, 0, 3536, 3539, 1, 0, 0, 0, 3537, 3539, 3, 662, 331, 0, 3538, 3528, 1, 0, 0, 0, 3538, 3533, 1, 0, 0, 0, 3538, 3537, 1, 0, 0, 0, 3539, 3548, 1, 0, 0, 0, 3540, 3541, 10, 2, 0, 0, 3541, 3542, 5, 122, 0, 0, 3542, 3547, 3, 624, 312, 0, 3543, 3544, 10, 1, 0, 0, 3544, 3545, 5, 122, 0, 0, 3545, 3547, 3, 662, 331, 0, 3546, 3540, 1, 0, 0, 0, 3546, 3543, 1, 0, 0, 0, 3547, 3550, 1, 0, 0, 0, 3548, 3546, 1, 0, 0, 0, 3548, 3549, 1, 0, 0, 0, 3549, 661, 1, 0, 0, 0, 3550, 3548, 1, 0, 0, 0, 3551, 3552, 5, 123, 0, 0, 3552, 3553, 3, 624, 312, 0, 3553, 3554, 5, 122, 0, 0, 3554, 3555, 3, 426, 213, 0, 3555, 3556, 5, 130, 0, 0, 3556, 3557, 3, 624, 312, 0, 3557, 3558, 5, 122, 0, 0, 3558, 3559, 3, 624, 312, 0, 3559, 3560, 5, 128, 0, 0, 3560, 3596, 1, 0, 0, 0, 3561, 3562, 5, 123, 0, 0, 3562, 3563, 3, 624, 312, 0, 3563, 3564, 5, 122, 0, 0, 3564, 3565, 3, 426, 213, 0, 3565, 3566, 5, 130, 0, 0, 3566, 3567, 3, 624, 312, 0, 3567, 3568, 5, 122, 0, 0, 3568, 3569, 3, 624, 312, 0, 3569, 3570, 5, 122, 0, 0, 3570, 3571, 3, 624, 312, 0, 3571, 3572, 5, 128, 0, 0, 3572, 3596, 1, 0, 0, 0, 3573, 3574, 5, 123, 0, 0, 3574, 3575, 3, 662, 331, 0, 3575, 3576, 5, 122, 0, 0, 3576, 3577, 3, 426, 213, 0, 3577, 3578, 5, 130, 0, 0, 3578, 3579, 3, 624, 312, 0, 3579, 3580, 5, 122, 0, 0, 3580, 3581, 3, 624, 312, 0, 3581, 3582, 5, 128, 0, 0, 3582, 3596, 1, 0, 0, 0, 3583, 3584, 5, 123, 0, 0, 3584, 3585, 3, 662, 331, 0, 3585, 3586, 5, 122, 0, 0, 3586, 3587, 3, 426, 213, 0, 3587, 3588, 5, 130, 0, 0, 3588, 3589, 3, 624, 312, 0, 3589, 3590, 5, 122, 0, 0, 3590, 3591, 3, 624, 312, 0, 3591, 3592, 5, 122, 0, 0, 3592, 3593, 3, 624, 312, 0, 3593, 3594, 5, 128, 0, 0, 3594, 3596, 1, 0, 0, 0, 3595, 3551, 1, 0, 0, 0, 3595, 3561, 1, 0, 0, 0, 3595, 3573, 1, 0, 0, 0, 3595, 3583, 1, 0, 0, 0, 3596, 663, 1, 0, 0, 0, 3597, 3598, 5, 188, 0, 0, 3598, 3599, 5, 123, 0, 0, 3599, 3606, 5, 128, 0, 0, 3600, 3601, 5, 188, 0, 0, 3601, 3602, 5, 123, 0, 0, 3602, 3603, 3, 666, 333, 0, 3603, 3604, 5, 128, 0, 0, 3604, 3606, 1, 0, 0, 0, 3605, 3597, 1, 0, 0, 0, 3605, 3600, 1, 0, 0, 0, 3606, 665, 1, 0, 0, 0, 3607, 3608, 6, 333, -1, 0, 3608, 3614, 3, 668, 334, 0, 3609, 3610, 3, 676, 338, 0, 3610, 3611, 5, 122, 0, 0, 3611, 3612, 3, 668, 334, 0, 3612, 3614, 1, 0, 0, 0, 3613, 3607, 1, 0, 0, 0, 3613, 3609, 1, 0, 0, 0, 3614, 3620, 1, 0, 0, 0, 3615, 3616, 10, 2, 0, 0, 3616, 3617, 5, 122, 0, 0, 3617, 3619, 3, 668, 334, 0, 3618, 3615, 1, 0, 0, 0, 3619, 3622, 1, 0, 0, 0, 3620, 3618, 1, 0, 0, 0, 3620, 3621, 1, 0, 0, 0, 3621, 667, 1, 0, 0, 0, 3622, 3620, 1, 0, 0, 0, 3623, 3624, 5, 188, 0, 0, 3624, 3625, 5, 130, 0, 0, 3625, 3626, 3, 624, 312, 0, 3626, 669, 1, 0, 0, 0, 3627, 3631, 7, 9, 0, 0, 3628, 3630, 3, 672, 336, 0, 3629, 3628, 1, 0, 0, 0, 3630, 3633, 1, 0, 0, 0, 3631, 3629, 1, 0, 0, 0, 3631, 3632, 1, 0, 0, 0, 3632, 671, 1, 0, 0, 0, 3633, 3631, 1, 0, 0, 0, 3634, 3638, 3, 674, 337, 0, 3635, 3636, 5, 124, 0, 0, 3636, 3638, 5, 188, 0, 0, 3637, 3634, 1, 0, 0, 0, 3637, 3635, 1, 0, 0, 0, 3638, 673, 1, 0, 0, 0, 3639, 3640, 5, 123, 0, 0, 3640, 3641, 3, 676, 338, 0, 3641, 3642, 5, 128, 0, 0, 3642, 675, 1, 0, 0, 0, 3643, 3648, 3, 678, 339, 0, 3644, 3645, 5, 122, 0, 0, 3645, 3647, 3, 678, 339, 0, 3646, 3644, 1, 0, 0, 0, 3647, 3650, 1, 0, 0, 0, 3648, 3646, 1, 0, 0, 0, 3648, 3649, 1, 0, 0, 0, 3649, 677, 1, 0, 0, 0, 3650, 3648, 1, 0, 0, 0, 3651, 3653, 3, 624, 312, 0, 3652, 3654, 3, 680, 340, 0, 3653, 3652, 1, 0, 0, 0, 3653, 3654, 1, 0, 0, 0, 3654, 3657, 1, 0, 0, 0, 3655, 3657, 3, 680, 340, 0, 3656, 3651, 1, 0, 0, 0, 3656, 3655, 1, 0, 0, 0, 3657, 679, 1, 0, 0, 0, 3658, 3660, 5, 129, 0, 0, 3659, 3661, 3, 624, 312, 0, 3660, 3659, 1, 0, 0, 0, 3660, 3661, 1, 0, 0, 0, 3661, 3670, 1, 0, 0, 0, 3662, 3663, 5, 129, 0, 0, 3663, 3664, 3, 624, 312, 0, 3664, 3665, 5, 129, 0, 0, 3665, 3666, 3, 624, 312, 0, 3666, 3670, 1, 0, 0, 0, 3667, 3668, 5, 30, 0, 0, 3668, 3670, 3, 624, 312, 0, 3669, 3658, 1, 0, 0, 0, 3669, 3662, 1, 0, 0, 0, 3669, 3667, 1, 0, 0, 0, 3670, 681, 1, 0, 0, 0, 3671, 3681, 7, 10, 0, 0, 3672, 3673, 5, 149, 0, 0, 3673, 3674, 5, 170, 0, 0, 3674, 3681, 3, 684, 342, 0, 3675, 3676, 5, 150, 0, 0, 3676, 3677, 5, 170, 0, 0, 3677, 3678, 3, 684, 342, 0, 3678, 3679, 5, 172, 0, 0, 3679, 3681, 1, 0, 0, 0, 3680, 3671, 1, 0, 0, 0, 3680, 3672, 1, 0, 0, 0, 3680, 3675, 1, 0, 0, 0, 3681, 683, 1, 0, 0, 0, 3682, 3685, 5, 186, 0, 0, 3683, 3685, 3, 292, 146, 0, 3684, 3682, 1, 0, 0, 0, 3684, 3683, 1, 0, 0, 0, 3685, 685, 1, 0, 0, 0, 3686, 3695, 7, 11, 0, 0, 3687, 3695, 3, 688, 344, 0, 3688, 3689, 5, 186, 0, 0, 3689, 3690, 5, 170, 0, 0, 3690, 3695, 3, 684, 342, 0, 3691, 3692, 5, 178, 0, 0, 3692, 3693, 5, 170, 0, 0, 3693, 3695, 3, 684, 342, 0, 3694, 3686, 1, 0, 0, 0, 3694, 3687, 1, 0, 0, 0, 3694, 3688, 1, 0, 0, 0, 3694, 3691, 1, 0, 0, 0, 3695, 687, 1, 0, 0, 0, 3696, 3697, 5, 123, 0, 0, 3697, 3698, 3, 690, 345, 0, 3698, 3699, 5, 122, 0, 0, 3699, 3700, 5, 128, 0, 0, 3700, 689, 1, 0, 0, 0, 3701, 3703, 7, 1, 0, 0, 3702, 3701, 1, 0, 0, 0, 3702, 3703, 1, 0, 0, 0, 3703, 3704, 1, 0, 0, 0, 3704, 3708, 5, 186, 0, 0, 3705, 3708, 5, 178, 0, 0, 3706, 3708, 5, 188, 0, 0, 3707, 3702, 1, 0, 0, 0, 3707, 3705, 1, 0, 0, 0, 3707, 3706, 1, 0, 0, 0, 3708, 691, 1, 0, 0, 0, 3709, 3710, 3, 624, 312, 0, 3710, 693, 1, 0, 0, 0, 3711, 3712, 5, 51, 0, 0, 3712, 3713, 5, 123, 0, 0, 3713, 3714, 3, 624, 312, 0, 3714, 3715, 5, 128, 0, 0, 3715, 3716, 3, 436, 218, 0, 3716, 695, 1, 0, 0, 0, 331, 701, 708, 711, 719, 725, 735, 741, 746, 755, 774, 781, 790, 797, 814, 824, 826, 835, 839, 844, 846, 855, 862, 867, 872, 878, 881, 887, 896, 913, 915, 928, 939, 949, 958, 963, 967, 970, 982, 985, 992, 997, 1003, 1019, 1023, 1032, 1041, 1045, 1054, 1063, 1067, 1076, 1106, 1108, 1120, 1136, 1145, 1154, 1160, 1164, 1171, 1176, 1186, 1191, 1195, 1207, 1217, 1227, 1240, 1247, 1252, 1259, 1266, 1273, 1275, 1280, 1295, 1304, 1309, 1320, 1342, 1349, 1395, 1403, 1414, 1421, 1428, 1445, 1454, 1457, 1464, 1475, 1490, 1499, 1504, 1515, 1527, 1531, 1539, 1541, 1546, 1549, 1556, 1560, 1566, 1575, 1587, 1594, 1596, 1610, 1622, 1631, 1636, 1653, 1660, 1706, 1715, 1724, 1728, 1735, 1743, 1754, 1784, 1796, 1834, 1842, 1849, 1853, 1868, 1885, 1897, 1903, 1905, 1910, 1916, 1926, 1936, 1952, 1957, 1961, 1968, 1976, 1986, 1994, 2003, 2043, 2049, 2053, 2058, 2060, 2069, 2074, 2082, 2089, 2094, 2106, 2113, 2117, 2130, 2149, 2159, 2163, 2166, 2170, 2175, 2182, 2187, 2189, 2202, 2219, 2228, 2233, 2244, 2254, 2268, 2272, 2276, 2279, 2288, 2294, 2321, 2326, 2331, 2341, 2352, 2364, 2369, 2379, 2386, 2422, 2435, 2442, 2456, 2461, 2466, 2475, 2480, 2496, 2503, 2508, 2524, 2531, 2538, 2547, 2556, 2563, 2579, 2586, 2594, 2605, 2612, 2621, 2626, 2631, 2633, 2655, 2666, 2671, 2682, 2691, 2700, 2712, 2719, 2752, 2761, 2765, 2777, 2785, 2787, 2799, 2812, 2816, 2821, 2825, 2833, 2836, 2842, 2884, 2899, 2902, 2905, 2911, 2989, 2994, 3000, 3010, 3017, 3025, 3034, 3043, 3049, 3055, 3061, 3071, 3074, 3080, 3094, 3100, 3108, 3113, 3129, 3134, 3140, 3157, 3174, 3178, 3181, 3187, 3203, 3210, 3217, 3220, 3224, 3227, 3235, 3239, 3256, 3260, 3263, 3268, 3272, 3283, 3287, 3293, 3300, 3314, 3316, 3324, 3334, 3345, 3351, 3359, 3368, 3375, 3386, 3389, 3395, 3411, 3421, 3429, 3437, 3441, 3453, 3459, 3463, 3468, 3472, 3479, 3489, 3497, 3504, 3518, 3526, 3538, 3546, 3548, 3595, 3605, 3613, 3620, 3631, 3637, 3648, 3653, 3656, 3660, 3669, 3680, 3684, 3694, 3702, 3707] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran90Parser.py b/src/pycropml/transpiler/antlr_py/grammars/Fortran90Parser.py index f987a58c..e2cf7d44 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran90Parser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran90Parser.py @@ -1,4 +1,4 @@ -# Generated from Fortran90Parser.g4 by ANTLR 4.8 +# Generated from Fortran90Parser.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,2127 +8,1546 @@ else: from typing.io import TextIO - def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u00c5") - buf.write("\u0e88\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") - buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") - buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") - buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") - buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") - buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") - buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") - buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") - buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") - buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") - buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") - buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4") - buf.write("_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4") - buf.write("h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4") - buf.write("q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4") - buf.write("z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080") - buf.write("\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084") - buf.write("\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087") - buf.write("\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b") - buf.write("\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e\t\u008e") - buf.write("\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092") - buf.write("\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095") - buf.write("\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099") - buf.write("\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c") - buf.write("\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0") - buf.write("\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3") - buf.write("\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7") - buf.write("\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa\t\u00aa") - buf.write("\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad\4\u00ae") - buf.write("\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1") - buf.write("\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5") - buf.write("\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8\t\u00b8") - buf.write("\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb\t\u00bb\4\u00bc") - buf.write("\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf") - buf.write("\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3") - buf.write("\t\u00c3\4\u00c4\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6") - buf.write("\4\u00c7\t\u00c7\4\u00c8\t\u00c8\4\u00c9\t\u00c9\4\u00ca") - buf.write("\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd\t\u00cd") - buf.write("\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0\4\u00d1") - buf.write("\t\u00d1\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4\t\u00d4") - buf.write("\4\u00d5\t\u00d5\4\u00d6\t\u00d6\4\u00d7\t\u00d7\4\u00d8") - buf.write("\t\u00d8\4\u00d9\t\u00d9\4\u00da\t\u00da\4\u00db\t\u00db") - buf.write("\4\u00dc\t\u00dc\4\u00dd\t\u00dd\4\u00de\t\u00de\4\u00df") - buf.write("\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2\t\u00e2") - buf.write("\4\u00e3\t\u00e3\4\u00e4\t\u00e4\4\u00e5\t\u00e5\4\u00e6") - buf.write("\t\u00e6\4\u00e7\t\u00e7\4\u00e8\t\u00e8\4\u00e9\t\u00e9") - buf.write("\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec\t\u00ec\4\u00ed") - buf.write("\t\u00ed\4\u00ee\t\u00ee\4\u00ef\t\u00ef\4\u00f0\t\u00f0") - buf.write("\4\u00f1\t\u00f1\4\u00f2\t\u00f2\4\u00f3\t\u00f3\4\u00f4") - buf.write("\t\u00f4\4\u00f5\t\u00f5\4\u00f6\t\u00f6\4\u00f7\t\u00f7") - buf.write("\4\u00f8\t\u00f8\4\u00f9\t\u00f9\4\u00fa\t\u00fa\4\u00fb") - buf.write("\t\u00fb\4\u00fc\t\u00fc\4\u00fd\t\u00fd\4\u00fe\t\u00fe") - buf.write("\4\u00ff\t\u00ff\4\u0100\t\u0100\4\u0101\t\u0101\4\u0102") - buf.write("\t\u0102\4\u0103\t\u0103\4\u0104\t\u0104\4\u0105\t\u0105") - buf.write("\4\u0106\t\u0106\4\u0107\t\u0107\4\u0108\t\u0108\4\u0109") - buf.write("\t\u0109\4\u010a\t\u010a\4\u010b\t\u010b\4\u010c\t\u010c") - buf.write("\4\u010d\t\u010d\4\u010e\t\u010e\4\u010f\t\u010f\4\u0110") - buf.write("\t\u0110\4\u0111\t\u0111\4\u0112\t\u0112\4\u0113\t\u0113") - buf.write("\4\u0114\t\u0114\4\u0115\t\u0115\4\u0116\t\u0116\4\u0117") - buf.write("\t\u0117\4\u0118\t\u0118\4\u0119\t\u0119\4\u011a\t\u011a") - buf.write("\4\u011b\t\u011b\4\u011c\t\u011c\4\u011d\t\u011d\4\u011e") - buf.write("\t\u011e\4\u011f\t\u011f\4\u0120\t\u0120\4\u0121\t\u0121") - buf.write("\4\u0122\t\u0122\4\u0123\t\u0123\4\u0124\t\u0124\4\u0125") - buf.write("\t\u0125\4\u0126\t\u0126\4\u0127\t\u0127\4\u0128\t\u0128") - buf.write("\4\u0129\t\u0129\4\u012a\t\u012a\4\u012b\t\u012b\4\u012c") - buf.write("\t\u012c\4\u012d\t\u012d\4\u012e\t\u012e\4\u012f\t\u012f") - buf.write("\4\u0130\t\u0130\4\u0131\t\u0131\4\u0132\t\u0132\4\u0133") - buf.write("\t\u0133\4\u0134\t\u0134\4\u0135\t\u0135\4\u0136\t\u0136") - buf.write("\4\u0137\t\u0137\4\u0138\t\u0138\4\u0139\t\u0139\4\u013a") - buf.write("\t\u013a\4\u013b\t\u013b\4\u013c\t\u013c\4\u013d\t\u013d") - buf.write("\4\u013e\t\u013e\4\u013f\t\u013f\4\u0140\t\u0140\4\u0141") - buf.write("\t\u0141\4\u0142\t\u0142\4\u0143\t\u0143\4\u0144\t\u0144") - buf.write("\4\u0145\t\u0145\4\u0146\t\u0146\4\u0147\t\u0147\4\u0148") - buf.write("\t\u0148\4\u0149\t\u0149\4\u014a\t\u014a\4\u014b\t\u014b") - buf.write("\4\u014c\t\u014c\4\u014d\t\u014d\4\u014e\t\u014e\4\u014f") - buf.write("\t\u014f\4\u0150\t\u0150\4\u0151\t\u0151\4\u0152\t\u0152") - buf.write("\4\u0153\t\u0153\4\u0154\t\u0154\4\u0155\t\u0155\4\u0156") - buf.write("\t\u0156\4\u0157\t\u0157\4\u0158\t\u0158\4\u0159\t\u0159") - buf.write("\4\u015a\t\u015a\4\u015b\t\u015b\4\u015c\t\u015c\4\u015d") - buf.write("\t\u015d\3\2\3\2\3\3\6\3\u02be\n\3\r\3\16\3\u02bf\3\4") - buf.write("\3\4\3\4\3\4\3\4\5\4\u02c7\n\4\3\5\5\5\u02ca\n\5\3\5\3") - buf.write("\5\3\6\3\6\3\6\3\7\5\7\u02d2\n\7\3\7\3\7\3\7\3\7\5\7\u02d8") - buf.write("\n\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\5\b\u02e2\n\b\3\b") - buf.write("\3\b\7\b\u02e6\n\b\f\b\16\b\u02e9\13\b\3\t\3\t\5\t\u02ed") - buf.write("\n\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u02f6\n\n\3\13\3") - buf.write("\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13") - buf.write("\3\13\3\13\3\13\3\13\3\13\5\13\u0309\n\13\3\f\3\f\3\f") - buf.write("\7\f\u030e\n\f\f\f\16\f\u0311\13\f\3\r\3\r\3\r\3\r\3\r") - buf.write("\3\r\5\r\u0319\n\r\3\16\3\16\3\16\7\16\u031e\n\16\f\16") - buf.write("\16\16\u0321\13\16\3\17\3\17\3\17\3\17\3\20\3\20\3\21") - buf.write("\3\21\3\21\3\21\3\21\3\22\6\22\u032f\n\22\r\22\16\22\u0330") - buf.write("\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\5\24\u033b\n") - buf.write("\24\5\24\u033d\n\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25") - buf.write("\5\25\u0346\n\25\3\26\3\26\5\26\u034a\n\26\3\26\3\26\3") - buf.write("\26\5\26\u034f\n\26\5\26\u0351\n\26\3\27\3\27\3\27\3\27") - buf.write("\3\27\7\27\u0358\n\27\f\27\16\27\u035b\13\27\3\30\3\30") - buf.write("\3\31\3\31\5\31\u0361\n\31\3\31\3\31\3\31\5\31\u0366\n") - buf.write("\31\3\31\3\31\3\31\5\31\u036b\n\31\3\31\3\31\3\31\3\31") - buf.write("\5\31\u0371\n\31\3\31\5\31\u0374\n\31\3\32\3\32\3\32\3") - buf.write("\32\5\32\u037a\n\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33") - buf.write("\5\33\u0383\n\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3") - buf.write("\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\7\33\u0394\n\33") - buf.write("\f\33\16\33\u0397\13\33\3\34\3\34\3\34\3\34\3\34\3\34") - buf.write("\3\34\3\34\3\34\3\34\5\34\u03a3\n\34\3\35\3\35\3\35\3") - buf.write("\35\3\35\3\35\3\35\3\35\3\35\5\35\u03ae\n\35\3\36\3\36") - buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\5\36\u03b8\n\36\3\37\3") - buf.write("\37\3\37\3\37\3\37\3\37\3\37\5\37\u03c1\n\37\3 \3 \3 ") - buf.write("\5 \u03c6\n \3 \3 \5 \u03ca\n \3 \5 \u03cd\n \3!\3!\3") - buf.write("!\3!\3!\3!\3!\3!\3\"\3\"\5\"\u03d9\n\"\3\"\5\"\u03dc\n") - buf.write("\"\3#\3#\3#\7#\u03e1\n#\f#\16#\u03e4\13#\3$\3$\5$\u03e8") - buf.write("\n$\3%\3%\3%\3%\5%\u03ee\n%\3&\3&\3&\3&\3&\3&\3&\3&\3") - buf.write("&\3&\3&\3&\3&\3&\5&\u03fe\n&\3\'\3\'\5\'\u0402\n\'\3\'") - buf.write("\3\'\3(\3(\3(\7(\u0409\n(\f(\16(\u040c\13(\3)\3)\3)\3") - buf.write(")\3)\3)\5)\u0414\n)\3*\3*\5*\u0418\n*\3*\3*\3+\3+\3+\7") - buf.write("+\u041f\n+\f+\16+\u0422\13+\3,\3,\3,\3,\3,\3,\5,\u042a") - buf.write("\n,\3-\3-\5-\u042e\n-\3-\3-\3.\3.\3.\7.\u0435\n.\f.\16") - buf.write(".\u0438\13.\3/\3/\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3") - buf.write("\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61") - buf.write("\3\61\3\61\3\61\3\61\3\61\3\61\3\61\7\61\u0455\n\61\f") - buf.write("\61\16\61\u0458\13\61\3\62\3\62\3\63\3\63\3\64\3\64\3") - buf.write("\64\3\64\3\64\5\64\u0463\n\64\3\64\3\64\3\65\3\65\3\65") - buf.write("\3\65\3\66\3\66\3\67\3\67\38\38\39\39\59\u0473\n9\39\3") - buf.write("9\3:\3:\3:\7:\u047a\n:\f:\16:\u047d\13:\3;\3;\3;\3;\3") - buf.write(";\3;\5;\u0485\n;\3<\3<\3=\3=\5=\u048b\n=\3=\3=\5=\u048f") - buf.write("\n=\3>\3>\3>\7>\u0494\n>\f>\16>\u0497\13>\3?\3?\5?\u049b") - buf.write("\n?\3@\3@\3A\3A\3A\3A\3A\3A\5A\u04a5\nA\3B\6B\u04a8\n") - buf.write("B\rB\16B\u04a9\3C\3C\5C\u04ae\nC\3D\3D\3D\3D\3E\3E\3E") - buf.write("\3F\6F\u04b8\nF\rF\16F\u04b9\3G\3G\3H\3H\3H\3I\6I\u04c2") - buf.write("\nI\rI\16I\u04c3\3J\3J\3K\3K\3K\3L\6L\u04cc\nL\rL\16L") - buf.write("\u04cd\3M\3M\3M\3M\3M\3M\3N\3N\3O\6O\u04d9\nO\rO\16O\u04da") - buf.write("\3P\3P\3P\3P\3P\5P\u04e2\nP\3Q\6Q\u04e5\nQ\rQ\16Q\u04e6") - buf.write("\3R\3R\3R\3S\3S\5S\u04ee\nS\3S\3S\3S\3S\3S\5S\u04f5\n") - buf.write("S\3S\3S\3S\3S\3S\7S\u04fc\nS\fS\16S\u04ff\13S\3T\3T\5") - buf.write("T\u0503\nT\3U\3U\3U\3U\3U\3V\3V\3V\3V\3V\3V\3V\3V\5V\u0512") - buf.write("\nV\3W\3W\3X\3X\3X\3X\3X\5X\u051b\nX\3X\3X\3X\5X\u0520") - buf.write("\nX\3Y\3Y\3Y\3Y\3Y\3Y\3Y\7Y\u0529\nY\fY\16Y\u052c\13Y") - buf.write("\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3") - buf.write("Z\3Z\5Z\u0541\nZ\3[\3[\3[\7[\u0546\n[\f[\16[\u0549\13") - buf.write("[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\") - buf.write("\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3") - buf.write("\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\") - buf.write("\3\\\3\\\3\\\5\\\u0576\n\\\3]\3]\3^\3^\3^\3^\5^\u057e") - buf.write("\n^\3_\3_\3_\3_\3_\3_\3_\3_\3_\5_\u0589\n_\3_\3_\3_\7") - buf.write("_\u058e\n_\f_\16_\u0591\13_\3`\3`\3`\3`\5`\u0597\n`\3") - buf.write("a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\5a\u05a8\n") - buf.write("a\3b\3b\3b\3b\3c\3c\3c\5c\u05b1\nc\3c\5c\u05b4\nc\3d\3") - buf.write("d\3d\3d\3d\5d\u05bb\nd\3e\3e\3e\3e\3e\3e\3e\3e\3e\5e\u05c6") - buf.write("\ne\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\5f\u05d5\n") - buf.write("f\3g\3g\3g\3g\3g\7g\u05dc\ng\fg\16g\u05df\13g\3h\3h\5") - buf.write("h\u05e3\nh\3i\3i\3i\3i\3j\3j\3j\7j\u05ec\nj\fj\16j\u05ef") - buf.write("\13j\3k\3k\3l\3l\3l\3l\3l\3l\3l\5l\u05fa\nl\3m\3m\5m\u05fe") - buf.write("\nm\3m\3m\3n\3n\3n\3n\5n\u0606\nn\5n\u0608\nn\3o\3o\3") - buf.write("p\5p\u060d\np\3p\5p\u0610\np\3p\3p\3p\3p\3p\5p\u0617\n") - buf.write("p\3q\3q\5q\u061b\nq\3q\3q\3r\3r\5r\u0621\nr\3r\3r\3s\3") - buf.write("s\3s\7s\u0628\ns\fs\16s\u062b\13s\3t\3t\3u\3u\3u\3u\3") - buf.write("u\7u\u0634\nu\fu\16u\u0637\13u\3v\3v\3v\3v\5v\u063d\n") - buf.write("v\5v\u063f\nv\3w\3w\3w\3w\3x\3x\3x\3x\3x\3x\3x\3x\5x\u064d") - buf.write("\nx\3y\3y\3y\3y\3y\3y\3y\3y\3y\3y\5y\u0659\ny\3z\3z\3") - buf.write("z\3z\3z\7z\u0660\nz\fz\16z\u0663\13z\3{\3{\5{\u0667\n") - buf.write("{\3|\3|\3}\3}\3}\3}\3}\3}\3}\3}\3}\3}\3}\3}\3}\5}\u0678") - buf.write("\n}\3~\3~\3~\7~\u067d\n~\f~\16~\u0680\13~\3\177\3\177") - buf.write("\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write("\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write("\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write("\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write("\3\177\3\177\3\177\3\177\3\177\5\177\u06ad\n\177\3\u0080") - buf.write("\3\u0080\3\u0081\3\u0081\3\u0081\7\u0081\u06b4\n\u0081") - buf.write("\f\u0081\16\u0081\u06b7\13\u0081\3\u0082\3\u0082\3\u0082") - buf.write("\3\u0082\3\u0082\3\u0082\5\u0082\u06bf\n\u0082\3\u0083") - buf.write("\3\u0083\5\u0083\u06c3\n\u0083\3\u0084\3\u0084\3\u0084") - buf.write("\7\u0084\u06c8\n\u0084\f\u0084\16\u0084\u06cb\13\u0084") - buf.write("\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\5\u0085\u06d2") - buf.write("\n\u0085\3\u0086\3\u0086\3\u0087\3\u0087\3\u0088\3\u0088") - buf.write("\3\u0088\7\u0088\u06db\n\u0088\f\u0088\16\u0088\u06de") - buf.write("\13\u0088\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a\3\u008a") - buf.write("\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a") - buf.write("\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a") - buf.write("\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a") - buf.write("\5\u008a\u06fb\n\u008a\3\u008b\3\u008b\3\u008b\3\u008b") - buf.write("\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\5\u008b") - buf.write("\u0707\n\u008b\3\u008c\3\u008c\3\u008d\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008d\5\u008d\u072d\n\u008d\3\u008e") - buf.write("\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\5\u008e\u0735") - buf.write("\n\u008e\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\5\u008f") - buf.write("\u073c\n\u008f\3\u0090\3\u0090\5\u0090\u0740\n\u0090\3") - buf.write("\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090") - buf.write("\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\5\u0090") - buf.write("\u074f\n\u0090\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092") - buf.write("\3\u0092\3\u0092\3\u0093\3\u0093\3\u0093\3\u0093\3\u0094") - buf.write("\3\u0094\3\u0095\3\u0095\5\u0095\u0760\n\u0095\3\u0096") - buf.write("\3\u0096\3\u0096\3\u0097\3\u0097\3\u0098\3\u0098\3\u0099") - buf.write("\3\u0099\3\u0099\5\u0099\u076c\n\u0099\3\u0099\3\u0099") - buf.write("\3\u0099\3\u0099\7\u0099\u0772\n\u0099\f\u0099\16\u0099") - buf.write("\u0775\13\u0099\3\u009a\3\u009a\5\u009a\u0779\n\u009a") - buf.write("\3\u009b\3\u009b\3\u009c\3\u009c\5\u009c\u077f\n\u009c") - buf.write("\3\u009d\3\u009d\3\u009d\3\u009d\3\u009e\3\u009e\3\u009f") - buf.write("\3\u009f\5\u009f\u0789\n\u009f\3\u009f\3\u009f\3\u009f") - buf.write("\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\5\u009f\u0793") - buf.write("\n\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f") - buf.write("\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f") - buf.write("\3\u009f\5\u009f\u07a3\n\u009f\3\u00a0\6\u00a0\u07a6\n") - buf.write("\u00a0\r\u00a0\16\u00a0\u07a7\3\u00a1\3\u00a1\5\u00a1") - buf.write("\u07ac\n\u00a1\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2") - buf.write("\5\u00a2\u07b3\n\u00a2\3\u00a3\3\u00a3\3\u00a3\3\u00a3") - buf.write("\3\u00a3\3\u00a3\5\u00a3\u07bb\n\u00a3\3\u00a4\3\u00a4") - buf.write("\3\u00a4\3\u00a4\3\u00a4\3\u00a4\7\u00a4\u07c3\n\u00a4") - buf.write("\f\u00a4\16\u00a4\u07c6\13\u00a4\3\u00a5\3\u00a5\3\u00a6") - buf.write("\3\u00a6\3\u00a6\5\u00a6\u07cd\n\u00a6\3\u00a7\3\u00a7") - buf.write("\3\u00a7\3\u00a7\3\u00a7\7\u00a7\u07d4\n\u00a7\f\u00a7") - buf.write("\16\u00a7\u07d7\13\u00a7\3\u00a8\3\u00a8\3\u00a8\3\u00a8") - buf.write("\3\u00a8\3\u00a9\3\u00a9\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa") - buf.write("\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\5\u00aa\u07fe") - buf.write("\n\u00aa\3\u00ab\3\u00ab\3\u00ab\3\u00ab\5\u00ab\u0804") - buf.write("\n\u00ab\3\u00ac\3\u00ac\5\u00ac\u0808\n\u00ac\3\u00ac") - buf.write("\3\u00ac\3\u00ac\5\u00ac\u080d\n\u00ac\5\u00ac\u080f\n") - buf.write("\u00ac\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\7\u00ad") - buf.write("\u0816\n\u00ad\f\u00ad\16\u00ad\u0819\13\u00ad\3\u00ae") - buf.write("\3\u00ae\5\u00ae\u081d\n\u00ae\3\u00af\3\u00af\3\u00af") - buf.write("\3\u00af\3\u00af\3\u00af\5\u00af\u0825\n\u00af\3\u00b0") - buf.write("\3\u00b0\3\u00b0\3\u00b0\3\u00b0\5\u00b0\u082c\n\u00b0") - buf.write("\3\u00b1\6\u00b1\u082f\n\u00b1\r\u00b1\16\u00b1\u0830") - buf.write("\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2") - buf.write("\3\u00b2\3\u00b2\3\u00b2\5\u00b2\u083d\n\u00b2\3\u00b3") - buf.write("\3\u00b3\3\u00b3\7\u00b3\u0842\n\u00b3\f\u00b3\16\u00b3") - buf.write("\u0845\13\u00b3\3\u00b3\5\u00b3\u0848\n\u00b3\3\u00b3") - buf.write("\3\u00b3\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4") - buf.write("\3\u00b5\7\u00b5\u0853\n\u00b5\f\u00b5\16\u00b5\u0856") - buf.write("\13\u00b5\3\u00b6\3\u00b6\3\u00b6\3\u00b7\3\u00b7\3\u00b7") - buf.write("\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7") - buf.write("\3\u00b7\3\u00b7\3\u00b7\5\u00b7\u0868\n\u00b7\3\u00b8") - buf.write("\3\u00b8\3\u00b8\3\u00b9\3\u00b9\3\u00ba\3\u00ba\3\u00ba") - buf.write("\5\u00ba\u0872\n\u00ba\3\u00bb\3\u00bb\5\u00bb\u0876\n") - buf.write("\u00bb\3\u00bc\5\u00bc\u0879\n\u00bc\3\u00bc\3\u00bc\5") - buf.write("\u00bc\u087d\n\u00bc\3\u00bc\7\u00bc\u0880\n\u00bc\f\u00bc") - buf.write("\16\u00bc\u0883\13\u00bc\3\u00bc\3\u00bc\3\u00bd\3\u00bd") - buf.write("\5\u00bd\u0889\n\u00bd\3\u00bd\3\u00bd\3\u00bd\5\u00bd") - buf.write("\u088e\n\u00bd\5\u00bd\u0890\n\u00bd\3\u00be\3\u00be\3") - buf.write("\u00bf\3\u00bf\3\u00bf\3\u00c0\3\u00c0\3\u00c0\3\u00c0") - buf.write("\7\u00c0\u089b\n\u00c0\f\u00c0\16\u00c0\u089e\13\u00c0") - buf.write("\3\u00c0\3\u00c0\3\u00c0\3\u00c1\3\u00c1\3\u00c2\3\u00c2") - buf.write("\3\u00c3\3\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4") - buf.write("\5\u00c4\u08ae\n\u00c4\3\u00c5\3\u00c5\3\u00c5\3\u00c5") - buf.write("\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u08b7\n\u00c6\3\u00c6") - buf.write("\7\u00c6\u08ba\n\u00c6\f\u00c6\16\u00c6\u08bd\13\u00c6") - buf.write("\3\u00c7\3\u00c7\3\u00c7\3\u00c8\3\u00c8\3\u00c8\7\u00c8") - buf.write("\u08c5\n\u00c8\f\u00c8\16\u00c8\u08c8\13\u00c8\3\u00c8") - buf.write("\3\u00c8\3\u00c9\3\u00c9\3\u00c9\7\u00c9\u08cf\n\u00c9") - buf.write("\f\u00c9\16\u00c9\u08d2\13\u00c9\3\u00c9\3\u00c9\3\u00ca") - buf.write("\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca") - buf.write("\3\u00ca\5\u00ca\u08df\n\u00ca\3\u00cb\3\u00cb\5\u00cb") - buf.write("\u08e3\n\u00cb\3\u00cc\3\u00cc\5\u00cc\u08e7\n\u00cc\3") - buf.write("\u00cc\5\u00cc\u08ea\n\u00cc\3\u00cd\3\u00cd\3\u00cd\3") - buf.write("\u00cd\3\u00ce\6\u00ce\u08f1\n\u00ce\r\u00ce\16\u00ce") - buf.write("\u08f2\3\u00cf\3\u00cf\3\u00d0\3\u00d0\5\u00d0\u08f9\n") - buf.write("\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d1\3\u00d1\3\u00d1") - buf.write("\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1") - buf.write("\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1") - buf.write("\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\5\u00d1\u0914") - buf.write("\n\u00d1\3\u00d2\6\u00d2\u0917\n\u00d2\r\u00d2\16\u00d2") - buf.write("\u0918\3\u00d3\3\u00d3\3\u00d3\5\u00d3\u091e\n\u00d3\3") - buf.write("\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4\7\u00d4") - buf.write("\u0926\n\u00d4\f\u00d4\16\u00d4\u0929\13\u00d4\3\u00d5") - buf.write("\3\u00d5\3\u00d5\3\u00d5\3\u00d5\3\u00d5\3\u00d5\3\u00d5") - buf.write("\5\u00d5\u0933\n\u00d5\3\u00d6\3\u00d6\3\u00d6\3\u00d6") - buf.write("\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d6\5\u00d6") - buf.write("\u093f\n\u00d6\3\u00d7\3\u00d7\3\u00d8\5\u00d8\u0944\n") - buf.write("\u00d8\3\u00d8\3\u00d8\3\u00d9\3\u00d9\3\u00d9\3\u00d9") - buf.write("\3\u00d9\3\u00d9\5\u00d9\u094e\n\u00d9\3\u00d9\3\u00d9") - buf.write("\3\u00d9\3\u00d9\3\u00d9\5\u00d9\u0955\n\u00d9\3\u00da") - buf.write("\3\u00da\3\u00db\3\u00db\3\u00db\3\u00dc\3\u00dc\3\u00dc") - buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc") - buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc") - buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc") - buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\5\u00dc\u0979") - buf.write("\n\u00dc\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd") - buf.write("\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\5\u00de\u0986") - buf.write("\n\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\5\u00de") - buf.write("\u098d\n\u00de\3\u00df\3\u00df\3\u00e0\3\u00e0\3\u00e0") - buf.write("\3\u00e0\3\u00e0\3\u00e1\3\u00e1\3\u00e1\7\u00e1\u0999") - buf.write("\n\u00e1\f\u00e1\16\u00e1\u099c\13\u00e1\3\u00e2\3\u00e2") - buf.write("\5\u00e2\u09a0\n\u00e2\3\u00e3\3\u00e3\3\u00e3\5\u00e3") - buf.write("\u09a5\n\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3") - buf.write("\7\u00e3\u09ac\n\u00e3\f\u00e3\16\u00e3\u09af\13\u00e3") - buf.write("\3\u00e4\3\u00e4\5\u00e4\u09b3\n\u00e4\3\u00e5\3\u00e5") - buf.write("\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5") - buf.write("\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5\5\u00e5\u09c3") - buf.write("\n\u00e5\3\u00e6\3\u00e6\3\u00e6\7\u00e6\u09c8\n\u00e6") - buf.write("\f\u00e6\16\u00e6\u09cb\13\u00e6\3\u00e7\3\u00e7\5\u00e7") - buf.write("\u09cf\n\u00e7\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8") - buf.write("\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8") - buf.write("\3\u00e8\3\u00e8\5\u00e8\u09df\n\u00e8\3\u00e9\3\u00e9") - buf.write("\3\u00e9\7\u00e9\u09e4\n\u00e9\f\u00e9\16\u00e9\u09e7") - buf.write("\13\u00e9\3\u00ea\3\u00ea\3\u00ea\3\u00ea\5\u00ea\u09ed") - buf.write("\n\u00ea\3\u00eb\3\u00eb\3\u00eb\3\u00eb\3\u00eb\7\u00eb") - buf.write("\u09f4\n\u00eb\f\u00eb\16\u00eb\u09f7\13\u00eb\3\u00ec") - buf.write("\3\u00ec\3\u00ec\3\u00ec\3\u00ed\3\u00ed\5\u00ed\u09ff") - buf.write("\n\u00ed\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\5\u00ee") - buf.write("\u0a06\n\u00ee\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef") - buf.write("\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef") - buf.write("\3\u00ef\3\u00ef\5\u00ef\u0a16\n\u00ef\3\u00ef\3\u00ef") - buf.write("\3\u00ef\7\u00ef\u0a1b\n\u00ef\f\u00ef\16\u00ef\u0a1e") - buf.write("\13\u00ef\3\u00f0\3\u00f0\3\u00f0\3\u00f1\3\u00f1\5\u00f1") - buf.write("\u0a25\n\u00f1\3\u00f1\3\u00f1\3\u00f1\3\u00f1\3\u00f2") - buf.write("\3\u00f2\3\u00f2\7\u00f2\u0a2e\n\u00f2\f\u00f2\16\u00f2") - buf.write("\u0a31\13\u00f2\3\u00f3\3\u00f3\3\u00f4\3\u00f4\5\u00f4") - buf.write("\u0a37\n\u00f4\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5") - buf.write("\3\u00f5\3\u00f5\5\u00f5\u0a40\n\u00f5\3\u00f6\3\u00f6") - buf.write("\3\u00f6\5\u00f6\u0a45\n\u00f6\3\u00f6\3\u00f6\3\u00f6") - buf.write("\5\u00f6\u0a4a\n\u00f6\5\u00f6\u0a4c\n\u00f6\3\u00f7\3") - buf.write("\u00f7\3\u00f7\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8") - buf.write("\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8") - buf.write("\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\5\u00f8\u0a62") - buf.write("\n\u00f8\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00fa\3\u00fa") - buf.write("\3\u00fa\7\u00fa\u0a6b\n\u00fa\f\u00fa\16\u00fa\u0a6e") - buf.write("\13\u00fa\3\u00fb\3\u00fb\5\u00fb\u0a72\n\u00fb\3\u00fc") - buf.write("\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc") - buf.write("\3\u00fc\5\u00fc\u0a7d\n\u00fc\3\u00fc\3\u00fc\3\u00fd") - buf.write("\3\u00fd\3\u00fd\3\u00fd\3\u00fd\5\u00fd\u0a86\n\u00fd") - buf.write("\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe") - buf.write("\5\u00fe\u0a8f\n\u00fe\3\u00ff\3\u00ff\3\u00ff\3\u00ff") - buf.write("\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u00ff\5\u00ff") - buf.write("\u0a9b\n\u00ff\3\u00ff\3\u00ff\3\u00ff\7\u00ff\u0aa0\n") - buf.write("\u00ff\f\u00ff\16\u00ff\u0aa3\13\u00ff\3\u0100\3\u0100") - buf.write("\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100") - buf.write("\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100") - buf.write("\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100") - buf.write("\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100\3\u0100") - buf.write("\5\u0100\u0ac3\n\u0100\3\u0101\3\u0101\3\u0101\3\u0101") - buf.write("\3\u0101\3\u0101\3\u0101\5\u0101\u0acc\n\u0101\3\u0102") - buf.write("\3\u0102\5\u0102\u0ad0\n\u0102\3\u0103\3\u0103\3\u0103") - buf.write("\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103") - buf.write("\5\u0103\u0adc\n\u0103\3\u0103\3\u0103\3\u0103\3\u0103") - buf.write("\3\u0103\3\u0103\7\u0103\u0ae4\n\u0103\f\u0103\16\u0103") - buf.write("\u0ae7\13\u0103\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104") - buf.write("\3\u0104\3\u0104\3\u0104\3\u0104\5\u0104\u0af2\n\u0104") - buf.write("\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104") - buf.write("\3\u0104\3\u0104\3\u0104\3\u0104\5\u0104\u0aff\n\u0104") - buf.write("\3\u0104\3\u0104\5\u0104\u0b03\n\u0104\3\u0105\3\u0105") - buf.write("\3\u0105\5\u0105\u0b08\n\u0105\3\u0106\3\u0106\5\u0106") - buf.write("\u0b0c\n\u0106\3\u0107\3\u0107\3\u0107\3\u0107\3\u0107") - buf.write("\3\u0108\5\u0108\u0b14\n\u0108\3\u0108\5\u0108\u0b17\n") - buf.write("\u0108\3\u0108\3\u0108\7\u0108\u0b1b\n\u0108\f\u0108\16") - buf.write("\u0108\u0b1e\13\u0108\3\u0109\3\u0109\3\u0109\3\u0109") - buf.write("\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109") - buf.write("\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109") - buf.write("\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109") - buf.write("\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109") - buf.write("\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109\3\u0109") - buf.write("\5\u0109\u0b47\n\u0109\3\u010a\3\u010a\3\u010a\3\u010a") - buf.write("\3\u010a\3\u010a\3\u010a\3\u010a\3\u010a\3\u010a\3\u010a") - buf.write("\3\u010a\3\u010a\5\u010a\u0b56\n\u010a\3\u010b\5\u010b") - buf.write("\u0b59\n\u010b\3\u010b\5\u010b\u0b5c\n\u010b\3\u010b\3") - buf.write("\u010b\7\u010b\u0b60\n\u010b\f\u010b\16\u010b\u0b63\13") - buf.write("\u010b\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c") - buf.write("\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\3\u010c\5\u010c") - buf.write("\u0bb0\n\u010c\3\u010d\3\u010d\3\u010d\5\u010d\u0bb5\n") - buf.write("\u010d\3\u010d\3\u010d\3\u010d\3\u010d\5\u010d\u0bbb\n") - buf.write("\u010d\3\u010d\3\u010d\3\u010d\3\u010d\3\u010d\3\u010d") - buf.write("\3\u010d\3\u010d\5\u010d\u0bc5\n\u010d\3\u010d\3\u010d") - buf.write("\3\u010d\3\u010d\3\u010d\5\u010d\u0bcc\n\u010d\3\u010e") - buf.write("\3\u010e\3\u010e\3\u010f\3\u010f\3\u010f\5\u010f\u0bd4") - buf.write("\n\u010f\3\u010f\3\u010f\3\u0110\3\u0110\3\u0110\3\u0110") - buf.write("\3\u0110\5\u0110\u0bdd\n\u0110\3\u0110\3\u0110\3\u0111") - buf.write("\3\u0111\3\u0111\7\u0111\u0be4\n\u0111\f\u0111\16\u0111") - buf.write("\u0be7\13\u0111\3\u0112\3\u0112\3\u0112\5\u0112\u0bec") - buf.write("\n\u0112\3\u0112\3\u0112\3\u0112\3\u0112\5\u0112\u0bf2") - buf.write("\n\u0112\3\u0112\3\u0112\3\u0112\3\u0112\5\u0112\u0bf8") - buf.write("\n\u0112\3\u0113\3\u0113\3\u0114\3\u0114\3\u0114\3\u0114") - buf.write("\3\u0114\3\u0115\5\u0115\u0c02\n\u0115\3\u0115\5\u0115") - buf.write("\u0c05\n\u0115\3\u0115\3\u0115\7\u0115\u0c09\n\u0115\f") - buf.write("\u0115\16\u0115\u0c0c\13\u0115\3\u0116\3\u0116\3\u0116") - buf.write("\3\u0116\3\u0116\3\u0116\3\u0116\3\u0116\3\u0116\3\u0116") - buf.write("\3\u0116\5\u0116\u0c19\n\u0116\3\u0117\3\u0117\7\u0117") - buf.write("\u0c1d\n\u0117\f\u0117\16\u0117\u0c20\13\u0117\3\u0118") - buf.write("\3\u0118\3\u0118\3\u0118\3\u0118\5\u0118\u0c27\n\u0118") - buf.write("\3\u0119\3\u0119\3\u0119\5\u0119\u0c2c\n\u0119\3\u011a") - buf.write("\3\u011a\3\u011a\3\u011a\3\u011a\3\u011a\3\u011b\3\u011b") - buf.write("\3\u011b\3\u011b\3\u011b\3\u011b\3\u011b\3\u011b\5\u011b") - buf.write("\u0c3c\n\u011b\3\u011c\3\u011c\3\u011d\5\u011d\u0c41\n") - buf.write("\u011d\3\u011d\3\u011d\7\u011d\u0c45\n\u011d\f\u011d\16") - buf.write("\u011d\u0c48\13\u011d\3\u011e\3\u011e\3\u011e\3\u011e") - buf.write("\3\u011e\3\u011e\3\u011e\3\u011e\3\u011e\3\u011e\3\u011e") - buf.write("\3\u011e\3\u011e\3\u011e\5\u011e\u0c58\n\u011e\3\u011f") - buf.write("\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f") - buf.write("\3\u011f\3\u011f\3\u0120\3\u0120\3\u0121\3\u0121\3\u0122") - buf.write("\5\u0122\u0c69\n\u0122\3\u0122\3\u0122\5\u0122\u0c6d\n") - buf.write("\u0122\3\u0122\5\u0122\u0c70\n\u0122\3\u0122\3\u0122\3") - buf.write("\u0122\3\u0122\5\u0122\u0c76\n\u0122\3\u0122\3\u0122\3") - buf.write("\u0122\3\u0122\3\u0122\3\u0122\3\u0122\3\u0122\3\u0122") - buf.write("\3\u0122\3\u0122\3\u0122\3\u0122\3\u0122\5\u0122\u0c86") - buf.write("\n\u0122\3\u0123\3\u0123\3\u0123\7\u0123\u0c8b\n\u0123") - buf.write("\f\u0123\16\u0123\u0c8e\13\u0123\3\u0123\3\u0123\3\u0124") - buf.write("\3\u0124\5\u0124\u0c94\n\u0124\3\u0124\5\u0124\u0c97\n") - buf.write("\u0124\3\u0124\3\u0124\5\u0124\u0c9b\n\u0124\3\u0124\5") - buf.write("\u0124\u0c9e\n\u0124\3\u0124\3\u0124\3\u0124\3\u0124\3") - buf.write("\u0124\3\u0124\5\u0124\u0ca6\n\u0124\3\u0124\3\u0124\5") - buf.write("\u0124\u0caa\n\u0124\3\u0125\3\u0125\3\u0125\3\u0126\3") - buf.write("\u0126\3\u0126\3\u0126\3\u0126\3\u0127\3\u0127\3\u0127") - buf.write("\3\u0127\3\u0127\3\u0127\3\u0127\5\u0127\u0cbb\n\u0127") - buf.write("\3\u0128\3\u0128\5\u0128\u0cbf\n\u0128\3\u0129\5\u0129") - buf.write("\u0cc2\n\u0129\3\u0129\6\u0129\u0cc5\n\u0129\r\u0129\16") - buf.write("\u0129\u0cc6\3\u012a\3\u012a\5\u012a\u0ccb\n\u012a\3\u012b") - buf.write("\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b") - buf.write("\3\u012b\5\u012b\u0cd6\n\u012b\3\u012c\3\u012c\5\u012c") - buf.write("\u0cda\n\u012c\3\u012d\3\u012d\3\u012d\3\u012d\5\u012d") - buf.write("\u0ce0\n\u012d\3\u012d\3\u012d\3\u012d\7\u012d\u0ce5\n") - buf.write("\u012d\f\u012d\16\u012d\u0ce8\13\u012d\3\u012e\3\u012e") - buf.write("\3\u012e\3\u012e\3\u012e\3\u012e\3\u012e\3\u012e\3\u012e") - buf.write("\3\u012e\3\u012e\7\u012e\u0cf5\n\u012e\f\u012e\16\u012e") - buf.write("\u0cf8\13\u012e\3\u012f\3\u012f\3\u012f\3\u012f\3\u012f") - buf.write("\5\u012f\u0cff\n\u012f\3\u0130\3\u0130\3\u0130\3\u0130") - buf.write("\3\u0130\3\u0130\3\u0130\3\u0130\5\u0130\u0d09\n\u0130") - buf.write("\3\u0131\3\u0131\3\u0131\3\u0131\3\u0131\3\u0131\3\u0131") - buf.write("\3\u0131\3\u0131\5\u0131\u0d14\n\u0131\3\u0132\3\u0132") - buf.write("\3\u0133\3\u0133\5\u0133\u0d1a\n\u0133\3\u0133\3\u0133") - buf.write("\3\u0133\3\u0133\3\u0133\3\u0133\5\u0133\u0d22\n\u0133") - buf.write("\3\u0134\3\u0134\3\u0134\3\u0135\3\u0135\3\u0135\3\u0135") - buf.write("\5\u0135\u0d2b\n\u0135\3\u0136\3\u0136\3\u0136\7\u0136") - buf.write("\u0d30\n\u0136\f\u0136\16\u0136\u0d33\13\u0136\3\u0137") - buf.write("\3\u0137\3\u0137\3\u0137\3\u0137\3\u0137\3\u0137\3\u0137") - buf.write("\5\u0137\u0d3d\n\u0137\3\u0138\5\u0138\u0d40\n\u0138\3") - buf.write("\u0138\3\u0138\7\u0138\u0d44\n\u0138\f\u0138\16\u0138") - buf.write("\u0d47\13\u0138\3\u0139\3\u0139\3\u0139\3\u0139\3\u013a") - buf.write("\3\u013a\3\u013a\3\u013a\3\u013a\3\u013a\3\u013a\7\u013a") - buf.write("\u0d54\n\u013a\f\u013a\16\u013a\u0d57\13\u013a\3\u013b") - buf.write("\3\u013b\3\u013c\3\u013c\3\u013c\7\u013c\u0d5e\n\u013c") - buf.write("\f\u013c\16\u013c\u0d61\13\u013c\3\u013d\3\u013d\3\u013d") - buf.write("\7\u013d\u0d66\n\u013d\f\u013d\16\u013d\u0d69\13\u013d") - buf.write("\3\u013e\3\u013e\3\u013e\7\u013e\u0d6e\n\u013e\f\u013e") - buf.write("\16\u013e\u0d71\13\u013e\3\u013f\5\u013f\u0d74\n\u013f") - buf.write("\3\u013f\3\u013f\3\u0140\3\u0140\3\u0141\3\u0141\3\u0141") - buf.write("\3\u0141\7\u0141\u0d7e\n\u0141\f\u0141\16\u0141\u0d81") - buf.write("\13\u0141\3\u0142\3\u0142\3\u0142\5\u0142\u0d86\n\u0142") - buf.write("\3\u0142\3\u0142\5\u0142\u0d8a\n\u0142\3\u0142\7\u0142") - buf.write("\u0d8d\n\u0142\f\u0142\16\u0142\u0d90\13\u0142\3\u0143") - buf.write("\5\u0143\u0d93\n\u0143\3\u0143\3\u0143\3\u0143\7\u0143") - buf.write("\u0d98\n\u0143\f\u0143\16\u0143\u0d9b\13\u0143\3\u0144") - buf.write("\3\u0144\3\u0145\3\u0145\3\u0145\7\u0145\u0da2\n\u0145") - buf.write("\f\u0145\16\u0145\u0da5\13\u0145\3\u0146\3\u0146\3\u0146") - buf.write("\7\u0146\u0daa\n\u0146\f\u0146\16\u0146\u0dad\13\u0146") - buf.write("\3\u0147\3\u0147\3\u0147\3\u0147\5\u0147\u0db3\n\u0147") - buf.write("\3\u0148\3\u0148\3\u0149\3\u0149\3\u0149\3\u0149\3\u0149") - buf.write("\3\u0149\3\u0149\3\u0149\3\u0149\3\u0149\5\u0149\u0dc1") - buf.write("\n\u0149\3\u014a\3\u014a\3\u014a\3\u014a\3\u014b\3\u014b") - buf.write("\5\u014b\u0dc9\n\u014b\3\u014c\3\u014c\3\u014c\3\u014c") - buf.write("\3\u014c\3\u014c\3\u014c\3\u014c\3\u014c\3\u014c\5\u014c") - buf.write("\u0dd5\n\u014c\3\u014c\3\u014c\3\u014c\3\u014c\3\u014c") - buf.write("\3\u014c\7\u014c\u0ddd\n\u014c\f\u014c\16\u014c\u0de0") - buf.write("\13\u014c\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d") - buf.write("\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d") - buf.write("\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d") - buf.write("\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d") - buf.write("\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d") - buf.write("\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d\3\u014d") - buf.write("\3\u014d\3\u014d\3\u014d\5\u014d\u0e0e\n\u014d\3\u014e") - buf.write("\3\u014e\3\u014e\3\u014e\3\u014e\3\u014e\3\u014e\3\u014e") - buf.write("\5\u014e\u0e18\n\u014e\3\u014f\3\u014f\3\u014f\3\u014f") - buf.write("\3\u014f\3\u014f\5\u014f\u0e20\n\u014f\3\u014f\3\u014f") - buf.write("\3\u014f\7\u014f\u0e25\n\u014f\f\u014f\16\u014f\u0e28") - buf.write("\13\u014f\3\u0150\3\u0150\3\u0150\3\u0150\3\u0151\3\u0151") - buf.write("\7\u0151\u0e30\n\u0151\f\u0151\16\u0151\u0e33\13\u0151") - buf.write("\3\u0152\3\u0152\3\u0152\5\u0152\u0e38\n\u0152\3\u0153") - buf.write("\3\u0153\3\u0153\3\u0153\3\u0154\3\u0154\3\u0154\7\u0154") - buf.write("\u0e41\n\u0154\f\u0154\16\u0154\u0e44\13\u0154\3\u0155") - buf.write("\3\u0155\5\u0155\u0e48\n\u0155\3\u0155\5\u0155\u0e4b\n") - buf.write("\u0155\3\u0156\3\u0156\5\u0156\u0e4f\n\u0156\3\u0156\3") - buf.write("\u0156\3\u0156\3\u0156\3\u0156\3\u0156\3\u0156\5\u0156") - buf.write("\u0e58\n\u0156\3\u0157\3\u0157\3\u0157\3\u0157\3\u0157") - buf.write("\3\u0157\3\u0157\3\u0157\3\u0157\5\u0157\u0e63\n\u0157") - buf.write("\3\u0158\3\u0158\5\u0158\u0e67\n\u0158\3\u0159\3\u0159") - buf.write("\3\u0159\3\u0159\3\u0159\3\u0159\3\u0159\3\u0159\5\u0159") - buf.write("\u0e71\n\u0159\3\u015a\3\u015a\3\u015a\3\u015a\3\u015a") - buf.write("\3\u015b\5\u015b\u0e79\n\u015b\3\u015b\3\u015b\3\u015b") - buf.write("\5\u015b\u0e7e\n\u015b\3\u015c\3\u015c\3\u015d\3\u015d") - buf.write("\3\u015d\3\u015d\3\u015d\3\u015d\3\u015d\2\33\16,\64`") - buf.write("\u00a4\u00b0\u00bc\u00cc\u00e8\u00f2\u0130\u0146\u014c") - buf.write("\u0158\u01a6\u01c4\u01d4\u01dc\u01fc\u0204\u0258\u025a") - buf.write("\u0272\u0296\u029c\u015e\2\4\6\b\n\f\16\20\22\24\26\30") - buf.write("\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`b") - buf.write("dfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c") - buf.write("\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e") - buf.write("\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0") - buf.write("\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2") - buf.write("\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4") - buf.write("\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6") - buf.write("\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8") - buf.write("\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a") - buf.write("\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c") - buf.write("\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e") - buf.write("\u0130\u0132\u0134\u0136\u0138\u013a\u013c\u013e\u0140") - buf.write("\u0142\u0144\u0146\u0148\u014a\u014c\u014e\u0150\u0152") - buf.write("\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164") - buf.write("\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176") - buf.write("\u0178\u017a\u017c\u017e\u0180\u0182\u0184\u0186\u0188") - buf.write("\u018a\u018c\u018e\u0190\u0192\u0194\u0196\u0198\u019a") - buf.write("\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac") - buf.write("\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be") - buf.write("\u01c0\u01c2\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0") - buf.write("\u01d2\u01d4\u01d6\u01d8\u01da\u01dc\u01de\u01e0\u01e2") - buf.write("\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f0\u01f2\u01f4") - buf.write("\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206") - buf.write("\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218") - buf.write("\u021a\u021c\u021e\u0220\u0222\u0224\u0226\u0228\u022a") - buf.write("\u022c\u022e\u0230\u0232\u0234\u0236\u0238\u023a\u023c") - buf.write("\u023e\u0240\u0242\u0244\u0246\u0248\u024a\u024c\u024e") - buf.write("\u0250\u0252\u0254\u0256\u0258\u025a\u025c\u025e\u0260") - buf.write("\u0262\u0264\u0266\u0268\u026a\u026c\u026e\u0270\u0272") - buf.write("\u0274\u0276\u0278\u027a\u027c\u027e\u0280\u0282\u0284") - buf.write("\u0286\u0288\u028a\u028c\u028e\u0290\u0292\u0294\u0296") - buf.write("\u0298\u029a\u029c\u029e\u02a0\u02a2\u02a4\u02a6\u02a8") - buf.write("\u02aa\u02ac\u02ae\u02b0\u02b2\u02b4\u02b6\u02b8\2\16") - buf.write("\3\2\25\27\3\2\u0085\u0086\3\2\u0091\u0096\3\2\u008d\u008e") - buf.write("\3\2()\3\2\u00b0\u00b2\4\2\u00b3\u00b3\u00bc\u00bc\4\2") - buf.write("\u0087\u0087\u00c2\u00c2\4\2\36\36\u0091\u0096\5\2$$V") - buf.write("V\u00be\u00be\3\2\u0097\u0098\4\2\u00b4\u00b4\u00bc\u00bc") - buf.write("\2\u0f54\2\u02ba\3\2\2\2\4\u02bd\3\2\2\2\6\u02c6\3\2\2") - buf.write("\2\b\u02c9\3\2\2\2\n\u02cd\3\2\2\2\f\u02d7\3\2\2\2\16") - buf.write("\u02e1\3\2\2\2\20\u02ec\3\2\2\2\22\u02f5\3\2\2\2\24\u0308") - buf.write("\3\2\2\2\26\u030a\3\2\2\2\30\u0318\3\2\2\2\32\u031a\3") - buf.write("\2\2\2\34\u0322\3\2\2\2\36\u0326\3\2\2\2 \u0328\3\2\2") - buf.write("\2\"\u032e\3\2\2\2$\u0332\3\2\2\2&\u033c\3\2\2\2(\u0345") - buf.write("\3\2\2\2*\u0350\3\2\2\2,\u0352\3\2\2\2.\u035c\3\2\2\2") - buf.write("\60\u0373\3\2\2\2\62\u0375\3\2\2\2\64\u0382\3\2\2\2\66") - buf.write("\u03a2\3\2\2\28\u03ad\3\2\2\2:\u03b7\3\2\2\2<\u03c0\3") - buf.write("\2\2\2>\u03cc\3\2\2\2@\u03ce\3\2\2\2B\u03db\3\2\2\2D\u03dd") - buf.write("\3\2\2\2F\u03e7\3\2\2\2H\u03ed\3\2\2\2J\u03fd\3\2\2\2") - buf.write("L\u03ff\3\2\2\2N\u0405\3\2\2\2P\u0413\3\2\2\2R\u0415\3") - buf.write("\2\2\2T\u041b\3\2\2\2V\u0429\3\2\2\2X\u042b\3\2\2\2Z\u0431") - buf.write("\3\2\2\2\\\u0439\3\2\2\2^\u043b\3\2\2\2`\u043e\3\2\2\2") - buf.write("b\u0459\3\2\2\2d\u045b\3\2\2\2f\u045d\3\2\2\2h\u0466\3") - buf.write("\2\2\2j\u046a\3\2\2\2l\u046c\3\2\2\2n\u046e\3\2\2\2p\u0470") - buf.write("\3\2\2\2r\u0476\3\2\2\2t\u0484\3\2\2\2v\u0486\3\2\2\2") - buf.write("x\u048e\3\2\2\2z\u0490\3\2\2\2|\u049a\3\2\2\2~\u049c\3") - buf.write("\2\2\2\u0080\u04a4\3\2\2\2\u0082\u04a7\3\2\2\2\u0084\u04ad") - buf.write("\3\2\2\2\u0086\u04af\3\2\2\2\u0088\u04b3\3\2\2\2\u008a") - buf.write("\u04b7\3\2\2\2\u008c\u04bb\3\2\2\2\u008e\u04bd\3\2\2\2") - buf.write("\u0090\u04c1\3\2\2\2\u0092\u04c5\3\2\2\2\u0094\u04c7\3") - buf.write("\2\2\2\u0096\u04cb\3\2\2\2\u0098\u04cf\3\2\2\2\u009a\u04d5") - buf.write("\3\2\2\2\u009c\u04d8\3\2\2\2\u009e\u04e1\3\2\2\2\u00a0") - buf.write("\u04e4\3\2\2\2\u00a2\u04e8\3\2\2\2\u00a4\u04eb\3\2\2\2") - buf.write("\u00a6\u0502\3\2\2\2\u00a8\u0504\3\2\2\2\u00aa\u0511\3") - buf.write("\2\2\2\u00ac\u0513\3\2\2\2\u00ae\u051f\3\2\2\2\u00b0\u0521") - buf.write("\3\2\2\2\u00b2\u0540\3\2\2\2\u00b4\u0542\3\2\2\2\u00b6") - buf.write("\u0575\3\2\2\2\u00b8\u0577\3\2\2\2\u00ba\u057d\3\2\2\2") - buf.write("\u00bc\u0588\3\2\2\2\u00be\u0596\3\2\2\2\u00c0\u05a7\3") - buf.write("\2\2\2\u00c2\u05a9\3\2\2\2\u00c4\u05b0\3\2\2\2\u00c6\u05ba") - buf.write("\3\2\2\2\u00c8\u05c5\3\2\2\2\u00ca\u05d4\3\2\2\2\u00cc") - buf.write("\u05d6\3\2\2\2\u00ce\u05e2\3\2\2\2\u00d0\u05e4\3\2\2\2") - buf.write("\u00d2\u05e8\3\2\2\2\u00d4\u05f0\3\2\2\2\u00d6\u05f9\3") - buf.write("\2\2\2\u00d8\u05fb\3\2\2\2\u00da\u0607\3\2\2\2\u00dc\u0609") - buf.write("\3\2\2\2\u00de\u0616\3\2\2\2\u00e0\u0618\3\2\2\2\u00e2") - buf.write("\u061e\3\2\2\2\u00e4\u0624\3\2\2\2\u00e6\u062c\3\2\2\2") - buf.write("\u00e8\u062e\3\2\2\2\u00ea\u063e\3\2\2\2\u00ec\u0640\3") - buf.write("\2\2\2\u00ee\u064c\3\2\2\2\u00f0\u0658\3\2\2\2\u00f2\u065a") - buf.write("\3\2\2\2\u00f4\u0666\3\2\2\2\u00f6\u0668\3\2\2\2\u00f8") - buf.write("\u0677\3\2\2\2\u00fa\u0679\3\2\2\2\u00fc\u06ac\3\2\2\2") - buf.write("\u00fe\u06ae\3\2\2\2\u0100\u06b0\3\2\2\2\u0102\u06be\3") - buf.write("\2\2\2\u0104\u06c2\3\2\2\2\u0106\u06c4\3\2\2\2\u0108\u06d1") - buf.write("\3\2\2\2\u010a\u06d3\3\2\2\2\u010c\u06d5\3\2\2\2\u010e") - buf.write("\u06d7\3\2\2\2\u0110\u06df\3\2\2\2\u0112\u06fa\3\2\2\2") - buf.write("\u0114\u0706\3\2\2\2\u0116\u0708\3\2\2\2\u0118\u072c\3") - buf.write("\2\2\2\u011a\u0734\3\2\2\2\u011c\u073b\3\2\2\2\u011e\u074e") - buf.write("\3\2\2\2\u0120\u0750\3\2\2\2\u0122\u0752\3\2\2\2\u0124") - buf.write("\u0757\3\2\2\2\u0126\u075b\3\2\2\2\u0128\u075f\3\2\2\2") - buf.write("\u012a\u0761\3\2\2\2\u012c\u0764\3\2\2\2\u012e\u0766\3") - buf.write("\2\2\2\u0130\u076b\3\2\2\2\u0132\u0778\3\2\2\2\u0134\u077a") - buf.write("\3\2\2\2\u0136\u077e\3\2\2\2\u0138\u0780\3\2\2\2\u013a") - buf.write("\u0784\3\2\2\2\u013c\u07a2\3\2\2\2\u013e\u07a5\3\2\2\2") - buf.write("\u0140\u07ab\3\2\2\2\u0142\u07b2\3\2\2\2\u0144\u07ba\3") - buf.write("\2\2\2\u0146\u07bc\3\2\2\2\u0148\u07c7\3\2\2\2\u014a\u07cc") - buf.write("\3\2\2\2\u014c\u07ce\3\2\2\2\u014e\u07d8\3\2\2\2\u0150") - buf.write("\u07dd\3\2\2\2\u0152\u07fd\3\2\2\2\u0154\u0803\3\2\2\2") - buf.write("\u0156\u080e\3\2\2\2\u0158\u0810\3\2\2\2\u015a\u081c\3") - buf.write("\2\2\2\u015c\u0824\3\2\2\2\u015e\u082b\3\2\2\2\u0160\u082e") - buf.write("\3\2\2\2\u0162\u083c\3\2\2\2\u0164\u083e\3\2\2\2\u0166") - buf.write("\u084b\3\2\2\2\u0168\u0854\3\2\2\2\u016a\u0857\3\2\2\2") - buf.write("\u016c\u0867\3\2\2\2\u016e\u0869\3\2\2\2\u0170\u086c\3") - buf.write("\2\2\2\u0172\u0871\3\2\2\2\u0174\u0875\3\2\2\2\u0176\u0878") - buf.write("\3\2\2\2\u0178\u088f\3\2\2\2\u017a\u0891\3\2\2\2\u017c") - buf.write("\u0893\3\2\2\2\u017e\u0896\3\2\2\2\u0180\u08a2\3\2\2\2") - buf.write("\u0182\u08a4\3\2\2\2\u0184\u08a6\3\2\2\2\u0186\u08ad\3") - buf.write("\2\2\2\u0188\u08af\3\2\2\2\u018a\u08b3\3\2\2\2\u018c\u08be") - buf.write("\3\2\2\2\u018e\u08c1\3\2\2\2\u0190\u08cb\3\2\2\2\u0192") - buf.write("\u08de\3\2\2\2\u0194\u08e2\3\2\2\2\u0196\u08e4\3\2\2\2") - buf.write("\u0198\u08eb\3\2\2\2\u019a\u08f0\3\2\2\2\u019c\u08f4\3") - buf.write("\2\2\2\u019e\u08f6\3\2\2\2\u01a0\u0913\3\2\2\2\u01a2\u0916") - buf.write("\3\2\2\2\u01a4\u091d\3\2\2\2\u01a6\u091f\3\2\2\2\u01a8") - buf.write("\u0932\3\2\2\2\u01aa\u093e\3\2\2\2\u01ac\u0940\3\2\2\2") - buf.write("\u01ae\u0943\3\2\2\2\u01b0\u0954\3\2\2\2\u01b2\u0956\3") - buf.write("\2\2\2\u01b4\u0958\3\2\2\2\u01b6\u0978\3\2\2\2\u01b8\u097a") - buf.write("\3\2\2\2\u01ba\u098c\3\2\2\2\u01bc\u098e\3\2\2\2\u01be") - buf.write("\u0990\3\2\2\2\u01c0\u0995\3\2\2\2\u01c2\u099f\3\2\2\2") - buf.write("\u01c4\u09a1\3\2\2\2\u01c6\u09b0\3\2\2\2\u01c8\u09c2\3") - buf.write("\2\2\2\u01ca\u09c4\3\2\2\2\u01cc\u09cc\3\2\2\2\u01ce\u09de") - buf.write("\3\2\2\2\u01d0\u09e0\3\2\2\2\u01d2\u09ec\3\2\2\2\u01d4") - buf.write("\u09ee\3\2\2\2\u01d6\u09f8\3\2\2\2\u01d8\u09fc\3\2\2\2") - buf.write("\u01da\u0a00\3\2\2\2\u01dc\u0a15\3\2\2\2\u01de\u0a1f\3") - buf.write("\2\2\2\u01e0\u0a22\3\2\2\2\u01e2\u0a2a\3\2\2\2\u01e4\u0a32") - buf.write("\3\2\2\2\u01e6\u0a34\3\2\2\2\u01e8\u0a3f\3\2\2\2\u01ea") - buf.write("\u0a4b\3\2\2\2\u01ec\u0a4d\3\2\2\2\u01ee\u0a61\3\2\2\2") - buf.write("\u01f0\u0a63\3\2\2\2\u01f2\u0a67\3\2\2\2\u01f4\u0a71\3") - buf.write("\2\2\2\u01f6\u0a73\3\2\2\2\u01f8\u0a85\3\2\2\2\u01fa\u0a8e") - buf.write("\3\2\2\2\u01fc\u0a9a\3\2\2\2\u01fe\u0ac2\3\2\2\2\u0200") - buf.write("\u0acb\3\2\2\2\u0202\u0acf\3\2\2\2\u0204\u0adb\3\2\2\2") - buf.write("\u0206\u0b02\3\2\2\2\u0208\u0b07\3\2\2\2\u020a\u0b09\3") - buf.write("\2\2\2\u020c\u0b0d\3\2\2\2\u020e\u0b13\3\2\2\2\u0210\u0b46") - buf.write("\3\2\2\2\u0212\u0b55\3\2\2\2\u0214\u0b58\3\2\2\2\u0216") - buf.write("\u0baf\3\2\2\2\u0218\u0bcb\3\2\2\2\u021a\u0bcd\3\2\2\2") - buf.write("\u021c\u0bd3\3\2\2\2\u021e\u0bd7\3\2\2\2\u0220\u0be0\3") - buf.write("\2\2\2\u0222\u0bf7\3\2\2\2\u0224\u0bf9\3\2\2\2\u0226\u0bfb") - buf.write("\3\2\2\2\u0228\u0c01\3\2\2\2\u022a\u0c18\3\2\2\2\u022c") - buf.write("\u0c1a\3\2\2\2\u022e\u0c26\3\2\2\2\u0230\u0c2b\3\2\2\2") - buf.write("\u0232\u0c2d\3\2\2\2\u0234\u0c3b\3\2\2\2\u0236\u0c3d\3") - buf.write("\2\2\2\u0238\u0c40\3\2\2\2\u023a\u0c57\3\2\2\2\u023c\u0c59") - buf.write("\3\2\2\2\u023e\u0c63\3\2\2\2\u0240\u0c65\3\2\2\2\u0242") - buf.write("\u0c85\3\2\2\2\u0244\u0c87\3\2\2\2\u0246\u0ca9\3\2\2\2") - buf.write("\u0248\u0cab\3\2\2\2\u024a\u0cae\3\2\2\2\u024c\u0cba\3") - buf.write("\2\2\2\u024e\u0cbe\3\2\2\2\u0250\u0cc1\3\2\2\2\u0252\u0cc8") - buf.write("\3\2\2\2\u0254\u0cd5\3\2\2\2\u0256\u0cd9\3\2\2\2\u0258") - buf.write("\u0cdf\3\2\2\2\u025a\u0ce9\3\2\2\2\u025c\u0cfe\3\2\2\2") - buf.write("\u025e\u0d08\3\2\2\2\u0260\u0d13\3\2\2\2\u0262\u0d15\3") - buf.write("\2\2\2\u0264\u0d21\3\2\2\2\u0266\u0d23\3\2\2\2\u0268\u0d2a") - buf.write("\3\2\2\2\u026a\u0d2c\3\2\2\2\u026c\u0d3c\3\2\2\2\u026e") - buf.write("\u0d3f\3\2\2\2\u0270\u0d48\3\2\2\2\u0272\u0d4c\3\2\2\2") - buf.write("\u0274\u0d58\3\2\2\2\u0276\u0d5a\3\2\2\2\u0278\u0d62\3") - buf.write("\2\2\2\u027a\u0d6a\3\2\2\2\u027c\u0d73\3\2\2\2\u027e\u0d77") - buf.write("\3\2\2\2\u0280\u0d79\3\2\2\2\u0282\u0d82\3\2\2\2\u0284") - buf.write("\u0d92\3\2\2\2\u0286\u0d9c\3\2\2\2\u0288\u0d9e\3\2\2\2") - buf.write("\u028a\u0da6\3\2\2\2\u028c\u0db2\3\2\2\2\u028e\u0db4\3") - buf.write("\2\2\2\u0290\u0dc0\3\2\2\2\u0292\u0dc2\3\2\2\2\u0294\u0dc8") - buf.write("\3\2\2\2\u0296\u0dd4\3\2\2\2\u0298\u0e0d\3\2\2\2\u029a") - buf.write("\u0e17\3\2\2\2\u029c\u0e1f\3\2\2\2\u029e\u0e29\3\2\2\2") - buf.write("\u02a0\u0e2d\3\2\2\2\u02a2\u0e37\3\2\2\2\u02a4\u0e39\3") - buf.write("\2\2\2\u02a6\u0e3d\3\2\2\2\u02a8\u0e4a\3\2\2\2\u02aa\u0e57") - buf.write("\3\2\2\2\u02ac\u0e62\3\2\2\2\u02ae\u0e66\3\2\2\2\u02b0") - buf.write("\u0e70\3\2\2\2\u02b2\u0e72\3\2\2\2\u02b4\u0e7d\3\2\2\2") - buf.write("\u02b6\u0e7f\3\2\2\2\u02b8\u0e81\3\2\2\2\u02ba\u02bb\5") - buf.write("\4\3\2\u02bb\3\3\2\2\2\u02bc\u02be\5\6\4\2\u02bd\u02bc") - buf.write("\3\2\2\2\u02be\u02bf\3\2\2\2\u02bf\u02bd\3\2\2\2\u02bf") - buf.write("\u02c0\3\2\2\2\u02c0\5\3\2\2\2\u02c1\u02c7\5\b\5\2\u02c2") - buf.write("\u02c7\5\u0138\u009d\2\u02c3\u02c7\5\u0260\u0131\2\u02c4") - buf.write("\u02c7\5(\25\2\u02c5\u02c7\5<\37\2\u02c6\u02c1\3\2\2\2") - buf.write("\u02c6\u02c2\3\2\2\2\u02c6\u02c3\3\2\2\2\u02c6\u02c4\3") - buf.write("\2\2\2\u02c6\u02c5\3\2\2\2\u02c7\7\3\2\2\2\u02c8\u02ca") - buf.write("\5\n\6\2\u02c9\u02c8\3\2\2\2\u02c9\u02ca\3\2\2\2\u02ca") - buf.write("\u02cb\3\2\2\2\u02cb\u02cc\5\f\7\2\u02cc\t\3\2\2\2\u02cd") - buf.write("\u02ce\7\7\2\2\u02ce\u02cf\7\u00be\2\2\u02cf\13\3\2\2") - buf.write("\2\u02d0\u02d2\5\u013e\u00a0\2\u02d1\u02d0\3\2\2\2\u02d1") - buf.write("\u02d2\3\2\2\2\u02d2\u02d3\3\2\2\2\u02d3\u02d8\5&\24\2") - buf.write("\u02d4\u02d5\5\16\b\2\u02d5\u02d6\5&\24\2\u02d6\u02d8") - buf.write("\3\2\2\2\u02d7\u02d1\3\2\2\2\u02d7\u02d4\3\2\2\2\u02d8") - buf.write("\r\3\2\2\2\u02d9\u02da\b\b\1\2\u02da\u02db\5\u013e\u00a0") - buf.write("\2\u02db\u02dc\5\u0134\u009b\2\u02dc\u02dd\5\20\t\2\u02dd") - buf.write("\u02e2\3\2\2\2\u02de\u02df\5\u0134\u009b\2\u02df\u02e0") - buf.write("\5\20\t\2\u02e0\u02e2\3\2\2\2\u02e1\u02d9\3\2\2\2\u02e1") - buf.write("\u02de\3\2\2\2\u02e2\u02e7\3\2\2\2\u02e3\u02e4\f\3\2\2") - buf.write("\u02e4\u02e6\5\20\t\2\u02e5\u02e3\3\2\2\2\u02e6\u02e9") - buf.write("\3\2\2\2\u02e7\u02e5\3\2\2\2\u02e7\u02e8\3\2\2\2\u02e8") - buf.write("\17\3\2\2\2\u02e9\u02e7\3\2\2\2\u02ea\u02ed\5\u0138\u009d") - buf.write("\2\u02eb\u02ed\5\u0260\u0131\2\u02ec\u02ea\3\2\2\2\u02ec") - buf.write("\u02eb\3\2\2\2\u02ed\21\3\2\2\2\u02ee\u02f6\5\u0268\u0135") - buf.write("\2\u02ef\u02f6\5 \21\2\u02f0\u02f6\5\62\32\2\u02f1\u02f6") - buf.write("\5@!\2\u02f2\u02f6\5H%\2\u02f3\u02f6\5\u0266\u0134\2\u02f4") - buf.write("\u02f6\5\24\13\2\u02f5\u02ee\3\2\2\2\u02f5\u02ef\3\2\2") - buf.write("\2\u02f5\u02f0\3\2\2\2\u02f5\u02f1\3\2\2\2\u02f5\u02f2") - buf.write("\3\2\2\2\u02f5\u02f3\3\2\2\2\u02f5\u02f4\3\2\2\2\u02f6") - buf.write("\23\3\2\2\2\u02f7\u02f8\7\31\2\2\u02f8\u0309\7\u00be\2") - buf.write("\2\u02f9\u02fa\7\31\2\2\u02fa\u02fb\7\u00be\2\2\u02fb") - buf.write("\u02fc\7|\2\2\u02fc\u02fd\7\32\2\2\u02fd\u0309\7\u0083") - buf.write("\2\2\u02fe\u02ff\7\31\2\2\u02ff\u0300\7\u00be\2\2\u0300") - buf.write("\u0301\7|\2\2\u0301\u0309\5\32\16\2\u0302\u0303\7\31\2") - buf.write("\2\u0303\u0304\7\u00be\2\2\u0304\u0305\7|\2\2\u0305\u0306") - buf.write("\7\32\2\2\u0306\u0307\7\u0083\2\2\u0307\u0309\5\26\f\2") - buf.write("\u0308\u02f7\3\2\2\2\u0308\u02f9\3\2\2\2\u0308\u02fe\3") - buf.write("\2\2\2\u0308\u0302\3\2\2\2\u0309\25\3\2\2\2\u030a\u030f") - buf.write("\5\30\r\2\u030b\u030c\7|\2\2\u030c\u030e\5\30\r\2\u030d") - buf.write("\u030b\3\2\2\2\u030e\u0311\3\2\2\2\u030f\u030d\3\2\2\2") - buf.write("\u030f\u0310\3\2\2\2\u0310\27\3\2\2\2\u0311\u030f\3\2") - buf.write("\2\2\u0312\u0319\5\u00c8e\2\u0313\u0314\5\u012e\u0098") - buf.write("\2\u0314\u0315\7\33\2\2\u0315\u0316\5\36\20\2\u0316\u0319") - buf.write("\3\2\2\2\u0317\u0319\5\36\20\2\u0318\u0312\3\2\2\2\u0318") - buf.write("\u0313\3\2\2\2\u0318\u0317\3\2\2\2\u0319\31\3\2\2\2\u031a") - buf.write("\u031f\5\34\17\2\u031b\u031c\7|\2\2\u031c\u031e\5\34\17") - buf.write("\2\u031d\u031b\3\2\2\2\u031e\u0321\3\2\2\2\u031f\u031d") - buf.write("\3\2\2\2\u031f\u0320\3\2\2\2\u0320\33\3\2\2\2\u0321\u031f") - buf.write("\3\2\2\2\u0322\u0323\5\u012e\u0098\2\u0323\u0324\7\33") - buf.write("\2\2\u0324\u0325\5\36\20\2\u0325\35\3\2\2\2\u0326\u0327") - buf.write("\5\u012e\u0098\2\u0327\37\3\2\2\2\u0328\u0329\7.\2\2\u0329") - buf.write("\u032a\7}\2\2\u032a\u032b\5\"\22\2\u032b\u032c\7\u0082") - buf.write("\2\2\u032c!\3\2\2\2\u032d\u032f\5$\23\2\u032e\u032d\3") - buf.write("\2\2\2\u032f\u0330\3\2\2\2\u0330\u032e\3\2\2\2\u0330\u0331") - buf.write("\3\2\2\2\u0331#\3\2\2\2\u0332\u0333\7\u00be\2\2\u0333") - buf.write("\u0334\7\u0084\2\2\u0334\u0335\5\u0272\u013a\2\u0335%") - buf.write("\3\2\2\2\u0336\u033d\7\16\2\2\u0337\u0338\7\16\2\2\u0338") - buf.write("\u033a\7\7\2\2\u0339\u033b\7\u00be\2\2\u033a\u0339\3\2") - buf.write("\2\2\u033a\u033b\3\2\2\2\u033b\u033d\3\2\2\2\u033c\u0336") - buf.write("\3\2\2\2\u033c\u0337\3\2\2\2\u033d\'\3\2\2\2\u033e\u033f") - buf.write("\5*\26\2\u033f\u0340\5,\27\2\u0340\u0341\5\60\31\2\u0341") - buf.write("\u0346\3\2\2\2\u0342\u0343\5*\26\2\u0343\u0344\5\60\31") - buf.write("\2\u0344\u0346\3\2\2\2\u0345\u033e\3\2\2\2\u0345\u0342") - buf.write("\3\2\2\2\u0346)\3\2\2\2\u0347\u0349\7&\2\2\u0348\u034a") - buf.write("\7\u00be\2\2\u0349\u0348\3\2\2\2\u0349\u034a\3\2\2\2\u034a") - buf.write("\u0351\3\2\2\2\u034b\u034c\7\n\2\2\u034c\u034e\7\62\2") - buf.write("\2\u034d\u034f\7\u00be\2\2\u034e\u034d\3\2\2\2\u034e\u034f") - buf.write("\3\2\2\2\u034f\u0351\3\2\2\2\u0350\u0347\3\2\2\2\u0350") - buf.write("\u034b\3\2\2\2\u0351+\3\2\2\2\u0352\u0353\b\27\1\2\u0353") - buf.write("\u0354\5.\30\2\u0354\u0359\3\2\2\2\u0355\u0356\f\3\2\2") - buf.write("\u0356\u0358\5.\30\2\u0357\u0355\3\2\2\2\u0358\u035b\3") - buf.write("\2\2\2\u0359\u0357\3\2\2\2\u0359\u035a\3\2\2\2\u035a-") - buf.write("\3\2\2\2\u035b\u0359\3\2\2\2\u035c\u035d\5\22\n\2\u035d") - buf.write("/\3\2\2\2\u035e\u0360\7u\2\2\u035f\u0361\7\u00be\2\2\u0360") - buf.write("\u035f\3\2\2\2\u0360\u0361\3\2\2\2\u0361\u0374\3\2\2\2") - buf.write("\u0362\u0363\7\16\2\2\u0363\u0365\7&\2\2\u0364\u0366\7") - buf.write("\u00be\2\2\u0365\u0364\3\2\2\2\u0365\u0366\3\2\2\2\u0366") - buf.write("\u0374\3\2\2\2\u0367\u0368\7v\2\2\u0368\u036a\7\62\2\2") - buf.write("\u0369\u036b\7\u00be\2\2\u036a\u0369\3\2\2\2\u036a\u036b") - buf.write("\3\2\2\2\u036b\u0374\3\2\2\2\u036c\u036d\7\16\2\2\u036d") - buf.write("\u036e\7\n\2\2\u036e\u0370\7\62\2\2\u036f\u0371\7\u00be") - buf.write("\2\2\u0370\u036f\3\2\2\2\u0370\u0371\3\2\2\2\u0371\u0374") - buf.write("\3\2\2\2\u0372\u0374\7\16\2\2\u0373\u035e\3\2\2\2\u0373") - buf.write("\u0362\3\2\2\2\u0373\u0367\3\2\2\2\u0373\u036c\3\2\2\2") - buf.write("\u0373\u0372\3\2\2\2\u0374\61\3\2\2\2\u0375\u0376\7\u00bc") - buf.write("\2\2\u0376\u0377\7Z\2\2\u0377\u0379\7}\2\2\u0378\u037a") - buf.write("\5\64\33\2\u0379\u0378\3\2\2\2\u0379\u037a\3\2\2\2\u037a") - buf.write("\u037b\3\2\2\2\u037b\u037c\7\u0082\2\2\u037c\63\3\2\2") - buf.write("\2\u037d\u037e\b\33\1\2\u037e\u0383\5\66\34\2\u037f\u0383") - buf.write("\7\u0088\2\2\u0380\u0381\7\u0088\2\2\u0381\u0383\5\66") - buf.write("\34\2\u0382\u037d\3\2\2\2\u0382\u037f\3\2\2\2\u0382\u0380") - buf.write("\3\2\2\2\u0383\u0395\3\2\2\2\u0384\u0385\f\7\2\2\u0385") - buf.write("\u0394\7\u0088\2\2\u0386\u0387\f\6\2\2\u0387\u0388\7\u0088") - buf.write("\2\2\u0388\u0394\5\66\34\2\u0389\u038a\f\5\2\2\u038a\u038b") - buf.write("\7|\2\2\u038b\u0394\5\66\34\2\u038c\u038d\f\4\2\2\u038d") - buf.write("\u038e\7|\2\2\u038e\u0394\7\u0088\2\2\u038f\u0390\f\3") - buf.write("\2\2\u0390\u0391\7|\2\2\u0391\u0392\7\u0088\2\2\u0392") - buf.write("\u0394\5\66\34\2\u0393\u0384\3\2\2\2\u0393\u0386\3\2\2") - buf.write("\2\u0393\u0389\3\2\2\2\u0393\u038c\3\2\2\2\u0393\u038f") - buf.write("\3\2\2\2\u0394\u0397\3\2\2\2\u0395\u0393\3\2\2\2\u0395") - buf.write("\u0396\3\2\2\2\u0396\65\3\2\2\2\u0397\u0395\3\2\2\2\u0398") - buf.write("\u03a3\58\35\2\u0399\u039a\7\u00bc\2\2\u039a\u03a3\58") - buf.write("\35\2\u039b\u03a3\7\u0099\2\2\u039c\u03a3\7\u009a\2\2") - buf.write("\u039d\u039e\7\u009a\2\2\u039e\u03a3\58\35\2\u039f\u03a0") - buf.write("\7\u009a\2\2\u03a0\u03a1\7\u00bc\2\2\u03a1\u03a3\58\35") - buf.write("\2\u03a2\u0398\3\2\2\2\u03a2\u0399\3\2\2\2\u03a2\u039b") - buf.write("\3\2\2\2\u03a2\u039c\3\2\2\2\u03a2\u039d\3\2\2\2\u03a2") - buf.write("\u039f\3\2\2\2\u03a3\67\3\2\2\2\u03a4\u03ae\7\u009b\2") - buf.write("\2\u03a5\u03ae\5:\36\2\u03a6\u03ae\7\u00b3\2\2\u03a7\u03ae") - buf.write("\7\u009d\2\2\u03a8\u03ae\7\u00be\2\2\u03a9\u03aa\7}\2") - buf.write("\2\u03aa\u03ab\5\64\33\2\u03ab\u03ac\7\u0082\2\2\u03ac") - buf.write("\u03ae\3\2\2\2\u03ad\u03a4\3\2\2\2\u03ad\u03a5\3\2\2\2") - buf.write("\u03ad\u03a6\3\2\2\2\u03ad\u03a7\3\2\2\2\u03ad\u03a8\3") - buf.write("\2\2\2\u03ad\u03a9\3\2\2\2\u03ae9\3\2\2\2\u03af\u03b0") - buf.write("\7\u00b4\2\2\u03b0\u03b1\7\u00ba\2\2\u03b1\u03b2\7\u00b4") - buf.write("\2\2\u03b2\u03b8\7\u00bb\2\2\u03b3\u03b4\7\u00be\2\2\u03b4") - buf.write("\u03b5\7\u00ba\2\2\u03b5\u03b6\7\u00b4\2\2\u03b6\u03b8") - buf.write("\7\u00bb\2\2\u03b7\u03af\3\2\2\2\u03b7\u03b3\3\2\2\2\u03b8") - buf.write(";\3\2\2\2\u03b9\u03ba\5\u012a\u0096\2\u03ba\u03bb\5\u0130") - buf.write("\u0099\2\u03bb\u03bc\5> \2\u03bc\u03c1\3\2\2\2\u03bd\u03be") - buf.write("\5\u012a\u0096\2\u03be\u03bf\5> \2\u03bf\u03c1\3\2\2\2") - buf.write("\u03c0\u03b9\3\2\2\2\u03c0\u03bd\3\2\2\2\u03c1=\3\2\2") - buf.write("\2\u03c2\u03c3\7\16\2\2\u03c3\u03c5\7\5\2\2\u03c4\u03c6") - buf.write("\7\u00be\2\2\u03c5\u03c4\3\2\2\2\u03c5\u03c6\3\2\2\2\u03c6") - buf.write("\u03cd\3\2\2\2\u03c7\u03c9\7\6\2\2\u03c8\u03ca\7\u00be") - buf.write("\2\2\u03c9\u03c8\3\2\2\2\u03c9\u03ca\3\2\2\2\u03ca\u03cd") - buf.write("\3\2\2\2\u03cb\u03cd\7\16\2\2\u03cc\u03c2\3\2\2\2\u03cc") - buf.write("\u03c7\3\2\2\2\u03cc\u03cb\3\2\2\2\u03cd?\3\2\2\2\u03ce") - buf.write("\u03cf\7\b\2\2\u03cf\u03d0\7\u00be\2\2\u03d0\u03d1\5B") - buf.write("\"\2\u03d1\u03d2\79\2\2\u03d2\u03d3\7}\2\2\u03d3\u03d4") - buf.write("\7\u00be\2\2\u03d4\u03d5\7\u0082\2\2\u03d5A\3\2\2\2\u03d6") - buf.write("\u03d8\7}\2\2\u03d7\u03d9\5D#\2\u03d8\u03d7\3\2\2\2\u03d8") - buf.write("\u03d9\3\2\2\2\u03d9\u03da\3\2\2\2\u03da\u03dc\7\u0082") - buf.write("\2\2\u03db\u03d6\3\2\2\2\u03db\u03dc\3\2\2\2\u03dcC\3") - buf.write("\2\2\2\u03dd\u03e2\5F$\2\u03de\u03df\7|\2\2\u03df\u03e1") - buf.write("\5F$\2\u03e0\u03de\3\2\2\2\u03e1\u03e4\3\2\2\2\u03e2\u03e0") - buf.write("\3\2\2\2\u03e2\u03e3\3\2\2\2\u03e3E\3\2\2\2\u03e4\u03e2") - buf.write("\3\2\2\2\u03e5\u03e8\5l\67\2\u03e6\u03e8\7\u00c2\2\2\u03e7") - buf.write("\u03e5\3\2\2\2\u03e7\u03e6\3\2\2\2\u03e8G\3\2\2\2\u03e9") - buf.write("\u03ee\5\u00ecw\2\u03ea\u03ee\5\u00c2b\2\u03eb\u03ee\5") - buf.write("\u00aeX\2\u03ec\u03ee\5J&\2\u03ed\u03e9\3\2\2\2\u03ed") - buf.write("\u03ea\3\2\2\2\u03ed\u03eb\3\2\2\2\u03ed\u03ec\3\2\2\2") - buf.write("\u03eeI\3\2\2\2\u03ef\u03fe\5\u00a2R\2\u03f0\u03fe\5\u018a") - buf.write("\u00c6\2\u03f1\u03fe\5\u009eP\2\u03f2\u03fe\5\u0094K\2") - buf.write("\u03f3\u03fe\5\u008eH\2\u03f4\u03fe\5\u0088E\2\u03f5\u03fe") - buf.write("\5\u0080A\2\u03f6\u03fe\5x=\2\u03f7\u03fe\5p9\2\u03f8") - buf.write("\u03fe\5f\64\2\u03f9\u03fe\5^\60\2\u03fa\u03fe\5X-\2\u03fb") - buf.write("\u03fe\5R*\2\u03fc\u03fe\5L\'\2\u03fd\u03ef\3\2\2\2\u03fd") - buf.write("\u03f0\3\2\2\2\u03fd\u03f1\3\2\2\2\u03fd\u03f2\3\2\2\2") - buf.write("\u03fd\u03f3\3\2\2\2\u03fd\u03f4\3\2\2\2\u03fd\u03f5\3") - buf.write("\2\2\2\u03fd\u03f6\3\2\2\2\u03fd\u03f7\3\2\2\2\u03fd\u03f8") - buf.write("\3\2\2\2\u03fd\u03f9\3\2\2\2\u03fd\u03fa\3\2\2\2\u03fd") - buf.write("\u03fb\3\2\2\2\u03fd\u03fc\3\2\2\2\u03feK\3\2\2\2\u03ff") - buf.write("\u0401\7\20\2\2\u0400\u0402\7 \2\2\u0401\u0400\3\2\2\2") - buf.write("\u0401\u0402\3\2\2\2\u0402\u0403\3\2\2\2\u0403\u0404\5") - buf.write("N(\2\u0404M\3\2\2\2\u0405\u040a\5P)\2\u0406\u0407\7|\2") - buf.write("\2\u0407\u0409\5P)\2\u0408\u0406\3\2\2\2\u0409\u040c\3") - buf.write("\2\2\2\u040a\u0408\3\2\2\2\u040a\u040b\3\2\2\2\u040bO") - buf.write("\3\2\2\2\u040c\u040a\3\2\2\2\u040d\u0414\5\u00b8]\2\u040e") - buf.write("\u040f\5\u00b8]\2\u040f\u0410\7}\2\2\u0410\u0411\5\u00ba") - buf.write("^\2\u0411\u0412\7\u0082\2\2\u0412\u0414\3\2\2\2\u0413") - buf.write("\u040d\3\2\2\2\u0413\u040e\3\2\2\2\u0414Q\3\2\2\2\u0415") - buf.write("\u0417\7\'\2\2\u0416\u0418\7 \2\2\u0417\u0416\3\2\2\2") - buf.write("\u0417\u0418\3\2\2\2\u0418\u0419\3\2\2\2\u0419\u041a\5") - buf.write("T+\2\u041aS\3\2\2\2\u041b\u0420\5V,\2\u041c\u041d\7|\2") - buf.write("\2\u041d\u041f\5V,\2\u041e\u041c\3\2\2\2\u041f\u0422\3") - buf.write("\2\2\2\u0420\u041e\3\2\2\2\u0420\u0421\3\2\2\2\u0421U") - buf.write("\3\2\2\2\u0422\u0420\3\2\2\2\u0423\u042a\5\u00b8]\2\u0424") - buf.write("\u0425\5\u00b8]\2\u0425\u0426\7}\2\2\u0426\u0427\5\u010e") - buf.write("\u0088\2\u0427\u0428\7\u0082\2\2\u0428\u042a\3\2\2\2\u0429") - buf.write("\u0423\3\2\2\2\u0429\u0424\3\2\2\2\u042aW\3\2\2\2\u042b") - buf.write("\u042d\7\22\2\2\u042c\u042e\7 \2\2\u042d\u042c\3\2\2\2") - buf.write("\u042d\u042e\3\2\2\2\u042e\u042f\3\2\2\2\u042f\u0430\5") - buf.write("Z.\2\u0430Y\3\2\2\2\u0431\u0436\5\\/\2\u0432\u0433\7|") - buf.write("\2\2\u0433\u0435\5\\/\2\u0434\u0432\3\2\2\2\u0435\u0438") - buf.write("\3\2\2\2\u0436\u0434\3\2\2\2\u0436\u0437\3\2\2\2\u0437") - buf.write("[\3\2\2\2\u0438\u0436\3\2\2\2\u0439\u043a\5l\67\2\u043a") - buf.write("]\3\2\2\2\u043b\u043c\7\23\2\2\u043c\u043d\5`\61\2\u043d") - buf.write("_\3\2\2\2\u043e\u043f\b\61\1\2\u043f\u0440\7\u0087\2\2") - buf.write("\u0440\u0441\5b\62\2\u0441\u0442\7\u0087\2\2\u0442\u0443") - buf.write("\5d\63\2\u0443\u0456\3\2\2\2\u0444\u0445\f\5\2\2\u0445") - buf.write("\u0446\7\u0087\2\2\u0446\u0447\5b\62\2\u0447\u0448\7\u0087") - buf.write("\2\2\u0448\u0449\5d\63\2\u0449\u0455\3\2\2\2\u044a\u044b") - buf.write("\f\4\2\2\u044b\u044c\7|\2\2\u044c\u044d\7\u0087\2\2\u044d") - buf.write("\u044e\5b\62\2\u044e\u044f\7\u0087\2\2\u044f\u0450\5d") - buf.write("\63\2\u0450\u0455\3\2\2\2\u0451\u0452\f\3\2\2\u0452\u0453") - buf.write("\7|\2\2\u0453\u0455\5d\63\2\u0454\u0444\3\2\2\2\u0454") - buf.write("\u044a\3\2\2\2\u0454\u0451\3\2\2\2\u0455\u0458\3\2\2\2") - buf.write("\u0456\u0454\3\2\2\2\u0456\u0457\3\2\2\2\u0457a\3\2\2") - buf.write("\2\u0458\u0456\3\2\2\2\u0459\u045a\7\u00be\2\2\u045ac") - buf.write("\3\2\2\2\u045b\u045c\5\u01b2\u00da\2\u045ce\3\2\2\2\u045d") - buf.write("\u045e\7\24\2\2\u045e\u045f\7}\2\2\u045f\u0460\5n8\2\u0460") - buf.write("\u0462\7\u0082\2\2\u0461\u0463\7 \2\2\u0462\u0461\3\2") - buf.write("\2\2\u0462\u0463\3\2\2\2\u0463\u0464\3\2\2\2\u0464\u0465") - buf.write("\5h\65\2\u0465g\3\2\2\2\u0466\u0467\5j\66\2\u0467\u0468") - buf.write("\7|\2\2\u0468\u0469\5j\66\2\u0469i\3\2\2\2\u046a\u046b") - buf.write("\5l\67\2\u046bk\3\2\2\2\u046c\u046d\7\u00be\2\2\u046d") - buf.write("m\3\2\2\2\u046e\u046f\t\2\2\2\u046fo\3\2\2\2\u0470\u0472") - buf.write("\7\21\2\2\u0471\u0473\7 \2\2\u0472\u0471\3\2\2\2\u0472") - buf.write("\u0473\3\2\2\2\u0473\u0474\3\2\2\2\u0474\u0475\5r:\2\u0475") - buf.write("q\3\2\2\2\u0476\u047b\5t;\2\u0477\u0478\7|\2\2\u0478\u047a") - buf.write("\5t;\2\u0479\u0477\3\2\2\2\u047a\u047d\3\2\2\2\u047b\u0479") - buf.write("\3\2\2\2\u047b\u047c\3\2\2\2\u047cs\3\2\2\2\u047d\u047b") - buf.write("\3\2\2\2\u047e\u0485\5v<\2\u047f\u0480\5v<\2\u0480\u0481") - buf.write("\7}\2\2\u0481\u0482\5\u010e\u0088\2\u0482\u0483\7\u0082") - buf.write("\2\2\u0483\u0485\3\2\2\2\u0484\u047e\3\2\2\2\u0484\u047f") - buf.write("\3\2\2\2\u0485u\3\2\2\2\u0486\u0487\5\u012e\u0098\2\u0487") - buf.write("w\3\2\2\2\u0488\u048a\7*\2\2\u0489\u048b\7 \2\2\u048a") - buf.write("\u0489\3\2\2\2\u048a\u048b\3\2\2\2\u048b\u048c\3\2\2\2") - buf.write("\u048c\u048f\5z>\2\u048d\u048f\7*\2\2\u048e\u0488\3\2") - buf.write("\2\2\u048e\u048d\3\2\2\2\u048fy\3\2\2\2\u0490\u0495\5") - buf.write("|?\2\u0491\u0492\7|\2\2\u0492\u0494\5|?\2\u0493\u0491") - buf.write("\3\2\2\2\u0494\u0497\3\2\2\2\u0495\u0493\3\2\2\2\u0495") - buf.write("\u0496\3\2\2\2\u0496{\3\2\2\2\u0497\u0495\3\2\2\2\u0498") - buf.write("\u049b\5~@\2\u0499\u049b\5\u00c8e\2\u049a\u0498\3\2\2") - buf.write("\2\u049a\u0499\3\2\2\2\u049b}\3\2\2\2\u049c\u049d\5\u012e") - buf.write("\u0098\2\u049d\177\3\2\2\2\u049e\u04a5\7\61\2\2\u049f") - buf.write("\u04a0\7\61\2\2\u04a0\u04a5\5\u0082B\2\u04a1\u04a2\7\61") - buf.write("\2\2\u04a2\u04a3\7 \2\2\u04a3\u04a5\5\u0082B\2\u04a4\u049e") - buf.write("\3\2\2\2\u04a4\u049f\3\2\2\2\u04a4\u04a1\3\2\2\2\u04a5") - buf.write("\u0081\3\2\2\2\u04a6\u04a8\5\u0084C\2\u04a7\u04a6\3\2") - buf.write("\2\2\u04a8\u04a9\3\2\2\2\u04a9\u04a7\3\2\2\2\u04a9\u04aa") - buf.write("\3\2\2\2\u04aa\u0083\3\2\2\2\u04ab\u04ae\5\u01b2\u00da") - buf.write("\2\u04ac\u04ae\5\u0086D\2\u04ad\u04ab\3\2\2\2\u04ad\u04ac") - buf.write("\3\2\2\2\u04ae\u0085\3\2\2\2\u04af\u04b0\7\u0087\2\2\u04b0") - buf.write("\u04b1\5\u00acW\2\u04b1\u04b2\7\u0087\2\2\u04b2\u0087") - buf.write("\3\2\2\2\u04b3\u04b4\7\60\2\2\u04b4\u04b5\5\u008aF\2\u04b5") - buf.write("\u0089\3\2\2\2\u04b6\u04b8\5\u008cG\2\u04b7\u04b6\3\2") - buf.write("\2\2\u04b8\u04b9\3\2\2\2\u04b9\u04b7\3\2\2\2\u04b9\u04ba") - buf.write("\3\2\2\2\u04ba\u008b\3\2\2\2\u04bb\u04bc\7\u00be\2\2\u04bc") - buf.write("\u008d\3\2\2\2\u04bd\u04be\7/\2\2\u04be\u04bf\5\u0090") - buf.write("I\2\u04bf\u008f\3\2\2\2\u04c0\u04c2\5\u0092J\2\u04c1\u04c0") - buf.write("\3\2\2\2\u04c2\u04c3\3\2\2\2\u04c3\u04c1\3\2\2\2\u04c3") - buf.write("\u04c4\3\2\2\2\u04c4\u0091\3\2\2\2\u04c5\u04c6\7\u00be") - buf.write("\2\2\u04c6\u0093\3\2\2\2\u04c7\u04c8\7%\2\2\u04c8\u04c9") - buf.write("\5\u0096L\2\u04c9\u0095\3\2\2\2\u04ca\u04cc\5\u0098M\2") - buf.write("\u04cb\u04ca\3\2\2\2\u04cc\u04cd\3\2\2\2\u04cd\u04cb\3") - buf.write("\2\2\2\u04cd\u04ce\3\2\2\2\u04ce\u0097\3\2\2\2\u04cf\u04d0") - buf.write("\7}\2\2\u04d0\u04d1\5\u009aN\2\u04d1\u04d2\7|\2\2\u04d2") - buf.write("\u04d3\5\u009cO\2\u04d3\u04d4\7\u0082\2\2\u04d4\u0099") - buf.write("\3\2\2\2\u04d5\u04d6\5\u0196\u00cc\2\u04d6\u009b\3\2\2") - buf.write("\2\u04d7\u04d9\5\u009aN\2\u04d8\u04d7\3\2\2\2\u04d9\u04da") - buf.write("\3\2\2\2\u04da\u04d8\3\2\2\2\u04da\u04db\3\2\2\2\u04db") - buf.write("\u009d\3\2\2\2\u04dc\u04dd\7\17\2\2\u04dd\u04e2\5\u00a0") - buf.write("Q\2\u04de\u04df\7\17\2\2\u04df\u04e0\7 \2\2\u04e0\u04e2") - buf.write("\5\u00a0Q\2\u04e1\u04dc\3\2\2\2\u04e1\u04de\3\2\2\2\u04e2") - buf.write("\u009f\3\2\2\2\u04e3\u04e5\5\u00a8U\2\u04e4\u04e3\3\2") - buf.write("\2\2\u04e5\u04e6\3\2\2\2\u04e6\u04e4\3\2\2\2\u04e6\u04e7") - buf.write("\3\2\2\2\u04e7\u00a1\3\2\2\2\u04e8\u04e9\7\"\2\2\u04e9") - buf.write("\u04ea\5\u00a4S\2\u04ea\u00a3\3\2\2\2\u04eb\u04ed\bS\1") - buf.write("\2\u04ec\u04ee\5\u00aaV\2\u04ed\u04ec\3\2\2\2\u04ed\u04ee") - buf.write("\3\2\2\2\u04ee\u04ef\3\2\2\2\u04ef\u04f0\5\u00a6T\2\u04f0") - buf.write("\u04fd\3\2\2\2\u04f1\u04f2\f\4\2\2\u04f2\u04f4\7|\2\2") - buf.write("\u04f3\u04f5\5\u00aaV\2\u04f4\u04f3\3\2\2\2\u04f4\u04f5") - buf.write("\3\2\2\2\u04f5\u04f6\3\2\2\2\u04f6\u04fc\5\u00a6T\2\u04f7") - buf.write("\u04f8\f\3\2\2\u04f8\u04f9\5\u00aaV\2\u04f9\u04fa\5\u00a6") - buf.write("T\2\u04fa\u04fc\3\2\2\2\u04fb\u04f1\3\2\2\2\u04fb\u04f7") - buf.write("\3\2\2\2\u04fc\u04ff\3\2\2\2\u04fd\u04fb\3\2\2\2\u04fd") - buf.write("\u04fe\3\2\2\2\u04fe\u00a5\3\2\2\2\u04ff\u04fd\3\2\2\2") - buf.write("\u0500\u0503\5\u01b2\u00da\2\u0501\u0503\5\u00a8U\2\u0502") - buf.write("\u0500\3\2\2\2\u0502\u0501\3\2\2\2\u0503\u00a7\3\2\2\2") - buf.write("\u0504\u0505\5\u01b2\u00da\2\u0505\u0506\7}\2\2\u0506") - buf.write("\u0507\5\u00ba^\2\u0507\u0508\7\u0082\2\2\u0508\u00a9") - buf.write("\3\2\2\2\u0509\u050a\7\u0087\2\2\u050a\u050b\7\u00ba\2") - buf.write("\2\u050b\u050c\7\u0087\2\2\u050c\u0512\7\u00bb\2\2\u050d") - buf.write("\u050e\7\u0087\2\2\u050e\u050f\5\u00acW\2\u050f\u0510") - buf.write("\7\u0087\2\2\u0510\u0512\3\2\2\2\u0511\u0509\3\2\2\2\u0511") - buf.write("\u050d\3\2\2\2\u0512\u00ab\3\2\2\2\u0513\u0514\7\u00be") - buf.write("\2\2\u0514\u00ad\3\2\2\2\u0515\u0516\5\u0112\u008a\2\u0516") - buf.write("\u0517\5\u00b4[\2\u0517\u0520\3\2\2\2\u0518\u051a\5\u0112") - buf.write("\u008a\2\u0519\u051b\5\u00b0Y\2\u051a\u0519\3\2\2\2\u051a") - buf.write("\u051b\3\2\2\2\u051b\u051c\3\2\2\2\u051c\u051d\7 \2\2") - buf.write("\u051d\u051e\5\u00b4[\2\u051e\u0520\3\2\2\2\u051f\u0515") - buf.write("\3\2\2\2\u051f\u0518\3\2\2\2\u0520\u00af\3\2\2\2\u0521") - buf.write("\u0522\bY\1\2\u0522\u0523\7|\2\2\u0523\u0524\5\u00b2Z") - buf.write("\2\u0524\u052a\3\2\2\2\u0525\u0526\f\3\2\2\u0526\u0527") - buf.write("\7|\2\2\u0527\u0529\5\u00b2Z\2\u0528\u0525\3\2\2\2\u0529") - buf.write("\u052c\3\2\2\2\u052a\u0528\3\2\2\2\u052a\u052b\3\2\2\2") - buf.write("\u052b\u00b1\3\2\2\2\u052c\u052a\3\2\2\2\u052d\u0541\7") - buf.write(".\2\2\u052e\u0541\7*\2\2\u052f\u0541\7\21\2\2\u0530\u0531") - buf.write("\7\17\2\2\u0531\u0532\7}\2\2\u0532\u0533\5\u00ba^\2\u0533") - buf.write("\u0534\7\u0082\2\2\u0534\u0541\3\2\2\2\u0535\u0541\7/") - buf.write("\2\2\u0536\u0537\7\24\2\2\u0537\u0538\7}\2\2\u0538\u0539") - buf.write("\5n8\2\u0539\u053a\7\u0082\2\2\u053a\u0541\3\2\2\2\u053b") - buf.write("\u0541\7\60\2\2\u053c\u0541\7\22\2\2\u053d\u0541\7\'\2") - buf.write("\2\u053e\u0541\7\61\2\2\u053f\u0541\7\20\2\2\u0540\u052d") - buf.write("\3\2\2\2\u0540\u052e\3\2\2\2\u0540\u052f\3\2\2\2\u0540") - buf.write("\u0530\3\2\2\2\u0540\u0535\3\2\2\2\u0540\u0536\3\2\2\2") - buf.write("\u0540\u053b\3\2\2\2\u0540\u053c\3\2\2\2\u0540\u053d\3") - buf.write("\2\2\2\u0540\u053e\3\2\2\2\u0540\u053f\3\2\2\2\u0541\u00b3") - buf.write("\3\2\2\2\u0542\u0547\5\u00b6\\\2\u0543\u0544\7|\2\2\u0544") - buf.write("\u0546\5\u00b6\\\2\u0545\u0543\3\2\2\2\u0546\u0549\3\2") - buf.write("\2\2\u0547\u0545\3\2\2\2\u0547\u0548\3\2\2\2\u0548\u00b5") - buf.write("\3\2\2\2\u0549\u0547\3\2\2\2\u054a\u0576\5\u00b8]\2\u054b") - buf.write("\u054c\5\u00b8]\2\u054c\u054d\7}\2\2\u054d\u054e\5\u00ba") - buf.write("^\2\u054e\u054f\7\u0082\2\2\u054f\u0576\3\2\2\2\u0550") - buf.write("\u0551\5\u00b8]\2\u0551\u0552\7\u00c2\2\2\u0552\u0553") - buf.write("\5\u011c\u008f\2\u0553\u0576\3\2\2\2\u0554\u0555\5\u00b8") - buf.write("]\2\u0555\u0556\7}\2\2\u0556\u0557\5\u00ba^\2\u0557\u0558") - buf.write("\7\u0082\2\2\u0558\u0559\7\u00c2\2\2\u0559\u055a\5\u011c") - buf.write("\u008f\2\u055a\u0576\3\2\2\2\u055b\u055c\5\u00b8]\2\u055c") - buf.write("\u055d\7\u0084\2\2\u055d\u055e\5\u0272\u013a\2\u055e\u0576") - buf.write("\3\2\2\2\u055f\u0560\5\u00b8]\2\u0560\u0561\7}\2\2\u0561") - buf.write("\u0562\5\u00ba^\2\u0562\u0563\7\u0082\2\2\u0563\u0564") - buf.write("\7\u0084\2\2\u0564\u0565\5\u0272\u013a\2\u0565\u0576\3") - buf.write("\2\2\2\u0566\u0567\5\u00b8]\2\u0567\u0568\7\u00c2\2\2") - buf.write("\u0568\u0569\5\u011c\u008f\2\u0569\u056a\7\u0084\2\2\u056a") - buf.write("\u056b\5\u0272\u013a\2\u056b\u0576\3\2\2\2\u056c\u056d") - buf.write("\5\u00b8]\2\u056d\u056e\7\u00c2\2\2\u056e\u056f\5\u011c") - buf.write("\u008f\2\u056f\u0570\7}\2\2\u0570\u0571\5\u00ba^\2\u0571") - buf.write("\u0572\7\u0082\2\2\u0572\u0573\7\u0084\2\2\u0573\u0574") - buf.write("\5\u0272\u013a\2\u0574\u0576\3\2\2\2\u0575\u054a\3\2\2") - buf.write("\2\u0575\u054b\3\2\2\2\u0575\u0550\3\2\2\2\u0575\u0554") - buf.write("\3\2\2\2\u0575\u055b\3\2\2\2\u0575\u055f\3\2\2\2\u0575") - buf.write("\u0566\3\2\2\2\u0575\u056c\3\2\2\2\u0576\u00b7\3\2\2\2") - buf.write("\u0577\u0578\7\u00be\2\2\u0578\u00b9\3\2\2\2\u0579\u057e") - buf.write("\5\u0106\u0084\2\u057a\u057e\5\u00c0a\2\u057b\u057e\5") - buf.write("\u00bc_\2\u057c\u057e\5\u010e\u0088\2\u057d\u0579\3\2") - buf.write("\2\2\u057d\u057a\3\2\2\2\u057d\u057b\3\2\2\2\u057d\u057c") - buf.write("\3\2\2\2\u057e\u00bb\3\2\2\2\u057f\u0580\b_\1\2\u0580") - buf.write("\u0581\5\u010a\u0086\2\u0581\u0582\7\u0083\2\2\u0582\u0589") - buf.write("\3\2\2\2\u0583\u0584\5\u010e\u0088\2\u0584\u0585\7|\2") - buf.write("\2\u0585\u0586\5\u010a\u0086\2\u0586\u0587\7\u0083\2\2") - buf.write("\u0587\u0589\3\2\2\2\u0588\u057f\3\2\2\2\u0588\u0583\3") - buf.write("\2\2\2\u0589\u058f\3\2\2\2\u058a\u058b\f\3\2\2\u058b\u058c") - buf.write("\7|\2\2\u058c\u058e\5\u00be`\2\u058d\u058a\3\2\2\2\u058e") - buf.write("\u0591\3\2\2\2\u058f\u058d\3\2\2\2\u058f\u0590\3\2\2\2") - buf.write("\u0590\u00bd\3\2\2\2\u0591\u058f\3\2\2\2\u0592\u0593\5") - buf.write("\u010a\u0086\2\u0593\u0594\7\u0083\2\2\u0594\u0597\3\2") - buf.write("\2\2\u0595\u0597\7\u0083\2\2\u0596\u0592\3\2\2\2\u0596") - buf.write("\u0595\3\2\2\2\u0597\u00bf\3\2\2\2\u0598\u05a8\7\u00c2") - buf.write("\2\2\u0599\u059a\5\u010a\u0086\2\u059a\u059b\7\u0083\2") - buf.write("\2\u059b\u059c\7\u00c2\2\2\u059c\u05a8\3\2\2\2\u059d\u059e") - buf.write("\5\u0106\u0084\2\u059e\u059f\7|\2\2\u059f\u05a0\7\u00c2") - buf.write("\2\2\u05a0\u05a8\3\2\2\2\u05a1\u05a2\5\u0106\u0084\2\u05a2") - buf.write("\u05a3\7|\2\2\u05a3\u05a4\5\u010a\u0086\2\u05a4\u05a5") - buf.write("\7\u0083\2\2\u05a5\u05a6\7\u00c2\2\2\u05a6\u05a8\3\2\2") - buf.write("\2\u05a7\u0598\3\2\2\2\u05a7\u0599\3\2\2\2\u05a7\u059d") - buf.write("\3\2\2\2\u05a7\u05a1\3\2\2\2\u05a8\u00c1\3\2\2\2\u05a9") - buf.write("\u05aa\5\u00c6d\2\u05aa\u05ab\5\u00ccg\2\u05ab\u05ac\5") - buf.write("\u00c4c\2\u05ac\u00c3\3\2\2\2\u05ad\u05b1\7\f\2\2\u05ae") - buf.write("\u05af\7\16\2\2\u05af\u05b1\7\u00b9\2\2\u05b0\u05ad\3") - buf.write("\2\2\2\u05b0\u05ae\3\2\2\2\u05b1\u05b3\3\2\2\2\u05b2\u05b4") - buf.write("\7\u00be\2\2\u05b3\u05b2\3\2\2\2\u05b3\u05b4\3\2\2\2\u05b4") - buf.write("\u00c5\3\2\2\2\u05b5\u05b6\7\u00b9\2\2\u05b6\u05bb\7\u00be") - buf.write("\2\2\u05b7\u05b8\7\u00b9\2\2\u05b8\u05bb\5\u00c8e\2\u05b9") - buf.write("\u05bb\7\u00b9\2\2\u05ba\u05b5\3\2\2\2\u05ba\u05b7\3\2") - buf.write("\2\2\u05ba\u05b9\3\2\2\2\u05bb\u00c7\3\2\2\2\u05bc\u05bd") - buf.write("\7\30\2\2\u05bd\u05be\7}\2\2\u05be\u05bf\5\u00caf\2\u05bf") - buf.write("\u05c0\7\u0082\2\2\u05c0\u05c6\3\2\2\2\u05c1\u05c2\7\34") - buf.write("\2\2\u05c2\u05c3\7}\2\2\u05c3\u05c4\7\u0084\2\2\u05c4") - buf.write("\u05c6\7\u0082\2\2\u05c5\u05bc\3\2\2\2\u05c5\u05c1\3\2") - buf.write("\2\2\u05c6\u00c9\3\2\2\2\u05c7\u05d5\7\35\2\2\u05c8\u05d5") - buf.write("\7\u0089\2\2\u05c9\u05d5\7\u00c2\2\2\u05ca\u05d5\t\3\2") - buf.write("\2\u05cb\u05d5\t\4\2\2\u05cc\u05cd\7\u0087\2\2\u05cd\u05ce") - buf.write("\7\u00ba\2\2\u05ce\u05cf\7\u0087\2\2\u05cf\u05d5\7\u00bb") - buf.write("\2\2\u05d0\u05d5\7\u008a\2\2\u05d1\u05d5\7\u008b\2\2\u05d2") - buf.write("\u05d5\7\u008c\2\2\u05d3\u05d5\t\5\2\2\u05d4\u05c7\3\2") - buf.write("\2\2\u05d4\u05c8\3\2\2\2\u05d4\u05c9\3\2\2\2\u05d4\u05ca") - buf.write("\3\2\2\2\u05d4\u05cb\3\2\2\2\u05d4\u05cc\3\2\2\2\u05d4") - buf.write("\u05d0\3\2\2\2\u05d4\u05d1\3\2\2\2\u05d4\u05d2\3\2\2\2") - buf.write("\u05d4\u05d3\3\2\2\2\u05d5\u00cb\3\2\2\2\u05d6\u05d7\b") - buf.write("g\1\2\u05d7\u05d8\5\u00ceh\2\u05d8\u05dd\3\2\2\2\u05d9") - buf.write("\u05da\f\3\2\2\u05da\u05dc\5\u00ceh\2\u05db\u05d9\3\2") - buf.write("\2\2\u05dc\u05df\3\2\2\2\u05dd\u05db\3\2\2\2\u05dd\u05de") - buf.write("\3\2\2\2\u05de\u00cd\3\2\2\2\u05df\u05dd\3\2\2\2\u05e0") - buf.write("\u05e3\5\u00d6l\2\u05e1\u05e3\5\u00d0i\2\u05e2\u05e0\3") - buf.write("\2\2\2\u05e2\u05e1\3\2\2\2\u05e3\u00cf\3\2\2\2\u05e4\u05e5") - buf.write("\7\5\2\2\u05e5\u05e6\7\r\2\2\u05e6\u05e7\5\u00d2j\2\u05e7") - buf.write("\u00d1\3\2\2\2\u05e8\u05ed\5\u00d4k\2\u05e9\u05ea\7|\2") - buf.write("\2\u05ea\u05ec\5\u00d4k\2\u05eb\u05e9\3\2\2\2\u05ec\u05ef") - buf.write("\3\2\2\2\u05ed\u05eb\3\2\2\2\u05ed\u05ee\3\2\2\2\u05ee") - buf.write("\u00d3\3\2\2\2\u05ef\u05ed\3\2\2\2\u05f0\u05f1\5\u012e") - buf.write("\u0098\2\u05f1\u00d5\3\2\2\2\u05f2\u05f3\5\u00dep\2\u05f3") - buf.write("\u05f4\7\u00be\2\2\u05f4\u05f5\5\u00e0q\2\u05f5\u05fa") - buf.write("\3\2\2\2\u05f6\u05f7\7\13\2\2\u05f7\u05f8\7\u00be\2\2") - buf.write("\u05f8\u05fa\5\u00d8m\2\u05f9\u05f2\3\2\2\2\u05f9\u05f6") - buf.write("\3\2\2\2\u05fa\u00d7\3\2\2\2\u05fb\u05fd\5B\"\2\u05fc") - buf.write("\u05fe\5\u00e8u\2\u05fd\u05fc\3\2\2\2\u05fd\u05fe\3\2") - buf.write("\2\2\u05fe\u05ff\3\2\2\2\u05ff\u0600\5\u00dan\2\u0600") - buf.write("\u00d9\3\2\2\2\u0601\u0608\7\16\2\2\u0602\u0603\7\16\2") - buf.write("\2\u0603\u0605\7\13\2\2\u0604\u0606\7\u00be\2\2\u0605") - buf.write("\u0604\3\2\2\2\u0605\u0606\3\2\2\2\u0606\u0608\3\2\2\2") - buf.write("\u0607\u0601\3\2\2\2\u0607\u0602\3\2\2\2\u0608\u00db\3") - buf.write("\2\2\2\u0609\u060a\7\3\2\2\u060a\u00dd\3\2\2\2\u060b\u060d") - buf.write("\5\u00dco\2\u060c\u060b\3\2\2\2\u060c\u060d\3\2\2\2\u060d") - buf.write("\u060f\3\2\2\2\u060e\u0610\5\u0112\u008a\2\u060f\u060e") - buf.write("\3\2\2\2\u060f\u0610\3\2\2\2\u0610\u0611\3\2\2\2\u0611") - buf.write("\u0617\7\t\2\2\u0612\u0613\5\u0112\u008a\2\u0613\u0614") - buf.write("\7\3\2\2\u0614\u0615\7\t\2\2\u0615\u0617\3\2\2\2\u0616") - buf.write("\u060c\3\2\2\2\u0616\u0612\3\2\2\2\u0617\u00df\3\2\2\2") - buf.write("\u0618\u061a\5\u00e2r\2\u0619\u061b\5\u00e8u\2\u061a\u0619") - buf.write("\3\2\2\2\u061a\u061b\3\2\2\2\u061b\u061c\3\2\2\2\u061c") - buf.write("\u061d\5\u00eav\2\u061d\u00e1\3\2\2\2\u061e\u0620\7}\2") - buf.write("\2\u061f\u0621\5\u00e4s\2\u0620\u061f\3\2\2\2\u0620\u0621") - buf.write("\3\2\2\2\u0621\u0622\3\2\2\2\u0622\u0623\7\u0082\2\2\u0623") - buf.write("\u00e3\3\2\2\2\u0624\u0629\5\u00e6t\2\u0625\u0626\7|\2") - buf.write("\2\u0626\u0628\5\u00e6t\2\u0627\u0625\3\2\2\2\u0628\u062b") - buf.write("\3\2\2\2\u0629\u0627\3\2\2\2\u0629\u062a\3\2\2\2\u062a") - buf.write("\u00e5\3\2\2\2\u062b\u0629\3\2\2\2\u062c\u062d\5l\67\2") - buf.write("\u062d\u00e7\3\2\2\2\u062e\u062f\bu\1\2\u062f\u0630\5") - buf.write("\22\n\2\u0630\u0635\3\2\2\2\u0631\u0632\f\3\2\2\u0632") - buf.write("\u0634\5\22\n\2\u0633\u0631\3\2\2\2\u0634\u0637\3\2\2") - buf.write("\2\u0635\u0633\3\2\2\2\u0635\u0636\3\2\2\2\u0636\u00e9") - buf.write("\3\2\2\2\u0637\u0635\3\2\2\2\u0638\u063f\7\16\2\2\u0639") - buf.write("\u063a\7\16\2\2\u063a\u063c\7\t\2\2\u063b\u063d\7\u00be") - buf.write("\2\2\u063c\u063b\3\2\2\2\u063c\u063d\3\2\2\2\u063d\u063f") - buf.write("\3\2\2\2\u063e\u0638\3\2\2\2\u063e\u0639\3\2\2\2\u063f") - buf.write("\u00eb\3\2\2\2\u0640\u0641\5\u00f0y\2\u0641\u0642\5\u00f2") - buf.write("z\2\u0642\u0643\5\u00eex\2\u0643\u00ed\3\2\2\2\u0644\u0645") - buf.write("\7\u00b8\2\2\u0645\u064d\7\u00be\2\2\u0646\u064d\7\u00b8") - buf.write("\2\2\u0647\u0648\7\16\2\2\u0648\u0649\7\u00bd\2\2\u0649") - buf.write("\u064d\7\u00be\2\2\u064a\u064b\7\16\2\2\u064b\u064d\7") - buf.write("\u00bd\2\2\u064c\u0644\3\2\2\2\u064c\u0646\3\2\2\2\u064c") - buf.write("\u0647\3\2\2\2\u064c\u064a\3\2\2\2\u064d\u00ef\3\2\2\2") - buf.write("\u064e\u064f\7\u00bd\2\2\u064f\u0659\7\u00be\2\2\u0650") - buf.write("\u0651\7\u00bd\2\2\u0651\u0652\7 \2\2\u0652\u0659\7\u00be") - buf.write("\2\2\u0653\u0654\7\u00bd\2\2\u0654\u0655\7|\2\2\u0655") - buf.write("\u0656\7*\2\2\u0656\u0657\7 \2\2\u0657\u0659\7\u00be\2") - buf.write("\2\u0658\u064e\3\2\2\2\u0658\u0650\3\2\2\2\u0658\u0653") - buf.write("\3\2\2\2\u0659\u00f1\3\2\2\2\u065a\u065b\bz\1\2\u065b") - buf.write("\u065c\5\u00f4{\2\u065c\u0661\3\2\2\2\u065d\u065e\f\3") - buf.write("\2\2\u065e\u0660\5\u00f4{\2\u065f\u065d\3\2\2\2\u0660") - buf.write("\u0663\3\2\2\2\u0661\u065f\3\2\2\2\u0661\u0662\3\2\2\2") - buf.write("\u0662\u00f3\3\2\2\2\u0663\u0661\3\2\2\2\u0664\u0667\5") - buf.write("\u00f6|\2\u0665\u0667\5\u00f8}\2\u0666\u0664\3\2\2\2\u0666") - buf.write("\u0665\3\2\2\2\u0667\u00f5\3\2\2\2\u0668\u0669\t\6\2\2") - buf.write("\u0669\u00f7\3\2\2\2\u066a\u066b\5\u0112\u008a\2\u066b") - buf.write("\u066c\7|\2\2\u066c\u066d\5\u0100\u0081\2\u066d\u066e") - buf.write("\7 \2\2\u066e\u066f\5\u00fa~\2\u066f\u0678\3\2\2\2\u0670") - buf.write("\u0671\5\u0112\u008a\2\u0671\u0672\7 \2\2\u0672\u0673") - buf.write("\5\u00fa~\2\u0673\u0678\3\2\2\2\u0674\u0675\5\u0112\u008a") - buf.write("\2\u0675\u0676\5\u00fa~\2\u0676\u0678\3\2\2\2\u0677\u066a") - buf.write("\3\2\2\2\u0677\u0670\3\2\2\2\u0677\u0674\3\2\2\2\u0678") - buf.write("\u00f9\3\2\2\2\u0679\u067e\5\u00fc\177\2\u067a\u067b\7") - buf.write("|\2\2\u067b\u067d\5\u00fc\177\2\u067c\u067a\3\2\2\2\u067d") - buf.write("\u0680\3\2\2\2\u067e\u067c\3\2\2\2\u067e\u067f\3\2\2\2") - buf.write("\u067f\u00fb\3\2\2\2\u0680\u067e\3\2\2\2\u0681\u0682\5") - buf.write("\u00fe\u0080\2\u0682\u0683\7}\2\2\u0683\u0684\5\u0104") - buf.write("\u0083\2\u0684\u0685\7\u0082\2\2\u0685\u0686\7\u00c2\2") - buf.write("\2\u0686\u0687\5\u011c\u008f\2\u0687\u06ad\3\2\2\2\u0688") - buf.write("\u0689\5\u00fe\u0080\2\u0689\u068a\7}\2\2\u068a\u068b") - buf.write("\5\u0104\u0083\2\u068b\u068c\7\u0082\2\2\u068c\u068d\7") - buf.write("\u0084\2\2\u068d\u068e\5\u0272\u013a\2\u068e\u06ad\3\2") - buf.write("\2\2\u068f\u0690\5\u00fe\u0080\2\u0690\u0691\7}\2\2\u0691") - buf.write("\u0692\5\u0104\u0083\2\u0692\u0693\7\u0082\2\2\u0693\u06ad") - buf.write("\3\2\2\2\u0694\u0695\5\u00fe\u0080\2\u0695\u0696\7\u00c2") - buf.write("\2\2\u0696\u0697\5\u011c\u008f\2\u0697\u06ad\3\2\2\2\u0698") - buf.write("\u0699\5\u00fe\u0080\2\u0699\u069a\7\u0084\2\2\u069a\u069b") - buf.write("\5\u0272\u013a\2\u069b\u06ad\3\2\2\2\u069c\u069d\5\u00fe") - buf.write("\u0080\2\u069d\u069e\7\u00c2\2\2\u069e\u069f\5\u011c\u008f") - buf.write("\2\u069f\u06a0\7\u0084\2\2\u06a0\u06a1\5\u0272\u013a\2") - buf.write("\u06a1\u06ad\3\2\2\2\u06a2\u06a3\5\u00fe\u0080\2\u06a3") - buf.write("\u06a4\7\u00c2\2\2\u06a4\u06a5\5\u011c\u008f\2\u06a5\u06a6") - buf.write("\7}\2\2\u06a6\u06a7\5\u0104\u0083\2\u06a7\u06a8\7\u0082") - buf.write("\2\2\u06a8\u06a9\7\u0084\2\2\u06a9\u06aa\5\u0272\u013a") - buf.write("\2\u06aa\u06ad\3\2\2\2\u06ab\u06ad\5\u00fe\u0080\2\u06ac") - buf.write("\u0681\3\2\2\2\u06ac\u0688\3\2\2\2\u06ac\u068f\3\2\2\2") - buf.write("\u06ac\u0694\3\2\2\2\u06ac\u0698\3\2\2\2\u06ac\u069c\3") - buf.write("\2\2\2\u06ac\u06a2\3\2\2\2\u06ac\u06ab\3\2\2\2\u06ad\u00fd") - buf.write("\3\2\2\2\u06ae\u06af\7\u00be\2\2\u06af\u00ff\3\2\2\2\u06b0") - buf.write("\u06b5\5\u0102\u0082\2\u06b1\u06b2\7|\2\2\u06b2\u06b4") - buf.write("\5\u0102\u0082\2\u06b3\u06b1\3\2\2\2\u06b4\u06b7\3\2\2") - buf.write("\2\u06b5\u06b3\3\2\2\2\u06b5\u06b6\3\2\2\2\u06b6\u0101") - buf.write("\3\2\2\2\u06b7\u06b5\3\2\2\2\u06b8\u06bf\7\'\2\2\u06b9") - buf.write("\u06ba\7\17\2\2\u06ba\u06bb\7}\2\2\u06bb\u06bc\5\u0104") - buf.write("\u0083\2\u06bc\u06bd\7\u0082\2\2\u06bd\u06bf\3\2\2\2\u06be") - buf.write("\u06b8\3\2\2\2\u06be\u06b9\3\2\2\2\u06bf\u0103\3\2\2\2") - buf.write("\u06c0\u06c3\5\u0106\u0084\2\u06c1\u06c3\5\u010e\u0088") - buf.write("\2\u06c2\u06c0\3\2\2\2\u06c2\u06c1\3\2\2\2\u06c3\u0105") - buf.write("\3\2\2\2\u06c4\u06c9\5\u0108\u0085\2\u06c5\u06c6\7|\2") - buf.write("\2\u06c6\u06c8\5\u0108\u0085\2\u06c7\u06c5\3\2\2\2\u06c8") - buf.write("\u06cb\3\2\2\2\u06c9\u06c7\3\2\2\2\u06c9\u06ca\3\2\2\2") - buf.write("\u06ca\u0107\3\2\2\2\u06cb\u06c9\3\2\2\2\u06cc\u06cd\5") - buf.write("\u010a\u0086\2\u06cd\u06ce\7\u0083\2\2\u06ce\u06cf\5\u010c") - buf.write("\u0087\2\u06cf\u06d2\3\2\2\2\u06d0\u06d2\5\u010c\u0087") - buf.write("\2\u06d1\u06cc\3\2\2\2\u06d1\u06d0\3\2\2\2\u06d2\u0109") - buf.write("\3\2\2\2\u06d3\u06d4\5\u0272\u013a\2\u06d4\u010b\3\2\2") - buf.write("\2\u06d5\u06d6\5\u0272\u013a\2\u06d6\u010d\3\2\2\2\u06d7") - buf.write("\u06dc\5\u0110\u0089\2\u06d8\u06d9\7|\2\2\u06d9\u06db") - buf.write("\5\u0110\u0089\2\u06da\u06d8\3\2\2\2\u06db\u06de\3\2\2") - buf.write("\2\u06dc\u06da\3\2\2\2\u06dc\u06dd\3\2\2\2\u06dd\u010f") - buf.write("\3\2\2\2\u06de\u06dc\3\2\2\2\u06df\u06e0\7\u0083\2\2\u06e0") - buf.write("\u0111\3\2\2\2\u06e1\u06fb\7\u00aa\2\2\u06e2\u06fb\7$") - buf.write("\2\2\u06e3\u06fb\7\37\2\2\u06e4\u06fb\7\u00a8\2\2\u06e5") - buf.write("\u06fb\7\u00ab\2\2\u06e6\u06fb\7-\2\2\u06e7\u06e8\7-\2") - buf.write("\2\u06e8\u06fb\5\u011a\u008e\2\u06e9\u06ea\7\u00aa\2\2") - buf.write("\u06ea\u06fb\5\u0114\u008b\2\u06eb\u06ec\7$\2\2\u06ec") - buf.write("\u06fb\5\u0114\u008b\2\u06ed\u06ee\7_\2\2\u06ee\u06fb") - buf.write("\7\u00a9\2\2\u06ef\u06f0\7\u00a8\2\2\u06f0\u06fb\5\u0114") - buf.write("\u008b\2\u06f1\u06f2\7-\2\2\u06f2\u06fb\5\u0118\u008d") - buf.write("\2\u06f3\u06f4\7\u00ab\2\2\u06f4\u06fb\5\u0114\u008b\2") - buf.write("\u06f5\u06f6\7\u00bd\2\2\u06f6\u06f7\7}\2\2\u06f7\u06f8") - buf.write("\5\u0116\u008c\2\u06f8\u06f9\7\u0082\2\2\u06f9\u06fb\3") - buf.write("\2\2\2\u06fa\u06e1\3\2\2\2\u06fa\u06e2\3\2\2\2\u06fa\u06e3") - buf.write("\3\2\2\2\u06fa\u06e4\3\2\2\2\u06fa\u06e5\3\2\2\2\u06fa") - buf.write("\u06e6\3\2\2\2\u06fa\u06e7\3\2\2\2\u06fa\u06e9\3\2\2\2") - buf.write("\u06fa\u06eb\3\2\2\2\u06fa\u06ed\3\2\2\2\u06fa\u06ef\3") - buf.write("\2\2\2\u06fa\u06f1\3\2\2\2\u06fa\u06f3\3\2\2\2\u06fa\u06f5") - buf.write("\3\2\2\2\u06fb\u0113\3\2\2\2\u06fc\u06fd\7}\2\2\u06fd") - buf.write("\u06fe\7w\2\2\u06fe\u06ff\7\u0084\2\2\u06ff\u0700\5\u0272") - buf.write("\u013a\2\u0700\u0701\7\u0082\2\2\u0701\u0707\3\2\2\2\u0702") - buf.write("\u0703\7}\2\2\u0703\u0704\5\u0272\u013a\2\u0704\u0705") - buf.write("\7\u0082\2\2\u0705\u0707\3\2\2\2\u0706\u06fc\3\2\2\2\u0706") - buf.write("\u0702\3\2\2\2\u0707\u0115\3\2\2\2\u0708\u0709\5\u012e") - buf.write("\u0098\2\u0709\u0117\3\2\2\2\u070a\u070b\7}\2\2\u070b") - buf.write("\u070c\7x\2\2\u070c\u070d\7\u0084\2\2\u070d\u070e\5\u0128") - buf.write("\u0095\2\u070e\u070f\7|\2\2\u070f\u0710\7w\2\2\u0710\u0711") - buf.write("\7\u0084\2\2\u0711\u0712\5\u0272\u013a\2\u0712\u0713\7") - buf.write("\u0082\2\2\u0713\u072d\3\2\2\2\u0714\u0715\7}\2\2\u0715") - buf.write("\u0716\7x\2\2\u0716\u0717\7\u0084\2\2\u0717\u0718\5\u0128") - buf.write("\u0095\2\u0718\u0719\7|\2\2\u0719\u071a\5\u0272\u013a") - buf.write("\2\u071a\u071b\7\u0082\2\2\u071b\u072d\3\2\2\2\u071c\u071d") - buf.write("\7}\2\2\u071d\u071e\7x\2\2\u071e\u071f\7\u0084\2\2\u071f") - buf.write("\u0720\5\u0128\u0095\2\u0720\u0721\7\u0082\2\2\u0721\u072d") - buf.write("\3\2\2\2\u0722\u0723\7}\2\2\u0723\u0724\7w\2\2\u0724\u0725") - buf.write("\7\u0084\2\2\u0725\u0726\5\u0272\u013a\2\u0726\u0727\7") - buf.write("\u0082\2\2\u0727\u072d\3\2\2\2\u0728\u0729\7}\2\2\u0729") - buf.write("\u072a\5\u0272\u013a\2\u072a\u072b\7\u0082\2\2\u072b\u072d") - buf.write("\3\2\2\2\u072c\u070a\3\2\2\2\u072c\u0714\3\2\2\2\u072c") - buf.write("\u071c\3\2\2\2\u072c\u0722\3\2\2\2\u072c\u0728\3\2\2\2") - buf.write("\u072d\u0119\3\2\2\2\u072e\u072f\7\u00c2\2\2\u072f\u0735") - buf.write("\5\u011c\u008f\2\u0730\u0731\7}\2\2\u0731\u0732\5\u0128") - buf.write("\u0095\2\u0732\u0733\7\u0082\2\2\u0733\u0735\3\2\2\2\u0734") - buf.write("\u072e\3\2\2\2\u0734\u0730\3\2\2\2\u0735\u011b\3\2\2\2") - buf.write("\u0736\u0737\7}\2\2\u0737\u0738\5\u0128\u0095\2\u0738") - buf.write("\u0739\7\u0082\2\2\u0739\u073c\3\2\2\2\u073a\u073c\5\u011e") - buf.write("\u0090\2\u073b\u0736\3\2\2\2\u073b\u073a\3\2\2\2\u073c") - buf.write("\u011d\3\2\2\2\u073d\u074f\5\u0126\u0094\2\u073e\u0740") - buf.write("\t\3\2\2\u073f\u073e\3\2\2\2\u073f\u0740\3\2\2\2\u0740") - buf.write("\u0741\3\2\2\2\u0741\u074f\5\u02b0\u0159\2\u0742\u074f") - buf.write("\7\u00b3\2\2\u0743\u074f\7\u009d\2\2\u0744\u074f\5\u02ac") - buf.write("\u0157\2\u0745\u0746\7\u00bc\2\2\u0746\u0747\7\u00ac\2") - buf.write("\2\u0747\u074f\7\u00b3\2\2\u0748\u0749\5\u0126\u0094\2") - buf.write("\u0749\u074a\7\u00ac\2\2\u074a\u074b\7\u00b3\2\2\u074b") - buf.write("\u074f\3\2\2\2\u074c\u074f\5\u0122\u0092\2\u074d\u074f") - buf.write("\5\u0120\u0091\2\u074e\u073d\3\2\2\2\u074e\u073f\3\2\2") - buf.write("\2\u074e\u0742\3\2\2\2\u074e\u0743\3\2\2\2\u074e\u0744") - buf.write("\3\2\2\2\u074e\u0745\3\2\2\2\u074e\u0748\3\2\2\2\u074e") - buf.write("\u074c\3\2\2\2\u074e\u074d\3\2\2\2\u074f\u011f\3\2\2\2") - buf.write("\u0750\u0751\t\7\2\2\u0751\u0121\3\2\2\2\u0752\u0753\5") - buf.write("\u0116\u008c\2\u0753\u0754\7}\2\2\u0754\u0755\5\u0124") - buf.write("\u0093\2\u0755\u0756\7\u0082\2\2\u0756\u0123\3\2\2\2\u0757") - buf.write("\u0758\5\u0272\u013a\2\u0758\u0759\7|\2\2\u0759\u075a") - buf.write("\5\u0272\u013a\2\u075a\u0125\3\2\2\2\u075b\u075c\7\u00be") - buf.write("\2\2\u075c\u0127\3\2\2\2\u075d\u0760\5\u0272\u013a\2\u075e") - buf.write("\u0760\7\u00c2\2\2\u075f\u075d\3\2\2\2\u075f\u075e\3\2") - buf.write("\2\2\u0760\u0129\3\2\2\2\u0761\u0762\7\5\2\2\u0762\u0763") - buf.write("\5\u012c\u0097\2\u0763\u012b\3\2\2\2\u0764\u0765\5\u012e") - buf.write("\u0098\2\u0765\u012d\3\2\2\2\u0766\u0767\7\u00be\2\2\u0767") - buf.write("\u012f\3\2\2\2\u0768\u0769\b\u0099\1\2\u0769\u076c\5\22") - buf.write("\n\2\u076a\u076c\5\u0132\u009a\2\u076b\u0768\3\2\2\2\u076b") - buf.write("\u076a\3\2\2\2\u076c\u0773\3\2\2\2\u076d\u076e\f\4\2\2") - buf.write("\u076e\u0772\5\22\n\2\u076f\u0770\f\3\2\2\u0770\u0772") - buf.write("\5\u0132\u009a\2\u0771\u076d\3\2\2\2\u0771\u076f\3\2\2") - buf.write("\2\u0772\u0775\3\2\2\2\u0773\u0771\3\2\2\2\u0773\u0774") - buf.write("\3\2\2\2\u0774\u0131\3\2\2\2\u0775\u0773\3\2\2\2\u0776") - buf.write("\u0779\5\u0134\u009b\2\u0777\u0779\5\u0136\u009c\2\u0778") - buf.write("\u0776\3\2\2\2\u0778\u0777\3\2\2\2\u0779\u0133\3\2\2\2") - buf.write("\u077a\u077b\7\4\2\2\u077b\u0135\3\2\2\2\u077c\u077f\5") - buf.write("\u0138\u009d\2\u077d\u077f\5\u0260\u0131\2\u077e\u077c") - buf.write("\3\2\2\2\u077e\u077d\3\2\2\2\u077f\u0137\3\2\2\2\u0780") - buf.write("\u0781\5\u00dep\2\u0781\u0782\5\u013a\u009e\2\u0782\u0783") - buf.write("\5\u013c\u009f\2\u0783\u0139\3\2\2\2\u0784\u0785\7\u00be") - buf.write("\2\2\u0785\u013b\3\2\2\2\u0786\u0788\5\u00e2r\2\u0787") - buf.write("\u0789\5\u013e\u00a0\2\u0788\u0787\3\2\2\2\u0788\u0789") - buf.write("\3\2\2\2\u0789\u078a\3\2\2\2\u078a\u078b\5\u00eav\2\u078b") - buf.write("\u07a3\3\2\2\2\u078c\u078d\5\u00e2r\2\u078d\u078e\79\2") - buf.write("\2\u078e\u078f\7}\2\2\u078f\u0790\7\u00be\2\2\u0790\u0792") - buf.write("\7\u0082\2\2\u0791\u0793\5\u013e\u00a0\2\u0792\u0791\3") - buf.write("\2\2\2\u0792\u0793\3\2\2\2\u0793\u0794\3\2\2\2\u0794\u0795") - buf.write("\5\u00eav\2\u0795\u07a3\3\2\2\2\u0796\u0797\5\u00e2r\2") - buf.write("\u0797\u0798\79\2\2\u0798\u0799\7}\2\2\u0799\u079a\7\u00be") - buf.write("\2\2\u079a\u079b\7\u0082\2\2\u079b\u079c\5\16\b\2\u079c") - buf.write("\u079d\5\u00eav\2\u079d\u07a3\3\2\2\2\u079e\u079f\5\u00e2") - buf.write("r\2\u079f\u07a0\5\16\b\2\u07a0\u07a1\5\u00eav\2\u07a1") - buf.write("\u07a3\3\2\2\2\u07a2\u0786\3\2\2\2\u07a2\u078c\3\2\2\2") - buf.write("\u07a2\u0796\3\2\2\2\u07a2\u079e\3\2\2\2\u07a3\u013d\3") - buf.write("\2\2\2\u07a4\u07a6\5\u0140\u00a1\2\u07a5\u07a4\3\2\2\2") - buf.write("\u07a6\u07a7\3\2\2\2\u07a7\u07a5\3\2\2\2\u07a7\u07a8\3") - buf.write("\2\2\2\u07a8\u013f\3\2\2\2\u07a9\u07ac\5\22\n\2\u07aa") - buf.write("\u07ac\5\u0142\u00a2\2\u07ab\u07a9\3\2\2\2\u07ab\u07aa") - buf.write("\3\2\2\2\u07ac\u0141\3\2\2\2\u07ad\u07b3\5\u01b6\u00dc") - buf.write("\2\u07ae\u07b3\5\u0174\u00bb\2\u07af\u07b3\5\u0164\u00b3") - buf.write("\2\u07b0\u07b3\5\u0152\u00aa\2\u07b1\u07b3\5\u0144\u00a3") - buf.write("\2\u07b2\u07ad\3\2\2\2\u07b2\u07ae\3\2\2\2\u07b2\u07af") - buf.write("\3\2\2\2\u07b2\u07b0\3\2\2\2\u07b2\u07b1\3\2\2\2\u07b3") - buf.write("\u0143\3\2\2\2\u07b4\u07b5\5\u014c\u00a7\2\u07b5\u07b6") - buf.write("\5\u014a\u00a6\2\u07b6\u07bb\3\2\2\2\u07b7\u07b8\5\u0146") - buf.write("\u00a4\2\u07b8\u07b9\5\u014a\u00a6\2\u07b9\u07bb\3\2\2") - buf.write("\2\u07ba\u07b4\3\2\2\2\u07ba\u07b7\3\2\2\2\u07bb\u0145") - buf.write("\3\2\2\2\u07bc\u07bd\b\u00a4\1\2\u07bd\u07be\5\u014c\u00a7") - buf.write("\2\u07be\u07bf\5\u0148\u00a5\2\u07bf\u07c4\3\2\2\2\u07c0") - buf.write("\u07c1\f\3\2\2\u07c1\u07c3\5\u0242\u0122\2\u07c2\u07c0") - buf.write("\3\2\2\2\u07c3\u07c6\3\2\2\2\u07c4\u07c2\3\2\2\2\u07c4") - buf.write("\u07c5\3\2\2\2\u07c5\u0147\3\2\2\2\u07c6\u07c4\3\2\2\2") - buf.write("\u07c7\u07c8\7#\2\2\u07c8\u0149\3\2\2\2\u07c9\u07cd\7") - buf.write(">\2\2\u07ca\u07cb\7\16\2\2\u07cb\u07cd\7?\2\2\u07cc\u07c9") - buf.write("\3\2\2\2\u07cc\u07ca\3\2\2\2\u07cd\u014b\3\2\2\2\u07ce") - buf.write("\u07cf\b\u00a7\1\2\u07cf\u07d0\5\u014e\u00a8\2\u07d0\u07d5") - buf.write("\3\2\2\2\u07d1\u07d2\f\3\2\2\u07d2\u07d4\5\u0242\u0122") - buf.write("\2\u07d3\u07d1\3\2\2\2\u07d4\u07d7\3\2\2\2\u07d5\u07d3") - buf.write("\3\2\2\2\u07d5\u07d6\3\2\2\2\u07d6\u014d\3\2\2\2\u07d7") - buf.write("\u07d5\3\2\2\2\u07d8\u07d9\7?\2\2\u07d9\u07da\7}\2\2\u07da") - buf.write("\u07db\5\u0150\u00a9\2\u07db\u07dc\7\u0082\2\2\u07dc\u014f") - buf.write("\3\2\2\2\u07dd\u07de\5\u0272\u013a\2\u07de\u0151\3\2\2") - buf.write("\2\u07df\u07e0\7\u00be\2\2\u07e0\u07e1\7\u0083\2\2\u07e1") - buf.write("\u07e2\7A\2\2\u07e2\u07e3\7}\2\2\u07e3\u07e4\5\u0272\u013a") - buf.write("\2\u07e4\u07e5\7\u0082\2\2\u07e5\u07e6\5\u0154\u00ab\2") - buf.write("\u07e6\u07fe\3\2\2\2\u07e7\u07e8\7A\2\2\u07e8\u07e9\7") - buf.write("}\2\2\u07e9\u07ea\5\u0272\u013a\2\u07ea\u07eb\7\u0082") - buf.write("\2\2\u07eb\u07ec\5\u0154\u00ab\2\u07ec\u07fe\3\2\2\2\u07ed") - buf.write("\u07ee\7\u00be\2\2\u07ee\u07ef\7\u0083\2\2\u07ef\u07f0") - buf.write("\7B\2\2\u07f0\u07f1\7C\2\2\u07f1\u07f2\7}\2\2\u07f2\u07f3") - buf.write("\5\u0272\u013a\2\u07f3\u07f4\7\u0082\2\2\u07f4\u07f5\5") - buf.write("\u0154\u00ab\2\u07f5\u07fe\3\2\2\2\u07f6\u07f7\7B\2\2") - buf.write("\u07f7\u07f8\7C\2\2\u07f8\u07f9\7}\2\2\u07f9\u07fa\5\u0272") - buf.write("\u013a\2\u07fa\u07fb\7\u0082\2\2\u07fb\u07fc\5\u0154\u00ab") - buf.write("\2\u07fc\u07fe\3\2\2\2\u07fd\u07df\3\2\2\2\u07fd\u07e7") - buf.write("\3\2\2\2\u07fd\u07ed\3\2\2\2\u07fd\u07f6\3\2\2\2\u07fe") - buf.write("\u0153\3\2\2\2\u07ff\u0800\5\u0158\u00ad\2\u0800\u0801") - buf.write("\5\u0156\u00ac\2\u0801\u0804\3\2\2\2\u0802\u0804\5\u0156") - buf.write("\u00ac\2\u0803\u07ff\3\2\2\2\u0803\u0802\3\2\2\2\u0804") - buf.write("\u0155\3\2\2\2\u0805\u0807\7@\2\2\u0806\u0808\7\u00be") - buf.write("\2\2\u0807\u0806\3\2\2\2\u0807\u0808\3\2\2\2\u0808\u080f") - buf.write("\3\2\2\2\u0809\u080a\7\16\2\2\u080a\u080c\7B\2\2\u080b") - buf.write("\u080d\7\u00be\2\2\u080c\u080b\3\2\2\2\u080c\u080d\3\2") - buf.write("\2\2\u080d\u080f\3\2\2\2\u080e\u0805\3\2\2\2\u080e\u0809") - buf.write("\3\2\2\2\u080f\u0157\3\2\2\2\u0810\u0811\b\u00ad\1\2\u0811") - buf.write("\u0812\5\u015c\u00af\2\u0812\u0817\3\2\2\2\u0813\u0814") - buf.write("\f\3\2\2\u0814\u0816\5\u015a\u00ae\2\u0815\u0813\3\2\2") - buf.write("\2\u0816\u0819\3\2\2\2\u0817\u0815\3\2\2\2\u0817\u0818") - buf.write("\3\2\2\2\u0818\u0159\3\2\2\2\u0819\u0817\3\2\2\2\u081a") - buf.write("\u081d\5\u015c\u00af\2\u081b\u081d\5\u0186\u00c4\2\u081c") - buf.write("\u081a\3\2\2\2\u081c\u081b\3\2\2\2\u081d\u015b\3\2\2\2") - buf.write("\u081e\u081f\7C\2\2\u081f\u0825\5\u015e\u00b0\2\u0820") - buf.write("\u0821\7C\2\2\u0821\u0822\5\u015e\u00b0\2\u0822\u0823") - buf.write("\7\u00be\2\2\u0823\u0825\3\2\2\2\u0824\u081e\3\2\2\2\u0824") - buf.write("\u0820\3\2\2\2\u0825\u015d\3\2\2\2\u0826\u0827\7}\2\2") - buf.write("\u0827\u0828\5\u0160\u00b1\2\u0828\u0829\7\u0082\2\2\u0829") - buf.write("\u082c\3\2\2\2\u082a\u082c\7D\2\2\u082b\u0826\3\2\2\2") - buf.write("\u082b\u082a\3\2\2\2\u082c\u015f\3\2\2\2\u082d\u082f\5") - buf.write("\u0162\u00b2\2\u082e\u082d\3\2\2\2\u082f\u0830\3\2\2\2") - buf.write("\u0830\u082e\3\2\2\2\u0830\u0831\3\2\2\2\u0831\u0161\3") - buf.write("\2\2\2\u0832\u083d\5\u0272\u013a\2\u0833\u0834\5\u0272") - buf.write("\u013a\2\u0834\u0835\7\u0083\2\2\u0835\u083d\3\2\2\2\u0836") - buf.write("\u0837\7\u0083\2\2\u0837\u083d\5\u0272\u013a\2\u0838\u0839") - buf.write("\5\u0272\u013a\2\u0839\u083a\7\u0083\2\2\u083a\u083b\5") - buf.write("\u0272\u013a\2\u083b\u083d\3\2\2\2\u083c\u0832\3\2\2\2") - buf.write("\u083c\u0833\3\2\2\2\u083c\u0836\3\2\2\2\u083c\u0838\3") - buf.write("\2\2\2\u083d\u0163\3\2\2\2\u083e\u083f\5\u0166\u00b4\2") - buf.write("\u083f\u0843\5\u0168\u00b5\2\u0840\u0842\5\u016a\u00b6") - buf.write("\2\u0841\u0840\3\2\2\2\u0842\u0845\3\2\2\2\u0843\u0841") - buf.write("\3\2\2\2\u0843\u0844\3\2\2\2\u0844\u0847\3\2\2\2\u0845") - buf.write("\u0843\3\2\2\2\u0846\u0848\5\u016e\u00b8\2\u0847\u0846") - buf.write("\3\2\2\2\u0847\u0848\3\2\2\2\u0848\u0849\3\2\2\2\u0849") - buf.write("\u084a\5\u0172\u00ba\2\u084a\u0165\3\2\2\2\u084b\u084c") - buf.write("\7\65\2\2\u084c\u084d\7}\2\2\u084d\u084e\5\u0272\u013a") - buf.write("\2\u084e\u084f\7\u0082\2\2\u084f\u0850\7\66\2\2\u0850") - buf.write("\u0167\3\2\2\2\u0851\u0853\5\u0186\u00c4\2\u0852\u0851") - buf.write("\3\2\2\2\u0853\u0856\3\2\2\2\u0854\u0852\3\2\2\2\u0854") - buf.write("\u0855\3\2\2\2\u0855\u0169\3\2\2\2\u0856\u0854\3\2\2\2") - buf.write("\u0857\u0858\5\u016c\u00b7\2\u0858\u0859\5\u0168\u00b5") - buf.write("\2\u0859\u016b\3\2\2\2\u085a\u085b\7:\2\2\u085b\u085c") - buf.write("\7}\2\2\u085c\u085d\5\u0272\u013a\2\u085d\u085e\7\u0082") - buf.write("\2\2\u085e\u085f\7\66\2\2\u085f\u0868\3\2\2\2\u0860\u0861") - buf.write("\7\67\2\2\u0861\u0862\7\65\2\2\u0862\u0863\7}\2\2\u0863") - buf.write("\u0864\5\u0272\u013a\2\u0864\u0865\7\u0082\2\2\u0865\u0866") - buf.write("\7\66\2\2\u0866\u0868\3\2\2\2\u0867\u085a\3\2\2\2\u0867") - buf.write("\u0860\3\2\2\2\u0868\u016d\3\2\2\2\u0869\u086a\5\u0170") - buf.write("\u00b9\2\u086a\u086b\5\u0168\u00b5\2\u086b\u016f\3\2\2") - buf.write("\2\u086c\u086d\7\67\2\2\u086d\u0171\3\2\2\2\u086e\u0872") - buf.write("\78\2\2\u086f\u0870\7\16\2\2\u0870\u0872\7\65\2\2\u0871") - buf.write("\u086e\3\2\2\2\u0871\u086f\3\2\2\2\u0872\u0173\3\2\2\2") - buf.write("\u0873\u0876\5\u017e\u00c0\2\u0874\u0876\5\u0176\u00bc") - buf.write("\2\u0875\u0873\3\2\2\2\u0875\u0874\3\2\2\2\u0876\u0175") - buf.write("\3\2\2\2\u0877\u0879\5\u017c\u00bf\2\u0878\u0877\3\2\2") - buf.write("\2\u0878\u0879\3\2\2\2\u0879\u087a\3\2\2\2\u087a\u087c") - buf.write("\7;\2\2\u087b\u087d\5\u01ae\u00d8\2\u087c\u087b\3\2\2") - buf.write("\2\u087c\u087d\3\2\2\2\u087d\u0881\3\2\2\2\u087e\u0880") - buf.write("\5\u0186\u00c4\2\u087f\u087e\3\2\2\2\u0880\u0883\3\2\2") - buf.write("\2\u0881\u087f\3\2\2\2\u0881\u0882\3\2\2\2\u0882\u0884") - buf.write("\3\2\2\2\u0883\u0881\3\2\2\2\u0884\u0885\5\u0178\u00bd") - buf.write("\2\u0885\u0177\3\2\2\2\u0886\u0888\7H\2\2\u0887\u0889") - buf.write("\5\u017a\u00be\2\u0888\u0887\3\2\2\2\u0888\u0889\3\2\2") - buf.write("\2\u0889\u0890\3\2\2\2\u088a\u088b\7\16\2\2\u088b\u088d") - buf.write("\7;\2\2\u088c\u088e\5\u017a\u00be\2\u088d\u088c\3\2\2") - buf.write("\2\u088d\u088e\3\2\2\2\u088e\u0890\3\2\2\2\u088f\u0886") - buf.write("\3\2\2\2\u088f\u088a\3\2\2\2\u0890\u0179\3\2\2\2\u0891") - buf.write("\u0892\5\u012e\u0098\2\u0892\u017b\3\2\2\2\u0893\u0894") - buf.write("\7\u00be\2\2\u0894\u0895\7\u0083\2\2\u0895\u017d\3\2\2") - buf.write("\2\u0896\u0897\7;\2\2\u0897\u0898\5\u0180\u00c1\2\u0898") - buf.write("\u089c\5\u01ae\u00d8\2\u0899\u089b\5\u0186\u00c4\2\u089a") - buf.write("\u0899\3\2\2\2\u089b\u089e\3\2\2\2\u089c\u089a\3\2\2\2") - buf.write("\u089c\u089d\3\2\2\2\u089d\u089f\3\2\2\2\u089e\u089c\3") - buf.write("\2\2\2\u089f\u08a0\5\u0182\u00c2\2\u08a0\u08a1\5\u0184") - buf.write("\u00c3\2\u08a1\u017f\3\2\2\2\u08a2\u08a3\7\u00bc\2\2\u08a3") - buf.write("\u0181\3\2\2\2\u08a4\u08a5\7\u00bc\2\2\u08a5\u0183\3\2") - buf.write("\2\2\u08a6\u08a7\5\u01b6\u00dc\2\u08a7\u0185\3\2\2\2\u08a8") - buf.write("\u08ae\5\u0142\u00a2\2\u08a9\u08ae\5\62\32\2\u08aa\u08ae") - buf.write("\5\u018a\u00c6\2\u08ab\u08ae\5@!\2\u08ac\u08ae\5\u0188") - buf.write("\u00c5\2\u08ad\u08a8\3\2\2\2\u08ad\u08a9\3\2\2\2\u08ad") - buf.write("\u08aa\3\2\2\2\u08ad\u08ab\3\2\2\2\u08ad\u08ac\3\2\2\2") - buf.write("\u08ae\u0187\3\2\2\2\u08af\u08b0\7;\2\2\u08b0\u08b1\5") - buf.write("\u023e\u0120\2\u08b1\u08b2\5\u01ae\u00d8\2\u08b2\u0189") - buf.write("\3\2\2\2\u08b3\u08b4\7\62\2\2\u08b4\u08bb\5\u018c\u00c7") - buf.write("\2\u08b5\u08b7\7|\2\2\u08b6\u08b5\3\2\2\2\u08b6\u08b7") - buf.write("\3\2\2\2\u08b7\u08b8\3\2\2\2\u08b8\u08ba\5\u018c\u00c7") - buf.write("\2\u08b9\u08b6\3\2\2\2\u08ba\u08bd\3\2\2\2\u08bb\u08b9") - buf.write("\3\2\2\2\u08bb\u08bc\3\2\2\2\u08bc\u018b\3\2\2\2\u08bd") - buf.write("\u08bb\3\2\2\2\u08be\u08bf\5\u018e\u00c8\2\u08bf\u08c0") - buf.write("\5\u0190\u00c9\2\u08c0\u018d\3\2\2\2\u08c1\u08c6\5\u0194") - buf.write("\u00cb\2\u08c2\u08c3\7|\2\2\u08c3\u08c5\5\u0194\u00cb") - buf.write("\2\u08c4\u08c2\3\2\2\2\u08c5\u08c8\3\2\2\2\u08c6\u08c4") - buf.write("\3\2\2\2\u08c6\u08c7\3\2\2\2\u08c7\u08c9\3\2\2\2\u08c8") - buf.write("\u08c6\3\2\2\2\u08c9\u08ca\7\u0087\2\2\u08ca\u018f\3\2") - buf.write("\2\2\u08cb\u08d0\5\u0192\u00ca\2\u08cc\u08cd\7|\2\2\u08cd") - buf.write("\u08cf\5\u0192\u00ca\2\u08ce\u08cc\3\2\2\2\u08cf\u08d2") - buf.write("\3\2\2\2\u08d0\u08ce\3\2\2\2\u08d0\u08d1\3\2\2\2\u08d1") - buf.write("\u08d3\3\2\2\2\u08d2\u08d0\3\2\2\2\u08d3\u08d4\7\u0087") - buf.write("\2\2\u08d4\u0191\3\2\2\2\u08d5\u08df\5\u011e\u0090\2\u08d6") - buf.write("\u08d7\5\u011e\u0090\2\u08d7\u08d8\7\u00c2\2\2\u08d8\u08d9") - buf.write("\5\u011e\u0090\2\u08d9\u08df\3\2\2\2\u08da\u08db\5\u0126") - buf.write("\u0094\2\u08db\u08dc\7\u00c2\2\2\u08dc\u08dd\5\u011e\u0090") - buf.write("\2\u08dd\u08df\3\2\2\2\u08de\u08d5\3\2\2\2\u08de\u08d6") - buf.write("\3\2\2\2\u08de\u08da\3\2\2\2\u08df\u0193\3\2\2\2\u08e0") - buf.write("\u08e3\5\u0196\u00cc\2\u08e1\u08e3\5\u01a0\u00d1\2\u08e2") - buf.write("\u08e0\3\2\2\2\u08e2\u08e1\3\2\2\2\u08e3\u0195\3\2\2\2") - buf.write("\u08e4\u08e6\5\u01b2\u00da\2\u08e5\u08e7\5\u0198\u00cd") - buf.write("\2\u08e6\u08e5\3\2\2\2\u08e6\u08e7\3\2\2\2\u08e7\u08e9") - buf.write("\3\2\2\2\u08e8\u08ea\5\u019e\u00d0\2\u08e9\u08e8\3\2\2") - buf.write("\2\u08e9\u08ea\3\2\2\2\u08ea\u0197\3\2\2\2\u08eb\u08ec") - buf.write("\7}\2\2\u08ec\u08ed\5\u019a\u00ce\2\u08ed\u08ee\7\u0082") - buf.write("\2\2\u08ee\u0199\3\2\2\2\u08ef\u08f1\5\u019c\u00cf\2\u08f0") - buf.write("\u08ef\3\2\2\2\u08f1\u08f2\3\2\2\2\u08f2\u08f0\3\2\2\2") - buf.write("\u08f2\u08f3\3\2\2\2\u08f3\u019b\3\2\2\2\u08f4\u08f5\5") - buf.write("\u0272\u013a\2\u08f5\u019d\3\2\2\2\u08f6\u08f8\7}\2\2") - buf.write("\u08f7\u08f9\5\u0272\u013a\2\u08f8\u08f7\3\2\2\2\u08f8") - buf.write("\u08f9\3\2\2\2\u08f9\u08fa\3\2\2\2\u08fa\u08fb\5\u02aa") - buf.write("\u0156\2\u08fb\u08fc\7\u0082\2\2\u08fc\u019f\3\2\2\2\u08fd") - buf.write("\u08fe\7}\2\2\u08fe\u08ff\5\u01a2\u00d2\2\u08ff\u0900") - buf.write("\7|\2\2\u0900\u0901\5\u01ac\u00d7\2\u0901\u0902\7\u0084") - buf.write("\2\2\u0902\u0903\5\u0272\u013a\2\u0903\u0904\7|\2\2\u0904") - buf.write("\u0905\5\u0272\u013a\2\u0905\u0906\7\u0082\2\2\u0906\u0914") - buf.write("\3\2\2\2\u0907\u0908\7}\2\2\u0908\u0909\5\u01a2\u00d2") - buf.write("\2\u0909\u090a\7|\2\2\u090a\u090b\5\u01ac\u00d7\2\u090b") - buf.write("\u090c\7\u0084\2\2\u090c\u090d\5\u0272\u013a\2\u090d\u090e") - buf.write("\7|\2\2\u090e\u090f\5\u0272\u013a\2\u090f\u0910\7|\2\2") - buf.write("\u0910\u0911\5\u0272\u013a\2\u0911\u0912\7\u0082\2\2\u0912") - buf.write("\u0914\3\2\2\2\u0913\u08fd\3\2\2\2\u0913\u0907\3\2\2\2") - buf.write("\u0914\u01a1\3\2\2\2\u0915\u0917\5\u01a4\u00d3\2\u0916") - buf.write("\u0915\3\2\2\2\u0917\u0918\3\2\2\2\u0918\u0916\3\2\2\2") - buf.write("\u0918\u0919\3\2\2\2\u0919\u01a3\3\2\2\2\u091a\u091e\5") - buf.write("\u01aa\u00d6\2\u091b\u091e\5\u01a0\u00d1\2\u091c\u091e") - buf.write("\5\u01a6\u00d4\2\u091d\u091a\3\2\2\2\u091d\u091b\3\2\2") - buf.write("\2\u091d\u091c\3\2\2\2\u091e\u01a5\3\2\2\2\u091f\u0920") - buf.write("\b\u00d4\1\2\u0920\u0921\5\u01b2\u00da\2\u0921\u0922\5") - buf.write("\u01a8\u00d5\2\u0922\u0927\3\2\2\2\u0923\u0924\f\3\2\2") - buf.write("\u0924\u0926\5\u01a8\u00d5\2\u0925\u0923\3\2\2\2\u0926") - buf.write("\u0929\3\2\2\2\u0927\u0925\3\2\2\2\u0927\u0928\3\2\2\2") - buf.write("\u0928\u01a7\3\2\2\2\u0929\u0927\3\2\2\2\u092a\u092b\7") - buf.write("}\2\2\u092b\u092c\5\u02a6\u0154\2\u092c\u092d\7\u0082") - buf.write("\2\2\u092d\u092e\7~\2\2\u092e\u092f\7\u00be\2\2\u092f") - buf.write("\u0933\3\2\2\2\u0930\u0931\7~\2\2\u0931\u0933\7\u00be") - buf.write("\2\2\u0932\u092a\3\2\2\2\u0932\u0930\3\2\2\2\u0933\u01a9") - buf.write("\3\2\2\2\u0934\u0935\5\u01b2\u00da\2\u0935\u0936\7}\2") - buf.write("\2\u0936\u0937\5\u02a6\u0154\2\u0937\u0938\7\u0082\2\2") - buf.write("\u0938\u093f\3\2\2\2\u0939\u093a\5\u01a6\u00d4\2\u093a") - buf.write("\u093b\7}\2\2\u093b\u093c\5\u02a6\u0154\2\u093c\u093d") - buf.write("\7\u0082\2\2\u093d\u093f\3\2\2\2\u093e\u0934\3\2\2\2\u093e") - buf.write("\u0939\3\2\2\2\u093f\u01ab\3\2\2\2\u0940\u0941\7\u00be") - buf.write("\2\2\u0941\u01ad\3\2\2\2\u0942\u0944\7|\2\2\u0943\u0942") - buf.write("\3\2\2\2\u0943\u0944\3\2\2\2\u0944\u0945\3\2\2\2\u0945") - buf.write("\u0946\5\u01b0\u00d9\2\u0946\u01af\3\2\2\2\u0947\u0948") - buf.write("\5\u01b2\u00da\2\u0948\u0949\7\u0084\2\2\u0949\u094a\5") - buf.write("\u0272\u013a\2\u094a\u094b\7|\2\2\u094b\u094d\5\u0272") - buf.write("\u013a\2\u094c\u094e\5\u01b4\u00db\2\u094d\u094c\3\2\2") - buf.write("\2\u094d\u094e\3\2\2\2\u094e\u0955\3\2\2\2\u094f\u0950") - buf.write("\7\177\2\2\u0950\u0951\7}\2\2\u0951\u0952\5\u0272\u013a") - buf.write("\2\u0952\u0953\7\u0082\2\2\u0953\u0955\3\2\2\2\u0954\u0947") - buf.write("\3\2\2\2\u0954\u094f\3\2\2\2\u0955\u01b1\3\2\2\2\u0956") - buf.write("\u0957\7\u00be\2\2\u0957\u01b3\3\2\2\2\u0958\u0959\7|") - buf.write("\2\2\u0959\u095a\5\u0272\u013a\2\u095a\u01b5\3\2\2\2\u095b") - buf.write("\u0979\5\u023c\u011f\2\u095c\u0979\5\u0242\u0122\2\u095d") - buf.write("\u0979\5\u024a\u0126\2\u095e\u0979\5\u024c\u0127\2\u095f") - buf.write("\u0979\5\u0234\u011b\2\u0960\u0979\5\u0226\u0114\2\u0961") - buf.write("\u0979\5\u0224\u0113\2\u0962\u0979\5\u0222\u0112\2\u0963") - buf.write("\u0979\5\u021c\u010f\2\u0964\u0979\5\u021e\u0110\2\u0965") - buf.write("\u0979\5\u0218\u010d\2\u0966\u0979\5\u02b8\u015d\2\u0967") - buf.write("\u0979\5\u0212\u010a\2\u0968\u0979\5\u020c\u0107\2\u0969") - buf.write("\u0979\5\u020a\u0106\2\u096a\u0979\5\u0200\u0101\2\u096b") - buf.write("\u0979\5\u01ea\u00f6\2\u096c\u0979\5\u01e6\u00f4\2\u096d") - buf.write("\u0979\5\u01e8\u00f5\2\u096e\u0979\5\u01de\u00f0\2\u096f") - buf.write("\u0979\5\u01d8\u00ed\2\u0970\u0979\5\u01da\u00ee\2\u0971") - buf.write("\u0979\5\u01ce\u00e8\2\u0972\u0979\5\u01cc\u00e7\2\u0973") - buf.write("\u0979\5\u01c8\u00e5\2\u0974\u0979\5\u01c6\u00e4\2\u0975") - buf.write("\u0979\5\u01be\u00e0\2\u0976\u0979\5\u01ba\u00de\2\u0977") - buf.write("\u0979\5\u01b8\u00dd\2\u0978\u095b\3\2\2\2\u0978\u095c") - buf.write("\3\2\2\2\u0978\u095d\3\2\2\2\u0978\u095e\3\2\2\2\u0978") - buf.write("\u095f\3\2\2\2\u0978\u0960\3\2\2\2\u0978\u0961\3\2\2\2") - buf.write("\u0978\u0962\3\2\2\2\u0978\u0963\3\2\2\2\u0978\u0964\3") - buf.write("\2\2\2\u0978\u0965\3\2\2\2\u0978\u0966\3\2\2\2\u0978\u0967") - buf.write("\3\2\2\2\u0978\u0968\3\2\2\2\u0978\u0969\3\2\2\2\u0978") - buf.write("\u096a\3\2\2\2\u0978\u096b\3\2\2\2\u0978\u096c\3\2\2\2") - buf.write("\u0978\u096d\3\2\2\2\u0978\u096e\3\2\2\2\u0978\u096f\3") - buf.write("\2\2\2\u0978\u0970\3\2\2\2\u0978\u0971\3\2\2\2\u0978\u0972") - buf.write("\3\2\2\2\u0978\u0973\3\2\2\2\u0978\u0974\3\2\2\2\u0978") - buf.write("\u0975\3\2\2\2\u0978\u0976\3\2\2\2\u0978\u0977\3\2\2\2") - buf.write("\u0979\u01b7\3\2\2\2\u097a\u097b\7?\2\2\u097b\u097c\7") - buf.write("}\2\2\u097c\u097d\5\u0150\u00a9\2\u097d\u097e\7\u0082") - buf.write("\2\2\u097e\u097f\5\u0242\u0122\2\u097f\u01b9\3\2\2\2\u0980") - buf.write("\u0981\7\u00be\2\2\u0981\u0982\7\33\2\2\u0982\u098d\5") - buf.write("\u01bc\u00df\2\u0983\u0985\7\u00be\2\2\u0984\u0986\5\u0244") - buf.write("\u0123\2\u0985\u0984\3\2\2\2\u0985\u0986\3\2\2\2\u0986") - buf.write("\u0987\3\2\2\2\u0987\u0988\7~\2\2\u0988\u0989\5\u02a0") - buf.write("\u0151\2\u0989\u098a\7\33\2\2\u098a\u098b\5\u01bc\u00df") - buf.write("\2\u098b\u098d\3\2\2\2\u098c\u0980\3\2\2\2\u098c\u0983") - buf.write("\3\2\2\2\u098d\u01bb\3\2\2\2\u098e\u098f\5\u0272\u013a") - buf.write("\2\u098f\u01bd\3\2\2\2\u0990\u0991\7\u00b6\2\2\u0991\u0992") - buf.write("\7}\2\2\u0992\u0993\5\u01c0\u00e1\2\u0993\u0994\7\u0082") - buf.write("\2\2\u0994\u01bf\3\2\2\2\u0995\u099a\5\u01c2\u00e2\2\u0996") - buf.write("\u0997\7|\2\2\u0997\u0999\5\u01c2\u00e2\2\u0998\u0996") - buf.write("\3\2\2\2\u0999\u099c\3\2\2\2\u099a\u0998\3\2\2\2\u099a") - buf.write("\u099b\3\2\2\2\u099b\u01c1\3\2\2\2\u099c\u099a\3\2\2\2") - buf.write("\u099d\u09a0\7\u00be\2\2\u099e\u09a0\5\u01c4\u00e3\2\u099f") - buf.write("\u099d\3\2\2\2\u099f\u099e\3\2\2\2\u09a0\u01c3\3\2\2\2") - buf.write("\u09a1\u09a2\b\u00e3\1\2\u09a2\u09a4\7\u00be\2\2\u09a3") - buf.write("\u09a5\5\u0244\u0123\2\u09a4\u09a3\3\2\2\2\u09a4\u09a5") - buf.write("\3\2\2\2\u09a5\u09a6\3\2\2\2\u09a6\u09a7\7~\2\2\u09a7") - buf.write("\u09a8\7\u00be\2\2\u09a8\u09ad\3\2\2\2\u09a9\u09aa\f\3") - buf.write("\2\2\u09aa\u09ac\5\u01a8\u00d5\2\u09ab\u09a9\3\2\2\2\u09ac") - buf.write("\u09af\3\2\2\2\u09ad\u09ab\3\2\2\2\u09ad\u09ae\3\2\2\2") - buf.write("\u09ae\u01c5\3\2\2\2\u09af\u09ad\3\2\2\2\u09b0\u09b2\7") - buf.write("\u00bf\2\2\u09b1\u09b3\5\u017a\u00be\2\u09b2\u09b1\3\2") - buf.write("\2\2\u09b2\u09b3\3\2\2\2\u09b3\u01c7\3\2\2\2\u09b4\u09b5") - buf.write("\7\u00b5\2\2\u09b5\u09b6\7}\2\2\u09b6\u09b7\5\u01ca\u00e6") - buf.write("\2\u09b7\u09b8\7|\2\2\u09b8\u09b9\7\u0081\2\2\u09b9\u09ba") - buf.write("\7\u0084\2\2\u09ba\u09bb\5\u0196\u00cc\2\u09bb\u09bc\7") - buf.write("\u0082\2\2\u09bc\u09c3\3\2\2\2\u09bd\u09be\7\u00b5\2\2") - buf.write("\u09be\u09bf\7}\2\2\u09bf\u09c0\5\u01ca\u00e6\2\u09c0") - buf.write("\u09c1\7\u0082\2\2\u09c1\u09c3\3\2\2\2\u09c2\u09b4\3\2") - buf.write("\2\2\u09c2\u09bd\3\2\2\2\u09c3\u01c9\3\2\2\2\u09c4\u09c9") - buf.write("\5\u01d4\u00eb\2\u09c5\u09c6\7|\2\2\u09c6\u09c8\5\u01d4") - buf.write("\u00eb\2\u09c7\u09c5\3\2\2\2\u09c8\u09cb\3\2\2\2\u09c9") - buf.write("\u09c7\3\2\2\2\u09c9\u09ca\3\2\2\2\u09ca\u01cb\3\2\2\2") - buf.write("\u09cb\u09c9\3\2\2\2\u09cc\u09ce\7\u00b7\2\2\u09cd\u09cf") - buf.write("\5\u017a\u00be\2\u09ce\u09cd\3\2\2\2\u09ce\u09cf\3\2\2") - buf.write("\2\u09cf\u01cd\3\2\2\2\u09d0\u09d1\7\u0080\2\2\u09d1\u09d2") - buf.write("\7}\2\2\u09d2\u09d3\5\u01d0\u00e9\2\u09d3\u09d4\7|\2\2") - buf.write("\u09d4\u09d5\7\u0081\2\2\u09d5\u09d6\7\u0084\2\2\u09d6") - buf.write("\u09d7\5\u0196\u00cc\2\u09d7\u09d8\7\u0082\2\2\u09d8\u09df") - buf.write("\3\2\2\2\u09d9\u09da\7\u0080\2\2\u09da\u09db\7}\2\2\u09db") - buf.write("\u09dc\5\u01d0\u00e9\2\u09dc\u09dd\7\u0082\2\2\u09dd\u09df") - buf.write("\3\2\2\2\u09de\u09d0\3\2\2\2\u09de\u09d9\3\2\2\2\u09df") - buf.write("\u01cf\3\2\2\2\u09e0\u09e5\5\u01d2\u00ea\2\u09e1\u09e2") - buf.write("\7|\2\2\u09e2\u09e4\5\u01d2\u00ea\2\u09e3\u09e1\3\2\2") - buf.write("\2\u09e4\u09e7\3\2\2\2\u09e5\u09e3\3\2\2\2\u09e5\u09e6") - buf.write("\3\2\2\2\u09e6\u01d1\3\2\2\2\u09e7\u09e5\3\2\2\2\u09e8") - buf.write("\u09ed\5\u01d4\u00eb\2\u09e9\u09ea\5\u01d4\u00eb\2\u09ea") - buf.write("\u09eb\5\u01d6\u00ec\2\u09eb\u09ed\3\2\2\2\u09ec\u09e8") - buf.write("\3\2\2\2\u09ec\u09e9\3\2\2\2\u09ed\u01d3\3\2\2\2\u09ee") - buf.write("\u09ef\b\u00eb\1\2\u09ef\u09f0\5\u01b2\u00da\2\u09f0\u09f5") - buf.write("\3\2\2\2\u09f1\u09f2\f\3\2\2\u09f2\u09f4\5\u01a8\u00d5") - buf.write("\2\u09f3\u09f1\3\2\2\2\u09f4\u09f7\3\2\2\2\u09f5\u09f3") - buf.write("\3\2\2\2\u09f5\u09f6\3\2\2\2\u09f6\u01d5\3\2\2\2\u09f7") - buf.write("\u09f5\3\2\2\2\u09f8\u09f9\7}\2\2\u09f9\u09fa\5\u02a6") - buf.write("\u0154\2\u09fa\u09fb\7\u0082\2\2\u09fb\u01d7\3\2\2\2\u09fc") - buf.write("\u09fe\7F\2\2\u09fd\u09ff\t\b\2\2\u09fe\u09fd\3\2\2\2") - buf.write("\u09fe\u09ff\3\2\2\2\u09ff\u01d9\3\2\2\2\u0a00\u0a01\7") - buf.write("J\2\2\u0a01\u0a02\7}\2\2\u0a02\u0a03\5\u01dc\u00ef\2\u0a03") - buf.write("\u0a05\7\u0082\2\2\u0a04\u0a06\5\u0202\u0102\2\u0a05\u0a04") - buf.write("\3\2\2\2\u0a05\u0a06\3\2\2\2\u0a06\u01db\3\2\2\2\u0a07") - buf.write("\u0a08\b\u00ef\1\2\u0a08\u0a09\5\u024e\u0128\2\u0a09\u0a0a") - buf.write("\7{\2\2\u0a0a\u0a0b\7|\2\2\u0a0b\u0a16\3\2\2\2\u0a0c\u0a0d") - buf.write("\5\u024e\u0128\2\u0a0d\u0a0e\7|\2\2\u0a0e\u0a0f\5\u0208") - buf.write("\u0105\2\u0a0f\u0a16\3\2\2\2\u0a10\u0a11\5\u024e\u0128") - buf.write("\2\u0a11\u0a12\7|\2\2\u0a12\u0a13\5\u01fe\u0100\2\u0a13") - buf.write("\u0a16\3\2\2\2\u0a14\u0a16\5\u01fe\u0100\2\u0a15\u0a07") - buf.write("\3\2\2\2\u0a15\u0a0c\3\2\2\2\u0a15\u0a10\3\2\2\2\u0a15") - buf.write("\u0a14\3\2\2\2\u0a16\u0a1c\3\2\2\2\u0a17\u0a18\f\3\2\2") - buf.write("\u0a18\u0a19\7|\2\2\u0a19\u0a1b\5\u01fe\u0100\2\u0a1a") - buf.write("\u0a17\3\2\2\2\u0a1b\u0a1e\3\2\2\2\u0a1c\u0a1a\3\2\2\2") - buf.write("\u0a1c\u0a1d\3\2\2\2\u0a1d\u01dd\3\2\2\2\u0a1e\u0a1c\3") - buf.write("\2\2\2\u0a1f\u0a20\7\u00be\2\2\u0a20\u0a21\5\u01e0\u00f1") - buf.write("\2\u0a21\u01df\3\2\2\2\u0a22\u0a24\7}\2\2\u0a23\u0a25") - buf.write("\5\u01e2\u00f2\2\u0a24\u0a23\3\2\2\2\u0a24\u0a25\3\2\2") - buf.write("\2\u0a25\u0a26\3\2\2\2\u0a26\u0a27\7\u0082\2\2\u0a27\u0a28") - buf.write("\7\u0084\2\2\u0a28\u0a29\5\u0272\u013a\2\u0a29\u01e1\3") - buf.write("\2\2\2\u0a2a\u0a2f\5\u01e4\u00f3\2\u0a2b\u0a2c\7|\2\2") - buf.write("\u0a2c\u0a2e\5\u01e4\u00f3\2\u0a2d\u0a2b\3\2\2\2\u0a2e") - buf.write("\u0a31\3\2\2\2\u0a2f\u0a2d\3\2\2\2\u0a2f\u0a30\3\2\2\2") - buf.write("\u0a30\u01e3\3\2\2\2\u0a31\u0a2f\3\2\2\2\u0a32\u0a33\7") - buf.write("\u00be\2\2\u0a33\u01e5\3\2\2\2\u0a34\u0a36\7]\2\2\u0a35") - buf.write("\u0a37\5\u0272\u013a\2\u0a36\u0a35\3\2\2\2\u0a36\u0a37") - buf.write("\3\2\2\2\u0a37\u01e7\3\2\2\2\u0a38\u0a39\7t\2\2\u0a39") - buf.write("\u0a40\5\u024e\u0128\2\u0a3a\u0a3b\7t\2\2\u0a3b\u0a3c") - buf.write("\7}\2\2\u0a3c\u0a3d\5\u0250\u0129\2\u0a3d\u0a3e\7\u0082") - buf.write("\2\2\u0a3e\u0a40\3\2\2\2\u0a3f\u0a38\3\2\2\2\u0a3f\u0a3a") - buf.write("\3\2\2\2\u0a40\u01e9\3\2\2\2\u0a41\u0a42\7K\2\2\u0a42") - buf.write("\u0a44\5\u01f8\u00fd\2\u0a43\u0a45\5\u01f2\u00fa\2\u0a44") - buf.write("\u0a43\3\2\2\2\u0a44\u0a45\3\2\2\2\u0a45\u0a4c\3\2\2\2") - buf.write("\u0a46\u0a47\7K\2\2\u0a47\u0a49\5\u01ee\u00f8\2\u0a48") - buf.write("\u0a4a\5\u01ec\u00f7\2\u0a49\u0a48\3\2\2\2\u0a49\u0a4a") - buf.write("\3\2\2\2\u0a4a\u0a4c\3\2\2\2\u0a4b\u0a41\3\2\2\2\u0a4b") - buf.write("\u0a46\3\2\2\2\u0a4c\u01eb\3\2\2\2\u0a4d\u0a4e\7|\2\2") - buf.write("\u0a4e\u0a4f\5\u01f2\u00fa\2\u0a4f\u01ed\3\2\2\2\u0a50") - buf.write("\u0a62\5\u023e\u0120\2\u0a51\u0a62\7\u00c2\2\2\u0a52\u0a62") - buf.write("\5\u0230\u0119\2\u0a53\u0a54\5\u0230\u0119\2\u0a54\u0a55") - buf.write("\7\u0087\2\2\u0a55\u0a56\7\u00ba\2\2\u0a56\u0a57\7\u0087") - buf.write("\2\2\u0a57\u0a58\7\u00bb\2\2\u0a58\u0a59\5\u022e\u0118") - buf.write("\2\u0a59\u0a62\3\2\2\2\u0a5a\u0a5b\5\u01f0\u00f9\2\u0a5b") - buf.write("\u0a5c\7\u0087\2\2\u0a5c\u0a5d\7\u00ba\2\2\u0a5d\u0a5e") - buf.write("\7\u0087\2\2\u0a5e\u0a5f\7\u00bb\2\2\u0a5f\u0a60\5\u022e") - buf.write("\u0118\2\u0a60\u0a62\3\2\2\2\u0a61\u0a50\3\2\2\2\u0a61") - buf.write("\u0a51\3\2\2\2\u0a61\u0a52\3\2\2\2\u0a61\u0a53\3\2\2\2") - buf.write("\u0a61\u0a5a\3\2\2\2\u0a62\u01ef\3\2\2\2\u0a63\u0a64\7") - buf.write("}\2\2\u0a64\u0a65\5\u0258\u012d\2\u0a65\u0a66\7\u0082") - buf.write("\2\2\u0a66\u01f1\3\2\2\2\u0a67\u0a6c\5\u01f4\u00fb\2\u0a68") - buf.write("\u0a69\7|\2\2\u0a69\u0a6b\5\u01f4\u00fb\2\u0a6a\u0a68") - buf.write("\3\2\2\2\u0a6b\u0a6e\3\2\2\2\u0a6c\u0a6a\3\2\2\2\u0a6c") - buf.write("\u0a6d\3\2\2\2\u0a6d\u01f3\3\2\2\2\u0a6e\u0a6c\3\2\2\2") - buf.write("\u0a6f\u0a72\5\u02a0\u0151\2\u0a70\u0a72\5\u01f6\u00fc") - buf.write("\2\u0a71\u0a6f\3\2\2\2\u0a71\u0a70\3\2\2\2\u0a72\u01f5") - buf.write("\3\2\2\2\u0a73\u0a74\7}\2\2\u0a74\u0a75\5\u01f2\u00fa") - buf.write("\2\u0a75\u0a76\7|\2\2\u0a76\u0a77\5\u01ac\u00d7\2\u0a77") - buf.write("\u0a78\7\u0084\2\2\u0a78\u0a79\5\u0272\u013a\2\u0a79\u0a7a") - buf.write("\7|\2\2\u0a7a\u0a7c\5\u0272\u013a\2\u0a7b\u0a7d\5\u01b4") - buf.write("\u00db\2\u0a7c\u0a7b\3\2\2\2\u0a7c\u0a7d\3\2\2\2\u0a7d") - buf.write("\u0a7e\3\2\2\2\u0a7e\u0a7f\7\u0082\2\2\u0a7f\u01f7\3\2") - buf.write("\2\2\u0a80\u0a86\5\u01fa\u00fe\2\u0a81\u0a82\7}\2\2\u0a82") - buf.write("\u0a83\5\u01fc\u00ff\2\u0a83\u0a84\7\u0082\2\2\u0a84\u0a86") - buf.write("\3\2\2\2\u0a85\u0a80\3\2\2\2\u0a85\u0a81\3\2\2\2\u0a86") - buf.write("\u01f9\3\2\2\2\u0a87\u0a88\7}\2\2\u0a88\u0a89\5\u0258") - buf.write("\u012d\2\u0a89\u0a8a\7\u0082\2\2\u0a8a\u0a8f\3\2\2\2\u0a8b") - buf.write("\u0a8c\7}\2\2\u0a8c\u0a8d\7\u00c2\2\2\u0a8d\u0a8f\7\u0082") - buf.write("\2\2\u0a8e\u0a87\3\2\2\2\u0a8e\u0a8b\3\2\2\2\u0a8f\u01fb") - buf.write("\3\2\2\2\u0a90\u0a91\b\u00ff\1\2\u0a91\u0a92\5\u024e\u0128") - buf.write("\2\u0a92\u0a93\7|\2\2\u0a93\u0a94\5\u01fe\u0100\2\u0a94") - buf.write("\u0a9b\3\2\2\2\u0a95\u0a96\5\u024e\u0128\2\u0a96\u0a97") - buf.write("\7|\2\2\u0a97\u0a98\5\u0208\u0105\2\u0a98\u0a9b\3\2\2") - buf.write("\2\u0a99\u0a9b\5\u01fe\u0100\2\u0a9a\u0a90\3\2\2\2\u0a9a") - buf.write("\u0a95\3\2\2\2\u0a9a\u0a99\3\2\2\2\u0a9b\u0aa1\3\2\2\2") - buf.write("\u0a9c\u0a9d\f\3\2\2\u0a9d\u0a9e\7|\2\2\u0a9e\u0aa0\5") - buf.write("\u01fe\u0100\2\u0a9f\u0a9c\3\2\2\2\u0aa0\u0aa3\3\2\2\2") - buf.write("\u0aa1\u0a9f\3\2\2\2\u0aa1\u0aa2\3\2\2\2\u0aa2\u01fd\3") - buf.write("\2\2\2\u0aa3\u0aa1\3\2\2\2\u0aa4\u0aa5\7N\2\2\u0aa5\u0aa6") - buf.write("\7\u0084\2\2\u0aa6\u0ac3\5\u0208\u0105\2\u0aa7\u0aa8\7") - buf.write("O\2\2\u0aa8\u0aa9\7\u0084\2\2\u0aa9\u0ac3\5\u024e\u0128") - buf.write("\2\u0aaa\u0aab\7G\2\2\u0aab\u0aac\7\u0084\2\2\u0aac\u0ac3") - buf.write("\5\u0272\u013a\2\u0aad\u0aae\7\16\2\2\u0aae\u0aaf\7\u0084") - buf.write("\2\2\u0aaf\u0ac3\5\u023e\u0120\2\u0ab0\u0ab1\7U\2\2\u0ab1") - buf.write("\u0ab2\7\u0084\2\2\u0ab2\u0ac3\5\u023e\u0120\2\u0ab3\u0ab4") - buf.write("\7Y\2\2\u0ab4\u0ab5\7\u0084\2\2\u0ab5\u0ac3\5\u0256\u012c") - buf.write("\2\u0ab6\u0ab7\7X\2\2\u0ab7\u0ab8\7\u0084\2\2\u0ab8\u0ac3") - buf.write("\5b\62\2\u0ab9\u0aba\7W\2\2\u0aba\u0abb\7\u0084\2\2\u0abb") - buf.write("\u0ac3\5\u022c\u0117\2\u0abc\u0abd\7V\2\2\u0abd\u0abe") - buf.write("\7\u0084\2\2\u0abe\u0ac3\5\u0196\u00cc\2\u0abf\u0ac0\7") - buf.write("\u0090\2\2\u0ac0\u0ac1\7\u0084\2\2\u0ac1\u0ac3\5\u023e") - buf.write("\u0120\2\u0ac2\u0aa4\3\2\2\2\u0ac2\u0aa7\3\2\2\2\u0ac2") - buf.write("\u0aaa\3\2\2\2\u0ac2\u0aad\3\2\2\2\u0ac2\u0ab0\3\2\2\2") - buf.write("\u0ac2\u0ab3\3\2\2\2\u0ac2\u0ab6\3\2\2\2\u0ac2\u0ab9\3") - buf.write("\2\2\2\u0ac2\u0abc\3\2\2\2\u0ac2\u0abf\3\2\2\2\u0ac3\u01ff") - buf.write("\3\2\2\2\u0ac4\u0ac5\7L\2\2\u0ac5\u0ac6\5\u0208\u0105") - buf.write("\2\u0ac6\u0ac7\7|\2\2\u0ac7\u0ac8\5\u0202\u0102\2\u0ac8") - buf.write("\u0acc\3\2\2\2\u0ac9\u0aca\7L\2\2\u0aca\u0acc\5\u0208") - buf.write("\u0105\2\u0acb\u0ac4\3\2\2\2\u0acb\u0ac9\3\2\2\2\u0acc") - buf.write("\u0201\3\2\2\2\u0acd\u0ad0\5\u0272\u013a\2\u0ace\u0ad0") - buf.write("\5\u0204\u0103\2\u0acf\u0acd\3\2\2\2\u0acf\u0ace\3\2\2") - buf.write("\2\u0ad0\u0203\3\2\2\2\u0ad1\u0ad2\b\u0103\1\2\u0ad2\u0ad3") - buf.write("\5\u0272\u013a\2\u0ad3\u0ad4\7|\2\2\u0ad4\u0ad5\5\u0272") - buf.write("\u013a\2\u0ad5\u0adc\3\2\2\2\u0ad6\u0ad7\5\u0272\u013a") - buf.write("\2\u0ad7\u0ad8\7|\2\2\u0ad8\u0ad9\5\u0206\u0104\2\u0ad9") - buf.write("\u0adc\3\2\2\2\u0ada\u0adc\5\u0206\u0104\2\u0adb\u0ad1") - buf.write("\3\2\2\2\u0adb\u0ad6\3\2\2\2\u0adb\u0ada\3\2\2\2\u0adc") - buf.write("\u0ae5\3\2\2\2\u0add\u0ade\f\4\2\2\u0ade\u0adf\7|\2\2") - buf.write("\u0adf\u0ae4\5\u0272\u013a\2\u0ae0\u0ae1\f\3\2\2\u0ae1") - buf.write("\u0ae2\7|\2\2\u0ae2\u0ae4\5\u0206\u0104\2\u0ae3\u0add") - buf.write("\3\2\2\2\u0ae3\u0ae0\3\2\2\2\u0ae4\u0ae7\3\2\2\2\u0ae5") - buf.write("\u0ae3\3\2\2\2\u0ae5\u0ae6\3\2\2\2\u0ae6\u0205\3\2\2\2") - buf.write("\u0ae7\u0ae5\3\2\2\2\u0ae8\u0ae9\7}\2\2\u0ae9\u0aea\5") - buf.write("\u0272\u013a\2\u0aea\u0aeb\7|\2\2\u0aeb\u0aec\5\u01ac") - buf.write("\u00d7\2\u0aec\u0aed\7\u0084\2\2\u0aed\u0aee\5\u0272\u013a") - buf.write("\2\u0aee\u0aef\7|\2\2\u0aef\u0af1\5\u0272\u013a\2\u0af0") - buf.write("\u0af2\5\u01b4\u00db\2\u0af1\u0af0\3\2\2\2\u0af1\u0af2") - buf.write("\3\2\2\2\u0af2\u0af3\3\2\2\2\u0af3\u0af4\7\u0082\2\2\u0af4") - buf.write("\u0b03\3\2\2\2\u0af5\u0af6\7}\2\2\u0af6\u0af7\5\u0204") - buf.write("\u0103\2\u0af7\u0af8\7|\2\2\u0af8\u0af9\5\u01ac\u00d7") - buf.write("\2\u0af9\u0afa\7\u0084\2\2\u0afa\u0afb\5\u0272\u013a\2") - buf.write("\u0afb\u0afc\7|\2\2\u0afc\u0afe\5\u0272\u013a\2\u0afd") - buf.write("\u0aff\5\u01b4\u00db\2\u0afe\u0afd\3\2\2\2\u0afe\u0aff") - buf.write("\3\2\2\2\u0aff\u0b00\3\2\2\2\u0b00\u0b01\7\u0082\2\2\u0b01") - buf.write("\u0b03\3\2\2\2\u0b02\u0ae8\3\2\2\2\u0b02\u0af5\3\2\2\2") - buf.write("\u0b03\u0207\3\2\2\2\u0b04\u0b08\5\u023e\u0120\2\u0b05") - buf.write("\u0b08\5\u022c\u0117\2\u0b06\u0b08\7\u00c2\2\2\u0b07\u0b04") - buf.write("\3\2\2\2\u0b07\u0b05\3\2\2\2\u0b07\u0b06\3\2\2\2\u0b08") - buf.write("\u0209\3\2\2\2\u0b09\u0b0b\7I\2\2\u0b0a\u0b0c\t\b\2\2") - buf.write("\u0b0b\u0b0a\3\2\2\2\u0b0b\u0b0c\3\2\2\2\u0b0c\u020b\3") - buf.write("\2\2\2\u0b0d\u0b0e\7M\2\2\u0b0e\u0b0f\7}\2\2\u0b0f\u0b10") - buf.write("\5\u020e\u0108\2\u0b10\u0b11\7\u0082\2\2\u0b11\u020d\3") - buf.write("\2\2\2\u0b12\u0b14\5\u0252\u012a\2\u0b13\u0b12\3\2\2\2") - buf.write("\u0b13\u0b14\3\2\2\2\u0b14\u0b16\3\2\2\2\u0b15\u0b17\5") - buf.write("\u0210\u0109\2\u0b16\u0b15\3\2\2\2\u0b16\u0b17\3\2\2\2") - buf.write("\u0b17\u0b1c\3\2\2\2\u0b18\u0b19\7|\2\2\u0b19\u0b1b\5") - buf.write("\u0210\u0109\2\u0b1a\u0b18\3\2\2\2\u0b1b\u0b1e\3\2\2\2") - buf.write("\u0b1c\u0b1a\3\2\2\2\u0b1c\u0b1d\3\2\2\2\u0b1d\u020f\3") - buf.write("\2\2\2\u0b1e\u0b1c\3\2\2\2\u0b1f\u0b20\7O\2\2\u0b20\u0b21") - buf.write("\7\u0084\2\2\u0b21\u0b47\5\u024e\u0128\2\u0b22\u0b23\7") - buf.write("U\2\2\u0b23\u0b24\7\u0084\2\2\u0b24\u0b47\5\u023e\u0120") - buf.write("\2\u0b25\u0b26\7c\2\2\u0b26\u0b27\7\u0084\2\2\u0b27\u0b47") - buf.write("\5\u022c\u0117\2\u0b28\u0b29\7d\2\2\u0b29\u0b2a\7\u0084") - buf.write("\2\2\u0b2a\u0b47\5\u022c\u0117\2\u0b2b\u0b2c\7e\2\2\u0b2c") - buf.write("\u0b2d\7\u0084\2\2\u0b2d\u0b47\5\u022c\u0117\2\u0b2e\u0b2f") - buf.write("\7g\2\2\u0b2f\u0b30\7\u0084\2\2\u0b30\u0b47\5\u022c\u0117") - buf.write("\2\u0b31\u0b32\7h\2\2\u0b32\u0b33\7\u0084\2\2\u0b33\u0b47") - buf.write("\5\u0272\u013a\2\u0b34\u0b35\7\u00c0\2\2\u0b35\u0b36\7") - buf.write("\u0084\2\2\u0b36\u0b47\5\u022c\u0117\2\u0b37\u0b38\7Y") - buf.write("\2\2\u0b38\u0b39\7\u0084\2\2\u0b39\u0b47\5\u0256\u012c") - buf.write("\2\u0b3a\u0b3b\7f\2\2\u0b3b\u0b3c\7\u0084\2\2\u0b3c\u0b47") - buf.write("\5\u022c\u0117\2\u0b3d\u0b3e\7Q\2\2\u0b3e\u0b3f\7\u0084") - buf.write("\2\2\u0b3f\u0b47\5\u022c\u0117\2\u0b40\u0b41\7R\2\2\u0b41") - buf.write("\u0b42\7\u0084\2\2\u0b42\u0b47\5\u022c\u0117\2\u0b43\u0b44") - buf.write("\7P\2\2\u0b44\u0b45\7\u0084\2\2\u0b45\u0b47\5\u022c\u0117") - buf.write("\2\u0b46\u0b1f\3\2\2\2\u0b46\u0b22\3\2\2\2\u0b46\u0b25") - buf.write("\3\2\2\2\u0b46\u0b28\3\2\2\2\u0b46\u0b2b\3\2\2\2\u0b46") - buf.write("\u0b2e\3\2\2\2\u0b46\u0b31\3\2\2\2\u0b46\u0b34\3\2\2\2") - buf.write("\u0b46\u0b37\3\2\2\2\u0b46\u0b3a\3\2\2\2\u0b46\u0b3d\3") - buf.write("\2\2\2\u0b46\u0b40\3\2\2\2\u0b46\u0b43\3\2\2\2\u0b47\u0211") - buf.write("\3\2\2\2\u0b48\u0b49\7q\2\2\u0b49\u0b4a\7}\2\2\u0b4a\u0b4b") - buf.write("\5\u0214\u010b\2\u0b4b\u0b4c\7\u0082\2\2\u0b4c\u0b56\3") - buf.write("\2\2\2\u0b4d\u0b4e\7q\2\2\u0b4e\u0b4f\7}\2\2\u0b4f\u0b50") - buf.write("\7S\2\2\u0b50\u0b51\7\u0084\2\2\u0b51\u0b52\5\u0256\u012c") - buf.write("\2\u0b52\u0b53\7\u0082\2\2\u0b53\u0b54\5\u0202\u0102\2") - buf.write("\u0b54\u0b56\3\2\2\2\u0b55\u0b48\3\2\2\2\u0b55\u0b4d\3") - buf.write("\2\2\2\u0b56\u0213\3\2\2\2\u0b57\u0b59\5\u024e\u0128\2") - buf.write("\u0b58\u0b57\3\2\2\2\u0b58\u0b59\3\2\2\2\u0b59\u0b5b\3") - buf.write("\2\2\2\u0b5a\u0b5c\5\u0216\u010c\2\u0b5b\u0b5a\3\2\2\2") - buf.write("\u0b5b\u0b5c\3\2\2\2\u0b5c\u0b61\3\2\2\2\u0b5d\u0b5e\7") - buf.write("|\2\2\u0b5e\u0b60\5\u0216\u010c\2\u0b5f\u0b5d\3\2\2\2") - buf.write("\u0b60\u0b63\3\2\2\2\u0b61\u0b5f\3\2\2\2\u0b61\u0b62\3") - buf.write("\2\2\2\u0b62\u0215\3\2\2\2\u0b63\u0b61\3\2\2\2\u0b64\u0b65") - buf.write("\7O\2\2\u0b65\u0b66\7\u0084\2\2\u0b66\u0bb0\5\u024e\u0128") - buf.write("\2\u0b67\u0b68\7c\2\2\u0b68\u0b69\7\u0084\2\2\u0b69\u0bb0") - buf.write("\5\u022c\u0117\2\u0b6a\u0b6b\7U\2\2\u0b6b\u0b6c\7\u0084") - buf.write("\2\2\u0b6c\u0bb0\5\u023e\u0120\2\u0b6d\u0b6e\7Y\2\2\u0b6e") - buf.write("\u0b6f\7\u0084\2\2\u0b6f\u0bb0\5\u0256\u012c\2\u0b70\u0b71") - buf.write("\7i\2\2\u0b71\u0b72\7\u0084\2\2\u0b72\u0bb0\5\u0256\u012c") - buf.write("\2\u0b73\u0b74\7j\2\2\u0b74\u0b75\7\u0084\2\2\u0b75\u0bb0") - buf.write("\5\u0256\u012c\2\u0b76\u0b77\7k\2\2\u0b77\u0b78\7\u0084") - buf.write("\2\2\u0b78\u0bb0\5\u0256\u012c\2\u0b79\u0b7a\7l\2\2\u0b7a") - buf.write("\u0b7b\7\u0084\2\2\u0b7b\u0bb0\5\u0256\u012c\2\u0b7c\u0b7d") - buf.write("\7\u00be\2\2\u0b7d\u0b7e\7\u0084\2\2\u0b7e\u0bb0\5\u0256") - buf.write("\u012c\2\u0b7f\u0b80\7e\2\2\u0b80\u0b81\7\u0084\2\2\u0b81") - buf.write("\u0bb0\5\u0256\u012c\2\u0b82\u0b83\7a\2\2\u0b83\u0b84") - buf.write("\7\u0084\2\2\u0b84\u0bb0\5\u0256\u012c\2\u0b85\u0b86\7") - buf.write("E\2\2\u0b86\u0b87\7\u0084\2\2\u0b87\u0bb0\5\u0256\u012c") - buf.write("\2\u0b88\u0b89\7g\2\2\u0b89\u0b8a\7\u0084\2\2\u0b8a\u0bb0") - buf.write("\5\u0256\u012c\2\u0b8b\u0b8c\7n\2\2\u0b8c\u0b8d\7\u0084") - buf.write("\2\2\u0b8d\u0bb0\5\u0256\u012c\2\u0b8e\u0b8f\7o\2\2\u0b8f") - buf.write("\u0b90\7\u0084\2\2\u0b90\u0bb0\5\u0256\u012c\2\u0b91\u0b92") - buf.write("\7h\2\2\u0b92\u0b93\7\u0084\2\2\u0b93\u0bb0\5\u0272\u013a") - buf.write("\2\u0b94\u0b95\7p\2\2\u0b95\u0b96\7\u0084\2\2\u0b96\u0bb0") - buf.write("\5\u0256\u012c\2\u0b97\u0b98\7\u00c0\2\2\u0b98\u0b99\7") - buf.write("\u0084\2\2\u0b99\u0bb0\5\u0256\u012c\2\u0b9a\u0b9b\7f") - buf.write("\2\2\u0b9b\u0b9c\7\u0084\2\2\u0b9c\u0bb0\5\u0256\u012c") - buf.write("\2\u0b9d\u0b9e\7Q\2\2\u0b9e\u0b9f\7\u0084\2\2\u0b9f\u0bb0") - buf.write("\5\u0256\u012c\2\u0ba0\u0ba1\7K\2\2\u0ba1\u0ba2\7\u0084") - buf.write("\2\2\u0ba2\u0bb0\5\u0256\u012c\2\u0ba3\u0ba4\7J\2\2\u0ba4") - buf.write("\u0ba5\7\u0084\2\2\u0ba5\u0bb0\5\u0256\u012c\2\u0ba6\u0ba7") - buf.write("\7T\2\2\u0ba7\u0ba8\7\u0084\2\2\u0ba8\u0bb0\5\u0256\u012c") - buf.write("\2\u0ba9\u0baa\7R\2\2\u0baa\u0bab\7\u0084\2\2\u0bab\u0bb0") - buf.write("\5\u0256\u012c\2\u0bac\u0bad\7P\2\2\u0bad\u0bae\7\u0084") - buf.write("\2\2\u0bae\u0bb0\5\u0256\u012c\2\u0baf\u0b64\3\2\2\2\u0baf") - buf.write("\u0b67\3\2\2\2\u0baf\u0b6a\3\2\2\2\u0baf\u0b6d\3\2\2\2") - buf.write("\u0baf\u0b70\3\2\2\2\u0baf\u0b73\3\2\2\2\u0baf\u0b76\3") - buf.write("\2\2\2\u0baf\u0b79\3\2\2\2\u0baf\u0b7c\3\2\2\2\u0baf\u0b7f") - buf.write("\3\2\2\2\u0baf\u0b82\3\2\2\2\u0baf\u0b85\3\2\2\2\u0baf") - buf.write("\u0b88\3\2\2\2\u0baf\u0b8b\3\2\2\2\u0baf\u0b8e\3\2\2\2") - buf.write("\u0baf\u0b91\3\2\2\2\u0baf\u0b94\3\2\2\2\u0baf\u0b97\3") - buf.write("\2\2\2\u0baf\u0b9a\3\2\2\2\u0baf\u0b9d\3\2\2\2\u0baf\u0ba0") - buf.write("\3\2\2\2\u0baf\u0ba3\3\2\2\2\u0baf\u0ba6\3\2\2\2\u0baf") - buf.write("\u0ba9\3\2\2\2\u0baf\u0bac\3\2\2\2\u0bb0\u0217\3\2\2\2") - buf.write("\u0bb1\u0bb5\7\64\2\2\u0bb2\u0bb3\7\63\2\2\u0bb3\u0bb5") - buf.write("\7\u00a1\2\2\u0bb4\u0bb1\3\2\2\2\u0bb4\u0bb2\3\2\2\2\u0bb5") - buf.write("\u0bb6\3\2\2\2\u0bb6\u0bcc\5\u01b2\u00da\2\u0bb7\u0bbb") - buf.write("\7\64\2\2\u0bb8\u0bb9\7\63\2\2\u0bb9\u0bbb\7\u00a1\2\2") - buf.write("\u0bba\u0bb7\3\2\2\2\u0bba\u0bb8\3\2\2\2\u0bbb\u0bbc\3") - buf.write("\2\2\2\u0bbc\u0bbd\5\u01b2\u00da\2\u0bbd\u0bbe\7}\2\2") - buf.write("\u0bbe\u0bbf\5\u0220\u0111\2\u0bbf\u0bc0\7\u0082\2\2\u0bc0") - buf.write("\u0bcc\3\2\2\2\u0bc1\u0bc5\7\64\2\2\u0bc2\u0bc3\7\63\2") - buf.write("\2\u0bc3\u0bc5\7\u00a1\2\2\u0bc4\u0bc1\3\2\2\2\u0bc4\u0bc2") - buf.write("\3\2\2\2\u0bc5\u0bc6\3\2\2\2\u0bc6\u0bc7\5\u021a\u010e") - buf.write("\2\u0bc7\u0bc8\7}\2\2\u0bc8\u0bc9\5\u0220\u0111\2\u0bc9") - buf.write("\u0bca\7\u0082\2\2\u0bca\u0bcc\3\2\2\2\u0bcb\u0bb4\3\2") - buf.write("\2\2\u0bcb\u0bba\3\2\2\2\u0bcb\u0bc4\3\2\2\2\u0bcc\u0219") - buf.write("\3\2\2\2\u0bcd\u0bce\5\u01b2\u00da\2\u0bce\u0bcf\7|\2") - buf.write("\2\u0bcf\u021b\3\2\2\2\u0bd0\u0bd4\7\64\2\2\u0bd1\u0bd2") - buf.write("\7\63\2\2\u0bd2\u0bd4\7\u00a1\2\2\u0bd3\u0bd0\3\2\2\2") - buf.write("\u0bd3\u0bd1\3\2\2\2\u0bd4\u0bd5\3\2\2\2\u0bd5\u0bd6\5") - buf.write("\u023e\u0120\2\u0bd6\u021d\3\2\2\2\u0bd7\u0bd8\7\64\2") - buf.write("\2\u0bd8\u0bd9\7}\2\2\u0bd9\u0bda\5\u0220\u0111\2\u0bda") - buf.write("\u0bdc\7\u0082\2\2\u0bdb\u0bdd\7|\2\2\u0bdc\u0bdb\3\2") - buf.write("\2\2\u0bdc\u0bdd\3\2\2\2\u0bdd\u0bde\3\2\2\2\u0bde\u0bdf") - buf.write("\5\u0272\u013a\2\u0bdf\u021f\3\2\2\2\u0be0\u0be5\5\u023e") - buf.write("\u0120\2\u0be1\u0be2\7|\2\2\u0be2\u0be4\5\u023e\u0120") - buf.write("\2\u0be3\u0be1\3\2\2\2\u0be4\u0be7\3\2\2\2\u0be5\u0be3") - buf.write("\3\2\2\2\u0be5\u0be6\3\2\2\2\u0be6\u0221\3\2\2\2\u0be7") - buf.write("\u0be5\3\2\2\2\u0be8\u0bec\7s\2\2\u0be9\u0bea\7\16\2\2") - buf.write("\u0bea\u0bec\7c\2\2\u0beb\u0be8\3\2\2\2\u0beb\u0be9\3") - buf.write("\2\2\2\u0bec\u0bed\3\2\2\2\u0bed\u0bf8\5\u024e\u0128\2") - buf.write("\u0bee\u0bf2\7s\2\2\u0bef\u0bf0\7\16\2\2\u0bf0\u0bf2\7") - buf.write("c\2\2\u0bf1\u0bee\3\2\2\2\u0bf1\u0bef\3\2\2\2\u0bf2\u0bf3") - buf.write("\3\2\2\2\u0bf3\u0bf4\7}\2\2\u0bf4\u0bf5\5\u0250\u0129") - buf.write("\2\u0bf5\u0bf6\7\u0082\2\2\u0bf6\u0bf8\3\2\2\2\u0bf7\u0beb") - buf.write("\3\2\2\2\u0bf7\u0bf1\3\2\2\2\u0bf8\u0223\3\2\2\2\u0bf9") - buf.write("\u0bfa\7=\2\2\u0bfa\u0225\3\2\2\2\u0bfb\u0bfc\7^\2\2\u0bfc") - buf.write("\u0bfd\7}\2\2\u0bfd\u0bfe\5\u0228\u0115\2\u0bfe\u0bff") - buf.write("\7\u0082\2\2\u0bff\u0227\3\2\2\2\u0c00\u0c02\5\u0252\u012a") - buf.write("\2\u0c01\u0c00\3\2\2\2\u0c01\u0c02\3\2\2\2\u0c02\u0c04") - buf.write("\3\2\2\2\u0c03\u0c05\5\u022a\u0116\2\u0c04\u0c03\3\2\2") - buf.write("\2\u0c04\u0c05\3\2\2\2\u0c05\u0c0a\3\2\2\2\u0c06\u0c07") - buf.write("\7|\2\2\u0c07\u0c09\5\u022a\u0116\2\u0c08\u0c06\3\2\2") - buf.write("\2\u0c09\u0c0c\3\2\2\2\u0c0a\u0c08\3\2\2\2\u0c0a\u0c0b") - buf.write("\3\2\2\2\u0c0b\u0229\3\2\2\2\u0c0c\u0c0a\3\2\2\2\u0c0d") - buf.write("\u0c0e\7O\2\2\u0c0e\u0c0f\7\u0084\2\2\u0c0f\u0c19\5\u024e") - buf.write("\u0128\2\u0c10\u0c11\7U\2\2\u0c11\u0c12\7\u0084\2\2\u0c12") - buf.write("\u0c19\5\u023e\u0120\2\u0c13\u0c14\7d\2\2\u0c14\u0c15") - buf.write("\7\u0084\2\2\u0c15\u0c19\5\u022c\u0117\2\u0c16\u0c17\7") - buf.write("Y\2\2\u0c17\u0c19\5\u0256\u012c\2\u0c18\u0c0d\3\2\2\2") - buf.write("\u0c18\u0c10\3\2\2\2\u0c18\u0c13\3\2\2\2\u0c18\u0c16\3") - buf.write("\2\2\2\u0c19\u022b\3\2\2\2\u0c1a\u0c1e\5\u022e\u0118\2") - buf.write("\u0c1b\u0c1d\5\u0232\u011a\2\u0c1c\u0c1b\3\2\2\2\u0c1d") - buf.write("\u0c20\3\2\2\2\u0c1e\u0c1c\3\2\2\2\u0c1e\u0c1f\3\2\2\2") - buf.write("\u0c1f\u022d\3\2\2\2\u0c20\u0c1e\3\2\2\2\u0c21\u0c27\5") - buf.write("\u0230\u0119\2\u0c22\u0c23\7}\2\2\u0c23\u0c24\5\u022c") - buf.write("\u0117\2\u0c24\u0c25\7\u0082\2\2\u0c25\u0c27\3\2\2\2\u0c26") - buf.write("\u0c21\3\2\2\2\u0c26\u0c22\3\2\2\2\u0c27\u022f\3\2\2\2") - buf.write("\u0c28\u0c2c\7\u00b3\2\2\u0c29\u0c2c\5\u02a0\u0151\2\u0c2a") - buf.write("\u0c2c\5\u029a\u014e\2\u0c2b\u0c28\3\2\2\2\u0c2b\u0c29") - buf.write("\3\2\2\2\u0c2b\u0c2a\3\2\2\2\u0c2c\u0231\3\2\2\2\u0c2d") - buf.write("\u0c2e\5\u022e\u0118\2\u0c2e\u0c2f\7\u0087\2\2\u0c2f\u0c30") - buf.write("\7\u00ba\2\2\u0c30\u0c31\7\u0087\2\2\u0c31\u0c32\7\u00bb") - buf.write("\2\2\u0c32\u0233\3\2\2\2\u0c33\u0c34\7\\\2\2\u0c34\u0c3c") - buf.write("\5\u0236\u011c\2\u0c35\u0c36\7\\\2\2\u0c36\u0c37\5\u0236") - buf.write("\u011c\2\u0c37\u0c38\7}\2\2\u0c38\u0c39\5\u0238\u011d") - buf.write("\2\u0c39\u0c3a\7\u0082\2\2\u0c3a\u0c3c\3\2\2\2\u0c3b\u0c33") - buf.write("\3\2\2\2\u0c3b\u0c35\3\2\2\2\u0c3c\u0235\3\2\2\2\u0c3d") - buf.write("\u0c3e\7\u00be\2\2\u0c3e\u0237\3\2\2\2\u0c3f\u0c41\5\u023a") - buf.write("\u011e\2\u0c40\u0c3f\3\2\2\2\u0c40\u0c41\3\2\2\2\u0c41") - buf.write("\u0c46\3\2\2\2\u0c42\u0c43\7|\2\2\u0c43\u0c45\5\u023a") - buf.write("\u011e\2\u0c44\u0c42\3\2\2\2\u0c45\u0c48\3\2\2\2\u0c46") - buf.write("\u0c44\3\2\2\2\u0c46\u0c47\3\2\2\2\u0c47\u0239\3\2\2\2") - buf.write("\u0c48\u0c46\3\2\2\2\u0c49\u0c58\5\u0272\u013a\2\u0c4a") - buf.write("\u0c58\7\u009d\2\2\u0c4b\u0c4c\7\u00c2\2\2\u0c4c\u0c58") - buf.write("\5\u023e\u0120\2\u0c4d\u0c4e\7\u00be\2\2\u0c4e\u0c4f\7") - buf.write("\u0084\2\2\u0c4f\u0c58\5\u0272\u013a\2\u0c50\u0c51\7\u00be") - buf.write("\2\2\u0c51\u0c52\7\u0084\2\2\u0c52\u0c58\7\u009d\2\2\u0c53") - buf.write("\u0c54\7\u00be\2\2\u0c54\u0c55\7\u0084\2\2\u0c55\u0c56") - buf.write("\7\u00c2\2\2\u0c56\u0c58\5\u023e\u0120\2\u0c57\u0c49\3") - buf.write("\2\2\2\u0c57\u0c4a\3\2\2\2\u0c57\u0c4b\3\2\2\2\u0c57\u0c4d") - buf.write("\3\2\2\2\u0c57\u0c50\3\2\2\2\u0c57\u0c53\3\2\2\2\u0c58") - buf.write("\u023b\3\2\2\2\u0c59\u0c5a\7\65\2\2\u0c5a\u0c5b\7}\2\2") - buf.write("\u0c5b\u0c5c\5\u0272\u013a\2\u0c5c\u0c5d\7\u0082\2\2\u0c5d") - buf.write("\u0c5e\5\u023e\u0120\2\u0c5e\u0c5f\7|\2\2\u0c5f\u0c60") - buf.write("\5\u023e\u0120\2\u0c60\u0c61\7|\2\2\u0c61\u0c62\5\u023e") - buf.write("\u0120\2\u0c62\u023d\3\2\2\2\u0c63\u0c64\5\u0240\u0121") - buf.write("\2\u0c64\u023f\3\2\2\2\u0c65\u0c66\7\u00bc\2\2\u0c66\u0241") - buf.write("\3\2\2\2\u0c67\u0c69\5\u0240\u0121\2\u0c68\u0c67\3\2\2") - buf.write("\2\u0c68\u0c69\3\2\2\2\u0c69\u0c6a\3\2\2\2\u0c6a\u0c6c") - buf.write("\7\u00be\2\2\u0c6b\u0c6d\5\u0244\u0123\2\u0c6c\u0c6b\3") - buf.write("\2\2\2\u0c6c\u0c6d\3\2\2\2\u0c6d\u0c6f\3\2\2\2\u0c6e\u0c70") - buf.write("\5\u019e\u00d0\2\u0c6f\u0c6e\3\2\2\2\u0c6f\u0c70\3\2\2") - buf.write("\2\u0c70\u0c71\3\2\2\2\u0c71\u0c72\7\u0084\2\2\u0c72\u0c86") - buf.write("\5\u0272\u013a\2\u0c73\u0c75\7\u00be\2\2\u0c74\u0c76\5") - buf.write("\u0244\u0123\2\u0c75\u0c74\3\2\2\2\u0c75\u0c76\3\2\2\2") - buf.write("\u0c76\u0c77\3\2\2\2\u0c77\u0c78\7~\2\2\u0c78\u0c79\5") - buf.write("\u02a0\u0151\2\u0c79\u0c7a\7\u0084\2\2\u0c7a\u0c7b\5\u0272") - buf.write("\u013a\2\u0c7b\u0c86\3\2\2\2\u0c7c\u0c7d\7\u00be\2\2\u0c7d") - buf.write("\u0c7e\7}\2\2\u0c7e\u0c7f\5\u01e2\u00f2\2\u0c7f\u0c80") - buf.write("\7\u0082\2\2\u0c80\u0c81\7~\2\2\u0c81\u0c82\5\u02a0\u0151") - buf.write("\2\u0c82\u0c83\7\u0084\2\2\u0c83\u0c84\5\u0272\u013a\2") - buf.write("\u0c84\u0c86\3\2\2\2\u0c85\u0c68\3\2\2\2\u0c85\u0c73\3") - buf.write("\2\2\2\u0c85\u0c7c\3\2\2\2\u0c86\u0243\3\2\2\2\u0c87\u0c88") - buf.write("\7}\2\2\u0c88\u0c8c\5\u0246\u0124\2\u0c89\u0c8b\5\u0248") - buf.write("\u0125\2\u0c8a\u0c89\3\2\2\2\u0c8b\u0c8e\3\2\2\2\u0c8c") - buf.write("\u0c8a\3\2\2\2\u0c8c\u0c8d\3\2\2\2\u0c8d\u0c8f\3\2\2\2") - buf.write("\u0c8e\u0c8c\3\2\2\2\u0c8f\u0c90\7\u0082\2\2\u0c90\u0245") - buf.write("\3\2\2\2\u0c91\u0c93\5\u0272\u013a\2\u0c92\u0c94\7\u0083") - buf.write("\2\2\u0c93\u0c92\3\2\2\2\u0c93\u0c94\3\2\2\2\u0c94\u0c96") - buf.write("\3\2\2\2\u0c95\u0c97\5\u0272\u013a\2\u0c96\u0c95\3\2\2") - buf.write("\2\u0c96\u0c97\3\2\2\2\u0c97\u0caa\3\2\2\2\u0c98\u0c9a") - buf.write("\7\u0083\2\2\u0c99\u0c9b\5\u0272\u013a\2\u0c9a\u0c99\3") - buf.write("\2\2\2\u0c9a\u0c9b\3\2\2\2\u0c9b\u0caa\3\2\2\2\u0c9c\u0c9e") - buf.write("\5\u0272\u013a\2\u0c9d\u0c9c\3\2\2\2\u0c9d\u0c9e\3\2\2") - buf.write("\2\u0c9e\u0c9f\3\2\2\2\u0c9f\u0ca0\7\u0083\2\2\u0ca0\u0ca1") - buf.write("\5\u0272\u013a\2\u0ca1\u0ca2\7\u0083\2\2\u0ca2\u0ca3\5") - buf.write("\u0272\u013a\2\u0ca3\u0caa\3\2\2\2\u0ca4\u0ca6\5\u0272") - buf.write("\u013a\2\u0ca5\u0ca4\3\2\2\2\u0ca5\u0ca6\3\2\2\2\u0ca6") - buf.write("\u0ca7\3\2\2\2\u0ca7\u0ca8\7 \2\2\u0ca8\u0caa\5\u0272") - buf.write("\u013a\2\u0ca9\u0c91\3\2\2\2\u0ca9\u0c98\3\2\2\2\u0ca9") - buf.write("\u0c9d\3\2\2\2\u0ca9\u0ca5\3\2\2\2\u0caa\u0247\3\2\2\2") - buf.write("\u0cab\u0cac\7|\2\2\u0cac\u0cad\5\u02a8\u0155\2\u0cad") - buf.write("\u0249\3\2\2\2\u0cae\u0caf\7!\2\2\u0caf\u0cb0\5\u023e") - buf.write("\u0120\2\u0cb0\u0cb1\7\u00a1\2\2\u0cb1\u0cb2\5\u01b2\u00da") - buf.write("\2\u0cb2\u024b\3\2\2\2\u0cb3\u0cb4\7r\2\2\u0cb4\u0cbb") - buf.write("\5\u024e\u0128\2\u0cb5\u0cb6\7r\2\2\u0cb6\u0cb7\7}\2\2") - buf.write("\u0cb7\u0cb8\5\u0250\u0129\2\u0cb8\u0cb9\7\u0082\2\2\u0cb9") - buf.write("\u0cbb\3\2\2\2\u0cba\u0cb3\3\2\2\2\u0cba\u0cb5\3\2\2\2") - buf.write("\u0cbb\u024d\3\2\2\2\u0cbc\u0cbf\5\u0258\u012d\2\u0cbd") - buf.write("\u0cbf\7\u00c2\2\2\u0cbe\u0cbc\3\2\2\2\u0cbe\u0cbd\3\2") - buf.write("\2\2\u0cbf\u024f\3\2\2\2\u0cc0\u0cc2\5\u0252\u012a\2\u0cc1") - buf.write("\u0cc0\3\2\2\2\u0cc1\u0cc2\3\2\2\2\u0cc2\u0cc4\3\2\2\2") - buf.write("\u0cc3\u0cc5\5\u0254\u012b\2\u0cc4\u0cc3\3\2\2\2\u0cc5") - buf.write("\u0cc6\3\2\2\2\u0cc6\u0cc4\3\2\2\2\u0cc6\u0cc7\3\2\2\2") - buf.write("\u0cc7\u0251\3\2\2\2\u0cc8\u0cca\5\u024e\u0128\2\u0cc9") - buf.write("\u0ccb\7|\2\2\u0cca\u0cc9\3\2\2\2\u0cca\u0ccb\3\2\2\2") - buf.write("\u0ccb\u0253\3\2\2\2\u0ccc\u0ccd\7O\2\2\u0ccd\u0cce\7") - buf.write("\u0084\2\2\u0cce\u0cd6\5\u024e\u0128\2\u0ccf\u0cd0\7U") - buf.write("\2\2\u0cd0\u0cd1\7\u0084\2\2\u0cd1\u0cd6\5\u023e\u0120") - buf.write("\2\u0cd2\u0cd3\7Y\2\2\u0cd3\u0cd4\7\u0084\2\2\u0cd4\u0cd6") - buf.write("\5\u0256\u012c\2\u0cd5\u0ccc\3\2\2\2\u0cd5\u0ccf\3\2\2") - buf.write("\2\u0cd5\u0cd2\3\2\2\2\u0cd6\u0255\3\2\2\2\u0cd7\u0cda") - buf.write("\5\u01b2\u00da\2\u0cd8\u0cda\5\u01aa\u00d6\2\u0cd9\u0cd7") - buf.write("\3\2\2\2\u0cd9\u0cd8\3\2\2\2\u0cda\u0257\3\2\2\2\u0cdb") - buf.write("\u0cdc\b\u012d\1\2\u0cdc\u0ce0\5\u025a\u012e\2\u0cdd\u0cde") - buf.write("\t\3\2\2\u0cde\u0ce0\5\u025a\u012e\2\u0cdf\u0cdb\3\2\2") - buf.write("\2\u0cdf\u0cdd\3\2\2\2\u0ce0\u0ce6\3\2\2\2\u0ce1\u0ce2") - buf.write("\f\3\2\2\u0ce2\u0ce3\t\3\2\2\u0ce3\u0ce5\5\u025a\u012e") - buf.write("\2\u0ce4\u0ce1\3\2\2\2\u0ce5\u0ce8\3\2\2\2\u0ce6\u0ce4") - buf.write("\3\2\2\2\u0ce6\u0ce7\3\2\2\2\u0ce7\u0259\3\2\2\2\u0ce8") - buf.write("\u0ce6\3\2\2\2\u0ce9\u0cea\b\u012e\1\2\u0cea\u0ceb\5\u025c") - buf.write("\u012f\2\u0ceb\u0cf6\3\2\2\2\u0cec\u0ced\f\4\2\2\u0ced") - buf.write("\u0cee\t\t\2\2\u0cee\u0cf5\5\u025c\u012f\2\u0cef\u0cf0") - buf.write("\f\3\2\2\u0cf0\u0cf1\7\u0087\2\2\u0cf1\u0cf2\7\u0087\2") - buf.write("\2\u0cf2\u0cf3\3\2\2\2\u0cf3\u0cf5\5\u025e\u0130\2\u0cf4") - buf.write("\u0cec\3\2\2\2\u0cf4\u0cef\3\2\2\2\u0cf5\u0cf8\3\2\2\2") - buf.write("\u0cf6\u0cf4\3\2\2\2\u0cf6\u0cf7\3\2\2\2\u0cf7\u025b\3") - buf.write("\2\2\2\u0cf8\u0cf6\3\2\2\2\u0cf9\u0cff\5\u025e\u0130\2") - buf.write("\u0cfa\u0cfb\5\u025e\u0130\2\u0cfb\u0cfc\7\u0089\2\2\u0cfc") - buf.write("\u0cfd\5\u025c\u012f\2\u0cfd\u0cff\3\2\2\2\u0cfe\u0cf9") - buf.write("\3\2\2\2\u0cfe\u0cfa\3\2\2\2\u0cff\u025d\3\2\2\2\u0d00") - buf.write("\u0d09\7\u00bc\2\2\u0d01\u0d09\7\u00b3\2\2\u0d02\u0d09") - buf.write("\5\u02a0\u0151\2\u0d03\u0d09\5\u029a\u014e\2\u0d04\u0d05") - buf.write("\7}\2\2\u0d05\u0d06\5\u0258\u012d\2\u0d06\u0d07\7\u0082") - buf.write("\2\2\u0d07\u0d09\3\2\2\2\u0d08\u0d00\3\2\2\2\u0d08\u0d01") - buf.write("\3\2\2\2\u0d08\u0d02\3\2\2\2\u0d08\u0d03\3\2\2\2\u0d08") - buf.write("\u0d04\3\2\2\2\u0d09\u025f\3\2\2\2\u0d0a\u0d0b\7\13\2") - buf.write("\2\u0d0b\u0d0c\5\u0262\u0132\2\u0d0c\u0d0d\5\u0264\u0133") - buf.write("\2\u0d0d\u0d14\3\2\2\2\u0d0e\u0d0f\7\3\2\2\u0d0f\u0d10") - buf.write("\7\13\2\2\u0d10\u0d11\5\u0262\u0132\2\u0d11\u0d12\5\u0264") - buf.write("\u0133\2\u0d12\u0d14\3\2\2\2\u0d13\u0d0a\3\2\2\2\u0d13") - buf.write("\u0d0e\3\2\2\2\u0d14\u0261\3\2\2\2\u0d15\u0d16\7\u00be") - buf.write("\2\2\u0d16\u0263\3\2\2\2\u0d17\u0d19\5B\"\2\u0d18\u0d1a") - buf.write("\5\u013e\u00a0\2\u0d19\u0d18\3\2\2\2\u0d19\u0d1a\3\2\2") - buf.write("\2\u0d1a\u0d1b\3\2\2\2\u0d1b\u0d1c\5\u00dan\2\u0d1c\u0d22") - buf.write("\3\2\2\2\u0d1d\u0d1e\5B\"\2\u0d1e\u0d1f\5\16\b\2\u0d1f") - buf.write("\u0d20\5\u00dan\2\u0d20\u0d22\3\2\2\2\u0d21\u0d17\3\2") - buf.write("\2\2\u0d21\u0d1d\3\2\2\2\u0d22\u0265\3\2\2\2\u0d23\u0d24") - buf.write("\7<\2\2\u0d24\u0d25\7\u00b3\2\2\u0d25\u0267\3\2\2\2\u0d26") - buf.write("\u0d27\7+\2\2\u0d27\u0d2b\5\u026a\u0136\2\u0d28\u0d29") - buf.write("\7+\2\2\u0d29\u0d2b\7,\2\2\u0d2a\u0d26\3\2\2\2\u0d2a\u0d28") - buf.write("\3\2\2\2\u0d2b\u0269\3\2\2\2\u0d2c\u0d31\5\u026c\u0137") - buf.write("\2\u0d2d\u0d2e\7|\2\2\u0d2e\u0d30\5\u026c\u0137\2\u0d2f") - buf.write("\u0d2d\3\2\2\2\u0d30\u0d33\3\2\2\2\u0d31\u0d2f\3\2\2\2") - buf.write("\u0d31\u0d32\3\2\2\2\u0d32\u026b\3\2\2\2\u0d33\u0d31\3") - buf.write("\2\2\2\u0d34\u0d35\5\u0112\u008a\2\u0d35\u0d36\5\u026e") - buf.write("\u0138\2\u0d36\u0d3d\3\2\2\2\u0d37\u0d38\5\u0112\u008a") - buf.write("\2\u0d38\u0d39\7}\2\2\u0d39\u0d3a\5\u026e\u0138\2\u0d3a") - buf.write("\u0d3b\7\u0082\2\2\u0d3b\u0d3d\3\2\2\2\u0d3c\u0d34\3\2") - buf.write("\2\2\u0d3c\u0d37\3\2\2\2\u0d3d\u026d\3\2\2\2\u0d3e\u0d40") - buf.write("\5\u0270\u0139\2\u0d3f\u0d3e\3\2\2\2\u0d3f\u0d40\3\2\2") - buf.write("\2\u0d40\u0d45\3\2\2\2\u0d41\u0d42\7|\2\2\u0d42\u0d44") - buf.write("\5\u0270\u0139\2\u0d43\u0d41\3\2\2\2\u0d44\u0d47\3\2\2") - buf.write("\2\u0d45\u0d43\3\2\2\2\u0d45\u0d46\3\2\2\2\u0d46\u026f") - buf.write("\3\2\2\2\u0d47\u0d45\3\2\2\2\u0d48\u0d49\7\u00be\2\2\u0d49") - buf.write("\u0d4a\7\u0085\2\2\u0d4a\u0d4b\7\u00be\2\2\u0d4b\u0271") - buf.write("\3\2\2\2\u0d4c\u0d4d\b\u013a\1\2\u0d4d\u0d4e\5\u0276\u013c") - buf.write("\2\u0d4e\u0d55\3\2\2\2\u0d4f\u0d50\f\3\2\2\u0d50\u0d51") - buf.write("\5\u0274\u013b\2\u0d51\u0d52\5\u0276\u013c\2\u0d52\u0d54") - buf.write("\3\2\2\2\u0d53\u0d4f\3\2\2\2\u0d54\u0d57\3\2\2\2\u0d55") - buf.write("\u0d53\3\2\2\2\u0d55\u0d56\3\2\2\2\u0d56\u0273\3\2\2\2") - buf.write("\u0d57\u0d55\3\2\2\2\u0d58\u0d59\7\35\2\2\u0d59\u0275") - buf.write("\3\2\2\2\u0d5a\u0d5f\5\u0278\u013d\2\u0d5b\u0d5c\t\5\2") - buf.write("\2\u0d5c\u0d5e\5\u0278\u013d\2\u0d5d\u0d5b\3\2\2\2\u0d5e") - buf.write("\u0d61\3\2\2\2\u0d5f\u0d5d\3\2\2\2\u0d5f\u0d60\3\2\2\2") - buf.write("\u0d60\u0277\3\2\2\2\u0d61\u0d5f\3\2\2\2\u0d62\u0d67\5") - buf.write("\u027a\u013e\2\u0d63\u0d64\7\u008c\2\2\u0d64\u0d66\5\u027a") - buf.write("\u013e\2\u0d65\u0d63\3\2\2\2\u0d66\u0d69\3\2\2\2\u0d67") - buf.write("\u0d65\3\2\2\2\u0d67\u0d68\3\2\2\2\u0d68\u0279\3\2\2\2") - buf.write("\u0d69\u0d67\3\2\2\2\u0d6a\u0d6f\5\u027c\u013f\2\u0d6b") - buf.write("\u0d6c\7\u008b\2\2\u0d6c\u0d6e\5\u027c\u013f\2\u0d6d\u0d6b") - buf.write("\3\2\2\2\u0d6e\u0d71\3\2\2\2\u0d6f\u0d6d\3\2\2\2\u0d6f") - buf.write("\u0d70\3\2\2\2\u0d70\u027b\3\2\2\2\u0d71\u0d6f\3\2\2\2") - buf.write("\u0d72\u0d74\7\u008a\2\2\u0d73\u0d72\3\2\2\2\u0d73\u0d74") - buf.write("\3\2\2\2\u0d74\u0d75\3\2\2\2\u0d75\u0d76\5\u0280\u0141") - buf.write("\2\u0d76\u027d\3\2\2\2\u0d77\u0d78\t\n\2\2\u0d78\u027f") - buf.write("\3\2\2\2\u0d79\u0d7f\5\u0282\u0142\2\u0d7a\u0d7b\5\u027e") - buf.write("\u0140\2\u0d7b\u0d7c\5\u0282\u0142\2\u0d7c\u0d7e\3\2\2") - buf.write("\2\u0d7d\u0d7a\3\2\2\2\u0d7e\u0d81\3\2\2\2\u0d7f\u0d7d") - buf.write("\3\2\2\2\u0d7f\u0d80\3\2\2\2\u0d80\u0281\3\2\2\2\u0d81") - buf.write("\u0d7f\3\2\2\2\u0d82\u0d8e\5\u0284\u0143\2\u0d83\u0d85") - buf.write("\7\u0087\2\2\u0d84\u0d86\7\u00ba\2\2\u0d85\u0d84\3\2\2") - buf.write("\2\u0d85\u0d86\3\2\2\2\u0d86\u0d87\3\2\2\2\u0d87\u0d89") - buf.write("\7\u0087\2\2\u0d88\u0d8a\7\u00bb\2\2\u0d89\u0d88\3\2\2") - buf.write("\2\u0d89\u0d8a\3\2\2\2\u0d8a\u0d8b\3\2\2\2\u0d8b\u0d8d") - buf.write("\5\u0284\u0143\2\u0d8c\u0d83\3\2\2\2\u0d8d\u0d90\3\2\2") - buf.write("\2\u0d8e\u0d8c\3\2\2\2\u0d8e\u0d8f\3\2\2\2\u0d8f\u0283") - buf.write("\3\2\2\2\u0d90\u0d8e\3\2\2\2\u0d91\u0d93\5\u0286\u0144") - buf.write("\2\u0d92\u0d91\3\2\2\2\u0d92\u0d93\3\2\2\2\u0d93\u0d94") - buf.write("\3\2\2\2\u0d94\u0d99\5\u0288\u0145\2\u0d95\u0d96\t\3\2") - buf.write("\2\u0d96\u0d98\5\u0288\u0145\2\u0d97\u0d95\3\2\2\2\u0d98") - buf.write("\u0d9b\3\2\2\2\u0d99\u0d97\3\2\2\2\u0d99\u0d9a\3\2\2\2") - buf.write("\u0d9a\u0285\3\2\2\2\u0d9b\u0d99\3\2\2\2\u0d9c\u0d9d\t") - buf.write("\3\2\2\u0d9d\u0287\3\2\2\2\u0d9e\u0da3\5\u028a\u0146\2") - buf.write("\u0d9f\u0da0\t\t\2\2\u0da0\u0da2\5\u028a\u0146\2\u0da1") - buf.write("\u0d9f\3\2\2\2\u0da2\u0da5\3\2\2\2\u0da3\u0da1\3\2\2\2") - buf.write("\u0da3\u0da4\3\2\2\2\u0da4\u0289\3\2\2\2\u0da5\u0da3\3") - buf.write("\2\2\2\u0da6\u0dab\5\u028c\u0147\2\u0da7\u0da8\7\u0089") - buf.write("\2\2\u0da8\u0daa\5\u028c\u0147\2\u0da9\u0da7\3\2\2\2\u0daa") - buf.write("\u0dad\3\2\2\2\u0dab\u0da9\3\2\2\2\u0dab\u0dac\3\2\2\2") - buf.write("\u0dac\u028b\3\2\2\2\u0dad\u0dab\3\2\2\2\u0dae\u0db3\5") - buf.write("\u0290\u0149\2\u0daf\u0db0\5\u028e\u0148\2\u0db0\u0db1") - buf.write("\5\u0290\u0149\2\u0db1\u0db3\3\2\2\2\u0db2\u0dae\3\2\2") - buf.write("\2\u0db2\u0daf\3\2\2\2\u0db3\u028d\3\2\2\2\u0db4\u0db5") - buf.write("\7\35\2\2\u0db5\u028f\3\2\2\2\u0db6\u0dc1\5\u02b0\u0159") - buf.write("\2\u0db7\u0dc1\5\u02a0\u0151\2\u0db8\u0dc1\5\u029a\u014e") - buf.write("\2\u0db9\u0dba\7}\2\2\u0dba\u0dbb\5\u0272\u013a\2\u0dbb") - buf.write("\u0dbc\7\u0082\2\2\u0dbc\u0dc1\3\2\2\2\u0dbd\u0dc1\7\u00b3") - buf.write("\2\2\u0dbe\u0dc1\5\u02ac\u0157\2\u0dbf\u0dc1\5\u0292\u014a") - buf.write("\2\u0dc0\u0db6\3\2\2\2\u0dc0\u0db7\3\2\2\2\u0dc0\u0db8") - buf.write("\3\2\2\2\u0dc0\u0db9\3\2\2\2\u0dc0\u0dbd\3\2\2\2\u0dc0") - buf.write("\u0dbe\3\2\2\2\u0dc0\u0dbf\3\2\2\2\u0dc1\u0291\3\2\2\2") - buf.write("\u0dc2\u0dc3\7\u00ad\2\2\u0dc3\u0dc4\5\u0294\u014b\2\u0dc4") - buf.write("\u0dc5\7\u00af\2\2\u0dc5\u0293\3\2\2\2\u0dc6\u0dc9\5\u0272") - buf.write("\u013a\2\u0dc7\u0dc9\5\u0296\u014c\2\u0dc8\u0dc6\3\2\2") - buf.write("\2\u0dc8\u0dc7\3\2\2\2\u0dc9\u0295\3\2\2\2\u0dca\u0dcb") - buf.write("\b\u014c\1\2\u0dcb\u0dcc\5\u0272\u013a\2\u0dcc\u0dcd\7") - buf.write("|\2\2\u0dcd\u0dce\5\u0272\u013a\2\u0dce\u0dd5\3\2\2\2") - buf.write("\u0dcf\u0dd0\5\u0272\u013a\2\u0dd0\u0dd1\7|\2\2\u0dd1") - buf.write("\u0dd2\5\u0298\u014d\2\u0dd2\u0dd5\3\2\2\2\u0dd3\u0dd5") - buf.write("\5\u0298\u014d\2\u0dd4\u0dca\3\2\2\2\u0dd4\u0dcf\3\2\2") - buf.write("\2\u0dd4\u0dd3\3\2\2\2\u0dd5\u0dde\3\2\2\2\u0dd6\u0dd7") - buf.write("\f\4\2\2\u0dd7\u0dd8\7|\2\2\u0dd8\u0ddd\5\u0272\u013a") - buf.write("\2\u0dd9\u0dda\f\3\2\2\u0dda\u0ddb\7|\2\2\u0ddb\u0ddd") - buf.write("\5\u0298\u014d\2\u0ddc\u0dd6\3\2\2\2\u0ddc\u0dd9\3\2\2") - buf.write("\2\u0ddd\u0de0\3\2\2\2\u0dde\u0ddc\3\2\2\2\u0dde\u0ddf") - buf.write("\3\2\2\2\u0ddf\u0297\3\2\2\2\u0de0\u0dde\3\2\2\2\u0de1") - buf.write("\u0de2\7}\2\2\u0de2\u0de3\5\u0272\u013a\2\u0de3\u0de4") - buf.write("\7|\2\2\u0de4\u0de5\5\u01ac\u00d7\2\u0de5\u0de6\7\u0084") - buf.write("\2\2\u0de6\u0de7\5\u0272\u013a\2\u0de7\u0de8\7|\2\2\u0de8") - buf.write("\u0de9\5\u0272\u013a\2\u0de9\u0dea\7\u0082\2\2\u0dea\u0e0e") - buf.write("\3\2\2\2\u0deb\u0dec\7}\2\2\u0dec\u0ded\5\u0272\u013a") - buf.write("\2\u0ded\u0dee\7|\2\2\u0dee\u0def\5\u01ac\u00d7\2\u0def") - buf.write("\u0df0\7\u0084\2\2\u0df0\u0df1\5\u0272\u013a\2\u0df1\u0df2") - buf.write("\7|\2\2\u0df2\u0df3\5\u0272\u013a\2\u0df3\u0df4\7|\2\2") - buf.write("\u0df4\u0df5\5\u0272\u013a\2\u0df5\u0df6\7\u0082\2\2\u0df6") - buf.write("\u0e0e\3\2\2\2\u0df7\u0df8\7}\2\2\u0df8\u0df9\5\u0298") - buf.write("\u014d\2\u0df9\u0dfa\7|\2\2\u0dfa\u0dfb\5\u01ac\u00d7") - buf.write("\2\u0dfb\u0dfc\7\u0084\2\2\u0dfc\u0dfd\5\u0272\u013a\2") - buf.write("\u0dfd\u0dfe\7|\2\2\u0dfe\u0dff\5\u0272\u013a\2\u0dff") - buf.write("\u0e00\7\u0082\2\2\u0e00\u0e0e\3\2\2\2\u0e01\u0e02\7}") - buf.write("\2\2\u0e02\u0e03\5\u0298\u014d\2\u0e03\u0e04\7|\2\2\u0e04") - buf.write("\u0e05\5\u01ac\u00d7\2\u0e05\u0e06\7\u0084\2\2\u0e06\u0e07") - buf.write("\5\u0272\u013a\2\u0e07\u0e08\7|\2\2\u0e08\u0e09\5\u0272") - buf.write("\u013a\2\u0e09\u0e0a\7|\2\2\u0e0a\u0e0b\5\u0272\u013a") - buf.write("\2\u0e0b\u0e0c\7\u0082\2\2\u0e0c\u0e0e\3\2\2\2\u0e0d\u0de1") - buf.write("\3\2\2\2\u0e0d\u0deb\3\2\2\2\u0e0d\u0df7\3\2\2\2\u0e0d") - buf.write("\u0e01\3\2\2\2\u0e0e\u0299\3\2\2\2\u0e0f\u0e10\7\u00be") - buf.write("\2\2\u0e10\u0e11\7}\2\2\u0e11\u0e18\7\u0082\2\2\u0e12") - buf.write("\u0e13\7\u00be\2\2\u0e13\u0e14\7}\2\2\u0e14\u0e15\5\u029c") - buf.write("\u014f\2\u0e15\u0e16\7\u0082\2\2\u0e16\u0e18\3\2\2\2\u0e17") - buf.write("\u0e0f\3\2\2\2\u0e17\u0e12\3\2\2\2\u0e18\u029b\3\2\2\2") - buf.write("\u0e19\u0e1a\b\u014f\1\2\u0e1a\u0e20\5\u029e\u0150\2\u0e1b") - buf.write("\u0e1c\5\u02a6\u0154\2\u0e1c\u0e1d\7|\2\2\u0e1d\u0e1e") - buf.write("\5\u029e\u0150\2\u0e1e\u0e20\3\2\2\2\u0e1f\u0e19\3\2\2") - buf.write("\2\u0e1f\u0e1b\3\2\2\2\u0e20\u0e26\3\2\2\2\u0e21\u0e22") - buf.write("\f\4\2\2\u0e22\u0e23\7|\2\2\u0e23\u0e25\5\u029e\u0150") - buf.write("\2\u0e24\u0e21\3\2\2\2\u0e25\u0e28\3\2\2\2\u0e26\u0e24") - buf.write("\3\2\2\2\u0e26\u0e27\3\2\2\2\u0e27\u029d\3\2\2\2\u0e28") - buf.write("\u0e26\3\2\2\2\u0e29\u0e2a\7\u00be\2\2\u0e2a\u0e2b\7\u0084") - buf.write("\2\2\u0e2b\u0e2c\5\u0272\u013a\2\u0e2c\u029f\3\2\2\2\u0e2d") - buf.write("\u0e31\t\13\2\2\u0e2e\u0e30\5\u02a2\u0152\2\u0e2f\u0e2e") - buf.write("\3\2\2\2\u0e30\u0e33\3\2\2\2\u0e31\u0e2f\3\2\2\2\u0e31") - buf.write("\u0e32\3\2\2\2\u0e32\u02a1\3\2\2\2\u0e33\u0e31\3\2\2\2") - buf.write("\u0e34\u0e38\5\u02a4\u0153\2\u0e35\u0e36\7~\2\2\u0e36") - buf.write("\u0e38\7\u00be\2\2\u0e37\u0e34\3\2\2\2\u0e37\u0e35\3\2") - buf.write("\2\2\u0e38\u02a3\3\2\2\2\u0e39\u0e3a\7}\2\2\u0e3a\u0e3b") - buf.write("\5\u02a6\u0154\2\u0e3b\u0e3c\7\u0082\2\2\u0e3c\u02a5\3") - buf.write("\2\2\2\u0e3d\u0e42\5\u02a8\u0155\2\u0e3e\u0e3f\7|\2\2") - buf.write("\u0e3f\u0e41\5\u02a8\u0155\2\u0e40\u0e3e\3\2\2\2\u0e41") - buf.write("\u0e44\3\2\2\2\u0e42\u0e40\3\2\2\2\u0e42\u0e43\3\2\2\2") - buf.write("\u0e43\u02a7\3\2\2\2\u0e44\u0e42\3\2\2\2\u0e45\u0e47\5") - buf.write("\u0272\u013a\2\u0e46\u0e48\5\u02aa\u0156\2\u0e47\u0e46") - buf.write("\3\2\2\2\u0e47\u0e48\3\2\2\2\u0e48\u0e4b\3\2\2\2\u0e49") - buf.write("\u0e4b\5\u02aa\u0156\2\u0e4a\u0e45\3\2\2\2\u0e4a\u0e49") - buf.write("\3\2\2\2\u0e4b\u02a9\3\2\2\2\u0e4c\u0e4e\7\u0083\2\2\u0e4d") - buf.write("\u0e4f\5\u0272\u013a\2\u0e4e\u0e4d\3\2\2\2\u0e4e\u0e4f") - buf.write("\3\2\2\2\u0e4f\u0e58\3\2\2\2\u0e50\u0e51\7\u0083\2\2\u0e51") - buf.write("\u0e52\5\u0272\u013a\2\u0e52\u0e53\7\u0083\2\2\u0e53\u0e54") - buf.write("\5\u0272\u013a\2\u0e54\u0e58\3\2\2\2\u0e55\u0e56\7 \2") - buf.write("\2\u0e56\u0e58\5\u0272\u013a\2\u0e57\u0e4c\3\2\2\2\u0e57") - buf.write("\u0e50\3\2\2\2\u0e57\u0e55\3\2\2\2\u0e58\u02ab\3\2\2\2") - buf.write("\u0e59\u0e63\t\f\2\2\u0e5a\u0e5b\7\u0097\2\2\u0e5b\u0e5c") - buf.write("\7\u00ac\2\2\u0e5c\u0e63\5\u02ae\u0158\2\u0e5d\u0e5e\7") - buf.write("\u0098\2\2\u0e5e\u0e5f\7\u00ac\2\2\u0e5f\u0e60\5\u02ae") - buf.write("\u0158\2\u0e60\u0e61\7\u00ae\2\2\u0e61\u0e63\3\2\2\2\u0e62") - buf.write("\u0e59\3\2\2\2\u0e62\u0e5a\3\2\2\2\u0e62\u0e5d\3\2\2\2") - buf.write("\u0e63\u02ad\3\2\2\2\u0e64\u0e67\7\u00bc\2\2\u0e65\u0e67") - buf.write("\5\u0126\u0094\2\u0e66\u0e64\3\2\2\2\u0e66\u0e65\3\2\2") - buf.write("\2\u0e67\u02af\3\2\2\2\u0e68\u0e71\t\r\2\2\u0e69\u0e71") - buf.write("\5\u02b2\u015a\2\u0e6a\u0e6b\7\u00bc\2\2\u0e6b\u0e6c\7") - buf.write("\u00ac\2\2\u0e6c\u0e71\5\u02ae\u0158\2\u0e6d\u0e6e\7\u00b4") - buf.write("\2\2\u0e6e\u0e6f\7\u00ac\2\2\u0e6f\u0e71\5\u02ae\u0158") - buf.write("\2\u0e70\u0e68\3\2\2\2\u0e70\u0e69\3\2\2\2\u0e70\u0e6a") - buf.write("\3\2\2\2\u0e70\u0e6d\3\2\2\2\u0e71\u02b1\3\2\2\2\u0e72") - buf.write("\u0e73\7}\2\2\u0e73\u0e74\5\u02b4\u015b\2\u0e74\u0e75") - buf.write("\7|\2\2\u0e75\u0e76\7\u0082\2\2\u0e76\u02b3\3\2\2\2\u0e77") - buf.write("\u0e79\t\3\2\2\u0e78\u0e77\3\2\2\2\u0e78\u0e79\3\2\2\2") - buf.write("\u0e79\u0e7a\3\2\2\2\u0e7a\u0e7e\7\u00bc\2\2\u0e7b\u0e7e") - buf.write("\7\u00b4\2\2\u0e7c\u0e7e\7\u00be\2\2\u0e7d\u0e78\3\2\2") - buf.write("\2\u0e7d\u0e7b\3\2\2\2\u0e7d\u0e7c\3\2\2\2\u0e7e\u02b5") - buf.write("\3\2\2\2\u0e7f\u0e80\5\u0272\u013a\2\u0e80\u02b7\3\2\2") - buf.write("\2\u0e81\u0e82\7\65\2\2\u0e82\u0e83\7}\2\2\u0e83\u0e84") - buf.write("\5\u0272\u013a\2\u0e84\u0e85\7\u0082\2\2\u0e85\u0e86\5") - buf.write("\u01b6\u00dc\2\u0e86\u02b9\3\2\2\2\u014d\u02bf\u02c6\u02c9") - buf.write("\u02d1\u02d7\u02e1\u02e7\u02ec\u02f5\u0308\u030f\u0318") - buf.write("\u031f\u0330\u033a\u033c\u0345\u0349\u034e\u0350\u0359") - buf.write("\u0360\u0365\u036a\u0370\u0373\u0379\u0382\u0393\u0395") - buf.write("\u03a2\u03ad\u03b7\u03c0\u03c5\u03c9\u03cc\u03d8\u03db") - buf.write("\u03e2\u03e7\u03ed\u03fd\u0401\u040a\u0413\u0417\u0420") - buf.write("\u0429\u042d\u0436\u0454\u0456\u0462\u0472\u047b\u0484") - buf.write("\u048a\u048e\u0495\u049a\u04a4\u04a9\u04ad\u04b9\u04c3") - buf.write("\u04cd\u04da\u04e1\u04e6\u04ed\u04f4\u04fb\u04fd\u0502") - buf.write("\u0511\u051a\u051f\u052a\u0540\u0547\u0575\u057d\u0588") - buf.write("\u058f\u0596\u05a7\u05b0\u05b3\u05ba\u05c5\u05d4\u05dd") - buf.write("\u05e2\u05ed\u05f9\u05fd\u0605\u0607\u060c\u060f\u0616") - buf.write("\u061a\u0620\u0629\u0635\u063c\u063e\u064c\u0658\u0661") - buf.write("\u0666\u0677\u067e\u06ac\u06b5\u06be\u06c2\u06c9\u06d1") - buf.write("\u06dc\u06fa\u0706\u072c\u0734\u073b\u073f\u074e\u075f") - buf.write("\u076b\u0771\u0773\u0778\u077e\u0788\u0792\u07a2\u07a7") - buf.write("\u07ab\u07b2\u07ba\u07c4\u07cc\u07d5\u07fd\u0803\u0807") - buf.write("\u080c\u080e\u0817\u081c\u0824\u082b\u0830\u083c\u0843") - buf.write("\u0847\u0854\u0867\u0871\u0875\u0878\u087c\u0881\u0888") - buf.write("\u088d\u088f\u089c\u08ad\u08b6\u08bb\u08c6\u08d0\u08de") - buf.write("\u08e2\u08e6\u08e9\u08f2\u08f8\u0913\u0918\u091d\u0927") - buf.write("\u0932\u093e\u0943\u094d\u0954\u0978\u0985\u098c\u099a") - buf.write("\u099f\u09a4\u09ad\u09b2\u09c2\u09c9\u09ce\u09de\u09e5") - buf.write("\u09ec\u09f5\u09fe\u0a05\u0a15\u0a1c\u0a24\u0a2f\u0a36") - buf.write("\u0a3f\u0a44\u0a49\u0a4b\u0a61\u0a6c\u0a71\u0a7c\u0a85") - buf.write("\u0a8e\u0a9a\u0aa1\u0ac2\u0acb\u0acf\u0adb\u0ae3\u0ae5") - buf.write("\u0af1\u0afe\u0b02\u0b07\u0b0b\u0b13\u0b16\u0b1c\u0b46") - buf.write("\u0b55\u0b58\u0b5b\u0b61\u0baf\u0bb4\u0bba\u0bc4\u0bcb") - buf.write("\u0bd3\u0bdc\u0be5\u0beb\u0bf1\u0bf7\u0c01\u0c04\u0c0a") - buf.write("\u0c18\u0c1e\u0c26\u0c2b\u0c3b\u0c40\u0c46\u0c57\u0c68") - buf.write("\u0c6c\u0c6f\u0c75\u0c85\u0c8c\u0c93\u0c96\u0c9a\u0c9d") - buf.write("\u0ca5\u0ca9\u0cba\u0cbe\u0cc1\u0cc6\u0cca\u0cd5\u0cd9") - buf.write("\u0cdf\u0ce6\u0cf4\u0cf6\u0cfe\u0d08\u0d13\u0d19\u0d21") - buf.write("\u0d2a\u0d31\u0d3c\u0d3f\u0d45\u0d55\u0d5f\u0d67\u0d6f") - buf.write("\u0d73\u0d7f\u0d85\u0d89\u0d8e\u0d92\u0d99\u0da3\u0dab") - buf.write("\u0db2\u0dc0\u0dc8\u0dd4\u0ddc\u0dde\u0e0d\u0e17\u0e1f") - buf.write("\u0e26\u0e31\u0e37\u0e42\u0e47\u0e4a\u0e4e\u0e57\u0e62") - buf.write("\u0e66\u0e70\u0e78\u0e7d") - return buf.getvalue() - + return [ + 4,1,195,3718,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,2,245,7,245,2,246,7,246, + 2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252, + 7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257, + 2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263, + 7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268, + 2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274, + 7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279, + 2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285, + 7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290, + 2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296, + 7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301, + 2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307, + 7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312, + 2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318, + 7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323, + 2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329, + 7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334, + 2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340, + 7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345, + 2,346,7,346,2,347,7,347,1,0,1,0,1,1,4,1,700,8,1,11,1,12,1,701,1, + 2,1,2,1,2,1,2,1,2,3,2,709,8,2,1,3,3,3,712,8,3,1,3,1,3,1,4,1,4,1, + 4,1,5,3,5,720,8,5,1,5,1,5,1,5,1,5,3,5,726,8,5,1,6,1,6,1,6,1,6,1, + 6,1,6,1,6,1,6,3,6,736,8,6,1,6,1,6,5,6,740,8,6,10,6,12,6,743,9,6, + 1,7,1,7,3,7,747,8,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,756,8,8,1,9, + 1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9, + 3,9,775,8,9,1,10,1,10,1,10,5,10,780,8,10,10,10,12,10,783,9,10,1, + 11,1,11,1,11,1,11,1,11,1,11,3,11,791,8,11,1,12,1,12,1,12,5,12,796, + 8,12,10,12,12,12,799,9,12,1,13,1,13,1,13,1,13,1,14,1,14,1,15,1,15, + 1,15,1,15,1,15,1,16,4,16,813,8,16,11,16,12,16,814,1,17,1,17,1,17, + 1,17,1,18,1,18,1,18,1,18,3,18,825,8,18,3,18,827,8,18,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,3,19,836,8,19,1,20,1,20,3,20,840,8,20,1,20, + 1,20,1,20,3,20,845,8,20,3,20,847,8,20,1,21,1,21,1,21,1,21,1,21,5, + 21,854,8,21,10,21,12,21,857,9,21,1,22,1,22,1,23,1,23,3,23,863,8, + 23,1,23,1,23,1,23,3,23,868,8,23,1,23,1,23,1,23,3,23,873,8,23,1,23, + 1,23,1,23,1,23,3,23,879,8,23,1,23,3,23,882,8,23,1,24,1,24,1,24,1, + 24,3,24,888,8,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,3,25,897,8,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,1,25,5,25,914,8,25,10,25,12,25,917,9,25,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,3,26,929,8,26,1,27,1,27,1,27,1,27, + 1,27,1,27,1,27,1,27,1,27,3,27,940,8,27,1,28,1,28,1,28,1,28,1,28, + 1,28,1,28,1,28,3,28,950,8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29, + 3,29,959,8,29,1,30,1,30,1,30,3,30,964,8,30,1,30,1,30,3,30,968,8, + 30,1,30,3,30,971,8,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1, + 32,1,32,3,32,983,8,32,1,32,3,32,986,8,32,1,33,1,33,1,33,5,33,991, + 8,33,10,33,12,33,994,9,33,1,34,1,34,3,34,998,8,34,1,35,1,35,1,35, + 1,35,3,35,1004,8,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36, + 1,36,1,36,1,36,1,36,1,36,3,36,1020,8,36,1,37,1,37,3,37,1024,8,37, + 1,37,1,37,1,38,1,38,1,38,5,38,1031,8,38,10,38,12,38,1034,9,38,1, + 39,1,39,1,39,1,39,1,39,1,39,3,39,1042,8,39,1,40,1,40,3,40,1046,8, + 40,1,40,1,40,1,41,1,41,1,41,5,41,1053,8,41,10,41,12,41,1056,9,41, + 1,42,1,42,1,42,1,42,1,42,1,42,3,42,1064,8,42,1,43,1,43,3,43,1068, + 8,43,1,43,1,43,1,44,1,44,1,44,5,44,1075,8,44,10,44,12,44,1078,9, + 44,1,45,1,45,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, + 47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, + 47,1,47,5,47,1107,8,47,10,47,12,47,1110,9,47,1,48,1,48,1,49,1,49, + 1,50,1,50,1,50,1,50,1,50,3,50,1121,8,50,1,50,1,50,1,51,1,51,1,51, + 1,51,1,52,1,52,1,53,1,53,1,54,1,54,1,55,1,55,3,55,1137,8,55,1,55, + 1,55,1,56,1,56,1,56,5,56,1144,8,56,10,56,12,56,1147,9,56,1,57,1, + 57,1,57,1,57,1,57,1,57,3,57,1155,8,57,1,58,1,58,1,59,1,59,3,59,1161, + 8,59,1,59,1,59,3,59,1165,8,59,1,60,1,60,1,60,5,60,1170,8,60,10,60, + 12,60,1173,9,60,1,61,1,61,3,61,1177,8,61,1,62,1,62,1,63,1,63,1,63, + 1,63,1,63,1,63,3,63,1187,8,63,1,64,4,64,1190,8,64,11,64,12,64,1191, + 1,65,1,65,3,65,1196,8,65,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,68, + 4,68,1206,8,68,11,68,12,68,1207,1,69,1,69,1,70,1,70,1,70,1,71,4, + 71,1216,8,71,11,71,12,71,1217,1,72,1,72,1,73,1,73,1,73,1,74,4,74, + 1226,8,74,11,74,12,74,1227,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1, + 76,1,77,4,77,1239,8,77,11,77,12,77,1240,1,78,1,78,1,78,1,78,1,78, + 3,78,1248,8,78,1,79,4,79,1251,8,79,11,79,12,79,1252,1,80,1,80,1, + 80,1,81,1,81,3,81,1260,8,81,1,81,1,81,1,81,1,81,1,81,3,81,1267,8, + 81,1,81,1,81,1,81,1,81,1,81,5,81,1274,8,81,10,81,12,81,1277,9,81, + 1,82,1,82,3,82,1281,8,82,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84, + 1,84,1,84,1,84,1,84,1,84,3,84,1296,8,84,1,85,1,85,1,86,1,86,1,86, + 1,86,1,86,3,86,1305,8,86,1,86,1,86,1,86,3,86,1310,8,86,1,87,1,87, + 1,87,1,87,1,87,1,87,1,87,5,87,1319,8,87,10,87,12,87,1322,9,87,1, + 88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1, + 88,1,88,1,88,1,88,1,88,1,88,3,88,1343,8,88,1,89,1,89,1,89,5,89,1348, + 8,89,10,89,12,89,1351,9,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1, + 90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1, + 90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1, + 90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,3,90,1396,8,90,1, + 91,1,91,1,92,1,92,1,92,1,92,3,92,1404,8,92,1,93,1,93,1,93,1,93,1, + 93,1,93,1,93,1,93,1,93,3,93,1415,8,93,1,93,1,93,1,93,5,93,1420,8, + 93,10,93,12,93,1423,9,93,1,94,1,94,1,94,1,94,3,94,1429,8,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,1,95, + 1,95,3,95,1446,8,95,1,96,1,96,1,96,1,96,1,97,1,97,1,97,3,97,1455, + 8,97,1,97,3,97,1458,8,97,1,98,1,98,1,98,1,98,1,98,3,98,1465,8,98, + 1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99,1476,8,99,1,100, + 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,3,100,1491,8,100,1,101,1,101,1,101,1,101,1,101,5,101,1498, + 8,101,10,101,12,101,1501,9,101,1,102,1,102,3,102,1505,8,102,1,103, + 1,103,1,103,1,103,1,104,1,104,1,104,5,104,1514,8,104,10,104,12,104, + 1517,9,104,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 3,106,1528,8,106,1,107,1,107,3,107,1532,8,107,1,107,1,107,1,108, + 1,108,1,108,1,108,3,108,1540,8,108,3,108,1542,8,108,1,109,1,109, + 1,110,3,110,1547,8,110,1,110,3,110,1550,8,110,1,110,1,110,1,110, + 1,110,1,110,3,110,1557,8,110,1,111,1,111,3,111,1561,8,111,1,111, + 1,111,1,112,1,112,3,112,1567,8,112,1,112,1,112,1,113,1,113,1,113, + 5,113,1574,8,113,10,113,12,113,1577,9,113,1,114,1,114,1,115,1,115, + 1,115,1,115,1,115,5,115,1586,8,115,10,115,12,115,1589,9,115,1,116, + 1,116,1,116,1,116,3,116,1595,8,116,3,116,1597,8,116,1,117,1,117, + 1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118, + 1611,8,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119, + 1,119,3,119,1623,8,119,1,120,1,120,1,120,1,120,1,120,5,120,1630, + 8,120,10,120,12,120,1633,9,120,1,121,1,121,3,121,1637,8,121,1,122, + 1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,1,123,3,123,1654,8,123,1,124,1,124,1,124,5,124,1659, + 8,124,10,124,12,124,1662,9,124,1,125,1,125,1,125,1,125,1,125,1,125, + 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125, + 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125, + 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125, + 1,125,1,125,1,125,1,125,3,125,1707,8,125,1,126,1,126,1,127,1,127, + 1,127,5,127,1714,8,127,10,127,12,127,1717,9,127,1,128,1,128,1,128, + 1,128,1,128,1,128,3,128,1725,8,128,1,129,1,129,3,129,1729,8,129, + 1,130,1,130,1,130,5,130,1734,8,130,10,130,12,130,1737,9,130,1,131, + 1,131,1,131,1,131,1,131,3,131,1744,8,131,1,132,1,132,1,133,1,133, + 1,134,1,134,1,134,5,134,1753,8,134,10,134,12,134,1756,9,134,1,135, + 1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136, + 1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136, + 1,136,1,136,1,136,1,136,3,136,1785,8,136,1,137,1,137,1,137,1,137, + 1,137,1,137,1,137,1,137,1,137,1,137,3,137,1797,8,137,1,138,1,138, + 1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139, + 1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139, + 1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139, + 1,139,3,139,1835,8,139,1,140,1,140,1,140,1,140,1,140,1,140,3,140, + 1843,8,140,1,141,1,141,1,141,1,141,1,141,3,141,1850,8,141,1,142, + 1,142,3,142,1854,8,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142, + 1,142,1,142,1,142,1,142,1,142,1,142,3,142,1869,8,142,1,143,1,143, + 1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,146,1,146, + 1,147,1,147,3,147,1886,8,147,1,148,1,148,1,148,1,149,1,149,1,150, + 1,150,1,151,1,151,1,151,3,151,1898,8,151,1,151,1,151,1,151,1,151, + 5,151,1904,8,151,10,151,12,151,1907,9,151,1,152,1,152,3,152,1911, + 8,152,1,153,1,153,1,154,1,154,3,154,1917,8,154,1,155,1,155,1,155, + 1,155,1,156,1,156,1,157,1,157,3,157,1927,8,157,1,157,1,157,1,157, + 1,157,1,157,1,157,1,157,1,157,3,157,1937,8,157,1,157,1,157,1,157, + 1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157, + 3,157,1953,8,157,1,158,4,158,1956,8,158,11,158,12,158,1957,1,159, + 1,159,3,159,1962,8,159,1,160,1,160,1,160,1,160,1,160,3,160,1969, + 8,160,1,161,1,161,1,161,1,161,1,161,1,161,3,161,1977,8,161,1,162, + 1,162,1,162,1,162,1,162,1,162,5,162,1985,8,162,10,162,12,162,1988, + 9,162,1,163,1,163,1,164,1,164,1,164,3,164,1995,8,164,1,165,1,165, + 1,165,1,165,1,165,5,165,2002,8,165,10,165,12,165,2005,9,165,1,166, + 1,166,1,166,1,166,1,166,1,167,1,167,1,168,1,168,1,168,1,168,1,168, + 1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168, + 1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168, + 1,168,1,168,1,168,3,168,2044,8,168,1,169,1,169,1,169,1,169,3,169, + 2050,8,169,1,170,1,170,3,170,2054,8,170,1,170,1,170,1,170,3,170, + 2059,8,170,3,170,2061,8,170,1,171,1,171,1,171,1,171,1,171,5,171, + 2068,8,171,10,171,12,171,2071,9,171,1,172,1,172,3,172,2075,8,172, + 1,173,1,173,1,173,1,173,1,173,1,173,3,173,2083,8,173,1,174,1,174, + 1,174,1,174,1,174,3,174,2090,8,174,1,175,4,175,2093,8,175,11,175, + 12,175,2094,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176, + 1,176,3,176,2107,8,176,1,177,1,177,1,177,5,177,2112,8,177,10,177, + 12,177,2115,9,177,1,177,3,177,2118,8,177,1,177,1,177,1,178,1,178, + 1,178,1,178,1,178,1,178,1,179,5,179,2129,8,179,10,179,12,179,2132, + 9,179,1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,181, + 1,181,1,181,1,181,1,181,1,181,1,181,3,181,2150,8,181,1,182,1,182, + 1,182,1,183,1,183,1,184,1,184,1,184,3,184,2160,8,184,1,185,1,185, + 3,185,2164,8,185,1,186,3,186,2167,8,186,1,186,1,186,3,186,2171,8, + 186,1,186,5,186,2174,8,186,10,186,12,186,2177,9,186,1,186,1,186, + 1,187,1,187,3,187,2183,8,187,1,187,1,187,1,187,3,187,2188,8,187, + 3,187,2190,8,187,1,188,1,188,1,189,1,189,1,189,1,190,1,190,1,190, + 1,190,5,190,2201,8,190,10,190,12,190,2204,9,190,1,190,1,190,1,190, + 1,191,1,191,1,192,1,192,1,193,1,193,1,194,1,194,1,194,1,194,1,194, + 3,194,2220,8,194,1,195,1,195,1,195,1,195,1,196,1,196,1,196,3,196, + 2229,8,196,1,196,5,196,2232,8,196,10,196,12,196,2235,9,196,1,197, + 1,197,1,197,1,198,1,198,1,198,5,198,2243,8,198,10,198,12,198,2246, + 9,198,1,198,1,198,1,199,1,199,1,199,5,199,2253,8,199,10,199,12,199, + 2256,9,199,1,199,1,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200, + 1,200,1,200,3,200,2269,8,200,1,201,1,201,3,201,2273,8,201,1,202, + 1,202,3,202,2277,8,202,1,202,3,202,2280,8,202,1,203,1,203,1,203, + 1,203,1,204,4,204,2287,8,204,11,204,12,204,2288,1,205,1,205,1,206, + 1,206,3,206,2295,8,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207, + 1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207, + 1,207,1,207,1,207,1,207,1,207,1,207,1,207,3,207,2322,8,207,1,208, + 4,208,2325,8,208,11,208,12,208,2326,1,209,1,209,1,209,3,209,2332, + 8,209,1,210,1,210,1,210,1,210,1,210,1,210,5,210,2340,8,210,10,210, + 12,210,2343,9,210,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211, + 3,211,2353,8,211,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212, + 1,212,1,212,3,212,2365,8,212,1,213,1,213,1,214,3,214,2370,8,214, + 1,214,1,214,1,215,1,215,1,215,1,215,1,215,1,215,3,215,2380,8,215, + 1,215,1,215,1,215,1,215,1,215,3,215,2387,8,215,1,216,1,216,1,217, + 1,217,1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,3,218,2423, + 8,218,1,219,1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220, + 1,220,3,220,2436,8,220,1,220,1,220,1,220,1,220,1,220,3,220,2443, + 8,220,1,221,1,221,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223, + 5,223,2455,8,223,10,223,12,223,2458,9,223,1,224,1,224,3,224,2462, + 8,224,1,225,1,225,1,225,3,225,2467,8,225,1,225,1,225,1,225,1,225, + 1,225,5,225,2474,8,225,10,225,12,225,2477,9,225,1,226,1,226,3,226, + 2481,8,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 1,227,1,227,1,227,1,227,1,227,3,227,2497,8,227,1,228,1,228,1,228, + 5,228,2502,8,228,10,228,12,228,2505,9,228,1,229,1,229,3,229,2509, + 8,229,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230, + 1,230,1,230,1,230,1,230,3,230,2525,8,230,1,231,1,231,1,231,5,231, + 2530,8,231,10,231,12,231,2533,9,231,1,232,1,232,1,232,1,232,3,232, + 2539,8,232,1,233,1,233,1,233,1,233,1,233,5,233,2546,8,233,10,233, + 12,233,2549,9,233,1,234,1,234,1,234,1,234,1,235,1,235,3,235,2557, + 8,235,1,236,1,236,1,236,1,236,1,236,3,236,2564,8,236,1,237,1,237, + 1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237, + 1,237,3,237,2580,8,237,1,237,1,237,1,237,5,237,2585,8,237,10,237, + 12,237,2588,9,237,1,238,1,238,1,238,1,239,1,239,3,239,2595,8,239, + 1,239,1,239,1,239,1,239,1,240,1,240,1,240,5,240,2604,8,240,10,240, + 12,240,2607,9,240,1,241,1,241,1,242,1,242,3,242,2613,8,242,1,243, + 1,243,1,243,1,243,1,243,1,243,1,243,3,243,2622,8,243,1,244,1,244, + 1,244,3,244,2627,8,244,1,244,1,244,1,244,3,244,2632,8,244,3,244, + 2634,8,244,1,245,1,245,1,245,1,246,1,246,1,246,1,246,1,246,1,246, + 1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246, + 3,246,2656,8,246,1,247,1,247,1,247,1,247,1,248,1,248,1,248,5,248, + 2665,8,248,10,248,12,248,2668,9,248,1,249,1,249,3,249,2672,8,249, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,3,250,2683, + 8,250,1,250,1,250,1,251,1,251,1,251,1,251,1,251,3,251,2692,8,251, + 1,252,1,252,1,252,1,252,1,252,1,252,1,252,3,252,2701,8,252,1,253, + 1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,3,253,2713, + 8,253,1,253,1,253,1,253,5,253,2718,8,253,10,253,12,253,2721,9,253, + 1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254, + 1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254, + 1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,3,254,2753,8,254, + 1,255,1,255,1,255,1,255,1,255,1,255,1,255,3,255,2762,8,255,1,256, + 1,256,3,256,2766,8,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257, + 1,257,1,257,1,257,3,257,2778,8,257,1,257,1,257,1,257,1,257,1,257, + 1,257,5,257,2786,8,257,10,257,12,257,2789,9,257,1,258,1,258,1,258, + 1,258,1,258,1,258,1,258,1,258,1,258,3,258,2800,8,258,1,258,1,258, + 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,3,258,2813, + 8,258,1,258,1,258,3,258,2817,8,258,1,259,1,259,1,259,3,259,2822, + 8,259,1,260,1,260,3,260,2826,8,260,1,261,1,261,1,261,1,261,1,261, + 1,262,3,262,2834,8,262,1,262,3,262,2837,8,262,1,262,1,262,5,262, + 2841,8,262,10,262,12,262,2844,9,262,1,263,1,263,1,263,1,263,1,263, + 1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263, + 1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263, + 1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263,1,263, + 1,263,3,263,2885,8,263,1,264,1,264,1,264,1,264,1,264,1,264,1,264, + 1,264,1,264,1,264,1,264,1,264,1,264,3,264,2900,8,264,1,265,3,265, + 2903,8,265,1,265,3,265,2906,8,265,1,265,1,265,5,265,2910,8,265,10, + 265,12,265,2913,9,265,1,266,1,266,1,266,1,266,1,266,1,266,1,266, + 1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266, + 1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266, + 1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266, + 1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266, + 1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266, + 1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,266, + 1,266,1,266,3,266,2990,8,266,1,267,1,267,1,267,3,267,2995,8,267, + 1,267,1,267,1,267,1,267,3,267,3001,8,267,1,267,1,267,1,267,1,267, + 1,267,1,267,1,267,1,267,3,267,3011,8,267,1,267,1,267,1,267,1,267, + 1,267,3,267,3018,8,267,1,268,1,268,1,268,1,269,1,269,1,269,3,269, + 3026,8,269,1,269,1,269,1,270,1,270,1,270,1,270,1,270,3,270,3035, + 8,270,1,270,1,270,1,271,1,271,1,271,5,271,3042,8,271,10,271,12,271, + 3045,9,271,1,272,1,272,1,272,3,272,3050,8,272,1,272,1,272,1,272, + 1,272,3,272,3056,8,272,1,272,1,272,1,272,1,272,3,272,3062,8,272, + 1,273,1,273,1,274,1,274,1,274,1,274,1,274,1,275,3,275,3072,8,275, + 1,275,3,275,3075,8,275,1,275,1,275,5,275,3079,8,275,10,275,12,275, + 3082,9,275,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, + 1,276,1,276,3,276,3095,8,276,1,277,1,277,5,277,3099,8,277,10,277, + 12,277,3102,9,277,1,278,1,278,1,278,1,278,1,278,3,278,3109,8,278, + 1,279,1,279,1,279,3,279,3114,8,279,1,280,1,280,1,280,1,280,1,280, + 1,280,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,3,281,3130, + 8,281,1,282,1,282,1,283,3,283,3135,8,283,1,283,1,283,5,283,3139, + 8,283,10,283,12,283,3142,9,283,1,284,1,284,1,284,1,284,1,284,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,3,284,3158,8,284, + 1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,286, + 1,286,1,287,1,287,1,288,3,288,3175,8,288,1,288,1,288,3,288,3179, + 8,288,1,288,3,288,3182,8,288,1,288,1,288,1,288,1,288,3,288,3188, + 8,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288, + 1,288,1,288,1,288,1,288,3,288,3204,8,288,1,289,1,289,1,289,5,289, + 3209,8,289,10,289,12,289,3212,9,289,1,289,1,289,1,290,1,290,3,290, + 3218,8,290,1,290,3,290,3221,8,290,1,290,1,290,3,290,3225,8,290,1, + 290,3,290,3228,8,290,1,290,1,290,1,290,1,290,1,290,1,290,3,290,3236, + 8,290,1,290,1,290,3,290,3240,8,290,1,291,1,291,1,291,1,292,1,292, + 1,292,1,292,1,292,1,293,1,293,1,293,1,293,1,293,1,293,1,293,3,293, + 3257,8,293,1,294,1,294,3,294,3261,8,294,1,295,3,295,3264,8,295,1, + 295,4,295,3267,8,295,11,295,12,295,3268,1,296,1,296,3,296,3273,8, + 296,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,3,297, + 3284,8,297,1,298,1,298,3,298,3288,8,298,1,299,1,299,1,299,1,299, + 3,299,3294,8,299,1,299,1,299,1,299,5,299,3299,8,299,10,299,12,299, + 3302,9,299,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300, + 1,300,1,300,5,300,3315,8,300,10,300,12,300,3318,9,300,1,301,1,301, + 1,301,1,301,1,301,3,301,3325,8,301,1,302,1,302,1,302,1,302,1,302, + 1,302,1,302,1,302,3,302,3335,8,302,1,303,1,303,1,303,1,303,1,303, + 1,303,1,303,1,303,1,303,3,303,3346,8,303,1,304,1,304,1,305,1,305, + 3,305,3352,8,305,1,305,1,305,1,305,1,305,1,305,1,305,3,305,3360, + 8,305,1,306,1,306,1,306,1,307,1,307,1,307,1,307,3,307,3369,8,307, + 1,308,1,308,1,308,5,308,3374,8,308,10,308,12,308,3377,9,308,1,309, + 1,309,1,309,1,309,1,309,1,309,1,309,1,309,3,309,3387,8,309,1,310, + 3,310,3390,8,310,1,310,1,310,5,310,3394,8,310,10,310,12,310,3397, + 9,310,1,311,1,311,1,311,1,311,1,312,1,312,1,312,1,312,1,312,1,312, + 1,312,5,312,3410,8,312,10,312,12,312,3413,9,312,1,313,1,313,1,314, + 1,314,1,314,5,314,3420,8,314,10,314,12,314,3423,9,314,1,315,1,315, + 1,315,5,315,3428,8,315,10,315,12,315,3431,9,315,1,316,1,316,1,316, + 5,316,3436,8,316,10,316,12,316,3439,9,316,1,317,3,317,3442,8,317, + 1,317,1,317,1,318,1,318,1,319,1,319,1,319,1,319,5,319,3452,8,319, + 10,319,12,319,3455,9,319,1,320,1,320,1,320,3,320,3460,8,320,1,320, + 1,320,3,320,3464,8,320,1,320,5,320,3467,8,320,10,320,12,320,3470, + 9,320,1,321,3,321,3473,8,321,1,321,1,321,1,321,5,321,3478,8,321, + 10,321,12,321,3481,9,321,1,322,1,322,1,323,1,323,1,323,5,323,3488, + 8,323,10,323,12,323,3491,9,323,1,324,1,324,1,324,5,324,3496,8,324, + 10,324,12,324,3499,9,324,1,325,1,325,1,325,1,325,3,325,3505,8,325, + 1,326,1,326,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327, + 1,327,3,327,3519,8,327,1,328,1,328,1,328,1,328,1,329,1,329,3,329, + 3527,8,329,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330,1,330, + 1,330,3,330,3539,8,330,1,330,1,330,1,330,1,330,1,330,1,330,5,330, + 3547,8,330,10,330,12,330,3550,9,330,1,331,1,331,1,331,1,331,1,331, + 1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331, + 1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331, + 1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331,1,331, + 1,331,1,331,1,331,1,331,1,331,1,331,3,331,3596,8,331,1,332,1,332, + 1,332,1,332,1,332,1,332,1,332,1,332,3,332,3606,8,332,1,333,1,333, + 1,333,1,333,1,333,1,333,3,333,3614,8,333,1,333,1,333,1,333,5,333, + 3619,8,333,10,333,12,333,3622,9,333,1,334,1,334,1,334,1,334,1,335, + 1,335,5,335,3630,8,335,10,335,12,335,3633,9,335,1,336,1,336,1,336, + 3,336,3638,8,336,1,337,1,337,1,337,1,337,1,338,1,338,1,338,5,338, + 3647,8,338,10,338,12,338,3650,9,338,1,339,1,339,3,339,3654,8,339, + 1,339,3,339,3657,8,339,1,340,1,340,3,340,3661,8,340,1,340,1,340, + 1,340,1,340,1,340,1,340,1,340,3,340,3670,8,340,1,341,1,341,1,341, + 1,341,1,341,1,341,1,341,1,341,1,341,3,341,3681,8,341,1,342,1,342, + 3,342,3685,8,342,1,343,1,343,1,343,1,343,1,343,1,343,1,343,1,343, + 3,343,3695,8,343,1,344,1,344,1,344,1,344,1,344,1,345,3,345,3703, + 8,345,1,345,1,345,1,345,3,345,3708,8,345,1,346,1,346,1,347,1,347, + 1,347,1,347,1,347,1,347,1,347,0,25,12,42,50,94,162,174,186,202,230, + 240,302,324,330,342,420,450,466,474,506,514,598,600,624,660,666, + 348,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,490,492,494,496,498,500,502,504,506, + 508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538, + 540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570, + 572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602, + 604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634, + 636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666, + 668,670,672,674,676,678,680,682,684,686,688,690,692,694,0,12,1,0, + 19,21,1,0,131,132,1,0,143,148,1,0,139,140,1,0,38,39,1,0,174,176, + 2,0,177,177,186,186,2,0,133,133,192,192,2,0,28,28,143,148,3,0,34, + 34,84,84,188,188,1,0,149,150,2,0,178,178,186,186,3922,0,696,1,0, + 0,0,2,699,1,0,0,0,4,708,1,0,0,0,6,711,1,0,0,0,8,715,1,0,0,0,10,725, + 1,0,0,0,12,735,1,0,0,0,14,746,1,0,0,0,16,755,1,0,0,0,18,774,1,0, + 0,0,20,776,1,0,0,0,22,790,1,0,0,0,24,792,1,0,0,0,26,800,1,0,0,0, + 28,804,1,0,0,0,30,806,1,0,0,0,32,812,1,0,0,0,34,816,1,0,0,0,36,826, + 1,0,0,0,38,835,1,0,0,0,40,846,1,0,0,0,42,848,1,0,0,0,44,858,1,0, + 0,0,46,881,1,0,0,0,48,883,1,0,0,0,50,896,1,0,0,0,52,928,1,0,0,0, + 54,939,1,0,0,0,56,949,1,0,0,0,58,958,1,0,0,0,60,970,1,0,0,0,62,972, + 1,0,0,0,64,985,1,0,0,0,66,987,1,0,0,0,68,997,1,0,0,0,70,1003,1,0, + 0,0,72,1019,1,0,0,0,74,1021,1,0,0,0,76,1027,1,0,0,0,78,1041,1,0, + 0,0,80,1043,1,0,0,0,82,1049,1,0,0,0,84,1063,1,0,0,0,86,1065,1,0, + 0,0,88,1071,1,0,0,0,90,1079,1,0,0,0,92,1081,1,0,0,0,94,1084,1,0, + 0,0,96,1111,1,0,0,0,98,1113,1,0,0,0,100,1115,1,0,0,0,102,1124,1, + 0,0,0,104,1128,1,0,0,0,106,1130,1,0,0,0,108,1132,1,0,0,0,110,1134, + 1,0,0,0,112,1140,1,0,0,0,114,1154,1,0,0,0,116,1156,1,0,0,0,118,1164, + 1,0,0,0,120,1166,1,0,0,0,122,1176,1,0,0,0,124,1178,1,0,0,0,126,1186, + 1,0,0,0,128,1189,1,0,0,0,130,1195,1,0,0,0,132,1197,1,0,0,0,134,1201, + 1,0,0,0,136,1205,1,0,0,0,138,1209,1,0,0,0,140,1211,1,0,0,0,142,1215, + 1,0,0,0,144,1219,1,0,0,0,146,1221,1,0,0,0,148,1225,1,0,0,0,150,1229, + 1,0,0,0,152,1235,1,0,0,0,154,1238,1,0,0,0,156,1247,1,0,0,0,158,1250, + 1,0,0,0,160,1254,1,0,0,0,162,1257,1,0,0,0,164,1280,1,0,0,0,166,1282, + 1,0,0,0,168,1295,1,0,0,0,170,1297,1,0,0,0,172,1309,1,0,0,0,174,1311, + 1,0,0,0,176,1342,1,0,0,0,178,1344,1,0,0,0,180,1395,1,0,0,0,182,1397, + 1,0,0,0,184,1403,1,0,0,0,186,1414,1,0,0,0,188,1428,1,0,0,0,190,1445, + 1,0,0,0,192,1447,1,0,0,0,194,1454,1,0,0,0,196,1464,1,0,0,0,198,1475, + 1,0,0,0,200,1490,1,0,0,0,202,1492,1,0,0,0,204,1504,1,0,0,0,206,1506, + 1,0,0,0,208,1510,1,0,0,0,210,1518,1,0,0,0,212,1527,1,0,0,0,214,1529, + 1,0,0,0,216,1541,1,0,0,0,218,1543,1,0,0,0,220,1556,1,0,0,0,222,1558, + 1,0,0,0,224,1564,1,0,0,0,226,1570,1,0,0,0,228,1578,1,0,0,0,230,1580, + 1,0,0,0,232,1596,1,0,0,0,234,1598,1,0,0,0,236,1610,1,0,0,0,238,1622, + 1,0,0,0,240,1624,1,0,0,0,242,1636,1,0,0,0,244,1638,1,0,0,0,246,1653, + 1,0,0,0,248,1655,1,0,0,0,250,1706,1,0,0,0,252,1708,1,0,0,0,254,1710, + 1,0,0,0,256,1724,1,0,0,0,258,1728,1,0,0,0,260,1730,1,0,0,0,262,1743, + 1,0,0,0,264,1745,1,0,0,0,266,1747,1,0,0,0,268,1749,1,0,0,0,270,1757, + 1,0,0,0,272,1784,1,0,0,0,274,1796,1,0,0,0,276,1798,1,0,0,0,278,1834, + 1,0,0,0,280,1842,1,0,0,0,282,1849,1,0,0,0,284,1868,1,0,0,0,286,1870, + 1,0,0,0,288,1872,1,0,0,0,290,1877,1,0,0,0,292,1881,1,0,0,0,294,1885, + 1,0,0,0,296,1887,1,0,0,0,298,1890,1,0,0,0,300,1892,1,0,0,0,302,1897, + 1,0,0,0,304,1910,1,0,0,0,306,1912,1,0,0,0,308,1916,1,0,0,0,310,1918, + 1,0,0,0,312,1922,1,0,0,0,314,1952,1,0,0,0,316,1955,1,0,0,0,318,1961, + 1,0,0,0,320,1968,1,0,0,0,322,1976,1,0,0,0,324,1978,1,0,0,0,326,1989, + 1,0,0,0,328,1994,1,0,0,0,330,1996,1,0,0,0,332,2006,1,0,0,0,334,2011, + 1,0,0,0,336,2043,1,0,0,0,338,2049,1,0,0,0,340,2060,1,0,0,0,342,2062, + 1,0,0,0,344,2074,1,0,0,0,346,2082,1,0,0,0,348,2089,1,0,0,0,350,2092, + 1,0,0,0,352,2106,1,0,0,0,354,2108,1,0,0,0,356,2121,1,0,0,0,358,2130, + 1,0,0,0,360,2133,1,0,0,0,362,2149,1,0,0,0,364,2151,1,0,0,0,366,2154, + 1,0,0,0,368,2159,1,0,0,0,370,2163,1,0,0,0,372,2166,1,0,0,0,374,2189, + 1,0,0,0,376,2191,1,0,0,0,378,2193,1,0,0,0,380,2196,1,0,0,0,382,2208, + 1,0,0,0,384,2210,1,0,0,0,386,2212,1,0,0,0,388,2219,1,0,0,0,390,2221, + 1,0,0,0,392,2225,1,0,0,0,394,2236,1,0,0,0,396,2239,1,0,0,0,398,2249, + 1,0,0,0,400,2268,1,0,0,0,402,2272,1,0,0,0,404,2274,1,0,0,0,406,2281, + 1,0,0,0,408,2286,1,0,0,0,410,2290,1,0,0,0,412,2292,1,0,0,0,414,2321, + 1,0,0,0,416,2324,1,0,0,0,418,2331,1,0,0,0,420,2333,1,0,0,0,422,2352, + 1,0,0,0,424,2364,1,0,0,0,426,2366,1,0,0,0,428,2369,1,0,0,0,430,2386, + 1,0,0,0,432,2388,1,0,0,0,434,2390,1,0,0,0,436,2422,1,0,0,0,438,2424, + 1,0,0,0,440,2442,1,0,0,0,442,2444,1,0,0,0,444,2446,1,0,0,0,446,2451, + 1,0,0,0,448,2461,1,0,0,0,450,2463,1,0,0,0,452,2478,1,0,0,0,454,2496, + 1,0,0,0,456,2498,1,0,0,0,458,2506,1,0,0,0,460,2524,1,0,0,0,462,2526, + 1,0,0,0,464,2538,1,0,0,0,466,2540,1,0,0,0,468,2550,1,0,0,0,470,2554, + 1,0,0,0,472,2558,1,0,0,0,474,2579,1,0,0,0,476,2589,1,0,0,0,478,2592, + 1,0,0,0,480,2600,1,0,0,0,482,2608,1,0,0,0,484,2610,1,0,0,0,486,2621, + 1,0,0,0,488,2633,1,0,0,0,490,2635,1,0,0,0,492,2655,1,0,0,0,494,2657, + 1,0,0,0,496,2661,1,0,0,0,498,2671,1,0,0,0,500,2673,1,0,0,0,502,2691, + 1,0,0,0,504,2700,1,0,0,0,506,2712,1,0,0,0,508,2752,1,0,0,0,510,2761, + 1,0,0,0,512,2765,1,0,0,0,514,2777,1,0,0,0,516,2816,1,0,0,0,518,2821, + 1,0,0,0,520,2823,1,0,0,0,522,2827,1,0,0,0,524,2833,1,0,0,0,526,2884, + 1,0,0,0,528,2899,1,0,0,0,530,2902,1,0,0,0,532,2989,1,0,0,0,534,3017, + 1,0,0,0,536,3019,1,0,0,0,538,3025,1,0,0,0,540,3029,1,0,0,0,542,3038, + 1,0,0,0,544,3061,1,0,0,0,546,3063,1,0,0,0,548,3065,1,0,0,0,550,3071, + 1,0,0,0,552,3094,1,0,0,0,554,3096,1,0,0,0,556,3108,1,0,0,0,558,3113, + 1,0,0,0,560,3115,1,0,0,0,562,3129,1,0,0,0,564,3131,1,0,0,0,566,3134, + 1,0,0,0,568,3157,1,0,0,0,570,3159,1,0,0,0,572,3169,1,0,0,0,574,3171, + 1,0,0,0,576,3203,1,0,0,0,578,3205,1,0,0,0,580,3239,1,0,0,0,582,3241, + 1,0,0,0,584,3244,1,0,0,0,586,3256,1,0,0,0,588,3260,1,0,0,0,590,3263, + 1,0,0,0,592,3270,1,0,0,0,594,3283,1,0,0,0,596,3287,1,0,0,0,598,3293, + 1,0,0,0,600,3303,1,0,0,0,602,3324,1,0,0,0,604,3334,1,0,0,0,606,3345, + 1,0,0,0,608,3347,1,0,0,0,610,3359,1,0,0,0,612,3361,1,0,0,0,614,3368, + 1,0,0,0,616,3370,1,0,0,0,618,3386,1,0,0,0,620,3389,1,0,0,0,622,3398, + 1,0,0,0,624,3402,1,0,0,0,626,3414,1,0,0,0,628,3416,1,0,0,0,630,3424, + 1,0,0,0,632,3432,1,0,0,0,634,3441,1,0,0,0,636,3445,1,0,0,0,638,3447, + 1,0,0,0,640,3456,1,0,0,0,642,3472,1,0,0,0,644,3482,1,0,0,0,646,3484, + 1,0,0,0,648,3492,1,0,0,0,650,3504,1,0,0,0,652,3506,1,0,0,0,654,3518, + 1,0,0,0,656,3520,1,0,0,0,658,3526,1,0,0,0,660,3538,1,0,0,0,662,3595, + 1,0,0,0,664,3605,1,0,0,0,666,3613,1,0,0,0,668,3623,1,0,0,0,670,3627, + 1,0,0,0,672,3637,1,0,0,0,674,3639,1,0,0,0,676,3643,1,0,0,0,678,3656, + 1,0,0,0,680,3669,1,0,0,0,682,3680,1,0,0,0,684,3684,1,0,0,0,686,3694, + 1,0,0,0,688,3696,1,0,0,0,690,3707,1,0,0,0,692,3709,1,0,0,0,694,3711, + 1,0,0,0,696,697,3,2,1,0,697,1,1,0,0,0,698,700,3,4,2,0,699,698,1, + 0,0,0,700,701,1,0,0,0,701,699,1,0,0,0,701,702,1,0,0,0,702,3,1,0, + 0,0,703,709,3,6,3,0,704,709,3,310,155,0,705,709,3,606,303,0,706, + 709,3,38,19,0,707,709,3,58,29,0,708,703,1,0,0,0,708,704,1,0,0,0, + 708,705,1,0,0,0,708,706,1,0,0,0,708,707,1,0,0,0,709,5,1,0,0,0,710, + 712,3,8,4,0,711,710,1,0,0,0,711,712,1,0,0,0,712,713,1,0,0,0,713, + 714,3,10,5,0,714,7,1,0,0,0,715,716,5,5,0,0,716,717,5,188,0,0,717, + 9,1,0,0,0,718,720,3,316,158,0,719,718,1,0,0,0,719,720,1,0,0,0,720, + 721,1,0,0,0,721,726,3,36,18,0,722,723,3,12,6,0,723,724,3,36,18,0, + 724,726,1,0,0,0,725,719,1,0,0,0,725,722,1,0,0,0,726,11,1,0,0,0,727, + 728,6,6,-1,0,728,729,3,316,158,0,729,730,3,306,153,0,730,731,3,14, + 7,0,731,736,1,0,0,0,732,733,3,306,153,0,733,734,3,14,7,0,734,736, + 1,0,0,0,735,727,1,0,0,0,735,732,1,0,0,0,736,741,1,0,0,0,737,738, + 10,1,0,0,738,740,3,14,7,0,739,737,1,0,0,0,740,743,1,0,0,0,741,739, + 1,0,0,0,741,742,1,0,0,0,742,13,1,0,0,0,743,741,1,0,0,0,744,747,3, + 310,155,0,745,747,3,606,303,0,746,744,1,0,0,0,746,745,1,0,0,0,747, + 15,1,0,0,0,748,756,3,614,307,0,749,756,3,30,15,0,750,756,3,48,24, + 0,751,756,3,62,31,0,752,756,3,70,35,0,753,756,3,612,306,0,754,756, + 3,18,9,0,755,748,1,0,0,0,755,749,1,0,0,0,755,750,1,0,0,0,755,751, + 1,0,0,0,755,752,1,0,0,0,755,753,1,0,0,0,755,754,1,0,0,0,756,17,1, + 0,0,0,757,758,5,23,0,0,758,775,5,188,0,0,759,760,5,23,0,0,760,761, + 5,188,0,0,761,762,5,122,0,0,762,763,5,24,0,0,763,775,5,129,0,0,764, + 765,5,23,0,0,765,766,5,188,0,0,766,767,5,122,0,0,767,775,3,24,12, + 0,768,769,5,23,0,0,769,770,5,188,0,0,770,771,5,122,0,0,771,772,5, + 24,0,0,772,773,5,129,0,0,773,775,3,20,10,0,774,757,1,0,0,0,774,759, + 1,0,0,0,774,764,1,0,0,0,774,768,1,0,0,0,775,19,1,0,0,0,776,781,3, + 22,11,0,777,778,5,122,0,0,778,780,3,22,11,0,779,777,1,0,0,0,780, + 783,1,0,0,0,781,779,1,0,0,0,781,782,1,0,0,0,782,21,1,0,0,0,783,781, + 1,0,0,0,784,791,3,198,99,0,785,786,3,300,150,0,786,787,5,25,0,0, + 787,788,3,28,14,0,788,791,1,0,0,0,789,791,3,28,14,0,790,784,1,0, + 0,0,790,785,1,0,0,0,790,789,1,0,0,0,791,23,1,0,0,0,792,797,3,26, + 13,0,793,794,5,122,0,0,794,796,3,26,13,0,795,793,1,0,0,0,796,799, + 1,0,0,0,797,795,1,0,0,0,797,798,1,0,0,0,798,25,1,0,0,0,799,797,1, + 0,0,0,800,801,3,300,150,0,801,802,5,25,0,0,802,803,3,28,14,0,803, + 27,1,0,0,0,804,805,3,300,150,0,805,29,1,0,0,0,806,807,5,44,0,0,807, + 808,5,123,0,0,808,809,3,32,16,0,809,810,5,128,0,0,810,31,1,0,0,0, + 811,813,3,34,17,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,33,1,0,0,0,816,817,5,188,0,0,817,818,5,130, + 0,0,818,819,3,624,312,0,819,35,1,0,0,0,820,827,5,12,0,0,821,822, + 5,12,0,0,822,824,5,5,0,0,823,825,5,188,0,0,824,823,1,0,0,0,824,825, + 1,0,0,0,825,827,1,0,0,0,826,820,1,0,0,0,826,821,1,0,0,0,827,37,1, + 0,0,0,828,829,3,40,20,0,829,830,3,42,21,0,830,831,3,46,23,0,831, + 836,1,0,0,0,832,833,3,40,20,0,833,834,3,46,23,0,834,836,1,0,0,0, + 835,828,1,0,0,0,835,832,1,0,0,0,836,39,1,0,0,0,837,839,5,36,0,0, + 838,840,5,188,0,0,839,838,1,0,0,0,839,840,1,0,0,0,840,847,1,0,0, + 0,841,842,5,8,0,0,842,844,5,48,0,0,843,845,5,188,0,0,844,843,1,0, + 0,0,844,845,1,0,0,0,845,847,1,0,0,0,846,837,1,0,0,0,846,841,1,0, + 0,0,847,41,1,0,0,0,848,849,6,21,-1,0,849,850,3,44,22,0,850,855,1, + 0,0,0,851,852,10,1,0,0,852,854,3,44,22,0,853,851,1,0,0,0,854,857, + 1,0,0,0,855,853,1,0,0,0,855,856,1,0,0,0,856,43,1,0,0,0,857,855,1, + 0,0,0,858,859,3,16,8,0,859,45,1,0,0,0,860,862,5,115,0,0,861,863, + 5,188,0,0,862,861,1,0,0,0,862,863,1,0,0,0,863,882,1,0,0,0,864,865, + 5,12,0,0,865,867,5,36,0,0,866,868,5,188,0,0,867,866,1,0,0,0,867, + 868,1,0,0,0,868,882,1,0,0,0,869,870,5,116,0,0,870,872,5,48,0,0,871, + 873,5,188,0,0,872,871,1,0,0,0,872,873,1,0,0,0,873,882,1,0,0,0,874, + 875,5,12,0,0,875,876,5,8,0,0,876,878,5,48,0,0,877,879,5,188,0,0, + 878,877,1,0,0,0,878,879,1,0,0,0,879,882,1,0,0,0,880,882,5,12,0,0, + 881,860,1,0,0,0,881,864,1,0,0,0,881,869,1,0,0,0,881,874,1,0,0,0, + 881,880,1,0,0,0,882,47,1,0,0,0,883,884,5,186,0,0,884,885,5,88,0, + 0,885,887,5,123,0,0,886,888,3,50,25,0,887,886,1,0,0,0,887,888,1, + 0,0,0,888,889,1,0,0,0,889,890,5,128,0,0,890,49,1,0,0,0,891,892,6, + 25,-1,0,892,897,3,52,26,0,893,897,5,134,0,0,894,895,5,134,0,0,895, + 897,3,52,26,0,896,891,1,0,0,0,896,893,1,0,0,0,896,894,1,0,0,0,897, + 915,1,0,0,0,898,899,10,5,0,0,899,914,5,134,0,0,900,901,10,4,0,0, + 901,902,5,134,0,0,902,914,3,52,26,0,903,904,10,3,0,0,904,905,5,122, + 0,0,905,914,3,52,26,0,906,907,10,2,0,0,907,908,5,122,0,0,908,914, + 5,134,0,0,909,910,10,1,0,0,910,911,5,122,0,0,911,912,5,134,0,0,912, + 914,3,52,26,0,913,898,1,0,0,0,913,900,1,0,0,0,913,903,1,0,0,0,913, + 906,1,0,0,0,913,909,1,0,0,0,914,917,1,0,0,0,915,913,1,0,0,0,915, + 916,1,0,0,0,916,51,1,0,0,0,917,915,1,0,0,0,918,929,3,54,27,0,919, + 920,5,186,0,0,920,929,3,54,27,0,921,929,5,151,0,0,922,929,5,152, + 0,0,923,924,5,152,0,0,924,929,3,54,27,0,925,926,5,152,0,0,926,927, + 5,186,0,0,927,929,3,54,27,0,928,918,1,0,0,0,928,919,1,0,0,0,928, + 921,1,0,0,0,928,922,1,0,0,0,928,923,1,0,0,0,928,925,1,0,0,0,929, + 53,1,0,0,0,930,940,5,153,0,0,931,940,3,56,28,0,932,940,5,177,0,0, + 933,940,5,155,0,0,934,940,5,188,0,0,935,936,5,123,0,0,936,937,3, + 50,25,0,937,938,5,128,0,0,938,940,1,0,0,0,939,930,1,0,0,0,939,931, + 1,0,0,0,939,932,1,0,0,0,939,933,1,0,0,0,939,934,1,0,0,0,939,935, + 1,0,0,0,940,55,1,0,0,0,941,942,5,178,0,0,942,943,5,184,0,0,943,944, + 5,178,0,0,944,950,5,185,0,0,945,946,5,188,0,0,946,947,5,184,0,0, + 947,948,5,178,0,0,948,950,5,185,0,0,949,941,1,0,0,0,949,945,1,0, + 0,0,950,57,1,0,0,0,951,952,3,296,148,0,952,953,3,302,151,0,953,954, + 3,60,30,0,954,959,1,0,0,0,955,956,3,296,148,0,956,957,3,60,30,0, + 957,959,1,0,0,0,958,951,1,0,0,0,958,955,1,0,0,0,959,59,1,0,0,0,960, + 961,5,12,0,0,961,963,5,3,0,0,962,964,5,188,0,0,963,962,1,0,0,0,963, + 964,1,0,0,0,964,971,1,0,0,0,965,967,5,4,0,0,966,968,5,188,0,0,967, + 966,1,0,0,0,967,968,1,0,0,0,968,971,1,0,0,0,969,971,5,12,0,0,970, + 960,1,0,0,0,970,965,1,0,0,0,970,969,1,0,0,0,971,61,1,0,0,0,972,973, + 5,6,0,0,973,974,5,188,0,0,974,975,3,64,32,0,975,976,5,55,0,0,976, + 977,5,123,0,0,977,978,5,188,0,0,978,979,5,128,0,0,979,63,1,0,0,0, + 980,982,5,123,0,0,981,983,3,66,33,0,982,981,1,0,0,0,982,983,1,0, + 0,0,983,984,1,0,0,0,984,986,5,128,0,0,985,980,1,0,0,0,985,986,1, + 0,0,0,986,65,1,0,0,0,987,992,3,68,34,0,988,989,5,122,0,0,989,991, + 3,68,34,0,990,988,1,0,0,0,991,994,1,0,0,0,992,990,1,0,0,0,992,993, + 1,0,0,0,993,67,1,0,0,0,994,992,1,0,0,0,995,998,3,106,53,0,996,998, + 5,192,0,0,997,995,1,0,0,0,997,996,1,0,0,0,998,69,1,0,0,0,999,1004, + 3,234,117,0,1000,1004,3,192,96,0,1001,1004,3,172,86,0,1002,1004, + 3,72,36,0,1003,999,1,0,0,0,1003,1000,1,0,0,0,1003,1001,1,0,0,0,1003, + 1002,1,0,0,0,1004,71,1,0,0,0,1005,1020,3,160,80,0,1006,1020,3,392, + 196,0,1007,1020,3,156,78,0,1008,1020,3,146,73,0,1009,1020,3,140, + 70,0,1010,1020,3,134,67,0,1011,1020,3,126,63,0,1012,1020,3,118,59, + 0,1013,1020,3,110,55,0,1014,1020,3,100,50,0,1015,1020,3,92,46,0, + 1016,1020,3,86,43,0,1017,1020,3,80,40,0,1018,1020,3,74,37,0,1019, + 1005,1,0,0,0,1019,1006,1,0,0,0,1019,1007,1,0,0,0,1019,1008,1,0,0, + 0,1019,1009,1,0,0,0,1019,1010,1,0,0,0,1019,1011,1,0,0,0,1019,1012, + 1,0,0,0,1019,1013,1,0,0,0,1019,1014,1,0,0,0,1019,1015,1,0,0,0,1019, + 1016,1,0,0,0,1019,1017,1,0,0,0,1019,1018,1,0,0,0,1020,73,1,0,0,0, + 1021,1023,5,14,0,0,1022,1024,5,30,0,0,1023,1022,1,0,0,0,1023,1024, + 1,0,0,0,1024,1025,1,0,0,0,1025,1026,3,76,38,0,1026,75,1,0,0,0,1027, + 1032,3,78,39,0,1028,1029,5,122,0,0,1029,1031,3,78,39,0,1030,1028, + 1,0,0,0,1031,1034,1,0,0,0,1032,1030,1,0,0,0,1032,1033,1,0,0,0,1033, + 77,1,0,0,0,1034,1032,1,0,0,0,1035,1042,3,182,91,0,1036,1037,3,182, + 91,0,1037,1038,5,123,0,0,1038,1039,3,184,92,0,1039,1040,5,128,0, + 0,1040,1042,1,0,0,0,1041,1035,1,0,0,0,1041,1036,1,0,0,0,1042,79, + 1,0,0,0,1043,1045,5,37,0,0,1044,1046,5,30,0,0,1045,1044,1,0,0,0, + 1045,1046,1,0,0,0,1046,1047,1,0,0,0,1047,1048,3,82,41,0,1048,81, + 1,0,0,0,1049,1054,3,84,42,0,1050,1051,5,122,0,0,1051,1053,3,84,42, + 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,83,1,0,0,0,1056,1054,1,0,0,0,1057,1064,3,182,91,0,1058, + 1059,3,182,91,0,1059,1060,5,123,0,0,1060,1061,3,268,134,0,1061,1062, + 5,128,0,0,1062,1064,1,0,0,0,1063,1057,1,0,0,0,1063,1058,1,0,0,0, + 1064,85,1,0,0,0,1065,1067,5,16,0,0,1066,1068,5,30,0,0,1067,1066, + 1,0,0,0,1067,1068,1,0,0,0,1068,1069,1,0,0,0,1069,1070,3,88,44,0, + 1070,87,1,0,0,0,1071,1076,3,90,45,0,1072,1073,5,122,0,0,1073,1075, + 3,90,45,0,1074,1072,1,0,0,0,1075,1078,1,0,0,0,1076,1074,1,0,0,0, + 1076,1077,1,0,0,0,1077,89,1,0,0,0,1078,1076,1,0,0,0,1079,1080,3, + 106,53,0,1080,91,1,0,0,0,1081,1082,5,17,0,0,1082,1083,3,94,47,0, + 1083,93,1,0,0,0,1084,1085,6,47,-1,0,1085,1086,5,133,0,0,1086,1087, + 3,96,48,0,1087,1088,5,133,0,0,1088,1089,3,98,49,0,1089,1108,1,0, + 0,0,1090,1091,10,3,0,0,1091,1092,5,133,0,0,1092,1093,3,96,48,0,1093, + 1094,5,133,0,0,1094,1095,3,98,49,0,1095,1107,1,0,0,0,1096,1097,10, + 2,0,0,1097,1098,5,122,0,0,1098,1099,5,133,0,0,1099,1100,3,96,48, + 0,1100,1101,5,133,0,0,1101,1102,3,98,49,0,1102,1107,1,0,0,0,1103, + 1104,10,1,0,0,1104,1105,5,122,0,0,1105,1107,3,98,49,0,1106,1090, + 1,0,0,0,1106,1096,1,0,0,0,1106,1103,1,0,0,0,1107,1110,1,0,0,0,1108, + 1106,1,0,0,0,1108,1109,1,0,0,0,1109,95,1,0,0,0,1110,1108,1,0,0,0, + 1111,1112,5,188,0,0,1112,97,1,0,0,0,1113,1114,3,432,216,0,1114,99, + 1,0,0,0,1115,1116,5,18,0,0,1116,1117,5,123,0,0,1117,1118,3,108,54, + 0,1118,1120,5,128,0,0,1119,1121,5,30,0,0,1120,1119,1,0,0,0,1120, + 1121,1,0,0,0,1121,1122,1,0,0,0,1122,1123,3,102,51,0,1123,101,1,0, + 0,0,1124,1125,3,104,52,0,1125,1126,5,122,0,0,1126,1127,3,104,52, + 0,1127,103,1,0,0,0,1128,1129,3,106,53,0,1129,105,1,0,0,0,1130,1131, + 5,188,0,0,1131,107,1,0,0,0,1132,1133,7,0,0,0,1133,109,1,0,0,0,1134, + 1136,5,15,0,0,1135,1137,5,30,0,0,1136,1135,1,0,0,0,1136,1137,1,0, + 0,0,1137,1138,1,0,0,0,1138,1139,3,112,56,0,1139,111,1,0,0,0,1140, + 1145,3,114,57,0,1141,1142,5,122,0,0,1142,1144,3,114,57,0,1143,1141, + 1,0,0,0,1144,1147,1,0,0,0,1145,1143,1,0,0,0,1145,1146,1,0,0,0,1146, + 113,1,0,0,0,1147,1145,1,0,0,0,1148,1155,3,116,58,0,1149,1150,3,116, + 58,0,1150,1151,5,123,0,0,1151,1152,3,268,134,0,1152,1153,5,128,0, + 0,1153,1155,1,0,0,0,1154,1148,1,0,0,0,1154,1149,1,0,0,0,1155,115, + 1,0,0,0,1156,1157,3,300,150,0,1157,117,1,0,0,0,1158,1160,5,40,0, + 0,1159,1161,5,30,0,0,1160,1159,1,0,0,0,1160,1161,1,0,0,0,1161,1162, + 1,0,0,0,1162,1165,3,120,60,0,1163,1165,5,40,0,0,1164,1158,1,0,0, + 0,1164,1163,1,0,0,0,1165,119,1,0,0,0,1166,1171,3,122,61,0,1167,1168, + 5,122,0,0,1168,1170,3,122,61,0,1169,1167,1,0,0,0,1170,1173,1,0,0, + 0,1171,1169,1,0,0,0,1171,1172,1,0,0,0,1172,121,1,0,0,0,1173,1171, + 1,0,0,0,1174,1177,3,124,62,0,1175,1177,3,198,99,0,1176,1174,1,0, + 0,0,1176,1175,1,0,0,0,1177,123,1,0,0,0,1178,1179,3,300,150,0,1179, + 125,1,0,0,0,1180,1187,5,47,0,0,1181,1182,5,47,0,0,1182,1187,3,128, + 64,0,1183,1184,5,47,0,0,1184,1185,5,30,0,0,1185,1187,3,128,64,0, + 1186,1180,1,0,0,0,1186,1181,1,0,0,0,1186,1183,1,0,0,0,1187,127,1, + 0,0,0,1188,1190,3,130,65,0,1189,1188,1,0,0,0,1190,1191,1,0,0,0,1191, + 1189,1,0,0,0,1191,1192,1,0,0,0,1192,129,1,0,0,0,1193,1196,3,432, + 216,0,1194,1196,3,132,66,0,1195,1193,1,0,0,0,1195,1194,1,0,0,0,1196, + 131,1,0,0,0,1197,1198,5,133,0,0,1198,1199,3,170,85,0,1199,1200,5, + 133,0,0,1200,133,1,0,0,0,1201,1202,5,46,0,0,1202,1203,3,136,68,0, + 1203,135,1,0,0,0,1204,1206,3,138,69,0,1205,1204,1,0,0,0,1206,1207, + 1,0,0,0,1207,1205,1,0,0,0,1207,1208,1,0,0,0,1208,137,1,0,0,0,1209, + 1210,5,188,0,0,1210,139,1,0,0,0,1211,1212,5,45,0,0,1212,1213,3,142, + 71,0,1213,141,1,0,0,0,1214,1216,3,144,72,0,1215,1214,1,0,0,0,1216, + 1217,1,0,0,0,1217,1215,1,0,0,0,1217,1218,1,0,0,0,1218,143,1,0,0, + 0,1219,1220,5,188,0,0,1220,145,1,0,0,0,1221,1222,5,35,0,0,1222,1223, + 3,148,74,0,1223,147,1,0,0,0,1224,1226,3,150,75,0,1225,1224,1,0,0, + 0,1226,1227,1,0,0,0,1227,1225,1,0,0,0,1227,1228,1,0,0,0,1228,149, + 1,0,0,0,1229,1230,5,123,0,0,1230,1231,3,152,76,0,1231,1232,5,122, + 0,0,1232,1233,3,154,77,0,1233,1234,5,128,0,0,1234,151,1,0,0,0,1235, + 1236,3,404,202,0,1236,153,1,0,0,0,1237,1239,3,152,76,0,1238,1237, + 1,0,0,0,1239,1240,1,0,0,0,1240,1238,1,0,0,0,1240,1241,1,0,0,0,1241, + 155,1,0,0,0,1242,1243,5,13,0,0,1243,1248,3,158,79,0,1244,1245,5, + 13,0,0,1245,1246,5,30,0,0,1246,1248,3,158,79,0,1247,1242,1,0,0,0, + 1247,1244,1,0,0,0,1248,157,1,0,0,0,1249,1251,3,166,83,0,1250,1249, + 1,0,0,0,1251,1252,1,0,0,0,1252,1250,1,0,0,0,1252,1253,1,0,0,0,1253, + 159,1,0,0,0,1254,1255,5,32,0,0,1255,1256,3,162,81,0,1256,161,1,0, + 0,0,1257,1259,6,81,-1,0,1258,1260,3,168,84,0,1259,1258,1,0,0,0,1259, + 1260,1,0,0,0,1260,1261,1,0,0,0,1261,1262,3,164,82,0,1262,1275,1, + 0,0,0,1263,1264,10,2,0,0,1264,1266,5,122,0,0,1265,1267,3,168,84, + 0,1266,1265,1,0,0,0,1266,1267,1,0,0,0,1267,1268,1,0,0,0,1268,1274, + 3,164,82,0,1269,1270,10,1,0,0,1270,1271,3,168,84,0,1271,1272,3,164, + 82,0,1272,1274,1,0,0,0,1273,1263,1,0,0,0,1273,1269,1,0,0,0,1274, + 1277,1,0,0,0,1275,1273,1,0,0,0,1275,1276,1,0,0,0,1276,163,1,0,0, + 0,1277,1275,1,0,0,0,1278,1281,3,432,216,0,1279,1281,3,166,83,0,1280, + 1278,1,0,0,0,1280,1279,1,0,0,0,1281,165,1,0,0,0,1282,1283,3,432, + 216,0,1283,1284,5,123,0,0,1284,1285,3,184,92,0,1285,1286,5,128,0, + 0,1286,167,1,0,0,0,1287,1288,5,133,0,0,1288,1289,5,184,0,0,1289, + 1290,5,133,0,0,1290,1296,5,185,0,0,1291,1292,5,133,0,0,1292,1293, + 3,170,85,0,1293,1294,5,133,0,0,1294,1296,1,0,0,0,1295,1287,1,0,0, + 0,1295,1291,1,0,0,0,1296,169,1,0,0,0,1297,1298,5,188,0,0,1298,171, + 1,0,0,0,1299,1300,3,272,136,0,1300,1301,3,178,89,0,1301,1310,1,0, + 0,0,1302,1304,3,272,136,0,1303,1305,3,174,87,0,1304,1303,1,0,0,0, + 1304,1305,1,0,0,0,1305,1306,1,0,0,0,1306,1307,5,30,0,0,1307,1308, + 3,178,89,0,1308,1310,1,0,0,0,1309,1299,1,0,0,0,1309,1302,1,0,0,0, + 1310,173,1,0,0,0,1311,1312,6,87,-1,0,1312,1313,5,122,0,0,1313,1314, + 3,176,88,0,1314,1320,1,0,0,0,1315,1316,10,1,0,0,1316,1317,5,122, + 0,0,1317,1319,3,176,88,0,1318,1315,1,0,0,0,1319,1322,1,0,0,0,1320, + 1318,1,0,0,0,1320,1321,1,0,0,0,1321,175,1,0,0,0,1322,1320,1,0,0, + 0,1323,1343,5,44,0,0,1324,1343,5,40,0,0,1325,1343,5,15,0,0,1326, + 1327,5,13,0,0,1327,1328,5,123,0,0,1328,1329,3,184,92,0,1329,1330, + 5,128,0,0,1330,1343,1,0,0,0,1331,1343,5,45,0,0,1332,1333,5,18,0, + 0,1333,1334,5,123,0,0,1334,1335,3,108,54,0,1335,1336,5,128,0,0,1336, + 1343,1,0,0,0,1337,1343,5,46,0,0,1338,1343,5,16,0,0,1339,1343,5,37, + 0,0,1340,1343,5,47,0,0,1341,1343,5,14,0,0,1342,1323,1,0,0,0,1342, + 1324,1,0,0,0,1342,1325,1,0,0,0,1342,1326,1,0,0,0,1342,1331,1,0,0, + 0,1342,1332,1,0,0,0,1342,1337,1,0,0,0,1342,1338,1,0,0,0,1342,1339, + 1,0,0,0,1342,1340,1,0,0,0,1342,1341,1,0,0,0,1343,177,1,0,0,0,1344, + 1349,3,180,90,0,1345,1346,5,122,0,0,1346,1348,3,180,90,0,1347,1345, + 1,0,0,0,1348,1351,1,0,0,0,1349,1347,1,0,0,0,1349,1350,1,0,0,0,1350, + 179,1,0,0,0,1351,1349,1,0,0,0,1352,1396,3,182,91,0,1353,1354,3,182, + 91,0,1354,1355,5,123,0,0,1355,1356,3,184,92,0,1356,1357,5,128,0, + 0,1357,1396,1,0,0,0,1358,1359,3,182,91,0,1359,1360,5,192,0,0,1360, + 1361,3,282,141,0,1361,1396,1,0,0,0,1362,1363,3,182,91,0,1363,1364, + 5,123,0,0,1364,1365,3,184,92,0,1365,1366,5,128,0,0,1366,1367,5,192, + 0,0,1367,1368,3,282,141,0,1368,1396,1,0,0,0,1369,1370,3,182,91,0, + 1370,1371,5,130,0,0,1371,1372,3,624,312,0,1372,1396,1,0,0,0,1373, + 1374,3,182,91,0,1374,1375,5,123,0,0,1375,1376,3,184,92,0,1376,1377, + 5,128,0,0,1377,1378,5,130,0,0,1378,1379,3,624,312,0,1379,1396,1, + 0,0,0,1380,1381,3,182,91,0,1381,1382,5,192,0,0,1382,1383,3,282,141, + 0,1383,1384,5,130,0,0,1384,1385,3,624,312,0,1385,1396,1,0,0,0,1386, + 1387,3,182,91,0,1387,1388,5,192,0,0,1388,1389,3,282,141,0,1389,1390, + 5,123,0,0,1390,1391,3,184,92,0,1391,1392,5,128,0,0,1392,1393,5,130, + 0,0,1393,1394,3,624,312,0,1394,1396,1,0,0,0,1395,1352,1,0,0,0,1395, + 1353,1,0,0,0,1395,1358,1,0,0,0,1395,1362,1,0,0,0,1395,1369,1,0,0, + 0,1395,1373,1,0,0,0,1395,1380,1,0,0,0,1395,1386,1,0,0,0,1396,181, + 1,0,0,0,1397,1398,5,188,0,0,1398,183,1,0,0,0,1399,1404,3,260,130, + 0,1400,1404,3,190,95,0,1401,1404,3,186,93,0,1402,1404,3,268,134, + 0,1403,1399,1,0,0,0,1403,1400,1,0,0,0,1403,1401,1,0,0,0,1403,1402, + 1,0,0,0,1404,185,1,0,0,0,1405,1406,6,93,-1,0,1406,1407,3,264,132, + 0,1407,1408,5,129,0,0,1408,1415,1,0,0,0,1409,1410,3,268,134,0,1410, + 1411,5,122,0,0,1411,1412,3,264,132,0,1412,1413,5,129,0,0,1413,1415, + 1,0,0,0,1414,1405,1,0,0,0,1414,1409,1,0,0,0,1415,1421,1,0,0,0,1416, + 1417,10,1,0,0,1417,1418,5,122,0,0,1418,1420,3,188,94,0,1419,1416, + 1,0,0,0,1420,1423,1,0,0,0,1421,1419,1,0,0,0,1421,1422,1,0,0,0,1422, + 187,1,0,0,0,1423,1421,1,0,0,0,1424,1425,3,264,132,0,1425,1426,5, + 129,0,0,1426,1429,1,0,0,0,1427,1429,5,129,0,0,1428,1424,1,0,0,0, + 1428,1427,1,0,0,0,1429,189,1,0,0,0,1430,1446,5,192,0,0,1431,1432, + 3,264,132,0,1432,1433,5,129,0,0,1433,1434,5,192,0,0,1434,1446,1, + 0,0,0,1435,1436,3,260,130,0,1436,1437,5,122,0,0,1437,1438,5,192, + 0,0,1438,1446,1,0,0,0,1439,1440,3,260,130,0,1440,1441,5,122,0,0, + 1441,1442,3,264,132,0,1442,1443,5,129,0,0,1443,1444,5,192,0,0,1444, + 1446,1,0,0,0,1445,1430,1,0,0,0,1445,1431,1,0,0,0,1445,1435,1,0,0, + 0,1445,1439,1,0,0,0,1446,191,1,0,0,0,1447,1448,3,196,98,0,1448,1449, + 3,202,101,0,1449,1450,3,194,97,0,1450,193,1,0,0,0,1451,1455,5,10, + 0,0,1452,1453,5,12,0,0,1453,1455,5,183,0,0,1454,1451,1,0,0,0,1454, + 1452,1,0,0,0,1455,1457,1,0,0,0,1456,1458,5,188,0,0,1457,1456,1,0, + 0,0,1457,1458,1,0,0,0,1458,195,1,0,0,0,1459,1460,5,183,0,0,1460, + 1465,5,188,0,0,1461,1462,5,183,0,0,1462,1465,3,198,99,0,1463,1465, + 5,183,0,0,1464,1459,1,0,0,0,1464,1461,1,0,0,0,1464,1463,1,0,0,0, + 1465,197,1,0,0,0,1466,1467,5,22,0,0,1467,1468,5,123,0,0,1468,1469, + 3,200,100,0,1469,1470,5,128,0,0,1470,1476,1,0,0,0,1471,1472,5,26, + 0,0,1472,1473,5,123,0,0,1473,1474,5,130,0,0,1474,1476,5,128,0,0, + 1475,1466,1,0,0,0,1475,1471,1,0,0,0,1476,199,1,0,0,0,1477,1491,5, + 27,0,0,1478,1491,5,135,0,0,1479,1491,5,192,0,0,1480,1491,7,1,0,0, + 1481,1491,7,2,0,0,1482,1483,5,133,0,0,1483,1484,5,184,0,0,1484,1485, + 5,133,0,0,1485,1491,5,185,0,0,1486,1491,5,136,0,0,1487,1491,5,137, + 0,0,1488,1491,5,138,0,0,1489,1491,7,3,0,0,1490,1477,1,0,0,0,1490, + 1478,1,0,0,0,1490,1479,1,0,0,0,1490,1480,1,0,0,0,1490,1481,1,0,0, + 0,1490,1482,1,0,0,0,1490,1486,1,0,0,0,1490,1487,1,0,0,0,1490,1488, + 1,0,0,0,1490,1489,1,0,0,0,1491,201,1,0,0,0,1492,1493,6,101,-1,0, + 1493,1494,3,204,102,0,1494,1499,1,0,0,0,1495,1496,10,1,0,0,1496, + 1498,3,204,102,0,1497,1495,1,0,0,0,1498,1501,1,0,0,0,1499,1497,1, + 0,0,0,1499,1500,1,0,0,0,1500,203,1,0,0,0,1501,1499,1,0,0,0,1502, + 1505,3,212,106,0,1503,1505,3,206,103,0,1504,1502,1,0,0,0,1504,1503, + 1,0,0,0,1505,205,1,0,0,0,1506,1507,5,3,0,0,1507,1508,5,11,0,0,1508, + 1509,3,208,104,0,1509,207,1,0,0,0,1510,1515,3,210,105,0,1511,1512, + 5,122,0,0,1512,1514,3,210,105,0,1513,1511,1,0,0,0,1514,1517,1,0, + 0,0,1515,1513,1,0,0,0,1515,1516,1,0,0,0,1516,209,1,0,0,0,1517,1515, + 1,0,0,0,1518,1519,3,300,150,0,1519,211,1,0,0,0,1520,1521,3,220,110, + 0,1521,1522,5,188,0,0,1522,1523,3,222,111,0,1523,1528,1,0,0,0,1524, + 1525,5,9,0,0,1525,1526,5,188,0,0,1526,1528,3,214,107,0,1527,1520, + 1,0,0,0,1527,1524,1,0,0,0,1528,213,1,0,0,0,1529,1531,3,64,32,0,1530, + 1532,3,230,115,0,1531,1530,1,0,0,0,1531,1532,1,0,0,0,1532,1533,1, + 0,0,0,1533,1534,3,216,108,0,1534,215,1,0,0,0,1535,1542,5,12,0,0, + 1536,1537,5,12,0,0,1537,1539,5,9,0,0,1538,1540,5,188,0,0,1539,1538, + 1,0,0,0,1539,1540,1,0,0,0,1540,1542,1,0,0,0,1541,1535,1,0,0,0,1541, + 1536,1,0,0,0,1542,217,1,0,0,0,1543,1544,5,1,0,0,1544,219,1,0,0,0, + 1545,1547,3,218,109,0,1546,1545,1,0,0,0,1546,1547,1,0,0,0,1547,1549, + 1,0,0,0,1548,1550,3,272,136,0,1549,1548,1,0,0,0,1549,1550,1,0,0, + 0,1550,1551,1,0,0,0,1551,1557,5,7,0,0,1552,1553,3,272,136,0,1553, + 1554,5,1,0,0,1554,1555,5,7,0,0,1555,1557,1,0,0,0,1556,1546,1,0,0, + 0,1556,1552,1,0,0,0,1557,221,1,0,0,0,1558,1560,3,224,112,0,1559, + 1561,3,230,115,0,1560,1559,1,0,0,0,1560,1561,1,0,0,0,1561,1562,1, + 0,0,0,1562,1563,3,232,116,0,1563,223,1,0,0,0,1564,1566,5,123,0,0, + 1565,1567,3,226,113,0,1566,1565,1,0,0,0,1566,1567,1,0,0,0,1567,1568, + 1,0,0,0,1568,1569,5,128,0,0,1569,225,1,0,0,0,1570,1575,3,228,114, + 0,1571,1572,5,122,0,0,1572,1574,3,228,114,0,1573,1571,1,0,0,0,1574, + 1577,1,0,0,0,1575,1573,1,0,0,0,1575,1576,1,0,0,0,1576,227,1,0,0, + 0,1577,1575,1,0,0,0,1578,1579,3,106,53,0,1579,229,1,0,0,0,1580,1581, + 6,115,-1,0,1581,1582,3,16,8,0,1582,1587,1,0,0,0,1583,1584,10,1,0, + 0,1584,1586,3,16,8,0,1585,1583,1,0,0,0,1586,1589,1,0,0,0,1587,1585, + 1,0,0,0,1587,1588,1,0,0,0,1588,231,1,0,0,0,1589,1587,1,0,0,0,1590, + 1597,5,12,0,0,1591,1592,5,12,0,0,1592,1594,5,7,0,0,1593,1595,5,188, + 0,0,1594,1593,1,0,0,0,1594,1595,1,0,0,0,1595,1597,1,0,0,0,1596,1590, + 1,0,0,0,1596,1591,1,0,0,0,1597,233,1,0,0,0,1598,1599,3,238,119,0, + 1599,1600,3,240,120,0,1600,1601,3,236,118,0,1601,235,1,0,0,0,1602, + 1603,5,182,0,0,1603,1611,5,188,0,0,1604,1611,5,182,0,0,1605,1606, + 5,12,0,0,1606,1607,5,187,0,0,1607,1611,5,188,0,0,1608,1609,5,12, + 0,0,1609,1611,5,187,0,0,1610,1602,1,0,0,0,1610,1604,1,0,0,0,1610, + 1605,1,0,0,0,1610,1608,1,0,0,0,1611,237,1,0,0,0,1612,1613,5,187, + 0,0,1613,1623,5,188,0,0,1614,1615,5,187,0,0,1615,1616,5,30,0,0,1616, + 1623,5,188,0,0,1617,1618,5,187,0,0,1618,1619,5,122,0,0,1619,1620, + 5,40,0,0,1620,1621,5,30,0,0,1621,1623,5,188,0,0,1622,1612,1,0,0, + 0,1622,1614,1,0,0,0,1622,1617,1,0,0,0,1623,239,1,0,0,0,1624,1625, + 6,120,-1,0,1625,1626,3,242,121,0,1626,1631,1,0,0,0,1627,1628,10, + 1,0,0,1628,1630,3,242,121,0,1629,1627,1,0,0,0,1630,1633,1,0,0,0, + 1631,1629,1,0,0,0,1631,1632,1,0,0,0,1632,241,1,0,0,0,1633,1631,1, + 0,0,0,1634,1637,3,244,122,0,1635,1637,3,246,123,0,1636,1634,1,0, + 0,0,1636,1635,1,0,0,0,1637,243,1,0,0,0,1638,1639,7,4,0,0,1639,245, + 1,0,0,0,1640,1641,3,272,136,0,1641,1642,5,122,0,0,1642,1643,3,254, + 127,0,1643,1644,5,30,0,0,1644,1645,3,248,124,0,1645,1654,1,0,0,0, + 1646,1647,3,272,136,0,1647,1648,5,30,0,0,1648,1649,3,248,124,0,1649, + 1654,1,0,0,0,1650,1651,3,272,136,0,1651,1652,3,248,124,0,1652,1654, + 1,0,0,0,1653,1640,1,0,0,0,1653,1646,1,0,0,0,1653,1650,1,0,0,0,1654, + 247,1,0,0,0,1655,1660,3,250,125,0,1656,1657,5,122,0,0,1657,1659, + 3,250,125,0,1658,1656,1,0,0,0,1659,1662,1,0,0,0,1660,1658,1,0,0, + 0,1660,1661,1,0,0,0,1661,249,1,0,0,0,1662,1660,1,0,0,0,1663,1664, + 3,252,126,0,1664,1665,5,123,0,0,1665,1666,3,258,129,0,1666,1667, + 5,128,0,0,1667,1668,5,192,0,0,1668,1669,3,282,141,0,1669,1707,1, + 0,0,0,1670,1671,3,252,126,0,1671,1672,5,123,0,0,1672,1673,3,258, + 129,0,1673,1674,5,128,0,0,1674,1675,5,130,0,0,1675,1676,3,624,312, + 0,1676,1707,1,0,0,0,1677,1678,3,252,126,0,1678,1679,5,123,0,0,1679, + 1680,3,258,129,0,1680,1681,5,128,0,0,1681,1707,1,0,0,0,1682,1683, + 3,252,126,0,1683,1684,5,192,0,0,1684,1685,3,282,141,0,1685,1707, + 1,0,0,0,1686,1687,3,252,126,0,1687,1688,5,130,0,0,1688,1689,3,624, + 312,0,1689,1707,1,0,0,0,1690,1691,3,252,126,0,1691,1692,5,192,0, + 0,1692,1693,3,282,141,0,1693,1694,5,130,0,0,1694,1695,3,624,312, + 0,1695,1707,1,0,0,0,1696,1697,3,252,126,0,1697,1698,5,192,0,0,1698, + 1699,3,282,141,0,1699,1700,5,123,0,0,1700,1701,3,258,129,0,1701, + 1702,5,128,0,0,1702,1703,5,130,0,0,1703,1704,3,624,312,0,1704,1707, + 1,0,0,0,1705,1707,3,252,126,0,1706,1663,1,0,0,0,1706,1670,1,0,0, + 0,1706,1677,1,0,0,0,1706,1682,1,0,0,0,1706,1686,1,0,0,0,1706,1690, + 1,0,0,0,1706,1696,1,0,0,0,1706,1705,1,0,0,0,1707,251,1,0,0,0,1708, + 1709,5,188,0,0,1709,253,1,0,0,0,1710,1715,3,256,128,0,1711,1712, + 5,122,0,0,1712,1714,3,256,128,0,1713,1711,1,0,0,0,1714,1717,1,0, + 0,0,1715,1713,1,0,0,0,1715,1716,1,0,0,0,1716,255,1,0,0,0,1717,1715, + 1,0,0,0,1718,1725,5,37,0,0,1719,1720,5,13,0,0,1720,1721,5,123,0, + 0,1721,1722,3,258,129,0,1722,1723,5,128,0,0,1723,1725,1,0,0,0,1724, + 1718,1,0,0,0,1724,1719,1,0,0,0,1725,257,1,0,0,0,1726,1729,3,260, + 130,0,1727,1729,3,268,134,0,1728,1726,1,0,0,0,1728,1727,1,0,0,0, + 1729,259,1,0,0,0,1730,1735,3,262,131,0,1731,1732,5,122,0,0,1732, + 1734,3,262,131,0,1733,1731,1,0,0,0,1734,1737,1,0,0,0,1735,1733,1, + 0,0,0,1735,1736,1,0,0,0,1736,261,1,0,0,0,1737,1735,1,0,0,0,1738, + 1739,3,264,132,0,1739,1740,5,129,0,0,1740,1741,3,266,133,0,1741, + 1744,1,0,0,0,1742,1744,3,266,133,0,1743,1738,1,0,0,0,1743,1742,1, + 0,0,0,1744,263,1,0,0,0,1745,1746,3,624,312,0,1746,265,1,0,0,0,1747, + 1748,3,624,312,0,1748,267,1,0,0,0,1749,1754,3,270,135,0,1750,1751, + 5,122,0,0,1751,1753,3,270,135,0,1752,1750,1,0,0,0,1753,1756,1,0, + 0,0,1754,1752,1,0,0,0,1754,1755,1,0,0,0,1755,269,1,0,0,0,1756,1754, + 1,0,0,0,1757,1758,5,129,0,0,1758,271,1,0,0,0,1759,1785,5,168,0,0, + 1760,1785,5,34,0,0,1761,1785,5,29,0,0,1762,1785,5,166,0,0,1763,1785, + 5,169,0,0,1764,1785,5,43,0,0,1765,1766,5,43,0,0,1766,1785,3,280, + 140,0,1767,1768,5,168,0,0,1768,1785,3,274,137,0,1769,1770,5,34,0, + 0,1770,1785,3,274,137,0,1771,1772,5,93,0,0,1772,1785,5,167,0,0,1773, + 1774,5,166,0,0,1774,1785,3,274,137,0,1775,1776,5,43,0,0,1776,1785, + 3,278,139,0,1777,1778,5,169,0,0,1778,1785,3,274,137,0,1779,1780, + 5,187,0,0,1780,1781,5,123,0,0,1781,1782,3,276,138,0,1782,1783,5, + 128,0,0,1783,1785,1,0,0,0,1784,1759,1,0,0,0,1784,1760,1,0,0,0,1784, + 1761,1,0,0,0,1784,1762,1,0,0,0,1784,1763,1,0,0,0,1784,1764,1,0,0, + 0,1784,1765,1,0,0,0,1784,1767,1,0,0,0,1784,1769,1,0,0,0,1784,1771, + 1,0,0,0,1784,1773,1,0,0,0,1784,1775,1,0,0,0,1784,1777,1,0,0,0,1784, + 1779,1,0,0,0,1785,273,1,0,0,0,1786,1787,5,123,0,0,1787,1788,5,117, + 0,0,1788,1789,5,130,0,0,1789,1790,3,624,312,0,1790,1791,5,128,0, + 0,1791,1797,1,0,0,0,1792,1793,5,123,0,0,1793,1794,3,624,312,0,1794, + 1795,5,128,0,0,1795,1797,1,0,0,0,1796,1786,1,0,0,0,1796,1792,1,0, + 0,0,1797,275,1,0,0,0,1798,1799,3,300,150,0,1799,277,1,0,0,0,1800, + 1801,5,123,0,0,1801,1802,5,118,0,0,1802,1803,5,130,0,0,1803,1804, + 3,294,147,0,1804,1805,5,122,0,0,1805,1806,5,117,0,0,1806,1807,5, + 130,0,0,1807,1808,3,624,312,0,1808,1809,5,128,0,0,1809,1835,1,0, + 0,0,1810,1811,5,123,0,0,1811,1812,5,118,0,0,1812,1813,5,130,0,0, + 1813,1814,3,294,147,0,1814,1815,5,122,0,0,1815,1816,3,624,312,0, + 1816,1817,5,128,0,0,1817,1835,1,0,0,0,1818,1819,5,123,0,0,1819,1820, + 5,118,0,0,1820,1821,5,130,0,0,1821,1822,3,294,147,0,1822,1823,5, + 128,0,0,1823,1835,1,0,0,0,1824,1825,5,123,0,0,1825,1826,5,117,0, + 0,1826,1827,5,130,0,0,1827,1828,3,624,312,0,1828,1829,5,128,0,0, + 1829,1835,1,0,0,0,1830,1831,5,123,0,0,1831,1832,3,624,312,0,1832, + 1833,5,128,0,0,1833,1835,1,0,0,0,1834,1800,1,0,0,0,1834,1810,1,0, + 0,0,1834,1818,1,0,0,0,1834,1824,1,0,0,0,1834,1830,1,0,0,0,1835,279, + 1,0,0,0,1836,1837,5,192,0,0,1837,1843,3,282,141,0,1838,1839,5,123, + 0,0,1839,1840,3,294,147,0,1840,1841,5,128,0,0,1841,1843,1,0,0,0, + 1842,1836,1,0,0,0,1842,1838,1,0,0,0,1843,281,1,0,0,0,1844,1845,5, + 123,0,0,1845,1846,3,294,147,0,1846,1847,5,128,0,0,1847,1850,1,0, + 0,0,1848,1850,3,284,142,0,1849,1844,1,0,0,0,1849,1848,1,0,0,0,1850, + 283,1,0,0,0,1851,1869,3,292,146,0,1852,1854,7,1,0,0,1853,1852,1, + 0,0,0,1853,1854,1,0,0,0,1854,1855,1,0,0,0,1855,1869,3,686,343,0, + 1856,1869,5,177,0,0,1857,1869,5,155,0,0,1858,1869,3,682,341,0,1859, + 1860,5,186,0,0,1860,1861,5,170,0,0,1861,1869,5,177,0,0,1862,1863, + 3,292,146,0,1863,1864,5,170,0,0,1864,1865,5,177,0,0,1865,1869,1, + 0,0,0,1866,1869,3,288,144,0,1867,1869,3,286,143,0,1868,1851,1,0, + 0,0,1868,1853,1,0,0,0,1868,1856,1,0,0,0,1868,1857,1,0,0,0,1868,1858, + 1,0,0,0,1868,1859,1,0,0,0,1868,1862,1,0,0,0,1868,1866,1,0,0,0,1868, + 1867,1,0,0,0,1869,285,1,0,0,0,1870,1871,7,5,0,0,1871,287,1,0,0,0, + 1872,1873,3,276,138,0,1873,1874,5,123,0,0,1874,1875,3,290,145,0, + 1875,1876,5,128,0,0,1876,289,1,0,0,0,1877,1878,3,624,312,0,1878, + 1879,5,122,0,0,1879,1880,3,624,312,0,1880,291,1,0,0,0,1881,1882, + 5,188,0,0,1882,293,1,0,0,0,1883,1886,3,624,312,0,1884,1886,5,192, + 0,0,1885,1883,1,0,0,0,1885,1884,1,0,0,0,1886,295,1,0,0,0,1887,1888, + 5,3,0,0,1888,1889,3,298,149,0,1889,297,1,0,0,0,1890,1891,3,300,150, + 0,1891,299,1,0,0,0,1892,1893,5,188,0,0,1893,301,1,0,0,0,1894,1895, + 6,151,-1,0,1895,1898,3,16,8,0,1896,1898,3,304,152,0,1897,1894,1, + 0,0,0,1897,1896,1,0,0,0,1898,1905,1,0,0,0,1899,1900,10,2,0,0,1900, + 1904,3,16,8,0,1901,1902,10,1,0,0,1902,1904,3,304,152,0,1903,1899, + 1,0,0,0,1903,1901,1,0,0,0,1904,1907,1,0,0,0,1905,1903,1,0,0,0,1905, + 1906,1,0,0,0,1906,303,1,0,0,0,1907,1905,1,0,0,0,1908,1911,3,306, + 153,0,1909,1911,3,308,154,0,1910,1908,1,0,0,0,1910,1909,1,0,0,0, + 1911,305,1,0,0,0,1912,1913,5,2,0,0,1913,307,1,0,0,0,1914,1917,3, + 310,155,0,1915,1917,3,606,303,0,1916,1914,1,0,0,0,1916,1915,1,0, + 0,0,1917,309,1,0,0,0,1918,1919,3,220,110,0,1919,1920,3,312,156,0, + 1920,1921,3,314,157,0,1921,311,1,0,0,0,1922,1923,5,188,0,0,1923, + 313,1,0,0,0,1924,1926,3,224,112,0,1925,1927,3,316,158,0,1926,1925, + 1,0,0,0,1926,1927,1,0,0,0,1927,1928,1,0,0,0,1928,1929,3,232,116, + 0,1929,1953,1,0,0,0,1930,1931,3,224,112,0,1931,1932,5,55,0,0,1932, + 1933,5,123,0,0,1933,1934,5,188,0,0,1934,1936,5,128,0,0,1935,1937, + 3,316,158,0,1936,1935,1,0,0,0,1936,1937,1,0,0,0,1937,1938,1,0,0, + 0,1938,1939,3,232,116,0,1939,1953,1,0,0,0,1940,1941,3,224,112,0, + 1941,1942,5,55,0,0,1942,1943,5,123,0,0,1943,1944,5,188,0,0,1944, + 1945,5,128,0,0,1945,1946,3,12,6,0,1946,1947,3,232,116,0,1947,1953, + 1,0,0,0,1948,1949,3,224,112,0,1949,1950,3,12,6,0,1950,1951,3,232, + 116,0,1951,1953,1,0,0,0,1952,1924,1,0,0,0,1952,1930,1,0,0,0,1952, + 1940,1,0,0,0,1952,1948,1,0,0,0,1953,315,1,0,0,0,1954,1956,3,318, + 159,0,1955,1954,1,0,0,0,1956,1957,1,0,0,0,1957,1955,1,0,0,0,1957, + 1958,1,0,0,0,1958,317,1,0,0,0,1959,1962,3,16,8,0,1960,1962,3,320, + 160,0,1961,1959,1,0,0,0,1961,1960,1,0,0,0,1962,319,1,0,0,0,1963, + 1969,3,436,218,0,1964,1969,3,370,185,0,1965,1969,3,354,177,0,1966, + 1969,3,336,168,0,1967,1969,3,322,161,0,1968,1963,1,0,0,0,1968,1964, + 1,0,0,0,1968,1965,1,0,0,0,1968,1966,1,0,0,0,1968,1967,1,0,0,0,1969, + 321,1,0,0,0,1970,1971,3,330,165,0,1971,1972,3,328,164,0,1972,1977, + 1,0,0,0,1973,1974,3,324,162,0,1974,1975,3,328,164,0,1975,1977,1, + 0,0,0,1976,1970,1,0,0,0,1976,1973,1,0,0,0,1977,323,1,0,0,0,1978, + 1979,6,162,-1,0,1979,1980,3,330,165,0,1980,1981,3,326,163,0,1981, + 1986,1,0,0,0,1982,1983,10,1,0,0,1983,1985,3,576,288,0,1984,1982, + 1,0,0,0,1985,1988,1,0,0,0,1986,1984,1,0,0,0,1986,1987,1,0,0,0,1987, + 325,1,0,0,0,1988,1986,1,0,0,0,1989,1990,5,33,0,0,1990,327,1,0,0, + 0,1991,1995,5,60,0,0,1992,1993,5,12,0,0,1993,1995,5,61,0,0,1994, + 1991,1,0,0,0,1994,1992,1,0,0,0,1995,329,1,0,0,0,1996,1997,6,165, + -1,0,1997,1998,3,332,166,0,1998,2003,1,0,0,0,1999,2000,10,1,0,0, + 2000,2002,3,576,288,0,2001,1999,1,0,0,0,2002,2005,1,0,0,0,2003,2001, + 1,0,0,0,2003,2004,1,0,0,0,2004,331,1,0,0,0,2005,2003,1,0,0,0,2006, + 2007,5,61,0,0,2007,2008,5,123,0,0,2008,2009,3,334,167,0,2009,2010, + 5,128,0,0,2010,333,1,0,0,0,2011,2012,3,624,312,0,2012,335,1,0,0, + 0,2013,2014,5,188,0,0,2014,2015,5,129,0,0,2015,2016,5,63,0,0,2016, + 2017,5,123,0,0,2017,2018,3,624,312,0,2018,2019,5,128,0,0,2019,2020, + 3,338,169,0,2020,2044,1,0,0,0,2021,2022,5,63,0,0,2022,2023,5,123, + 0,0,2023,2024,3,624,312,0,2024,2025,5,128,0,0,2025,2026,3,338,169, + 0,2026,2044,1,0,0,0,2027,2028,5,188,0,0,2028,2029,5,129,0,0,2029, + 2030,5,64,0,0,2030,2031,5,65,0,0,2031,2032,5,123,0,0,2032,2033,3, + 624,312,0,2033,2034,5,128,0,0,2034,2035,3,338,169,0,2035,2044,1, + 0,0,0,2036,2037,5,64,0,0,2037,2038,5,65,0,0,2038,2039,5,123,0,0, + 2039,2040,3,624,312,0,2040,2041,5,128,0,0,2041,2042,3,338,169,0, + 2042,2044,1,0,0,0,2043,2013,1,0,0,0,2043,2021,1,0,0,0,2043,2027, + 1,0,0,0,2043,2036,1,0,0,0,2044,337,1,0,0,0,2045,2046,3,342,171,0, + 2046,2047,3,340,170,0,2047,2050,1,0,0,0,2048,2050,3,340,170,0,2049, + 2045,1,0,0,0,2049,2048,1,0,0,0,2050,339,1,0,0,0,2051,2053,5,62,0, + 0,2052,2054,5,188,0,0,2053,2052,1,0,0,0,2053,2054,1,0,0,0,2054,2061, + 1,0,0,0,2055,2056,5,12,0,0,2056,2058,5,64,0,0,2057,2059,5,188,0, + 0,2058,2057,1,0,0,0,2058,2059,1,0,0,0,2059,2061,1,0,0,0,2060,2051, + 1,0,0,0,2060,2055,1,0,0,0,2061,341,1,0,0,0,2062,2063,6,171,-1,0, + 2063,2064,3,346,173,0,2064,2069,1,0,0,0,2065,2066,10,1,0,0,2066, + 2068,3,344,172,0,2067,2065,1,0,0,0,2068,2071,1,0,0,0,2069,2067,1, + 0,0,0,2069,2070,1,0,0,0,2070,343,1,0,0,0,2071,2069,1,0,0,0,2072, + 2075,3,346,173,0,2073,2075,3,388,194,0,2074,2072,1,0,0,0,2074,2073, + 1,0,0,0,2075,345,1,0,0,0,2076,2077,5,65,0,0,2077,2083,3,348,174, + 0,2078,2079,5,65,0,0,2079,2080,3,348,174,0,2080,2081,5,188,0,0,2081, + 2083,1,0,0,0,2082,2076,1,0,0,0,2082,2078,1,0,0,0,2083,347,1,0,0, + 0,2084,2085,5,123,0,0,2085,2086,3,350,175,0,2086,2087,5,128,0,0, + 2087,2090,1,0,0,0,2088,2090,5,66,0,0,2089,2084,1,0,0,0,2089,2088, + 1,0,0,0,2090,349,1,0,0,0,2091,2093,3,352,176,0,2092,2091,1,0,0,0, + 2093,2094,1,0,0,0,2094,2092,1,0,0,0,2094,2095,1,0,0,0,2095,351,1, + 0,0,0,2096,2107,3,624,312,0,2097,2098,3,624,312,0,2098,2099,5,129, + 0,0,2099,2107,1,0,0,0,2100,2101,5,129,0,0,2101,2107,3,624,312,0, + 2102,2103,3,624,312,0,2103,2104,5,129,0,0,2104,2105,3,624,312,0, + 2105,2107,1,0,0,0,2106,2096,1,0,0,0,2106,2097,1,0,0,0,2106,2100, + 1,0,0,0,2106,2102,1,0,0,0,2107,353,1,0,0,0,2108,2109,3,356,178,0, + 2109,2113,3,358,179,0,2110,2112,3,360,180,0,2111,2110,1,0,0,0,2112, + 2115,1,0,0,0,2113,2111,1,0,0,0,2113,2114,1,0,0,0,2114,2117,1,0,0, + 0,2115,2113,1,0,0,0,2116,2118,3,364,182,0,2117,2116,1,0,0,0,2117, + 2118,1,0,0,0,2118,2119,1,0,0,0,2119,2120,3,368,184,0,2120,355,1, + 0,0,0,2121,2122,5,51,0,0,2122,2123,5,123,0,0,2123,2124,3,624,312, + 0,2124,2125,5,128,0,0,2125,2126,5,52,0,0,2126,357,1,0,0,0,2127,2129, + 3,388,194,0,2128,2127,1,0,0,0,2129,2132,1,0,0,0,2130,2128,1,0,0, + 0,2130,2131,1,0,0,0,2131,359,1,0,0,0,2132,2130,1,0,0,0,2133,2134, + 3,362,181,0,2134,2135,3,358,179,0,2135,361,1,0,0,0,2136,2137,5,56, + 0,0,2137,2138,5,123,0,0,2138,2139,3,624,312,0,2139,2140,5,128,0, + 0,2140,2141,5,52,0,0,2141,2150,1,0,0,0,2142,2143,5,53,0,0,2143,2144, + 5,51,0,0,2144,2145,5,123,0,0,2145,2146,3,624,312,0,2146,2147,5,128, + 0,0,2147,2148,5,52,0,0,2148,2150,1,0,0,0,2149,2136,1,0,0,0,2149, + 2142,1,0,0,0,2150,363,1,0,0,0,2151,2152,3,366,183,0,2152,2153,3, + 358,179,0,2153,365,1,0,0,0,2154,2155,5,53,0,0,2155,367,1,0,0,0,2156, + 2160,5,54,0,0,2157,2158,5,12,0,0,2158,2160,5,51,0,0,2159,2156,1, + 0,0,0,2159,2157,1,0,0,0,2160,369,1,0,0,0,2161,2164,3,380,190,0,2162, + 2164,3,372,186,0,2163,2161,1,0,0,0,2163,2162,1,0,0,0,2164,371,1, + 0,0,0,2165,2167,3,378,189,0,2166,2165,1,0,0,0,2166,2167,1,0,0,0, + 2167,2168,1,0,0,0,2168,2170,5,57,0,0,2169,2171,3,428,214,0,2170, + 2169,1,0,0,0,2170,2171,1,0,0,0,2171,2175,1,0,0,0,2172,2174,3,388, + 194,0,2173,2172,1,0,0,0,2174,2177,1,0,0,0,2175,2173,1,0,0,0,2175, + 2176,1,0,0,0,2176,2178,1,0,0,0,2177,2175,1,0,0,0,2178,2179,3,374, + 187,0,2179,373,1,0,0,0,2180,2182,5,70,0,0,2181,2183,3,376,188,0, + 2182,2181,1,0,0,0,2182,2183,1,0,0,0,2183,2190,1,0,0,0,2184,2185, + 5,12,0,0,2185,2187,5,57,0,0,2186,2188,3,376,188,0,2187,2186,1,0, + 0,0,2187,2188,1,0,0,0,2188,2190,1,0,0,0,2189,2180,1,0,0,0,2189,2184, + 1,0,0,0,2190,375,1,0,0,0,2191,2192,3,300,150,0,2192,377,1,0,0,0, + 2193,2194,5,188,0,0,2194,2195,5,129,0,0,2195,379,1,0,0,0,2196,2197, + 5,57,0,0,2197,2198,3,382,191,0,2198,2202,3,428,214,0,2199,2201,3, + 388,194,0,2200,2199,1,0,0,0,2201,2204,1,0,0,0,2202,2200,1,0,0,0, + 2202,2203,1,0,0,0,2203,2205,1,0,0,0,2204,2202,1,0,0,0,2205,2206, + 3,384,192,0,2206,2207,3,386,193,0,2207,381,1,0,0,0,2208,2209,5,186, + 0,0,2209,383,1,0,0,0,2210,2211,5,186,0,0,2211,385,1,0,0,0,2212,2213, + 3,436,218,0,2213,387,1,0,0,0,2214,2220,3,320,160,0,2215,2220,3,48, + 24,0,2216,2220,3,392,196,0,2217,2220,3,62,31,0,2218,2220,3,390,195, + 0,2219,2214,1,0,0,0,2219,2215,1,0,0,0,2219,2216,1,0,0,0,2219,2217, + 1,0,0,0,2219,2218,1,0,0,0,2220,389,1,0,0,0,2221,2222,5,57,0,0,2222, + 2223,3,572,286,0,2223,2224,3,428,214,0,2224,391,1,0,0,0,2225,2226, + 5,48,0,0,2226,2233,3,394,197,0,2227,2229,5,122,0,0,2228,2227,1,0, + 0,0,2228,2229,1,0,0,0,2229,2230,1,0,0,0,2230,2232,3,394,197,0,2231, + 2228,1,0,0,0,2232,2235,1,0,0,0,2233,2231,1,0,0,0,2233,2234,1,0,0, + 0,2234,393,1,0,0,0,2235,2233,1,0,0,0,2236,2237,3,396,198,0,2237, + 2238,3,398,199,0,2238,395,1,0,0,0,2239,2244,3,402,201,0,2240,2241, + 5,122,0,0,2241,2243,3,402,201,0,2242,2240,1,0,0,0,2243,2246,1,0, + 0,0,2244,2242,1,0,0,0,2244,2245,1,0,0,0,2245,2247,1,0,0,0,2246,2244, + 1,0,0,0,2247,2248,5,133,0,0,2248,397,1,0,0,0,2249,2254,3,400,200, + 0,2250,2251,5,122,0,0,2251,2253,3,400,200,0,2252,2250,1,0,0,0,2253, + 2256,1,0,0,0,2254,2252,1,0,0,0,2254,2255,1,0,0,0,2255,2257,1,0,0, + 0,2256,2254,1,0,0,0,2257,2258,5,133,0,0,2258,399,1,0,0,0,2259,2269, + 3,284,142,0,2260,2261,3,284,142,0,2261,2262,5,192,0,0,2262,2263, + 3,284,142,0,2263,2269,1,0,0,0,2264,2265,3,292,146,0,2265,2266,5, + 192,0,0,2266,2267,3,284,142,0,2267,2269,1,0,0,0,2268,2259,1,0,0, + 0,2268,2260,1,0,0,0,2268,2264,1,0,0,0,2269,401,1,0,0,0,2270,2273, + 3,404,202,0,2271,2273,3,414,207,0,2272,2270,1,0,0,0,2272,2271,1, + 0,0,0,2273,403,1,0,0,0,2274,2276,3,432,216,0,2275,2277,3,406,203, + 0,2276,2275,1,0,0,0,2276,2277,1,0,0,0,2277,2279,1,0,0,0,2278,2280, + 3,412,206,0,2279,2278,1,0,0,0,2279,2280,1,0,0,0,2280,405,1,0,0,0, + 2281,2282,5,123,0,0,2282,2283,3,408,204,0,2283,2284,5,128,0,0,2284, + 407,1,0,0,0,2285,2287,3,410,205,0,2286,2285,1,0,0,0,2287,2288,1, + 0,0,0,2288,2286,1,0,0,0,2288,2289,1,0,0,0,2289,409,1,0,0,0,2290, + 2291,3,624,312,0,2291,411,1,0,0,0,2292,2294,5,123,0,0,2293,2295, + 3,624,312,0,2294,2293,1,0,0,0,2294,2295,1,0,0,0,2295,2296,1,0,0, + 0,2296,2297,3,680,340,0,2297,2298,5,128,0,0,2298,413,1,0,0,0,2299, + 2300,5,123,0,0,2300,2301,3,416,208,0,2301,2302,5,122,0,0,2302,2303, + 3,426,213,0,2303,2304,5,130,0,0,2304,2305,3,624,312,0,2305,2306, + 5,122,0,0,2306,2307,3,624,312,0,2307,2308,5,128,0,0,2308,2322,1, + 0,0,0,2309,2310,5,123,0,0,2310,2311,3,416,208,0,2311,2312,5,122, + 0,0,2312,2313,3,426,213,0,2313,2314,5,130,0,0,2314,2315,3,624,312, + 0,2315,2316,5,122,0,0,2316,2317,3,624,312,0,2317,2318,5,122,0,0, + 2318,2319,3,624,312,0,2319,2320,5,128,0,0,2320,2322,1,0,0,0,2321, + 2299,1,0,0,0,2321,2309,1,0,0,0,2322,415,1,0,0,0,2323,2325,3,418, + 209,0,2324,2323,1,0,0,0,2325,2326,1,0,0,0,2326,2324,1,0,0,0,2326, + 2327,1,0,0,0,2327,417,1,0,0,0,2328,2332,3,424,212,0,2329,2332,3, + 414,207,0,2330,2332,3,420,210,0,2331,2328,1,0,0,0,2331,2329,1,0, + 0,0,2331,2330,1,0,0,0,2332,419,1,0,0,0,2333,2334,6,210,-1,0,2334, + 2335,3,432,216,0,2335,2336,3,422,211,0,2336,2341,1,0,0,0,2337,2338, + 10,1,0,0,2338,2340,3,422,211,0,2339,2337,1,0,0,0,2340,2343,1,0,0, + 0,2341,2339,1,0,0,0,2341,2342,1,0,0,0,2342,421,1,0,0,0,2343,2341, + 1,0,0,0,2344,2345,5,123,0,0,2345,2346,3,676,338,0,2346,2347,5,128, + 0,0,2347,2348,5,124,0,0,2348,2349,5,188,0,0,2349,2353,1,0,0,0,2350, + 2351,5,124,0,0,2351,2353,5,188,0,0,2352,2344,1,0,0,0,2352,2350,1, + 0,0,0,2353,423,1,0,0,0,2354,2355,3,432,216,0,2355,2356,5,123,0,0, + 2356,2357,3,676,338,0,2357,2358,5,128,0,0,2358,2365,1,0,0,0,2359, + 2360,3,420,210,0,2360,2361,5,123,0,0,2361,2362,3,676,338,0,2362, + 2363,5,128,0,0,2363,2365,1,0,0,0,2364,2354,1,0,0,0,2364,2359,1,0, + 0,0,2365,425,1,0,0,0,2366,2367,5,188,0,0,2367,427,1,0,0,0,2368,2370, + 5,122,0,0,2369,2368,1,0,0,0,2369,2370,1,0,0,0,2370,2371,1,0,0,0, + 2371,2372,3,430,215,0,2372,429,1,0,0,0,2373,2374,3,432,216,0,2374, + 2375,5,130,0,0,2375,2376,3,624,312,0,2376,2377,5,122,0,0,2377,2379, + 3,624,312,0,2378,2380,3,434,217,0,2379,2378,1,0,0,0,2379,2380,1, + 0,0,0,2380,2387,1,0,0,0,2381,2382,5,125,0,0,2382,2383,5,123,0,0, + 2383,2384,3,624,312,0,2384,2385,5,128,0,0,2385,2387,1,0,0,0,2386, + 2373,1,0,0,0,2386,2381,1,0,0,0,2387,431,1,0,0,0,2388,2389,5,188, + 0,0,2389,433,1,0,0,0,2390,2391,5,122,0,0,2391,2392,3,624,312,0,2392, + 435,1,0,0,0,2393,2423,3,570,285,0,2394,2423,3,576,288,0,2395,2423, + 3,584,292,0,2396,2423,3,586,293,0,2397,2423,3,562,281,0,2398,2423, + 3,548,274,0,2399,2423,3,546,273,0,2400,2423,3,544,272,0,2401,2423, + 3,538,269,0,2402,2423,3,540,270,0,2403,2423,3,534,267,0,2404,2423, + 3,694,347,0,2405,2423,3,528,264,0,2406,2423,3,522,261,0,2407,2423, + 3,520,260,0,2408,2423,3,510,255,0,2409,2423,3,488,244,0,2410,2423, + 3,484,242,0,2411,2423,3,486,243,0,2412,2423,3,476,238,0,2413,2423, + 3,470,235,0,2414,2423,3,472,236,0,2415,2423,3,460,230,0,2416,2423, + 3,458,229,0,2417,2423,3,454,227,0,2418,2423,3,452,226,0,2419,2423, + 3,444,222,0,2420,2423,3,440,220,0,2421,2423,3,438,219,0,2422,2393, + 1,0,0,0,2422,2394,1,0,0,0,2422,2395,1,0,0,0,2422,2396,1,0,0,0,2422, + 2397,1,0,0,0,2422,2398,1,0,0,0,2422,2399,1,0,0,0,2422,2400,1,0,0, + 0,2422,2401,1,0,0,0,2422,2402,1,0,0,0,2422,2403,1,0,0,0,2422,2404, + 1,0,0,0,2422,2405,1,0,0,0,2422,2406,1,0,0,0,2422,2407,1,0,0,0,2422, + 2408,1,0,0,0,2422,2409,1,0,0,0,2422,2410,1,0,0,0,2422,2411,1,0,0, + 0,2422,2412,1,0,0,0,2422,2413,1,0,0,0,2422,2414,1,0,0,0,2422,2415, + 1,0,0,0,2422,2416,1,0,0,0,2422,2417,1,0,0,0,2422,2418,1,0,0,0,2422, + 2419,1,0,0,0,2422,2420,1,0,0,0,2422,2421,1,0,0,0,2423,437,1,0,0, + 0,2424,2425,5,61,0,0,2425,2426,5,123,0,0,2426,2427,3,334,167,0,2427, + 2428,5,128,0,0,2428,2429,3,576,288,0,2429,439,1,0,0,0,2430,2431, + 5,188,0,0,2431,2432,5,25,0,0,2432,2443,3,442,221,0,2433,2435,5,188, + 0,0,2434,2436,3,578,289,0,2435,2434,1,0,0,0,2435,2436,1,0,0,0,2436, + 2437,1,0,0,0,2437,2438,5,124,0,0,2438,2439,3,670,335,0,2439,2440, + 5,25,0,0,2440,2441,3,442,221,0,2441,2443,1,0,0,0,2442,2430,1,0,0, + 0,2442,2433,1,0,0,0,2443,441,1,0,0,0,2444,2445,3,624,312,0,2445, + 443,1,0,0,0,2446,2447,5,180,0,0,2447,2448,5,123,0,0,2448,2449,3, + 446,223,0,2449,2450,5,128,0,0,2450,445,1,0,0,0,2451,2456,3,448,224, + 0,2452,2453,5,122,0,0,2453,2455,3,448,224,0,2454,2452,1,0,0,0,2455, + 2458,1,0,0,0,2456,2454,1,0,0,0,2456,2457,1,0,0,0,2457,447,1,0,0, + 0,2458,2456,1,0,0,0,2459,2462,5,188,0,0,2460,2462,3,450,225,0,2461, + 2459,1,0,0,0,2461,2460,1,0,0,0,2462,449,1,0,0,0,2463,2464,6,225, + -1,0,2464,2466,5,188,0,0,2465,2467,3,578,289,0,2466,2465,1,0,0,0, + 2466,2467,1,0,0,0,2467,2468,1,0,0,0,2468,2469,5,124,0,0,2469,2470, + 5,188,0,0,2470,2475,1,0,0,0,2471,2472,10,1,0,0,2472,2474,3,422,211, + 0,2473,2471,1,0,0,0,2474,2477,1,0,0,0,2475,2473,1,0,0,0,2475,2476, + 1,0,0,0,2476,451,1,0,0,0,2477,2475,1,0,0,0,2478,2480,5,189,0,0,2479, + 2481,3,376,188,0,2480,2479,1,0,0,0,2480,2481,1,0,0,0,2481,453,1, + 0,0,0,2482,2483,5,179,0,0,2483,2484,5,123,0,0,2484,2485,3,456,228, + 0,2485,2486,5,122,0,0,2486,2487,5,127,0,0,2487,2488,5,130,0,0,2488, + 2489,3,404,202,0,2489,2490,5,128,0,0,2490,2497,1,0,0,0,2491,2492, + 5,179,0,0,2492,2493,5,123,0,0,2493,2494,3,456,228,0,2494,2495,5, + 128,0,0,2495,2497,1,0,0,0,2496,2482,1,0,0,0,2496,2491,1,0,0,0,2497, + 455,1,0,0,0,2498,2503,3,466,233,0,2499,2500,5,122,0,0,2500,2502, + 3,466,233,0,2501,2499,1,0,0,0,2502,2505,1,0,0,0,2503,2501,1,0,0, + 0,2503,2504,1,0,0,0,2504,457,1,0,0,0,2505,2503,1,0,0,0,2506,2508, + 5,181,0,0,2507,2509,3,376,188,0,2508,2507,1,0,0,0,2508,2509,1,0, + 0,0,2509,459,1,0,0,0,2510,2511,5,126,0,0,2511,2512,5,123,0,0,2512, + 2513,3,462,231,0,2513,2514,5,122,0,0,2514,2515,5,127,0,0,2515,2516, + 5,130,0,0,2516,2517,3,404,202,0,2517,2518,5,128,0,0,2518,2525,1, + 0,0,0,2519,2520,5,126,0,0,2520,2521,5,123,0,0,2521,2522,3,462,231, + 0,2522,2523,5,128,0,0,2523,2525,1,0,0,0,2524,2510,1,0,0,0,2524,2519, + 1,0,0,0,2525,461,1,0,0,0,2526,2531,3,464,232,0,2527,2528,5,122,0, + 0,2528,2530,3,464,232,0,2529,2527,1,0,0,0,2530,2533,1,0,0,0,2531, + 2529,1,0,0,0,2531,2532,1,0,0,0,2532,463,1,0,0,0,2533,2531,1,0,0, + 0,2534,2539,3,466,233,0,2535,2536,3,466,233,0,2536,2537,3,468,234, + 0,2537,2539,1,0,0,0,2538,2534,1,0,0,0,2538,2535,1,0,0,0,2539,465, + 1,0,0,0,2540,2541,6,233,-1,0,2541,2542,3,432,216,0,2542,2547,1,0, + 0,0,2543,2544,10,1,0,0,2544,2546,3,422,211,0,2545,2543,1,0,0,0,2546, + 2549,1,0,0,0,2547,2545,1,0,0,0,2547,2548,1,0,0,0,2548,467,1,0,0, + 0,2549,2547,1,0,0,0,2550,2551,5,123,0,0,2551,2552,3,676,338,0,2552, + 2553,5,128,0,0,2553,469,1,0,0,0,2554,2556,5,68,0,0,2555,2557,7,6, + 0,0,2556,2555,1,0,0,0,2556,2557,1,0,0,0,2557,471,1,0,0,0,2558,2559, + 5,72,0,0,2559,2560,5,123,0,0,2560,2561,3,474,237,0,2561,2563,5,128, + 0,0,2562,2564,3,512,256,0,2563,2562,1,0,0,0,2563,2564,1,0,0,0,2564, + 473,1,0,0,0,2565,2566,6,237,-1,0,2566,2567,3,588,294,0,2567,2568, + 5,121,0,0,2568,2569,5,122,0,0,2569,2580,1,0,0,0,2570,2571,3,588, + 294,0,2571,2572,5,122,0,0,2572,2573,3,518,259,0,2573,2580,1,0,0, + 0,2574,2575,3,588,294,0,2575,2576,5,122,0,0,2576,2577,3,508,254, + 0,2577,2580,1,0,0,0,2578,2580,3,508,254,0,2579,2565,1,0,0,0,2579, + 2570,1,0,0,0,2579,2574,1,0,0,0,2579,2578,1,0,0,0,2580,2586,1,0,0, + 0,2581,2582,10,1,0,0,2582,2583,5,122,0,0,2583,2585,3,508,254,0,2584, + 2581,1,0,0,0,2585,2588,1,0,0,0,2586,2584,1,0,0,0,2586,2587,1,0,0, + 0,2587,475,1,0,0,0,2588,2586,1,0,0,0,2589,2590,5,188,0,0,2590,2591, + 3,478,239,0,2591,477,1,0,0,0,2592,2594,5,123,0,0,2593,2595,3,480, + 240,0,2594,2593,1,0,0,0,2594,2595,1,0,0,0,2595,2596,1,0,0,0,2596, + 2597,5,128,0,0,2597,2598,5,130,0,0,2598,2599,3,624,312,0,2599,479, + 1,0,0,0,2600,2605,3,482,241,0,2601,2602,5,122,0,0,2602,2604,3,482, + 241,0,2603,2601,1,0,0,0,2604,2607,1,0,0,0,2605,2603,1,0,0,0,2605, + 2606,1,0,0,0,2606,481,1,0,0,0,2607,2605,1,0,0,0,2608,2609,5,188, + 0,0,2609,483,1,0,0,0,2610,2612,5,91,0,0,2611,2613,3,624,312,0,2612, + 2611,1,0,0,0,2612,2613,1,0,0,0,2613,485,1,0,0,0,2614,2615,5,114, + 0,0,2615,2622,3,588,294,0,2616,2617,5,114,0,0,2617,2618,5,123,0, + 0,2618,2619,3,590,295,0,2619,2620,5,128,0,0,2620,2622,1,0,0,0,2621, + 2614,1,0,0,0,2621,2616,1,0,0,0,2622,487,1,0,0,0,2623,2624,5,73,0, + 0,2624,2626,3,502,251,0,2625,2627,3,496,248,0,2626,2625,1,0,0,0, + 2626,2627,1,0,0,0,2627,2634,1,0,0,0,2628,2629,5,73,0,0,2629,2631, + 3,492,246,0,2630,2632,3,490,245,0,2631,2630,1,0,0,0,2631,2632,1, + 0,0,0,2632,2634,1,0,0,0,2633,2623,1,0,0,0,2633,2628,1,0,0,0,2634, + 489,1,0,0,0,2635,2636,5,122,0,0,2636,2637,3,496,248,0,2637,491,1, + 0,0,0,2638,2656,3,572,286,0,2639,2656,5,192,0,0,2640,2656,3,558, + 279,0,2641,2642,3,558,279,0,2642,2643,5,133,0,0,2643,2644,5,184, + 0,0,2644,2645,5,133,0,0,2645,2646,5,185,0,0,2646,2647,3,556,278, + 0,2647,2656,1,0,0,0,2648,2649,3,494,247,0,2649,2650,5,133,0,0,2650, + 2651,5,184,0,0,2651,2652,5,133,0,0,2652,2653,5,185,0,0,2653,2654, + 3,556,278,0,2654,2656,1,0,0,0,2655,2638,1,0,0,0,2655,2639,1,0,0, + 0,2655,2640,1,0,0,0,2655,2641,1,0,0,0,2655,2648,1,0,0,0,2656,493, + 1,0,0,0,2657,2658,5,123,0,0,2658,2659,3,598,299,0,2659,2660,5,128, + 0,0,2660,495,1,0,0,0,2661,2666,3,498,249,0,2662,2663,5,122,0,0,2663, + 2665,3,498,249,0,2664,2662,1,0,0,0,2665,2668,1,0,0,0,2666,2664,1, + 0,0,0,2666,2667,1,0,0,0,2667,497,1,0,0,0,2668,2666,1,0,0,0,2669, + 2672,3,670,335,0,2670,2672,3,500,250,0,2671,2669,1,0,0,0,2671,2670, + 1,0,0,0,2672,499,1,0,0,0,2673,2674,5,123,0,0,2674,2675,3,496,248, + 0,2675,2676,5,122,0,0,2676,2677,3,426,213,0,2677,2678,5,130,0,0, + 2678,2679,3,624,312,0,2679,2680,5,122,0,0,2680,2682,3,624,312,0, + 2681,2683,3,434,217,0,2682,2681,1,0,0,0,2682,2683,1,0,0,0,2683,2684, + 1,0,0,0,2684,2685,5,128,0,0,2685,501,1,0,0,0,2686,2692,3,504,252, + 0,2687,2688,5,123,0,0,2688,2689,3,506,253,0,2689,2690,5,128,0,0, + 2690,2692,1,0,0,0,2691,2686,1,0,0,0,2691,2687,1,0,0,0,2692,503,1, + 0,0,0,2693,2694,5,123,0,0,2694,2695,3,598,299,0,2695,2696,5,128, + 0,0,2696,2701,1,0,0,0,2697,2698,5,123,0,0,2698,2699,5,192,0,0,2699, + 2701,5,128,0,0,2700,2693,1,0,0,0,2700,2697,1,0,0,0,2701,505,1,0, + 0,0,2702,2703,6,253,-1,0,2703,2704,3,588,294,0,2704,2705,5,122,0, + 0,2705,2706,3,508,254,0,2706,2713,1,0,0,0,2707,2708,3,588,294,0, + 2708,2709,5,122,0,0,2709,2710,3,518,259,0,2710,2713,1,0,0,0,2711, + 2713,3,508,254,0,2712,2702,1,0,0,0,2712,2707,1,0,0,0,2712,2711,1, + 0,0,0,2713,2719,1,0,0,0,2714,2715,10,1,0,0,2715,2716,5,122,0,0,2716, + 2718,3,508,254,0,2717,2714,1,0,0,0,2718,2721,1,0,0,0,2719,2717,1, + 0,0,0,2719,2720,1,0,0,0,2720,507,1,0,0,0,2721,2719,1,0,0,0,2722, + 2723,5,76,0,0,2723,2724,5,130,0,0,2724,2753,3,518,259,0,2725,2726, + 5,77,0,0,2726,2727,5,130,0,0,2727,2753,3,588,294,0,2728,2729,5,69, + 0,0,2729,2730,5,130,0,0,2730,2753,3,624,312,0,2731,2732,5,12,0,0, + 2732,2733,5,130,0,0,2733,2753,3,572,286,0,2734,2735,5,83,0,0,2735, + 2736,5,130,0,0,2736,2753,3,572,286,0,2737,2738,5,87,0,0,2738,2739, + 5,130,0,0,2739,2753,3,596,298,0,2740,2741,5,86,0,0,2741,2742,5,130, + 0,0,2742,2753,3,96,48,0,2743,2744,5,85,0,0,2744,2745,5,130,0,0,2745, + 2753,3,554,277,0,2746,2747,5,84,0,0,2747,2748,5,130,0,0,2748,2753, + 3,404,202,0,2749,2750,5,142,0,0,2750,2751,5,130,0,0,2751,2753,3, + 572,286,0,2752,2722,1,0,0,0,2752,2725,1,0,0,0,2752,2728,1,0,0,0, + 2752,2731,1,0,0,0,2752,2734,1,0,0,0,2752,2737,1,0,0,0,2752,2740, + 1,0,0,0,2752,2743,1,0,0,0,2752,2746,1,0,0,0,2752,2749,1,0,0,0,2753, + 509,1,0,0,0,2754,2755,5,74,0,0,2755,2756,3,518,259,0,2756,2757,5, + 122,0,0,2757,2758,3,512,256,0,2758,2762,1,0,0,0,2759,2760,5,74,0, + 0,2760,2762,3,518,259,0,2761,2754,1,0,0,0,2761,2759,1,0,0,0,2762, + 511,1,0,0,0,2763,2766,3,624,312,0,2764,2766,3,514,257,0,2765,2763, + 1,0,0,0,2765,2764,1,0,0,0,2766,513,1,0,0,0,2767,2768,6,257,-1,0, + 2768,2769,3,624,312,0,2769,2770,5,122,0,0,2770,2771,3,624,312,0, + 2771,2778,1,0,0,0,2772,2773,3,624,312,0,2773,2774,5,122,0,0,2774, + 2775,3,516,258,0,2775,2778,1,0,0,0,2776,2778,3,516,258,0,2777,2767, + 1,0,0,0,2777,2772,1,0,0,0,2777,2776,1,0,0,0,2778,2787,1,0,0,0,2779, + 2780,10,2,0,0,2780,2781,5,122,0,0,2781,2786,3,624,312,0,2782,2783, + 10,1,0,0,2783,2784,5,122,0,0,2784,2786,3,516,258,0,2785,2779,1,0, + 0,0,2785,2782,1,0,0,0,2786,2789,1,0,0,0,2787,2785,1,0,0,0,2787,2788, + 1,0,0,0,2788,515,1,0,0,0,2789,2787,1,0,0,0,2790,2791,5,123,0,0,2791, + 2792,3,624,312,0,2792,2793,5,122,0,0,2793,2794,3,426,213,0,2794, + 2795,5,130,0,0,2795,2796,3,624,312,0,2796,2797,5,122,0,0,2797,2799, + 3,624,312,0,2798,2800,3,434,217,0,2799,2798,1,0,0,0,2799,2800,1, + 0,0,0,2800,2801,1,0,0,0,2801,2802,5,128,0,0,2802,2817,1,0,0,0,2803, + 2804,5,123,0,0,2804,2805,3,514,257,0,2805,2806,5,122,0,0,2806,2807, + 3,426,213,0,2807,2808,5,130,0,0,2808,2809,3,624,312,0,2809,2810, + 5,122,0,0,2810,2812,3,624,312,0,2811,2813,3,434,217,0,2812,2811, + 1,0,0,0,2812,2813,1,0,0,0,2813,2814,1,0,0,0,2814,2815,5,128,0,0, + 2815,2817,1,0,0,0,2816,2790,1,0,0,0,2816,2803,1,0,0,0,2817,517,1, + 0,0,0,2818,2822,3,572,286,0,2819,2822,3,554,277,0,2820,2822,5,192, + 0,0,2821,2818,1,0,0,0,2821,2819,1,0,0,0,2821,2820,1,0,0,0,2822,519, + 1,0,0,0,2823,2825,5,71,0,0,2824,2826,7,6,0,0,2825,2824,1,0,0,0,2825, + 2826,1,0,0,0,2826,521,1,0,0,0,2827,2828,5,75,0,0,2828,2829,5,123, + 0,0,2829,2830,3,524,262,0,2830,2831,5,128,0,0,2831,523,1,0,0,0,2832, + 2834,3,592,296,0,2833,2832,1,0,0,0,2833,2834,1,0,0,0,2834,2836,1, + 0,0,0,2835,2837,3,526,263,0,2836,2835,1,0,0,0,2836,2837,1,0,0,0, + 2837,2842,1,0,0,0,2838,2839,5,122,0,0,2839,2841,3,526,263,0,2840, + 2838,1,0,0,0,2841,2844,1,0,0,0,2842,2840,1,0,0,0,2842,2843,1,0,0, + 0,2843,525,1,0,0,0,2844,2842,1,0,0,0,2845,2846,5,77,0,0,2846,2847, + 5,130,0,0,2847,2885,3,588,294,0,2848,2849,5,83,0,0,2849,2850,5,130, + 0,0,2850,2885,3,572,286,0,2851,2852,5,97,0,0,2852,2853,5,130,0,0, + 2853,2885,3,554,277,0,2854,2855,5,98,0,0,2855,2856,5,130,0,0,2856, + 2885,3,554,277,0,2857,2858,5,99,0,0,2858,2859,5,130,0,0,2859,2885, + 3,554,277,0,2860,2861,5,101,0,0,2861,2862,5,130,0,0,2862,2885,3, + 554,277,0,2863,2864,5,102,0,0,2864,2865,5,130,0,0,2865,2885,3,624, + 312,0,2866,2867,5,190,0,0,2867,2868,5,130,0,0,2868,2885,3,554,277, + 0,2869,2870,5,87,0,0,2870,2871,5,130,0,0,2871,2885,3,596,298,0,2872, + 2873,5,100,0,0,2873,2874,5,130,0,0,2874,2885,3,554,277,0,2875,2876, + 5,79,0,0,2876,2877,5,130,0,0,2877,2885,3,554,277,0,2878,2879,5,80, + 0,0,2879,2880,5,130,0,0,2880,2885,3,554,277,0,2881,2882,5,78,0,0, + 2882,2883,5,130,0,0,2883,2885,3,554,277,0,2884,2845,1,0,0,0,2884, + 2848,1,0,0,0,2884,2851,1,0,0,0,2884,2854,1,0,0,0,2884,2857,1,0,0, + 0,2884,2860,1,0,0,0,2884,2863,1,0,0,0,2884,2866,1,0,0,0,2884,2869, + 1,0,0,0,2884,2872,1,0,0,0,2884,2875,1,0,0,0,2884,2878,1,0,0,0,2884, + 2881,1,0,0,0,2885,527,1,0,0,0,2886,2887,5,111,0,0,2887,2888,5,123, + 0,0,2888,2889,3,530,265,0,2889,2890,5,128,0,0,2890,2900,1,0,0,0, + 2891,2892,5,111,0,0,2892,2893,5,123,0,0,2893,2894,5,81,0,0,2894, + 2895,5,130,0,0,2895,2896,3,596,298,0,2896,2897,5,128,0,0,2897,2898, + 3,512,256,0,2898,2900,1,0,0,0,2899,2886,1,0,0,0,2899,2891,1,0,0, + 0,2900,529,1,0,0,0,2901,2903,3,588,294,0,2902,2901,1,0,0,0,2902, + 2903,1,0,0,0,2903,2905,1,0,0,0,2904,2906,3,532,266,0,2905,2904,1, + 0,0,0,2905,2906,1,0,0,0,2906,2911,1,0,0,0,2907,2908,5,122,0,0,2908, + 2910,3,532,266,0,2909,2907,1,0,0,0,2910,2913,1,0,0,0,2911,2909,1, + 0,0,0,2911,2912,1,0,0,0,2912,531,1,0,0,0,2913,2911,1,0,0,0,2914, + 2915,5,77,0,0,2915,2916,5,130,0,0,2916,2990,3,588,294,0,2917,2918, + 5,97,0,0,2918,2919,5,130,0,0,2919,2990,3,554,277,0,2920,2921,5,83, + 0,0,2921,2922,5,130,0,0,2922,2990,3,572,286,0,2923,2924,5,87,0,0, + 2924,2925,5,130,0,0,2925,2990,3,596,298,0,2926,2927,5,103,0,0,2927, + 2928,5,130,0,0,2928,2990,3,596,298,0,2929,2930,5,104,0,0,2930,2931, + 5,130,0,0,2931,2990,3,596,298,0,2932,2933,5,105,0,0,2933,2934,5, + 130,0,0,2934,2990,3,596,298,0,2935,2936,5,106,0,0,2936,2937,5,130, + 0,0,2937,2990,3,596,298,0,2938,2939,5,188,0,0,2939,2940,5,130,0, + 0,2940,2990,3,596,298,0,2941,2942,5,99,0,0,2942,2943,5,130,0,0,2943, + 2990,3,596,298,0,2944,2945,5,95,0,0,2945,2946,5,130,0,0,2946,2990, + 3,596,298,0,2947,2948,5,67,0,0,2948,2949,5,130,0,0,2949,2990,3,596, + 298,0,2950,2951,5,101,0,0,2951,2952,5,130,0,0,2952,2990,3,596,298, + 0,2953,2954,5,108,0,0,2954,2955,5,130,0,0,2955,2990,3,596,298,0, + 2956,2957,5,109,0,0,2957,2958,5,130,0,0,2958,2990,3,596,298,0,2959, + 2960,5,102,0,0,2960,2961,5,130,0,0,2961,2990,3,624,312,0,2962,2963, + 5,110,0,0,2963,2964,5,130,0,0,2964,2990,3,596,298,0,2965,2966,5, + 190,0,0,2966,2967,5,130,0,0,2967,2990,3,596,298,0,2968,2969,5,100, + 0,0,2969,2970,5,130,0,0,2970,2990,3,596,298,0,2971,2972,5,79,0,0, + 2972,2973,5,130,0,0,2973,2990,3,596,298,0,2974,2975,5,73,0,0,2975, + 2976,5,130,0,0,2976,2990,3,596,298,0,2977,2978,5,72,0,0,2978,2979, + 5,130,0,0,2979,2990,3,596,298,0,2980,2981,5,82,0,0,2981,2982,5,130, + 0,0,2982,2990,3,596,298,0,2983,2984,5,80,0,0,2984,2985,5,130,0,0, + 2985,2990,3,596,298,0,2986,2987,5,78,0,0,2987,2988,5,130,0,0,2988, + 2990,3,596,298,0,2989,2914,1,0,0,0,2989,2917,1,0,0,0,2989,2920,1, + 0,0,0,2989,2923,1,0,0,0,2989,2926,1,0,0,0,2989,2929,1,0,0,0,2989, + 2932,1,0,0,0,2989,2935,1,0,0,0,2989,2938,1,0,0,0,2989,2941,1,0,0, + 0,2989,2944,1,0,0,0,2989,2947,1,0,0,0,2989,2950,1,0,0,0,2989,2953, + 1,0,0,0,2989,2956,1,0,0,0,2989,2959,1,0,0,0,2989,2962,1,0,0,0,2989, + 2965,1,0,0,0,2989,2968,1,0,0,0,2989,2971,1,0,0,0,2989,2974,1,0,0, + 0,2989,2977,1,0,0,0,2989,2980,1,0,0,0,2989,2983,1,0,0,0,2989,2986, + 1,0,0,0,2990,533,1,0,0,0,2991,2995,5,50,0,0,2992,2993,5,49,0,0,2993, + 2995,5,159,0,0,2994,2991,1,0,0,0,2994,2992,1,0,0,0,2995,2996,1,0, + 0,0,2996,3018,3,432,216,0,2997,3001,5,50,0,0,2998,2999,5,49,0,0, + 2999,3001,5,159,0,0,3000,2997,1,0,0,0,3000,2998,1,0,0,0,3001,3002, + 1,0,0,0,3002,3003,3,432,216,0,3003,3004,5,123,0,0,3004,3005,3,542, + 271,0,3005,3006,5,128,0,0,3006,3018,1,0,0,0,3007,3011,5,50,0,0,3008, + 3009,5,49,0,0,3009,3011,5,159,0,0,3010,3007,1,0,0,0,3010,3008,1, + 0,0,0,3011,3012,1,0,0,0,3012,3013,3,536,268,0,3013,3014,5,123,0, + 0,3014,3015,3,542,271,0,3015,3016,5,128,0,0,3016,3018,1,0,0,0,3017, + 2994,1,0,0,0,3017,3000,1,0,0,0,3017,3010,1,0,0,0,3018,535,1,0,0, + 0,3019,3020,3,432,216,0,3020,3021,5,122,0,0,3021,537,1,0,0,0,3022, + 3026,5,50,0,0,3023,3024,5,49,0,0,3024,3026,5,159,0,0,3025,3022,1, + 0,0,0,3025,3023,1,0,0,0,3026,3027,1,0,0,0,3027,3028,3,572,286,0, + 3028,539,1,0,0,0,3029,3030,5,50,0,0,3030,3031,5,123,0,0,3031,3032, + 3,542,271,0,3032,3034,5,128,0,0,3033,3035,5,122,0,0,3034,3033,1, + 0,0,0,3034,3035,1,0,0,0,3035,3036,1,0,0,0,3036,3037,3,624,312,0, + 3037,541,1,0,0,0,3038,3043,3,572,286,0,3039,3040,5,122,0,0,3040, + 3042,3,572,286,0,3041,3039,1,0,0,0,3042,3045,1,0,0,0,3043,3041,1, + 0,0,0,3043,3044,1,0,0,0,3044,543,1,0,0,0,3045,3043,1,0,0,0,3046, + 3050,5,113,0,0,3047,3048,5,12,0,0,3048,3050,5,97,0,0,3049,3046,1, + 0,0,0,3049,3047,1,0,0,0,3050,3051,1,0,0,0,3051,3062,3,588,294,0, + 3052,3056,5,113,0,0,3053,3054,5,12,0,0,3054,3056,5,97,0,0,3055,3052, + 1,0,0,0,3055,3053,1,0,0,0,3056,3057,1,0,0,0,3057,3058,5,123,0,0, + 3058,3059,3,590,295,0,3059,3060,5,128,0,0,3060,3062,1,0,0,0,3061, + 3049,1,0,0,0,3061,3055,1,0,0,0,3062,545,1,0,0,0,3063,3064,5,59,0, + 0,3064,547,1,0,0,0,3065,3066,5,92,0,0,3066,3067,5,123,0,0,3067,3068, + 3,550,275,0,3068,3069,5,128,0,0,3069,549,1,0,0,0,3070,3072,3,592, + 296,0,3071,3070,1,0,0,0,3071,3072,1,0,0,0,3072,3074,1,0,0,0,3073, + 3075,3,552,276,0,3074,3073,1,0,0,0,3074,3075,1,0,0,0,3075,3080,1, + 0,0,0,3076,3077,5,122,0,0,3077,3079,3,552,276,0,3078,3076,1,0,0, + 0,3079,3082,1,0,0,0,3080,3078,1,0,0,0,3080,3081,1,0,0,0,3081,551, + 1,0,0,0,3082,3080,1,0,0,0,3083,3084,5,77,0,0,3084,3085,5,130,0,0, + 3085,3095,3,588,294,0,3086,3087,5,83,0,0,3087,3088,5,130,0,0,3088, + 3095,3,572,286,0,3089,3090,5,98,0,0,3090,3091,5,130,0,0,3091,3095, + 3,554,277,0,3092,3093,5,87,0,0,3093,3095,3,596,298,0,3094,3083,1, + 0,0,0,3094,3086,1,0,0,0,3094,3089,1,0,0,0,3094,3092,1,0,0,0,3095, + 553,1,0,0,0,3096,3100,3,556,278,0,3097,3099,3,560,280,0,3098,3097, + 1,0,0,0,3099,3102,1,0,0,0,3100,3098,1,0,0,0,3100,3101,1,0,0,0,3101, + 555,1,0,0,0,3102,3100,1,0,0,0,3103,3109,3,558,279,0,3104,3105,5, + 123,0,0,3105,3106,3,554,277,0,3106,3107,5,128,0,0,3107,3109,1,0, + 0,0,3108,3103,1,0,0,0,3108,3104,1,0,0,0,3109,557,1,0,0,0,3110,3114, + 5,177,0,0,3111,3114,3,670,335,0,3112,3114,3,664,332,0,3113,3110, + 1,0,0,0,3113,3111,1,0,0,0,3113,3112,1,0,0,0,3114,559,1,0,0,0,3115, + 3116,3,556,278,0,3116,3117,5,133,0,0,3117,3118,5,184,0,0,3118,3119, + 5,133,0,0,3119,3120,5,185,0,0,3120,561,1,0,0,0,3121,3122,5,90,0, + 0,3122,3130,3,564,282,0,3123,3124,5,90,0,0,3124,3125,3,564,282,0, + 3125,3126,5,123,0,0,3126,3127,3,566,283,0,3127,3128,5,128,0,0,3128, + 3130,1,0,0,0,3129,3121,1,0,0,0,3129,3123,1,0,0,0,3130,563,1,0,0, + 0,3131,3132,5,188,0,0,3132,565,1,0,0,0,3133,3135,3,568,284,0,3134, + 3133,1,0,0,0,3134,3135,1,0,0,0,3135,3140,1,0,0,0,3136,3137,5,122, + 0,0,3137,3139,3,568,284,0,3138,3136,1,0,0,0,3139,3142,1,0,0,0,3140, + 3138,1,0,0,0,3140,3141,1,0,0,0,3141,567,1,0,0,0,3142,3140,1,0,0, + 0,3143,3158,3,624,312,0,3144,3158,5,155,0,0,3145,3146,5,192,0,0, + 3146,3158,3,572,286,0,3147,3148,5,188,0,0,3148,3149,5,130,0,0,3149, + 3158,3,624,312,0,3150,3151,5,188,0,0,3151,3152,5,130,0,0,3152,3158, + 5,155,0,0,3153,3154,5,188,0,0,3154,3155,5,130,0,0,3155,3156,5,192, + 0,0,3156,3158,3,572,286,0,3157,3143,1,0,0,0,3157,3144,1,0,0,0,3157, + 3145,1,0,0,0,3157,3147,1,0,0,0,3157,3150,1,0,0,0,3157,3153,1,0,0, + 0,3158,569,1,0,0,0,3159,3160,5,51,0,0,3160,3161,5,123,0,0,3161,3162, + 3,624,312,0,3162,3163,5,128,0,0,3163,3164,3,572,286,0,3164,3165, + 5,122,0,0,3165,3166,3,572,286,0,3166,3167,5,122,0,0,3167,3168,3, + 572,286,0,3168,571,1,0,0,0,3169,3170,3,574,287,0,3170,573,1,0,0, + 0,3171,3172,5,186,0,0,3172,575,1,0,0,0,3173,3175,3,574,287,0,3174, + 3173,1,0,0,0,3174,3175,1,0,0,0,3175,3176,1,0,0,0,3176,3178,5,188, + 0,0,3177,3179,3,578,289,0,3178,3177,1,0,0,0,3178,3179,1,0,0,0,3179, + 3181,1,0,0,0,3180,3182,3,412,206,0,3181,3180,1,0,0,0,3181,3182,1, + 0,0,0,3182,3183,1,0,0,0,3183,3184,5,130,0,0,3184,3204,3,624,312, + 0,3185,3187,5,188,0,0,3186,3188,3,578,289,0,3187,3186,1,0,0,0,3187, + 3188,1,0,0,0,3188,3189,1,0,0,0,3189,3190,5,124,0,0,3190,3191,3,670, + 335,0,3191,3192,5,130,0,0,3192,3193,3,624,312,0,3193,3204,1,0,0, + 0,3194,3195,5,188,0,0,3195,3196,5,123,0,0,3196,3197,3,480,240,0, + 3197,3198,5,128,0,0,3198,3199,5,124,0,0,3199,3200,3,670,335,0,3200, + 3201,5,130,0,0,3201,3202,3,624,312,0,3202,3204,1,0,0,0,3203,3174, + 1,0,0,0,3203,3185,1,0,0,0,3203,3194,1,0,0,0,3204,577,1,0,0,0,3205, + 3206,5,123,0,0,3206,3210,3,580,290,0,3207,3209,3,582,291,0,3208, + 3207,1,0,0,0,3209,3212,1,0,0,0,3210,3208,1,0,0,0,3210,3211,1,0,0, + 0,3211,3213,1,0,0,0,3212,3210,1,0,0,0,3213,3214,5,128,0,0,3214,579, + 1,0,0,0,3215,3217,3,624,312,0,3216,3218,5,129,0,0,3217,3216,1,0, + 0,0,3217,3218,1,0,0,0,3218,3220,1,0,0,0,3219,3221,3,624,312,0,3220, + 3219,1,0,0,0,3220,3221,1,0,0,0,3221,3240,1,0,0,0,3222,3224,5,129, + 0,0,3223,3225,3,624,312,0,3224,3223,1,0,0,0,3224,3225,1,0,0,0,3225, + 3240,1,0,0,0,3226,3228,3,624,312,0,3227,3226,1,0,0,0,3227,3228,1, + 0,0,0,3228,3229,1,0,0,0,3229,3230,5,129,0,0,3230,3231,3,624,312, + 0,3231,3232,5,129,0,0,3232,3233,3,624,312,0,3233,3240,1,0,0,0,3234, + 3236,3,624,312,0,3235,3234,1,0,0,0,3235,3236,1,0,0,0,3236,3237,1, + 0,0,0,3237,3238,5,30,0,0,3238,3240,3,624,312,0,3239,3215,1,0,0,0, + 3239,3222,1,0,0,0,3239,3227,1,0,0,0,3239,3235,1,0,0,0,3240,581,1, + 0,0,0,3241,3242,5,122,0,0,3242,3243,3,678,339,0,3243,583,1,0,0,0, + 3244,3245,5,31,0,0,3245,3246,3,572,286,0,3246,3247,5,159,0,0,3247, + 3248,3,432,216,0,3248,585,1,0,0,0,3249,3250,5,112,0,0,3250,3257, + 3,588,294,0,3251,3252,5,112,0,0,3252,3253,5,123,0,0,3253,3254,3, + 590,295,0,3254,3255,5,128,0,0,3255,3257,1,0,0,0,3256,3249,1,0,0, + 0,3256,3251,1,0,0,0,3257,587,1,0,0,0,3258,3261,3,598,299,0,3259, + 3261,5,192,0,0,3260,3258,1,0,0,0,3260,3259,1,0,0,0,3261,589,1,0, + 0,0,3262,3264,3,592,296,0,3263,3262,1,0,0,0,3263,3264,1,0,0,0,3264, + 3266,1,0,0,0,3265,3267,3,594,297,0,3266,3265,1,0,0,0,3267,3268,1, + 0,0,0,3268,3266,1,0,0,0,3268,3269,1,0,0,0,3269,591,1,0,0,0,3270, + 3272,3,588,294,0,3271,3273,5,122,0,0,3272,3271,1,0,0,0,3272,3273, + 1,0,0,0,3273,593,1,0,0,0,3274,3275,5,77,0,0,3275,3276,5,130,0,0, + 3276,3284,3,588,294,0,3277,3278,5,83,0,0,3278,3279,5,130,0,0,3279, + 3284,3,572,286,0,3280,3281,5,87,0,0,3281,3282,5,130,0,0,3282,3284, + 3,596,298,0,3283,3274,1,0,0,0,3283,3277,1,0,0,0,3283,3280,1,0,0, + 0,3284,595,1,0,0,0,3285,3288,3,432,216,0,3286,3288,3,424,212,0,3287, + 3285,1,0,0,0,3287,3286,1,0,0,0,3288,597,1,0,0,0,3289,3290,6,299, + -1,0,3290,3294,3,600,300,0,3291,3292,7,1,0,0,3292,3294,3,600,300, + 0,3293,3289,1,0,0,0,3293,3291,1,0,0,0,3294,3300,1,0,0,0,3295,3296, + 10,1,0,0,3296,3297,7,1,0,0,3297,3299,3,600,300,0,3298,3295,1,0,0, + 0,3299,3302,1,0,0,0,3300,3298,1,0,0,0,3300,3301,1,0,0,0,3301,599, + 1,0,0,0,3302,3300,1,0,0,0,3303,3304,6,300,-1,0,3304,3305,3,602,301, + 0,3305,3316,1,0,0,0,3306,3307,10,2,0,0,3307,3308,7,7,0,0,3308,3315, + 3,602,301,0,3309,3310,10,1,0,0,3310,3311,5,133,0,0,3311,3312,5,133, + 0,0,3312,3313,1,0,0,0,3313,3315,3,604,302,0,3314,3306,1,0,0,0,3314, + 3309,1,0,0,0,3315,3318,1,0,0,0,3316,3314,1,0,0,0,3316,3317,1,0,0, + 0,3317,601,1,0,0,0,3318,3316,1,0,0,0,3319,3325,3,604,302,0,3320, + 3321,3,604,302,0,3321,3322,5,135,0,0,3322,3323,3,602,301,0,3323, + 3325,1,0,0,0,3324,3319,1,0,0,0,3324,3320,1,0,0,0,3325,603,1,0,0, + 0,3326,3335,5,186,0,0,3327,3335,5,177,0,0,3328,3335,3,670,335,0, + 3329,3335,3,664,332,0,3330,3331,5,123,0,0,3331,3332,3,598,299,0, + 3332,3333,5,128,0,0,3333,3335,1,0,0,0,3334,3326,1,0,0,0,3334,3327, + 1,0,0,0,3334,3328,1,0,0,0,3334,3329,1,0,0,0,3334,3330,1,0,0,0,3335, + 605,1,0,0,0,3336,3337,5,9,0,0,3337,3338,3,608,304,0,3338,3339,3, + 610,305,0,3339,3346,1,0,0,0,3340,3341,5,1,0,0,3341,3342,5,9,0,0, + 3342,3343,3,608,304,0,3343,3344,3,610,305,0,3344,3346,1,0,0,0,3345, + 3336,1,0,0,0,3345,3340,1,0,0,0,3346,607,1,0,0,0,3347,3348,5,188, + 0,0,3348,609,1,0,0,0,3349,3351,3,64,32,0,3350,3352,3,316,158,0,3351, + 3350,1,0,0,0,3351,3352,1,0,0,0,3352,3353,1,0,0,0,3353,3354,3,216, + 108,0,3354,3360,1,0,0,0,3355,3356,3,64,32,0,3356,3357,3,12,6,0,3357, + 3358,3,216,108,0,3358,3360,1,0,0,0,3359,3349,1,0,0,0,3359,3355,1, + 0,0,0,3360,611,1,0,0,0,3361,3362,5,58,0,0,3362,3363,5,177,0,0,3363, + 613,1,0,0,0,3364,3365,5,41,0,0,3365,3369,3,616,308,0,3366,3367,5, + 41,0,0,3367,3369,5,42,0,0,3368,3364,1,0,0,0,3368,3366,1,0,0,0,3369, + 615,1,0,0,0,3370,3375,3,618,309,0,3371,3372,5,122,0,0,3372,3374, + 3,618,309,0,3373,3371,1,0,0,0,3374,3377,1,0,0,0,3375,3373,1,0,0, + 0,3375,3376,1,0,0,0,3376,617,1,0,0,0,3377,3375,1,0,0,0,3378,3379, + 3,272,136,0,3379,3380,3,620,310,0,3380,3387,1,0,0,0,3381,3382,3, + 272,136,0,3382,3383,5,123,0,0,3383,3384,3,620,310,0,3384,3385,5, + 128,0,0,3385,3387,1,0,0,0,3386,3378,1,0,0,0,3386,3381,1,0,0,0,3387, + 619,1,0,0,0,3388,3390,3,622,311,0,3389,3388,1,0,0,0,3389,3390,1, + 0,0,0,3390,3395,1,0,0,0,3391,3392,5,122,0,0,3392,3394,3,622,311, + 0,3393,3391,1,0,0,0,3394,3397,1,0,0,0,3395,3393,1,0,0,0,3395,3396, + 1,0,0,0,3396,621,1,0,0,0,3397,3395,1,0,0,0,3398,3399,5,188,0,0,3399, + 3400,5,131,0,0,3400,3401,5,188,0,0,3401,623,1,0,0,0,3402,3403,6, + 312,-1,0,3403,3404,3,628,314,0,3404,3411,1,0,0,0,3405,3406,10,1, + 0,0,3406,3407,3,626,313,0,3407,3408,3,628,314,0,3408,3410,1,0,0, + 0,3409,3405,1,0,0,0,3410,3413,1,0,0,0,3411,3409,1,0,0,0,3411,3412, + 1,0,0,0,3412,625,1,0,0,0,3413,3411,1,0,0,0,3414,3415,5,27,0,0,3415, + 627,1,0,0,0,3416,3421,3,630,315,0,3417,3418,7,3,0,0,3418,3420,3, + 630,315,0,3419,3417,1,0,0,0,3420,3423,1,0,0,0,3421,3419,1,0,0,0, + 3421,3422,1,0,0,0,3422,629,1,0,0,0,3423,3421,1,0,0,0,3424,3429,3, + 632,316,0,3425,3426,5,138,0,0,3426,3428,3,632,316,0,3427,3425,1, + 0,0,0,3428,3431,1,0,0,0,3429,3427,1,0,0,0,3429,3430,1,0,0,0,3430, + 631,1,0,0,0,3431,3429,1,0,0,0,3432,3437,3,634,317,0,3433,3434,5, + 137,0,0,3434,3436,3,634,317,0,3435,3433,1,0,0,0,3436,3439,1,0,0, + 0,3437,3435,1,0,0,0,3437,3438,1,0,0,0,3438,633,1,0,0,0,3439,3437, + 1,0,0,0,3440,3442,5,136,0,0,3441,3440,1,0,0,0,3441,3442,1,0,0,0, + 3442,3443,1,0,0,0,3443,3444,3,638,319,0,3444,635,1,0,0,0,3445,3446, + 7,8,0,0,3446,637,1,0,0,0,3447,3453,3,640,320,0,3448,3449,3,636,318, + 0,3449,3450,3,640,320,0,3450,3452,1,0,0,0,3451,3448,1,0,0,0,3452, + 3455,1,0,0,0,3453,3451,1,0,0,0,3453,3454,1,0,0,0,3454,639,1,0,0, + 0,3455,3453,1,0,0,0,3456,3468,3,642,321,0,3457,3459,5,133,0,0,3458, + 3460,5,184,0,0,3459,3458,1,0,0,0,3459,3460,1,0,0,0,3460,3461,1,0, + 0,0,3461,3463,5,133,0,0,3462,3464,5,185,0,0,3463,3462,1,0,0,0,3463, + 3464,1,0,0,0,3464,3465,1,0,0,0,3465,3467,3,642,321,0,3466,3457,1, + 0,0,0,3467,3470,1,0,0,0,3468,3466,1,0,0,0,3468,3469,1,0,0,0,3469, + 641,1,0,0,0,3470,3468,1,0,0,0,3471,3473,3,644,322,0,3472,3471,1, + 0,0,0,3472,3473,1,0,0,0,3473,3474,1,0,0,0,3474,3479,3,646,323,0, + 3475,3476,7,1,0,0,3476,3478,3,646,323,0,3477,3475,1,0,0,0,3478,3481, + 1,0,0,0,3479,3477,1,0,0,0,3479,3480,1,0,0,0,3480,643,1,0,0,0,3481, + 3479,1,0,0,0,3482,3483,7,1,0,0,3483,645,1,0,0,0,3484,3489,3,648, + 324,0,3485,3486,7,7,0,0,3486,3488,3,648,324,0,3487,3485,1,0,0,0, + 3488,3491,1,0,0,0,3489,3487,1,0,0,0,3489,3490,1,0,0,0,3490,647,1, + 0,0,0,3491,3489,1,0,0,0,3492,3497,3,650,325,0,3493,3494,5,135,0, + 0,3494,3496,3,650,325,0,3495,3493,1,0,0,0,3496,3499,1,0,0,0,3497, + 3495,1,0,0,0,3497,3498,1,0,0,0,3498,649,1,0,0,0,3499,3497,1,0,0, + 0,3500,3505,3,654,327,0,3501,3502,3,652,326,0,3502,3503,3,654,327, + 0,3503,3505,1,0,0,0,3504,3500,1,0,0,0,3504,3501,1,0,0,0,3505,651, + 1,0,0,0,3506,3507,5,27,0,0,3507,653,1,0,0,0,3508,3519,3,686,343, + 0,3509,3519,3,670,335,0,3510,3519,3,664,332,0,3511,3512,5,123,0, + 0,3512,3513,3,624,312,0,3513,3514,5,128,0,0,3514,3519,1,0,0,0,3515, + 3519,5,177,0,0,3516,3519,3,682,341,0,3517,3519,3,656,328,0,3518, + 3508,1,0,0,0,3518,3509,1,0,0,0,3518,3510,1,0,0,0,3518,3511,1,0,0, + 0,3518,3515,1,0,0,0,3518,3516,1,0,0,0,3518,3517,1,0,0,0,3519,655, + 1,0,0,0,3520,3521,5,171,0,0,3521,3522,3,658,329,0,3522,3523,5,173, + 0,0,3523,657,1,0,0,0,3524,3527,3,624,312,0,3525,3527,3,660,330,0, + 3526,3524,1,0,0,0,3526,3525,1,0,0,0,3527,659,1,0,0,0,3528,3529,6, + 330,-1,0,3529,3530,3,624,312,0,3530,3531,5,122,0,0,3531,3532,3,624, + 312,0,3532,3539,1,0,0,0,3533,3534,3,624,312,0,3534,3535,5,122,0, + 0,3535,3536,3,662,331,0,3536,3539,1,0,0,0,3537,3539,3,662,331,0, + 3538,3528,1,0,0,0,3538,3533,1,0,0,0,3538,3537,1,0,0,0,3539,3548, + 1,0,0,0,3540,3541,10,2,0,0,3541,3542,5,122,0,0,3542,3547,3,624,312, + 0,3543,3544,10,1,0,0,3544,3545,5,122,0,0,3545,3547,3,662,331,0,3546, + 3540,1,0,0,0,3546,3543,1,0,0,0,3547,3550,1,0,0,0,3548,3546,1,0,0, + 0,3548,3549,1,0,0,0,3549,661,1,0,0,0,3550,3548,1,0,0,0,3551,3552, + 5,123,0,0,3552,3553,3,624,312,0,3553,3554,5,122,0,0,3554,3555,3, + 426,213,0,3555,3556,5,130,0,0,3556,3557,3,624,312,0,3557,3558,5, + 122,0,0,3558,3559,3,624,312,0,3559,3560,5,128,0,0,3560,3596,1,0, + 0,0,3561,3562,5,123,0,0,3562,3563,3,624,312,0,3563,3564,5,122,0, + 0,3564,3565,3,426,213,0,3565,3566,5,130,0,0,3566,3567,3,624,312, + 0,3567,3568,5,122,0,0,3568,3569,3,624,312,0,3569,3570,5,122,0,0, + 3570,3571,3,624,312,0,3571,3572,5,128,0,0,3572,3596,1,0,0,0,3573, + 3574,5,123,0,0,3574,3575,3,662,331,0,3575,3576,5,122,0,0,3576,3577, + 3,426,213,0,3577,3578,5,130,0,0,3578,3579,3,624,312,0,3579,3580, + 5,122,0,0,3580,3581,3,624,312,0,3581,3582,5,128,0,0,3582,3596,1, + 0,0,0,3583,3584,5,123,0,0,3584,3585,3,662,331,0,3585,3586,5,122, + 0,0,3586,3587,3,426,213,0,3587,3588,5,130,0,0,3588,3589,3,624,312, + 0,3589,3590,5,122,0,0,3590,3591,3,624,312,0,3591,3592,5,122,0,0, + 3592,3593,3,624,312,0,3593,3594,5,128,0,0,3594,3596,1,0,0,0,3595, + 3551,1,0,0,0,3595,3561,1,0,0,0,3595,3573,1,0,0,0,3595,3583,1,0,0, + 0,3596,663,1,0,0,0,3597,3598,5,188,0,0,3598,3599,5,123,0,0,3599, + 3606,5,128,0,0,3600,3601,5,188,0,0,3601,3602,5,123,0,0,3602,3603, + 3,666,333,0,3603,3604,5,128,0,0,3604,3606,1,0,0,0,3605,3597,1,0, + 0,0,3605,3600,1,0,0,0,3606,665,1,0,0,0,3607,3608,6,333,-1,0,3608, + 3614,3,668,334,0,3609,3610,3,676,338,0,3610,3611,5,122,0,0,3611, + 3612,3,668,334,0,3612,3614,1,0,0,0,3613,3607,1,0,0,0,3613,3609,1, + 0,0,0,3614,3620,1,0,0,0,3615,3616,10,2,0,0,3616,3617,5,122,0,0,3617, + 3619,3,668,334,0,3618,3615,1,0,0,0,3619,3622,1,0,0,0,3620,3618,1, + 0,0,0,3620,3621,1,0,0,0,3621,667,1,0,0,0,3622,3620,1,0,0,0,3623, + 3624,5,188,0,0,3624,3625,5,130,0,0,3625,3626,3,624,312,0,3626,669, + 1,0,0,0,3627,3631,7,9,0,0,3628,3630,3,672,336,0,3629,3628,1,0,0, + 0,3630,3633,1,0,0,0,3631,3629,1,0,0,0,3631,3632,1,0,0,0,3632,671, + 1,0,0,0,3633,3631,1,0,0,0,3634,3638,3,674,337,0,3635,3636,5,124, + 0,0,3636,3638,5,188,0,0,3637,3634,1,0,0,0,3637,3635,1,0,0,0,3638, + 673,1,0,0,0,3639,3640,5,123,0,0,3640,3641,3,676,338,0,3641,3642, + 5,128,0,0,3642,675,1,0,0,0,3643,3648,3,678,339,0,3644,3645,5,122, + 0,0,3645,3647,3,678,339,0,3646,3644,1,0,0,0,3647,3650,1,0,0,0,3648, + 3646,1,0,0,0,3648,3649,1,0,0,0,3649,677,1,0,0,0,3650,3648,1,0,0, + 0,3651,3653,3,624,312,0,3652,3654,3,680,340,0,3653,3652,1,0,0,0, + 3653,3654,1,0,0,0,3654,3657,1,0,0,0,3655,3657,3,680,340,0,3656,3651, + 1,0,0,0,3656,3655,1,0,0,0,3657,679,1,0,0,0,3658,3660,5,129,0,0,3659, + 3661,3,624,312,0,3660,3659,1,0,0,0,3660,3661,1,0,0,0,3661,3670,1, + 0,0,0,3662,3663,5,129,0,0,3663,3664,3,624,312,0,3664,3665,5,129, + 0,0,3665,3666,3,624,312,0,3666,3670,1,0,0,0,3667,3668,5,30,0,0,3668, + 3670,3,624,312,0,3669,3658,1,0,0,0,3669,3662,1,0,0,0,3669,3667,1, + 0,0,0,3670,681,1,0,0,0,3671,3681,7,10,0,0,3672,3673,5,149,0,0,3673, + 3674,5,170,0,0,3674,3681,3,684,342,0,3675,3676,5,150,0,0,3676,3677, + 5,170,0,0,3677,3678,3,684,342,0,3678,3679,5,172,0,0,3679,3681,1, + 0,0,0,3680,3671,1,0,0,0,3680,3672,1,0,0,0,3680,3675,1,0,0,0,3681, + 683,1,0,0,0,3682,3685,5,186,0,0,3683,3685,3,292,146,0,3684,3682, + 1,0,0,0,3684,3683,1,0,0,0,3685,685,1,0,0,0,3686,3695,7,11,0,0,3687, + 3695,3,688,344,0,3688,3689,5,186,0,0,3689,3690,5,170,0,0,3690,3695, + 3,684,342,0,3691,3692,5,178,0,0,3692,3693,5,170,0,0,3693,3695,3, + 684,342,0,3694,3686,1,0,0,0,3694,3687,1,0,0,0,3694,3688,1,0,0,0, + 3694,3691,1,0,0,0,3695,687,1,0,0,0,3696,3697,5,123,0,0,3697,3698, + 3,690,345,0,3698,3699,5,122,0,0,3699,3700,5,128,0,0,3700,689,1,0, + 0,0,3701,3703,7,1,0,0,3702,3701,1,0,0,0,3702,3703,1,0,0,0,3703,3704, + 1,0,0,0,3704,3708,5,186,0,0,3705,3708,5,178,0,0,3706,3708,5,188, + 0,0,3707,3702,1,0,0,0,3707,3705,1,0,0,0,3707,3706,1,0,0,0,3708,691, + 1,0,0,0,3709,3710,3,624,312,0,3710,693,1,0,0,0,3711,3712,5,51,0, + 0,3712,3713,5,123,0,0,3713,3714,3,624,312,0,3714,3715,5,128,0,0, + 3715,3716,3,436,218,0,3716,695,1,0,0,0,331,701,708,711,719,725,735, + 741,746,755,774,781,790,797,814,824,826,835,839,844,846,855,862, + 867,872,878,881,887,896,913,915,928,939,949,958,963,967,970,982, + 985,992,997,1003,1019,1023,1032,1041,1045,1054,1063,1067,1076,1106, + 1108,1120,1136,1145,1154,1160,1164,1171,1176,1186,1191,1195,1207, + 1217,1227,1240,1247,1252,1259,1266,1273,1275,1280,1295,1304,1309, + 1320,1342,1349,1395,1403,1414,1421,1428,1445,1454,1457,1464,1475, + 1490,1499,1504,1515,1527,1531,1539,1541,1546,1549,1556,1560,1566, + 1575,1587,1594,1596,1610,1622,1631,1636,1653,1660,1706,1715,1724, + 1728,1735,1743,1754,1784,1796,1834,1842,1849,1853,1868,1885,1897, + 1903,1905,1910,1916,1926,1936,1952,1957,1961,1968,1976,1986,1994, + 2003,2043,2049,2053,2058,2060,2069,2074,2082,2089,2094,2106,2113, + 2117,2130,2149,2159,2163,2166,2170,2175,2182,2187,2189,2202,2219, + 2228,2233,2244,2254,2268,2272,2276,2279,2288,2294,2321,2326,2331, + 2341,2352,2364,2369,2379,2386,2422,2435,2442,2456,2461,2466,2475, + 2480,2496,2503,2508,2524,2531,2538,2547,2556,2563,2579,2586,2594, + 2605,2612,2621,2626,2631,2633,2655,2666,2671,2682,2691,2700,2712, + 2719,2752,2761,2765,2777,2785,2787,2799,2812,2816,2821,2825,2833, + 2836,2842,2884,2899,2902,2905,2911,2989,2994,3000,3010,3017,3025, + 3034,3043,3049,3055,3061,3071,3074,3080,3094,3100,3108,3113,3129, + 3134,3140,3157,3174,3178,3181,3187,3203,3210,3217,3220,3224,3227, + 3235,3239,3256,3260,3263,3268,3272,3283,3287,3293,3300,3314,3316, + 3324,3334,3345,3351,3359,3368,3375,3386,3389,3395,3411,3421,3429, + 3437,3441,3453,3459,3463,3468,3472,3479,3489,3497,3504,3518,3526, + 3538,3546,3548,3595,3605,3613,3620,3631,3637,3648,3653,3656,3660, + 3669,3680,3684,3694,3702,3707 + ] class Fortran90Parser ( Parser ): @@ -2867,7 +2286,7 @@ class Fortran90Parser ( Parser ): def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None @@ -2875,6 +2294,7 @@ def __init__(self, input:TokenStream, output:TextIO = sys.stdout): class ProgramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2922,6 +2342,7 @@ def program(self): class ExecutableProgramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2970,7 +2391,7 @@ def executableProgram(self): self.state = 701 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran90Parser.RECURSIVE) | (1 << Fortran90Parser.CONTAINS) | (1 << Fortran90Parser.MODULE) | (1 << Fortran90Parser.PROGRAM) | (1 << Fortran90Parser.ENTRY) | (1 << Fortran90Parser.FUNCTION) | (1 << Fortran90Parser.BLOCK) | (1 << Fortran90Parser.SUBROUTINE) | (1 << Fortran90Parser.END) | (1 << Fortran90Parser.DIMENSION) | (1 << Fortran90Parser.TARGET) | (1 << Fortran90Parser.ALLOCATABLE) | (1 << Fortran90Parser.OPTIONAL) | (1 << Fortran90Parser.NAMELIST) | (1 << Fortran90Parser.INTENT) | (1 << Fortran90Parser.USE) | (1 << Fortran90Parser.DOUBLEPRECISION) | (1 << Fortran90Parser.ASSIGNSTMT) | (1 << Fortran90Parser.COMMON) | (1 << Fortran90Parser.REAL) | (1 << Fortran90Parser.EQUIVALENCE) | (1 << Fortran90Parser.BLOCKDATA) | (1 << Fortran90Parser.POINTER) | (1 << Fortran90Parser.ACCESSSPEC) | (1 << Fortran90Parser.IMPLICIT) | (1 << Fortran90Parser.CHARACTER) | (1 << Fortran90Parser.PARAMETER) | (1 << Fortran90Parser.EXTERNAL) | (1 << Fortran90Parser.INTRINSIC) | (1 << Fortran90Parser.SAVE) | (1 << Fortran90Parser.DATA) | (1 << Fortran90Parser.GO) | (1 << Fortran90Parser.GOTO) | (1 << Fortran90Parser.IF) | (1 << Fortran90Parser.DO) | (1 << Fortran90Parser.INCLUDE) | (1 << Fortran90Parser.CONTINUE) | (1 << Fortran90Parser.WHERE) | (1 << Fortran90Parser.SELECTCASE))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (Fortran90Parser.SELECT - 64)) | (1 << (Fortran90Parser.STOP - 64)) | (1 << (Fortran90Parser.PAUSE - 64)) | (1 << (Fortran90Parser.WRITE - 64)) | (1 << (Fortran90Parser.READ - 64)) | (1 << (Fortran90Parser.PRINT - 64)) | (1 << (Fortran90Parser.OPEN - 64)) | (1 << (Fortran90Parser.CALL - 64)) | (1 << (Fortran90Parser.RETURN - 64)) | (1 << (Fortran90Parser.CLOSE - 64)) | (1 << (Fortran90Parser.DOUBLE - 64)) | (1 << (Fortran90Parser.INQUIRE - 64)) | (1 << (Fortran90Parser.BACKSPACE - 64)) | (1 << (Fortran90Parser.ENDFILE - 64)) | (1 << (Fortran90Parser.REWIND - 64)) | (1 << (Fortran90Parser.ALLOCATE - 64)))) != 0) or ((((_la - 166)) & ~0x3f) == 0 and ((1 << (_la - 166)) & ((1 << (Fortran90Parser.COMPLEX - 166)) | (1 << (Fortran90Parser.INTEGER - 166)) | (1 << (Fortran90Parser.LOGICAL - 166)) | (1 << (Fortran90Parser.DEALLOCATE - 166)) | (1 << (Fortran90Parser.NULLIFY - 166)) | (1 << (Fortran90Parser.CYCLE - 166)) | (1 << (Fortran90Parser.INTERFACE - 166)) | (1 << (Fortran90Parser.ICON - 166)) | (1 << (Fortran90Parser.TYPE - 166)) | (1 << (Fortran90Parser.NAME - 166)) | (1 << (Fortran90Parser.EXIT - 166)))) != 0)): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & -5904224344354589714) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4613797081759354769) != 0) or ((((_la - 166)) & ~0x3f) == 0 and ((1 << (_la - 166)) & 15917069) != 0)): break except RecognitionException as re: @@ -2983,6 +2404,7 @@ def executableProgram(self): class ProgramUnitContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3077,6 +2499,7 @@ def programUnit(self): class MainProgramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3120,7 +2543,7 @@ def mainProgram(self): self.state = 711 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.PROGRAM: + if _la==5: self.state = 710 self.programStmt() @@ -3137,6 +2560,7 @@ def mainProgram(self): class ProgramStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3188,6 +2612,7 @@ def programStmt(self): class MainRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3266,6 +2691,7 @@ def mainRange(self): class BodyPlusInternalsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3318,7 +2744,7 @@ def bodyPlusInternals(self, _p:int=0): self.state = 735 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ENTRY, Fortran90Parser.END, Fortran90Parser.DIMENSION, Fortran90Parser.TARGET, Fortran90Parser.ALLOCATABLE, Fortran90Parser.OPTIONAL, Fortran90Parser.NAMELIST, Fortran90Parser.INTENT, Fortran90Parser.USE, Fortran90Parser.DOUBLEPRECISION, Fortran90Parser.ASSIGNSTMT, Fortran90Parser.COMMON, Fortran90Parser.REAL, Fortran90Parser.EQUIVALENCE, Fortran90Parser.POINTER, Fortran90Parser.ACCESSSPEC, Fortran90Parser.IMPLICIT, Fortran90Parser.CHARACTER, Fortran90Parser.PARAMETER, Fortran90Parser.EXTERNAL, Fortran90Parser.INTRINSIC, Fortran90Parser.SAVE, Fortran90Parser.DATA, Fortran90Parser.GO, Fortran90Parser.GOTO, Fortran90Parser.IF, Fortran90Parser.DO, Fortran90Parser.INCLUDE, Fortran90Parser.CONTINUE, Fortran90Parser.WHERE, Fortran90Parser.SELECTCASE, Fortran90Parser.SELECT, Fortran90Parser.STOP, Fortran90Parser.PAUSE, Fortran90Parser.WRITE, Fortran90Parser.READ, Fortran90Parser.PRINT, Fortran90Parser.OPEN, Fortran90Parser.CALL, Fortran90Parser.RETURN, Fortran90Parser.CLOSE, Fortran90Parser.DOUBLE, Fortran90Parser.INQUIRE, Fortran90Parser.BACKSPACE, Fortran90Parser.ENDFILE, Fortran90Parser.REWIND, Fortran90Parser.ALLOCATE, Fortran90Parser.COMPLEX, Fortran90Parser.INTEGER, Fortran90Parser.LOGICAL, Fortran90Parser.DEALLOCATE, Fortran90Parser.NULLIFY, Fortran90Parser.CYCLE, Fortran90Parser.INTERFACE, Fortran90Parser.ICON, Fortran90Parser.TYPE, Fortran90Parser.NAME, Fortran90Parser.EXIT]: + if token in [6, 12, 13, 14, 15, 16, 17, 18, 23, 29, 31, 32, 34, 35, 37, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 57, 58, 59, 61, 63, 64, 68, 71, 72, 73, 74, 75, 90, 91, 92, 93, 111, 112, 113, 114, 126, 166, 168, 169, 179, 180, 181, 183, 186, 187, 188, 189]: self.state = 728 self.body() self.state = 729 @@ -3326,7 +2752,7 @@ def bodyPlusInternals(self, _p:int=0): self.state = 730 self.internalSubprogram() pass - elif token in [Fortran90Parser.CONTAINS]: + elif token in [2]: self.state = 732 self.containsStmt() self.state = 733 @@ -3366,6 +2792,7 @@ def bodyPlusInternals(self, _p:int=0): class InternalSubprogramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3430,6 +2857,7 @@ def internalSubprogram(self): class SpecificationPartConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3491,37 +2919,37 @@ def specificationPartConstruct(self): self.state = 755 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.IMPLICIT]: + if token in [41]: self.enterOuterAlt(localctx, 1) self.state = 748 self.implicitStmt() pass - elif token in [Fortran90Parser.PARAMETER]: + elif token in [44]: self.enterOuterAlt(localctx, 2) self.state = 749 self.parameterStmt() pass - elif token in [Fortran90Parser.ICON]: + elif token in [186]: self.enterOuterAlt(localctx, 3) self.state = 750 self.formatStmt() pass - elif token in [Fortran90Parser.ENTRY]: + elif token in [6]: self.enterOuterAlt(localctx, 4) self.state = 751 self.entryStmt() pass - elif token in [Fortran90Parser.DIMENSION, Fortran90Parser.TARGET, Fortran90Parser.ALLOCATABLE, Fortran90Parser.OPTIONAL, Fortran90Parser.NAMELIST, Fortran90Parser.INTENT, Fortran90Parser.DOUBLEPRECISION, Fortran90Parser.COMMON, Fortran90Parser.REAL, Fortran90Parser.EQUIVALENCE, Fortran90Parser.POINTER, Fortran90Parser.ACCESSSPEC, Fortran90Parser.CHARACTER, Fortran90Parser.EXTERNAL, Fortran90Parser.INTRINSIC, Fortran90Parser.SAVE, Fortran90Parser.DATA, Fortran90Parser.DOUBLE, Fortran90Parser.COMPLEX, Fortran90Parser.INTEGER, Fortran90Parser.LOGICAL, Fortran90Parser.INTERFACE, Fortran90Parser.TYPE]: + elif token in [13, 14, 15, 16, 17, 18, 29, 32, 34, 35, 37, 40, 43, 45, 46, 47, 48, 93, 166, 168, 169, 183, 187]: self.enterOuterAlt(localctx, 5) self.state = 752 self.declarationConstruct() pass - elif token in [Fortran90Parser.INCLUDE]: + elif token in [58]: self.enterOuterAlt(localctx, 6) self.state = 753 self.includeStmt() pass - elif token in [Fortran90Parser.USE]: + elif token in [23]: self.enterOuterAlt(localctx, 7) self.state = 754 self.useStmt() @@ -3539,6 +2967,7 @@ def specificationPartConstruct(self): class UseStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3656,6 +3085,7 @@ def useStmt(self): class OnlyListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3725,6 +3155,7 @@ def onlyList(self): class OnlyStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3806,6 +3237,7 @@ def onlyStmt(self): class RenameListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3875,6 +3307,7 @@ def renameList(self): class RenameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3933,6 +3366,7 @@ def rename(self): class UseNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3980,6 +3414,7 @@ def useName(self): class ParameterStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4042,6 +3477,7 @@ def parameterStmt(self): class NamedConstantDefListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4090,7 +3526,7 @@ def namedConstantDefList(self): self.state = 814 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==Fortran90Parser.NAME): + if not (_la==188): break except RecognitionException as re: @@ -4103,6 +3539,7 @@ def namedConstantDefList(self): class NamedConstantDefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4160,6 +3597,7 @@ def namedConstantDef(self): class EndProgramStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4235,6 +3673,7 @@ def endProgramStmt(self): class BlockDataSubprogramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4309,6 +3748,7 @@ def blockDataSubprogram(self): class BlockDataStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4355,20 +3795,20 @@ def blockDataStmt(self): self.state = 846 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.BLOCKDATA]: + if token in [36]: self.enterOuterAlt(localctx, 1) self.state = 837 self.match(Fortran90Parser.BLOCKDATA) self.state = 839 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.NAME: + if _la==188: self.state = 838 self.match(Fortran90Parser.NAME) pass - elif token in [Fortran90Parser.BLOCK]: + elif token in [8]: self.enterOuterAlt(localctx, 2) self.state = 841 self.match(Fortran90Parser.BLOCK) @@ -4377,7 +3817,7 @@ def blockDataStmt(self): self.state = 844 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.NAME: + if _la==188: self.state = 843 self.match(Fortran90Parser.NAME) @@ -4396,6 +3836,7 @@ def blockDataStmt(self): class BlockDataBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4470,6 +3911,7 @@ def blockDataBody(self, _p:int=0): class BlockDataBodyConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4517,6 +3959,7 @@ def blockDataBodyConstruct(self): class EndBlockDataStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4652,6 +4095,7 @@ def endBlockDataStmt(self): class FormatStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4709,7 +4153,7 @@ def formatStmt(self): self.state = 887 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 123)) & ~0x3f) == 0 and ((1 << (_la - 123)) & ((1 << (Fortran90Parser.LPAREN - 123)) | (1 << (Fortran90Parser.FORMATSEP - 123)) | (1 << (Fortran90Parser.XCON - 123)) | (1 << (Fortran90Parser.PCON - 123)) | (1 << (Fortran90Parser.FCON - 123)) | (1 << (Fortran90Parser.HOLLERITH - 123)) | (1 << (Fortran90Parser.SCON - 123)) | (1 << (Fortran90Parser.RDCON - 123)) | (1 << (Fortran90Parser.ICON - 123)))) != 0) or _la==Fortran90Parser.NAME: + if ((((_la - 123)) & ~0x3f) == 0 and ((1 << (_la - 123)) & -9169328835152312319) != 0) or _la==188: self.state = 886 self.fmtSpec(0) @@ -4726,6 +4170,7 @@ def formatStmt(self): class FmtSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4886,6 +4331,7 @@ def fmtSpec(self, _p:int=0): class FormateditContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4987,6 +4433,7 @@ def formatedit(self): class EditElementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5097,6 +4544,7 @@ def editElement(self): class MislexedFconContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5145,7 +4593,7 @@ def mislexedFcon(self): self.state = 949 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.RDCON]: + if token in [178]: self.enterOuterAlt(localctx, 1) self.state = 941 self.match(Fortran90Parser.RDCON) @@ -5156,7 +4604,7 @@ def mislexedFcon(self): self.state = 944 self.match(Fortran90Parser.SPON) pass - elif token in [Fortran90Parser.NAME]: + elif token in [188]: self.enterOuterAlt(localctx, 2) self.state = 945 self.match(Fortran90Parser.NAME) @@ -5180,6 +4628,7 @@ def mislexedFcon(self): class ModuleContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5254,6 +4703,7 @@ def module(self): class EndModuleStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5346,6 +4796,7 @@ def endModuleStmt(self): class EntryStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5423,6 +4874,7 @@ def entryStmt(self): class SubroutineParListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5468,13 +4920,13 @@ def subroutineParList(self): self.state = 985 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.LPAREN: + if _la==123: self.state = 980 self.match(Fortran90Parser.LPAREN) self.state = 982 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.NAME or _la==Fortran90Parser.STAR: + if _la==188 or _la==192: self.state = 981 self.subroutinePars() @@ -5493,6 +4945,7 @@ def subroutineParList(self): class SubroutineParsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5543,7 +4996,7 @@ def subroutinePars(self): self.state = 992 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 988 self.match(Fortran90Parser.COMMA) self.state = 989 @@ -5562,6 +5015,7 @@ def subroutinePars(self): class SubroutineParContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5602,12 +5056,12 @@ def subroutinePar(self): self.state = 997 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.NAME]: + if token in [188]: self.enterOuterAlt(localctx, 1) self.state = 995 self.dummyArgName() pass - elif token in [Fortran90Parser.STAR]: + elif token in [192]: self.enterOuterAlt(localctx, 2) self.state = 996 self.match(Fortran90Parser.STAR) @@ -5625,6 +5079,7 @@ def subroutinePar(self): class DeclarationConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5709,6 +5164,7 @@ def declarationConstruct(self): class SpecificationStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5798,72 +5254,72 @@ def specificationStmt(self): self.state = 1019 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.COMMON]: + if token in [32]: self.enterOuterAlt(localctx, 1) self.state = 1005 self.commonStmt() pass - elif token in [Fortran90Parser.DATA]: + elif token in [48]: self.enterOuterAlt(localctx, 2) self.state = 1006 self.dataStmt() pass - elif token in [Fortran90Parser.DIMENSION]: + elif token in [13]: self.enterOuterAlt(localctx, 3) self.state = 1007 self.dimensionStmt() pass - elif token in [Fortran90Parser.EQUIVALENCE]: + elif token in [35]: self.enterOuterAlt(localctx, 4) self.state = 1008 self.equivalenceStmt() pass - elif token in [Fortran90Parser.EXTERNAL]: + elif token in [45]: self.enterOuterAlt(localctx, 5) self.state = 1009 self.externalStmt() pass - elif token in [Fortran90Parser.INTRINSIC]: + elif token in [46]: self.enterOuterAlt(localctx, 6) self.state = 1010 self.intrinsicStmt() pass - elif token in [Fortran90Parser.SAVE]: + elif token in [47]: self.enterOuterAlt(localctx, 7) self.state = 1011 self.saveStmt() pass - elif token in [Fortran90Parser.ACCESSSPEC]: + elif token in [40]: self.enterOuterAlt(localctx, 8) self.state = 1012 self.accessStmt() pass - elif token in [Fortran90Parser.ALLOCATABLE]: + elif token in [15]: self.enterOuterAlt(localctx, 9) self.state = 1013 self.allocatableStmt() pass - elif token in [Fortran90Parser.INTENT]: + elif token in [18]: self.enterOuterAlt(localctx, 10) self.state = 1014 self.intentStmt() pass - elif token in [Fortran90Parser.NAMELIST]: + elif token in [17]: self.enterOuterAlt(localctx, 11) self.state = 1015 self.namelistStmt() pass - elif token in [Fortran90Parser.OPTIONAL]: + elif token in [16]: self.enterOuterAlt(localctx, 12) self.state = 1016 self.optionalStmt() pass - elif token in [Fortran90Parser.POINTER]: + elif token in [37]: self.enterOuterAlt(localctx, 13) self.state = 1017 self.pointerStmt() pass - elif token in [Fortran90Parser.TARGET]: + elif token in [14]: self.enterOuterAlt(localctx, 14) self.state = 1018 self.targetStmt() @@ -5881,6 +5337,7 @@ def specificationStmt(self): class TargetStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5928,7 +5385,7 @@ def targetStmt(self): self.state = 1023 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOUBLECOLON: + if _la==30: self.state = 1022 self.match(Fortran90Parser.DOUBLECOLON) @@ -5945,6 +5402,7 @@ def targetStmt(self): class TargetObjectListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6014,6 +5472,7 @@ def targetObjectList(self): class TargetObjectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6090,6 +5549,7 @@ def targetObject(self): class PointerStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6137,7 +5597,7 @@ def pointerStmt(self): self.state = 1045 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOUBLECOLON: + if _la==30: self.state = 1044 self.match(Fortran90Parser.DOUBLECOLON) @@ -6154,6 +5614,7 @@ def pointerStmt(self): class PointerStmtObjectListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6223,6 +5684,7 @@ def pointerStmtObjectList(self): class PointerStmtObjectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6299,6 +5761,7 @@ def pointerStmtObject(self): class OptionalStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6346,7 +5809,7 @@ def optionalStmt(self): self.state = 1067 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOUBLECOLON: + if _la==30: self.state = 1066 self.match(Fortran90Parser.DOUBLECOLON) @@ -6363,6 +5826,7 @@ def optionalStmt(self): class OptionalParListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6432,6 +5896,7 @@ def optionalParList(self): class OptionalParContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6479,6 +5944,7 @@ def optionalPar(self): class NamelistStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6531,6 +5997,7 @@ def namelistStmt(self): class NamelistGroupsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6669,6 +6136,7 @@ def namelistGroups(self, _p:int=0): class NamelistGroupNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6715,6 +6183,7 @@ def namelistGroupName(self): class NamelistGroupObjectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6762,6 +6231,7 @@ def namelistGroupObject(self): class IntentStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6825,7 +6295,7 @@ def intentStmt(self): self.state = 1120 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOUBLECOLON: + if _la==30: self.state = 1119 self.match(Fortran90Parser.DOUBLECOLON) @@ -6842,6 +6312,7 @@ def intentStmt(self): class IntentParListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6900,6 +6371,7 @@ def intentParList(self): class IntentParContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6947,6 +6419,7 @@ def intentPar(self): class DummyArgNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6993,6 +6466,7 @@ def dummyArgName(self): class IntentSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7036,7 +6510,7 @@ def intentSpec(self): self.enterOuterAlt(localctx, 1) self.state = 1132 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran90Parser.IN) | (1 << Fortran90Parser.OUT) | (1 << Fortran90Parser.INOUT))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 3670016) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -7051,6 +6525,7 @@ def intentSpec(self): class AllocatableStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7098,7 +6573,7 @@ def allocatableStmt(self): self.state = 1136 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOUBLECOLON: + if _la==30: self.state = 1135 self.match(Fortran90Parser.DOUBLECOLON) @@ -7115,6 +6590,7 @@ def allocatableStmt(self): class ArrayAllocationListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7184,6 +6660,7 @@ def arrayAllocationList(self): class ArrayAllocationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7260,6 +6737,7 @@ def arrayAllocation(self): class ArrayNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7307,6 +6785,7 @@ def arrayName(self): class AccessStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7358,7 +6837,7 @@ def accessStmt(self): self.state = 1160 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOUBLECOLON: + if _la==30: self.state = 1159 self.match(Fortran90Parser.DOUBLECOLON) @@ -7384,6 +6863,7 @@ def accessStmt(self): class AccessIdListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7453,6 +6933,7 @@ def accessIdList(self): class AccessIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7494,12 +6975,12 @@ def accessId(self): self.state = 1176 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.NAME]: + if token in [188]: self.enterOuterAlt(localctx, 1) self.state = 1174 self.genericName() pass - elif token in [Fortran90Parser.OPERATOR, Fortran90Parser.ASSIGNMENT]: + elif token in [22, 26]: self.enterOuterAlt(localctx, 2) self.state = 1175 self.genericSpec() @@ -7517,6 +6998,7 @@ def accessId(self): class GenericNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7564,6 +7046,7 @@ def genericName(self): class SaveStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7642,6 +7125,7 @@ def saveStmt(self): class SavedEntityListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7704,6 +7188,7 @@ def savedEntityList(self): class SavedEntityContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7745,12 +7230,12 @@ def savedEntity(self): self.state = 1195 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.NAME]: + if token in [188]: self.enterOuterAlt(localctx, 1) self.state = 1193 self.variableName() pass - elif token in [Fortran90Parser.DIV]: + elif token in [133]: self.enterOuterAlt(localctx, 2) self.state = 1194 self.savedCommonBlock() @@ -7768,6 +7253,7 @@ def savedEntity(self): class SavedCommonBlockContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7825,6 +7311,7 @@ def savedCommonBlock(self): class IntrinsicStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7877,6 +7364,7 @@ def intrinsicStmt(self): class IntrinsicListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7939,6 +7427,7 @@ def intrinsicList(self): class IntrinsicProcedureNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7985,6 +7474,7 @@ def intrinsicProcedureName(self): class ExternalStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8037,6 +7527,7 @@ def externalStmt(self): class ExternalNameListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8099,6 +7590,7 @@ def externalNameList(self): class ExternalNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8145,6 +7637,7 @@ def externalName(self): class EquivalenceStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8197,6 +7690,7 @@ def equivalenceStmt(self): class EquivalenceSetListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8259,6 +7753,7 @@ def equivalenceSetList(self): class EquivalenceSetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8327,6 +7822,7 @@ def equivalenceSet(self): class EquivalenceObjectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8374,6 +7870,7 @@ def equivalenceObject(self): class EquivalenceObjectListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8422,7 +7919,7 @@ def equivalenceObjectList(self): self.state = 1240 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==Fortran90Parser.NAME): + if not (_la==188): break except RecognitionException as re: @@ -8435,6 +7932,7 @@ def equivalenceObjectList(self): class DimensionStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8507,6 +8005,7 @@ def dimensionStmt(self): class ArrayDeclaratorListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8569,6 +8068,7 @@ def arrayDeclaratorList(self): class CommonStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8621,6 +8121,7 @@ def commonStmt(self): class ComlistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8673,7 +8174,7 @@ def comlist(self, _p:int=0): self.state = 1259 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DIV: + if _la==133: self.state = 1258 self.comblock() @@ -8704,7 +8205,7 @@ def comlist(self, _p:int=0): self.state = 1266 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DIV: + if _la==133: self.state = 1265 self.comblock() @@ -8741,6 +8242,7 @@ def comlist(self, _p:int=0): class CommonBlockObjectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8805,6 +8307,7 @@ def commonBlockObject(self): class ArrayDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8868,6 +8371,7 @@ def arrayDeclarator(self): class ComblockContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8950,6 +8454,7 @@ def comblock(self): class CommonBlockNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8996,6 +8501,7 @@ def commonBlockName(self): class TypeDeclarationStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9060,7 +8566,7 @@ def typeDeclarationStmt(self): self.state = 1304 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.COMMA: + if _la==122: self.state = 1303 self.attrSpecSeq(0) @@ -9082,6 +8588,7 @@ def typeDeclarationStmt(self): class AttrSpecSeqContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9163,6 +8670,7 @@ def attrSpecSeq(self, _p:int=0): class AttrSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9243,22 +8751,22 @@ def attrSpec(self): self.state = 1342 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.PARAMETER]: + if token in [44]: self.enterOuterAlt(localctx, 1) self.state = 1323 self.match(Fortran90Parser.PARAMETER) pass - elif token in [Fortran90Parser.ACCESSSPEC]: + elif token in [40]: self.enterOuterAlt(localctx, 2) self.state = 1324 self.match(Fortran90Parser.ACCESSSPEC) pass - elif token in [Fortran90Parser.ALLOCATABLE]: + elif token in [15]: self.enterOuterAlt(localctx, 3) self.state = 1325 self.match(Fortran90Parser.ALLOCATABLE) pass - elif token in [Fortran90Parser.DIMENSION]: + elif token in [13]: self.enterOuterAlt(localctx, 4) self.state = 1326 self.match(Fortran90Parser.DIMENSION) @@ -9269,12 +8777,12 @@ def attrSpec(self): self.state = 1329 self.match(Fortran90Parser.RPAREN) pass - elif token in [Fortran90Parser.EXTERNAL]: + elif token in [45]: self.enterOuterAlt(localctx, 5) self.state = 1331 self.match(Fortran90Parser.EXTERNAL) pass - elif token in [Fortran90Parser.INTENT]: + elif token in [18]: self.enterOuterAlt(localctx, 6) self.state = 1332 self.match(Fortran90Parser.INTENT) @@ -9285,27 +8793,27 @@ def attrSpec(self): self.state = 1335 self.match(Fortran90Parser.RPAREN) pass - elif token in [Fortran90Parser.INTRINSIC]: + elif token in [46]: self.enterOuterAlt(localctx, 7) self.state = 1337 self.match(Fortran90Parser.INTRINSIC) pass - elif token in [Fortran90Parser.OPTIONAL]: + elif token in [16]: self.enterOuterAlt(localctx, 8) self.state = 1338 self.match(Fortran90Parser.OPTIONAL) pass - elif token in [Fortran90Parser.POINTER]: + elif token in [37]: self.enterOuterAlt(localctx, 9) self.state = 1339 self.match(Fortran90Parser.POINTER) pass - elif token in [Fortran90Parser.SAVE]: + elif token in [47]: self.enterOuterAlt(localctx, 10) self.state = 1340 self.match(Fortran90Parser.SAVE) pass - elif token in [Fortran90Parser.TARGET]: + elif token in [14]: self.enterOuterAlt(localctx, 11) self.state = 1341 self.match(Fortran90Parser.TARGET) @@ -9323,6 +8831,7 @@ def attrSpec(self): class EntityDeclListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9392,6 +8901,7 @@ def entityDeclList(self): class EntityDeclContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9568,6 +9078,7 @@ def entityDecl(self): class ObjectNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9614,6 +9125,7 @@ def objectName(self): class ArraySpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9698,6 +9210,7 @@ def arraySpec(self): class AssumedShapeSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9756,13 +9269,13 @@ def assumedShapeSpecList(self, _p:int=0): self.state = 1414 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.DOP, Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.LPAREN, Fortran90Parser.MINUS, Fortran90Parser.PLUS, Fortran90Parser.LNOT, Fortran90Parser.TRUE, Fortran90Parser.FALSE, Fortran90Parser.OBRACKETSLASH, Fortran90Parser.SCON, Fortran90Parser.RDCON, Fortran90Parser.ICON, Fortran90Parser.NAME]: + if token in [27, 34, 84, 123, 131, 132, 136, 149, 150, 171, 177, 178, 186, 188]: self.state = 1406 self.lowerBound() self.state = 1407 self.match(Fortran90Parser.COLON) pass - elif token in [Fortran90Parser.COLON]: + elif token in [129]: self.state = 1409 self.deferredShapeSpecList() self.state = 1410 @@ -9808,6 +9321,7 @@ def assumedShapeSpecList(self, _p:int=0): class AssumedShapeSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9848,14 +9362,14 @@ def assumedShapeSpec(self): self.state = 1428 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.DOP, Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.LPAREN, Fortran90Parser.MINUS, Fortran90Parser.PLUS, Fortran90Parser.LNOT, Fortran90Parser.TRUE, Fortran90Parser.FALSE, Fortran90Parser.OBRACKETSLASH, Fortran90Parser.SCON, Fortran90Parser.RDCON, Fortran90Parser.ICON, Fortran90Parser.NAME]: + if token in [27, 34, 84, 123, 131, 132, 136, 149, 150, 171, 177, 178, 186, 188]: self.enterOuterAlt(localctx, 1) self.state = 1424 self.lowerBound() self.state = 1425 self.match(Fortran90Parser.COLON) pass - elif token in [Fortran90Parser.COLON]: + elif token in [129]: self.enterOuterAlt(localctx, 2) self.state = 1427 self.match(Fortran90Parser.COLON) @@ -9873,6 +9387,7 @@ def assumedShapeSpec(self): class AssumedSizeSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9974,6 +9489,7 @@ def assumedSizeSpec(self): class InterfaceBlockContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10033,6 +9549,7 @@ def interfaceBlock(self): class EndInterfaceStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10079,11 +9596,11 @@ def endInterfaceStmt(self): self.state = 1454 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ENDINTERFACE]: + if token in [10]: self.state = 1451 self.match(Fortran90Parser.ENDINTERFACE) pass - elif token in [Fortran90Parser.END]: + elif token in [12]: self.state = 1452 self.match(Fortran90Parser.END) self.state = 1453 @@ -10110,6 +9627,7 @@ def endInterfaceStmt(self): class InterfaceStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10186,6 +9704,7 @@ def interfaceStmt(self): class GenericSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10238,7 +9757,7 @@ def genericSpec(self): self.state = 1475 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.OPERATOR]: + if token in [22]: self.enterOuterAlt(localctx, 1) self.state = 1466 self.match(Fortran90Parser.OPERATOR) @@ -10249,7 +9768,7 @@ def genericSpec(self): self.state = 1469 self.match(Fortran90Parser.RPAREN) pass - elif token in [Fortran90Parser.ASSIGNMENT]: + elif token in [26]: self.enterOuterAlt(localctx, 2) self.state = 1471 self.match(Fortran90Parser.ASSIGNMENT) @@ -10273,6 +9792,7 @@ def genericSpec(self): class DefinedOperatorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10367,42 +9887,42 @@ def definedOperator(self): self.state = 1490 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.DOP]: + if token in [27]: self.enterOuterAlt(localctx, 1) self.state = 1477 self.match(Fortran90Parser.DOP) pass - elif token in [Fortran90Parser.POWER]: + elif token in [135]: self.enterOuterAlt(localctx, 2) self.state = 1478 self.match(Fortran90Parser.POWER) pass - elif token in [Fortran90Parser.STAR]: + elif token in [192]: self.enterOuterAlt(localctx, 3) self.state = 1479 self.match(Fortran90Parser.STAR) pass - elif token in [Fortran90Parser.MINUS, Fortran90Parser.PLUS]: + elif token in [131, 132]: self.enterOuterAlt(localctx, 4) self.state = 1480 _la = self._input.LA(1) - if not(_la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS): + if not(_la==131 or _la==132): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass - elif token in [Fortran90Parser.LT, Fortran90Parser.LE, Fortran90Parser.GT, Fortran90Parser.GE, Fortran90Parser.NE, Fortran90Parser.EQ]: + elif token in [143, 144, 145, 146, 147, 148]: self.enterOuterAlt(localctx, 5) self.state = 1481 _la = self._input.LA(1) - if not(((((_la - 143)) & ~0x3f) == 0 and ((1 << (_la - 143)) & ((1 << (Fortran90Parser.LT - 143)) | (1 << (Fortran90Parser.LE - 143)) | (1 << (Fortran90Parser.GT - 143)) | (1 << (Fortran90Parser.GE - 143)) | (1 << (Fortran90Parser.NE - 143)) | (1 << (Fortran90Parser.EQ - 143)))) != 0)): + if not(((((_la - 143)) & ~0x3f) == 0 and ((1 << (_la - 143)) & 63) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass - elif token in [Fortran90Parser.DIV]: + elif token in [133]: self.enterOuterAlt(localctx, 6) self.state = 1482 self.match(Fortran90Parser.DIV) @@ -10413,26 +9933,26 @@ def definedOperator(self): self.state = 1485 self.match(Fortran90Parser.SPON) pass - elif token in [Fortran90Parser.LNOT]: + elif token in [136]: self.enterOuterAlt(localctx, 7) self.state = 1486 self.match(Fortran90Parser.LNOT) pass - elif token in [Fortran90Parser.LAND]: + elif token in [137]: self.enterOuterAlt(localctx, 8) self.state = 1487 self.match(Fortran90Parser.LAND) pass - elif token in [Fortran90Parser.LOR]: + elif token in [138]: self.enterOuterAlt(localctx, 9) self.state = 1488 self.match(Fortran90Parser.LOR) pass - elif token in [Fortran90Parser.EQV, Fortran90Parser.NEQV]: + elif token in [139, 140]: self.enterOuterAlt(localctx, 10) self.state = 1489 _la = self._input.LA(1) - if not(_la==Fortran90Parser.EQV or _la==Fortran90Parser.NEQV): + if not(_la==139 or _la==140): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -10451,6 +9971,7 @@ def definedOperator(self): class InterfaceBlockBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10525,6 +10046,7 @@ def interfaceBlockBody(self, _p:int=0): class InterfaceBodyPartConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10566,12 +10088,12 @@ def interfaceBodyPartConstruct(self): self.state = 1504 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.RECURSIVE, Fortran90Parser.FUNCTION, Fortran90Parser.SUBROUTINE, Fortran90Parser.DOUBLEPRECISION, Fortran90Parser.REAL, Fortran90Parser.CHARACTER, Fortran90Parser.DOUBLE, Fortran90Parser.COMPLEX, Fortran90Parser.INTEGER, Fortran90Parser.LOGICAL, Fortran90Parser.TYPE]: + if token in [1, 7, 9, 29, 34, 43, 93, 166, 168, 169, 187]: self.enterOuterAlt(localctx, 1) self.state = 1502 self.interfaceBody() pass - elif token in [Fortran90Parser.MODULE]: + elif token in [3]: self.enterOuterAlt(localctx, 2) self.state = 1503 self.moduleProcedureStmt() @@ -10589,6 +10111,7 @@ def interfaceBodyPartConstruct(self): class ModuleProcedureStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10646,6 +10169,7 @@ def moduleProcedureStmt(self): class ProcedureNameListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10715,6 +10239,7 @@ def procedureNameList(self): class ProcedureNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10762,6 +10287,7 @@ def procedureName(self): class InterfaceBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10813,7 +10339,7 @@ def interfaceBody(self): self.state = 1527 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.RECURSIVE, Fortran90Parser.FUNCTION, Fortran90Parser.DOUBLEPRECISION, Fortran90Parser.REAL, Fortran90Parser.CHARACTER, Fortran90Parser.DOUBLE, Fortran90Parser.COMPLEX, Fortran90Parser.INTEGER, Fortran90Parser.LOGICAL, Fortran90Parser.TYPE]: + if token in [1, 7, 29, 34, 43, 93, 166, 168, 169, 187]: self.enterOuterAlt(localctx, 1) self.state = 1520 self.functionPrefix() @@ -10822,7 +10348,7 @@ def interfaceBody(self): self.state = 1522 self.functionInterfaceRange() pass - elif token in [Fortran90Parser.SUBROUTINE]: + elif token in [9]: self.enterOuterAlt(localctx, 2) self.state = 1524 self.match(Fortran90Parser.SUBROUTINE) @@ -10844,6 +10370,7 @@ def interfaceBody(self): class SubroutineInterfaceRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10893,7 +10420,7 @@ def subroutineInterfaceRange(self): self.state = 1531 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran90Parser.ENTRY) | (1 << Fortran90Parser.DIMENSION) | (1 << Fortran90Parser.TARGET) | (1 << Fortran90Parser.ALLOCATABLE) | (1 << Fortran90Parser.OPTIONAL) | (1 << Fortran90Parser.NAMELIST) | (1 << Fortran90Parser.INTENT) | (1 << Fortran90Parser.USE) | (1 << Fortran90Parser.DOUBLEPRECISION) | (1 << Fortran90Parser.COMMON) | (1 << Fortran90Parser.REAL) | (1 << Fortran90Parser.EQUIVALENCE) | (1 << Fortran90Parser.POINTER) | (1 << Fortran90Parser.ACCESSSPEC) | (1 << Fortran90Parser.IMPLICIT) | (1 << Fortran90Parser.CHARACTER) | (1 << Fortran90Parser.PARAMETER) | (1 << Fortran90Parser.EXTERNAL) | (1 << Fortran90Parser.INTRINSIC) | (1 << Fortran90Parser.SAVE) | (1 << Fortran90Parser.DATA) | (1 << Fortran90Parser.INCLUDE))) != 0) or _la==Fortran90Parser.DOUBLE or ((((_la - 166)) & ~0x3f) == 0 and ((1 << (_la - 166)) & ((1 << (Fortran90Parser.COMPLEX - 166)) | (1 << (Fortran90Parser.INTEGER - 166)) | (1 << (Fortran90Parser.LOGICAL - 166)) | (1 << (Fortran90Parser.INTERFACE - 166)) | (1 << (Fortran90Parser.ICON - 166)) | (1 << (Fortran90Parser.TYPE - 166)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 288788022366298176) != 0) or _la==93 or ((((_la - 166)) & ~0x3f) == 0 and ((1 << (_la - 166)) & 3276813) != 0): self.state = 1530 self.subprogramInterfaceBody(0) @@ -10910,6 +10437,7 @@ def subroutineInterfaceRange(self): class EndSubroutineStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10985,6 +10513,7 @@ def endSubroutineStmt(self): class RecursiveContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11031,6 +10560,7 @@ def recursive(self): class FunctionPrefixContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11121,7 +10651,7 @@ def functionPrefix(self): self.state = 1546 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.RECURSIVE: + if _la==1: self.state = 1545 self.recursive() @@ -11129,7 +10659,7 @@ def functionPrefix(self): self.state = 1549 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran90Parser.DOUBLEPRECISION) | (1 << Fortran90Parser.REAL) | (1 << Fortran90Parser.CHARACTER))) != 0) or _la==Fortran90Parser.DOUBLE or ((((_la - 166)) & ~0x3f) == 0 and ((1 << (_la - 166)) & ((1 << (Fortran90Parser.COMPLEX - 166)) | (1 << (Fortran90Parser.INTEGER - 166)) | (1 << (Fortran90Parser.LOGICAL - 166)) | (1 << (Fortran90Parser.TYPE - 166)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 8813809762304) != 0) or _la==93 or ((((_la - 166)) & ~0x3f) == 0 and ((1 << (_la - 166)) & 2097165) != 0): self.state = 1548 self.typeSpec() @@ -11160,6 +10690,7 @@ def functionPrefix(self): class FunctionInterfaceRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11209,7 +10740,7 @@ def functionInterfaceRange(self): self.state = 1560 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Fortran90Parser.ENTRY) | (1 << Fortran90Parser.DIMENSION) | (1 << Fortran90Parser.TARGET) | (1 << Fortran90Parser.ALLOCATABLE) | (1 << Fortran90Parser.OPTIONAL) | (1 << Fortran90Parser.NAMELIST) | (1 << Fortran90Parser.INTENT) | (1 << Fortran90Parser.USE) | (1 << Fortran90Parser.DOUBLEPRECISION) | (1 << Fortran90Parser.COMMON) | (1 << Fortran90Parser.REAL) | (1 << Fortran90Parser.EQUIVALENCE) | (1 << Fortran90Parser.POINTER) | (1 << Fortran90Parser.ACCESSSPEC) | (1 << Fortran90Parser.IMPLICIT) | (1 << Fortran90Parser.CHARACTER) | (1 << Fortran90Parser.PARAMETER) | (1 << Fortran90Parser.EXTERNAL) | (1 << Fortran90Parser.INTRINSIC) | (1 << Fortran90Parser.SAVE) | (1 << Fortran90Parser.DATA) | (1 << Fortran90Parser.INCLUDE))) != 0) or _la==Fortran90Parser.DOUBLE or ((((_la - 166)) & ~0x3f) == 0 and ((1 << (_la - 166)) & ((1 << (Fortran90Parser.COMPLEX - 166)) | (1 << (Fortran90Parser.INTEGER - 166)) | (1 << (Fortran90Parser.LOGICAL - 166)) | (1 << (Fortran90Parser.INTERFACE - 166)) | (1 << (Fortran90Parser.ICON - 166)) | (1 << (Fortran90Parser.TYPE - 166)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 288788022366298176) != 0) or _la==93 or ((((_la - 166)) & ~0x3f) == 0 and ((1 << (_la - 166)) & 3276813) != 0): self.state = 1559 self.subprogramInterfaceBody(0) @@ -11226,6 +10757,7 @@ def functionInterfaceRange(self): class FunctionParListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11273,7 +10805,7 @@ def functionParList(self): self.state = 1566 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.NAME: + if _la==188: self.state = 1565 self.functionPars() @@ -11290,6 +10822,7 @@ def functionParList(self): class FunctionParsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11340,7 +10873,7 @@ def functionPars(self): self.state = 1575 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 1571 self.match(Fortran90Parser.COMMA) self.state = 1572 @@ -11359,6 +10892,7 @@ def functionPars(self): class FunctionParContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11406,6 +10940,7 @@ def functionPar(self): class SubprogramInterfaceBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11480,6 +11015,7 @@ def subprogramInterfaceBody(self, _p:int=0): class EndFunctionStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11555,6 +11091,7 @@ def endFunctionStmt(self): class DerivedTypeDefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11614,6 +11151,7 @@ def derivedTypeDef(self): class EndTypeStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11702,6 +11240,7 @@ def endTypeStmt(self): class DerivedTypeStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11793,6 +11332,7 @@ def derivedTypeStmt(self): class DerivedTypeBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11867,6 +11407,7 @@ def derivedTypeBody(self, _p:int=0): class DerivedTypeBodyConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11908,12 +11449,12 @@ def derivedTypeBodyConstruct(self): self.state = 1636 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.PRIVATE, Fortran90Parser.SEQUENCE]: + if token in [38, 39]: self.enterOuterAlt(localctx, 1) self.state = 1634 self.privateSequenceStmt() pass - elif token in [Fortran90Parser.DOUBLEPRECISION, Fortran90Parser.REAL, Fortran90Parser.CHARACTER, Fortran90Parser.DOUBLE, Fortran90Parser.COMPLEX, Fortran90Parser.INTEGER, Fortran90Parser.LOGICAL, Fortran90Parser.TYPE]: + elif token in [29, 34, 43, 93, 166, 168, 169, 187]: self.enterOuterAlt(localctx, 2) self.state = 1635 self.componentDefStmt() @@ -11931,6 +11472,7 @@ def derivedTypeBodyConstruct(self): class PrivateSequenceStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11971,7 +11513,7 @@ def privateSequenceStmt(self): self.enterOuterAlt(localctx, 1) self.state = 1638 _la = self._input.LA(1) - if not(_la==Fortran90Parser.PRIVATE or _la==Fortran90Parser.SEQUENCE): + if not(_la==38 or _la==39): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -11986,6 +11528,7 @@ def privateSequenceStmt(self): class ComponentDefStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12080,6 +11623,7 @@ def componentDefStmt(self): class ComponentDeclListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12149,6 +11693,7 @@ def componentDeclList(self): class ComponentDeclContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12325,6 +11870,7 @@ def componentDecl(self): class ComponentNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12371,6 +11917,7 @@ def componentName(self): class ComponentAttrSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12421,7 +11968,7 @@ def componentAttrSpecList(self): self.state = 1715 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 1711 self.match(Fortran90Parser.COMMA) self.state = 1712 @@ -12440,6 +11987,7 @@ def componentAttrSpecList(self): class ComponentAttrSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12489,12 +12037,12 @@ def componentAttrSpec(self): self.state = 1724 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.POINTER]: + if token in [37]: self.enterOuterAlt(localctx, 1) self.state = 1718 self.match(Fortran90Parser.POINTER) pass - elif token in [Fortran90Parser.DIMENSION]: + elif token in [13]: self.enterOuterAlt(localctx, 2) self.state = 1719 self.match(Fortran90Parser.DIMENSION) @@ -12518,6 +12066,7 @@ def componentAttrSpec(self): class ComponentArraySpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12559,12 +12108,12 @@ def componentArraySpec(self): self.state = 1728 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.DOP, Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.LPAREN, Fortran90Parser.MINUS, Fortran90Parser.PLUS, Fortran90Parser.LNOT, Fortran90Parser.TRUE, Fortran90Parser.FALSE, Fortran90Parser.OBRACKETSLASH, Fortran90Parser.SCON, Fortran90Parser.RDCON, Fortran90Parser.ICON, Fortran90Parser.NAME]: + if token in [27, 34, 84, 123, 131, 132, 136, 149, 150, 171, 177, 178, 186, 188]: self.enterOuterAlt(localctx, 1) self.state = 1726 self.explicitShapeSpecList() pass - elif token in [Fortran90Parser.COLON]: + elif token in [129]: self.enterOuterAlt(localctx, 2) self.state = 1727 self.deferredShapeSpecList() @@ -12582,6 +12131,7 @@ def componentArraySpec(self): class ExplicitShapeSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12651,6 +12201,7 @@ def explicitShapeSpecList(self): class ExplicitShapeSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12722,6 +12273,7 @@ def explicitShapeSpec(self): class LowerBoundContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12769,6 +12321,7 @@ def lowerBound(self): class UpperBoundContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12816,6 +12369,7 @@ def upperBound(self): class DeferredShapeSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12885,6 +12439,7 @@ def deferredShapeSpecList(self): class DeferredShapeSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12931,6 +12486,7 @@ def deferredShapeSpec(self): class TypeSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13128,6 +12684,7 @@ def typeSpec(self): class KindSelectorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13212,6 +12769,7 @@ def kindSelector(self): class TypeNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13259,6 +12817,7 @@ def typeName(self): class CharSelectorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13410,6 +12969,7 @@ def charSelector(self): class LengthSelectorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13460,14 +13020,14 @@ def lengthSelector(self): self.state = 1842 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.STAR]: + if token in [192]: self.enterOuterAlt(localctx, 1) self.state = 1836 self.match(Fortran90Parser.STAR) self.state = 1837 self.charLength() pass - elif token in [Fortran90Parser.LPAREN]: + elif token in [123]: self.enterOuterAlt(localctx, 2) self.state = 1838 self.match(Fortran90Parser.LPAREN) @@ -13489,6 +13049,7 @@ def lengthSelector(self): class CharLengthContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13563,6 +13124,7 @@ def charLength(self): class ConstantContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13646,10 +13208,10 @@ def constant(self): self.state = 1853 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS: + if _la==131 or _la==132: self.state = 1852 _la = self._input.LA(1) - if not(_la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS): + if not(_la==131 or _la==132): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13721,6 +13283,7 @@ def constant(self): class BozLiteralConstantContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13764,7 +13327,7 @@ def bozLiteralConstant(self): self.enterOuterAlt(localctx, 1) self.state = 1870 _la = self._input.LA(1) - if not(((((_la - 174)) & ~0x3f) == 0 and ((1 << (_la - 174)) & ((1 << (Fortran90Parser.ZCON - 174)) | (1 << (Fortran90Parser.BCON - 174)) | (1 << (Fortran90Parser.OCON - 174)))) != 0)): + if not(((((_la - 174)) & ~0x3f) == 0 and ((1 << (_la - 174)) & 7) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13779,6 +13342,7 @@ def bozLiteralConstant(self): class StructureConstructorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13842,6 +13406,7 @@ def structureConstructor(self): class ExprListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13900,6 +13465,7 @@ def exprList(self): class NamedConstantUseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13946,6 +13512,7 @@ def namedConstantUse(self): class TypeParamValueContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13986,12 +13553,12 @@ def typeParamValue(self): self.state = 1885 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.DOP, Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.LPAREN, Fortran90Parser.MINUS, Fortran90Parser.PLUS, Fortran90Parser.LNOT, Fortran90Parser.TRUE, Fortran90Parser.FALSE, Fortran90Parser.OBRACKETSLASH, Fortran90Parser.SCON, Fortran90Parser.RDCON, Fortran90Parser.ICON, Fortran90Parser.NAME]: + if token in [27, 34, 84, 123, 131, 132, 136, 149, 150, 171, 177, 178, 186, 188]: self.enterOuterAlt(localctx, 1) self.state = 1883 self.expression(0) pass - elif token in [Fortran90Parser.STAR]: + elif token in [192]: self.enterOuterAlt(localctx, 2) self.state = 1884 self.match(Fortran90Parser.STAR) @@ -14009,6 +13576,7 @@ def typeParamValue(self): class ModuleStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14061,6 +13629,7 @@ def moduleStmt(self): class ModuleNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14108,6 +13677,7 @@ def moduleName(self): class IdentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14154,6 +13724,7 @@ def ident(self): class ModuleBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14354,6 +13925,7 @@ def moduleBody(self, _p:int=0): class ModuleSubprogramPartConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14395,12 +13967,12 @@ def moduleSubprogramPartConstruct(self): self.state = 1910 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.CONTAINS]: + if token in [2]: self.enterOuterAlt(localctx, 1) self.state = 1908 self.containsStmt() pass - elif token in [Fortran90Parser.RECURSIVE, Fortran90Parser.FUNCTION, Fortran90Parser.SUBROUTINE, Fortran90Parser.DOUBLEPRECISION, Fortran90Parser.REAL, Fortran90Parser.CHARACTER, Fortran90Parser.DOUBLE, Fortran90Parser.COMPLEX, Fortran90Parser.INTEGER, Fortran90Parser.LOGICAL, Fortran90Parser.TYPE]: + elif token in [1, 7, 9, 29, 34, 43, 93, 166, 168, 169, 187]: self.enterOuterAlt(localctx, 2) self.state = 1909 self.moduleSubprogram() @@ -14418,6 +13990,7 @@ def moduleSubprogramPartConstruct(self): class ContainsStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14464,6 +14037,7 @@ def containsStmt(self): class ModuleSubprogramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14528,6 +14102,7 @@ def moduleSubprogram(self): class FunctionSubprogramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14587,6 +14162,7 @@ def functionSubprogram(self): class FunctionNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14633,6 +14209,7 @@ def functionName(self): class FunctionRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14773,6 +14350,7 @@ def functionRange(self): class BodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14835,6 +14413,7 @@ def body(self): class BodyConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14899,6 +14478,7 @@ def bodyConstruct(self): class ExecutableConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14993,6 +14573,7 @@ def executableConstruct(self): class WhereConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15065,6 +14646,7 @@ def whereConstruct(self): class ElseWhereContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15149,6 +14731,7 @@ def elseWhere(self, _p:int=0): class ElsewhereStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15195,6 +14778,7 @@ def elsewhereStmt(self): class EndWhereStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15237,12 +14821,12 @@ def endWhereStmt(self): self.state = 1994 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ENDWHERE]: + if token in [60]: self.enterOuterAlt(localctx, 1) self.state = 1991 self.match(Fortran90Parser.ENDWHERE) pass - elif token in [Fortran90Parser.END]: + elif token in [12]: self.enterOuterAlt(localctx, 2) self.state = 1992 self.match(Fortran90Parser.END) @@ -15262,6 +14846,7 @@ def endWhereStmt(self): class WhereContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15340,6 +14925,7 @@ def where(self, _p:int=0): class WhereConstructStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15402,6 +14988,7 @@ def whereConstructStmt(self): class MaskExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15449,6 +15036,7 @@ def maskExpr(self): class CaseConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15590,6 +15178,7 @@ def caseConstruct(self): class SelectCaseRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15631,14 +15220,14 @@ def selectCaseRange(self): self.state = 2049 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.CASE]: + if token in [65]: self.enterOuterAlt(localctx, 1) self.state = 2045 self.selectCaseBody(0) self.state = 2046 self.endSelectStmt() pass - elif token in [Fortran90Parser.END, Fortran90Parser.ENDSELECT]: + elif token in [12, 62]: self.enterOuterAlt(localctx, 2) self.state = 2048 self.endSelectStmt() @@ -15656,6 +15245,7 @@ def selectCaseRange(self): class EndSelectStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15701,7 +15291,7 @@ def endSelectStmt(self): self.state = 2060 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ENDSELECT]: + if token in [62]: self.enterOuterAlt(localctx, 1) self.state = 2051 self.match(Fortran90Parser.ENDSELECT) @@ -15714,7 +15304,7 @@ def endSelectStmt(self): pass - elif token in [Fortran90Parser.END]: + elif token in [12]: self.enterOuterAlt(localctx, 2) self.state = 2055 self.match(Fortran90Parser.END) @@ -15742,6 +15332,7 @@ def endSelectStmt(self): class SelectCaseBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15820,6 +15411,7 @@ def selectCaseBody(self, _p:int=0): class CaseBodyConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15861,12 +15453,12 @@ def caseBodyConstruct(self): self.state = 2074 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.CASE]: + if token in [65]: self.enterOuterAlt(localctx, 1) self.state = 2072 self.caseStmt() pass - elif token in [Fortran90Parser.ENTRY, Fortran90Parser.END, Fortran90Parser.ASSIGNSTMT, Fortran90Parser.DATA, Fortran90Parser.GO, Fortran90Parser.GOTO, Fortran90Parser.IF, Fortran90Parser.DO, Fortran90Parser.CONTINUE, Fortran90Parser.WHERE, Fortran90Parser.SELECTCASE, Fortran90Parser.SELECT, Fortran90Parser.STOP, Fortran90Parser.PAUSE, Fortran90Parser.WRITE, Fortran90Parser.READ, Fortran90Parser.PRINT, Fortran90Parser.OPEN, Fortran90Parser.CALL, Fortran90Parser.RETURN, Fortran90Parser.CLOSE, Fortran90Parser.INQUIRE, Fortran90Parser.BACKSPACE, Fortran90Parser.ENDFILE, Fortran90Parser.REWIND, Fortran90Parser.ALLOCATE, Fortran90Parser.DEALLOCATE, Fortran90Parser.NULLIFY, Fortran90Parser.CYCLE, Fortran90Parser.ICON, Fortran90Parser.NAME, Fortran90Parser.EXIT]: + elif token in [6, 12, 31, 48, 49, 50, 51, 57, 59, 61, 63, 64, 68, 71, 72, 73, 74, 75, 90, 91, 92, 111, 112, 113, 114, 126, 179, 180, 181, 186, 188, 189]: self.enterOuterAlt(localctx, 2) self.state = 2073 self.executionPartConstruct() @@ -15884,6 +15476,7 @@ def caseBodyConstruct(self): class CaseStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15956,6 +15549,7 @@ def caseStmt(self): class CaseSelectorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16002,7 +15596,7 @@ def caseSelector(self): self.state = 2089 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.LPAREN]: + if token in [123]: self.enterOuterAlt(localctx, 1) self.state = 2084 self.match(Fortran90Parser.LPAREN) @@ -16011,7 +15605,7 @@ def caseSelector(self): self.state = 2086 self.match(Fortran90Parser.RPAREN) pass - elif token in [Fortran90Parser.DEFAULT]: + elif token in [66]: self.enterOuterAlt(localctx, 2) self.state = 2088 self.match(Fortran90Parser.DEFAULT) @@ -16029,6 +15623,7 @@ def caseSelector(self): class CaseValueRangeListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16077,7 +15672,7 @@ def caseValueRangeList(self): self.state = 2094 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==Fortran90Parser.DOP or _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.COLON - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)) | (1 << (Fortran90Parser.LNOT - 84)))) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & ((1 << (Fortran90Parser.TRUE - 149)) | (1 << (Fortran90Parser.FALSE - 149)) | (1 << (Fortran90Parser.OBRACKETSLASH - 149)) | (1 << (Fortran90Parser.SCON - 149)) | (1 << (Fortran90Parser.RDCON - 149)) | (1 << (Fortran90Parser.ICON - 149)) | (1 << (Fortran90Parser.NAME - 149)))) != 0)): + if not (_la==27 or _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 4961546220339201) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & 688004268035) != 0)): break except RecognitionException as re: @@ -16090,6 +15685,7 @@ def caseValueRangeList(self): class CaseValueRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16270,6 +15866,7 @@ def caseValueRange(self): class IfConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16343,7 +15940,7 @@ def ifConstruct(self): self.state = 2117 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.ELSE: + if _la==53: self.state = 2116 self.elseConstruct() @@ -16360,6 +15957,7 @@ def ifConstruct(self): class IfThenStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16427,6 +16025,7 @@ def ifThenStmt(self): class ConditionalBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16486,6 +16085,7 @@ def conditionalBody(self): class ElseIfConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16539,6 +16139,7 @@ def elseIfConstruct(self): class ElseIfStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16594,7 +16195,7 @@ def elseIfStmt(self): self.state = 2149 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ELSEIF]: + if token in [56]: self.enterOuterAlt(localctx, 1) self.state = 2136 self.match(Fortran90Parser.ELSEIF) @@ -16607,7 +16208,7 @@ def elseIfStmt(self): self.state = 2140 self.match(Fortran90Parser.THEN) pass - elif token in [Fortran90Parser.ELSE]: + elif token in [53]: self.enterOuterAlt(localctx, 2) self.state = 2142 self.match(Fortran90Parser.ELSE) @@ -16635,6 +16236,7 @@ def elseIfStmt(self): class ElseConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16688,6 +16290,7 @@ def elseConstruct(self): class ElseStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16734,6 +16337,7 @@ def elseStmt(self): class EndIfStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16776,12 +16380,12 @@ def endIfStmt(self): self.state = 2159 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ENDIF]: + if token in [54]: self.enterOuterAlt(localctx, 1) self.state = 2156 self.match(Fortran90Parser.ENDIF) pass - elif token in [Fortran90Parser.END]: + elif token in [12]: self.enterOuterAlt(localctx, 2) self.state = 2157 self.match(Fortran90Parser.END) @@ -16801,6 +16405,7 @@ def endIfStmt(self): class DoConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16865,6 +16470,7 @@ def doConstruct(self): class BlockDoConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16922,7 +16528,7 @@ def blockDoConstruct(self): self.state = 2166 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.NAME: + if _la==188: self.state = 2165 self.nameColon() @@ -16960,6 +16566,7 @@ def blockDoConstruct(self): class EndDoStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17006,7 +16613,7 @@ def endDoStmt(self): self.state = 2189 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ENDDO]: + if token in [70]: self.enterOuterAlt(localctx, 1) self.state = 2180 self.match(Fortran90Parser.ENDDO) @@ -17019,7 +16626,7 @@ def endDoStmt(self): pass - elif token in [Fortran90Parser.END]: + elif token in [12]: self.enterOuterAlt(localctx, 2) self.state = 2184 self.match(Fortran90Parser.END) @@ -17047,6 +16654,7 @@ def endDoStmt(self): class EndNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17094,6 +16702,7 @@ def endName(self): class NameColonContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17145,6 +16754,7 @@ def nameColon(self): class LabelDoStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17233,6 +16843,7 @@ def labelDoStmt(self): class DoLblRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17279,6 +16890,7 @@ def doLblRef(self): class DoLblDefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17325,6 +16937,7 @@ def doLblDef(self): class DoLabelStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17372,6 +16985,7 @@ def doLabelStmt(self): class ExecutionPartConstructContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17466,6 +17080,7 @@ def executionPartConstruct(self): class DoubleDoStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17524,6 +17139,7 @@ def doubleDoStmt(self): class DataStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17584,7 +17200,7 @@ def dataStmt(self): self.state = 2228 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.COMMA: + if _la==122: self.state = 2227 self.match(Fortran90Parser.COMMA) @@ -17605,6 +17221,7 @@ def dataStmt(self): class DataStmtSetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17658,6 +17275,7 @@ def dataStmtSet(self): class Dse1Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17711,7 +17329,7 @@ def dse1(self): self.state = 2244 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 2240 self.match(Fortran90Parser.COMMA) self.state = 2241 @@ -17732,6 +17350,7 @@ def dse1(self): class Dse2Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17785,7 +17404,7 @@ def dse2(self): self.state = 2254 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 2250 self.match(Fortran90Parser.COMMA) self.state = 2251 @@ -17806,6 +17425,7 @@ def dse2(self): class DataStmtValueContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17890,6 +17510,7 @@ def dataStmtValue(self): class DataStmtObjectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17931,12 +17552,12 @@ def dataStmtObject(self): self.state = 2272 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.NAME]: + if token in [188]: self.enterOuterAlt(localctx, 1) self.state = 2270 self.variable() pass - elif token in [Fortran90Parser.LPAREN]: + elif token in [123]: self.enterOuterAlt(localctx, 2) self.state = 2271 self.dataImpliedDo() @@ -17954,6 +17575,7 @@ def dataStmtObject(self): class VariableContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18025,6 +17647,7 @@ def variable(self): class SubscriptListRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18082,6 +17705,7 @@ def subscriptListRef(self): class SubscriptListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18130,7 +17754,7 @@ def subscriptList(self): self.state = 2288 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==Fortran90Parser.DOP or _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)) | (1 << (Fortran90Parser.LNOT - 84)))) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & ((1 << (Fortran90Parser.TRUE - 149)) | (1 << (Fortran90Parser.FALSE - 149)) | (1 << (Fortran90Parser.OBRACKETSLASH - 149)) | (1 << (Fortran90Parser.SCON - 149)) | (1 << (Fortran90Parser.RDCON - 149)) | (1 << (Fortran90Parser.ICON - 149)) | (1 << (Fortran90Parser.NAME - 149)))) != 0)): + if not (_la==27 or _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 4926361848250369) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & 688004268035) != 0)): break except RecognitionException as re: @@ -18143,6 +17767,7 @@ def subscriptList(self): class SubscriptContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18190,6 +17815,7 @@ def subscript(self): class SubstringRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18241,7 +17867,7 @@ def substringRange(self): self.state = 2294 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOP or _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)) | (1 << (Fortran90Parser.LNOT - 84)))) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & ((1 << (Fortran90Parser.TRUE - 149)) | (1 << (Fortran90Parser.FALSE - 149)) | (1 << (Fortran90Parser.OBRACKETSLASH - 149)) | (1 << (Fortran90Parser.SCON - 149)) | (1 << (Fortran90Parser.RDCON - 149)) | (1 << (Fortran90Parser.ICON - 149)) | (1 << (Fortran90Parser.NAME - 149)))) != 0): + if _la==27 or _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 4926361848250369) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & 688004268035) != 0): self.state = 2293 self.expression(0) @@ -18260,6 +17886,7 @@ def substringRange(self): class DataImpliedDoContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18382,6 +18009,7 @@ def dataImpliedDo(self): class DataIDoObjectListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18430,7 +18058,7 @@ def dataIDoObjectList(self): self.state = 2326 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==Fortran90Parser.LPAREN or _la==Fortran90Parser.NAME): + if not (_la==123 or _la==188): break except RecognitionException as re: @@ -18443,6 +18071,7 @@ def dataIDoObjectList(self): class DataIDoObjectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18517,6 +18146,7 @@ def dataIDoObject(self): class StructureComponentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18597,6 +18227,7 @@ def structureComponent(self, _p:int=0): class FieldSelectorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18646,7 +18277,7 @@ def fieldSelector(self): self.state = 2352 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.LPAREN]: + if token in [123]: self.enterOuterAlt(localctx, 1) self.state = 2344 self.match(Fortran90Parser.LPAREN) @@ -18659,7 +18290,7 @@ def fieldSelector(self): self.state = 2348 self.match(Fortran90Parser.NAME) pass - elif token in [Fortran90Parser.PCT]: + elif token in [124]: self.enterOuterAlt(localctx, 2) self.state = 2350 self.match(Fortran90Parser.PCT) @@ -18679,6 +18310,7 @@ def fieldSelector(self): class ArrayElementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18765,6 +18397,7 @@ def arrayElement(self): class ImpliedDoVariableContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18811,6 +18444,7 @@ def impliedDoVariable(self): class CommaLoopControlContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18853,7 +18487,7 @@ def commaLoopControl(self): self.state = 2369 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.COMMA: + if _la==122: self.state = 2368 self.match(Fortran90Parser.COMMA) @@ -18870,6 +18504,7 @@ def commaLoopControl(self): class LoopControlContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18933,7 +18568,7 @@ def loopControl(self): self.state = 2386 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.NAME]: + if token in [188]: self.enterOuterAlt(localctx, 1) self.state = 2373 self.variableName() @@ -18954,7 +18589,7 @@ def loopControl(self): pass - elif token in [Fortran90Parser.WHILE]: + elif token in [125]: self.enterOuterAlt(localctx, 2) self.state = 2381 self.match(Fortran90Parser.WHILE) @@ -18978,6 +18613,7 @@ def loopControl(self): class VariableNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19024,6 +18660,7 @@ def variableName(self): class CommaExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19076,6 +18713,7 @@ def commaExpr(self): class ActionStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19410,6 +19048,7 @@ def actionStmt(self): class WhereStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19478,6 +19117,7 @@ def whereStmt(self): class PointerAssignmentStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19550,7 +19190,7 @@ def pointerAssignmentStmt(self): self.state = 2435 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.LPAREN: + if _la==123: self.state = 2434 self.sFExprListRef() @@ -19576,6 +19216,7 @@ def pointerAssignmentStmt(self): class TargetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19623,6 +19264,7 @@ def target(self): class NullifyStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19685,6 +19327,7 @@ def nullifyStmt(self): class PointerObjectListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19735,7 +19378,7 @@ def pointerObjectList(self): self.state = 2456 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 2452 self.match(Fortran90Parser.COMMA) self.state = 2453 @@ -19754,6 +19397,7 @@ def pointerObjectList(self): class PointerObjectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19817,6 +19461,7 @@ def pointerObject(self): class PointerFieldContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19877,7 +19522,7 @@ def pointerField(self, _p:int=0): self.state = 2466 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.LPAREN: + if _la==123: self.state = 2465 self.sFExprListRef() @@ -19917,6 +19562,7 @@ def pointerField(self, _p:int=0): class ExitStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19975,6 +19621,7 @@ def exitStmt(self): class DeallocateStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20077,6 +19724,7 @@ def deallocateStmt(self): class AllocateObjectListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20146,6 +19794,7 @@ def allocateObjectList(self): class CycleStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20204,6 +19853,7 @@ def cycleStmt(self): class AllocateStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20306,6 +19956,7 @@ def allocateStmt(self): class AllocationListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20375,6 +20026,7 @@ def allocationList(self): class AllocationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20441,6 +20093,7 @@ def allocation(self): class AllocateObjectContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20519,6 +20172,7 @@ def allocateObject(self, _p:int=0): class AllocatedShapeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20576,6 +20230,7 @@ def allocatedShape(self): class StopStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20625,7 +20280,7 @@ def stopStmt(self): if la_ == 1: self.state = 2555 _la = self._input.LA(1) - if not(_la==Fortran90Parser.SCON or _la==Fortran90Parser.ICON): + if not(_la==177 or _la==186): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -20642,6 +20297,7 @@ def stopStmt(self): class WriteStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20716,6 +20372,7 @@ def writeStmt(self): class IoControlSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20840,6 +20497,7 @@ def ioControlSpecList(self, _p:int=0): class StmtFunctionStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20892,6 +20550,7 @@ def stmtFunctionStmt(self): class StmtFunctionRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20946,7 +20605,7 @@ def stmtFunctionRange(self): self.state = 2594 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.NAME: + if _la==188: self.state = 2593 self.sFDummyArgNameList() @@ -20967,6 +20626,7 @@ def stmtFunctionRange(self): class SFDummyArgNameListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21017,7 +20677,7 @@ def sFDummyArgNameList(self): self.state = 2605 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 2601 self.match(Fortran90Parser.COMMA) self.state = 2602 @@ -21036,6 +20696,7 @@ def sFDummyArgNameList(self): class SFDummyArgNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21082,6 +20743,7 @@ def sFDummyArgName(self): class ReturnStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21140,6 +20802,7 @@ def returnStmt(self): class RewindStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21221,6 +20884,7 @@ def rewindStmt(self): class ReadStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21316,6 +20980,7 @@ def readStmt(self): class CommaInputItemListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21368,6 +21033,7 @@ def commaInputItemList(self): class RdFmtIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21493,6 +21159,7 @@ def rdFmtId(self): class RdFmtIdExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21550,6 +21217,7 @@ def rdFmtIdExpr(self): class InputItemListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21619,6 +21287,7 @@ def inputItemList(self): class InputItemContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21660,12 +21329,12 @@ def inputItem(self): self.state = 2671 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.NAME]: + if token in [34, 84, 188]: self.enterOuterAlt(localctx, 1) self.state = 2669 self.nameDataRef() pass - elif token in [Fortran90Parser.LPAREN]: + elif token in [123]: self.enterOuterAlt(localctx, 2) self.state = 2670 self.inputImpliedDo() @@ -21683,6 +21352,7 @@ def inputItem(self): class InputImpliedDoContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21768,7 +21438,7 @@ def inputImpliedDo(self): self.state = 2682 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.COMMA: + if _la==122: self.state = 2681 self.commaExpr() @@ -21785,6 +21455,7 @@ def inputImpliedDo(self): class RdCtlSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21859,6 +21530,7 @@ def rdCtlSpec(self): class RdUnitIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21936,6 +21608,7 @@ def rdUnitId(self): class RdIoCtlSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22048,6 +21721,7 @@ def rdIoCtlSpecList(self, _p:int=0): class IoControlSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22146,7 +21820,7 @@ def ioControlSpec(self): self.state = 2752 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.FMT]: + if token in [76]: self.enterOuterAlt(localctx, 1) self.state = 2722 self.match(Fortran90Parser.FMT) @@ -22155,7 +21829,7 @@ def ioControlSpec(self): self.state = 2724 self.formatIdentifier() pass - elif token in [Fortran90Parser.UNIT]: + elif token in [77]: self.enterOuterAlt(localctx, 2) self.state = 2725 self.match(Fortran90Parser.UNIT) @@ -22164,7 +21838,7 @@ def ioControlSpec(self): self.state = 2727 self.unitIdentifier() pass - elif token in [Fortran90Parser.REC]: + elif token in [69]: self.enterOuterAlt(localctx, 3) self.state = 2728 self.match(Fortran90Parser.REC) @@ -22173,7 +21847,7 @@ def ioControlSpec(self): self.state = 2730 self.expression(0) pass - elif token in [Fortran90Parser.END]: + elif token in [12]: self.enterOuterAlt(localctx, 4) self.state = 2731 self.match(Fortran90Parser.END) @@ -22182,7 +21856,7 @@ def ioControlSpec(self): self.state = 2733 self.lblRef() pass - elif token in [Fortran90Parser.ERR]: + elif token in [83]: self.enterOuterAlt(localctx, 5) self.state = 2734 self.match(Fortran90Parser.ERR) @@ -22191,7 +21865,7 @@ def ioControlSpec(self): self.state = 2736 self.lblRef() pass - elif token in [Fortran90Parser.IOSTAT]: + elif token in [87]: self.enterOuterAlt(localctx, 6) self.state = 2737 self.match(Fortran90Parser.IOSTAT) @@ -22200,7 +21874,7 @@ def ioControlSpec(self): self.state = 2739 self.scalarVariable() pass - elif token in [Fortran90Parser.NML]: + elif token in [86]: self.enterOuterAlt(localctx, 7) self.state = 2740 self.match(Fortran90Parser.NML) @@ -22209,7 +21883,7 @@ def ioControlSpec(self): self.state = 2742 self.namelistGroupName() pass - elif token in [Fortran90Parser.ADVANCE]: + elif token in [85]: self.enterOuterAlt(localctx, 8) self.state = 2743 self.match(Fortran90Parser.ADVANCE) @@ -22218,7 +21892,7 @@ def ioControlSpec(self): self.state = 2745 self.cExpression() pass - elif token in [Fortran90Parser.SIZE]: + elif token in [84]: self.enterOuterAlt(localctx, 9) self.state = 2746 self.match(Fortran90Parser.SIZE) @@ -22227,7 +21901,7 @@ def ioControlSpec(self): self.state = 2748 self.variable() pass - elif token in [Fortran90Parser.EOR]: + elif token in [142]: self.enterOuterAlt(localctx, 10) self.state = 2749 self.match(Fortran90Parser.EOR) @@ -22249,6 +21923,7 @@ def ioControlSpec(self): class PrintStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22327,6 +22002,7 @@ def printStmt(self): class OutputItemListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22391,6 +22067,7 @@ def outputItemList(self): class OutputItemList1Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22522,6 +22199,7 @@ def outputItemList1(self, _p:int=0): class OutputImpliedDoContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22611,7 +22289,7 @@ def outputImpliedDo(self): self.state = 2799 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.COMMA: + if _la==122: self.state = 2798 self.commaExpr() @@ -22641,7 +22319,7 @@ def outputImpliedDo(self): self.state = 2812 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.COMMA: + if _la==122: self.state = 2811 self.commaExpr() @@ -22661,6 +22339,7 @@ def outputImpliedDo(self): class FormatIdentifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22705,17 +22384,17 @@ def formatIdentifier(self): self.state = 2821 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ICON]: + if token in [186]: self.enterOuterAlt(localctx, 1) self.state = 2818 self.lblRef() pass - elif token in [Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.LPAREN, Fortran90Parser.SCON, Fortran90Parser.NAME]: + elif token in [34, 84, 123, 177, 188]: self.enterOuterAlt(localctx, 2) self.state = 2819 self.cExpression() pass - elif token in [Fortran90Parser.STAR]: + elif token in [192]: self.enterOuterAlt(localctx, 3) self.state = 2820 self.match(Fortran90Parser.STAR) @@ -22733,6 +22412,7 @@ def formatIdentifier(self): class PauseStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22782,7 +22462,7 @@ def pauseStmt(self): if la_ == 1: self.state = 2824 _la = self._input.LA(1) - if not(_la==Fortran90Parser.SCON or _la==Fortran90Parser.ICON): + if not(_la==177 or _la==186): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -22799,6 +22479,7 @@ def pauseStmt(self): class OpenStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22861,6 +22542,7 @@ def openStmt(self): class ConnectSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -22913,7 +22595,7 @@ def connectSpecList(self): self.state = 2833 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)))) != 0) or ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (Fortran90Parser.SCON - 177)) | (1 << (Fortran90Parser.ICON - 177)) | (1 << (Fortran90Parser.NAME - 177)) | (1 << (Fortran90Parser.STAR - 177)))) != 0): + if _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 422762220879873) != 0) or ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & 35329) != 0): self.state = 2832 self.unitIdentifierComma() @@ -22921,7 +22603,7 @@ def connectSpecList(self): self.state = 2836 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 77)) & ~0x3f) == 0 and ((1 << (_la - 77)) & ((1 << (Fortran90Parser.UNIT - 77)) | (1 << (Fortran90Parser.PAD - 77)) | (1 << (Fortran90Parser.ACTION - 77)) | (1 << (Fortran90Parser.DELIM - 77)) | (1 << (Fortran90Parser.ERR - 77)) | (1 << (Fortran90Parser.IOSTAT - 77)) | (1 << (Fortran90Parser.FILE - 77)) | (1 << (Fortran90Parser.STATUS - 77)) | (1 << (Fortran90Parser.ACCESS - 77)) | (1 << (Fortran90Parser.POSITION - 77)) | (1 << (Fortran90Parser.FORM - 77)) | (1 << (Fortran90Parser.RECL - 77)))) != 0) or _la==Fortran90Parser.BLANK: + if ((((_la - 77)) & ~0x3f) == 0 and ((1 << (_la - 77)) & 66061391) != 0) or _la==190: self.state = 2835 self.connectSpec() @@ -22929,7 +22611,7 @@ def connectSpecList(self): self.state = 2842 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 2838 self.match(Fortran90Parser.COMMA) self.state = 2839 @@ -22948,6 +22630,7 @@ def connectSpecList(self): class ConnectSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -23043,7 +22726,7 @@ def connectSpec(self): self.state = 2884 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.UNIT]: + if token in [77]: self.enterOuterAlt(localctx, 1) self.state = 2845 self.match(Fortran90Parser.UNIT) @@ -23052,7 +22735,7 @@ def connectSpec(self): self.state = 2847 self.unitIdentifier() pass - elif token in [Fortran90Parser.ERR]: + elif token in [83]: self.enterOuterAlt(localctx, 2) self.state = 2848 self.match(Fortran90Parser.ERR) @@ -23061,7 +22744,7 @@ def connectSpec(self): self.state = 2850 self.lblRef() pass - elif token in [Fortran90Parser.FILE]: + elif token in [97]: self.enterOuterAlt(localctx, 3) self.state = 2851 self.match(Fortran90Parser.FILE) @@ -23070,7 +22753,7 @@ def connectSpec(self): self.state = 2853 self.cExpression() pass - elif token in [Fortran90Parser.STATUS]: + elif token in [98]: self.enterOuterAlt(localctx, 4) self.state = 2854 self.match(Fortran90Parser.STATUS) @@ -23079,7 +22762,7 @@ def connectSpec(self): self.state = 2856 self.cExpression() pass - elif token in [Fortran90Parser.ACCESS]: + elif token in [99]: self.enterOuterAlt(localctx, 5) self.state = 2857 self.match(Fortran90Parser.ACCESS) @@ -23088,7 +22771,7 @@ def connectSpec(self): self.state = 2859 self.cExpression() pass - elif token in [Fortran90Parser.FORM]: + elif token in [101]: self.enterOuterAlt(localctx, 6) self.state = 2860 self.match(Fortran90Parser.FORM) @@ -23097,7 +22780,7 @@ def connectSpec(self): self.state = 2862 self.cExpression() pass - elif token in [Fortran90Parser.RECL]: + elif token in [102]: self.enterOuterAlt(localctx, 7) self.state = 2863 self.match(Fortran90Parser.RECL) @@ -23106,7 +22789,7 @@ def connectSpec(self): self.state = 2865 self.expression(0) pass - elif token in [Fortran90Parser.BLANK]: + elif token in [190]: self.enterOuterAlt(localctx, 8) self.state = 2866 self.match(Fortran90Parser.BLANK) @@ -23115,7 +22798,7 @@ def connectSpec(self): self.state = 2868 self.cExpression() pass - elif token in [Fortran90Parser.IOSTAT]: + elif token in [87]: self.enterOuterAlt(localctx, 9) self.state = 2869 self.match(Fortran90Parser.IOSTAT) @@ -23124,7 +22807,7 @@ def connectSpec(self): self.state = 2871 self.scalarVariable() pass - elif token in [Fortran90Parser.POSITION]: + elif token in [100]: self.enterOuterAlt(localctx, 10) self.state = 2872 self.match(Fortran90Parser.POSITION) @@ -23133,7 +22816,7 @@ def connectSpec(self): self.state = 2874 self.cExpression() pass - elif token in [Fortran90Parser.ACTION]: + elif token in [79]: self.enterOuterAlt(localctx, 11) self.state = 2875 self.match(Fortran90Parser.ACTION) @@ -23142,7 +22825,7 @@ def connectSpec(self): self.state = 2877 self.cExpression() pass - elif token in [Fortran90Parser.DELIM]: + elif token in [80]: self.enterOuterAlt(localctx, 12) self.state = 2878 self.match(Fortran90Parser.DELIM) @@ -23151,7 +22834,7 @@ def connectSpec(self): self.state = 2880 self.cExpression() pass - elif token in [Fortran90Parser.PAD]: + elif token in [78]: self.enterOuterAlt(localctx, 13) self.state = 2881 self.match(Fortran90Parser.PAD) @@ -23173,6 +22856,7 @@ def connectSpec(self): class InquireStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -23274,6 +22958,7 @@ def inquireStmt(self): class InquireSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -23334,7 +23019,7 @@ def inquireSpecList(self): self.state = 2905 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (Fortran90Parser.DIRECT - 67)) | (1 << (Fortran90Parser.WRITE - 67)) | (1 << (Fortran90Parser.READ - 67)) | (1 << (Fortran90Parser.UNIT - 67)) | (1 << (Fortran90Parser.PAD - 67)) | (1 << (Fortran90Parser.ACTION - 67)) | (1 << (Fortran90Parser.DELIM - 67)) | (1 << (Fortran90Parser.READWRITE - 67)) | (1 << (Fortran90Parser.ERR - 67)) | (1 << (Fortran90Parser.IOSTAT - 67)) | (1 << (Fortran90Parser.SEQUENTIAL - 67)) | (1 << (Fortran90Parser.FILE - 67)) | (1 << (Fortran90Parser.ACCESS - 67)) | (1 << (Fortran90Parser.POSITION - 67)) | (1 << (Fortran90Parser.FORM - 67)) | (1 << (Fortran90Parser.RECL - 67)) | (1 << (Fortran90Parser.EXIST - 67)) | (1 << (Fortran90Parser.OPENED - 67)) | (1 << (Fortran90Parser.NUMBER - 67)) | (1 << (Fortran90Parser.NAMED - 67)) | (1 << (Fortran90Parser.FORMATTED - 67)) | (1 << (Fortran90Parser.UNFORMATTED - 67)) | (1 << (Fortran90Parser.NEXTREC - 67)))) != 0) or _la==Fortran90Parser.NAME or _la==Fortran90Parser.BLANK: + if ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & 16489722788961) != 0) or _la==188 or _la==190: self.state = 2904 self.inquireSpec() @@ -23342,7 +23027,7 @@ def inquireSpecList(self): self.state = 2911 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 2907 self.match(Fortran90Parser.COMMA) self.state = 2908 @@ -23361,6 +23046,7 @@ def inquireSpecList(self): class InquireSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -23492,7 +23178,7 @@ def inquireSpec(self): self.state = 2989 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.UNIT]: + if token in [77]: self.enterOuterAlt(localctx, 1) self.state = 2914 self.match(Fortran90Parser.UNIT) @@ -23501,7 +23187,7 @@ def inquireSpec(self): self.state = 2916 self.unitIdentifier() pass - elif token in [Fortran90Parser.FILE]: + elif token in [97]: self.enterOuterAlt(localctx, 2) self.state = 2917 self.match(Fortran90Parser.FILE) @@ -23510,7 +23196,7 @@ def inquireSpec(self): self.state = 2919 self.cExpression() pass - elif token in [Fortran90Parser.ERR]: + elif token in [83]: self.enterOuterAlt(localctx, 3) self.state = 2920 self.match(Fortran90Parser.ERR) @@ -23519,7 +23205,7 @@ def inquireSpec(self): self.state = 2922 self.lblRef() pass - elif token in [Fortran90Parser.IOSTAT]: + elif token in [87]: self.enterOuterAlt(localctx, 4) self.state = 2923 self.match(Fortran90Parser.IOSTAT) @@ -23528,7 +23214,7 @@ def inquireSpec(self): self.state = 2925 self.scalarVariable() pass - elif token in [Fortran90Parser.EXIST]: + elif token in [103]: self.enterOuterAlt(localctx, 5) self.state = 2926 self.match(Fortran90Parser.EXIST) @@ -23537,7 +23223,7 @@ def inquireSpec(self): self.state = 2928 self.scalarVariable() pass - elif token in [Fortran90Parser.OPENED]: + elif token in [104]: self.enterOuterAlt(localctx, 6) self.state = 2929 self.match(Fortran90Parser.OPENED) @@ -23546,7 +23232,7 @@ def inquireSpec(self): self.state = 2931 self.scalarVariable() pass - elif token in [Fortran90Parser.NUMBER]: + elif token in [105]: self.enterOuterAlt(localctx, 7) self.state = 2932 self.match(Fortran90Parser.NUMBER) @@ -23555,7 +23241,7 @@ def inquireSpec(self): self.state = 2934 self.scalarVariable() pass - elif token in [Fortran90Parser.NAMED]: + elif token in [106]: self.enterOuterAlt(localctx, 8) self.state = 2935 self.match(Fortran90Parser.NAMED) @@ -23564,7 +23250,7 @@ def inquireSpec(self): self.state = 2937 self.scalarVariable() pass - elif token in [Fortran90Parser.NAME]: + elif token in [188]: self.enterOuterAlt(localctx, 9) self.state = 2938 self.match(Fortran90Parser.NAME) @@ -23573,7 +23259,7 @@ def inquireSpec(self): self.state = 2940 self.scalarVariable() pass - elif token in [Fortran90Parser.ACCESS]: + elif token in [99]: self.enterOuterAlt(localctx, 10) self.state = 2941 self.match(Fortran90Parser.ACCESS) @@ -23582,7 +23268,7 @@ def inquireSpec(self): self.state = 2943 self.scalarVariable() pass - elif token in [Fortran90Parser.SEQUENTIAL]: + elif token in [95]: self.enterOuterAlt(localctx, 11) self.state = 2944 self.match(Fortran90Parser.SEQUENTIAL) @@ -23591,7 +23277,7 @@ def inquireSpec(self): self.state = 2946 self.scalarVariable() pass - elif token in [Fortran90Parser.DIRECT]: + elif token in [67]: self.enterOuterAlt(localctx, 12) self.state = 2947 self.match(Fortran90Parser.DIRECT) @@ -23600,7 +23286,7 @@ def inquireSpec(self): self.state = 2949 self.scalarVariable() pass - elif token in [Fortran90Parser.FORM]: + elif token in [101]: self.enterOuterAlt(localctx, 13) self.state = 2950 self.match(Fortran90Parser.FORM) @@ -23609,7 +23295,7 @@ def inquireSpec(self): self.state = 2952 self.scalarVariable() pass - elif token in [Fortran90Parser.FORMATTED]: + elif token in [108]: self.enterOuterAlt(localctx, 14) self.state = 2953 self.match(Fortran90Parser.FORMATTED) @@ -23618,7 +23304,7 @@ def inquireSpec(self): self.state = 2955 self.scalarVariable() pass - elif token in [Fortran90Parser.UNFORMATTED]: + elif token in [109]: self.enterOuterAlt(localctx, 15) self.state = 2956 self.match(Fortran90Parser.UNFORMATTED) @@ -23627,7 +23313,7 @@ def inquireSpec(self): self.state = 2958 self.scalarVariable() pass - elif token in [Fortran90Parser.RECL]: + elif token in [102]: self.enterOuterAlt(localctx, 16) self.state = 2959 self.match(Fortran90Parser.RECL) @@ -23636,7 +23322,7 @@ def inquireSpec(self): self.state = 2961 self.expression(0) pass - elif token in [Fortran90Parser.NEXTREC]: + elif token in [110]: self.enterOuterAlt(localctx, 17) self.state = 2962 self.match(Fortran90Parser.NEXTREC) @@ -23645,7 +23331,7 @@ def inquireSpec(self): self.state = 2964 self.scalarVariable() pass - elif token in [Fortran90Parser.BLANK]: + elif token in [190]: self.enterOuterAlt(localctx, 18) self.state = 2965 self.match(Fortran90Parser.BLANK) @@ -23654,7 +23340,7 @@ def inquireSpec(self): self.state = 2967 self.scalarVariable() pass - elif token in [Fortran90Parser.POSITION]: + elif token in [100]: self.enterOuterAlt(localctx, 19) self.state = 2968 self.match(Fortran90Parser.POSITION) @@ -23663,7 +23349,7 @@ def inquireSpec(self): self.state = 2970 self.scalarVariable() pass - elif token in [Fortran90Parser.ACTION]: + elif token in [79]: self.enterOuterAlt(localctx, 20) self.state = 2971 self.match(Fortran90Parser.ACTION) @@ -23672,7 +23358,7 @@ def inquireSpec(self): self.state = 2973 self.scalarVariable() pass - elif token in [Fortran90Parser.READ]: + elif token in [73]: self.enterOuterAlt(localctx, 21) self.state = 2974 self.match(Fortran90Parser.READ) @@ -23681,7 +23367,7 @@ def inquireSpec(self): self.state = 2976 self.scalarVariable() pass - elif token in [Fortran90Parser.WRITE]: + elif token in [72]: self.enterOuterAlt(localctx, 22) self.state = 2977 self.match(Fortran90Parser.WRITE) @@ -23690,7 +23376,7 @@ def inquireSpec(self): self.state = 2979 self.scalarVariable() pass - elif token in [Fortran90Parser.READWRITE]: + elif token in [82]: self.enterOuterAlt(localctx, 23) self.state = 2980 self.match(Fortran90Parser.READWRITE) @@ -23699,7 +23385,7 @@ def inquireSpec(self): self.state = 2982 self.scalarVariable() pass - elif token in [Fortran90Parser.DELIM]: + elif token in [80]: self.enterOuterAlt(localctx, 24) self.state = 2983 self.match(Fortran90Parser.DELIM) @@ -23708,7 +23394,7 @@ def inquireSpec(self): self.state = 2985 self.scalarVariable() pass - elif token in [Fortran90Parser.PAD]: + elif token in [78]: self.enterOuterAlt(localctx, 25) self.state = 2986 self.match(Fortran90Parser.PAD) @@ -23730,6 +23416,7 @@ def inquireSpec(self): class AssignedGotoStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -23795,11 +23482,11 @@ def assignedGotoStmt(self): self.state = 2994 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.GOTO]: + if token in [50]: self.state = 2991 self.match(Fortran90Parser.GOTO) pass - elif token in [Fortran90Parser.GO]: + elif token in [49]: self.state = 2992 self.match(Fortran90Parser.GO) self.state = 2993 @@ -23817,11 +23504,11 @@ def assignedGotoStmt(self): self.state = 3000 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.GOTO]: + if token in [50]: self.state = 2997 self.match(Fortran90Parser.GOTO) pass - elif token in [Fortran90Parser.GO]: + elif token in [49]: self.state = 2998 self.match(Fortran90Parser.GO) self.state = 2999 @@ -23845,11 +23532,11 @@ def assignedGotoStmt(self): self.state = 3010 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.GOTO]: + if token in [50]: self.state = 3007 self.match(Fortran90Parser.GOTO) pass - elif token in [Fortran90Parser.GO]: + elif token in [49]: self.state = 3008 self.match(Fortran90Parser.GO) self.state = 3009 @@ -23879,6 +23566,7 @@ def assignedGotoStmt(self): class VariableCommaContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -23931,6 +23619,7 @@ def variableComma(self): class GotoStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -23978,11 +23667,11 @@ def gotoStmt(self): self.state = 3025 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.GOTO]: + if token in [50]: self.state = 3022 self.match(Fortran90Parser.GOTO) pass - elif token in [Fortran90Parser.GO]: + elif token in [49]: self.state = 3023 self.match(Fortran90Parser.GO) self.state = 3024 @@ -24003,6 +23692,7 @@ def gotoStmt(self): class ComputedGotoStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24066,7 +23756,7 @@ def computedGotoStmt(self): self.state = 3034 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.COMMA: + if _la==122: self.state = 3033 self.match(Fortran90Parser.COMMA) @@ -24083,6 +23773,7 @@ def computedGotoStmt(self): class LblRefListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24133,7 +23824,7 @@ def lblRefList(self): self.state = 3043 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 3039 self.match(Fortran90Parser.COMMA) self.state = 3040 @@ -24152,6 +23843,7 @@ def lblRefList(self): class EndfileStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24213,11 +23905,11 @@ def endfileStmt(self): self.state = 3049 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ENDFILE]: + if token in [113]: self.state = 3046 self.match(Fortran90Parser.ENDFILE) pass - elif token in [Fortran90Parser.END]: + elif token in [12]: self.state = 3047 self.match(Fortran90Parser.END) self.state = 3048 @@ -24235,11 +23927,11 @@ def endfileStmt(self): self.state = 3055 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ENDFILE]: + if token in [113]: self.state = 3052 self.match(Fortran90Parser.ENDFILE) pass - elif token in [Fortran90Parser.END]: + elif token in [12]: self.state = 3053 self.match(Fortran90Parser.END) self.state = 3054 @@ -24267,6 +23959,7 @@ def endfileStmt(self): class ContinueStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24313,6 +24006,7 @@ def continueStmt(self): class CloseStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24375,6 +24069,7 @@ def closeStmt(self): class CloseSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24427,7 +24122,7 @@ def closeSpecList(self): self.state = 3071 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)))) != 0) or ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (Fortran90Parser.SCON - 177)) | (1 << (Fortran90Parser.ICON - 177)) | (1 << (Fortran90Parser.NAME - 177)) | (1 << (Fortran90Parser.STAR - 177)))) != 0): + if _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 422762220879873) != 0) or ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & 35329) != 0): self.state = 3070 self.unitIdentifierComma() @@ -24435,7 +24130,7 @@ def closeSpecList(self): self.state = 3074 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 77)) & ~0x3f) == 0 and ((1 << (_la - 77)) & ((1 << (Fortran90Parser.UNIT - 77)) | (1 << (Fortran90Parser.ERR - 77)) | (1 << (Fortran90Parser.IOSTAT - 77)) | (1 << (Fortran90Parser.STATUS - 77)))) != 0): + if ((((_la - 77)) & ~0x3f) == 0 and ((1 << (_la - 77)) & 2098241) != 0): self.state = 3073 self.closeSpec() @@ -24443,7 +24138,7 @@ def closeSpecList(self): self.state = 3080 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 3076 self.match(Fortran90Parser.COMMA) self.state = 3077 @@ -24462,6 +24157,7 @@ def closeSpecList(self): class CloseSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24526,7 +24222,7 @@ def closeSpec(self): self.state = 3094 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.UNIT]: + if token in [77]: self.enterOuterAlt(localctx, 1) self.state = 3083 self.match(Fortran90Parser.UNIT) @@ -24535,7 +24231,7 @@ def closeSpec(self): self.state = 3085 self.unitIdentifier() pass - elif token in [Fortran90Parser.ERR]: + elif token in [83]: self.enterOuterAlt(localctx, 2) self.state = 3086 self.match(Fortran90Parser.ERR) @@ -24544,7 +24240,7 @@ def closeSpec(self): self.state = 3088 self.lblRef() pass - elif token in [Fortran90Parser.STATUS]: + elif token in [98]: self.enterOuterAlt(localctx, 3) self.state = 3089 self.match(Fortran90Parser.STATUS) @@ -24553,7 +24249,7 @@ def closeSpec(self): self.state = 3091 self.cExpression() pass - elif token in [Fortran90Parser.IOSTAT]: + elif token in [87]: self.enterOuterAlt(localctx, 4) self.state = 3092 self.match(Fortran90Parser.IOSTAT) @@ -24573,6 +24269,7 @@ def closeSpec(self): class CExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24638,6 +24335,7 @@ def cExpression(self): class CPrimaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24685,12 +24383,12 @@ def cPrimary(self): self.state = 3108 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.SCON, Fortran90Parser.NAME]: + if token in [34, 84, 177, 188]: self.enterOuterAlt(localctx, 1) self.state = 3103 self.cOperand() pass - elif token in [Fortran90Parser.LPAREN]: + elif token in [123]: self.enterOuterAlt(localctx, 2) self.state = 3104 self.match(Fortran90Parser.LPAREN) @@ -24712,6 +24410,7 @@ def cPrimary(self): class COperandContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24785,6 +24484,7 @@ def cOperand(self): class CPrimaryConcatOpContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24852,6 +24552,7 @@ def cPrimaryConcatOp(self): class CallStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24935,6 +24636,7 @@ def callStmt(self): class SubroutineNameUseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -24981,6 +24683,7 @@ def subroutineNameUse(self): class SubroutineArgListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25029,7 +24732,7 @@ def subroutineArgList(self): self.state = 3134 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOP or _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)) | (1 << (Fortran90Parser.LNOT - 84)))) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & ((1 << (Fortran90Parser.TRUE - 149)) | (1 << (Fortran90Parser.FALSE - 149)) | (1 << (Fortran90Parser.HOLLERITH - 149)) | (1 << (Fortran90Parser.OBRACKETSLASH - 149)) | (1 << (Fortran90Parser.SCON - 149)) | (1 << (Fortran90Parser.RDCON - 149)) | (1 << (Fortran90Parser.ICON - 149)) | (1 << (Fortran90Parser.NAME - 149)) | (1 << (Fortran90Parser.STAR - 149)))) != 0): + if _la==27 or _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 4926361848250369) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & 9484097290307) != 0): self.state = 3133 self.subroutineArg() @@ -25037,7 +24740,7 @@ def subroutineArgList(self): self.state = 3140 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 3136 self.match(Fortran90Parser.COMMA) self.state = 3137 @@ -25056,6 +24759,7 @@ def subroutineArgList(self): class SubroutineArgContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25172,6 +24876,7 @@ def subroutineArg(self): class ArithmeticIfStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25257,6 +24962,7 @@ def arithmeticIfStmt(self): class LblRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25304,6 +25010,7 @@ def lblRef(self): class LabelContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25350,6 +25057,7 @@ def label(self): class AssignmentStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25428,7 +25136,7 @@ def assignmentStmt(self): self.state = 3174 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.ICON: + if _la==186: self.state = 3173 self.label() @@ -25446,7 +25154,7 @@ def assignmentStmt(self): self.state = 3181 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.LPAREN: + if _la==123: self.state = 3180 self.substringRange() @@ -25464,7 +25172,7 @@ def assignmentStmt(self): self.state = 3187 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.LPAREN: + if _la==123: self.state = 3186 self.sFExprListRef() @@ -25510,6 +25218,7 @@ def assignmentStmt(self): class SFExprListRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25566,7 +25275,7 @@ def sFExprListRef(self): self.state = 3210 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Fortran90Parser.COMMA: + while _la==122: self.state = 3207 self.commaSectionSubscript() self.state = 3212 @@ -25585,6 +25294,7 @@ def sFExprListRef(self): class SFExprListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25642,7 +25352,7 @@ def sFExprList(self): self.state = 3217 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.COLON: + if _la==129: self.state = 3216 self.match(Fortran90Parser.COLON) @@ -25650,7 +25360,7 @@ def sFExprList(self): self.state = 3220 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOP or _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)) | (1 << (Fortran90Parser.LNOT - 84)))) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & ((1 << (Fortran90Parser.TRUE - 149)) | (1 << (Fortran90Parser.FALSE - 149)) | (1 << (Fortran90Parser.OBRACKETSLASH - 149)) | (1 << (Fortran90Parser.SCON - 149)) | (1 << (Fortran90Parser.RDCON - 149)) | (1 << (Fortran90Parser.ICON - 149)) | (1 << (Fortran90Parser.NAME - 149)))) != 0): + if _la==27 or _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 4926361848250369) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & 688004268035) != 0): self.state = 3219 self.expression(0) @@ -25664,7 +25374,7 @@ def sFExprList(self): self.state = 3224 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOP or _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)) | (1 << (Fortran90Parser.LNOT - 84)))) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & ((1 << (Fortran90Parser.TRUE - 149)) | (1 << (Fortran90Parser.FALSE - 149)) | (1 << (Fortran90Parser.OBRACKETSLASH - 149)) | (1 << (Fortran90Parser.SCON - 149)) | (1 << (Fortran90Parser.RDCON - 149)) | (1 << (Fortran90Parser.ICON - 149)) | (1 << (Fortran90Parser.NAME - 149)))) != 0): + if _la==27 or _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 4926361848250369) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & 688004268035) != 0): self.state = 3223 self.expression(0) @@ -25676,7 +25386,7 @@ def sFExprList(self): self.state = 3227 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOP or _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)) | (1 << (Fortran90Parser.LNOT - 84)))) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & ((1 << (Fortran90Parser.TRUE - 149)) | (1 << (Fortran90Parser.FALSE - 149)) | (1 << (Fortran90Parser.OBRACKETSLASH - 149)) | (1 << (Fortran90Parser.SCON - 149)) | (1 << (Fortran90Parser.RDCON - 149)) | (1 << (Fortran90Parser.ICON - 149)) | (1 << (Fortran90Parser.NAME - 149)))) != 0): + if _la==27 or _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 4926361848250369) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & 688004268035) != 0): self.state = 3226 self.expression(0) @@ -25696,7 +25406,7 @@ def sFExprList(self): self.state = 3235 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOP or _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)) | (1 << (Fortran90Parser.LNOT - 84)))) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & ((1 << (Fortran90Parser.TRUE - 149)) | (1 << (Fortran90Parser.FALSE - 149)) | (1 << (Fortran90Parser.OBRACKETSLASH - 149)) | (1 << (Fortran90Parser.SCON - 149)) | (1 << (Fortran90Parser.RDCON - 149)) | (1 << (Fortran90Parser.ICON - 149)) | (1 << (Fortran90Parser.NAME - 149)))) != 0): + if _la==27 or _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 4926361848250369) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & 688004268035) != 0): self.state = 3234 self.expression(0) @@ -25718,6 +25428,7 @@ def sFExprList(self): class CommaSectionSubscriptContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25770,6 +25481,7 @@ def commaSectionSubscript(self): class AssignStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25833,6 +25545,7 @@ def assignStmt(self): class BackspaceStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25914,6 +25627,7 @@ def backspaceStmt(self): class UnitIdentifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -25954,12 +25668,12 @@ def unitIdentifier(self): self.state = 3260 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.LPAREN, Fortran90Parser.MINUS, Fortran90Parser.PLUS, Fortran90Parser.SCON, Fortran90Parser.ICON, Fortran90Parser.NAME]: + if token in [34, 84, 123, 131, 132, 177, 186, 188]: self.enterOuterAlt(localctx, 1) self.state = 3258 self.uFExpr(0) pass - elif token in [Fortran90Parser.STAR]: + elif token in [192]: self.enterOuterAlt(localctx, 2) self.state = 3259 self.match(Fortran90Parser.STAR) @@ -25977,6 +25691,7 @@ def unitIdentifier(self): class PositionSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26023,7 +25738,7 @@ def positionSpecList(self): self.state = 3263 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)))) != 0) or ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (Fortran90Parser.SCON - 177)) | (1 << (Fortran90Parser.ICON - 177)) | (1 << (Fortran90Parser.NAME - 177)) | (1 << (Fortran90Parser.STAR - 177)))) != 0): + if _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 422762220879873) != 0) or ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & 35329) != 0): self.state = 3262 self.unitIdentifierComma() @@ -26037,7 +25752,7 @@ def positionSpecList(self): self.state = 3268 self._errHandler.sync(self) _la = self._input.LA(1) - if not (((((_la - 77)) & ~0x3f) == 0 and ((1 << (_la - 77)) & ((1 << (Fortran90Parser.UNIT - 77)) | (1 << (Fortran90Parser.ERR - 77)) | (1 << (Fortran90Parser.IOSTAT - 77)))) != 0)): + if not (((((_la - 77)) & ~0x3f) == 0 and ((1 << (_la - 77)) & 1089) != 0)): break except RecognitionException as re: @@ -26050,6 +25765,7 @@ def positionSpecList(self): class UnitIdentifierCommaContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26108,6 +25824,7 @@ def unitIdentifierComma(self): class PositionSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26165,7 +25882,7 @@ def positionSpec(self): self.state = 3283 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.UNIT]: + if token in [77]: self.enterOuterAlt(localctx, 1) self.state = 3274 self.match(Fortran90Parser.UNIT) @@ -26174,7 +25891,7 @@ def positionSpec(self): self.state = 3276 self.unitIdentifier() pass - elif token in [Fortran90Parser.ERR]: + elif token in [83]: self.enterOuterAlt(localctx, 2) self.state = 3277 self.match(Fortran90Parser.ERR) @@ -26183,7 +25900,7 @@ def positionSpec(self): self.state = 3279 self.lblRef() pass - elif token in [Fortran90Parser.IOSTAT]: + elif token in [87]: self.enterOuterAlt(localctx, 3) self.state = 3280 self.match(Fortran90Parser.IOSTAT) @@ -26205,6 +25922,7 @@ def positionSpec(self): class ScalarVariableContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26269,6 +25987,7 @@ def scalarVariable(self): class UFExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26320,14 +26039,14 @@ def uFExpr(self, _p:int=0): self.state = 3293 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.LPAREN, Fortran90Parser.SCON, Fortran90Parser.ICON, Fortran90Parser.NAME]: + if token in [34, 84, 123, 177, 186, 188]: self.state = 3290 self.uFTerm(0) pass - elif token in [Fortran90Parser.MINUS, Fortran90Parser.PLUS]: + elif token in [131, 132]: self.state = 3291 _la = self._input.LA(1) - if not(_la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS): + if not(_la==131 or _la==132): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -26355,7 +26074,7 @@ def uFExpr(self, _p:int=0): raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") self.state = 3296 _la = self._input.LA(1) - if not(_la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS): + if not(_la==131 or _la==132): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -26376,6 +26095,7 @@ def uFExpr(self, _p:int=0): class UFTermContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26454,7 +26174,7 @@ def uFTerm(self, _p:int=0): raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 3307 _la = self._input.LA(1) - if not(_la==Fortran90Parser.DIV or _la==Fortran90Parser.STAR): + if not(_la==133 or _la==192): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -26494,6 +26214,7 @@ def uFTerm(self, _p:int=0): class UFFactorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26565,6 +26286,7 @@ def uFFactor(self): class UFPrimaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26667,6 +26389,7 @@ def uFPrimary(self): class SubroutineSubprogramContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26714,7 +26437,7 @@ def subroutineSubprogram(self): self.state = 3345 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.SUBROUTINE]: + if token in [9]: self.enterOuterAlt(localctx, 1) self.state = 3336 self.match(Fortran90Parser.SUBROUTINE) @@ -26723,7 +26446,7 @@ def subroutineSubprogram(self): self.state = 3338 self.subroutineRange() pass - elif token in [Fortran90Parser.RECURSIVE]: + elif token in [1]: self.enterOuterAlt(localctx, 2) self.state = 3340 self.match(Fortran90Parser.RECURSIVE) @@ -26747,6 +26470,7 @@ def subroutineSubprogram(self): class SubroutineNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26793,6 +26517,7 @@ def subroutineName(self): class SubroutineRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26879,6 +26604,7 @@ def subroutineRange(self): class IncludeStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -26930,6 +26656,7 @@ def includeStmt(self): class ImplicitStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27000,6 +26727,7 @@ def implicitStmt(self): class ImplicitSpecListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27069,6 +26797,7 @@ def implicitSpecList(self): class ImplicitSpecContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27147,6 +26876,7 @@ def implicitSpec(self): class ImplicitRangesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27222,6 +26952,7 @@ def implicitRanges(self): class ImplicitRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27278,6 +27009,7 @@ def implicitRange(self): class ExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27358,6 +27090,7 @@ def expression(self, _p:int=0): class DefinedBinaryOpContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27404,6 +27137,7 @@ def definedBinaryOp(self): class Level5ExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27464,7 +27198,7 @@ def level5Expr(self): if _alt==1: self.state = 3417 _la = self._input.LA(1) - if not(_la==Fortran90Parser.EQV or _la==Fortran90Parser.NEQV): + if not(_la==139 or _la==140): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -27485,6 +27219,7 @@ def level5Expr(self): class EquivOperandContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27554,6 +27289,7 @@ def equivOperand(self): class OrOperandContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27623,6 +27359,7 @@ def orOperand(self): class AndOperandContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27665,7 +27402,7 @@ def andOperand(self): self.state = 3441 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.LNOT: + if _la==136: self.state = 3440 self.match(Fortran90Parser.LNOT) @@ -27682,6 +27419,7 @@ def andOperand(self): class RelOpContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27737,7 +27475,7 @@ def relOp(self): self.enterOuterAlt(localctx, 1) self.state = 3445 _la = self._input.LA(1) - if not(_la==Fortran90Parser.OP or ((((_la - 143)) & ~0x3f) == 0 and ((1 << (_la - 143)) & ((1 << (Fortran90Parser.LT - 143)) | (1 << (Fortran90Parser.LE - 143)) | (1 << (Fortran90Parser.GT - 143)) | (1 << (Fortran90Parser.GE - 143)) | (1 << (Fortran90Parser.NE - 143)) | (1 << (Fortran90Parser.EQ - 143)))) != 0)): + if not(_la==28 or ((((_la - 143)) & ~0x3f) == 0 and ((1 << (_la - 143)) & 63) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -27752,6 +27490,7 @@ def relOp(self): class Level4ExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27822,6 +27561,7 @@ def level4Expr(self): class Level3ExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27891,7 +27631,7 @@ def level3Expr(self): self.state = 3459 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.SPOFF: + if _la==184: self.state = 3458 self.match(Fortran90Parser.SPOFF) @@ -27901,7 +27641,7 @@ def level3Expr(self): self.state = 3463 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.SPON: + if _la==185: self.state = 3462 self.match(Fortran90Parser.SPON) @@ -27922,6 +27662,7 @@ def level3Expr(self): class Level2ExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -27980,7 +27721,7 @@ def level2Expr(self): self.state = 3472 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS: + if _la==131 or _la==132: self.state = 3471 self.sign() @@ -27994,7 +27735,7 @@ def level2Expr(self): if _alt==1: self.state = 3475 _la = self._input.LA(1) - if not(_la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS): + if not(_la==131 or _la==132): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -28015,6 +27756,7 @@ def level2Expr(self): class SignContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28055,7 +27797,7 @@ def sign(self): self.enterOuterAlt(localctx, 1) self.state = 3482 _la = self._input.LA(1) - if not(_la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS): + if not(_la==131 or _la==132): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -28070,6 +27812,7 @@ def sign(self): class AddOperandContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28130,7 +27873,7 @@ def addOperand(self): if _alt==1: self.state = 3485 _la = self._input.LA(1) - if not(_la==Fortran90Parser.DIV or _la==Fortran90Parser.STAR): + if not(_la==133 or _la==192): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -28151,6 +27894,7 @@ def addOperand(self): class MultOperandContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28220,6 +27964,7 @@ def multOperand(self): class Level1ExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28261,12 +28006,12 @@ def level1Expr(self): self.state = 3504 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.LPAREN, Fortran90Parser.TRUE, Fortran90Parser.FALSE, Fortran90Parser.OBRACKETSLASH, Fortran90Parser.SCON, Fortran90Parser.RDCON, Fortran90Parser.ICON, Fortran90Parser.NAME]: + if token in [34, 84, 123, 149, 150, 171, 177, 178, 186, 188]: self.enterOuterAlt(localctx, 1) self.state = 3500 self.primary() pass - elif token in [Fortran90Parser.DOP]: + elif token in [27]: self.enterOuterAlt(localctx, 2) self.state = 3501 self.definedUnaryOp() @@ -28286,6 +28031,7 @@ def level1Expr(self): class DefinedUnaryOpContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28332,6 +28078,7 @@ def definedUnaryOp(self): class PrimaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28455,6 +28202,7 @@ def primary(self): class ArrayConstructorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28512,6 +28260,7 @@ def arrayConstructor(self): class AcValueListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28576,6 +28325,7 @@ def acValueList(self): class AcValueList1Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28707,6 +28457,7 @@ def acValueList1(self, _p:int=0): class AcImpliedDoContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28877,6 +28628,7 @@ def acImpliedDo(self): class FunctionReferenceContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -28956,6 +28708,7 @@ def functionReference(self): class FunctionArgListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29055,6 +28808,7 @@ def functionArgList(self, _p:int=0): class FunctionArgContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29112,6 +28866,7 @@ def functionArg(self): class NameDataRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29162,7 +28917,7 @@ def nameDataRef(self): self.enterOuterAlt(localctx, 1) self.state = 3627 _la = self._input.LA(1) - if not(_la==Fortran90Parser.REAL or _la==Fortran90Parser.SIZE or _la==Fortran90Parser.NAME): + if not(_la==34 or _la==84 or _la==188): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -29188,6 +28943,7 @@ def nameDataRef(self): class ComplexDataRefTailContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29231,12 +28987,12 @@ def complexDataRefTail(self): self.state = 3637 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.LPAREN]: + if token in [123]: self.enterOuterAlt(localctx, 1) self.state = 3634 self.sectionSubscriptRef() pass - elif token in [Fortran90Parser.PCT]: + elif token in [124]: self.enterOuterAlt(localctx, 2) self.state = 3635 self.match(Fortran90Parser.PCT) @@ -29256,6 +29012,7 @@ def complexDataRefTail(self): class SectionSubscriptRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29313,6 +29070,7 @@ def sectionSubscriptRef(self): class SectionSubscriptListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29382,6 +29140,7 @@ def sectionSubscriptList(self): class SectionSubscriptContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29424,20 +29183,20 @@ def sectionSubscript(self): self.state = 3656 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.DOP, Fortran90Parser.REAL, Fortran90Parser.SIZE, Fortran90Parser.LPAREN, Fortran90Parser.MINUS, Fortran90Parser.PLUS, Fortran90Parser.LNOT, Fortran90Parser.TRUE, Fortran90Parser.FALSE, Fortran90Parser.OBRACKETSLASH, Fortran90Parser.SCON, Fortran90Parser.RDCON, Fortran90Parser.ICON, Fortran90Parser.NAME]: + if token in [27, 34, 84, 123, 131, 132, 136, 149, 150, 171, 177, 178, 186, 188]: self.enterOuterAlt(localctx, 1) self.state = 3651 self.expression(0) self.state = 3653 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOUBLECOLON or _la==Fortran90Parser.COLON: + if _la==30 or _la==129: self.state = 3652 self.subscriptTripletTail() pass - elif token in [Fortran90Parser.DOUBLECOLON, Fortran90Parser.COLON]: + elif token in [30, 129]: self.enterOuterAlt(localctx, 2) self.state = 3655 self.subscriptTripletTail() @@ -29455,6 +29214,7 @@ def sectionSubscript(self): class SubscriptTripletTailContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29512,7 +29272,7 @@ def subscriptTripletTail(self): self.state = 3660 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.DOP or _la==Fortran90Parser.REAL or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (Fortran90Parser.SIZE - 84)) | (1 << (Fortran90Parser.LPAREN - 84)) | (1 << (Fortran90Parser.MINUS - 84)) | (1 << (Fortran90Parser.PLUS - 84)) | (1 << (Fortran90Parser.LNOT - 84)))) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & ((1 << (Fortran90Parser.TRUE - 149)) | (1 << (Fortran90Parser.FALSE - 149)) | (1 << (Fortran90Parser.OBRACKETSLASH - 149)) | (1 << (Fortran90Parser.SCON - 149)) | (1 << (Fortran90Parser.RDCON - 149)) | (1 << (Fortran90Parser.ICON - 149)) | (1 << (Fortran90Parser.NAME - 149)))) != 0): + if _la==27 or _la==34 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 4926361848250369) != 0) or ((((_la - 149)) & ~0x3f) == 0 and ((1 << (_la - 149)) & 688004268035) != 0): self.state = 3659 self.expression(0) @@ -29550,6 +29310,7 @@ def subscriptTripletTail(self): class LogicalConstantContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29604,7 +29365,7 @@ def logicalConstant(self): self.enterOuterAlt(localctx, 1) self.state = 3671 _la = self._input.LA(1) - if not(_la==Fortran90Parser.TRUE or _la==Fortran90Parser.FALSE): + if not(_la==149 or _la==150): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -29644,6 +29405,7 @@ def logicalConstant(self): class KindParamContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29684,12 +29446,12 @@ def kindParam(self): self.state = 3684 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.ICON]: + if token in [186]: self.enterOuterAlt(localctx, 1) self.state = 3682 self.match(Fortran90Parser.ICON) pass - elif token in [Fortran90Parser.NAME]: + elif token in [188]: self.enterOuterAlt(localctx, 2) self.state = 3683 self.namedConstantUse() @@ -29707,6 +29469,7 @@ def kindParam(self): class UnsignedArithmeticConstantContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29762,7 +29525,7 @@ def unsignedArithmeticConstant(self): self.enterOuterAlt(localctx, 1) self.state = 3686 _la = self._input.LA(1) - if not(_la==Fortran90Parser.RDCON or _la==Fortran90Parser.ICON): + if not(_la==178 or _la==186): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -29806,6 +29569,7 @@ def unsignedArithmeticConstant(self): class ComplexConstContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29868,6 +29632,7 @@ def complexConst(self): class ComplexComponentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -29917,15 +29682,15 @@ def complexComponent(self): self.state = 3707 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Fortran90Parser.MINUS, Fortran90Parser.PLUS, Fortran90Parser.ICON]: + if token in [131, 132, 186]: self.enterOuterAlt(localctx, 1) self.state = 3702 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS: + if _la==131 or _la==132: self.state = 3701 _la = self._input.LA(1) - if not(_la==Fortran90Parser.MINUS or _la==Fortran90Parser.PLUS): + if not(_la==131 or _la==132): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -29935,12 +29700,12 @@ def complexComponent(self): self.state = 3704 self.match(Fortran90Parser.ICON) pass - elif token in [Fortran90Parser.RDCON]: + elif token in [178]: self.enterOuterAlt(localctx, 2) self.state = 3705 self.match(Fortran90Parser.RDCON) pass - elif token in [Fortran90Parser.NAME]: + elif token in [188]: self.enterOuterAlt(localctx, 3) self.state = 3706 self.match(Fortran90Parser.NAME) @@ -29958,6 +29723,7 @@ def complexComponent(self): class ConstantExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -30005,6 +29771,7 @@ def constantExpr(self): class IfStmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran90ParserListener.py b/src/pycropml/transpiler/antlr_py/grammars/Fortran90ParserListener.py index a837f73f..a67ed7f7 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran90ParserListener.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran90ParserListener.py @@ -1,6 +1,6 @@ -# Generated from Fortran90Parser.g4 by ANTLR 4.8 +# Generated from Fortran90Parser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .Fortran90Parser import Fortran90Parser else: from Fortran90Parser import Fortran90Parser diff --git a/src/pycropml/transpiler/antlr_py/grammars/Fortran90ParserVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/Fortran90ParserVisitor.py index 6a2924fd..d105bcf0 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Fortran90ParserVisitor.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Fortran90ParserVisitor.py @@ -1,6 +1,6 @@ -# Generated from Fortran90Parser.g4 by ANTLR 4.8 +# Generated from Fortran90Parser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .Fortran90Parser import Fortran90Parser else: from Fortran90Parser import Fortran90Parser diff --git a/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.interp b/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.interp new file mode 100644 index 00000000..525908d0 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.interp @@ -0,0 +1,384 @@ +token literal names: +null +'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 +null +null +null +null +'null' +'(' +')' +'{' +'}' +'[' +']' +';' +',' +'.' +'=' +'>' +'<' +'!' +'~' +'?' +':' +'==' +'<=' +'>=' +'!=' +'&&' +'||' +'++' +'--' +'+' +'-' +'*' +'/' +'&' +'|' +'^' +'%' +'->' +'::' +'+=' +'-=' +'*=' +'/=' +'&=' +'|=' +'^=' +'%=' +'<<=' +'>>=' +'>>>=' +null +'@' +'...' +null +null +null + +token symbolic names: +null +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 +IntegerLiteral +FloatingPointLiteral +BooleanLiteral +CharacterLiteral +StringLiteral +NullLiteral +LPAREN +RPAREN +LBRACE +RBRACE +LBRACK +RBRACK +SEMI +COMMA +DOT +ASSIGN +GT +LT +BANG +TILDE +QUESTION +COLON +EQUAL +LE +GE +NOTEQUAL +AND +OR +INC +DEC +ADD +SUB +MUL +DIV +BITAND +BITOR +CARET +MOD +ARROW +COLONCOLON +ADD_ASSIGN +SUB_ASSIGN +MUL_ASSIGN +DIV_ASSIGN +AND_ASSIGN +OR_ASSIGN +XOR_ASSIGN +MOD_ASSIGN +LSHIFT_ASSIGN +RSHIFT_ASSIGN +URSHIFT_ASSIGN +Identifier +AT +ELLIPSIS +WS +COMMENT +LINE_COMMENT + +rule names: +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 +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 +EscapeSequence +OctalEscape +ZeroToThree +UnicodeEscape +NullLiteral +LPAREN +RPAREN +LBRACE +RBRACE +LBRACK +RBRACK +SEMI +COMMA +DOT +ASSIGN +GT +LT +BANG +TILDE +QUESTION +COLON +EQUAL +LE +GE +NOTEQUAL +AND +OR +INC +DEC +ADD +SUB +MUL +DIV +BITAND +BITOR +CARET +MOD +ARROW +COLONCOLON +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 +AT +ELLIPSIS +WS +COMMENT +LINE_COMMENT + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 107, 1089, 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, 1, 0, 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, 3, 1, 3, 1, 3, 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, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 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, 9, 1, 10, 1, 10, 1, 10, 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, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 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, 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, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 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, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 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, 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, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 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, 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, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 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, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 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, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 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, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 651, 8, 50, 1, 51, 1, 51, 3, 51, 655, 8, 51, 1, 52, 1, 52, 3, 52, 659, 8, 52, 1, 53, 1, 53, 3, 53, 663, 8, 53, 1, 54, 1, 54, 3, 54, 667, 8, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 3, 56, 674, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 679, 8, 56, 3, 56, 681, 8, 56, 1, 57, 1, 57, 3, 57, 685, 8, 57, 1, 57, 3, 57, 688, 8, 57, 1, 58, 1, 58, 3, 58, 692, 8, 58, 1, 59, 1, 59, 1, 60, 4, 60, 697, 8, 60, 11, 60, 12, 60, 698, 1, 61, 1, 61, 3, 61, 703, 8, 61, 1, 62, 4, 62, 706, 8, 62, 11, 62, 12, 62, 707, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 716, 8, 64, 1, 64, 3, 64, 719, 8, 64, 1, 65, 1, 65, 1, 66, 4, 66, 724, 8, 66, 11, 66, 12, 66, 725, 1, 67, 1, 67, 3, 67, 730, 8, 67, 1, 68, 1, 68, 3, 68, 734, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 740, 8, 69, 1, 69, 3, 69, 743, 8, 69, 1, 70, 1, 70, 1, 71, 4, 71, 748, 8, 71, 11, 71, 12, 71, 749, 1, 72, 1, 72, 3, 72, 754, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 3, 74, 762, 8, 74, 1, 74, 3, 74, 765, 8, 74, 1, 75, 1, 75, 1, 76, 4, 76, 770, 8, 76, 11, 76, 12, 76, 771, 1, 77, 1, 77, 3, 77, 776, 8, 77, 1, 78, 1, 78, 3, 78, 780, 8, 78, 1, 79, 1, 79, 1, 79, 3, 79, 785, 8, 79, 1, 79, 3, 79, 788, 8, 79, 1, 79, 3, 79, 791, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 796, 8, 79, 1, 79, 3, 79, 799, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 804, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 809, 8, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 3, 82, 817, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 3, 85, 828, 8, 85, 1, 86, 1, 86, 3, 86, 832, 8, 86, 1, 86, 1, 86, 1, 86, 3, 86, 837, 8, 86, 1, 86, 1, 86, 3, 86, 841, 8, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 857, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 867, 8, 90, 1, 91, 1, 91, 1, 92, 1, 92, 3, 92, 873, 8, 92, 1, 92, 1, 92, 1, 93, 4, 93, 878, 8, 93, 11, 93, 12, 93, 879, 1, 94, 1, 94, 3, 94, 884, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 890, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 903, 8, 96, 1, 97, 1, 97, 1, 98, 1, 98, 4, 98, 909, 8, 98, 11, 98, 12, 98, 910, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 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, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 137, 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, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 5, 145, 1040, 8, 145, 10, 145, 12, 145, 1043, 9, 145, 1, 146, 3, 146, 1046, 8, 146, 1, 147, 1, 147, 3, 147, 1050, 8, 147, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 4, 150, 1059, 8, 150, 11, 150, 12, 150, 1060, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 1069, 8, 151, 10, 151, 12, 151, 1072, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1083, 8, 152, 10, 152, 12, 152, 1086, 9, 152, 1, 152, 1, 152, 1, 1070, 0, 153, 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, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 137, 0, 139, 0, 141, 0, 143, 0, 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, 0, 157, 52, 159, 0, 161, 0, 163, 0, 165, 0, 167, 0, 169, 0, 171, 0, 173, 0, 175, 0, 177, 0, 179, 53, 181, 54, 183, 0, 185, 55, 187, 0, 189, 0, 191, 0, 193, 0, 195, 0, 197, 0, 199, 56, 201, 57, 203, 58, 205, 59, 207, 60, 209, 61, 211, 62, 213, 63, 215, 64, 217, 65, 219, 66, 221, 67, 223, 68, 225, 69, 227, 70, 229, 71, 231, 72, 233, 73, 235, 74, 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, 0, 295, 0, 297, 103, 299, 104, 301, 105, 303, 106, 305, 107, 1, 0, 19, 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, 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, 2, 0, 10, 10, 13, 13, 1101, 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, 157, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 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, 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, 1, 307, 1, 0, 0, 0, 3, 316, 1, 0, 0, 0, 5, 323, 1, 0, 0, 0, 7, 331, 1, 0, 0, 0, 9, 337, 1, 0, 0, 0, 11, 342, 1, 0, 0, 0, 13, 347, 1, 0, 0, 0, 15, 353, 1, 0, 0, 0, 17, 358, 1, 0, 0, 0, 19, 364, 1, 0, 0, 0, 21, 370, 1, 0, 0, 0, 23, 379, 1, 0, 0, 0, 25, 387, 1, 0, 0, 0, 27, 390, 1, 0, 0, 0, 29, 397, 1, 0, 0, 0, 31, 402, 1, 0, 0, 0, 33, 407, 1, 0, 0, 0, 35, 415, 1, 0, 0, 0, 37, 421, 1, 0, 0, 0, 39, 429, 1, 0, 0, 0, 41, 435, 1, 0, 0, 0, 43, 439, 1, 0, 0, 0, 45, 442, 1, 0, 0, 0, 47, 447, 1, 0, 0, 0, 49, 458, 1, 0, 0, 0, 51, 465, 1, 0, 0, 0, 53, 476, 1, 0, 0, 0, 55, 480, 1, 0, 0, 0, 57, 490, 1, 0, 0, 0, 59, 495, 1, 0, 0, 0, 61, 502, 1, 0, 0, 0, 63, 506, 1, 0, 0, 0, 65, 514, 1, 0, 0, 0, 67, 522, 1, 0, 0, 0, 69, 532, 1, 0, 0, 0, 71, 539, 1, 0, 0, 0, 73, 546, 1, 0, 0, 0, 75, 552, 1, 0, 0, 0, 77, 559, 1, 0, 0, 0, 79, 568, 1, 0, 0, 0, 81, 574, 1, 0, 0, 0, 83, 581, 1, 0, 0, 0, 85, 594, 1, 0, 0, 0, 87, 599, 1, 0, 0, 0, 89, 605, 1, 0, 0, 0, 91, 612, 1, 0, 0, 0, 93, 622, 1, 0, 0, 0, 95, 626, 1, 0, 0, 0, 97, 631, 1, 0, 0, 0, 99, 640, 1, 0, 0, 0, 101, 650, 1, 0, 0, 0, 103, 652, 1, 0, 0, 0, 105, 656, 1, 0, 0, 0, 107, 660, 1, 0, 0, 0, 109, 664, 1, 0, 0, 0, 111, 668, 1, 0, 0, 0, 113, 680, 1, 0, 0, 0, 115, 682, 1, 0, 0, 0, 117, 691, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 696, 1, 0, 0, 0, 123, 702, 1, 0, 0, 0, 125, 705, 1, 0, 0, 0, 127, 709, 1, 0, 0, 0, 129, 713, 1, 0, 0, 0, 131, 720, 1, 0, 0, 0, 133, 723, 1, 0, 0, 0, 135, 729, 1, 0, 0, 0, 137, 731, 1, 0, 0, 0, 139, 737, 1, 0, 0, 0, 141, 744, 1, 0, 0, 0, 143, 747, 1, 0, 0, 0, 145, 753, 1, 0, 0, 0, 147, 755, 1, 0, 0, 0, 149, 759, 1, 0, 0, 0, 151, 766, 1, 0, 0, 0, 153, 769, 1, 0, 0, 0, 155, 775, 1, 0, 0, 0, 157, 779, 1, 0, 0, 0, 159, 808, 1, 0, 0, 0, 161, 810, 1, 0, 0, 0, 163, 813, 1, 0, 0, 0, 165, 816, 1, 0, 0, 0, 167, 820, 1, 0, 0, 0, 169, 822, 1, 0, 0, 0, 171, 824, 1, 0, 0, 0, 173, 840, 1, 0, 0, 0, 175, 842, 1, 0, 0, 0, 177, 845, 1, 0, 0, 0, 179, 856, 1, 0, 0, 0, 181, 866, 1, 0, 0, 0, 183, 868, 1, 0, 0, 0, 185, 870, 1, 0, 0, 0, 187, 877, 1, 0, 0, 0, 189, 883, 1, 0, 0, 0, 191, 889, 1, 0, 0, 0, 193, 902, 1, 0, 0, 0, 195, 904, 1, 0, 0, 0, 197, 906, 1, 0, 0, 0, 199, 917, 1, 0, 0, 0, 201, 922, 1, 0, 0, 0, 203, 924, 1, 0, 0, 0, 205, 926, 1, 0, 0, 0, 207, 928, 1, 0, 0, 0, 209, 930, 1, 0, 0, 0, 211, 932, 1, 0, 0, 0, 213, 934, 1, 0, 0, 0, 215, 936, 1, 0, 0, 0, 217, 938, 1, 0, 0, 0, 219, 940, 1, 0, 0, 0, 221, 942, 1, 0, 0, 0, 223, 944, 1, 0, 0, 0, 225, 946, 1, 0, 0, 0, 227, 948, 1, 0, 0, 0, 229, 950, 1, 0, 0, 0, 231, 952, 1, 0, 0, 0, 233, 954, 1, 0, 0, 0, 235, 957, 1, 0, 0, 0, 237, 960, 1, 0, 0, 0, 239, 963, 1, 0, 0, 0, 241, 966, 1, 0, 0, 0, 243, 969, 1, 0, 0, 0, 245, 972, 1, 0, 0, 0, 247, 975, 1, 0, 0, 0, 249, 978, 1, 0, 0, 0, 251, 980, 1, 0, 0, 0, 253, 982, 1, 0, 0, 0, 255, 984, 1, 0, 0, 0, 257, 986, 1, 0, 0, 0, 259, 988, 1, 0, 0, 0, 261, 990, 1, 0, 0, 0, 263, 992, 1, 0, 0, 0, 265, 994, 1, 0, 0, 0, 267, 997, 1, 0, 0, 0, 269, 1000, 1, 0, 0, 0, 271, 1003, 1, 0, 0, 0, 273, 1006, 1, 0, 0, 0, 275, 1009, 1, 0, 0, 0, 277, 1012, 1, 0, 0, 0, 279, 1015, 1, 0, 0, 0, 281, 1018, 1, 0, 0, 0, 283, 1021, 1, 0, 0, 0, 285, 1024, 1, 0, 0, 0, 287, 1028, 1, 0, 0, 0, 289, 1032, 1, 0, 0, 0, 291, 1037, 1, 0, 0, 0, 293, 1045, 1, 0, 0, 0, 295, 1049, 1, 0, 0, 0, 297, 1051, 1, 0, 0, 0, 299, 1053, 1, 0, 0, 0, 301, 1058, 1, 0, 0, 0, 303, 1064, 1, 0, 0, 0, 305, 1078, 1, 0, 0, 0, 307, 308, 5, 97, 0, 0, 308, 309, 5, 98, 0, 0, 309, 310, 5, 115, 0, 0, 310, 311, 5, 116, 0, 0, 311, 312, 5, 114, 0, 0, 312, 313, 5, 97, 0, 0, 313, 314, 5, 99, 0, 0, 314, 315, 5, 116, 0, 0, 315, 2, 1, 0, 0, 0, 316, 317, 5, 97, 0, 0, 317, 318, 5, 115, 0, 0, 318, 319, 5, 115, 0, 0, 319, 320, 5, 101, 0, 0, 320, 321, 5, 114, 0, 0, 321, 322, 5, 116, 0, 0, 322, 4, 1, 0, 0, 0, 323, 324, 5, 98, 0, 0, 324, 325, 5, 111, 0, 0, 325, 326, 5, 111, 0, 0, 326, 327, 5, 108, 0, 0, 327, 328, 5, 101, 0, 0, 328, 329, 5, 97, 0, 0, 329, 330, 5, 110, 0, 0, 330, 6, 1, 0, 0, 0, 331, 332, 5, 98, 0, 0, 332, 333, 5, 114, 0, 0, 333, 334, 5, 101, 0, 0, 334, 335, 5, 97, 0, 0, 335, 336, 5, 107, 0, 0, 336, 8, 1, 0, 0, 0, 337, 338, 5, 98, 0, 0, 338, 339, 5, 121, 0, 0, 339, 340, 5, 116, 0, 0, 340, 341, 5, 101, 0, 0, 341, 10, 1, 0, 0, 0, 342, 343, 5, 99, 0, 0, 343, 344, 5, 97, 0, 0, 344, 345, 5, 115, 0, 0, 345, 346, 5, 101, 0, 0, 346, 12, 1, 0, 0, 0, 347, 348, 5, 99, 0, 0, 348, 349, 5, 97, 0, 0, 349, 350, 5, 116, 0, 0, 350, 351, 5, 99, 0, 0, 351, 352, 5, 104, 0, 0, 352, 14, 1, 0, 0, 0, 353, 354, 5, 99, 0, 0, 354, 355, 5, 104, 0, 0, 355, 356, 5, 97, 0, 0, 356, 357, 5, 114, 0, 0, 357, 16, 1, 0, 0, 0, 358, 359, 5, 99, 0, 0, 359, 360, 5, 108, 0, 0, 360, 361, 5, 97, 0, 0, 361, 362, 5, 115, 0, 0, 362, 363, 5, 115, 0, 0, 363, 18, 1, 0, 0, 0, 364, 365, 5, 99, 0, 0, 365, 366, 5, 111, 0, 0, 366, 367, 5, 110, 0, 0, 367, 368, 5, 115, 0, 0, 368, 369, 5, 116, 0, 0, 369, 20, 1, 0, 0, 0, 370, 371, 5, 99, 0, 0, 371, 372, 5, 111, 0, 0, 372, 373, 5, 110, 0, 0, 373, 374, 5, 116, 0, 0, 374, 375, 5, 105, 0, 0, 375, 376, 5, 110, 0, 0, 376, 377, 5, 117, 0, 0, 377, 378, 5, 101, 0, 0, 378, 22, 1, 0, 0, 0, 379, 380, 5, 100, 0, 0, 380, 381, 5, 101, 0, 0, 381, 382, 5, 102, 0, 0, 382, 383, 5, 97, 0, 0, 383, 384, 5, 117, 0, 0, 384, 385, 5, 108, 0, 0, 385, 386, 5, 116, 0, 0, 386, 24, 1, 0, 0, 0, 387, 388, 5, 100, 0, 0, 388, 389, 5, 111, 0, 0, 389, 26, 1, 0, 0, 0, 390, 391, 5, 100, 0, 0, 391, 392, 5, 111, 0, 0, 392, 393, 5, 117, 0, 0, 393, 394, 5, 98, 0, 0, 394, 395, 5, 108, 0, 0, 395, 396, 5, 101, 0, 0, 396, 28, 1, 0, 0, 0, 397, 398, 5, 101, 0, 0, 398, 399, 5, 108, 0, 0, 399, 400, 5, 115, 0, 0, 400, 401, 5, 101, 0, 0, 401, 30, 1, 0, 0, 0, 402, 403, 5, 101, 0, 0, 403, 404, 5, 110, 0, 0, 404, 405, 5, 117, 0, 0, 405, 406, 5, 109, 0, 0, 406, 32, 1, 0, 0, 0, 407, 408, 5, 101, 0, 0, 408, 409, 5, 120, 0, 0, 409, 410, 5, 116, 0, 0, 410, 411, 5, 101, 0, 0, 411, 412, 5, 110, 0, 0, 412, 413, 5, 100, 0, 0, 413, 414, 5, 115, 0, 0, 414, 34, 1, 0, 0, 0, 415, 416, 5, 102, 0, 0, 416, 417, 5, 105, 0, 0, 417, 418, 5, 110, 0, 0, 418, 419, 5, 97, 0, 0, 419, 420, 5, 108, 0, 0, 420, 36, 1, 0, 0, 0, 421, 422, 5, 102, 0, 0, 422, 423, 5, 105, 0, 0, 423, 424, 5, 110, 0, 0, 424, 425, 5, 97, 0, 0, 425, 426, 5, 108, 0, 0, 426, 427, 5, 108, 0, 0, 427, 428, 5, 121, 0, 0, 428, 38, 1, 0, 0, 0, 429, 430, 5, 102, 0, 0, 430, 431, 5, 108, 0, 0, 431, 432, 5, 111, 0, 0, 432, 433, 5, 97, 0, 0, 433, 434, 5, 116, 0, 0, 434, 40, 1, 0, 0, 0, 435, 436, 5, 102, 0, 0, 436, 437, 5, 111, 0, 0, 437, 438, 5, 114, 0, 0, 438, 42, 1, 0, 0, 0, 439, 440, 5, 105, 0, 0, 440, 441, 5, 102, 0, 0, 441, 44, 1, 0, 0, 0, 442, 443, 5, 103, 0, 0, 443, 444, 5, 111, 0, 0, 444, 445, 5, 116, 0, 0, 445, 446, 5, 111, 0, 0, 446, 46, 1, 0, 0, 0, 447, 448, 5, 105, 0, 0, 448, 449, 5, 109, 0, 0, 449, 450, 5, 112, 0, 0, 450, 451, 5, 108, 0, 0, 451, 452, 5, 101, 0, 0, 452, 453, 5, 109, 0, 0, 453, 454, 5, 101, 0, 0, 454, 455, 5, 110, 0, 0, 455, 456, 5, 116, 0, 0, 456, 457, 5, 115, 0, 0, 457, 48, 1, 0, 0, 0, 458, 459, 5, 105, 0, 0, 459, 460, 5, 109, 0, 0, 460, 461, 5, 112, 0, 0, 461, 462, 5, 111, 0, 0, 462, 463, 5, 114, 0, 0, 463, 464, 5, 116, 0, 0, 464, 50, 1, 0, 0, 0, 465, 466, 5, 105, 0, 0, 466, 467, 5, 110, 0, 0, 467, 468, 5, 115, 0, 0, 468, 469, 5, 116, 0, 0, 469, 470, 5, 97, 0, 0, 470, 471, 5, 110, 0, 0, 471, 472, 5, 99, 0, 0, 472, 473, 5, 101, 0, 0, 473, 474, 5, 111, 0, 0, 474, 475, 5, 102, 0, 0, 475, 52, 1, 0, 0, 0, 476, 477, 5, 105, 0, 0, 477, 478, 5, 110, 0, 0, 478, 479, 5, 116, 0, 0, 479, 54, 1, 0, 0, 0, 480, 481, 5, 105, 0, 0, 481, 482, 5, 110, 0, 0, 482, 483, 5, 116, 0, 0, 483, 484, 5, 101, 0, 0, 484, 485, 5, 114, 0, 0, 485, 486, 5, 102, 0, 0, 486, 487, 5, 97, 0, 0, 487, 488, 5, 99, 0, 0, 488, 489, 5, 101, 0, 0, 489, 56, 1, 0, 0, 0, 490, 491, 5, 108, 0, 0, 491, 492, 5, 111, 0, 0, 492, 493, 5, 110, 0, 0, 493, 494, 5, 103, 0, 0, 494, 58, 1, 0, 0, 0, 495, 496, 5, 110, 0, 0, 496, 497, 5, 97, 0, 0, 497, 498, 5, 116, 0, 0, 498, 499, 5, 105, 0, 0, 499, 500, 5, 118, 0, 0, 500, 501, 5, 101, 0, 0, 501, 60, 1, 0, 0, 0, 502, 503, 5, 110, 0, 0, 503, 504, 5, 101, 0, 0, 504, 505, 5, 119, 0, 0, 505, 62, 1, 0, 0, 0, 506, 507, 5, 112, 0, 0, 507, 508, 5, 97, 0, 0, 508, 509, 5, 99, 0, 0, 509, 510, 5, 107, 0, 0, 510, 511, 5, 97, 0, 0, 511, 512, 5, 103, 0, 0, 512, 513, 5, 101, 0, 0, 513, 64, 1, 0, 0, 0, 514, 515, 5, 112, 0, 0, 515, 516, 5, 114, 0, 0, 516, 517, 5, 105, 0, 0, 517, 518, 5, 118, 0, 0, 518, 519, 5, 97, 0, 0, 519, 520, 5, 116, 0, 0, 520, 521, 5, 101, 0, 0, 521, 66, 1, 0, 0, 0, 522, 523, 5, 112, 0, 0, 523, 524, 5, 114, 0, 0, 524, 525, 5, 111, 0, 0, 525, 526, 5, 116, 0, 0, 526, 527, 5, 101, 0, 0, 527, 528, 5, 99, 0, 0, 528, 529, 5, 116, 0, 0, 529, 530, 5, 101, 0, 0, 530, 531, 5, 100, 0, 0, 531, 68, 1, 0, 0, 0, 532, 533, 5, 112, 0, 0, 533, 534, 5, 117, 0, 0, 534, 535, 5, 98, 0, 0, 535, 536, 5, 108, 0, 0, 536, 537, 5, 105, 0, 0, 537, 538, 5, 99, 0, 0, 538, 70, 1, 0, 0, 0, 539, 540, 5, 114, 0, 0, 540, 541, 5, 101, 0, 0, 541, 542, 5, 116, 0, 0, 542, 543, 5, 117, 0, 0, 543, 544, 5, 114, 0, 0, 544, 545, 5, 110, 0, 0, 545, 72, 1, 0, 0, 0, 546, 547, 5, 115, 0, 0, 547, 548, 5, 104, 0, 0, 548, 549, 5, 111, 0, 0, 549, 550, 5, 114, 0, 0, 550, 551, 5, 116, 0, 0, 551, 74, 1, 0, 0, 0, 552, 553, 5, 115, 0, 0, 553, 554, 5, 116, 0, 0, 554, 555, 5, 97, 0, 0, 555, 556, 5, 116, 0, 0, 556, 557, 5, 105, 0, 0, 557, 558, 5, 99, 0, 0, 558, 76, 1, 0, 0, 0, 559, 560, 5, 115, 0, 0, 560, 561, 5, 116, 0, 0, 561, 562, 5, 114, 0, 0, 562, 563, 5, 105, 0, 0, 563, 564, 5, 99, 0, 0, 564, 565, 5, 116, 0, 0, 565, 566, 5, 102, 0, 0, 566, 567, 5, 112, 0, 0, 567, 78, 1, 0, 0, 0, 568, 569, 5, 115, 0, 0, 569, 570, 5, 117, 0, 0, 570, 571, 5, 112, 0, 0, 571, 572, 5, 101, 0, 0, 572, 573, 5, 114, 0, 0, 573, 80, 1, 0, 0, 0, 574, 575, 5, 115, 0, 0, 575, 576, 5, 119, 0, 0, 576, 577, 5, 105, 0, 0, 577, 578, 5, 116, 0, 0, 578, 579, 5, 99, 0, 0, 579, 580, 5, 104, 0, 0, 580, 82, 1, 0, 0, 0, 581, 582, 5, 115, 0, 0, 582, 583, 5, 121, 0, 0, 583, 584, 5, 110, 0, 0, 584, 585, 5, 99, 0, 0, 585, 586, 5, 104, 0, 0, 586, 587, 5, 114, 0, 0, 587, 588, 5, 111, 0, 0, 588, 589, 5, 110, 0, 0, 589, 590, 5, 105, 0, 0, 590, 591, 5, 122, 0, 0, 591, 592, 5, 101, 0, 0, 592, 593, 5, 100, 0, 0, 593, 84, 1, 0, 0, 0, 594, 595, 5, 116, 0, 0, 595, 596, 5, 104, 0, 0, 596, 597, 5, 105, 0, 0, 597, 598, 5, 115, 0, 0, 598, 86, 1, 0, 0, 0, 599, 600, 5, 116, 0, 0, 600, 601, 5, 104, 0, 0, 601, 602, 5, 114, 0, 0, 602, 603, 5, 111, 0, 0, 603, 604, 5, 119, 0, 0, 604, 88, 1, 0, 0, 0, 605, 606, 5, 116, 0, 0, 606, 607, 5, 104, 0, 0, 607, 608, 5, 114, 0, 0, 608, 609, 5, 111, 0, 0, 609, 610, 5, 119, 0, 0, 610, 611, 5, 115, 0, 0, 611, 90, 1, 0, 0, 0, 612, 613, 5, 116, 0, 0, 613, 614, 5, 114, 0, 0, 614, 615, 5, 97, 0, 0, 615, 616, 5, 110, 0, 0, 616, 617, 5, 115, 0, 0, 617, 618, 5, 105, 0, 0, 618, 619, 5, 101, 0, 0, 619, 620, 5, 110, 0, 0, 620, 621, 5, 116, 0, 0, 621, 92, 1, 0, 0, 0, 622, 623, 5, 116, 0, 0, 623, 624, 5, 114, 0, 0, 624, 625, 5, 121, 0, 0, 625, 94, 1, 0, 0, 0, 626, 627, 5, 118, 0, 0, 627, 628, 5, 111, 0, 0, 628, 629, 5, 105, 0, 0, 629, 630, 5, 100, 0, 0, 630, 96, 1, 0, 0, 0, 631, 632, 5, 118, 0, 0, 632, 633, 5, 111, 0, 0, 633, 634, 5, 108, 0, 0, 634, 635, 5, 97, 0, 0, 635, 636, 5, 116, 0, 0, 636, 637, 5, 105, 0, 0, 637, 638, 5, 108, 0, 0, 638, 639, 5, 101, 0, 0, 639, 98, 1, 0, 0, 0, 640, 641, 5, 119, 0, 0, 641, 642, 5, 104, 0, 0, 642, 643, 5, 105, 0, 0, 643, 644, 5, 108, 0, 0, 644, 645, 5, 101, 0, 0, 645, 100, 1, 0, 0, 0, 646, 651, 3, 103, 51, 0, 647, 651, 3, 105, 52, 0, 648, 651, 3, 107, 53, 0, 649, 651, 3, 109, 54, 0, 650, 646, 1, 0, 0, 0, 650, 647, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650, 649, 1, 0, 0, 0, 651, 102, 1, 0, 0, 0, 652, 654, 3, 113, 56, 0, 653, 655, 3, 111, 55, 0, 654, 653, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 104, 1, 0, 0, 0, 656, 658, 3, 127, 63, 0, 657, 659, 3, 111, 55, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 106, 1, 0, 0, 0, 660, 662, 3, 137, 68, 0, 661, 663, 3, 111, 55, 0, 662, 661, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 108, 1, 0, 0, 0, 664, 666, 3, 147, 73, 0, 665, 667, 3, 111, 55, 0, 666, 665, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 110, 1, 0, 0, 0, 668, 669, 7, 0, 0, 0, 669, 112, 1, 0, 0, 0, 670, 681, 5, 48, 0, 0, 671, 678, 3, 119, 59, 0, 672, 674, 3, 115, 57, 0, 673, 672, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 679, 1, 0, 0, 0, 675, 676, 3, 125, 62, 0, 676, 677, 3, 115, 57, 0, 677, 679, 1, 0, 0, 0, 678, 673, 1, 0, 0, 0, 678, 675, 1, 0, 0, 0, 679, 681, 1, 0, 0, 0, 680, 670, 1, 0, 0, 0, 680, 671, 1, 0, 0, 0, 681, 114, 1, 0, 0, 0, 682, 687, 3, 117, 58, 0, 683, 685, 3, 121, 60, 0, 684, 683, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 688, 3, 117, 58, 0, 687, 684, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 116, 1, 0, 0, 0, 689, 692, 5, 48, 0, 0, 690, 692, 3, 119, 59, 0, 691, 689, 1, 0, 0, 0, 691, 690, 1, 0, 0, 0, 692, 118, 1, 0, 0, 0, 693, 694, 7, 1, 0, 0, 694, 120, 1, 0, 0, 0, 695, 697, 3, 123, 61, 0, 696, 695, 1, 0, 0, 0, 697, 698, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 122, 1, 0, 0, 0, 700, 703, 3, 117, 58, 0, 701, 703, 5, 95, 0, 0, 702, 700, 1, 0, 0, 0, 702, 701, 1, 0, 0, 0, 703, 124, 1, 0, 0, 0, 704, 706, 5, 95, 0, 0, 705, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 705, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 126, 1, 0, 0, 0, 709, 710, 5, 48, 0, 0, 710, 711, 7, 2, 0, 0, 711, 712, 3, 129, 64, 0, 712, 128, 1, 0, 0, 0, 713, 718, 3, 131, 65, 0, 714, 716, 3, 133, 66, 0, 715, 714, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 719, 3, 131, 65, 0, 718, 715, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 130, 1, 0, 0, 0, 720, 721, 7, 3, 0, 0, 721, 132, 1, 0, 0, 0, 722, 724, 3, 135, 67, 0, 723, 722, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 134, 1, 0, 0, 0, 727, 730, 3, 131, 65, 0, 728, 730, 5, 95, 0, 0, 729, 727, 1, 0, 0, 0, 729, 728, 1, 0, 0, 0, 730, 136, 1, 0, 0, 0, 731, 733, 5, 48, 0, 0, 732, 734, 3, 125, 62, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 736, 3, 139, 69, 0, 736, 138, 1, 0, 0, 0, 737, 742, 3, 141, 70, 0, 738, 740, 3, 143, 71, 0, 739, 738, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 743, 3, 141, 70, 0, 742, 739, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 140, 1, 0, 0, 0, 744, 745, 7, 4, 0, 0, 745, 142, 1, 0, 0, 0, 746, 748, 3, 145, 72, 0, 747, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 144, 1, 0, 0, 0, 751, 754, 3, 141, 70, 0, 752, 754, 5, 95, 0, 0, 753, 751, 1, 0, 0, 0, 753, 752, 1, 0, 0, 0, 754, 146, 1, 0, 0, 0, 755, 756, 5, 48, 0, 0, 756, 757, 7, 5, 0, 0, 757, 758, 3, 149, 74, 0, 758, 148, 1, 0, 0, 0, 759, 764, 3, 151, 75, 0, 760, 762, 3, 153, 76, 0, 761, 760, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 765, 3, 151, 75, 0, 764, 761, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 150, 1, 0, 0, 0, 766, 767, 7, 6, 0, 0, 767, 152, 1, 0, 0, 0, 768, 770, 3, 155, 77, 0, 769, 768, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 769, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 154, 1, 0, 0, 0, 773, 776, 3, 151, 75, 0, 774, 776, 5, 95, 0, 0, 775, 773, 1, 0, 0, 0, 775, 774, 1, 0, 0, 0, 776, 156, 1, 0, 0, 0, 777, 780, 3, 159, 79, 0, 778, 780, 3, 171, 85, 0, 779, 777, 1, 0, 0, 0, 779, 778, 1, 0, 0, 0, 780, 158, 1, 0, 0, 0, 781, 782, 3, 115, 57, 0, 782, 784, 5, 46, 0, 0, 783, 785, 3, 115, 57, 0, 784, 783, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 787, 1, 0, 0, 0, 786, 788, 3, 161, 80, 0, 787, 786, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 790, 1, 0, 0, 0, 789, 791, 3, 169, 84, 0, 790, 789, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 809, 1, 0, 0, 0, 792, 793, 5, 46, 0, 0, 793, 795, 3, 115, 57, 0, 794, 796, 3, 161, 80, 0, 795, 794, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 798, 1, 0, 0, 0, 797, 799, 3, 169, 84, 0, 798, 797, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 809, 1, 0, 0, 0, 800, 801, 3, 115, 57, 0, 801, 803, 3, 161, 80, 0, 802, 804, 3, 169, 84, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 809, 1, 0, 0, 0, 805, 806, 3, 115, 57, 0, 806, 807, 3, 169, 84, 0, 807, 809, 1, 0, 0, 0, 808, 781, 1, 0, 0, 0, 808, 792, 1, 0, 0, 0, 808, 800, 1, 0, 0, 0, 808, 805, 1, 0, 0, 0, 809, 160, 1, 0, 0, 0, 810, 811, 3, 163, 81, 0, 811, 812, 3, 165, 82, 0, 812, 162, 1, 0, 0, 0, 813, 814, 7, 7, 0, 0, 814, 164, 1, 0, 0, 0, 815, 817, 3, 167, 83, 0, 816, 815, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 819, 3, 115, 57, 0, 819, 166, 1, 0, 0, 0, 820, 821, 7, 8, 0, 0, 821, 168, 1, 0, 0, 0, 822, 823, 7, 9, 0, 0, 823, 170, 1, 0, 0, 0, 824, 825, 3, 173, 86, 0, 825, 827, 3, 175, 87, 0, 826, 828, 3, 169, 84, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 172, 1, 0, 0, 0, 829, 831, 3, 127, 63, 0, 830, 832, 5, 46, 0, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 841, 1, 0, 0, 0, 833, 834, 5, 48, 0, 0, 834, 836, 7, 2, 0, 0, 835, 837, 3, 129, 64, 0, 836, 835, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 5, 46, 0, 0, 839, 841, 3, 129, 64, 0, 840, 829, 1, 0, 0, 0, 840, 833, 1, 0, 0, 0, 841, 174, 1, 0, 0, 0, 842, 843, 3, 177, 88, 0, 843, 844, 3, 165, 82, 0, 844, 176, 1, 0, 0, 0, 845, 846, 7, 10, 0, 0, 846, 178, 1, 0, 0, 0, 847, 848, 5, 116, 0, 0, 848, 849, 5, 114, 0, 0, 849, 850, 5, 117, 0, 0, 850, 857, 5, 101, 0, 0, 851, 852, 5, 102, 0, 0, 852, 853, 5, 97, 0, 0, 853, 854, 5, 108, 0, 0, 854, 855, 5, 115, 0, 0, 855, 857, 5, 101, 0, 0, 856, 847, 1, 0, 0, 0, 856, 851, 1, 0, 0, 0, 857, 180, 1, 0, 0, 0, 858, 859, 5, 39, 0, 0, 859, 860, 3, 183, 91, 0, 860, 861, 5, 39, 0, 0, 861, 867, 1, 0, 0, 0, 862, 863, 5, 39, 0, 0, 863, 864, 3, 191, 95, 0, 864, 865, 5, 39, 0, 0, 865, 867, 1, 0, 0, 0, 866, 858, 1, 0, 0, 0, 866, 862, 1, 0, 0, 0, 867, 182, 1, 0, 0, 0, 868, 869, 8, 11, 0, 0, 869, 184, 1, 0, 0, 0, 870, 872, 5, 34, 0, 0, 871, 873, 3, 187, 93, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 5, 34, 0, 0, 875, 186, 1, 0, 0, 0, 876, 878, 3, 189, 94, 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, 188, 1, 0, 0, 0, 881, 884, 8, 12, 0, 0, 882, 884, 3, 191, 95, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0, 884, 190, 1, 0, 0, 0, 885, 886, 5, 92, 0, 0, 886, 890, 7, 13, 0, 0, 887, 890, 3, 193, 96, 0, 888, 890, 3, 197, 98, 0, 889, 885, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 888, 1, 0, 0, 0, 890, 192, 1, 0, 0, 0, 891, 892, 5, 92, 0, 0, 892, 903, 3, 141, 70, 0, 893, 894, 5, 92, 0, 0, 894, 895, 3, 141, 70, 0, 895, 896, 3, 141, 70, 0, 896, 903, 1, 0, 0, 0, 897, 898, 5, 92, 0, 0, 898, 899, 3, 195, 97, 0, 899, 900, 3, 141, 70, 0, 900, 901, 3, 141, 70, 0, 901, 903, 1, 0, 0, 0, 902, 891, 1, 0, 0, 0, 902, 893, 1, 0, 0, 0, 902, 897, 1, 0, 0, 0, 903, 194, 1, 0, 0, 0, 904, 905, 7, 14, 0, 0, 905, 196, 1, 0, 0, 0, 906, 908, 5, 92, 0, 0, 907, 909, 5, 117, 0, 0, 908, 907, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 913, 3, 131, 65, 0, 913, 914, 3, 131, 65, 0, 914, 915, 3, 131, 65, 0, 915, 916, 3, 131, 65, 0, 916, 198, 1, 0, 0, 0, 917, 918, 5, 110, 0, 0, 918, 919, 5, 117, 0, 0, 919, 920, 5, 108, 0, 0, 920, 921, 5, 108, 0, 0, 921, 200, 1, 0, 0, 0, 922, 923, 5, 40, 0, 0, 923, 202, 1, 0, 0, 0, 924, 925, 5, 41, 0, 0, 925, 204, 1, 0, 0, 0, 926, 927, 5, 123, 0, 0, 927, 206, 1, 0, 0, 0, 928, 929, 5, 125, 0, 0, 929, 208, 1, 0, 0, 0, 930, 931, 5, 91, 0, 0, 931, 210, 1, 0, 0, 0, 932, 933, 5, 93, 0, 0, 933, 212, 1, 0, 0, 0, 934, 935, 5, 59, 0, 0, 935, 214, 1, 0, 0, 0, 936, 937, 5, 44, 0, 0, 937, 216, 1, 0, 0, 0, 938, 939, 5, 46, 0, 0, 939, 218, 1, 0, 0, 0, 940, 941, 5, 61, 0, 0, 941, 220, 1, 0, 0, 0, 942, 943, 5, 62, 0, 0, 943, 222, 1, 0, 0, 0, 944, 945, 5, 60, 0, 0, 945, 224, 1, 0, 0, 0, 946, 947, 5, 33, 0, 0, 947, 226, 1, 0, 0, 0, 948, 949, 5, 126, 0, 0, 949, 228, 1, 0, 0, 0, 950, 951, 5, 63, 0, 0, 951, 230, 1, 0, 0, 0, 952, 953, 5, 58, 0, 0, 953, 232, 1, 0, 0, 0, 954, 955, 5, 61, 0, 0, 955, 956, 5, 61, 0, 0, 956, 234, 1, 0, 0, 0, 957, 958, 5, 60, 0, 0, 958, 959, 5, 61, 0, 0, 959, 236, 1, 0, 0, 0, 960, 961, 5, 62, 0, 0, 961, 962, 5, 61, 0, 0, 962, 238, 1, 0, 0, 0, 963, 964, 5, 33, 0, 0, 964, 965, 5, 61, 0, 0, 965, 240, 1, 0, 0, 0, 966, 967, 5, 38, 0, 0, 967, 968, 5, 38, 0, 0, 968, 242, 1, 0, 0, 0, 969, 970, 5, 124, 0, 0, 970, 971, 5, 124, 0, 0, 971, 244, 1, 0, 0, 0, 972, 973, 5, 43, 0, 0, 973, 974, 5, 43, 0, 0, 974, 246, 1, 0, 0, 0, 975, 976, 5, 45, 0, 0, 976, 977, 5, 45, 0, 0, 977, 248, 1, 0, 0, 0, 978, 979, 5, 43, 0, 0, 979, 250, 1, 0, 0, 0, 980, 981, 5, 45, 0, 0, 981, 252, 1, 0, 0, 0, 982, 983, 5, 42, 0, 0, 983, 254, 1, 0, 0, 0, 984, 985, 5, 47, 0, 0, 985, 256, 1, 0, 0, 0, 986, 987, 5, 38, 0, 0, 987, 258, 1, 0, 0, 0, 988, 989, 5, 124, 0, 0, 989, 260, 1, 0, 0, 0, 990, 991, 5, 94, 0, 0, 991, 262, 1, 0, 0, 0, 992, 993, 5, 37, 0, 0, 993, 264, 1, 0, 0, 0, 994, 995, 5, 45, 0, 0, 995, 996, 5, 62, 0, 0, 996, 266, 1, 0, 0, 0, 997, 998, 5, 58, 0, 0, 998, 999, 5, 58, 0, 0, 999, 268, 1, 0, 0, 0, 1000, 1001, 5, 43, 0, 0, 1001, 1002, 5, 61, 0, 0, 1002, 270, 1, 0, 0, 0, 1003, 1004, 5, 45, 0, 0, 1004, 1005, 5, 61, 0, 0, 1005, 272, 1, 0, 0, 0, 1006, 1007, 5, 42, 0, 0, 1007, 1008, 5, 61, 0, 0, 1008, 274, 1, 0, 0, 0, 1009, 1010, 5, 47, 0, 0, 1010, 1011, 5, 61, 0, 0, 1011, 276, 1, 0, 0, 0, 1012, 1013, 5, 38, 0, 0, 1013, 1014, 5, 61, 0, 0, 1014, 278, 1, 0, 0, 0, 1015, 1016, 5, 124, 0, 0, 1016, 1017, 5, 61, 0, 0, 1017, 280, 1, 0, 0, 0, 1018, 1019, 5, 94, 0, 0, 1019, 1020, 5, 61, 0, 0, 1020, 282, 1, 0, 0, 0, 1021, 1022, 5, 37, 0, 0, 1022, 1023, 5, 61, 0, 0, 1023, 284, 1, 0, 0, 0, 1024, 1025, 5, 60, 0, 0, 1025, 1026, 5, 60, 0, 0, 1026, 1027, 5, 61, 0, 0, 1027, 286, 1, 0, 0, 0, 1028, 1029, 5, 62, 0, 0, 1029, 1030, 5, 62, 0, 0, 1030, 1031, 5, 61, 0, 0, 1031, 288, 1, 0, 0, 0, 1032, 1033, 5, 62, 0, 0, 1033, 1034, 5, 62, 0, 0, 1034, 1035, 5, 62, 0, 0, 1035, 1036, 5, 61, 0, 0, 1036, 290, 1, 0, 0, 0, 1037, 1041, 3, 293, 146, 0, 1038, 1040, 3, 295, 147, 0, 1039, 1038, 1, 0, 0, 0, 1040, 1043, 1, 0, 0, 0, 1041, 1039, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 292, 1, 0, 0, 0, 1043, 1041, 1, 0, 0, 0, 1044, 1046, 7, 15, 0, 0, 1045, 1044, 1, 0, 0, 0, 1046, 294, 1, 0, 0, 0, 1047, 1050, 3, 293, 146, 0, 1048, 1050, 7, 16, 0, 0, 1049, 1047, 1, 0, 0, 0, 1049, 1048, 1, 0, 0, 0, 1050, 296, 1, 0, 0, 0, 1051, 1052, 5, 64, 0, 0, 1052, 298, 1, 0, 0, 0, 1053, 1054, 5, 46, 0, 0, 1054, 1055, 5, 46, 0, 0, 1055, 1056, 5, 46, 0, 0, 1056, 300, 1, 0, 0, 0, 1057, 1059, 7, 17, 0, 0, 1058, 1057, 1, 0, 0, 0, 1059, 1060, 1, 0, 0, 0, 1060, 1058, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 6, 150, 0, 0, 1063, 302, 1, 0, 0, 0, 1064, 1065, 5, 47, 0, 0, 1065, 1066, 5, 42, 0, 0, 1066, 1070, 1, 0, 0, 0, 1067, 1069, 9, 0, 0, 0, 1068, 1067, 1, 0, 0, 0, 1069, 1072, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1070, 1068, 1, 0, 0, 0, 1071, 1073, 1, 0, 0, 0, 1072, 1070, 1, 0, 0, 0, 1073, 1074, 5, 42, 0, 0, 1074, 1075, 5, 47, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1077, 6, 151, 0, 0, 1077, 304, 1, 0, 0, 0, 1078, 1079, 5, 47, 0, 0, 1079, 1080, 5, 47, 0, 0, 1080, 1084, 1, 0, 0, 0, 1081, 1083, 8, 18, 0, 0, 1082, 1081, 1, 0, 0, 0, 1083, 1086, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1087, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1087, 1088, 6, 152, 0, 0, 1088, 306, 1, 0, 0, 0, 55, 0, 650, 654, 658, 662, 666, 673, 678, 680, 684, 687, 691, 698, 702, 707, 715, 718, 725, 729, 733, 739, 742, 749, 753, 761, 764, 771, 775, 779, 784, 787, 790, 795, 798, 803, 808, 816, 827, 831, 836, 840, 856, 866, 872, 879, 883, 889, 902, 910, 1041, 1045, 1049, 1060, 1070, 1084, 1, 6, 0, 0] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.py b/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.py index 62d05000..da9ff7ba 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.py @@ -1,649 +1,515 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\java\java8\Java8Lexer.g4 by ANTLR 4.8 +# Generated from Java8Lexer.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO import sys - +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2m") - buf.write("\u0443\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") - buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") - buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") - buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") - buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") - buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4") - buf.write("y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080") - buf.write("\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083") - buf.write("\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087") - buf.write("\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a") - buf.write("\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e") - buf.write("\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091") - buf.write("\4\u0092\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095") - buf.write("\t\u0095\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098") - buf.write("\4\u0099\t\u0099\4\u009a\t\u009a\3\2\3\2\3\2\3\2\3\2\3") - buf.write("\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4") - buf.write("\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3") - buf.write("\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b") - buf.write("\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13") - buf.write("\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3") - buf.write("\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\17") - buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20") - buf.write("\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22") - buf.write("\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24") - buf.write("\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25") - buf.write("\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\30\3\30\3\30\3\30") - buf.write("\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31") - buf.write("\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\33") - buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34") - buf.write("\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35") - buf.write("\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37") - buf.write("\3\37\3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"") - buf.write("\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$") - buf.write("\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3") - buf.write("&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\3(") - buf.write("\3(\3(\3)\3)\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3+\3+\3") - buf.write("+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3-\3-\3") - buf.write("-\3-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3/\3") - buf.write("/\3/\3/\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3") - buf.write("\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63") - buf.write("\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\5\64\u028d\n") - buf.write("\64\3\65\3\65\5\65\u0291\n\65\3\66\3\66\5\66\u0295\n\66") - buf.write("\3\67\3\67\5\67\u0299\n\67\38\38\58\u029d\n8\39\39\3:") - buf.write("\3:\3:\5:\u02a4\n:\3:\3:\3:\5:\u02a9\n:\5:\u02ab\n:\3") - buf.write(";\3;\5;\u02af\n;\3;\5;\u02b2\n;\3<\3<\5<\u02b6\n<\3=\3") - buf.write("=\3>\6>\u02bb\n>\r>\16>\u02bc\3?\3?\5?\u02c1\n?\3@\6@") - buf.write("\u02c4\n@\r@\16@\u02c5\3A\3A\3A\3A\3B\3B\5B\u02ce\nB\3") - buf.write("B\5B\u02d1\nB\3C\3C\3D\6D\u02d6\nD\rD\16D\u02d7\3E\3E") - buf.write("\5E\u02dc\nE\3F\3F\5F\u02e0\nF\3F\3F\3G\3G\5G\u02e6\n") - buf.write("G\3G\5G\u02e9\nG\3H\3H\3I\6I\u02ee\nI\rI\16I\u02ef\3J") - buf.write("\3J\5J\u02f4\nJ\3K\3K\3K\3K\3L\3L\5L\u02fc\nL\3L\5L\u02ff") - buf.write("\nL\3M\3M\3N\6N\u0304\nN\rN\16N\u0305\3O\3O\5O\u030a\n") - buf.write("O\3P\3P\5P\u030e\nP\3Q\3Q\3Q\5Q\u0313\nQ\3Q\5Q\u0316\n") - buf.write("Q\3Q\5Q\u0319\nQ\3Q\3Q\3Q\5Q\u031e\nQ\3Q\5Q\u0321\nQ\3") - buf.write("Q\3Q\3Q\5Q\u0326\nQ\3Q\3Q\3Q\5Q\u032b\nQ\3R\3R\3R\3S\3") - buf.write("S\3T\5T\u0333\nT\3T\3T\3U\3U\3V\3V\3W\3W\3W\5W\u033e\n") - buf.write("W\3X\3X\5X\u0342\nX\3X\3X\3X\5X\u0347\nX\3X\3X\5X\u034b") - buf.write("\nX\3Y\3Y\3Y\3Z\3Z\3[\3[\3[\3[\3[\3[\3[\3[\3[\5[\u035b") - buf.write("\n[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\5\\\u0365\n\\\3]\3") - buf.write("]\3^\3^\5^\u036b\n^\3^\3^\3_\6_\u0370\n_\r_\16_\u0371") - buf.write("\3`\3`\5`\u0376\n`\3a\3a\3a\3a\5a\u037c\na\3b\3b\3b\3") - buf.write("b\3b\3b\3b\3b\3b\3b\3b\5b\u0389\nb\3c\3c\3d\3d\6d\u038f") - buf.write("\nd\rd\16d\u0390\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3f\3f\3") - buf.write("g\3g\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3m\3m\3n\3n\3o\3o\3") - buf.write("p\3p\3q\3q\3r\3r\3s\3s\3t\3t\3u\3u\3v\3v\3v\3w\3w\3w\3") - buf.write("x\3x\3x\3y\3y\3y\3z\3z\3z\3{\3{\3{\3|\3|\3|\3}\3}\3}\3") - buf.write("~\3~\3\177\3\177\3\u0080\3\u0080\3\u0081\3\u0081\3\u0082") - buf.write("\3\u0082\3\u0083\3\u0083\3\u0084\3\u0084\3\u0085\3\u0085") - buf.write("\3\u0086\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087\3\u0088") - buf.write("\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089\3\u008a\3\u008a") - buf.write("\3\u008a\3\u008b\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c") - buf.write("\3\u008d\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\3\u008f") - buf.write("\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091") - buf.write("\3\u0091\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092\3\u0092") - buf.write("\3\u0092\3\u0093\3\u0093\7\u0093\u0412\n\u0093\f\u0093") - buf.write("\16\u0093\u0415\13\u0093\3\u0094\5\u0094\u0418\n\u0094") - buf.write("\3\u0095\3\u0095\5\u0095\u041c\n\u0095\3\u0096\3\u0096") - buf.write("\3\u0097\3\u0097\3\u0097\3\u0097\3\u0098\6\u0098\u0425") - buf.write("\n\u0098\r\u0098\16\u0098\u0426\3\u0098\3\u0098\3\u0099") - buf.write("\3\u0099\3\u0099\3\u0099\7\u0099\u042f\n\u0099\f\u0099") - buf.write("\16\u0099\u0432\13\u0099\3\u0099\3\u0099\3\u0099\3\u0099") - buf.write("\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a\7\u009a\u043d") - buf.write("\n\u009a\f\u009a\16\u009a\u0440\13\u009a\3\u009a\3\u009a") - buf.write("\3\u0430\2\u009b\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23") - buf.write("\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25") - buf.write(")\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A") - buf.write("\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65") - buf.write("i\2k\2m\2o\2q\2s\2u\2w\2y\2{\2}\2\177\2\u0081\2\u0083") - buf.write("\2\u0085\2\u0087\2\u0089\2\u008b\2\u008d\2\u008f\2\u0091") - buf.write("\2\u0093\2\u0095\2\u0097\2\u0099\2\u009b\2\u009d\2\u009f") - buf.write("\66\u00a1\2\u00a3\2\u00a5\2\u00a7\2\u00a9\2\u00ab\2\u00ad") - buf.write("\2\u00af\2\u00b1\2\u00b3\2\u00b5\67\u00b78\u00b9\2\u00bb") - buf.write("9\u00bd\2\u00bf\2\u00c1\2\u00c3\2\u00c5\2\u00c7\2\u00c9") - buf.write(":\u00cb;\u00cd<\u00cf=\u00d1>\u00d3?\u00d5@\u00d7A\u00d9") - buf.write("B\u00dbC\u00ddD\u00dfE\u00e1F\u00e3G\u00e5H\u00e7I\u00e9") - buf.write("J\u00ebK\u00edL\u00efM\u00f1N\u00f3O\u00f5P\u00f7Q\u00f9") - buf.write("R\u00fbS\u00fdT\u00ffU\u0101V\u0103W\u0105X\u0107Y\u0109") - buf.write("Z\u010b[\u010d\\\u010f]\u0111^\u0113_\u0115`\u0117a\u0119") - buf.write("b\u011bc\u011dd\u011fe\u0121f\u0123g\u0125h\u0127\2\u0129") - buf.write("\2\u012bi\u012dj\u012fk\u0131l\u0133m\3\2\25\4\2NNnn\3") - buf.write("\2\63;\4\2ZZzz\5\2\62;CHch\3\2\629\4\2DDdd\3\2\62\63\4") - buf.write("\2GGgg\4\2--//\6\2FFHHffhh\4\2RRrr\6\2\f\f\17\17))^^\6") - buf.write("\2\f\f\17\17$$^^\n\2$$))^^ddhhppttvv\3\2\62\65\u0194\2") - buf.write("&&C\\aac|\u00a4\u00a7\u00ac\u00ac\u00b7\u00b7\u00bc\u00bc") - buf.write("\u00c2\u00d8\u00da\u00f8\u00fa\u02c3\u02c8\u02d3\u02e2") - buf.write("\u02e6\u02ee\u02ee\u02f0\u02f0\u0372\u0376\u0378\u0379") - buf.write("\u037c\u037f\u0381\u0381\u0388\u0388\u038a\u038c\u038e") - buf.write("\u038e\u0390\u03a3\u03a5\u03f7\u03f9\u0483\u048c\u0531") - buf.write("\u0533\u0558\u055b\u055b\u0563\u0589\u0591\u0591\u05d2") - buf.write("\u05ec\u05f2\u05f4\u060d\u060d\u0622\u064c\u0670\u0671") - buf.write("\u0673\u06d5\u06d7\u06d7\u06e7\u06e8\u06f0\u06f1\u06fc") - buf.write("\u06fe\u0701\u0701\u0712\u0712\u0714\u0731\u074f\u07a7") - buf.write("\u07b3\u07b3\u07cc\u07ec\u07f6\u07f7\u07fc\u07fc\u0802") - buf.write("\u0817\u081c\u081c\u0826\u0826\u082a\u082a\u0842\u085a") - buf.write("\u0862\u086c\u08a2\u08b6\u08b8\u08bf\u0906\u093b\u093f") - buf.write("\u093f\u0952\u0952\u095a\u0963\u0973\u0982\u0987\u098e") - buf.write("\u0991\u0992\u0995\u09aa\u09ac\u09b2\u09b4\u09b4\u09b8") - buf.write("\u09bb\u09bf\u09bf\u09d0\u09d0\u09de\u09df\u09e1\u09e3") - buf.write("\u09f2\u09f5\u09fd\u09fe\u0a07\u0a0c\u0a11\u0a12\u0a15") - buf.write("\u0a2a\u0a2c\u0a32\u0a34\u0a35\u0a37\u0a38\u0a3a\u0a3b") - buf.write("\u0a5b\u0a5e\u0a60\u0a60\u0a74\u0a76\u0a87\u0a8f\u0a91") - buf.write("\u0a93\u0a95\u0aaa\u0aac\u0ab2\u0ab4\u0ab5\u0ab7\u0abb") - buf.write("\u0abf\u0abf\u0ad2\u0ad2\u0ae2\u0ae3\u0af3\u0af3\u0afb") - buf.write("\u0afb\u0b07\u0b0e\u0b11\u0b12\u0b15\u0b2a\u0b2c\u0b32") - buf.write("\u0b34\u0b35\u0b37\u0b3b\u0b3f\u0b3f\u0b5e\u0b5f\u0b61") - buf.write("\u0b63\u0b73\u0b73\u0b85\u0b85\u0b87\u0b8c\u0b90\u0b92") - buf.write("\u0b94\u0b97\u0b9b\u0b9c\u0b9e\u0b9e\u0ba0\u0ba1\u0ba5") - buf.write("\u0ba6\u0baa\u0bac\u0bb0\u0bbb\u0bd2\u0bd2\u0bfb\u0bfb") - buf.write("\u0c07\u0c0e\u0c10\u0c12\u0c14\u0c2a\u0c2c\u0c3b\u0c3f") - buf.write("\u0c3f\u0c5a\u0c5c\u0c62\u0c63\u0c82\u0c82\u0c87\u0c8e") - buf.write("\u0c90\u0c92\u0c94\u0caa\u0cac\u0cb5\u0cb7\u0cbb\u0cbf") - buf.write("\u0cbf\u0ce0\u0ce0\u0ce2\u0ce3\u0cf3\u0cf4\u0d07\u0d0e") - buf.write("\u0d10\u0d12\u0d14\u0d3c\u0d3f\u0d3f\u0d50\u0d50\u0d56") - buf.write("\u0d58\u0d61\u0d63\u0d7c\u0d81\u0d87\u0d98\u0d9c\u0db3") - buf.write("\u0db5\u0dbd\u0dbf\u0dbf\u0dc2\u0dc8\u0e03\u0e32\u0e34") - buf.write("\u0e35\u0e41\u0e48\u0e83\u0e84\u0e86\u0e86\u0e89\u0e8a") - buf.write("\u0e8c\u0e8c\u0e8f\u0e8f\u0e96\u0e99\u0e9b\u0ea1\u0ea3") - buf.write("\u0ea5\u0ea7\u0ea7\u0ea9\u0ea9\u0eac\u0ead\u0eaf\u0eb2") - buf.write("\u0eb4\u0eb5\u0ebf\u0ebf\u0ec2\u0ec6\u0ec8\u0ec8\u0ede") - buf.write("\u0ee1\u0f02\u0f02\u0f42\u0f49\u0f4b\u0f6e\u0f8a\u0f8e") - buf.write("\u1002\u102c\u1041\u1041\u1052\u1057\u105c\u105f\u1063") - buf.write("\u1063\u1067\u1068\u1070\u1072\u1077\u1083\u1090\u1090") - buf.write("\u10a2\u10c7\u10c9\u10c9\u10cf\u10cf\u10d2\u10fc\u10fe") - buf.write("\u124a\u124c\u124f\u1252\u1258\u125a\u125a\u125c\u125f") - buf.write("\u1262\u128a\u128c\u128f\u1292\u12b2\u12b4\u12b7\u12ba") - buf.write("\u12c0\u12c2\u12c2\u12c4\u12c7\u12ca\u12d8\u12da\u1312") - buf.write("\u1314\u1317\u131a\u135c\u1382\u1391\u13a2\u13f7\u13fa") - buf.write("\u13ff\u1403\u166e\u1671\u1681\u1683\u169c\u16a2\u16ec") - buf.write("\u16f0\u16fa\u1702\u170e\u1710\u1713\u1722\u1733\u1742") - buf.write("\u1753\u1762\u176e\u1770\u1772\u1782\u17b5\u17d9\u17d9") - buf.write("\u17dd\u17de\u1822\u1879\u1882\u1886\u1889\u18aa\u18ac") - buf.write("\u18ac\u18b2\u18f7\u1902\u1920\u1952\u196f\u1972\u1976") - buf.write("\u1982\u19ad\u19b2\u19cb\u1a02\u1a18\u1a22\u1a56\u1aa9") - buf.write("\u1aa9\u1b07\u1b35\u1b47\u1b4d\u1b85\u1ba2\u1bb0\u1bb1") - buf.write("\u1bbc\u1be7\u1c02\u1c25\u1c4f\u1c51\u1c5c\u1c7f\u1c82") - buf.write("\u1c8a\u1ceb\u1cee\u1cf0\u1cf3\u1cf7\u1cf8\u1d02\u1dc1") - buf.write("\u1e02\u1f17\u1f1a\u1f1f\u1f22\u1f47\u1f4a\u1f4f\u1f52") - buf.write("\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f5f\u1f61\u1f7f") - buf.write("\u1f82\u1fb6\u1fb8\u1fbe\u1fc0\u1fc0\u1fc4\u1fc6\u1fc8") - buf.write("\u1fce\u1fd2\u1fd5\u1fd8\u1fdd\u1fe2\u1fee\u1ff4\u1ff6") - buf.write("\u1ff8\u1ffe\u2041\u2042\u2056\u2056\u2073\u2073\u2081") - buf.write("\u2081\u2092\u209e\u20a2\u20c1\u2104\u2104\u2109\u2109") - buf.write("\u210c\u2115\u2117\u2117\u211b\u211f\u2126\u2126\u2128") - buf.write("\u2128\u212a\u212a\u212c\u212f\u2131\u213b\u213e\u2141") - buf.write("\u2147\u214b\u2150\u2150\u2162\u218a\u2c02\u2c30\u2c32") - buf.write("\u2c60\u2c62\u2ce6\u2ced\u2cf0\u2cf4\u2cf5\u2d02\u2d27") - buf.write("\u2d29\u2d29\u2d2f\u2d2f\u2d32\u2d69\u2d71\u2d71\u2d82") - buf.write("\u2d98\u2da2\u2da8\u2daa\u2db0\u2db2\u2db8\u2dba\u2dc0") - buf.write("\u2dc2\u2dc8\u2dca\u2dd0\u2dd2\u2dd8\u2dda\u2de0\u2e31") - buf.write("\u2e31\u3007\u3009\u3023\u302b\u3033\u3037\u303a\u303e") - buf.write("\u3043\u3098\u309f\u30a1\u30a3\u30fc\u30fe\u3101\u3107") - buf.write("\u3130\u3133\u3190\u31a2\u31bc\u31f2\u3201\u3402\u4db7") - buf.write("\u4e02\u9fec\ua002\ua48e\ua4d2\ua4ff\ua502\ua60e\ua612") - buf.write("\ua621\ua62c\ua62d\ua642\ua670\ua681\ua69f\ua6a2\ua6f1") - buf.write("\ua719\ua721\ua724\ua78a\ua78d\ua7b0\ua7b2\ua7b9\ua7f9") - buf.write("\ua803\ua805\ua807\ua809\ua80c\ua80e\ua824\ua83a\ua83a") - buf.write("\ua842\ua875\ua884\ua8b5\ua8f4\ua8f9\ua8fd\ua8fd\ua8ff") - buf.write("\ua8ff\ua90c\ua927\ua932\ua948\ua962\ua97e\ua986\ua9b4") - buf.write("\ua9d1\ua9d1\ua9e2\ua9e6\ua9e8\ua9f1\ua9fc\uaa00\uaa02") - buf.write("\uaa2a\uaa42\uaa44\uaa46\uaa4d\uaa62\uaa78\uaa7c\uaa7c") - buf.write("\uaa80\uaab1\uaab3\uaab3\uaab7\uaab8\uaabb\uaabf\uaac2") - buf.write("\uaac2\uaac4\uaac4\uaadd\uaadf\uaae2\uaaec\uaaf4\uaaf6") - buf.write("\uab03\uab08\uab0b\uab10\uab13\uab18\uab22\uab28\uab2a") - buf.write("\uab30\uab32\uab5c\uab5e\uab67\uab72\uabe4\uac02\ud7a5") - buf.write("\ud7b2\ud7c8\ud7cd\ud7fd\uf902\ufa6f\ufa72\ufadb\ufb02") - buf.write("\ufb08\ufb15\ufb19\ufb1f\ufb1f\ufb21\ufb2a\ufb2c\ufb38") - buf.write("\ufb3a\ufb3e\ufb40\ufb40\ufb42\ufb43\ufb45\ufb46\ufb48") - buf.write("\ufbb3\ufbd5\ufd3f\ufd52\ufd91\ufd94\ufdc9\ufdf2\ufdfe") - buf.write("\ufe35\ufe36\ufe4f\ufe51\ufe6b\ufe6b\ufe72\ufe76\ufe78") - buf.write("\ufefe\uff06\uff06\uff23\uff3c\uff41\uff41\uff43\uff5c") - buf.write("\uff68\uffc0\uffc4\uffc9\uffcc\uffd1\uffd4\uffd9\uffdc") - buf.write("\uffde\uffe2\uffe3\uffe7\uffe8\u00e6\2\62;\u0081\u00a1") - buf.write("\u00af\u00af\u0302\u0371\u0485\u0489\u0593\u05bf\u05c1") - buf.write("\u05c1\u05c3\u05c4\u05c6\u05c7\u05c9\u05c9\u0602\u0607") - buf.write("\u0612\u061c\u061e\u061e\u064d\u066b\u0672\u0672\u06d8") - buf.write("\u06df\u06e1\u06e6\u06e9\u06ea\u06ec\u06ef\u06f2\u06fb") - buf.write("\u0711\u0711\u0713\u0713\u0732\u074c\u07a8\u07b2\u07c2") - buf.write("\u07cb\u07ed\u07f5\u0818\u081b\u081d\u0825\u0827\u0829") - buf.write("\u082b\u082f\u085b\u085d\u08d6\u0905\u093c\u093e\u0940") - buf.write("\u0951\u0953\u0959\u0964\u0965\u0968\u0971\u0983\u0985") - buf.write("\u09be\u09be\u09c0\u09c6\u09c9\u09ca\u09cd\u09cf\u09d9") - buf.write("\u09d9\u09e4\u09e5\u09e8\u09f1\u0a03\u0a05\u0a3e\u0a3e") - buf.write("\u0a40\u0a44\u0a49\u0a4a\u0a4d\u0a4f\u0a53\u0a53\u0a68") - buf.write("\u0a73\u0a77\u0a77\u0a83\u0a85\u0abe\u0abe\u0ac0\u0ac7") - buf.write("\u0ac9\u0acb\u0acd\u0acf\u0ae4\u0ae5\u0ae8\u0af1\u0afc") - buf.write("\u0b01\u0b03\u0b05\u0b3e\u0b3e\u0b40\u0b46\u0b49\u0b4a") - buf.write("\u0b4d\u0b4f\u0b58\u0b59\u0b64\u0b65\u0b68\u0b71\u0b84") - buf.write("\u0b84\u0bc0\u0bc4\u0bc8\u0bca\u0bcc\u0bcf\u0bd9\u0bd9") - buf.write("\u0be8\u0bf1\u0c02\u0c05\u0c40\u0c46\u0c48\u0c4a\u0c4c") - buf.write("\u0c4f\u0c57\u0c58\u0c64\u0c65\u0c68\u0c71\u0c83\u0c85") - buf.write("\u0cbe\u0cbe\u0cc0\u0cc6\u0cc8\u0cca\u0ccc\u0ccf\u0cd7") - buf.write("\u0cd8\u0ce4\u0ce5\u0ce8\u0cf1\u0d02\u0d05\u0d3d\u0d3e") - buf.write("\u0d40\u0d46\u0d48\u0d4a\u0d4c\u0d4f\u0d59\u0d59\u0d64") - buf.write("\u0d65\u0d68\u0d71\u0d84\u0d85\u0dcc\u0dcc\u0dd1\u0dd6") - buf.write("\u0dd8\u0dd8\u0dda\u0de1\u0de8\u0df1\u0df4\u0df5\u0e33") - buf.write("\u0e33\u0e36\u0e3c\u0e49\u0e50\u0e52\u0e5b\u0eb3\u0eb3") - buf.write("\u0eb6\u0ebb\u0ebd\u0ebe\u0eca\u0ecf\u0ed2\u0edb\u0f1a") - buf.write("\u0f1b\u0f22\u0f2b\u0f37\u0f37\u0f39\u0f39\u0f3b\u0f3b") - buf.write("\u0f40\u0f41\u0f73\u0f86\u0f88\u0f89\u0f8f\u0f99\u0f9b") - buf.write("\u0fbe\u0fc8\u0fc8\u102d\u1040\u1042\u104b\u1058\u105b") - buf.write("\u1060\u1062\u1064\u1066\u1069\u106f\u1073\u1076\u1084") - buf.write("\u108f\u1091\u109f\u135f\u1361\u1714\u1716\u1734\u1736") - buf.write("\u1754\u1755\u1774\u1775\u17b6\u17d5\u17df\u17df\u17e2") - buf.write("\u17eb\u180d\u1810\u1812\u181b\u1887\u1888\u18ab\u18ab") - buf.write("\u1922\u192d\u1932\u193d\u1948\u1951\u19d2\u19db\u1a19") - buf.write("\u1a1d\u1a57\u1a60\u1a62\u1a7e\u1a81\u1a8b\u1a92\u1a9b") - buf.write("\u1ab2\u1abf\u1b02\u1b06\u1b36\u1b46\u1b52\u1b5b\u1b6d") - buf.write("\u1b75\u1b82\u1b84\u1ba3\u1baf\u1bb2\u1bbb\u1be8\u1bf5") - buf.write("\u1c26\u1c39\u1c42\u1c4b\u1c52\u1c5b\u1cd2\u1cd4\u1cd6") - buf.write("\u1cea\u1cef\u1cef\u1cf4\u1cf6\u1cf9\u1cfb\u1dc2\u1dfb") - buf.write("\u1dfd\u1e01\u200d\u2011\u202c\u2030\u2062\u2066\u2068") - buf.write("\u2071\u20d2\u20de\u20e3\u20e3\u20e7\u20f2\u2cf1\u2cf3") - buf.write("\u2d81\u2d81\u2de2\u2e01\u302c\u3031\u309b\u309c\ua622") - buf.write("\ua62b\ua671\ua671\ua676\ua67f\ua6a0\ua6a1\ua6f2\ua6f3") - buf.write("\ua804\ua804\ua808\ua808\ua80d\ua80d\ua825\ua829\ua882") - buf.write("\ua883\ua8b6\ua8c7\ua8d2\ua8db\ua8e2\ua8f3\ua902\ua90b") - buf.write("\ua928\ua92f\ua949\ua955\ua982\ua985\ua9b5\ua9c2\ua9d2") - buf.write("\ua9db\ua9e7\ua9e7\ua9f2\ua9fb\uaa2b\uaa38\uaa45\uaa45") - buf.write("\uaa4e\uaa4f\uaa52\uaa5b\uaa7d\uaa7f\uaab2\uaab2\uaab4") - buf.write("\uaab6\uaab9\uaaba\uaac0\uaac1\uaac3\uaac3\uaaed\uaaf1") - buf.write("\uaaf7\uaaf8\uabe5\uabec\uabee\uabef\uabf2\uabfb\ufb20") - buf.write("\ufb20\ufe02\ufe11\ufe22\ufe31\uff01\uff01\uff12\uff1b") - buf.write("\ufffb\ufffd\5\2\13\f\16\17\"\"\4\2\f\f\17\17\2\u044f") - buf.write("\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13") - buf.write("\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3") - buf.write("\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2") - buf.write("\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2") - buf.write("%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2") - buf.write("\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67") - buf.write("\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2") - buf.write("A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2") - buf.write("\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2") - buf.write("\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2") - buf.write("\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3") - buf.write("\2\2\2\2\u009f\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2") - buf.write("\2\u00bb\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd") - buf.write("\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2") - buf.write("\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db") - buf.write("\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2") - buf.write("\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9") - buf.write("\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2") - buf.write("\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7") - buf.write("\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2") - buf.write("\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105") - buf.write("\3\2\2\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010b\3\2\2") - buf.write("\2\2\u010d\3\2\2\2\2\u010f\3\2\2\2\2\u0111\3\2\2\2\2\u0113") - buf.write("\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2\2\2\u0119\3\2\2") - buf.write("\2\2\u011b\3\2\2\2\2\u011d\3\2\2\2\2\u011f\3\2\2\2\2\u0121") - buf.write("\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u012b\3\2\2") - buf.write("\2\2\u012d\3\2\2\2\2\u012f\3\2\2\2\2\u0131\3\2\2\2\2\u0133") - buf.write("\3\2\2\2\3\u0135\3\2\2\2\5\u013e\3\2\2\2\7\u0145\3\2\2") - buf.write("\2\t\u014d\3\2\2\2\13\u0153\3\2\2\2\r\u0158\3\2\2\2\17") - buf.write("\u015d\3\2\2\2\21\u0163\3\2\2\2\23\u0168\3\2\2\2\25\u016e") - buf.write("\3\2\2\2\27\u0174\3\2\2\2\31\u017d\3\2\2\2\33\u0185\3") - buf.write("\2\2\2\35\u0188\3\2\2\2\37\u018f\3\2\2\2!\u0194\3\2\2") - buf.write("\2#\u0199\3\2\2\2%\u01a1\3\2\2\2\'\u01a7\3\2\2\2)\u01af") - buf.write("\3\2\2\2+\u01b5\3\2\2\2-\u01b9\3\2\2\2/\u01bc\3\2\2\2") - buf.write("\61\u01c1\3\2\2\2\63\u01cc\3\2\2\2\65\u01d3\3\2\2\2\67") - buf.write("\u01de\3\2\2\29\u01e2\3\2\2\2;\u01ec\3\2\2\2=\u01f1\3") - buf.write("\2\2\2?\u01f8\3\2\2\2A\u01fc\3\2\2\2C\u0204\3\2\2\2E\u020c") - buf.write("\3\2\2\2G\u0216\3\2\2\2I\u021d\3\2\2\2K\u0224\3\2\2\2") - buf.write("M\u022a\3\2\2\2O\u0231\3\2\2\2Q\u023a\3\2\2\2S\u0240\3") - buf.write("\2\2\2U\u0247\3\2\2\2W\u0254\3\2\2\2Y\u0259\3\2\2\2[\u025f") - buf.write("\3\2\2\2]\u0266\3\2\2\2_\u0270\3\2\2\2a\u0274\3\2\2\2") - buf.write("c\u0279\3\2\2\2e\u0282\3\2\2\2g\u028c\3\2\2\2i\u028e\3") - buf.write("\2\2\2k\u0292\3\2\2\2m\u0296\3\2\2\2o\u029a\3\2\2\2q\u029e") - buf.write("\3\2\2\2s\u02aa\3\2\2\2u\u02ac\3\2\2\2w\u02b5\3\2\2\2") - buf.write("y\u02b7\3\2\2\2{\u02ba\3\2\2\2}\u02c0\3\2\2\2\177\u02c3") - buf.write("\3\2\2\2\u0081\u02c7\3\2\2\2\u0083\u02cb\3\2\2\2\u0085") - buf.write("\u02d2\3\2\2\2\u0087\u02d5\3\2\2\2\u0089\u02db\3\2\2\2") - buf.write("\u008b\u02dd\3\2\2\2\u008d\u02e3\3\2\2\2\u008f\u02ea\3") - buf.write("\2\2\2\u0091\u02ed\3\2\2\2\u0093\u02f3\3\2\2\2\u0095\u02f5") - buf.write("\3\2\2\2\u0097\u02f9\3\2\2\2\u0099\u0300\3\2\2\2\u009b") - buf.write("\u0303\3\2\2\2\u009d\u0309\3\2\2\2\u009f\u030d\3\2\2\2") - buf.write("\u00a1\u032a\3\2\2\2\u00a3\u032c\3\2\2\2\u00a5\u032f\3") - buf.write("\2\2\2\u00a7\u0332\3\2\2\2\u00a9\u0336\3\2\2\2\u00ab\u0338") - buf.write("\3\2\2\2\u00ad\u033a\3\2\2\2\u00af\u034a\3\2\2\2\u00b1") - buf.write("\u034c\3\2\2\2\u00b3\u034f\3\2\2\2\u00b5\u035a\3\2\2\2") - buf.write("\u00b7\u0364\3\2\2\2\u00b9\u0366\3\2\2\2\u00bb\u0368\3") - buf.write("\2\2\2\u00bd\u036f\3\2\2\2\u00bf\u0375\3\2\2\2\u00c1\u037b") - buf.write("\3\2\2\2\u00c3\u0388\3\2\2\2\u00c5\u038a\3\2\2\2\u00c7") - buf.write("\u038c\3\2\2\2\u00c9\u0397\3\2\2\2\u00cb\u039c\3\2\2\2") - buf.write("\u00cd\u039e\3\2\2\2\u00cf\u03a0\3\2\2\2\u00d1\u03a2\3") - buf.write("\2\2\2\u00d3\u03a4\3\2\2\2\u00d5\u03a6\3\2\2\2\u00d7\u03a8") - buf.write("\3\2\2\2\u00d9\u03aa\3\2\2\2\u00db\u03ac\3\2\2\2\u00dd") - buf.write("\u03ae\3\2\2\2\u00df\u03b0\3\2\2\2\u00e1\u03b2\3\2\2\2") - buf.write("\u00e3\u03b4\3\2\2\2\u00e5\u03b6\3\2\2\2\u00e7\u03b8\3") - buf.write("\2\2\2\u00e9\u03ba\3\2\2\2\u00eb\u03bc\3\2\2\2\u00ed\u03bf") - buf.write("\3\2\2\2\u00ef\u03c2\3\2\2\2\u00f1\u03c5\3\2\2\2\u00f3") - buf.write("\u03c8\3\2\2\2\u00f5\u03cb\3\2\2\2\u00f7\u03ce\3\2\2\2") - buf.write("\u00f9\u03d1\3\2\2\2\u00fb\u03d4\3\2\2\2\u00fd\u03d6\3") - buf.write("\2\2\2\u00ff\u03d8\3\2\2\2\u0101\u03da\3\2\2\2\u0103\u03dc") - buf.write("\3\2\2\2\u0105\u03de\3\2\2\2\u0107\u03e0\3\2\2\2\u0109") - buf.write("\u03e2\3\2\2\2\u010b\u03e4\3\2\2\2\u010d\u03e7\3\2\2\2") - buf.write("\u010f\u03ea\3\2\2\2\u0111\u03ed\3\2\2\2\u0113\u03f0\3") - buf.write("\2\2\2\u0115\u03f3\3\2\2\2\u0117\u03f6\3\2\2\2\u0119\u03f9") - buf.write("\3\2\2\2\u011b\u03fc\3\2\2\2\u011d\u03ff\3\2\2\2\u011f") - buf.write("\u0402\3\2\2\2\u0121\u0406\3\2\2\2\u0123\u040a\3\2\2\2") - buf.write("\u0125\u040f\3\2\2\2\u0127\u0417\3\2\2\2\u0129\u041b\3") - buf.write("\2\2\2\u012b\u041d\3\2\2\2\u012d\u041f\3\2\2\2\u012f\u0424") - buf.write("\3\2\2\2\u0131\u042a\3\2\2\2\u0133\u0438\3\2\2\2\u0135") - buf.write("\u0136\7c\2\2\u0136\u0137\7d\2\2\u0137\u0138\7u\2\2\u0138") - buf.write("\u0139\7v\2\2\u0139\u013a\7t\2\2\u013a\u013b\7c\2\2\u013b") - buf.write("\u013c\7e\2\2\u013c\u013d\7v\2\2\u013d\4\3\2\2\2\u013e") - buf.write("\u013f\7c\2\2\u013f\u0140\7u\2\2\u0140\u0141\7u\2\2\u0141") - buf.write("\u0142\7g\2\2\u0142\u0143\7t\2\2\u0143\u0144\7v\2\2\u0144") - buf.write("\6\3\2\2\2\u0145\u0146\7d\2\2\u0146\u0147\7q\2\2\u0147") - buf.write("\u0148\7q\2\2\u0148\u0149\7n\2\2\u0149\u014a\7g\2\2\u014a") - buf.write("\u014b\7c\2\2\u014b\u014c\7p\2\2\u014c\b\3\2\2\2\u014d") - buf.write("\u014e\7d\2\2\u014e\u014f\7t\2\2\u014f\u0150\7g\2\2\u0150") - buf.write("\u0151\7c\2\2\u0151\u0152\7m\2\2\u0152\n\3\2\2\2\u0153") - buf.write("\u0154\7d\2\2\u0154\u0155\7{\2\2\u0155\u0156\7v\2\2\u0156") - buf.write("\u0157\7g\2\2\u0157\f\3\2\2\2\u0158\u0159\7e\2\2\u0159") - buf.write("\u015a\7c\2\2\u015a\u015b\7u\2\2\u015b\u015c\7g\2\2\u015c") - buf.write("\16\3\2\2\2\u015d\u015e\7e\2\2\u015e\u015f\7c\2\2\u015f") - buf.write("\u0160\7v\2\2\u0160\u0161\7e\2\2\u0161\u0162\7j\2\2\u0162") - buf.write("\20\3\2\2\2\u0163\u0164\7e\2\2\u0164\u0165\7j\2\2\u0165") - buf.write("\u0166\7c\2\2\u0166\u0167\7t\2\2\u0167\22\3\2\2\2\u0168") - buf.write("\u0169\7e\2\2\u0169\u016a\7n\2\2\u016a\u016b\7c\2\2\u016b") - buf.write("\u016c\7u\2\2\u016c\u016d\7u\2\2\u016d\24\3\2\2\2\u016e") - buf.write("\u016f\7e\2\2\u016f\u0170\7q\2\2\u0170\u0171\7p\2\2\u0171") - buf.write("\u0172\7u\2\2\u0172\u0173\7v\2\2\u0173\26\3\2\2\2\u0174") - buf.write("\u0175\7e\2\2\u0175\u0176\7q\2\2\u0176\u0177\7p\2\2\u0177") - buf.write("\u0178\7v\2\2\u0178\u0179\7k\2\2\u0179\u017a\7p\2\2\u017a") - buf.write("\u017b\7w\2\2\u017b\u017c\7g\2\2\u017c\30\3\2\2\2\u017d") - buf.write("\u017e\7f\2\2\u017e\u017f\7g\2\2\u017f\u0180\7h\2\2\u0180") - buf.write("\u0181\7c\2\2\u0181\u0182\7w\2\2\u0182\u0183\7n\2\2\u0183") - buf.write("\u0184\7v\2\2\u0184\32\3\2\2\2\u0185\u0186\7f\2\2\u0186") - buf.write("\u0187\7q\2\2\u0187\34\3\2\2\2\u0188\u0189\7f\2\2\u0189") - buf.write("\u018a\7q\2\2\u018a\u018b\7w\2\2\u018b\u018c\7d\2\2\u018c") - buf.write("\u018d\7n\2\2\u018d\u018e\7g\2\2\u018e\36\3\2\2\2\u018f") - buf.write("\u0190\7g\2\2\u0190\u0191\7n\2\2\u0191\u0192\7u\2\2\u0192") - buf.write("\u0193\7g\2\2\u0193 \3\2\2\2\u0194\u0195\7g\2\2\u0195") - buf.write("\u0196\7p\2\2\u0196\u0197\7w\2\2\u0197\u0198\7o\2\2\u0198") - buf.write("\"\3\2\2\2\u0199\u019a\7g\2\2\u019a\u019b\7z\2\2\u019b") - buf.write("\u019c\7v\2\2\u019c\u019d\7g\2\2\u019d\u019e\7p\2\2\u019e") - buf.write("\u019f\7f\2\2\u019f\u01a0\7u\2\2\u01a0$\3\2\2\2\u01a1") - buf.write("\u01a2\7h\2\2\u01a2\u01a3\7k\2\2\u01a3\u01a4\7p\2\2\u01a4") - buf.write("\u01a5\7c\2\2\u01a5\u01a6\7n\2\2\u01a6&\3\2\2\2\u01a7") - buf.write("\u01a8\7h\2\2\u01a8\u01a9\7k\2\2\u01a9\u01aa\7p\2\2\u01aa") - buf.write("\u01ab\7c\2\2\u01ab\u01ac\7n\2\2\u01ac\u01ad\7n\2\2\u01ad") - buf.write("\u01ae\7{\2\2\u01ae(\3\2\2\2\u01af\u01b0\7h\2\2\u01b0") - buf.write("\u01b1\7n\2\2\u01b1\u01b2\7q\2\2\u01b2\u01b3\7c\2\2\u01b3") - buf.write("\u01b4\7v\2\2\u01b4*\3\2\2\2\u01b5\u01b6\7h\2\2\u01b6") - buf.write("\u01b7\7q\2\2\u01b7\u01b8\7t\2\2\u01b8,\3\2\2\2\u01b9") - buf.write("\u01ba\7k\2\2\u01ba\u01bb\7h\2\2\u01bb.\3\2\2\2\u01bc") - buf.write("\u01bd\7i\2\2\u01bd\u01be\7q\2\2\u01be\u01bf\7v\2\2\u01bf") - buf.write("\u01c0\7q\2\2\u01c0\60\3\2\2\2\u01c1\u01c2\7k\2\2\u01c2") - buf.write("\u01c3\7o\2\2\u01c3\u01c4\7r\2\2\u01c4\u01c5\7n\2\2\u01c5") - buf.write("\u01c6\7g\2\2\u01c6\u01c7\7o\2\2\u01c7\u01c8\7g\2\2\u01c8") - buf.write("\u01c9\7p\2\2\u01c9\u01ca\7v\2\2\u01ca\u01cb\7u\2\2\u01cb") - buf.write("\62\3\2\2\2\u01cc\u01cd\7k\2\2\u01cd\u01ce\7o\2\2\u01ce") - buf.write("\u01cf\7r\2\2\u01cf\u01d0\7q\2\2\u01d0\u01d1\7t\2\2\u01d1") - buf.write("\u01d2\7v\2\2\u01d2\64\3\2\2\2\u01d3\u01d4\7k\2\2\u01d4") - buf.write("\u01d5\7p\2\2\u01d5\u01d6\7u\2\2\u01d6\u01d7\7v\2\2\u01d7") - buf.write("\u01d8\7c\2\2\u01d8\u01d9\7p\2\2\u01d9\u01da\7e\2\2\u01da") - buf.write("\u01db\7g\2\2\u01db\u01dc\7q\2\2\u01dc\u01dd\7h\2\2\u01dd") - buf.write("\66\3\2\2\2\u01de\u01df\7k\2\2\u01df\u01e0\7p\2\2\u01e0") - buf.write("\u01e1\7v\2\2\u01e18\3\2\2\2\u01e2\u01e3\7k\2\2\u01e3") - buf.write("\u01e4\7p\2\2\u01e4\u01e5\7v\2\2\u01e5\u01e6\7g\2\2\u01e6") - buf.write("\u01e7\7t\2\2\u01e7\u01e8\7h\2\2\u01e8\u01e9\7c\2\2\u01e9") - buf.write("\u01ea\7e\2\2\u01ea\u01eb\7g\2\2\u01eb:\3\2\2\2\u01ec") - buf.write("\u01ed\7n\2\2\u01ed\u01ee\7q\2\2\u01ee\u01ef\7p\2\2\u01ef") - buf.write("\u01f0\7i\2\2\u01f0<\3\2\2\2\u01f1\u01f2\7p\2\2\u01f2") - buf.write("\u01f3\7c\2\2\u01f3\u01f4\7v\2\2\u01f4\u01f5\7k\2\2\u01f5") - buf.write("\u01f6\7x\2\2\u01f6\u01f7\7g\2\2\u01f7>\3\2\2\2\u01f8") - buf.write("\u01f9\7p\2\2\u01f9\u01fa\7g\2\2\u01fa\u01fb\7y\2\2\u01fb") - buf.write("@\3\2\2\2\u01fc\u01fd\7r\2\2\u01fd\u01fe\7c\2\2\u01fe") - buf.write("\u01ff\7e\2\2\u01ff\u0200\7m\2\2\u0200\u0201\7c\2\2\u0201") - buf.write("\u0202\7i\2\2\u0202\u0203\7g\2\2\u0203B\3\2\2\2\u0204") - buf.write("\u0205\7r\2\2\u0205\u0206\7t\2\2\u0206\u0207\7k\2\2\u0207") - buf.write("\u0208\7x\2\2\u0208\u0209\7c\2\2\u0209\u020a\7v\2\2\u020a") - buf.write("\u020b\7g\2\2\u020bD\3\2\2\2\u020c\u020d\7r\2\2\u020d") - buf.write("\u020e\7t\2\2\u020e\u020f\7q\2\2\u020f\u0210\7v\2\2\u0210") - buf.write("\u0211\7g\2\2\u0211\u0212\7e\2\2\u0212\u0213\7v\2\2\u0213") - buf.write("\u0214\7g\2\2\u0214\u0215\7f\2\2\u0215F\3\2\2\2\u0216") - buf.write("\u0217\7r\2\2\u0217\u0218\7w\2\2\u0218\u0219\7d\2\2\u0219") - buf.write("\u021a\7n\2\2\u021a\u021b\7k\2\2\u021b\u021c\7e\2\2\u021c") - buf.write("H\3\2\2\2\u021d\u021e\7t\2\2\u021e\u021f\7g\2\2\u021f") - buf.write("\u0220\7v\2\2\u0220\u0221\7w\2\2\u0221\u0222\7t\2\2\u0222") - buf.write("\u0223\7p\2\2\u0223J\3\2\2\2\u0224\u0225\7u\2\2\u0225") - buf.write("\u0226\7j\2\2\u0226\u0227\7q\2\2\u0227\u0228\7t\2\2\u0228") - buf.write("\u0229\7v\2\2\u0229L\3\2\2\2\u022a\u022b\7u\2\2\u022b") - buf.write("\u022c\7v\2\2\u022c\u022d\7c\2\2\u022d\u022e\7v\2\2\u022e") - buf.write("\u022f\7k\2\2\u022f\u0230\7e\2\2\u0230N\3\2\2\2\u0231") - buf.write("\u0232\7u\2\2\u0232\u0233\7v\2\2\u0233\u0234\7t\2\2\u0234") - buf.write("\u0235\7k\2\2\u0235\u0236\7e\2\2\u0236\u0237\7v\2\2\u0237") - buf.write("\u0238\7h\2\2\u0238\u0239\7r\2\2\u0239P\3\2\2\2\u023a") - buf.write("\u023b\7u\2\2\u023b\u023c\7w\2\2\u023c\u023d\7r\2\2\u023d") - buf.write("\u023e\7g\2\2\u023e\u023f\7t\2\2\u023fR\3\2\2\2\u0240") - buf.write("\u0241\7u\2\2\u0241\u0242\7y\2\2\u0242\u0243\7k\2\2\u0243") - buf.write("\u0244\7v\2\2\u0244\u0245\7e\2\2\u0245\u0246\7j\2\2\u0246") - buf.write("T\3\2\2\2\u0247\u0248\7u\2\2\u0248\u0249\7{\2\2\u0249") - buf.write("\u024a\7p\2\2\u024a\u024b\7e\2\2\u024b\u024c\7j\2\2\u024c") - buf.write("\u024d\7t\2\2\u024d\u024e\7q\2\2\u024e\u024f\7p\2\2\u024f") - buf.write("\u0250\7k\2\2\u0250\u0251\7|\2\2\u0251\u0252\7g\2\2\u0252") - buf.write("\u0253\7f\2\2\u0253V\3\2\2\2\u0254\u0255\7v\2\2\u0255") - buf.write("\u0256\7j\2\2\u0256\u0257\7k\2\2\u0257\u0258\7u\2\2\u0258") - buf.write("X\3\2\2\2\u0259\u025a\7v\2\2\u025a\u025b\7j\2\2\u025b") - buf.write("\u025c\7t\2\2\u025c\u025d\7q\2\2\u025d\u025e\7y\2\2\u025e") - buf.write("Z\3\2\2\2\u025f\u0260\7v\2\2\u0260\u0261\7j\2\2\u0261") - buf.write("\u0262\7t\2\2\u0262\u0263\7q\2\2\u0263\u0264\7y\2\2\u0264") - buf.write("\u0265\7u\2\2\u0265\\\3\2\2\2\u0266\u0267\7v\2\2\u0267") - buf.write("\u0268\7t\2\2\u0268\u0269\7c\2\2\u0269\u026a\7p\2\2\u026a") - buf.write("\u026b\7u\2\2\u026b\u026c\7k\2\2\u026c\u026d\7g\2\2\u026d") - buf.write("\u026e\7p\2\2\u026e\u026f\7v\2\2\u026f^\3\2\2\2\u0270") - buf.write("\u0271\7v\2\2\u0271\u0272\7t\2\2\u0272\u0273\7{\2\2\u0273") - buf.write("`\3\2\2\2\u0274\u0275\7x\2\2\u0275\u0276\7q\2\2\u0276") - buf.write("\u0277\7k\2\2\u0277\u0278\7f\2\2\u0278b\3\2\2\2\u0279") - buf.write("\u027a\7x\2\2\u027a\u027b\7q\2\2\u027b\u027c\7n\2\2\u027c") - buf.write("\u027d\7c\2\2\u027d\u027e\7v\2\2\u027e\u027f\7k\2\2\u027f") - buf.write("\u0280\7n\2\2\u0280\u0281\7g\2\2\u0281d\3\2\2\2\u0282") - buf.write("\u0283\7y\2\2\u0283\u0284\7j\2\2\u0284\u0285\7k\2\2\u0285") - buf.write("\u0286\7n\2\2\u0286\u0287\7g\2\2\u0287f\3\2\2\2\u0288") - buf.write("\u028d\5i\65\2\u0289\u028d\5k\66\2\u028a\u028d\5m\67\2") - buf.write("\u028b\u028d\5o8\2\u028c\u0288\3\2\2\2\u028c\u0289\3\2") - buf.write("\2\2\u028c\u028a\3\2\2\2\u028c\u028b\3\2\2\2\u028dh\3") - buf.write("\2\2\2\u028e\u0290\5s:\2\u028f\u0291\5q9\2\u0290\u028f") - buf.write("\3\2\2\2\u0290\u0291\3\2\2\2\u0291j\3\2\2\2\u0292\u0294") - buf.write("\5\u0081A\2\u0293\u0295\5q9\2\u0294\u0293\3\2\2\2\u0294") - buf.write("\u0295\3\2\2\2\u0295l\3\2\2\2\u0296\u0298\5\u008bF\2\u0297") - buf.write("\u0299\5q9\2\u0298\u0297\3\2\2\2\u0298\u0299\3\2\2\2\u0299") - buf.write("n\3\2\2\2\u029a\u029c\5\u0095K\2\u029b\u029d\5q9\2\u029c") - buf.write("\u029b\3\2\2\2\u029c\u029d\3\2\2\2\u029dp\3\2\2\2\u029e") - buf.write("\u029f\t\2\2\2\u029fr\3\2\2\2\u02a0\u02ab\7\62\2\2\u02a1") - buf.write("\u02a8\5y=\2\u02a2\u02a4\5u;\2\u02a3\u02a2\3\2\2\2\u02a3") - buf.write("\u02a4\3\2\2\2\u02a4\u02a9\3\2\2\2\u02a5\u02a6\5\177@") - buf.write("\2\u02a6\u02a7\5u;\2\u02a7\u02a9\3\2\2\2\u02a8\u02a3\3") - buf.write("\2\2\2\u02a8\u02a5\3\2\2\2\u02a9\u02ab\3\2\2\2\u02aa\u02a0") - buf.write("\3\2\2\2\u02aa\u02a1\3\2\2\2\u02abt\3\2\2\2\u02ac\u02b1") - buf.write("\5w<\2\u02ad\u02af\5{>\2\u02ae\u02ad\3\2\2\2\u02ae\u02af") - buf.write("\3\2\2\2\u02af\u02b0\3\2\2\2\u02b0\u02b2\5w<\2\u02b1\u02ae") - buf.write("\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2v\3\2\2\2\u02b3\u02b6") - buf.write("\7\62\2\2\u02b4\u02b6\5y=\2\u02b5\u02b3\3\2\2\2\u02b5") - buf.write("\u02b4\3\2\2\2\u02b6x\3\2\2\2\u02b7\u02b8\t\3\2\2\u02b8") - buf.write("z\3\2\2\2\u02b9\u02bb\5}?\2\u02ba\u02b9\3\2\2\2\u02bb") - buf.write("\u02bc\3\2\2\2\u02bc\u02ba\3\2\2\2\u02bc\u02bd\3\2\2\2") - buf.write("\u02bd|\3\2\2\2\u02be\u02c1\5w<\2\u02bf\u02c1\7a\2\2\u02c0") - buf.write("\u02be\3\2\2\2\u02c0\u02bf\3\2\2\2\u02c1~\3\2\2\2\u02c2") - buf.write("\u02c4\7a\2\2\u02c3\u02c2\3\2\2\2\u02c4\u02c5\3\2\2\2") - buf.write("\u02c5\u02c3\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6\u0080\3") - buf.write("\2\2\2\u02c7\u02c8\7\62\2\2\u02c8\u02c9\t\4\2\2\u02c9") - buf.write("\u02ca\5\u0083B\2\u02ca\u0082\3\2\2\2\u02cb\u02d0\5\u0085") - buf.write("C\2\u02cc\u02ce\5\u0087D\2\u02cd\u02cc\3\2\2\2\u02cd\u02ce") - buf.write("\3\2\2\2\u02ce\u02cf\3\2\2\2\u02cf\u02d1\5\u0085C\2\u02d0") - buf.write("\u02cd\3\2\2\2\u02d0\u02d1\3\2\2\2\u02d1\u0084\3\2\2\2") - buf.write("\u02d2\u02d3\t\5\2\2\u02d3\u0086\3\2\2\2\u02d4\u02d6\5") - buf.write("\u0089E\2\u02d5\u02d4\3\2\2\2\u02d6\u02d7\3\2\2\2\u02d7") - buf.write("\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u0088\3\2\2\2") - buf.write("\u02d9\u02dc\5\u0085C\2\u02da\u02dc\7a\2\2\u02db\u02d9") - buf.write("\3\2\2\2\u02db\u02da\3\2\2\2\u02dc\u008a\3\2\2\2\u02dd") - buf.write("\u02df\7\62\2\2\u02de\u02e0\5\177@\2\u02df\u02de\3\2\2") - buf.write("\2\u02df\u02e0\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02e2") - buf.write("\5\u008dG\2\u02e2\u008c\3\2\2\2\u02e3\u02e8\5\u008fH\2") - buf.write("\u02e4\u02e6\5\u0091I\2\u02e5\u02e4\3\2\2\2\u02e5\u02e6") - buf.write("\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7\u02e9\5\u008fH\2\u02e8") - buf.write("\u02e5\3\2\2\2\u02e8\u02e9\3\2\2\2\u02e9\u008e\3\2\2\2") - buf.write("\u02ea\u02eb\t\6\2\2\u02eb\u0090\3\2\2\2\u02ec\u02ee\5") - buf.write("\u0093J\2\u02ed\u02ec\3\2\2\2\u02ee\u02ef\3\2\2\2\u02ef") - buf.write("\u02ed\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0\u0092\3\2\2\2") - buf.write("\u02f1\u02f4\5\u008fH\2\u02f2\u02f4\7a\2\2\u02f3\u02f1") - buf.write("\3\2\2\2\u02f3\u02f2\3\2\2\2\u02f4\u0094\3\2\2\2\u02f5") - buf.write("\u02f6\7\62\2\2\u02f6\u02f7\t\7\2\2\u02f7\u02f8\5\u0097") - buf.write("L\2\u02f8\u0096\3\2\2\2\u02f9\u02fe\5\u0099M\2\u02fa\u02fc") - buf.write("\5\u009bN\2\u02fb\u02fa\3\2\2\2\u02fb\u02fc\3\2\2\2\u02fc") - buf.write("\u02fd\3\2\2\2\u02fd\u02ff\5\u0099M\2\u02fe\u02fb\3\2") - buf.write("\2\2\u02fe\u02ff\3\2\2\2\u02ff\u0098\3\2\2\2\u0300\u0301") - buf.write("\t\b\2\2\u0301\u009a\3\2\2\2\u0302\u0304\5\u009dO\2\u0303") - buf.write("\u0302\3\2\2\2\u0304\u0305\3\2\2\2\u0305\u0303\3\2\2\2") - buf.write("\u0305\u0306\3\2\2\2\u0306\u009c\3\2\2\2\u0307\u030a\5") - buf.write("\u0099M\2\u0308\u030a\7a\2\2\u0309\u0307\3\2\2\2\u0309") - buf.write("\u0308\3\2\2\2\u030a\u009e\3\2\2\2\u030b\u030e\5\u00a1") - buf.write("Q\2\u030c\u030e\5\u00adW\2\u030d\u030b\3\2\2\2\u030d\u030c") - buf.write("\3\2\2\2\u030e\u00a0\3\2\2\2\u030f\u0310\5u;\2\u0310\u0312") - buf.write("\7\60\2\2\u0311\u0313\5u;\2\u0312\u0311\3\2\2\2\u0312") - buf.write("\u0313\3\2\2\2\u0313\u0315\3\2\2\2\u0314\u0316\5\u00a3") - buf.write("R\2\u0315\u0314\3\2\2\2\u0315\u0316\3\2\2\2\u0316\u0318") - buf.write("\3\2\2\2\u0317\u0319\5\u00abV\2\u0318\u0317\3\2\2\2\u0318") - buf.write("\u0319\3\2\2\2\u0319\u032b\3\2\2\2\u031a\u031b\7\60\2") - buf.write("\2\u031b\u031d\5u;\2\u031c\u031e\5\u00a3R\2\u031d\u031c") - buf.write("\3\2\2\2\u031d\u031e\3\2\2\2\u031e\u0320\3\2\2\2\u031f") - buf.write("\u0321\5\u00abV\2\u0320\u031f\3\2\2\2\u0320\u0321\3\2") - buf.write("\2\2\u0321\u032b\3\2\2\2\u0322\u0323\5u;\2\u0323\u0325") - buf.write("\5\u00a3R\2\u0324\u0326\5\u00abV\2\u0325\u0324\3\2\2\2") - buf.write("\u0325\u0326\3\2\2\2\u0326\u032b\3\2\2\2\u0327\u0328\5") - buf.write("u;\2\u0328\u0329\5\u00abV\2\u0329\u032b\3\2\2\2\u032a") - buf.write("\u030f\3\2\2\2\u032a\u031a\3\2\2\2\u032a\u0322\3\2\2\2") - buf.write("\u032a\u0327\3\2\2\2\u032b\u00a2\3\2\2\2\u032c\u032d\5") - buf.write("\u00a5S\2\u032d\u032e\5\u00a7T\2\u032e\u00a4\3\2\2\2\u032f") - buf.write("\u0330\t\t\2\2\u0330\u00a6\3\2\2\2\u0331\u0333\5\u00a9") - buf.write("U\2\u0332\u0331\3\2\2\2\u0332\u0333\3\2\2\2\u0333\u0334") - buf.write("\3\2\2\2\u0334\u0335\5u;\2\u0335\u00a8\3\2\2\2\u0336\u0337") - buf.write("\t\n\2\2\u0337\u00aa\3\2\2\2\u0338\u0339\t\13\2\2\u0339") - buf.write("\u00ac\3\2\2\2\u033a\u033b\5\u00afX\2\u033b\u033d\5\u00b1") - buf.write("Y\2\u033c\u033e\5\u00abV\2\u033d\u033c\3\2\2\2\u033d\u033e") - buf.write("\3\2\2\2\u033e\u00ae\3\2\2\2\u033f\u0341\5\u0081A\2\u0340") - buf.write("\u0342\7\60\2\2\u0341\u0340\3\2\2\2\u0341\u0342\3\2\2") - buf.write("\2\u0342\u034b\3\2\2\2\u0343\u0344\7\62\2\2\u0344\u0346") - buf.write("\t\4\2\2\u0345\u0347\5\u0083B\2\u0346\u0345\3\2\2\2\u0346") - buf.write("\u0347\3\2\2\2\u0347\u0348\3\2\2\2\u0348\u0349\7\60\2") - buf.write("\2\u0349\u034b\5\u0083B\2\u034a\u033f\3\2\2\2\u034a\u0343") - buf.write("\3\2\2\2\u034b\u00b0\3\2\2\2\u034c\u034d\5\u00b3Z\2\u034d") - buf.write("\u034e\5\u00a7T\2\u034e\u00b2\3\2\2\2\u034f\u0350\t\f") - buf.write("\2\2\u0350\u00b4\3\2\2\2\u0351\u0352\7v\2\2\u0352\u0353") - buf.write("\7t\2\2\u0353\u0354\7w\2\2\u0354\u035b\7g\2\2\u0355\u0356") - buf.write("\7h\2\2\u0356\u0357\7c\2\2\u0357\u0358\7n\2\2\u0358\u0359") - buf.write("\7u\2\2\u0359\u035b\7g\2\2\u035a\u0351\3\2\2\2\u035a\u0355") - buf.write("\3\2\2\2\u035b\u00b6\3\2\2\2\u035c\u035d\7)\2\2\u035d") - buf.write("\u035e\5\u00b9]\2\u035e\u035f\7)\2\2\u035f\u0365\3\2\2") - buf.write("\2\u0360\u0361\7)\2\2\u0361\u0362\5\u00c1a\2\u0362\u0363") - buf.write("\7)\2\2\u0363\u0365\3\2\2\2\u0364\u035c\3\2\2\2\u0364") - buf.write("\u0360\3\2\2\2\u0365\u00b8\3\2\2\2\u0366\u0367\n\r\2\2") - buf.write("\u0367\u00ba\3\2\2\2\u0368\u036a\7$\2\2\u0369\u036b\5") - buf.write("\u00bd_\2\u036a\u0369\3\2\2\2\u036a\u036b\3\2\2\2\u036b") - buf.write("\u036c\3\2\2\2\u036c\u036d\7$\2\2\u036d\u00bc\3\2\2\2") - buf.write("\u036e\u0370\5\u00bf`\2\u036f\u036e\3\2\2\2\u0370\u0371") - buf.write("\3\2\2\2\u0371\u036f\3\2\2\2\u0371\u0372\3\2\2\2\u0372") - buf.write("\u00be\3\2\2\2\u0373\u0376\n\16\2\2\u0374\u0376\5\u00c1") - buf.write("a\2\u0375\u0373\3\2\2\2\u0375\u0374\3\2\2\2\u0376\u00c0") - buf.write("\3\2\2\2\u0377\u0378\7^\2\2\u0378\u037c\t\17\2\2\u0379") - buf.write("\u037c\5\u00c3b\2\u037a\u037c\5\u00c7d\2\u037b\u0377\3") - buf.write("\2\2\2\u037b\u0379\3\2\2\2\u037b\u037a\3\2\2\2\u037c\u00c2") - buf.write("\3\2\2\2\u037d\u037e\7^\2\2\u037e\u0389\5\u008fH\2\u037f") - buf.write("\u0380\7^\2\2\u0380\u0381\5\u008fH\2\u0381\u0382\5\u008f") - buf.write("H\2\u0382\u0389\3\2\2\2\u0383\u0384\7^\2\2\u0384\u0385") - buf.write("\5\u00c5c\2\u0385\u0386\5\u008fH\2\u0386\u0387\5\u008f") - buf.write("H\2\u0387\u0389\3\2\2\2\u0388\u037d\3\2\2\2\u0388\u037f") - buf.write("\3\2\2\2\u0388\u0383\3\2\2\2\u0389\u00c4\3\2\2\2\u038a") - buf.write("\u038b\t\20\2\2\u038b\u00c6\3\2\2\2\u038c\u038e\7^\2\2") - buf.write("\u038d\u038f\7w\2\2\u038e\u038d\3\2\2\2\u038f\u0390\3") - buf.write("\2\2\2\u0390\u038e\3\2\2\2\u0390\u0391\3\2\2\2\u0391\u0392") - buf.write("\3\2\2\2\u0392\u0393\5\u0085C\2\u0393\u0394\5\u0085C\2") - buf.write("\u0394\u0395\5\u0085C\2\u0395\u0396\5\u0085C\2\u0396\u00c8") - buf.write("\3\2\2\2\u0397\u0398\7p\2\2\u0398\u0399\7w\2\2\u0399\u039a") - buf.write("\7n\2\2\u039a\u039b\7n\2\2\u039b\u00ca\3\2\2\2\u039c\u039d") - buf.write("\7*\2\2\u039d\u00cc\3\2\2\2\u039e\u039f\7+\2\2\u039f\u00ce") - buf.write("\3\2\2\2\u03a0\u03a1\7}\2\2\u03a1\u00d0\3\2\2\2\u03a2") - buf.write("\u03a3\7\177\2\2\u03a3\u00d2\3\2\2\2\u03a4\u03a5\7]\2") - buf.write("\2\u03a5\u00d4\3\2\2\2\u03a6\u03a7\7_\2\2\u03a7\u00d6") - buf.write("\3\2\2\2\u03a8\u03a9\7=\2\2\u03a9\u00d8\3\2\2\2\u03aa") - buf.write("\u03ab\7.\2\2\u03ab\u00da\3\2\2\2\u03ac\u03ad\7\60\2\2") - buf.write("\u03ad\u00dc\3\2\2\2\u03ae\u03af\7?\2\2\u03af\u00de\3") - buf.write("\2\2\2\u03b0\u03b1\7@\2\2\u03b1\u00e0\3\2\2\2\u03b2\u03b3") - buf.write("\7>\2\2\u03b3\u00e2\3\2\2\2\u03b4\u03b5\7#\2\2\u03b5\u00e4") - buf.write("\3\2\2\2\u03b6\u03b7\7\u0080\2\2\u03b7\u00e6\3\2\2\2\u03b8") - buf.write("\u03b9\7A\2\2\u03b9\u00e8\3\2\2\2\u03ba\u03bb\7<\2\2\u03bb") - buf.write("\u00ea\3\2\2\2\u03bc\u03bd\7?\2\2\u03bd\u03be\7?\2\2\u03be") - buf.write("\u00ec\3\2\2\2\u03bf\u03c0\7>\2\2\u03c0\u03c1\7?\2\2\u03c1") - buf.write("\u00ee\3\2\2\2\u03c2\u03c3\7@\2\2\u03c3\u03c4\7?\2\2\u03c4") - buf.write("\u00f0\3\2\2\2\u03c5\u03c6\7#\2\2\u03c6\u03c7\7?\2\2\u03c7") - buf.write("\u00f2\3\2\2\2\u03c8\u03c9\7(\2\2\u03c9\u03ca\7(\2\2\u03ca") - buf.write("\u00f4\3\2\2\2\u03cb\u03cc\7~\2\2\u03cc\u03cd\7~\2\2\u03cd") - buf.write("\u00f6\3\2\2\2\u03ce\u03cf\7-\2\2\u03cf\u03d0\7-\2\2\u03d0") - buf.write("\u00f8\3\2\2\2\u03d1\u03d2\7/\2\2\u03d2\u03d3\7/\2\2\u03d3") - buf.write("\u00fa\3\2\2\2\u03d4\u03d5\7-\2\2\u03d5\u00fc\3\2\2\2") - buf.write("\u03d6\u03d7\7/\2\2\u03d7\u00fe\3\2\2\2\u03d8\u03d9\7") - buf.write(",\2\2\u03d9\u0100\3\2\2\2\u03da\u03db\7\61\2\2\u03db\u0102") - buf.write("\3\2\2\2\u03dc\u03dd\7(\2\2\u03dd\u0104\3\2\2\2\u03de") - buf.write("\u03df\7~\2\2\u03df\u0106\3\2\2\2\u03e0\u03e1\7`\2\2\u03e1") - buf.write("\u0108\3\2\2\2\u03e2\u03e3\7\'\2\2\u03e3\u010a\3\2\2\2") - buf.write("\u03e4\u03e5\7/\2\2\u03e5\u03e6\7@\2\2\u03e6\u010c\3\2") - buf.write("\2\2\u03e7\u03e8\7<\2\2\u03e8\u03e9\7<\2\2\u03e9\u010e") - buf.write("\3\2\2\2\u03ea\u03eb\7-\2\2\u03eb\u03ec\7?\2\2\u03ec\u0110") - buf.write("\3\2\2\2\u03ed\u03ee\7/\2\2\u03ee\u03ef\7?\2\2\u03ef\u0112") - buf.write("\3\2\2\2\u03f0\u03f1\7,\2\2\u03f1\u03f2\7?\2\2\u03f2\u0114") - buf.write("\3\2\2\2\u03f3\u03f4\7\61\2\2\u03f4\u03f5\7?\2\2\u03f5") - buf.write("\u0116\3\2\2\2\u03f6\u03f7\7(\2\2\u03f7\u03f8\7?\2\2\u03f8") - buf.write("\u0118\3\2\2\2\u03f9\u03fa\7~\2\2\u03fa\u03fb\7?\2\2\u03fb") - buf.write("\u011a\3\2\2\2\u03fc\u03fd\7`\2\2\u03fd\u03fe\7?\2\2\u03fe") - buf.write("\u011c\3\2\2\2\u03ff\u0400\7\'\2\2\u0400\u0401\7?\2\2") - buf.write("\u0401\u011e\3\2\2\2\u0402\u0403\7>\2\2\u0403\u0404\7") - buf.write(">\2\2\u0404\u0405\7?\2\2\u0405\u0120\3\2\2\2\u0406\u0407") - buf.write("\7@\2\2\u0407\u0408\7@\2\2\u0408\u0409\7?\2\2\u0409\u0122") - buf.write("\3\2\2\2\u040a\u040b\7@\2\2\u040b\u040c\7@\2\2\u040c\u040d") - buf.write("\7@\2\2\u040d\u040e\7?\2\2\u040e\u0124\3\2\2\2\u040f\u0413") - buf.write("\5\u0127\u0094\2\u0410\u0412\5\u0129\u0095\2\u0411\u0410") - buf.write("\3\2\2\2\u0412\u0415\3\2\2\2\u0413\u0411\3\2\2\2\u0413") - buf.write("\u0414\3\2\2\2\u0414\u0126\3\2\2\2\u0415\u0413\3\2\2\2") - buf.write("\u0416\u0418\t\21\2\2\u0417\u0416\3\2\2\2\u0418\u0128") - buf.write("\3\2\2\2\u0419\u041c\5\u0127\u0094\2\u041a\u041c\t\22") - buf.write("\2\2\u041b\u0419\3\2\2\2\u041b\u041a\3\2\2\2\u041c\u012a") - buf.write("\3\2\2\2\u041d\u041e\7B\2\2\u041e\u012c\3\2\2\2\u041f") - buf.write("\u0420\7\60\2\2\u0420\u0421\7\60\2\2\u0421\u0422\7\60") - buf.write("\2\2\u0422\u012e\3\2\2\2\u0423\u0425\t\23\2\2\u0424\u0423") - buf.write("\3\2\2\2\u0425\u0426\3\2\2\2\u0426\u0424\3\2\2\2\u0426") - buf.write("\u0427\3\2\2\2\u0427\u0428\3\2\2\2\u0428\u0429\b\u0098") - buf.write("\2\2\u0429\u0130\3\2\2\2\u042a\u042b\7\61\2\2\u042b\u042c") - buf.write("\7,\2\2\u042c\u0430\3\2\2\2\u042d\u042f\13\2\2\2\u042e") - buf.write("\u042d\3\2\2\2\u042f\u0432\3\2\2\2\u0430\u0431\3\2\2\2") - buf.write("\u0430\u042e\3\2\2\2\u0431\u0433\3\2\2\2\u0432\u0430\3") - buf.write("\2\2\2\u0433\u0434\7,\2\2\u0434\u0435\7\61\2\2\u0435\u0436") - buf.write("\3\2\2\2\u0436\u0437\b\u0099\2\2\u0437\u0132\3\2\2\2\u0438") - buf.write("\u0439\7\61\2\2\u0439\u043a\7\61\2\2\u043a\u043e\3\2\2") - buf.write("\2\u043b\u043d\n\24\2\2\u043c\u043b\3\2\2\2\u043d\u0440") - buf.write("\3\2\2\2\u043e\u043c\3\2\2\2\u043e\u043f\3\2\2\2\u043f") - buf.write("\u0441\3\2\2\2\u0440\u043e\3\2\2\2\u0441\u0442\b\u009a") - buf.write("\2\2\u0442\u0134\3\2\2\29\2\u028c\u0290\u0294\u0298\u029c") - buf.write("\u02a3\u02a8\u02aa\u02ae\u02b1\u02b5\u02bc\u02c0\u02c5") - buf.write("\u02cd\u02d0\u02d7\u02db\u02df\u02e5\u02e8\u02ef\u02f3") - buf.write("\u02fb\u02fe\u0305\u0309\u030d\u0312\u0315\u0318\u031d") - buf.write("\u0320\u0325\u032a\u0332\u033d\u0341\u0346\u034a\u035a") - buf.write("\u0364\u036a\u0371\u0375\u037b\u0388\u0390\u0413\u0417") - buf.write("\u041b\u0426\u0430\u043e\3\b\2\2") - return buf.getvalue() - + return [ + 4,0,107,1089,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, + 1,0,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,3,1,3,1,3,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,6,1,6,1,6,1,6,1,6,1,6,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,9,1,10, + 1,10,1,10,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,12,1,12,1,12,1,13,1,13,1,13,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,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,19,1,19,1,20, + 1,20,1,20,1,20,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,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24, + 1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 1,25,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,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,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31, + 1,32,1,32,1,32,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,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,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,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,41,1,41,1,41,1,41, + 1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43, + 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,45, + 1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,47,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,48,1,49,1,49,1,49,1,49, + 1,49,1,49,1,50,1,50,1,50,1,50,3,50,651,8,50,1,51,1,51,3,51,655,8, + 51,1,52,1,52,3,52,659,8,52,1,53,1,53,3,53,663,8,53,1,54,1,54,3,54, + 667,8,54,1,55,1,55,1,56,1,56,1,56,3,56,674,8,56,1,56,1,56,1,56,3, + 56,679,8,56,3,56,681,8,56,1,57,1,57,3,57,685,8,57,1,57,3,57,688, + 8,57,1,58,1,58,3,58,692,8,58,1,59,1,59,1,60,4,60,697,8,60,11,60, + 12,60,698,1,61,1,61,3,61,703,8,61,1,62,4,62,706,8,62,11,62,12,62, + 707,1,63,1,63,1,63,1,63,1,64,1,64,3,64,716,8,64,1,64,3,64,719,8, + 64,1,65,1,65,1,66,4,66,724,8,66,11,66,12,66,725,1,67,1,67,3,67,730, + 8,67,1,68,1,68,3,68,734,8,68,1,68,1,68,1,69,1,69,3,69,740,8,69,1, + 69,3,69,743,8,69,1,70,1,70,1,71,4,71,748,8,71,11,71,12,71,749,1, + 72,1,72,3,72,754,8,72,1,73,1,73,1,73,1,73,1,74,1,74,3,74,762,8,74, + 1,74,3,74,765,8,74,1,75,1,75,1,76,4,76,770,8,76,11,76,12,76,771, + 1,77,1,77,3,77,776,8,77,1,78,1,78,3,78,780,8,78,1,79,1,79,1,79,3, + 79,785,8,79,1,79,3,79,788,8,79,1,79,3,79,791,8,79,1,79,1,79,1,79, + 3,79,796,8,79,1,79,3,79,799,8,79,1,79,1,79,1,79,3,79,804,8,79,1, + 79,1,79,1,79,3,79,809,8,79,1,80,1,80,1,80,1,81,1,81,1,82,3,82,817, + 8,82,1,82,1,82,1,83,1,83,1,84,1,84,1,85,1,85,1,85,3,85,828,8,85, + 1,86,1,86,3,86,832,8,86,1,86,1,86,1,86,3,86,837,8,86,1,86,1,86,3, + 86,841,8,86,1,87,1,87,1,87,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1, + 89,1,89,1,89,1,89,3,89,857,8,89,1,90,1,90,1,90,1,90,1,90,1,90,1, + 90,1,90,3,90,867,8,90,1,91,1,91,1,92,1,92,3,92,873,8,92,1,92,1,92, + 1,93,4,93,878,8,93,11,93,12,93,879,1,94,1,94,3,94,884,8,94,1,95, + 1,95,1,95,1,95,3,95,890,8,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96, + 1,96,1,96,1,96,1,96,3,96,903,8,96,1,97,1,97,1,98,1,98,4,98,909,8, + 98,11,98,12,98,910,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99, + 1,99,1,100,1,100,1,101,1,101,1,102,1,102,1,103,1,103,1,104,1,104, + 1,105,1,105,1,106,1,106,1,107,1,107,1,108,1,108,1,109,1,109,1,110, + 1,110,1,111,1,111,1,112,1,112,1,113,1,113,1,114,1,114,1,115,1,115, + 1,116,1,116,1,116,1,117,1,117,1,117,1,118,1,118,1,118,1,119,1,119, + 1,119,1,120,1,120,1,120,1,121,1,121,1,121,1,122,1,122,1,122,1,123, + 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,129,1,129,1,130,1,130,1,131,1,131,1,132,1,132,1,132,1,133, + 1,133,1,133,1,134,1,134,1,134,1,135,1,135,1,135,1,136,1,136,1,136, + 1,137,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,142,1,143,1,143,1,143, + 1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,5,145,1040,8,145, + 10,145,12,145,1043,9,145,1,146,3,146,1046,8,146,1,147,1,147,3,147, + 1050,8,147,1,148,1,148,1,149,1,149,1,149,1,149,1,150,4,150,1059, + 8,150,11,150,12,150,1060,1,150,1,150,1,151,1,151,1,151,1,151,5,151, + 1069,8,151,10,151,12,151,1072,9,151,1,151,1,151,1,151,1,151,1,151, + 1,152,1,152,1,152,1,152,5,152,1083,8,152,10,152,12,152,1086,9,152, + 1,152,1,152,1,1070,0,153,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,0,105, + 0,107,0,109,0,111,0,113,0,115,0,117,0,119,0,121,0,123,0,125,0,127, + 0,129,0,131,0,133,0,135,0,137,0,139,0,141,0,143,0,145,0,147,0,149, + 0,151,0,153,0,155,0,157,52,159,0,161,0,163,0,165,0,167,0,169,0,171, + 0,173,0,175,0,177,0,179,53,181,54,183,0,185,55,187,0,189,0,191,0, + 193,0,195,0,197,0,199,56,201,57,203,58,205,59,207,60,209,61,211, + 62,213,63,215,64,217,65,219,66,221,67,223,68,225,69,227,70,229,71, + 231,72,233,73,235,74,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,0,295,0,297,103,299,104,301,105,303,106, + 305,107,1,0,19,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, + 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,2,0,10,10,13,13,1101,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,157,1,0,0,0,0, + 179,1,0,0,0,0,181,1,0,0,0,0,185,1,0,0,0,0,199,1,0,0,0,0,201,1,0, + 0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211, + 1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0, + 0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1, + 0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,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,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,1,307, + 1,0,0,0,3,316,1,0,0,0,5,323,1,0,0,0,7,331,1,0,0,0,9,337,1,0,0,0, + 11,342,1,0,0,0,13,347,1,0,0,0,15,353,1,0,0,0,17,358,1,0,0,0,19,364, + 1,0,0,0,21,370,1,0,0,0,23,379,1,0,0,0,25,387,1,0,0,0,27,390,1,0, + 0,0,29,397,1,0,0,0,31,402,1,0,0,0,33,407,1,0,0,0,35,415,1,0,0,0, + 37,421,1,0,0,0,39,429,1,0,0,0,41,435,1,0,0,0,43,439,1,0,0,0,45,442, + 1,0,0,0,47,447,1,0,0,0,49,458,1,0,0,0,51,465,1,0,0,0,53,476,1,0, + 0,0,55,480,1,0,0,0,57,490,1,0,0,0,59,495,1,0,0,0,61,502,1,0,0,0, + 63,506,1,0,0,0,65,514,1,0,0,0,67,522,1,0,0,0,69,532,1,0,0,0,71,539, + 1,0,0,0,73,546,1,0,0,0,75,552,1,0,0,0,77,559,1,0,0,0,79,568,1,0, + 0,0,81,574,1,0,0,0,83,581,1,0,0,0,85,594,1,0,0,0,87,599,1,0,0,0, + 89,605,1,0,0,0,91,612,1,0,0,0,93,622,1,0,0,0,95,626,1,0,0,0,97,631, + 1,0,0,0,99,640,1,0,0,0,101,650,1,0,0,0,103,652,1,0,0,0,105,656,1, + 0,0,0,107,660,1,0,0,0,109,664,1,0,0,0,111,668,1,0,0,0,113,680,1, + 0,0,0,115,682,1,0,0,0,117,691,1,0,0,0,119,693,1,0,0,0,121,696,1, + 0,0,0,123,702,1,0,0,0,125,705,1,0,0,0,127,709,1,0,0,0,129,713,1, + 0,0,0,131,720,1,0,0,0,133,723,1,0,0,0,135,729,1,0,0,0,137,731,1, + 0,0,0,139,737,1,0,0,0,141,744,1,0,0,0,143,747,1,0,0,0,145,753,1, + 0,0,0,147,755,1,0,0,0,149,759,1,0,0,0,151,766,1,0,0,0,153,769,1, + 0,0,0,155,775,1,0,0,0,157,779,1,0,0,0,159,808,1,0,0,0,161,810,1, + 0,0,0,163,813,1,0,0,0,165,816,1,0,0,0,167,820,1,0,0,0,169,822,1, + 0,0,0,171,824,1,0,0,0,173,840,1,0,0,0,175,842,1,0,0,0,177,845,1, + 0,0,0,179,856,1,0,0,0,181,866,1,0,0,0,183,868,1,0,0,0,185,870,1, + 0,0,0,187,877,1,0,0,0,189,883,1,0,0,0,191,889,1,0,0,0,193,902,1, + 0,0,0,195,904,1,0,0,0,197,906,1,0,0,0,199,917,1,0,0,0,201,922,1, + 0,0,0,203,924,1,0,0,0,205,926,1,0,0,0,207,928,1,0,0,0,209,930,1, + 0,0,0,211,932,1,0,0,0,213,934,1,0,0,0,215,936,1,0,0,0,217,938,1, + 0,0,0,219,940,1,0,0,0,221,942,1,0,0,0,223,944,1,0,0,0,225,946,1, + 0,0,0,227,948,1,0,0,0,229,950,1,0,0,0,231,952,1,0,0,0,233,954,1, + 0,0,0,235,957,1,0,0,0,237,960,1,0,0,0,239,963,1,0,0,0,241,966,1, + 0,0,0,243,969,1,0,0,0,245,972,1,0,0,0,247,975,1,0,0,0,249,978,1, + 0,0,0,251,980,1,0,0,0,253,982,1,0,0,0,255,984,1,0,0,0,257,986,1, + 0,0,0,259,988,1,0,0,0,261,990,1,0,0,0,263,992,1,0,0,0,265,994,1, + 0,0,0,267,997,1,0,0,0,269,1000,1,0,0,0,271,1003,1,0,0,0,273,1006, + 1,0,0,0,275,1009,1,0,0,0,277,1012,1,0,0,0,279,1015,1,0,0,0,281,1018, + 1,0,0,0,283,1021,1,0,0,0,285,1024,1,0,0,0,287,1028,1,0,0,0,289,1032, + 1,0,0,0,291,1037,1,0,0,0,293,1045,1,0,0,0,295,1049,1,0,0,0,297,1051, + 1,0,0,0,299,1053,1,0,0,0,301,1058,1,0,0,0,303,1064,1,0,0,0,305,1078, + 1,0,0,0,307,308,5,97,0,0,308,309,5,98,0,0,309,310,5,115,0,0,310, + 311,5,116,0,0,311,312,5,114,0,0,312,313,5,97,0,0,313,314,5,99,0, + 0,314,315,5,116,0,0,315,2,1,0,0,0,316,317,5,97,0,0,317,318,5,115, + 0,0,318,319,5,115,0,0,319,320,5,101,0,0,320,321,5,114,0,0,321,322, + 5,116,0,0,322,4,1,0,0,0,323,324,5,98,0,0,324,325,5,111,0,0,325,326, + 5,111,0,0,326,327,5,108,0,0,327,328,5,101,0,0,328,329,5,97,0,0,329, + 330,5,110,0,0,330,6,1,0,0,0,331,332,5,98,0,0,332,333,5,114,0,0,333, + 334,5,101,0,0,334,335,5,97,0,0,335,336,5,107,0,0,336,8,1,0,0,0,337, + 338,5,98,0,0,338,339,5,121,0,0,339,340,5,116,0,0,340,341,5,101,0, + 0,341,10,1,0,0,0,342,343,5,99,0,0,343,344,5,97,0,0,344,345,5,115, + 0,0,345,346,5,101,0,0,346,12,1,0,0,0,347,348,5,99,0,0,348,349,5, + 97,0,0,349,350,5,116,0,0,350,351,5,99,0,0,351,352,5,104,0,0,352, + 14,1,0,0,0,353,354,5,99,0,0,354,355,5,104,0,0,355,356,5,97,0,0,356, + 357,5,114,0,0,357,16,1,0,0,0,358,359,5,99,0,0,359,360,5,108,0,0, + 360,361,5,97,0,0,361,362,5,115,0,0,362,363,5,115,0,0,363,18,1,0, + 0,0,364,365,5,99,0,0,365,366,5,111,0,0,366,367,5,110,0,0,367,368, + 5,115,0,0,368,369,5,116,0,0,369,20,1,0,0,0,370,371,5,99,0,0,371, + 372,5,111,0,0,372,373,5,110,0,0,373,374,5,116,0,0,374,375,5,105, + 0,0,375,376,5,110,0,0,376,377,5,117,0,0,377,378,5,101,0,0,378,22, + 1,0,0,0,379,380,5,100,0,0,380,381,5,101,0,0,381,382,5,102,0,0,382, + 383,5,97,0,0,383,384,5,117,0,0,384,385,5,108,0,0,385,386,5,116,0, + 0,386,24,1,0,0,0,387,388,5,100,0,0,388,389,5,111,0,0,389,26,1,0, + 0,0,390,391,5,100,0,0,391,392,5,111,0,0,392,393,5,117,0,0,393,394, + 5,98,0,0,394,395,5,108,0,0,395,396,5,101,0,0,396,28,1,0,0,0,397, + 398,5,101,0,0,398,399,5,108,0,0,399,400,5,115,0,0,400,401,5,101, + 0,0,401,30,1,0,0,0,402,403,5,101,0,0,403,404,5,110,0,0,404,405,5, + 117,0,0,405,406,5,109,0,0,406,32,1,0,0,0,407,408,5,101,0,0,408,409, + 5,120,0,0,409,410,5,116,0,0,410,411,5,101,0,0,411,412,5,110,0,0, + 412,413,5,100,0,0,413,414,5,115,0,0,414,34,1,0,0,0,415,416,5,102, + 0,0,416,417,5,105,0,0,417,418,5,110,0,0,418,419,5,97,0,0,419,420, + 5,108,0,0,420,36,1,0,0,0,421,422,5,102,0,0,422,423,5,105,0,0,423, + 424,5,110,0,0,424,425,5,97,0,0,425,426,5,108,0,0,426,427,5,108,0, + 0,427,428,5,121,0,0,428,38,1,0,0,0,429,430,5,102,0,0,430,431,5,108, + 0,0,431,432,5,111,0,0,432,433,5,97,0,0,433,434,5,116,0,0,434,40, + 1,0,0,0,435,436,5,102,0,0,436,437,5,111,0,0,437,438,5,114,0,0,438, + 42,1,0,0,0,439,440,5,105,0,0,440,441,5,102,0,0,441,44,1,0,0,0,442, + 443,5,103,0,0,443,444,5,111,0,0,444,445,5,116,0,0,445,446,5,111, + 0,0,446,46,1,0,0,0,447,448,5,105,0,0,448,449,5,109,0,0,449,450,5, + 112,0,0,450,451,5,108,0,0,451,452,5,101,0,0,452,453,5,109,0,0,453, + 454,5,101,0,0,454,455,5,110,0,0,455,456,5,116,0,0,456,457,5,115, + 0,0,457,48,1,0,0,0,458,459,5,105,0,0,459,460,5,109,0,0,460,461,5, + 112,0,0,461,462,5,111,0,0,462,463,5,114,0,0,463,464,5,116,0,0,464, + 50,1,0,0,0,465,466,5,105,0,0,466,467,5,110,0,0,467,468,5,115,0,0, + 468,469,5,116,0,0,469,470,5,97,0,0,470,471,5,110,0,0,471,472,5,99, + 0,0,472,473,5,101,0,0,473,474,5,111,0,0,474,475,5,102,0,0,475,52, + 1,0,0,0,476,477,5,105,0,0,477,478,5,110,0,0,478,479,5,116,0,0,479, + 54,1,0,0,0,480,481,5,105,0,0,481,482,5,110,0,0,482,483,5,116,0,0, + 483,484,5,101,0,0,484,485,5,114,0,0,485,486,5,102,0,0,486,487,5, + 97,0,0,487,488,5,99,0,0,488,489,5,101,0,0,489,56,1,0,0,0,490,491, + 5,108,0,0,491,492,5,111,0,0,492,493,5,110,0,0,493,494,5,103,0,0, + 494,58,1,0,0,0,495,496,5,110,0,0,496,497,5,97,0,0,497,498,5,116, + 0,0,498,499,5,105,0,0,499,500,5,118,0,0,500,501,5,101,0,0,501,60, + 1,0,0,0,502,503,5,110,0,0,503,504,5,101,0,0,504,505,5,119,0,0,505, + 62,1,0,0,0,506,507,5,112,0,0,507,508,5,97,0,0,508,509,5,99,0,0,509, + 510,5,107,0,0,510,511,5,97,0,0,511,512,5,103,0,0,512,513,5,101,0, + 0,513,64,1,0,0,0,514,515,5,112,0,0,515,516,5,114,0,0,516,517,5,105, + 0,0,517,518,5,118,0,0,518,519,5,97,0,0,519,520,5,116,0,0,520,521, + 5,101,0,0,521,66,1,0,0,0,522,523,5,112,0,0,523,524,5,114,0,0,524, + 525,5,111,0,0,525,526,5,116,0,0,526,527,5,101,0,0,527,528,5,99,0, + 0,528,529,5,116,0,0,529,530,5,101,0,0,530,531,5,100,0,0,531,68,1, + 0,0,0,532,533,5,112,0,0,533,534,5,117,0,0,534,535,5,98,0,0,535,536, + 5,108,0,0,536,537,5,105,0,0,537,538,5,99,0,0,538,70,1,0,0,0,539, + 540,5,114,0,0,540,541,5,101,0,0,541,542,5,116,0,0,542,543,5,117, + 0,0,543,544,5,114,0,0,544,545,5,110,0,0,545,72,1,0,0,0,546,547,5, + 115,0,0,547,548,5,104,0,0,548,549,5,111,0,0,549,550,5,114,0,0,550, + 551,5,116,0,0,551,74,1,0,0,0,552,553,5,115,0,0,553,554,5,116,0,0, + 554,555,5,97,0,0,555,556,5,116,0,0,556,557,5,105,0,0,557,558,5,99, + 0,0,558,76,1,0,0,0,559,560,5,115,0,0,560,561,5,116,0,0,561,562,5, + 114,0,0,562,563,5,105,0,0,563,564,5,99,0,0,564,565,5,116,0,0,565, + 566,5,102,0,0,566,567,5,112,0,0,567,78,1,0,0,0,568,569,5,115,0,0, + 569,570,5,117,0,0,570,571,5,112,0,0,571,572,5,101,0,0,572,573,5, + 114,0,0,573,80,1,0,0,0,574,575,5,115,0,0,575,576,5,119,0,0,576,577, + 5,105,0,0,577,578,5,116,0,0,578,579,5,99,0,0,579,580,5,104,0,0,580, + 82,1,0,0,0,581,582,5,115,0,0,582,583,5,121,0,0,583,584,5,110,0,0, + 584,585,5,99,0,0,585,586,5,104,0,0,586,587,5,114,0,0,587,588,5,111, + 0,0,588,589,5,110,0,0,589,590,5,105,0,0,590,591,5,122,0,0,591,592, + 5,101,0,0,592,593,5,100,0,0,593,84,1,0,0,0,594,595,5,116,0,0,595, + 596,5,104,0,0,596,597,5,105,0,0,597,598,5,115,0,0,598,86,1,0,0,0, + 599,600,5,116,0,0,600,601,5,104,0,0,601,602,5,114,0,0,602,603,5, + 111,0,0,603,604,5,119,0,0,604,88,1,0,0,0,605,606,5,116,0,0,606,607, + 5,104,0,0,607,608,5,114,0,0,608,609,5,111,0,0,609,610,5,119,0,0, + 610,611,5,115,0,0,611,90,1,0,0,0,612,613,5,116,0,0,613,614,5,114, + 0,0,614,615,5,97,0,0,615,616,5,110,0,0,616,617,5,115,0,0,617,618, + 5,105,0,0,618,619,5,101,0,0,619,620,5,110,0,0,620,621,5,116,0,0, + 621,92,1,0,0,0,622,623,5,116,0,0,623,624,5,114,0,0,624,625,5,121, + 0,0,625,94,1,0,0,0,626,627,5,118,0,0,627,628,5,111,0,0,628,629,5, + 105,0,0,629,630,5,100,0,0,630,96,1,0,0,0,631,632,5,118,0,0,632,633, + 5,111,0,0,633,634,5,108,0,0,634,635,5,97,0,0,635,636,5,116,0,0,636, + 637,5,105,0,0,637,638,5,108,0,0,638,639,5,101,0,0,639,98,1,0,0,0, + 640,641,5,119,0,0,641,642,5,104,0,0,642,643,5,105,0,0,643,644,5, + 108,0,0,644,645,5,101,0,0,645,100,1,0,0,0,646,651,3,103,51,0,647, + 651,3,105,52,0,648,651,3,107,53,0,649,651,3,109,54,0,650,646,1,0, + 0,0,650,647,1,0,0,0,650,648,1,0,0,0,650,649,1,0,0,0,651,102,1,0, + 0,0,652,654,3,113,56,0,653,655,3,111,55,0,654,653,1,0,0,0,654,655, + 1,0,0,0,655,104,1,0,0,0,656,658,3,127,63,0,657,659,3,111,55,0,658, + 657,1,0,0,0,658,659,1,0,0,0,659,106,1,0,0,0,660,662,3,137,68,0,661, + 663,3,111,55,0,662,661,1,0,0,0,662,663,1,0,0,0,663,108,1,0,0,0,664, + 666,3,147,73,0,665,667,3,111,55,0,666,665,1,0,0,0,666,667,1,0,0, + 0,667,110,1,0,0,0,668,669,7,0,0,0,669,112,1,0,0,0,670,681,5,48,0, + 0,671,678,3,119,59,0,672,674,3,115,57,0,673,672,1,0,0,0,673,674, + 1,0,0,0,674,679,1,0,0,0,675,676,3,125,62,0,676,677,3,115,57,0,677, + 679,1,0,0,0,678,673,1,0,0,0,678,675,1,0,0,0,679,681,1,0,0,0,680, + 670,1,0,0,0,680,671,1,0,0,0,681,114,1,0,0,0,682,687,3,117,58,0,683, + 685,3,121,60,0,684,683,1,0,0,0,684,685,1,0,0,0,685,686,1,0,0,0,686, + 688,3,117,58,0,687,684,1,0,0,0,687,688,1,0,0,0,688,116,1,0,0,0,689, + 692,5,48,0,0,690,692,3,119,59,0,691,689,1,0,0,0,691,690,1,0,0,0, + 692,118,1,0,0,0,693,694,7,1,0,0,694,120,1,0,0,0,695,697,3,123,61, + 0,696,695,1,0,0,0,697,698,1,0,0,0,698,696,1,0,0,0,698,699,1,0,0, + 0,699,122,1,0,0,0,700,703,3,117,58,0,701,703,5,95,0,0,702,700,1, + 0,0,0,702,701,1,0,0,0,703,124,1,0,0,0,704,706,5,95,0,0,705,704,1, + 0,0,0,706,707,1,0,0,0,707,705,1,0,0,0,707,708,1,0,0,0,708,126,1, + 0,0,0,709,710,5,48,0,0,710,711,7,2,0,0,711,712,3,129,64,0,712,128, + 1,0,0,0,713,718,3,131,65,0,714,716,3,133,66,0,715,714,1,0,0,0,715, + 716,1,0,0,0,716,717,1,0,0,0,717,719,3,131,65,0,718,715,1,0,0,0,718, + 719,1,0,0,0,719,130,1,0,0,0,720,721,7,3,0,0,721,132,1,0,0,0,722, + 724,3,135,67,0,723,722,1,0,0,0,724,725,1,0,0,0,725,723,1,0,0,0,725, + 726,1,0,0,0,726,134,1,0,0,0,727,730,3,131,65,0,728,730,5,95,0,0, + 729,727,1,0,0,0,729,728,1,0,0,0,730,136,1,0,0,0,731,733,5,48,0,0, + 732,734,3,125,62,0,733,732,1,0,0,0,733,734,1,0,0,0,734,735,1,0,0, + 0,735,736,3,139,69,0,736,138,1,0,0,0,737,742,3,141,70,0,738,740, + 3,143,71,0,739,738,1,0,0,0,739,740,1,0,0,0,740,741,1,0,0,0,741,743, + 3,141,70,0,742,739,1,0,0,0,742,743,1,0,0,0,743,140,1,0,0,0,744,745, + 7,4,0,0,745,142,1,0,0,0,746,748,3,145,72,0,747,746,1,0,0,0,748,749, + 1,0,0,0,749,747,1,0,0,0,749,750,1,0,0,0,750,144,1,0,0,0,751,754, + 3,141,70,0,752,754,5,95,0,0,753,751,1,0,0,0,753,752,1,0,0,0,754, + 146,1,0,0,0,755,756,5,48,0,0,756,757,7,5,0,0,757,758,3,149,74,0, + 758,148,1,0,0,0,759,764,3,151,75,0,760,762,3,153,76,0,761,760,1, + 0,0,0,761,762,1,0,0,0,762,763,1,0,0,0,763,765,3,151,75,0,764,761, + 1,0,0,0,764,765,1,0,0,0,765,150,1,0,0,0,766,767,7,6,0,0,767,152, + 1,0,0,0,768,770,3,155,77,0,769,768,1,0,0,0,770,771,1,0,0,0,771,769, + 1,0,0,0,771,772,1,0,0,0,772,154,1,0,0,0,773,776,3,151,75,0,774,776, + 5,95,0,0,775,773,1,0,0,0,775,774,1,0,0,0,776,156,1,0,0,0,777,780, + 3,159,79,0,778,780,3,171,85,0,779,777,1,0,0,0,779,778,1,0,0,0,780, + 158,1,0,0,0,781,782,3,115,57,0,782,784,5,46,0,0,783,785,3,115,57, + 0,784,783,1,0,0,0,784,785,1,0,0,0,785,787,1,0,0,0,786,788,3,161, + 80,0,787,786,1,0,0,0,787,788,1,0,0,0,788,790,1,0,0,0,789,791,3,169, + 84,0,790,789,1,0,0,0,790,791,1,0,0,0,791,809,1,0,0,0,792,793,5,46, + 0,0,793,795,3,115,57,0,794,796,3,161,80,0,795,794,1,0,0,0,795,796, + 1,0,0,0,796,798,1,0,0,0,797,799,3,169,84,0,798,797,1,0,0,0,798,799, + 1,0,0,0,799,809,1,0,0,0,800,801,3,115,57,0,801,803,3,161,80,0,802, + 804,3,169,84,0,803,802,1,0,0,0,803,804,1,0,0,0,804,809,1,0,0,0,805, + 806,3,115,57,0,806,807,3,169,84,0,807,809,1,0,0,0,808,781,1,0,0, + 0,808,792,1,0,0,0,808,800,1,0,0,0,808,805,1,0,0,0,809,160,1,0,0, + 0,810,811,3,163,81,0,811,812,3,165,82,0,812,162,1,0,0,0,813,814, + 7,7,0,0,814,164,1,0,0,0,815,817,3,167,83,0,816,815,1,0,0,0,816,817, + 1,0,0,0,817,818,1,0,0,0,818,819,3,115,57,0,819,166,1,0,0,0,820,821, + 7,8,0,0,821,168,1,0,0,0,822,823,7,9,0,0,823,170,1,0,0,0,824,825, + 3,173,86,0,825,827,3,175,87,0,826,828,3,169,84,0,827,826,1,0,0,0, + 827,828,1,0,0,0,828,172,1,0,0,0,829,831,3,127,63,0,830,832,5,46, + 0,0,831,830,1,0,0,0,831,832,1,0,0,0,832,841,1,0,0,0,833,834,5,48, + 0,0,834,836,7,2,0,0,835,837,3,129,64,0,836,835,1,0,0,0,836,837,1, + 0,0,0,837,838,1,0,0,0,838,839,5,46,0,0,839,841,3,129,64,0,840,829, + 1,0,0,0,840,833,1,0,0,0,841,174,1,0,0,0,842,843,3,177,88,0,843,844, + 3,165,82,0,844,176,1,0,0,0,845,846,7,10,0,0,846,178,1,0,0,0,847, + 848,5,116,0,0,848,849,5,114,0,0,849,850,5,117,0,0,850,857,5,101, + 0,0,851,852,5,102,0,0,852,853,5,97,0,0,853,854,5,108,0,0,854,855, + 5,115,0,0,855,857,5,101,0,0,856,847,1,0,0,0,856,851,1,0,0,0,857, + 180,1,0,0,0,858,859,5,39,0,0,859,860,3,183,91,0,860,861,5,39,0,0, + 861,867,1,0,0,0,862,863,5,39,0,0,863,864,3,191,95,0,864,865,5,39, + 0,0,865,867,1,0,0,0,866,858,1,0,0,0,866,862,1,0,0,0,867,182,1,0, + 0,0,868,869,8,11,0,0,869,184,1,0,0,0,870,872,5,34,0,0,871,873,3, + 187,93,0,872,871,1,0,0,0,872,873,1,0,0,0,873,874,1,0,0,0,874,875, + 5,34,0,0,875,186,1,0,0,0,876,878,3,189,94,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,188,1,0,0,0,881, + 884,8,12,0,0,882,884,3,191,95,0,883,881,1,0,0,0,883,882,1,0,0,0, + 884,190,1,0,0,0,885,886,5,92,0,0,886,890,7,13,0,0,887,890,3,193, + 96,0,888,890,3,197,98,0,889,885,1,0,0,0,889,887,1,0,0,0,889,888, + 1,0,0,0,890,192,1,0,0,0,891,892,5,92,0,0,892,903,3,141,70,0,893, + 894,5,92,0,0,894,895,3,141,70,0,895,896,3,141,70,0,896,903,1,0,0, + 0,897,898,5,92,0,0,898,899,3,195,97,0,899,900,3,141,70,0,900,901, + 3,141,70,0,901,903,1,0,0,0,902,891,1,0,0,0,902,893,1,0,0,0,902,897, + 1,0,0,0,903,194,1,0,0,0,904,905,7,14,0,0,905,196,1,0,0,0,906,908, + 5,92,0,0,907,909,5,117,0,0,908,907,1,0,0,0,909,910,1,0,0,0,910,908, + 1,0,0,0,910,911,1,0,0,0,911,912,1,0,0,0,912,913,3,131,65,0,913,914, + 3,131,65,0,914,915,3,131,65,0,915,916,3,131,65,0,916,198,1,0,0,0, + 917,918,5,110,0,0,918,919,5,117,0,0,919,920,5,108,0,0,920,921,5, + 108,0,0,921,200,1,0,0,0,922,923,5,40,0,0,923,202,1,0,0,0,924,925, + 5,41,0,0,925,204,1,0,0,0,926,927,5,123,0,0,927,206,1,0,0,0,928,929, + 5,125,0,0,929,208,1,0,0,0,930,931,5,91,0,0,931,210,1,0,0,0,932,933, + 5,93,0,0,933,212,1,0,0,0,934,935,5,59,0,0,935,214,1,0,0,0,936,937, + 5,44,0,0,937,216,1,0,0,0,938,939,5,46,0,0,939,218,1,0,0,0,940,941, + 5,61,0,0,941,220,1,0,0,0,942,943,5,62,0,0,943,222,1,0,0,0,944,945, + 5,60,0,0,945,224,1,0,0,0,946,947,5,33,0,0,947,226,1,0,0,0,948,949, + 5,126,0,0,949,228,1,0,0,0,950,951,5,63,0,0,951,230,1,0,0,0,952,953, + 5,58,0,0,953,232,1,0,0,0,954,955,5,61,0,0,955,956,5,61,0,0,956,234, + 1,0,0,0,957,958,5,60,0,0,958,959,5,61,0,0,959,236,1,0,0,0,960,961, + 5,62,0,0,961,962,5,61,0,0,962,238,1,0,0,0,963,964,5,33,0,0,964,965, + 5,61,0,0,965,240,1,0,0,0,966,967,5,38,0,0,967,968,5,38,0,0,968,242, + 1,0,0,0,969,970,5,124,0,0,970,971,5,124,0,0,971,244,1,0,0,0,972, + 973,5,43,0,0,973,974,5,43,0,0,974,246,1,0,0,0,975,976,5,45,0,0,976, + 977,5,45,0,0,977,248,1,0,0,0,978,979,5,43,0,0,979,250,1,0,0,0,980, + 981,5,45,0,0,981,252,1,0,0,0,982,983,5,42,0,0,983,254,1,0,0,0,984, + 985,5,47,0,0,985,256,1,0,0,0,986,987,5,38,0,0,987,258,1,0,0,0,988, + 989,5,124,0,0,989,260,1,0,0,0,990,991,5,94,0,0,991,262,1,0,0,0,992, + 993,5,37,0,0,993,264,1,0,0,0,994,995,5,45,0,0,995,996,5,62,0,0,996, + 266,1,0,0,0,997,998,5,58,0,0,998,999,5,58,0,0,999,268,1,0,0,0,1000, + 1001,5,43,0,0,1001,1002,5,61,0,0,1002,270,1,0,0,0,1003,1004,5,45, + 0,0,1004,1005,5,61,0,0,1005,272,1,0,0,0,1006,1007,5,42,0,0,1007, + 1008,5,61,0,0,1008,274,1,0,0,0,1009,1010,5,47,0,0,1010,1011,5,61, + 0,0,1011,276,1,0,0,0,1012,1013,5,38,0,0,1013,1014,5,61,0,0,1014, + 278,1,0,0,0,1015,1016,5,124,0,0,1016,1017,5,61,0,0,1017,280,1,0, + 0,0,1018,1019,5,94,0,0,1019,1020,5,61,0,0,1020,282,1,0,0,0,1021, + 1022,5,37,0,0,1022,1023,5,61,0,0,1023,284,1,0,0,0,1024,1025,5,60, + 0,0,1025,1026,5,60,0,0,1026,1027,5,61,0,0,1027,286,1,0,0,0,1028, + 1029,5,62,0,0,1029,1030,5,62,0,0,1030,1031,5,61,0,0,1031,288,1,0, + 0,0,1032,1033,5,62,0,0,1033,1034,5,62,0,0,1034,1035,5,62,0,0,1035, + 1036,5,61,0,0,1036,290,1,0,0,0,1037,1041,3,293,146,0,1038,1040,3, + 295,147,0,1039,1038,1,0,0,0,1040,1043,1,0,0,0,1041,1039,1,0,0,0, + 1041,1042,1,0,0,0,1042,292,1,0,0,0,1043,1041,1,0,0,0,1044,1046,7, + 15,0,0,1045,1044,1,0,0,0,1046,294,1,0,0,0,1047,1050,3,293,146,0, + 1048,1050,7,16,0,0,1049,1047,1,0,0,0,1049,1048,1,0,0,0,1050,296, + 1,0,0,0,1051,1052,5,64,0,0,1052,298,1,0,0,0,1053,1054,5,46,0,0,1054, + 1055,5,46,0,0,1055,1056,5,46,0,0,1056,300,1,0,0,0,1057,1059,7,17, + 0,0,1058,1057,1,0,0,0,1059,1060,1,0,0,0,1060,1058,1,0,0,0,1060,1061, + 1,0,0,0,1061,1062,1,0,0,0,1062,1063,6,150,0,0,1063,302,1,0,0,0,1064, + 1065,5,47,0,0,1065,1066,5,42,0,0,1066,1070,1,0,0,0,1067,1069,9,0, + 0,0,1068,1067,1,0,0,0,1069,1072,1,0,0,0,1070,1071,1,0,0,0,1070,1068, + 1,0,0,0,1071,1073,1,0,0,0,1072,1070,1,0,0,0,1073,1074,5,42,0,0,1074, + 1075,5,47,0,0,1075,1076,1,0,0,0,1076,1077,6,151,0,0,1077,304,1,0, + 0,0,1078,1079,5,47,0,0,1079,1080,5,47,0,0,1080,1084,1,0,0,0,1081, + 1083,8,18,0,0,1082,1081,1,0,0,0,1083,1086,1,0,0,0,1084,1082,1,0, + 0,0,1084,1085,1,0,0,0,1085,1087,1,0,0,0,1086,1084,1,0,0,0,1087,1088, + 6,152,0,0,1088,306,1,0,0,0,55,0,650,654,658,662,666,673,678,680, + 684,687,691,698,702,707,715,718,725,729,733,739,742,749,753,761, + 764,771,775,779,784,787,790,795,798,803,808,816,827,831,836,840, + 856,866,872,879,883,889,902,910,1041,1045,1049,1060,1070,1084,1, + 6,0,0 + ] class Java8Lexer(Lexer): @@ -838,7 +704,7 @@ class Java8Lexer(Lexer): def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.tokens b/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.tokens new file mode 100644 index 00000000..52ef1eee --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/Java8Lexer.tokens @@ -0,0 +1,205 @@ +ABSTRACT=1 +ASSERT=2 +BOOLEAN=3 +BREAK=4 +BYTE=5 +CASE=6 +CATCH=7 +CHAR=8 +CLASS=9 +CONST=10 +CONTINUE=11 +DEFAULT=12 +DO=13 +DOUBLE=14 +ELSE=15 +ENUM=16 +EXTENDS=17 +FINAL=18 +FINALLY=19 +FLOAT=20 +FOR=21 +IF=22 +GOTO=23 +IMPLEMENTS=24 +IMPORT=25 +INSTANCEOF=26 +INT=27 +INTERFACE=28 +LONG=29 +NATIVE=30 +NEW=31 +PACKAGE=32 +PRIVATE=33 +PROTECTED=34 +PUBLIC=35 +RETURN=36 +SHORT=37 +STATIC=38 +STRICTFP=39 +SUPER=40 +SWITCH=41 +SYNCHRONIZED=42 +THIS=43 +THROW=44 +THROWS=45 +TRANSIENT=46 +TRY=47 +VOID=48 +VOLATILE=49 +WHILE=50 +IntegerLiteral=51 +FloatingPointLiteral=52 +BooleanLiteral=53 +CharacterLiteral=54 +StringLiteral=55 +NullLiteral=56 +LPAREN=57 +RPAREN=58 +LBRACE=59 +RBRACE=60 +LBRACK=61 +RBRACK=62 +SEMI=63 +COMMA=64 +DOT=65 +ASSIGN=66 +GT=67 +LT=68 +BANG=69 +TILDE=70 +QUESTION=71 +COLON=72 +EQUAL=73 +LE=74 +GE=75 +NOTEQUAL=76 +AND=77 +OR=78 +INC=79 +DEC=80 +ADD=81 +SUB=82 +MUL=83 +DIV=84 +BITAND=85 +BITOR=86 +CARET=87 +MOD=88 +ARROW=89 +COLONCOLON=90 +ADD_ASSIGN=91 +SUB_ASSIGN=92 +MUL_ASSIGN=93 +DIV_ASSIGN=94 +AND_ASSIGN=95 +OR_ASSIGN=96 +XOR_ASSIGN=97 +MOD_ASSIGN=98 +LSHIFT_ASSIGN=99 +RSHIFT_ASSIGN=100 +URSHIFT_ASSIGN=101 +Identifier=102 +AT=103 +ELLIPSIS=104 +WS=105 +COMMENT=106 +LINE_COMMENT=107 +'abstract'=1 +'assert'=2 +'boolean'=3 +'break'=4 +'byte'=5 +'case'=6 +'catch'=7 +'char'=8 +'class'=9 +'const'=10 +'continue'=11 +'default'=12 +'do'=13 +'double'=14 +'else'=15 +'enum'=16 +'extends'=17 +'final'=18 +'finally'=19 +'float'=20 +'for'=21 +'if'=22 +'goto'=23 +'implements'=24 +'import'=25 +'instanceof'=26 +'int'=27 +'interface'=28 +'long'=29 +'native'=30 +'new'=31 +'package'=32 +'private'=33 +'protected'=34 +'public'=35 +'return'=36 +'short'=37 +'static'=38 +'strictfp'=39 +'super'=40 +'switch'=41 +'synchronized'=42 +'this'=43 +'throw'=44 +'throws'=45 +'transient'=46 +'try'=47 +'void'=48 +'volatile'=49 +'while'=50 +'null'=56 +'('=57 +')'=58 +'{'=59 +'}'=60 +'['=61 +']'=62 +';'=63 +','=64 +'.'=65 +'='=66 +'>'=67 +'<'=68 +'!'=69 +'~'=70 +'?'=71 +':'=72 +'=='=73 +'<='=74 +'>='=75 +'!='=76 +'&&'=77 +'||'=78 +'++'=79 +'--'=80 +'+'=81 +'-'=82 +'*'=83 +'/'=84 +'&'=85 +'|'=86 +'^'=87 +'%'=88 +'->'=89 +'::'=90 +'+='=91 +'-='=92 +'*='=93 +'/='=94 +'&='=95 +'|='=96 +'^='=97 +'%='=98 +'<<='=99 +'>>='=100 +'>>>='=101 +'@'=103 +'...'=104 diff --git a/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.interp b/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.interp new file mode 100644 index 00000000..7bb5ff84 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.interp @@ -0,0 +1,461 @@ +token literal names: +null +'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 +null +null +null +null +'null' +'(' +')' +'{' +'}' +'[' +']' +';' +',' +'.' +'=' +'>' +'<' +'!' +'~' +'?' +':' +'==' +'<=' +'>=' +'!=' +'&&' +'||' +'++' +'--' +'+' +'-' +'*' +'/' +'&' +'|' +'^' +'%' +'->' +'::' +'+=' +'-=' +'*=' +'/=' +'&=' +'|=' +'^=' +'%=' +'<<=' +'>>=' +'>>>=' +null +'@' +'...' +null +null +null + +token symbolic names: +null +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 +IntegerLiteral +FloatingPointLiteral +BooleanLiteral +CharacterLiteral +StringLiteral +NullLiteral +LPAREN +RPAREN +LBRACE +RBRACE +LBRACK +RBRACK +SEMI +COMMA +DOT +ASSIGN +GT +LT +BANG +TILDE +QUESTION +COLON +EQUAL +LE +GE +NOTEQUAL +AND +OR +INC +DEC +ADD +SUB +MUL +DIV +BITAND +BITOR +CARET +MOD +ARROW +COLONCOLON +ADD_ASSIGN +SUB_ASSIGN +MUL_ASSIGN +DIV_ASSIGN +AND_ASSIGN +OR_ASSIGN +XOR_ASSIGN +MOD_ASSIGN +LSHIFT_ASSIGN +RSHIFT_ASSIGN +URSHIFT_ASSIGN +Identifier +AT +ELLIPSIS +WS +COMMENT +LINE_COMMENT + +rule names: +literal +primitiveType +numericType +integralType +floatingPointType +referenceType +classOrInterfaceType +classType +classType_lf_classOrInterfaceType +classType_lfno_classOrInterfaceType +interfaceType +interfaceType_lf_classOrInterfaceType +interfaceType_lfno_classOrInterfaceType +typeVariable +arrayType +dims +typeParameter +typeParameterModifier +typeBound +additionalBound +typeArguments +typeArgumentList +typeArgument +wildcard +wildcardBounds +packageName +typeName +packageOrTypeName +expressionName +methodName +ambiguousName +compilationUnit +packageDeclaration +packageModifier +importDeclaration +singleTypeImportDeclaration +typeImportOnDemandDeclaration +singleStaticImportDeclaration +staticImportOnDemandDeclaration +typeDeclaration +classDeclaration +normalClassDeclaration +classModifier +typeParameters +typeParameterList +superclass +superinterfaces +interfaceTypeList +classBody +classBodyDeclaration +classMemberDeclaration +fieldDeclaration +fieldModifier +variableDeclaratorList +variableDeclarator +variableDeclaratorId +variableInitializer +unannType +unannPrimitiveType +unannReferenceType +unannClassOrInterfaceType +unannClassType +unannClassType_lf_unannClassOrInterfaceType +unannClassType_lfno_unannClassOrInterfaceType +unannInterfaceType +unannInterfaceType_lf_unannClassOrInterfaceType +unannInterfaceType_lfno_unannClassOrInterfaceType +unannTypeVariable +unannArrayType +methodDeclaration +methodModifier +methodHeader +result +methodDeclarator +formalParameterList +formalParameters +formalParameter +variableModifier +lastFormalParameter +receiverParameter +throws_ +exceptionTypeList +exceptionType +methodBody +instanceInitializer +staticInitializer +constructorDeclaration +constructorModifier +constructorDeclarator +simpleTypeName +constructorBody +explicitConstructorInvocation +enumDeclaration +enumBody +enumConstantList +enumConstant +enumConstantModifier +enumBodyDeclarations +interfaceDeclaration +normalInterfaceDeclaration +interfaceModifier +extendsInterfaces +interfaceBody +interfaceMemberDeclaration +constantDeclaration +constantModifier +interfaceMethodDeclaration +interfaceMethodModifier +annotationTypeDeclaration +annotationTypeBody +annotationTypeMemberDeclaration +annotationTypeElementDeclaration +annotationTypeElementModifier +defaultValue +annotation +normalAnnotation +elementValuePairList +elementValuePair +elementValue +elementValueArrayInitializer +elementValueList +markerAnnotation +singleElementAnnotation +arrayInitializer +variableInitializerList +block +blockStatements +blockStatement +localVariableDeclarationStatement +localVariableDeclaration +statement +statementNoShortIf +statementWithoutTrailingSubstatement +emptyStatement +labeledStatement +labeledStatementNoShortIf +expressionStatement +statementExpression +ifThenStatement +ifThenElseStatement +ifThenElseStatementNoShortIf +assertStatement +switchStatement +switchBlock +switchBlockStatementGroup +switchLabels +switchLabel +enumConstantName +whileStatement +whileStatementNoShortIf +doStatement +forStatement +forStatementNoShortIf +basicForStatement +basicForStatementNoShortIf +forInit +forUpdate +statementExpressionList +enhancedForStatement +enhancedForStatementNoShortIf +breakStatement +continueStatement +returnStatement +throwStatement +synchronizedStatement +tryStatement +catches +catchClause +catchFormalParameter +catchType +finally_ +tryWithResourcesStatement +resourceSpecification +resourceList +resource +primary +primaryNoNewArray +primaryNoNewArray_lf_arrayAccess +primaryNoNewArray_lfno_arrayAccess +primaryNoNewArray_lf_primary +primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary +primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary +primaryNoNewArray_lfno_primary +primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary +primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary +classInstanceCreationExpression +classInstanceCreationExpression_lf_primary +classInstanceCreationExpression_lfno_primary +typeArgumentsOrDiamond +fieldAccess +fieldAccess_lf_primary +fieldAccess_lfno_primary +arrayAccess +arrayAccess_lf_primary +arrayAccess_lfno_primary +methodInvocation +methodInvocation_lf_primary +methodInvocation_lfno_primary +argumentList +methodReference +methodReference_lf_primary +methodReference_lfno_primary +arrayCreationExpression +dimExprs +dimExpr +constantExpression +expression +lambdaExpression +lambdaParameters +inferredFormalParameterList +lambdaBody +assignmentExpression +assignment +leftHandSide +assignmentOperator +conditionalExpression +conditionalOrExpression +conditionalAndExpression +inclusiveOrExpression +exclusiveOrExpression +andExpression +equalityExpression +relationalExpression +shiftExpression +additiveExpression +multiplicativeExpression +unaryExpression +preIncrementExpression +preDecrementExpression +unaryExpressionNotPlusMinus +postfixExpression +postIncrementExpression +postIncrementExpression_lf_postfixExpression +postDecrementExpression +postDecrementExpression_lf_postfixExpression +castExpression + + +atn: +[4, 1, 107, 2844, 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, 1, 0, 1, 0, 1, 1, 5, 1, 476, 8, 1, 10, 1, 12, 1, 479, 9, 1, 1, 1, 1, 1, 5, 1, 483, 8, 1, 10, 1, 12, 1, 486, 9, 1, 1, 1, 3, 1, 489, 8, 1, 1, 2, 1, 2, 3, 2, 493, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 502, 8, 5, 1, 6, 1, 6, 3, 6, 506, 8, 6, 1, 6, 1, 6, 5, 6, 510, 8, 6, 10, 6, 12, 6, 513, 9, 6, 1, 7, 5, 7, 516, 8, 7, 10, 7, 12, 7, 519, 9, 7, 1, 7, 1, 7, 3, 7, 523, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 528, 8, 7, 10, 7, 12, 7, 531, 9, 7, 1, 7, 1, 7, 3, 7, 535, 8, 7, 3, 7, 537, 8, 7, 1, 8, 1, 8, 5, 8, 541, 8, 8, 10, 8, 12, 8, 544, 9, 8, 1, 8, 1, 8, 3, 8, 548, 8, 8, 1, 9, 5, 9, 551, 8, 9, 10, 9, 12, 9, 554, 9, 9, 1, 9, 1, 9, 3, 9, 558, 8, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 5, 13, 567, 8, 13, 10, 13, 12, 13, 570, 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, 583, 8, 14, 1, 15, 5, 15, 586, 8, 15, 10, 15, 12, 15, 589, 9, 15, 1, 15, 1, 15, 1, 15, 5, 15, 594, 8, 15, 10, 15, 12, 15, 597, 9, 15, 1, 15, 1, 15, 5, 15, 601, 8, 15, 10, 15, 12, 15, 604, 9, 15, 1, 16, 5, 16, 607, 8, 16, 10, 16, 12, 16, 610, 9, 16, 1, 16, 1, 16, 3, 16, 614, 8, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 623, 8, 18, 10, 18, 12, 18, 626, 9, 18, 3, 18, 628, 8, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 5, 21, 640, 8, 21, 10, 21, 12, 21, 643, 9, 21, 1, 22, 1, 22, 3, 22, 647, 8, 22, 1, 23, 5, 23, 650, 8, 23, 10, 23, 12, 23, 653, 9, 23, 1, 23, 1, 23, 3, 23, 657, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 663, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 671, 8, 25, 10, 25, 12, 25, 674, 9, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 681, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 689, 8, 27, 10, 27, 12, 27, 692, 9, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 699, 8, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 709, 8, 30, 10, 30, 12, 30, 712, 9, 30, 1, 31, 3, 31, 715, 8, 31, 1, 31, 5, 31, 718, 8, 31, 10, 31, 12, 31, 721, 9, 31, 1, 31, 5, 31, 724, 8, 31, 10, 31, 12, 31, 727, 9, 31, 1, 31, 1, 31, 1, 32, 5, 32, 732, 8, 32, 10, 32, 12, 32, 735, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 747, 8, 34, 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, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 3, 39, 776, 8, 39, 1, 40, 1, 40, 3, 40, 780, 8, 40, 1, 41, 5, 41, 783, 8, 41, 10, 41, 12, 41, 786, 9, 41, 1, 41, 1, 41, 1, 41, 3, 41, 791, 8, 41, 1, 41, 3, 41, 794, 8, 41, 1, 41, 3, 41, 797, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 809, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 5, 44, 818, 8, 44, 10, 44, 12, 44, 821, 9, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 5, 47, 832, 8, 47, 10, 47, 12, 47, 835, 9, 47, 1, 48, 1, 48, 5, 48, 839, 8, 48, 10, 48, 12, 48, 842, 9, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 850, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 857, 8, 50, 1, 51, 5, 51, 860, 8, 51, 10, 51, 12, 51, 863, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 877, 8, 52, 1, 53, 1, 53, 1, 53, 5, 53, 882, 8, 53, 10, 53, 12, 53, 885, 9, 53, 1, 54, 1, 54, 1, 54, 3, 54, 890, 8, 54, 1, 55, 1, 55, 3, 55, 894, 8, 55, 1, 56, 1, 56, 3, 56, 898, 8, 56, 1, 57, 1, 57, 3, 57, 902, 8, 57, 1, 58, 1, 58, 3, 58, 906, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 911, 8, 59, 1, 60, 1, 60, 3, 60, 915, 8, 60, 1, 60, 1, 60, 5, 60, 919, 8, 60, 10, 60, 12, 60, 922, 9, 60, 1, 61, 1, 61, 3, 61, 926, 8, 61, 1, 61, 1, 61, 1, 61, 5, 61, 931, 8, 61, 10, 61, 12, 61, 934, 9, 61, 1, 61, 1, 61, 3, 61, 938, 8, 61, 3, 61, 940, 8, 61, 1, 62, 1, 62, 5, 62, 944, 8, 62, 10, 62, 12, 62, 947, 9, 62, 1, 62, 1, 62, 3, 62, 951, 8, 62, 1, 63, 1, 63, 3, 63, 955, 8, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 974, 8, 68, 1, 69, 5, 69, 977, 8, 69, 10, 69, 12, 69, 980, 9, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 995, 8, 70, 1, 71, 1, 71, 1, 71, 3, 71, 1000, 8, 71, 1, 71, 1, 71, 5, 71, 1004, 8, 71, 10, 71, 12, 71, 1007, 9, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1012, 8, 71, 3, 71, 1014, 8, 71, 1, 72, 1, 72, 3, 72, 1018, 8, 72, 1, 73, 1, 73, 1, 73, 3, 73, 1023, 8, 73, 1, 73, 1, 73, 3, 73, 1027, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1035, 8, 74, 1, 75, 1, 75, 1, 75, 5, 75, 1040, 8, 75, 10, 75, 12, 75, 1043, 9, 75, 1, 75, 1, 75, 1, 75, 5, 75, 1048, 8, 75, 10, 75, 12, 75, 1051, 9, 75, 3, 75, 1053, 8, 75, 1, 76, 5, 76, 1056, 8, 76, 10, 76, 12, 76, 1059, 9, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 3, 77, 1066, 8, 77, 1, 78, 5, 78, 1069, 8, 78, 10, 78, 12, 78, 1072, 9, 78, 1, 78, 1, 78, 5, 78, 1076, 8, 78, 10, 78, 12, 78, 1079, 9, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1085, 8, 78, 1, 79, 5, 79, 1088, 8, 79, 10, 79, 12, 79, 1091, 9, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1096, 8, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 5, 81, 1106, 8, 81, 10, 81, 12, 81, 1109, 9, 81, 1, 82, 1, 82, 3, 82, 1113, 8, 82, 1, 83, 1, 83, 3, 83, 1117, 8, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 5, 86, 1125, 8, 86, 10, 86, 12, 86, 1128, 9, 86, 1, 86, 1, 86, 3, 86, 1132, 8, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1140, 8, 87, 1, 88, 3, 88, 1143, 8, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1148, 8, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 3, 90, 1156, 8, 90, 1, 90, 3, 90, 1159, 8, 90, 1, 90, 1, 90, 1, 91, 3, 91, 1164, 8, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1169, 8, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1174, 8, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1179, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1186, 8, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1191, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1199, 8, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1204, 8, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1209, 8, 91, 1, 92, 5, 92, 1212, 8, 92, 10, 92, 12, 92, 1215, 9, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1220, 8, 92, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 1226, 8, 93, 1, 93, 3, 93, 1229, 8, 93, 1, 93, 3, 93, 1232, 8, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 5, 94, 1239, 8, 94, 10, 94, 12, 94, 1242, 9, 94, 1, 95, 5, 95, 1245, 8, 95, 10, 95, 12, 95, 1248, 9, 95, 1, 95, 1, 95, 1, 95, 3, 95, 1253, 8, 95, 1, 95, 3, 95, 1256, 8, 95, 1, 95, 3, 95, 1259, 8, 95, 1, 96, 1, 96, 1, 97, 1, 97, 5, 97, 1265, 8, 97, 10, 97, 12, 97, 1268, 9, 97, 1, 98, 1, 98, 3, 98, 1272, 8, 98, 1, 99, 5, 99, 1275, 8, 99, 10, 99, 12, 99, 1278, 9, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1283, 8, 99, 1, 99, 3, 99, 1286, 8, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1297, 8, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 5, 102, 1304, 8, 102, 10, 102, 12, 102, 1307, 9, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 1316, 8, 103, 1, 104, 5, 104, 1319, 8, 104, 10, 104, 12, 104, 1322, 9, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 1332, 8, 105, 1, 106, 5, 106, 1335, 8, 106, 10, 106, 12, 106, 1338, 9, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 1349, 8, 107, 1, 108, 5, 108, 1352, 8, 108, 10, 108, 12, 108, 1355, 9, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 5, 109, 1364, 8, 109, 10, 109, 12, 109, 1367, 9, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 1376, 8, 110, 1, 111, 5, 111, 1379, 8, 111, 10, 111, 12, 111, 1382, 9, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1389, 8, 111, 1, 111, 3, 111, 1392, 8, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 3, 112, 1399, 8, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 3, 114, 1407, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 1413, 8, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 5, 116, 1420, 8, 116, 10, 116, 12, 116, 1423, 9, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 3, 118, 1432, 8, 118, 1, 119, 1, 119, 3, 119, 1436, 8, 119, 1, 119, 3, 119, 1439, 8, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 5, 120, 1446, 8, 120, 10, 120, 12, 120, 1449, 9, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 3, 123, 1462, 8, 123, 1, 123, 3, 123, 1465, 8, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 5, 124, 1472, 8, 124, 10, 124, 12, 124, 1475, 9, 124, 1, 125, 1, 125, 3, 125, 1479, 8, 125, 1, 125, 1, 125, 1, 126, 4, 126, 1484, 8, 126, 11, 126, 12, 126, 1485, 1, 127, 1, 127, 1, 127, 3, 127, 1491, 8, 127, 1, 128, 1, 128, 1, 128, 1, 129, 5, 129, 1497, 8, 129, 10, 129, 12, 129, 1500, 9, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1511, 8, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1518, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1532, 8, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 3, 137, 1554, 8, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 1588, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 5, 143, 1598, 8, 143, 10, 143, 12, 143, 1601, 9, 143, 1, 143, 5, 143, 1604, 8, 143, 10, 143, 12, 143, 1607, 9, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 5, 145, 1616, 8, 145, 10, 145, 12, 145, 1619, 9, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 1631, 8, 146, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 3, 151, 1657, 8, 151, 1, 152, 1, 152, 3, 152, 1661, 8, 152, 1, 153, 1, 153, 1, 153, 3, 153, 1666, 8, 153, 1, 153, 1, 153, 3, 153, 1670, 8, 153, 1, 153, 1, 153, 3, 153, 1674, 8, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 3, 154, 1682, 8, 154, 1, 154, 1, 154, 3, 154, 1686, 8, 154, 1, 154, 1, 154, 3, 154, 1690, 8, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 3, 155, 1697, 8, 155, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 5, 157, 1704, 8, 157, 10, 157, 12, 157, 1707, 9, 157, 1, 158, 1, 158, 1, 158, 5, 158, 1712, 8, 158, 10, 158, 12, 158, 1715, 9, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 5, 159, 1727, 8, 159, 10, 159, 12, 159, 1730, 9, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 3, 160, 1741, 8, 160, 1, 160, 1, 160, 1, 161, 1, 161, 3, 161, 1747, 8, 161, 1, 161, 1, 161, 1, 162, 1, 162, 3, 162, 1753, 8, 162, 1, 162, 1, 162, 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, 3, 165, 1774, 8, 165, 1, 165, 1, 165, 1, 165, 3, 165, 1779, 8, 165, 1, 166, 1, 166, 5, 166, 1783, 8, 166, 10, 166, 12, 166, 1786, 9, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 5, 168, 1795, 8, 168, 10, 168, 12, 168, 1798, 9, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 5, 169, 1806, 8, 169, 10, 169, 12, 169, 1809, 9, 169, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 1818, 8, 171, 1, 171, 3, 171, 1821, 8, 171, 1, 172, 1, 172, 1, 172, 3, 172, 1826, 8, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 5, 173, 1833, 8, 173, 10, 173, 12, 173, 1836, 9, 173, 1, 174, 5, 174, 1839, 8, 174, 10, 174, 12, 174, 1842, 9, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 3, 175, 1851, 8, 175, 1, 175, 5, 175, 1854, 8, 175, 10, 175, 12, 175, 1857, 9, 175, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 1863, 8, 176, 10, 176, 12, 176, 1866, 9, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 3, 176, 1888, 8, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 5, 178, 1896, 8, 178, 10, 178, 12, 178, 1899, 9, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 3, 178, 1920, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 1927, 8, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 3, 181, 1935, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 1941, 8, 182, 10, 182, 12, 182, 1944, 9, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 1952, 8, 182, 10, 182, 12, 182, 1955, 9, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 1977, 8, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1985, 8, 184, 10, 184, 12, 184, 1988, 9, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1996, 8, 184, 10, 184, 12, 184, 1999, 9, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 3, 184, 2020, 8, 184, 1, 185, 1, 185, 3, 185, 2024, 8, 185, 1, 185, 5, 185, 2027, 8, 185, 10, 185, 12, 185, 2030, 9, 185, 1, 185, 1, 185, 1, 185, 5, 185, 2035, 8, 185, 10, 185, 12, 185, 2038, 9, 185, 1, 185, 5, 185, 2041, 8, 185, 10, 185, 12, 185, 2044, 9, 185, 1, 185, 3, 185, 2047, 8, 185, 1, 185, 1, 185, 3, 185, 2051, 8, 185, 1, 185, 1, 185, 3, 185, 2055, 8, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 2061, 8, 185, 1, 185, 5, 185, 2064, 8, 185, 10, 185, 12, 185, 2067, 9, 185, 1, 185, 1, 185, 3, 185, 2071, 8, 185, 1, 185, 1, 185, 3, 185, 2075, 8, 185, 1, 185, 1, 185, 3, 185, 2079, 8, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 2085, 8, 185, 1, 185, 5, 185, 2088, 8, 185, 10, 185, 12, 185, 2091, 9, 185, 1, 185, 1, 185, 3, 185, 2095, 8, 185, 1, 185, 1, 185, 3, 185, 2099, 8, 185, 1, 185, 1, 185, 3, 185, 2103, 8, 185, 3, 185, 2105, 8, 185, 1, 186, 1, 186, 1, 186, 3, 186, 2110, 8, 186, 1, 186, 5, 186, 2113, 8, 186, 10, 186, 12, 186, 2116, 9, 186, 1, 186, 1, 186, 3, 186, 2120, 8, 186, 1, 186, 1, 186, 3, 186, 2124, 8, 186, 1, 186, 1, 186, 3, 186, 2128, 8, 186, 1, 187, 1, 187, 3, 187, 2132, 8, 187, 1, 187, 5, 187, 2135, 8, 187, 10, 187, 12, 187, 2138, 9, 187, 1, 187, 1, 187, 1, 187, 5, 187, 2143, 8, 187, 10, 187, 12, 187, 2146, 9, 187, 1, 187, 5, 187, 2149, 8, 187, 10, 187, 12, 187, 2152, 9, 187, 1, 187, 3, 187, 2155, 8, 187, 1, 187, 1, 187, 3, 187, 2159, 8, 187, 1, 187, 1, 187, 3, 187, 2163, 8, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 2169, 8, 187, 1, 187, 5, 187, 2172, 8, 187, 10, 187, 12, 187, 2175, 9, 187, 1, 187, 1, 187, 3, 187, 2179, 8, 187, 1, 187, 1, 187, 3, 187, 2183, 8, 187, 1, 187, 1, 187, 3, 187, 2187, 8, 187, 3, 187, 2189, 8, 187, 1, 188, 1, 188, 1, 188, 3, 188, 2194, 8, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 2209, 8, 189, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 2223, 8, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 2235, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 5, 192, 2242, 8, 192, 10, 192, 12, 192, 2245, 9, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 2257, 8, 193, 10, 193, 12, 193, 2260, 9, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 2272, 8, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 5, 194, 2279, 8, 194, 10, 194, 12, 194, 2282, 9, 194, 1, 195, 1, 195, 1, 195, 3, 195, 2287, 8, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2294, 8, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2299, 8, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2306, 8, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2311, 8, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2318, 8, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2323, 8, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2330, 8, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2335, 8, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2343, 8, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2348, 8, 195, 1, 195, 1, 195, 3, 195, 2352, 8, 195, 1, 196, 1, 196, 3, 196, 2356, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2361, 8, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 3, 197, 2368, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2375, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2380, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2387, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2392, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2399, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2404, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2412, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2417, 8, 197, 1, 197, 1, 197, 3, 197, 2421, 8, 197, 1, 198, 1, 198, 1, 198, 5, 198, 2426, 8, 198, 10, 198, 12, 198, 2429, 9, 198, 1, 199, 1, 199, 1, 199, 3, 199, 2434, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2441, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2448, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2455, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2463, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2470, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2478, 8, 199, 1, 200, 1, 200, 3, 200, 2482, 8, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 3, 201, 2489, 8, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 2496, 8, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 2503, 8, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 2511, 8, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 2518, 8, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 2526, 8, 201, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2532, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2538, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2550, 8, 202, 1, 203, 1, 203, 5, 203, 2554, 8, 203, 10, 203, 12, 203, 2557, 9, 203, 1, 204, 5, 204, 2560, 8, 204, 10, 204, 12, 204, 2563, 9, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 206, 1, 206, 3, 206, 2573, 8, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 3, 208, 2582, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2589, 8, 208, 1, 209, 1, 209, 1, 209, 5, 209, 2594, 8, 209, 10, 209, 12, 209, 2597, 9, 209, 1, 210, 1, 210, 3, 210, 2601, 8, 210, 1, 211, 1, 211, 3, 211, 2605, 8, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 3, 213, 2614, 8, 213, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 3, 215, 2625, 8, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 5, 216, 2633, 8, 216, 10, 216, 12, 216, 2636, 9, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 5, 217, 2644, 8, 217, 10, 217, 12, 217, 2647, 9, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 5, 218, 2655, 8, 218, 10, 218, 12, 218, 2658, 9, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 5, 219, 2666, 8, 219, 10, 219, 12, 219, 2669, 9, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 5, 220, 2677, 8, 220, 10, 220, 12, 220, 2680, 9, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 5, 221, 2691, 8, 221, 10, 221, 12, 221, 2694, 9, 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, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 5, 222, 2714, 8, 222, 10, 222, 12, 222, 2717, 9, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 5, 223, 2735, 8, 223, 10, 223, 12, 223, 2738, 9, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 5, 224, 2749, 8, 224, 10, 224, 12, 224, 2752, 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, 5, 225, 2766, 8, 225, 10, 225, 12, 225, 2769, 9, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 3, 226, 2778, 8, 226, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 2792, 8, 229, 1, 230, 1, 230, 3, 230, 2796, 8, 230, 1, 230, 1, 230, 5, 230, 2800, 8, 230, 10, 230, 12, 230, 2803, 9, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 5, 235, 2823, 8, 235, 10, 235, 12, 235, 2826, 9, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 5, 235, 2834, 8, 235, 10, 235, 12, 235, 2837, 9, 235, 1, 235, 1, 235, 1, 235, 3, 235, 2842, 8, 235, 1, 235, 0, 13, 50, 54, 60, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 236, 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, 0, 4, 1, 0, 51, 56, 5, 0, 5, 5, 8, 8, 27, 27, 29, 29, 37, 37, 2, 0, 14, 14, 20, 20, 2, 0, 66, 66, 91, 101, 3085, 0, 472, 1, 0, 0, 0, 2, 488, 1, 0, 0, 0, 4, 492, 1, 0, 0, 0, 6, 494, 1, 0, 0, 0, 8, 496, 1, 0, 0, 0, 10, 501, 1, 0, 0, 0, 12, 505, 1, 0, 0, 0, 14, 536, 1, 0, 0, 0, 16, 538, 1, 0, 0, 0, 18, 552, 1, 0, 0, 0, 20, 559, 1, 0, 0, 0, 22, 561, 1, 0, 0, 0, 24, 563, 1, 0, 0, 0, 26, 568, 1, 0, 0, 0, 28, 582, 1, 0, 0, 0, 30, 587, 1, 0, 0, 0, 32, 608, 1, 0, 0, 0, 34, 615, 1, 0, 0, 0, 36, 627, 1, 0, 0, 0, 38, 629, 1, 0, 0, 0, 40, 632, 1, 0, 0, 0, 42, 636, 1, 0, 0, 0, 44, 646, 1, 0, 0, 0, 46, 651, 1, 0, 0, 0, 48, 662, 1, 0, 0, 0, 50, 664, 1, 0, 0, 0, 52, 680, 1, 0, 0, 0, 54, 682, 1, 0, 0, 0, 56, 698, 1, 0, 0, 0, 58, 700, 1, 0, 0, 0, 60, 702, 1, 0, 0, 0, 62, 714, 1, 0, 0, 0, 64, 733, 1, 0, 0, 0, 66, 740, 1, 0, 0, 0, 68, 746, 1, 0, 0, 0, 70, 748, 1, 0, 0, 0, 72, 752, 1, 0, 0, 0, 74, 758, 1, 0, 0, 0, 76, 765, 1, 0, 0, 0, 78, 775, 1, 0, 0, 0, 80, 779, 1, 0, 0, 0, 82, 784, 1, 0, 0, 0, 84, 808, 1, 0, 0, 0, 86, 810, 1, 0, 0, 0, 88, 814, 1, 0, 0, 0, 90, 822, 1, 0, 0, 0, 92, 825, 1, 0, 0, 0, 94, 828, 1, 0, 0, 0, 96, 836, 1, 0, 0, 0, 98, 849, 1, 0, 0, 0, 100, 856, 1, 0, 0, 0, 102, 861, 1, 0, 0, 0, 104, 876, 1, 0, 0, 0, 106, 878, 1, 0, 0, 0, 108, 886, 1, 0, 0, 0, 110, 891, 1, 0, 0, 0, 112, 897, 1, 0, 0, 0, 114, 901, 1, 0, 0, 0, 116, 905, 1, 0, 0, 0, 118, 910, 1, 0, 0, 0, 120, 914, 1, 0, 0, 0, 122, 939, 1, 0, 0, 0, 124, 941, 1, 0, 0, 0, 126, 952, 1, 0, 0, 0, 128, 956, 1, 0, 0, 0, 130, 958, 1, 0, 0, 0, 132, 960, 1, 0, 0, 0, 134, 962, 1, 0, 0, 0, 136, 973, 1, 0, 0, 0, 138, 978, 1, 0, 0, 0, 140, 994, 1, 0, 0, 0, 142, 1013, 1, 0, 0, 0, 144, 1017, 1, 0, 0, 0, 146, 1019, 1, 0, 0, 0, 148, 1034, 1, 0, 0, 0, 150, 1052, 1, 0, 0, 0, 152, 1057, 1, 0, 0, 0, 154, 1065, 1, 0, 0, 0, 156, 1084, 1, 0, 0, 0, 158, 1089, 1, 0, 0, 0, 160, 1099, 1, 0, 0, 0, 162, 1102, 1, 0, 0, 0, 164, 1112, 1, 0, 0, 0, 166, 1116, 1, 0, 0, 0, 168, 1118, 1, 0, 0, 0, 170, 1120, 1, 0, 0, 0, 172, 1126, 1, 0, 0, 0, 174, 1139, 1, 0, 0, 0, 176, 1142, 1, 0, 0, 0, 178, 1151, 1, 0, 0, 0, 180, 1153, 1, 0, 0, 0, 182, 1208, 1, 0, 0, 0, 184, 1213, 1, 0, 0, 0, 186, 1223, 1, 0, 0, 0, 188, 1235, 1, 0, 0, 0, 190, 1246, 1, 0, 0, 0, 192, 1260, 1, 0, 0, 0, 194, 1262, 1, 0, 0, 0, 196, 1271, 1, 0, 0, 0, 198, 1276, 1, 0, 0, 0, 200, 1296, 1, 0, 0, 0, 202, 1298, 1, 0, 0, 0, 204, 1301, 1, 0, 0, 0, 206, 1315, 1, 0, 0, 0, 208, 1320, 1, 0, 0, 0, 210, 1331, 1, 0, 0, 0, 212, 1336, 1, 0, 0, 0, 214, 1348, 1, 0, 0, 0, 216, 1353, 1, 0, 0, 0, 218, 1361, 1, 0, 0, 0, 220, 1375, 1, 0, 0, 0, 222, 1380, 1, 0, 0, 0, 224, 1398, 1, 0, 0, 0, 226, 1400, 1, 0, 0, 0, 228, 1406, 1, 0, 0, 0, 230, 1408, 1, 0, 0, 0, 232, 1416, 1, 0, 0, 0, 234, 1424, 1, 0, 0, 0, 236, 1431, 1, 0, 0, 0, 238, 1433, 1, 0, 0, 0, 240, 1442, 1, 0, 0, 0, 242, 1450, 1, 0, 0, 0, 244, 1453, 1, 0, 0, 0, 246, 1459, 1, 0, 0, 0, 248, 1468, 1, 0, 0, 0, 250, 1476, 1, 0, 0, 0, 252, 1483, 1, 0, 0, 0, 254, 1490, 1, 0, 0, 0, 256, 1492, 1, 0, 0, 0, 258, 1498, 1, 0, 0, 0, 260, 1510, 1, 0, 0, 0, 262, 1517, 1, 0, 0, 0, 264, 1531, 1, 0, 0, 0, 266, 1533, 1, 0, 0, 0, 268, 1535, 1, 0, 0, 0, 270, 1539, 1, 0, 0, 0, 272, 1543, 1, 0, 0, 0, 274, 1553, 1, 0, 0, 0, 276, 1555, 1, 0, 0, 0, 278, 1561, 1, 0, 0, 0, 280, 1569, 1, 0, 0, 0, 282, 1587, 1, 0, 0, 0, 284, 1589, 1, 0, 0, 0, 286, 1595, 1, 0, 0, 0, 288, 1610, 1, 0, 0, 0, 290, 1613, 1, 0, 0, 0, 292, 1630, 1, 0, 0, 0, 294, 1632, 1, 0, 0, 0, 296, 1634, 1, 0, 0, 0, 298, 1640, 1, 0, 0, 0, 300, 1646, 1, 0, 0, 0, 302, 1656, 1, 0, 0, 0, 304, 1660, 1, 0, 0, 0, 306, 1662, 1, 0, 0, 0, 308, 1678, 1, 0, 0, 0, 310, 1696, 1, 0, 0, 0, 312, 1698, 1, 0, 0, 0, 314, 1700, 1, 0, 0, 0, 316, 1708, 1, 0, 0, 0, 318, 1723, 1, 0, 0, 0, 320, 1738, 1, 0, 0, 0, 322, 1744, 1, 0, 0, 0, 324, 1750, 1, 0, 0, 0, 326, 1756, 1, 0, 0, 0, 328, 1760, 1, 0, 0, 0, 330, 1778, 1, 0, 0, 0, 332, 1780, 1, 0, 0, 0, 334, 1787, 1, 0, 0, 0, 336, 1796, 1, 0, 0, 0, 338, 1802, 1, 0, 0, 0, 340, 1810, 1, 0, 0, 0, 342, 1813, 1, 0, 0, 0, 344, 1822, 1, 0, 0, 0, 346, 1829, 1, 0, 0, 0, 348, 1840, 1, 0, 0, 0, 350, 1850, 1, 0, 0, 0, 352, 1887, 1, 0, 0, 0, 354, 1889, 1, 0, 0, 0, 356, 1919, 1, 0, 0, 0, 358, 1926, 1, 0, 0, 0, 360, 1928, 1, 0, 0, 0, 362, 1934, 1, 0, 0, 0, 364, 1976, 1, 0, 0, 0, 366, 1978, 1, 0, 0, 0, 368, 2019, 1, 0, 0, 0, 370, 2104, 1, 0, 0, 0, 372, 2106, 1, 0, 0, 0, 374, 2188, 1, 0, 0, 0, 376, 2193, 1, 0, 0, 0, 378, 2208, 1, 0, 0, 0, 380, 2210, 1, 0, 0, 0, 382, 2222, 1, 0, 0, 0, 384, 2234, 1, 0, 0, 0, 386, 2246, 1, 0, 0, 0, 388, 2271, 1, 0, 0, 0, 390, 2351, 1, 0, 0, 0, 392, 2353, 1, 0, 0, 0, 394, 2420, 1, 0, 0, 0, 396, 2422, 1, 0, 0, 0, 398, 2477, 1, 0, 0, 0, 400, 2479, 1, 0, 0, 0, 402, 2525, 1, 0, 0, 0, 404, 2549, 1, 0, 0, 0, 406, 2551, 1, 0, 0, 0, 408, 2561, 1, 0, 0, 0, 410, 2568, 1, 0, 0, 0, 412, 2572, 1, 0, 0, 0, 414, 2574, 1, 0, 0, 0, 416, 2588, 1, 0, 0, 0, 418, 2590, 1, 0, 0, 0, 420, 2600, 1, 0, 0, 0, 422, 2604, 1, 0, 0, 0, 424, 2606, 1, 0, 0, 0, 426, 2613, 1, 0, 0, 0, 428, 2615, 1, 0, 0, 0, 430, 2624, 1, 0, 0, 0, 432, 2626, 1, 0, 0, 0, 434, 2637, 1, 0, 0, 0, 436, 2648, 1, 0, 0, 0, 438, 2659, 1, 0, 0, 0, 440, 2670, 1, 0, 0, 0, 442, 2681, 1, 0, 0, 0, 444, 2695, 1, 0, 0, 0, 446, 2718, 1, 0, 0, 0, 448, 2739, 1, 0, 0, 0, 450, 2753, 1, 0, 0, 0, 452, 2777, 1, 0, 0, 0, 454, 2779, 1, 0, 0, 0, 456, 2782, 1, 0, 0, 0, 458, 2791, 1, 0, 0, 0, 460, 2795, 1, 0, 0, 0, 462, 2804, 1, 0, 0, 0, 464, 2807, 1, 0, 0, 0, 466, 2809, 1, 0, 0, 0, 468, 2812, 1, 0, 0, 0, 470, 2841, 1, 0, 0, 0, 472, 473, 7, 0, 0, 0, 473, 1, 1, 0, 0, 0, 474, 476, 3, 228, 114, 0, 475, 474, 1, 0, 0, 0, 476, 479, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 480, 1, 0, 0, 0, 479, 477, 1, 0, 0, 0, 480, 489, 3, 4, 2, 0, 481, 483, 3, 228, 114, 0, 482, 481, 1, 0, 0, 0, 483, 486, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 487, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 487, 489, 5, 3, 0, 0, 488, 477, 1, 0, 0, 0, 488, 484, 1, 0, 0, 0, 489, 3, 1, 0, 0, 0, 490, 493, 3, 6, 3, 0, 491, 493, 3, 8, 4, 0, 492, 490, 1, 0, 0, 0, 492, 491, 1, 0, 0, 0, 493, 5, 1, 0, 0, 0, 494, 495, 7, 1, 0, 0, 495, 7, 1, 0, 0, 0, 496, 497, 7, 2, 0, 0, 497, 9, 1, 0, 0, 0, 498, 502, 3, 12, 6, 0, 499, 502, 3, 26, 13, 0, 500, 502, 3, 28, 14, 0, 501, 498, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 501, 500, 1, 0, 0, 0, 502, 11, 1, 0, 0, 0, 503, 506, 3, 18, 9, 0, 504, 506, 3, 24, 12, 0, 505, 503, 1, 0, 0, 0, 505, 504, 1, 0, 0, 0, 506, 511, 1, 0, 0, 0, 507, 510, 3, 16, 8, 0, 508, 510, 3, 22, 11, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 509, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 13, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 514, 516, 3, 228, 114, 0, 515, 514, 1, 0, 0, 0, 516, 519, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 520, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 520, 522, 5, 102, 0, 0, 521, 523, 3, 40, 20, 0, 522, 521, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 537, 1, 0, 0, 0, 524, 525, 3, 12, 6, 0, 525, 529, 5, 65, 0, 0, 526, 528, 3, 228, 114, 0, 527, 526, 1, 0, 0, 0, 528, 531, 1, 0, 0, 0, 529, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 532, 1, 0, 0, 0, 531, 529, 1, 0, 0, 0, 532, 534, 5, 102, 0, 0, 533, 535, 3, 40, 20, 0, 534, 533, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 537, 1, 0, 0, 0, 536, 517, 1, 0, 0, 0, 536, 524, 1, 0, 0, 0, 537, 15, 1, 0, 0, 0, 538, 542, 5, 65, 0, 0, 539, 541, 3, 228, 114, 0, 540, 539, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 545, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 545, 547, 5, 102, 0, 0, 546, 548, 3, 40, 20, 0, 547, 546, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 17, 1, 0, 0, 0, 549, 551, 3, 228, 114, 0, 550, 549, 1, 0, 0, 0, 551, 554, 1, 0, 0, 0, 552, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 555, 1, 0, 0, 0, 554, 552, 1, 0, 0, 0, 555, 557, 5, 102, 0, 0, 556, 558, 3, 40, 20, 0, 557, 556, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 19, 1, 0, 0, 0, 559, 560, 3, 14, 7, 0, 560, 21, 1, 0, 0, 0, 561, 562, 3, 16, 8, 0, 562, 23, 1, 0, 0, 0, 563, 564, 3, 18, 9, 0, 564, 25, 1, 0, 0, 0, 565, 567, 3, 228, 114, 0, 566, 565, 1, 0, 0, 0, 567, 570, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 571, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 571, 572, 5, 102, 0, 0, 572, 27, 1, 0, 0, 0, 573, 574, 3, 2, 1, 0, 574, 575, 3, 30, 15, 0, 575, 583, 1, 0, 0, 0, 576, 577, 3, 12, 6, 0, 577, 578, 3, 30, 15, 0, 578, 583, 1, 0, 0, 0, 579, 580, 3, 26, 13, 0, 580, 581, 3, 30, 15, 0, 581, 583, 1, 0, 0, 0, 582, 573, 1, 0, 0, 0, 582, 576, 1, 0, 0, 0, 582, 579, 1, 0, 0, 0, 583, 29, 1, 0, 0, 0, 584, 586, 3, 228, 114, 0, 585, 584, 1, 0, 0, 0, 586, 589, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 590, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 590, 591, 5, 61, 0, 0, 591, 602, 5, 62, 0, 0, 592, 594, 3, 228, 114, 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, 5, 61, 0, 0, 599, 601, 5, 62, 0, 0, 600, 595, 1, 0, 0, 0, 601, 604, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 31, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 605, 607, 3, 34, 17, 0, 606, 605, 1, 0, 0, 0, 607, 610, 1, 0, 0, 0, 608, 606, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 611, 1, 0, 0, 0, 610, 608, 1, 0, 0, 0, 611, 613, 5, 102, 0, 0, 612, 614, 3, 36, 18, 0, 613, 612, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 33, 1, 0, 0, 0, 615, 616, 3, 228, 114, 0, 616, 35, 1, 0, 0, 0, 617, 618, 5, 17, 0, 0, 618, 628, 3, 26, 13, 0, 619, 620, 5, 17, 0, 0, 620, 624, 3, 12, 6, 0, 621, 623, 3, 38, 19, 0, 622, 621, 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, 617, 1, 0, 0, 0, 627, 619, 1, 0, 0, 0, 628, 37, 1, 0, 0, 0, 629, 630, 5, 85, 0, 0, 630, 631, 3, 20, 10, 0, 631, 39, 1, 0, 0, 0, 632, 633, 5, 68, 0, 0, 633, 634, 3, 42, 21, 0, 634, 635, 5, 67, 0, 0, 635, 41, 1, 0, 0, 0, 636, 641, 3, 44, 22, 0, 637, 638, 5, 64, 0, 0, 638, 640, 3, 44, 22, 0, 639, 637, 1, 0, 0, 0, 640, 643, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 43, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 644, 647, 3, 10, 5, 0, 645, 647, 3, 46, 23, 0, 646, 644, 1, 0, 0, 0, 646, 645, 1, 0, 0, 0, 647, 45, 1, 0, 0, 0, 648, 650, 3, 228, 114, 0, 649, 648, 1, 0, 0, 0, 650, 653, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 651, 652, 1, 0, 0, 0, 652, 654, 1, 0, 0, 0, 653, 651, 1, 0, 0, 0, 654, 656, 5, 71, 0, 0, 655, 657, 3, 48, 24, 0, 656, 655, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 47, 1, 0, 0, 0, 658, 659, 5, 17, 0, 0, 659, 663, 3, 10, 5, 0, 660, 661, 5, 40, 0, 0, 661, 663, 3, 10, 5, 0, 662, 658, 1, 0, 0, 0, 662, 660, 1, 0, 0, 0, 663, 49, 1, 0, 0, 0, 664, 665, 6, 25, -1, 0, 665, 666, 5, 102, 0, 0, 666, 672, 1, 0, 0, 0, 667, 668, 10, 1, 0, 0, 668, 669, 5, 65, 0, 0, 669, 671, 5, 102, 0, 0, 670, 667, 1, 0, 0, 0, 671, 674, 1, 0, 0, 0, 672, 670, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 51, 1, 0, 0, 0, 674, 672, 1, 0, 0, 0, 675, 681, 5, 102, 0, 0, 676, 677, 3, 54, 27, 0, 677, 678, 5, 65, 0, 0, 678, 679, 5, 102, 0, 0, 679, 681, 1, 0, 0, 0, 680, 675, 1, 0, 0, 0, 680, 676, 1, 0, 0, 0, 681, 53, 1, 0, 0, 0, 682, 683, 6, 27, -1, 0, 683, 684, 5, 102, 0, 0, 684, 690, 1, 0, 0, 0, 685, 686, 10, 1, 0, 0, 686, 687, 5, 65, 0, 0, 687, 689, 5, 102, 0, 0, 688, 685, 1, 0, 0, 0, 689, 692, 1, 0, 0, 0, 690, 688, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 55, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 693, 699, 5, 102, 0, 0, 694, 695, 3, 60, 30, 0, 695, 696, 5, 65, 0, 0, 696, 697, 5, 102, 0, 0, 697, 699, 1, 0, 0, 0, 698, 693, 1, 0, 0, 0, 698, 694, 1, 0, 0, 0, 699, 57, 1, 0, 0, 0, 700, 701, 5, 102, 0, 0, 701, 59, 1, 0, 0, 0, 702, 703, 6, 30, -1, 0, 703, 704, 5, 102, 0, 0, 704, 710, 1, 0, 0, 0, 705, 706, 10, 1, 0, 0, 706, 707, 5, 65, 0, 0, 707, 709, 5, 102, 0, 0, 708, 705, 1, 0, 0, 0, 709, 712, 1, 0, 0, 0, 710, 708, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 61, 1, 0, 0, 0, 712, 710, 1, 0, 0, 0, 713, 715, 3, 64, 32, 0, 714, 713, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 719, 1, 0, 0, 0, 716, 718, 3, 68, 34, 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, 725, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 722, 724, 3, 78, 39, 0, 723, 722, 1, 0, 0, 0, 724, 727, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 728, 1, 0, 0, 0, 727, 725, 1, 0, 0, 0, 728, 729, 5, 0, 0, 1, 729, 63, 1, 0, 0, 0, 730, 732, 3, 66, 33, 0, 731, 730, 1, 0, 0, 0, 732, 735, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 736, 1, 0, 0, 0, 735, 733, 1, 0, 0, 0, 736, 737, 5, 32, 0, 0, 737, 738, 3, 50, 25, 0, 738, 739, 5, 63, 0, 0, 739, 65, 1, 0, 0, 0, 740, 741, 3, 228, 114, 0, 741, 67, 1, 0, 0, 0, 742, 747, 3, 70, 35, 0, 743, 747, 3, 72, 36, 0, 744, 747, 3, 74, 37, 0, 745, 747, 3, 76, 38, 0, 746, 742, 1, 0, 0, 0, 746, 743, 1, 0, 0, 0, 746, 744, 1, 0, 0, 0, 746, 745, 1, 0, 0, 0, 747, 69, 1, 0, 0, 0, 748, 749, 5, 25, 0, 0, 749, 750, 3, 52, 26, 0, 750, 751, 5, 63, 0, 0, 751, 71, 1, 0, 0, 0, 752, 753, 5, 25, 0, 0, 753, 754, 3, 54, 27, 0, 754, 755, 5, 65, 0, 0, 755, 756, 5, 83, 0, 0, 756, 757, 5, 63, 0, 0, 757, 73, 1, 0, 0, 0, 758, 759, 5, 25, 0, 0, 759, 760, 5, 38, 0, 0, 760, 761, 3, 52, 26, 0, 761, 762, 5, 65, 0, 0, 762, 763, 5, 102, 0, 0, 763, 764, 5, 63, 0, 0, 764, 75, 1, 0, 0, 0, 765, 766, 5, 25, 0, 0, 766, 767, 5, 38, 0, 0, 767, 768, 3, 52, 26, 0, 768, 769, 5, 65, 0, 0, 769, 770, 5, 83, 0, 0, 770, 771, 5, 63, 0, 0, 771, 77, 1, 0, 0, 0, 772, 776, 3, 80, 40, 0, 773, 776, 3, 196, 98, 0, 774, 776, 5, 63, 0, 0, 775, 772, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 775, 774, 1, 0, 0, 0, 776, 79, 1, 0, 0, 0, 777, 780, 3, 82, 41, 0, 778, 780, 3, 184, 92, 0, 779, 777, 1, 0, 0, 0, 779, 778, 1, 0, 0, 0, 780, 81, 1, 0, 0, 0, 781, 783, 3, 84, 42, 0, 782, 781, 1, 0, 0, 0, 783, 786, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 787, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 787, 788, 5, 9, 0, 0, 788, 790, 5, 102, 0, 0, 789, 791, 3, 86, 43, 0, 790, 789, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 793, 1, 0, 0, 0, 792, 794, 3, 90, 45, 0, 793, 792, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 796, 1, 0, 0, 0, 795, 797, 3, 92, 46, 0, 796, 795, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 799, 3, 96, 48, 0, 799, 83, 1, 0, 0, 0, 800, 809, 3, 228, 114, 0, 801, 809, 5, 35, 0, 0, 802, 809, 5, 34, 0, 0, 803, 809, 5, 33, 0, 0, 804, 809, 5, 1, 0, 0, 805, 809, 5, 38, 0, 0, 806, 809, 5, 18, 0, 0, 807, 809, 5, 39, 0, 0, 808, 800, 1, 0, 0, 0, 808, 801, 1, 0, 0, 0, 808, 802, 1, 0, 0, 0, 808, 803, 1, 0, 0, 0, 808, 804, 1, 0, 0, 0, 808, 805, 1, 0, 0, 0, 808, 806, 1, 0, 0, 0, 808, 807, 1, 0, 0, 0, 809, 85, 1, 0, 0, 0, 810, 811, 5, 68, 0, 0, 811, 812, 3, 88, 44, 0, 812, 813, 5, 67, 0, 0, 813, 87, 1, 0, 0, 0, 814, 819, 3, 32, 16, 0, 815, 816, 5, 64, 0, 0, 816, 818, 3, 32, 16, 0, 817, 815, 1, 0, 0, 0, 818, 821, 1, 0, 0, 0, 819, 817, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, 820, 89, 1, 0, 0, 0, 821, 819, 1, 0, 0, 0, 822, 823, 5, 17, 0, 0, 823, 824, 3, 14, 7, 0, 824, 91, 1, 0, 0, 0, 825, 826, 5, 24, 0, 0, 826, 827, 3, 94, 47, 0, 827, 93, 1, 0, 0, 0, 828, 833, 3, 20, 10, 0, 829, 830, 5, 64, 0, 0, 830, 832, 3, 20, 10, 0, 831, 829, 1, 0, 0, 0, 832, 835, 1, 0, 0, 0, 833, 831, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 95, 1, 0, 0, 0, 835, 833, 1, 0, 0, 0, 836, 840, 5, 59, 0, 0, 837, 839, 3, 98, 49, 0, 838, 837, 1, 0, 0, 0, 839, 842, 1, 0, 0, 0, 840, 838, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 843, 1, 0, 0, 0, 842, 840, 1, 0, 0, 0, 843, 844, 5, 60, 0, 0, 844, 97, 1, 0, 0, 0, 845, 850, 3, 100, 50, 0, 846, 850, 3, 168, 84, 0, 847, 850, 3, 170, 85, 0, 848, 850, 3, 172, 86, 0, 849, 845, 1, 0, 0, 0, 849, 846, 1, 0, 0, 0, 849, 847, 1, 0, 0, 0, 849, 848, 1, 0, 0, 0, 850, 99, 1, 0, 0, 0, 851, 857, 3, 102, 51, 0, 852, 857, 3, 138, 69, 0, 853, 857, 3, 80, 40, 0, 854, 857, 3, 196, 98, 0, 855, 857, 5, 63, 0, 0, 856, 851, 1, 0, 0, 0, 856, 852, 1, 0, 0, 0, 856, 853, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 856, 855, 1, 0, 0, 0, 857, 101, 1, 0, 0, 0, 858, 860, 3, 104, 52, 0, 859, 858, 1, 0, 0, 0, 860, 863, 1, 0, 0, 0, 861, 859, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 864, 1, 0, 0, 0, 863, 861, 1, 0, 0, 0, 864, 865, 3, 114, 57, 0, 865, 866, 3, 106, 53, 0, 866, 867, 5, 63, 0, 0, 867, 103, 1, 0, 0, 0, 868, 877, 3, 228, 114, 0, 869, 877, 5, 35, 0, 0, 870, 877, 5, 34, 0, 0, 871, 877, 5, 33, 0, 0, 872, 877, 5, 38, 0, 0, 873, 877, 5, 18, 0, 0, 874, 877, 5, 46, 0, 0, 875, 877, 5, 49, 0, 0, 876, 868, 1, 0, 0, 0, 876, 869, 1, 0, 0, 0, 876, 870, 1, 0, 0, 0, 876, 871, 1, 0, 0, 0, 876, 872, 1, 0, 0, 0, 876, 873, 1, 0, 0, 0, 876, 874, 1, 0, 0, 0, 876, 875, 1, 0, 0, 0, 877, 105, 1, 0, 0, 0, 878, 883, 3, 108, 54, 0, 879, 880, 5, 64, 0, 0, 880, 882, 3, 108, 54, 0, 881, 879, 1, 0, 0, 0, 882, 885, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 107, 1, 0, 0, 0, 885, 883, 1, 0, 0, 0, 886, 889, 3, 110, 55, 0, 887, 888, 5, 66, 0, 0, 888, 890, 3, 112, 56, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 109, 1, 0, 0, 0, 891, 893, 5, 102, 0, 0, 892, 894, 3, 30, 15, 0, 893, 892, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 111, 1, 0, 0, 0, 895, 898, 3, 412, 206, 0, 896, 898, 3, 246, 123, 0, 897, 895, 1, 0, 0, 0, 897, 896, 1, 0, 0, 0, 898, 113, 1, 0, 0, 0, 899, 902, 3, 116, 58, 0, 900, 902, 3, 118, 59, 0, 901, 899, 1, 0, 0, 0, 901, 900, 1, 0, 0, 0, 902, 115, 1, 0, 0, 0, 903, 906, 3, 4, 2, 0, 904, 906, 5, 3, 0, 0, 905, 903, 1, 0, 0, 0, 905, 904, 1, 0, 0, 0, 906, 117, 1, 0, 0, 0, 907, 911, 3, 120, 60, 0, 908, 911, 3, 134, 67, 0, 909, 911, 3, 136, 68, 0, 910, 907, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 909, 1, 0, 0, 0, 911, 119, 1, 0, 0, 0, 912, 915, 3, 126, 63, 0, 913, 915, 3, 132, 66, 0, 914, 912, 1, 0, 0, 0, 914, 913, 1, 0, 0, 0, 915, 920, 1, 0, 0, 0, 916, 919, 3, 124, 62, 0, 917, 919, 3, 130, 65, 0, 918, 916, 1, 0, 0, 0, 918, 917, 1, 0, 0, 0, 919, 922, 1, 0, 0, 0, 920, 918, 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 121, 1, 0, 0, 0, 922, 920, 1, 0, 0, 0, 923, 925, 5, 102, 0, 0, 924, 926, 3, 40, 20, 0, 925, 924, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 940, 1, 0, 0, 0, 927, 928, 3, 120, 60, 0, 928, 932, 5, 65, 0, 0, 929, 931, 3, 228, 114, 0, 930, 929, 1, 0, 0, 0, 931, 934, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 935, 1, 0, 0, 0, 934, 932, 1, 0, 0, 0, 935, 937, 5, 102, 0, 0, 936, 938, 3, 40, 20, 0, 937, 936, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 940, 1, 0, 0, 0, 939, 923, 1, 0, 0, 0, 939, 927, 1, 0, 0, 0, 940, 123, 1, 0, 0, 0, 941, 945, 5, 65, 0, 0, 942, 944, 3, 228, 114, 0, 943, 942, 1, 0, 0, 0, 944, 947, 1, 0, 0, 0, 945, 943, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 945, 1, 0, 0, 0, 948, 950, 5, 102, 0, 0, 949, 951, 3, 40, 20, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 125, 1, 0, 0, 0, 952, 954, 5, 102, 0, 0, 953, 955, 3, 40, 20, 0, 954, 953, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 127, 1, 0, 0, 0, 956, 957, 3, 122, 61, 0, 957, 129, 1, 0, 0, 0, 958, 959, 3, 124, 62, 0, 959, 131, 1, 0, 0, 0, 960, 961, 3, 126, 63, 0, 961, 133, 1, 0, 0, 0, 962, 963, 5, 102, 0, 0, 963, 135, 1, 0, 0, 0, 964, 965, 3, 116, 58, 0, 965, 966, 3, 30, 15, 0, 966, 974, 1, 0, 0, 0, 967, 968, 3, 120, 60, 0, 968, 969, 3, 30, 15, 0, 969, 974, 1, 0, 0, 0, 970, 971, 3, 134, 67, 0, 971, 972, 3, 30, 15, 0, 972, 974, 1, 0, 0, 0, 973, 964, 1, 0, 0, 0, 973, 967, 1, 0, 0, 0, 973, 970, 1, 0, 0, 0, 974, 137, 1, 0, 0, 0, 975, 977, 3, 140, 70, 0, 976, 975, 1, 0, 0, 0, 977, 980, 1, 0, 0, 0, 978, 976, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 981, 1, 0, 0, 0, 980, 978, 1, 0, 0, 0, 981, 982, 3, 142, 71, 0, 982, 983, 3, 166, 83, 0, 983, 139, 1, 0, 0, 0, 984, 995, 3, 228, 114, 0, 985, 995, 5, 35, 0, 0, 986, 995, 5, 34, 0, 0, 987, 995, 5, 33, 0, 0, 988, 995, 5, 1, 0, 0, 989, 995, 5, 38, 0, 0, 990, 995, 5, 18, 0, 0, 991, 995, 5, 42, 0, 0, 992, 995, 5, 30, 0, 0, 993, 995, 5, 39, 0, 0, 994, 984, 1, 0, 0, 0, 994, 985, 1, 0, 0, 0, 994, 986, 1, 0, 0, 0, 994, 987, 1, 0, 0, 0, 994, 988, 1, 0, 0, 0, 994, 989, 1, 0, 0, 0, 994, 990, 1, 0, 0, 0, 994, 991, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 993, 1, 0, 0, 0, 995, 141, 1, 0, 0, 0, 996, 997, 3, 144, 72, 0, 997, 999, 3, 146, 73, 0, 998, 1000, 3, 160, 80, 0, 999, 998, 1, 0, 0, 0, 999, 1000, 1, 0, 0, 0, 1000, 1014, 1, 0, 0, 0, 1001, 1005, 3, 86, 43, 0, 1002, 1004, 3, 228, 114, 0, 1003, 1002, 1, 0, 0, 0, 1004, 1007, 1, 0, 0, 0, 1005, 1003, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1008, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1008, 1009, 3, 144, 72, 0, 1009, 1011, 3, 146, 73, 0, 1010, 1012, 3, 160, 80, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1014, 1, 0, 0, 0, 1013, 996, 1, 0, 0, 0, 1013, 1001, 1, 0, 0, 0, 1014, 143, 1, 0, 0, 0, 1015, 1018, 3, 114, 57, 0, 1016, 1018, 5, 48, 0, 0, 1017, 1015, 1, 0, 0, 0, 1017, 1016, 1, 0, 0, 0, 1018, 145, 1, 0, 0, 0, 1019, 1020, 5, 102, 0, 0, 1020, 1022, 5, 57, 0, 0, 1021, 1023, 3, 148, 74, 0, 1022, 1021, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1026, 5, 58, 0, 0, 1025, 1027, 3, 30, 15, 0, 1026, 1025, 1, 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 147, 1, 0, 0, 0, 1028, 1035, 3, 158, 79, 0, 1029, 1030, 3, 150, 75, 0, 1030, 1031, 5, 64, 0, 0, 1031, 1032, 3, 156, 78, 0, 1032, 1035, 1, 0, 0, 0, 1033, 1035, 3, 156, 78, 0, 1034, 1028, 1, 0, 0, 0, 1034, 1029, 1, 0, 0, 0, 1034, 1033, 1, 0, 0, 0, 1035, 149, 1, 0, 0, 0, 1036, 1041, 3, 152, 76, 0, 1037, 1038, 5, 64, 0, 0, 1038, 1040, 3, 152, 76, 0, 1039, 1037, 1, 0, 0, 0, 1040, 1043, 1, 0, 0, 0, 1041, 1039, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1053, 1, 0, 0, 0, 1043, 1041, 1, 0, 0, 0, 1044, 1049, 3, 158, 79, 0, 1045, 1046, 5, 64, 0, 0, 1046, 1048, 3, 152, 76, 0, 1047, 1045, 1, 0, 0, 0, 1048, 1051, 1, 0, 0, 0, 1049, 1047, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1053, 1, 0, 0, 0, 1051, 1049, 1, 0, 0, 0, 1052, 1036, 1, 0, 0, 0, 1052, 1044, 1, 0, 0, 0, 1053, 151, 1, 0, 0, 0, 1054, 1056, 3, 154, 77, 0, 1055, 1054, 1, 0, 0, 0, 1056, 1059, 1, 0, 0, 0, 1057, 1055, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1060, 1, 0, 0, 0, 1059, 1057, 1, 0, 0, 0, 1060, 1061, 3, 114, 57, 0, 1061, 1062, 3, 110, 55, 0, 1062, 153, 1, 0, 0, 0, 1063, 1066, 3, 228, 114, 0, 1064, 1066, 5, 18, 0, 0, 1065, 1063, 1, 0, 0, 0, 1065, 1064, 1, 0, 0, 0, 1066, 155, 1, 0, 0, 0, 1067, 1069, 3, 154, 77, 0, 1068, 1067, 1, 0, 0, 0, 1069, 1072, 1, 0, 0, 0, 1070, 1068, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1073, 1, 0, 0, 0, 1072, 1070, 1, 0, 0, 0, 1073, 1077, 3, 114, 57, 0, 1074, 1076, 3, 228, 114, 0, 1075, 1074, 1, 0, 0, 0, 1076, 1079, 1, 0, 0, 0, 1077, 1075, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1080, 1, 0, 0, 0, 1079, 1077, 1, 0, 0, 0, 1080, 1081, 5, 104, 0, 0, 1081, 1082, 3, 110, 55, 0, 1082, 1085, 1, 0, 0, 0, 1083, 1085, 3, 152, 76, 0, 1084, 1070, 1, 0, 0, 0, 1084, 1083, 1, 0, 0, 0, 1085, 157, 1, 0, 0, 0, 1086, 1088, 3, 228, 114, 0, 1087, 1086, 1, 0, 0, 0, 1088, 1091, 1, 0, 0, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1092, 1095, 3, 114, 57, 0, 1093, 1094, 5, 102, 0, 0, 1094, 1096, 5, 65, 0, 0, 1095, 1093, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 1098, 5, 43, 0, 0, 1098, 159, 1, 0, 0, 0, 1099, 1100, 5, 45, 0, 0, 1100, 1101, 3, 162, 81, 0, 1101, 161, 1, 0, 0, 0, 1102, 1107, 3, 164, 82, 0, 1103, 1104, 5, 64, 0, 0, 1104, 1106, 3, 164, 82, 0, 1105, 1103, 1, 0, 0, 0, 1106, 1109, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 163, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1113, 3, 14, 7, 0, 1111, 1113, 3, 26, 13, 0, 1112, 1110, 1, 0, 0, 0, 1112, 1111, 1, 0, 0, 0, 1113, 165, 1, 0, 0, 0, 1114, 1117, 3, 250, 125, 0, 1115, 1117, 5, 63, 0, 0, 1116, 1114, 1, 0, 0, 0, 1116, 1115, 1, 0, 0, 0, 1117, 167, 1, 0, 0, 0, 1118, 1119, 3, 250, 125, 0, 1119, 169, 1, 0, 0, 0, 1120, 1121, 5, 38, 0, 0, 1121, 1122, 3, 250, 125, 0, 1122, 171, 1, 0, 0, 0, 1123, 1125, 3, 174, 87, 0, 1124, 1123, 1, 0, 0, 0, 1125, 1128, 1, 0, 0, 0, 1126, 1124, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1129, 1, 0, 0, 0, 1128, 1126, 1, 0, 0, 0, 1129, 1131, 3, 176, 88, 0, 1130, 1132, 3, 160, 80, 0, 1131, 1130, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1134, 3, 180, 90, 0, 1134, 173, 1, 0, 0, 0, 1135, 1140, 3, 228, 114, 0, 1136, 1140, 5, 35, 0, 0, 1137, 1140, 5, 34, 0, 0, 1138, 1140, 5, 33, 0, 0, 1139, 1135, 1, 0, 0, 0, 1139, 1136, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1139, 1138, 1, 0, 0, 0, 1140, 175, 1, 0, 0, 0, 1141, 1143, 3, 86, 43, 0, 1142, 1141, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1145, 3, 178, 89, 0, 1145, 1147, 5, 57, 0, 0, 1146, 1148, 3, 148, 74, 0, 1147, 1146, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 1150, 5, 58, 0, 0, 1150, 177, 1, 0, 0, 0, 1151, 1152, 5, 102, 0, 0, 1152, 179, 1, 0, 0, 0, 1153, 1155, 5, 59, 0, 0, 1154, 1156, 3, 182, 91, 0, 1155, 1154, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1158, 1, 0, 0, 0, 1157, 1159, 3, 252, 126, 0, 1158, 1157, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1161, 5, 60, 0, 0, 1161, 181, 1, 0, 0, 0, 1162, 1164, 3, 40, 20, 0, 1163, 1162, 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, 5, 43, 0, 0, 1166, 1168, 5, 57, 0, 0, 1167, 1169, 3, 396, 198, 0, 1168, 1167, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1171, 5, 58, 0, 0, 1171, 1209, 5, 63, 0, 0, 1172, 1174, 3, 40, 20, 0, 1173, 1172, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1176, 5, 40, 0, 0, 1176, 1178, 5, 57, 0, 0, 1177, 1179, 3, 396, 198, 0, 1178, 1177, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1180, 1, 0, 0, 0, 1180, 1181, 5, 58, 0, 0, 1181, 1209, 5, 63, 0, 0, 1182, 1183, 3, 56, 28, 0, 1183, 1185, 5, 65, 0, 0, 1184, 1186, 3, 40, 20, 0, 1185, 1184, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1188, 5, 40, 0, 0, 1188, 1190, 5, 57, 0, 0, 1189, 1191, 3, 396, 198, 0, 1190, 1189, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1193, 5, 58, 0, 0, 1193, 1194, 5, 63, 0, 0, 1194, 1209, 1, 0, 0, 0, 1195, 1196, 3, 350, 175, 0, 1196, 1198, 5, 65, 0, 0, 1197, 1199, 3, 40, 20, 0, 1198, 1197, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1201, 5, 40, 0, 0, 1201, 1203, 5, 57, 0, 0, 1202, 1204, 3, 396, 198, 0, 1203, 1202, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1206, 5, 58, 0, 0, 1206, 1207, 5, 63, 0, 0, 1207, 1209, 1, 0, 0, 0, 1208, 1163, 1, 0, 0, 0, 1208, 1173, 1, 0, 0, 0, 1208, 1182, 1, 0, 0, 0, 1208, 1195, 1, 0, 0, 0, 1209, 183, 1, 0, 0, 0, 1210, 1212, 3, 84, 42, 0, 1211, 1210, 1, 0, 0, 0, 1212, 1215, 1, 0, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1216, 1, 0, 0, 0, 1215, 1213, 1, 0, 0, 0, 1216, 1217, 5, 16, 0, 0, 1217, 1219, 5, 102, 0, 0, 1218, 1220, 3, 92, 46, 0, 1219, 1218, 1, 0, 0, 0, 1219, 1220, 1, 0, 0, 0, 1220, 1221, 1, 0, 0, 0, 1221, 1222, 3, 186, 93, 0, 1222, 185, 1, 0, 0, 0, 1223, 1225, 5, 59, 0, 0, 1224, 1226, 3, 188, 94, 0, 1225, 1224, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1228, 1, 0, 0, 0, 1227, 1229, 5, 64, 0, 0, 1228, 1227, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, 1229, 1231, 1, 0, 0, 0, 1230, 1232, 3, 194, 97, 0, 1231, 1230, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1234, 5, 60, 0, 0, 1234, 187, 1, 0, 0, 0, 1235, 1240, 3, 190, 95, 0, 1236, 1237, 5, 64, 0, 0, 1237, 1239, 3, 190, 95, 0, 1238, 1236, 1, 0, 0, 0, 1239, 1242, 1, 0, 0, 0, 1240, 1238, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 189, 1, 0, 0, 0, 1242, 1240, 1, 0, 0, 0, 1243, 1245, 3, 192, 96, 0, 1244, 1243, 1, 0, 0, 0, 1245, 1248, 1, 0, 0, 0, 1246, 1244, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1249, 1, 0, 0, 0, 1248, 1246, 1, 0, 0, 0, 1249, 1255, 5, 102, 0, 0, 1250, 1252, 5, 57, 0, 0, 1251, 1253, 3, 396, 198, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1256, 5, 58, 0, 0, 1255, 1250, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1258, 1, 0, 0, 0, 1257, 1259, 3, 96, 48, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 191, 1, 0, 0, 0, 1260, 1261, 3, 228, 114, 0, 1261, 193, 1, 0, 0, 0, 1262, 1266, 5, 63, 0, 0, 1263, 1265, 3, 98, 49, 0, 1264, 1263, 1, 0, 0, 0, 1265, 1268, 1, 0, 0, 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 195, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1269, 1272, 3, 198, 99, 0, 1270, 1272, 3, 216, 108, 0, 1271, 1269, 1, 0, 0, 0, 1271, 1270, 1, 0, 0, 0, 1272, 197, 1, 0, 0, 0, 1273, 1275, 3, 200, 100, 0, 1274, 1273, 1, 0, 0, 0, 1275, 1278, 1, 0, 0, 0, 1276, 1274, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1279, 1, 0, 0, 0, 1278, 1276, 1, 0, 0, 0, 1279, 1280, 5, 28, 0, 0, 1280, 1282, 5, 102, 0, 0, 1281, 1283, 3, 86, 43, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1285, 1, 0, 0, 0, 1284, 1286, 3, 202, 101, 0, 1285, 1284, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1288, 3, 204, 102, 0, 1288, 199, 1, 0, 0, 0, 1289, 1297, 3, 228, 114, 0, 1290, 1297, 5, 35, 0, 0, 1291, 1297, 5, 34, 0, 0, 1292, 1297, 5, 33, 0, 0, 1293, 1297, 5, 1, 0, 0, 1294, 1297, 5, 38, 0, 0, 1295, 1297, 5, 39, 0, 0, 1296, 1289, 1, 0, 0, 0, 1296, 1290, 1, 0, 0, 0, 1296, 1291, 1, 0, 0, 0, 1296, 1292, 1, 0, 0, 0, 1296, 1293, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 201, 1, 0, 0, 0, 1298, 1299, 5, 17, 0, 0, 1299, 1300, 3, 94, 47, 0, 1300, 203, 1, 0, 0, 0, 1301, 1305, 5, 59, 0, 0, 1302, 1304, 3, 206, 103, 0, 1303, 1302, 1, 0, 0, 0, 1304, 1307, 1, 0, 0, 0, 1305, 1303, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1308, 1, 0, 0, 0, 1307, 1305, 1, 0, 0, 0, 1308, 1309, 5, 60, 0, 0, 1309, 205, 1, 0, 0, 0, 1310, 1316, 3, 208, 104, 0, 1311, 1316, 3, 212, 106, 0, 1312, 1316, 3, 80, 40, 0, 1313, 1316, 3, 196, 98, 0, 1314, 1316, 5, 63, 0, 0, 1315, 1310, 1, 0, 0, 0, 1315, 1311, 1, 0, 0, 0, 1315, 1312, 1, 0, 0, 0, 1315, 1313, 1, 0, 0, 0, 1315, 1314, 1, 0, 0, 0, 1316, 207, 1, 0, 0, 0, 1317, 1319, 3, 210, 105, 0, 1318, 1317, 1, 0, 0, 0, 1319, 1322, 1, 0, 0, 0, 1320, 1318, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1323, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1323, 1324, 3, 114, 57, 0, 1324, 1325, 3, 106, 53, 0, 1325, 1326, 5, 63, 0, 0, 1326, 209, 1, 0, 0, 0, 1327, 1332, 3, 228, 114, 0, 1328, 1332, 5, 35, 0, 0, 1329, 1332, 5, 38, 0, 0, 1330, 1332, 5, 18, 0, 0, 1331, 1327, 1, 0, 0, 0, 1331, 1328, 1, 0, 0, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1330, 1, 0, 0, 0, 1332, 211, 1, 0, 0, 0, 1333, 1335, 3, 214, 107, 0, 1334, 1333, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1339, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1340, 3, 142, 71, 0, 1340, 1341, 3, 166, 83, 0, 1341, 213, 1, 0, 0, 0, 1342, 1349, 3, 228, 114, 0, 1343, 1349, 5, 35, 0, 0, 1344, 1349, 5, 1, 0, 0, 1345, 1349, 5, 12, 0, 0, 1346, 1349, 5, 38, 0, 0, 1347, 1349, 5, 39, 0, 0, 1348, 1342, 1, 0, 0, 0, 1348, 1343, 1, 0, 0, 0, 1348, 1344, 1, 0, 0, 0, 1348, 1345, 1, 0, 0, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1347, 1, 0, 0, 0, 1349, 215, 1, 0, 0, 0, 1350, 1352, 3, 200, 100, 0, 1351, 1350, 1, 0, 0, 0, 1352, 1355, 1, 0, 0, 0, 1353, 1351, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1356, 1, 0, 0, 0, 1355, 1353, 1, 0, 0, 0, 1356, 1357, 5, 103, 0, 0, 1357, 1358, 5, 28, 0, 0, 1358, 1359, 5, 102, 0, 0, 1359, 1360, 3, 218, 109, 0, 1360, 217, 1, 0, 0, 0, 1361, 1365, 5, 59, 0, 0, 1362, 1364, 3, 220, 110, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1367, 1, 0, 0, 0, 1365, 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, 1365, 1, 0, 0, 0, 1368, 1369, 5, 60, 0, 0, 1369, 219, 1, 0, 0, 0, 1370, 1376, 3, 222, 111, 0, 1371, 1376, 3, 208, 104, 0, 1372, 1376, 3, 80, 40, 0, 1373, 1376, 3, 196, 98, 0, 1374, 1376, 5, 63, 0, 0, 1375, 1370, 1, 0, 0, 0, 1375, 1371, 1, 0, 0, 0, 1375, 1372, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1374, 1, 0, 0, 0, 1376, 221, 1, 0, 0, 0, 1377, 1379, 3, 224, 112, 0, 1378, 1377, 1, 0, 0, 0, 1379, 1382, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1383, 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1384, 3, 114, 57, 0, 1384, 1385, 5, 102, 0, 0, 1385, 1386, 5, 57, 0, 0, 1386, 1388, 5, 58, 0, 0, 1387, 1389, 3, 30, 15, 0, 1388, 1387, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 1, 0, 0, 0, 1390, 1392, 3, 226, 113, 0, 1391, 1390, 1, 0, 0, 0, 1391, 1392, 1, 0, 0, 0, 1392, 1393, 1, 0, 0, 0, 1393, 1394, 5, 63, 0, 0, 1394, 223, 1, 0, 0, 0, 1395, 1399, 3, 228, 114, 0, 1396, 1399, 5, 35, 0, 0, 1397, 1399, 5, 1, 0, 0, 1398, 1395, 1, 0, 0, 0, 1398, 1396, 1, 0, 0, 0, 1398, 1397, 1, 0, 0, 0, 1399, 225, 1, 0, 0, 0, 1400, 1401, 5, 12, 0, 0, 1401, 1402, 3, 236, 118, 0, 1402, 227, 1, 0, 0, 0, 1403, 1407, 3, 230, 115, 0, 1404, 1407, 3, 242, 121, 0, 1405, 1407, 3, 244, 122, 0, 1406, 1403, 1, 0, 0, 0, 1406, 1404, 1, 0, 0, 0, 1406, 1405, 1, 0, 0, 0, 1407, 229, 1, 0, 0, 0, 1408, 1409, 5, 103, 0, 0, 1409, 1410, 3, 52, 26, 0, 1410, 1412, 5, 57, 0, 0, 1411, 1413, 3, 232, 116, 0, 1412, 1411, 1, 0, 0, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 5, 58, 0, 0, 1415, 231, 1, 0, 0, 0, 1416, 1421, 3, 234, 117, 0, 1417, 1418, 5, 64, 0, 0, 1418, 1420, 3, 234, 117, 0, 1419, 1417, 1, 0, 0, 0, 1420, 1423, 1, 0, 0, 0, 1421, 1419, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 233, 1, 0, 0, 0, 1423, 1421, 1, 0, 0, 0, 1424, 1425, 5, 102, 0, 0, 1425, 1426, 5, 66, 0, 0, 1426, 1427, 3, 236, 118, 0, 1427, 235, 1, 0, 0, 0, 1428, 1432, 3, 430, 215, 0, 1429, 1432, 3, 238, 119, 0, 1430, 1432, 3, 228, 114, 0, 1431, 1428, 1, 0, 0, 0, 1431, 1429, 1, 0, 0, 0, 1431, 1430, 1, 0, 0, 0, 1432, 237, 1, 0, 0, 0, 1433, 1435, 5, 59, 0, 0, 1434, 1436, 3, 240, 120, 0, 1435, 1434, 1, 0, 0, 0, 1435, 1436, 1, 0, 0, 0, 1436, 1438, 1, 0, 0, 0, 1437, 1439, 5, 64, 0, 0, 1438, 1437, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1441, 5, 60, 0, 0, 1441, 239, 1, 0, 0, 0, 1442, 1447, 3, 236, 118, 0, 1443, 1444, 5, 64, 0, 0, 1444, 1446, 3, 236, 118, 0, 1445, 1443, 1, 0, 0, 0, 1446, 1449, 1, 0, 0, 0, 1447, 1445, 1, 0, 0, 0, 1447, 1448, 1, 0, 0, 0, 1448, 241, 1, 0, 0, 0, 1449, 1447, 1, 0, 0, 0, 1450, 1451, 5, 103, 0, 0, 1451, 1452, 3, 52, 26, 0, 1452, 243, 1, 0, 0, 0, 1453, 1454, 5, 103, 0, 0, 1454, 1455, 3, 52, 26, 0, 1455, 1456, 5, 57, 0, 0, 1456, 1457, 3, 236, 118, 0, 1457, 1458, 5, 58, 0, 0, 1458, 245, 1, 0, 0, 0, 1459, 1461, 5, 59, 0, 0, 1460, 1462, 3, 248, 124, 0, 1461, 1460, 1, 0, 0, 0, 1461, 1462, 1, 0, 0, 0, 1462, 1464, 1, 0, 0, 0, 1463, 1465, 5, 64, 0, 0, 1464, 1463, 1, 0, 0, 0, 1464, 1465, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1467, 5, 60, 0, 0, 1467, 247, 1, 0, 0, 0, 1468, 1473, 3, 112, 56, 0, 1469, 1470, 5, 64, 0, 0, 1470, 1472, 3, 112, 56, 0, 1471, 1469, 1, 0, 0, 0, 1472, 1475, 1, 0, 0, 0, 1473, 1471, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 249, 1, 0, 0, 0, 1475, 1473, 1, 0, 0, 0, 1476, 1478, 5, 59, 0, 0, 1477, 1479, 3, 252, 126, 0, 1478, 1477, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1481, 5, 60, 0, 0, 1481, 251, 1, 0, 0, 0, 1482, 1484, 3, 254, 127, 0, 1483, 1482, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 253, 1, 0, 0, 0, 1487, 1491, 3, 256, 128, 0, 1488, 1491, 3, 80, 40, 0, 1489, 1491, 3, 260, 130, 0, 1490, 1487, 1, 0, 0, 0, 1490, 1488, 1, 0, 0, 0, 1490, 1489, 1, 0, 0, 0, 1491, 255, 1, 0, 0, 0, 1492, 1493, 3, 258, 129, 0, 1493, 1494, 5, 63, 0, 0, 1494, 257, 1, 0, 0, 0, 1495, 1497, 3, 154, 77, 0, 1496, 1495, 1, 0, 0, 0, 1497, 1500, 1, 0, 0, 0, 1498, 1496, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1501, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1501, 1502, 3, 114, 57, 0, 1502, 1503, 3, 106, 53, 0, 1503, 259, 1, 0, 0, 0, 1504, 1511, 3, 264, 132, 0, 1505, 1511, 3, 268, 134, 0, 1506, 1511, 3, 276, 138, 0, 1507, 1511, 3, 278, 139, 0, 1508, 1511, 3, 296, 148, 0, 1509, 1511, 3, 302, 151, 0, 1510, 1504, 1, 0, 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, 261, 1, 0, 0, 0, 1512, 1518, 3, 264, 132, 0, 1513, 1518, 3, 270, 135, 0, 1514, 1518, 3, 280, 140, 0, 1515, 1518, 3, 298, 149, 0, 1516, 1518, 3, 304, 152, 0, 1517, 1512, 1, 0, 0, 0, 1517, 1513, 1, 0, 0, 0, 1517, 1514, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1516, 1, 0, 0, 0, 1518, 263, 1, 0, 0, 0, 1519, 1532, 3, 250, 125, 0, 1520, 1532, 3, 266, 133, 0, 1521, 1532, 3, 272, 136, 0, 1522, 1532, 3, 282, 141, 0, 1523, 1532, 3, 284, 142, 0, 1524, 1532, 3, 300, 150, 0, 1525, 1532, 3, 320, 160, 0, 1526, 1532, 3, 322, 161, 0, 1527, 1532, 3, 324, 162, 0, 1528, 1532, 3, 328, 164, 0, 1529, 1532, 3, 326, 163, 0, 1530, 1532, 3, 330, 165, 0, 1531, 1519, 1, 0, 0, 0, 1531, 1520, 1, 0, 0, 0, 1531, 1521, 1, 0, 0, 0, 1531, 1522, 1, 0, 0, 0, 1531, 1523, 1, 0, 0, 0, 1531, 1524, 1, 0, 0, 0, 1531, 1525, 1, 0, 0, 0, 1531, 1526, 1, 0, 0, 0, 1531, 1527, 1, 0, 0, 0, 1531, 1528, 1, 0, 0, 0, 1531, 1529, 1, 0, 0, 0, 1531, 1530, 1, 0, 0, 0, 1532, 265, 1, 0, 0, 0, 1533, 1534, 5, 63, 0, 0, 1534, 267, 1, 0, 0, 0, 1535, 1536, 5, 102, 0, 0, 1536, 1537, 5, 72, 0, 0, 1537, 1538, 3, 260, 130, 0, 1538, 269, 1, 0, 0, 0, 1539, 1540, 5, 102, 0, 0, 1540, 1541, 5, 72, 0, 0, 1541, 1542, 3, 262, 131, 0, 1542, 271, 1, 0, 0, 0, 1543, 1544, 3, 274, 137, 0, 1544, 1545, 5, 63, 0, 0, 1545, 273, 1, 0, 0, 0, 1546, 1554, 3, 424, 212, 0, 1547, 1554, 3, 454, 227, 0, 1548, 1554, 3, 456, 228, 0, 1549, 1554, 3, 462, 231, 0, 1550, 1554, 3, 466, 233, 0, 1551, 1554, 3, 390, 195, 0, 1552, 1554, 3, 370, 185, 0, 1553, 1546, 1, 0, 0, 0, 1553, 1547, 1, 0, 0, 0, 1553, 1548, 1, 0, 0, 0, 1553, 1549, 1, 0, 0, 0, 1553, 1550, 1, 0, 0, 0, 1553, 1551, 1, 0, 0, 0, 1553, 1552, 1, 0, 0, 0, 1554, 275, 1, 0, 0, 0, 1555, 1556, 5, 22, 0, 0, 1556, 1557, 5, 57, 0, 0, 1557, 1558, 3, 412, 206, 0, 1558, 1559, 5, 58, 0, 0, 1559, 1560, 3, 260, 130, 0, 1560, 277, 1, 0, 0, 0, 1561, 1562, 5, 22, 0, 0, 1562, 1563, 5, 57, 0, 0, 1563, 1564, 3, 412, 206, 0, 1564, 1565, 5, 58, 0, 0, 1565, 1566, 3, 262, 131, 0, 1566, 1567, 5, 15, 0, 0, 1567, 1568, 3, 260, 130, 0, 1568, 279, 1, 0, 0, 0, 1569, 1570, 5, 22, 0, 0, 1570, 1571, 5, 57, 0, 0, 1571, 1572, 3, 412, 206, 0, 1572, 1573, 5, 58, 0, 0, 1573, 1574, 3, 262, 131, 0, 1574, 1575, 5, 15, 0, 0, 1575, 1576, 3, 262, 131, 0, 1576, 281, 1, 0, 0, 0, 1577, 1578, 5, 2, 0, 0, 1578, 1579, 3, 412, 206, 0, 1579, 1580, 5, 63, 0, 0, 1580, 1588, 1, 0, 0, 0, 1581, 1582, 5, 2, 0, 0, 1582, 1583, 3, 412, 206, 0, 1583, 1584, 5, 72, 0, 0, 1584, 1585, 3, 412, 206, 0, 1585, 1586, 5, 63, 0, 0, 1586, 1588, 1, 0, 0, 0, 1587, 1577, 1, 0, 0, 0, 1587, 1581, 1, 0, 0, 0, 1588, 283, 1, 0, 0, 0, 1589, 1590, 5, 41, 0, 0, 1590, 1591, 5, 57, 0, 0, 1591, 1592, 3, 412, 206, 0, 1592, 1593, 5, 58, 0, 0, 1593, 1594, 3, 286, 143, 0, 1594, 285, 1, 0, 0, 0, 1595, 1599, 5, 59, 0, 0, 1596, 1598, 3, 288, 144, 0, 1597, 1596, 1, 0, 0, 0, 1598, 1601, 1, 0, 0, 0, 1599, 1597, 1, 0, 0, 0, 1599, 1600, 1, 0, 0, 0, 1600, 1605, 1, 0, 0, 0, 1601, 1599, 1, 0, 0, 0, 1602, 1604, 3, 292, 146, 0, 1603, 1602, 1, 0, 0, 0, 1604, 1607, 1, 0, 0, 0, 1605, 1603, 1, 0, 0, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1608, 1, 0, 0, 0, 1607, 1605, 1, 0, 0, 0, 1608, 1609, 5, 60, 0, 0, 1609, 287, 1, 0, 0, 0, 1610, 1611, 3, 290, 145, 0, 1611, 1612, 3, 252, 126, 0, 1612, 289, 1, 0, 0, 0, 1613, 1617, 3, 292, 146, 0, 1614, 1616, 3, 292, 146, 0, 1615, 1614, 1, 0, 0, 0, 1616, 1619, 1, 0, 0, 0, 1617, 1615, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 291, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1621, 5, 6, 0, 0, 1621, 1622, 3, 410, 205, 0, 1622, 1623, 5, 72, 0, 0, 1623, 1631, 1, 0, 0, 0, 1624, 1625, 5, 6, 0, 0, 1625, 1626, 3, 294, 147, 0, 1626, 1627, 5, 72, 0, 0, 1627, 1631, 1, 0, 0, 0, 1628, 1629, 5, 12, 0, 0, 1629, 1631, 5, 72, 0, 0, 1630, 1620, 1, 0, 0, 0, 1630, 1624, 1, 0, 0, 0, 1630, 1628, 1, 0, 0, 0, 1631, 293, 1, 0, 0, 0, 1632, 1633, 5, 102, 0, 0, 1633, 295, 1, 0, 0, 0, 1634, 1635, 5, 50, 0, 0, 1635, 1636, 5, 57, 0, 0, 1636, 1637, 3, 412, 206, 0, 1637, 1638, 5, 58, 0, 0, 1638, 1639, 3, 260, 130, 0, 1639, 297, 1, 0, 0, 0, 1640, 1641, 5, 50, 0, 0, 1641, 1642, 5, 57, 0, 0, 1642, 1643, 3, 412, 206, 0, 1643, 1644, 5, 58, 0, 0, 1644, 1645, 3, 262, 131, 0, 1645, 299, 1, 0, 0, 0, 1646, 1647, 5, 13, 0, 0, 1647, 1648, 3, 260, 130, 0, 1648, 1649, 5, 50, 0, 0, 1649, 1650, 5, 57, 0, 0, 1650, 1651, 3, 412, 206, 0, 1651, 1652, 5, 58, 0, 0, 1652, 1653, 5, 63, 0, 0, 1653, 301, 1, 0, 0, 0, 1654, 1657, 3, 306, 153, 0, 1655, 1657, 3, 316, 158, 0, 1656, 1654, 1, 0, 0, 0, 1656, 1655, 1, 0, 0, 0, 1657, 303, 1, 0, 0, 0, 1658, 1661, 3, 308, 154, 0, 1659, 1661, 3, 318, 159, 0, 1660, 1658, 1, 0, 0, 0, 1660, 1659, 1, 0, 0, 0, 1661, 305, 1, 0, 0, 0, 1662, 1663, 5, 21, 0, 0, 1663, 1665, 5, 57, 0, 0, 1664, 1666, 3, 310, 155, 0, 1665, 1664, 1, 0, 0, 0, 1665, 1666, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1669, 5, 63, 0, 0, 1668, 1670, 3, 412, 206, 0, 1669, 1668, 1, 0, 0, 0, 1669, 1670, 1, 0, 0, 0, 1670, 1671, 1, 0, 0, 0, 1671, 1673, 5, 63, 0, 0, 1672, 1674, 3, 312, 156, 0, 1673, 1672, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1676, 5, 58, 0, 0, 1676, 1677, 3, 260, 130, 0, 1677, 307, 1, 0, 0, 0, 1678, 1679, 5, 21, 0, 0, 1679, 1681, 5, 57, 0, 0, 1680, 1682, 3, 310, 155, 0, 1681, 1680, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 1685, 5, 63, 0, 0, 1684, 1686, 3, 412, 206, 0, 1685, 1684, 1, 0, 0, 0, 1685, 1686, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1687, 1689, 5, 63, 0, 0, 1688, 1690, 3, 312, 156, 0, 1689, 1688, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1692, 5, 58, 0, 0, 1692, 1693, 3, 262, 131, 0, 1693, 309, 1, 0, 0, 0, 1694, 1697, 3, 314, 157, 0, 1695, 1697, 3, 258, 129, 0, 1696, 1694, 1, 0, 0, 0, 1696, 1695, 1, 0, 0, 0, 1697, 311, 1, 0, 0, 0, 1698, 1699, 3, 314, 157, 0, 1699, 313, 1, 0, 0, 0, 1700, 1705, 3, 274, 137, 0, 1701, 1702, 5, 64, 0, 0, 1702, 1704, 3, 274, 137, 0, 1703, 1701, 1, 0, 0, 0, 1704, 1707, 1, 0, 0, 0, 1705, 1703, 1, 0, 0, 0, 1705, 1706, 1, 0, 0, 0, 1706, 315, 1, 0, 0, 0, 1707, 1705, 1, 0, 0, 0, 1708, 1709, 5, 21, 0, 0, 1709, 1713, 5, 57, 0, 0, 1710, 1712, 3, 154, 77, 0, 1711, 1710, 1, 0, 0, 0, 1712, 1715, 1, 0, 0, 0, 1713, 1711, 1, 0, 0, 0, 1713, 1714, 1, 0, 0, 0, 1714, 1716, 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1716, 1717, 3, 114, 57, 0, 1717, 1718, 3, 110, 55, 0, 1718, 1719, 5, 72, 0, 0, 1719, 1720, 3, 412, 206, 0, 1720, 1721, 5, 58, 0, 0, 1721, 1722, 3, 260, 130, 0, 1722, 317, 1, 0, 0, 0, 1723, 1724, 5, 21, 0, 0, 1724, 1728, 5, 57, 0, 0, 1725, 1727, 3, 154, 77, 0, 1726, 1725, 1, 0, 0, 0, 1727, 1730, 1, 0, 0, 0, 1728, 1726, 1, 0, 0, 0, 1728, 1729, 1, 0, 0, 0, 1729, 1731, 1, 0, 0, 0, 1730, 1728, 1, 0, 0, 0, 1731, 1732, 3, 114, 57, 0, 1732, 1733, 3, 110, 55, 0, 1733, 1734, 5, 72, 0, 0, 1734, 1735, 3, 412, 206, 0, 1735, 1736, 5, 58, 0, 0, 1736, 1737, 3, 262, 131, 0, 1737, 319, 1, 0, 0, 0, 1738, 1740, 5, 4, 0, 0, 1739, 1741, 5, 102, 0, 0, 1740, 1739, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1743, 5, 63, 0, 0, 1743, 321, 1, 0, 0, 0, 1744, 1746, 5, 11, 0, 0, 1745, 1747, 5, 102, 0, 0, 1746, 1745, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 5, 63, 0, 0, 1749, 323, 1, 0, 0, 0, 1750, 1752, 5, 36, 0, 0, 1751, 1753, 3, 412, 206, 0, 1752, 1751, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 1755, 5, 63, 0, 0, 1755, 325, 1, 0, 0, 0, 1756, 1757, 5, 44, 0, 0, 1757, 1758, 3, 412, 206, 0, 1758, 1759, 5, 63, 0, 0, 1759, 327, 1, 0, 0, 0, 1760, 1761, 5, 42, 0, 0, 1761, 1762, 5, 57, 0, 0, 1762, 1763, 3, 412, 206, 0, 1763, 1764, 5, 58, 0, 0, 1764, 1765, 3, 250, 125, 0, 1765, 329, 1, 0, 0, 0, 1766, 1767, 5, 47, 0, 0, 1767, 1768, 3, 250, 125, 0, 1768, 1769, 3, 332, 166, 0, 1769, 1779, 1, 0, 0, 0, 1770, 1771, 5, 47, 0, 0, 1771, 1773, 3, 250, 125, 0, 1772, 1774, 3, 332, 166, 0, 1773, 1772, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1776, 3, 340, 170, 0, 1776, 1779, 1, 0, 0, 0, 1777, 1779, 3, 342, 171, 0, 1778, 1766, 1, 0, 0, 0, 1778, 1770, 1, 0, 0, 0, 1778, 1777, 1, 0, 0, 0, 1779, 331, 1, 0, 0, 0, 1780, 1784, 3, 334, 167, 0, 1781, 1783, 3, 334, 167, 0, 1782, 1781, 1, 0, 0, 0, 1783, 1786, 1, 0, 0, 0, 1784, 1782, 1, 0, 0, 0, 1784, 1785, 1, 0, 0, 0, 1785, 333, 1, 0, 0, 0, 1786, 1784, 1, 0, 0, 0, 1787, 1788, 5, 7, 0, 0, 1788, 1789, 5, 57, 0, 0, 1789, 1790, 3, 336, 168, 0, 1790, 1791, 5, 58, 0, 0, 1791, 1792, 3, 250, 125, 0, 1792, 335, 1, 0, 0, 0, 1793, 1795, 3, 154, 77, 0, 1794, 1793, 1, 0, 0, 0, 1795, 1798, 1, 0, 0, 0, 1796, 1794, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1799, 1, 0, 0, 0, 1798, 1796, 1, 0, 0, 0, 1799, 1800, 3, 338, 169, 0, 1800, 1801, 3, 110, 55, 0, 1801, 337, 1, 0, 0, 0, 1802, 1807, 3, 122, 61, 0, 1803, 1804, 5, 86, 0, 0, 1804, 1806, 3, 14, 7, 0, 1805, 1803, 1, 0, 0, 0, 1806, 1809, 1, 0, 0, 0, 1807, 1805, 1, 0, 0, 0, 1807, 1808, 1, 0, 0, 0, 1808, 339, 1, 0, 0, 0, 1809, 1807, 1, 0, 0, 0, 1810, 1811, 5, 19, 0, 0, 1811, 1812, 3, 250, 125, 0, 1812, 341, 1, 0, 0, 0, 1813, 1814, 5, 47, 0, 0, 1814, 1815, 3, 344, 172, 0, 1815, 1817, 3, 250, 125, 0, 1816, 1818, 3, 332, 166, 0, 1817, 1816, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1820, 1, 0, 0, 0, 1819, 1821, 3, 340, 170, 0, 1820, 1819, 1, 0, 0, 0, 1820, 1821, 1, 0, 0, 0, 1821, 343, 1, 0, 0, 0, 1822, 1823, 5, 57, 0, 0, 1823, 1825, 3, 346, 173, 0, 1824, 1826, 5, 63, 0, 0, 1825, 1824, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 1827, 1, 0, 0, 0, 1827, 1828, 5, 58, 0, 0, 1828, 345, 1, 0, 0, 0, 1829, 1834, 3, 348, 174, 0, 1830, 1831, 5, 63, 0, 0, 1831, 1833, 3, 348, 174, 0, 1832, 1830, 1, 0, 0, 0, 1833, 1836, 1, 0, 0, 0, 1834, 1832, 1, 0, 0, 0, 1834, 1835, 1, 0, 0, 0, 1835, 347, 1, 0, 0, 0, 1836, 1834, 1, 0, 0, 0, 1837, 1839, 3, 154, 77, 0, 1838, 1837, 1, 0, 0, 0, 1839, 1842, 1, 0, 0, 0, 1840, 1838, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 1843, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, 0, 1843, 1844, 3, 114, 57, 0, 1844, 1845, 3, 110, 55, 0, 1845, 1846, 5, 66, 0, 0, 1846, 1847, 3, 412, 206, 0, 1847, 349, 1, 0, 0, 0, 1848, 1851, 3, 364, 182, 0, 1849, 1851, 3, 404, 202, 0, 1850, 1848, 1, 0, 0, 0, 1850, 1849, 1, 0, 0, 0, 1851, 1855, 1, 0, 0, 0, 1852, 1854, 3, 358, 179, 0, 1853, 1852, 1, 0, 0, 0, 1854, 1857, 1, 0, 0, 0, 1855, 1853, 1, 0, 0, 0, 1855, 1856, 1, 0, 0, 0, 1856, 351, 1, 0, 0, 0, 1857, 1855, 1, 0, 0, 0, 1858, 1888, 3, 0, 0, 0, 1859, 1864, 3, 52, 26, 0, 1860, 1861, 5, 61, 0, 0, 1861, 1863, 5, 62, 0, 0, 1862, 1860, 1, 0, 0, 0, 1863, 1866, 1, 0, 0, 0, 1864, 1862, 1, 0, 0, 0, 1864, 1865, 1, 0, 0, 0, 1865, 1867, 1, 0, 0, 0, 1866, 1864, 1, 0, 0, 0, 1867, 1868, 5, 65, 0, 0, 1868, 1869, 5, 9, 0, 0, 1869, 1888, 1, 0, 0, 0, 1870, 1871, 5, 48, 0, 0, 1871, 1872, 5, 65, 0, 0, 1872, 1888, 5, 9, 0, 0, 1873, 1888, 5, 43, 0, 0, 1874, 1875, 3, 52, 26, 0, 1875, 1876, 5, 65, 0, 0, 1876, 1877, 5, 43, 0, 0, 1877, 1888, 1, 0, 0, 0, 1878, 1879, 5, 57, 0, 0, 1879, 1880, 3, 412, 206, 0, 1880, 1881, 5, 58, 0, 0, 1881, 1888, 1, 0, 0, 0, 1882, 1888, 3, 370, 185, 0, 1883, 1888, 3, 378, 189, 0, 1884, 1888, 3, 384, 192, 0, 1885, 1888, 3, 390, 195, 0, 1886, 1888, 3, 398, 199, 0, 1887, 1858, 1, 0, 0, 0, 1887, 1859, 1, 0, 0, 0, 1887, 1870, 1, 0, 0, 0, 1887, 1873, 1, 0, 0, 0, 1887, 1874, 1, 0, 0, 0, 1887, 1878, 1, 0, 0, 0, 1887, 1882, 1, 0, 0, 0, 1887, 1883, 1, 0, 0, 0, 1887, 1884, 1, 0, 0, 0, 1887, 1885, 1, 0, 0, 0, 1887, 1886, 1, 0, 0, 0, 1888, 353, 1, 0, 0, 0, 1889, 1890, 1, 0, 0, 0, 1890, 355, 1, 0, 0, 0, 1891, 1920, 3, 0, 0, 0, 1892, 1897, 3, 52, 26, 0, 1893, 1894, 5, 61, 0, 0, 1894, 1896, 5, 62, 0, 0, 1895, 1893, 1, 0, 0, 0, 1896, 1899, 1, 0, 0, 0, 1897, 1895, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1900, 1, 0, 0, 0, 1899, 1897, 1, 0, 0, 0, 1900, 1901, 5, 65, 0, 0, 1901, 1902, 5, 9, 0, 0, 1902, 1920, 1, 0, 0, 0, 1903, 1904, 5, 48, 0, 0, 1904, 1905, 5, 65, 0, 0, 1905, 1920, 5, 9, 0, 0, 1906, 1920, 5, 43, 0, 0, 1907, 1908, 3, 52, 26, 0, 1908, 1909, 5, 65, 0, 0, 1909, 1910, 5, 43, 0, 0, 1910, 1920, 1, 0, 0, 0, 1911, 1912, 5, 57, 0, 0, 1912, 1913, 3, 412, 206, 0, 1913, 1914, 5, 58, 0, 0, 1914, 1920, 1, 0, 0, 0, 1915, 1920, 3, 370, 185, 0, 1916, 1920, 3, 378, 189, 0, 1917, 1920, 3, 390, 195, 0, 1918, 1920, 3, 398, 199, 0, 1919, 1891, 1, 0, 0, 0, 1919, 1892, 1, 0, 0, 0, 1919, 1903, 1, 0, 0, 0, 1919, 1906, 1, 0, 0, 0, 1919, 1907, 1, 0, 0, 0, 1919, 1911, 1, 0, 0, 0, 1919, 1915, 1, 0, 0, 0, 1919, 1916, 1, 0, 0, 0, 1919, 1917, 1, 0, 0, 0, 1919, 1918, 1, 0, 0, 0, 1920, 357, 1, 0, 0, 0, 1921, 1927, 3, 372, 186, 0, 1922, 1927, 3, 380, 190, 0, 1923, 1927, 3, 386, 193, 0, 1924, 1927, 3, 392, 196, 0, 1925, 1927, 3, 400, 200, 0, 1926, 1921, 1, 0, 0, 0, 1926, 1922, 1, 0, 0, 0, 1926, 1923, 1, 0, 0, 0, 1926, 1924, 1, 0, 0, 0, 1926, 1925, 1, 0, 0, 0, 1927, 359, 1, 0, 0, 0, 1928, 1929, 1, 0, 0, 0, 1929, 361, 1, 0, 0, 0, 1930, 1935, 3, 372, 186, 0, 1931, 1935, 3, 380, 190, 0, 1932, 1935, 3, 392, 196, 0, 1933, 1935, 3, 400, 200, 0, 1934, 1930, 1, 0, 0, 0, 1934, 1931, 1, 0, 0, 0, 1934, 1932, 1, 0, 0, 0, 1934, 1933, 1, 0, 0, 0, 1935, 363, 1, 0, 0, 0, 1936, 1977, 3, 0, 0, 0, 1937, 1942, 3, 52, 26, 0, 1938, 1939, 5, 61, 0, 0, 1939, 1941, 5, 62, 0, 0, 1940, 1938, 1, 0, 0, 0, 1941, 1944, 1, 0, 0, 0, 1942, 1940, 1, 0, 0, 0, 1942, 1943, 1, 0, 0, 0, 1943, 1945, 1, 0, 0, 0, 1944, 1942, 1, 0, 0, 0, 1945, 1946, 5, 65, 0, 0, 1946, 1947, 5, 9, 0, 0, 1947, 1977, 1, 0, 0, 0, 1948, 1953, 3, 116, 58, 0, 1949, 1950, 5, 61, 0, 0, 1950, 1952, 5, 62, 0, 0, 1951, 1949, 1, 0, 0, 0, 1952, 1955, 1, 0, 0, 0, 1953, 1951, 1, 0, 0, 0, 1953, 1954, 1, 0, 0, 0, 1954, 1956, 1, 0, 0, 0, 1955, 1953, 1, 0, 0, 0, 1956, 1957, 5, 65, 0, 0, 1957, 1958, 5, 9, 0, 0, 1958, 1977, 1, 0, 0, 0, 1959, 1960, 5, 48, 0, 0, 1960, 1961, 5, 65, 0, 0, 1961, 1977, 5, 9, 0, 0, 1962, 1977, 5, 43, 0, 0, 1963, 1964, 3, 52, 26, 0, 1964, 1965, 5, 65, 0, 0, 1965, 1966, 5, 43, 0, 0, 1966, 1977, 1, 0, 0, 0, 1967, 1968, 5, 57, 0, 0, 1968, 1969, 3, 412, 206, 0, 1969, 1970, 5, 58, 0, 0, 1970, 1977, 1, 0, 0, 0, 1971, 1977, 3, 374, 187, 0, 1972, 1977, 3, 382, 191, 0, 1973, 1977, 3, 388, 194, 0, 1974, 1977, 3, 394, 197, 0, 1975, 1977, 3, 402, 201, 0, 1976, 1936, 1, 0, 0, 0, 1976, 1937, 1, 0, 0, 0, 1976, 1948, 1, 0, 0, 0, 1976, 1959, 1, 0, 0, 0, 1976, 1962, 1, 0, 0, 0, 1976, 1963, 1, 0, 0, 0, 1976, 1967, 1, 0, 0, 0, 1976, 1971, 1, 0, 0, 0, 1976, 1972, 1, 0, 0, 0, 1976, 1973, 1, 0, 0, 0, 1976, 1974, 1, 0, 0, 0, 1976, 1975, 1, 0, 0, 0, 1977, 365, 1, 0, 0, 0, 1978, 1979, 1, 0, 0, 0, 1979, 367, 1, 0, 0, 0, 1980, 2020, 3, 0, 0, 0, 1981, 1986, 3, 52, 26, 0, 1982, 1983, 5, 61, 0, 0, 1983, 1985, 5, 62, 0, 0, 1984, 1982, 1, 0, 0, 0, 1985, 1988, 1, 0, 0, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 1989, 1, 0, 0, 0, 1988, 1986, 1, 0, 0, 0, 1989, 1990, 5, 65, 0, 0, 1990, 1991, 5, 9, 0, 0, 1991, 2020, 1, 0, 0, 0, 1992, 1997, 3, 116, 58, 0, 1993, 1994, 5, 61, 0, 0, 1994, 1996, 5, 62, 0, 0, 1995, 1993, 1, 0, 0, 0, 1996, 1999, 1, 0, 0, 0, 1997, 1995, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 2000, 1, 0, 0, 0, 1999, 1997, 1, 0, 0, 0, 2000, 2001, 5, 65, 0, 0, 2001, 2002, 5, 9, 0, 0, 2002, 2020, 1, 0, 0, 0, 2003, 2004, 5, 48, 0, 0, 2004, 2005, 5, 65, 0, 0, 2005, 2020, 5, 9, 0, 0, 2006, 2020, 5, 43, 0, 0, 2007, 2008, 3, 52, 26, 0, 2008, 2009, 5, 65, 0, 0, 2009, 2010, 5, 43, 0, 0, 2010, 2020, 1, 0, 0, 0, 2011, 2012, 5, 57, 0, 0, 2012, 2013, 3, 412, 206, 0, 2013, 2014, 5, 58, 0, 0, 2014, 2020, 1, 0, 0, 0, 2015, 2020, 3, 374, 187, 0, 2016, 2020, 3, 382, 191, 0, 2017, 2020, 3, 394, 197, 0, 2018, 2020, 3, 402, 201, 0, 2019, 1980, 1, 0, 0, 0, 2019, 1981, 1, 0, 0, 0, 2019, 1992, 1, 0, 0, 0, 2019, 2003, 1, 0, 0, 0, 2019, 2006, 1, 0, 0, 0, 2019, 2007, 1, 0, 0, 0, 2019, 2011, 1, 0, 0, 0, 2019, 2015, 1, 0, 0, 0, 2019, 2016, 1, 0, 0, 0, 2019, 2017, 1, 0, 0, 0, 2019, 2018, 1, 0, 0, 0, 2020, 369, 1, 0, 0, 0, 2021, 2023, 5, 31, 0, 0, 2022, 2024, 3, 40, 20, 0, 2023, 2022, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2028, 1, 0, 0, 0, 2025, 2027, 3, 228, 114, 0, 2026, 2025, 1, 0, 0, 0, 2027, 2030, 1, 0, 0, 0, 2028, 2026, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2031, 1, 0, 0, 0, 2030, 2028, 1, 0, 0, 0, 2031, 2042, 5, 102, 0, 0, 2032, 2036, 5, 65, 0, 0, 2033, 2035, 3, 228, 114, 0, 2034, 2033, 1, 0, 0, 0, 2035, 2038, 1, 0, 0, 0, 2036, 2034, 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 2039, 1, 0, 0, 0, 2038, 2036, 1, 0, 0, 0, 2039, 2041, 5, 102, 0, 0, 2040, 2032, 1, 0, 0, 0, 2041, 2044, 1, 0, 0, 0, 2042, 2040, 1, 0, 0, 0, 2042, 2043, 1, 0, 0, 0, 2043, 2046, 1, 0, 0, 0, 2044, 2042, 1, 0, 0, 0, 2045, 2047, 3, 376, 188, 0, 2046, 2045, 1, 0, 0, 0, 2046, 2047, 1, 0, 0, 0, 2047, 2048, 1, 0, 0, 0, 2048, 2050, 5, 57, 0, 0, 2049, 2051, 3, 396, 198, 0, 2050, 2049, 1, 0, 0, 0, 2050, 2051, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 2054, 5, 58, 0, 0, 2053, 2055, 3, 96, 48, 0, 2054, 2053, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2105, 1, 0, 0, 0, 2056, 2057, 3, 56, 28, 0, 2057, 2058, 5, 65, 0, 0, 2058, 2060, 5, 31, 0, 0, 2059, 2061, 3, 40, 20, 0, 2060, 2059, 1, 0, 0, 0, 2060, 2061, 1, 0, 0, 0, 2061, 2065, 1, 0, 0, 0, 2062, 2064, 3, 228, 114, 0, 2063, 2062, 1, 0, 0, 0, 2064, 2067, 1, 0, 0, 0, 2065, 2063, 1, 0, 0, 0, 2065, 2066, 1, 0, 0, 0, 2066, 2068, 1, 0, 0, 0, 2067, 2065, 1, 0, 0, 0, 2068, 2070, 5, 102, 0, 0, 2069, 2071, 3, 376, 188, 0, 2070, 2069, 1, 0, 0, 0, 2070, 2071, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2074, 5, 57, 0, 0, 2073, 2075, 3, 396, 198, 0, 2074, 2073, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2076, 1, 0, 0, 0, 2076, 2078, 5, 58, 0, 0, 2077, 2079, 3, 96, 48, 0, 2078, 2077, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2105, 1, 0, 0, 0, 2080, 2081, 3, 350, 175, 0, 2081, 2082, 5, 65, 0, 0, 2082, 2084, 5, 31, 0, 0, 2083, 2085, 3, 40, 20, 0, 2084, 2083, 1, 0, 0, 0, 2084, 2085, 1, 0, 0, 0, 2085, 2089, 1, 0, 0, 0, 2086, 2088, 3, 228, 114, 0, 2087, 2086, 1, 0, 0, 0, 2088, 2091, 1, 0, 0, 0, 2089, 2087, 1, 0, 0, 0, 2089, 2090, 1, 0, 0, 0, 2090, 2092, 1, 0, 0, 0, 2091, 2089, 1, 0, 0, 0, 2092, 2094, 5, 102, 0, 0, 2093, 2095, 3, 376, 188, 0, 2094, 2093, 1, 0, 0, 0, 2094, 2095, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 2098, 5, 57, 0, 0, 2097, 2099, 3, 396, 198, 0, 2098, 2097, 1, 0, 0, 0, 2098, 2099, 1, 0, 0, 0, 2099, 2100, 1, 0, 0, 0, 2100, 2102, 5, 58, 0, 0, 2101, 2103, 3, 96, 48, 0, 2102, 2101, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 2105, 1, 0, 0, 0, 2104, 2021, 1, 0, 0, 0, 2104, 2056, 1, 0, 0, 0, 2104, 2080, 1, 0, 0, 0, 2105, 371, 1, 0, 0, 0, 2106, 2107, 5, 65, 0, 0, 2107, 2109, 5, 31, 0, 0, 2108, 2110, 3, 40, 20, 0, 2109, 2108, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2114, 1, 0, 0, 0, 2111, 2113, 3, 228, 114, 0, 2112, 2111, 1, 0, 0, 0, 2113, 2116, 1, 0, 0, 0, 2114, 2112, 1, 0, 0, 0, 2114, 2115, 1, 0, 0, 0, 2115, 2117, 1, 0, 0, 0, 2116, 2114, 1, 0, 0, 0, 2117, 2119, 5, 102, 0, 0, 2118, 2120, 3, 376, 188, 0, 2119, 2118, 1, 0, 0, 0, 2119, 2120, 1, 0, 0, 0, 2120, 2121, 1, 0, 0, 0, 2121, 2123, 5, 57, 0, 0, 2122, 2124, 3, 396, 198, 0, 2123, 2122, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, 2127, 5, 58, 0, 0, 2126, 2128, 3, 96, 48, 0, 2127, 2126, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 373, 1, 0, 0, 0, 2129, 2131, 5, 31, 0, 0, 2130, 2132, 3, 40, 20, 0, 2131, 2130, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2136, 1, 0, 0, 0, 2133, 2135, 3, 228, 114, 0, 2134, 2133, 1, 0, 0, 0, 2135, 2138, 1, 0, 0, 0, 2136, 2134, 1, 0, 0, 0, 2136, 2137, 1, 0, 0, 0, 2137, 2139, 1, 0, 0, 0, 2138, 2136, 1, 0, 0, 0, 2139, 2150, 5, 102, 0, 0, 2140, 2144, 5, 65, 0, 0, 2141, 2143, 3, 228, 114, 0, 2142, 2141, 1, 0, 0, 0, 2143, 2146, 1, 0, 0, 0, 2144, 2142, 1, 0, 0, 0, 2144, 2145, 1, 0, 0, 0, 2145, 2147, 1, 0, 0, 0, 2146, 2144, 1, 0, 0, 0, 2147, 2149, 5, 102, 0, 0, 2148, 2140, 1, 0, 0, 0, 2149, 2152, 1, 0, 0, 0, 2150, 2148, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2154, 1, 0, 0, 0, 2152, 2150, 1, 0, 0, 0, 2153, 2155, 3, 376, 188, 0, 2154, 2153, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2156, 2158, 5, 57, 0, 0, 2157, 2159, 3, 396, 198, 0, 2158, 2157, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, 0, 2159, 2160, 1, 0, 0, 0, 2160, 2162, 5, 58, 0, 0, 2161, 2163, 3, 96, 48, 0, 2162, 2161, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2189, 1, 0, 0, 0, 2164, 2165, 3, 56, 28, 0, 2165, 2166, 5, 65, 0, 0, 2166, 2168, 5, 31, 0, 0, 2167, 2169, 3, 40, 20, 0, 2168, 2167, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, 0, 2169, 2173, 1, 0, 0, 0, 2170, 2172, 3, 228, 114, 0, 2171, 2170, 1, 0, 0, 0, 2172, 2175, 1, 0, 0, 0, 2173, 2171, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 2176, 1, 0, 0, 0, 2175, 2173, 1, 0, 0, 0, 2176, 2178, 5, 102, 0, 0, 2177, 2179, 3, 376, 188, 0, 2178, 2177, 1, 0, 0, 0, 2178, 2179, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2182, 5, 57, 0, 0, 2181, 2183, 3, 396, 198, 0, 2182, 2181, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 2184, 1, 0, 0, 0, 2184, 2186, 5, 58, 0, 0, 2185, 2187, 3, 96, 48, 0, 2186, 2185, 1, 0, 0, 0, 2186, 2187, 1, 0, 0, 0, 2187, 2189, 1, 0, 0, 0, 2188, 2129, 1, 0, 0, 0, 2188, 2164, 1, 0, 0, 0, 2189, 375, 1, 0, 0, 0, 2190, 2194, 3, 40, 20, 0, 2191, 2192, 5, 68, 0, 0, 2192, 2194, 5, 67, 0, 0, 2193, 2190, 1, 0, 0, 0, 2193, 2191, 1, 0, 0, 0, 2194, 377, 1, 0, 0, 0, 2195, 2196, 3, 350, 175, 0, 2196, 2197, 5, 65, 0, 0, 2197, 2198, 5, 102, 0, 0, 2198, 2209, 1, 0, 0, 0, 2199, 2200, 5, 40, 0, 0, 2200, 2201, 5, 65, 0, 0, 2201, 2209, 5, 102, 0, 0, 2202, 2203, 3, 52, 26, 0, 2203, 2204, 5, 65, 0, 0, 2204, 2205, 5, 40, 0, 0, 2205, 2206, 5, 65, 0, 0, 2206, 2207, 5, 102, 0, 0, 2207, 2209, 1, 0, 0, 0, 2208, 2195, 1, 0, 0, 0, 2208, 2199, 1, 0, 0, 0, 2208, 2202, 1, 0, 0, 0, 2209, 379, 1, 0, 0, 0, 2210, 2211, 5, 65, 0, 0, 2211, 2212, 5, 102, 0, 0, 2212, 381, 1, 0, 0, 0, 2213, 2214, 5, 40, 0, 0, 2214, 2215, 5, 65, 0, 0, 2215, 2223, 5, 102, 0, 0, 2216, 2217, 3, 52, 26, 0, 2217, 2218, 5, 65, 0, 0, 2218, 2219, 5, 40, 0, 0, 2219, 2220, 5, 65, 0, 0, 2220, 2221, 5, 102, 0, 0, 2221, 2223, 1, 0, 0, 0, 2222, 2213, 1, 0, 0, 0, 2222, 2216, 1, 0, 0, 0, 2223, 383, 1, 0, 0, 0, 2224, 2225, 3, 56, 28, 0, 2225, 2226, 5, 61, 0, 0, 2226, 2227, 3, 412, 206, 0, 2227, 2228, 5, 62, 0, 0, 2228, 2235, 1, 0, 0, 0, 2229, 2230, 3, 356, 178, 0, 2230, 2231, 5, 61, 0, 0, 2231, 2232, 3, 412, 206, 0, 2232, 2233, 5, 62, 0, 0, 2233, 2235, 1, 0, 0, 0, 2234, 2224, 1, 0, 0, 0, 2234, 2229, 1, 0, 0, 0, 2235, 2243, 1, 0, 0, 0, 2236, 2237, 3, 354, 177, 0, 2237, 2238, 5, 61, 0, 0, 2238, 2239, 3, 412, 206, 0, 2239, 2240, 5, 62, 0, 0, 2240, 2242, 1, 0, 0, 0, 2241, 2236, 1, 0, 0, 0, 2242, 2245, 1, 0, 0, 0, 2243, 2241, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 385, 1, 0, 0, 0, 2245, 2243, 1, 0, 0, 0, 2246, 2247, 3, 362, 181, 0, 2247, 2248, 5, 61, 0, 0, 2248, 2249, 3, 412, 206, 0, 2249, 2250, 5, 62, 0, 0, 2250, 2258, 1, 0, 0, 0, 2251, 2252, 3, 360, 180, 0, 2252, 2253, 5, 61, 0, 0, 2253, 2254, 3, 412, 206, 0, 2254, 2255, 5, 62, 0, 0, 2255, 2257, 1, 0, 0, 0, 2256, 2251, 1, 0, 0, 0, 2257, 2260, 1, 0, 0, 0, 2258, 2256, 1, 0, 0, 0, 2258, 2259, 1, 0, 0, 0, 2259, 387, 1, 0, 0, 0, 2260, 2258, 1, 0, 0, 0, 2261, 2262, 3, 56, 28, 0, 2262, 2263, 5, 61, 0, 0, 2263, 2264, 3, 412, 206, 0, 2264, 2265, 5, 62, 0, 0, 2265, 2272, 1, 0, 0, 0, 2266, 2267, 3, 368, 184, 0, 2267, 2268, 5, 61, 0, 0, 2268, 2269, 3, 412, 206, 0, 2269, 2270, 5, 62, 0, 0, 2270, 2272, 1, 0, 0, 0, 2271, 2261, 1, 0, 0, 0, 2271, 2266, 1, 0, 0, 0, 2272, 2280, 1, 0, 0, 0, 2273, 2274, 3, 366, 183, 0, 2274, 2275, 5, 61, 0, 0, 2275, 2276, 3, 412, 206, 0, 2276, 2277, 5, 62, 0, 0, 2277, 2279, 1, 0, 0, 0, 2278, 2273, 1, 0, 0, 0, 2279, 2282, 1, 0, 0, 0, 2280, 2278, 1, 0, 0, 0, 2280, 2281, 1, 0, 0, 0, 2281, 389, 1, 0, 0, 0, 2282, 2280, 1, 0, 0, 0, 2283, 2284, 3, 58, 29, 0, 2284, 2286, 5, 57, 0, 0, 2285, 2287, 3, 396, 198, 0, 2286, 2285, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 2288, 1, 0, 0, 0, 2288, 2289, 5, 58, 0, 0, 2289, 2352, 1, 0, 0, 0, 2290, 2291, 3, 52, 26, 0, 2291, 2293, 5, 65, 0, 0, 2292, 2294, 3, 40, 20, 0, 2293, 2292, 1, 0, 0, 0, 2293, 2294, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2296, 5, 102, 0, 0, 2296, 2298, 5, 57, 0, 0, 2297, 2299, 3, 396, 198, 0, 2298, 2297, 1, 0, 0, 0, 2298, 2299, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2300, 2301, 5, 58, 0, 0, 2301, 2352, 1, 0, 0, 0, 2302, 2303, 3, 56, 28, 0, 2303, 2305, 5, 65, 0, 0, 2304, 2306, 3, 40, 20, 0, 2305, 2304, 1, 0, 0, 0, 2305, 2306, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2308, 5, 102, 0, 0, 2308, 2310, 5, 57, 0, 0, 2309, 2311, 3, 396, 198, 0, 2310, 2309, 1, 0, 0, 0, 2310, 2311, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2313, 5, 58, 0, 0, 2313, 2352, 1, 0, 0, 0, 2314, 2315, 3, 350, 175, 0, 2315, 2317, 5, 65, 0, 0, 2316, 2318, 3, 40, 20, 0, 2317, 2316, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2319, 1, 0, 0, 0, 2319, 2320, 5, 102, 0, 0, 2320, 2322, 5, 57, 0, 0, 2321, 2323, 3, 396, 198, 0, 2322, 2321, 1, 0, 0, 0, 2322, 2323, 1, 0, 0, 0, 2323, 2324, 1, 0, 0, 0, 2324, 2325, 5, 58, 0, 0, 2325, 2352, 1, 0, 0, 0, 2326, 2327, 5, 40, 0, 0, 2327, 2329, 5, 65, 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, 2332, 5, 102, 0, 0, 2332, 2334, 5, 57, 0, 0, 2333, 2335, 3, 396, 198, 0, 2334, 2333, 1, 0, 0, 0, 2334, 2335, 1, 0, 0, 0, 2335, 2336, 1, 0, 0, 0, 2336, 2352, 5, 58, 0, 0, 2337, 2338, 3, 52, 26, 0, 2338, 2339, 5, 65, 0, 0, 2339, 2340, 5, 40, 0, 0, 2340, 2342, 5, 65, 0, 0, 2341, 2343, 3, 40, 20, 0, 2342, 2341, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2344, 1, 0, 0, 0, 2344, 2345, 5, 102, 0, 0, 2345, 2347, 5, 57, 0, 0, 2346, 2348, 3, 396, 198, 0, 2347, 2346, 1, 0, 0, 0, 2347, 2348, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2350, 5, 58, 0, 0, 2350, 2352, 1, 0, 0, 0, 2351, 2283, 1, 0, 0, 0, 2351, 2290, 1, 0, 0, 0, 2351, 2302, 1, 0, 0, 0, 2351, 2314, 1, 0, 0, 0, 2351, 2326, 1, 0, 0, 0, 2351, 2337, 1, 0, 0, 0, 2352, 391, 1, 0, 0, 0, 2353, 2355, 5, 65, 0, 0, 2354, 2356, 3, 40, 20, 0, 2355, 2354, 1, 0, 0, 0, 2355, 2356, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2358, 5, 102, 0, 0, 2358, 2360, 5, 57, 0, 0, 2359, 2361, 3, 396, 198, 0, 2360, 2359, 1, 0, 0, 0, 2360, 2361, 1, 0, 0, 0, 2361, 2362, 1, 0, 0, 0, 2362, 2363, 5, 58, 0, 0, 2363, 393, 1, 0, 0, 0, 2364, 2365, 3, 58, 29, 0, 2365, 2367, 5, 57, 0, 0, 2366, 2368, 3, 396, 198, 0, 2367, 2366, 1, 0, 0, 0, 2367, 2368, 1, 0, 0, 0, 2368, 2369, 1, 0, 0, 0, 2369, 2370, 5, 58, 0, 0, 2370, 2421, 1, 0, 0, 0, 2371, 2372, 3, 52, 26, 0, 2372, 2374, 5, 65, 0, 0, 2373, 2375, 3, 40, 20, 0, 2374, 2373, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 5, 102, 0, 0, 2377, 2379, 5, 57, 0, 0, 2378, 2380, 3, 396, 198, 0, 2379, 2378, 1, 0, 0, 0, 2379, 2380, 1, 0, 0, 0, 2380, 2381, 1, 0, 0, 0, 2381, 2382, 5, 58, 0, 0, 2382, 2421, 1, 0, 0, 0, 2383, 2384, 3, 56, 28, 0, 2384, 2386, 5, 65, 0, 0, 2385, 2387, 3, 40, 20, 0, 2386, 2385, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2389, 5, 102, 0, 0, 2389, 2391, 5, 57, 0, 0, 2390, 2392, 3, 396, 198, 0, 2391, 2390, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2394, 5, 58, 0, 0, 2394, 2421, 1, 0, 0, 0, 2395, 2396, 5, 40, 0, 0, 2396, 2398, 5, 65, 0, 0, 2397, 2399, 3, 40, 20, 0, 2398, 2397, 1, 0, 0, 0, 2398, 2399, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2401, 5, 102, 0, 0, 2401, 2403, 5, 57, 0, 0, 2402, 2404, 3, 396, 198, 0, 2403, 2402, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2421, 5, 58, 0, 0, 2406, 2407, 3, 52, 26, 0, 2407, 2408, 5, 65, 0, 0, 2408, 2409, 5, 40, 0, 0, 2409, 2411, 5, 65, 0, 0, 2410, 2412, 3, 40, 20, 0, 2411, 2410, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2413, 1, 0, 0, 0, 2413, 2414, 5, 102, 0, 0, 2414, 2416, 5, 57, 0, 0, 2415, 2417, 3, 396, 198, 0, 2416, 2415, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2418, 1, 0, 0, 0, 2418, 2419, 5, 58, 0, 0, 2419, 2421, 1, 0, 0, 0, 2420, 2364, 1, 0, 0, 0, 2420, 2371, 1, 0, 0, 0, 2420, 2383, 1, 0, 0, 0, 2420, 2395, 1, 0, 0, 0, 2420, 2406, 1, 0, 0, 0, 2421, 395, 1, 0, 0, 0, 2422, 2427, 3, 412, 206, 0, 2423, 2424, 5, 64, 0, 0, 2424, 2426, 3, 412, 206, 0, 2425, 2423, 1, 0, 0, 0, 2426, 2429, 1, 0, 0, 0, 2427, 2425, 1, 0, 0, 0, 2427, 2428, 1, 0, 0, 0, 2428, 397, 1, 0, 0, 0, 2429, 2427, 1, 0, 0, 0, 2430, 2431, 3, 56, 28, 0, 2431, 2433, 5, 90, 0, 0, 2432, 2434, 3, 40, 20, 0, 2433, 2432, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2436, 5, 102, 0, 0, 2436, 2478, 1, 0, 0, 0, 2437, 2438, 3, 10, 5, 0, 2438, 2440, 5, 90, 0, 0, 2439, 2441, 3, 40, 20, 0, 2440, 2439, 1, 0, 0, 0, 2440, 2441, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2443, 5, 102, 0, 0, 2443, 2478, 1, 0, 0, 0, 2444, 2445, 3, 350, 175, 0, 2445, 2447, 5, 90, 0, 0, 2446, 2448, 3, 40, 20, 0, 2447, 2446, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 2450, 5, 102, 0, 0, 2450, 2478, 1, 0, 0, 0, 2451, 2452, 5, 40, 0, 0, 2452, 2454, 5, 90, 0, 0, 2453, 2455, 3, 40, 20, 0, 2454, 2453, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2456, 1, 0, 0, 0, 2456, 2478, 5, 102, 0, 0, 2457, 2458, 3, 52, 26, 0, 2458, 2459, 5, 65, 0, 0, 2459, 2460, 5, 40, 0, 0, 2460, 2462, 5, 90, 0, 0, 2461, 2463, 3, 40, 20, 0, 2462, 2461, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2464, 1, 0, 0, 0, 2464, 2465, 5, 102, 0, 0, 2465, 2478, 1, 0, 0, 0, 2466, 2467, 3, 14, 7, 0, 2467, 2469, 5, 90, 0, 0, 2468, 2470, 3, 40, 20, 0, 2469, 2468, 1, 0, 0, 0, 2469, 2470, 1, 0, 0, 0, 2470, 2471, 1, 0, 0, 0, 2471, 2472, 5, 31, 0, 0, 2472, 2478, 1, 0, 0, 0, 2473, 2474, 3, 28, 14, 0, 2474, 2475, 5, 90, 0, 0, 2475, 2476, 5, 31, 0, 0, 2476, 2478, 1, 0, 0, 0, 2477, 2430, 1, 0, 0, 0, 2477, 2437, 1, 0, 0, 0, 2477, 2444, 1, 0, 0, 0, 2477, 2451, 1, 0, 0, 0, 2477, 2457, 1, 0, 0, 0, 2477, 2466, 1, 0, 0, 0, 2477, 2473, 1, 0, 0, 0, 2478, 399, 1, 0, 0, 0, 2479, 2481, 5, 90, 0, 0, 2480, 2482, 3, 40, 20, 0, 2481, 2480, 1, 0, 0, 0, 2481, 2482, 1, 0, 0, 0, 2482, 2483, 1, 0, 0, 0, 2483, 2484, 5, 102, 0, 0, 2484, 401, 1, 0, 0, 0, 2485, 2486, 3, 56, 28, 0, 2486, 2488, 5, 90, 0, 0, 2487, 2489, 3, 40, 20, 0, 2488, 2487, 1, 0, 0, 0, 2488, 2489, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 2491, 5, 102, 0, 0, 2491, 2526, 1, 0, 0, 0, 2492, 2493, 3, 10, 5, 0, 2493, 2495, 5, 90, 0, 0, 2494, 2496, 3, 40, 20, 0, 2495, 2494, 1, 0, 0, 0, 2495, 2496, 1, 0, 0, 0, 2496, 2497, 1, 0, 0, 0, 2497, 2498, 5, 102, 0, 0, 2498, 2526, 1, 0, 0, 0, 2499, 2500, 5, 40, 0, 0, 2500, 2502, 5, 90, 0, 0, 2501, 2503, 3, 40, 20, 0, 2502, 2501, 1, 0, 0, 0, 2502, 2503, 1, 0, 0, 0, 2503, 2504, 1, 0, 0, 0, 2504, 2526, 5, 102, 0, 0, 2505, 2506, 3, 52, 26, 0, 2506, 2507, 5, 65, 0, 0, 2507, 2508, 5, 40, 0, 0, 2508, 2510, 5, 90, 0, 0, 2509, 2511, 3, 40, 20, 0, 2510, 2509, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 2512, 1, 0, 0, 0, 2512, 2513, 5, 102, 0, 0, 2513, 2526, 1, 0, 0, 0, 2514, 2515, 3, 14, 7, 0, 2515, 2517, 5, 90, 0, 0, 2516, 2518, 3, 40, 20, 0, 2517, 2516, 1, 0, 0, 0, 2517, 2518, 1, 0, 0, 0, 2518, 2519, 1, 0, 0, 0, 2519, 2520, 5, 31, 0, 0, 2520, 2526, 1, 0, 0, 0, 2521, 2522, 3, 28, 14, 0, 2522, 2523, 5, 90, 0, 0, 2523, 2524, 5, 31, 0, 0, 2524, 2526, 1, 0, 0, 0, 2525, 2485, 1, 0, 0, 0, 2525, 2492, 1, 0, 0, 0, 2525, 2499, 1, 0, 0, 0, 2525, 2505, 1, 0, 0, 0, 2525, 2514, 1, 0, 0, 0, 2525, 2521, 1, 0, 0, 0, 2526, 403, 1, 0, 0, 0, 2527, 2528, 5, 31, 0, 0, 2528, 2529, 3, 2, 1, 0, 2529, 2531, 3, 406, 203, 0, 2530, 2532, 3, 30, 15, 0, 2531, 2530, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2550, 1, 0, 0, 0, 2533, 2534, 5, 31, 0, 0, 2534, 2535, 3, 12, 6, 0, 2535, 2537, 3, 406, 203, 0, 2536, 2538, 3, 30, 15, 0, 2537, 2536, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2550, 1, 0, 0, 0, 2539, 2540, 5, 31, 0, 0, 2540, 2541, 3, 2, 1, 0, 2541, 2542, 3, 30, 15, 0, 2542, 2543, 3, 246, 123, 0, 2543, 2550, 1, 0, 0, 0, 2544, 2545, 5, 31, 0, 0, 2545, 2546, 3, 12, 6, 0, 2546, 2547, 3, 30, 15, 0, 2547, 2548, 3, 246, 123, 0, 2548, 2550, 1, 0, 0, 0, 2549, 2527, 1, 0, 0, 0, 2549, 2533, 1, 0, 0, 0, 2549, 2539, 1, 0, 0, 0, 2549, 2544, 1, 0, 0, 0, 2550, 405, 1, 0, 0, 0, 2551, 2555, 3, 408, 204, 0, 2552, 2554, 3, 408, 204, 0, 2553, 2552, 1, 0, 0, 0, 2554, 2557, 1, 0, 0, 0, 2555, 2553, 1, 0, 0, 0, 2555, 2556, 1, 0, 0, 0, 2556, 407, 1, 0, 0, 0, 2557, 2555, 1, 0, 0, 0, 2558, 2560, 3, 228, 114, 0, 2559, 2558, 1, 0, 0, 0, 2560, 2563, 1, 0, 0, 0, 2561, 2559, 1, 0, 0, 0, 2561, 2562, 1, 0, 0, 0, 2562, 2564, 1, 0, 0, 0, 2563, 2561, 1, 0, 0, 0, 2564, 2565, 5, 61, 0, 0, 2565, 2566, 3, 412, 206, 0, 2566, 2567, 5, 62, 0, 0, 2567, 409, 1, 0, 0, 0, 2568, 2569, 3, 412, 206, 0, 2569, 411, 1, 0, 0, 0, 2570, 2573, 3, 414, 207, 0, 2571, 2573, 3, 422, 211, 0, 2572, 2570, 1, 0, 0, 0, 2572, 2571, 1, 0, 0, 0, 2573, 413, 1, 0, 0, 0, 2574, 2575, 3, 416, 208, 0, 2575, 2576, 5, 89, 0, 0, 2576, 2577, 3, 420, 210, 0, 2577, 415, 1, 0, 0, 0, 2578, 2589, 5, 102, 0, 0, 2579, 2581, 5, 57, 0, 0, 2580, 2582, 3, 148, 74, 0, 2581, 2580, 1, 0, 0, 0, 2581, 2582, 1, 0, 0, 0, 2582, 2583, 1, 0, 0, 0, 2583, 2589, 5, 58, 0, 0, 2584, 2585, 5, 57, 0, 0, 2585, 2586, 3, 418, 209, 0, 2586, 2587, 5, 58, 0, 0, 2587, 2589, 1, 0, 0, 0, 2588, 2578, 1, 0, 0, 0, 2588, 2579, 1, 0, 0, 0, 2588, 2584, 1, 0, 0, 0, 2589, 417, 1, 0, 0, 0, 2590, 2595, 5, 102, 0, 0, 2591, 2592, 5, 64, 0, 0, 2592, 2594, 5, 102, 0, 0, 2593, 2591, 1, 0, 0, 0, 2594, 2597, 1, 0, 0, 0, 2595, 2593, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 419, 1, 0, 0, 0, 2597, 2595, 1, 0, 0, 0, 2598, 2601, 3, 412, 206, 0, 2599, 2601, 3, 250, 125, 0, 2600, 2598, 1, 0, 0, 0, 2600, 2599, 1, 0, 0, 0, 2601, 421, 1, 0, 0, 0, 2602, 2605, 3, 430, 215, 0, 2603, 2605, 3, 424, 212, 0, 2604, 2602, 1, 0, 0, 0, 2604, 2603, 1, 0, 0, 0, 2605, 423, 1, 0, 0, 0, 2606, 2607, 3, 426, 213, 0, 2607, 2608, 3, 428, 214, 0, 2608, 2609, 3, 412, 206, 0, 2609, 425, 1, 0, 0, 0, 2610, 2614, 3, 56, 28, 0, 2611, 2614, 3, 378, 189, 0, 2612, 2614, 3, 384, 192, 0, 2613, 2610, 1, 0, 0, 0, 2613, 2611, 1, 0, 0, 0, 2613, 2612, 1, 0, 0, 0, 2614, 427, 1, 0, 0, 0, 2615, 2616, 7, 3, 0, 0, 2616, 429, 1, 0, 0, 0, 2617, 2625, 3, 432, 216, 0, 2618, 2619, 3, 432, 216, 0, 2619, 2620, 5, 71, 0, 0, 2620, 2621, 3, 412, 206, 0, 2621, 2622, 5, 72, 0, 0, 2622, 2623, 3, 430, 215, 0, 2623, 2625, 1, 0, 0, 0, 2624, 2617, 1, 0, 0, 0, 2624, 2618, 1, 0, 0, 0, 2625, 431, 1, 0, 0, 0, 2626, 2627, 6, 216, -1, 0, 2627, 2628, 3, 434, 217, 0, 2628, 2634, 1, 0, 0, 0, 2629, 2630, 10, 1, 0, 0, 2630, 2631, 5, 78, 0, 0, 2631, 2633, 3, 434, 217, 0, 2632, 2629, 1, 0, 0, 0, 2633, 2636, 1, 0, 0, 0, 2634, 2632, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 433, 1, 0, 0, 0, 2636, 2634, 1, 0, 0, 0, 2637, 2638, 6, 217, -1, 0, 2638, 2639, 3, 436, 218, 0, 2639, 2645, 1, 0, 0, 0, 2640, 2641, 10, 1, 0, 0, 2641, 2642, 5, 77, 0, 0, 2642, 2644, 3, 436, 218, 0, 2643, 2640, 1, 0, 0, 0, 2644, 2647, 1, 0, 0, 0, 2645, 2643, 1, 0, 0, 0, 2645, 2646, 1, 0, 0, 0, 2646, 435, 1, 0, 0, 0, 2647, 2645, 1, 0, 0, 0, 2648, 2649, 6, 218, -1, 0, 2649, 2650, 3, 438, 219, 0, 2650, 2656, 1, 0, 0, 0, 2651, 2652, 10, 1, 0, 0, 2652, 2653, 5, 86, 0, 0, 2653, 2655, 3, 438, 219, 0, 2654, 2651, 1, 0, 0, 0, 2655, 2658, 1, 0, 0, 0, 2656, 2654, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 437, 1, 0, 0, 0, 2658, 2656, 1, 0, 0, 0, 2659, 2660, 6, 219, -1, 0, 2660, 2661, 3, 440, 220, 0, 2661, 2667, 1, 0, 0, 0, 2662, 2663, 10, 1, 0, 0, 2663, 2664, 5, 87, 0, 0, 2664, 2666, 3, 440, 220, 0, 2665, 2662, 1, 0, 0, 0, 2666, 2669, 1, 0, 0, 0, 2667, 2665, 1, 0, 0, 0, 2667, 2668, 1, 0, 0, 0, 2668, 439, 1, 0, 0, 0, 2669, 2667, 1, 0, 0, 0, 2670, 2671, 6, 220, -1, 0, 2671, 2672, 3, 442, 221, 0, 2672, 2678, 1, 0, 0, 0, 2673, 2674, 10, 1, 0, 0, 2674, 2675, 5, 85, 0, 0, 2675, 2677, 3, 442, 221, 0, 2676, 2673, 1, 0, 0, 0, 2677, 2680, 1, 0, 0, 0, 2678, 2676, 1, 0, 0, 0, 2678, 2679, 1, 0, 0, 0, 2679, 441, 1, 0, 0, 0, 2680, 2678, 1, 0, 0, 0, 2681, 2682, 6, 221, -1, 0, 2682, 2683, 3, 444, 222, 0, 2683, 2692, 1, 0, 0, 0, 2684, 2685, 10, 2, 0, 0, 2685, 2686, 5, 73, 0, 0, 2686, 2691, 3, 444, 222, 0, 2687, 2688, 10, 1, 0, 0, 2688, 2689, 5, 76, 0, 0, 2689, 2691, 3, 444, 222, 0, 2690, 2684, 1, 0, 0, 0, 2690, 2687, 1, 0, 0, 0, 2691, 2694, 1, 0, 0, 0, 2692, 2690, 1, 0, 0, 0, 2692, 2693, 1, 0, 0, 0, 2693, 443, 1, 0, 0, 0, 2694, 2692, 1, 0, 0, 0, 2695, 2696, 6, 222, -1, 0, 2696, 2697, 3, 446, 223, 0, 2697, 2715, 1, 0, 0, 0, 2698, 2699, 10, 5, 0, 0, 2699, 2700, 5, 68, 0, 0, 2700, 2714, 3, 446, 223, 0, 2701, 2702, 10, 4, 0, 0, 2702, 2703, 5, 67, 0, 0, 2703, 2714, 3, 446, 223, 0, 2704, 2705, 10, 3, 0, 0, 2705, 2706, 5, 74, 0, 0, 2706, 2714, 3, 446, 223, 0, 2707, 2708, 10, 2, 0, 0, 2708, 2709, 5, 75, 0, 0, 2709, 2714, 3, 446, 223, 0, 2710, 2711, 10, 1, 0, 0, 2711, 2712, 5, 26, 0, 0, 2712, 2714, 3, 10, 5, 0, 2713, 2698, 1, 0, 0, 0, 2713, 2701, 1, 0, 0, 0, 2713, 2704, 1, 0, 0, 0, 2713, 2707, 1, 0, 0, 0, 2713, 2710, 1, 0, 0, 0, 2714, 2717, 1, 0, 0, 0, 2715, 2713, 1, 0, 0, 0, 2715, 2716, 1, 0, 0, 0, 2716, 445, 1, 0, 0, 0, 2717, 2715, 1, 0, 0, 0, 2718, 2719, 6, 223, -1, 0, 2719, 2720, 3, 448, 224, 0, 2720, 2736, 1, 0, 0, 0, 2721, 2722, 10, 3, 0, 0, 2722, 2723, 5, 68, 0, 0, 2723, 2724, 5, 68, 0, 0, 2724, 2735, 3, 448, 224, 0, 2725, 2726, 10, 2, 0, 0, 2726, 2727, 5, 67, 0, 0, 2727, 2728, 5, 67, 0, 0, 2728, 2735, 3, 448, 224, 0, 2729, 2730, 10, 1, 0, 0, 2730, 2731, 5, 67, 0, 0, 2731, 2732, 5, 67, 0, 0, 2732, 2733, 5, 67, 0, 0, 2733, 2735, 3, 448, 224, 0, 2734, 2721, 1, 0, 0, 0, 2734, 2725, 1, 0, 0, 0, 2734, 2729, 1, 0, 0, 0, 2735, 2738, 1, 0, 0, 0, 2736, 2734, 1, 0, 0, 0, 2736, 2737, 1, 0, 0, 0, 2737, 447, 1, 0, 0, 0, 2738, 2736, 1, 0, 0, 0, 2739, 2740, 6, 224, -1, 0, 2740, 2741, 3, 450, 225, 0, 2741, 2750, 1, 0, 0, 0, 2742, 2743, 10, 2, 0, 0, 2743, 2744, 5, 81, 0, 0, 2744, 2749, 3, 450, 225, 0, 2745, 2746, 10, 1, 0, 0, 2746, 2747, 5, 82, 0, 0, 2747, 2749, 3, 450, 225, 0, 2748, 2742, 1, 0, 0, 0, 2748, 2745, 1, 0, 0, 0, 2749, 2752, 1, 0, 0, 0, 2750, 2748, 1, 0, 0, 0, 2750, 2751, 1, 0, 0, 0, 2751, 449, 1, 0, 0, 0, 2752, 2750, 1, 0, 0, 0, 2753, 2754, 6, 225, -1, 0, 2754, 2755, 3, 452, 226, 0, 2755, 2767, 1, 0, 0, 0, 2756, 2757, 10, 3, 0, 0, 2757, 2758, 5, 83, 0, 0, 2758, 2766, 3, 452, 226, 0, 2759, 2760, 10, 2, 0, 0, 2760, 2761, 5, 84, 0, 0, 2761, 2766, 3, 452, 226, 0, 2762, 2763, 10, 1, 0, 0, 2763, 2764, 5, 88, 0, 0, 2764, 2766, 3, 452, 226, 0, 2765, 2756, 1, 0, 0, 0, 2765, 2759, 1, 0, 0, 0, 2765, 2762, 1, 0, 0, 0, 2766, 2769, 1, 0, 0, 0, 2767, 2765, 1, 0, 0, 0, 2767, 2768, 1, 0, 0, 0, 2768, 451, 1, 0, 0, 0, 2769, 2767, 1, 0, 0, 0, 2770, 2778, 3, 454, 227, 0, 2771, 2778, 3, 456, 228, 0, 2772, 2773, 5, 81, 0, 0, 2773, 2778, 3, 452, 226, 0, 2774, 2775, 5, 82, 0, 0, 2775, 2778, 3, 452, 226, 0, 2776, 2778, 3, 458, 229, 0, 2777, 2770, 1, 0, 0, 0, 2777, 2771, 1, 0, 0, 0, 2777, 2772, 1, 0, 0, 0, 2777, 2774, 1, 0, 0, 0, 2777, 2776, 1, 0, 0, 0, 2778, 453, 1, 0, 0, 0, 2779, 2780, 5, 79, 0, 0, 2780, 2781, 3, 452, 226, 0, 2781, 455, 1, 0, 0, 0, 2782, 2783, 5, 80, 0, 0, 2783, 2784, 3, 452, 226, 0, 2784, 457, 1, 0, 0, 0, 2785, 2792, 3, 460, 230, 0, 2786, 2787, 5, 70, 0, 0, 2787, 2792, 3, 452, 226, 0, 2788, 2789, 5, 69, 0, 0, 2789, 2792, 3, 452, 226, 0, 2790, 2792, 3, 470, 235, 0, 2791, 2785, 1, 0, 0, 0, 2791, 2786, 1, 0, 0, 0, 2791, 2788, 1, 0, 0, 0, 2791, 2790, 1, 0, 0, 0, 2792, 459, 1, 0, 0, 0, 2793, 2796, 3, 350, 175, 0, 2794, 2796, 3, 56, 28, 0, 2795, 2793, 1, 0, 0, 0, 2795, 2794, 1, 0, 0, 0, 2796, 2801, 1, 0, 0, 0, 2797, 2800, 3, 464, 232, 0, 2798, 2800, 3, 468, 234, 0, 2799, 2797, 1, 0, 0, 0, 2799, 2798, 1, 0, 0, 0, 2800, 2803, 1, 0, 0, 0, 2801, 2799, 1, 0, 0, 0, 2801, 2802, 1, 0, 0, 0, 2802, 461, 1, 0, 0, 0, 2803, 2801, 1, 0, 0, 0, 2804, 2805, 3, 460, 230, 0, 2805, 2806, 5, 79, 0, 0, 2806, 463, 1, 0, 0, 0, 2807, 2808, 5, 79, 0, 0, 2808, 465, 1, 0, 0, 0, 2809, 2810, 3, 460, 230, 0, 2810, 2811, 5, 80, 0, 0, 2811, 467, 1, 0, 0, 0, 2812, 2813, 5, 80, 0, 0, 2813, 469, 1, 0, 0, 0, 2814, 2815, 5, 57, 0, 0, 2815, 2816, 3, 2, 1, 0, 2816, 2817, 5, 58, 0, 0, 2817, 2818, 3, 452, 226, 0, 2818, 2842, 1, 0, 0, 0, 2819, 2820, 5, 57, 0, 0, 2820, 2824, 3, 10, 5, 0, 2821, 2823, 3, 38, 19, 0, 2822, 2821, 1, 0, 0, 0, 2823, 2826, 1, 0, 0, 0, 2824, 2822, 1, 0, 0, 0, 2824, 2825, 1, 0, 0, 0, 2825, 2827, 1, 0, 0, 0, 2826, 2824, 1, 0, 0, 0, 2827, 2828, 5, 58, 0, 0, 2828, 2829, 3, 458, 229, 0, 2829, 2842, 1, 0, 0, 0, 2830, 2831, 5, 57, 0, 0, 2831, 2835, 3, 10, 5, 0, 2832, 2834, 3, 38, 19, 0, 2833, 2832, 1, 0, 0, 0, 2834, 2837, 1, 0, 0, 0, 2835, 2833, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 2838, 1, 0, 0, 0, 2837, 2835, 1, 0, 0, 0, 2838, 2839, 5, 58, 0, 0, 2839, 2840, 3, 414, 207, 0, 2840, 2842, 1, 0, 0, 0, 2841, 2814, 1, 0, 0, 0, 2841, 2819, 1, 0, 0, 0, 2841, 2830, 1, 0, 0, 0, 2842, 471, 1, 0, 0, 0, 322, 477, 484, 488, 492, 501, 505, 509, 511, 517, 522, 529, 534, 536, 542, 547, 552, 557, 568, 582, 587, 595, 602, 608, 613, 624, 627, 641, 646, 651, 656, 662, 672, 680, 690, 698, 710, 714, 719, 725, 733, 746, 775, 779, 784, 790, 793, 796, 808, 819, 833, 840, 849, 856, 861, 876, 883, 889, 893, 897, 901, 905, 910, 914, 918, 920, 925, 932, 937, 939, 945, 950, 954, 973, 978, 994, 999, 1005, 1011, 1013, 1017, 1022, 1026, 1034, 1041, 1049, 1052, 1057, 1065, 1070, 1077, 1084, 1089, 1095, 1107, 1112, 1116, 1126, 1131, 1139, 1142, 1147, 1155, 1158, 1163, 1168, 1173, 1178, 1185, 1190, 1198, 1203, 1208, 1213, 1219, 1225, 1228, 1231, 1240, 1246, 1252, 1255, 1258, 1266, 1271, 1276, 1282, 1285, 1296, 1305, 1315, 1320, 1331, 1336, 1348, 1353, 1365, 1375, 1380, 1388, 1391, 1398, 1406, 1412, 1421, 1431, 1435, 1438, 1447, 1461, 1464, 1473, 1478, 1485, 1490, 1498, 1510, 1517, 1531, 1553, 1587, 1599, 1605, 1617, 1630, 1656, 1660, 1665, 1669, 1673, 1681, 1685, 1689, 1696, 1705, 1713, 1728, 1740, 1746, 1752, 1773, 1778, 1784, 1796, 1807, 1817, 1820, 1825, 1834, 1840, 1850, 1855, 1864, 1887, 1897, 1919, 1926, 1934, 1942, 1953, 1976, 1986, 1997, 2019, 2023, 2028, 2036, 2042, 2046, 2050, 2054, 2060, 2065, 2070, 2074, 2078, 2084, 2089, 2094, 2098, 2102, 2104, 2109, 2114, 2119, 2123, 2127, 2131, 2136, 2144, 2150, 2154, 2158, 2162, 2168, 2173, 2178, 2182, 2186, 2188, 2193, 2208, 2222, 2234, 2243, 2258, 2271, 2280, 2286, 2293, 2298, 2305, 2310, 2317, 2322, 2329, 2334, 2342, 2347, 2351, 2355, 2360, 2367, 2374, 2379, 2386, 2391, 2398, 2403, 2411, 2416, 2420, 2427, 2433, 2440, 2447, 2454, 2462, 2469, 2477, 2481, 2488, 2495, 2502, 2510, 2517, 2525, 2531, 2537, 2549, 2555, 2561, 2572, 2581, 2588, 2595, 2600, 2604, 2613, 2624, 2634, 2645, 2656, 2667, 2678, 2690, 2692, 2713, 2715, 2734, 2736, 2748, 2750, 2765, 2767, 2777, 2791, 2795, 2799, 2801, 2824, 2835, 2841] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.py b/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.py index 3ebba134..d6717c6b 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.py @@ -1,4 +1,4 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\java\java8\Java8Parser.g4 by ANTLR 4.8 +# Generated from Java8Parser.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,1597 +8,1189 @@ else: from typing.io import TextIO - def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3m") - buf.write("\u0b1e\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") - buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") - buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") - buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") - buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") - buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") - buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") - buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") - buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") - buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") - buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") - buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4") - buf.write("_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4") - buf.write("h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4") - buf.write("q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4") - buf.write("z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080") - buf.write("\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084") - buf.write("\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087") - buf.write("\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b") - buf.write("\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e\t\u008e") - buf.write("\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092") - buf.write("\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095") - buf.write("\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099") - buf.write("\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c") - buf.write("\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0") - buf.write("\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3") - buf.write("\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7") - buf.write("\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa\t\u00aa") - buf.write("\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad\4\u00ae") - buf.write("\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1") - buf.write("\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5") - buf.write("\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8\t\u00b8") - buf.write("\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb\t\u00bb\4\u00bc") - buf.write("\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf") - buf.write("\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3") - buf.write("\t\u00c3\4\u00c4\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6") - buf.write("\4\u00c7\t\u00c7\4\u00c8\t\u00c8\4\u00c9\t\u00c9\4\u00ca") - buf.write("\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd\t\u00cd") - buf.write("\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0\4\u00d1") - buf.write("\t\u00d1\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4\t\u00d4") - buf.write("\4\u00d5\t\u00d5\4\u00d6\t\u00d6\4\u00d7\t\u00d7\4\u00d8") - buf.write("\t\u00d8\4\u00d9\t\u00d9\4\u00da\t\u00da\4\u00db\t\u00db") - buf.write("\4\u00dc\t\u00dc\4\u00dd\t\u00dd\4\u00de\t\u00de\4\u00df") - buf.write("\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2\t\u00e2") - buf.write("\4\u00e3\t\u00e3\4\u00e4\t\u00e4\4\u00e5\t\u00e5\4\u00e6") - buf.write("\t\u00e6\4\u00e7\t\u00e7\4\u00e8\t\u00e8\4\u00e9\t\u00e9") - buf.write("\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec\t\u00ec\4\u00ed") - buf.write("\t\u00ed\3\2\3\2\3\3\7\3\u01de\n\3\f\3\16\3\u01e1\13\3") - buf.write("\3\3\3\3\7\3\u01e5\n\3\f\3\16\3\u01e8\13\3\3\3\5\3\u01eb") - buf.write("\n\3\3\4\3\4\5\4\u01ef\n\4\3\5\3\5\3\6\3\6\3\7\3\7\3\7") - buf.write("\5\7\u01f8\n\7\3\b\3\b\5\b\u01fc\n\b\3\b\3\b\7\b\u0200") - buf.write("\n\b\f\b\16\b\u0203\13\b\3\t\7\t\u0206\n\t\f\t\16\t\u0209") - buf.write("\13\t\3\t\3\t\5\t\u020d\n\t\3\t\3\t\3\t\7\t\u0212\n\t") - buf.write("\f\t\16\t\u0215\13\t\3\t\3\t\5\t\u0219\n\t\5\t\u021b\n") - buf.write("\t\3\n\3\n\7\n\u021f\n\n\f\n\16\n\u0222\13\n\3\n\3\n\5") - buf.write("\n\u0226\n\n\3\13\7\13\u0229\n\13\f\13\16\13\u022c\13") - buf.write("\13\3\13\3\13\5\13\u0230\n\13\3\f\3\f\3\r\3\r\3\16\3\16") - buf.write("\3\17\7\17\u0239\n\17\f\17\16\17\u023c\13\17\3\17\3\17") - buf.write("\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u0249") - buf.write("\n\20\3\21\7\21\u024c\n\21\f\21\16\21\u024f\13\21\3\21") - buf.write("\3\21\3\21\7\21\u0254\n\21\f\21\16\21\u0257\13\21\3\21") - buf.write("\3\21\7\21\u025b\n\21\f\21\16\21\u025e\13\21\3\22\7\22") - buf.write("\u0261\n\22\f\22\16\22\u0264\13\22\3\22\3\22\5\22\u0268") - buf.write("\n\22\3\23\3\23\3\24\3\24\3\24\3\24\3\24\7\24\u0271\n") - buf.write("\24\f\24\16\24\u0274\13\24\5\24\u0276\n\24\3\25\3\25\3") - buf.write("\25\3\26\3\26\3\26\3\26\3\27\3\27\3\27\7\27\u0282\n\27") - buf.write("\f\27\16\27\u0285\13\27\3\30\3\30\5\30\u0289\n\30\3\31") - buf.write("\7\31\u028c\n\31\f\31\16\31\u028f\13\31\3\31\3\31\5\31") - buf.write("\u0293\n\31\3\32\3\32\3\32\3\32\5\32\u0299\n\32\3\33\3") - buf.write("\33\3\33\3\33\3\33\3\33\7\33\u02a1\n\33\f\33\16\33\u02a4") - buf.write("\13\33\3\34\3\34\3\34\3\34\3\34\5\34\u02ab\n\34\3\35\3") - buf.write("\35\3\35\3\35\3\35\3\35\7\35\u02b3\n\35\f\35\16\35\u02b6") - buf.write("\13\35\3\36\3\36\3\36\3\36\3\36\5\36\u02bd\n\36\3\37\3") - buf.write("\37\3 \3 \3 \3 \3 \3 \7 \u02c7\n \f \16 \u02ca\13 \3!") - buf.write("\5!\u02cd\n!\3!\7!\u02d0\n!\f!\16!\u02d3\13!\3!\7!\u02d6") - buf.write("\n!\f!\16!\u02d9\13!\3!\3!\3\"\7\"\u02de\n\"\f\"\16\"") - buf.write("\u02e1\13\"\3\"\3\"\3\"\3\"\3#\3#\3$\3$\3$\3$\5$\u02ed") - buf.write("\n$\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'") - buf.write("\3\'\3\'\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\5)\u030a\n)\3*") - buf.write("\3*\5*\u030e\n*\3+\7+\u0311\n+\f+\16+\u0314\13+\3+\3+") - buf.write("\3+\5+\u0319\n+\3+\5+\u031c\n+\3+\5+\u031f\n+\3+\3+\3") - buf.write(",\3,\3,\3,\3,\3,\3,\3,\5,\u032b\n,\3-\3-\3-\3-\3.\3.\3") - buf.write(".\7.\u0334\n.\f.\16.\u0337\13.\3/\3/\3/\3\60\3\60\3\60") - buf.write("\3\61\3\61\3\61\7\61\u0342\n\61\f\61\16\61\u0345\13\61") - buf.write("\3\62\3\62\7\62\u0349\n\62\f\62\16\62\u034c\13\62\3\62") - buf.write("\3\62\3\63\3\63\3\63\3\63\5\63\u0354\n\63\3\64\3\64\3") - buf.write("\64\3\64\3\64\5\64\u035b\n\64\3\65\7\65\u035e\n\65\f\65") - buf.write("\16\65\u0361\13\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66") - buf.write("\3\66\3\66\3\66\3\66\3\66\5\66\u036f\n\66\3\67\3\67\3") - buf.write("\67\7\67\u0374\n\67\f\67\16\67\u0377\13\67\38\38\38\5") - buf.write("8\u037c\n8\39\39\59\u0380\n9\3:\3:\5:\u0384\n:\3;\3;\5") - buf.write(";\u0388\n;\3<\3<\5<\u038c\n<\3=\3=\3=\5=\u0391\n=\3>\3") - buf.write(">\5>\u0395\n>\3>\3>\7>\u0399\n>\f>\16>\u039c\13>\3?\3") - buf.write("?\5?\u03a0\n?\3?\3?\3?\7?\u03a5\n?\f?\16?\u03a8\13?\3") - buf.write("?\3?\5?\u03ac\n?\5?\u03ae\n?\3@\3@\7@\u03b2\n@\f@\16@") - buf.write("\u03b5\13@\3@\3@\5@\u03b9\n@\3A\3A\5A\u03bd\nA\3B\3B\3") - buf.write("C\3C\3D\3D\3E\3E\3F\3F\3F\3F\3F\3F\3F\3F\3F\5F\u03d0\n") - buf.write("F\3G\7G\u03d3\nG\fG\16G\u03d6\13G\3G\3G\3G\3H\3H\3H\3") - buf.write("H\3H\3H\3H\3H\3H\3H\5H\u03e5\nH\3I\3I\3I\5I\u03ea\nI\3") - buf.write("I\3I\7I\u03ee\nI\fI\16I\u03f1\13I\3I\3I\3I\5I\u03f6\n") - buf.write("I\5I\u03f8\nI\3J\3J\5J\u03fc\nJ\3K\3K\3K\5K\u0401\nK\3") - buf.write("K\3K\5K\u0405\nK\3L\3L\3L\3L\3L\3L\5L\u040d\nL\3M\3M\3") - buf.write("M\7M\u0412\nM\fM\16M\u0415\13M\3M\3M\3M\7M\u041a\nM\f") - buf.write("M\16M\u041d\13M\5M\u041f\nM\3N\7N\u0422\nN\fN\16N\u0425") - buf.write("\13N\3N\3N\3N\3O\3O\5O\u042c\nO\3P\7P\u042f\nP\fP\16P") - buf.write("\u0432\13P\3P\3P\7P\u0436\nP\fP\16P\u0439\13P\3P\3P\3") - buf.write("P\3P\5P\u043f\nP\3Q\7Q\u0442\nQ\fQ\16Q\u0445\13Q\3Q\3") - buf.write("Q\3Q\5Q\u044a\nQ\3Q\3Q\3R\3R\3R\3S\3S\3S\7S\u0454\nS\f") - buf.write("S\16S\u0457\13S\3T\3T\5T\u045b\nT\3U\3U\5U\u045f\nU\3") - buf.write("V\3V\3W\3W\3W\3X\7X\u0467\nX\fX\16X\u046a\13X\3X\3X\5") - buf.write("X\u046e\nX\3X\3X\3Y\3Y\3Y\3Y\5Y\u0476\nY\3Z\5Z\u0479\n") - buf.write("Z\3Z\3Z\3Z\5Z\u047e\nZ\3Z\3Z\3[\3[\3\\\3\\\5\\\u0486\n") - buf.write("\\\3\\\5\\\u0489\n\\\3\\\3\\\3]\5]\u048e\n]\3]\3]\3]\5") - buf.write("]\u0493\n]\3]\3]\3]\5]\u0498\n]\3]\3]\3]\5]\u049d\n]\3") - buf.write("]\3]\3]\3]\3]\5]\u04a4\n]\3]\3]\3]\5]\u04a9\n]\3]\3]\3") - buf.write("]\3]\3]\3]\5]\u04b1\n]\3]\3]\3]\5]\u04b6\n]\3]\3]\3]\5") - buf.write("]\u04bb\n]\3^\7^\u04be\n^\f^\16^\u04c1\13^\3^\3^\3^\5") - buf.write("^\u04c6\n^\3^\3^\3_\3_\5_\u04cc\n_\3_\5_\u04cf\n_\3_\5") - buf.write("_\u04d2\n_\3_\3_\3`\3`\3`\7`\u04d9\n`\f`\16`\u04dc\13") - buf.write("`\3a\7a\u04df\na\fa\16a\u04e2\13a\3a\3a\3a\5a\u04e7\n") - buf.write("a\3a\5a\u04ea\na\3a\5a\u04ed\na\3b\3b\3c\3c\7c\u04f3\n") - buf.write("c\fc\16c\u04f6\13c\3d\3d\5d\u04fa\nd\3e\7e\u04fd\ne\f") - buf.write("e\16e\u0500\13e\3e\3e\3e\5e\u0505\ne\3e\5e\u0508\ne\3") - buf.write("e\3e\3f\3f\3f\3f\3f\3f\3f\5f\u0513\nf\3g\3g\3g\3h\3h\7") - buf.write("h\u051a\nh\fh\16h\u051d\13h\3h\3h\3i\3i\3i\3i\3i\5i\u0526") - buf.write("\ni\3j\7j\u0529\nj\fj\16j\u052c\13j\3j\3j\3j\3j\3k\3k") - buf.write("\3k\3k\5k\u0536\nk\3l\7l\u0539\nl\fl\16l\u053c\13l\3l") - buf.write("\3l\3l\3m\3m\3m\3m\3m\3m\5m\u0547\nm\3n\7n\u054a\nn\f") - buf.write("n\16n\u054d\13n\3n\3n\3n\3n\3n\3o\3o\7o\u0556\no\fo\16") - buf.write("o\u0559\13o\3o\3o\3p\3p\3p\3p\3p\5p\u0562\np\3q\7q\u0565") - buf.write("\nq\fq\16q\u0568\13q\3q\3q\3q\3q\3q\5q\u056f\nq\3q\5q") - buf.write("\u0572\nq\3q\3q\3r\3r\3r\5r\u0579\nr\3s\3s\3s\3t\3t\3") - buf.write("t\5t\u0581\nt\3u\3u\3u\3u\5u\u0587\nu\3u\3u\3v\3v\3v\7") - buf.write("v\u058e\nv\fv\16v\u0591\13v\3w\3w\3w\3w\3x\3x\3x\5x\u059a") - buf.write("\nx\3y\3y\5y\u059e\ny\3y\5y\u05a1\ny\3y\3y\3z\3z\3z\7") - buf.write("z\u05a8\nz\fz\16z\u05ab\13z\3{\3{\3{\3|\3|\3|\3|\3|\3") - buf.write("|\3}\3}\5}\u05b8\n}\3}\5}\u05bb\n}\3}\3}\3~\3~\3~\7~\u05c2") - buf.write("\n~\f~\16~\u05c5\13~\3\177\3\177\5\177\u05c9\n\177\3\177") - buf.write("\3\177\3\u0080\6\u0080\u05ce\n\u0080\r\u0080\16\u0080") - buf.write("\u05cf\3\u0081\3\u0081\3\u0081\5\u0081\u05d5\n\u0081\3") - buf.write("\u0082\3\u0082\3\u0082\3\u0083\7\u0083\u05db\n\u0083\f") - buf.write("\u0083\16\u0083\u05de\13\u0083\3\u0083\3\u0083\3\u0083") - buf.write("\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\5\u0084") - buf.write("\u05e9\n\u0084\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085") - buf.write("\5\u0085\u05f0\n\u0085\3\u0086\3\u0086\3\u0086\3\u0086") - buf.write("\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086") - buf.write("\3\u0086\5\u0086\u05fe\n\u0086\3\u0087\3\u0087\3\u0088") - buf.write("\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089\3\u0089") - buf.write("\3\u008a\3\u008a\3\u008a\3\u008b\3\u008b\3\u008b\3\u008b") - buf.write("\3\u008b\3\u008b\3\u008b\5\u008b\u0614\n\u008b\3\u008c") - buf.write("\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008e") - buf.write("\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e") - buf.write("\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f") - buf.write("\3\u008f\3\u008f\3\u008f\5\u008f\u0636\n\u008f\3\u0090") - buf.write("\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091\3\u0091") - buf.write("\7\u0091\u0640\n\u0091\f\u0091\16\u0091\u0643\13\u0091") - buf.write("\3\u0091\7\u0091\u0646\n\u0091\f\u0091\16\u0091\u0649") - buf.write("\13\u0091\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092\3\u0093") - buf.write("\3\u0093\7\u0093\u0652\n\u0093\f\u0093\16\u0093\u0655") - buf.write("\13\u0093\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094") - buf.write("\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0661\n\u0094") - buf.write("\3\u0095\3\u0095\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096") - buf.write("\3\u0096\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") - buf.write("\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098") - buf.write("\3\u0098\3\u0099\3\u0099\5\u0099\u067b\n\u0099\3\u009a") - buf.write("\3\u009a\5\u009a\u067f\n\u009a\3\u009b\3\u009b\3\u009b") - buf.write("\5\u009b\u0684\n\u009b\3\u009b\3\u009b\5\u009b\u0688\n") - buf.write("\u009b\3\u009b\3\u009b\5\u009b\u068c\n\u009b\3\u009b\3") - buf.write("\u009b\3\u009b\3\u009c\3\u009c\3\u009c\5\u009c\u0694\n") - buf.write("\u009c\3\u009c\3\u009c\5\u009c\u0698\n\u009c\3\u009c\3") - buf.write("\u009c\5\u009c\u069c\n\u009c\3\u009c\3\u009c\3\u009c\3") - buf.write("\u009d\3\u009d\5\u009d\u06a3\n\u009d\3\u009e\3\u009e\3") - buf.write("\u009f\3\u009f\3\u009f\7\u009f\u06aa\n\u009f\f\u009f\16") - buf.write("\u009f\u06ad\13\u009f\3\u00a0\3\u00a0\3\u00a0\7\u00a0") - buf.write("\u06b2\n\u00a0\f\u00a0\16\u00a0\u06b5\13\u00a0\3\u00a0") - buf.write("\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a1") - buf.write("\3\u00a1\3\u00a1\7\u00a1\u06c1\n\u00a1\f\u00a1\16\u00a1") - buf.write("\u06c4\13\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1") - buf.write("\3\u00a1\3\u00a1\3\u00a2\3\u00a2\5\u00a2\u06cf\n\u00a2") - buf.write("\3\u00a2\3\u00a2\3\u00a3\3\u00a3\5\u00a3\u06d5\n\u00a3") - buf.write("\3\u00a3\3\u00a3\3\u00a4\3\u00a4\5\u00a4\u06db\n\u00a4") - buf.write("\3\u00a4\3\u00a4\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a6") - buf.write("\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a7\3\u00a7") - buf.write("\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\5\u00a7\u06f0") - buf.write("\n\u00a7\3\u00a7\3\u00a7\3\u00a7\5\u00a7\u06f5\n\u00a7") - buf.write("\3\u00a8\3\u00a8\7\u00a8\u06f9\n\u00a8\f\u00a8\16\u00a8") - buf.write("\u06fc\13\u00a8\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9") - buf.write("\3\u00a9\3\u00aa\7\u00aa\u0705\n\u00aa\f\u00aa\16\u00aa") - buf.write("\u0708\13\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00ab\3\u00ab") - buf.write("\3\u00ab\7\u00ab\u0710\n\u00ab\f\u00ab\16\u00ab\u0713") - buf.write("\13\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ad\3\u00ad\3\u00ad") - buf.write("\3\u00ad\5\u00ad\u071c\n\u00ad\3\u00ad\5\u00ad\u071f\n") - buf.write("\u00ad\3\u00ae\3\u00ae\3\u00ae\5\u00ae\u0724\n\u00ae\3") - buf.write("\u00ae\3\u00ae\3\u00af\3\u00af\3\u00af\7\u00af\u072b\n") - buf.write("\u00af\f\u00af\16\u00af\u072e\13\u00af\3\u00b0\7\u00b0") - buf.write("\u0731\n\u00b0\f\u00b0\16\u00b0\u0734\13\u00b0\3\u00b0") - buf.write("\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b1\3\u00b1\5\u00b1") - buf.write("\u073d\n\u00b1\3\u00b1\7\u00b1\u0740\n\u00b1\f\u00b1\16") - buf.write("\u00b1\u0743\13\u00b1\3\u00b2\3\u00b2\3\u00b2\3\u00b2") - buf.write("\7\u00b2\u0749\n\u00b2\f\u00b2\16\u00b2\u074c\13\u00b2") - buf.write("\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2") - buf.write("\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2") - buf.write("\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\5\u00b2") - buf.write("\u0762\n\u00b2\3\u00b3\3\u00b3\3\u00b4\3\u00b4\3\u00b4") - buf.write("\3\u00b4\7\u00b4\u076a\n\u00b4\f\u00b4\16\u00b4\u076d") - buf.write("\13\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4") - buf.write("\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4") - buf.write("\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\5\u00b4") - buf.write("\u0782\n\u00b4\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5") - buf.write("\5\u00b5\u0789\n\u00b5\3\u00b6\3\u00b6\3\u00b7\3\u00b7") - buf.write("\3\u00b7\3\u00b7\5\u00b7\u0791\n\u00b7\3\u00b8\3\u00b8") - buf.write("\3\u00b8\3\u00b8\7\u00b8\u0797\n\u00b8\f\u00b8\16\u00b8") - buf.write("\u079a\13\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\3\u00b8\7\u00b8\u07a2\n\u00b8\f\u00b8\16\u00b8\u07a5") - buf.write("\13\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\5\u00b8\u07bb\n\u00b8\3\u00b9\3\u00b9\3\u00ba\3\u00ba") - buf.write("\3\u00ba\3\u00ba\7\u00ba\u07c3\n\u00ba\f\u00ba\16\u00ba") - buf.write("\u07c6\13\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba") - buf.write("\3\u00ba\7\u00ba\u07ce\n\u00ba\f\u00ba\16\u00ba\u07d1") - buf.write("\13\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba") - buf.write("\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba") - buf.write("\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\5\u00ba") - buf.write("\u07e6\n\u00ba\3\u00bb\3\u00bb\5\u00bb\u07ea\n\u00bb\3") - buf.write("\u00bb\7\u00bb\u07ed\n\u00bb\f\u00bb\16\u00bb\u07f0\13") - buf.write("\u00bb\3\u00bb\3\u00bb\3\u00bb\7\u00bb\u07f5\n\u00bb\f") - buf.write("\u00bb\16\u00bb\u07f8\13\u00bb\3\u00bb\7\u00bb\u07fb\n") - buf.write("\u00bb\f\u00bb\16\u00bb\u07fe\13\u00bb\3\u00bb\5\u00bb") - buf.write("\u0801\n\u00bb\3\u00bb\3\u00bb\5\u00bb\u0805\n\u00bb\3") - buf.write("\u00bb\3\u00bb\5\u00bb\u0809\n\u00bb\3\u00bb\3\u00bb\3") - buf.write("\u00bb\3\u00bb\5\u00bb\u080f\n\u00bb\3\u00bb\7\u00bb\u0812") - buf.write("\n\u00bb\f\u00bb\16\u00bb\u0815\13\u00bb\3\u00bb\3\u00bb") - buf.write("\5\u00bb\u0819\n\u00bb\3\u00bb\3\u00bb\5\u00bb\u081d\n") - buf.write("\u00bb\3\u00bb\3\u00bb\5\u00bb\u0821\n\u00bb\3\u00bb\3") - buf.write("\u00bb\3\u00bb\3\u00bb\5\u00bb\u0827\n\u00bb\3\u00bb\7") - buf.write("\u00bb\u082a\n\u00bb\f\u00bb\16\u00bb\u082d\13\u00bb\3") - buf.write("\u00bb\3\u00bb\5\u00bb\u0831\n\u00bb\3\u00bb\3\u00bb\5") - buf.write("\u00bb\u0835\n\u00bb\3\u00bb\3\u00bb\5\u00bb\u0839\n\u00bb") - buf.write("\5\u00bb\u083b\n\u00bb\3\u00bc\3\u00bc\3\u00bc\5\u00bc") - buf.write("\u0840\n\u00bc\3\u00bc\7\u00bc\u0843\n\u00bc\f\u00bc\16") - buf.write("\u00bc\u0846\13\u00bc\3\u00bc\3\u00bc\5\u00bc\u084a\n") - buf.write("\u00bc\3\u00bc\3\u00bc\5\u00bc\u084e\n\u00bc\3\u00bc\3") - buf.write("\u00bc\5\u00bc\u0852\n\u00bc\3\u00bd\3\u00bd\5\u00bd\u0856") - buf.write("\n\u00bd\3\u00bd\7\u00bd\u0859\n\u00bd\f\u00bd\16\u00bd") - buf.write("\u085c\13\u00bd\3\u00bd\3\u00bd\3\u00bd\7\u00bd\u0861") - buf.write("\n\u00bd\f\u00bd\16\u00bd\u0864\13\u00bd\3\u00bd\7\u00bd") - buf.write("\u0867\n\u00bd\f\u00bd\16\u00bd\u086a\13\u00bd\3\u00bd") - buf.write("\5\u00bd\u086d\n\u00bd\3\u00bd\3\u00bd\5\u00bd\u0871\n") - buf.write("\u00bd\3\u00bd\3\u00bd\5\u00bd\u0875\n\u00bd\3\u00bd\3") - buf.write("\u00bd\3\u00bd\3\u00bd\5\u00bd\u087b\n\u00bd\3\u00bd\7") - buf.write("\u00bd\u087e\n\u00bd\f\u00bd\16\u00bd\u0881\13\u00bd\3") - buf.write("\u00bd\3\u00bd\5\u00bd\u0885\n\u00bd\3\u00bd\3\u00bd\5") - buf.write("\u00bd\u0889\n\u00bd\3\u00bd\3\u00bd\5\u00bd\u088d\n\u00bd") - buf.write("\5\u00bd\u088f\n\u00bd\3\u00be\3\u00be\3\u00be\5\u00be") - buf.write("\u0894\n\u00be\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf") - buf.write("\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf") - buf.write("\3\u00bf\5\u00bf\u08a3\n\u00bf\3\u00c0\3\u00c0\3\u00c0") - buf.write("\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1") - buf.write("\3\u00c1\3\u00c1\5\u00c1\u08b1\n\u00c1\3\u00c2\3\u00c2") - buf.write("\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2") - buf.write("\3\u00c2\5\u00c2\u08bd\n\u00c2\3\u00c2\3\u00c2\3\u00c2") - buf.write("\3\u00c2\3\u00c2\7\u00c2\u08c4\n\u00c2\f\u00c2\16\u00c2") - buf.write("\u08c7\13\u00c2\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3") - buf.write("\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\7\u00c3\u08d3") - buf.write("\n\u00c3\f\u00c3\16\u00c3\u08d6\13\u00c3\3\u00c4\3\u00c4") - buf.write("\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4") - buf.write("\3\u00c4\5\u00c4\u08e2\n\u00c4\3\u00c4\3\u00c4\3\u00c4") - buf.write("\3\u00c4\3\u00c4\7\u00c4\u08e9\n\u00c4\f\u00c4\16\u00c4") - buf.write("\u08ec\13\u00c4\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u08f1") - buf.write("\n\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u08f8\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u08fd\n") - buf.write("\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u0904\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u0909\n") - buf.write("\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u0910\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u0915\n") - buf.write("\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u091c\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u0921\n") - buf.write("\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5") - buf.write("\5\u00c5\u0929\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u092e\n\u00c5\3\u00c5\3\u00c5\5\u00c5\u0932\n\u00c5\3") - buf.write("\u00c6\3\u00c6\5\u00c6\u0936\n\u00c6\3\u00c6\3\u00c6\3") - buf.write("\u00c6\5\u00c6\u093b\n\u00c6\3\u00c6\3\u00c6\3\u00c7\3") - buf.write("\u00c7\3\u00c7\5\u00c7\u0942\n\u00c7\3\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\5\u00c7\u0949\n\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\5\u00c7\u094e\n\u00c7\3\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\5\u00c7\u0955\n\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\5\u00c7\u095a\n\u00c7\3\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\5\u00c7\u0961\n\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\5\u00c7\u0966\n\u00c7\3\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u096e\n\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\5\u00c7\u0973\n\u00c7\3\u00c7\3") - buf.write("\u00c7\5\u00c7\u0977\n\u00c7\3\u00c8\3\u00c8\3\u00c8\7") - buf.write("\u00c8\u097c\n\u00c8\f\u00c8\16\u00c8\u097f\13\u00c8\3") - buf.write("\u00c9\3\u00c9\3\u00c9\5\u00c9\u0984\n\u00c9\3\u00c9\3") - buf.write("\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u098b\n\u00c9\3") - buf.write("\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u0992\n") - buf.write("\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9") - buf.write("\u0999\n\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9") - buf.write("\3\u00c9\5\u00c9\u09a1\n\u00c9\3\u00c9\3\u00c9\3\u00c9") - buf.write("\3\u00c9\3\u00c9\5\u00c9\u09a8\n\u00c9\3\u00c9\3\u00c9") - buf.write("\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u09b0\n\u00c9") - buf.write("\3\u00ca\3\u00ca\5\u00ca\u09b4\n\u00ca\3\u00ca\3\u00ca") - buf.write("\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09bb\n\u00cb\3\u00cb") - buf.write("\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09c2\n\u00cb") - buf.write("\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09c9") - buf.write("\n\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb") - buf.write("\5\u00cb\u09d1\n\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb") - buf.write("\3\u00cb\5\u00cb\u09d8\n\u00cb\3\u00cb\3\u00cb\3\u00cb") - buf.write("\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09e0\n\u00cb\3\u00cc") - buf.write("\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09e6\n\u00cc\3\u00cc") - buf.write("\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09ec\n\u00cc\3\u00cc") - buf.write("\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc") - buf.write("\3\u00cc\3\u00cc\5\u00cc\u09f8\n\u00cc\3\u00cd\3\u00cd") - buf.write("\7\u00cd\u09fc\n\u00cd\f\u00cd\16\u00cd\u09ff\13\u00cd") - buf.write("\3\u00ce\7\u00ce\u0a02\n\u00ce\f\u00ce\16\u00ce\u0a05") - buf.write("\13\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00cf\3\u00cf") - buf.write("\3\u00d0\3\u00d0\5\u00d0\u0a0f\n\u00d0\3\u00d1\3\u00d1") - buf.write("\3\u00d1\3\u00d1\3\u00d2\3\u00d2\3\u00d2\5\u00d2\u0a18") - buf.write("\n\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\5\u00d2") - buf.write("\u0a1f\n\u00d2\3\u00d3\3\u00d3\3\u00d3\7\u00d3\u0a24\n") - buf.write("\u00d3\f\u00d3\16\u00d3\u0a27\13\u00d3\3\u00d4\3\u00d4") - buf.write("\5\u00d4\u0a2b\n\u00d4\3\u00d5\3\u00d5\5\u00d5\u0a2f\n") - buf.write("\u00d5\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d7\3\u00d7") - buf.write("\3\u00d7\5\u00d7\u0a38\n\u00d7\3\u00d8\3\u00d8\3\u00d9") - buf.write("\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\5\u00d9") - buf.write("\u0a43\n\u00d9\3\u00da\3\u00da\3\u00da\3\u00da\3\u00da") - buf.write("\3\u00da\7\u00da\u0a4b\n\u00da\f\u00da\16\u00da\u0a4e") - buf.write("\13\u00da\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db") - buf.write("\7\u00db\u0a56\n\u00db\f\u00db\16\u00db\u0a59\13\u00db") - buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\7\u00dc") - buf.write("\u0a61\n\u00dc\f\u00dc\16\u00dc\u0a64\13\u00dc\3\u00dd") - buf.write("\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\7\u00dd\u0a6c") - buf.write("\n\u00dd\f\u00dd\16\u00dd\u0a6f\13\u00dd\3\u00de\3\u00de") - buf.write("\3\u00de\3\u00de\3\u00de\3\u00de\7\u00de\u0a77\n\u00de") - buf.write("\f\u00de\16\u00de\u0a7a\13\u00de\3\u00df\3\u00df\3\u00df") - buf.write("\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\7\u00df") - buf.write("\u0a85\n\u00df\f\u00df\16\u00df\u0a88\13\u00df\3\u00e0") - buf.write("\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0") - buf.write("\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0") - buf.write("\3\u00e0\3\u00e0\3\u00e0\7\u00e0\u0a9c\n\u00e0\f\u00e0") - buf.write("\16\u00e0\u0a9f\13\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e1") - buf.write("\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1") - buf.write("\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\7\u00e1\u0ab1") - buf.write("\n\u00e1\f\u00e1\16\u00e1\u0ab4\13\u00e1\3\u00e2\3\u00e2") - buf.write("\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2") - buf.write("\7\u00e2\u0abf\n\u00e2\f\u00e2\16\u00e2\u0ac2\13\u00e2") - buf.write("\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3") - buf.write("\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\7\u00e3\u0ad0") - buf.write("\n\u00e3\f\u00e3\16\u00e3\u0ad3\13\u00e3\3\u00e4\3\u00e4") - buf.write("\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\5\u00e4\u0adc") - buf.write("\n\u00e4\3\u00e5\3\u00e5\3\u00e5\3\u00e6\3\u00e6\3\u00e6") - buf.write("\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\5\u00e7") - buf.write("\u0aea\n\u00e7\3\u00e8\3\u00e8\5\u00e8\u0aee\n\u00e8\3") - buf.write("\u00e8\3\u00e8\7\u00e8\u0af2\n\u00e8\f\u00e8\16\u00e8") - buf.write("\u0af5\13\u00e8\3\u00e9\3\u00e9\3\u00e9\3\u00ea\3\u00ea") - buf.write("\3\u00eb\3\u00eb\3\u00eb\3\u00ec\3\u00ec\3\u00ed\3\u00ed") - buf.write("\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\7\u00ed") - buf.write("\u0b09\n\u00ed\f\u00ed\16\u00ed\u0b0c\13\u00ed\3\u00ed") - buf.write("\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\7\u00ed\u0b14") - buf.write("\n\u00ed\f\u00ed\16\u00ed\u0b17\13\u00ed\3\u00ed\3\u00ed") - buf.write("\3\u00ed\5\u00ed\u0b1c\n\u00ed\3\u00ed\2\17\648>\u01b2") - buf.write("\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4") - buf.write("\u00ee\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,") - buf.write(".\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080") - buf.write("\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092") - buf.write("\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4") - buf.write("\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6") - buf.write("\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8") - buf.write("\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da") - buf.write("\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec") - buf.write("\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe") - buf.write("\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110") - buf.write("\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122") - buf.write("\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134") - buf.write("\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146") - buf.write("\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158") - buf.write("\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a") - buf.write("\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a\u017c") - buf.write("\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e") - buf.write("\u0190\u0192\u0194\u0196\u0198\u019a\u019c\u019e\u01a0") - buf.write("\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2") - buf.write("\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4") - buf.write("\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6") - buf.write("\u01d8\2\6\3\2\65:\7\2\7\7\n\n\35\35\37\37\'\'\4\2\20") - buf.write("\20\26\26\4\2DD]g\2\u0c0f\2\u01da\3\2\2\2\4\u01ea\3\2") - buf.write("\2\2\6\u01ee\3\2\2\2\b\u01f0\3\2\2\2\n\u01f2\3\2\2\2\f") - buf.write("\u01f7\3\2\2\2\16\u01fb\3\2\2\2\20\u021a\3\2\2\2\22\u021c") - buf.write("\3\2\2\2\24\u022a\3\2\2\2\26\u0231\3\2\2\2\30\u0233\3") - buf.write("\2\2\2\32\u0235\3\2\2\2\34\u023a\3\2\2\2\36\u0248\3\2") - buf.write("\2\2 \u024d\3\2\2\2\"\u0262\3\2\2\2$\u0269\3\2\2\2&\u0275") - buf.write("\3\2\2\2(\u0277\3\2\2\2*\u027a\3\2\2\2,\u027e\3\2\2\2") - buf.write(".\u0288\3\2\2\2\60\u028d\3\2\2\2\62\u0298\3\2\2\2\64\u029a") - buf.write("\3\2\2\2\66\u02aa\3\2\2\28\u02ac\3\2\2\2:\u02bc\3\2\2") - buf.write("\2<\u02be\3\2\2\2>\u02c0\3\2\2\2@\u02cc\3\2\2\2B\u02df") - buf.write("\3\2\2\2D\u02e6\3\2\2\2F\u02ec\3\2\2\2H\u02ee\3\2\2\2") - buf.write("J\u02f2\3\2\2\2L\u02f8\3\2\2\2N\u02ff\3\2\2\2P\u0309\3") - buf.write("\2\2\2R\u030d\3\2\2\2T\u0312\3\2\2\2V\u032a\3\2\2\2X\u032c") - buf.write("\3\2\2\2Z\u0330\3\2\2\2\\\u0338\3\2\2\2^\u033b\3\2\2\2") - buf.write("`\u033e\3\2\2\2b\u0346\3\2\2\2d\u0353\3\2\2\2f\u035a\3") - buf.write("\2\2\2h\u035f\3\2\2\2j\u036e\3\2\2\2l\u0370\3\2\2\2n\u0378") - buf.write("\3\2\2\2p\u037d\3\2\2\2r\u0383\3\2\2\2t\u0387\3\2\2\2") - buf.write("v\u038b\3\2\2\2x\u0390\3\2\2\2z\u0394\3\2\2\2|\u03ad\3") - buf.write("\2\2\2~\u03af\3\2\2\2\u0080\u03ba\3\2\2\2\u0082\u03be") - buf.write("\3\2\2\2\u0084\u03c0\3\2\2\2\u0086\u03c2\3\2\2\2\u0088") - buf.write("\u03c4\3\2\2\2\u008a\u03cf\3\2\2\2\u008c\u03d4\3\2\2\2") - buf.write("\u008e\u03e4\3\2\2\2\u0090\u03f7\3\2\2\2\u0092\u03fb\3") - buf.write("\2\2\2\u0094\u03fd\3\2\2\2\u0096\u040c\3\2\2\2\u0098\u041e") - buf.write("\3\2\2\2\u009a\u0423\3\2\2\2\u009c\u042b\3\2\2\2\u009e") - buf.write("\u043e\3\2\2\2\u00a0\u0443\3\2\2\2\u00a2\u044d\3\2\2\2") - buf.write("\u00a4\u0450\3\2\2\2\u00a6\u045a\3\2\2\2\u00a8\u045e\3") - buf.write("\2\2\2\u00aa\u0460\3\2\2\2\u00ac\u0462\3\2\2\2\u00ae\u0468") - buf.write("\3\2\2\2\u00b0\u0475\3\2\2\2\u00b2\u0478\3\2\2\2\u00b4") - buf.write("\u0481\3\2\2\2\u00b6\u0483\3\2\2\2\u00b8\u04ba\3\2\2\2") - buf.write("\u00ba\u04bf\3\2\2\2\u00bc\u04c9\3\2\2\2\u00be\u04d5\3") - buf.write("\2\2\2\u00c0\u04e0\3\2\2\2\u00c2\u04ee\3\2\2\2\u00c4\u04f0") - buf.write("\3\2\2\2\u00c6\u04f9\3\2\2\2\u00c8\u04fe\3\2\2\2\u00ca") - buf.write("\u0512\3\2\2\2\u00cc\u0514\3\2\2\2\u00ce\u0517\3\2\2\2") - buf.write("\u00d0\u0525\3\2\2\2\u00d2\u052a\3\2\2\2\u00d4\u0535\3") - buf.write("\2\2\2\u00d6\u053a\3\2\2\2\u00d8\u0546\3\2\2\2\u00da\u054b") - buf.write("\3\2\2\2\u00dc\u0553\3\2\2\2\u00de\u0561\3\2\2\2\u00e0") - buf.write("\u0566\3\2\2\2\u00e2\u0578\3\2\2\2\u00e4\u057a\3\2\2\2") - buf.write("\u00e6\u0580\3\2\2\2\u00e8\u0582\3\2\2\2\u00ea\u058a\3") - buf.write("\2\2\2\u00ec\u0592\3\2\2\2\u00ee\u0599\3\2\2\2\u00f0\u059b") - buf.write("\3\2\2\2\u00f2\u05a4\3\2\2\2\u00f4\u05ac\3\2\2\2\u00f6") - buf.write("\u05af\3\2\2\2\u00f8\u05b5\3\2\2\2\u00fa\u05be\3\2\2\2") - buf.write("\u00fc\u05c6\3\2\2\2\u00fe\u05cd\3\2\2\2\u0100\u05d4\3") - buf.write("\2\2\2\u0102\u05d6\3\2\2\2\u0104\u05dc\3\2\2\2\u0106\u05e8") - buf.write("\3\2\2\2\u0108\u05ef\3\2\2\2\u010a\u05fd\3\2\2\2\u010c") - buf.write("\u05ff\3\2\2\2\u010e\u0601\3\2\2\2\u0110\u0605\3\2\2\2") - buf.write("\u0112\u0609\3\2\2\2\u0114\u0613\3\2\2\2\u0116\u0615\3") - buf.write("\2\2\2\u0118\u061b\3\2\2\2\u011a\u0623\3\2\2\2\u011c\u0635") - buf.write("\3\2\2\2\u011e\u0637\3\2\2\2\u0120\u063d\3\2\2\2\u0122") - buf.write("\u064c\3\2\2\2\u0124\u064f\3\2\2\2\u0126\u0660\3\2\2\2") - buf.write("\u0128\u0662\3\2\2\2\u012a\u0664\3\2\2\2\u012c\u066a\3") - buf.write("\2\2\2\u012e\u0670\3\2\2\2\u0130\u067a\3\2\2\2\u0132\u067e") - buf.write("\3\2\2\2\u0134\u0680\3\2\2\2\u0136\u0690\3\2\2\2\u0138") - buf.write("\u06a2\3\2\2\2\u013a\u06a4\3\2\2\2\u013c\u06a6\3\2\2\2") - buf.write("\u013e\u06ae\3\2\2\2\u0140\u06bd\3\2\2\2\u0142\u06cc\3") - buf.write("\2\2\2\u0144\u06d2\3\2\2\2\u0146\u06d8\3\2\2\2\u0148\u06de") - buf.write("\3\2\2\2\u014a\u06e2\3\2\2\2\u014c\u06f4\3\2\2\2\u014e") - buf.write("\u06f6\3\2\2\2\u0150\u06fd\3\2\2\2\u0152\u0706\3\2\2\2") - buf.write("\u0154\u070c\3\2\2\2\u0156\u0714\3\2\2\2\u0158\u0717\3") - buf.write("\2\2\2\u015a\u0720\3\2\2\2\u015c\u0727\3\2\2\2\u015e\u0732") - buf.write("\3\2\2\2\u0160\u073c\3\2\2\2\u0162\u0761\3\2\2\2\u0164") - buf.write("\u0763\3\2\2\2\u0166\u0781\3\2\2\2\u0168\u0788\3\2\2\2") - buf.write("\u016a\u078a\3\2\2\2\u016c\u0790\3\2\2\2\u016e\u07ba\3") - buf.write("\2\2\2\u0170\u07bc\3\2\2\2\u0172\u07e5\3\2\2\2\u0174\u083a") - buf.write("\3\2\2\2\u0176\u083c\3\2\2\2\u0178\u088e\3\2\2\2\u017a") - buf.write("\u0893\3\2\2\2\u017c\u08a2\3\2\2\2\u017e\u08a4\3\2\2\2") - buf.write("\u0180\u08b0\3\2\2\2\u0182\u08bc\3\2\2\2\u0184\u08c8\3") - buf.write("\2\2\2\u0186\u08e1\3\2\2\2\u0188\u0931\3\2\2\2\u018a\u0933") - buf.write("\3\2\2\2\u018c\u0976\3\2\2\2\u018e\u0978\3\2\2\2\u0190") - buf.write("\u09af\3\2\2\2\u0192\u09b1\3\2\2\2\u0194\u09df\3\2\2\2") - buf.write("\u0196\u09f7\3\2\2\2\u0198\u09f9\3\2\2\2\u019a\u0a03\3") - buf.write("\2\2\2\u019c\u0a0a\3\2\2\2\u019e\u0a0e\3\2\2\2\u01a0\u0a10") - buf.write("\3\2\2\2\u01a2\u0a1e\3\2\2\2\u01a4\u0a20\3\2\2\2\u01a6") - buf.write("\u0a2a\3\2\2\2\u01a8\u0a2e\3\2\2\2\u01aa\u0a30\3\2\2\2") - buf.write("\u01ac\u0a37\3\2\2\2\u01ae\u0a39\3\2\2\2\u01b0\u0a42\3") - buf.write("\2\2\2\u01b2\u0a44\3\2\2\2\u01b4\u0a4f\3\2\2\2\u01b6\u0a5a") - buf.write("\3\2\2\2\u01b8\u0a65\3\2\2\2\u01ba\u0a70\3\2\2\2\u01bc") - buf.write("\u0a7b\3\2\2\2\u01be\u0a89\3\2\2\2\u01c0\u0aa0\3\2\2\2") - buf.write("\u01c2\u0ab5\3\2\2\2\u01c4\u0ac3\3\2\2\2\u01c6\u0adb\3") - buf.write("\2\2\2\u01c8\u0add\3\2\2\2\u01ca\u0ae0\3\2\2\2\u01cc\u0ae9") - buf.write("\3\2\2\2\u01ce\u0aed\3\2\2\2\u01d0\u0af6\3\2\2\2\u01d2") - buf.write("\u0af9\3\2\2\2\u01d4\u0afb\3\2\2\2\u01d6\u0afe\3\2\2\2") - buf.write("\u01d8\u0b1b\3\2\2\2\u01da\u01db\t\2\2\2\u01db\3\3\2\2") - buf.write("\2\u01dc\u01de\5\u00e6t\2\u01dd\u01dc\3\2\2\2\u01de\u01e1") - buf.write("\3\2\2\2\u01df\u01dd\3\2\2\2\u01df\u01e0\3\2\2\2\u01e0") - buf.write("\u01e2\3\2\2\2\u01e1\u01df\3\2\2\2\u01e2\u01eb\5\6\4\2") - buf.write("\u01e3\u01e5\5\u00e6t\2\u01e4\u01e3\3\2\2\2\u01e5\u01e8") - buf.write("\3\2\2\2\u01e6\u01e4\3\2\2\2\u01e6\u01e7\3\2\2\2\u01e7") - buf.write("\u01e9\3\2\2\2\u01e8\u01e6\3\2\2\2\u01e9\u01eb\7\5\2\2") - buf.write("\u01ea\u01df\3\2\2\2\u01ea\u01e6\3\2\2\2\u01eb\5\3\2\2") - buf.write("\2\u01ec\u01ef\5\b\5\2\u01ed\u01ef\5\n\6\2\u01ee\u01ec") - buf.write("\3\2\2\2\u01ee\u01ed\3\2\2\2\u01ef\7\3\2\2\2\u01f0\u01f1") - buf.write("\t\3\2\2\u01f1\t\3\2\2\2\u01f2\u01f3\t\4\2\2\u01f3\13") - buf.write("\3\2\2\2\u01f4\u01f8\5\16\b\2\u01f5\u01f8\5\34\17\2\u01f6") - buf.write("\u01f8\5\36\20\2\u01f7\u01f4\3\2\2\2\u01f7\u01f5\3\2\2") - buf.write("\2\u01f7\u01f6\3\2\2\2\u01f8\r\3\2\2\2\u01f9\u01fc\5\24") - buf.write("\13\2\u01fa\u01fc\5\32\16\2\u01fb\u01f9\3\2\2\2\u01fb") - buf.write("\u01fa\3\2\2\2\u01fc\u0201\3\2\2\2\u01fd\u0200\5\22\n") - buf.write("\2\u01fe\u0200\5\30\r\2\u01ff\u01fd\3\2\2\2\u01ff\u01fe") - buf.write("\3\2\2\2\u0200\u0203\3\2\2\2\u0201\u01ff\3\2\2\2\u0201") - buf.write("\u0202\3\2\2\2\u0202\17\3\2\2\2\u0203\u0201\3\2\2\2\u0204") - buf.write("\u0206\5\u00e6t\2\u0205\u0204\3\2\2\2\u0206\u0209\3\2") - buf.write("\2\2\u0207\u0205\3\2\2\2\u0207\u0208\3\2\2\2\u0208\u020a") - buf.write("\3\2\2\2\u0209\u0207\3\2\2\2\u020a\u020c\7h\2\2\u020b") - buf.write("\u020d\5*\26\2\u020c\u020b\3\2\2\2\u020c\u020d\3\2\2\2") - buf.write("\u020d\u021b\3\2\2\2\u020e\u020f\5\16\b\2\u020f\u0213") - buf.write("\7C\2\2\u0210\u0212\5\u00e6t\2\u0211\u0210\3\2\2\2\u0212") - buf.write("\u0215\3\2\2\2\u0213\u0211\3\2\2\2\u0213\u0214\3\2\2\2") - buf.write("\u0214\u0216\3\2\2\2\u0215\u0213\3\2\2\2\u0216\u0218\7") - buf.write("h\2\2\u0217\u0219\5*\26\2\u0218\u0217\3\2\2\2\u0218\u0219") - buf.write("\3\2\2\2\u0219\u021b\3\2\2\2\u021a\u0207\3\2\2\2\u021a") - buf.write("\u020e\3\2\2\2\u021b\21\3\2\2\2\u021c\u0220\7C\2\2\u021d") - buf.write("\u021f\5\u00e6t\2\u021e\u021d\3\2\2\2\u021f\u0222\3\2") - buf.write("\2\2\u0220\u021e\3\2\2\2\u0220\u0221\3\2\2\2\u0221\u0223") - buf.write("\3\2\2\2\u0222\u0220\3\2\2\2\u0223\u0225\7h\2\2\u0224") - buf.write("\u0226\5*\26\2\u0225\u0224\3\2\2\2\u0225\u0226\3\2\2\2") - buf.write("\u0226\23\3\2\2\2\u0227\u0229\5\u00e6t\2\u0228\u0227\3") - buf.write("\2\2\2\u0229\u022c\3\2\2\2\u022a\u0228\3\2\2\2\u022a\u022b") - buf.write("\3\2\2\2\u022b\u022d\3\2\2\2\u022c\u022a\3\2\2\2\u022d") - buf.write("\u022f\7h\2\2\u022e\u0230\5*\26\2\u022f\u022e\3\2\2\2") - buf.write("\u022f\u0230\3\2\2\2\u0230\25\3\2\2\2\u0231\u0232\5\20") - buf.write("\t\2\u0232\27\3\2\2\2\u0233\u0234\5\22\n\2\u0234\31\3") - buf.write("\2\2\2\u0235\u0236\5\24\13\2\u0236\33\3\2\2\2\u0237\u0239") - buf.write("\5\u00e6t\2\u0238\u0237\3\2\2\2\u0239\u023c\3\2\2\2\u023a") - buf.write("\u0238\3\2\2\2\u023a\u023b\3\2\2\2\u023b\u023d\3\2\2\2") - buf.write("\u023c\u023a\3\2\2\2\u023d\u023e\7h\2\2\u023e\35\3\2\2") - buf.write("\2\u023f\u0240\5\4\3\2\u0240\u0241\5 \21\2\u0241\u0249") - buf.write("\3\2\2\2\u0242\u0243\5\16\b\2\u0243\u0244\5 \21\2\u0244") - buf.write("\u0249\3\2\2\2\u0245\u0246\5\34\17\2\u0246\u0247\5 \21") - buf.write("\2\u0247\u0249\3\2\2\2\u0248\u023f\3\2\2\2\u0248\u0242") - buf.write("\3\2\2\2\u0248\u0245\3\2\2\2\u0249\37\3\2\2\2\u024a\u024c") - buf.write("\5\u00e6t\2\u024b\u024a\3\2\2\2\u024c\u024f\3\2\2\2\u024d") - buf.write("\u024b\3\2\2\2\u024d\u024e\3\2\2\2\u024e\u0250\3\2\2\2") - buf.write("\u024f\u024d\3\2\2\2\u0250\u0251\7?\2\2\u0251\u025c\7") - buf.write("@\2\2\u0252\u0254\5\u00e6t\2\u0253\u0252\3\2\2\2\u0254") - buf.write("\u0257\3\2\2\2\u0255\u0253\3\2\2\2\u0255\u0256\3\2\2\2") - buf.write("\u0256\u0258\3\2\2\2\u0257\u0255\3\2\2\2\u0258\u0259\7") - buf.write("?\2\2\u0259\u025b\7@\2\2\u025a\u0255\3\2\2\2\u025b\u025e") - buf.write("\3\2\2\2\u025c\u025a\3\2\2\2\u025c\u025d\3\2\2\2\u025d") - buf.write("!\3\2\2\2\u025e\u025c\3\2\2\2\u025f\u0261\5$\23\2\u0260") - buf.write("\u025f\3\2\2\2\u0261\u0264\3\2\2\2\u0262\u0260\3\2\2\2") - buf.write("\u0262\u0263\3\2\2\2\u0263\u0265\3\2\2\2\u0264\u0262\3") - buf.write("\2\2\2\u0265\u0267\7h\2\2\u0266\u0268\5&\24\2\u0267\u0266") - buf.write("\3\2\2\2\u0267\u0268\3\2\2\2\u0268#\3\2\2\2\u0269\u026a") - buf.write("\5\u00e6t\2\u026a%\3\2\2\2\u026b\u026c\7\23\2\2\u026c") - buf.write("\u0276\5\34\17\2\u026d\u026e\7\23\2\2\u026e\u0272\5\16") - buf.write("\b\2\u026f\u0271\5(\25\2\u0270\u026f\3\2\2\2\u0271\u0274") - buf.write("\3\2\2\2\u0272\u0270\3\2\2\2\u0272\u0273\3\2\2\2\u0273") - buf.write("\u0276\3\2\2\2\u0274\u0272\3\2\2\2\u0275\u026b\3\2\2\2") - buf.write("\u0275\u026d\3\2\2\2\u0276\'\3\2\2\2\u0277\u0278\7W\2") - buf.write("\2\u0278\u0279\5\26\f\2\u0279)\3\2\2\2\u027a\u027b\7F") - buf.write("\2\2\u027b\u027c\5,\27\2\u027c\u027d\7E\2\2\u027d+\3\2") - buf.write("\2\2\u027e\u0283\5.\30\2\u027f\u0280\7B\2\2\u0280\u0282") - buf.write("\5.\30\2\u0281\u027f\3\2\2\2\u0282\u0285\3\2\2\2\u0283") - buf.write("\u0281\3\2\2\2\u0283\u0284\3\2\2\2\u0284-\3\2\2\2\u0285") - buf.write("\u0283\3\2\2\2\u0286\u0289\5\f\7\2\u0287\u0289\5\60\31") - buf.write("\2\u0288\u0286\3\2\2\2\u0288\u0287\3\2\2\2\u0289/\3\2") - buf.write("\2\2\u028a\u028c\5\u00e6t\2\u028b\u028a\3\2\2\2\u028c") - buf.write("\u028f\3\2\2\2\u028d\u028b\3\2\2\2\u028d\u028e\3\2\2\2") - buf.write("\u028e\u0290\3\2\2\2\u028f\u028d\3\2\2\2\u0290\u0292\7") - buf.write("I\2\2\u0291\u0293\5\62\32\2\u0292\u0291\3\2\2\2\u0292") - buf.write("\u0293\3\2\2\2\u0293\61\3\2\2\2\u0294\u0295\7\23\2\2\u0295") - buf.write("\u0299\5\f\7\2\u0296\u0297\7*\2\2\u0297\u0299\5\f\7\2") - buf.write("\u0298\u0294\3\2\2\2\u0298\u0296\3\2\2\2\u0299\63\3\2") - buf.write("\2\2\u029a\u029b\b\33\1\2\u029b\u029c\7h\2\2\u029c\u02a2") - buf.write("\3\2\2\2\u029d\u029e\f\3\2\2\u029e\u029f\7C\2\2\u029f") - buf.write("\u02a1\7h\2\2\u02a0\u029d\3\2\2\2\u02a1\u02a4\3\2\2\2") - buf.write("\u02a2\u02a0\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\65\3\2") - buf.write("\2\2\u02a4\u02a2\3\2\2\2\u02a5\u02ab\7h\2\2\u02a6\u02a7") - buf.write("\58\35\2\u02a7\u02a8\7C\2\2\u02a8\u02a9\7h\2\2\u02a9\u02ab") - buf.write("\3\2\2\2\u02aa\u02a5\3\2\2\2\u02aa\u02a6\3\2\2\2\u02ab") - buf.write("\67\3\2\2\2\u02ac\u02ad\b\35\1\2\u02ad\u02ae\7h\2\2\u02ae") - buf.write("\u02b4\3\2\2\2\u02af\u02b0\f\3\2\2\u02b0\u02b1\7C\2\2") - buf.write("\u02b1\u02b3\7h\2\2\u02b2\u02af\3\2\2\2\u02b3\u02b6\3") - buf.write("\2\2\2\u02b4\u02b2\3\2\2\2\u02b4\u02b5\3\2\2\2\u02b59") - buf.write("\3\2\2\2\u02b6\u02b4\3\2\2\2\u02b7\u02bd\7h\2\2\u02b8") - buf.write("\u02b9\5> \2\u02b9\u02ba\7C\2\2\u02ba\u02bb\7h\2\2\u02bb") - buf.write("\u02bd\3\2\2\2\u02bc\u02b7\3\2\2\2\u02bc\u02b8\3\2\2\2") - buf.write("\u02bd;\3\2\2\2\u02be\u02bf\7h\2\2\u02bf=\3\2\2\2\u02c0") - buf.write("\u02c1\b \1\2\u02c1\u02c2\7h\2\2\u02c2\u02c8\3\2\2\2\u02c3") - buf.write("\u02c4\f\3\2\2\u02c4\u02c5\7C\2\2\u02c5\u02c7\7h\2\2\u02c6") - buf.write("\u02c3\3\2\2\2\u02c7\u02ca\3\2\2\2\u02c8\u02c6\3\2\2\2") - buf.write("\u02c8\u02c9\3\2\2\2\u02c9?\3\2\2\2\u02ca\u02c8\3\2\2") - buf.write("\2\u02cb\u02cd\5B\"\2\u02cc\u02cb\3\2\2\2\u02cc\u02cd") - buf.write("\3\2\2\2\u02cd\u02d1\3\2\2\2\u02ce\u02d0\5F$\2\u02cf\u02ce") - buf.write("\3\2\2\2\u02d0\u02d3\3\2\2\2\u02d1\u02cf\3\2\2\2\u02d1") - buf.write("\u02d2\3\2\2\2\u02d2\u02d7\3\2\2\2\u02d3\u02d1\3\2\2\2") - buf.write("\u02d4\u02d6\5P)\2\u02d5\u02d4\3\2\2\2\u02d6\u02d9\3\2") - buf.write("\2\2\u02d7\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u02da") - buf.write("\3\2\2\2\u02d9\u02d7\3\2\2\2\u02da\u02db\7\2\2\3\u02db") - buf.write("A\3\2\2\2\u02dc\u02de\5D#\2\u02dd\u02dc\3\2\2\2\u02de") - buf.write("\u02e1\3\2\2\2\u02df\u02dd\3\2\2\2\u02df\u02e0\3\2\2\2") - buf.write("\u02e0\u02e2\3\2\2\2\u02e1\u02df\3\2\2\2\u02e2\u02e3\7") - buf.write("\"\2\2\u02e3\u02e4\5\64\33\2\u02e4\u02e5\7A\2\2\u02e5") - buf.write("C\3\2\2\2\u02e6\u02e7\5\u00e6t\2\u02e7E\3\2\2\2\u02e8") - buf.write("\u02ed\5H%\2\u02e9\u02ed\5J&\2\u02ea\u02ed\5L\'\2\u02eb") - buf.write("\u02ed\5N(\2\u02ec\u02e8\3\2\2\2\u02ec\u02e9\3\2\2\2\u02ec") - buf.write("\u02ea\3\2\2\2\u02ec\u02eb\3\2\2\2\u02edG\3\2\2\2\u02ee") - buf.write("\u02ef\7\33\2\2\u02ef\u02f0\5\66\34\2\u02f0\u02f1\7A\2") - buf.write("\2\u02f1I\3\2\2\2\u02f2\u02f3\7\33\2\2\u02f3\u02f4\58") - buf.write("\35\2\u02f4\u02f5\7C\2\2\u02f5\u02f6\7U\2\2\u02f6\u02f7") - buf.write("\7A\2\2\u02f7K\3\2\2\2\u02f8\u02f9\7\33\2\2\u02f9\u02fa") - buf.write("\7(\2\2\u02fa\u02fb\5\66\34\2\u02fb\u02fc\7C\2\2\u02fc") - buf.write("\u02fd\7h\2\2\u02fd\u02fe\7A\2\2\u02feM\3\2\2\2\u02ff") - buf.write("\u0300\7\33\2\2\u0300\u0301\7(\2\2\u0301\u0302\5\66\34") - buf.write("\2\u0302\u0303\7C\2\2\u0303\u0304\7U\2\2\u0304\u0305\7") - buf.write("A\2\2\u0305O\3\2\2\2\u0306\u030a\5R*\2\u0307\u030a\5\u00c6") - buf.write("d\2\u0308\u030a\7A\2\2\u0309\u0306\3\2\2\2\u0309\u0307") - buf.write("\3\2\2\2\u0309\u0308\3\2\2\2\u030aQ\3\2\2\2\u030b\u030e") - buf.write("\5T+\2\u030c\u030e\5\u00ba^\2\u030d\u030b\3\2\2\2\u030d") - buf.write("\u030c\3\2\2\2\u030eS\3\2\2\2\u030f\u0311\5V,\2\u0310") - buf.write("\u030f\3\2\2\2\u0311\u0314\3\2\2\2\u0312\u0310\3\2\2\2") - buf.write("\u0312\u0313\3\2\2\2\u0313\u0315\3\2\2\2\u0314\u0312\3") - buf.write("\2\2\2\u0315\u0316\7\13\2\2\u0316\u0318\7h\2\2\u0317\u0319") - buf.write("\5X-\2\u0318\u0317\3\2\2\2\u0318\u0319\3\2\2\2\u0319\u031b") - buf.write("\3\2\2\2\u031a\u031c\5\\/\2\u031b\u031a\3\2\2\2\u031b") - buf.write("\u031c\3\2\2\2\u031c\u031e\3\2\2\2\u031d\u031f\5^\60\2") - buf.write("\u031e\u031d\3\2\2\2\u031e\u031f\3\2\2\2\u031f\u0320\3") - buf.write("\2\2\2\u0320\u0321\5b\62\2\u0321U\3\2\2\2\u0322\u032b") - buf.write("\5\u00e6t\2\u0323\u032b\7%\2\2\u0324\u032b\7$\2\2\u0325") - buf.write("\u032b\7#\2\2\u0326\u032b\7\3\2\2\u0327\u032b\7(\2\2\u0328") - buf.write("\u032b\7\24\2\2\u0329\u032b\7)\2\2\u032a\u0322\3\2\2\2") - buf.write("\u032a\u0323\3\2\2\2\u032a\u0324\3\2\2\2\u032a\u0325\3") - buf.write("\2\2\2\u032a\u0326\3\2\2\2\u032a\u0327\3\2\2\2\u032a\u0328") - buf.write("\3\2\2\2\u032a\u0329\3\2\2\2\u032bW\3\2\2\2\u032c\u032d") - buf.write("\7F\2\2\u032d\u032e\5Z.\2\u032e\u032f\7E\2\2\u032fY\3") - buf.write("\2\2\2\u0330\u0335\5\"\22\2\u0331\u0332\7B\2\2\u0332\u0334") - buf.write("\5\"\22\2\u0333\u0331\3\2\2\2\u0334\u0337\3\2\2\2\u0335") - buf.write("\u0333\3\2\2\2\u0335\u0336\3\2\2\2\u0336[\3\2\2\2\u0337") - buf.write("\u0335\3\2\2\2\u0338\u0339\7\23\2\2\u0339\u033a\5\20\t") - buf.write("\2\u033a]\3\2\2\2\u033b\u033c\7\32\2\2\u033c\u033d\5`") - buf.write("\61\2\u033d_\3\2\2\2\u033e\u0343\5\26\f\2\u033f\u0340") - buf.write("\7B\2\2\u0340\u0342\5\26\f\2\u0341\u033f\3\2\2\2\u0342") - buf.write("\u0345\3\2\2\2\u0343\u0341\3\2\2\2\u0343\u0344\3\2\2\2") - buf.write("\u0344a\3\2\2\2\u0345\u0343\3\2\2\2\u0346\u034a\7=\2\2") - buf.write("\u0347\u0349\5d\63\2\u0348\u0347\3\2\2\2\u0349\u034c\3") - buf.write("\2\2\2\u034a\u0348\3\2\2\2\u034a\u034b\3\2\2\2\u034b\u034d") - buf.write("\3\2\2\2\u034c\u034a\3\2\2\2\u034d\u034e\7>\2\2\u034e") - buf.write("c\3\2\2\2\u034f\u0354\5f\64\2\u0350\u0354\5\u00aaV\2\u0351") - buf.write("\u0354\5\u00acW\2\u0352\u0354\5\u00aeX\2\u0353\u034f\3") - buf.write("\2\2\2\u0353\u0350\3\2\2\2\u0353\u0351\3\2\2\2\u0353\u0352") - buf.write("\3\2\2\2\u0354e\3\2\2\2\u0355\u035b\5h\65\2\u0356\u035b") - buf.write("\5\u008cG\2\u0357\u035b\5R*\2\u0358\u035b\5\u00c6d\2\u0359") - buf.write("\u035b\7A\2\2\u035a\u0355\3\2\2\2\u035a\u0356\3\2\2\2") - buf.write("\u035a\u0357\3\2\2\2\u035a\u0358\3\2\2\2\u035a\u0359\3") - buf.write("\2\2\2\u035bg\3\2\2\2\u035c\u035e\5j\66\2\u035d\u035c") - buf.write("\3\2\2\2\u035e\u0361\3\2\2\2\u035f\u035d\3\2\2\2\u035f") - buf.write("\u0360\3\2\2\2\u0360\u0362\3\2\2\2\u0361\u035f\3\2\2\2") - buf.write("\u0362\u0363\5t;\2\u0363\u0364\5l\67\2\u0364\u0365\7A") - buf.write("\2\2\u0365i\3\2\2\2\u0366\u036f\5\u00e6t\2\u0367\u036f") - buf.write("\7%\2\2\u0368\u036f\7$\2\2\u0369\u036f\7#\2\2\u036a\u036f") - buf.write("\7(\2\2\u036b\u036f\7\24\2\2\u036c\u036f\7\60\2\2\u036d") - buf.write("\u036f\7\63\2\2\u036e\u0366\3\2\2\2\u036e\u0367\3\2\2") - buf.write("\2\u036e\u0368\3\2\2\2\u036e\u0369\3\2\2\2\u036e\u036a") - buf.write("\3\2\2\2\u036e\u036b\3\2\2\2\u036e\u036c\3\2\2\2\u036e") - buf.write("\u036d\3\2\2\2\u036fk\3\2\2\2\u0370\u0375\5n8\2\u0371") - buf.write("\u0372\7B\2\2\u0372\u0374\5n8\2\u0373\u0371\3\2\2\2\u0374") - buf.write("\u0377\3\2\2\2\u0375\u0373\3\2\2\2\u0375\u0376\3\2\2\2") - buf.write("\u0376m\3\2\2\2\u0377\u0375\3\2\2\2\u0378\u037b\5p9\2") - buf.write("\u0379\u037a\7D\2\2\u037a\u037c\5r:\2\u037b\u0379\3\2") - buf.write("\2\2\u037b\u037c\3\2\2\2\u037co\3\2\2\2\u037d\u037f\7") - buf.write("h\2\2\u037e\u0380\5 \21\2\u037f\u037e\3\2\2\2\u037f\u0380") - buf.write("\3\2\2\2\u0380q\3\2\2\2\u0381\u0384\5\u019e\u00d0\2\u0382") - buf.write("\u0384\5\u00f8}\2\u0383\u0381\3\2\2\2\u0383\u0382\3\2") - buf.write("\2\2\u0384s\3\2\2\2\u0385\u0388\5v<\2\u0386\u0388\5x=") - buf.write("\2\u0387\u0385\3\2\2\2\u0387\u0386\3\2\2\2\u0388u\3\2") - buf.write("\2\2\u0389\u038c\5\6\4\2\u038a\u038c\7\5\2\2\u038b\u0389") - buf.write("\3\2\2\2\u038b\u038a\3\2\2\2\u038cw\3\2\2\2\u038d\u0391") - buf.write("\5z>\2\u038e\u0391\5\u0088E\2\u038f\u0391\5\u008aF\2\u0390") - buf.write("\u038d\3\2\2\2\u0390\u038e\3\2\2\2\u0390\u038f\3\2\2\2") - buf.write("\u0391y\3\2\2\2\u0392\u0395\5\u0080A\2\u0393\u0395\5\u0086") - buf.write("D\2\u0394\u0392\3\2\2\2\u0394\u0393\3\2\2\2\u0395\u039a") - buf.write("\3\2\2\2\u0396\u0399\5~@\2\u0397\u0399\5\u0084C\2\u0398") - buf.write("\u0396\3\2\2\2\u0398\u0397\3\2\2\2\u0399\u039c\3\2\2\2") - buf.write("\u039a\u0398\3\2\2\2\u039a\u039b\3\2\2\2\u039b{\3\2\2") - buf.write("\2\u039c\u039a\3\2\2\2\u039d\u039f\7h\2\2\u039e\u03a0") - buf.write("\5*\26\2\u039f\u039e\3\2\2\2\u039f\u03a0\3\2\2\2\u03a0") - buf.write("\u03ae\3\2\2\2\u03a1\u03a2\5z>\2\u03a2\u03a6\7C\2\2\u03a3") - buf.write("\u03a5\5\u00e6t\2\u03a4\u03a3\3\2\2\2\u03a5\u03a8\3\2") - buf.write("\2\2\u03a6\u03a4\3\2\2\2\u03a6\u03a7\3\2\2\2\u03a7\u03a9") - buf.write("\3\2\2\2\u03a8\u03a6\3\2\2\2\u03a9\u03ab\7h\2\2\u03aa") - buf.write("\u03ac\5*\26\2\u03ab\u03aa\3\2\2\2\u03ab\u03ac\3\2\2\2") - buf.write("\u03ac\u03ae\3\2\2\2\u03ad\u039d\3\2\2\2\u03ad\u03a1\3") - buf.write("\2\2\2\u03ae}\3\2\2\2\u03af\u03b3\7C\2\2\u03b0\u03b2\5") - buf.write("\u00e6t\2\u03b1\u03b0\3\2\2\2\u03b2\u03b5\3\2\2\2\u03b3") - buf.write("\u03b1\3\2\2\2\u03b3\u03b4\3\2\2\2\u03b4\u03b6\3\2\2\2") - buf.write("\u03b5\u03b3\3\2\2\2\u03b6\u03b8\7h\2\2\u03b7\u03b9\5") - buf.write("*\26\2\u03b8\u03b7\3\2\2\2\u03b8\u03b9\3\2\2\2\u03b9\177") - buf.write("\3\2\2\2\u03ba\u03bc\7h\2\2\u03bb\u03bd\5*\26\2\u03bc") - buf.write("\u03bb\3\2\2\2\u03bc\u03bd\3\2\2\2\u03bd\u0081\3\2\2\2") - buf.write("\u03be\u03bf\5|?\2\u03bf\u0083\3\2\2\2\u03c0\u03c1\5~") - buf.write("@\2\u03c1\u0085\3\2\2\2\u03c2\u03c3\5\u0080A\2\u03c3\u0087") - buf.write("\3\2\2\2\u03c4\u03c5\7h\2\2\u03c5\u0089\3\2\2\2\u03c6") - buf.write("\u03c7\5v<\2\u03c7\u03c8\5 \21\2\u03c8\u03d0\3\2\2\2\u03c9") - buf.write("\u03ca\5z>\2\u03ca\u03cb\5 \21\2\u03cb\u03d0\3\2\2\2\u03cc") - buf.write("\u03cd\5\u0088E\2\u03cd\u03ce\5 \21\2\u03ce\u03d0\3\2") - buf.write("\2\2\u03cf\u03c6\3\2\2\2\u03cf\u03c9\3\2\2\2\u03cf\u03cc") - buf.write("\3\2\2\2\u03d0\u008b\3\2\2\2\u03d1\u03d3\5\u008eH\2\u03d2") - buf.write("\u03d1\3\2\2\2\u03d3\u03d6\3\2\2\2\u03d4\u03d2\3\2\2\2") - buf.write("\u03d4\u03d5\3\2\2\2\u03d5\u03d7\3\2\2\2\u03d6\u03d4\3") - buf.write("\2\2\2\u03d7\u03d8\5\u0090I\2\u03d8\u03d9\5\u00a8U\2\u03d9") - buf.write("\u008d\3\2\2\2\u03da\u03e5\5\u00e6t\2\u03db\u03e5\7%\2") - buf.write("\2\u03dc\u03e5\7$\2\2\u03dd\u03e5\7#\2\2\u03de\u03e5\7") - buf.write("\3\2\2\u03df\u03e5\7(\2\2\u03e0\u03e5\7\24\2\2\u03e1\u03e5") - buf.write("\7,\2\2\u03e2\u03e5\7 \2\2\u03e3\u03e5\7)\2\2\u03e4\u03da") - buf.write("\3\2\2\2\u03e4\u03db\3\2\2\2\u03e4\u03dc\3\2\2\2\u03e4") - buf.write("\u03dd\3\2\2\2\u03e4\u03de\3\2\2\2\u03e4\u03df\3\2\2\2") - buf.write("\u03e4\u03e0\3\2\2\2\u03e4\u03e1\3\2\2\2\u03e4\u03e2\3") - buf.write("\2\2\2\u03e4\u03e3\3\2\2\2\u03e5\u008f\3\2\2\2\u03e6\u03e7") - buf.write("\5\u0092J\2\u03e7\u03e9\5\u0094K\2\u03e8\u03ea\5\u00a2") - buf.write("R\2\u03e9\u03e8\3\2\2\2\u03e9\u03ea\3\2\2\2\u03ea\u03f8") - buf.write("\3\2\2\2\u03eb\u03ef\5X-\2\u03ec\u03ee\5\u00e6t\2\u03ed") - buf.write("\u03ec\3\2\2\2\u03ee\u03f1\3\2\2\2\u03ef\u03ed\3\2\2\2") - buf.write("\u03ef\u03f0\3\2\2\2\u03f0\u03f2\3\2\2\2\u03f1\u03ef\3") - buf.write("\2\2\2\u03f2\u03f3\5\u0092J\2\u03f3\u03f5\5\u0094K\2\u03f4") - buf.write("\u03f6\5\u00a2R\2\u03f5\u03f4\3\2\2\2\u03f5\u03f6\3\2") - buf.write("\2\2\u03f6\u03f8\3\2\2\2\u03f7\u03e6\3\2\2\2\u03f7\u03eb") - buf.write("\3\2\2\2\u03f8\u0091\3\2\2\2\u03f9\u03fc\5t;\2\u03fa\u03fc") - buf.write("\7\62\2\2\u03fb\u03f9\3\2\2\2\u03fb\u03fa\3\2\2\2\u03fc") - buf.write("\u0093\3\2\2\2\u03fd\u03fe\7h\2\2\u03fe\u0400\7;\2\2\u03ff") - buf.write("\u0401\5\u0096L\2\u0400\u03ff\3\2\2\2\u0400\u0401\3\2") - buf.write("\2\2\u0401\u0402\3\2\2\2\u0402\u0404\7<\2\2\u0403\u0405") - buf.write("\5 \21\2\u0404\u0403\3\2\2\2\u0404\u0405\3\2\2\2\u0405") - buf.write("\u0095\3\2\2\2\u0406\u040d\5\u00a0Q\2\u0407\u0408\5\u0098") - buf.write("M\2\u0408\u0409\7B\2\2\u0409\u040a\5\u009eP\2\u040a\u040d") - buf.write("\3\2\2\2\u040b\u040d\5\u009eP\2\u040c\u0406\3\2\2\2\u040c") - buf.write("\u0407\3\2\2\2\u040c\u040b\3\2\2\2\u040d\u0097\3\2\2\2") - buf.write("\u040e\u0413\5\u009aN\2\u040f\u0410\7B\2\2\u0410\u0412") - buf.write("\5\u009aN\2\u0411\u040f\3\2\2\2\u0412\u0415\3\2\2\2\u0413") - buf.write("\u0411\3\2\2\2\u0413\u0414\3\2\2\2\u0414\u041f\3\2\2\2") - buf.write("\u0415\u0413\3\2\2\2\u0416\u041b\5\u00a0Q\2\u0417\u0418") - buf.write("\7B\2\2\u0418\u041a\5\u009aN\2\u0419\u0417\3\2\2\2\u041a") - buf.write("\u041d\3\2\2\2\u041b\u0419\3\2\2\2\u041b\u041c\3\2\2\2") - buf.write("\u041c\u041f\3\2\2\2\u041d\u041b\3\2\2\2\u041e\u040e\3") - buf.write("\2\2\2\u041e\u0416\3\2\2\2\u041f\u0099\3\2\2\2\u0420\u0422") - buf.write("\5\u009cO\2\u0421\u0420\3\2\2\2\u0422\u0425\3\2\2\2\u0423") - buf.write("\u0421\3\2\2\2\u0423\u0424\3\2\2\2\u0424\u0426\3\2\2\2") - buf.write("\u0425\u0423\3\2\2\2\u0426\u0427\5t;\2\u0427\u0428\5p") - buf.write("9\2\u0428\u009b\3\2\2\2\u0429\u042c\5\u00e6t\2\u042a\u042c") - buf.write("\7\24\2\2\u042b\u0429\3\2\2\2\u042b\u042a\3\2\2\2\u042c") - buf.write("\u009d\3\2\2\2\u042d\u042f\5\u009cO\2\u042e\u042d\3\2") - buf.write("\2\2\u042f\u0432\3\2\2\2\u0430\u042e\3\2\2\2\u0430\u0431") - buf.write("\3\2\2\2\u0431\u0433\3\2\2\2\u0432\u0430\3\2\2\2\u0433") - buf.write("\u0437\5t;\2\u0434\u0436\5\u00e6t\2\u0435\u0434\3\2\2") - buf.write("\2\u0436\u0439\3\2\2\2\u0437\u0435\3\2\2\2\u0437\u0438") - buf.write("\3\2\2\2\u0438\u043a\3\2\2\2\u0439\u0437\3\2\2\2\u043a") - buf.write("\u043b\7j\2\2\u043b\u043c\5p9\2\u043c\u043f\3\2\2\2\u043d") - buf.write("\u043f\5\u009aN\2\u043e\u0430\3\2\2\2\u043e\u043d\3\2") - buf.write("\2\2\u043f\u009f\3\2\2\2\u0440\u0442\5\u00e6t\2\u0441") - buf.write("\u0440\3\2\2\2\u0442\u0445\3\2\2\2\u0443\u0441\3\2\2\2") - buf.write("\u0443\u0444\3\2\2\2\u0444\u0446\3\2\2\2\u0445\u0443\3") - buf.write("\2\2\2\u0446\u0449\5t;\2\u0447\u0448\7h\2\2\u0448\u044a") - buf.write("\7C\2\2\u0449\u0447\3\2\2\2\u0449\u044a\3\2\2\2\u044a") - buf.write("\u044b\3\2\2\2\u044b\u044c\7-\2\2\u044c\u00a1\3\2\2\2") - buf.write("\u044d\u044e\7/\2\2\u044e\u044f\5\u00a4S\2\u044f\u00a3") - buf.write("\3\2\2\2\u0450\u0455\5\u00a6T\2\u0451\u0452\7B\2\2\u0452") - buf.write("\u0454\5\u00a6T\2\u0453\u0451\3\2\2\2\u0454\u0457\3\2") - buf.write("\2\2\u0455\u0453\3\2\2\2\u0455\u0456\3\2\2\2\u0456\u00a5") - buf.write("\3\2\2\2\u0457\u0455\3\2\2\2\u0458\u045b\5\20\t\2\u0459") - buf.write("\u045b\5\34\17\2\u045a\u0458\3\2\2\2\u045a\u0459\3\2\2") - buf.write("\2\u045b\u00a7\3\2\2\2\u045c\u045f\5\u00fc\177\2\u045d") - buf.write("\u045f\7A\2\2\u045e\u045c\3\2\2\2\u045e\u045d\3\2\2\2") - buf.write("\u045f\u00a9\3\2\2\2\u0460\u0461\5\u00fc\177\2\u0461\u00ab") - buf.write("\3\2\2\2\u0462\u0463\7(\2\2\u0463\u0464\5\u00fc\177\2") - buf.write("\u0464\u00ad\3\2\2\2\u0465\u0467\5\u00b0Y\2\u0466\u0465") - buf.write("\3\2\2\2\u0467\u046a\3\2\2\2\u0468\u0466\3\2\2\2\u0468") - buf.write("\u0469\3\2\2\2\u0469\u046b\3\2\2\2\u046a\u0468\3\2\2\2") - buf.write("\u046b\u046d\5\u00b2Z\2\u046c\u046e\5\u00a2R\2\u046d\u046c") - buf.write("\3\2\2\2\u046d\u046e\3\2\2\2\u046e\u046f\3\2\2\2\u046f") - buf.write("\u0470\5\u00b6\\\2\u0470\u00af\3\2\2\2\u0471\u0476\5\u00e6") - buf.write("t\2\u0472\u0476\7%\2\2\u0473\u0476\7$\2\2\u0474\u0476") - buf.write("\7#\2\2\u0475\u0471\3\2\2\2\u0475\u0472\3\2\2\2\u0475") - buf.write("\u0473\3\2\2\2\u0475\u0474\3\2\2\2\u0476\u00b1\3\2\2\2") - buf.write("\u0477\u0479\5X-\2\u0478\u0477\3\2\2\2\u0478\u0479\3\2") - buf.write("\2\2\u0479\u047a\3\2\2\2\u047a\u047b\5\u00b4[\2\u047b") - buf.write("\u047d\7;\2\2\u047c\u047e\5\u0096L\2\u047d\u047c\3\2\2") - buf.write("\2\u047d\u047e\3\2\2\2\u047e\u047f\3\2\2\2\u047f\u0480") - buf.write("\7<\2\2\u0480\u00b3\3\2\2\2\u0481\u0482\7h\2\2\u0482\u00b5") - buf.write("\3\2\2\2\u0483\u0485\7=\2\2\u0484\u0486\5\u00b8]\2\u0485") - buf.write("\u0484\3\2\2\2\u0485\u0486\3\2\2\2\u0486\u0488\3\2\2\2") - buf.write("\u0487\u0489\5\u00fe\u0080\2\u0488\u0487\3\2\2\2\u0488") - buf.write("\u0489\3\2\2\2\u0489\u048a\3\2\2\2\u048a\u048b\7>\2\2") - buf.write("\u048b\u00b7\3\2\2\2\u048c\u048e\5*\26\2\u048d\u048c\3") - buf.write("\2\2\2\u048d\u048e\3\2\2\2\u048e\u048f\3\2\2\2\u048f\u0490") - buf.write("\7-\2\2\u0490\u0492\7;\2\2\u0491\u0493\5\u018e\u00c8\2") - buf.write("\u0492\u0491\3\2\2\2\u0492\u0493\3\2\2\2\u0493\u0494\3") - buf.write("\2\2\2\u0494\u0495\7<\2\2\u0495\u04bb\7A\2\2\u0496\u0498") - buf.write("\5*\26\2\u0497\u0496\3\2\2\2\u0497\u0498\3\2\2\2\u0498") - buf.write("\u0499\3\2\2\2\u0499\u049a\7*\2\2\u049a\u049c\7;\2\2\u049b") - buf.write("\u049d\5\u018e\u00c8\2\u049c\u049b\3\2\2\2\u049c\u049d") - buf.write("\3\2\2\2\u049d\u049e\3\2\2\2\u049e\u049f\7<\2\2\u049f") - buf.write("\u04bb\7A\2\2\u04a0\u04a1\5:\36\2\u04a1\u04a3\7C\2\2\u04a2") - buf.write("\u04a4\5*\26\2\u04a3\u04a2\3\2\2\2\u04a3\u04a4\3\2\2\2") - buf.write("\u04a4\u04a5\3\2\2\2\u04a5\u04a6\7*\2\2\u04a6\u04a8\7") - buf.write(";\2\2\u04a7\u04a9\5\u018e\u00c8\2\u04a8\u04a7\3\2\2\2") - buf.write("\u04a8\u04a9\3\2\2\2\u04a9\u04aa\3\2\2\2\u04aa\u04ab\7") - buf.write("<\2\2\u04ab\u04ac\7A\2\2\u04ac\u04bb\3\2\2\2\u04ad\u04ae") - buf.write("\5\u0160\u00b1\2\u04ae\u04b0\7C\2\2\u04af\u04b1\5*\26") - buf.write("\2\u04b0\u04af\3\2\2\2\u04b0\u04b1\3\2\2\2\u04b1\u04b2") - buf.write("\3\2\2\2\u04b2\u04b3\7*\2\2\u04b3\u04b5\7;\2\2\u04b4\u04b6") - buf.write("\5\u018e\u00c8\2\u04b5\u04b4\3\2\2\2\u04b5\u04b6\3\2\2") - buf.write("\2\u04b6\u04b7\3\2\2\2\u04b7\u04b8\7<\2\2\u04b8\u04b9") - buf.write("\7A\2\2\u04b9\u04bb\3\2\2\2\u04ba\u048d\3\2\2\2\u04ba") - buf.write("\u0497\3\2\2\2\u04ba\u04a0\3\2\2\2\u04ba\u04ad\3\2\2\2") - buf.write("\u04bb\u00b9\3\2\2\2\u04bc\u04be\5V,\2\u04bd\u04bc\3\2") - buf.write("\2\2\u04be\u04c1\3\2\2\2\u04bf\u04bd\3\2\2\2\u04bf\u04c0") - buf.write("\3\2\2\2\u04c0\u04c2\3\2\2\2\u04c1\u04bf\3\2\2\2\u04c2") - buf.write("\u04c3\7\22\2\2\u04c3\u04c5\7h\2\2\u04c4\u04c6\5^\60\2") - buf.write("\u04c5\u04c4\3\2\2\2\u04c5\u04c6\3\2\2\2\u04c6\u04c7\3") - buf.write("\2\2\2\u04c7\u04c8\5\u00bc_\2\u04c8\u00bb\3\2\2\2\u04c9") - buf.write("\u04cb\7=\2\2\u04ca\u04cc\5\u00be`\2\u04cb\u04ca\3\2\2") - buf.write("\2\u04cb\u04cc\3\2\2\2\u04cc\u04ce\3\2\2\2\u04cd\u04cf") - buf.write("\7B\2\2\u04ce\u04cd\3\2\2\2\u04ce\u04cf\3\2\2\2\u04cf") - buf.write("\u04d1\3\2\2\2\u04d0\u04d2\5\u00c4c\2\u04d1\u04d0\3\2") - buf.write("\2\2\u04d1\u04d2\3\2\2\2\u04d2\u04d3\3\2\2\2\u04d3\u04d4") - buf.write("\7>\2\2\u04d4\u00bd\3\2\2\2\u04d5\u04da\5\u00c0a\2\u04d6") - buf.write("\u04d7\7B\2\2\u04d7\u04d9\5\u00c0a\2\u04d8\u04d6\3\2\2") - buf.write("\2\u04d9\u04dc\3\2\2\2\u04da\u04d8\3\2\2\2\u04da\u04db") - buf.write("\3\2\2\2\u04db\u00bf\3\2\2\2\u04dc\u04da\3\2\2\2\u04dd") - buf.write("\u04df\5\u00c2b\2\u04de\u04dd\3\2\2\2\u04df\u04e2\3\2") - buf.write("\2\2\u04e0\u04de\3\2\2\2\u04e0\u04e1\3\2\2\2\u04e1\u04e3") - buf.write("\3\2\2\2\u04e2\u04e0\3\2\2\2\u04e3\u04e9\7h\2\2\u04e4") - buf.write("\u04e6\7;\2\2\u04e5\u04e7\5\u018e\u00c8\2\u04e6\u04e5") - buf.write("\3\2\2\2\u04e6\u04e7\3\2\2\2\u04e7\u04e8\3\2\2\2\u04e8") - buf.write("\u04ea\7<\2\2\u04e9\u04e4\3\2\2\2\u04e9\u04ea\3\2\2\2") - buf.write("\u04ea\u04ec\3\2\2\2\u04eb\u04ed\5b\62\2\u04ec\u04eb\3") - buf.write("\2\2\2\u04ec\u04ed\3\2\2\2\u04ed\u00c1\3\2\2\2\u04ee\u04ef") - buf.write("\5\u00e6t\2\u04ef\u00c3\3\2\2\2\u04f0\u04f4\7A\2\2\u04f1") - buf.write("\u04f3\5d\63\2\u04f2\u04f1\3\2\2\2\u04f3\u04f6\3\2\2\2") - buf.write("\u04f4\u04f2\3\2\2\2\u04f4\u04f5\3\2\2\2\u04f5\u00c5\3") - buf.write("\2\2\2\u04f6\u04f4\3\2\2\2\u04f7\u04fa\5\u00c8e\2\u04f8") - buf.write("\u04fa\5\u00dan\2\u04f9\u04f7\3\2\2\2\u04f9\u04f8\3\2") - buf.write("\2\2\u04fa\u00c7\3\2\2\2\u04fb\u04fd\5\u00caf\2\u04fc") - buf.write("\u04fb\3\2\2\2\u04fd\u0500\3\2\2\2\u04fe\u04fc\3\2\2\2") - buf.write("\u04fe\u04ff\3\2\2\2\u04ff\u0501\3\2\2\2\u0500\u04fe\3") - buf.write("\2\2\2\u0501\u0502\7\36\2\2\u0502\u0504\7h\2\2\u0503\u0505") - buf.write("\5X-\2\u0504\u0503\3\2\2\2\u0504\u0505\3\2\2\2\u0505\u0507") - buf.write("\3\2\2\2\u0506\u0508\5\u00ccg\2\u0507\u0506\3\2\2\2\u0507") - buf.write("\u0508\3\2\2\2\u0508\u0509\3\2\2\2\u0509\u050a\5\u00ce") - buf.write("h\2\u050a\u00c9\3\2\2\2\u050b\u0513\5\u00e6t\2\u050c\u0513") - buf.write("\7%\2\2\u050d\u0513\7$\2\2\u050e\u0513\7#\2\2\u050f\u0513") - buf.write("\7\3\2\2\u0510\u0513\7(\2\2\u0511\u0513\7)\2\2\u0512\u050b") - buf.write("\3\2\2\2\u0512\u050c\3\2\2\2\u0512\u050d\3\2\2\2\u0512") - buf.write("\u050e\3\2\2\2\u0512\u050f\3\2\2\2\u0512\u0510\3\2\2\2") - buf.write("\u0512\u0511\3\2\2\2\u0513\u00cb\3\2\2\2\u0514\u0515\7") - buf.write("\23\2\2\u0515\u0516\5`\61\2\u0516\u00cd\3\2\2\2\u0517") - buf.write("\u051b\7=\2\2\u0518\u051a\5\u00d0i\2\u0519\u0518\3\2\2") - buf.write("\2\u051a\u051d\3\2\2\2\u051b\u0519\3\2\2\2\u051b\u051c") - buf.write("\3\2\2\2\u051c\u051e\3\2\2\2\u051d\u051b\3\2\2\2\u051e") - buf.write("\u051f\7>\2\2\u051f\u00cf\3\2\2\2\u0520\u0526\5\u00d2") - buf.write("j\2\u0521\u0526\5\u00d6l\2\u0522\u0526\5R*\2\u0523\u0526") - buf.write("\5\u00c6d\2\u0524\u0526\7A\2\2\u0525\u0520\3\2\2\2\u0525") - buf.write("\u0521\3\2\2\2\u0525\u0522\3\2\2\2\u0525\u0523\3\2\2\2") - buf.write("\u0525\u0524\3\2\2\2\u0526\u00d1\3\2\2\2\u0527\u0529\5") - buf.write("\u00d4k\2\u0528\u0527\3\2\2\2\u0529\u052c\3\2\2\2\u052a") - buf.write("\u0528\3\2\2\2\u052a\u052b\3\2\2\2\u052b\u052d\3\2\2\2") - buf.write("\u052c\u052a\3\2\2\2\u052d\u052e\5t;\2\u052e\u052f\5l") - buf.write("\67\2\u052f\u0530\7A\2\2\u0530\u00d3\3\2\2\2\u0531\u0536") - buf.write("\5\u00e6t\2\u0532\u0536\7%\2\2\u0533\u0536\7(\2\2\u0534") - buf.write("\u0536\7\24\2\2\u0535\u0531\3\2\2\2\u0535\u0532\3\2\2") - buf.write("\2\u0535\u0533\3\2\2\2\u0535\u0534\3\2\2\2\u0536\u00d5") - buf.write("\3\2\2\2\u0537\u0539\5\u00d8m\2\u0538\u0537\3\2\2\2\u0539") - buf.write("\u053c\3\2\2\2\u053a\u0538\3\2\2\2\u053a\u053b\3\2\2\2") - buf.write("\u053b\u053d\3\2\2\2\u053c\u053a\3\2\2\2\u053d\u053e\5") - buf.write("\u0090I\2\u053e\u053f\5\u00a8U\2\u053f\u00d7\3\2\2\2\u0540") - buf.write("\u0547\5\u00e6t\2\u0541\u0547\7%\2\2\u0542\u0547\7\3\2") - buf.write("\2\u0543\u0547\7\16\2\2\u0544\u0547\7(\2\2\u0545\u0547") - buf.write("\7)\2\2\u0546\u0540\3\2\2\2\u0546\u0541\3\2\2\2\u0546") - buf.write("\u0542\3\2\2\2\u0546\u0543\3\2\2\2\u0546\u0544\3\2\2\2") - buf.write("\u0546\u0545\3\2\2\2\u0547\u00d9\3\2\2\2\u0548\u054a\5") - buf.write("\u00caf\2\u0549\u0548\3\2\2\2\u054a\u054d\3\2\2\2\u054b") - buf.write("\u0549\3\2\2\2\u054b\u054c\3\2\2\2\u054c\u054e\3\2\2\2") - buf.write("\u054d\u054b\3\2\2\2\u054e\u054f\7i\2\2\u054f\u0550\7") - buf.write("\36\2\2\u0550\u0551\7h\2\2\u0551\u0552\5\u00dco\2\u0552") - buf.write("\u00db\3\2\2\2\u0553\u0557\7=\2\2\u0554\u0556\5\u00de") - buf.write("p\2\u0555\u0554\3\2\2\2\u0556\u0559\3\2\2\2\u0557\u0555") - buf.write("\3\2\2\2\u0557\u0558\3\2\2\2\u0558\u055a\3\2\2\2\u0559") - buf.write("\u0557\3\2\2\2\u055a\u055b\7>\2\2\u055b\u00dd\3\2\2\2") - buf.write("\u055c\u0562\5\u00e0q\2\u055d\u0562\5\u00d2j\2\u055e\u0562") - buf.write("\5R*\2\u055f\u0562\5\u00c6d\2\u0560\u0562\7A\2\2\u0561") - buf.write("\u055c\3\2\2\2\u0561\u055d\3\2\2\2\u0561\u055e\3\2\2\2") - buf.write("\u0561\u055f\3\2\2\2\u0561\u0560\3\2\2\2\u0562\u00df\3") - buf.write("\2\2\2\u0563\u0565\5\u00e2r\2\u0564\u0563\3\2\2\2\u0565") - buf.write("\u0568\3\2\2\2\u0566\u0564\3\2\2\2\u0566\u0567\3\2\2\2") - buf.write("\u0567\u0569\3\2\2\2\u0568\u0566\3\2\2\2\u0569\u056a\5") - buf.write("t;\2\u056a\u056b\7h\2\2\u056b\u056c\7;\2\2\u056c\u056e") - buf.write("\7<\2\2\u056d\u056f\5 \21\2\u056e\u056d\3\2\2\2\u056e") - buf.write("\u056f\3\2\2\2\u056f\u0571\3\2\2\2\u0570\u0572\5\u00e4") - buf.write("s\2\u0571\u0570\3\2\2\2\u0571\u0572\3\2\2\2\u0572\u0573") - buf.write("\3\2\2\2\u0573\u0574\7A\2\2\u0574\u00e1\3\2\2\2\u0575") - buf.write("\u0579\5\u00e6t\2\u0576\u0579\7%\2\2\u0577\u0579\7\3\2") - buf.write("\2\u0578\u0575\3\2\2\2\u0578\u0576\3\2\2\2\u0578\u0577") - buf.write("\3\2\2\2\u0579\u00e3\3\2\2\2\u057a\u057b\7\16\2\2\u057b") - buf.write("\u057c\5\u00eex\2\u057c\u00e5\3\2\2\2\u057d\u0581\5\u00e8") - buf.write("u\2\u057e\u0581\5\u00f4{\2\u057f\u0581\5\u00f6|\2\u0580") - buf.write("\u057d\3\2\2\2\u0580\u057e\3\2\2\2\u0580\u057f\3\2\2\2") - buf.write("\u0581\u00e7\3\2\2\2\u0582\u0583\7i\2\2\u0583\u0584\5") - buf.write("\66\34\2\u0584\u0586\7;\2\2\u0585\u0587\5\u00eav\2\u0586") - buf.write("\u0585\3\2\2\2\u0586\u0587\3\2\2\2\u0587\u0588\3\2\2\2") - buf.write("\u0588\u0589\7<\2\2\u0589\u00e9\3\2\2\2\u058a\u058f\5") - buf.write("\u00ecw\2\u058b\u058c\7B\2\2\u058c\u058e\5\u00ecw\2\u058d") - buf.write("\u058b\3\2\2\2\u058e\u0591\3\2\2\2\u058f\u058d\3\2\2\2") - buf.write("\u058f\u0590\3\2\2\2\u0590\u00eb\3\2\2\2\u0591\u058f\3") - buf.write("\2\2\2\u0592\u0593\7h\2\2\u0593\u0594\7D\2\2\u0594\u0595") - buf.write("\5\u00eex\2\u0595\u00ed\3\2\2\2\u0596\u059a\5\u01b0\u00d9") - buf.write("\2\u0597\u059a\5\u00f0y\2\u0598\u059a\5\u00e6t\2\u0599") - buf.write("\u0596\3\2\2\2\u0599\u0597\3\2\2\2\u0599\u0598\3\2\2\2") - buf.write("\u059a\u00ef\3\2\2\2\u059b\u059d\7=\2\2\u059c\u059e\5") - buf.write("\u00f2z\2\u059d\u059c\3\2\2\2\u059d\u059e\3\2\2\2\u059e") - buf.write("\u05a0\3\2\2\2\u059f\u05a1\7B\2\2\u05a0\u059f\3\2\2\2") - buf.write("\u05a0\u05a1\3\2\2\2\u05a1\u05a2\3\2\2\2\u05a2\u05a3\7") - buf.write(">\2\2\u05a3\u00f1\3\2\2\2\u05a4\u05a9\5\u00eex\2\u05a5") - buf.write("\u05a6\7B\2\2\u05a6\u05a8\5\u00eex\2\u05a7\u05a5\3\2\2") - buf.write("\2\u05a8\u05ab\3\2\2\2\u05a9\u05a7\3\2\2\2\u05a9\u05aa") - buf.write("\3\2\2\2\u05aa\u00f3\3\2\2\2\u05ab\u05a9\3\2\2\2\u05ac") - buf.write("\u05ad\7i\2\2\u05ad\u05ae\5\66\34\2\u05ae\u00f5\3\2\2") - buf.write("\2\u05af\u05b0\7i\2\2\u05b0\u05b1\5\66\34\2\u05b1\u05b2") - buf.write("\7;\2\2\u05b2\u05b3\5\u00eex\2\u05b3\u05b4\7<\2\2\u05b4") - buf.write("\u00f7\3\2\2\2\u05b5\u05b7\7=\2\2\u05b6\u05b8\5\u00fa") - buf.write("~\2\u05b7\u05b6\3\2\2\2\u05b7\u05b8\3\2\2\2\u05b8\u05ba") - buf.write("\3\2\2\2\u05b9\u05bb\7B\2\2\u05ba\u05b9\3\2\2\2\u05ba") - buf.write("\u05bb\3\2\2\2\u05bb\u05bc\3\2\2\2\u05bc\u05bd\7>\2\2") - buf.write("\u05bd\u00f9\3\2\2\2\u05be\u05c3\5r:\2\u05bf\u05c0\7B") - buf.write("\2\2\u05c0\u05c2\5r:\2\u05c1\u05bf\3\2\2\2\u05c2\u05c5") - buf.write("\3\2\2\2\u05c3\u05c1\3\2\2\2\u05c3\u05c4\3\2\2\2\u05c4") - buf.write("\u00fb\3\2\2\2\u05c5\u05c3\3\2\2\2\u05c6\u05c8\7=\2\2") - buf.write("\u05c7\u05c9\5\u00fe\u0080\2\u05c8\u05c7\3\2\2\2\u05c8") - buf.write("\u05c9\3\2\2\2\u05c9\u05ca\3\2\2\2\u05ca\u05cb\7>\2\2") - buf.write("\u05cb\u00fd\3\2\2\2\u05cc\u05ce\5\u0100\u0081\2\u05cd") - buf.write("\u05cc\3\2\2\2\u05ce\u05cf\3\2\2\2\u05cf\u05cd\3\2\2\2") - buf.write("\u05cf\u05d0\3\2\2\2\u05d0\u00ff\3\2\2\2\u05d1\u05d5\5") - buf.write("\u0102\u0082\2\u05d2\u05d5\5R*\2\u05d3\u05d5\5\u0106\u0084") - buf.write("\2\u05d4\u05d1\3\2\2\2\u05d4\u05d2\3\2\2\2\u05d4\u05d3") - buf.write("\3\2\2\2\u05d5\u0101\3\2\2\2\u05d6\u05d7\5\u0104\u0083") - buf.write("\2\u05d7\u05d8\7A\2\2\u05d8\u0103\3\2\2\2\u05d9\u05db") - buf.write("\5\u009cO\2\u05da\u05d9\3\2\2\2\u05db\u05de\3\2\2\2\u05dc") - buf.write("\u05da\3\2\2\2\u05dc\u05dd\3\2\2\2\u05dd\u05df\3\2\2\2") - buf.write("\u05de\u05dc\3\2\2\2\u05df\u05e0\5t;\2\u05e0\u05e1\5l") - buf.write("\67\2\u05e1\u0105\3\2\2\2\u05e2\u05e9\5\u010a\u0086\2") - buf.write("\u05e3\u05e9\5\u010e\u0088\2\u05e4\u05e9\5\u0116\u008c") - buf.write("\2\u05e5\u05e9\5\u0118\u008d\2\u05e6\u05e9\5\u012a\u0096") - buf.write("\2\u05e7\u05e9\5\u0130\u0099\2\u05e8\u05e2\3\2\2\2\u05e8") - buf.write("\u05e3\3\2\2\2\u05e8\u05e4\3\2\2\2\u05e8\u05e5\3\2\2\2") - buf.write("\u05e8\u05e6\3\2\2\2\u05e8\u05e7\3\2\2\2\u05e9\u0107\3") - buf.write("\2\2\2\u05ea\u05f0\5\u010a\u0086\2\u05eb\u05f0\5\u0110") - buf.write("\u0089\2\u05ec\u05f0\5\u011a\u008e\2\u05ed\u05f0\5\u012c") - buf.write("\u0097\2\u05ee\u05f0\5\u0132\u009a\2\u05ef\u05ea\3\2\2") - buf.write("\2\u05ef\u05eb\3\2\2\2\u05ef\u05ec\3\2\2\2\u05ef\u05ed") - buf.write("\3\2\2\2\u05ef\u05ee\3\2\2\2\u05f0\u0109\3\2\2\2\u05f1") - buf.write("\u05fe\5\u00fc\177\2\u05f2\u05fe\5\u010c\u0087\2\u05f3") - buf.write("\u05fe\5\u0112\u008a\2\u05f4\u05fe\5\u011c\u008f\2\u05f5") - buf.write("\u05fe\5\u011e\u0090\2\u05f6\u05fe\5\u012e\u0098\2\u05f7") - buf.write("\u05fe\5\u0142\u00a2\2\u05f8\u05fe\5\u0144\u00a3\2\u05f9") - buf.write("\u05fe\5\u0146\u00a4\2\u05fa\u05fe\5\u014a\u00a6\2\u05fb") - buf.write("\u05fe\5\u0148\u00a5\2\u05fc\u05fe\5\u014c\u00a7\2\u05fd") - buf.write("\u05f1\3\2\2\2\u05fd\u05f2\3\2\2\2\u05fd\u05f3\3\2\2\2") - buf.write("\u05fd\u05f4\3\2\2\2\u05fd\u05f5\3\2\2\2\u05fd\u05f6\3") - buf.write("\2\2\2\u05fd\u05f7\3\2\2\2\u05fd\u05f8\3\2\2\2\u05fd\u05f9") - buf.write("\3\2\2\2\u05fd\u05fa\3\2\2\2\u05fd\u05fb\3\2\2\2\u05fd") - buf.write("\u05fc\3\2\2\2\u05fe\u010b\3\2\2\2\u05ff\u0600\7A\2\2") - buf.write("\u0600\u010d\3\2\2\2\u0601\u0602\7h\2\2\u0602\u0603\7") - buf.write("J\2\2\u0603\u0604\5\u0106\u0084\2\u0604\u010f\3\2\2\2") - buf.write("\u0605\u0606\7h\2\2\u0606\u0607\7J\2\2\u0607\u0608\5\u0108") - buf.write("\u0085\2\u0608\u0111\3\2\2\2\u0609\u060a\5\u0114\u008b") - buf.write("\2\u060a\u060b\7A\2\2\u060b\u0113\3\2\2\2\u060c\u0614") - buf.write("\5\u01aa\u00d6\2\u060d\u0614\5\u01c8\u00e5\2\u060e\u0614") - buf.write("\5\u01ca\u00e6\2\u060f\u0614\5\u01d0\u00e9\2\u0610\u0614") - buf.write("\5\u01d4\u00eb\2\u0611\u0614\5\u0188\u00c5\2\u0612\u0614") - buf.write("\5\u0174\u00bb\2\u0613\u060c\3\2\2\2\u0613\u060d\3\2\2") - buf.write("\2\u0613\u060e\3\2\2\2\u0613\u060f\3\2\2\2\u0613\u0610") - buf.write("\3\2\2\2\u0613\u0611\3\2\2\2\u0613\u0612\3\2\2\2\u0614") - buf.write("\u0115\3\2\2\2\u0615\u0616\7\30\2\2\u0616\u0617\7;\2\2") - buf.write("\u0617\u0618\5\u019e\u00d0\2\u0618\u0619\7<\2\2\u0619") - buf.write("\u061a\5\u0106\u0084\2\u061a\u0117\3\2\2\2\u061b\u061c") - buf.write("\7\30\2\2\u061c\u061d\7;\2\2\u061d\u061e\5\u019e\u00d0") - buf.write("\2\u061e\u061f\7<\2\2\u061f\u0620\5\u0108\u0085\2\u0620") - buf.write("\u0621\7\21\2\2\u0621\u0622\5\u0106\u0084\2\u0622\u0119") - buf.write("\3\2\2\2\u0623\u0624\7\30\2\2\u0624\u0625\7;\2\2\u0625") - buf.write("\u0626\5\u019e\u00d0\2\u0626\u0627\7<\2\2\u0627\u0628") - buf.write("\5\u0108\u0085\2\u0628\u0629\7\21\2\2\u0629\u062a\5\u0108") - buf.write("\u0085\2\u062a\u011b\3\2\2\2\u062b\u062c\7\4\2\2\u062c") - buf.write("\u062d\5\u019e\u00d0\2\u062d\u062e\7A\2\2\u062e\u0636") - buf.write("\3\2\2\2\u062f\u0630\7\4\2\2\u0630\u0631\5\u019e\u00d0") - buf.write("\2\u0631\u0632\7J\2\2\u0632\u0633\5\u019e\u00d0\2\u0633") - buf.write("\u0634\7A\2\2\u0634\u0636\3\2\2\2\u0635\u062b\3\2\2\2") - buf.write("\u0635\u062f\3\2\2\2\u0636\u011d\3\2\2\2\u0637\u0638\7") - buf.write("+\2\2\u0638\u0639\7;\2\2\u0639\u063a\5\u019e\u00d0\2\u063a") - buf.write("\u063b\7<\2\2\u063b\u063c\5\u0120\u0091\2\u063c\u011f") - buf.write("\3\2\2\2\u063d\u0641\7=\2\2\u063e\u0640\5\u0122\u0092") - buf.write("\2\u063f\u063e\3\2\2\2\u0640\u0643\3\2\2\2\u0641\u063f") - buf.write("\3\2\2\2\u0641\u0642\3\2\2\2\u0642\u0647\3\2\2\2\u0643") - buf.write("\u0641\3\2\2\2\u0644\u0646\5\u0126\u0094\2\u0645\u0644") - buf.write("\3\2\2\2\u0646\u0649\3\2\2\2\u0647\u0645\3\2\2\2\u0647") - buf.write("\u0648\3\2\2\2\u0648\u064a\3\2\2\2\u0649\u0647\3\2\2\2") - buf.write("\u064a\u064b\7>\2\2\u064b\u0121\3\2\2\2\u064c\u064d\5") - buf.write("\u0124\u0093\2\u064d\u064e\5\u00fe\u0080\2\u064e\u0123") - buf.write("\3\2\2\2\u064f\u0653\5\u0126\u0094\2\u0650\u0652\5\u0126") - buf.write("\u0094\2\u0651\u0650\3\2\2\2\u0652\u0655\3\2\2\2\u0653") - buf.write("\u0651\3\2\2\2\u0653\u0654\3\2\2\2\u0654\u0125\3\2\2\2") - buf.write("\u0655\u0653\3\2\2\2\u0656\u0657\7\b\2\2\u0657\u0658\5") - buf.write("\u019c\u00cf\2\u0658\u0659\7J\2\2\u0659\u0661\3\2\2\2") - buf.write("\u065a\u065b\7\b\2\2\u065b\u065c\5\u0128\u0095\2\u065c") - buf.write("\u065d\7J\2\2\u065d\u0661\3\2\2\2\u065e\u065f\7\16\2\2") - buf.write("\u065f\u0661\7J\2\2\u0660\u0656\3\2\2\2\u0660\u065a\3") - buf.write("\2\2\2\u0660\u065e\3\2\2\2\u0661\u0127\3\2\2\2\u0662\u0663") - buf.write("\7h\2\2\u0663\u0129\3\2\2\2\u0664\u0665\7\64\2\2\u0665") - buf.write("\u0666\7;\2\2\u0666\u0667\5\u019e\u00d0\2\u0667\u0668") - buf.write("\7<\2\2\u0668\u0669\5\u0106\u0084\2\u0669\u012b\3\2\2") - buf.write("\2\u066a\u066b\7\64\2\2\u066b\u066c\7;\2\2\u066c\u066d") - buf.write("\5\u019e\u00d0\2\u066d\u066e\7<\2\2\u066e\u066f\5\u0108") - buf.write("\u0085\2\u066f\u012d\3\2\2\2\u0670\u0671\7\17\2\2\u0671") - buf.write("\u0672\5\u0106\u0084\2\u0672\u0673\7\64\2\2\u0673\u0674") - buf.write("\7;\2\2\u0674\u0675\5\u019e\u00d0\2\u0675\u0676\7<\2\2") - buf.write("\u0676\u0677\7A\2\2\u0677\u012f\3\2\2\2\u0678\u067b\5") - buf.write("\u0134\u009b\2\u0679\u067b\5\u013e\u00a0\2\u067a\u0678") - buf.write("\3\2\2\2\u067a\u0679\3\2\2\2\u067b\u0131\3\2\2\2\u067c") - buf.write("\u067f\5\u0136\u009c\2\u067d\u067f\5\u0140\u00a1\2\u067e") - buf.write("\u067c\3\2\2\2\u067e\u067d\3\2\2\2\u067f\u0133\3\2\2\2") - buf.write("\u0680\u0681\7\27\2\2\u0681\u0683\7;\2\2\u0682\u0684\5") - buf.write("\u0138\u009d\2\u0683\u0682\3\2\2\2\u0683\u0684\3\2\2\2") - buf.write("\u0684\u0685\3\2\2\2\u0685\u0687\7A\2\2\u0686\u0688\5") - buf.write("\u019e\u00d0\2\u0687\u0686\3\2\2\2\u0687\u0688\3\2\2\2") - buf.write("\u0688\u0689\3\2\2\2\u0689\u068b\7A\2\2\u068a\u068c\5") - buf.write("\u013a\u009e\2\u068b\u068a\3\2\2\2\u068b\u068c\3\2\2\2") - buf.write("\u068c\u068d\3\2\2\2\u068d\u068e\7<\2\2\u068e\u068f\5") - buf.write("\u0106\u0084\2\u068f\u0135\3\2\2\2\u0690\u0691\7\27\2") - buf.write("\2\u0691\u0693\7;\2\2\u0692\u0694\5\u0138\u009d\2\u0693") - buf.write("\u0692\3\2\2\2\u0693\u0694\3\2\2\2\u0694\u0695\3\2\2\2") - buf.write("\u0695\u0697\7A\2\2\u0696\u0698\5\u019e\u00d0\2\u0697") - buf.write("\u0696\3\2\2\2\u0697\u0698\3\2\2\2\u0698\u0699\3\2\2\2") - buf.write("\u0699\u069b\7A\2\2\u069a\u069c\5\u013a\u009e\2\u069b") - buf.write("\u069a\3\2\2\2\u069b\u069c\3\2\2\2\u069c\u069d\3\2\2\2") - buf.write("\u069d\u069e\7<\2\2\u069e\u069f\5\u0108\u0085\2\u069f") - buf.write("\u0137\3\2\2\2\u06a0\u06a3\5\u013c\u009f\2\u06a1\u06a3") - buf.write("\5\u0104\u0083\2\u06a2\u06a0\3\2\2\2\u06a2\u06a1\3\2\2") - buf.write("\2\u06a3\u0139\3\2\2\2\u06a4\u06a5\5\u013c\u009f\2\u06a5") - buf.write("\u013b\3\2\2\2\u06a6\u06ab\5\u0114\u008b\2\u06a7\u06a8") - buf.write("\7B\2\2\u06a8\u06aa\5\u0114\u008b\2\u06a9\u06a7\3\2\2") - buf.write("\2\u06aa\u06ad\3\2\2\2\u06ab\u06a9\3\2\2\2\u06ab\u06ac") - buf.write("\3\2\2\2\u06ac\u013d\3\2\2\2\u06ad\u06ab\3\2\2\2\u06ae") - buf.write("\u06af\7\27\2\2\u06af\u06b3\7;\2\2\u06b0\u06b2\5\u009c") - buf.write("O\2\u06b1\u06b0\3\2\2\2\u06b2\u06b5\3\2\2\2\u06b3\u06b1") - buf.write("\3\2\2\2\u06b3\u06b4\3\2\2\2\u06b4\u06b6\3\2\2\2\u06b5") - buf.write("\u06b3\3\2\2\2\u06b6\u06b7\5t;\2\u06b7\u06b8\5p9\2\u06b8") - buf.write("\u06b9\7J\2\2\u06b9\u06ba\5\u019e\u00d0\2\u06ba\u06bb") - buf.write("\7<\2\2\u06bb\u06bc\5\u0106\u0084\2\u06bc\u013f\3\2\2") - buf.write("\2\u06bd\u06be\7\27\2\2\u06be\u06c2\7;\2\2\u06bf\u06c1") - buf.write("\5\u009cO\2\u06c0\u06bf\3\2\2\2\u06c1\u06c4\3\2\2\2\u06c2") - buf.write("\u06c0\3\2\2\2\u06c2\u06c3\3\2\2\2\u06c3\u06c5\3\2\2\2") - buf.write("\u06c4\u06c2\3\2\2\2\u06c5\u06c6\5t;\2\u06c6\u06c7\5p") - buf.write("9\2\u06c7\u06c8\7J\2\2\u06c8\u06c9\5\u019e\u00d0\2\u06c9") - buf.write("\u06ca\7<\2\2\u06ca\u06cb\5\u0108\u0085\2\u06cb\u0141") - buf.write("\3\2\2\2\u06cc\u06ce\7\6\2\2\u06cd\u06cf\7h\2\2\u06ce") - buf.write("\u06cd\3\2\2\2\u06ce\u06cf\3\2\2\2\u06cf\u06d0\3\2\2\2") - buf.write("\u06d0\u06d1\7A\2\2\u06d1\u0143\3\2\2\2\u06d2\u06d4\7") - buf.write("\r\2\2\u06d3\u06d5\7h\2\2\u06d4\u06d3\3\2\2\2\u06d4\u06d5") - buf.write("\3\2\2\2\u06d5\u06d6\3\2\2\2\u06d6\u06d7\7A\2\2\u06d7") - buf.write("\u0145\3\2\2\2\u06d8\u06da\7&\2\2\u06d9\u06db\5\u019e") - buf.write("\u00d0\2\u06da\u06d9\3\2\2\2\u06da\u06db\3\2\2\2\u06db") - buf.write("\u06dc\3\2\2\2\u06dc\u06dd\7A\2\2\u06dd\u0147\3\2\2\2") - buf.write("\u06de\u06df\7.\2\2\u06df\u06e0\5\u019e\u00d0\2\u06e0") - buf.write("\u06e1\7A\2\2\u06e1\u0149\3\2\2\2\u06e2\u06e3\7,\2\2\u06e3") - buf.write("\u06e4\7;\2\2\u06e4\u06e5\5\u019e\u00d0\2\u06e5\u06e6") - buf.write("\7<\2\2\u06e6\u06e7\5\u00fc\177\2\u06e7\u014b\3\2\2\2") - buf.write("\u06e8\u06e9\7\61\2\2\u06e9\u06ea\5\u00fc\177\2\u06ea") - buf.write("\u06eb\5\u014e\u00a8\2\u06eb\u06f5\3\2\2\2\u06ec\u06ed") - buf.write("\7\61\2\2\u06ed\u06ef\5\u00fc\177\2\u06ee\u06f0\5\u014e") - buf.write("\u00a8\2\u06ef\u06ee\3\2\2\2\u06ef\u06f0\3\2\2\2\u06f0") - buf.write("\u06f1\3\2\2\2\u06f1\u06f2\5\u0156\u00ac\2\u06f2\u06f5") - buf.write("\3\2\2\2\u06f3\u06f5\5\u0158\u00ad\2\u06f4\u06e8\3\2\2") - buf.write("\2\u06f4\u06ec\3\2\2\2\u06f4\u06f3\3\2\2\2\u06f5\u014d") - buf.write("\3\2\2\2\u06f6\u06fa\5\u0150\u00a9\2\u06f7\u06f9\5\u0150") - buf.write("\u00a9\2\u06f8\u06f7\3\2\2\2\u06f9\u06fc\3\2\2\2\u06fa") - buf.write("\u06f8\3\2\2\2\u06fa\u06fb\3\2\2\2\u06fb\u014f\3\2\2\2") - buf.write("\u06fc\u06fa\3\2\2\2\u06fd\u06fe\7\t\2\2\u06fe\u06ff\7") - buf.write(";\2\2\u06ff\u0700\5\u0152\u00aa\2\u0700\u0701\7<\2\2\u0701") - buf.write("\u0702\5\u00fc\177\2\u0702\u0151\3\2\2\2\u0703\u0705\5") - buf.write("\u009cO\2\u0704\u0703\3\2\2\2\u0705\u0708\3\2\2\2\u0706") - buf.write("\u0704\3\2\2\2\u0706\u0707\3\2\2\2\u0707\u0709\3\2\2\2") - buf.write("\u0708\u0706\3\2\2\2\u0709\u070a\5\u0154\u00ab\2\u070a") - buf.write("\u070b\5p9\2\u070b\u0153\3\2\2\2\u070c\u0711\5|?\2\u070d") - buf.write("\u070e\7X\2\2\u070e\u0710\5\20\t\2\u070f\u070d\3\2\2\2") - buf.write("\u0710\u0713\3\2\2\2\u0711\u070f\3\2\2\2\u0711\u0712\3") - buf.write("\2\2\2\u0712\u0155\3\2\2\2\u0713\u0711\3\2\2\2\u0714\u0715") - buf.write("\7\25\2\2\u0715\u0716\5\u00fc\177\2\u0716\u0157\3\2\2") - buf.write("\2\u0717\u0718\7\61\2\2\u0718\u0719\5\u015a\u00ae\2\u0719") - buf.write("\u071b\5\u00fc\177\2\u071a\u071c\5\u014e\u00a8\2\u071b") - buf.write("\u071a\3\2\2\2\u071b\u071c\3\2\2\2\u071c\u071e\3\2\2\2") - buf.write("\u071d\u071f\5\u0156\u00ac\2\u071e\u071d\3\2\2\2\u071e") - buf.write("\u071f\3\2\2\2\u071f\u0159\3\2\2\2\u0720\u0721\7;\2\2") - buf.write("\u0721\u0723\5\u015c\u00af\2\u0722\u0724\7A\2\2\u0723") - buf.write("\u0722\3\2\2\2\u0723\u0724\3\2\2\2\u0724\u0725\3\2\2\2") - buf.write("\u0725\u0726\7<\2\2\u0726\u015b\3\2\2\2\u0727\u072c\5") - buf.write("\u015e\u00b0\2\u0728\u0729\7A\2\2\u0729\u072b\5\u015e") - buf.write("\u00b0\2\u072a\u0728\3\2\2\2\u072b\u072e\3\2\2\2\u072c") - buf.write("\u072a\3\2\2\2\u072c\u072d\3\2\2\2\u072d\u015d\3\2\2\2") - buf.write("\u072e\u072c\3\2\2\2\u072f\u0731\5\u009cO\2\u0730\u072f") - buf.write("\3\2\2\2\u0731\u0734\3\2\2\2\u0732\u0730\3\2\2\2\u0732") - buf.write("\u0733\3\2\2\2\u0733\u0735\3\2\2\2\u0734\u0732\3\2\2\2") - buf.write("\u0735\u0736\5t;\2\u0736\u0737\5p9\2\u0737\u0738\7D\2") - buf.write("\2\u0738\u0739\5\u019e\u00d0\2\u0739\u015f\3\2\2\2\u073a") - buf.write("\u073d\5\u016e\u00b8\2\u073b\u073d\5\u0196\u00cc\2\u073c") - buf.write("\u073a\3\2\2\2\u073c\u073b\3\2\2\2\u073d\u0741\3\2\2\2") - buf.write("\u073e\u0740\5\u0168\u00b5\2\u073f\u073e\3\2\2\2\u0740") - buf.write("\u0743\3\2\2\2\u0741\u073f\3\2\2\2\u0741\u0742\3\2\2\2") - buf.write("\u0742\u0161\3\2\2\2\u0743\u0741\3\2\2\2\u0744\u0762\5") - buf.write("\2\2\2\u0745\u074a\5\66\34\2\u0746\u0747\7?\2\2\u0747") - buf.write("\u0749\7@\2\2\u0748\u0746\3\2\2\2\u0749\u074c\3\2\2\2") - buf.write("\u074a\u0748\3\2\2\2\u074a\u074b\3\2\2\2\u074b\u074d\3") - buf.write("\2\2\2\u074c\u074a\3\2\2\2\u074d\u074e\7C\2\2\u074e\u074f") - buf.write("\7\13\2\2\u074f\u0762\3\2\2\2\u0750\u0751\7\62\2\2\u0751") - buf.write("\u0752\7C\2\2\u0752\u0762\7\13\2\2\u0753\u0762\7-\2\2") - buf.write("\u0754\u0755\5\66\34\2\u0755\u0756\7C\2\2\u0756\u0757") - buf.write("\7-\2\2\u0757\u0762\3\2\2\2\u0758\u0759\7;\2\2\u0759\u075a") - buf.write("\5\u019e\u00d0\2\u075a\u075b\7<\2\2\u075b\u0762\3\2\2") - buf.write("\2\u075c\u0762\5\u0174\u00bb\2\u075d\u0762\5\u017c\u00bf") - buf.write("\2\u075e\u0762\5\u0182\u00c2\2\u075f\u0762\5\u0188\u00c5") - buf.write("\2\u0760\u0762\5\u0190\u00c9\2\u0761\u0744\3\2\2\2\u0761") - buf.write("\u0745\3\2\2\2\u0761\u0750\3\2\2\2\u0761\u0753\3\2\2\2") - buf.write("\u0761\u0754\3\2\2\2\u0761\u0758\3\2\2\2\u0761\u075c\3") - buf.write("\2\2\2\u0761\u075d\3\2\2\2\u0761\u075e\3\2\2\2\u0761\u075f") - buf.write("\3\2\2\2\u0761\u0760\3\2\2\2\u0762\u0163\3\2\2\2\u0763") - buf.write("\u0764\3\2\2\2\u0764\u0165\3\2\2\2\u0765\u0782\5\2\2\2") - buf.write("\u0766\u076b\5\66\34\2\u0767\u0768\7?\2\2\u0768\u076a") - buf.write("\7@\2\2\u0769\u0767\3\2\2\2\u076a\u076d\3\2\2\2\u076b") - buf.write("\u0769\3\2\2\2\u076b\u076c\3\2\2\2\u076c\u076e\3\2\2\2") - buf.write("\u076d\u076b\3\2\2\2\u076e\u076f\7C\2\2\u076f\u0770\7") - buf.write("\13\2\2\u0770\u0782\3\2\2\2\u0771\u0772\7\62\2\2\u0772") - buf.write("\u0773\7C\2\2\u0773\u0782\7\13\2\2\u0774\u0782\7-\2\2") - buf.write("\u0775\u0776\5\66\34\2\u0776\u0777\7C\2\2\u0777\u0778") - buf.write("\7-\2\2\u0778\u0782\3\2\2\2\u0779\u077a\7;\2\2\u077a\u077b") - buf.write("\5\u019e\u00d0\2\u077b\u077c\7<\2\2\u077c\u0782\3\2\2") - buf.write("\2\u077d\u0782\5\u0174\u00bb\2\u077e\u0782\5\u017c\u00bf") - buf.write("\2\u077f\u0782\5\u0188\u00c5\2\u0780\u0782\5\u0190\u00c9") - buf.write("\2\u0781\u0765\3\2\2\2\u0781\u0766\3\2\2\2\u0781\u0771") - buf.write("\3\2\2\2\u0781\u0774\3\2\2\2\u0781\u0775\3\2\2\2\u0781") - buf.write("\u0779\3\2\2\2\u0781\u077d\3\2\2\2\u0781\u077e\3\2\2\2") - buf.write("\u0781\u077f\3\2\2\2\u0781\u0780\3\2\2\2\u0782\u0167\3") - buf.write("\2\2\2\u0783\u0789\5\u0176\u00bc\2\u0784\u0789\5\u017e") - buf.write("\u00c0\2\u0785\u0789\5\u0184\u00c3\2\u0786\u0789\5\u018a") - buf.write("\u00c6\2\u0787\u0789\5\u0192\u00ca\2\u0788\u0783\3\2\2") - buf.write("\2\u0788\u0784\3\2\2\2\u0788\u0785\3\2\2\2\u0788\u0786") - buf.write("\3\2\2\2\u0788\u0787\3\2\2\2\u0789\u0169\3\2\2\2\u078a") - buf.write("\u078b\3\2\2\2\u078b\u016b\3\2\2\2\u078c\u0791\5\u0176") - buf.write("\u00bc\2\u078d\u0791\5\u017e\u00c0\2\u078e\u0791\5\u018a") - buf.write("\u00c6\2\u078f\u0791\5\u0192\u00ca\2\u0790\u078c\3\2\2") - buf.write("\2\u0790\u078d\3\2\2\2\u0790\u078e\3\2\2\2\u0790\u078f") - buf.write("\3\2\2\2\u0791\u016d\3\2\2\2\u0792\u07bb\5\2\2\2\u0793") - buf.write("\u0798\5\66\34\2\u0794\u0795\7?\2\2\u0795\u0797\7@\2\2") - buf.write("\u0796\u0794\3\2\2\2\u0797\u079a\3\2\2\2\u0798\u0796\3") - buf.write("\2\2\2\u0798\u0799\3\2\2\2\u0799\u079b\3\2\2\2\u079a\u0798") - buf.write("\3\2\2\2\u079b\u079c\7C\2\2\u079c\u079d\7\13\2\2\u079d") - buf.write("\u07bb\3\2\2\2\u079e\u07a3\5v<\2\u079f\u07a0\7?\2\2\u07a0") - buf.write("\u07a2\7@\2\2\u07a1\u079f\3\2\2\2\u07a2\u07a5\3\2\2\2") - buf.write("\u07a3\u07a1\3\2\2\2\u07a3\u07a4\3\2\2\2\u07a4\u07a6\3") - buf.write("\2\2\2\u07a5\u07a3\3\2\2\2\u07a6\u07a7\7C\2\2\u07a7\u07a8") - buf.write("\7\13\2\2\u07a8\u07bb\3\2\2\2\u07a9\u07aa\7\62\2\2\u07aa") - buf.write("\u07ab\7C\2\2\u07ab\u07bb\7\13\2\2\u07ac\u07bb\7-\2\2") - buf.write("\u07ad\u07ae\5\66\34\2\u07ae\u07af\7C\2\2\u07af\u07b0") - buf.write("\7-\2\2\u07b0\u07bb\3\2\2\2\u07b1\u07b2\7;\2\2\u07b2\u07b3") - buf.write("\5\u019e\u00d0\2\u07b3\u07b4\7<\2\2\u07b4\u07bb\3\2\2") - buf.write("\2\u07b5\u07bb\5\u0178\u00bd\2\u07b6\u07bb\5\u0180\u00c1") - buf.write("\2\u07b7\u07bb\5\u0186\u00c4\2\u07b8\u07bb\5\u018c\u00c7") - buf.write("\2\u07b9\u07bb\5\u0194\u00cb\2\u07ba\u0792\3\2\2\2\u07ba") - buf.write("\u0793\3\2\2\2\u07ba\u079e\3\2\2\2\u07ba\u07a9\3\2\2\2") - buf.write("\u07ba\u07ac\3\2\2\2\u07ba\u07ad\3\2\2\2\u07ba\u07b1\3") - buf.write("\2\2\2\u07ba\u07b5\3\2\2\2\u07ba\u07b6\3\2\2\2\u07ba\u07b7") - buf.write("\3\2\2\2\u07ba\u07b8\3\2\2\2\u07ba\u07b9\3\2\2\2\u07bb") - buf.write("\u016f\3\2\2\2\u07bc\u07bd\3\2\2\2\u07bd\u0171\3\2\2\2") - buf.write("\u07be\u07e6\5\2\2\2\u07bf\u07c4\5\66\34\2\u07c0\u07c1") - buf.write("\7?\2\2\u07c1\u07c3\7@\2\2\u07c2\u07c0\3\2\2\2\u07c3\u07c6") - buf.write("\3\2\2\2\u07c4\u07c2\3\2\2\2\u07c4\u07c5\3\2\2\2\u07c5") - buf.write("\u07c7\3\2\2\2\u07c6\u07c4\3\2\2\2\u07c7\u07c8\7C\2\2") - buf.write("\u07c8\u07c9\7\13\2\2\u07c9\u07e6\3\2\2\2\u07ca\u07cf") - buf.write("\5v<\2\u07cb\u07cc\7?\2\2\u07cc\u07ce\7@\2\2\u07cd\u07cb") - buf.write("\3\2\2\2\u07ce\u07d1\3\2\2\2\u07cf\u07cd\3\2\2\2\u07cf") - buf.write("\u07d0\3\2\2\2\u07d0\u07d2\3\2\2\2\u07d1\u07cf\3\2\2\2") - buf.write("\u07d2\u07d3\7C\2\2\u07d3\u07d4\7\13\2\2\u07d4\u07e6\3") - buf.write("\2\2\2\u07d5\u07d6\7\62\2\2\u07d6\u07d7\7C\2\2\u07d7\u07e6") - buf.write("\7\13\2\2\u07d8\u07e6\7-\2\2\u07d9\u07da\5\66\34\2\u07da") - buf.write("\u07db\7C\2\2\u07db\u07dc\7-\2\2\u07dc\u07e6\3\2\2\2\u07dd") - buf.write("\u07de\7;\2\2\u07de\u07df\5\u019e\u00d0\2\u07df\u07e0") - buf.write("\7<\2\2\u07e0\u07e6\3\2\2\2\u07e1\u07e6\5\u0178\u00bd") - buf.write("\2\u07e2\u07e6\5\u0180\u00c1\2\u07e3\u07e6\5\u018c\u00c7") - buf.write("\2\u07e4\u07e6\5\u0194\u00cb\2\u07e5\u07be\3\2\2\2\u07e5") - buf.write("\u07bf\3\2\2\2\u07e5\u07ca\3\2\2\2\u07e5\u07d5\3\2\2\2") - buf.write("\u07e5\u07d8\3\2\2\2\u07e5\u07d9\3\2\2\2\u07e5\u07dd\3") - buf.write("\2\2\2\u07e5\u07e1\3\2\2\2\u07e5\u07e2\3\2\2\2\u07e5\u07e3") - buf.write("\3\2\2\2\u07e5\u07e4\3\2\2\2\u07e6\u0173\3\2\2\2\u07e7") - buf.write("\u07e9\7!\2\2\u07e8\u07ea\5*\26\2\u07e9\u07e8\3\2\2\2") - buf.write("\u07e9\u07ea\3\2\2\2\u07ea\u07ee\3\2\2\2\u07eb\u07ed\5") - buf.write("\u00e6t\2\u07ec\u07eb\3\2\2\2\u07ed\u07f0\3\2\2\2\u07ee") - buf.write("\u07ec\3\2\2\2\u07ee\u07ef\3\2\2\2\u07ef\u07f1\3\2\2\2") - buf.write("\u07f0\u07ee\3\2\2\2\u07f1\u07fc\7h\2\2\u07f2\u07f6\7") - buf.write("C\2\2\u07f3\u07f5\5\u00e6t\2\u07f4\u07f3\3\2\2\2\u07f5") - buf.write("\u07f8\3\2\2\2\u07f6\u07f4\3\2\2\2\u07f6\u07f7\3\2\2\2") - buf.write("\u07f7\u07f9\3\2\2\2\u07f8\u07f6\3\2\2\2\u07f9\u07fb\7") - buf.write("h\2\2\u07fa\u07f2\3\2\2\2\u07fb\u07fe\3\2\2\2\u07fc\u07fa") - buf.write("\3\2\2\2\u07fc\u07fd\3\2\2\2\u07fd\u0800\3\2\2\2\u07fe") - buf.write("\u07fc\3\2\2\2\u07ff\u0801\5\u017a\u00be\2\u0800\u07ff") - buf.write("\3\2\2\2\u0800\u0801\3\2\2\2\u0801\u0802\3\2\2\2\u0802") - buf.write("\u0804\7;\2\2\u0803\u0805\5\u018e\u00c8\2\u0804\u0803") - buf.write("\3\2\2\2\u0804\u0805\3\2\2\2\u0805\u0806\3\2\2\2\u0806") - buf.write("\u0808\7<\2\2\u0807\u0809\5b\62\2\u0808\u0807\3\2\2\2") - buf.write("\u0808\u0809\3\2\2\2\u0809\u083b\3\2\2\2\u080a\u080b\5") - buf.write(":\36\2\u080b\u080c\7C\2\2\u080c\u080e\7!\2\2\u080d\u080f") - buf.write("\5*\26\2\u080e\u080d\3\2\2\2\u080e\u080f\3\2\2\2\u080f") - buf.write("\u0813\3\2\2\2\u0810\u0812\5\u00e6t\2\u0811\u0810\3\2") - buf.write("\2\2\u0812\u0815\3\2\2\2\u0813\u0811\3\2\2\2\u0813\u0814") - buf.write("\3\2\2\2\u0814\u0816\3\2\2\2\u0815\u0813\3\2\2\2\u0816") - buf.write("\u0818\7h\2\2\u0817\u0819\5\u017a\u00be\2\u0818\u0817") - buf.write("\3\2\2\2\u0818\u0819\3\2\2\2\u0819\u081a\3\2\2\2\u081a") - buf.write("\u081c\7;\2\2\u081b\u081d\5\u018e\u00c8\2\u081c\u081b") - buf.write("\3\2\2\2\u081c\u081d\3\2\2\2\u081d\u081e\3\2\2\2\u081e") - buf.write("\u0820\7<\2\2\u081f\u0821\5b\62\2\u0820\u081f\3\2\2\2") - buf.write("\u0820\u0821\3\2\2\2\u0821\u083b\3\2\2\2\u0822\u0823\5") - buf.write("\u0160\u00b1\2\u0823\u0824\7C\2\2\u0824\u0826\7!\2\2\u0825") - buf.write("\u0827\5*\26\2\u0826\u0825\3\2\2\2\u0826\u0827\3\2\2\2") - buf.write("\u0827\u082b\3\2\2\2\u0828\u082a\5\u00e6t\2\u0829\u0828") - buf.write("\3\2\2\2\u082a\u082d\3\2\2\2\u082b\u0829\3\2\2\2\u082b") - buf.write("\u082c\3\2\2\2\u082c\u082e\3\2\2\2\u082d\u082b\3\2\2\2") - buf.write("\u082e\u0830\7h\2\2\u082f\u0831\5\u017a\u00be\2\u0830") - buf.write("\u082f\3\2\2\2\u0830\u0831\3\2\2\2\u0831\u0832\3\2\2\2") - buf.write("\u0832\u0834\7;\2\2\u0833\u0835\5\u018e\u00c8\2\u0834") - buf.write("\u0833\3\2\2\2\u0834\u0835\3\2\2\2\u0835\u0836\3\2\2\2") - buf.write("\u0836\u0838\7<\2\2\u0837\u0839\5b\62\2\u0838\u0837\3") - buf.write("\2\2\2\u0838\u0839\3\2\2\2\u0839\u083b\3\2\2\2\u083a\u07e7") - buf.write("\3\2\2\2\u083a\u080a\3\2\2\2\u083a\u0822\3\2\2\2\u083b") - buf.write("\u0175\3\2\2\2\u083c\u083d\7C\2\2\u083d\u083f\7!\2\2\u083e") - buf.write("\u0840\5*\26\2\u083f\u083e\3\2\2\2\u083f\u0840\3\2\2\2") - buf.write("\u0840\u0844\3\2\2\2\u0841\u0843\5\u00e6t\2\u0842\u0841") - buf.write("\3\2\2\2\u0843\u0846\3\2\2\2\u0844\u0842\3\2\2\2\u0844") - buf.write("\u0845\3\2\2\2\u0845\u0847\3\2\2\2\u0846\u0844\3\2\2\2") - buf.write("\u0847\u0849\7h\2\2\u0848\u084a\5\u017a\u00be\2\u0849") - buf.write("\u0848\3\2\2\2\u0849\u084a\3\2\2\2\u084a\u084b\3\2\2\2") - buf.write("\u084b\u084d\7;\2\2\u084c\u084e\5\u018e\u00c8\2\u084d") - buf.write("\u084c\3\2\2\2\u084d\u084e\3\2\2\2\u084e\u084f\3\2\2\2") - buf.write("\u084f\u0851\7<\2\2\u0850\u0852\5b\62\2\u0851\u0850\3") - buf.write("\2\2\2\u0851\u0852\3\2\2\2\u0852\u0177\3\2\2\2\u0853\u0855") - buf.write("\7!\2\2\u0854\u0856\5*\26\2\u0855\u0854\3\2\2\2\u0855") - buf.write("\u0856\3\2\2\2\u0856\u085a\3\2\2\2\u0857\u0859\5\u00e6") - buf.write("t\2\u0858\u0857\3\2\2\2\u0859\u085c\3\2\2\2\u085a\u0858") - buf.write("\3\2\2\2\u085a\u085b\3\2\2\2\u085b\u085d\3\2\2\2\u085c") - buf.write("\u085a\3\2\2\2\u085d\u0868\7h\2\2\u085e\u0862\7C\2\2\u085f") - buf.write("\u0861\5\u00e6t\2\u0860\u085f\3\2\2\2\u0861\u0864\3\2") - buf.write("\2\2\u0862\u0860\3\2\2\2\u0862\u0863\3\2\2\2\u0863\u0865") - buf.write("\3\2\2\2\u0864\u0862\3\2\2\2\u0865\u0867\7h\2\2\u0866") - buf.write("\u085e\3\2\2\2\u0867\u086a\3\2\2\2\u0868\u0866\3\2\2\2") - buf.write("\u0868\u0869\3\2\2\2\u0869\u086c\3\2\2\2\u086a\u0868\3") - buf.write("\2\2\2\u086b\u086d\5\u017a\u00be\2\u086c\u086b\3\2\2\2") - buf.write("\u086c\u086d\3\2\2\2\u086d\u086e\3\2\2\2\u086e\u0870\7") - buf.write(";\2\2\u086f\u0871\5\u018e\u00c8\2\u0870\u086f\3\2\2\2") - buf.write("\u0870\u0871\3\2\2\2\u0871\u0872\3\2\2\2\u0872\u0874\7") - buf.write("<\2\2\u0873\u0875\5b\62\2\u0874\u0873\3\2\2\2\u0874\u0875") - buf.write("\3\2\2\2\u0875\u088f\3\2\2\2\u0876\u0877\5:\36\2\u0877") - buf.write("\u0878\7C\2\2\u0878\u087a\7!\2\2\u0879\u087b\5*\26\2\u087a") - buf.write("\u0879\3\2\2\2\u087a\u087b\3\2\2\2\u087b\u087f\3\2\2\2") - buf.write("\u087c\u087e\5\u00e6t\2\u087d\u087c\3\2\2\2\u087e\u0881") - buf.write("\3\2\2\2\u087f\u087d\3\2\2\2\u087f\u0880\3\2\2\2\u0880") - buf.write("\u0882\3\2\2\2\u0881\u087f\3\2\2\2\u0882\u0884\7h\2\2") - buf.write("\u0883\u0885\5\u017a\u00be\2\u0884\u0883\3\2\2\2\u0884") - buf.write("\u0885\3\2\2\2\u0885\u0886\3\2\2\2\u0886\u0888\7;\2\2") - buf.write("\u0887\u0889\5\u018e\u00c8\2\u0888\u0887\3\2\2\2\u0888") - buf.write("\u0889\3\2\2\2\u0889\u088a\3\2\2\2\u088a\u088c\7<\2\2") - buf.write("\u088b\u088d\5b\62\2\u088c\u088b\3\2\2\2\u088c\u088d\3") - buf.write("\2\2\2\u088d\u088f\3\2\2\2\u088e\u0853\3\2\2\2\u088e\u0876") - buf.write("\3\2\2\2\u088f\u0179\3\2\2\2\u0890\u0894\5*\26\2\u0891") - buf.write("\u0892\7F\2\2\u0892\u0894\7E\2\2\u0893\u0890\3\2\2\2\u0893") - buf.write("\u0891\3\2\2\2\u0894\u017b\3\2\2\2\u0895\u0896\5\u0160") - buf.write("\u00b1\2\u0896\u0897\7C\2\2\u0897\u0898\7h\2\2\u0898\u08a3") - buf.write("\3\2\2\2\u0899\u089a\7*\2\2\u089a\u089b\7C\2\2\u089b\u08a3") - buf.write("\7h\2\2\u089c\u089d\5\66\34\2\u089d\u089e\7C\2\2\u089e") - buf.write("\u089f\7*\2\2\u089f\u08a0\7C\2\2\u08a0\u08a1\7h\2\2\u08a1") - buf.write("\u08a3\3\2\2\2\u08a2\u0895\3\2\2\2\u08a2\u0899\3\2\2\2") - buf.write("\u08a2\u089c\3\2\2\2\u08a3\u017d\3\2\2\2\u08a4\u08a5\7") - buf.write("C\2\2\u08a5\u08a6\7h\2\2\u08a6\u017f\3\2\2\2\u08a7\u08a8") - buf.write("\7*\2\2\u08a8\u08a9\7C\2\2\u08a9\u08b1\7h\2\2\u08aa\u08ab") - buf.write("\5\66\34\2\u08ab\u08ac\7C\2\2\u08ac\u08ad\7*\2\2\u08ad") - buf.write("\u08ae\7C\2\2\u08ae\u08af\7h\2\2\u08af\u08b1\3\2\2\2\u08b0") - buf.write("\u08a7\3\2\2\2\u08b0\u08aa\3\2\2\2\u08b1\u0181\3\2\2\2") - buf.write("\u08b2\u08b3\5:\36\2\u08b3\u08b4\7?\2\2\u08b4\u08b5\5") - buf.write("\u019e\u00d0\2\u08b5\u08b6\7@\2\2\u08b6\u08bd\3\2\2\2") - buf.write("\u08b7\u08b8\5\u0166\u00b4\2\u08b8\u08b9\7?\2\2\u08b9") - buf.write("\u08ba\5\u019e\u00d0\2\u08ba\u08bb\7@\2\2\u08bb\u08bd") - buf.write("\3\2\2\2\u08bc\u08b2\3\2\2\2\u08bc\u08b7\3\2\2\2\u08bd") - buf.write("\u08c5\3\2\2\2\u08be\u08bf\5\u0164\u00b3\2\u08bf\u08c0") - buf.write("\7?\2\2\u08c0\u08c1\5\u019e\u00d0\2\u08c1\u08c2\7@\2\2") - buf.write("\u08c2\u08c4\3\2\2\2\u08c3\u08be\3\2\2\2\u08c4\u08c7\3") - buf.write("\2\2\2\u08c5\u08c3\3\2\2\2\u08c5\u08c6\3\2\2\2\u08c6\u0183") - buf.write("\3\2\2\2\u08c7\u08c5\3\2\2\2\u08c8\u08c9\5\u016c\u00b7") - buf.write("\2\u08c9\u08ca\7?\2\2\u08ca\u08cb\5\u019e\u00d0\2\u08cb") - buf.write("\u08cc\7@\2\2\u08cc\u08d4\3\2\2\2\u08cd\u08ce\5\u016a") - buf.write("\u00b6\2\u08ce\u08cf\7?\2\2\u08cf\u08d0\5\u019e\u00d0") - buf.write("\2\u08d0\u08d1\7@\2\2\u08d1\u08d3\3\2\2\2\u08d2\u08cd") - buf.write("\3\2\2\2\u08d3\u08d6\3\2\2\2\u08d4\u08d2\3\2\2\2\u08d4") - buf.write("\u08d5\3\2\2\2\u08d5\u0185\3\2\2\2\u08d6\u08d4\3\2\2\2") - buf.write("\u08d7\u08d8\5:\36\2\u08d8\u08d9\7?\2\2\u08d9\u08da\5") - buf.write("\u019e\u00d0\2\u08da\u08db\7@\2\2\u08db\u08e2\3\2\2\2") - buf.write("\u08dc\u08dd\5\u0172\u00ba\2\u08dd\u08de\7?\2\2\u08de") - buf.write("\u08df\5\u019e\u00d0\2\u08df\u08e0\7@\2\2\u08e0\u08e2") - buf.write("\3\2\2\2\u08e1\u08d7\3\2\2\2\u08e1\u08dc\3\2\2\2\u08e2") - buf.write("\u08ea\3\2\2\2\u08e3\u08e4\5\u0170\u00b9\2\u08e4\u08e5") - buf.write("\7?\2\2\u08e5\u08e6\5\u019e\u00d0\2\u08e6\u08e7\7@\2\2") - buf.write("\u08e7\u08e9\3\2\2\2\u08e8\u08e3\3\2\2\2\u08e9\u08ec\3") - buf.write("\2\2\2\u08ea\u08e8\3\2\2\2\u08ea\u08eb\3\2\2\2\u08eb\u0187") - buf.write("\3\2\2\2\u08ec\u08ea\3\2\2\2\u08ed\u08ee\5<\37\2\u08ee") - buf.write("\u08f0\7;\2\2\u08ef\u08f1\5\u018e\u00c8\2\u08f0\u08ef") - buf.write("\3\2\2\2\u08f0\u08f1\3\2\2\2\u08f1\u08f2\3\2\2\2\u08f2") - buf.write("\u08f3\7<\2\2\u08f3\u0932\3\2\2\2\u08f4\u08f5\5\66\34") - buf.write("\2\u08f5\u08f7\7C\2\2\u08f6\u08f8\5*\26\2\u08f7\u08f6") - buf.write("\3\2\2\2\u08f7\u08f8\3\2\2\2\u08f8\u08f9\3\2\2\2\u08f9") - buf.write("\u08fa\7h\2\2\u08fa\u08fc\7;\2\2\u08fb\u08fd\5\u018e\u00c8") - buf.write("\2\u08fc\u08fb\3\2\2\2\u08fc\u08fd\3\2\2\2\u08fd\u08fe") - buf.write("\3\2\2\2\u08fe\u08ff\7<\2\2\u08ff\u0932\3\2\2\2\u0900") - buf.write("\u0901\5:\36\2\u0901\u0903\7C\2\2\u0902\u0904\5*\26\2") - buf.write("\u0903\u0902\3\2\2\2\u0903\u0904\3\2\2\2\u0904\u0905\3") - buf.write("\2\2\2\u0905\u0906\7h\2\2\u0906\u0908\7;\2\2\u0907\u0909") - buf.write("\5\u018e\u00c8\2\u0908\u0907\3\2\2\2\u0908\u0909\3\2\2") - buf.write("\2\u0909\u090a\3\2\2\2\u090a\u090b\7<\2\2\u090b\u0932") - buf.write("\3\2\2\2\u090c\u090d\5\u0160\u00b1\2\u090d\u090f\7C\2") - buf.write("\2\u090e\u0910\5*\26\2\u090f\u090e\3\2\2\2\u090f\u0910") - buf.write("\3\2\2\2\u0910\u0911\3\2\2\2\u0911\u0912\7h\2\2\u0912") - buf.write("\u0914\7;\2\2\u0913\u0915\5\u018e\u00c8\2\u0914\u0913") - buf.write("\3\2\2\2\u0914\u0915\3\2\2\2\u0915\u0916\3\2\2\2\u0916") - buf.write("\u0917\7<\2\2\u0917\u0932\3\2\2\2\u0918\u0919\7*\2\2\u0919") - buf.write("\u091b\7C\2\2\u091a\u091c\5*\26\2\u091b\u091a\3\2\2\2") - buf.write("\u091b\u091c\3\2\2\2\u091c\u091d\3\2\2\2\u091d\u091e\7") - buf.write("h\2\2\u091e\u0920\7;\2\2\u091f\u0921\5\u018e\u00c8\2\u0920") - buf.write("\u091f\3\2\2\2\u0920\u0921\3\2\2\2\u0921\u0922\3\2\2\2") - buf.write("\u0922\u0932\7<\2\2\u0923\u0924\5\66\34\2\u0924\u0925") - buf.write("\7C\2\2\u0925\u0926\7*\2\2\u0926\u0928\7C\2\2\u0927\u0929") - buf.write("\5*\26\2\u0928\u0927\3\2\2\2\u0928\u0929\3\2\2\2\u0929") - buf.write("\u092a\3\2\2\2\u092a\u092b\7h\2\2\u092b\u092d\7;\2\2\u092c") - buf.write("\u092e\5\u018e\u00c8\2\u092d\u092c\3\2\2\2\u092d\u092e") - buf.write("\3\2\2\2\u092e\u092f\3\2\2\2\u092f\u0930\7<\2\2\u0930") - buf.write("\u0932\3\2\2\2\u0931\u08ed\3\2\2\2\u0931\u08f4\3\2\2\2") - buf.write("\u0931\u0900\3\2\2\2\u0931\u090c\3\2\2\2\u0931\u0918\3") - buf.write("\2\2\2\u0931\u0923\3\2\2\2\u0932\u0189\3\2\2\2\u0933\u0935") - buf.write("\7C\2\2\u0934\u0936\5*\26\2\u0935\u0934\3\2\2\2\u0935") - buf.write("\u0936\3\2\2\2\u0936\u0937\3\2\2\2\u0937\u0938\7h\2\2") - buf.write("\u0938\u093a\7;\2\2\u0939\u093b\5\u018e\u00c8\2\u093a") - buf.write("\u0939\3\2\2\2\u093a\u093b\3\2\2\2\u093b\u093c\3\2\2\2") - buf.write("\u093c\u093d\7<\2\2\u093d\u018b\3\2\2\2\u093e\u093f\5") - buf.write("<\37\2\u093f\u0941\7;\2\2\u0940\u0942\5\u018e\u00c8\2") - buf.write("\u0941\u0940\3\2\2\2\u0941\u0942\3\2\2\2\u0942\u0943\3") - buf.write("\2\2\2\u0943\u0944\7<\2\2\u0944\u0977\3\2\2\2\u0945\u0946") - buf.write("\5\66\34\2\u0946\u0948\7C\2\2\u0947\u0949\5*\26\2\u0948") - buf.write("\u0947\3\2\2\2\u0948\u0949\3\2\2\2\u0949\u094a\3\2\2\2") - buf.write("\u094a\u094b\7h\2\2\u094b\u094d\7;\2\2\u094c\u094e\5\u018e") - buf.write("\u00c8\2\u094d\u094c\3\2\2\2\u094d\u094e\3\2\2\2\u094e") - buf.write("\u094f\3\2\2\2\u094f\u0950\7<\2\2\u0950\u0977\3\2\2\2") - buf.write("\u0951\u0952\5:\36\2\u0952\u0954\7C\2\2\u0953\u0955\5") - buf.write("*\26\2\u0954\u0953\3\2\2\2\u0954\u0955\3\2\2\2\u0955\u0956") - buf.write("\3\2\2\2\u0956\u0957\7h\2\2\u0957\u0959\7;\2\2\u0958\u095a") - buf.write("\5\u018e\u00c8\2\u0959\u0958\3\2\2\2\u0959\u095a\3\2\2") - buf.write("\2\u095a\u095b\3\2\2\2\u095b\u095c\7<\2\2\u095c\u0977") - buf.write("\3\2\2\2\u095d\u095e\7*\2\2\u095e\u0960\7C\2\2\u095f\u0961") - buf.write("\5*\26\2\u0960\u095f\3\2\2\2\u0960\u0961\3\2\2\2\u0961") - buf.write("\u0962\3\2\2\2\u0962\u0963\7h\2\2\u0963\u0965\7;\2\2\u0964") - buf.write("\u0966\5\u018e\u00c8\2\u0965\u0964\3\2\2\2\u0965\u0966") - buf.write("\3\2\2\2\u0966\u0967\3\2\2\2\u0967\u0977\7<\2\2\u0968") - buf.write("\u0969\5\66\34\2\u0969\u096a\7C\2\2\u096a\u096b\7*\2\2") - buf.write("\u096b\u096d\7C\2\2\u096c\u096e\5*\26\2\u096d\u096c\3") - buf.write("\2\2\2\u096d\u096e\3\2\2\2\u096e\u096f\3\2\2\2\u096f\u0970") - buf.write("\7h\2\2\u0970\u0972\7;\2\2\u0971\u0973\5\u018e\u00c8\2") - buf.write("\u0972\u0971\3\2\2\2\u0972\u0973\3\2\2\2\u0973\u0974\3") - buf.write("\2\2\2\u0974\u0975\7<\2\2\u0975\u0977\3\2\2\2\u0976\u093e") - buf.write("\3\2\2\2\u0976\u0945\3\2\2\2\u0976\u0951\3\2\2\2\u0976") - buf.write("\u095d\3\2\2\2\u0976\u0968\3\2\2\2\u0977\u018d\3\2\2\2") - buf.write("\u0978\u097d\5\u019e\u00d0\2\u0979\u097a\7B\2\2\u097a") - buf.write("\u097c\5\u019e\u00d0\2\u097b\u0979\3\2\2\2\u097c\u097f") - buf.write("\3\2\2\2\u097d\u097b\3\2\2\2\u097d\u097e\3\2\2\2\u097e") - buf.write("\u018f\3\2\2\2\u097f\u097d\3\2\2\2\u0980\u0981\5:\36\2") - buf.write("\u0981\u0983\7\\\2\2\u0982\u0984\5*\26\2\u0983\u0982\3") - buf.write("\2\2\2\u0983\u0984\3\2\2\2\u0984\u0985\3\2\2\2\u0985\u0986") - buf.write("\7h\2\2\u0986\u09b0\3\2\2\2\u0987\u0988\5\f\7\2\u0988") - buf.write("\u098a\7\\\2\2\u0989\u098b\5*\26\2\u098a\u0989\3\2\2\2") - buf.write("\u098a\u098b\3\2\2\2\u098b\u098c\3\2\2\2\u098c\u098d\7") - buf.write("h\2\2\u098d\u09b0\3\2\2\2\u098e\u098f\5\u0160\u00b1\2") - buf.write("\u098f\u0991\7\\\2\2\u0990\u0992\5*\26\2\u0991\u0990\3") - buf.write("\2\2\2\u0991\u0992\3\2\2\2\u0992\u0993\3\2\2\2\u0993\u0994") - buf.write("\7h\2\2\u0994\u09b0\3\2\2\2\u0995\u0996\7*\2\2\u0996\u0998") - buf.write("\7\\\2\2\u0997\u0999\5*\26\2\u0998\u0997\3\2\2\2\u0998") - buf.write("\u0999\3\2\2\2\u0999\u099a\3\2\2\2\u099a\u09b0\7h\2\2") - buf.write("\u099b\u099c\5\66\34\2\u099c\u099d\7C\2\2\u099d\u099e") - buf.write("\7*\2\2\u099e\u09a0\7\\\2\2\u099f\u09a1\5*\26\2\u09a0") - buf.write("\u099f\3\2\2\2\u09a0\u09a1\3\2\2\2\u09a1\u09a2\3\2\2\2") - buf.write("\u09a2\u09a3\7h\2\2\u09a3\u09b0\3\2\2\2\u09a4\u09a5\5") - buf.write("\20\t\2\u09a5\u09a7\7\\\2\2\u09a6\u09a8\5*\26\2\u09a7") - buf.write("\u09a6\3\2\2\2\u09a7\u09a8\3\2\2\2\u09a8\u09a9\3\2\2\2") - buf.write("\u09a9\u09aa\7!\2\2\u09aa\u09b0\3\2\2\2\u09ab\u09ac\5") - buf.write("\36\20\2\u09ac\u09ad\7\\\2\2\u09ad\u09ae\7!\2\2\u09ae") - buf.write("\u09b0\3\2\2\2\u09af\u0980\3\2\2\2\u09af\u0987\3\2\2\2") - buf.write("\u09af\u098e\3\2\2\2\u09af\u0995\3\2\2\2\u09af\u099b\3") - buf.write("\2\2\2\u09af\u09a4\3\2\2\2\u09af\u09ab\3\2\2\2\u09b0\u0191") - buf.write("\3\2\2\2\u09b1\u09b3\7\\\2\2\u09b2\u09b4\5*\26\2\u09b3") - buf.write("\u09b2\3\2\2\2\u09b3\u09b4\3\2\2\2\u09b4\u09b5\3\2\2\2") - buf.write("\u09b5\u09b6\7h\2\2\u09b6\u0193\3\2\2\2\u09b7\u09b8\5") - buf.write(":\36\2\u09b8\u09ba\7\\\2\2\u09b9\u09bb\5*\26\2\u09ba\u09b9") - buf.write("\3\2\2\2\u09ba\u09bb\3\2\2\2\u09bb\u09bc\3\2\2\2\u09bc") - buf.write("\u09bd\7h\2\2\u09bd\u09e0\3\2\2\2\u09be\u09bf\5\f\7\2") - buf.write("\u09bf\u09c1\7\\\2\2\u09c0\u09c2\5*\26\2\u09c1\u09c0\3") - buf.write("\2\2\2\u09c1\u09c2\3\2\2\2\u09c2\u09c3\3\2\2\2\u09c3\u09c4") - buf.write("\7h\2\2\u09c4\u09e0\3\2\2\2\u09c5\u09c6\7*\2\2\u09c6\u09c8") - buf.write("\7\\\2\2\u09c7\u09c9\5*\26\2\u09c8\u09c7\3\2\2\2\u09c8") - buf.write("\u09c9\3\2\2\2\u09c9\u09ca\3\2\2\2\u09ca\u09e0\7h\2\2") - buf.write("\u09cb\u09cc\5\66\34\2\u09cc\u09cd\7C\2\2\u09cd\u09ce") - buf.write("\7*\2\2\u09ce\u09d0\7\\\2\2\u09cf\u09d1\5*\26\2\u09d0") - buf.write("\u09cf\3\2\2\2\u09d0\u09d1\3\2\2\2\u09d1\u09d2\3\2\2\2") - buf.write("\u09d2\u09d3\7h\2\2\u09d3\u09e0\3\2\2\2\u09d4\u09d5\5") - buf.write("\20\t\2\u09d5\u09d7\7\\\2\2\u09d6\u09d8\5*\26\2\u09d7") - buf.write("\u09d6\3\2\2\2\u09d7\u09d8\3\2\2\2\u09d8\u09d9\3\2\2\2") - buf.write("\u09d9\u09da\7!\2\2\u09da\u09e0\3\2\2\2\u09db\u09dc\5") - buf.write("\36\20\2\u09dc\u09dd\7\\\2\2\u09dd\u09de\7!\2\2\u09de") - buf.write("\u09e0\3\2\2\2\u09df\u09b7\3\2\2\2\u09df\u09be\3\2\2\2") - buf.write("\u09df\u09c5\3\2\2\2\u09df\u09cb\3\2\2\2\u09df\u09d4\3") - buf.write("\2\2\2\u09df\u09db\3\2\2\2\u09e0\u0195\3\2\2\2\u09e1\u09e2") - buf.write("\7!\2\2\u09e2\u09e3\5\4\3\2\u09e3\u09e5\5\u0198\u00cd") - buf.write("\2\u09e4\u09e6\5 \21\2\u09e5\u09e4\3\2\2\2\u09e5\u09e6") - buf.write("\3\2\2\2\u09e6\u09f8\3\2\2\2\u09e7\u09e8\7!\2\2\u09e8") - buf.write("\u09e9\5\16\b\2\u09e9\u09eb\5\u0198\u00cd\2\u09ea\u09ec") - buf.write("\5 \21\2\u09eb\u09ea\3\2\2\2\u09eb\u09ec\3\2\2\2\u09ec") - buf.write("\u09f8\3\2\2\2\u09ed\u09ee\7!\2\2\u09ee\u09ef\5\4\3\2") - buf.write("\u09ef\u09f0\5 \21\2\u09f0\u09f1\5\u00f8}\2\u09f1\u09f8") - buf.write("\3\2\2\2\u09f2\u09f3\7!\2\2\u09f3\u09f4\5\16\b\2\u09f4") - buf.write("\u09f5\5 \21\2\u09f5\u09f6\5\u00f8}\2\u09f6\u09f8\3\2") - buf.write("\2\2\u09f7\u09e1\3\2\2\2\u09f7\u09e7\3\2\2\2\u09f7\u09ed") - buf.write("\3\2\2\2\u09f7\u09f2\3\2\2\2\u09f8\u0197\3\2\2\2\u09f9") - buf.write("\u09fd\5\u019a\u00ce\2\u09fa\u09fc\5\u019a\u00ce\2\u09fb") - buf.write("\u09fa\3\2\2\2\u09fc\u09ff\3\2\2\2\u09fd\u09fb\3\2\2\2") - buf.write("\u09fd\u09fe\3\2\2\2\u09fe\u0199\3\2\2\2\u09ff\u09fd\3") - buf.write("\2\2\2\u0a00\u0a02\5\u00e6t\2\u0a01\u0a00\3\2\2\2\u0a02") - buf.write("\u0a05\3\2\2\2\u0a03\u0a01\3\2\2\2\u0a03\u0a04\3\2\2\2") - buf.write("\u0a04\u0a06\3\2\2\2\u0a05\u0a03\3\2\2\2\u0a06\u0a07\7") - buf.write("?\2\2\u0a07\u0a08\5\u019e\u00d0\2\u0a08\u0a09\7@\2\2\u0a09") - buf.write("\u019b\3\2\2\2\u0a0a\u0a0b\5\u019e\u00d0\2\u0a0b\u019d") - buf.write("\3\2\2\2\u0a0c\u0a0f\5\u01a0\u00d1\2\u0a0d\u0a0f\5\u01a8") - buf.write("\u00d5\2\u0a0e\u0a0c\3\2\2\2\u0a0e\u0a0d\3\2\2\2\u0a0f") - buf.write("\u019f\3\2\2\2\u0a10\u0a11\5\u01a2\u00d2\2\u0a11\u0a12") - buf.write("\7[\2\2\u0a12\u0a13\5\u01a6\u00d4\2\u0a13\u01a1\3\2\2") - buf.write("\2\u0a14\u0a1f\7h\2\2\u0a15\u0a17\7;\2\2\u0a16\u0a18\5") - buf.write("\u0096L\2\u0a17\u0a16\3\2\2\2\u0a17\u0a18\3\2\2\2\u0a18") - buf.write("\u0a19\3\2\2\2\u0a19\u0a1f\7<\2\2\u0a1a\u0a1b\7;\2\2\u0a1b") - buf.write("\u0a1c\5\u01a4\u00d3\2\u0a1c\u0a1d\7<\2\2\u0a1d\u0a1f") - buf.write("\3\2\2\2\u0a1e\u0a14\3\2\2\2\u0a1e\u0a15\3\2\2\2\u0a1e") - buf.write("\u0a1a\3\2\2\2\u0a1f\u01a3\3\2\2\2\u0a20\u0a25\7h\2\2") - buf.write("\u0a21\u0a22\7B\2\2\u0a22\u0a24\7h\2\2\u0a23\u0a21\3\2") - buf.write("\2\2\u0a24\u0a27\3\2\2\2\u0a25\u0a23\3\2\2\2\u0a25\u0a26") - buf.write("\3\2\2\2\u0a26\u01a5\3\2\2\2\u0a27\u0a25\3\2\2\2\u0a28") - buf.write("\u0a2b\5\u019e\u00d0\2\u0a29\u0a2b\5\u00fc\177\2\u0a2a") - buf.write("\u0a28\3\2\2\2\u0a2a\u0a29\3\2\2\2\u0a2b\u01a7\3\2\2\2") - buf.write("\u0a2c\u0a2f\5\u01b0\u00d9\2\u0a2d\u0a2f\5\u01aa\u00d6") - buf.write("\2\u0a2e\u0a2c\3\2\2\2\u0a2e\u0a2d\3\2\2\2\u0a2f\u01a9") - buf.write("\3\2\2\2\u0a30\u0a31\5\u01ac\u00d7\2\u0a31\u0a32\5\u01ae") - buf.write("\u00d8\2\u0a32\u0a33\5\u019e\u00d0\2\u0a33\u01ab\3\2\2") - buf.write("\2\u0a34\u0a38\5:\36\2\u0a35\u0a38\5\u017c\u00bf\2\u0a36") - buf.write("\u0a38\5\u0182\u00c2\2\u0a37\u0a34\3\2\2\2\u0a37\u0a35") - buf.write("\3\2\2\2\u0a37\u0a36\3\2\2\2\u0a38\u01ad\3\2\2\2\u0a39") - buf.write("\u0a3a\t\5\2\2\u0a3a\u01af\3\2\2\2\u0a3b\u0a43\5\u01b2") - buf.write("\u00da\2\u0a3c\u0a3d\5\u01b2\u00da\2\u0a3d\u0a3e\7I\2") - buf.write("\2\u0a3e\u0a3f\5\u019e\u00d0\2\u0a3f\u0a40\7J\2\2\u0a40") - buf.write("\u0a41\5\u01b0\u00d9\2\u0a41\u0a43\3\2\2\2\u0a42\u0a3b") - buf.write("\3\2\2\2\u0a42\u0a3c\3\2\2\2\u0a43\u01b1\3\2\2\2\u0a44") - buf.write("\u0a45\b\u00da\1\2\u0a45\u0a46\5\u01b4\u00db\2\u0a46\u0a4c") - buf.write("\3\2\2\2\u0a47\u0a48\f\3\2\2\u0a48\u0a49\7P\2\2\u0a49") - buf.write("\u0a4b\5\u01b4\u00db\2\u0a4a\u0a47\3\2\2\2\u0a4b\u0a4e") - buf.write("\3\2\2\2\u0a4c\u0a4a\3\2\2\2\u0a4c\u0a4d\3\2\2\2\u0a4d") - buf.write("\u01b3\3\2\2\2\u0a4e\u0a4c\3\2\2\2\u0a4f\u0a50\b\u00db") - buf.write("\1\2\u0a50\u0a51\5\u01b6\u00dc\2\u0a51\u0a57\3\2\2\2\u0a52") - buf.write("\u0a53\f\3\2\2\u0a53\u0a54\7O\2\2\u0a54\u0a56\5\u01b6") - buf.write("\u00dc\2\u0a55\u0a52\3\2\2\2\u0a56\u0a59\3\2\2\2\u0a57") - buf.write("\u0a55\3\2\2\2\u0a57\u0a58\3\2\2\2\u0a58\u01b5\3\2\2\2") - buf.write("\u0a59\u0a57\3\2\2\2\u0a5a\u0a5b\b\u00dc\1\2\u0a5b\u0a5c") - buf.write("\5\u01b8\u00dd\2\u0a5c\u0a62\3\2\2\2\u0a5d\u0a5e\f\3\2") - buf.write("\2\u0a5e\u0a5f\7X\2\2\u0a5f\u0a61\5\u01b8\u00dd\2\u0a60") - buf.write("\u0a5d\3\2\2\2\u0a61\u0a64\3\2\2\2\u0a62\u0a60\3\2\2\2") - buf.write("\u0a62\u0a63\3\2\2\2\u0a63\u01b7\3\2\2\2\u0a64\u0a62\3") - buf.write("\2\2\2\u0a65\u0a66\b\u00dd\1\2\u0a66\u0a67\5\u01ba\u00de") - buf.write("\2\u0a67\u0a6d\3\2\2\2\u0a68\u0a69\f\3\2\2\u0a69\u0a6a") - buf.write("\7Y\2\2\u0a6a\u0a6c\5\u01ba\u00de\2\u0a6b\u0a68\3\2\2") - buf.write("\2\u0a6c\u0a6f\3\2\2\2\u0a6d\u0a6b\3\2\2\2\u0a6d\u0a6e") - buf.write("\3\2\2\2\u0a6e\u01b9\3\2\2\2\u0a6f\u0a6d\3\2\2\2\u0a70") - buf.write("\u0a71\b\u00de\1\2\u0a71\u0a72\5\u01bc\u00df\2\u0a72\u0a78") - buf.write("\3\2\2\2\u0a73\u0a74\f\3\2\2\u0a74\u0a75\7W\2\2\u0a75") - buf.write("\u0a77\5\u01bc\u00df\2\u0a76\u0a73\3\2\2\2\u0a77\u0a7a") - buf.write("\3\2\2\2\u0a78\u0a76\3\2\2\2\u0a78\u0a79\3\2\2\2\u0a79") - buf.write("\u01bb\3\2\2\2\u0a7a\u0a78\3\2\2\2\u0a7b\u0a7c\b\u00df") - buf.write("\1\2\u0a7c\u0a7d\5\u01be\u00e0\2\u0a7d\u0a86\3\2\2\2\u0a7e") - buf.write("\u0a7f\f\4\2\2\u0a7f\u0a80\7K\2\2\u0a80\u0a85\5\u01be") - buf.write("\u00e0\2\u0a81\u0a82\f\3\2\2\u0a82\u0a83\7N\2\2\u0a83") - buf.write("\u0a85\5\u01be\u00e0\2\u0a84\u0a7e\3\2\2\2\u0a84\u0a81") - buf.write("\3\2\2\2\u0a85\u0a88\3\2\2\2\u0a86\u0a84\3\2\2\2\u0a86") - buf.write("\u0a87\3\2\2\2\u0a87\u01bd\3\2\2\2\u0a88\u0a86\3\2\2\2") - buf.write("\u0a89\u0a8a\b\u00e0\1\2\u0a8a\u0a8b\5\u01c0\u00e1\2\u0a8b") - buf.write("\u0a9d\3\2\2\2\u0a8c\u0a8d\f\7\2\2\u0a8d\u0a8e\7F\2\2") - buf.write("\u0a8e\u0a9c\5\u01c0\u00e1\2\u0a8f\u0a90\f\6\2\2\u0a90") - buf.write("\u0a91\7E\2\2\u0a91\u0a9c\5\u01c0\u00e1\2\u0a92\u0a93") - buf.write("\f\5\2\2\u0a93\u0a94\7L\2\2\u0a94\u0a9c\5\u01c0\u00e1") - buf.write("\2\u0a95\u0a96\f\4\2\2\u0a96\u0a97\7M\2\2\u0a97\u0a9c") - buf.write("\5\u01c0\u00e1\2\u0a98\u0a99\f\3\2\2\u0a99\u0a9a\7\34") - buf.write("\2\2\u0a9a\u0a9c\5\f\7\2\u0a9b\u0a8c\3\2\2\2\u0a9b\u0a8f") - buf.write("\3\2\2\2\u0a9b\u0a92\3\2\2\2\u0a9b\u0a95\3\2\2\2\u0a9b") - buf.write("\u0a98\3\2\2\2\u0a9c\u0a9f\3\2\2\2\u0a9d\u0a9b\3\2\2\2") - buf.write("\u0a9d\u0a9e\3\2\2\2\u0a9e\u01bf\3\2\2\2\u0a9f\u0a9d\3") - buf.write("\2\2\2\u0aa0\u0aa1\b\u00e1\1\2\u0aa1\u0aa2\5\u01c2\u00e2") - buf.write("\2\u0aa2\u0ab2\3\2\2\2\u0aa3\u0aa4\f\5\2\2\u0aa4\u0aa5") - buf.write("\7F\2\2\u0aa5\u0aa6\7F\2\2\u0aa6\u0ab1\5\u01c2\u00e2\2") - buf.write("\u0aa7\u0aa8\f\4\2\2\u0aa8\u0aa9\7E\2\2\u0aa9\u0aaa\7") - buf.write("E\2\2\u0aaa\u0ab1\5\u01c2\u00e2\2\u0aab\u0aac\f\3\2\2") - buf.write("\u0aac\u0aad\7E\2\2\u0aad\u0aae\7E\2\2\u0aae\u0aaf\7E") - buf.write("\2\2\u0aaf\u0ab1\5\u01c2\u00e2\2\u0ab0\u0aa3\3\2\2\2\u0ab0") - buf.write("\u0aa7\3\2\2\2\u0ab0\u0aab\3\2\2\2\u0ab1\u0ab4\3\2\2\2") - buf.write("\u0ab2\u0ab0\3\2\2\2\u0ab2\u0ab3\3\2\2\2\u0ab3\u01c1\3") - buf.write("\2\2\2\u0ab4\u0ab2\3\2\2\2\u0ab5\u0ab6\b\u00e2\1\2\u0ab6") - buf.write("\u0ab7\5\u01c4\u00e3\2\u0ab7\u0ac0\3\2\2\2\u0ab8\u0ab9") - buf.write("\f\4\2\2\u0ab9\u0aba\7S\2\2\u0aba\u0abf\5\u01c4\u00e3") - buf.write("\2\u0abb\u0abc\f\3\2\2\u0abc\u0abd\7T\2\2\u0abd\u0abf") - buf.write("\5\u01c4\u00e3\2\u0abe\u0ab8\3\2\2\2\u0abe\u0abb\3\2\2") - buf.write("\2\u0abf\u0ac2\3\2\2\2\u0ac0\u0abe\3\2\2\2\u0ac0\u0ac1") - buf.write("\3\2\2\2\u0ac1\u01c3\3\2\2\2\u0ac2\u0ac0\3\2\2\2\u0ac3") - buf.write("\u0ac4\b\u00e3\1\2\u0ac4\u0ac5\5\u01c6\u00e4\2\u0ac5\u0ad1") - buf.write("\3\2\2\2\u0ac6\u0ac7\f\5\2\2\u0ac7\u0ac8\7U\2\2\u0ac8") - buf.write("\u0ad0\5\u01c6\u00e4\2\u0ac9\u0aca\f\4\2\2\u0aca\u0acb") - buf.write("\7V\2\2\u0acb\u0ad0\5\u01c6\u00e4\2\u0acc\u0acd\f\3\2") - buf.write("\2\u0acd\u0ace\7Z\2\2\u0ace\u0ad0\5\u01c6\u00e4\2\u0acf") - buf.write("\u0ac6\3\2\2\2\u0acf\u0ac9\3\2\2\2\u0acf\u0acc\3\2\2\2") - buf.write("\u0ad0\u0ad3\3\2\2\2\u0ad1\u0acf\3\2\2\2\u0ad1\u0ad2\3") - buf.write("\2\2\2\u0ad2\u01c5\3\2\2\2\u0ad3\u0ad1\3\2\2\2\u0ad4\u0adc") - buf.write("\5\u01c8\u00e5\2\u0ad5\u0adc\5\u01ca\u00e6\2\u0ad6\u0ad7") - buf.write("\7S\2\2\u0ad7\u0adc\5\u01c6\u00e4\2\u0ad8\u0ad9\7T\2\2") - buf.write("\u0ad9\u0adc\5\u01c6\u00e4\2\u0ada\u0adc\5\u01cc\u00e7") - buf.write("\2\u0adb\u0ad4\3\2\2\2\u0adb\u0ad5\3\2\2\2\u0adb\u0ad6") - buf.write("\3\2\2\2\u0adb\u0ad8\3\2\2\2\u0adb\u0ada\3\2\2\2\u0adc") - buf.write("\u01c7\3\2\2\2\u0add\u0ade\7Q\2\2\u0ade\u0adf\5\u01c6") - buf.write("\u00e4\2\u0adf\u01c9\3\2\2\2\u0ae0\u0ae1\7R\2\2\u0ae1") - buf.write("\u0ae2\5\u01c6\u00e4\2\u0ae2\u01cb\3\2\2\2\u0ae3\u0aea") - buf.write("\5\u01ce\u00e8\2\u0ae4\u0ae5\7H\2\2\u0ae5\u0aea\5\u01c6") - buf.write("\u00e4\2\u0ae6\u0ae7\7G\2\2\u0ae7\u0aea\5\u01c6\u00e4") - buf.write("\2\u0ae8\u0aea\5\u01d8\u00ed\2\u0ae9\u0ae3\3\2\2\2\u0ae9") - buf.write("\u0ae4\3\2\2\2\u0ae9\u0ae6\3\2\2\2\u0ae9\u0ae8\3\2\2\2") - buf.write("\u0aea\u01cd\3\2\2\2\u0aeb\u0aee\5\u0160\u00b1\2\u0aec") - buf.write("\u0aee\5:\36\2\u0aed\u0aeb\3\2\2\2\u0aed\u0aec\3\2\2\2") - buf.write("\u0aee\u0af3\3\2\2\2\u0aef\u0af2\5\u01d2\u00ea\2\u0af0") - buf.write("\u0af2\5\u01d6\u00ec\2\u0af1\u0aef\3\2\2\2\u0af1\u0af0") - buf.write("\3\2\2\2\u0af2\u0af5\3\2\2\2\u0af3\u0af1\3\2\2\2\u0af3") - buf.write("\u0af4\3\2\2\2\u0af4\u01cf\3\2\2\2\u0af5\u0af3\3\2\2\2") - buf.write("\u0af6\u0af7\5\u01ce\u00e8\2\u0af7\u0af8\7Q\2\2\u0af8") - buf.write("\u01d1\3\2\2\2\u0af9\u0afa\7Q\2\2\u0afa\u01d3\3\2\2\2") - buf.write("\u0afb\u0afc\5\u01ce\u00e8\2\u0afc\u0afd\7R\2\2\u0afd") - buf.write("\u01d5\3\2\2\2\u0afe\u0aff\7R\2\2\u0aff\u01d7\3\2\2\2") - buf.write("\u0b00\u0b01\7;\2\2\u0b01\u0b02\5\4\3\2\u0b02\u0b03\7") - buf.write("<\2\2\u0b03\u0b04\5\u01c6\u00e4\2\u0b04\u0b1c\3\2\2\2") - buf.write("\u0b05\u0b06\7;\2\2\u0b06\u0b0a\5\f\7\2\u0b07\u0b09\5") - buf.write("(\25\2\u0b08\u0b07\3\2\2\2\u0b09\u0b0c\3\2\2\2\u0b0a\u0b08") - buf.write("\3\2\2\2\u0b0a\u0b0b\3\2\2\2\u0b0b\u0b0d\3\2\2\2\u0b0c") - buf.write("\u0b0a\3\2\2\2\u0b0d\u0b0e\7<\2\2\u0b0e\u0b0f\5\u01cc") - buf.write("\u00e7\2\u0b0f\u0b1c\3\2\2\2\u0b10\u0b11\7;\2\2\u0b11") - buf.write("\u0b15\5\f\7\2\u0b12\u0b14\5(\25\2\u0b13\u0b12\3\2\2\2") - buf.write("\u0b14\u0b17\3\2\2\2\u0b15\u0b13\3\2\2\2\u0b15\u0b16\3") - buf.write("\2\2\2\u0b16\u0b18\3\2\2\2\u0b17\u0b15\3\2\2\2\u0b18\u0b19") - buf.write("\7<\2\2\u0b19\u0b1a\5\u01a0\u00d1\2\u0b1a\u0b1c\3\2\2") - buf.write("\2\u0b1b\u0b00\3\2\2\2\u0b1b\u0b05\3\2\2\2\u0b1b\u0b10") - buf.write("\3\2\2\2\u0b1c\u01d9\3\2\2\2\u0144\u01df\u01e6\u01ea\u01ee") - buf.write("\u01f7\u01fb\u01ff\u0201\u0207\u020c\u0213\u0218\u021a") - buf.write("\u0220\u0225\u022a\u022f\u023a\u0248\u024d\u0255\u025c") - buf.write("\u0262\u0267\u0272\u0275\u0283\u0288\u028d\u0292\u0298") - buf.write("\u02a2\u02aa\u02b4\u02bc\u02c8\u02cc\u02d1\u02d7\u02df") - buf.write("\u02ec\u0309\u030d\u0312\u0318\u031b\u031e\u032a\u0335") - buf.write("\u0343\u034a\u0353\u035a\u035f\u036e\u0375\u037b\u037f") - buf.write("\u0383\u0387\u038b\u0390\u0394\u0398\u039a\u039f\u03a6") - buf.write("\u03ab\u03ad\u03b3\u03b8\u03bc\u03cf\u03d4\u03e4\u03e9") - buf.write("\u03ef\u03f5\u03f7\u03fb\u0400\u0404\u040c\u0413\u041b") - buf.write("\u041e\u0423\u042b\u0430\u0437\u043e\u0443\u0449\u0455") - buf.write("\u045a\u045e\u0468\u046d\u0475\u0478\u047d\u0485\u0488") - buf.write("\u048d\u0492\u0497\u049c\u04a3\u04a8\u04b0\u04b5\u04ba") - buf.write("\u04bf\u04c5\u04cb\u04ce\u04d1\u04da\u04e0\u04e6\u04e9") - buf.write("\u04ec\u04f4\u04f9\u04fe\u0504\u0507\u0512\u051b\u0525") - buf.write("\u052a\u0535\u053a\u0546\u054b\u0557\u0561\u0566\u056e") - buf.write("\u0571\u0578\u0580\u0586\u058f\u0599\u059d\u05a0\u05a9") - buf.write("\u05b7\u05ba\u05c3\u05c8\u05cf\u05d4\u05dc\u05e8\u05ef") - buf.write("\u05fd\u0613\u0635\u0641\u0647\u0653\u0660\u067a\u067e") - buf.write("\u0683\u0687\u068b\u0693\u0697\u069b\u06a2\u06ab\u06b3") - buf.write("\u06c2\u06ce\u06d4\u06da\u06ef\u06f4\u06fa\u0706\u0711") - buf.write("\u071b\u071e\u0723\u072c\u0732\u073c\u0741\u074a\u0761") - buf.write("\u076b\u0781\u0788\u0790\u0798\u07a3\u07ba\u07c4\u07cf") - buf.write("\u07e5\u07e9\u07ee\u07f6\u07fc\u0800\u0804\u0808\u080e") - buf.write("\u0813\u0818\u081c\u0820\u0826\u082b\u0830\u0834\u0838") - buf.write("\u083a\u083f\u0844\u0849\u084d\u0851\u0855\u085a\u0862") - buf.write("\u0868\u086c\u0870\u0874\u087a\u087f\u0884\u0888\u088c") - buf.write("\u088e\u0893\u08a2\u08b0\u08bc\u08c5\u08d4\u08e1\u08ea") - buf.write("\u08f0\u08f7\u08fc\u0903\u0908\u090f\u0914\u091b\u0920") - buf.write("\u0928\u092d\u0931\u0935\u093a\u0941\u0948\u094d\u0954") - buf.write("\u0959\u0960\u0965\u096d\u0972\u0976\u097d\u0983\u098a") - buf.write("\u0991\u0998\u09a0\u09a7\u09af\u09b3\u09ba\u09c1\u09c8") - buf.write("\u09d0\u09d7\u09df\u09e5\u09eb\u09f7\u09fd\u0a03\u0a0e") - buf.write("\u0a17\u0a1e\u0a25\u0a2a\u0a2e\u0a37\u0a42\u0a4c\u0a57") - buf.write("\u0a62\u0a6d\u0a78\u0a84\u0a86\u0a9b\u0a9d\u0ab0\u0ab2") - buf.write("\u0abe\u0ac0\u0acf\u0ad1\u0adb\u0ae9\u0aed\u0af1\u0af3") - buf.write("\u0b0a\u0b15\u0b1b") - return buf.getvalue() - + return [ + 4,1,107,2844,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, + 1,0,1,0,1,1,5,1,476,8,1,10,1,12,1,479,9,1,1,1,1,1,5,1,483,8,1,10, + 1,12,1,486,9,1,1,1,3,1,489,8,1,1,2,1,2,3,2,493,8,2,1,3,1,3,1,4,1, + 4,1,5,1,5,1,5,3,5,502,8,5,1,6,1,6,3,6,506,8,6,1,6,1,6,5,6,510,8, + 6,10,6,12,6,513,9,6,1,7,5,7,516,8,7,10,7,12,7,519,9,7,1,7,1,7,3, + 7,523,8,7,1,7,1,7,1,7,5,7,528,8,7,10,7,12,7,531,9,7,1,7,1,7,3,7, + 535,8,7,3,7,537,8,7,1,8,1,8,5,8,541,8,8,10,8,12,8,544,9,8,1,8,1, + 8,3,8,548,8,8,1,9,5,9,551,8,9,10,9,12,9,554,9,9,1,9,1,9,3,9,558, + 8,9,1,10,1,10,1,11,1,11,1,12,1,12,1,13,5,13,567,8,13,10,13,12,13, + 570,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,583,8,14,1,15,5,15,586,8,15,10,15,12,15,589,9,15,1,15,1,15, + 1,15,5,15,594,8,15,10,15,12,15,597,9,15,1,15,1,15,5,15,601,8,15, + 10,15,12,15,604,9,15,1,16,5,16,607,8,16,10,16,12,16,610,9,16,1,16, + 1,16,3,16,614,8,16,1,17,1,17,1,18,1,18,1,18,1,18,1,18,5,18,623,8, + 18,10,18,12,18,626,9,18,3,18,628,8,18,1,19,1,19,1,19,1,20,1,20,1, + 20,1,20,1,21,1,21,1,21,5,21,640,8,21,10,21,12,21,643,9,21,1,22,1, + 22,3,22,647,8,22,1,23,5,23,650,8,23,10,23,12,23,653,9,23,1,23,1, + 23,3,23,657,8,23,1,24,1,24,1,24,1,24,3,24,663,8,24,1,25,1,25,1,25, + 1,25,1,25,1,25,5,25,671,8,25,10,25,12,25,674,9,25,1,26,1,26,1,26, + 1,26,1,26,3,26,681,8,26,1,27,1,27,1,27,1,27,1,27,1,27,5,27,689,8, + 27,10,27,12,27,692,9,27,1,28,1,28,1,28,1,28,1,28,3,28,699,8,28,1, + 29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,5,30,709,8,30,10,30,12,30, + 712,9,30,1,31,3,31,715,8,31,1,31,5,31,718,8,31,10,31,12,31,721,9, + 31,1,31,5,31,724,8,31,10,31,12,31,727,9,31,1,31,1,31,1,32,5,32,732, + 8,32,10,32,12,32,735,9,32,1,32,1,32,1,32,1,32,1,33,1,33,1,34,1,34, + 1,34,1,34,3,34,747,8,34,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,37,1,37,1,37,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,1,39,1,39,1,39,3,39,776,8,39,1,40,1,40,3,40,780,8, + 40,1,41,5,41,783,8,41,10,41,12,41,786,9,41,1,41,1,41,1,41,3,41,791, + 8,41,1,41,3,41,794,8,41,1,41,3,41,797,8,41,1,41,1,41,1,42,1,42,1, + 42,1,42,1,42,1,42,1,42,1,42,3,42,809,8,42,1,43,1,43,1,43,1,43,1, + 44,1,44,1,44,5,44,818,8,44,10,44,12,44,821,9,44,1,45,1,45,1,45,1, + 46,1,46,1,46,1,47,1,47,1,47,5,47,832,8,47,10,47,12,47,835,9,47,1, + 48,1,48,5,48,839,8,48,10,48,12,48,842,9,48,1,48,1,48,1,49,1,49,1, + 49,1,49,3,49,850,8,49,1,50,1,50,1,50,1,50,1,50,3,50,857,8,50,1,51, + 5,51,860,8,51,10,51,12,51,863,9,51,1,51,1,51,1,51,1,51,1,52,1,52, + 1,52,1,52,1,52,1,52,1,52,1,52,3,52,877,8,52,1,53,1,53,1,53,5,53, + 882,8,53,10,53,12,53,885,9,53,1,54,1,54,1,54,3,54,890,8,54,1,55, + 1,55,3,55,894,8,55,1,56,1,56,3,56,898,8,56,1,57,1,57,3,57,902,8, + 57,1,58,1,58,3,58,906,8,58,1,59,1,59,1,59,3,59,911,8,59,1,60,1,60, + 3,60,915,8,60,1,60,1,60,5,60,919,8,60,10,60,12,60,922,9,60,1,61, + 1,61,3,61,926,8,61,1,61,1,61,1,61,5,61,931,8,61,10,61,12,61,934, + 9,61,1,61,1,61,3,61,938,8,61,3,61,940,8,61,1,62,1,62,5,62,944,8, + 62,10,62,12,62,947,9,62,1,62,1,62,3,62,951,8,62,1,63,1,63,3,63,955, + 8,63,1,64,1,64,1,65,1,65,1,66,1,66,1,67,1,67,1,68,1,68,1,68,1,68, + 1,68,1,68,1,68,1,68,1,68,3,68,974,8,68,1,69,5,69,977,8,69,10,69, + 12,69,980,9,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70, + 1,70,1,70,1,70,3,70,995,8,70,1,71,1,71,1,71,3,71,1000,8,71,1,71, + 1,71,5,71,1004,8,71,10,71,12,71,1007,9,71,1,71,1,71,1,71,3,71,1012, + 8,71,3,71,1014,8,71,1,72,1,72,3,72,1018,8,72,1,73,1,73,1,73,3,73, + 1023,8,73,1,73,1,73,3,73,1027,8,73,1,74,1,74,1,74,1,74,1,74,1,74, + 3,74,1035,8,74,1,75,1,75,1,75,5,75,1040,8,75,10,75,12,75,1043,9, + 75,1,75,1,75,1,75,5,75,1048,8,75,10,75,12,75,1051,9,75,3,75,1053, + 8,75,1,76,5,76,1056,8,76,10,76,12,76,1059,9,76,1,76,1,76,1,76,1, + 77,1,77,3,77,1066,8,77,1,78,5,78,1069,8,78,10,78,12,78,1072,9,78, + 1,78,1,78,5,78,1076,8,78,10,78,12,78,1079,9,78,1,78,1,78,1,78,1, + 78,3,78,1085,8,78,1,79,5,79,1088,8,79,10,79,12,79,1091,9,79,1,79, + 1,79,1,79,3,79,1096,8,79,1,79,1,79,1,80,1,80,1,80,1,81,1,81,1,81, + 5,81,1106,8,81,10,81,12,81,1109,9,81,1,82,1,82,3,82,1113,8,82,1, + 83,1,83,3,83,1117,8,83,1,84,1,84,1,85,1,85,1,85,1,86,5,86,1125,8, + 86,10,86,12,86,1128,9,86,1,86,1,86,3,86,1132,8,86,1,86,1,86,1,87, + 1,87,1,87,1,87,3,87,1140,8,87,1,88,3,88,1143,8,88,1,88,1,88,1,88, + 3,88,1148,8,88,1,88,1,88,1,89,1,89,1,90,1,90,3,90,1156,8,90,1,90, + 3,90,1159,8,90,1,90,1,90,1,91,3,91,1164,8,91,1,91,1,91,1,91,3,91, + 1169,8,91,1,91,1,91,1,91,3,91,1174,8,91,1,91,1,91,1,91,3,91,1179, + 8,91,1,91,1,91,1,91,1,91,1,91,3,91,1186,8,91,1,91,1,91,1,91,3,91, + 1191,8,91,1,91,1,91,1,91,1,91,1,91,1,91,3,91,1199,8,91,1,91,1,91, + 1,91,3,91,1204,8,91,1,91,1,91,1,91,3,91,1209,8,91,1,92,5,92,1212, + 8,92,10,92,12,92,1215,9,92,1,92,1,92,1,92,3,92,1220,8,92,1,92,1, + 92,1,93,1,93,3,93,1226,8,93,1,93,3,93,1229,8,93,1,93,3,93,1232,8, + 93,1,93,1,93,1,94,1,94,1,94,5,94,1239,8,94,10,94,12,94,1242,9,94, + 1,95,5,95,1245,8,95,10,95,12,95,1248,9,95,1,95,1,95,1,95,3,95,1253, + 8,95,1,95,3,95,1256,8,95,1,95,3,95,1259,8,95,1,96,1,96,1,97,1,97, + 5,97,1265,8,97,10,97,12,97,1268,9,97,1,98,1,98,3,98,1272,8,98,1, + 99,5,99,1275,8,99,10,99,12,99,1278,9,99,1,99,1,99,1,99,3,99,1283, + 8,99,1,99,3,99,1286,8,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,3,100,1297,8,100,1,101,1,101,1,101,1,102,1,102,5,102, + 1304,8,102,10,102,12,102,1307,9,102,1,102,1,102,1,103,1,103,1,103, + 1,103,1,103,3,103,1316,8,103,1,104,5,104,1319,8,104,10,104,12,104, + 1322,9,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,3,105, + 1332,8,105,1,106,5,106,1335,8,106,10,106,12,106,1338,9,106,1,106, + 1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,3,107,1349,8,107, + 1,108,5,108,1352,8,108,10,108,12,108,1355,9,108,1,108,1,108,1,108, + 1,108,1,108,1,109,1,109,5,109,1364,8,109,10,109,12,109,1367,9,109, + 1,109,1,109,1,110,1,110,1,110,1,110,1,110,3,110,1376,8,110,1,111, + 5,111,1379,8,111,10,111,12,111,1382,9,111,1,111,1,111,1,111,1,111, + 1,111,3,111,1389,8,111,1,111,3,111,1392,8,111,1,111,1,111,1,112, + 1,112,1,112,3,112,1399,8,112,1,113,1,113,1,113,1,114,1,114,1,114, + 3,114,1407,8,114,1,115,1,115,1,115,1,115,3,115,1413,8,115,1,115, + 1,115,1,116,1,116,1,116,5,116,1420,8,116,10,116,12,116,1423,9,116, + 1,117,1,117,1,117,1,117,1,118,1,118,1,118,3,118,1432,8,118,1,119, + 1,119,3,119,1436,8,119,1,119,3,119,1439,8,119,1,119,1,119,1,120, + 1,120,1,120,5,120,1446,8,120,10,120,12,120,1449,9,120,1,121,1,121, + 1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,3,123,1462, + 8,123,1,123,3,123,1465,8,123,1,123,1,123,1,124,1,124,1,124,5,124, + 1472,8,124,10,124,12,124,1475,9,124,1,125,1,125,3,125,1479,8,125, + 1,125,1,125,1,126,4,126,1484,8,126,11,126,12,126,1485,1,127,1,127, + 1,127,3,127,1491,8,127,1,128,1,128,1,128,1,129,5,129,1497,8,129, + 10,129,12,129,1500,9,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130, + 1,130,1,130,3,130,1511,8,130,1,131,1,131,1,131,1,131,1,131,3,131, + 1518,8,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, + 1,132,1,132,1,132,3,132,1532,8,132,1,133,1,133,1,134,1,134,1,134, + 1,134,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,137,1,137,1,137, + 1,137,1,137,1,137,1,137,3,137,1554,8,137,1,138,1,138,1,138,1,138, + 1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140, + 1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,1,141,1,141,3,141,1588,8,141,1,142,1,142, + 1,142,1,142,1,142,1,142,1,143,1,143,5,143,1598,8,143,10,143,12,143, + 1601,9,143,1,143,5,143,1604,8,143,10,143,12,143,1607,9,143,1,143, + 1,143,1,144,1,144,1,144,1,145,1,145,5,145,1616,8,145,10,145,12,145, + 1619,9,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146, + 1,146,3,146,1631,8,146,1,147,1,147,1,148,1,148,1,148,1,148,1,148, + 1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150, + 1,150,1,150,1,150,1,150,1,151,1,151,3,151,1657,8,151,1,152,1,152, + 3,152,1661,8,152,1,153,1,153,1,153,3,153,1666,8,153,1,153,1,153, + 3,153,1670,8,153,1,153,1,153,3,153,1674,8,153,1,153,1,153,1,153, + 1,154,1,154,1,154,3,154,1682,8,154,1,154,1,154,3,154,1686,8,154, + 1,154,1,154,3,154,1690,8,154,1,154,1,154,1,154,1,155,1,155,3,155, + 1697,8,155,1,156,1,156,1,157,1,157,1,157,5,157,1704,8,157,10,157, + 12,157,1707,9,157,1,158,1,158,1,158,5,158,1712,8,158,10,158,12,158, + 1715,9,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159, + 1,159,5,159,1727,8,159,10,159,12,159,1730,9,159,1,159,1,159,1,159, + 1,159,1,159,1,159,1,159,1,160,1,160,3,160,1741,8,160,1,160,1,160, + 1,161,1,161,3,161,1747,8,161,1,161,1,161,1,162,1,162,3,162,1753, + 8,162,1,162,1,162,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,3,165,1774, + 8,165,1,165,1,165,1,165,3,165,1779,8,165,1,166,1,166,5,166,1783, + 8,166,10,166,12,166,1786,9,166,1,167,1,167,1,167,1,167,1,167,1,167, + 1,168,5,168,1795,8,168,10,168,12,168,1798,9,168,1,168,1,168,1,168, + 1,169,1,169,1,169,5,169,1806,8,169,10,169,12,169,1809,9,169,1,170, + 1,170,1,170,1,171,1,171,1,171,1,171,3,171,1818,8,171,1,171,3,171, + 1821,8,171,1,172,1,172,1,172,3,172,1826,8,172,1,172,1,172,1,173, + 1,173,1,173,5,173,1833,8,173,10,173,12,173,1836,9,173,1,174,5,174, + 1839,8,174,10,174,12,174,1842,9,174,1,174,1,174,1,174,1,174,1,174, + 1,175,1,175,3,175,1851,8,175,1,175,5,175,1854,8,175,10,175,12,175, + 1857,9,175,1,176,1,176,1,176,1,176,5,176,1863,8,176,10,176,12,176, + 1866,9,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176, + 1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176, + 3,176,1888,8,176,1,177,1,177,1,178,1,178,1,178,1,178,5,178,1896, + 8,178,10,178,12,178,1899,9,178,1,178,1,178,1,178,1,178,1,178,1,178, + 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, + 1,178,1,178,3,178,1920,8,178,1,179,1,179,1,179,1,179,1,179,3,179, + 1927,8,179,1,180,1,180,1,181,1,181,1,181,1,181,3,181,1935,8,181, + 1,182,1,182,1,182,1,182,5,182,1941,8,182,10,182,12,182,1944,9,182, + 1,182,1,182,1,182,1,182,1,182,1,182,5,182,1952,8,182,10,182,12,182, + 1955,9,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182, + 1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182, + 3,182,1977,8,182,1,183,1,183,1,184,1,184,1,184,1,184,5,184,1985, + 8,184,10,184,12,184,1988,9,184,1,184,1,184,1,184,1,184,1,184,1,184, + 5,184,1996,8,184,10,184,12,184,1999,9,184,1,184,1,184,1,184,1,184, + 1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184, + 1,184,1,184,1,184,1,184,3,184,2020,8,184,1,185,1,185,3,185,2024, + 8,185,1,185,5,185,2027,8,185,10,185,12,185,2030,9,185,1,185,1,185, + 1,185,5,185,2035,8,185,10,185,12,185,2038,9,185,1,185,5,185,2041, + 8,185,10,185,12,185,2044,9,185,1,185,3,185,2047,8,185,1,185,1,185, + 3,185,2051,8,185,1,185,1,185,3,185,2055,8,185,1,185,1,185,1,185, + 1,185,3,185,2061,8,185,1,185,5,185,2064,8,185,10,185,12,185,2067, + 9,185,1,185,1,185,3,185,2071,8,185,1,185,1,185,3,185,2075,8,185, + 1,185,1,185,3,185,2079,8,185,1,185,1,185,1,185,1,185,3,185,2085, + 8,185,1,185,5,185,2088,8,185,10,185,12,185,2091,9,185,1,185,1,185, + 3,185,2095,8,185,1,185,1,185,3,185,2099,8,185,1,185,1,185,3,185, + 2103,8,185,3,185,2105,8,185,1,186,1,186,1,186,3,186,2110,8,186,1, + 186,5,186,2113,8,186,10,186,12,186,2116,9,186,1,186,1,186,3,186, + 2120,8,186,1,186,1,186,3,186,2124,8,186,1,186,1,186,3,186,2128,8, + 186,1,187,1,187,3,187,2132,8,187,1,187,5,187,2135,8,187,10,187,12, + 187,2138,9,187,1,187,1,187,1,187,5,187,2143,8,187,10,187,12,187, + 2146,9,187,1,187,5,187,2149,8,187,10,187,12,187,2152,9,187,1,187, + 3,187,2155,8,187,1,187,1,187,3,187,2159,8,187,1,187,1,187,3,187, + 2163,8,187,1,187,1,187,1,187,1,187,3,187,2169,8,187,1,187,5,187, + 2172,8,187,10,187,12,187,2175,9,187,1,187,1,187,3,187,2179,8,187, + 1,187,1,187,3,187,2183,8,187,1,187,1,187,3,187,2187,8,187,3,187, + 2189,8,187,1,188,1,188,1,188,3,188,2194,8,188,1,189,1,189,1,189, + 1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,3,189, + 2209,8,189,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,191,1,191, + 1,191,1,191,1,191,3,191,2223,8,191,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,3,192,2235,8,192,1,192,1,192,1,192, + 1,192,1,192,5,192,2242,8,192,10,192,12,192,2245,9,192,1,193,1,193, + 1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,5,193,2257,8,193, + 10,193,12,193,2260,9,193,1,194,1,194,1,194,1,194,1,194,1,194,1,194, + 1,194,1,194,1,194,3,194,2272,8,194,1,194,1,194,1,194,1,194,1,194, + 5,194,2279,8,194,10,194,12,194,2282,9,194,1,195,1,195,1,195,3,195, + 2287,8,195,1,195,1,195,1,195,1,195,1,195,3,195,2294,8,195,1,195, + 1,195,1,195,3,195,2299,8,195,1,195,1,195,1,195,1,195,1,195,3,195, + 2306,8,195,1,195,1,195,1,195,3,195,2311,8,195,1,195,1,195,1,195, + 1,195,1,195,3,195,2318,8,195,1,195,1,195,1,195,3,195,2323,8,195, + 1,195,1,195,1,195,1,195,1,195,3,195,2330,8,195,1,195,1,195,1,195, + 3,195,2335,8,195,1,195,1,195,1,195,1,195,1,195,1,195,3,195,2343, + 8,195,1,195,1,195,1,195,3,195,2348,8,195,1,195,1,195,3,195,2352, + 8,195,1,196,1,196,3,196,2356,8,196,1,196,1,196,1,196,3,196,2361, + 8,196,1,196,1,196,1,197,1,197,1,197,3,197,2368,8,197,1,197,1,197, + 1,197,1,197,1,197,3,197,2375,8,197,1,197,1,197,1,197,3,197,2380, + 8,197,1,197,1,197,1,197,1,197,1,197,3,197,2387,8,197,1,197,1,197, + 1,197,3,197,2392,8,197,1,197,1,197,1,197,1,197,1,197,3,197,2399, + 8,197,1,197,1,197,1,197,3,197,2404,8,197,1,197,1,197,1,197,1,197, + 1,197,1,197,3,197,2412,8,197,1,197,1,197,1,197,3,197,2417,8,197, + 1,197,1,197,3,197,2421,8,197,1,198,1,198,1,198,5,198,2426,8,198, + 10,198,12,198,2429,9,198,1,199,1,199,1,199,3,199,2434,8,199,1,199, + 1,199,1,199,1,199,1,199,3,199,2441,8,199,1,199,1,199,1,199,1,199, + 1,199,3,199,2448,8,199,1,199,1,199,1,199,1,199,1,199,3,199,2455, + 8,199,1,199,1,199,1,199,1,199,1,199,1,199,3,199,2463,8,199,1,199, + 1,199,1,199,1,199,1,199,3,199,2470,8,199,1,199,1,199,1,199,1,199, + 1,199,1,199,3,199,2478,8,199,1,200,1,200,3,200,2482,8,200,1,200, + 1,200,1,201,1,201,1,201,3,201,2489,8,201,1,201,1,201,1,201,1,201, + 1,201,3,201,2496,8,201,1,201,1,201,1,201,1,201,1,201,3,201,2503, + 8,201,1,201,1,201,1,201,1,201,1,201,1,201,3,201,2511,8,201,1,201, + 1,201,1,201,1,201,1,201,3,201,2518,8,201,1,201,1,201,1,201,1,201, + 1,201,1,201,3,201,2526,8,201,1,202,1,202,1,202,1,202,3,202,2532, + 8,202,1,202,1,202,1,202,1,202,3,202,2538,8,202,1,202,1,202,1,202, + 1,202,1,202,1,202,1,202,1,202,1,202,1,202,3,202,2550,8,202,1,203, + 1,203,5,203,2554,8,203,10,203,12,203,2557,9,203,1,204,5,204,2560, + 8,204,10,204,12,204,2563,9,204,1,204,1,204,1,204,1,204,1,205,1,205, + 1,206,1,206,3,206,2573,8,206,1,207,1,207,1,207,1,207,1,208,1,208, + 1,208,3,208,2582,8,208,1,208,1,208,1,208,1,208,1,208,3,208,2589, + 8,208,1,209,1,209,1,209,5,209,2594,8,209,10,209,12,209,2597,9,209, + 1,210,1,210,3,210,2601,8,210,1,211,1,211,3,211,2605,8,211,1,212, + 1,212,1,212,1,212,1,213,1,213,1,213,3,213,2614,8,213,1,214,1,214, + 1,215,1,215,1,215,1,215,1,215,1,215,1,215,3,215,2625,8,215,1,216, + 1,216,1,216,1,216,1,216,1,216,5,216,2633,8,216,10,216,12,216,2636, + 9,216,1,217,1,217,1,217,1,217,1,217,1,217,5,217,2644,8,217,10,217, + 12,217,2647,9,217,1,218,1,218,1,218,1,218,1,218,1,218,5,218,2655, + 8,218,10,218,12,218,2658,9,218,1,219,1,219,1,219,1,219,1,219,1,219, + 5,219,2666,8,219,10,219,12,219,2669,9,219,1,220,1,220,1,220,1,220, + 1,220,1,220,5,220,2677,8,220,10,220,12,220,2680,9,220,1,221,1,221, + 1,221,1,221,1,221,1,221,1,221,1,221,1,221,5,221,2691,8,221,10,221, + 12,221,2694,9,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,1,222,1,222,1,222,1,222,1,222,1,222,5,222, + 2714,8,222,10,222,12,222,2717,9,222,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 5,223,2735,8,223,10,223,12,223,2738,9,223,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,5,224,2749,8,224,10,224,12,224,2752, + 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,5,225,2766,8,225,10,225,12,225,2769,9,225,1,226,1,226, + 1,226,1,226,1,226,1,226,1,226,3,226,2778,8,226,1,227,1,227,1,227, + 1,228,1,228,1,228,1,229,1,229,1,229,1,229,1,229,1,229,3,229,2792, + 8,229,1,230,1,230,3,230,2796,8,230,1,230,1,230,5,230,2800,8,230, + 10,230,12,230,2803,9,230,1,231,1,231,1,231,1,232,1,232,1,233,1,233, + 1,233,1,234,1,234,1,235,1,235,1,235,1,235,1,235,1,235,1,235,1,235, + 5,235,2823,8,235,10,235,12,235,2826,9,235,1,235,1,235,1,235,1,235, + 1,235,1,235,5,235,2834,8,235,10,235,12,235,2837,9,235,1,235,1,235, + 1,235,3,235,2842,8,235,1,235,0,13,50,54,60,432,434,436,438,440,442, + 444,446,448,450,236,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,0,4,1,0,51,56,5,0,5,5,8,8,27,27,29,29,37,37,2,0,14,14,20, + 20,2,0,66,66,91,101,3085,0,472,1,0,0,0,2,488,1,0,0,0,4,492,1,0,0, + 0,6,494,1,0,0,0,8,496,1,0,0,0,10,501,1,0,0,0,12,505,1,0,0,0,14,536, + 1,0,0,0,16,538,1,0,0,0,18,552,1,0,0,0,20,559,1,0,0,0,22,561,1,0, + 0,0,24,563,1,0,0,0,26,568,1,0,0,0,28,582,1,0,0,0,30,587,1,0,0,0, + 32,608,1,0,0,0,34,615,1,0,0,0,36,627,1,0,0,0,38,629,1,0,0,0,40,632, + 1,0,0,0,42,636,1,0,0,0,44,646,1,0,0,0,46,651,1,0,0,0,48,662,1,0, + 0,0,50,664,1,0,0,0,52,680,1,0,0,0,54,682,1,0,0,0,56,698,1,0,0,0, + 58,700,1,0,0,0,60,702,1,0,0,0,62,714,1,0,0,0,64,733,1,0,0,0,66,740, + 1,0,0,0,68,746,1,0,0,0,70,748,1,0,0,0,72,752,1,0,0,0,74,758,1,0, + 0,0,76,765,1,0,0,0,78,775,1,0,0,0,80,779,1,0,0,0,82,784,1,0,0,0, + 84,808,1,0,0,0,86,810,1,0,0,0,88,814,1,0,0,0,90,822,1,0,0,0,92,825, + 1,0,0,0,94,828,1,0,0,0,96,836,1,0,0,0,98,849,1,0,0,0,100,856,1,0, + 0,0,102,861,1,0,0,0,104,876,1,0,0,0,106,878,1,0,0,0,108,886,1,0, + 0,0,110,891,1,0,0,0,112,897,1,0,0,0,114,901,1,0,0,0,116,905,1,0, + 0,0,118,910,1,0,0,0,120,914,1,0,0,0,122,939,1,0,0,0,124,941,1,0, + 0,0,126,952,1,0,0,0,128,956,1,0,0,0,130,958,1,0,0,0,132,960,1,0, + 0,0,134,962,1,0,0,0,136,973,1,0,0,0,138,978,1,0,0,0,140,994,1,0, + 0,0,142,1013,1,0,0,0,144,1017,1,0,0,0,146,1019,1,0,0,0,148,1034, + 1,0,0,0,150,1052,1,0,0,0,152,1057,1,0,0,0,154,1065,1,0,0,0,156,1084, + 1,0,0,0,158,1089,1,0,0,0,160,1099,1,0,0,0,162,1102,1,0,0,0,164,1112, + 1,0,0,0,166,1116,1,0,0,0,168,1118,1,0,0,0,170,1120,1,0,0,0,172,1126, + 1,0,0,0,174,1139,1,0,0,0,176,1142,1,0,0,0,178,1151,1,0,0,0,180,1153, + 1,0,0,0,182,1208,1,0,0,0,184,1213,1,0,0,0,186,1223,1,0,0,0,188,1235, + 1,0,0,0,190,1246,1,0,0,0,192,1260,1,0,0,0,194,1262,1,0,0,0,196,1271, + 1,0,0,0,198,1276,1,0,0,0,200,1296,1,0,0,0,202,1298,1,0,0,0,204,1301, + 1,0,0,0,206,1315,1,0,0,0,208,1320,1,0,0,0,210,1331,1,0,0,0,212,1336, + 1,0,0,0,214,1348,1,0,0,0,216,1353,1,0,0,0,218,1361,1,0,0,0,220,1375, + 1,0,0,0,222,1380,1,0,0,0,224,1398,1,0,0,0,226,1400,1,0,0,0,228,1406, + 1,0,0,0,230,1408,1,0,0,0,232,1416,1,0,0,0,234,1424,1,0,0,0,236,1431, + 1,0,0,0,238,1433,1,0,0,0,240,1442,1,0,0,0,242,1450,1,0,0,0,244,1453, + 1,0,0,0,246,1459,1,0,0,0,248,1468,1,0,0,0,250,1476,1,0,0,0,252,1483, + 1,0,0,0,254,1490,1,0,0,0,256,1492,1,0,0,0,258,1498,1,0,0,0,260,1510, + 1,0,0,0,262,1517,1,0,0,0,264,1531,1,0,0,0,266,1533,1,0,0,0,268,1535, + 1,0,0,0,270,1539,1,0,0,0,272,1543,1,0,0,0,274,1553,1,0,0,0,276,1555, + 1,0,0,0,278,1561,1,0,0,0,280,1569,1,0,0,0,282,1587,1,0,0,0,284,1589, + 1,0,0,0,286,1595,1,0,0,0,288,1610,1,0,0,0,290,1613,1,0,0,0,292,1630, + 1,0,0,0,294,1632,1,0,0,0,296,1634,1,0,0,0,298,1640,1,0,0,0,300,1646, + 1,0,0,0,302,1656,1,0,0,0,304,1660,1,0,0,0,306,1662,1,0,0,0,308,1678, + 1,0,0,0,310,1696,1,0,0,0,312,1698,1,0,0,0,314,1700,1,0,0,0,316,1708, + 1,0,0,0,318,1723,1,0,0,0,320,1738,1,0,0,0,322,1744,1,0,0,0,324,1750, + 1,0,0,0,326,1756,1,0,0,0,328,1760,1,0,0,0,330,1778,1,0,0,0,332,1780, + 1,0,0,0,334,1787,1,0,0,0,336,1796,1,0,0,0,338,1802,1,0,0,0,340,1810, + 1,0,0,0,342,1813,1,0,0,0,344,1822,1,0,0,0,346,1829,1,0,0,0,348,1840, + 1,0,0,0,350,1850,1,0,0,0,352,1887,1,0,0,0,354,1889,1,0,0,0,356,1919, + 1,0,0,0,358,1926,1,0,0,0,360,1928,1,0,0,0,362,1934,1,0,0,0,364,1976, + 1,0,0,0,366,1978,1,0,0,0,368,2019,1,0,0,0,370,2104,1,0,0,0,372,2106, + 1,0,0,0,374,2188,1,0,0,0,376,2193,1,0,0,0,378,2208,1,0,0,0,380,2210, + 1,0,0,0,382,2222,1,0,0,0,384,2234,1,0,0,0,386,2246,1,0,0,0,388,2271, + 1,0,0,0,390,2351,1,0,0,0,392,2353,1,0,0,0,394,2420,1,0,0,0,396,2422, + 1,0,0,0,398,2477,1,0,0,0,400,2479,1,0,0,0,402,2525,1,0,0,0,404,2549, + 1,0,0,0,406,2551,1,0,0,0,408,2561,1,0,0,0,410,2568,1,0,0,0,412,2572, + 1,0,0,0,414,2574,1,0,0,0,416,2588,1,0,0,0,418,2590,1,0,0,0,420,2600, + 1,0,0,0,422,2604,1,0,0,0,424,2606,1,0,0,0,426,2613,1,0,0,0,428,2615, + 1,0,0,0,430,2624,1,0,0,0,432,2626,1,0,0,0,434,2637,1,0,0,0,436,2648, + 1,0,0,0,438,2659,1,0,0,0,440,2670,1,0,0,0,442,2681,1,0,0,0,444,2695, + 1,0,0,0,446,2718,1,0,0,0,448,2739,1,0,0,0,450,2753,1,0,0,0,452,2777, + 1,0,0,0,454,2779,1,0,0,0,456,2782,1,0,0,0,458,2791,1,0,0,0,460,2795, + 1,0,0,0,462,2804,1,0,0,0,464,2807,1,0,0,0,466,2809,1,0,0,0,468,2812, + 1,0,0,0,470,2841,1,0,0,0,472,473,7,0,0,0,473,1,1,0,0,0,474,476,3, + 228,114,0,475,474,1,0,0,0,476,479,1,0,0,0,477,475,1,0,0,0,477,478, + 1,0,0,0,478,480,1,0,0,0,479,477,1,0,0,0,480,489,3,4,2,0,481,483, + 3,228,114,0,482,481,1,0,0,0,483,486,1,0,0,0,484,482,1,0,0,0,484, + 485,1,0,0,0,485,487,1,0,0,0,486,484,1,0,0,0,487,489,5,3,0,0,488, + 477,1,0,0,0,488,484,1,0,0,0,489,3,1,0,0,0,490,493,3,6,3,0,491,493, + 3,8,4,0,492,490,1,0,0,0,492,491,1,0,0,0,493,5,1,0,0,0,494,495,7, + 1,0,0,495,7,1,0,0,0,496,497,7,2,0,0,497,9,1,0,0,0,498,502,3,12,6, + 0,499,502,3,26,13,0,500,502,3,28,14,0,501,498,1,0,0,0,501,499,1, + 0,0,0,501,500,1,0,0,0,502,11,1,0,0,0,503,506,3,18,9,0,504,506,3, + 24,12,0,505,503,1,0,0,0,505,504,1,0,0,0,506,511,1,0,0,0,507,510, + 3,16,8,0,508,510,3,22,11,0,509,507,1,0,0,0,509,508,1,0,0,0,510,513, + 1,0,0,0,511,509,1,0,0,0,511,512,1,0,0,0,512,13,1,0,0,0,513,511,1, + 0,0,0,514,516,3,228,114,0,515,514,1,0,0,0,516,519,1,0,0,0,517,515, + 1,0,0,0,517,518,1,0,0,0,518,520,1,0,0,0,519,517,1,0,0,0,520,522, + 5,102,0,0,521,523,3,40,20,0,522,521,1,0,0,0,522,523,1,0,0,0,523, + 537,1,0,0,0,524,525,3,12,6,0,525,529,5,65,0,0,526,528,3,228,114, + 0,527,526,1,0,0,0,528,531,1,0,0,0,529,527,1,0,0,0,529,530,1,0,0, + 0,530,532,1,0,0,0,531,529,1,0,0,0,532,534,5,102,0,0,533,535,3,40, + 20,0,534,533,1,0,0,0,534,535,1,0,0,0,535,537,1,0,0,0,536,517,1,0, + 0,0,536,524,1,0,0,0,537,15,1,0,0,0,538,542,5,65,0,0,539,541,3,228, + 114,0,540,539,1,0,0,0,541,544,1,0,0,0,542,540,1,0,0,0,542,543,1, + 0,0,0,543,545,1,0,0,0,544,542,1,0,0,0,545,547,5,102,0,0,546,548, + 3,40,20,0,547,546,1,0,0,0,547,548,1,0,0,0,548,17,1,0,0,0,549,551, + 3,228,114,0,550,549,1,0,0,0,551,554,1,0,0,0,552,550,1,0,0,0,552, + 553,1,0,0,0,553,555,1,0,0,0,554,552,1,0,0,0,555,557,5,102,0,0,556, + 558,3,40,20,0,557,556,1,0,0,0,557,558,1,0,0,0,558,19,1,0,0,0,559, + 560,3,14,7,0,560,21,1,0,0,0,561,562,3,16,8,0,562,23,1,0,0,0,563, + 564,3,18,9,0,564,25,1,0,0,0,565,567,3,228,114,0,566,565,1,0,0,0, + 567,570,1,0,0,0,568,566,1,0,0,0,568,569,1,0,0,0,569,571,1,0,0,0, + 570,568,1,0,0,0,571,572,5,102,0,0,572,27,1,0,0,0,573,574,3,2,1,0, + 574,575,3,30,15,0,575,583,1,0,0,0,576,577,3,12,6,0,577,578,3,30, + 15,0,578,583,1,0,0,0,579,580,3,26,13,0,580,581,3,30,15,0,581,583, + 1,0,0,0,582,573,1,0,0,0,582,576,1,0,0,0,582,579,1,0,0,0,583,29,1, + 0,0,0,584,586,3,228,114,0,585,584,1,0,0,0,586,589,1,0,0,0,587,585, + 1,0,0,0,587,588,1,0,0,0,588,590,1,0,0,0,589,587,1,0,0,0,590,591, + 5,61,0,0,591,602,5,62,0,0,592,594,3,228,114,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,5,61,0,0,599,601,5,62,0,0,600,595,1,0,0,0,601, + 604,1,0,0,0,602,600,1,0,0,0,602,603,1,0,0,0,603,31,1,0,0,0,604,602, + 1,0,0,0,605,607,3,34,17,0,606,605,1,0,0,0,607,610,1,0,0,0,608,606, + 1,0,0,0,608,609,1,0,0,0,609,611,1,0,0,0,610,608,1,0,0,0,611,613, + 5,102,0,0,612,614,3,36,18,0,613,612,1,0,0,0,613,614,1,0,0,0,614, + 33,1,0,0,0,615,616,3,228,114,0,616,35,1,0,0,0,617,618,5,17,0,0,618, + 628,3,26,13,0,619,620,5,17,0,0,620,624,3,12,6,0,621,623,3,38,19, + 0,622,621,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,617,1,0,0,0,627,619,1,0,0, + 0,628,37,1,0,0,0,629,630,5,85,0,0,630,631,3,20,10,0,631,39,1,0,0, + 0,632,633,5,68,0,0,633,634,3,42,21,0,634,635,5,67,0,0,635,41,1,0, + 0,0,636,641,3,44,22,0,637,638,5,64,0,0,638,640,3,44,22,0,639,637, + 1,0,0,0,640,643,1,0,0,0,641,639,1,0,0,0,641,642,1,0,0,0,642,43,1, + 0,0,0,643,641,1,0,0,0,644,647,3,10,5,0,645,647,3,46,23,0,646,644, + 1,0,0,0,646,645,1,0,0,0,647,45,1,0,0,0,648,650,3,228,114,0,649,648, + 1,0,0,0,650,653,1,0,0,0,651,649,1,0,0,0,651,652,1,0,0,0,652,654, + 1,0,0,0,653,651,1,0,0,0,654,656,5,71,0,0,655,657,3,48,24,0,656,655, + 1,0,0,0,656,657,1,0,0,0,657,47,1,0,0,0,658,659,5,17,0,0,659,663, + 3,10,5,0,660,661,5,40,0,0,661,663,3,10,5,0,662,658,1,0,0,0,662,660, + 1,0,0,0,663,49,1,0,0,0,664,665,6,25,-1,0,665,666,5,102,0,0,666,672, + 1,0,0,0,667,668,10,1,0,0,668,669,5,65,0,0,669,671,5,102,0,0,670, + 667,1,0,0,0,671,674,1,0,0,0,672,670,1,0,0,0,672,673,1,0,0,0,673, + 51,1,0,0,0,674,672,1,0,0,0,675,681,5,102,0,0,676,677,3,54,27,0,677, + 678,5,65,0,0,678,679,5,102,0,0,679,681,1,0,0,0,680,675,1,0,0,0,680, + 676,1,0,0,0,681,53,1,0,0,0,682,683,6,27,-1,0,683,684,5,102,0,0,684, + 690,1,0,0,0,685,686,10,1,0,0,686,687,5,65,0,0,687,689,5,102,0,0, + 688,685,1,0,0,0,689,692,1,0,0,0,690,688,1,0,0,0,690,691,1,0,0,0, + 691,55,1,0,0,0,692,690,1,0,0,0,693,699,5,102,0,0,694,695,3,60,30, + 0,695,696,5,65,0,0,696,697,5,102,0,0,697,699,1,0,0,0,698,693,1,0, + 0,0,698,694,1,0,0,0,699,57,1,0,0,0,700,701,5,102,0,0,701,59,1,0, + 0,0,702,703,6,30,-1,0,703,704,5,102,0,0,704,710,1,0,0,0,705,706, + 10,1,0,0,706,707,5,65,0,0,707,709,5,102,0,0,708,705,1,0,0,0,709, + 712,1,0,0,0,710,708,1,0,0,0,710,711,1,0,0,0,711,61,1,0,0,0,712,710, + 1,0,0,0,713,715,3,64,32,0,714,713,1,0,0,0,714,715,1,0,0,0,715,719, + 1,0,0,0,716,718,3,68,34,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,725,1,0,0,0,721,719,1,0,0,0,722,724, + 3,78,39,0,723,722,1,0,0,0,724,727,1,0,0,0,725,723,1,0,0,0,725,726, + 1,0,0,0,726,728,1,0,0,0,727,725,1,0,0,0,728,729,5,0,0,1,729,63,1, + 0,0,0,730,732,3,66,33,0,731,730,1,0,0,0,732,735,1,0,0,0,733,731, + 1,0,0,0,733,734,1,0,0,0,734,736,1,0,0,0,735,733,1,0,0,0,736,737, + 5,32,0,0,737,738,3,50,25,0,738,739,5,63,0,0,739,65,1,0,0,0,740,741, + 3,228,114,0,741,67,1,0,0,0,742,747,3,70,35,0,743,747,3,72,36,0,744, + 747,3,74,37,0,745,747,3,76,38,0,746,742,1,0,0,0,746,743,1,0,0,0, + 746,744,1,0,0,0,746,745,1,0,0,0,747,69,1,0,0,0,748,749,5,25,0,0, + 749,750,3,52,26,0,750,751,5,63,0,0,751,71,1,0,0,0,752,753,5,25,0, + 0,753,754,3,54,27,0,754,755,5,65,0,0,755,756,5,83,0,0,756,757,5, + 63,0,0,757,73,1,0,0,0,758,759,5,25,0,0,759,760,5,38,0,0,760,761, + 3,52,26,0,761,762,5,65,0,0,762,763,5,102,0,0,763,764,5,63,0,0,764, + 75,1,0,0,0,765,766,5,25,0,0,766,767,5,38,0,0,767,768,3,52,26,0,768, + 769,5,65,0,0,769,770,5,83,0,0,770,771,5,63,0,0,771,77,1,0,0,0,772, + 776,3,80,40,0,773,776,3,196,98,0,774,776,5,63,0,0,775,772,1,0,0, + 0,775,773,1,0,0,0,775,774,1,0,0,0,776,79,1,0,0,0,777,780,3,82,41, + 0,778,780,3,184,92,0,779,777,1,0,0,0,779,778,1,0,0,0,780,81,1,0, + 0,0,781,783,3,84,42,0,782,781,1,0,0,0,783,786,1,0,0,0,784,782,1, + 0,0,0,784,785,1,0,0,0,785,787,1,0,0,0,786,784,1,0,0,0,787,788,5, + 9,0,0,788,790,5,102,0,0,789,791,3,86,43,0,790,789,1,0,0,0,790,791, + 1,0,0,0,791,793,1,0,0,0,792,794,3,90,45,0,793,792,1,0,0,0,793,794, + 1,0,0,0,794,796,1,0,0,0,795,797,3,92,46,0,796,795,1,0,0,0,796,797, + 1,0,0,0,797,798,1,0,0,0,798,799,3,96,48,0,799,83,1,0,0,0,800,809, + 3,228,114,0,801,809,5,35,0,0,802,809,5,34,0,0,803,809,5,33,0,0,804, + 809,5,1,0,0,805,809,5,38,0,0,806,809,5,18,0,0,807,809,5,39,0,0,808, + 800,1,0,0,0,808,801,1,0,0,0,808,802,1,0,0,0,808,803,1,0,0,0,808, + 804,1,0,0,0,808,805,1,0,0,0,808,806,1,0,0,0,808,807,1,0,0,0,809, + 85,1,0,0,0,810,811,5,68,0,0,811,812,3,88,44,0,812,813,5,67,0,0,813, + 87,1,0,0,0,814,819,3,32,16,0,815,816,5,64,0,0,816,818,3,32,16,0, + 817,815,1,0,0,0,818,821,1,0,0,0,819,817,1,0,0,0,819,820,1,0,0,0, + 820,89,1,0,0,0,821,819,1,0,0,0,822,823,5,17,0,0,823,824,3,14,7,0, + 824,91,1,0,0,0,825,826,5,24,0,0,826,827,3,94,47,0,827,93,1,0,0,0, + 828,833,3,20,10,0,829,830,5,64,0,0,830,832,3,20,10,0,831,829,1,0, + 0,0,832,835,1,0,0,0,833,831,1,0,0,0,833,834,1,0,0,0,834,95,1,0,0, + 0,835,833,1,0,0,0,836,840,5,59,0,0,837,839,3,98,49,0,838,837,1,0, + 0,0,839,842,1,0,0,0,840,838,1,0,0,0,840,841,1,0,0,0,841,843,1,0, + 0,0,842,840,1,0,0,0,843,844,5,60,0,0,844,97,1,0,0,0,845,850,3,100, + 50,0,846,850,3,168,84,0,847,850,3,170,85,0,848,850,3,172,86,0,849, + 845,1,0,0,0,849,846,1,0,0,0,849,847,1,0,0,0,849,848,1,0,0,0,850, + 99,1,0,0,0,851,857,3,102,51,0,852,857,3,138,69,0,853,857,3,80,40, + 0,854,857,3,196,98,0,855,857,5,63,0,0,856,851,1,0,0,0,856,852,1, + 0,0,0,856,853,1,0,0,0,856,854,1,0,0,0,856,855,1,0,0,0,857,101,1, + 0,0,0,858,860,3,104,52,0,859,858,1,0,0,0,860,863,1,0,0,0,861,859, + 1,0,0,0,861,862,1,0,0,0,862,864,1,0,0,0,863,861,1,0,0,0,864,865, + 3,114,57,0,865,866,3,106,53,0,866,867,5,63,0,0,867,103,1,0,0,0,868, + 877,3,228,114,0,869,877,5,35,0,0,870,877,5,34,0,0,871,877,5,33,0, + 0,872,877,5,38,0,0,873,877,5,18,0,0,874,877,5,46,0,0,875,877,5,49, + 0,0,876,868,1,0,0,0,876,869,1,0,0,0,876,870,1,0,0,0,876,871,1,0, + 0,0,876,872,1,0,0,0,876,873,1,0,0,0,876,874,1,0,0,0,876,875,1,0, + 0,0,877,105,1,0,0,0,878,883,3,108,54,0,879,880,5,64,0,0,880,882, + 3,108,54,0,881,879,1,0,0,0,882,885,1,0,0,0,883,881,1,0,0,0,883,884, + 1,0,0,0,884,107,1,0,0,0,885,883,1,0,0,0,886,889,3,110,55,0,887,888, + 5,66,0,0,888,890,3,112,56,0,889,887,1,0,0,0,889,890,1,0,0,0,890, + 109,1,0,0,0,891,893,5,102,0,0,892,894,3,30,15,0,893,892,1,0,0,0, + 893,894,1,0,0,0,894,111,1,0,0,0,895,898,3,412,206,0,896,898,3,246, + 123,0,897,895,1,0,0,0,897,896,1,0,0,0,898,113,1,0,0,0,899,902,3, + 116,58,0,900,902,3,118,59,0,901,899,1,0,0,0,901,900,1,0,0,0,902, + 115,1,0,0,0,903,906,3,4,2,0,904,906,5,3,0,0,905,903,1,0,0,0,905, + 904,1,0,0,0,906,117,1,0,0,0,907,911,3,120,60,0,908,911,3,134,67, + 0,909,911,3,136,68,0,910,907,1,0,0,0,910,908,1,0,0,0,910,909,1,0, + 0,0,911,119,1,0,0,0,912,915,3,126,63,0,913,915,3,132,66,0,914,912, + 1,0,0,0,914,913,1,0,0,0,915,920,1,0,0,0,916,919,3,124,62,0,917,919, + 3,130,65,0,918,916,1,0,0,0,918,917,1,0,0,0,919,922,1,0,0,0,920,918, + 1,0,0,0,920,921,1,0,0,0,921,121,1,0,0,0,922,920,1,0,0,0,923,925, + 5,102,0,0,924,926,3,40,20,0,925,924,1,0,0,0,925,926,1,0,0,0,926, + 940,1,0,0,0,927,928,3,120,60,0,928,932,5,65,0,0,929,931,3,228,114, + 0,930,929,1,0,0,0,931,934,1,0,0,0,932,930,1,0,0,0,932,933,1,0,0, + 0,933,935,1,0,0,0,934,932,1,0,0,0,935,937,5,102,0,0,936,938,3,40, + 20,0,937,936,1,0,0,0,937,938,1,0,0,0,938,940,1,0,0,0,939,923,1,0, + 0,0,939,927,1,0,0,0,940,123,1,0,0,0,941,945,5,65,0,0,942,944,3,228, + 114,0,943,942,1,0,0,0,944,947,1,0,0,0,945,943,1,0,0,0,945,946,1, + 0,0,0,946,948,1,0,0,0,947,945,1,0,0,0,948,950,5,102,0,0,949,951, + 3,40,20,0,950,949,1,0,0,0,950,951,1,0,0,0,951,125,1,0,0,0,952,954, + 5,102,0,0,953,955,3,40,20,0,954,953,1,0,0,0,954,955,1,0,0,0,955, + 127,1,0,0,0,956,957,3,122,61,0,957,129,1,0,0,0,958,959,3,124,62, + 0,959,131,1,0,0,0,960,961,3,126,63,0,961,133,1,0,0,0,962,963,5,102, + 0,0,963,135,1,0,0,0,964,965,3,116,58,0,965,966,3,30,15,0,966,974, + 1,0,0,0,967,968,3,120,60,0,968,969,3,30,15,0,969,974,1,0,0,0,970, + 971,3,134,67,0,971,972,3,30,15,0,972,974,1,0,0,0,973,964,1,0,0,0, + 973,967,1,0,0,0,973,970,1,0,0,0,974,137,1,0,0,0,975,977,3,140,70, + 0,976,975,1,0,0,0,977,980,1,0,0,0,978,976,1,0,0,0,978,979,1,0,0, + 0,979,981,1,0,0,0,980,978,1,0,0,0,981,982,3,142,71,0,982,983,3,166, + 83,0,983,139,1,0,0,0,984,995,3,228,114,0,985,995,5,35,0,0,986,995, + 5,34,0,0,987,995,5,33,0,0,988,995,5,1,0,0,989,995,5,38,0,0,990,995, + 5,18,0,0,991,995,5,42,0,0,992,995,5,30,0,0,993,995,5,39,0,0,994, + 984,1,0,0,0,994,985,1,0,0,0,994,986,1,0,0,0,994,987,1,0,0,0,994, + 988,1,0,0,0,994,989,1,0,0,0,994,990,1,0,0,0,994,991,1,0,0,0,994, + 992,1,0,0,0,994,993,1,0,0,0,995,141,1,0,0,0,996,997,3,144,72,0,997, + 999,3,146,73,0,998,1000,3,160,80,0,999,998,1,0,0,0,999,1000,1,0, + 0,0,1000,1014,1,0,0,0,1001,1005,3,86,43,0,1002,1004,3,228,114,0, + 1003,1002,1,0,0,0,1004,1007,1,0,0,0,1005,1003,1,0,0,0,1005,1006, + 1,0,0,0,1006,1008,1,0,0,0,1007,1005,1,0,0,0,1008,1009,3,144,72,0, + 1009,1011,3,146,73,0,1010,1012,3,160,80,0,1011,1010,1,0,0,0,1011, + 1012,1,0,0,0,1012,1014,1,0,0,0,1013,996,1,0,0,0,1013,1001,1,0,0, + 0,1014,143,1,0,0,0,1015,1018,3,114,57,0,1016,1018,5,48,0,0,1017, + 1015,1,0,0,0,1017,1016,1,0,0,0,1018,145,1,0,0,0,1019,1020,5,102, + 0,0,1020,1022,5,57,0,0,1021,1023,3,148,74,0,1022,1021,1,0,0,0,1022, + 1023,1,0,0,0,1023,1024,1,0,0,0,1024,1026,5,58,0,0,1025,1027,3,30, + 15,0,1026,1025,1,0,0,0,1026,1027,1,0,0,0,1027,147,1,0,0,0,1028,1035, + 3,158,79,0,1029,1030,3,150,75,0,1030,1031,5,64,0,0,1031,1032,3,156, + 78,0,1032,1035,1,0,0,0,1033,1035,3,156,78,0,1034,1028,1,0,0,0,1034, + 1029,1,0,0,0,1034,1033,1,0,0,0,1035,149,1,0,0,0,1036,1041,3,152, + 76,0,1037,1038,5,64,0,0,1038,1040,3,152,76,0,1039,1037,1,0,0,0,1040, + 1043,1,0,0,0,1041,1039,1,0,0,0,1041,1042,1,0,0,0,1042,1053,1,0,0, + 0,1043,1041,1,0,0,0,1044,1049,3,158,79,0,1045,1046,5,64,0,0,1046, + 1048,3,152,76,0,1047,1045,1,0,0,0,1048,1051,1,0,0,0,1049,1047,1, + 0,0,0,1049,1050,1,0,0,0,1050,1053,1,0,0,0,1051,1049,1,0,0,0,1052, + 1036,1,0,0,0,1052,1044,1,0,0,0,1053,151,1,0,0,0,1054,1056,3,154, + 77,0,1055,1054,1,0,0,0,1056,1059,1,0,0,0,1057,1055,1,0,0,0,1057, + 1058,1,0,0,0,1058,1060,1,0,0,0,1059,1057,1,0,0,0,1060,1061,3,114, + 57,0,1061,1062,3,110,55,0,1062,153,1,0,0,0,1063,1066,3,228,114,0, + 1064,1066,5,18,0,0,1065,1063,1,0,0,0,1065,1064,1,0,0,0,1066,155, + 1,0,0,0,1067,1069,3,154,77,0,1068,1067,1,0,0,0,1069,1072,1,0,0,0, + 1070,1068,1,0,0,0,1070,1071,1,0,0,0,1071,1073,1,0,0,0,1072,1070, + 1,0,0,0,1073,1077,3,114,57,0,1074,1076,3,228,114,0,1075,1074,1,0, + 0,0,1076,1079,1,0,0,0,1077,1075,1,0,0,0,1077,1078,1,0,0,0,1078,1080, + 1,0,0,0,1079,1077,1,0,0,0,1080,1081,5,104,0,0,1081,1082,3,110,55, + 0,1082,1085,1,0,0,0,1083,1085,3,152,76,0,1084,1070,1,0,0,0,1084, + 1083,1,0,0,0,1085,157,1,0,0,0,1086,1088,3,228,114,0,1087,1086,1, + 0,0,0,1088,1091,1,0,0,0,1089,1087,1,0,0,0,1089,1090,1,0,0,0,1090, + 1092,1,0,0,0,1091,1089,1,0,0,0,1092,1095,3,114,57,0,1093,1094,5, + 102,0,0,1094,1096,5,65,0,0,1095,1093,1,0,0,0,1095,1096,1,0,0,0,1096, + 1097,1,0,0,0,1097,1098,5,43,0,0,1098,159,1,0,0,0,1099,1100,5,45, + 0,0,1100,1101,3,162,81,0,1101,161,1,0,0,0,1102,1107,3,164,82,0,1103, + 1104,5,64,0,0,1104,1106,3,164,82,0,1105,1103,1,0,0,0,1106,1109,1, + 0,0,0,1107,1105,1,0,0,0,1107,1108,1,0,0,0,1108,163,1,0,0,0,1109, + 1107,1,0,0,0,1110,1113,3,14,7,0,1111,1113,3,26,13,0,1112,1110,1, + 0,0,0,1112,1111,1,0,0,0,1113,165,1,0,0,0,1114,1117,3,250,125,0,1115, + 1117,5,63,0,0,1116,1114,1,0,0,0,1116,1115,1,0,0,0,1117,167,1,0,0, + 0,1118,1119,3,250,125,0,1119,169,1,0,0,0,1120,1121,5,38,0,0,1121, + 1122,3,250,125,0,1122,171,1,0,0,0,1123,1125,3,174,87,0,1124,1123, + 1,0,0,0,1125,1128,1,0,0,0,1126,1124,1,0,0,0,1126,1127,1,0,0,0,1127, + 1129,1,0,0,0,1128,1126,1,0,0,0,1129,1131,3,176,88,0,1130,1132,3, + 160,80,0,1131,1130,1,0,0,0,1131,1132,1,0,0,0,1132,1133,1,0,0,0,1133, + 1134,3,180,90,0,1134,173,1,0,0,0,1135,1140,3,228,114,0,1136,1140, + 5,35,0,0,1137,1140,5,34,0,0,1138,1140,5,33,0,0,1139,1135,1,0,0,0, + 1139,1136,1,0,0,0,1139,1137,1,0,0,0,1139,1138,1,0,0,0,1140,175,1, + 0,0,0,1141,1143,3,86,43,0,1142,1141,1,0,0,0,1142,1143,1,0,0,0,1143, + 1144,1,0,0,0,1144,1145,3,178,89,0,1145,1147,5,57,0,0,1146,1148,3, + 148,74,0,1147,1146,1,0,0,0,1147,1148,1,0,0,0,1148,1149,1,0,0,0,1149, + 1150,5,58,0,0,1150,177,1,0,0,0,1151,1152,5,102,0,0,1152,179,1,0, + 0,0,1153,1155,5,59,0,0,1154,1156,3,182,91,0,1155,1154,1,0,0,0,1155, + 1156,1,0,0,0,1156,1158,1,0,0,0,1157,1159,3,252,126,0,1158,1157,1, + 0,0,0,1158,1159,1,0,0,0,1159,1160,1,0,0,0,1160,1161,5,60,0,0,1161, + 181,1,0,0,0,1162,1164,3,40,20,0,1163,1162,1,0,0,0,1163,1164,1,0, + 0,0,1164,1165,1,0,0,0,1165,1166,5,43,0,0,1166,1168,5,57,0,0,1167, + 1169,3,396,198,0,1168,1167,1,0,0,0,1168,1169,1,0,0,0,1169,1170,1, + 0,0,0,1170,1171,5,58,0,0,1171,1209,5,63,0,0,1172,1174,3,40,20,0, + 1173,1172,1,0,0,0,1173,1174,1,0,0,0,1174,1175,1,0,0,0,1175,1176, + 5,40,0,0,1176,1178,5,57,0,0,1177,1179,3,396,198,0,1178,1177,1,0, + 0,0,1178,1179,1,0,0,0,1179,1180,1,0,0,0,1180,1181,5,58,0,0,1181, + 1209,5,63,0,0,1182,1183,3,56,28,0,1183,1185,5,65,0,0,1184,1186,3, + 40,20,0,1185,1184,1,0,0,0,1185,1186,1,0,0,0,1186,1187,1,0,0,0,1187, + 1188,5,40,0,0,1188,1190,5,57,0,0,1189,1191,3,396,198,0,1190,1189, + 1,0,0,0,1190,1191,1,0,0,0,1191,1192,1,0,0,0,1192,1193,5,58,0,0,1193, + 1194,5,63,0,0,1194,1209,1,0,0,0,1195,1196,3,350,175,0,1196,1198, + 5,65,0,0,1197,1199,3,40,20,0,1198,1197,1,0,0,0,1198,1199,1,0,0,0, + 1199,1200,1,0,0,0,1200,1201,5,40,0,0,1201,1203,5,57,0,0,1202,1204, + 3,396,198,0,1203,1202,1,0,0,0,1203,1204,1,0,0,0,1204,1205,1,0,0, + 0,1205,1206,5,58,0,0,1206,1207,5,63,0,0,1207,1209,1,0,0,0,1208,1163, + 1,0,0,0,1208,1173,1,0,0,0,1208,1182,1,0,0,0,1208,1195,1,0,0,0,1209, + 183,1,0,0,0,1210,1212,3,84,42,0,1211,1210,1,0,0,0,1212,1215,1,0, + 0,0,1213,1211,1,0,0,0,1213,1214,1,0,0,0,1214,1216,1,0,0,0,1215,1213, + 1,0,0,0,1216,1217,5,16,0,0,1217,1219,5,102,0,0,1218,1220,3,92,46, + 0,1219,1218,1,0,0,0,1219,1220,1,0,0,0,1220,1221,1,0,0,0,1221,1222, + 3,186,93,0,1222,185,1,0,0,0,1223,1225,5,59,0,0,1224,1226,3,188,94, + 0,1225,1224,1,0,0,0,1225,1226,1,0,0,0,1226,1228,1,0,0,0,1227,1229, + 5,64,0,0,1228,1227,1,0,0,0,1228,1229,1,0,0,0,1229,1231,1,0,0,0,1230, + 1232,3,194,97,0,1231,1230,1,0,0,0,1231,1232,1,0,0,0,1232,1233,1, + 0,0,0,1233,1234,5,60,0,0,1234,187,1,0,0,0,1235,1240,3,190,95,0,1236, + 1237,5,64,0,0,1237,1239,3,190,95,0,1238,1236,1,0,0,0,1239,1242,1, + 0,0,0,1240,1238,1,0,0,0,1240,1241,1,0,0,0,1241,189,1,0,0,0,1242, + 1240,1,0,0,0,1243,1245,3,192,96,0,1244,1243,1,0,0,0,1245,1248,1, + 0,0,0,1246,1244,1,0,0,0,1246,1247,1,0,0,0,1247,1249,1,0,0,0,1248, + 1246,1,0,0,0,1249,1255,5,102,0,0,1250,1252,5,57,0,0,1251,1253,3, + 396,198,0,1252,1251,1,0,0,0,1252,1253,1,0,0,0,1253,1254,1,0,0,0, + 1254,1256,5,58,0,0,1255,1250,1,0,0,0,1255,1256,1,0,0,0,1256,1258, + 1,0,0,0,1257,1259,3,96,48,0,1258,1257,1,0,0,0,1258,1259,1,0,0,0, + 1259,191,1,0,0,0,1260,1261,3,228,114,0,1261,193,1,0,0,0,1262,1266, + 5,63,0,0,1263,1265,3,98,49,0,1264,1263,1,0,0,0,1265,1268,1,0,0,0, + 1266,1264,1,0,0,0,1266,1267,1,0,0,0,1267,195,1,0,0,0,1268,1266,1, + 0,0,0,1269,1272,3,198,99,0,1270,1272,3,216,108,0,1271,1269,1,0,0, + 0,1271,1270,1,0,0,0,1272,197,1,0,0,0,1273,1275,3,200,100,0,1274, + 1273,1,0,0,0,1275,1278,1,0,0,0,1276,1274,1,0,0,0,1276,1277,1,0,0, + 0,1277,1279,1,0,0,0,1278,1276,1,0,0,0,1279,1280,5,28,0,0,1280,1282, + 5,102,0,0,1281,1283,3,86,43,0,1282,1281,1,0,0,0,1282,1283,1,0,0, + 0,1283,1285,1,0,0,0,1284,1286,3,202,101,0,1285,1284,1,0,0,0,1285, + 1286,1,0,0,0,1286,1287,1,0,0,0,1287,1288,3,204,102,0,1288,199,1, + 0,0,0,1289,1297,3,228,114,0,1290,1297,5,35,0,0,1291,1297,5,34,0, + 0,1292,1297,5,33,0,0,1293,1297,5,1,0,0,1294,1297,5,38,0,0,1295,1297, + 5,39,0,0,1296,1289,1,0,0,0,1296,1290,1,0,0,0,1296,1291,1,0,0,0,1296, + 1292,1,0,0,0,1296,1293,1,0,0,0,1296,1294,1,0,0,0,1296,1295,1,0,0, + 0,1297,201,1,0,0,0,1298,1299,5,17,0,0,1299,1300,3,94,47,0,1300,203, + 1,0,0,0,1301,1305,5,59,0,0,1302,1304,3,206,103,0,1303,1302,1,0,0, + 0,1304,1307,1,0,0,0,1305,1303,1,0,0,0,1305,1306,1,0,0,0,1306,1308, + 1,0,0,0,1307,1305,1,0,0,0,1308,1309,5,60,0,0,1309,205,1,0,0,0,1310, + 1316,3,208,104,0,1311,1316,3,212,106,0,1312,1316,3,80,40,0,1313, + 1316,3,196,98,0,1314,1316,5,63,0,0,1315,1310,1,0,0,0,1315,1311,1, + 0,0,0,1315,1312,1,0,0,0,1315,1313,1,0,0,0,1315,1314,1,0,0,0,1316, + 207,1,0,0,0,1317,1319,3,210,105,0,1318,1317,1,0,0,0,1319,1322,1, + 0,0,0,1320,1318,1,0,0,0,1320,1321,1,0,0,0,1321,1323,1,0,0,0,1322, + 1320,1,0,0,0,1323,1324,3,114,57,0,1324,1325,3,106,53,0,1325,1326, + 5,63,0,0,1326,209,1,0,0,0,1327,1332,3,228,114,0,1328,1332,5,35,0, + 0,1329,1332,5,38,0,0,1330,1332,5,18,0,0,1331,1327,1,0,0,0,1331,1328, + 1,0,0,0,1331,1329,1,0,0,0,1331,1330,1,0,0,0,1332,211,1,0,0,0,1333, + 1335,3,214,107,0,1334,1333,1,0,0,0,1335,1338,1,0,0,0,1336,1334,1, + 0,0,0,1336,1337,1,0,0,0,1337,1339,1,0,0,0,1338,1336,1,0,0,0,1339, + 1340,3,142,71,0,1340,1341,3,166,83,0,1341,213,1,0,0,0,1342,1349, + 3,228,114,0,1343,1349,5,35,0,0,1344,1349,5,1,0,0,1345,1349,5,12, + 0,0,1346,1349,5,38,0,0,1347,1349,5,39,0,0,1348,1342,1,0,0,0,1348, + 1343,1,0,0,0,1348,1344,1,0,0,0,1348,1345,1,0,0,0,1348,1346,1,0,0, + 0,1348,1347,1,0,0,0,1349,215,1,0,0,0,1350,1352,3,200,100,0,1351, + 1350,1,0,0,0,1352,1355,1,0,0,0,1353,1351,1,0,0,0,1353,1354,1,0,0, + 0,1354,1356,1,0,0,0,1355,1353,1,0,0,0,1356,1357,5,103,0,0,1357,1358, + 5,28,0,0,1358,1359,5,102,0,0,1359,1360,3,218,109,0,1360,217,1,0, + 0,0,1361,1365,5,59,0,0,1362,1364,3,220,110,0,1363,1362,1,0,0,0,1364, + 1367,1,0,0,0,1365,1363,1,0,0,0,1365,1366,1,0,0,0,1366,1368,1,0,0, + 0,1367,1365,1,0,0,0,1368,1369,5,60,0,0,1369,219,1,0,0,0,1370,1376, + 3,222,111,0,1371,1376,3,208,104,0,1372,1376,3,80,40,0,1373,1376, + 3,196,98,0,1374,1376,5,63,0,0,1375,1370,1,0,0,0,1375,1371,1,0,0, + 0,1375,1372,1,0,0,0,1375,1373,1,0,0,0,1375,1374,1,0,0,0,1376,221, + 1,0,0,0,1377,1379,3,224,112,0,1378,1377,1,0,0,0,1379,1382,1,0,0, + 0,1380,1378,1,0,0,0,1380,1381,1,0,0,0,1381,1383,1,0,0,0,1382,1380, + 1,0,0,0,1383,1384,3,114,57,0,1384,1385,5,102,0,0,1385,1386,5,57, + 0,0,1386,1388,5,58,0,0,1387,1389,3,30,15,0,1388,1387,1,0,0,0,1388, + 1389,1,0,0,0,1389,1391,1,0,0,0,1390,1392,3,226,113,0,1391,1390,1, + 0,0,0,1391,1392,1,0,0,0,1392,1393,1,0,0,0,1393,1394,5,63,0,0,1394, + 223,1,0,0,0,1395,1399,3,228,114,0,1396,1399,5,35,0,0,1397,1399,5, + 1,0,0,1398,1395,1,0,0,0,1398,1396,1,0,0,0,1398,1397,1,0,0,0,1399, + 225,1,0,0,0,1400,1401,5,12,0,0,1401,1402,3,236,118,0,1402,227,1, + 0,0,0,1403,1407,3,230,115,0,1404,1407,3,242,121,0,1405,1407,3,244, + 122,0,1406,1403,1,0,0,0,1406,1404,1,0,0,0,1406,1405,1,0,0,0,1407, + 229,1,0,0,0,1408,1409,5,103,0,0,1409,1410,3,52,26,0,1410,1412,5, + 57,0,0,1411,1413,3,232,116,0,1412,1411,1,0,0,0,1412,1413,1,0,0,0, + 1413,1414,1,0,0,0,1414,1415,5,58,0,0,1415,231,1,0,0,0,1416,1421, + 3,234,117,0,1417,1418,5,64,0,0,1418,1420,3,234,117,0,1419,1417,1, + 0,0,0,1420,1423,1,0,0,0,1421,1419,1,0,0,0,1421,1422,1,0,0,0,1422, + 233,1,0,0,0,1423,1421,1,0,0,0,1424,1425,5,102,0,0,1425,1426,5,66, + 0,0,1426,1427,3,236,118,0,1427,235,1,0,0,0,1428,1432,3,430,215,0, + 1429,1432,3,238,119,0,1430,1432,3,228,114,0,1431,1428,1,0,0,0,1431, + 1429,1,0,0,0,1431,1430,1,0,0,0,1432,237,1,0,0,0,1433,1435,5,59,0, + 0,1434,1436,3,240,120,0,1435,1434,1,0,0,0,1435,1436,1,0,0,0,1436, + 1438,1,0,0,0,1437,1439,5,64,0,0,1438,1437,1,0,0,0,1438,1439,1,0, + 0,0,1439,1440,1,0,0,0,1440,1441,5,60,0,0,1441,239,1,0,0,0,1442,1447, + 3,236,118,0,1443,1444,5,64,0,0,1444,1446,3,236,118,0,1445,1443,1, + 0,0,0,1446,1449,1,0,0,0,1447,1445,1,0,0,0,1447,1448,1,0,0,0,1448, + 241,1,0,0,0,1449,1447,1,0,0,0,1450,1451,5,103,0,0,1451,1452,3,52, + 26,0,1452,243,1,0,0,0,1453,1454,5,103,0,0,1454,1455,3,52,26,0,1455, + 1456,5,57,0,0,1456,1457,3,236,118,0,1457,1458,5,58,0,0,1458,245, + 1,0,0,0,1459,1461,5,59,0,0,1460,1462,3,248,124,0,1461,1460,1,0,0, + 0,1461,1462,1,0,0,0,1462,1464,1,0,0,0,1463,1465,5,64,0,0,1464,1463, + 1,0,0,0,1464,1465,1,0,0,0,1465,1466,1,0,0,0,1466,1467,5,60,0,0,1467, + 247,1,0,0,0,1468,1473,3,112,56,0,1469,1470,5,64,0,0,1470,1472,3, + 112,56,0,1471,1469,1,0,0,0,1472,1475,1,0,0,0,1473,1471,1,0,0,0,1473, + 1474,1,0,0,0,1474,249,1,0,0,0,1475,1473,1,0,0,0,1476,1478,5,59,0, + 0,1477,1479,3,252,126,0,1478,1477,1,0,0,0,1478,1479,1,0,0,0,1479, + 1480,1,0,0,0,1480,1481,5,60,0,0,1481,251,1,0,0,0,1482,1484,3,254, + 127,0,1483,1482,1,0,0,0,1484,1485,1,0,0,0,1485,1483,1,0,0,0,1485, + 1486,1,0,0,0,1486,253,1,0,0,0,1487,1491,3,256,128,0,1488,1491,3, + 80,40,0,1489,1491,3,260,130,0,1490,1487,1,0,0,0,1490,1488,1,0,0, + 0,1490,1489,1,0,0,0,1491,255,1,0,0,0,1492,1493,3,258,129,0,1493, + 1494,5,63,0,0,1494,257,1,0,0,0,1495,1497,3,154,77,0,1496,1495,1, + 0,0,0,1497,1500,1,0,0,0,1498,1496,1,0,0,0,1498,1499,1,0,0,0,1499, + 1501,1,0,0,0,1500,1498,1,0,0,0,1501,1502,3,114,57,0,1502,1503,3, + 106,53,0,1503,259,1,0,0,0,1504,1511,3,264,132,0,1505,1511,3,268, + 134,0,1506,1511,3,276,138,0,1507,1511,3,278,139,0,1508,1511,3,296, + 148,0,1509,1511,3,302,151,0,1510,1504,1,0,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,261,1,0,0,0,1512,1518,3,264,132,0,1513,1518,3,270,135, + 0,1514,1518,3,280,140,0,1515,1518,3,298,149,0,1516,1518,3,304,152, + 0,1517,1512,1,0,0,0,1517,1513,1,0,0,0,1517,1514,1,0,0,0,1517,1515, + 1,0,0,0,1517,1516,1,0,0,0,1518,263,1,0,0,0,1519,1532,3,250,125,0, + 1520,1532,3,266,133,0,1521,1532,3,272,136,0,1522,1532,3,282,141, + 0,1523,1532,3,284,142,0,1524,1532,3,300,150,0,1525,1532,3,320,160, + 0,1526,1532,3,322,161,0,1527,1532,3,324,162,0,1528,1532,3,328,164, + 0,1529,1532,3,326,163,0,1530,1532,3,330,165,0,1531,1519,1,0,0,0, + 1531,1520,1,0,0,0,1531,1521,1,0,0,0,1531,1522,1,0,0,0,1531,1523, + 1,0,0,0,1531,1524,1,0,0,0,1531,1525,1,0,0,0,1531,1526,1,0,0,0,1531, + 1527,1,0,0,0,1531,1528,1,0,0,0,1531,1529,1,0,0,0,1531,1530,1,0,0, + 0,1532,265,1,0,0,0,1533,1534,5,63,0,0,1534,267,1,0,0,0,1535,1536, + 5,102,0,0,1536,1537,5,72,0,0,1537,1538,3,260,130,0,1538,269,1,0, + 0,0,1539,1540,5,102,0,0,1540,1541,5,72,0,0,1541,1542,3,262,131,0, + 1542,271,1,0,0,0,1543,1544,3,274,137,0,1544,1545,5,63,0,0,1545,273, + 1,0,0,0,1546,1554,3,424,212,0,1547,1554,3,454,227,0,1548,1554,3, + 456,228,0,1549,1554,3,462,231,0,1550,1554,3,466,233,0,1551,1554, + 3,390,195,0,1552,1554,3,370,185,0,1553,1546,1,0,0,0,1553,1547,1, + 0,0,0,1553,1548,1,0,0,0,1553,1549,1,0,0,0,1553,1550,1,0,0,0,1553, + 1551,1,0,0,0,1553,1552,1,0,0,0,1554,275,1,0,0,0,1555,1556,5,22,0, + 0,1556,1557,5,57,0,0,1557,1558,3,412,206,0,1558,1559,5,58,0,0,1559, + 1560,3,260,130,0,1560,277,1,0,0,0,1561,1562,5,22,0,0,1562,1563,5, + 57,0,0,1563,1564,3,412,206,0,1564,1565,5,58,0,0,1565,1566,3,262, + 131,0,1566,1567,5,15,0,0,1567,1568,3,260,130,0,1568,279,1,0,0,0, + 1569,1570,5,22,0,0,1570,1571,5,57,0,0,1571,1572,3,412,206,0,1572, + 1573,5,58,0,0,1573,1574,3,262,131,0,1574,1575,5,15,0,0,1575,1576, + 3,262,131,0,1576,281,1,0,0,0,1577,1578,5,2,0,0,1578,1579,3,412,206, + 0,1579,1580,5,63,0,0,1580,1588,1,0,0,0,1581,1582,5,2,0,0,1582,1583, + 3,412,206,0,1583,1584,5,72,0,0,1584,1585,3,412,206,0,1585,1586,5, + 63,0,0,1586,1588,1,0,0,0,1587,1577,1,0,0,0,1587,1581,1,0,0,0,1588, + 283,1,0,0,0,1589,1590,5,41,0,0,1590,1591,5,57,0,0,1591,1592,3,412, + 206,0,1592,1593,5,58,0,0,1593,1594,3,286,143,0,1594,285,1,0,0,0, + 1595,1599,5,59,0,0,1596,1598,3,288,144,0,1597,1596,1,0,0,0,1598, + 1601,1,0,0,0,1599,1597,1,0,0,0,1599,1600,1,0,0,0,1600,1605,1,0,0, + 0,1601,1599,1,0,0,0,1602,1604,3,292,146,0,1603,1602,1,0,0,0,1604, + 1607,1,0,0,0,1605,1603,1,0,0,0,1605,1606,1,0,0,0,1606,1608,1,0,0, + 0,1607,1605,1,0,0,0,1608,1609,5,60,0,0,1609,287,1,0,0,0,1610,1611, + 3,290,145,0,1611,1612,3,252,126,0,1612,289,1,0,0,0,1613,1617,3,292, + 146,0,1614,1616,3,292,146,0,1615,1614,1,0,0,0,1616,1619,1,0,0,0, + 1617,1615,1,0,0,0,1617,1618,1,0,0,0,1618,291,1,0,0,0,1619,1617,1, + 0,0,0,1620,1621,5,6,0,0,1621,1622,3,410,205,0,1622,1623,5,72,0,0, + 1623,1631,1,0,0,0,1624,1625,5,6,0,0,1625,1626,3,294,147,0,1626,1627, + 5,72,0,0,1627,1631,1,0,0,0,1628,1629,5,12,0,0,1629,1631,5,72,0,0, + 1630,1620,1,0,0,0,1630,1624,1,0,0,0,1630,1628,1,0,0,0,1631,293,1, + 0,0,0,1632,1633,5,102,0,0,1633,295,1,0,0,0,1634,1635,5,50,0,0,1635, + 1636,5,57,0,0,1636,1637,3,412,206,0,1637,1638,5,58,0,0,1638,1639, + 3,260,130,0,1639,297,1,0,0,0,1640,1641,5,50,0,0,1641,1642,5,57,0, + 0,1642,1643,3,412,206,0,1643,1644,5,58,0,0,1644,1645,3,262,131,0, + 1645,299,1,0,0,0,1646,1647,5,13,0,0,1647,1648,3,260,130,0,1648,1649, + 5,50,0,0,1649,1650,5,57,0,0,1650,1651,3,412,206,0,1651,1652,5,58, + 0,0,1652,1653,5,63,0,0,1653,301,1,0,0,0,1654,1657,3,306,153,0,1655, + 1657,3,316,158,0,1656,1654,1,0,0,0,1656,1655,1,0,0,0,1657,303,1, + 0,0,0,1658,1661,3,308,154,0,1659,1661,3,318,159,0,1660,1658,1,0, + 0,0,1660,1659,1,0,0,0,1661,305,1,0,0,0,1662,1663,5,21,0,0,1663,1665, + 5,57,0,0,1664,1666,3,310,155,0,1665,1664,1,0,0,0,1665,1666,1,0,0, + 0,1666,1667,1,0,0,0,1667,1669,5,63,0,0,1668,1670,3,412,206,0,1669, + 1668,1,0,0,0,1669,1670,1,0,0,0,1670,1671,1,0,0,0,1671,1673,5,63, + 0,0,1672,1674,3,312,156,0,1673,1672,1,0,0,0,1673,1674,1,0,0,0,1674, + 1675,1,0,0,0,1675,1676,5,58,0,0,1676,1677,3,260,130,0,1677,307,1, + 0,0,0,1678,1679,5,21,0,0,1679,1681,5,57,0,0,1680,1682,3,310,155, + 0,1681,1680,1,0,0,0,1681,1682,1,0,0,0,1682,1683,1,0,0,0,1683,1685, + 5,63,0,0,1684,1686,3,412,206,0,1685,1684,1,0,0,0,1685,1686,1,0,0, + 0,1686,1687,1,0,0,0,1687,1689,5,63,0,0,1688,1690,3,312,156,0,1689, + 1688,1,0,0,0,1689,1690,1,0,0,0,1690,1691,1,0,0,0,1691,1692,5,58, + 0,0,1692,1693,3,262,131,0,1693,309,1,0,0,0,1694,1697,3,314,157,0, + 1695,1697,3,258,129,0,1696,1694,1,0,0,0,1696,1695,1,0,0,0,1697,311, + 1,0,0,0,1698,1699,3,314,157,0,1699,313,1,0,0,0,1700,1705,3,274,137, + 0,1701,1702,5,64,0,0,1702,1704,3,274,137,0,1703,1701,1,0,0,0,1704, + 1707,1,0,0,0,1705,1703,1,0,0,0,1705,1706,1,0,0,0,1706,315,1,0,0, + 0,1707,1705,1,0,0,0,1708,1709,5,21,0,0,1709,1713,5,57,0,0,1710,1712, + 3,154,77,0,1711,1710,1,0,0,0,1712,1715,1,0,0,0,1713,1711,1,0,0,0, + 1713,1714,1,0,0,0,1714,1716,1,0,0,0,1715,1713,1,0,0,0,1716,1717, + 3,114,57,0,1717,1718,3,110,55,0,1718,1719,5,72,0,0,1719,1720,3,412, + 206,0,1720,1721,5,58,0,0,1721,1722,3,260,130,0,1722,317,1,0,0,0, + 1723,1724,5,21,0,0,1724,1728,5,57,0,0,1725,1727,3,154,77,0,1726, + 1725,1,0,0,0,1727,1730,1,0,0,0,1728,1726,1,0,0,0,1728,1729,1,0,0, + 0,1729,1731,1,0,0,0,1730,1728,1,0,0,0,1731,1732,3,114,57,0,1732, + 1733,3,110,55,0,1733,1734,5,72,0,0,1734,1735,3,412,206,0,1735,1736, + 5,58,0,0,1736,1737,3,262,131,0,1737,319,1,0,0,0,1738,1740,5,4,0, + 0,1739,1741,5,102,0,0,1740,1739,1,0,0,0,1740,1741,1,0,0,0,1741,1742, + 1,0,0,0,1742,1743,5,63,0,0,1743,321,1,0,0,0,1744,1746,5,11,0,0,1745, + 1747,5,102,0,0,1746,1745,1,0,0,0,1746,1747,1,0,0,0,1747,1748,1,0, + 0,0,1748,1749,5,63,0,0,1749,323,1,0,0,0,1750,1752,5,36,0,0,1751, + 1753,3,412,206,0,1752,1751,1,0,0,0,1752,1753,1,0,0,0,1753,1754,1, + 0,0,0,1754,1755,5,63,0,0,1755,325,1,0,0,0,1756,1757,5,44,0,0,1757, + 1758,3,412,206,0,1758,1759,5,63,0,0,1759,327,1,0,0,0,1760,1761,5, + 42,0,0,1761,1762,5,57,0,0,1762,1763,3,412,206,0,1763,1764,5,58,0, + 0,1764,1765,3,250,125,0,1765,329,1,0,0,0,1766,1767,5,47,0,0,1767, + 1768,3,250,125,0,1768,1769,3,332,166,0,1769,1779,1,0,0,0,1770,1771, + 5,47,0,0,1771,1773,3,250,125,0,1772,1774,3,332,166,0,1773,1772,1, + 0,0,0,1773,1774,1,0,0,0,1774,1775,1,0,0,0,1775,1776,3,340,170,0, + 1776,1779,1,0,0,0,1777,1779,3,342,171,0,1778,1766,1,0,0,0,1778,1770, + 1,0,0,0,1778,1777,1,0,0,0,1779,331,1,0,0,0,1780,1784,3,334,167,0, + 1781,1783,3,334,167,0,1782,1781,1,0,0,0,1783,1786,1,0,0,0,1784,1782, + 1,0,0,0,1784,1785,1,0,0,0,1785,333,1,0,0,0,1786,1784,1,0,0,0,1787, + 1788,5,7,0,0,1788,1789,5,57,0,0,1789,1790,3,336,168,0,1790,1791, + 5,58,0,0,1791,1792,3,250,125,0,1792,335,1,0,0,0,1793,1795,3,154, + 77,0,1794,1793,1,0,0,0,1795,1798,1,0,0,0,1796,1794,1,0,0,0,1796, + 1797,1,0,0,0,1797,1799,1,0,0,0,1798,1796,1,0,0,0,1799,1800,3,338, + 169,0,1800,1801,3,110,55,0,1801,337,1,0,0,0,1802,1807,3,122,61,0, + 1803,1804,5,86,0,0,1804,1806,3,14,7,0,1805,1803,1,0,0,0,1806,1809, + 1,0,0,0,1807,1805,1,0,0,0,1807,1808,1,0,0,0,1808,339,1,0,0,0,1809, + 1807,1,0,0,0,1810,1811,5,19,0,0,1811,1812,3,250,125,0,1812,341,1, + 0,0,0,1813,1814,5,47,0,0,1814,1815,3,344,172,0,1815,1817,3,250,125, + 0,1816,1818,3,332,166,0,1817,1816,1,0,0,0,1817,1818,1,0,0,0,1818, + 1820,1,0,0,0,1819,1821,3,340,170,0,1820,1819,1,0,0,0,1820,1821,1, + 0,0,0,1821,343,1,0,0,0,1822,1823,5,57,0,0,1823,1825,3,346,173,0, + 1824,1826,5,63,0,0,1825,1824,1,0,0,0,1825,1826,1,0,0,0,1826,1827, + 1,0,0,0,1827,1828,5,58,0,0,1828,345,1,0,0,0,1829,1834,3,348,174, + 0,1830,1831,5,63,0,0,1831,1833,3,348,174,0,1832,1830,1,0,0,0,1833, + 1836,1,0,0,0,1834,1832,1,0,0,0,1834,1835,1,0,0,0,1835,347,1,0,0, + 0,1836,1834,1,0,0,0,1837,1839,3,154,77,0,1838,1837,1,0,0,0,1839, + 1842,1,0,0,0,1840,1838,1,0,0,0,1840,1841,1,0,0,0,1841,1843,1,0,0, + 0,1842,1840,1,0,0,0,1843,1844,3,114,57,0,1844,1845,3,110,55,0,1845, + 1846,5,66,0,0,1846,1847,3,412,206,0,1847,349,1,0,0,0,1848,1851,3, + 364,182,0,1849,1851,3,404,202,0,1850,1848,1,0,0,0,1850,1849,1,0, + 0,0,1851,1855,1,0,0,0,1852,1854,3,358,179,0,1853,1852,1,0,0,0,1854, + 1857,1,0,0,0,1855,1853,1,0,0,0,1855,1856,1,0,0,0,1856,351,1,0,0, + 0,1857,1855,1,0,0,0,1858,1888,3,0,0,0,1859,1864,3,52,26,0,1860,1861, + 5,61,0,0,1861,1863,5,62,0,0,1862,1860,1,0,0,0,1863,1866,1,0,0,0, + 1864,1862,1,0,0,0,1864,1865,1,0,0,0,1865,1867,1,0,0,0,1866,1864, + 1,0,0,0,1867,1868,5,65,0,0,1868,1869,5,9,0,0,1869,1888,1,0,0,0,1870, + 1871,5,48,0,0,1871,1872,5,65,0,0,1872,1888,5,9,0,0,1873,1888,5,43, + 0,0,1874,1875,3,52,26,0,1875,1876,5,65,0,0,1876,1877,5,43,0,0,1877, + 1888,1,0,0,0,1878,1879,5,57,0,0,1879,1880,3,412,206,0,1880,1881, + 5,58,0,0,1881,1888,1,0,0,0,1882,1888,3,370,185,0,1883,1888,3,378, + 189,0,1884,1888,3,384,192,0,1885,1888,3,390,195,0,1886,1888,3,398, + 199,0,1887,1858,1,0,0,0,1887,1859,1,0,0,0,1887,1870,1,0,0,0,1887, + 1873,1,0,0,0,1887,1874,1,0,0,0,1887,1878,1,0,0,0,1887,1882,1,0,0, + 0,1887,1883,1,0,0,0,1887,1884,1,0,0,0,1887,1885,1,0,0,0,1887,1886, + 1,0,0,0,1888,353,1,0,0,0,1889,1890,1,0,0,0,1890,355,1,0,0,0,1891, + 1920,3,0,0,0,1892,1897,3,52,26,0,1893,1894,5,61,0,0,1894,1896,5, + 62,0,0,1895,1893,1,0,0,0,1896,1899,1,0,0,0,1897,1895,1,0,0,0,1897, + 1898,1,0,0,0,1898,1900,1,0,0,0,1899,1897,1,0,0,0,1900,1901,5,65, + 0,0,1901,1902,5,9,0,0,1902,1920,1,0,0,0,1903,1904,5,48,0,0,1904, + 1905,5,65,0,0,1905,1920,5,9,0,0,1906,1920,5,43,0,0,1907,1908,3,52, + 26,0,1908,1909,5,65,0,0,1909,1910,5,43,0,0,1910,1920,1,0,0,0,1911, + 1912,5,57,0,0,1912,1913,3,412,206,0,1913,1914,5,58,0,0,1914,1920, + 1,0,0,0,1915,1920,3,370,185,0,1916,1920,3,378,189,0,1917,1920,3, + 390,195,0,1918,1920,3,398,199,0,1919,1891,1,0,0,0,1919,1892,1,0, + 0,0,1919,1903,1,0,0,0,1919,1906,1,0,0,0,1919,1907,1,0,0,0,1919,1911, + 1,0,0,0,1919,1915,1,0,0,0,1919,1916,1,0,0,0,1919,1917,1,0,0,0,1919, + 1918,1,0,0,0,1920,357,1,0,0,0,1921,1927,3,372,186,0,1922,1927,3, + 380,190,0,1923,1927,3,386,193,0,1924,1927,3,392,196,0,1925,1927, + 3,400,200,0,1926,1921,1,0,0,0,1926,1922,1,0,0,0,1926,1923,1,0,0, + 0,1926,1924,1,0,0,0,1926,1925,1,0,0,0,1927,359,1,0,0,0,1928,1929, + 1,0,0,0,1929,361,1,0,0,0,1930,1935,3,372,186,0,1931,1935,3,380,190, + 0,1932,1935,3,392,196,0,1933,1935,3,400,200,0,1934,1930,1,0,0,0, + 1934,1931,1,0,0,0,1934,1932,1,0,0,0,1934,1933,1,0,0,0,1935,363,1, + 0,0,0,1936,1977,3,0,0,0,1937,1942,3,52,26,0,1938,1939,5,61,0,0,1939, + 1941,5,62,0,0,1940,1938,1,0,0,0,1941,1944,1,0,0,0,1942,1940,1,0, + 0,0,1942,1943,1,0,0,0,1943,1945,1,0,0,0,1944,1942,1,0,0,0,1945,1946, + 5,65,0,0,1946,1947,5,9,0,0,1947,1977,1,0,0,0,1948,1953,3,116,58, + 0,1949,1950,5,61,0,0,1950,1952,5,62,0,0,1951,1949,1,0,0,0,1952,1955, + 1,0,0,0,1953,1951,1,0,0,0,1953,1954,1,0,0,0,1954,1956,1,0,0,0,1955, + 1953,1,0,0,0,1956,1957,5,65,0,0,1957,1958,5,9,0,0,1958,1977,1,0, + 0,0,1959,1960,5,48,0,0,1960,1961,5,65,0,0,1961,1977,5,9,0,0,1962, + 1977,5,43,0,0,1963,1964,3,52,26,0,1964,1965,5,65,0,0,1965,1966,5, + 43,0,0,1966,1977,1,0,0,0,1967,1968,5,57,0,0,1968,1969,3,412,206, + 0,1969,1970,5,58,0,0,1970,1977,1,0,0,0,1971,1977,3,374,187,0,1972, + 1977,3,382,191,0,1973,1977,3,388,194,0,1974,1977,3,394,197,0,1975, + 1977,3,402,201,0,1976,1936,1,0,0,0,1976,1937,1,0,0,0,1976,1948,1, + 0,0,0,1976,1959,1,0,0,0,1976,1962,1,0,0,0,1976,1963,1,0,0,0,1976, + 1967,1,0,0,0,1976,1971,1,0,0,0,1976,1972,1,0,0,0,1976,1973,1,0,0, + 0,1976,1974,1,0,0,0,1976,1975,1,0,0,0,1977,365,1,0,0,0,1978,1979, + 1,0,0,0,1979,367,1,0,0,0,1980,2020,3,0,0,0,1981,1986,3,52,26,0,1982, + 1983,5,61,0,0,1983,1985,5,62,0,0,1984,1982,1,0,0,0,1985,1988,1,0, + 0,0,1986,1984,1,0,0,0,1986,1987,1,0,0,0,1987,1989,1,0,0,0,1988,1986, + 1,0,0,0,1989,1990,5,65,0,0,1990,1991,5,9,0,0,1991,2020,1,0,0,0,1992, + 1997,3,116,58,0,1993,1994,5,61,0,0,1994,1996,5,62,0,0,1995,1993, + 1,0,0,0,1996,1999,1,0,0,0,1997,1995,1,0,0,0,1997,1998,1,0,0,0,1998, + 2000,1,0,0,0,1999,1997,1,0,0,0,2000,2001,5,65,0,0,2001,2002,5,9, + 0,0,2002,2020,1,0,0,0,2003,2004,5,48,0,0,2004,2005,5,65,0,0,2005, + 2020,5,9,0,0,2006,2020,5,43,0,0,2007,2008,3,52,26,0,2008,2009,5, + 65,0,0,2009,2010,5,43,0,0,2010,2020,1,0,0,0,2011,2012,5,57,0,0,2012, + 2013,3,412,206,0,2013,2014,5,58,0,0,2014,2020,1,0,0,0,2015,2020, + 3,374,187,0,2016,2020,3,382,191,0,2017,2020,3,394,197,0,2018,2020, + 3,402,201,0,2019,1980,1,0,0,0,2019,1981,1,0,0,0,2019,1992,1,0,0, + 0,2019,2003,1,0,0,0,2019,2006,1,0,0,0,2019,2007,1,0,0,0,2019,2011, + 1,0,0,0,2019,2015,1,0,0,0,2019,2016,1,0,0,0,2019,2017,1,0,0,0,2019, + 2018,1,0,0,0,2020,369,1,0,0,0,2021,2023,5,31,0,0,2022,2024,3,40, + 20,0,2023,2022,1,0,0,0,2023,2024,1,0,0,0,2024,2028,1,0,0,0,2025, + 2027,3,228,114,0,2026,2025,1,0,0,0,2027,2030,1,0,0,0,2028,2026,1, + 0,0,0,2028,2029,1,0,0,0,2029,2031,1,0,0,0,2030,2028,1,0,0,0,2031, + 2042,5,102,0,0,2032,2036,5,65,0,0,2033,2035,3,228,114,0,2034,2033, + 1,0,0,0,2035,2038,1,0,0,0,2036,2034,1,0,0,0,2036,2037,1,0,0,0,2037, + 2039,1,0,0,0,2038,2036,1,0,0,0,2039,2041,5,102,0,0,2040,2032,1,0, + 0,0,2041,2044,1,0,0,0,2042,2040,1,0,0,0,2042,2043,1,0,0,0,2043,2046, + 1,0,0,0,2044,2042,1,0,0,0,2045,2047,3,376,188,0,2046,2045,1,0,0, + 0,2046,2047,1,0,0,0,2047,2048,1,0,0,0,2048,2050,5,57,0,0,2049,2051, + 3,396,198,0,2050,2049,1,0,0,0,2050,2051,1,0,0,0,2051,2052,1,0,0, + 0,2052,2054,5,58,0,0,2053,2055,3,96,48,0,2054,2053,1,0,0,0,2054, + 2055,1,0,0,0,2055,2105,1,0,0,0,2056,2057,3,56,28,0,2057,2058,5,65, + 0,0,2058,2060,5,31,0,0,2059,2061,3,40,20,0,2060,2059,1,0,0,0,2060, + 2061,1,0,0,0,2061,2065,1,0,0,0,2062,2064,3,228,114,0,2063,2062,1, + 0,0,0,2064,2067,1,0,0,0,2065,2063,1,0,0,0,2065,2066,1,0,0,0,2066, + 2068,1,0,0,0,2067,2065,1,0,0,0,2068,2070,5,102,0,0,2069,2071,3,376, + 188,0,2070,2069,1,0,0,0,2070,2071,1,0,0,0,2071,2072,1,0,0,0,2072, + 2074,5,57,0,0,2073,2075,3,396,198,0,2074,2073,1,0,0,0,2074,2075, + 1,0,0,0,2075,2076,1,0,0,0,2076,2078,5,58,0,0,2077,2079,3,96,48,0, + 2078,2077,1,0,0,0,2078,2079,1,0,0,0,2079,2105,1,0,0,0,2080,2081, + 3,350,175,0,2081,2082,5,65,0,0,2082,2084,5,31,0,0,2083,2085,3,40, + 20,0,2084,2083,1,0,0,0,2084,2085,1,0,0,0,2085,2089,1,0,0,0,2086, + 2088,3,228,114,0,2087,2086,1,0,0,0,2088,2091,1,0,0,0,2089,2087,1, + 0,0,0,2089,2090,1,0,0,0,2090,2092,1,0,0,0,2091,2089,1,0,0,0,2092, + 2094,5,102,0,0,2093,2095,3,376,188,0,2094,2093,1,0,0,0,2094,2095, + 1,0,0,0,2095,2096,1,0,0,0,2096,2098,5,57,0,0,2097,2099,3,396,198, + 0,2098,2097,1,0,0,0,2098,2099,1,0,0,0,2099,2100,1,0,0,0,2100,2102, + 5,58,0,0,2101,2103,3,96,48,0,2102,2101,1,0,0,0,2102,2103,1,0,0,0, + 2103,2105,1,0,0,0,2104,2021,1,0,0,0,2104,2056,1,0,0,0,2104,2080, + 1,0,0,0,2105,371,1,0,0,0,2106,2107,5,65,0,0,2107,2109,5,31,0,0,2108, + 2110,3,40,20,0,2109,2108,1,0,0,0,2109,2110,1,0,0,0,2110,2114,1,0, + 0,0,2111,2113,3,228,114,0,2112,2111,1,0,0,0,2113,2116,1,0,0,0,2114, + 2112,1,0,0,0,2114,2115,1,0,0,0,2115,2117,1,0,0,0,2116,2114,1,0,0, + 0,2117,2119,5,102,0,0,2118,2120,3,376,188,0,2119,2118,1,0,0,0,2119, + 2120,1,0,0,0,2120,2121,1,0,0,0,2121,2123,5,57,0,0,2122,2124,3,396, + 198,0,2123,2122,1,0,0,0,2123,2124,1,0,0,0,2124,2125,1,0,0,0,2125, + 2127,5,58,0,0,2126,2128,3,96,48,0,2127,2126,1,0,0,0,2127,2128,1, + 0,0,0,2128,373,1,0,0,0,2129,2131,5,31,0,0,2130,2132,3,40,20,0,2131, + 2130,1,0,0,0,2131,2132,1,0,0,0,2132,2136,1,0,0,0,2133,2135,3,228, + 114,0,2134,2133,1,0,0,0,2135,2138,1,0,0,0,2136,2134,1,0,0,0,2136, + 2137,1,0,0,0,2137,2139,1,0,0,0,2138,2136,1,0,0,0,2139,2150,5,102, + 0,0,2140,2144,5,65,0,0,2141,2143,3,228,114,0,2142,2141,1,0,0,0,2143, + 2146,1,0,0,0,2144,2142,1,0,0,0,2144,2145,1,0,0,0,2145,2147,1,0,0, + 0,2146,2144,1,0,0,0,2147,2149,5,102,0,0,2148,2140,1,0,0,0,2149,2152, + 1,0,0,0,2150,2148,1,0,0,0,2150,2151,1,0,0,0,2151,2154,1,0,0,0,2152, + 2150,1,0,0,0,2153,2155,3,376,188,0,2154,2153,1,0,0,0,2154,2155,1, + 0,0,0,2155,2156,1,0,0,0,2156,2158,5,57,0,0,2157,2159,3,396,198,0, + 2158,2157,1,0,0,0,2158,2159,1,0,0,0,2159,2160,1,0,0,0,2160,2162, + 5,58,0,0,2161,2163,3,96,48,0,2162,2161,1,0,0,0,2162,2163,1,0,0,0, + 2163,2189,1,0,0,0,2164,2165,3,56,28,0,2165,2166,5,65,0,0,2166,2168, + 5,31,0,0,2167,2169,3,40,20,0,2168,2167,1,0,0,0,2168,2169,1,0,0,0, + 2169,2173,1,0,0,0,2170,2172,3,228,114,0,2171,2170,1,0,0,0,2172,2175, + 1,0,0,0,2173,2171,1,0,0,0,2173,2174,1,0,0,0,2174,2176,1,0,0,0,2175, + 2173,1,0,0,0,2176,2178,5,102,0,0,2177,2179,3,376,188,0,2178,2177, + 1,0,0,0,2178,2179,1,0,0,0,2179,2180,1,0,0,0,2180,2182,5,57,0,0,2181, + 2183,3,396,198,0,2182,2181,1,0,0,0,2182,2183,1,0,0,0,2183,2184,1, + 0,0,0,2184,2186,5,58,0,0,2185,2187,3,96,48,0,2186,2185,1,0,0,0,2186, + 2187,1,0,0,0,2187,2189,1,0,0,0,2188,2129,1,0,0,0,2188,2164,1,0,0, + 0,2189,375,1,0,0,0,2190,2194,3,40,20,0,2191,2192,5,68,0,0,2192,2194, + 5,67,0,0,2193,2190,1,0,0,0,2193,2191,1,0,0,0,2194,377,1,0,0,0,2195, + 2196,3,350,175,0,2196,2197,5,65,0,0,2197,2198,5,102,0,0,2198,2209, + 1,0,0,0,2199,2200,5,40,0,0,2200,2201,5,65,0,0,2201,2209,5,102,0, + 0,2202,2203,3,52,26,0,2203,2204,5,65,0,0,2204,2205,5,40,0,0,2205, + 2206,5,65,0,0,2206,2207,5,102,0,0,2207,2209,1,0,0,0,2208,2195,1, + 0,0,0,2208,2199,1,0,0,0,2208,2202,1,0,0,0,2209,379,1,0,0,0,2210, + 2211,5,65,0,0,2211,2212,5,102,0,0,2212,381,1,0,0,0,2213,2214,5,40, + 0,0,2214,2215,5,65,0,0,2215,2223,5,102,0,0,2216,2217,3,52,26,0,2217, + 2218,5,65,0,0,2218,2219,5,40,0,0,2219,2220,5,65,0,0,2220,2221,5, + 102,0,0,2221,2223,1,0,0,0,2222,2213,1,0,0,0,2222,2216,1,0,0,0,2223, + 383,1,0,0,0,2224,2225,3,56,28,0,2225,2226,5,61,0,0,2226,2227,3,412, + 206,0,2227,2228,5,62,0,0,2228,2235,1,0,0,0,2229,2230,3,356,178,0, + 2230,2231,5,61,0,0,2231,2232,3,412,206,0,2232,2233,5,62,0,0,2233, + 2235,1,0,0,0,2234,2224,1,0,0,0,2234,2229,1,0,0,0,2235,2243,1,0,0, + 0,2236,2237,3,354,177,0,2237,2238,5,61,0,0,2238,2239,3,412,206,0, + 2239,2240,5,62,0,0,2240,2242,1,0,0,0,2241,2236,1,0,0,0,2242,2245, + 1,0,0,0,2243,2241,1,0,0,0,2243,2244,1,0,0,0,2244,385,1,0,0,0,2245, + 2243,1,0,0,0,2246,2247,3,362,181,0,2247,2248,5,61,0,0,2248,2249, + 3,412,206,0,2249,2250,5,62,0,0,2250,2258,1,0,0,0,2251,2252,3,360, + 180,0,2252,2253,5,61,0,0,2253,2254,3,412,206,0,2254,2255,5,62,0, + 0,2255,2257,1,0,0,0,2256,2251,1,0,0,0,2257,2260,1,0,0,0,2258,2256, + 1,0,0,0,2258,2259,1,0,0,0,2259,387,1,0,0,0,2260,2258,1,0,0,0,2261, + 2262,3,56,28,0,2262,2263,5,61,0,0,2263,2264,3,412,206,0,2264,2265, + 5,62,0,0,2265,2272,1,0,0,0,2266,2267,3,368,184,0,2267,2268,5,61, + 0,0,2268,2269,3,412,206,0,2269,2270,5,62,0,0,2270,2272,1,0,0,0,2271, + 2261,1,0,0,0,2271,2266,1,0,0,0,2272,2280,1,0,0,0,2273,2274,3,366, + 183,0,2274,2275,5,61,0,0,2275,2276,3,412,206,0,2276,2277,5,62,0, + 0,2277,2279,1,0,0,0,2278,2273,1,0,0,0,2279,2282,1,0,0,0,2280,2278, + 1,0,0,0,2280,2281,1,0,0,0,2281,389,1,0,0,0,2282,2280,1,0,0,0,2283, + 2284,3,58,29,0,2284,2286,5,57,0,0,2285,2287,3,396,198,0,2286,2285, + 1,0,0,0,2286,2287,1,0,0,0,2287,2288,1,0,0,0,2288,2289,5,58,0,0,2289, + 2352,1,0,0,0,2290,2291,3,52,26,0,2291,2293,5,65,0,0,2292,2294,3, + 40,20,0,2293,2292,1,0,0,0,2293,2294,1,0,0,0,2294,2295,1,0,0,0,2295, + 2296,5,102,0,0,2296,2298,5,57,0,0,2297,2299,3,396,198,0,2298,2297, + 1,0,0,0,2298,2299,1,0,0,0,2299,2300,1,0,0,0,2300,2301,5,58,0,0,2301, + 2352,1,0,0,0,2302,2303,3,56,28,0,2303,2305,5,65,0,0,2304,2306,3, + 40,20,0,2305,2304,1,0,0,0,2305,2306,1,0,0,0,2306,2307,1,0,0,0,2307, + 2308,5,102,0,0,2308,2310,5,57,0,0,2309,2311,3,396,198,0,2310,2309, + 1,0,0,0,2310,2311,1,0,0,0,2311,2312,1,0,0,0,2312,2313,5,58,0,0,2313, + 2352,1,0,0,0,2314,2315,3,350,175,0,2315,2317,5,65,0,0,2316,2318, + 3,40,20,0,2317,2316,1,0,0,0,2317,2318,1,0,0,0,2318,2319,1,0,0,0, + 2319,2320,5,102,0,0,2320,2322,5,57,0,0,2321,2323,3,396,198,0,2322, + 2321,1,0,0,0,2322,2323,1,0,0,0,2323,2324,1,0,0,0,2324,2325,5,58, + 0,0,2325,2352,1,0,0,0,2326,2327,5,40,0,0,2327,2329,5,65,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,2332,5,102,0,0,2332,2334,5,57,0,0,2333,2335,3,396,198,0, + 2334,2333,1,0,0,0,2334,2335,1,0,0,0,2335,2336,1,0,0,0,2336,2352, + 5,58,0,0,2337,2338,3,52,26,0,2338,2339,5,65,0,0,2339,2340,5,40,0, + 0,2340,2342,5,65,0,0,2341,2343,3,40,20,0,2342,2341,1,0,0,0,2342, + 2343,1,0,0,0,2343,2344,1,0,0,0,2344,2345,5,102,0,0,2345,2347,5,57, + 0,0,2346,2348,3,396,198,0,2347,2346,1,0,0,0,2347,2348,1,0,0,0,2348, + 2349,1,0,0,0,2349,2350,5,58,0,0,2350,2352,1,0,0,0,2351,2283,1,0, + 0,0,2351,2290,1,0,0,0,2351,2302,1,0,0,0,2351,2314,1,0,0,0,2351,2326, + 1,0,0,0,2351,2337,1,0,0,0,2352,391,1,0,0,0,2353,2355,5,65,0,0,2354, + 2356,3,40,20,0,2355,2354,1,0,0,0,2355,2356,1,0,0,0,2356,2357,1,0, + 0,0,2357,2358,5,102,0,0,2358,2360,5,57,0,0,2359,2361,3,396,198,0, + 2360,2359,1,0,0,0,2360,2361,1,0,0,0,2361,2362,1,0,0,0,2362,2363, + 5,58,0,0,2363,393,1,0,0,0,2364,2365,3,58,29,0,2365,2367,5,57,0,0, + 2366,2368,3,396,198,0,2367,2366,1,0,0,0,2367,2368,1,0,0,0,2368,2369, + 1,0,0,0,2369,2370,5,58,0,0,2370,2421,1,0,0,0,2371,2372,3,52,26,0, + 2372,2374,5,65,0,0,2373,2375,3,40,20,0,2374,2373,1,0,0,0,2374,2375, + 1,0,0,0,2375,2376,1,0,0,0,2376,2377,5,102,0,0,2377,2379,5,57,0,0, + 2378,2380,3,396,198,0,2379,2378,1,0,0,0,2379,2380,1,0,0,0,2380,2381, + 1,0,0,0,2381,2382,5,58,0,0,2382,2421,1,0,0,0,2383,2384,3,56,28,0, + 2384,2386,5,65,0,0,2385,2387,3,40,20,0,2386,2385,1,0,0,0,2386,2387, + 1,0,0,0,2387,2388,1,0,0,0,2388,2389,5,102,0,0,2389,2391,5,57,0,0, + 2390,2392,3,396,198,0,2391,2390,1,0,0,0,2391,2392,1,0,0,0,2392,2393, + 1,0,0,0,2393,2394,5,58,0,0,2394,2421,1,0,0,0,2395,2396,5,40,0,0, + 2396,2398,5,65,0,0,2397,2399,3,40,20,0,2398,2397,1,0,0,0,2398,2399, + 1,0,0,0,2399,2400,1,0,0,0,2400,2401,5,102,0,0,2401,2403,5,57,0,0, + 2402,2404,3,396,198,0,2403,2402,1,0,0,0,2403,2404,1,0,0,0,2404,2405, + 1,0,0,0,2405,2421,5,58,0,0,2406,2407,3,52,26,0,2407,2408,5,65,0, + 0,2408,2409,5,40,0,0,2409,2411,5,65,0,0,2410,2412,3,40,20,0,2411, + 2410,1,0,0,0,2411,2412,1,0,0,0,2412,2413,1,0,0,0,2413,2414,5,102, + 0,0,2414,2416,5,57,0,0,2415,2417,3,396,198,0,2416,2415,1,0,0,0,2416, + 2417,1,0,0,0,2417,2418,1,0,0,0,2418,2419,5,58,0,0,2419,2421,1,0, + 0,0,2420,2364,1,0,0,0,2420,2371,1,0,0,0,2420,2383,1,0,0,0,2420,2395, + 1,0,0,0,2420,2406,1,0,0,0,2421,395,1,0,0,0,2422,2427,3,412,206,0, + 2423,2424,5,64,0,0,2424,2426,3,412,206,0,2425,2423,1,0,0,0,2426, + 2429,1,0,0,0,2427,2425,1,0,0,0,2427,2428,1,0,0,0,2428,397,1,0,0, + 0,2429,2427,1,0,0,0,2430,2431,3,56,28,0,2431,2433,5,90,0,0,2432, + 2434,3,40,20,0,2433,2432,1,0,0,0,2433,2434,1,0,0,0,2434,2435,1,0, + 0,0,2435,2436,5,102,0,0,2436,2478,1,0,0,0,2437,2438,3,10,5,0,2438, + 2440,5,90,0,0,2439,2441,3,40,20,0,2440,2439,1,0,0,0,2440,2441,1, + 0,0,0,2441,2442,1,0,0,0,2442,2443,5,102,0,0,2443,2478,1,0,0,0,2444, + 2445,3,350,175,0,2445,2447,5,90,0,0,2446,2448,3,40,20,0,2447,2446, + 1,0,0,0,2447,2448,1,0,0,0,2448,2449,1,0,0,0,2449,2450,5,102,0,0, + 2450,2478,1,0,0,0,2451,2452,5,40,0,0,2452,2454,5,90,0,0,2453,2455, + 3,40,20,0,2454,2453,1,0,0,0,2454,2455,1,0,0,0,2455,2456,1,0,0,0, + 2456,2478,5,102,0,0,2457,2458,3,52,26,0,2458,2459,5,65,0,0,2459, + 2460,5,40,0,0,2460,2462,5,90,0,0,2461,2463,3,40,20,0,2462,2461,1, + 0,0,0,2462,2463,1,0,0,0,2463,2464,1,0,0,0,2464,2465,5,102,0,0,2465, + 2478,1,0,0,0,2466,2467,3,14,7,0,2467,2469,5,90,0,0,2468,2470,3,40, + 20,0,2469,2468,1,0,0,0,2469,2470,1,0,0,0,2470,2471,1,0,0,0,2471, + 2472,5,31,0,0,2472,2478,1,0,0,0,2473,2474,3,28,14,0,2474,2475,5, + 90,0,0,2475,2476,5,31,0,0,2476,2478,1,0,0,0,2477,2430,1,0,0,0,2477, + 2437,1,0,0,0,2477,2444,1,0,0,0,2477,2451,1,0,0,0,2477,2457,1,0,0, + 0,2477,2466,1,0,0,0,2477,2473,1,0,0,0,2478,399,1,0,0,0,2479,2481, + 5,90,0,0,2480,2482,3,40,20,0,2481,2480,1,0,0,0,2481,2482,1,0,0,0, + 2482,2483,1,0,0,0,2483,2484,5,102,0,0,2484,401,1,0,0,0,2485,2486, + 3,56,28,0,2486,2488,5,90,0,0,2487,2489,3,40,20,0,2488,2487,1,0,0, + 0,2488,2489,1,0,0,0,2489,2490,1,0,0,0,2490,2491,5,102,0,0,2491,2526, + 1,0,0,0,2492,2493,3,10,5,0,2493,2495,5,90,0,0,2494,2496,3,40,20, + 0,2495,2494,1,0,0,0,2495,2496,1,0,0,0,2496,2497,1,0,0,0,2497,2498, + 5,102,0,0,2498,2526,1,0,0,0,2499,2500,5,40,0,0,2500,2502,5,90,0, + 0,2501,2503,3,40,20,0,2502,2501,1,0,0,0,2502,2503,1,0,0,0,2503,2504, + 1,0,0,0,2504,2526,5,102,0,0,2505,2506,3,52,26,0,2506,2507,5,65,0, + 0,2507,2508,5,40,0,0,2508,2510,5,90,0,0,2509,2511,3,40,20,0,2510, + 2509,1,0,0,0,2510,2511,1,0,0,0,2511,2512,1,0,0,0,2512,2513,5,102, + 0,0,2513,2526,1,0,0,0,2514,2515,3,14,7,0,2515,2517,5,90,0,0,2516, + 2518,3,40,20,0,2517,2516,1,0,0,0,2517,2518,1,0,0,0,2518,2519,1,0, + 0,0,2519,2520,5,31,0,0,2520,2526,1,0,0,0,2521,2522,3,28,14,0,2522, + 2523,5,90,0,0,2523,2524,5,31,0,0,2524,2526,1,0,0,0,2525,2485,1,0, + 0,0,2525,2492,1,0,0,0,2525,2499,1,0,0,0,2525,2505,1,0,0,0,2525,2514, + 1,0,0,0,2525,2521,1,0,0,0,2526,403,1,0,0,0,2527,2528,5,31,0,0,2528, + 2529,3,2,1,0,2529,2531,3,406,203,0,2530,2532,3,30,15,0,2531,2530, + 1,0,0,0,2531,2532,1,0,0,0,2532,2550,1,0,0,0,2533,2534,5,31,0,0,2534, + 2535,3,12,6,0,2535,2537,3,406,203,0,2536,2538,3,30,15,0,2537,2536, + 1,0,0,0,2537,2538,1,0,0,0,2538,2550,1,0,0,0,2539,2540,5,31,0,0,2540, + 2541,3,2,1,0,2541,2542,3,30,15,0,2542,2543,3,246,123,0,2543,2550, + 1,0,0,0,2544,2545,5,31,0,0,2545,2546,3,12,6,0,2546,2547,3,30,15, + 0,2547,2548,3,246,123,0,2548,2550,1,0,0,0,2549,2527,1,0,0,0,2549, + 2533,1,0,0,0,2549,2539,1,0,0,0,2549,2544,1,0,0,0,2550,405,1,0,0, + 0,2551,2555,3,408,204,0,2552,2554,3,408,204,0,2553,2552,1,0,0,0, + 2554,2557,1,0,0,0,2555,2553,1,0,0,0,2555,2556,1,0,0,0,2556,407,1, + 0,0,0,2557,2555,1,0,0,0,2558,2560,3,228,114,0,2559,2558,1,0,0,0, + 2560,2563,1,0,0,0,2561,2559,1,0,0,0,2561,2562,1,0,0,0,2562,2564, + 1,0,0,0,2563,2561,1,0,0,0,2564,2565,5,61,0,0,2565,2566,3,412,206, + 0,2566,2567,5,62,0,0,2567,409,1,0,0,0,2568,2569,3,412,206,0,2569, + 411,1,0,0,0,2570,2573,3,414,207,0,2571,2573,3,422,211,0,2572,2570, + 1,0,0,0,2572,2571,1,0,0,0,2573,413,1,0,0,0,2574,2575,3,416,208,0, + 2575,2576,5,89,0,0,2576,2577,3,420,210,0,2577,415,1,0,0,0,2578,2589, + 5,102,0,0,2579,2581,5,57,0,0,2580,2582,3,148,74,0,2581,2580,1,0, + 0,0,2581,2582,1,0,0,0,2582,2583,1,0,0,0,2583,2589,5,58,0,0,2584, + 2585,5,57,0,0,2585,2586,3,418,209,0,2586,2587,5,58,0,0,2587,2589, + 1,0,0,0,2588,2578,1,0,0,0,2588,2579,1,0,0,0,2588,2584,1,0,0,0,2589, + 417,1,0,0,0,2590,2595,5,102,0,0,2591,2592,5,64,0,0,2592,2594,5,102, + 0,0,2593,2591,1,0,0,0,2594,2597,1,0,0,0,2595,2593,1,0,0,0,2595,2596, + 1,0,0,0,2596,419,1,0,0,0,2597,2595,1,0,0,0,2598,2601,3,412,206,0, + 2599,2601,3,250,125,0,2600,2598,1,0,0,0,2600,2599,1,0,0,0,2601,421, + 1,0,0,0,2602,2605,3,430,215,0,2603,2605,3,424,212,0,2604,2602,1, + 0,0,0,2604,2603,1,0,0,0,2605,423,1,0,0,0,2606,2607,3,426,213,0,2607, + 2608,3,428,214,0,2608,2609,3,412,206,0,2609,425,1,0,0,0,2610,2614, + 3,56,28,0,2611,2614,3,378,189,0,2612,2614,3,384,192,0,2613,2610, + 1,0,0,0,2613,2611,1,0,0,0,2613,2612,1,0,0,0,2614,427,1,0,0,0,2615, + 2616,7,3,0,0,2616,429,1,0,0,0,2617,2625,3,432,216,0,2618,2619,3, + 432,216,0,2619,2620,5,71,0,0,2620,2621,3,412,206,0,2621,2622,5,72, + 0,0,2622,2623,3,430,215,0,2623,2625,1,0,0,0,2624,2617,1,0,0,0,2624, + 2618,1,0,0,0,2625,431,1,0,0,0,2626,2627,6,216,-1,0,2627,2628,3,434, + 217,0,2628,2634,1,0,0,0,2629,2630,10,1,0,0,2630,2631,5,78,0,0,2631, + 2633,3,434,217,0,2632,2629,1,0,0,0,2633,2636,1,0,0,0,2634,2632,1, + 0,0,0,2634,2635,1,0,0,0,2635,433,1,0,0,0,2636,2634,1,0,0,0,2637, + 2638,6,217,-1,0,2638,2639,3,436,218,0,2639,2645,1,0,0,0,2640,2641, + 10,1,0,0,2641,2642,5,77,0,0,2642,2644,3,436,218,0,2643,2640,1,0, + 0,0,2644,2647,1,0,0,0,2645,2643,1,0,0,0,2645,2646,1,0,0,0,2646,435, + 1,0,0,0,2647,2645,1,0,0,0,2648,2649,6,218,-1,0,2649,2650,3,438,219, + 0,2650,2656,1,0,0,0,2651,2652,10,1,0,0,2652,2653,5,86,0,0,2653,2655, + 3,438,219,0,2654,2651,1,0,0,0,2655,2658,1,0,0,0,2656,2654,1,0,0, + 0,2656,2657,1,0,0,0,2657,437,1,0,0,0,2658,2656,1,0,0,0,2659,2660, + 6,219,-1,0,2660,2661,3,440,220,0,2661,2667,1,0,0,0,2662,2663,10, + 1,0,0,2663,2664,5,87,0,0,2664,2666,3,440,220,0,2665,2662,1,0,0,0, + 2666,2669,1,0,0,0,2667,2665,1,0,0,0,2667,2668,1,0,0,0,2668,439,1, + 0,0,0,2669,2667,1,0,0,0,2670,2671,6,220,-1,0,2671,2672,3,442,221, + 0,2672,2678,1,0,0,0,2673,2674,10,1,0,0,2674,2675,5,85,0,0,2675,2677, + 3,442,221,0,2676,2673,1,0,0,0,2677,2680,1,0,0,0,2678,2676,1,0,0, + 0,2678,2679,1,0,0,0,2679,441,1,0,0,0,2680,2678,1,0,0,0,2681,2682, + 6,221,-1,0,2682,2683,3,444,222,0,2683,2692,1,0,0,0,2684,2685,10, + 2,0,0,2685,2686,5,73,0,0,2686,2691,3,444,222,0,2687,2688,10,1,0, + 0,2688,2689,5,76,0,0,2689,2691,3,444,222,0,2690,2684,1,0,0,0,2690, + 2687,1,0,0,0,2691,2694,1,0,0,0,2692,2690,1,0,0,0,2692,2693,1,0,0, + 0,2693,443,1,0,0,0,2694,2692,1,0,0,0,2695,2696,6,222,-1,0,2696,2697, + 3,446,223,0,2697,2715,1,0,0,0,2698,2699,10,5,0,0,2699,2700,5,68, + 0,0,2700,2714,3,446,223,0,2701,2702,10,4,0,0,2702,2703,5,67,0,0, + 2703,2714,3,446,223,0,2704,2705,10,3,0,0,2705,2706,5,74,0,0,2706, + 2714,3,446,223,0,2707,2708,10,2,0,0,2708,2709,5,75,0,0,2709,2714, + 3,446,223,0,2710,2711,10,1,0,0,2711,2712,5,26,0,0,2712,2714,3,10, + 5,0,2713,2698,1,0,0,0,2713,2701,1,0,0,0,2713,2704,1,0,0,0,2713,2707, + 1,0,0,0,2713,2710,1,0,0,0,2714,2717,1,0,0,0,2715,2713,1,0,0,0,2715, + 2716,1,0,0,0,2716,445,1,0,0,0,2717,2715,1,0,0,0,2718,2719,6,223, + -1,0,2719,2720,3,448,224,0,2720,2736,1,0,0,0,2721,2722,10,3,0,0, + 2722,2723,5,68,0,0,2723,2724,5,68,0,0,2724,2735,3,448,224,0,2725, + 2726,10,2,0,0,2726,2727,5,67,0,0,2727,2728,5,67,0,0,2728,2735,3, + 448,224,0,2729,2730,10,1,0,0,2730,2731,5,67,0,0,2731,2732,5,67,0, + 0,2732,2733,5,67,0,0,2733,2735,3,448,224,0,2734,2721,1,0,0,0,2734, + 2725,1,0,0,0,2734,2729,1,0,0,0,2735,2738,1,0,0,0,2736,2734,1,0,0, + 0,2736,2737,1,0,0,0,2737,447,1,0,0,0,2738,2736,1,0,0,0,2739,2740, + 6,224,-1,0,2740,2741,3,450,225,0,2741,2750,1,0,0,0,2742,2743,10, + 2,0,0,2743,2744,5,81,0,0,2744,2749,3,450,225,0,2745,2746,10,1,0, + 0,2746,2747,5,82,0,0,2747,2749,3,450,225,0,2748,2742,1,0,0,0,2748, + 2745,1,0,0,0,2749,2752,1,0,0,0,2750,2748,1,0,0,0,2750,2751,1,0,0, + 0,2751,449,1,0,0,0,2752,2750,1,0,0,0,2753,2754,6,225,-1,0,2754,2755, + 3,452,226,0,2755,2767,1,0,0,0,2756,2757,10,3,0,0,2757,2758,5,83, + 0,0,2758,2766,3,452,226,0,2759,2760,10,2,0,0,2760,2761,5,84,0,0, + 2761,2766,3,452,226,0,2762,2763,10,1,0,0,2763,2764,5,88,0,0,2764, + 2766,3,452,226,0,2765,2756,1,0,0,0,2765,2759,1,0,0,0,2765,2762,1, + 0,0,0,2766,2769,1,0,0,0,2767,2765,1,0,0,0,2767,2768,1,0,0,0,2768, + 451,1,0,0,0,2769,2767,1,0,0,0,2770,2778,3,454,227,0,2771,2778,3, + 456,228,0,2772,2773,5,81,0,0,2773,2778,3,452,226,0,2774,2775,5,82, + 0,0,2775,2778,3,452,226,0,2776,2778,3,458,229,0,2777,2770,1,0,0, + 0,2777,2771,1,0,0,0,2777,2772,1,0,0,0,2777,2774,1,0,0,0,2777,2776, + 1,0,0,0,2778,453,1,0,0,0,2779,2780,5,79,0,0,2780,2781,3,452,226, + 0,2781,455,1,0,0,0,2782,2783,5,80,0,0,2783,2784,3,452,226,0,2784, + 457,1,0,0,0,2785,2792,3,460,230,0,2786,2787,5,70,0,0,2787,2792,3, + 452,226,0,2788,2789,5,69,0,0,2789,2792,3,452,226,0,2790,2792,3,470, + 235,0,2791,2785,1,0,0,0,2791,2786,1,0,0,0,2791,2788,1,0,0,0,2791, + 2790,1,0,0,0,2792,459,1,0,0,0,2793,2796,3,350,175,0,2794,2796,3, + 56,28,0,2795,2793,1,0,0,0,2795,2794,1,0,0,0,2796,2801,1,0,0,0,2797, + 2800,3,464,232,0,2798,2800,3,468,234,0,2799,2797,1,0,0,0,2799,2798, + 1,0,0,0,2800,2803,1,0,0,0,2801,2799,1,0,0,0,2801,2802,1,0,0,0,2802, + 461,1,0,0,0,2803,2801,1,0,0,0,2804,2805,3,460,230,0,2805,2806,5, + 79,0,0,2806,463,1,0,0,0,2807,2808,5,79,0,0,2808,465,1,0,0,0,2809, + 2810,3,460,230,0,2810,2811,5,80,0,0,2811,467,1,0,0,0,2812,2813,5, + 80,0,0,2813,469,1,0,0,0,2814,2815,5,57,0,0,2815,2816,3,2,1,0,2816, + 2817,5,58,0,0,2817,2818,3,452,226,0,2818,2842,1,0,0,0,2819,2820, + 5,57,0,0,2820,2824,3,10,5,0,2821,2823,3,38,19,0,2822,2821,1,0,0, + 0,2823,2826,1,0,0,0,2824,2822,1,0,0,0,2824,2825,1,0,0,0,2825,2827, + 1,0,0,0,2826,2824,1,0,0,0,2827,2828,5,58,0,0,2828,2829,3,458,229, + 0,2829,2842,1,0,0,0,2830,2831,5,57,0,0,2831,2835,3,10,5,0,2832,2834, + 3,38,19,0,2833,2832,1,0,0,0,2834,2837,1,0,0,0,2835,2833,1,0,0,0, + 2835,2836,1,0,0,0,2836,2838,1,0,0,0,2837,2835,1,0,0,0,2838,2839, + 5,58,0,0,2839,2840,3,414,207,0,2840,2842,1,0,0,0,2841,2814,1,0,0, + 0,2841,2819,1,0,0,0,2841,2830,1,0,0,0,2842,471,1,0,0,0,322,477,484, + 488,492,501,505,509,511,517,522,529,534,536,542,547,552,557,568, + 582,587,595,602,608,613,624,627,641,646,651,656,662,672,680,690, + 698,710,714,719,725,733,746,775,779,784,790,793,796,808,819,833, + 840,849,856,861,876,883,889,893,897,901,905,910,914,918,920,925, + 932,937,939,945,950,954,973,978,994,999,1005,1011,1013,1017,1022, + 1026,1034,1041,1049,1052,1057,1065,1070,1077,1084,1089,1095,1107, + 1112,1116,1126,1131,1139,1142,1147,1155,1158,1163,1168,1173,1178, + 1185,1190,1198,1203,1208,1213,1219,1225,1228,1231,1240,1246,1252, + 1255,1258,1266,1271,1276,1282,1285,1296,1305,1315,1320,1331,1336, + 1348,1353,1365,1375,1380,1388,1391,1398,1406,1412,1421,1431,1435, + 1438,1447,1461,1464,1473,1478,1485,1490,1498,1510,1517,1531,1553, + 1587,1599,1605,1617,1630,1656,1660,1665,1669,1673,1681,1685,1689, + 1696,1705,1713,1728,1740,1746,1752,1773,1778,1784,1796,1807,1817, + 1820,1825,1834,1840,1850,1855,1864,1887,1897,1919,1926,1934,1942, + 1953,1976,1986,1997,2019,2023,2028,2036,2042,2046,2050,2054,2060, + 2065,2070,2074,2078,2084,2089,2094,2098,2102,2104,2109,2114,2119, + 2123,2127,2131,2136,2144,2150,2154,2158,2162,2168,2173,2178,2182, + 2186,2188,2193,2208,2222,2234,2243,2258,2271,2280,2286,2293,2298, + 2305,2310,2317,2322,2329,2334,2342,2347,2351,2355,2360,2367,2374, + 2379,2386,2391,2398,2403,2411,2416,2420,2427,2433,2440,2447,2454, + 2462,2469,2477,2481,2488,2495,2502,2510,2517,2525,2531,2537,2549, + 2555,2561,2572,2581,2588,2595,2600,2604,2613,2624,2634,2645,2656, + 2667,2678,2690,2692,2713,2715,2734,2736,2748,2750,2765,2767,2777, + 2791,2795,2799,2801,2824,2835,2841 + ] class Java8Parser ( Parser ): @@ -2085,7 +1677,7 @@ class Java8Parser ( Parser ): def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None @@ -2093,6 +1685,7 @@ def __init__(self, input:TokenStream, output:TextIO = sys.stdout): class LiteralContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2145,7 +1738,7 @@ def literal(self): self.enterOuterAlt(localctx, 1) self.state = 472 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 141863388262170624) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2160,6 +1753,7 @@ def literal(self): class PrimitiveTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2213,7 +1807,7 @@ def primitiveType(self): self.state = 477 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 474 self.annotation() self.state = 479 @@ -2229,7 +1823,7 @@ def primitiveType(self): self.state = 484 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 481 self.annotation() self.state = 486 @@ -2251,6 +1845,7 @@ def primitiveType(self): class NumericTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2292,12 +1887,12 @@ def numericType(self): self.state = 492 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.INT, Java8Parser.LONG, Java8Parser.SHORT]: + if token in [5, 8, 27, 29, 37]: self.enterOuterAlt(localctx, 1) self.state = 490 self.integralType() pass - elif token in [Java8Parser.DOUBLE, Java8Parser.FLOAT]: + elif token in [14, 20]: self.enterOuterAlt(localctx, 2) self.state = 491 self.floatingPointType() @@ -2315,6 +1910,7 @@ def numericType(self): class IntegralTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2364,7 +1960,7 @@ def integralType(self): self.enterOuterAlt(localctx, 1) self.state = 494 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.SHORT))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 138110042400) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2379,6 +1975,7 @@ def integralType(self): class FloatingPointTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2419,7 +2016,7 @@ def floatingPointType(self): self.enterOuterAlt(localctx, 1) self.state = 496 _la = self._input.LA(1) - if not(_la==Java8Parser.DOUBLE or _la==Java8Parser.FLOAT): + if not(_la==14 or _la==20): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2434,6 +2031,7 @@ def floatingPointType(self): class ReferenceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2508,6 +2106,7 @@ def referenceType(self): class ClassOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2608,6 +2207,7 @@ def classOrInterfaceType(self): class ClassTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2668,7 +2268,7 @@ def classType(self): self.state = 517 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 514 self.annotation() self.state = 519 @@ -2680,7 +2280,7 @@ def classType(self): self.state = 522 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 521 self.typeArguments() @@ -2696,7 +2296,7 @@ def classType(self): self.state = 529 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 526 self.annotation() self.state = 531 @@ -2708,7 +2308,7 @@ def classType(self): self.state = 534 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 533 self.typeArguments() @@ -2726,6 +2326,7 @@ def classType(self): class ClassType_lf_classOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2780,7 +2381,7 @@ def classType_lf_classOrInterfaceType(self): self.state = 542 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 539 self.annotation() self.state = 544 @@ -2807,6 +2408,7 @@ def classType_lf_classOrInterfaceType(self): class ClassType_lfno_classOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2856,7 +2458,7 @@ def classType_lfno_classOrInterfaceType(self): self.state = 552 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 549 self.annotation() self.state = 554 @@ -2883,6 +2485,7 @@ def classType_lfno_classOrInterfaceType(self): class InterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2930,6 +2533,7 @@ def interfaceType(self): class InterfaceType_lf_classOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2977,6 +2581,7 @@ def interfaceType_lf_classOrInterfaceType(self): class InterfaceType_lfno_classOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3024,6 +2629,7 @@ def interfaceType_lfno_classOrInterfaceType(self): class TypeVariableContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3069,7 +2675,7 @@ def typeVariable(self): self.state = 568 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 565 self.annotation() self.state = 570 @@ -3088,6 +2694,7 @@ def typeVariable(self): class ArrayTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3172,6 +2779,7 @@ def arrayType(self): class DimsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3226,7 +2834,7 @@ def dims(self): self.state = 587 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 584 self.annotation() self.state = 589 @@ -3245,7 +2853,7 @@ def dims(self): self.state = 595 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 592 self.annotation() self.state = 597 @@ -3270,6 +2878,7 @@ def dims(self): class TypeParameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3319,7 +2928,7 @@ def typeParameter(self): self.state = 608 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 605 self.typeParameterModifier() self.state = 610 @@ -3331,7 +2940,7 @@ def typeParameter(self): self.state = 613 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.EXTENDS: + if _la==17: self.state = 612 self.typeBound() @@ -3346,6 +2955,7 @@ def typeParameter(self): class TypeParameterModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3393,6 +3003,7 @@ def typeParameterModifier(self): class TypeBoundContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3462,7 +3073,7 @@ def typeBound(self): self.state = 624 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.BITAND: + while _la==85: self.state = 621 self.additionalBound() self.state = 626 @@ -3482,6 +3093,7 @@ def typeBound(self): class AdditionalBoundContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3534,6 +3146,7 @@ def additionalBound(self): class TypeArgumentsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3591,6 +3204,7 @@ def typeArguments(self): class TypeArgumentListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3641,7 +3255,7 @@ def typeArgumentList(self): self.state = 641 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.COMMA: + while _la==64: self.state = 637 self.match(Java8Parser.COMMA) self.state = 638 @@ -3660,6 +3274,7 @@ def typeArgumentList(self): class TypeArgumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3724,6 +3339,7 @@ def typeArgument(self): class WildcardContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3773,7 +3389,7 @@ def wildcard(self): self.state = 651 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 648 self.annotation() self.state = 653 @@ -3785,7 +3401,7 @@ def wildcard(self): self.state = 656 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.EXTENDS or _la==Java8Parser.SUPER: + if _la==17 or _la==40: self.state = 655 self.wildcardBounds() @@ -3800,6 +3416,7 @@ def wildcard(self): class WildcardBoundsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3843,14 +3460,14 @@ def wildcardBounds(self): self.state = 662 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.EXTENDS]: + if token in [17]: self.enterOuterAlt(localctx, 1) self.state = 658 self.match(Java8Parser.EXTENDS) self.state = 659 self.referenceType() pass - elif token in [Java8Parser.SUPER]: + elif token in [40]: self.enterOuterAlt(localctx, 2) self.state = 660 self.match(Java8Parser.SUPER) @@ -3870,6 +3487,7 @@ def wildcardBounds(self): class PackageNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3948,6 +3566,7 @@ def packageName(self, _p:int=0): class TypeNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4018,6 +3637,7 @@ def typeName(self): class PackageOrTypeNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4096,6 +3716,7 @@ def packageOrTypeName(self, _p:int=0): class ExpressionNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4166,6 +3787,7 @@ def expressionName(self): class MethodNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4212,6 +3834,7 @@ def methodName(self): class AmbiguousNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4290,6 +3913,7 @@ def ambiguousName(self, _p:int=0): class CompilationUnitContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4354,7 +3978,7 @@ def compilationUnit(self): self.state = 719 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.IMPORT: + while _la==25: self.state = 716 self.importDeclaration() self.state = 721 @@ -4364,7 +3988,7 @@ def compilationUnit(self): self.state = 725 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SEMI))) != 0) or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -9223371151822749182) != 0) or _la==103: self.state = 722 self.typeDeclaration() self.state = 727 @@ -4383,6 +4007,7 @@ def compilationUnit(self): class PackageDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4435,7 +4060,7 @@ def packageDeclaration(self): self.state = 733 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 730 self.packageModifier() self.state = 735 @@ -4458,6 +4083,7 @@ def packageDeclaration(self): class PackageModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4505,6 +4131,7 @@ def packageModifier(self): class ImportDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4589,6 +4216,7 @@ def importDeclaration(self): class SingleTypeImportDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4646,6 +4274,7 @@ def singleTypeImportDeclaration(self): class TypeImportOnDemandDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4713,6 +4342,7 @@ def typeImportOnDemandDeclaration(self): class SingleStaticImportDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4785,6 +4415,7 @@ def singleStaticImportDeclaration(self): class StaticImportOnDemandDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4857,6 +4488,7 @@ def staticImportOnDemandDeclaration(self): class TypeDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4930,6 +4562,7 @@ def typeDeclaration(self): class ClassDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4994,6 +4627,7 @@ def classDeclaration(self): class NormalClassDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5058,7 +4692,7 @@ def normalClassDeclaration(self): self.state = 784 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP))) != 0) or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 884763525122) != 0) or _la==103: self.state = 781 self.classModifier() self.state = 786 @@ -5072,7 +4706,7 @@ def normalClassDeclaration(self): self.state = 790 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 789 self.typeParameters() @@ -5080,7 +4714,7 @@ def normalClassDeclaration(self): self.state = 793 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.EXTENDS: + if _la==17: self.state = 792 self.superclass() @@ -5088,7 +4722,7 @@ def normalClassDeclaration(self): self.state = 796 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.IMPLEMENTS: + if _la==24: self.state = 795 self.superinterfaces() @@ -5105,6 +4739,7 @@ def normalClassDeclaration(self): class ClassModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5163,42 +4798,42 @@ def classModifier(self): self.state = 808 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.AT]: + if token in [103]: self.enterOuterAlt(localctx, 1) self.state = 800 self.annotation() pass - elif token in [Java8Parser.PUBLIC]: + elif token in [35]: self.enterOuterAlt(localctx, 2) self.state = 801 self.match(Java8Parser.PUBLIC) pass - elif token in [Java8Parser.PROTECTED]: + elif token in [34]: self.enterOuterAlt(localctx, 3) self.state = 802 self.match(Java8Parser.PROTECTED) pass - elif token in [Java8Parser.PRIVATE]: + elif token in [33]: self.enterOuterAlt(localctx, 4) self.state = 803 self.match(Java8Parser.PRIVATE) pass - elif token in [Java8Parser.ABSTRACT]: + elif token in [1]: self.enterOuterAlt(localctx, 5) self.state = 804 self.match(Java8Parser.ABSTRACT) pass - elif token in [Java8Parser.STATIC]: + elif token in [38]: self.enterOuterAlt(localctx, 6) self.state = 805 self.match(Java8Parser.STATIC) pass - elif token in [Java8Parser.FINAL]: + elif token in [18]: self.enterOuterAlt(localctx, 7) self.state = 806 self.match(Java8Parser.FINAL) pass - elif token in [Java8Parser.STRICTFP]: + elif token in [39]: self.enterOuterAlt(localctx, 8) self.state = 807 self.match(Java8Parser.STRICTFP) @@ -5216,6 +4851,7 @@ def classModifier(self): class TypeParametersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5273,6 +4909,7 @@ def typeParameters(self): class TypeParameterListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5323,7 +4960,7 @@ def typeParameterList(self): self.state = 819 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.COMMA: + while _la==64: self.state = 815 self.match(Java8Parser.COMMA) self.state = 816 @@ -5342,6 +4979,7 @@ def typeParameterList(self): class SuperclassContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5394,6 +5032,7 @@ def superclass(self): class SuperinterfacesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5446,6 +5085,7 @@ def superinterfaces(self): class InterfaceTypeListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5496,7 +5136,7 @@ def interfaceTypeList(self): self.state = 833 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.COMMA: + while _la==64: self.state = 829 self.match(Java8Parser.COMMA) self.state = 830 @@ -5515,6 +5155,7 @@ def interfaceTypeList(self): class ClassBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5565,7 +5206,7 @@ def classBody(self): self.state = 840 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NATIVE) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.TRANSIENT) | (1 << Java8Parser.VOID) | (1 << Java8Parser.VOLATILE) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (Java8Parser.LT - 68)) | (1 << (Java8Parser.Identifier - 68)) | (1 << (Java8Parser.AT - 68)))) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8645991068613655766) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 51539607553) != 0): self.state = 837 self.classBodyDeclaration() self.state = 842 @@ -5584,6 +5225,7 @@ def classBody(self): class ClassBodyDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5668,6 +5310,7 @@ def classBodyDeclaration(self): class ClassMemberDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5761,6 +5404,7 @@ def classMemberDeclaration(self): class FieldDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5814,7 +5458,7 @@ def fieldDeclaration(self): self.state = 861 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.FINAL) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.TRANSIENT) | (1 << Java8Parser.VOLATILE))) != 0) or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 633653705310208) != 0) or _la==103: self.state = 858 self.fieldModifier() self.state = 863 @@ -5837,6 +5481,7 @@ def fieldDeclaration(self): class FieldModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5895,42 +5540,42 @@ def fieldModifier(self): self.state = 876 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.AT]: + if token in [103]: self.enterOuterAlt(localctx, 1) self.state = 868 self.annotation() pass - elif token in [Java8Parser.PUBLIC]: + elif token in [35]: self.enterOuterAlt(localctx, 2) self.state = 869 self.match(Java8Parser.PUBLIC) pass - elif token in [Java8Parser.PROTECTED]: + elif token in [34]: self.enterOuterAlt(localctx, 3) self.state = 870 self.match(Java8Parser.PROTECTED) pass - elif token in [Java8Parser.PRIVATE]: + elif token in [33]: self.enterOuterAlt(localctx, 4) self.state = 871 self.match(Java8Parser.PRIVATE) pass - elif token in [Java8Parser.STATIC]: + elif token in [38]: self.enterOuterAlt(localctx, 5) self.state = 872 self.match(Java8Parser.STATIC) pass - elif token in [Java8Parser.FINAL]: + elif token in [18]: self.enterOuterAlt(localctx, 6) self.state = 873 self.match(Java8Parser.FINAL) pass - elif token in [Java8Parser.TRANSIENT]: + elif token in [46]: self.enterOuterAlt(localctx, 7) self.state = 874 self.match(Java8Parser.TRANSIENT) pass - elif token in [Java8Parser.VOLATILE]: + elif token in [49]: self.enterOuterAlt(localctx, 8) self.state = 875 self.match(Java8Parser.VOLATILE) @@ -5948,6 +5593,7 @@ def fieldModifier(self): class VariableDeclaratorListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5998,7 +5644,7 @@ def variableDeclaratorList(self): self.state = 883 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.COMMA: + while _la==64: self.state = 879 self.match(Java8Parser.COMMA) self.state = 880 @@ -6017,6 +5663,7 @@ def variableDeclaratorList(self): class VariableDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6065,7 +5712,7 @@ def variableDeclarator(self): self.state = 889 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.ASSIGN: + if _la==66: self.state = 887 self.match(Java8Parser.ASSIGN) self.state = 888 @@ -6082,6 +5729,7 @@ def variableDeclarator(self): class VariableDeclaratorIdContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6126,7 +5774,7 @@ def variableDeclaratorId(self): self.state = 893 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LBRACK or _la==Java8Parser.AT: + if _la==61 or _la==103: self.state = 892 self.dims() @@ -6141,6 +5789,7 @@ def variableDeclaratorId(self): class VariableInitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6182,12 +5831,12 @@ def variableInitializer(self): self.state = 897 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.NEW, Java8Parser.SHORT, Java8Parser.SUPER, Java8Parser.THIS, Java8Parser.VOID, Java8Parser.IntegerLiteral, Java8Parser.FloatingPointLiteral, Java8Parser.BooleanLiteral, Java8Parser.CharacterLiteral, Java8Parser.StringLiteral, Java8Parser.NullLiteral, Java8Parser.LPAREN, Java8Parser.BANG, Java8Parser.TILDE, Java8Parser.INC, Java8Parser.DEC, Java8Parser.ADD, Java8Parser.SUB, Java8Parser.Identifier, Java8Parser.AT]: + if token in [3, 5, 8, 14, 20, 27, 29, 31, 37, 40, 43, 48, 51, 52, 53, 54, 55, 56, 57, 69, 70, 79, 80, 81, 82, 102, 103]: self.enterOuterAlt(localctx, 1) self.state = 895 self.expression() pass - elif token in [Java8Parser.LBRACE]: + elif token in [59]: self.enterOuterAlt(localctx, 2) self.state = 896 self.arrayInitializer() @@ -6205,6 +5854,7 @@ def variableInitializer(self): class UnannTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6269,6 +5919,7 @@ def unannType(self): class UnannPrimitiveTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6309,12 +5960,12 @@ def unannPrimitiveType(self): self.state = 905 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.SHORT]: + if token in [5, 8, 14, 20, 27, 29, 37]: self.enterOuterAlt(localctx, 1) self.state = 903 self.numericType() pass - elif token in [Java8Parser.BOOLEAN]: + elif token in [3]: self.enterOuterAlt(localctx, 2) self.state = 904 self.match(Java8Parser.BOOLEAN) @@ -6332,6 +5983,7 @@ def unannPrimitiveType(self): class UnannReferenceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6406,6 +6058,7 @@ def unannReferenceType(self): class UnannClassOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6506,6 +6159,7 @@ def unannClassOrInterfaceType(self): class UnannClassTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6568,7 +6222,7 @@ def unannClassType(self): self.state = 925 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 924 self.typeArguments() @@ -6584,7 +6238,7 @@ def unannClassType(self): self.state = 932 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 929 self.annotation() self.state = 934 @@ -6596,7 +6250,7 @@ def unannClassType(self): self.state = 937 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 936 self.typeArguments() @@ -6614,6 +6268,7 @@ def unannClassType(self): class UnannClassType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6668,7 +6323,7 @@ def unannClassType_lf_unannClassOrInterfaceType(self): self.state = 945 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 942 self.annotation() self.state = 947 @@ -6680,7 +6335,7 @@ def unannClassType_lf_unannClassOrInterfaceType(self): self.state = 950 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 949 self.typeArguments() @@ -6695,6 +6350,7 @@ def unannClassType_lf_unannClassOrInterfaceType(self): class UnannClassType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6739,7 +6395,7 @@ def unannClassType_lfno_unannClassOrInterfaceType(self): self.state = 954 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 953 self.typeArguments() @@ -6754,6 +6410,7 @@ def unannClassType_lfno_unannClassOrInterfaceType(self): class UnannInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6801,6 +6458,7 @@ def unannInterfaceType(self): class UnannInterfaceType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6848,6 +6506,7 @@ def unannInterfaceType_lf_unannClassOrInterfaceType(self): class UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6895,6 +6554,7 @@ def unannInterfaceType_lfno_unannClassOrInterfaceType(self): class UnannTypeVariableContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6941,6 +6601,7 @@ def unannTypeVariable(self): class UnannArrayTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7025,6 +6686,7 @@ def unannArrayType(self): class MethodDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7075,7 +6737,7 @@ def methodDeclaration(self): self.state = 978 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.NATIVE) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SYNCHRONIZED))) != 0) or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 5283883778050) != 0) or _la==103: self.state = 975 self.methodModifier() self.state = 980 @@ -7096,6 +6758,7 @@ def methodDeclaration(self): class MethodModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7160,52 +6823,52 @@ def methodModifier(self): self.state = 994 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.AT]: + if token in [103]: self.enterOuterAlt(localctx, 1) self.state = 984 self.annotation() pass - elif token in [Java8Parser.PUBLIC]: + elif token in [35]: self.enterOuterAlt(localctx, 2) self.state = 985 self.match(Java8Parser.PUBLIC) pass - elif token in [Java8Parser.PROTECTED]: + elif token in [34]: self.enterOuterAlt(localctx, 3) self.state = 986 self.match(Java8Parser.PROTECTED) pass - elif token in [Java8Parser.PRIVATE]: + elif token in [33]: self.enterOuterAlt(localctx, 4) self.state = 987 self.match(Java8Parser.PRIVATE) pass - elif token in [Java8Parser.ABSTRACT]: + elif token in [1]: self.enterOuterAlt(localctx, 5) self.state = 988 self.match(Java8Parser.ABSTRACT) pass - elif token in [Java8Parser.STATIC]: + elif token in [38]: self.enterOuterAlt(localctx, 6) self.state = 989 self.match(Java8Parser.STATIC) pass - elif token in [Java8Parser.FINAL]: + elif token in [18]: self.enterOuterAlt(localctx, 7) self.state = 990 self.match(Java8Parser.FINAL) pass - elif token in [Java8Parser.SYNCHRONIZED]: + elif token in [42]: self.enterOuterAlt(localctx, 8) self.state = 991 self.match(Java8Parser.SYNCHRONIZED) pass - elif token in [Java8Parser.NATIVE]: + elif token in [30]: self.enterOuterAlt(localctx, 9) self.state = 992 self.match(Java8Parser.NATIVE) pass - elif token in [Java8Parser.STRICTFP]: + elif token in [39]: self.enterOuterAlt(localctx, 10) self.state = 993 self.match(Java8Parser.STRICTFP) @@ -7223,6 +6886,7 @@ def methodModifier(self): class MethodHeaderContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7280,7 +6944,7 @@ def methodHeader(self): self.state = 1013 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.SHORT, Java8Parser.VOID, Java8Parser.Identifier]: + if token in [3, 5, 8, 14, 20, 27, 29, 37, 48, 102]: self.enterOuterAlt(localctx, 1) self.state = 996 self.result() @@ -7289,20 +6953,20 @@ def methodHeader(self): self.state = 999 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.THROWS: + if _la==45: self.state = 998 self.throws_() pass - elif token in [Java8Parser.LT]: + elif token in [68]: self.enterOuterAlt(localctx, 2) self.state = 1001 self.typeParameters() self.state = 1005 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 1002 self.annotation() self.state = 1007 @@ -7316,7 +6980,7 @@ def methodHeader(self): self.state = 1011 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.THROWS: + if _la==45: self.state = 1010 self.throws_() @@ -7335,6 +6999,7 @@ def methodHeader(self): class ResultContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7375,12 +7040,12 @@ def result(self): self.state = 1017 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.SHORT, Java8Parser.Identifier]: + if token in [3, 5, 8, 14, 20, 27, 29, 37, 102]: self.enterOuterAlt(localctx, 1) self.state = 1015 self.unannType() pass - elif token in [Java8Parser.VOID]: + elif token in [48]: self.enterOuterAlt(localctx, 2) self.state = 1016 self.match(Java8Parser.VOID) @@ -7398,6 +7063,7 @@ def result(self): class MethodDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7454,7 +7120,7 @@ def methodDeclarator(self): self.state = 1022 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.SHORT))) != 0) or _la==Java8Parser.Identifier or _la==Java8Parser.AT: + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 138111369512) != 0) or _la==102 or _la==103: self.state = 1021 self.formalParameterList() @@ -7464,7 +7130,7 @@ def methodDeclarator(self): self.state = 1026 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LBRACK or _la==Java8Parser.AT: + if _la==61 or _la==103: self.state = 1025 self.dims() @@ -7479,6 +7145,7 @@ def methodDeclarator(self): class FormalParameterListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7560,6 +7227,7 @@ def formalParameterList(self): class FormalParametersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7659,6 +7327,7 @@ def formalParameters(self): class FormalParameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7709,7 +7378,7 @@ def formalParameter(self): self.state = 1057 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: + while _la==18 or _la==103: self.state = 1054 self.variableModifier() self.state = 1059 @@ -7730,6 +7399,7 @@ def formalParameter(self): class VariableModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7770,12 +7440,12 @@ def variableModifier(self): self.state = 1065 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.AT]: + if token in [103]: self.enterOuterAlt(localctx, 1) self.state = 1063 self.annotation() pass - elif token in [Java8Parser.FINAL]: + elif token in [18]: self.enterOuterAlt(localctx, 2) self.state = 1064 self.match(Java8Parser.FINAL) @@ -7793,6 +7463,7 @@ def variableModifier(self): class LastFormalParameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7861,7 +7532,7 @@ def lastFormalParameter(self): self.state = 1070 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: + while _la==18 or _la==103: self.state = 1067 self.variableModifier() self.state = 1072 @@ -7873,7 +7544,7 @@ def lastFormalParameter(self): self.state = 1077 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 1074 self.annotation() self.state = 1079 @@ -7903,6 +7574,7 @@ def lastFormalParameter(self): class ReceiverParameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7958,7 +7630,7 @@ def receiverParameter(self): self.state = 1089 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 1086 self.annotation() self.state = 1091 @@ -7970,7 +7642,7 @@ def receiverParameter(self): self.state = 1095 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.Identifier: + if _la==102: self.state = 1093 self.match(Java8Parser.Identifier) self.state = 1094 @@ -7989,6 +7661,7 @@ def receiverParameter(self): class Throws_Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8041,6 +7714,7 @@ def throws_(self): class ExceptionTypeListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8091,7 +7765,7 @@ def exceptionTypeList(self): self.state = 1107 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.COMMA: + while _la==64: self.state = 1103 self.match(Java8Parser.COMMA) self.state = 1104 @@ -8110,6 +7784,7 @@ def exceptionTypeList(self): class ExceptionTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8174,6 +7849,7 @@ def exceptionType(self): class MethodBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8214,12 +7890,12 @@ def methodBody(self): self.state = 1116 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.LBRACE]: + if token in [59]: self.enterOuterAlt(localctx, 1) self.state = 1114 self.block() pass - elif token in [Java8Parser.SEMI]: + elif token in [63]: self.enterOuterAlt(localctx, 2) self.state = 1115 self.match(Java8Parser.SEMI) @@ -8237,6 +7913,7 @@ def methodBody(self): class InstanceInitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8284,6 +7961,7 @@ def instanceInitializer(self): class StaticInitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8336,6 +8014,7 @@ def staticInitializer(self): class ConstructorDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8390,7 +8069,7 @@ def constructorDeclaration(self): self.state = 1126 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC))) != 0) or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 60129542144) != 0) or _la==103: self.state = 1123 self.constructorModifier() self.state = 1128 @@ -8402,7 +8081,7 @@ def constructorDeclaration(self): self.state = 1131 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.THROWS: + if _la==45: self.state = 1130 self.throws_() @@ -8419,6 +8098,7 @@ def constructorDeclaration(self): class ConstructorModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8465,22 +8145,22 @@ def constructorModifier(self): self.state = 1139 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.AT]: + if token in [103]: self.enterOuterAlt(localctx, 1) self.state = 1135 self.annotation() pass - elif token in [Java8Parser.PUBLIC]: + elif token in [35]: self.enterOuterAlt(localctx, 2) self.state = 1136 self.match(Java8Parser.PUBLIC) pass - elif token in [Java8Parser.PROTECTED]: + elif token in [34]: self.enterOuterAlt(localctx, 3) self.state = 1137 self.match(Java8Parser.PROTECTED) pass - elif token in [Java8Parser.PRIVATE]: + elif token in [33]: self.enterOuterAlt(localctx, 4) self.state = 1138 self.match(Java8Parser.PRIVATE) @@ -8498,6 +8178,7 @@ def constructorModifier(self): class ConstructorDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8551,7 +8232,7 @@ def constructorDeclarator(self): self.state = 1142 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 1141 self.typeParameters() @@ -8563,7 +8244,7 @@ def constructorDeclarator(self): self.state = 1147 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.SHORT))) != 0) or _la==Java8Parser.Identifier or _la==Java8Parser.AT: + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 138111369512) != 0) or _la==102 or _la==103: self.state = 1146 self.formalParameterList() @@ -8580,6 +8261,7 @@ def constructorDeclarator(self): class SimpleTypeNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8626,6 +8308,7 @@ def simpleTypeName(self): class ConstructorBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8685,7 +8368,7 @@ def constructorBody(self): self.state = 1158 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.ASSERT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BREAK) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.CONTINUE) | (1 << Java8Parser.DO) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.FOR) | (1 << Java8Parser.IF) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.RETURN) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.SWITCH) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.THIS) | (1 << Java8Parser.THROW) | (1 << Java8Parser.TRY) | (1 << Java8Parser.VOID) | (1 << Java8Parser.WHILE) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -8359349417232995522) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 25165827) != 0): self.state = 1157 self.blockStatements() @@ -8702,6 +8385,7 @@ def constructorBody(self): class ExplicitConstructorInvocationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8775,7 +8459,7 @@ def explicitConstructorInvocation(self): self.state = 1163 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 1162 self.typeArguments() @@ -8787,7 +8471,7 @@ def explicitConstructorInvocation(self): self.state = 1168 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1167 self.argumentList() @@ -8803,7 +8487,7 @@ def explicitConstructorInvocation(self): self.state = 1173 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 1172 self.typeArguments() @@ -8815,7 +8499,7 @@ def explicitConstructorInvocation(self): self.state = 1178 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1177 self.argumentList() @@ -8835,7 +8519,7 @@ def explicitConstructorInvocation(self): self.state = 1185 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 1184 self.typeArguments() @@ -8847,7 +8531,7 @@ def explicitConstructorInvocation(self): self.state = 1190 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1189 self.argumentList() @@ -8867,7 +8551,7 @@ def explicitConstructorInvocation(self): self.state = 1198 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 1197 self.typeArguments() @@ -8879,7 +8563,7 @@ def explicitConstructorInvocation(self): self.state = 1203 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1202 self.argumentList() @@ -8901,6 +8585,7 @@ def explicitConstructorInvocation(self): class EnumDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -8957,7 +8642,7 @@ def enumDeclaration(self): self.state = 1213 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP))) != 0) or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 884763525122) != 0) or _la==103: self.state = 1210 self.classModifier() self.state = 1215 @@ -8971,7 +8656,7 @@ def enumDeclaration(self): self.state = 1219 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.IMPLEMENTS: + if _la==24: self.state = 1218 self.superinterfaces() @@ -8988,6 +8673,7 @@ def enumDeclaration(self): class EnumBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9042,7 +8728,7 @@ def enumBody(self): self.state = 1225 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.Identifier or _la==Java8Parser.AT: + if _la==102 or _la==103: self.state = 1224 self.enumConstantList() @@ -9050,7 +8736,7 @@ def enumBody(self): self.state = 1228 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.COMMA: + if _la==64: self.state = 1227 self.match(Java8Parser.COMMA) @@ -9058,7 +8744,7 @@ def enumBody(self): self.state = 1231 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.SEMI: + if _la==63: self.state = 1230 self.enumBodyDeclarations() @@ -9075,6 +8761,7 @@ def enumBody(self): class EnumConstantListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9144,6 +8831,7 @@ def enumConstantList(self): class EnumConstantContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9203,7 +8891,7 @@ def enumConstant(self): self.state = 1246 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 1243 self.enumConstantModifier() self.state = 1248 @@ -9215,13 +8903,13 @@ def enumConstant(self): self.state = 1255 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LPAREN: + if _la==57: self.state = 1250 self.match(Java8Parser.LPAREN) self.state = 1252 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1251 self.argumentList() @@ -9233,7 +8921,7 @@ def enumConstant(self): self.state = 1258 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LBRACE: + if _la==59: self.state = 1257 self.classBody() @@ -9248,6 +8936,7 @@ def enumConstant(self): class EnumConstantModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9295,6 +8984,7 @@ def enumConstantModifier(self): class EnumBodyDeclarationsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9342,7 +9032,7 @@ def enumBodyDeclarations(self): self.state = 1266 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NATIVE) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.TRANSIENT) | (1 << Java8Parser.VOID) | (1 << Java8Parser.VOLATILE) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (Java8Parser.LT - 68)) | (1 << (Java8Parser.Identifier - 68)) | (1 << (Java8Parser.AT - 68)))) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8645991068613655766) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 51539607553) != 0): self.state = 1263 self.classBodyDeclaration() self.state = 1268 @@ -9359,6 +9049,7 @@ def enumBodyDeclarations(self): class InterfaceDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9423,6 +9114,7 @@ def interfaceDeclaration(self): class NormalInterfaceDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9483,7 +9175,7 @@ def normalInterfaceDeclaration(self): self.state = 1276 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP))) != 0) or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 884763262978) != 0) or _la==103: self.state = 1273 self.interfaceModifier() self.state = 1278 @@ -9497,7 +9189,7 @@ def normalInterfaceDeclaration(self): self.state = 1282 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 1281 self.typeParameters() @@ -9505,7 +9197,7 @@ def normalInterfaceDeclaration(self): self.state = 1285 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.EXTENDS: + if _la==17: self.state = 1284 self.extendsInterfaces() @@ -9522,6 +9214,7 @@ def normalInterfaceDeclaration(self): class InterfaceModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9577,37 +9270,37 @@ def interfaceModifier(self): self.state = 1296 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.AT]: + if token in [103]: self.enterOuterAlt(localctx, 1) self.state = 1289 self.annotation() pass - elif token in [Java8Parser.PUBLIC]: + elif token in [35]: self.enterOuterAlt(localctx, 2) self.state = 1290 self.match(Java8Parser.PUBLIC) pass - elif token in [Java8Parser.PROTECTED]: + elif token in [34]: self.enterOuterAlt(localctx, 3) self.state = 1291 self.match(Java8Parser.PROTECTED) pass - elif token in [Java8Parser.PRIVATE]: + elif token in [33]: self.enterOuterAlt(localctx, 4) self.state = 1292 self.match(Java8Parser.PRIVATE) pass - elif token in [Java8Parser.ABSTRACT]: + elif token in [1]: self.enterOuterAlt(localctx, 5) self.state = 1293 self.match(Java8Parser.ABSTRACT) pass - elif token in [Java8Parser.STATIC]: + elif token in [38]: self.enterOuterAlt(localctx, 6) self.state = 1294 self.match(Java8Parser.STATIC) pass - elif token in [Java8Parser.STRICTFP]: + elif token in [39]: self.enterOuterAlt(localctx, 7) self.state = 1295 self.match(Java8Parser.STRICTFP) @@ -9625,6 +9318,7 @@ def interfaceModifier(self): class ExtendsInterfacesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9677,6 +9371,7 @@ def extendsInterfaces(self): class InterfaceBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9727,7 +9422,7 @@ def interfaceBody(self): self.state = 1305 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.DEFAULT) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.LONG) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.VOID) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (Java8Parser.LT - 68)) | (1 << (Java8Parser.Identifier - 68)) | (1 << (Java8Parser.AT - 68)))) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -9223089538734927062) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & 51539607553) != 0): self.state = 1302 self.interfaceMemberDeclaration() self.state = 1307 @@ -9746,6 +9441,7 @@ def interfaceBody(self): class InterfaceMemberDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9839,6 +9535,7 @@ def interfaceMemberDeclaration(self): class ConstantDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9892,7 +9589,7 @@ def constantDeclaration(self): self.state = 1320 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.FINAL) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC))) != 0) or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 309237907456) != 0) or _la==103: self.state = 1317 self.constantModifier() self.state = 1322 @@ -9915,6 +9612,7 @@ def constantDeclaration(self): class ConstantModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -9961,22 +9659,22 @@ def constantModifier(self): self.state = 1331 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.AT]: + if token in [103]: self.enterOuterAlt(localctx, 1) self.state = 1327 self.annotation() pass - elif token in [Java8Parser.PUBLIC]: + elif token in [35]: self.enterOuterAlt(localctx, 2) self.state = 1328 self.match(Java8Parser.PUBLIC) pass - elif token in [Java8Parser.STATIC]: + elif token in [38]: self.enterOuterAlt(localctx, 3) self.state = 1329 self.match(Java8Parser.STATIC) pass - elif token in [Java8Parser.FINAL]: + elif token in [18]: self.enterOuterAlt(localctx, 4) self.state = 1330 self.match(Java8Parser.FINAL) @@ -9994,6 +9692,7 @@ def constantModifier(self): class InterfaceMethodDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10044,7 +9743,7 @@ def interfaceMethodDeclaration(self): self.state = 1336 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.DEFAULT) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP))) != 0) or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 858993463298) != 0) or _la==103: self.state = 1333 self.interfaceMethodModifier() self.state = 1338 @@ -10065,6 +9764,7 @@ def interfaceMethodDeclaration(self): class InterfaceMethodModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10117,32 +9817,32 @@ def interfaceMethodModifier(self): self.state = 1348 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.AT]: + if token in [103]: self.enterOuterAlt(localctx, 1) self.state = 1342 self.annotation() pass - elif token in [Java8Parser.PUBLIC]: + elif token in [35]: self.enterOuterAlt(localctx, 2) self.state = 1343 self.match(Java8Parser.PUBLIC) pass - elif token in [Java8Parser.ABSTRACT]: + elif token in [1]: self.enterOuterAlt(localctx, 3) self.state = 1344 self.match(Java8Parser.ABSTRACT) pass - elif token in [Java8Parser.DEFAULT]: + elif token in [12]: self.enterOuterAlt(localctx, 4) self.state = 1345 self.match(Java8Parser.DEFAULT) pass - elif token in [Java8Parser.STATIC]: + elif token in [38]: self.enterOuterAlt(localctx, 5) self.state = 1346 self.match(Java8Parser.STATIC) pass - elif token in [Java8Parser.STRICTFP]: + elif token in [39]: self.enterOuterAlt(localctx, 6) self.state = 1347 self.match(Java8Parser.STRICTFP) @@ -10160,6 +9860,7 @@ def interfaceMethodModifier(self): class AnnotationTypeDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10240,6 +9941,7 @@ def annotationTypeDeclaration(self): class AnnotationTypeBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10290,7 +9992,7 @@ def annotationTypeBody(self): self.state = 1365 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.LONG) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SEMI))) != 0) or _la==Java8Parser.Identifier or _la==Java8Parser.AT: + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -9223371013711641814) != 0) or _la==102 or _la==103: self.state = 1362 self.annotationTypeMemberDeclaration() self.state = 1367 @@ -10309,6 +10011,7 @@ def annotationTypeBody(self): class AnnotationTypeMemberDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10402,6 +10105,7 @@ def annotationTypeMemberDeclaration(self): class AnnotationTypeElementDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10468,7 +10172,7 @@ def annotationTypeElementDeclaration(self): self.state = 1380 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.ABSTRACT or _la==Java8Parser.PUBLIC or _la==Java8Parser.AT: + while _la==1 or _la==35 or _la==103: self.state = 1377 self.annotationTypeElementModifier() self.state = 1382 @@ -10486,7 +10190,7 @@ def annotationTypeElementDeclaration(self): self.state = 1388 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LBRACK or _la==Java8Parser.AT: + if _la==61 or _la==103: self.state = 1387 self.dims() @@ -10494,7 +10198,7 @@ def annotationTypeElementDeclaration(self): self.state = 1391 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.DEFAULT: + if _la==12: self.state = 1390 self.defaultValue() @@ -10511,6 +10215,7 @@ def annotationTypeElementDeclaration(self): class AnnotationTypeElementModifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10554,17 +10259,17 @@ def annotationTypeElementModifier(self): self.state = 1398 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.AT]: + if token in [103]: self.enterOuterAlt(localctx, 1) self.state = 1395 self.annotation() pass - elif token in [Java8Parser.PUBLIC]: + elif token in [35]: self.enterOuterAlt(localctx, 2) self.state = 1396 self.match(Java8Parser.PUBLIC) pass - elif token in [Java8Parser.ABSTRACT]: + elif token in [1]: self.enterOuterAlt(localctx, 3) self.state = 1397 self.match(Java8Parser.ABSTRACT) @@ -10582,6 +10287,7 @@ def annotationTypeElementModifier(self): class DefaultValueContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10634,6 +10340,7 @@ def defaultValue(self): class AnnotationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10708,6 +10415,7 @@ def annotation(self): class NormalAnnotationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10766,7 +10474,7 @@ def normalAnnotation(self): self.state = 1412 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.Identifier: + if _la==102: self.state = 1411 self.elementValuePairList() @@ -10783,6 +10491,7 @@ def normalAnnotation(self): class ElementValuePairListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10833,7 +10542,7 @@ def elementValuePairList(self): self.state = 1421 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.COMMA: + while _la==64: self.state = 1417 self.match(Java8Parser.COMMA) self.state = 1418 @@ -10852,6 +10561,7 @@ def elementValuePairList(self): class ElementValuePairContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10909,6 +10619,7 @@ def elementValuePair(self): class ElementValueContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -10983,6 +10694,7 @@ def elementValue(self): class ElementValueArrayInitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11033,7 +10745,7 @@ def elementValueArrayInitializer(self): self.state = 1435 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 862730839481401640) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1434 self.elementValueList() @@ -11041,7 +10753,7 @@ def elementValueArrayInitializer(self): self.state = 1438 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.COMMA: + if _la==64: self.state = 1437 self.match(Java8Parser.COMMA) @@ -11058,6 +10770,7 @@ def elementValueArrayInitializer(self): class ElementValueListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11127,6 +10840,7 @@ def elementValueList(self): class MarkerAnnotationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11179,6 +10893,7 @@ def markerAnnotation(self): class SingleElementAnnotationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11247,6 +10962,7 @@ def singleElementAnnotation(self): class ArrayInitializerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11297,7 +11013,7 @@ def arrayInitializer(self): self.state = 1461 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 862730839481401640) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1460 self.variableInitializerList() @@ -11305,7 +11021,7 @@ def arrayInitializer(self): self.state = 1464 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.COMMA: + if _la==64: self.state = 1463 self.match(Java8Parser.COMMA) @@ -11322,6 +11038,7 @@ def arrayInitializer(self): class VariableInitializerListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11391,6 +11108,7 @@ def variableInitializerList(self): class BlockContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11438,7 +11156,7 @@ def block(self): self.state = 1478 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.ASSERT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BREAK) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.CONTINUE) | (1 << Java8Parser.DO) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.FOR) | (1 << Java8Parser.IF) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.RETURN) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.SWITCH) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.THIS) | (1 << Java8Parser.THROW) | (1 << Java8Parser.TRY) | (1 << Java8Parser.VOID) | (1 << Java8Parser.WHILE) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -8359349417232995522) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 25165827) != 0): self.state = 1477 self.blockStatements() @@ -11455,6 +11173,7 @@ def block(self): class BlockStatementsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11503,7 +11222,7 @@ def blockStatements(self): self.state = 1485 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.ASSERT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BREAK) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.CONTINUE) | (1 << Java8Parser.DO) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.FOR) | (1 << Java8Parser.IF) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.RETURN) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.SWITCH) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.THIS) | (1 << Java8Parser.THROW) | (1 << Java8Parser.TRY) | (1 << Java8Parser.VOID) | (1 << Java8Parser.WHILE) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0)): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & -8359349417232995522) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 25165827) != 0)): break except RecognitionException as re: @@ -11516,6 +11235,7 @@ def blockStatements(self): class BlockStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11590,6 +11310,7 @@ def blockStatement(self): class LocalVariableDeclarationStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11642,6 +11363,7 @@ def localVariableDeclarationStatement(self): class LocalVariableDeclarationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11692,7 +11414,7 @@ def localVariableDeclaration(self): self.state = 1498 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: + while _la==18 or _la==103: self.state = 1495 self.variableModifier() self.state = 1500 @@ -11713,6 +11435,7 @@ def localVariableDeclaration(self): class StatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11817,6 +11540,7 @@ def statement(self): class StatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11911,6 +11635,7 @@ def statementNoShortIf(self): class StatementWithoutTrailingSubstatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -11992,62 +11717,62 @@ def statementWithoutTrailingSubstatement(self): self.state = 1531 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.LBRACE]: + if token in [59]: self.enterOuterAlt(localctx, 1) self.state = 1519 self.block() pass - elif token in [Java8Parser.SEMI]: + elif token in [63]: self.enterOuterAlt(localctx, 2) self.state = 1520 self.emptyStatement() pass - elif token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.NEW, Java8Parser.SHORT, Java8Parser.SUPER, Java8Parser.THIS, Java8Parser.VOID, Java8Parser.IntegerLiteral, Java8Parser.FloatingPointLiteral, Java8Parser.BooleanLiteral, Java8Parser.CharacterLiteral, Java8Parser.StringLiteral, Java8Parser.NullLiteral, Java8Parser.LPAREN, Java8Parser.INC, Java8Parser.DEC, Java8Parser.Identifier, Java8Parser.AT]: + elif token in [3, 5, 8, 14, 20, 27, 29, 31, 37, 40, 43, 48, 51, 52, 53, 54, 55, 56, 57, 79, 80, 102, 103]: self.enterOuterAlt(localctx, 3) self.state = 1521 self.expressionStatement() pass - elif token in [Java8Parser.ASSERT]: + elif token in [2]: self.enterOuterAlt(localctx, 4) self.state = 1522 self.assertStatement() pass - elif token in [Java8Parser.SWITCH]: + elif token in [41]: self.enterOuterAlt(localctx, 5) self.state = 1523 self.switchStatement() pass - elif token in [Java8Parser.DO]: + elif token in [13]: self.enterOuterAlt(localctx, 6) self.state = 1524 self.doStatement() pass - elif token in [Java8Parser.BREAK]: + elif token in [4]: self.enterOuterAlt(localctx, 7) self.state = 1525 self.breakStatement() pass - elif token in [Java8Parser.CONTINUE]: + elif token in [11]: self.enterOuterAlt(localctx, 8) self.state = 1526 self.continueStatement() pass - elif token in [Java8Parser.RETURN]: + elif token in [36]: self.enterOuterAlt(localctx, 9) self.state = 1527 self.returnStatement() pass - elif token in [Java8Parser.SYNCHRONIZED]: + elif token in [42]: self.enterOuterAlt(localctx, 10) self.state = 1528 self.synchronizedStatement() pass - elif token in [Java8Parser.THROW]: + elif token in [44]: self.enterOuterAlt(localctx, 11) self.state = 1529 self.throwStatement() pass - elif token in [Java8Parser.TRY]: + elif token in [47]: self.enterOuterAlt(localctx, 12) self.state = 1530 self.tryStatement() @@ -12065,6 +11790,7 @@ def statementWithoutTrailingSubstatement(self): class EmptyStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12111,6 +11837,7 @@ def emptyStatement(self): class LabeledStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12168,6 +11895,7 @@ def labeledStatement(self): class LabeledStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12225,6 +11953,7 @@ def labeledStatementNoShortIf(self): class ExpressionStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12277,6 +12006,7 @@ def expressionStatement(self): class StatementExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12391,6 +12121,7 @@ def statementExpression(self): class IfThenStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12459,6 +12190,7 @@ def ifThenStatement(self): class IfThenElseStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12538,6 +12270,7 @@ def ifThenElseStatement(self): class IfThenElseStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12616,6 +12349,7 @@ def ifThenElseStatementNoShortIf(self): class AssertStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12700,6 +12434,7 @@ def assertStatement(self): class SwitchStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12768,6 +12503,7 @@ def switchStatement(self): class SwitchBlockContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12836,7 +12572,7 @@ def switchBlock(self): self.state = 1605 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.CASE or _la==Java8Parser.DEFAULT: + while _la==6 or _la==12: self.state = 1602 self.switchLabel() self.state = 1607 @@ -12855,6 +12591,7 @@ def switchBlock(self): class SwitchBlockStatementGroupContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12908,6 +12645,7 @@ def switchBlockStatementGroup(self): class SwitchLabelsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -12952,7 +12690,7 @@ def switchLabels(self): self.state = 1617 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.CASE or _la==Java8Parser.DEFAULT: + while _la==6 or _la==12: self.state = 1614 self.switchLabel() self.state = 1619 @@ -12969,6 +12707,7 @@ def switchLabels(self): class SwitchLabelContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13058,6 +12797,7 @@ def switchLabel(self): class EnumConstantNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13104,6 +12844,7 @@ def enumConstantName(self): class WhileStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13172,6 +12913,7 @@ def whileStatement(self): class WhileStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13240,6 +12982,7 @@ def whileStatementNoShortIf(self): class DoStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13318,6 +13061,7 @@ def doStatement(self): class ForStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13382,6 +13126,7 @@ def forStatement(self): class ForStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13446,6 +13191,7 @@ def forStatementNoShortIf(self): class BasicForStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13516,7 +13262,7 @@ def basicForStatement(self): self.state = 1665 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087178240296) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 25165827) != 0): self.state = 1664 self.forInit() @@ -13526,7 +13272,7 @@ def basicForStatement(self): self.state = 1669 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1668 self.expression() @@ -13536,7 +13282,7 @@ def basicForStatement(self): self.state = 1673 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 25165827) != 0): self.state = 1672 self.forUpdate() @@ -13555,6 +13301,7 @@ def basicForStatement(self): class BasicForStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13625,7 +13372,7 @@ def basicForStatementNoShortIf(self): self.state = 1681 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087178240296) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 25165827) != 0): self.state = 1680 self.forInit() @@ -13635,7 +13382,7 @@ def basicForStatementNoShortIf(self): self.state = 1685 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1684 self.expression() @@ -13645,7 +13392,7 @@ def basicForStatementNoShortIf(self): self.state = 1689 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 25165827) != 0): self.state = 1688 self.forUpdate() @@ -13664,6 +13411,7 @@ def basicForStatementNoShortIf(self): class ForInitContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13728,6 +13476,7 @@ def forInit(self): class ForUpdateContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13775,6 +13524,7 @@ def forUpdate(self): class StatementExpressionListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13825,7 +13575,7 @@ def statementExpressionList(self): self.state = 1705 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.COMMA: + while _la==64: self.state = 1701 self.match(Java8Parser.COMMA) self.state = 1702 @@ -13844,6 +13594,7 @@ def statementExpressionList(self): class EnhancedForStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -13918,7 +13669,7 @@ def enhancedForStatement(self): self.state = 1713 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: + while _la==18 or _la==103: self.state = 1710 self.variableModifier() self.state = 1715 @@ -13947,6 +13698,7 @@ def enhancedForStatement(self): class EnhancedForStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14021,7 +13773,7 @@ def enhancedForStatementNoShortIf(self): self.state = 1728 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: + while _la==18 or _la==103: self.state = 1725 self.variableModifier() self.state = 1730 @@ -14050,6 +13802,7 @@ def enhancedForStatementNoShortIf(self): class BreakStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14096,7 +13849,7 @@ def breakStatement(self): self.state = 1740 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.Identifier: + if _la==102: self.state = 1739 self.match(Java8Parser.Identifier) @@ -14113,6 +13866,7 @@ def breakStatement(self): class ContinueStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14159,7 +13913,7 @@ def continueStatement(self): self.state = 1746 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.Identifier: + if _la==102: self.state = 1745 self.match(Java8Parser.Identifier) @@ -14176,6 +13930,7 @@ def continueStatement(self): class ReturnStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14223,7 +13978,7 @@ def returnStatement(self): self.state = 1752 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 1751 self.expression() @@ -14240,6 +13995,7 @@ def returnStatement(self): class ThrowStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14297,6 +14053,7 @@ def throwStatement(self): class SynchronizedStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14365,6 +14122,7 @@ def synchronizedStatement(self): class TryStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14437,7 +14195,7 @@ def tryStatement(self): self.state = 1773 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.CATCH: + if _la==7: self.state = 1772 self.catches() @@ -14463,6 +14221,7 @@ def tryStatement(self): class CatchesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14507,7 +14266,7 @@ def catches(self): self.state = 1784 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.CATCH: + while _la==7: self.state = 1781 self.catchClause() self.state = 1786 @@ -14524,6 +14283,7 @@ def catches(self): class CatchClauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14592,6 +14352,7 @@ def catchClause(self): class CatchFormalParameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14642,7 +14403,7 @@ def catchFormalParameter(self): self.state = 1796 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: + while _la==18 or _la==103: self.state = 1793 self.variableModifier() self.state = 1798 @@ -14663,6 +14424,7 @@ def catchFormalParameter(self): class CatchTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14717,7 +14479,7 @@ def catchType(self): self.state = 1807 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.BITOR: + while _la==86: self.state = 1803 self.match(Java8Parser.BITOR) self.state = 1804 @@ -14736,6 +14498,7 @@ def catchType(self): class Finally_Context(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14788,6 +14551,7 @@ def finally_(self): class TryWithResourcesStatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14848,7 +14612,7 @@ def tryWithResourcesStatement(self): self.state = 1817 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.CATCH: + if _la==7: self.state = 1816 self.catches() @@ -14856,7 +14620,7 @@ def tryWithResourcesStatement(self): self.state = 1820 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.FINALLY: + if _la==19: self.state = 1819 self.finally_() @@ -14871,6 +14635,7 @@ def tryWithResourcesStatement(self): class ResourceSpecificationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -14923,7 +14688,7 @@ def resourceSpecification(self): self.state = 1825 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.SEMI: + if _la==63: self.state = 1824 self.match(Java8Parser.SEMI) @@ -14940,6 +14705,7 @@ def resourceSpecification(self): class ResourceListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15009,6 +14775,7 @@ def resourceList(self): class ResourceContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15066,7 +14833,7 @@ def resource(self): self.state = 1840 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: + while _la==18 or _la==103: self.state = 1837 self.variableModifier() self.state = 1842 @@ -15091,6 +14858,7 @@ def resource(self): class PrimaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15172,6 +14940,7 @@ def primary(self): class PrimaryNoNewArrayContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15281,7 +15050,7 @@ def primaryNoNewArray(self): self.state = 1864 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: + while _la==61: self.state = 1860 self.match(Java8Parser.LBRACK) self.state = 1861 @@ -15373,6 +15142,7 @@ def primaryNoNewArray(self): class PrimaryNoNewArray_lf_arrayAccessContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15416,6 +15186,7 @@ def primaryNoNewArray_lf_arrayAccess(self): class PrimaryNoNewArray_lfno_arrayAccessContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15521,7 +15292,7 @@ def primaryNoNewArray_lfno_arrayAccess(self): self.state = 1897 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: + while _la==61: self.state = 1893 self.match(Java8Parser.LBRACK) self.state = 1894 @@ -15607,6 +15378,7 @@ def primaryNoNewArray_lfno_arrayAccess(self): class PrimaryNoNewArray_lf_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15701,6 +15473,7 @@ def primaryNoNewArray_lf_primary(self): class PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15744,6 +15517,7 @@ def primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(self): class PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15828,6 +15602,7 @@ def primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(self): class PrimaryNoNewArray_lfno_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -15941,7 +15716,7 @@ def primaryNoNewArray_lfno_primary(self): self.state = 1942 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: + while _la==61: self.state = 1938 self.match(Java8Parser.LBRACK) self.state = 1939 @@ -15963,7 +15738,7 @@ def primaryNoNewArray_lfno_primary(self): self.state = 1953 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: + while _la==61: self.state = 1949 self.match(Java8Parser.LBRACK) self.state = 1950 @@ -16055,6 +15830,7 @@ def primaryNoNewArray_lfno_primary(self): class PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16098,6 +15874,7 @@ def primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(self): class PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16207,7 +15984,7 @@ def primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self): self.state = 1986 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: + while _la==61: self.state = 1982 self.match(Java8Parser.LBRACK) self.state = 1983 @@ -16229,7 +16006,7 @@ def primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self): self.state = 1997 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: + while _la==61: self.state = 1993 self.match(Java8Parser.LBRACK) self.state = 1994 @@ -16315,6 +16092,7 @@ def primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self): class ClassInstanceCreationExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16408,7 +16186,7 @@ def classInstanceCreationExpression(self): self.state = 2023 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2022 self.typeArguments() @@ -16416,7 +16194,7 @@ def classInstanceCreationExpression(self): self.state = 2028 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 2025 self.annotation() self.state = 2030 @@ -16428,13 +16206,13 @@ def classInstanceCreationExpression(self): self.state = 2042 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.DOT: + while _la==65: self.state = 2032 self.match(Java8Parser.DOT) self.state = 2036 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 2033 self.annotation() self.state = 2038 @@ -16450,7 +16228,7 @@ def classInstanceCreationExpression(self): self.state = 2046 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2045 self.typeArgumentsOrDiamond() @@ -16460,7 +16238,7 @@ def classInstanceCreationExpression(self): self.state = 2050 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2049 self.argumentList() @@ -16470,7 +16248,7 @@ def classInstanceCreationExpression(self): self.state = 2054 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LBRACE: + if _la==59: self.state = 2053 self.classBody() @@ -16488,7 +16266,7 @@ def classInstanceCreationExpression(self): self.state = 2060 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2059 self.typeArguments() @@ -16496,7 +16274,7 @@ def classInstanceCreationExpression(self): self.state = 2065 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 2062 self.annotation() self.state = 2067 @@ -16508,7 +16286,7 @@ def classInstanceCreationExpression(self): self.state = 2070 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2069 self.typeArgumentsOrDiamond() @@ -16518,7 +16296,7 @@ def classInstanceCreationExpression(self): self.state = 2074 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2073 self.argumentList() @@ -16528,7 +16306,7 @@ def classInstanceCreationExpression(self): self.state = 2078 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LBRACE: + if _la==59: self.state = 2077 self.classBody() @@ -16546,7 +16324,7 @@ def classInstanceCreationExpression(self): self.state = 2084 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2083 self.typeArguments() @@ -16554,7 +16332,7 @@ def classInstanceCreationExpression(self): self.state = 2089 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 2086 self.annotation() self.state = 2091 @@ -16566,7 +16344,7 @@ def classInstanceCreationExpression(self): self.state = 2094 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2093 self.typeArgumentsOrDiamond() @@ -16576,7 +16354,7 @@ def classInstanceCreationExpression(self): self.state = 2098 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2097 self.argumentList() @@ -16586,7 +16364,7 @@ def classInstanceCreationExpression(self): self.state = 2102 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LBRACE: + if _la==59: self.state = 2101 self.classBody() @@ -16604,6 +16382,7 @@ def classInstanceCreationExpression(self): class ClassInstanceCreationExpression_lf_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16681,7 +16460,7 @@ def classInstanceCreationExpression_lf_primary(self): self.state = 2109 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2108 self.typeArguments() @@ -16689,7 +16468,7 @@ def classInstanceCreationExpression_lf_primary(self): self.state = 2114 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 2111 self.annotation() self.state = 2116 @@ -16701,7 +16480,7 @@ def classInstanceCreationExpression_lf_primary(self): self.state = 2119 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2118 self.typeArgumentsOrDiamond() @@ -16711,7 +16490,7 @@ def classInstanceCreationExpression_lf_primary(self): self.state = 2123 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2122 self.argumentList() @@ -16736,6 +16515,7 @@ def classInstanceCreationExpression_lf_primary(self): class ClassInstanceCreationExpression_lfno_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -16818,14 +16598,14 @@ def classInstanceCreationExpression_lfno_primary(self): self.state = 2188 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.NEW]: + if token in [31]: self.enterOuterAlt(localctx, 1) self.state = 2129 self.match(Java8Parser.NEW) self.state = 2131 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2130 self.typeArguments() @@ -16833,7 +16613,7 @@ def classInstanceCreationExpression_lfno_primary(self): self.state = 2136 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 2133 self.annotation() self.state = 2138 @@ -16845,13 +16625,13 @@ def classInstanceCreationExpression_lfno_primary(self): self.state = 2150 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.DOT: + while _la==65: self.state = 2140 self.match(Java8Parser.DOT) self.state = 2144 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 2141 self.annotation() self.state = 2146 @@ -16867,7 +16647,7 @@ def classInstanceCreationExpression_lfno_primary(self): self.state = 2154 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2153 self.typeArgumentsOrDiamond() @@ -16877,7 +16657,7 @@ def classInstanceCreationExpression_lfno_primary(self): self.state = 2158 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2157 self.argumentList() @@ -16893,7 +16673,7 @@ def classInstanceCreationExpression_lfno_primary(self): pass - elif token in [Java8Parser.Identifier]: + elif token in [102]: self.enterOuterAlt(localctx, 2) self.state = 2164 self.expressionName() @@ -16904,7 +16684,7 @@ def classInstanceCreationExpression_lfno_primary(self): self.state = 2168 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2167 self.typeArguments() @@ -16912,7 +16692,7 @@ def classInstanceCreationExpression_lfno_primary(self): self.state = 2173 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 2170 self.annotation() self.state = 2175 @@ -16924,7 +16704,7 @@ def classInstanceCreationExpression_lfno_primary(self): self.state = 2178 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2177 self.typeArgumentsOrDiamond() @@ -16934,7 +16714,7 @@ def classInstanceCreationExpression_lfno_primary(self): self.state = 2182 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2181 self.argumentList() @@ -16963,6 +16743,7 @@ def classInstanceCreationExpression_lfno_primary(self): class TypeArgumentsOrDiamondContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17031,6 +16812,7 @@ def typeArgumentsOrDiamond(self): class FieldAccessContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17129,6 +16911,7 @@ def fieldAccess(self): class FieldAccess_lf_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17180,6 +16963,7 @@ def fieldAccess_lf_primary(self): class FieldAccess_lfno_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17229,7 +17013,7 @@ def fieldAccess_lfno_primary(self): self.state = 2222 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.SUPER]: + if token in [40]: self.enterOuterAlt(localctx, 1) self.state = 2213 self.match(Java8Parser.SUPER) @@ -17238,7 +17022,7 @@ def fieldAccess_lfno_primary(self): self.state = 2215 self.match(Java8Parser.Identifier) pass - elif token in [Java8Parser.Identifier]: + elif token in [102]: self.enterOuterAlt(localctx, 2) self.state = 2216 self.typeName() @@ -17264,6 +17048,7 @@ def fieldAccess_lfno_primary(self): class ArrayAccessContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17359,7 +17144,7 @@ def arrayAccess(self): self.state = 2243 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: + while _la==61: self.state = 2236 self.primaryNoNewArray_lf_arrayAccess() self.state = 2237 @@ -17382,6 +17167,7 @@ def arrayAccess(self): class ArrayAccess_lf_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17478,6 +17264,7 @@ def arrayAccess_lf_primary(self): class ArrayAccess_lfno_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17596,6 +17383,7 @@ def arrayAccess_lfno_primary(self): class MethodInvocationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17681,7 +17469,7 @@ def methodInvocation(self): self.state = 2286 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2285 self.argumentList() @@ -17699,7 +17487,7 @@ def methodInvocation(self): self.state = 2293 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2292 self.typeArguments() @@ -17711,7 +17499,7 @@ def methodInvocation(self): self.state = 2298 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2297 self.argumentList() @@ -17729,7 +17517,7 @@ def methodInvocation(self): self.state = 2305 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2304 self.typeArguments() @@ -17741,7 +17529,7 @@ def methodInvocation(self): self.state = 2310 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2309 self.argumentList() @@ -17759,7 +17547,7 @@ def methodInvocation(self): self.state = 2317 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2316 self.typeArguments() @@ -17771,7 +17559,7 @@ def methodInvocation(self): self.state = 2322 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2321 self.argumentList() @@ -17789,7 +17577,7 @@ def methodInvocation(self): self.state = 2329 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2328 self.typeArguments() @@ -17801,7 +17589,7 @@ def methodInvocation(self): self.state = 2334 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2333 self.argumentList() @@ -17823,7 +17611,7 @@ def methodInvocation(self): self.state = 2342 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2341 self.typeArguments() @@ -17835,7 +17623,7 @@ def methodInvocation(self): self.state = 2347 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2346 self.argumentList() @@ -17855,6 +17643,7 @@ def methodInvocation(self): class MethodInvocation_lf_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -17912,7 +17701,7 @@ def methodInvocation_lf_primary(self): self.state = 2355 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2354 self.typeArguments() @@ -17924,7 +17713,7 @@ def methodInvocation_lf_primary(self): self.state = 2360 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2359 self.argumentList() @@ -17941,6 +17730,7 @@ def methodInvocation_lf_primary(self): class MethodInvocation_lfno_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18022,7 +17812,7 @@ def methodInvocation_lfno_primary(self): self.state = 2367 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2366 self.argumentList() @@ -18040,7 +17830,7 @@ def methodInvocation_lfno_primary(self): self.state = 2374 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2373 self.typeArguments() @@ -18052,7 +17842,7 @@ def methodInvocation_lfno_primary(self): self.state = 2379 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2378 self.argumentList() @@ -18070,7 +17860,7 @@ def methodInvocation_lfno_primary(self): self.state = 2386 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2385 self.typeArguments() @@ -18082,7 +17872,7 @@ def methodInvocation_lfno_primary(self): self.state = 2391 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2390 self.argumentList() @@ -18100,7 +17890,7 @@ def methodInvocation_lfno_primary(self): self.state = 2398 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2397 self.typeArguments() @@ -18112,7 +17902,7 @@ def methodInvocation_lfno_primary(self): self.state = 2403 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2402 self.argumentList() @@ -18134,7 +17924,7 @@ def methodInvocation_lfno_primary(self): self.state = 2411 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2410 self.typeArguments() @@ -18146,7 +17936,7 @@ def methodInvocation_lfno_primary(self): self.state = 2416 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 286270087177978152) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 25769819139) != 0): self.state = 2415 self.argumentList() @@ -18166,6 +17956,7 @@ def methodInvocation_lfno_primary(self): class ArgumentListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18216,7 +18007,7 @@ def argumentList(self): self.state = 2427 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.COMMA: + while _la==64: self.state = 2423 self.match(Java8Parser.COMMA) self.state = 2424 @@ -18235,6 +18026,7 @@ def argumentList(self): class MethodReferenceContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18321,7 +18113,7 @@ def methodReference(self): self.state = 2433 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2432 self.typeArguments() @@ -18339,7 +18131,7 @@ def methodReference(self): self.state = 2440 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2439 self.typeArguments() @@ -18357,7 +18149,7 @@ def methodReference(self): self.state = 2447 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2446 self.typeArguments() @@ -18375,7 +18167,7 @@ def methodReference(self): self.state = 2454 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2453 self.typeArguments() @@ -18397,7 +18189,7 @@ def methodReference(self): self.state = 2462 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2461 self.typeArguments() @@ -18415,7 +18207,7 @@ def methodReference(self): self.state = 2469 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2468 self.typeArguments() @@ -18445,6 +18237,7 @@ def methodReference(self): class MethodReference_lf_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18492,7 +18285,7 @@ def methodReference_lf_primary(self): self.state = 2481 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2480 self.typeArguments() @@ -18509,6 +18302,7 @@ def methodReference_lf_primary(self): class MethodReference_lfno_primaryContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18591,7 +18385,7 @@ def methodReference_lfno_primary(self): self.state = 2488 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2487 self.typeArguments() @@ -18609,7 +18403,7 @@ def methodReference_lfno_primary(self): self.state = 2495 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2494 self.typeArguments() @@ -18627,7 +18421,7 @@ def methodReference_lfno_primary(self): self.state = 2502 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2501 self.typeArguments() @@ -18649,7 +18443,7 @@ def methodReference_lfno_primary(self): self.state = 2510 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2509 self.typeArguments() @@ -18667,7 +18461,7 @@ def methodReference_lfno_primary(self): self.state = 2517 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==Java8Parser.LT: + if _la==68: self.state = 2516 self.typeArguments() @@ -18697,6 +18491,7 @@ def methodReference_lfno_primary(self): class ArrayCreationExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18824,6 +18619,7 @@ def arrayCreationExpression(self): class DimExprsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18885,6 +18681,7 @@ def dimExprs(self): class DimExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -18937,7 +18734,7 @@ def dimExpr(self): self.state = 2561 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.AT: + while _la==103: self.state = 2558 self.annotation() self.state = 2563 @@ -18960,6 +18757,7 @@ def dimExpr(self): class ConstantExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19007,6 +18805,7 @@ def constantExpression(self): class ExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19071,6 +18870,7 @@ def expression(self): class LambdaExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19129,6 +18929,7 @@ def lambdaExpression(self): class LambdaParametersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19193,7 +18994,7 @@ def lambdaParameters(self): self.state = 2581 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.SHORT))) != 0) or _la==Java8Parser.Identifier or _la==Java8Parser.AT: + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 138111369512) != 0) or _la==102 or _la==103: self.state = 2580 self.formalParameterList() @@ -19223,6 +19024,7 @@ def lambdaParameters(self): class InferredFormalParameterListContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19272,7 +19074,7 @@ def inferredFormalParameterList(self): self.state = 2595 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.COMMA: + while _la==64: self.state = 2591 self.match(Java8Parser.COMMA) self.state = 2592 @@ -19291,6 +19093,7 @@ def inferredFormalParameterList(self): class LambdaBodyContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19332,12 +19135,12 @@ def lambdaBody(self): self.state = 2600 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.NEW, Java8Parser.SHORT, Java8Parser.SUPER, Java8Parser.THIS, Java8Parser.VOID, Java8Parser.IntegerLiteral, Java8Parser.FloatingPointLiteral, Java8Parser.BooleanLiteral, Java8Parser.CharacterLiteral, Java8Parser.StringLiteral, Java8Parser.NullLiteral, Java8Parser.LPAREN, Java8Parser.BANG, Java8Parser.TILDE, Java8Parser.INC, Java8Parser.DEC, Java8Parser.ADD, Java8Parser.SUB, Java8Parser.Identifier, Java8Parser.AT]: + if token in [3, 5, 8, 14, 20, 27, 29, 31, 37, 40, 43, 48, 51, 52, 53, 54, 55, 56, 57, 69, 70, 79, 80, 81, 82, 102, 103]: self.enterOuterAlt(localctx, 1) self.state = 2598 self.expression() pass - elif token in [Java8Parser.LBRACE]: + elif token in [59]: self.enterOuterAlt(localctx, 2) self.state = 2599 self.block() @@ -19355,6 +19158,7 @@ def lambdaBody(self): class AssignmentExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19419,6 +19223,7 @@ def assignmentExpression(self): class AssignmentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19478,6 +19283,7 @@ def assignment(self): class LeftHandSideContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19552,6 +19358,7 @@ def leftHandSide(self): class AssignmentOperatorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19622,7 +19429,7 @@ def assignmentOperator(self): self.enterOuterAlt(localctx, 1) self.state = 2615 _la = self._input.LA(1) - if not(((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & ((1 << (Java8Parser.ASSIGN - 66)) | (1 << (Java8Parser.ADD_ASSIGN - 66)) | (1 << (Java8Parser.SUB_ASSIGN - 66)) | (1 << (Java8Parser.MUL_ASSIGN - 66)) | (1 << (Java8Parser.DIV_ASSIGN - 66)) | (1 << (Java8Parser.AND_ASSIGN - 66)) | (1 << (Java8Parser.OR_ASSIGN - 66)) | (1 << (Java8Parser.XOR_ASSIGN - 66)) | (1 << (Java8Parser.MOD_ASSIGN - 66)) | (1 << (Java8Parser.LSHIFT_ASSIGN - 66)) | (1 << (Java8Parser.RSHIFT_ASSIGN - 66)) | (1 << (Java8Parser.URSHIFT_ASSIGN - 66)))) != 0)): + if not(((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & 68685922305) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -19637,6 +19444,7 @@ def assignmentOperator(self): class ConditionalExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19719,6 +19527,7 @@ def conditionalExpression(self): class ConditionalOrExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19798,6 +19607,7 @@ def conditionalOrExpression(self, _p:int=0): class ConditionalAndExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19877,6 +19687,7 @@ def conditionalAndExpression(self, _p:int=0): class InclusiveOrExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -19956,6 +19767,7 @@ def inclusiveOrExpression(self, _p:int=0): class ExclusiveOrExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20035,6 +19847,7 @@ def exclusiveOrExpression(self, _p:int=0): class AndExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20114,6 +19927,7 @@ def andExpression(self, _p:int=0): class EqualityExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20216,6 +20030,7 @@ def equalityExpression(self, _p:int=0): class RelationalExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20370,6 +20185,7 @@ def relationalExpression(self, _p:int=0): class ShiftExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20499,6 +20315,7 @@ def shiftExpression(self, _p:int=0): class AdditiveExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20601,6 +20418,7 @@ def additiveExpression(self, _p:int=0): class MultiplicativeExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20719,6 +20537,7 @@ def multiplicativeExpression(self, _p:int=0): class UnaryExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20774,31 +20593,31 @@ def unaryExpression(self): self.state = 2777 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.INC]: + if token in [79]: self.enterOuterAlt(localctx, 1) self.state = 2770 self.preIncrementExpression() pass - elif token in [Java8Parser.DEC]: + elif token in [80]: self.enterOuterAlt(localctx, 2) self.state = 2771 self.preDecrementExpression() pass - elif token in [Java8Parser.ADD]: + elif token in [81]: self.enterOuterAlt(localctx, 3) self.state = 2772 self.match(Java8Parser.ADD) self.state = 2773 self.unaryExpression() pass - elif token in [Java8Parser.SUB]: + elif token in [82]: self.enterOuterAlt(localctx, 4) self.state = 2774 self.match(Java8Parser.SUB) self.state = 2775 self.unaryExpression() pass - elif token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.NEW, Java8Parser.SHORT, Java8Parser.SUPER, Java8Parser.THIS, Java8Parser.VOID, Java8Parser.IntegerLiteral, Java8Parser.FloatingPointLiteral, Java8Parser.BooleanLiteral, Java8Parser.CharacterLiteral, Java8Parser.StringLiteral, Java8Parser.NullLiteral, Java8Parser.LPAREN, Java8Parser.BANG, Java8Parser.TILDE, Java8Parser.Identifier, Java8Parser.AT]: + elif token in [3, 5, 8, 14, 20, 27, 29, 31, 37, 40, 43, 48, 51, 52, 53, 54, 55, 56, 57, 69, 70, 102, 103]: self.enterOuterAlt(localctx, 5) self.state = 2776 self.unaryExpressionNotPlusMinus() @@ -20816,6 +20635,7 @@ def unaryExpression(self): class PreIncrementExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20868,6 +20688,7 @@ def preIncrementExpression(self): class PreDecrementExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -20920,6 +20741,7 @@ def preDecrementExpression(self): class UnaryExpressionNotPlusMinusContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21010,6 +20832,7 @@ def unaryExpressionNotPlusMinus(self): class PostfixExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21085,11 +20908,11 @@ def postfixExpression(self): self.state = 2799 self._errHandler.sync(self) token = self._input.LA(1) - if token in [Java8Parser.INC]: + if token in [79]: self.state = 2797 self.postIncrementExpression_lf_postfixExpression() pass - elif token in [Java8Parser.DEC]: + elif token in [80]: self.state = 2798 self.postDecrementExpression_lf_postfixExpression() pass @@ -21110,6 +20933,7 @@ def postfixExpression(self): class PostIncrementExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21162,6 +20986,7 @@ def postIncrementExpression(self): class PostIncrementExpression_lf_postfixExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21208,6 +21033,7 @@ def postIncrementExpression_lf_postfixExpression(self): class PostDecrementExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21260,6 +21086,7 @@ def postDecrementExpression(self): class PostDecrementExpression_lf_postfixExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21306,6 +21133,7 @@ def postDecrementExpression_lf_postfixExpression(self): class CastExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -21394,7 +21222,7 @@ def castExpression(self): self.state = 2824 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.BITAND: + while _la==85: self.state = 2821 self.additionalBound() self.state = 2826 @@ -21416,7 +21244,7 @@ def castExpression(self): self.state = 2835 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==Java8Parser.BITAND: + while _la==85: self.state = 2832 self.additionalBound() self.state = 2837 diff --git a/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.tokens b/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.tokens new file mode 100644 index 00000000..52ef1eee --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/Java8Parser.tokens @@ -0,0 +1,205 @@ +ABSTRACT=1 +ASSERT=2 +BOOLEAN=3 +BREAK=4 +BYTE=5 +CASE=6 +CATCH=7 +CHAR=8 +CLASS=9 +CONST=10 +CONTINUE=11 +DEFAULT=12 +DO=13 +DOUBLE=14 +ELSE=15 +ENUM=16 +EXTENDS=17 +FINAL=18 +FINALLY=19 +FLOAT=20 +FOR=21 +IF=22 +GOTO=23 +IMPLEMENTS=24 +IMPORT=25 +INSTANCEOF=26 +INT=27 +INTERFACE=28 +LONG=29 +NATIVE=30 +NEW=31 +PACKAGE=32 +PRIVATE=33 +PROTECTED=34 +PUBLIC=35 +RETURN=36 +SHORT=37 +STATIC=38 +STRICTFP=39 +SUPER=40 +SWITCH=41 +SYNCHRONIZED=42 +THIS=43 +THROW=44 +THROWS=45 +TRANSIENT=46 +TRY=47 +VOID=48 +VOLATILE=49 +WHILE=50 +IntegerLiteral=51 +FloatingPointLiteral=52 +BooleanLiteral=53 +CharacterLiteral=54 +StringLiteral=55 +NullLiteral=56 +LPAREN=57 +RPAREN=58 +LBRACE=59 +RBRACE=60 +LBRACK=61 +RBRACK=62 +SEMI=63 +COMMA=64 +DOT=65 +ASSIGN=66 +GT=67 +LT=68 +BANG=69 +TILDE=70 +QUESTION=71 +COLON=72 +EQUAL=73 +LE=74 +GE=75 +NOTEQUAL=76 +AND=77 +OR=78 +INC=79 +DEC=80 +ADD=81 +SUB=82 +MUL=83 +DIV=84 +BITAND=85 +BITOR=86 +CARET=87 +MOD=88 +ARROW=89 +COLONCOLON=90 +ADD_ASSIGN=91 +SUB_ASSIGN=92 +MUL_ASSIGN=93 +DIV_ASSIGN=94 +AND_ASSIGN=95 +OR_ASSIGN=96 +XOR_ASSIGN=97 +MOD_ASSIGN=98 +LSHIFT_ASSIGN=99 +RSHIFT_ASSIGN=100 +URSHIFT_ASSIGN=101 +Identifier=102 +AT=103 +ELLIPSIS=104 +WS=105 +COMMENT=106 +LINE_COMMENT=107 +'abstract'=1 +'assert'=2 +'boolean'=3 +'break'=4 +'byte'=5 +'case'=6 +'catch'=7 +'char'=8 +'class'=9 +'const'=10 +'continue'=11 +'default'=12 +'do'=13 +'double'=14 +'else'=15 +'enum'=16 +'extends'=17 +'final'=18 +'finally'=19 +'float'=20 +'for'=21 +'if'=22 +'goto'=23 +'implements'=24 +'import'=25 +'instanceof'=26 +'int'=27 +'interface'=28 +'long'=29 +'native'=30 +'new'=31 +'package'=32 +'private'=33 +'protected'=34 +'public'=35 +'return'=36 +'short'=37 +'static'=38 +'strictfp'=39 +'super'=40 +'switch'=41 +'synchronized'=42 +'this'=43 +'throw'=44 +'throws'=45 +'transient'=46 +'try'=47 +'void'=48 +'volatile'=49 +'while'=50 +'null'=56 +'('=57 +')'=58 +'{'=59 +'}'=60 +'['=61 +']'=62 +';'=63 +','=64 +'.'=65 +'='=66 +'>'=67 +'<'=68 +'!'=69 +'~'=70 +'?'=71 +':'=72 +'=='=73 +'<='=74 +'>='=75 +'!='=76 +'&&'=77 +'||'=78 +'++'=79 +'--'=80 +'+'=81 +'-'=82 +'*'=83 +'/'=84 +'&'=85 +'|'=86 +'^'=87 +'%'=88 +'->'=89 +'::'=90 +'+='=91 +'-='=92 +'*='=93 +'/='=94 +'&='=95 +'|='=96 +'^='=97 +'%='=98 +'<<='=99 +'>>='=100 +'>>>='=101 +'@'=103 +'...'=104 diff --git a/src/pycropml/transpiler/antlr_py/grammars/Java8ParserListener.py b/src/pycropml/transpiler/antlr_py/grammars/Java8ParserListener.py index 2a18da02..89bb448e 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Java8ParserListener.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Java8ParserListener.py @@ -1,6 +1,6 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\java\java8\Java8Parser.g4 by ANTLR 4.8 +# Generated from Java8Parser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .Java8Parser import Java8Parser else: from Java8Parser import Java8Parser diff --git a/src/pycropml/transpiler/antlr_py/grammars/Java8ParserVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/Java8ParserVisitor.py index 96fa98bc..e34a508e 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/Java8ParserVisitor.py +++ b/src/pycropml/transpiler/antlr_py/grammars/Java8ParserVisitor.py @@ -1,6 +1,6 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\java\java8\Java8Parser.g4 by ANTLR 4.8 +# Generated from Java8Parser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .Java8Parser import Java8Parser else: from Java8Parser import Java8Parser diff --git a/src/pycropml/transpiler/antlr_py/grammars/PythonLexer.interp b/src/pycropml/transpiler/antlr_py/grammars/PythonLexer.interp index e1b643b9..cf24bca2 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/PythonLexer.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/PythonLexer.interp @@ -326,4 +326,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 102, 856, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 5, 81, 545, 10, 81, 3, 81, 3, 81, 5, 81, 549, 10, 81, 5, 81, 551, 10, 81, 3, 81, 3, 81, 5, 81, 555, 10, 81, 3, 81, 3, 81, 5, 81, 559, 10, 81, 3, 81, 3, 81, 5, 81, 563, 10, 81, 3, 81, 3, 81, 5, 81, 567, 10, 81, 5, 81, 569, 10, 81, 3, 82, 3, 82, 7, 82, 573, 10, 82, 12, 82, 14, 82, 576, 11, 82, 3, 82, 6, 82, 579, 10, 82, 13, 82, 14, 82, 580, 5, 82, 583, 10, 82, 3, 83, 3, 83, 3, 83, 6, 83, 588, 10, 83, 13, 83, 14, 83, 589, 3, 84, 3, 84, 3, 84, 6, 84, 595, 10, 84, 13, 84, 14, 84, 596, 3, 85, 3, 85, 3, 85, 6, 85, 602, 10, 85, 13, 85, 14, 85, 603, 3, 86, 3, 86, 6, 86, 608, 10, 86, 13, 86, 14, 86, 609, 5, 86, 612, 10, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 7, 94, 638, 10, 94, 12, 94, 14, 94, 641, 11, 94, 3, 95, 3, 95, 7, 95, 645, 10, 95, 12, 95, 14, 95, 648, 11, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 6, 97, 660, 10, 97, 13, 97, 14, 97, 661, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 7, 98, 670, 10, 98, 12, 98, 14, 98, 673, 11, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 681, 10, 99, 3, 99, 7, 99, 684, 10, 99, 12, 99, 14, 99, 687, 11, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 694, 10, 99, 3, 99, 7, 99, 697, 10, 99, 12, 99, 14, 99, 700, 11, 99, 3, 99, 5, 99, 703, 10, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 7, 100, 710, 10, 100, 12, 100, 14, 100, 713, 11, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 7, 100, 723, 10, 100, 12, 100, 14, 100, 726, 11, 100, 3, 100, 3, 100, 3, 100, 5, 100, 731, 10, 100, 3, 101, 3, 101, 3, 101, 3, 101, 5, 101, 737, 10, 101, 5, 101, 739, 10, 101, 3, 102, 5, 102, 742, 10, 102, 3, 102, 3, 102, 3, 103, 6, 103, 747, 10, 103, 13, 103, 14, 103, 748, 3, 103, 5, 103, 752, 10, 103, 3, 103, 3, 103, 5, 103, 756, 10, 103, 3, 103, 6, 103, 759, 10, 103, 13, 103, 14, 103, 760, 3, 103, 5, 103, 764, 10, 103, 3, 104, 7, 104, 767, 10, 104, 12, 104, 14, 104, 770, 11, 104, 3, 104, 3, 104, 6, 104, 774, 10, 104, 13, 104, 14, 104, 775, 3, 104, 6, 104, 779, 10, 104, 13, 104, 14, 104, 780, 3, 104, 5, 104, 784, 10, 104, 3, 105, 3, 105, 3, 105, 7, 105, 789, 10, 105, 12, 105, 14, 105, 792, 11, 105, 3, 105, 3, 105, 3, 105, 3, 105, 7, 105, 798, 10, 105, 12, 105, 14, 105, 801, 11, 105, 3, 105, 5, 105, 804, 10, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 7, 106, 811, 10, 106, 12, 106, 14, 106, 814, 11, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 7, 106, 824, 10, 106, 12, 106, 14, 106, 827, 11, 106, 3, 106, 3, 106, 3, 106, 5, 106, 832, 10, 106, 3, 107, 3, 107, 5, 107, 836, 10, 107, 3, 108, 5, 108, 839, 10, 108, 3, 109, 5, 109, 842, 10, 109, 3, 110, 5, 110, 845, 10, 110, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 5, 112, 852, 10, 112, 3, 113, 5, 113, 855, 10, 113, 6, 711, 724, 812, 825, 2, 114, 3, 6, 5, 7, 7, 8, 9, 9, 11, 10, 13, 11, 15, 12, 17, 13, 19, 14, 21, 15, 23, 16, 25, 17, 27, 18, 29, 19, 31, 20, 33, 21, 35, 22, 37, 23, 39, 24, 41, 25, 43, 26, 45, 27, 47, 28, 49, 29, 51, 30, 53, 31, 55, 32, 57, 33, 59, 34, 61, 35, 63, 36, 65, 37, 67, 38, 69, 39, 71, 40, 73, 41, 75, 42, 77, 43, 79, 44, 81, 45, 83, 46, 85, 47, 87, 48, 89, 49, 91, 50, 93, 51, 95, 52, 97, 53, 99, 54, 101, 55, 103, 56, 105, 57, 107, 58, 109, 59, 111, 60, 113, 61, 115, 62, 117, 63, 119, 64, 121, 65, 123, 66, 125, 67, 127, 68, 129, 69, 131, 70, 133, 71, 135, 72, 137, 73, 139, 74, 141, 75, 143, 76, 145, 77, 147, 78, 149, 79, 151, 80, 153, 81, 155, 82, 157, 83, 159, 84, 161, 85, 163, 86, 165, 87, 167, 88, 169, 89, 171, 90, 173, 91, 175, 92, 177, 93, 179, 94, 181, 95, 183, 96, 185, 97, 187, 98, 189, 99, 191, 100, 193, 101, 195, 102, 197, 2, 199, 2, 201, 2, 203, 2, 205, 2, 207, 2, 209, 2, 211, 2, 213, 2, 215, 2, 217, 2, 219, 2, 221, 2, 223, 2, 225, 2, 3, 2, 27, 4, 2, 87, 87, 119, 119, 4, 2, 72, 72, 104, 104, 4, 2, 84, 84, 116, 116, 4, 2, 68, 68, 100, 100, 3, 2, 51, 59, 3, 2, 50, 59, 4, 2, 81, 81, 113, 113, 3, 2, 50, 57, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 50, 51, 4, 2, 76, 76, 108, 108, 4, 2, 11, 11, 34, 34, 4, 2, 12, 12, 14, 15, 6, 2, 12, 12, 15, 15, 41, 41, 94, 94, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 3, 2, 94, 94, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 7, 2, 2, 11, 13, 14, 16, 40, 42, 93, 95, 129, 7, 2, 2, 11, 13, 14, 16, 35, 37, 93, 95, 129, 4, 2, 2, 93, 95, 129, 3, 2, 2, 129, 150, 2, 50, 59, 770, 881, 1157, 1160, 1427, 1467, 1469, 1471, 1473, 1473, 1475, 1476, 1478, 1479, 1481, 1481, 1554, 1559, 1613, 1632, 1634, 1643, 1650, 1650, 1752, 1758, 1761, 1766, 1769, 1770, 1772, 1775, 1778, 1787, 1811, 1811, 1842, 1868, 1960, 1970, 2307, 2309, 2366, 2366, 2368, 2383, 2387, 2390, 2404, 2405, 2408, 2417, 2435, 2437, 2494, 2494, 2496, 2502, 2505, 2506, 2509, 2511, 2521, 2521, 2532, 2533, 2536, 2545, 2563, 2565, 2622, 2622, 2624, 2628, 2633, 2634, 2637, 2639, 2664, 2675, 2691, 2693, 2750, 2750, 2752, 2759, 2761, 2763, 2765, 2767, 2788, 2789, 2792, 2801, 2819, 2821, 2878, 2878, 2880, 2885, 2889, 2890, 2893, 2895, 2904, 2905, 2920, 2929, 2948, 2948, 3008, 3012, 3016, 3018, 3020, 3023, 3033, 3033, 3048, 3057, 3075, 3077, 3136, 3142, 3144, 3146, 3148, 3151, 3159, 3160, 3176, 3185, 3204, 3205, 3262, 3262, 3264, 3270, 3272, 3274, 3276, 3279, 3287, 3288, 3304, 3313, 3332, 3333, 3392, 3397, 3400, 3402, 3404, 3407, 3417, 3417, 3432, 3441, 3460, 3461, 3532, 3532, 3537, 3542, 3544, 3544, 3546, 3553, 3572, 3573, 3635, 3635, 3638, 3644, 3657, 3664, 3666, 3675, 3763, 3763, 3766, 3771, 3773, 3774, 3786, 3791, 3794, 3803, 3866, 3867, 3874, 3883, 3895, 3895, 3897, 3897, 3899, 3899, 3904, 3905, 3955, 3974, 3976, 3977, 3986, 3993, 3995, 4030, 4040, 4040, 4142, 4148, 4152, 4155, 4162, 4171, 4184, 4187, 4961, 4961, 4971, 4979, 5908, 5910, 5940, 5942, 5972, 5973, 6004, 6005, 6072, 6101, 6111, 6111, 6114, 6123, 6157, 6159, 6162, 6171, 6315, 6315, 6434, 6445, 6450, 6461, 6472, 6481, 6578, 6594, 6602, 6603, 6610, 6619, 6681, 6685, 7618, 7621, 8257, 8258, 8278, 8278, 8402, 8414, 8419, 8419, 8423, 8429, 12332, 12337, 12443, 12444, 43012, 43012, 43016, 43016, 43021, 43021, 43045, 43049, 64288, 64288, 65026, 65041, 65058, 65061, 65077, 65078, 65103, 65105, 65298, 65307, 65345, 65345, 297, 2, 67, 92, 97, 97, 99, 124, 172, 172, 183, 183, 188, 188, 194, 216, 218, 248, 250, 579, 594, 707, 712, 723, 738, 742, 752, 752, 892, 892, 904, 904, 906, 908, 910, 910, 912, 931, 933, 976, 978, 1015, 1017, 1155, 1164, 1232, 1234, 1275, 1282, 1297, 1331, 1368, 1371, 1371, 1379, 1417, 1490, 1516, 1522, 1524, 1571, 1596, 1602, 1612, 1648, 1649, 1651, 1749, 1751, 1751, 1767, 1768, 1776, 1777, 1788, 1790, 1793, 1793, 1810, 1810, 1812, 1841, 1871, 1903, 1922, 1959, 1971, 1971, 2310, 2363, 2367, 2367, 2386, 2386, 2394, 2403, 2431, 2431, 2439, 2446, 2449, 2450, 2453, 2474, 2476, 2482, 2484, 2484, 2488, 2491, 2495, 2495, 2512, 2512, 2526, 2527, 2529, 2531, 2546, 2547, 2567, 2572, 2577, 2578, 2581, 2602, 2604, 2610, 2612, 2613, 2615, 2616, 2618, 2619, 2651, 2654, 2656, 2656, 2676, 2678, 2695, 2703, 2705, 2707, 2709, 2730, 2732, 2738, 2740, 2741, 2743, 2747, 2751, 2751, 2770, 2770, 2786, 2787, 2823, 2830, 2833, 2834, 2837, 2858, 2860, 2866, 2868, 2869, 2871, 2875, 2879, 2879, 2910, 2911, 2913, 2915, 2931, 2931, 2949, 2949, 2951, 2956, 2960, 2962, 2964, 2967, 2971, 2972, 2974, 2974, 2976, 2977, 2981, 2982, 2986, 2988, 2992, 3003, 3079, 3086, 3088, 3090, 3092, 3114, 3116, 3125, 3127, 3131, 3170, 3171, 3207, 3214, 3216, 3218, 3220, 3242, 3244, 3253, 3255, 3259, 3263, 3263, 3296, 3296, 3298, 3299, 3335, 3342, 3344, 3346, 3348, 3370, 3372, 3387, 3426, 3427, 3463, 3480, 3484, 3507, 3509, 3517, 3519, 3519, 3522, 3528, 3587, 3634, 3636, 3637, 3650, 3656, 3715, 3716, 3718, 3718, 3721, 3722, 3724, 3724, 3727, 3727, 3734, 3737, 3739, 3745, 3747, 3749, 3751, 3751, 3753, 3753, 3756, 3757, 3759, 3762, 3764, 3765, 3775, 3775, 3778, 3782, 3784, 3784, 3806, 3807, 3842, 3842, 3906, 3913, 3915, 3948, 3978, 3981, 4098, 4131, 4133, 4137, 4139, 4140, 4178, 4183, 4258, 4295, 4306, 4348, 4350, 4350, 4354, 4443, 4449, 4516, 4522, 4603, 4610, 4682, 4684, 4687, 4690, 4696, 4698, 4698, 4700, 4703, 4706, 4746, 4748, 4751, 4754, 4786, 4788, 4791, 4794, 4800, 4802, 4802, 4804, 4807, 4810, 4824, 4826, 4882, 4884, 4887, 4890, 4956, 4994, 5009, 5026, 5110, 5123, 5742, 5745, 5752, 5763, 5788, 5794, 5868, 5872, 5874, 5890, 5902, 5904, 5907, 5922, 5939, 5954, 5971, 5986, 5998, 6000, 6002, 6018, 6069, 6105, 6105, 6110, 6110, 6178, 6265, 6274, 6314, 6402, 6430, 6482, 6511, 6514, 6518, 6530, 6571, 6595, 6601, 6658, 6680, 7426, 7617, 7682, 7837, 7842, 7931, 7938, 7959, 7962, 7967, 7970, 8007, 8010, 8015, 8018, 8025, 8027, 8027, 8029, 8029, 8031, 8031, 8033, 8063, 8066, 8118, 8120, 8126, 8128, 8128, 8132, 8134, 8136, 8142, 8146, 8149, 8152, 8157, 8162, 8174, 8180, 8182, 8184, 8190, 8307, 8307, 8321, 8321, 8338, 8342, 8452, 8452, 8457, 8457, 8460, 8469, 8471, 8471, 8474, 8479, 8486, 8486, 8488, 8488, 8490, 8490, 8492, 8499, 8501, 8507, 8510, 8513, 8519, 8523, 8546, 8581, 11266, 11312, 11314, 11360, 11394, 11494, 11522, 11559, 11570, 11623, 11633, 11633, 11650, 11672, 11682, 11688, 11690, 11696, 11698, 11704, 11706, 11712, 11714, 11720, 11722, 11728, 11730, 11736, 11738, 11744, 12295, 12297, 12323, 12331, 12339, 12343, 12346, 12350, 12355, 12440, 12445, 12449, 12451, 12540, 12542, 12545, 12551, 12590, 12595, 12688, 12706, 12729, 12786, 12801, 13314, 19895, 19970, 40893, 40962, 42126, 43010, 43011, 43013, 43015, 43017, 43020, 43022, 43044, 44034, 55205, 63746, 64047, 64050, 64108, 64114, 64219, 64258, 64264, 64277, 64281, 64287, 64287, 64289, 64298, 64300, 64312, 64314, 64318, 64320, 64320, 64322, 64323, 64325, 64326, 64328, 64435, 64469, 64831, 64850, 64913, 64916, 64969, 65010, 65021, 65138, 65142, 65144, 65278, 65315, 65340, 65347, 65372, 65384, 65472, 65476, 65481, 65484, 65489, 65492, 65497, 65500, 65502, 2, 894, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 3, 227, 3, 2, 2, 2, 5, 231, 3, 2, 2, 2, 7, 238, 3, 2, 2, 2, 9, 244, 3, 2, 2, 2, 11, 249, 3, 2, 2, 2, 13, 256, 3, 2, 2, 2, 15, 265, 3, 2, 2, 2, 17, 268, 3, 2, 2, 2, 19, 275, 3, 2, 2, 2, 21, 282, 3, 2, 2, 2, 23, 285, 3, 2, 2, 2, 25, 290, 3, 2, 2, 2, 27, 295, 3, 2, 2, 2, 29, 301, 3, 2, 2, 2, 31, 305, 3, 2, 2, 2, 33, 308, 3, 2, 2, 2, 35, 312, 3, 2, 2, 2, 37, 317, 3, 2, 2, 2, 39, 325, 3, 2, 2, 2, 41, 330, 3, 2, 2, 2, 43, 337, 3, 2, 2, 2, 45, 344, 3, 2, 2, 2, 47, 347, 3, 2, 2, 2, 49, 351, 3, 2, 2, 2, 51, 355, 3, 2, 2, 2, 53, 358, 3, 2, 2, 2, 55, 364, 3, 2, 2, 2, 57, 370, 3, 2, 2, 2, 59, 374, 3, 2, 2, 2, 61, 379, 3, 2, 2, 2, 63, 388, 3, 2, 2, 2, 65, 394, 3, 2, 2, 2, 67, 400, 3, 2, 2, 2, 69, 406, 3, 2, 2, 2, 71, 412, 3, 2, 2, 2, 73, 417, 3, 2, 2, 2, 75, 422, 3, 2, 2, 2, 77, 428, 3, 2, 2, 2, 79, 430, 3, 2, 2, 2, 81, 434, 3, 2, 2, 2, 83, 436, 3, 2, 2, 2, 85, 438, 3, 2, 2, 2, 87, 440, 3, 2, 2, 2, 89, 442, 3, 2, 2, 2, 91, 444, 3, 2, 2, 2, 93, 447, 3, 2, 2, 2, 95, 449, 3, 2, 2, 2, 97, 451, 3, 2, 2, 2, 99, 453, 3, 2, 2, 2, 101, 455, 3, 2, 2, 2, 103, 458, 3, 2, 2, 2, 105, 461, 3, 2, 2, 2, 107, 463, 3, 2, 2, 2, 109, 465, 3, 2, 2, 2, 111, 467, 3, 2, 2, 2, 113, 469, 3, 2, 2, 2, 115, 472, 3, 2, 2, 2, 117, 474, 3, 2, 2, 2, 119, 476, 3, 2, 2, 2, 121, 478, 3, 2, 2, 2, 123, 481, 3, 2, 2, 2, 125, 484, 3, 2, 2, 2, 127, 487, 3, 2, 2, 2, 129, 490, 3, 2, 2, 2, 131, 493, 3, 2, 2, 2, 133, 495, 3, 2, 2, 2, 135, 498, 3, 2, 2, 2, 137, 501, 3, 2, 2, 2, 139, 504, 3, 2, 2, 2, 141, 507, 3, 2, 2, 2, 143, 510, 3, 2, 2, 2, 145, 513, 3, 2, 2, 2, 147, 516, 3, 2, 2, 2, 149, 519, 3, 2, 2, 2, 151, 522, 3, 2, 2, 2, 153, 525, 3, 2, 2, 2, 155, 529, 3, 2, 2, 2, 157, 533, 3, 2, 2, 2, 159, 537, 3, 2, 2, 2, 161, 568, 3, 2, 2, 2, 163, 582, 3, 2, 2, 2, 165, 584, 3, 2, 2, 2, 167, 591, 3, 2, 2, 2, 169, 598, 3, 2, 2, 2, 171, 611, 3, 2, 2, 2, 173, 615, 3, 2, 2, 2, 175, 617, 3, 2, 2, 2, 177, 620, 3, 2, 2, 2, 179, 623, 3, 2, 2, 2, 181, 626, 3, 2, 2, 2, 183, 629, 3, 2, 2, 2, 185, 632, 3, 2, 2, 2, 187, 635, 3, 2, 2, 2, 189, 642, 3, 2, 2, 2, 191, 653, 3, 2, 2, 2, 193, 659, 3, 2, 2, 2, 195, 667, 3, 2, 2, 2, 197, 702, 3, 2, 2, 2, 199, 730, 3, 2, 2, 2, 201, 738, 3, 2, 2, 2, 203, 741, 3, 2, 2, 2, 205, 763, 3, 2, 2, 2, 207, 783, 3, 2, 2, 2, 209, 803, 3, 2, 2, 2, 211, 831, 3, 2, 2, 2, 213, 835, 3, 2, 2, 2, 215, 838, 3, 2, 2, 2, 217, 841, 3, 2, 2, 2, 219, 844, 3, 2, 2, 2, 221, 846, 3, 2, 2, 2, 223, 851, 3, 2, 2, 2, 225, 854, 3, 2, 2, 2, 227, 228, 7, 102, 2, 2, 228, 229, 7, 103, 2, 2, 229, 230, 7, 104, 2, 2, 230, 4, 3, 2, 2, 2, 231, 232, 7, 116, 2, 2, 232, 233, 7, 103, 2, 2, 233, 234, 7, 118, 2, 2, 234, 235, 7, 119, 2, 2, 235, 236, 7, 116, 2, 2, 236, 237, 7, 112, 2, 2, 237, 6, 3, 2, 2, 2, 238, 239, 7, 116, 2, 2, 239, 240, 7, 99, 2, 2, 240, 241, 7, 107, 2, 2, 241, 242, 7, 117, 2, 2, 242, 243, 7, 103, 2, 2, 243, 8, 3, 2, 2, 2, 244, 245, 7, 104, 2, 2, 245, 246, 7, 116, 2, 2, 246, 247, 7, 113, 2, 2, 247, 248, 7, 111, 2, 2, 248, 10, 3, 2, 2, 2, 249, 250, 7, 107, 2, 2, 250, 251, 7, 111, 2, 2, 251, 252, 7, 114, 2, 2, 252, 253, 7, 113, 2, 2, 253, 254, 7, 116, 2, 2, 254, 255, 7, 118, 2, 2, 255, 12, 3, 2, 2, 2, 256, 257, 7, 112, 2, 2, 257, 258, 7, 113, 2, 2, 258, 259, 7, 112, 2, 2, 259, 260, 7, 110, 2, 2, 260, 261, 7, 113, 2, 2, 261, 262, 7, 101, 2, 2, 262, 263, 7, 99, 2, 2, 263, 264, 7, 110, 2, 2, 264, 14, 3, 2, 2, 2, 265, 266, 7, 99, 2, 2, 266, 267, 7, 117, 2, 2, 267, 16, 3, 2, 2, 2, 268, 269, 7, 105, 2, 2, 269, 270, 7, 110, 2, 2, 270, 271, 7, 113, 2, 2, 271, 272, 7, 100, 2, 2, 272, 273, 7, 99, 2, 2, 273, 274, 7, 110, 2, 2, 274, 18, 3, 2, 2, 2, 275, 276, 7, 99, 2, 2, 276, 277, 7, 117, 2, 2, 277, 278, 7, 117, 2, 2, 278, 279, 7, 103, 2, 2, 279, 280, 7, 116, 2, 2, 280, 281, 7, 118, 2, 2, 281, 20, 3, 2, 2, 2, 282, 283, 7, 107, 2, 2, 283, 284, 7, 104, 2, 2, 284, 22, 3, 2, 2, 2, 285, 286, 7, 103, 2, 2, 286, 287, 7, 110, 2, 2, 287, 288, 7, 107, 2, 2, 288, 289, 7, 104, 2, 2, 289, 24, 3, 2, 2, 2, 290, 291, 7, 103, 2, 2, 291, 292, 7, 110, 2, 2, 292, 293, 7, 117, 2, 2, 293, 294, 7, 103, 2, 2, 294, 26, 3, 2, 2, 2, 295, 296, 7, 121, 2, 2, 296, 297, 7, 106, 2, 2, 297, 298, 7, 107, 2, 2, 298, 299, 7, 110, 2, 2, 299, 300, 7, 103, 2, 2, 300, 28, 3, 2, 2, 2, 301, 302, 7, 104, 2, 2, 302, 303, 7, 113, 2, 2, 303, 304, 7, 116, 2, 2, 304, 30, 3, 2, 2, 2, 305, 306, 7, 107, 2, 2, 306, 307, 7, 112, 2, 2, 307, 32, 3, 2, 2, 2, 308, 309, 7, 118, 2, 2, 309, 310, 7, 116, 2, 2, 310, 311, 7, 123, 2, 2, 311, 34, 3, 2, 2, 2, 312, 313, 7, 80, 2, 2, 313, 314, 7, 113, 2, 2, 314, 315, 7, 112, 2, 2, 315, 316, 7, 103, 2, 2, 316, 36, 3, 2, 2, 2, 317, 318, 7, 104, 2, 2, 318, 319, 7, 107, 2, 2, 319, 320, 7, 112, 2, 2, 320, 321, 7, 99, 2, 2, 321, 322, 7, 110, 2, 2, 322, 323, 7, 110, 2, 2, 323, 324, 7, 123, 2, 2, 324, 38, 3, 2, 2, 2, 325, 326, 7, 121, 2, 2, 326, 327, 7, 107, 2, 2, 327, 328, 7, 118, 2, 2, 328, 329, 7, 106, 2, 2, 329, 40, 3, 2, 2, 2, 330, 331, 7, 103, 2, 2, 331, 332, 7, 122, 2, 2, 332, 333, 7, 101, 2, 2, 333, 334, 7, 103, 2, 2, 334, 335, 7, 114, 2, 2, 335, 336, 7, 118, 2, 2, 336, 42, 3, 2, 2, 2, 337, 338, 7, 110, 2, 2, 338, 339, 7, 99, 2, 2, 339, 340, 7, 111, 2, 2, 340, 341, 7, 100, 2, 2, 341, 342, 7, 102, 2, 2, 342, 343, 7, 99, 2, 2, 343, 44, 3, 2, 2, 2, 344, 345, 7, 113, 2, 2, 345, 346, 7, 116, 2, 2, 346, 46, 3, 2, 2, 2, 347, 348, 7, 99, 2, 2, 348, 349, 7, 112, 2, 2, 349, 350, 7, 102, 2, 2, 350, 48, 3, 2, 2, 2, 351, 352, 7, 112, 2, 2, 352, 353, 7, 113, 2, 2, 353, 354, 7, 118, 2, 2, 354, 50, 3, 2, 2, 2, 355, 356, 7, 107, 2, 2, 356, 357, 7, 117, 2, 2, 357, 52, 3, 2, 2, 2, 358, 359, 7, 101, 2, 2, 359, 360, 7, 110, 2, 2, 360, 361, 7, 99, 2, 2, 361, 362, 7, 117, 2, 2, 362, 363, 7, 117, 2, 2, 363, 54, 3, 2, 2, 2, 364, 365, 7, 123, 2, 2, 365, 366, 7, 107, 2, 2, 366, 367, 7, 103, 2, 2, 367, 368, 7, 110, 2, 2, 368, 369, 7, 102, 2, 2, 369, 56, 3, 2, 2, 2, 370, 371, 7, 102, 2, 2, 371, 372, 7, 103, 2, 2, 372, 373, 7, 110, 2, 2, 373, 58, 3, 2, 2, 2, 374, 375, 7, 114, 2, 2, 375, 376, 7, 99, 2, 2, 376, 377, 7, 117, 2, 2, 377, 378, 7, 117, 2, 2, 378, 60, 3, 2, 2, 2, 379, 380, 7, 101, 2, 2, 380, 381, 7, 113, 2, 2, 381, 382, 7, 112, 2, 2, 382, 383, 7, 118, 2, 2, 383, 384, 7, 107, 2, 2, 384, 385, 7, 112, 2, 2, 385, 386, 7, 119, 2, 2, 386, 387, 7, 103, 2, 2, 387, 62, 3, 2, 2, 2, 388, 389, 7, 100, 2, 2, 389, 390, 7, 116, 2, 2, 390, 391, 7, 103, 2, 2, 391, 392, 7, 99, 2, 2, 392, 393, 7, 109, 2, 2, 393, 64, 3, 2, 2, 2, 394, 395, 7, 99, 2, 2, 395, 396, 7, 117, 2, 2, 396, 397, 7, 123, 2, 2, 397, 398, 7, 112, 2, 2, 398, 399, 7, 101, 2, 2, 399, 66, 3, 2, 2, 2, 400, 401, 7, 99, 2, 2, 401, 402, 7, 121, 2, 2, 402, 403, 7, 99, 2, 2, 403, 404, 7, 107, 2, 2, 404, 405, 7, 118, 2, 2, 405, 68, 3, 2, 2, 2, 406, 407, 7, 114, 2, 2, 407, 408, 7, 116, 2, 2, 408, 409, 7, 107, 2, 2, 409, 410, 7, 112, 2, 2, 410, 411, 7, 118, 2, 2, 411, 70, 3, 2, 2, 2, 412, 413, 7, 103, 2, 2, 413, 414, 7, 122, 2, 2, 414, 415, 7, 103, 2, 2, 415, 416, 7, 101, 2, 2, 416, 72, 3, 2, 2, 2, 417, 418, 7, 86, 2, 2, 418, 419, 7, 116, 2, 2, 419, 420, 7, 119, 2, 2, 420, 421, 7, 103, 2, 2, 421, 74, 3, 2, 2, 2, 422, 423, 7, 72, 2, 2, 423, 424, 7, 99, 2, 2, 424, 425, 7, 110, 2, 2, 425, 426, 7, 117, 2, 2, 426, 427, 7, 103, 2, 2, 427, 76, 3, 2, 2, 2, 428, 429, 7, 48, 2, 2, 429, 78, 3, 2, 2, 2, 430, 431, 7, 48, 2, 2, 431, 432, 7, 48, 2, 2, 432, 433, 7, 48, 2, 2, 433, 80, 3, 2, 2, 2, 434, 435, 7, 98, 2, 2, 435, 82, 3, 2, 2, 2, 436, 437, 7, 44, 2, 2, 437, 84, 3, 2, 2, 2, 438, 439, 7, 46, 2, 2, 439, 86, 3, 2, 2, 2, 440, 441, 7, 60, 2, 2, 441, 88, 3, 2, 2, 2, 442, 443, 7, 61, 2, 2, 443, 90, 3, 2, 2, 2, 444, 445, 7, 44, 2, 2, 445, 446, 7, 44, 2, 2, 446, 92, 3, 2, 2, 2, 447, 448, 7, 63, 2, 2, 448, 94, 3, 2, 2, 2, 449, 450, 7, 126, 2, 2, 450, 96, 3, 2, 2, 2, 451, 452, 7, 96, 2, 2, 452, 98, 3, 2, 2, 2, 453, 454, 7, 40, 2, 2, 454, 100, 3, 2, 2, 2, 455, 456, 7, 62, 2, 2, 456, 457, 7, 62, 2, 2, 457, 102, 3, 2, 2, 2, 458, 459, 7, 64, 2, 2, 459, 460, 7, 64, 2, 2, 460, 104, 3, 2, 2, 2, 461, 462, 7, 45, 2, 2, 462, 106, 3, 2, 2, 2, 463, 464, 7, 47, 2, 2, 464, 108, 3, 2, 2, 2, 465, 466, 7, 49, 2, 2, 466, 110, 3, 2, 2, 2, 467, 468, 7, 39, 2, 2, 468, 112, 3, 2, 2, 2, 469, 470, 7, 49, 2, 2, 470, 471, 7, 49, 2, 2, 471, 114, 3, 2, 2, 2, 472, 473, 7, 128, 2, 2, 473, 116, 3, 2, 2, 2, 474, 475, 7, 62, 2, 2, 475, 118, 3, 2, 2, 2, 476, 477, 7, 64, 2, 2, 477, 120, 3, 2, 2, 2, 478, 479, 7, 63, 2, 2, 479, 480, 7, 63, 2, 2, 480, 122, 3, 2, 2, 2, 481, 482, 7, 64, 2, 2, 482, 483, 7, 63, 2, 2, 483, 124, 3, 2, 2, 2, 484, 485, 7, 62, 2, 2, 485, 486, 7, 63, 2, 2, 486, 126, 3, 2, 2, 2, 487, 488, 7, 62, 2, 2, 488, 489, 7, 64, 2, 2, 489, 128, 3, 2, 2, 2, 490, 491, 7, 35, 2, 2, 491, 492, 7, 63, 2, 2, 492, 130, 3, 2, 2, 2, 493, 494, 7, 66, 2, 2, 494, 132, 3, 2, 2, 2, 495, 496, 7, 47, 2, 2, 496, 497, 7, 64, 2, 2, 497, 134, 3, 2, 2, 2, 498, 499, 7, 45, 2, 2, 499, 500, 7, 63, 2, 2, 500, 136, 3, 2, 2, 2, 501, 502, 7, 47, 2, 2, 502, 503, 7, 63, 2, 2, 503, 138, 3, 2, 2, 2, 504, 505, 7, 44, 2, 2, 505, 506, 7, 63, 2, 2, 506, 140, 3, 2, 2, 2, 507, 508, 7, 66, 2, 2, 508, 509, 7, 63, 2, 2, 509, 142, 3, 2, 2, 2, 510, 511, 7, 49, 2, 2, 511, 512, 7, 63, 2, 2, 512, 144, 3, 2, 2, 2, 513, 514, 7, 39, 2, 2, 514, 515, 7, 63, 2, 2, 515, 146, 3, 2, 2, 2, 516, 517, 7, 40, 2, 2, 517, 518, 7, 63, 2, 2, 518, 148, 3, 2, 2, 2, 519, 520, 7, 126, 2, 2, 520, 521, 7, 63, 2, 2, 521, 150, 3, 2, 2, 2, 522, 523, 7, 96, 2, 2, 523, 524, 7, 63, 2, 2, 524, 152, 3, 2, 2, 2, 525, 526, 7, 62, 2, 2, 526, 527, 7, 62, 2, 2, 527, 528, 7, 63, 2, 2, 528, 154, 3, 2, 2, 2, 529, 530, 7, 64, 2, 2, 530, 531, 7, 64, 2, 2, 531, 532, 7, 63, 2, 2, 532, 156, 3, 2, 2, 2, 533, 534, 7, 44, 2, 2, 534, 535, 7, 44, 2, 2, 535, 536, 7, 63, 2, 2, 536, 158, 3, 2, 2, 2, 537, 538, 7, 49, 2, 2, 538, 539, 7, 49, 2, 2, 539, 540, 7, 63, 2, 2, 540, 160, 3, 2, 2, 2, 541, 551, 9, 2, 2, 2, 542, 544, 9, 3, 2, 2, 543, 545, 9, 4, 2, 2, 544, 543, 3, 2, 2, 2, 544, 545, 3, 2, 2, 2, 545, 551, 3, 2, 2, 2, 546, 548, 9, 4, 2, 2, 547, 549, 9, 3, 2, 2, 548, 547, 3, 2, 2, 2, 548, 549, 3, 2, 2, 2, 549, 551, 3, 2, 2, 2, 550, 541, 3, 2, 2, 2, 550, 542, 3, 2, 2, 2, 550, 546, 3, 2, 2, 2, 550, 551, 3, 2, 2, 2, 551, 554, 3, 2, 2, 2, 552, 555, 5, 197, 99, 2, 553, 555, 5, 199, 100, 2, 554, 552, 3, 2, 2, 2, 554, 553, 3, 2, 2, 2, 555, 569, 3, 2, 2, 2, 556, 558, 9, 5, 2, 2, 557, 559, 9, 4, 2, 2, 558, 557, 3, 2, 2, 2, 558, 559, 3, 2, 2, 2, 559, 563, 3, 2, 2, 2, 560, 561, 9, 4, 2, 2, 561, 563, 9, 5, 2, 2, 562, 556, 3, 2, 2, 2, 562, 560, 3, 2, 2, 2, 563, 566, 3, 2, 2, 2, 564, 567, 5, 209, 105, 2, 565, 567, 5, 211, 106, 2, 566, 564, 3, 2, 2, 2, 566, 565, 3, 2, 2, 2, 567, 569, 3, 2, 2, 2, 568, 550, 3, 2, 2, 2, 568, 562, 3, 2, 2, 2, 569, 162, 3, 2, 2, 2, 570, 574, 9, 6, 2, 2, 571, 573, 9, 7, 2, 2, 572, 571, 3, 2, 2, 2, 573, 576, 3, 2, 2, 2, 574, 572, 3, 2, 2, 2, 574, 575, 3, 2, 2, 2, 575, 583, 3, 2, 2, 2, 576, 574, 3, 2, 2, 2, 577, 579, 7, 50, 2, 2, 578, 577, 3, 2, 2, 2, 579, 580, 3, 2, 2, 2, 580, 578, 3, 2, 2, 2, 580, 581, 3, 2, 2, 2, 581, 583, 3, 2, 2, 2, 582, 570, 3, 2, 2, 2, 582, 578, 3, 2, 2, 2, 583, 164, 3, 2, 2, 2, 584, 585, 7, 50, 2, 2, 585, 587, 9, 8, 2, 2, 586, 588, 9, 9, 2, 2, 587, 586, 3, 2, 2, 2, 588, 589, 3, 2, 2, 2, 589, 587, 3, 2, 2, 2, 589, 590, 3, 2, 2, 2, 590, 166, 3, 2, 2, 2, 591, 592, 7, 50, 2, 2, 592, 594, 9, 10, 2, 2, 593, 595, 9, 11, 2, 2, 594, 593, 3, 2, 2, 2, 595, 596, 3, 2, 2, 2, 596, 594, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 168, 3, 2, 2, 2, 598, 599, 7, 50, 2, 2, 599, 601, 9, 5, 2, 2, 600, 602, 9, 12, 2, 2, 601, 600, 3, 2, 2, 2, 602, 603, 3, 2, 2, 2, 603, 601, 3, 2, 2, 2, 603, 604, 3, 2, 2, 2, 604, 170, 3, 2, 2, 2, 605, 612, 5, 205, 103, 2, 606, 608, 9, 7, 2, 2, 607, 606, 3, 2, 2, 2, 608, 609, 3, 2, 2, 2, 609, 607, 3, 2, 2, 2, 609, 610, 3, 2, 2, 2, 610, 612, 3, 2, 2, 2, 611, 605, 3, 2, 2, 2, 611, 607, 3, 2, 2, 2, 612, 613, 3, 2, 2, 2, 613, 614, 9, 13, 2, 2, 614, 172, 3, 2, 2, 2, 615, 616, 5, 205, 103, 2, 616, 174, 3, 2, 2, 2, 617, 618, 7, 42, 2, 2, 618, 619, 8, 88, 2, 2, 619, 176, 3, 2, 2, 2, 620, 621, 7, 43, 2, 2, 621, 622, 8, 89, 3, 2, 622, 178, 3, 2, 2, 2, 623, 624, 7, 125, 2, 2, 624, 625, 8, 90, 4, 2, 625, 180, 3, 2, 2, 2, 626, 627, 7, 127, 2, 2, 627, 628, 8, 91, 5, 2, 628, 182, 3, 2, 2, 2, 629, 630, 7, 93, 2, 2, 630, 631, 8, 92, 6, 2, 631, 184, 3, 2, 2, 2, 632, 633, 7, 95, 2, 2, 633, 634, 8, 93, 7, 2, 634, 186, 3, 2, 2, 2, 635, 639, 5, 225, 113, 2, 636, 638, 5, 223, 112, 2, 637, 636, 3, 2, 2, 2, 638, 641, 3, 2, 2, 2, 639, 637, 3, 2, 2, 2, 639, 640, 3, 2, 2, 2, 640, 188, 3, 2, 2, 2, 641, 639, 3, 2, 2, 2, 642, 646, 7, 94, 2, 2, 643, 645, 9, 14, 2, 2, 644, 643, 3, 2, 2, 2, 645, 648, 3, 2, 2, 2, 646, 644, 3, 2, 2, 2, 646, 647, 3, 2, 2, 2, 647, 649, 3, 2, 2, 2, 648, 646, 3, 2, 2, 2, 649, 650, 5, 203, 102, 2, 650, 651, 3, 2, 2, 2, 651, 652, 8, 95, 8, 2, 652, 190, 3, 2, 2, 2, 653, 654, 5, 203, 102, 2, 654, 655, 8, 96, 9, 2, 655, 656, 3, 2, 2, 2, 656, 657, 8, 96, 8, 2, 657, 192, 3, 2, 2, 2, 658, 660, 9, 14, 2, 2, 659, 658, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 659, 3, 2, 2, 2, 661, 662, 3, 2, 2, 2, 662, 663, 3, 2, 2, 2, 663, 664, 8, 97, 10, 2, 664, 665, 3, 2, 2, 2, 665, 666, 8, 97, 8, 2, 666, 194, 3, 2, 2, 2, 667, 671, 7, 37, 2, 2, 668, 670, 10, 15, 2, 2, 669, 668, 3, 2, 2, 2, 670, 673, 3, 2, 2, 2, 671, 669, 3, 2, 2, 2, 671, 672, 3, 2, 2, 2, 672, 674, 3, 2, 2, 2, 673, 671, 3, 2, 2, 2, 674, 675, 8, 98, 8, 2, 675, 196, 3, 2, 2, 2, 676, 685, 7, 41, 2, 2, 677, 680, 7, 94, 2, 2, 678, 681, 5, 203, 102, 2, 679, 681, 11, 2, 2, 2, 680, 678, 3, 2, 2, 2, 680, 679, 3, 2, 2, 2, 681, 684, 3, 2, 2, 2, 682, 684, 10, 16, 2, 2, 683, 677, 3, 2, 2, 2, 683, 682, 3, 2, 2, 2, 684, 687, 3, 2, 2, 2, 685, 683, 3, 2, 2, 2, 685, 686, 3, 2, 2, 2, 686, 688, 3, 2, 2, 2, 687, 685, 3, 2, 2, 2, 688, 703, 7, 41, 2, 2, 689, 698, 7, 36, 2, 2, 690, 693, 7, 94, 2, 2, 691, 694, 5, 203, 102, 2, 692, 694, 11, 2, 2, 2, 693, 691, 3, 2, 2, 2, 693, 692, 3, 2, 2, 2, 694, 697, 3, 2, 2, 2, 695, 697, 10, 17, 2, 2, 696, 690, 3, 2, 2, 2, 696, 695, 3, 2, 2, 2, 697, 700, 3, 2, 2, 2, 698, 696, 3, 2, 2, 2, 698, 699, 3, 2, 2, 2, 699, 701, 3, 2, 2, 2, 700, 698, 3, 2, 2, 2, 701, 703, 7, 36, 2, 2, 702, 676, 3, 2, 2, 2, 702, 689, 3, 2, 2, 2, 703, 198, 3, 2, 2, 2, 704, 705, 7, 41, 2, 2, 705, 706, 7, 41, 2, 2, 706, 707, 7, 41, 2, 2, 707, 711, 3, 2, 2, 2, 708, 710, 5, 201, 101, 2, 709, 708, 3, 2, 2, 2, 710, 713, 3, 2, 2, 2, 711, 712, 3, 2, 2, 2, 711, 709, 3, 2, 2, 2, 712, 714, 3, 2, 2, 2, 713, 711, 3, 2, 2, 2, 714, 715, 7, 41, 2, 2, 715, 716, 7, 41, 2, 2, 716, 731, 7, 41, 2, 2, 717, 718, 7, 36, 2, 2, 718, 719, 7, 36, 2, 2, 719, 720, 7, 36, 2, 2, 720, 724, 3, 2, 2, 2, 721, 723, 5, 201, 101, 2, 722, 721, 3, 2, 2, 2, 723, 726, 3, 2, 2, 2, 724, 725, 3, 2, 2, 2, 724, 722, 3, 2, 2, 2, 725, 727, 3, 2, 2, 2, 726, 724, 3, 2, 2, 2, 727, 728, 7, 36, 2, 2, 728, 729, 7, 36, 2, 2, 729, 731, 7, 36, 2, 2, 730, 704, 3, 2, 2, 2, 730, 717, 3, 2, 2, 2, 731, 200, 3, 2, 2, 2, 732, 739, 10, 18, 2, 2, 733, 736, 7, 94, 2, 2, 734, 737, 5, 203, 102, 2, 735, 737, 11, 2, 2, 2, 736, 734, 3, 2, 2, 2, 736, 735, 3, 2, 2, 2, 737, 739, 3, 2, 2, 2, 738, 732, 3, 2, 2, 2, 738, 733, 3, 2, 2, 2, 739, 202, 3, 2, 2, 2, 740, 742, 7, 15, 2, 2, 741, 740, 3, 2, 2, 2, 741, 742, 3, 2, 2, 2, 742, 743, 3, 2, 2, 2, 743, 744, 7, 12, 2, 2, 744, 204, 3, 2, 2, 2, 745, 747, 9, 7, 2, 2, 746, 745, 3, 2, 2, 2, 747, 748, 3, 2, 2, 2, 748, 746, 3, 2, 2, 2, 748, 749, 3, 2, 2, 2, 749, 752, 3, 2, 2, 2, 750, 752, 5, 207, 104, 2, 751, 746, 3, 2, 2, 2, 751, 750, 3, 2, 2, 2, 752, 753, 3, 2, 2, 2, 753, 755, 9, 19, 2, 2, 754, 756, 9, 20, 2, 2, 755, 754, 3, 2, 2, 2, 755, 756, 3, 2, 2, 2, 756, 758, 3, 2, 2, 2, 757, 759, 9, 7, 2, 2, 758, 757, 3, 2, 2, 2, 759, 760, 3, 2, 2, 2, 760, 758, 3, 2, 2, 2, 760, 761, 3, 2, 2, 2, 761, 764, 3, 2, 2, 2, 762, 764, 5, 207, 104, 2, 763, 751, 3, 2, 2, 2, 763, 762, 3, 2, 2, 2, 764, 206, 3, 2, 2, 2, 765, 767, 9, 7, 2, 2, 766, 765, 3, 2, 2, 2, 767, 770, 3, 2, 2, 2, 768, 766, 3, 2, 2, 2, 768, 769, 3, 2, 2, 2, 769, 771, 3, 2, 2, 2, 770, 768, 3, 2, 2, 2, 771, 773, 7, 48, 2, 2, 772, 774, 9, 7, 2, 2, 773, 772, 3, 2, 2, 2, 774, 775, 3, 2, 2, 2, 775, 773, 3, 2, 2, 2, 775, 776, 3, 2, 2, 2, 776, 784, 3, 2, 2, 2, 777, 779, 9, 7, 2, 2, 778, 777, 3, 2, 2, 2, 779, 780, 3, 2, 2, 2, 780, 778, 3, 2, 2, 2, 780, 781, 3, 2, 2, 2, 781, 782, 3, 2, 2, 2, 782, 784, 7, 48, 2, 2, 783, 768, 3, 2, 2, 2, 783, 778, 3, 2, 2, 2, 784, 208, 3, 2, 2, 2, 785, 790, 7, 41, 2, 2, 786, 789, 5, 215, 108, 2, 787, 789, 5, 221, 111, 2, 788, 786, 3, 2, 2, 2, 788, 787, 3, 2, 2, 2, 789, 792, 3, 2, 2, 2, 790, 788, 3, 2, 2, 2, 790, 791, 3, 2, 2, 2, 791, 793, 3, 2, 2, 2, 792, 790, 3, 2, 2, 2, 793, 804, 7, 41, 2, 2, 794, 799, 7, 36, 2, 2, 795, 798, 5, 217, 109, 2, 796, 798, 5, 221, 111, 2, 797, 795, 3, 2, 2, 2, 797, 796, 3, 2, 2, 2, 798, 801, 3, 2, 2, 2, 799, 797, 3, 2, 2, 2, 799, 800, 3, 2, 2, 2, 800, 802, 3, 2, 2, 2, 801, 799, 3, 2, 2, 2, 802, 804, 7, 36, 2, 2, 803, 785, 3, 2, 2, 2, 803, 794, 3, 2, 2, 2, 804, 210, 3, 2, 2, 2, 805, 806, 7, 41, 2, 2, 806, 807, 7, 41, 2, 2, 807, 808, 7, 41, 2, 2, 808, 812, 3, 2, 2, 2, 809, 811, 5, 213, 107, 2, 810, 809, 3, 2, 2, 2, 811, 814, 3, 2, 2, 2, 812, 813, 3, 2, 2, 2, 812, 810, 3, 2, 2, 2, 813, 815, 3, 2, 2, 2, 814, 812, 3, 2, 2, 2, 815, 816, 7, 41, 2, 2, 816, 817, 7, 41, 2, 2, 817, 832, 7, 41, 2, 2, 818, 819, 7, 36, 2, 2, 819, 820, 7, 36, 2, 2, 820, 821, 7, 36, 2, 2, 821, 825, 3, 2, 2, 2, 822, 824, 5, 213, 107, 2, 823, 822, 3, 2, 2, 2, 824, 827, 3, 2, 2, 2, 825, 826, 3, 2, 2, 2, 825, 823, 3, 2, 2, 2, 826, 828, 3, 2, 2, 2, 827, 825, 3, 2, 2, 2, 828, 829, 7, 36, 2, 2, 829, 830, 7, 36, 2, 2, 830, 832, 7, 36, 2, 2, 831, 805, 3, 2, 2, 2, 831, 818, 3, 2, 2, 2, 832, 212, 3, 2, 2, 2, 833, 836, 5, 219, 110, 2, 834, 836, 5, 221, 111, 2, 835, 833, 3, 2, 2, 2, 835, 834, 3, 2, 2, 2, 836, 214, 3, 2, 2, 2, 837, 839, 9, 21, 2, 2, 838, 837, 3, 2, 2, 2, 839, 216, 3, 2, 2, 2, 840, 842, 9, 22, 2, 2, 841, 840, 3, 2, 2, 2, 842, 218, 3, 2, 2, 2, 843, 845, 9, 23, 2, 2, 844, 843, 3, 2, 2, 2, 845, 220, 3, 2, 2, 2, 846, 847, 7, 94, 2, 2, 847, 848, 9, 24, 2, 2, 848, 222, 3, 2, 2, 2, 849, 852, 5, 225, 113, 2, 850, 852, 9, 25, 2, 2, 851, 849, 3, 2, 2, 2, 851, 850, 3, 2, 2, 2, 852, 224, 3, 2, 2, 2, 853, 855, 9, 26, 2, 2, 854, 853, 3, 2, 2, 2, 855, 226, 3, 2, 2, 2, 59, 2, 544, 548, 550, 554, 558, 562, 566, 568, 574, 580, 582, 589, 596, 603, 609, 611, 639, 646, 661, 671, 680, 683, 685, 693, 696, 698, 702, 711, 724, 730, 736, 738, 741, 748, 751, 755, 760, 763, 768, 775, 780, 783, 788, 790, 797, 799, 803, 812, 825, 831, 835, 838, 841, 844, 851, 854, 11, 3, 88, 2, 3, 89, 3, 3, 90, 4, 3, 91, 5, 3, 92, 6, 3, 93, 7, 2, 3, 2, 3, 96, 8, 3, 97, 9] \ No newline at end of file +[4, 0, 100, 854, 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, 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, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 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, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 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, 18, 1, 18, 1, 18, 1, 18, 1, 18, 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, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 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, 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, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 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, 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, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 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, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 3, 79, 543, 8, 79, 1, 79, 1, 79, 3, 79, 547, 8, 79, 3, 79, 549, 8, 79, 1, 79, 1, 79, 3, 79, 553, 8, 79, 1, 79, 1, 79, 3, 79, 557, 8, 79, 1, 79, 1, 79, 3, 79, 561, 8, 79, 1, 79, 1, 79, 3, 79, 565, 8, 79, 3, 79, 567, 8, 79, 1, 80, 1, 80, 5, 80, 571, 8, 80, 10, 80, 12, 80, 574, 9, 80, 1, 80, 4, 80, 577, 8, 80, 11, 80, 12, 80, 578, 3, 80, 581, 8, 80, 1, 81, 1, 81, 1, 81, 4, 81, 586, 8, 81, 11, 81, 12, 81, 587, 1, 82, 1, 82, 1, 82, 4, 82, 593, 8, 82, 11, 82, 12, 82, 594, 1, 83, 1, 83, 1, 83, 4, 83, 600, 8, 83, 11, 83, 12, 83, 601, 1, 84, 1, 84, 4, 84, 606, 8, 84, 11, 84, 12, 84, 607, 3, 84, 610, 8, 84, 1, 84, 1, 84, 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, 5, 92, 636, 8, 92, 10, 92, 12, 92, 639, 9, 92, 1, 93, 1, 93, 5, 93, 643, 8, 93, 10, 93, 12, 93, 646, 9, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 4, 95, 658, 8, 95, 11, 95, 12, 95, 659, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 5, 96, 668, 8, 96, 10, 96, 12, 96, 671, 9, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 679, 8, 97, 1, 97, 5, 97, 682, 8, 97, 10, 97, 12, 97, 685, 9, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 692, 8, 97, 1, 97, 5, 97, 695, 8, 97, 10, 97, 12, 97, 698, 9, 97, 1, 97, 3, 97, 701, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 5, 98, 708, 8, 98, 10, 98, 12, 98, 711, 9, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 5, 98, 721, 8, 98, 10, 98, 12, 98, 724, 9, 98, 1, 98, 1, 98, 1, 98, 3, 98, 729, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 735, 8, 99, 3, 99, 737, 8, 99, 1, 100, 3, 100, 740, 8, 100, 1, 100, 1, 100, 1, 101, 4, 101, 745, 8, 101, 11, 101, 12, 101, 746, 1, 101, 3, 101, 750, 8, 101, 1, 101, 1, 101, 3, 101, 754, 8, 101, 1, 101, 4, 101, 757, 8, 101, 11, 101, 12, 101, 758, 1, 101, 3, 101, 762, 8, 101, 1, 102, 5, 102, 765, 8, 102, 10, 102, 12, 102, 768, 9, 102, 1, 102, 1, 102, 4, 102, 772, 8, 102, 11, 102, 12, 102, 773, 1, 102, 4, 102, 777, 8, 102, 11, 102, 12, 102, 778, 1, 102, 3, 102, 782, 8, 102, 1, 103, 1, 103, 1, 103, 5, 103, 787, 8, 103, 10, 103, 12, 103, 790, 9, 103, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 796, 8, 103, 10, 103, 12, 103, 799, 9, 103, 1, 103, 3, 103, 802, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 809, 8, 104, 10, 104, 12, 104, 812, 9, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 822, 8, 104, 10, 104, 12, 104, 825, 9, 104, 1, 104, 1, 104, 1, 104, 3, 104, 830, 8, 104, 1, 105, 1, 105, 3, 105, 834, 8, 105, 1, 106, 3, 106, 837, 8, 106, 1, 107, 3, 107, 840, 8, 107, 1, 108, 3, 108, 843, 8, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 850, 8, 110, 1, 111, 3, 111, 853, 8, 111, 4, 709, 722, 810, 823, 0, 112, 1, 4, 3, 5, 5, 6, 7, 7, 9, 8, 11, 9, 13, 10, 15, 11, 17, 12, 19, 13, 21, 14, 23, 15, 25, 16, 27, 17, 29, 18, 31, 19, 33, 20, 35, 21, 37, 22, 39, 23, 41, 24, 43, 25, 45, 26, 47, 27, 49, 28, 51, 29, 53, 30, 55, 31, 57, 32, 59, 33, 61, 34, 63, 35, 65, 36, 67, 37, 69, 38, 71, 39, 73, 40, 75, 41, 77, 42, 79, 43, 81, 44, 83, 45, 85, 46, 87, 47, 89, 48, 91, 49, 93, 50, 95, 51, 97, 52, 99, 53, 101, 54, 103, 55, 105, 56, 107, 57, 109, 58, 111, 59, 113, 60, 115, 61, 117, 62, 119, 63, 121, 64, 123, 65, 125, 66, 127, 67, 129, 68, 131, 69, 133, 70, 135, 71, 137, 72, 139, 73, 141, 74, 143, 75, 145, 76, 147, 77, 149, 78, 151, 79, 153, 80, 155, 81, 157, 82, 159, 83, 161, 84, 163, 85, 165, 86, 167, 87, 169, 88, 171, 89, 173, 90, 175, 91, 177, 92, 179, 93, 181, 94, 183, 95, 185, 96, 187, 97, 189, 98, 191, 99, 193, 100, 195, 0, 197, 0, 199, 0, 201, 0, 203, 0, 205, 0, 207, 0, 209, 0, 211, 0, 213, 0, 215, 0, 217, 0, 219, 0, 221, 0, 223, 0, 1, 0, 25, 2, 0, 85, 85, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 82, 82, 114, 114, 2, 0, 66, 66, 98, 98, 1, 0, 49, 57, 1, 0, 48, 57, 2, 0, 79, 79, 111, 111, 1, 0, 48, 55, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 49, 2, 0, 74, 74, 106, 106, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 12, 13, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 1, 0, 92, 92, 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, 148, 0, 48, 57, 768, 879, 1155, 1158, 1425, 1465, 1467, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1552, 1557, 1611, 1630, 1632, 1641, 1648, 1648, 1750, 1756, 1759, 1764, 1767, 1768, 1770, 1773, 1776, 1785, 1809, 1809, 1840, 1866, 1958, 1968, 2305, 2307, 2364, 2364, 2366, 2381, 2385, 2388, 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, 2662, 2673, 2689, 2691, 2748, 2748, 2750, 2757, 2759, 2761, 2763, 2765, 2786, 2787, 2790, 2799, 2817, 2819, 2876, 2876, 2878, 2883, 2887, 2888, 2891, 2893, 2902, 2903, 2918, 2927, 2946, 2946, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3046, 3055, 3073, 3075, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3174, 3183, 3202, 3203, 3260, 3260, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3302, 3311, 3330, 3331, 3390, 3395, 3398, 3400, 3402, 3405, 3415, 3415, 3430, 3439, 3458, 3459, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 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, 3984, 3991, 3993, 4028, 4038, 4038, 4140, 4146, 4150, 4153, 4160, 4169, 4182, 4185, 4959, 4959, 4969, 4977, 5906, 5908, 5938, 5940, 5970, 5971, 6002, 6003, 6070, 6099, 6109, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6313, 6313, 6432, 6443, 6448, 6459, 6470, 6479, 6576, 6592, 6600, 6601, 6608, 6617, 6679, 6683, 7616, 7619, 8255, 8256, 8276, 8276, 8400, 8412, 8417, 8417, 8421, 8427, 12330, 12335, 12441, 12442, 43010, 43010, 43014, 43014, 43019, 43019, 43043, 43047, 64286, 64286, 65024, 65039, 65056, 65059, 65075, 65076, 65101, 65103, 65296, 65305, 65343, 65343, 295, 0, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 577, 592, 705, 710, 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 1013, 1015, 1153, 1162, 1230, 1232, 1273, 1280, 1295, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1901, 1920, 1957, 1969, 1969, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2429, 2429, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 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, 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, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 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, 3805, 3840, 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, 4176, 4181, 4256, 4293, 4304, 4346, 4348, 4348, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 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, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6569, 6593, 6599, 6656, 6678, 7424, 7615, 7680, 7835, 7840, 7929, 7936, 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, 8340, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8497, 8499, 8505, 8508, 8511, 8517, 8521, 8544, 8579, 11264, 11310, 11312, 11358, 11392, 11492, 11520, 11557, 11568, 11621, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12588, 12593, 12686, 12704, 12727, 12784, 12799, 13312, 19893, 19968, 40891, 40960, 42124, 43008, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 44032, 55203, 63744, 64045, 64048, 64106, 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, 892, 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, 1, 225, 1, 0, 0, 0, 3, 229, 1, 0, 0, 0, 5, 236, 1, 0, 0, 0, 7, 242, 1, 0, 0, 0, 9, 247, 1, 0, 0, 0, 11, 254, 1, 0, 0, 0, 13, 263, 1, 0, 0, 0, 15, 266, 1, 0, 0, 0, 17, 273, 1, 0, 0, 0, 19, 280, 1, 0, 0, 0, 21, 283, 1, 0, 0, 0, 23, 288, 1, 0, 0, 0, 25, 293, 1, 0, 0, 0, 27, 299, 1, 0, 0, 0, 29, 303, 1, 0, 0, 0, 31, 306, 1, 0, 0, 0, 33, 310, 1, 0, 0, 0, 35, 315, 1, 0, 0, 0, 37, 323, 1, 0, 0, 0, 39, 328, 1, 0, 0, 0, 41, 335, 1, 0, 0, 0, 43, 342, 1, 0, 0, 0, 45, 345, 1, 0, 0, 0, 47, 349, 1, 0, 0, 0, 49, 353, 1, 0, 0, 0, 51, 356, 1, 0, 0, 0, 53, 362, 1, 0, 0, 0, 55, 368, 1, 0, 0, 0, 57, 372, 1, 0, 0, 0, 59, 377, 1, 0, 0, 0, 61, 386, 1, 0, 0, 0, 63, 392, 1, 0, 0, 0, 65, 398, 1, 0, 0, 0, 67, 404, 1, 0, 0, 0, 69, 410, 1, 0, 0, 0, 71, 415, 1, 0, 0, 0, 73, 420, 1, 0, 0, 0, 75, 426, 1, 0, 0, 0, 77, 428, 1, 0, 0, 0, 79, 432, 1, 0, 0, 0, 81, 434, 1, 0, 0, 0, 83, 436, 1, 0, 0, 0, 85, 438, 1, 0, 0, 0, 87, 440, 1, 0, 0, 0, 89, 442, 1, 0, 0, 0, 91, 445, 1, 0, 0, 0, 93, 447, 1, 0, 0, 0, 95, 449, 1, 0, 0, 0, 97, 451, 1, 0, 0, 0, 99, 453, 1, 0, 0, 0, 101, 456, 1, 0, 0, 0, 103, 459, 1, 0, 0, 0, 105, 461, 1, 0, 0, 0, 107, 463, 1, 0, 0, 0, 109, 465, 1, 0, 0, 0, 111, 467, 1, 0, 0, 0, 113, 470, 1, 0, 0, 0, 115, 472, 1, 0, 0, 0, 117, 474, 1, 0, 0, 0, 119, 476, 1, 0, 0, 0, 121, 479, 1, 0, 0, 0, 123, 482, 1, 0, 0, 0, 125, 485, 1, 0, 0, 0, 127, 488, 1, 0, 0, 0, 129, 491, 1, 0, 0, 0, 131, 493, 1, 0, 0, 0, 133, 496, 1, 0, 0, 0, 135, 499, 1, 0, 0, 0, 137, 502, 1, 0, 0, 0, 139, 505, 1, 0, 0, 0, 141, 508, 1, 0, 0, 0, 143, 511, 1, 0, 0, 0, 145, 514, 1, 0, 0, 0, 147, 517, 1, 0, 0, 0, 149, 520, 1, 0, 0, 0, 151, 523, 1, 0, 0, 0, 153, 527, 1, 0, 0, 0, 155, 531, 1, 0, 0, 0, 157, 535, 1, 0, 0, 0, 159, 566, 1, 0, 0, 0, 161, 580, 1, 0, 0, 0, 163, 582, 1, 0, 0, 0, 165, 589, 1, 0, 0, 0, 167, 596, 1, 0, 0, 0, 169, 609, 1, 0, 0, 0, 171, 613, 1, 0, 0, 0, 173, 615, 1, 0, 0, 0, 175, 618, 1, 0, 0, 0, 177, 621, 1, 0, 0, 0, 179, 624, 1, 0, 0, 0, 181, 627, 1, 0, 0, 0, 183, 630, 1, 0, 0, 0, 185, 633, 1, 0, 0, 0, 187, 640, 1, 0, 0, 0, 189, 651, 1, 0, 0, 0, 191, 657, 1, 0, 0, 0, 193, 665, 1, 0, 0, 0, 195, 700, 1, 0, 0, 0, 197, 728, 1, 0, 0, 0, 199, 736, 1, 0, 0, 0, 201, 739, 1, 0, 0, 0, 203, 761, 1, 0, 0, 0, 205, 781, 1, 0, 0, 0, 207, 801, 1, 0, 0, 0, 209, 829, 1, 0, 0, 0, 211, 833, 1, 0, 0, 0, 213, 836, 1, 0, 0, 0, 215, 839, 1, 0, 0, 0, 217, 842, 1, 0, 0, 0, 219, 844, 1, 0, 0, 0, 221, 849, 1, 0, 0, 0, 223, 852, 1, 0, 0, 0, 225, 226, 5, 100, 0, 0, 226, 227, 5, 101, 0, 0, 227, 228, 5, 102, 0, 0, 228, 2, 1, 0, 0, 0, 229, 230, 5, 114, 0, 0, 230, 231, 5, 101, 0, 0, 231, 232, 5, 116, 0, 0, 232, 233, 5, 117, 0, 0, 233, 234, 5, 114, 0, 0, 234, 235, 5, 110, 0, 0, 235, 4, 1, 0, 0, 0, 236, 237, 5, 114, 0, 0, 237, 238, 5, 97, 0, 0, 238, 239, 5, 105, 0, 0, 239, 240, 5, 115, 0, 0, 240, 241, 5, 101, 0, 0, 241, 6, 1, 0, 0, 0, 242, 243, 5, 102, 0, 0, 243, 244, 5, 114, 0, 0, 244, 245, 5, 111, 0, 0, 245, 246, 5, 109, 0, 0, 246, 8, 1, 0, 0, 0, 247, 248, 5, 105, 0, 0, 248, 249, 5, 109, 0, 0, 249, 250, 5, 112, 0, 0, 250, 251, 5, 111, 0, 0, 251, 252, 5, 114, 0, 0, 252, 253, 5, 116, 0, 0, 253, 10, 1, 0, 0, 0, 254, 255, 5, 110, 0, 0, 255, 256, 5, 111, 0, 0, 256, 257, 5, 110, 0, 0, 257, 258, 5, 108, 0, 0, 258, 259, 5, 111, 0, 0, 259, 260, 5, 99, 0, 0, 260, 261, 5, 97, 0, 0, 261, 262, 5, 108, 0, 0, 262, 12, 1, 0, 0, 0, 263, 264, 5, 97, 0, 0, 264, 265, 5, 115, 0, 0, 265, 14, 1, 0, 0, 0, 266, 267, 5, 103, 0, 0, 267, 268, 5, 108, 0, 0, 268, 269, 5, 111, 0, 0, 269, 270, 5, 98, 0, 0, 270, 271, 5, 97, 0, 0, 271, 272, 5, 108, 0, 0, 272, 16, 1, 0, 0, 0, 273, 274, 5, 97, 0, 0, 274, 275, 5, 115, 0, 0, 275, 276, 5, 115, 0, 0, 276, 277, 5, 101, 0, 0, 277, 278, 5, 114, 0, 0, 278, 279, 5, 116, 0, 0, 279, 18, 1, 0, 0, 0, 280, 281, 5, 105, 0, 0, 281, 282, 5, 102, 0, 0, 282, 20, 1, 0, 0, 0, 283, 284, 5, 101, 0, 0, 284, 285, 5, 108, 0, 0, 285, 286, 5, 105, 0, 0, 286, 287, 5, 102, 0, 0, 287, 22, 1, 0, 0, 0, 288, 289, 5, 101, 0, 0, 289, 290, 5, 108, 0, 0, 290, 291, 5, 115, 0, 0, 291, 292, 5, 101, 0, 0, 292, 24, 1, 0, 0, 0, 293, 294, 5, 119, 0, 0, 294, 295, 5, 104, 0, 0, 295, 296, 5, 105, 0, 0, 296, 297, 5, 108, 0, 0, 297, 298, 5, 101, 0, 0, 298, 26, 1, 0, 0, 0, 299, 300, 5, 102, 0, 0, 300, 301, 5, 111, 0, 0, 301, 302, 5, 114, 0, 0, 302, 28, 1, 0, 0, 0, 303, 304, 5, 105, 0, 0, 304, 305, 5, 110, 0, 0, 305, 30, 1, 0, 0, 0, 306, 307, 5, 116, 0, 0, 307, 308, 5, 114, 0, 0, 308, 309, 5, 121, 0, 0, 309, 32, 1, 0, 0, 0, 310, 311, 5, 78, 0, 0, 311, 312, 5, 111, 0, 0, 312, 313, 5, 110, 0, 0, 313, 314, 5, 101, 0, 0, 314, 34, 1, 0, 0, 0, 315, 316, 5, 102, 0, 0, 316, 317, 5, 105, 0, 0, 317, 318, 5, 110, 0, 0, 318, 319, 5, 97, 0, 0, 319, 320, 5, 108, 0, 0, 320, 321, 5, 108, 0, 0, 321, 322, 5, 121, 0, 0, 322, 36, 1, 0, 0, 0, 323, 324, 5, 119, 0, 0, 324, 325, 5, 105, 0, 0, 325, 326, 5, 116, 0, 0, 326, 327, 5, 104, 0, 0, 327, 38, 1, 0, 0, 0, 328, 329, 5, 101, 0, 0, 329, 330, 5, 120, 0, 0, 330, 331, 5, 99, 0, 0, 331, 332, 5, 101, 0, 0, 332, 333, 5, 112, 0, 0, 333, 334, 5, 116, 0, 0, 334, 40, 1, 0, 0, 0, 335, 336, 5, 108, 0, 0, 336, 337, 5, 97, 0, 0, 337, 338, 5, 109, 0, 0, 338, 339, 5, 98, 0, 0, 339, 340, 5, 100, 0, 0, 340, 341, 5, 97, 0, 0, 341, 42, 1, 0, 0, 0, 342, 343, 5, 111, 0, 0, 343, 344, 5, 114, 0, 0, 344, 44, 1, 0, 0, 0, 345, 346, 5, 97, 0, 0, 346, 347, 5, 110, 0, 0, 347, 348, 5, 100, 0, 0, 348, 46, 1, 0, 0, 0, 349, 350, 5, 110, 0, 0, 350, 351, 5, 111, 0, 0, 351, 352, 5, 116, 0, 0, 352, 48, 1, 0, 0, 0, 353, 354, 5, 105, 0, 0, 354, 355, 5, 115, 0, 0, 355, 50, 1, 0, 0, 0, 356, 357, 5, 99, 0, 0, 357, 358, 5, 108, 0, 0, 358, 359, 5, 97, 0, 0, 359, 360, 5, 115, 0, 0, 360, 361, 5, 115, 0, 0, 361, 52, 1, 0, 0, 0, 362, 363, 5, 121, 0, 0, 363, 364, 5, 105, 0, 0, 364, 365, 5, 101, 0, 0, 365, 366, 5, 108, 0, 0, 366, 367, 5, 100, 0, 0, 367, 54, 1, 0, 0, 0, 368, 369, 5, 100, 0, 0, 369, 370, 5, 101, 0, 0, 370, 371, 5, 108, 0, 0, 371, 56, 1, 0, 0, 0, 372, 373, 5, 112, 0, 0, 373, 374, 5, 97, 0, 0, 374, 375, 5, 115, 0, 0, 375, 376, 5, 115, 0, 0, 376, 58, 1, 0, 0, 0, 377, 378, 5, 99, 0, 0, 378, 379, 5, 111, 0, 0, 379, 380, 5, 110, 0, 0, 380, 381, 5, 116, 0, 0, 381, 382, 5, 105, 0, 0, 382, 383, 5, 110, 0, 0, 383, 384, 5, 117, 0, 0, 384, 385, 5, 101, 0, 0, 385, 60, 1, 0, 0, 0, 386, 387, 5, 98, 0, 0, 387, 388, 5, 114, 0, 0, 388, 389, 5, 101, 0, 0, 389, 390, 5, 97, 0, 0, 390, 391, 5, 107, 0, 0, 391, 62, 1, 0, 0, 0, 392, 393, 5, 97, 0, 0, 393, 394, 5, 115, 0, 0, 394, 395, 5, 121, 0, 0, 395, 396, 5, 110, 0, 0, 396, 397, 5, 99, 0, 0, 397, 64, 1, 0, 0, 0, 398, 399, 5, 97, 0, 0, 399, 400, 5, 119, 0, 0, 400, 401, 5, 97, 0, 0, 401, 402, 5, 105, 0, 0, 402, 403, 5, 116, 0, 0, 403, 66, 1, 0, 0, 0, 404, 405, 5, 112, 0, 0, 405, 406, 5, 114, 0, 0, 406, 407, 5, 105, 0, 0, 407, 408, 5, 110, 0, 0, 408, 409, 5, 116, 0, 0, 409, 68, 1, 0, 0, 0, 410, 411, 5, 101, 0, 0, 411, 412, 5, 120, 0, 0, 412, 413, 5, 101, 0, 0, 413, 414, 5, 99, 0, 0, 414, 70, 1, 0, 0, 0, 415, 416, 5, 84, 0, 0, 416, 417, 5, 114, 0, 0, 417, 418, 5, 117, 0, 0, 418, 419, 5, 101, 0, 0, 419, 72, 1, 0, 0, 0, 420, 421, 5, 70, 0, 0, 421, 422, 5, 97, 0, 0, 422, 423, 5, 108, 0, 0, 423, 424, 5, 115, 0, 0, 424, 425, 5, 101, 0, 0, 425, 74, 1, 0, 0, 0, 426, 427, 5, 46, 0, 0, 427, 76, 1, 0, 0, 0, 428, 429, 5, 46, 0, 0, 429, 430, 5, 46, 0, 0, 430, 431, 5, 46, 0, 0, 431, 78, 1, 0, 0, 0, 432, 433, 5, 96, 0, 0, 433, 80, 1, 0, 0, 0, 434, 435, 5, 42, 0, 0, 435, 82, 1, 0, 0, 0, 436, 437, 5, 44, 0, 0, 437, 84, 1, 0, 0, 0, 438, 439, 5, 58, 0, 0, 439, 86, 1, 0, 0, 0, 440, 441, 5, 59, 0, 0, 441, 88, 1, 0, 0, 0, 442, 443, 5, 42, 0, 0, 443, 444, 5, 42, 0, 0, 444, 90, 1, 0, 0, 0, 445, 446, 5, 61, 0, 0, 446, 92, 1, 0, 0, 0, 447, 448, 5, 124, 0, 0, 448, 94, 1, 0, 0, 0, 449, 450, 5, 94, 0, 0, 450, 96, 1, 0, 0, 0, 451, 452, 5, 38, 0, 0, 452, 98, 1, 0, 0, 0, 453, 454, 5, 60, 0, 0, 454, 455, 5, 60, 0, 0, 455, 100, 1, 0, 0, 0, 456, 457, 5, 62, 0, 0, 457, 458, 5, 62, 0, 0, 458, 102, 1, 0, 0, 0, 459, 460, 5, 43, 0, 0, 460, 104, 1, 0, 0, 0, 461, 462, 5, 45, 0, 0, 462, 106, 1, 0, 0, 0, 463, 464, 5, 47, 0, 0, 464, 108, 1, 0, 0, 0, 465, 466, 5, 37, 0, 0, 466, 110, 1, 0, 0, 0, 467, 468, 5, 47, 0, 0, 468, 469, 5, 47, 0, 0, 469, 112, 1, 0, 0, 0, 470, 471, 5, 126, 0, 0, 471, 114, 1, 0, 0, 0, 472, 473, 5, 60, 0, 0, 473, 116, 1, 0, 0, 0, 474, 475, 5, 62, 0, 0, 475, 118, 1, 0, 0, 0, 476, 477, 5, 61, 0, 0, 477, 478, 5, 61, 0, 0, 478, 120, 1, 0, 0, 0, 479, 480, 5, 62, 0, 0, 480, 481, 5, 61, 0, 0, 481, 122, 1, 0, 0, 0, 482, 483, 5, 60, 0, 0, 483, 484, 5, 61, 0, 0, 484, 124, 1, 0, 0, 0, 485, 486, 5, 60, 0, 0, 486, 487, 5, 62, 0, 0, 487, 126, 1, 0, 0, 0, 488, 489, 5, 33, 0, 0, 489, 490, 5, 61, 0, 0, 490, 128, 1, 0, 0, 0, 491, 492, 5, 64, 0, 0, 492, 130, 1, 0, 0, 0, 493, 494, 5, 45, 0, 0, 494, 495, 5, 62, 0, 0, 495, 132, 1, 0, 0, 0, 496, 497, 5, 43, 0, 0, 497, 498, 5, 61, 0, 0, 498, 134, 1, 0, 0, 0, 499, 500, 5, 45, 0, 0, 500, 501, 5, 61, 0, 0, 501, 136, 1, 0, 0, 0, 502, 503, 5, 42, 0, 0, 503, 504, 5, 61, 0, 0, 504, 138, 1, 0, 0, 0, 505, 506, 5, 64, 0, 0, 506, 507, 5, 61, 0, 0, 507, 140, 1, 0, 0, 0, 508, 509, 5, 47, 0, 0, 509, 510, 5, 61, 0, 0, 510, 142, 1, 0, 0, 0, 511, 512, 5, 37, 0, 0, 512, 513, 5, 61, 0, 0, 513, 144, 1, 0, 0, 0, 514, 515, 5, 38, 0, 0, 515, 516, 5, 61, 0, 0, 516, 146, 1, 0, 0, 0, 517, 518, 5, 124, 0, 0, 518, 519, 5, 61, 0, 0, 519, 148, 1, 0, 0, 0, 520, 521, 5, 94, 0, 0, 521, 522, 5, 61, 0, 0, 522, 150, 1, 0, 0, 0, 523, 524, 5, 60, 0, 0, 524, 525, 5, 60, 0, 0, 525, 526, 5, 61, 0, 0, 526, 152, 1, 0, 0, 0, 527, 528, 5, 62, 0, 0, 528, 529, 5, 62, 0, 0, 529, 530, 5, 61, 0, 0, 530, 154, 1, 0, 0, 0, 531, 532, 5, 42, 0, 0, 532, 533, 5, 42, 0, 0, 533, 534, 5, 61, 0, 0, 534, 156, 1, 0, 0, 0, 535, 536, 5, 47, 0, 0, 536, 537, 5, 47, 0, 0, 537, 538, 5, 61, 0, 0, 538, 158, 1, 0, 0, 0, 539, 549, 7, 0, 0, 0, 540, 542, 7, 1, 0, 0, 541, 543, 7, 2, 0, 0, 542, 541, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 549, 1, 0, 0, 0, 544, 546, 7, 2, 0, 0, 545, 547, 7, 1, 0, 0, 546, 545, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 549, 1, 0, 0, 0, 548, 539, 1, 0, 0, 0, 548, 540, 1, 0, 0, 0, 548, 544, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 553, 3, 195, 97, 0, 551, 553, 3, 197, 98, 0, 552, 550, 1, 0, 0, 0, 552, 551, 1, 0, 0, 0, 553, 567, 1, 0, 0, 0, 554, 556, 7, 3, 0, 0, 555, 557, 7, 2, 0, 0, 556, 555, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 561, 1, 0, 0, 0, 558, 559, 7, 2, 0, 0, 559, 561, 7, 3, 0, 0, 560, 554, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 561, 564, 1, 0, 0, 0, 562, 565, 3, 207, 103, 0, 563, 565, 3, 209, 104, 0, 564, 562, 1, 0, 0, 0, 564, 563, 1, 0, 0, 0, 565, 567, 1, 0, 0, 0, 566, 548, 1, 0, 0, 0, 566, 560, 1, 0, 0, 0, 567, 160, 1, 0, 0, 0, 568, 572, 7, 4, 0, 0, 569, 571, 7, 5, 0, 0, 570, 569, 1, 0, 0, 0, 571, 574, 1, 0, 0, 0, 572, 570, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 581, 1, 0, 0, 0, 574, 572, 1, 0, 0, 0, 575, 577, 5, 48, 0, 0, 576, 575, 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 581, 1, 0, 0, 0, 580, 568, 1, 0, 0, 0, 580, 576, 1, 0, 0, 0, 581, 162, 1, 0, 0, 0, 582, 583, 5, 48, 0, 0, 583, 585, 7, 6, 0, 0, 584, 586, 7, 7, 0, 0, 585, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 164, 1, 0, 0, 0, 589, 590, 5, 48, 0, 0, 590, 592, 7, 8, 0, 0, 591, 593, 7, 9, 0, 0, 592, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 166, 1, 0, 0, 0, 596, 597, 5, 48, 0, 0, 597, 599, 7, 3, 0, 0, 598, 600, 7, 10, 0, 0, 599, 598, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 168, 1, 0, 0, 0, 603, 610, 3, 203, 101, 0, 604, 606, 7, 5, 0, 0, 605, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 610, 1, 0, 0, 0, 609, 603, 1, 0, 0, 0, 609, 605, 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 612, 7, 11, 0, 0, 612, 170, 1, 0, 0, 0, 613, 614, 3, 203, 101, 0, 614, 172, 1, 0, 0, 0, 615, 616, 5, 40, 0, 0, 616, 617, 6, 86, 0, 0, 617, 174, 1, 0, 0, 0, 618, 619, 5, 41, 0, 0, 619, 620, 6, 87, 1, 0, 620, 176, 1, 0, 0, 0, 621, 622, 5, 123, 0, 0, 622, 623, 6, 88, 2, 0, 623, 178, 1, 0, 0, 0, 624, 625, 5, 125, 0, 0, 625, 626, 6, 89, 3, 0, 626, 180, 1, 0, 0, 0, 627, 628, 5, 91, 0, 0, 628, 629, 6, 90, 4, 0, 629, 182, 1, 0, 0, 0, 630, 631, 5, 93, 0, 0, 631, 632, 6, 91, 5, 0, 632, 184, 1, 0, 0, 0, 633, 637, 3, 223, 111, 0, 634, 636, 3, 221, 110, 0, 635, 634, 1, 0, 0, 0, 636, 639, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 186, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 640, 644, 5, 92, 0, 0, 641, 643, 7, 12, 0, 0, 642, 641, 1, 0, 0, 0, 643, 646, 1, 0, 0, 0, 644, 642, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 647, 1, 0, 0, 0, 646, 644, 1, 0, 0, 0, 647, 648, 3, 201, 100, 0, 648, 649, 1, 0, 0, 0, 649, 650, 6, 93, 6, 0, 650, 188, 1, 0, 0, 0, 651, 652, 3, 201, 100, 0, 652, 653, 6, 94, 7, 0, 653, 654, 1, 0, 0, 0, 654, 655, 6, 94, 6, 0, 655, 190, 1, 0, 0, 0, 656, 658, 7, 12, 0, 0, 657, 656, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 657, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 662, 6, 95, 8, 0, 662, 663, 1, 0, 0, 0, 663, 664, 6, 95, 6, 0, 664, 192, 1, 0, 0, 0, 665, 669, 5, 35, 0, 0, 666, 668, 8, 13, 0, 0, 667, 666, 1, 0, 0, 0, 668, 671, 1, 0, 0, 0, 669, 667, 1, 0, 0, 0, 669, 670, 1, 0, 0, 0, 670, 672, 1, 0, 0, 0, 671, 669, 1, 0, 0, 0, 672, 673, 6, 96, 6, 0, 673, 194, 1, 0, 0, 0, 674, 683, 5, 39, 0, 0, 675, 678, 5, 92, 0, 0, 676, 679, 3, 201, 100, 0, 677, 679, 9, 0, 0, 0, 678, 676, 1, 0, 0, 0, 678, 677, 1, 0, 0, 0, 679, 682, 1, 0, 0, 0, 680, 682, 8, 14, 0, 0, 681, 675, 1, 0, 0, 0, 681, 680, 1, 0, 0, 0, 682, 685, 1, 0, 0, 0, 683, 681, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 686, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 686, 701, 5, 39, 0, 0, 687, 696, 5, 34, 0, 0, 688, 691, 5, 92, 0, 0, 689, 692, 3, 201, 100, 0, 690, 692, 9, 0, 0, 0, 691, 689, 1, 0, 0, 0, 691, 690, 1, 0, 0, 0, 692, 695, 1, 0, 0, 0, 693, 695, 8, 15, 0, 0, 694, 688, 1, 0, 0, 0, 694, 693, 1, 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 699, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 701, 5, 34, 0, 0, 700, 674, 1, 0, 0, 0, 700, 687, 1, 0, 0, 0, 701, 196, 1, 0, 0, 0, 702, 703, 5, 39, 0, 0, 703, 704, 5, 39, 0, 0, 704, 705, 5, 39, 0, 0, 705, 709, 1, 0, 0, 0, 706, 708, 3, 199, 99, 0, 707, 706, 1, 0, 0, 0, 708, 711, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 709, 707, 1, 0, 0, 0, 710, 712, 1, 0, 0, 0, 711, 709, 1, 0, 0, 0, 712, 713, 5, 39, 0, 0, 713, 714, 5, 39, 0, 0, 714, 729, 5, 39, 0, 0, 715, 716, 5, 34, 0, 0, 716, 717, 5, 34, 0, 0, 717, 718, 5, 34, 0, 0, 718, 722, 1, 0, 0, 0, 719, 721, 3, 199, 99, 0, 720, 719, 1, 0, 0, 0, 721, 724, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 722, 720, 1, 0, 0, 0, 723, 725, 1, 0, 0, 0, 724, 722, 1, 0, 0, 0, 725, 726, 5, 34, 0, 0, 726, 727, 5, 34, 0, 0, 727, 729, 5, 34, 0, 0, 728, 702, 1, 0, 0, 0, 728, 715, 1, 0, 0, 0, 729, 198, 1, 0, 0, 0, 730, 737, 8, 16, 0, 0, 731, 734, 5, 92, 0, 0, 732, 735, 3, 201, 100, 0, 733, 735, 9, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734, 733, 1, 0, 0, 0, 735, 737, 1, 0, 0, 0, 736, 730, 1, 0, 0, 0, 736, 731, 1, 0, 0, 0, 737, 200, 1, 0, 0, 0, 738, 740, 5, 13, 0, 0, 739, 738, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 5, 10, 0, 0, 742, 202, 1, 0, 0, 0, 743, 745, 7, 5, 0, 0, 744, 743, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 744, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 750, 1, 0, 0, 0, 748, 750, 3, 205, 102, 0, 749, 744, 1, 0, 0, 0, 749, 748, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 753, 7, 17, 0, 0, 752, 754, 7, 18, 0, 0, 753, 752, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 756, 1, 0, 0, 0, 755, 757, 7, 5, 0, 0, 756, 755, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 756, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 762, 1, 0, 0, 0, 760, 762, 3, 205, 102, 0, 761, 749, 1, 0, 0, 0, 761, 760, 1, 0, 0, 0, 762, 204, 1, 0, 0, 0, 763, 765, 7, 5, 0, 0, 764, 763, 1, 0, 0, 0, 765, 768, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 769, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 769, 771, 5, 46, 0, 0, 770, 772, 7, 5, 0, 0, 771, 770, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 782, 1, 0, 0, 0, 775, 777, 7, 5, 0, 0, 776, 775, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 782, 5, 46, 0, 0, 781, 766, 1, 0, 0, 0, 781, 776, 1, 0, 0, 0, 782, 206, 1, 0, 0, 0, 783, 788, 5, 39, 0, 0, 784, 787, 3, 213, 106, 0, 785, 787, 3, 219, 109, 0, 786, 784, 1, 0, 0, 0, 786, 785, 1, 0, 0, 0, 787, 790, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 788, 1, 0, 0, 0, 791, 802, 5, 39, 0, 0, 792, 797, 5, 34, 0, 0, 793, 796, 3, 215, 107, 0, 794, 796, 3, 219, 109, 0, 795, 793, 1, 0, 0, 0, 795, 794, 1, 0, 0, 0, 796, 799, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 800, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 800, 802, 5, 34, 0, 0, 801, 783, 1, 0, 0, 0, 801, 792, 1, 0, 0, 0, 802, 208, 1, 0, 0, 0, 803, 804, 5, 39, 0, 0, 804, 805, 5, 39, 0, 0, 805, 806, 5, 39, 0, 0, 806, 810, 1, 0, 0, 0, 807, 809, 3, 211, 105, 0, 808, 807, 1, 0, 0, 0, 809, 812, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 811, 813, 1, 0, 0, 0, 812, 810, 1, 0, 0, 0, 813, 814, 5, 39, 0, 0, 814, 815, 5, 39, 0, 0, 815, 830, 5, 39, 0, 0, 816, 817, 5, 34, 0, 0, 817, 818, 5, 34, 0, 0, 818, 819, 5, 34, 0, 0, 819, 823, 1, 0, 0, 0, 820, 822, 3, 211, 105, 0, 821, 820, 1, 0, 0, 0, 822, 825, 1, 0, 0, 0, 823, 824, 1, 0, 0, 0, 823, 821, 1, 0, 0, 0, 824, 826, 1, 0, 0, 0, 825, 823, 1, 0, 0, 0, 826, 827, 5, 34, 0, 0, 827, 828, 5, 34, 0, 0, 828, 830, 5, 34, 0, 0, 829, 803, 1, 0, 0, 0, 829, 816, 1, 0, 0, 0, 830, 210, 1, 0, 0, 0, 831, 834, 3, 217, 108, 0, 832, 834, 3, 219, 109, 0, 833, 831, 1, 0, 0, 0, 833, 832, 1, 0, 0, 0, 834, 212, 1, 0, 0, 0, 835, 837, 7, 19, 0, 0, 836, 835, 1, 0, 0, 0, 837, 214, 1, 0, 0, 0, 838, 840, 7, 20, 0, 0, 839, 838, 1, 0, 0, 0, 840, 216, 1, 0, 0, 0, 841, 843, 7, 21, 0, 0, 842, 841, 1, 0, 0, 0, 843, 218, 1, 0, 0, 0, 844, 845, 5, 92, 0, 0, 845, 846, 7, 22, 0, 0, 846, 220, 1, 0, 0, 0, 847, 850, 3, 223, 111, 0, 848, 850, 7, 23, 0, 0, 849, 847, 1, 0, 0, 0, 849, 848, 1, 0, 0, 0, 850, 222, 1, 0, 0, 0, 851, 853, 7, 24, 0, 0, 852, 851, 1, 0, 0, 0, 853, 224, 1, 0, 0, 0, 57, 0, 542, 546, 548, 552, 556, 560, 564, 566, 572, 578, 580, 587, 594, 601, 607, 609, 637, 644, 659, 669, 678, 681, 683, 691, 694, 696, 700, 709, 722, 728, 734, 736, 739, 746, 749, 753, 758, 761, 766, 773, 778, 781, 786, 788, 795, 797, 801, 810, 823, 829, 833, 836, 839, 842, 849, 852, 9, 1, 86, 0, 1, 87, 1, 1, 88, 2, 1, 89, 3, 1, 90, 4, 1, 91, 5, 0, 1, 0, 1, 94, 6, 1, 95, 7] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/PythonLexer.py b/src/pycropml/transpiler/antlr_py/grammars/PythonLexer.py index 5582c79b..eeaa2b4d 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/PythonLexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/PythonLexer.py @@ -1,508 +1,408 @@ -# Generated from PythonLexer.g4 by ANTLR 4.8 +# Generated from PythonLexer.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO -if __name__ is not None and "." in __name__: +if "." in __name__: from .PythonLexerBase import PythonLexerBase else: from PythonLexerBase import PythonLexerBase - def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2f") - buf.write("\u0358\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") - buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") - buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") - buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") - buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") - buf.write("p\tp\4q\tq\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3") - buf.write("\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7") - buf.write("\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3") - buf.write("\n\3\n\3\n\3\n\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\r") - buf.write("\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3") - buf.write("\17\3\17\3\17\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\22") - buf.write("\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23") - buf.write("\3\23\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25") - buf.write("\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27") - buf.write("\3\27\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\32\3\32") - buf.write("\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34") - buf.write("\3\34\3\34\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36") - buf.write("\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3") - buf.write(" \3 \3 \3 \3!\3!\3!\3!\3!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3") - buf.write("#\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3&\3&\3") - buf.write("&\3&\3&\3&\3\'\3\'\3(\3(\3(\3(\3)\3)\3*\3*\3+\3+\3,\3") - buf.write(",\3-\3-\3.\3.\3.\3/\3/\3\60\3\60\3\61\3\61\3\62\3\62\3") - buf.write("\63\3\63\3\63\3\64\3\64\3\64\3\65\3\65\3\66\3\66\3\67") - buf.write("\3\67\38\38\39\39\39\3:\3:\3;\3;\3<\3<\3=\3=\3=\3>\3>") - buf.write("\3>\3?\3?\3?\3@\3@\3@\3A\3A\3A\3B\3B\3C\3C\3C\3D\3D\3") - buf.write("D\3E\3E\3E\3F\3F\3F\3G\3G\3G\3H\3H\3H\3I\3I\3I\3J\3J\3") - buf.write("J\3K\3K\3K\3L\3L\3L\3M\3M\3M\3M\3N\3N\3N\3N\3O\3O\3O\3") - buf.write("O\3P\3P\3P\3P\3Q\3Q\3Q\5Q\u0221\nQ\3Q\3Q\5Q\u0225\nQ\5") - buf.write("Q\u0227\nQ\3Q\3Q\5Q\u022b\nQ\3Q\3Q\5Q\u022f\nQ\3Q\3Q\5") - buf.write("Q\u0233\nQ\3Q\3Q\5Q\u0237\nQ\5Q\u0239\nQ\3R\3R\7R\u023d") - buf.write("\nR\fR\16R\u0240\13R\3R\6R\u0243\nR\rR\16R\u0244\5R\u0247") - buf.write("\nR\3S\3S\3S\6S\u024c\nS\rS\16S\u024d\3T\3T\3T\6T\u0253") - buf.write("\nT\rT\16T\u0254\3U\3U\3U\6U\u025a\nU\rU\16U\u025b\3V") - buf.write("\3V\6V\u0260\nV\rV\16V\u0261\5V\u0264\nV\3V\3V\3W\3W\3") - buf.write("X\3X\3X\3Y\3Y\3Y\3Z\3Z\3Z\3[\3[\3[\3\\\3\\\3\\\3]\3]\3") - buf.write("]\3^\3^\7^\u027e\n^\f^\16^\u0281\13^\3_\3_\7_\u0285\n") - buf.write("_\f_\16_\u0288\13_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3a\6a\u0294") - buf.write("\na\ra\16a\u0295\3a\3a\3a\3a\3b\3b\7b\u029e\nb\fb\16b") - buf.write("\u02a1\13b\3b\3b\3c\3c\3c\3c\5c\u02a9\nc\3c\7c\u02ac\n") - buf.write("c\fc\16c\u02af\13c\3c\3c\3c\3c\3c\5c\u02b6\nc\3c\7c\u02b9") - buf.write("\nc\fc\16c\u02bc\13c\3c\5c\u02bf\nc\3d\3d\3d\3d\3d\7d") - buf.write("\u02c6\nd\fd\16d\u02c9\13d\3d\3d\3d\3d\3d\3d\3d\3d\7d") - buf.write("\u02d3\nd\fd\16d\u02d6\13d\3d\3d\3d\5d\u02db\nd\3e\3e") - buf.write("\3e\3e\5e\u02e1\ne\5e\u02e3\ne\3f\5f\u02e6\nf\3f\3f\3") - buf.write("g\6g\u02eb\ng\rg\16g\u02ec\3g\5g\u02f0\ng\3g\3g\5g\u02f4") - buf.write("\ng\3g\6g\u02f7\ng\rg\16g\u02f8\3g\5g\u02fc\ng\3h\7h\u02ff") - buf.write("\nh\fh\16h\u0302\13h\3h\3h\6h\u0306\nh\rh\16h\u0307\3") - buf.write("h\6h\u030b\nh\rh\16h\u030c\3h\5h\u0310\nh\3i\3i\3i\7i") - buf.write("\u0315\ni\fi\16i\u0318\13i\3i\3i\3i\3i\7i\u031e\ni\fi") - buf.write("\16i\u0321\13i\3i\5i\u0324\ni\3j\3j\3j\3j\3j\7j\u032b") - buf.write("\nj\fj\16j\u032e\13j\3j\3j\3j\3j\3j\3j\3j\3j\7j\u0338") - buf.write("\nj\fj\16j\u033b\13j\3j\3j\3j\5j\u0340\nj\3k\3k\5k\u0344") - buf.write("\nk\3l\5l\u0347\nl\3m\5m\u034a\nm\3n\5n\u034d\nn\3o\3") - buf.write("o\3o\3p\3p\5p\u0354\np\3q\5q\u0357\nq\6\u02c7\u02d4\u032c") - buf.write("\u0339\2r\3\6\5\7\7\b\t\t\13\n\r\13\17\f\21\r\23\16\25") - buf.write("\17\27\20\31\21\33\22\35\23\37\24!\25#\26%\27\'\30)\31") - buf.write("+\32-\33/\34\61\35\63\36\65\37\67 9!;\"=#?$A%C&E\'G(I") - buf.write(")K*M+O,Q-S.U/W\60Y\61[\62]\63_\64a\65c\66e\67g8i9k:m;") - buf.write("ou?w@yA{B}C\177D\u0081E\u0083F\u0085G\u0087H\u0089") - buf.write("I\u008bJ\u008dK\u008fL\u0091M\u0093N\u0095O\u0097P\u0099") - buf.write("Q\u009bR\u009dS\u009fT\u00a1U\u00a3V\u00a5W\u00a7X\u00a9") - buf.write("Y\u00abZ\u00ad[\u00af\\\u00b1]\u00b3^\u00b5_\u00b7`\u00b9") - buf.write("a\u00bbb\u00bdc\u00bfd\u00c1e\u00c3f\u00c5\2\u00c7\2\u00c9") - buf.write("\2\u00cb\2\u00cd\2\u00cf\2\u00d1\2\u00d3\2\u00d5\2\u00d7") - buf.write("\2\u00d9\2\u00db\2\u00dd\2\u00df\2\u00e1\2\3\2\33\4\2") - buf.write("WWww\4\2HHhh\4\2TTtt\4\2DDdd\3\2\63;\3\2\62;\4\2QQqq\3") - buf.write("\2\629\4\2ZZzz\5\2\62;CHch\3\2\62\63\4\2LLll\4\2\13\13") - buf.write("\"\"\4\2\f\f\16\17\6\2\f\f\17\17))^^\6\2\f\f\17\17$$^") - buf.write("^\3\2^^\4\2GGgg\4\2--//\7\2\2\13\r\16\20(*]_\u0081\7\2") - buf.write("\2\13\r\16\20#%]_\u0081\4\2\2]_\u0081\3\2\2\u0081\u0096") - buf.write("\2\62;\u0302\u0371\u0485\u0488\u0593\u05bb\u05bd\u05bf") - buf.write("\u05c1\u05c1\u05c3\u05c4\u05c6\u05c7\u05c9\u05c9\u0612") - buf.write("\u0617\u064d\u0660\u0662\u066b\u0672\u0672\u06d8\u06de") - buf.write("\u06e1\u06e6\u06e9\u06ea\u06ec\u06ef\u06f2\u06fb\u0713") - buf.write("\u0713\u0732\u074c\u07a8\u07b2\u0903\u0905\u093e\u093e") - buf.write("\u0940\u094f\u0953\u0956\u0964\u0965\u0968\u0971\u0983") - buf.write("\u0985\u09be\u09be\u09c0\u09c6\u09c9\u09ca\u09cd\u09cf") - buf.write("\u09d9\u09d9\u09e4\u09e5\u09e8\u09f1\u0a03\u0a05\u0a3e") - buf.write("\u0a3e\u0a40\u0a44\u0a49\u0a4a\u0a4d\u0a4f\u0a68\u0a73") - buf.write("\u0a83\u0a85\u0abe\u0abe\u0ac0\u0ac7\u0ac9\u0acb\u0acd") - buf.write("\u0acf\u0ae4\u0ae5\u0ae8\u0af1\u0b03\u0b05\u0b3e\u0b3e") - buf.write("\u0b40\u0b45\u0b49\u0b4a\u0b4d\u0b4f\u0b58\u0b59\u0b68") - buf.write("\u0b71\u0b84\u0b84\u0bc0\u0bc4\u0bc8\u0bca\u0bcc\u0bcf") - buf.write("\u0bd9\u0bd9\u0be8\u0bf1\u0c03\u0c05\u0c40\u0c46\u0c48") - buf.write("\u0c4a\u0c4c\u0c4f\u0c57\u0c58\u0c68\u0c71\u0c84\u0c85") - buf.write("\u0cbe\u0cbe\u0cc0\u0cc6\u0cc8\u0cca\u0ccc\u0ccf\u0cd7") - buf.write("\u0cd8\u0ce8\u0cf1\u0d04\u0d05\u0d40\u0d45\u0d48\u0d4a") - buf.write("\u0d4c\u0d4f\u0d59\u0d59\u0d68\u0d71\u0d84\u0d85\u0dcc") - buf.write("\u0dcc\u0dd1\u0dd6\u0dd8\u0dd8\u0dda\u0de1\u0df4\u0df5") - buf.write("\u0e33\u0e33\u0e36\u0e3c\u0e49\u0e50\u0e52\u0e5b\u0eb3") - buf.write("\u0eb3\u0eb6\u0ebb\u0ebd\u0ebe\u0eca\u0ecf\u0ed2\u0edb") - buf.write("\u0f1a\u0f1b\u0f22\u0f2b\u0f37\u0f37\u0f39\u0f39\u0f3b") - buf.write("\u0f3b\u0f40\u0f41\u0f73\u0f86\u0f88\u0f89\u0f92\u0f99") - buf.write("\u0f9b\u0fbe\u0fc8\u0fc8\u102e\u1034\u1038\u103b\u1042") - buf.write("\u104b\u1058\u105b\u1361\u1361\u136b\u1373\u1714\u1716") - buf.write("\u1734\u1736\u1754\u1755\u1774\u1775\u17b8\u17d5\u17df") - buf.write("\u17df\u17e2\u17eb\u180d\u180f\u1812\u181b\u18ab\u18ab") - buf.write("\u1922\u192d\u1932\u193d\u1948\u1951\u19b2\u19c2\u19ca") - buf.write("\u19cb\u19d2\u19db\u1a19\u1a1d\u1dc2\u1dc5\u2041\u2042") - buf.write("\u2056\u2056\u20d2\u20de\u20e3\u20e3\u20e7\u20ed\u302c") - buf.write("\u3031\u309b\u309c\ua804\ua804\ua808\ua808\ua80d\ua80d") - buf.write("\ua825\ua829\ufb20\ufb20\ufe02\ufe11\ufe22\ufe25\ufe35") - buf.write("\ufe36\ufe4f\ufe51\uff12\uff1b\uff41\uff41\u0129\2C\\") - buf.write("aac|\u00ac\u00ac\u00b7\u00b7\u00bc\u00bc\u00c2\u00d8\u00da") - buf.write("\u00f8\u00fa\u0243\u0252\u02c3\u02c8\u02d3\u02e2\u02e6") - buf.write("\u02f0\u02f0\u037c\u037c\u0388\u0388\u038a\u038c\u038e") - buf.write("\u038e\u0390\u03a3\u03a5\u03d0\u03d2\u03f7\u03f9\u0483") - buf.write("\u048c\u04d0\u04d2\u04fb\u0502\u0511\u0533\u0558\u055b") - buf.write("\u055b\u0563\u0589\u05d2\u05ec\u05f2\u05f4\u0623\u063c") - buf.write("\u0642\u064c\u0670\u0671\u0673\u06d5\u06d7\u06d7\u06e7") - buf.write("\u06e8\u06f0\u06f1\u06fc\u06fe\u0701\u0701\u0712\u0712") - buf.write("\u0714\u0731\u074f\u076f\u0782\u07a7\u07b3\u07b3\u0906") - buf.write("\u093b\u093f\u093f\u0952\u0952\u095a\u0963\u097f\u097f") - buf.write("\u0987\u098e\u0991\u0992\u0995\u09aa\u09ac\u09b2\u09b4") - buf.write("\u09b4\u09b8\u09bb\u09bf\u09bf\u09d0\u09d0\u09de\u09df") - buf.write("\u09e1\u09e3\u09f2\u09f3\u0a07\u0a0c\u0a11\u0a12\u0a15") - buf.write("\u0a2a\u0a2c\u0a32\u0a34\u0a35\u0a37\u0a38\u0a3a\u0a3b") - buf.write("\u0a5b\u0a5e\u0a60\u0a60\u0a74\u0a76\u0a87\u0a8f\u0a91") - buf.write("\u0a93\u0a95\u0aaa\u0aac\u0ab2\u0ab4\u0ab5\u0ab7\u0abb") - buf.write("\u0abf\u0abf\u0ad2\u0ad2\u0ae2\u0ae3\u0b07\u0b0e\u0b11") - buf.write("\u0b12\u0b15\u0b2a\u0b2c\u0b32\u0b34\u0b35\u0b37\u0b3b") - buf.write("\u0b3f\u0b3f\u0b5e\u0b5f\u0b61\u0b63\u0b73\u0b73\u0b85") - buf.write("\u0b85\u0b87\u0b8c\u0b90\u0b92\u0b94\u0b97\u0b9b\u0b9c") - buf.write("\u0b9e\u0b9e\u0ba0\u0ba1\u0ba5\u0ba6\u0baa\u0bac\u0bb0") - buf.write("\u0bbb\u0c07\u0c0e\u0c10\u0c12\u0c14\u0c2a\u0c2c\u0c35") - buf.write("\u0c37\u0c3b\u0c62\u0c63\u0c87\u0c8e\u0c90\u0c92\u0c94") - buf.write("\u0caa\u0cac\u0cb5\u0cb7\u0cbb\u0cbf\u0cbf\u0ce0\u0ce0") - buf.write("\u0ce2\u0ce3\u0d07\u0d0e\u0d10\u0d12\u0d14\u0d2a\u0d2c") - buf.write("\u0d3b\u0d62\u0d63\u0d87\u0d98\u0d9c\u0db3\u0db5\u0dbd") - buf.write("\u0dbf\u0dbf\u0dc2\u0dc8\u0e03\u0e32\u0e34\u0e35\u0e42") - buf.write("\u0e48\u0e83\u0e84\u0e86\u0e86\u0e89\u0e8a\u0e8c\u0e8c") - buf.write("\u0e8f\u0e8f\u0e96\u0e99\u0e9b\u0ea1\u0ea3\u0ea5\u0ea7") - buf.write("\u0ea7\u0ea9\u0ea9\u0eac\u0ead\u0eaf\u0eb2\u0eb4\u0eb5") - buf.write("\u0ebf\u0ebf\u0ec2\u0ec6\u0ec8\u0ec8\u0ede\u0edf\u0f02") - buf.write("\u0f02\u0f42\u0f49\u0f4b\u0f6c\u0f8a\u0f8d\u1002\u1023") - buf.write("\u1025\u1029\u102b\u102c\u1052\u1057\u10a2\u10c7\u10d2") - buf.write("\u10fc\u10fe\u10fe\u1102\u115b\u1161\u11a4\u11aa\u11fb") - buf.write("\u1202\u124a\u124c\u124f\u1252\u1258\u125a\u125a\u125c") - buf.write("\u125f\u1262\u128a\u128c\u128f\u1292\u12b2\u12b4\u12b7") - buf.write("\u12ba\u12c0\u12c2\u12c2\u12c4\u12c7\u12ca\u12d8\u12da") - buf.write("\u1312\u1314\u1317\u131a\u135c\u1382\u1391\u13a2\u13f6") - buf.write("\u1403\u166e\u1671\u1678\u1683\u169c\u16a2\u16ec\u16f0") - buf.write("\u16f2\u1702\u170e\u1710\u1713\u1722\u1733\u1742\u1753") - buf.write("\u1762\u176e\u1770\u1772\u1782\u17b5\u17d9\u17d9\u17de") - buf.write("\u17de\u1822\u1879\u1882\u18aa\u1902\u191e\u1952\u196f") - buf.write("\u1972\u1976\u1982\u19ab\u19c3\u19c9\u1a02\u1a18\u1d02") - buf.write("\u1dc1\u1e02\u1e9d\u1ea2\u1efb\u1f02\u1f17\u1f1a\u1f1f") - buf.write("\u1f22\u1f47\u1f4a\u1f4f\u1f52\u1f59\u1f5b\u1f5b\u1f5d") - buf.write("\u1f5d\u1f5f\u1f5f\u1f61\u1f7f\u1f82\u1fb6\u1fb8\u1fbe") - buf.write("\u1fc0\u1fc0\u1fc4\u1fc6\u1fc8\u1fce\u1fd2\u1fd5\u1fd8") - buf.write("\u1fdd\u1fe2\u1fee\u1ff4\u1ff6\u1ff8\u1ffe\u2073\u2073") - buf.write("\u2081\u2081\u2092\u2096\u2104\u2104\u2109\u2109\u210c") - buf.write("\u2115\u2117\u2117\u211a\u211f\u2126\u2126\u2128\u2128") - buf.write("\u212a\u212a\u212c\u2133\u2135\u213b\u213e\u2141\u2147") - buf.write("\u214b\u2162\u2185\u2c02\u2c30\u2c32\u2c60\u2c82\u2ce6") - buf.write("\u2d02\u2d27\u2d32\u2d67\u2d71\u2d71\u2d82\u2d98\u2da2") - buf.write("\u2da8\u2daa\u2db0\u2db2\u2db8\u2dba\u2dc0\u2dc2\u2dc8") - buf.write("\u2dca\u2dd0\u2dd2\u2dd8\u2dda\u2de0\u3007\u3009\u3023") - buf.write("\u302b\u3033\u3037\u303a\u303e\u3043\u3098\u309d\u30a1") - buf.write("\u30a3\u30fc\u30fe\u3101\u3107\u312e\u3133\u3190\u31a2") - buf.write("\u31b9\u31f2\u3201\u3402\u4db7\u4e02\u9fbd\ua002\ua48e") - buf.write("\ua802\ua803\ua805\ua807\ua809\ua80c\ua80e\ua824\uac02") - buf.write("\ud7a5\uf902\ufa2f\ufa32\ufa6c\ufa72\ufadb\ufb02\ufb08") - buf.write("\ufb15\ufb19\ufb1f\ufb1f\ufb21\ufb2a\ufb2c\ufb38\ufb3a") - buf.write("\ufb3e\ufb40\ufb40\ufb42\ufb43\ufb45\ufb46\ufb48\ufbb3") - buf.write("\ufbd5\ufd3f\ufd52\ufd91\ufd94\ufdc9\ufdf2\ufdfd\ufe72") - buf.write("\ufe76\ufe78\ufefe\uff23\uff3c\uff43\uff5c\uff68\uffc0") - buf.write("\uffc4\uffc9\uffcc\uffd1\uffd4\uffd9\uffdc\uffde\2\u037e") - buf.write("\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13") - buf.write("\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3") - buf.write("\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2") - buf.write("\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2") - buf.write("%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2") - buf.write("\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67") - buf.write("\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2") - buf.write("A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2") - buf.write("\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2") - buf.write("\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2") - buf.write("\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3") - buf.write("\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q") - buf.write("\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2") - buf.write("{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083") - buf.write("\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2") - buf.write("\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091") - buf.write("\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2") - buf.write("\2\2\u0099\3\2\2\2\2\u009b\3\2\2\2\2\u009d\3\2\2\2\2\u009f") - buf.write("\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2") - buf.write("\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad") - buf.write("\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2") - buf.write("\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb") - buf.write("\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2") - buf.write("\2\2\u00c3\3\2\2\2\3\u00e3\3\2\2\2\5\u00e7\3\2\2\2\7\u00ee") - buf.write("\3\2\2\2\t\u00f4\3\2\2\2\13\u00f9\3\2\2\2\r\u0100\3\2") - buf.write("\2\2\17\u0109\3\2\2\2\21\u010c\3\2\2\2\23\u0113\3\2\2") - buf.write("\2\25\u011a\3\2\2\2\27\u011d\3\2\2\2\31\u0122\3\2\2\2") - buf.write("\33\u0127\3\2\2\2\35\u012d\3\2\2\2\37\u0131\3\2\2\2!\u0134") - buf.write("\3\2\2\2#\u0138\3\2\2\2%\u013d\3\2\2\2\'\u0145\3\2\2\2") - buf.write(")\u014a\3\2\2\2+\u0151\3\2\2\2-\u0158\3\2\2\2/\u015b\3") - buf.write("\2\2\2\61\u015f\3\2\2\2\63\u0163\3\2\2\2\65\u0166\3\2") - buf.write("\2\2\67\u016c\3\2\2\29\u0172\3\2\2\2;\u0176\3\2\2\2=\u017b") - buf.write("\3\2\2\2?\u0184\3\2\2\2A\u018a\3\2\2\2C\u0190\3\2\2\2") - buf.write("E\u0196\3\2\2\2G\u019c\3\2\2\2I\u01a1\3\2\2\2K\u01a6\3") - buf.write("\2\2\2M\u01ac\3\2\2\2O\u01ae\3\2\2\2Q\u01b2\3\2\2\2S\u01b4") - buf.write("\3\2\2\2U\u01b6\3\2\2\2W\u01b8\3\2\2\2Y\u01ba\3\2\2\2") - buf.write("[\u01bc\3\2\2\2]\u01bf\3\2\2\2_\u01c1\3\2\2\2a\u01c3\3") - buf.write("\2\2\2c\u01c5\3\2\2\2e\u01c7\3\2\2\2g\u01ca\3\2\2\2i\u01cd") - buf.write("\3\2\2\2k\u01cf\3\2\2\2m\u01d1\3\2\2\2o\u01d3\3\2\2\2") - buf.write("q\u01d5\3\2\2\2s\u01d8\3\2\2\2u\u01da\3\2\2\2w\u01dc\3") - buf.write("\2\2\2y\u01de\3\2\2\2{\u01e1\3\2\2\2}\u01e4\3\2\2\2\177") - buf.write("\u01e7\3\2\2\2\u0081\u01ea\3\2\2\2\u0083\u01ed\3\2\2\2") - buf.write("\u0085\u01ef\3\2\2\2\u0087\u01f2\3\2\2\2\u0089\u01f5\3") - buf.write("\2\2\2\u008b\u01f8\3\2\2\2\u008d\u01fb\3\2\2\2\u008f\u01fe") - buf.write("\3\2\2\2\u0091\u0201\3\2\2\2\u0093\u0204\3\2\2\2\u0095") - buf.write("\u0207\3\2\2\2\u0097\u020a\3\2\2\2\u0099\u020d\3\2\2\2") - buf.write("\u009b\u0211\3\2\2\2\u009d\u0215\3\2\2\2\u009f\u0219\3") - buf.write("\2\2\2\u00a1\u0238\3\2\2\2\u00a3\u0246\3\2\2\2\u00a5\u0248") - buf.write("\3\2\2\2\u00a7\u024f\3\2\2\2\u00a9\u0256\3\2\2\2\u00ab") - buf.write("\u0263\3\2\2\2\u00ad\u0267\3\2\2\2\u00af\u0269\3\2\2\2") - buf.write("\u00b1\u026c\3\2\2\2\u00b3\u026f\3\2\2\2\u00b5\u0272\3") - buf.write("\2\2\2\u00b7\u0275\3\2\2\2\u00b9\u0278\3\2\2\2\u00bb\u027b") - buf.write("\3\2\2\2\u00bd\u0282\3\2\2\2\u00bf\u028d\3\2\2\2\u00c1") - buf.write("\u0293\3\2\2\2\u00c3\u029b\3\2\2\2\u00c5\u02be\3\2\2\2") - buf.write("\u00c7\u02da\3\2\2\2\u00c9\u02e2\3\2\2\2\u00cb\u02e5\3") - buf.write("\2\2\2\u00cd\u02fb\3\2\2\2\u00cf\u030f\3\2\2\2\u00d1\u0323") - buf.write("\3\2\2\2\u00d3\u033f\3\2\2\2\u00d5\u0343\3\2\2\2\u00d7") - buf.write("\u0346\3\2\2\2\u00d9\u0349\3\2\2\2\u00db\u034c\3\2\2\2") - buf.write("\u00dd\u034e\3\2\2\2\u00df\u0353\3\2\2\2\u00e1\u0356\3") - buf.write("\2\2\2\u00e3\u00e4\7f\2\2\u00e4\u00e5\7g\2\2\u00e5\u00e6") - buf.write("\7h\2\2\u00e6\4\3\2\2\2\u00e7\u00e8\7t\2\2\u00e8\u00e9") - buf.write("\7g\2\2\u00e9\u00ea\7v\2\2\u00ea\u00eb\7w\2\2\u00eb\u00ec") - buf.write("\7t\2\2\u00ec\u00ed\7p\2\2\u00ed\6\3\2\2\2\u00ee\u00ef") - buf.write("\7t\2\2\u00ef\u00f0\7c\2\2\u00f0\u00f1\7k\2\2\u00f1\u00f2") - buf.write("\7u\2\2\u00f2\u00f3\7g\2\2\u00f3\b\3\2\2\2\u00f4\u00f5") - buf.write("\7h\2\2\u00f5\u00f6\7t\2\2\u00f6\u00f7\7q\2\2\u00f7\u00f8") - buf.write("\7o\2\2\u00f8\n\3\2\2\2\u00f9\u00fa\7k\2\2\u00fa\u00fb") - buf.write("\7o\2\2\u00fb\u00fc\7r\2\2\u00fc\u00fd\7q\2\2\u00fd\u00fe") - buf.write("\7t\2\2\u00fe\u00ff\7v\2\2\u00ff\f\3\2\2\2\u0100\u0101") - buf.write("\7p\2\2\u0101\u0102\7q\2\2\u0102\u0103\7p\2\2\u0103\u0104") - buf.write("\7n\2\2\u0104\u0105\7q\2\2\u0105\u0106\7e\2\2\u0106\u0107") - buf.write("\7c\2\2\u0107\u0108\7n\2\2\u0108\16\3\2\2\2\u0109\u010a") - buf.write("\7c\2\2\u010a\u010b\7u\2\2\u010b\20\3\2\2\2\u010c\u010d") - buf.write("\7i\2\2\u010d\u010e\7n\2\2\u010e\u010f\7q\2\2\u010f\u0110") - buf.write("\7d\2\2\u0110\u0111\7c\2\2\u0111\u0112\7n\2\2\u0112\22") - buf.write("\3\2\2\2\u0113\u0114\7c\2\2\u0114\u0115\7u\2\2\u0115\u0116") - buf.write("\7u\2\2\u0116\u0117\7g\2\2\u0117\u0118\7t\2\2\u0118\u0119") - buf.write("\7v\2\2\u0119\24\3\2\2\2\u011a\u011b\7k\2\2\u011b\u011c") - buf.write("\7h\2\2\u011c\26\3\2\2\2\u011d\u011e\7g\2\2\u011e\u011f") - buf.write("\7n\2\2\u011f\u0120\7k\2\2\u0120\u0121\7h\2\2\u0121\30") - buf.write("\3\2\2\2\u0122\u0123\7g\2\2\u0123\u0124\7n\2\2\u0124\u0125") - buf.write("\7u\2\2\u0125\u0126\7g\2\2\u0126\32\3\2\2\2\u0127\u0128") - buf.write("\7y\2\2\u0128\u0129\7j\2\2\u0129\u012a\7k\2\2\u012a\u012b") - buf.write("\7n\2\2\u012b\u012c\7g\2\2\u012c\34\3\2\2\2\u012d\u012e") - buf.write("\7h\2\2\u012e\u012f\7q\2\2\u012f\u0130\7t\2\2\u0130\36") - buf.write("\3\2\2\2\u0131\u0132\7k\2\2\u0132\u0133\7p\2\2\u0133 ") - buf.write("\3\2\2\2\u0134\u0135\7v\2\2\u0135\u0136\7t\2\2\u0136\u0137") - buf.write("\7{\2\2\u0137\"\3\2\2\2\u0138\u0139\7P\2\2\u0139\u013a") - buf.write("\7q\2\2\u013a\u013b\7p\2\2\u013b\u013c\7g\2\2\u013c$\3") - buf.write("\2\2\2\u013d\u013e\7h\2\2\u013e\u013f\7k\2\2\u013f\u0140") - buf.write("\7p\2\2\u0140\u0141\7c\2\2\u0141\u0142\7n\2\2\u0142\u0143") - buf.write("\7n\2\2\u0143\u0144\7{\2\2\u0144&\3\2\2\2\u0145\u0146") - buf.write("\7y\2\2\u0146\u0147\7k\2\2\u0147\u0148\7v\2\2\u0148\u0149") - buf.write("\7j\2\2\u0149(\3\2\2\2\u014a\u014b\7g\2\2\u014b\u014c") - buf.write("\7z\2\2\u014c\u014d\7e\2\2\u014d\u014e\7g\2\2\u014e\u014f") - buf.write("\7r\2\2\u014f\u0150\7v\2\2\u0150*\3\2\2\2\u0151\u0152") - buf.write("\7n\2\2\u0152\u0153\7c\2\2\u0153\u0154\7o\2\2\u0154\u0155") - buf.write("\7d\2\2\u0155\u0156\7f\2\2\u0156\u0157\7c\2\2\u0157,\3") - buf.write("\2\2\2\u0158\u0159\7q\2\2\u0159\u015a\7t\2\2\u015a.\3") - buf.write("\2\2\2\u015b\u015c\7c\2\2\u015c\u015d\7p\2\2\u015d\u015e") - buf.write("\7f\2\2\u015e\60\3\2\2\2\u015f\u0160\7p\2\2\u0160\u0161") - buf.write("\7q\2\2\u0161\u0162\7v\2\2\u0162\62\3\2\2\2\u0163\u0164") - buf.write("\7k\2\2\u0164\u0165\7u\2\2\u0165\64\3\2\2\2\u0166\u0167") - buf.write("\7e\2\2\u0167\u0168\7n\2\2\u0168\u0169\7c\2\2\u0169\u016a") - buf.write("\7u\2\2\u016a\u016b\7u\2\2\u016b\66\3\2\2\2\u016c\u016d") - buf.write("\7{\2\2\u016d\u016e\7k\2\2\u016e\u016f\7g\2\2\u016f\u0170") - buf.write("\7n\2\2\u0170\u0171\7f\2\2\u01718\3\2\2\2\u0172\u0173") - buf.write("\7f\2\2\u0173\u0174\7g\2\2\u0174\u0175\7n\2\2\u0175:\3") - buf.write("\2\2\2\u0176\u0177\7r\2\2\u0177\u0178\7c\2\2\u0178\u0179") - buf.write("\7u\2\2\u0179\u017a\7u\2\2\u017a<\3\2\2\2\u017b\u017c") - buf.write("\7e\2\2\u017c\u017d\7q\2\2\u017d\u017e\7p\2\2\u017e\u017f") - buf.write("\7v\2\2\u017f\u0180\7k\2\2\u0180\u0181\7p\2\2\u0181\u0182") - buf.write("\7w\2\2\u0182\u0183\7g\2\2\u0183>\3\2\2\2\u0184\u0185") - buf.write("\7d\2\2\u0185\u0186\7t\2\2\u0186\u0187\7g\2\2\u0187\u0188") - buf.write("\7c\2\2\u0188\u0189\7m\2\2\u0189@\3\2\2\2\u018a\u018b") - buf.write("\7c\2\2\u018b\u018c\7u\2\2\u018c\u018d\7{\2\2\u018d\u018e") - buf.write("\7p\2\2\u018e\u018f\7e\2\2\u018fB\3\2\2\2\u0190\u0191") - buf.write("\7c\2\2\u0191\u0192\7y\2\2\u0192\u0193\7c\2\2\u0193\u0194") - buf.write("\7k\2\2\u0194\u0195\7v\2\2\u0195D\3\2\2\2\u0196\u0197") - buf.write("\7r\2\2\u0197\u0198\7t\2\2\u0198\u0199\7k\2\2\u0199\u019a") - buf.write("\7p\2\2\u019a\u019b\7v\2\2\u019bF\3\2\2\2\u019c\u019d") - buf.write("\7g\2\2\u019d\u019e\7z\2\2\u019e\u019f\7g\2\2\u019f\u01a0") - buf.write("\7e\2\2\u01a0H\3\2\2\2\u01a1\u01a2\7V\2\2\u01a2\u01a3") - buf.write("\7t\2\2\u01a3\u01a4\7w\2\2\u01a4\u01a5\7g\2\2\u01a5J\3") - buf.write("\2\2\2\u01a6\u01a7\7H\2\2\u01a7\u01a8\7c\2\2\u01a8\u01a9") - buf.write("\7n\2\2\u01a9\u01aa\7u\2\2\u01aa\u01ab\7g\2\2\u01abL\3") - buf.write("\2\2\2\u01ac\u01ad\7\60\2\2\u01adN\3\2\2\2\u01ae\u01af") - buf.write("\7\60\2\2\u01af\u01b0\7\60\2\2\u01b0\u01b1\7\60\2\2\u01b1") - buf.write("P\3\2\2\2\u01b2\u01b3\7b\2\2\u01b3R\3\2\2\2\u01b4\u01b5") - buf.write("\7,\2\2\u01b5T\3\2\2\2\u01b6\u01b7\7.\2\2\u01b7V\3\2\2") - buf.write("\2\u01b8\u01b9\7<\2\2\u01b9X\3\2\2\2\u01ba\u01bb\7=\2") - buf.write("\2\u01bbZ\3\2\2\2\u01bc\u01bd\7,\2\2\u01bd\u01be\7,\2") - buf.write("\2\u01be\\\3\2\2\2\u01bf\u01c0\7?\2\2\u01c0^\3\2\2\2\u01c1") - buf.write("\u01c2\7~\2\2\u01c2`\3\2\2\2\u01c3\u01c4\7`\2\2\u01c4") - buf.write("b\3\2\2\2\u01c5\u01c6\7(\2\2\u01c6d\3\2\2\2\u01c7\u01c8") - buf.write("\7>\2\2\u01c8\u01c9\7>\2\2\u01c9f\3\2\2\2\u01ca\u01cb") - buf.write("\7@\2\2\u01cb\u01cc\7@\2\2\u01cch\3\2\2\2\u01cd\u01ce") - buf.write("\7-\2\2\u01cej\3\2\2\2\u01cf\u01d0\7/\2\2\u01d0l\3\2\2") - buf.write("\2\u01d1\u01d2\7\61\2\2\u01d2n\3\2\2\2\u01d3\u01d4\7\'") - buf.write("\2\2\u01d4p\3\2\2\2\u01d5\u01d6\7\61\2\2\u01d6\u01d7\7") - buf.write("\61\2\2\u01d7r\3\2\2\2\u01d8\u01d9\7\u0080\2\2\u01d9t") - buf.write("\3\2\2\2\u01da\u01db\7>\2\2\u01dbv\3\2\2\2\u01dc\u01dd") - buf.write("\7@\2\2\u01ddx\3\2\2\2\u01de\u01df\7?\2\2\u01df\u01e0") - buf.write("\7?\2\2\u01e0z\3\2\2\2\u01e1\u01e2\7@\2\2\u01e2\u01e3") - buf.write("\7?\2\2\u01e3|\3\2\2\2\u01e4\u01e5\7>\2\2\u01e5\u01e6") - buf.write("\7?\2\2\u01e6~\3\2\2\2\u01e7\u01e8\7>\2\2\u01e8\u01e9") - buf.write("\7@\2\2\u01e9\u0080\3\2\2\2\u01ea\u01eb\7#\2\2\u01eb\u01ec") - buf.write("\7?\2\2\u01ec\u0082\3\2\2\2\u01ed\u01ee\7B\2\2\u01ee\u0084") - buf.write("\3\2\2\2\u01ef\u01f0\7/\2\2\u01f0\u01f1\7@\2\2\u01f1\u0086") - buf.write("\3\2\2\2\u01f2\u01f3\7-\2\2\u01f3\u01f4\7?\2\2\u01f4\u0088") - buf.write("\3\2\2\2\u01f5\u01f6\7/\2\2\u01f6\u01f7\7?\2\2\u01f7\u008a") - buf.write("\3\2\2\2\u01f8\u01f9\7,\2\2\u01f9\u01fa\7?\2\2\u01fa\u008c") - buf.write("\3\2\2\2\u01fb\u01fc\7B\2\2\u01fc\u01fd\7?\2\2\u01fd\u008e") - buf.write("\3\2\2\2\u01fe\u01ff\7\61\2\2\u01ff\u0200\7?\2\2\u0200") - buf.write("\u0090\3\2\2\2\u0201\u0202\7\'\2\2\u0202\u0203\7?\2\2") - buf.write("\u0203\u0092\3\2\2\2\u0204\u0205\7(\2\2\u0205\u0206\7") - buf.write("?\2\2\u0206\u0094\3\2\2\2\u0207\u0208\7~\2\2\u0208\u0209") - buf.write("\7?\2\2\u0209\u0096\3\2\2\2\u020a\u020b\7`\2\2\u020b\u020c") - buf.write("\7?\2\2\u020c\u0098\3\2\2\2\u020d\u020e\7>\2\2\u020e\u020f") - buf.write("\7>\2\2\u020f\u0210\7?\2\2\u0210\u009a\3\2\2\2\u0211\u0212") - buf.write("\7@\2\2\u0212\u0213\7@\2\2\u0213\u0214\7?\2\2\u0214\u009c") - buf.write("\3\2\2\2\u0215\u0216\7,\2\2\u0216\u0217\7,\2\2\u0217\u0218") - buf.write("\7?\2\2\u0218\u009e\3\2\2\2\u0219\u021a\7\61\2\2\u021a") - buf.write("\u021b\7\61\2\2\u021b\u021c\7?\2\2\u021c\u00a0\3\2\2\2") - buf.write("\u021d\u0227\t\2\2\2\u021e\u0220\t\3\2\2\u021f\u0221\t") - buf.write("\4\2\2\u0220\u021f\3\2\2\2\u0220\u0221\3\2\2\2\u0221\u0227") - buf.write("\3\2\2\2\u0222\u0224\t\4\2\2\u0223\u0225\t\3\2\2\u0224") - buf.write("\u0223\3\2\2\2\u0224\u0225\3\2\2\2\u0225\u0227\3\2\2\2") - buf.write("\u0226\u021d\3\2\2\2\u0226\u021e\3\2\2\2\u0226\u0222\3") - buf.write("\2\2\2\u0226\u0227\3\2\2\2\u0227\u022a\3\2\2\2\u0228\u022b") - buf.write("\5\u00c5c\2\u0229\u022b\5\u00c7d\2\u022a\u0228\3\2\2\2") - buf.write("\u022a\u0229\3\2\2\2\u022b\u0239\3\2\2\2\u022c\u022e\t") - buf.write("\5\2\2\u022d\u022f\t\4\2\2\u022e\u022d\3\2\2\2\u022e\u022f") - buf.write("\3\2\2\2\u022f\u0233\3\2\2\2\u0230\u0231\t\4\2\2\u0231") - buf.write("\u0233\t\5\2\2\u0232\u022c\3\2\2\2\u0232\u0230\3\2\2\2") - buf.write("\u0233\u0236\3\2\2\2\u0234\u0237\5\u00d1i\2\u0235\u0237") - buf.write("\5\u00d3j\2\u0236\u0234\3\2\2\2\u0236\u0235\3\2\2\2\u0237") - buf.write("\u0239\3\2\2\2\u0238\u0226\3\2\2\2\u0238\u0232\3\2\2\2") - buf.write("\u0239\u00a2\3\2\2\2\u023a\u023e\t\6\2\2\u023b\u023d\t") - buf.write("\7\2\2\u023c\u023b\3\2\2\2\u023d\u0240\3\2\2\2\u023e\u023c") - buf.write("\3\2\2\2\u023e\u023f\3\2\2\2\u023f\u0247\3\2\2\2\u0240") - buf.write("\u023e\3\2\2\2\u0241\u0243\7\62\2\2\u0242\u0241\3\2\2") - buf.write("\2\u0243\u0244\3\2\2\2\u0244\u0242\3\2\2\2\u0244\u0245") - buf.write("\3\2\2\2\u0245\u0247\3\2\2\2\u0246\u023a\3\2\2\2\u0246") - buf.write("\u0242\3\2\2\2\u0247\u00a4\3\2\2\2\u0248\u0249\7\62\2") - buf.write("\2\u0249\u024b\t\b\2\2\u024a\u024c\t\t\2\2\u024b\u024a") - buf.write("\3\2\2\2\u024c\u024d\3\2\2\2\u024d\u024b\3\2\2\2\u024d") - buf.write("\u024e\3\2\2\2\u024e\u00a6\3\2\2\2\u024f\u0250\7\62\2") - buf.write("\2\u0250\u0252\t\n\2\2\u0251\u0253\t\13\2\2\u0252\u0251") - buf.write("\3\2\2\2\u0253\u0254\3\2\2\2\u0254\u0252\3\2\2\2\u0254") - buf.write("\u0255\3\2\2\2\u0255\u00a8\3\2\2\2\u0256\u0257\7\62\2") - buf.write("\2\u0257\u0259\t\5\2\2\u0258\u025a\t\f\2\2\u0259\u0258") - buf.write("\3\2\2\2\u025a\u025b\3\2\2\2\u025b\u0259\3\2\2\2\u025b") - buf.write("\u025c\3\2\2\2\u025c\u00aa\3\2\2\2\u025d\u0264\5\u00cd") - buf.write("g\2\u025e\u0260\t\7\2\2\u025f\u025e\3\2\2\2\u0260\u0261") - buf.write("\3\2\2\2\u0261\u025f\3\2\2\2\u0261\u0262\3\2\2\2\u0262") - buf.write("\u0264\3\2\2\2\u0263\u025d\3\2\2\2\u0263\u025f\3\2\2\2") - buf.write("\u0264\u0265\3\2\2\2\u0265\u0266\t\r\2\2\u0266\u00ac\3") - buf.write("\2\2\2\u0267\u0268\5\u00cdg\2\u0268\u00ae\3\2\2\2\u0269") - buf.write("\u026a\7*\2\2\u026a\u026b\bX\2\2\u026b\u00b0\3\2\2\2\u026c") - buf.write("\u026d\7+\2\2\u026d\u026e\bY\3\2\u026e\u00b2\3\2\2\2\u026f") - buf.write("\u0270\7}\2\2\u0270\u0271\bZ\4\2\u0271\u00b4\3\2\2\2\u0272") - buf.write("\u0273\7\177\2\2\u0273\u0274\b[\5\2\u0274\u00b6\3\2\2") - buf.write("\2\u0275\u0276\7]\2\2\u0276\u0277\b\\\6\2\u0277\u00b8") - buf.write("\3\2\2\2\u0278\u0279\7_\2\2\u0279\u027a\b]\7\2\u027a\u00ba") - buf.write("\3\2\2\2\u027b\u027f\5\u00e1q\2\u027c\u027e\5\u00dfp\2") - buf.write("\u027d\u027c\3\2\2\2\u027e\u0281\3\2\2\2\u027f\u027d\3") - buf.write("\2\2\2\u027f\u0280\3\2\2\2\u0280\u00bc\3\2\2\2\u0281\u027f") - buf.write("\3\2\2\2\u0282\u0286\7^\2\2\u0283\u0285\t\16\2\2\u0284") - buf.write("\u0283\3\2\2\2\u0285\u0288\3\2\2\2\u0286\u0284\3\2\2\2") - buf.write("\u0286\u0287\3\2\2\2\u0287\u0289\3\2\2\2\u0288\u0286\3") - buf.write("\2\2\2\u0289\u028a\5\u00cbf\2\u028a\u028b\3\2\2\2\u028b") - buf.write("\u028c\b_\b\2\u028c\u00be\3\2\2\2\u028d\u028e\5\u00cb") - buf.write("f\2\u028e\u028f\b`\t\2\u028f\u0290\3\2\2\2\u0290\u0291") - buf.write("\b`\b\2\u0291\u00c0\3\2\2\2\u0292\u0294\t\16\2\2\u0293") - buf.write("\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295\u0293\3\2\2\2") - buf.write("\u0295\u0296\3\2\2\2\u0296\u0297\3\2\2\2\u0297\u0298\b") - buf.write("a\n\2\u0298\u0299\3\2\2\2\u0299\u029a\ba\b\2\u029a\u00c2") - buf.write("\3\2\2\2\u029b\u029f\7%\2\2\u029c\u029e\n\17\2\2\u029d") - buf.write("\u029c\3\2\2\2\u029e\u02a1\3\2\2\2\u029f\u029d\3\2\2\2") - buf.write("\u029f\u02a0\3\2\2\2\u02a0\u02a2\3\2\2\2\u02a1\u029f\3") - buf.write("\2\2\2\u02a2\u02a3\bb\b\2\u02a3\u00c4\3\2\2\2\u02a4\u02ad") - buf.write("\7)\2\2\u02a5\u02a8\7^\2\2\u02a6\u02a9\5\u00cbf\2\u02a7") - buf.write("\u02a9\13\2\2\2\u02a8\u02a6\3\2\2\2\u02a8\u02a7\3\2\2") - buf.write("\2\u02a9\u02ac\3\2\2\2\u02aa\u02ac\n\20\2\2\u02ab\u02a5") - buf.write("\3\2\2\2\u02ab\u02aa\3\2\2\2\u02ac\u02af\3\2\2\2\u02ad") - buf.write("\u02ab\3\2\2\2\u02ad\u02ae\3\2\2\2\u02ae\u02b0\3\2\2\2") - buf.write("\u02af\u02ad\3\2\2\2\u02b0\u02bf\7)\2\2\u02b1\u02ba\7") - buf.write("$\2\2\u02b2\u02b5\7^\2\2\u02b3\u02b6\5\u00cbf\2\u02b4") - buf.write("\u02b6\13\2\2\2\u02b5\u02b3\3\2\2\2\u02b5\u02b4\3\2\2") - buf.write("\2\u02b6\u02b9\3\2\2\2\u02b7\u02b9\n\21\2\2\u02b8\u02b2") - buf.write("\3\2\2\2\u02b8\u02b7\3\2\2\2\u02b9\u02bc\3\2\2\2\u02ba") - buf.write("\u02b8\3\2\2\2\u02ba\u02bb\3\2\2\2\u02bb\u02bd\3\2\2\2") - buf.write("\u02bc\u02ba\3\2\2\2\u02bd\u02bf\7$\2\2\u02be\u02a4\3") - buf.write("\2\2\2\u02be\u02b1\3\2\2\2\u02bf\u00c6\3\2\2\2\u02c0\u02c1") - buf.write("\7)\2\2\u02c1\u02c2\7)\2\2\u02c2\u02c3\7)\2\2\u02c3\u02c7") - buf.write("\3\2\2\2\u02c4\u02c6\5\u00c9e\2\u02c5\u02c4\3\2\2\2\u02c6") - buf.write("\u02c9\3\2\2\2\u02c7\u02c8\3\2\2\2\u02c7\u02c5\3\2\2\2") - buf.write("\u02c8\u02ca\3\2\2\2\u02c9\u02c7\3\2\2\2\u02ca\u02cb\7") - buf.write(")\2\2\u02cb\u02cc\7)\2\2\u02cc\u02db\7)\2\2\u02cd\u02ce") - buf.write("\7$\2\2\u02ce\u02cf\7$\2\2\u02cf\u02d0\7$\2\2\u02d0\u02d4") - buf.write("\3\2\2\2\u02d1\u02d3\5\u00c9e\2\u02d2\u02d1\3\2\2\2\u02d3") - buf.write("\u02d6\3\2\2\2\u02d4\u02d5\3\2\2\2\u02d4\u02d2\3\2\2\2") - buf.write("\u02d5\u02d7\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d7\u02d8\7") - buf.write("$\2\2\u02d8\u02d9\7$\2\2\u02d9\u02db\7$\2\2\u02da\u02c0") - buf.write("\3\2\2\2\u02da\u02cd\3\2\2\2\u02db\u00c8\3\2\2\2\u02dc") - buf.write("\u02e3\n\22\2\2\u02dd\u02e0\7^\2\2\u02de\u02e1\5\u00cb") - buf.write("f\2\u02df\u02e1\13\2\2\2\u02e0\u02de\3\2\2\2\u02e0\u02df") - buf.write("\3\2\2\2\u02e1\u02e3\3\2\2\2\u02e2\u02dc\3\2\2\2\u02e2") - buf.write("\u02dd\3\2\2\2\u02e3\u00ca\3\2\2\2\u02e4\u02e6\7\17\2") - buf.write("\2\u02e5\u02e4\3\2\2\2\u02e5\u02e6\3\2\2\2\u02e6\u02e7") - buf.write("\3\2\2\2\u02e7\u02e8\7\f\2\2\u02e8\u00cc\3\2\2\2\u02e9") - buf.write("\u02eb\t\7\2\2\u02ea\u02e9\3\2\2\2\u02eb\u02ec\3\2\2\2") - buf.write("\u02ec\u02ea\3\2\2\2\u02ec\u02ed\3\2\2\2\u02ed\u02f0\3") - buf.write("\2\2\2\u02ee\u02f0\5\u00cfh\2\u02ef\u02ea\3\2\2\2\u02ef") - buf.write("\u02ee\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f3\t\23\2") - buf.write("\2\u02f2\u02f4\t\24\2\2\u02f3\u02f2\3\2\2\2\u02f3\u02f4") - buf.write("\3\2\2\2\u02f4\u02f6\3\2\2\2\u02f5\u02f7\t\7\2\2\u02f6") - buf.write("\u02f5\3\2\2\2\u02f7\u02f8\3\2\2\2\u02f8\u02f6\3\2\2\2") - buf.write("\u02f8\u02f9\3\2\2\2\u02f9\u02fc\3\2\2\2\u02fa\u02fc\5") - buf.write("\u00cfh\2\u02fb\u02ef\3\2\2\2\u02fb\u02fa\3\2\2\2\u02fc") - buf.write("\u00ce\3\2\2\2\u02fd\u02ff\t\7\2\2\u02fe\u02fd\3\2\2\2") - buf.write("\u02ff\u0302\3\2\2\2\u0300\u02fe\3\2\2\2\u0300\u0301\3") - buf.write("\2\2\2\u0301\u0303\3\2\2\2\u0302\u0300\3\2\2\2\u0303\u0305") - buf.write("\7\60\2\2\u0304\u0306\t\7\2\2\u0305\u0304\3\2\2\2\u0306") - buf.write("\u0307\3\2\2\2\u0307\u0305\3\2\2\2\u0307\u0308\3\2\2\2") - buf.write("\u0308\u0310\3\2\2\2\u0309\u030b\t\7\2\2\u030a\u0309\3") - buf.write("\2\2\2\u030b\u030c\3\2\2\2\u030c\u030a\3\2\2\2\u030c\u030d") - buf.write("\3\2\2\2\u030d\u030e\3\2\2\2\u030e\u0310\7\60\2\2\u030f") - buf.write("\u0300\3\2\2\2\u030f\u030a\3\2\2\2\u0310\u00d0\3\2\2\2") - buf.write("\u0311\u0316\7)\2\2\u0312\u0315\5\u00d7l\2\u0313\u0315") - buf.write("\5\u00ddo\2\u0314\u0312\3\2\2\2\u0314\u0313\3\2\2\2\u0315") - buf.write("\u0318\3\2\2\2\u0316\u0314\3\2\2\2\u0316\u0317\3\2\2\2") - buf.write("\u0317\u0319\3\2\2\2\u0318\u0316\3\2\2\2\u0319\u0324\7") - buf.write(")\2\2\u031a\u031f\7$\2\2\u031b\u031e\5\u00d9m\2\u031c") - buf.write("\u031e\5\u00ddo\2\u031d\u031b\3\2\2\2\u031d\u031c\3\2") - buf.write("\2\2\u031e\u0321\3\2\2\2\u031f\u031d\3\2\2\2\u031f\u0320") - buf.write("\3\2\2\2\u0320\u0322\3\2\2\2\u0321\u031f\3\2\2\2\u0322") - buf.write("\u0324\7$\2\2\u0323\u0311\3\2\2\2\u0323\u031a\3\2\2\2") - buf.write("\u0324\u00d2\3\2\2\2\u0325\u0326\7)\2\2\u0326\u0327\7") - buf.write(")\2\2\u0327\u0328\7)\2\2\u0328\u032c\3\2\2\2\u0329\u032b") - buf.write("\5\u00d5k\2\u032a\u0329\3\2\2\2\u032b\u032e\3\2\2\2\u032c") - buf.write("\u032d\3\2\2\2\u032c\u032a\3\2\2\2\u032d\u032f\3\2\2\2") - buf.write("\u032e\u032c\3\2\2\2\u032f\u0330\7)\2\2\u0330\u0331\7") - buf.write(")\2\2\u0331\u0340\7)\2\2\u0332\u0333\7$\2\2\u0333\u0334") - buf.write("\7$\2\2\u0334\u0335\7$\2\2\u0335\u0339\3\2\2\2\u0336\u0338") - buf.write("\5\u00d5k\2\u0337\u0336\3\2\2\2\u0338\u033b\3\2\2\2\u0339") - buf.write("\u033a\3\2\2\2\u0339\u0337\3\2\2\2\u033a\u033c\3\2\2\2") - buf.write("\u033b\u0339\3\2\2\2\u033c\u033d\7$\2\2\u033d\u033e\7") - buf.write("$\2\2\u033e\u0340\7$\2\2\u033f\u0325\3\2\2\2\u033f\u0332") - buf.write("\3\2\2\2\u0340\u00d4\3\2\2\2\u0341\u0344\5\u00dbn\2\u0342") - buf.write("\u0344\5\u00ddo\2\u0343\u0341\3\2\2\2\u0343\u0342\3\2") - buf.write("\2\2\u0344\u00d6\3\2\2\2\u0345\u0347\t\25\2\2\u0346\u0345") - buf.write("\3\2\2\2\u0347\u00d8\3\2\2\2\u0348\u034a\t\26\2\2\u0349") - buf.write("\u0348\3\2\2\2\u034a\u00da\3\2\2\2\u034b\u034d\t\27\2") - buf.write("\2\u034c\u034b\3\2\2\2\u034d\u00dc\3\2\2\2\u034e\u034f") - buf.write("\7^\2\2\u034f\u0350\t\30\2\2\u0350\u00de\3\2\2\2\u0351") - buf.write("\u0354\5\u00e1q\2\u0352\u0354\t\31\2\2\u0353\u0351\3\2") - buf.write("\2\2\u0353\u0352\3\2\2\2\u0354\u00e0\3\2\2\2\u0355\u0357") - buf.write("\t\32\2\2\u0356\u0355\3\2\2\2\u0357\u00e2\3\2\2\2;\2\u0220") - buf.write("\u0224\u0226\u022a\u022e\u0232\u0236\u0238\u023e\u0244") - buf.write("\u0246\u024d\u0254\u025b\u0261\u0263\u027f\u0286\u0295") - buf.write("\u029f\u02a8\u02ab\u02ad\u02b5\u02b8\u02ba\u02be\u02c7") - buf.write("\u02d4\u02da\u02e0\u02e2\u02e5\u02ec\u02ef\u02f3\u02f8") - buf.write("\u02fb\u0300\u0307\u030c\u030f\u0314\u0316\u031d\u031f") - buf.write("\u0323\u032c\u0339\u033f\u0343\u0346\u0349\u034c\u0353") - buf.write("\u0356\13\3X\2\3Y\3\3Z\4\3[\5\3\\\6\3]\7\2\3\2\3`\b\3") - buf.write("a\t") - return buf.getvalue() - + return [ + 4,0,100,854,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,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,3,1,3,1,3,1,3,1,3,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6, + 1,6,1,6,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,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1, + 12,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1, + 15,1,15,1,15,1,15,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,18,1,18,1,18,1,18,1,18,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,20,1,21,1,21,1,21,1, + 22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,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,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,30,1,30,1,31,1,31,1,31,1,31,1,31,1, + 31,1,32,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,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,38,1,38,1,38,1,38,1,39,1,39,1,40,1,40,1, + 41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,44,1,45,1,45,1,46,1,46,1, + 47,1,47,1,48,1,48,1,49,1,49,1,49,1,50,1,50,1,50,1,51,1,51,1,52,1, + 52,1,53,1,53,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,60,1,61,1,61,1,61,1,62,1,62,1,62,1, + 63,1,63,1,63,1,64,1,64,1,65,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1, + 67,1,68,1,68,1,68,1,69,1,69,1,69,1,70,1,70,1,70,1,71,1,71,1,71,1, + 72,1,72,1,72,1,73,1,73,1,73,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1, + 76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,79,1, + 79,1,79,3,79,543,8,79,1,79,1,79,3,79,547,8,79,3,79,549,8,79,1,79, + 1,79,3,79,553,8,79,1,79,1,79,3,79,557,8,79,1,79,1,79,3,79,561,8, + 79,1,79,1,79,3,79,565,8,79,3,79,567,8,79,1,80,1,80,5,80,571,8,80, + 10,80,12,80,574,9,80,1,80,4,80,577,8,80,11,80,12,80,578,3,80,581, + 8,80,1,81,1,81,1,81,4,81,586,8,81,11,81,12,81,587,1,82,1,82,1,82, + 4,82,593,8,82,11,82,12,82,594,1,83,1,83,1,83,4,83,600,8,83,11,83, + 12,83,601,1,84,1,84,4,84,606,8,84,11,84,12,84,607,3,84,610,8,84, + 1,84,1,84,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,5,92,636, + 8,92,10,92,12,92,639,9,92,1,93,1,93,5,93,643,8,93,10,93,12,93,646, + 9,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,95,4,95,658, + 8,95,11,95,12,95,659,1,95,1,95,1,95,1,95,1,96,1,96,5,96,668,8,96, + 10,96,12,96,671,9,96,1,96,1,96,1,97,1,97,1,97,1,97,3,97,679,8,97, + 1,97,5,97,682,8,97,10,97,12,97,685,9,97,1,97,1,97,1,97,1,97,1,97, + 3,97,692,8,97,1,97,5,97,695,8,97,10,97,12,97,698,9,97,1,97,3,97, + 701,8,97,1,98,1,98,1,98,1,98,1,98,5,98,708,8,98,10,98,12,98,711, + 9,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,5,98,721,8,98,10,98, + 12,98,724,9,98,1,98,1,98,1,98,3,98,729,8,98,1,99,1,99,1,99,1,99, + 3,99,735,8,99,3,99,737,8,99,1,100,3,100,740,8,100,1,100,1,100,1, + 101,4,101,745,8,101,11,101,12,101,746,1,101,3,101,750,8,101,1,101, + 1,101,3,101,754,8,101,1,101,4,101,757,8,101,11,101,12,101,758,1, + 101,3,101,762,8,101,1,102,5,102,765,8,102,10,102,12,102,768,9,102, + 1,102,1,102,4,102,772,8,102,11,102,12,102,773,1,102,4,102,777,8, + 102,11,102,12,102,778,1,102,3,102,782,8,102,1,103,1,103,1,103,5, + 103,787,8,103,10,103,12,103,790,9,103,1,103,1,103,1,103,1,103,5, + 103,796,8,103,10,103,12,103,799,9,103,1,103,3,103,802,8,103,1,104, + 1,104,1,104,1,104,1,104,5,104,809,8,104,10,104,12,104,812,9,104, + 1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,5,104,822,8,104, + 10,104,12,104,825,9,104,1,104,1,104,1,104,3,104,830,8,104,1,105, + 1,105,3,105,834,8,105,1,106,3,106,837,8,106,1,107,3,107,840,8,107, + 1,108,3,108,843,8,108,1,109,1,109,1,109,1,110,1,110,3,110,850,8, + 110,1,111,3,111,853,8,111,4,709,722,810,823,0,112,1,4,3,5,5,6,7, + 7,9,8,11,9,13,10,15,11,17,12,19,13,21,14,23,15,25,16,27,17,29,18, + 31,19,33,20,35,21,37,22,39,23,41,24,43,25,45,26,47,27,49,28,51,29, + 53,30,55,31,57,32,59,33,61,34,63,35,65,36,67,37,69,38,71,39,73,40, + 75,41,77,42,79,43,81,44,83,45,85,46,87,47,89,48,91,49,93,50,95,51, + 97,52,99,53,101,54,103,55,105,56,107,57,109,58,111,59,113,60,115, + 61,117,62,119,63,121,64,123,65,125,66,127,67,129,68,131,69,133,70, + 135,71,137,72,139,73,141,74,143,75,145,76,147,77,149,78,151,79,153, + 80,155,81,157,82,159,83,161,84,163,85,165,86,167,87,169,88,171,89, + 173,90,175,91,177,92,179,93,181,94,183,95,185,96,187,97,189,98,191, + 99,193,100,195,0,197,0,199,0,201,0,203,0,205,0,207,0,209,0,211,0, + 213,0,215,0,217,0,219,0,221,0,223,0,1,0,25,2,0,85,85,117,117,2,0, + 70,70,102,102,2,0,82,82,114,114,2,0,66,66,98,98,1,0,49,57,1,0,48, + 57,2,0,79,79,111,111,1,0,48,55,2,0,88,88,120,120,3,0,48,57,65,70, + 97,102,1,0,48,49,2,0,74,74,106,106,2,0,9,9,32,32,2,0,10,10,12,13, + 4,0,10,10,13,13,39,39,92,92,4,0,10,10,13,13,34,34,92,92,1,0,92,92, + 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,148,0, + 48,57,768,879,1155,1158,1425,1465,1467,1469,1471,1471,1473,1474, + 1476,1477,1479,1479,1552,1557,1611,1630,1632,1641,1648,1648,1750, + 1756,1759,1764,1767,1768,1770,1773,1776,1785,1809,1809,1840,1866, + 1958,1968,2305,2307,2364,2364,2366,2381,2385,2388,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,2662,2673,2689,2691,2748,2748,2750,2757,2759,2761,2763,2765, + 2786,2787,2790,2799,2817,2819,2876,2876,2878,2883,2887,2888,2891, + 2893,2902,2903,2918,2927,2946,2946,3006,3010,3014,3016,3018,3021, + 3031,3031,3046,3055,3073,3075,3134,3140,3142,3144,3146,3149,3157, + 3158,3174,3183,3202,3203,3260,3260,3262,3268,3270,3272,3274,3277, + 3285,3286,3302,3311,3330,3331,3390,3395,3398,3400,3402,3405,3415, + 3415,3430,3439,3458,3459,3530,3530,3535,3540,3542,3542,3544,3551, + 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,3984,3991,3993, + 4028,4038,4038,4140,4146,4150,4153,4160,4169,4182,4185,4959,4959, + 4969,4977,5906,5908,5938,5940,5970,5971,6002,6003,6070,6099,6109, + 6109,6112,6121,6155,6157,6160,6169,6313,6313,6432,6443,6448,6459, + 6470,6479,6576,6592,6600,6601,6608,6617,6679,6683,7616,7619,8255, + 8256,8276,8276,8400,8412,8417,8417,8421,8427,12330,12335,12441,12442, + 43010,43010,43014,43014,43019,43019,43043,43047,64286,64286,65024, + 65039,65056,65059,65075,65076,65101,65103,65296,65305,65343,65343, + 295,0,65,90,95,95,97,122,170,170,181,181,186,186,192,214,216,246, + 248,577,592,705,710,721,736,740,750,750,890,890,902,902,904,906, + 908,908,910,929,931,974,976,1013,1015,1153,1162,1230,1232,1273,1280, + 1295,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1569,1594, + 1600,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786, + 1788,1791,1791,1808,1808,1810,1839,1869,1901,1920,1957,1969,1969, + 2308,2361,2365,2365,2384,2384,2392,2401,2429,2429,2437,2444,2447, + 2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510, + 2524,2525,2527,2529,2544,2545,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,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,3077,3084,3086,3088,3090,3112,3114, + 3123,3125,3129,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251, + 3253,3257,3261,3261,3294,3294,3296,3297,3333,3340,3342,3344,3346, + 3368,3370,3385,3424,3425,3461,3478,3482,3505,3507,3515,3517,3517, + 3520,3526,3585,3632,3634,3635,3648,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,3805,3840,3840,3904,3911,3913,3946,3976,3979,4096,4129, + 4131,4135,4137,4138,4176,4181,4256,4293,4304,4346,4348,4348,4352, + 4441,4447,4514,4520,4601,4608,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,5108,5121,5740,5743,5750,5761,5786,5792,5866,5870,5872,5888, + 5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6000,6016,6067, + 6103,6103,6108,6108,6176,6263,6272,6312,6400,6428,6480,6509,6512, + 6516,6528,6569,6593,6599,6656,6678,7424,7615,7680,7835,7840,7929, + 7936,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,8340,8450,8450,8455,8455,8458,8467,8469,8469, + 8472,8477,8484,8484,8486,8486,8488,8488,8490,8497,8499,8505,8508, + 8511,8517,8521,8544,8579,11264,11310,11312,11358,11392,11492,11520, + 11557,11568,11621,11631,11631,11648,11670,11680,11686,11688,11694, + 11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736, + 11742,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438, + 12443,12447,12449,12538,12540,12543,12549,12588,12593,12686,12704, + 12727,12784,12799,13312,19893,19968,40891,40960,42124,43008,43009, + 43011,43013,43015,43018,43020,43042,44032,55203,63744,64045,64048, + 64106,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,892,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,1,225,1,0,0,0,3,229, + 1,0,0,0,5,236,1,0,0,0,7,242,1,0,0,0,9,247,1,0,0,0,11,254,1,0,0,0, + 13,263,1,0,0,0,15,266,1,0,0,0,17,273,1,0,0,0,19,280,1,0,0,0,21,283, + 1,0,0,0,23,288,1,0,0,0,25,293,1,0,0,0,27,299,1,0,0,0,29,303,1,0, + 0,0,31,306,1,0,0,0,33,310,1,0,0,0,35,315,1,0,0,0,37,323,1,0,0,0, + 39,328,1,0,0,0,41,335,1,0,0,0,43,342,1,0,0,0,45,345,1,0,0,0,47,349, + 1,0,0,0,49,353,1,0,0,0,51,356,1,0,0,0,53,362,1,0,0,0,55,368,1,0, + 0,0,57,372,1,0,0,0,59,377,1,0,0,0,61,386,1,0,0,0,63,392,1,0,0,0, + 65,398,1,0,0,0,67,404,1,0,0,0,69,410,1,0,0,0,71,415,1,0,0,0,73,420, + 1,0,0,0,75,426,1,0,0,0,77,428,1,0,0,0,79,432,1,0,0,0,81,434,1,0, + 0,0,83,436,1,0,0,0,85,438,1,0,0,0,87,440,1,0,0,0,89,442,1,0,0,0, + 91,445,1,0,0,0,93,447,1,0,0,0,95,449,1,0,0,0,97,451,1,0,0,0,99,453, + 1,0,0,0,101,456,1,0,0,0,103,459,1,0,0,0,105,461,1,0,0,0,107,463, + 1,0,0,0,109,465,1,0,0,0,111,467,1,0,0,0,113,470,1,0,0,0,115,472, + 1,0,0,0,117,474,1,0,0,0,119,476,1,0,0,0,121,479,1,0,0,0,123,482, + 1,0,0,0,125,485,1,0,0,0,127,488,1,0,0,0,129,491,1,0,0,0,131,493, + 1,0,0,0,133,496,1,0,0,0,135,499,1,0,0,0,137,502,1,0,0,0,139,505, + 1,0,0,0,141,508,1,0,0,0,143,511,1,0,0,0,145,514,1,0,0,0,147,517, + 1,0,0,0,149,520,1,0,0,0,151,523,1,0,0,0,153,527,1,0,0,0,155,531, + 1,0,0,0,157,535,1,0,0,0,159,566,1,0,0,0,161,580,1,0,0,0,163,582, + 1,0,0,0,165,589,1,0,0,0,167,596,1,0,0,0,169,609,1,0,0,0,171,613, + 1,0,0,0,173,615,1,0,0,0,175,618,1,0,0,0,177,621,1,0,0,0,179,624, + 1,0,0,0,181,627,1,0,0,0,183,630,1,0,0,0,185,633,1,0,0,0,187,640, + 1,0,0,0,189,651,1,0,0,0,191,657,1,0,0,0,193,665,1,0,0,0,195,700, + 1,0,0,0,197,728,1,0,0,0,199,736,1,0,0,0,201,739,1,0,0,0,203,761, + 1,0,0,0,205,781,1,0,0,0,207,801,1,0,0,0,209,829,1,0,0,0,211,833, + 1,0,0,0,213,836,1,0,0,0,215,839,1,0,0,0,217,842,1,0,0,0,219,844, + 1,0,0,0,221,849,1,0,0,0,223,852,1,0,0,0,225,226,5,100,0,0,226,227, + 5,101,0,0,227,228,5,102,0,0,228,2,1,0,0,0,229,230,5,114,0,0,230, + 231,5,101,0,0,231,232,5,116,0,0,232,233,5,117,0,0,233,234,5,114, + 0,0,234,235,5,110,0,0,235,4,1,0,0,0,236,237,5,114,0,0,237,238,5, + 97,0,0,238,239,5,105,0,0,239,240,5,115,0,0,240,241,5,101,0,0,241, + 6,1,0,0,0,242,243,5,102,0,0,243,244,5,114,0,0,244,245,5,111,0,0, + 245,246,5,109,0,0,246,8,1,0,0,0,247,248,5,105,0,0,248,249,5,109, + 0,0,249,250,5,112,0,0,250,251,5,111,0,0,251,252,5,114,0,0,252,253, + 5,116,0,0,253,10,1,0,0,0,254,255,5,110,0,0,255,256,5,111,0,0,256, + 257,5,110,0,0,257,258,5,108,0,0,258,259,5,111,0,0,259,260,5,99,0, + 0,260,261,5,97,0,0,261,262,5,108,0,0,262,12,1,0,0,0,263,264,5,97, + 0,0,264,265,5,115,0,0,265,14,1,0,0,0,266,267,5,103,0,0,267,268,5, + 108,0,0,268,269,5,111,0,0,269,270,5,98,0,0,270,271,5,97,0,0,271, + 272,5,108,0,0,272,16,1,0,0,0,273,274,5,97,0,0,274,275,5,115,0,0, + 275,276,5,115,0,0,276,277,5,101,0,0,277,278,5,114,0,0,278,279,5, + 116,0,0,279,18,1,0,0,0,280,281,5,105,0,0,281,282,5,102,0,0,282,20, + 1,0,0,0,283,284,5,101,0,0,284,285,5,108,0,0,285,286,5,105,0,0,286, + 287,5,102,0,0,287,22,1,0,0,0,288,289,5,101,0,0,289,290,5,108,0,0, + 290,291,5,115,0,0,291,292,5,101,0,0,292,24,1,0,0,0,293,294,5,119, + 0,0,294,295,5,104,0,0,295,296,5,105,0,0,296,297,5,108,0,0,297,298, + 5,101,0,0,298,26,1,0,0,0,299,300,5,102,0,0,300,301,5,111,0,0,301, + 302,5,114,0,0,302,28,1,0,0,0,303,304,5,105,0,0,304,305,5,110,0,0, + 305,30,1,0,0,0,306,307,5,116,0,0,307,308,5,114,0,0,308,309,5,121, + 0,0,309,32,1,0,0,0,310,311,5,78,0,0,311,312,5,111,0,0,312,313,5, + 110,0,0,313,314,5,101,0,0,314,34,1,0,0,0,315,316,5,102,0,0,316,317, + 5,105,0,0,317,318,5,110,0,0,318,319,5,97,0,0,319,320,5,108,0,0,320, + 321,5,108,0,0,321,322,5,121,0,0,322,36,1,0,0,0,323,324,5,119,0,0, + 324,325,5,105,0,0,325,326,5,116,0,0,326,327,5,104,0,0,327,38,1,0, + 0,0,328,329,5,101,0,0,329,330,5,120,0,0,330,331,5,99,0,0,331,332, + 5,101,0,0,332,333,5,112,0,0,333,334,5,116,0,0,334,40,1,0,0,0,335, + 336,5,108,0,0,336,337,5,97,0,0,337,338,5,109,0,0,338,339,5,98,0, + 0,339,340,5,100,0,0,340,341,5,97,0,0,341,42,1,0,0,0,342,343,5,111, + 0,0,343,344,5,114,0,0,344,44,1,0,0,0,345,346,5,97,0,0,346,347,5, + 110,0,0,347,348,5,100,0,0,348,46,1,0,0,0,349,350,5,110,0,0,350,351, + 5,111,0,0,351,352,5,116,0,0,352,48,1,0,0,0,353,354,5,105,0,0,354, + 355,5,115,0,0,355,50,1,0,0,0,356,357,5,99,0,0,357,358,5,108,0,0, + 358,359,5,97,0,0,359,360,5,115,0,0,360,361,5,115,0,0,361,52,1,0, + 0,0,362,363,5,121,0,0,363,364,5,105,0,0,364,365,5,101,0,0,365,366, + 5,108,0,0,366,367,5,100,0,0,367,54,1,0,0,0,368,369,5,100,0,0,369, + 370,5,101,0,0,370,371,5,108,0,0,371,56,1,0,0,0,372,373,5,112,0,0, + 373,374,5,97,0,0,374,375,5,115,0,0,375,376,5,115,0,0,376,58,1,0, + 0,0,377,378,5,99,0,0,378,379,5,111,0,0,379,380,5,110,0,0,380,381, + 5,116,0,0,381,382,5,105,0,0,382,383,5,110,0,0,383,384,5,117,0,0, + 384,385,5,101,0,0,385,60,1,0,0,0,386,387,5,98,0,0,387,388,5,114, + 0,0,388,389,5,101,0,0,389,390,5,97,0,0,390,391,5,107,0,0,391,62, + 1,0,0,0,392,393,5,97,0,0,393,394,5,115,0,0,394,395,5,121,0,0,395, + 396,5,110,0,0,396,397,5,99,0,0,397,64,1,0,0,0,398,399,5,97,0,0,399, + 400,5,119,0,0,400,401,5,97,0,0,401,402,5,105,0,0,402,403,5,116,0, + 0,403,66,1,0,0,0,404,405,5,112,0,0,405,406,5,114,0,0,406,407,5,105, + 0,0,407,408,5,110,0,0,408,409,5,116,0,0,409,68,1,0,0,0,410,411,5, + 101,0,0,411,412,5,120,0,0,412,413,5,101,0,0,413,414,5,99,0,0,414, + 70,1,0,0,0,415,416,5,84,0,0,416,417,5,114,0,0,417,418,5,117,0,0, + 418,419,5,101,0,0,419,72,1,0,0,0,420,421,5,70,0,0,421,422,5,97,0, + 0,422,423,5,108,0,0,423,424,5,115,0,0,424,425,5,101,0,0,425,74,1, + 0,0,0,426,427,5,46,0,0,427,76,1,0,0,0,428,429,5,46,0,0,429,430,5, + 46,0,0,430,431,5,46,0,0,431,78,1,0,0,0,432,433,5,96,0,0,433,80,1, + 0,0,0,434,435,5,42,0,0,435,82,1,0,0,0,436,437,5,44,0,0,437,84,1, + 0,0,0,438,439,5,58,0,0,439,86,1,0,0,0,440,441,5,59,0,0,441,88,1, + 0,0,0,442,443,5,42,0,0,443,444,5,42,0,0,444,90,1,0,0,0,445,446,5, + 61,0,0,446,92,1,0,0,0,447,448,5,124,0,0,448,94,1,0,0,0,449,450,5, + 94,0,0,450,96,1,0,0,0,451,452,5,38,0,0,452,98,1,0,0,0,453,454,5, + 60,0,0,454,455,5,60,0,0,455,100,1,0,0,0,456,457,5,62,0,0,457,458, + 5,62,0,0,458,102,1,0,0,0,459,460,5,43,0,0,460,104,1,0,0,0,461,462, + 5,45,0,0,462,106,1,0,0,0,463,464,5,47,0,0,464,108,1,0,0,0,465,466, + 5,37,0,0,466,110,1,0,0,0,467,468,5,47,0,0,468,469,5,47,0,0,469,112, + 1,0,0,0,470,471,5,126,0,0,471,114,1,0,0,0,472,473,5,60,0,0,473,116, + 1,0,0,0,474,475,5,62,0,0,475,118,1,0,0,0,476,477,5,61,0,0,477,478, + 5,61,0,0,478,120,1,0,0,0,479,480,5,62,0,0,480,481,5,61,0,0,481,122, + 1,0,0,0,482,483,5,60,0,0,483,484,5,61,0,0,484,124,1,0,0,0,485,486, + 5,60,0,0,486,487,5,62,0,0,487,126,1,0,0,0,488,489,5,33,0,0,489,490, + 5,61,0,0,490,128,1,0,0,0,491,492,5,64,0,0,492,130,1,0,0,0,493,494, + 5,45,0,0,494,495,5,62,0,0,495,132,1,0,0,0,496,497,5,43,0,0,497,498, + 5,61,0,0,498,134,1,0,0,0,499,500,5,45,0,0,500,501,5,61,0,0,501,136, + 1,0,0,0,502,503,5,42,0,0,503,504,5,61,0,0,504,138,1,0,0,0,505,506, + 5,64,0,0,506,507,5,61,0,0,507,140,1,0,0,0,508,509,5,47,0,0,509,510, + 5,61,0,0,510,142,1,0,0,0,511,512,5,37,0,0,512,513,5,61,0,0,513,144, + 1,0,0,0,514,515,5,38,0,0,515,516,5,61,0,0,516,146,1,0,0,0,517,518, + 5,124,0,0,518,519,5,61,0,0,519,148,1,0,0,0,520,521,5,94,0,0,521, + 522,5,61,0,0,522,150,1,0,0,0,523,524,5,60,0,0,524,525,5,60,0,0,525, + 526,5,61,0,0,526,152,1,0,0,0,527,528,5,62,0,0,528,529,5,62,0,0,529, + 530,5,61,0,0,530,154,1,0,0,0,531,532,5,42,0,0,532,533,5,42,0,0,533, + 534,5,61,0,0,534,156,1,0,0,0,535,536,5,47,0,0,536,537,5,47,0,0,537, + 538,5,61,0,0,538,158,1,0,0,0,539,549,7,0,0,0,540,542,7,1,0,0,541, + 543,7,2,0,0,542,541,1,0,0,0,542,543,1,0,0,0,543,549,1,0,0,0,544, + 546,7,2,0,0,545,547,7,1,0,0,546,545,1,0,0,0,546,547,1,0,0,0,547, + 549,1,0,0,0,548,539,1,0,0,0,548,540,1,0,0,0,548,544,1,0,0,0,548, + 549,1,0,0,0,549,552,1,0,0,0,550,553,3,195,97,0,551,553,3,197,98, + 0,552,550,1,0,0,0,552,551,1,0,0,0,553,567,1,0,0,0,554,556,7,3,0, + 0,555,557,7,2,0,0,556,555,1,0,0,0,556,557,1,0,0,0,557,561,1,0,0, + 0,558,559,7,2,0,0,559,561,7,3,0,0,560,554,1,0,0,0,560,558,1,0,0, + 0,561,564,1,0,0,0,562,565,3,207,103,0,563,565,3,209,104,0,564,562, + 1,0,0,0,564,563,1,0,0,0,565,567,1,0,0,0,566,548,1,0,0,0,566,560, + 1,0,0,0,567,160,1,0,0,0,568,572,7,4,0,0,569,571,7,5,0,0,570,569, + 1,0,0,0,571,574,1,0,0,0,572,570,1,0,0,0,572,573,1,0,0,0,573,581, + 1,0,0,0,574,572,1,0,0,0,575,577,5,48,0,0,576,575,1,0,0,0,577,578, + 1,0,0,0,578,576,1,0,0,0,578,579,1,0,0,0,579,581,1,0,0,0,580,568, + 1,0,0,0,580,576,1,0,0,0,581,162,1,0,0,0,582,583,5,48,0,0,583,585, + 7,6,0,0,584,586,7,7,0,0,585,584,1,0,0,0,586,587,1,0,0,0,587,585, + 1,0,0,0,587,588,1,0,0,0,588,164,1,0,0,0,589,590,5,48,0,0,590,592, + 7,8,0,0,591,593,7,9,0,0,592,591,1,0,0,0,593,594,1,0,0,0,594,592, + 1,0,0,0,594,595,1,0,0,0,595,166,1,0,0,0,596,597,5,48,0,0,597,599, + 7,3,0,0,598,600,7,10,0,0,599,598,1,0,0,0,600,601,1,0,0,0,601,599, + 1,0,0,0,601,602,1,0,0,0,602,168,1,0,0,0,603,610,3,203,101,0,604, + 606,7,5,0,0,605,604,1,0,0,0,606,607,1,0,0,0,607,605,1,0,0,0,607, + 608,1,0,0,0,608,610,1,0,0,0,609,603,1,0,0,0,609,605,1,0,0,0,610, + 611,1,0,0,0,611,612,7,11,0,0,612,170,1,0,0,0,613,614,3,203,101,0, + 614,172,1,0,0,0,615,616,5,40,0,0,616,617,6,86,0,0,617,174,1,0,0, + 0,618,619,5,41,0,0,619,620,6,87,1,0,620,176,1,0,0,0,621,622,5,123, + 0,0,622,623,6,88,2,0,623,178,1,0,0,0,624,625,5,125,0,0,625,626,6, + 89,3,0,626,180,1,0,0,0,627,628,5,91,0,0,628,629,6,90,4,0,629,182, + 1,0,0,0,630,631,5,93,0,0,631,632,6,91,5,0,632,184,1,0,0,0,633,637, + 3,223,111,0,634,636,3,221,110,0,635,634,1,0,0,0,636,639,1,0,0,0, + 637,635,1,0,0,0,637,638,1,0,0,0,638,186,1,0,0,0,639,637,1,0,0,0, + 640,644,5,92,0,0,641,643,7,12,0,0,642,641,1,0,0,0,643,646,1,0,0, + 0,644,642,1,0,0,0,644,645,1,0,0,0,645,647,1,0,0,0,646,644,1,0,0, + 0,647,648,3,201,100,0,648,649,1,0,0,0,649,650,6,93,6,0,650,188,1, + 0,0,0,651,652,3,201,100,0,652,653,6,94,7,0,653,654,1,0,0,0,654,655, + 6,94,6,0,655,190,1,0,0,0,656,658,7,12,0,0,657,656,1,0,0,0,658,659, + 1,0,0,0,659,657,1,0,0,0,659,660,1,0,0,0,660,661,1,0,0,0,661,662, + 6,95,8,0,662,663,1,0,0,0,663,664,6,95,6,0,664,192,1,0,0,0,665,669, + 5,35,0,0,666,668,8,13,0,0,667,666,1,0,0,0,668,671,1,0,0,0,669,667, + 1,0,0,0,669,670,1,0,0,0,670,672,1,0,0,0,671,669,1,0,0,0,672,673, + 6,96,6,0,673,194,1,0,0,0,674,683,5,39,0,0,675,678,5,92,0,0,676,679, + 3,201,100,0,677,679,9,0,0,0,678,676,1,0,0,0,678,677,1,0,0,0,679, + 682,1,0,0,0,680,682,8,14,0,0,681,675,1,0,0,0,681,680,1,0,0,0,682, + 685,1,0,0,0,683,681,1,0,0,0,683,684,1,0,0,0,684,686,1,0,0,0,685, + 683,1,0,0,0,686,701,5,39,0,0,687,696,5,34,0,0,688,691,5,92,0,0,689, + 692,3,201,100,0,690,692,9,0,0,0,691,689,1,0,0,0,691,690,1,0,0,0, + 692,695,1,0,0,0,693,695,8,15,0,0,694,688,1,0,0,0,694,693,1,0,0,0, + 695,698,1,0,0,0,696,694,1,0,0,0,696,697,1,0,0,0,697,699,1,0,0,0, + 698,696,1,0,0,0,699,701,5,34,0,0,700,674,1,0,0,0,700,687,1,0,0,0, + 701,196,1,0,0,0,702,703,5,39,0,0,703,704,5,39,0,0,704,705,5,39,0, + 0,705,709,1,0,0,0,706,708,3,199,99,0,707,706,1,0,0,0,708,711,1,0, + 0,0,709,710,1,0,0,0,709,707,1,0,0,0,710,712,1,0,0,0,711,709,1,0, + 0,0,712,713,5,39,0,0,713,714,5,39,0,0,714,729,5,39,0,0,715,716,5, + 34,0,0,716,717,5,34,0,0,717,718,5,34,0,0,718,722,1,0,0,0,719,721, + 3,199,99,0,720,719,1,0,0,0,721,724,1,0,0,0,722,723,1,0,0,0,722,720, + 1,0,0,0,723,725,1,0,0,0,724,722,1,0,0,0,725,726,5,34,0,0,726,727, + 5,34,0,0,727,729,5,34,0,0,728,702,1,0,0,0,728,715,1,0,0,0,729,198, + 1,0,0,0,730,737,8,16,0,0,731,734,5,92,0,0,732,735,3,201,100,0,733, + 735,9,0,0,0,734,732,1,0,0,0,734,733,1,0,0,0,735,737,1,0,0,0,736, + 730,1,0,0,0,736,731,1,0,0,0,737,200,1,0,0,0,738,740,5,13,0,0,739, + 738,1,0,0,0,739,740,1,0,0,0,740,741,1,0,0,0,741,742,5,10,0,0,742, + 202,1,0,0,0,743,745,7,5,0,0,744,743,1,0,0,0,745,746,1,0,0,0,746, + 744,1,0,0,0,746,747,1,0,0,0,747,750,1,0,0,0,748,750,3,205,102,0, + 749,744,1,0,0,0,749,748,1,0,0,0,750,751,1,0,0,0,751,753,7,17,0,0, + 752,754,7,18,0,0,753,752,1,0,0,0,753,754,1,0,0,0,754,756,1,0,0,0, + 755,757,7,5,0,0,756,755,1,0,0,0,757,758,1,0,0,0,758,756,1,0,0,0, + 758,759,1,0,0,0,759,762,1,0,0,0,760,762,3,205,102,0,761,749,1,0, + 0,0,761,760,1,0,0,0,762,204,1,0,0,0,763,765,7,5,0,0,764,763,1,0, + 0,0,765,768,1,0,0,0,766,764,1,0,0,0,766,767,1,0,0,0,767,769,1,0, + 0,0,768,766,1,0,0,0,769,771,5,46,0,0,770,772,7,5,0,0,771,770,1,0, + 0,0,772,773,1,0,0,0,773,771,1,0,0,0,773,774,1,0,0,0,774,782,1,0, + 0,0,775,777,7,5,0,0,776,775,1,0,0,0,777,778,1,0,0,0,778,776,1,0, + 0,0,778,779,1,0,0,0,779,780,1,0,0,0,780,782,5,46,0,0,781,766,1,0, + 0,0,781,776,1,0,0,0,782,206,1,0,0,0,783,788,5,39,0,0,784,787,3,213, + 106,0,785,787,3,219,109,0,786,784,1,0,0,0,786,785,1,0,0,0,787,790, + 1,0,0,0,788,786,1,0,0,0,788,789,1,0,0,0,789,791,1,0,0,0,790,788, + 1,0,0,0,791,802,5,39,0,0,792,797,5,34,0,0,793,796,3,215,107,0,794, + 796,3,219,109,0,795,793,1,0,0,0,795,794,1,0,0,0,796,799,1,0,0,0, + 797,795,1,0,0,0,797,798,1,0,0,0,798,800,1,0,0,0,799,797,1,0,0,0, + 800,802,5,34,0,0,801,783,1,0,0,0,801,792,1,0,0,0,802,208,1,0,0,0, + 803,804,5,39,0,0,804,805,5,39,0,0,805,806,5,39,0,0,806,810,1,0,0, + 0,807,809,3,211,105,0,808,807,1,0,0,0,809,812,1,0,0,0,810,811,1, + 0,0,0,810,808,1,0,0,0,811,813,1,0,0,0,812,810,1,0,0,0,813,814,5, + 39,0,0,814,815,5,39,0,0,815,830,5,39,0,0,816,817,5,34,0,0,817,818, + 5,34,0,0,818,819,5,34,0,0,819,823,1,0,0,0,820,822,3,211,105,0,821, + 820,1,0,0,0,822,825,1,0,0,0,823,824,1,0,0,0,823,821,1,0,0,0,824, + 826,1,0,0,0,825,823,1,0,0,0,826,827,5,34,0,0,827,828,5,34,0,0,828, + 830,5,34,0,0,829,803,1,0,0,0,829,816,1,0,0,0,830,210,1,0,0,0,831, + 834,3,217,108,0,832,834,3,219,109,0,833,831,1,0,0,0,833,832,1,0, + 0,0,834,212,1,0,0,0,835,837,7,19,0,0,836,835,1,0,0,0,837,214,1,0, + 0,0,838,840,7,20,0,0,839,838,1,0,0,0,840,216,1,0,0,0,841,843,7,21, + 0,0,842,841,1,0,0,0,843,218,1,0,0,0,844,845,5,92,0,0,845,846,7,22, + 0,0,846,220,1,0,0,0,847,850,3,223,111,0,848,850,7,23,0,0,849,847, + 1,0,0,0,849,848,1,0,0,0,850,222,1,0,0,0,851,853,7,24,0,0,852,851, + 1,0,0,0,853,224,1,0,0,0,57,0,542,546,548,552,556,560,564,566,572, + 578,580,587,594,601,607,609,637,644,659,669,678,681,683,691,694, + 696,700,709,722,728,734,736,739,746,749,753,758,761,766,773,778, + 781,786,788,795,797,801,810,823,829,833,836,839,842,849,852,9,1, + 86,0,1,87,1,1,88,2,1,89,3,1,90,4,1,91,5,0,1,0,1,94,6,1,95,7 + ] class PythonLexer(PythonLexerBase): @@ -676,7 +576,7 @@ class PythonLexer(PythonLexerBase): def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/src/pycropml/transpiler/antlr_py/grammars/PythonParser.interp b/src/pycropml/transpiler/antlr_py/grammars/PythonParser.interp index 89c4e79e..1c3128e3 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/PythonParser.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/PythonParser.interp @@ -267,4 +267,4 @@ comp_iter atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 102, 972, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 3, 2, 3, 2, 3, 2, 5, 2, 124, 10, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 133, 10, 3, 3, 4, 3, 4, 6, 4, 137, 10, 4, 13, 4, 14, 4, 138, 3, 5, 3, 5, 7, 5, 143, 10, 5, 12, 5, 14, 5, 146, 11, 5, 3, 6, 3, 6, 5, 6, 150, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 157, 10, 7, 12, 7, 14, 7, 160, 11, 7, 3, 7, 5, 7, 163, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 170, 10, 7, 3, 7, 5, 7, 173, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 182, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 6, 7, 188, 10, 7, 13, 7, 14, 7, 189, 3, 7, 5, 7, 193, 10, 7, 3, 7, 5, 7, 196, 10, 7, 3, 7, 5, 7, 199, 10, 7, 3, 7, 5, 7, 202, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 208, 10, 7, 12, 7, 14, 7, 211, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 217, 10, 7, 12, 7, 14, 7, 220, 11, 7, 3, 7, 3, 7, 5, 7, 224, 10, 7, 5, 7, 226, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 6, 8, 232, 10, 8, 13, 8, 14, 8, 233, 3, 8, 3, 8, 5, 8, 238, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 244, 10, 9, 3, 9, 5, 9, 247, 10, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 5, 13, 267, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 281, 10, 14, 5, 14, 283, 10, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 292, 10, 15, 3, 15, 5, 15, 295, 10, 15, 3, 15, 3, 15, 3, 15, 3, 16, 5, 16, 301, 10, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 307, 10, 16, 3, 16, 3, 16, 3, 16, 5, 16, 312, 10, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 5, 17, 320, 10, 17, 3, 17, 3, 17, 3, 17, 5, 17, 325, 10, 17, 3, 17, 3, 17, 5, 17, 329, 10, 17, 3, 17, 5, 17, 332, 10, 17, 3, 17, 5, 17, 335, 10, 17, 3, 17, 3, 17, 5, 17, 339, 10, 17, 5, 17, 341, 10, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 7, 20, 352, 10, 20, 12, 20, 14, 20, 355, 11, 20, 3, 21, 3, 21, 3, 21, 5, 21, 360, 10, 21, 3, 21, 5, 21, 363, 10, 21, 3, 22, 3, 22, 3, 22, 5, 22, 368, 10, 22, 3, 23, 3, 23, 3, 23, 7, 23, 373, 10, 23, 12, 23, 14, 23, 376, 11, 23, 3, 23, 5, 23, 379, 10, 23, 3, 23, 3, 23, 3, 24, 3, 24, 5, 24, 385, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 392, 10, 24, 12, 24, 14, 24, 395, 11, 24, 3, 24, 5, 24, 398, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 6, 24, 404, 10, 24, 13, 24, 14, 24, 405, 3, 24, 5, 24, 409, 10, 24, 5, 24, 411, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 422, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 430, 10, 24, 5, 24, 432, 10, 24, 5, 24, 434, 10, 24, 3, 24, 3, 24, 5, 24, 438, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 445, 10, 24, 12, 24, 14, 24, 448, 11, 24, 3, 24, 3, 24, 6, 24, 452, 10, 24, 13, 24, 14, 24, 453, 5, 24, 456, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 465, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 471, 10, 24, 12, 24, 14, 24, 474, 11, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 483, 10, 24, 5, 24, 485, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 493, 10, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 500, 10, 24, 12, 24, 14, 24, 503, 11, 24, 3, 24, 3, 24, 5, 24, 507, 10, 24, 3, 25, 3, 25, 5, 25, 511, 10, 25, 3, 25, 3, 25, 6, 25, 515, 10, 25, 13, 25, 14, 25, 516, 3, 25, 3, 25, 5, 25, 521, 10, 25, 3, 25, 5, 25, 524, 10, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 533, 10, 27, 12, 27, 14, 27, 536, 11, 27, 3, 27, 3, 27, 5, 27, 540, 10, 27, 3, 27, 5, 27, 543, 10, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 550, 10, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 557, 10, 27, 5, 27, 559, 10, 27, 3, 28, 3, 28, 3, 28, 7, 28, 564, 10, 28, 12, 28, 14, 28, 567, 11, 28, 3, 28, 5, 28, 570, 10, 28, 3, 29, 3, 29, 3, 29, 7, 29, 575, 10, 29, 12, 29, 14, 29, 578, 11, 29, 3, 29, 5, 29, 581, 10, 29, 3, 30, 3, 30, 3, 30, 5, 30, 586, 10, 30, 3, 31, 3, 31, 3, 31, 7, 31, 591, 10, 31, 12, 31, 14, 31, 594, 11, 31, 3, 32, 3, 32, 3, 32, 5, 32, 599, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 607, 10, 33, 3, 33, 3, 33, 5, 33, 611, 10, 33, 3, 33, 3, 33, 5, 33, 615, 10, 33, 3, 34, 3, 34, 3, 34, 5, 34, 620, 10, 34, 3, 34, 3, 34, 3, 34, 5, 34, 625, 10, 34, 3, 34, 3, 34, 5, 34, 629, 10, 34, 3, 34, 5, 34, 632, 10, 34, 3, 34, 5, 34, 635, 10, 34, 3, 34, 3, 34, 5, 34, 639, 10, 34, 5, 34, 641, 10, 34, 3, 35, 3, 35, 3, 35, 7, 35, 646, 10, 35, 12, 35, 14, 35, 649, 11, 35, 3, 36, 3, 36, 3, 36, 5, 36, 654, 10, 36, 3, 36, 5, 36, 657, 10, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 669, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 677, 10, 39, 12, 39, 14, 39, 680, 11, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 5, 40, 694, 10, 40, 3, 40, 3, 40, 3, 40, 5, 40, 699, 10, 40, 5, 40, 701, 10, 40, 3, 40, 7, 40, 704, 10, 40, 12, 40, 14, 40, 707, 11, 40, 3, 41, 3, 41, 5, 41, 711, 10, 41, 3, 41, 3, 41, 7, 41, 715, 10, 41, 12, 41, 14, 41, 718, 11, 41, 3, 41, 3, 41, 5, 41, 722, 10, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 7, 41, 745, 10, 41, 12, 41, 14, 41, 748, 11, 41, 3, 42, 3, 42, 3, 42, 5, 42, 753, 10, 42, 3, 42, 3, 42, 3, 42, 5, 42, 758, 10, 42, 3, 42, 3, 42, 3, 42, 5, 42, 763, 10, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 769, 10, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 778, 10, 42, 3, 42, 3, 42, 3, 42, 6, 42, 783, 10, 42, 13, 42, 14, 42, 784, 5, 42, 787, 10, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 795, 10, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 804, 10, 43, 7, 43, 806, 10, 43, 12, 43, 14, 43, 809, 11, 43, 3, 43, 5, 43, 812, 10, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 820, 10, 43, 3, 44, 3, 44, 5, 44, 824, 10, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 830, 10, 44, 7, 44, 832, 10, 44, 12, 44, 14, 44, 835, 11, 44, 3, 44, 5, 44, 838, 10, 44, 5, 44, 840, 10, 44, 3, 45, 3, 45, 3, 45, 7, 45, 845, 10, 45, 12, 45, 14, 45, 848, 11, 45, 3, 45, 5, 45, 851, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 7, 46, 859, 10, 46, 12, 46, 14, 46, 862, 11, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 5, 48, 869, 10, 48, 3, 49, 3, 49, 3, 50, 3, 50, 5, 50, 875, 10, 50, 3, 51, 3, 51, 3, 51, 5, 51, 880, 10, 51, 3, 52, 3, 52, 3, 52, 5, 52, 885, 10, 52, 3, 52, 5, 52, 888, 10, 52, 3, 53, 3, 53, 5, 53, 892, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 899, 10, 53, 3, 54, 3, 54, 3, 54, 7, 54, 904, 10, 54, 12, 54, 14, 54, 907, 11, 54, 3, 54, 5, 54, 910, 10, 54, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 916, 10, 55, 3, 55, 3, 55, 5, 55, 920, 10, 55, 3, 56, 3, 56, 3, 56, 7, 56, 925, 10, 56, 12, 56, 14, 56, 928, 11, 56, 3, 56, 5, 56, 931, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 937, 10, 57, 3, 57, 5, 57, 940, 10, 57, 5, 57, 942, 10, 57, 3, 57, 3, 57, 5, 57, 946, 10, 57, 3, 57, 5, 57, 949, 10, 57, 5, 57, 951, 10, 57, 3, 58, 3, 58, 5, 58, 955, 10, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 962, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 968, 10, 60, 5, 60, 970, 10, 60, 3, 60, 2, 6, 76, 78, 80, 90, 61, 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, 2, 12, 3, 3, 5, 5, 3, 2, 43, 44, 3, 2, 72, 84, 4, 2, 57, 58, 62, 62, 5, 2, 46, 46, 59, 61, 70, 70, 3, 2, 57, 58, 3, 2, 55, 56, 4, 2, 41, 42, 98, 98, 3, 2, 86, 89, 4, 2, 46, 46, 50, 50, 2, 1113, 2, 123, 3, 2, 2, 2, 4, 132, 3, 2, 2, 2, 6, 136, 3, 2, 2, 2, 8, 140, 3, 2, 2, 2, 10, 149, 3, 2, 2, 2, 12, 225, 3, 2, 2, 2, 14, 237, 3, 2, 2, 2, 16, 239, 3, 2, 2, 2, 18, 250, 3, 2, 2, 2, 20, 255, 3, 2, 2, 2, 22, 259, 3, 2, 2, 2, 24, 263, 3, 2, 2, 2, 26, 268, 3, 2, 2, 2, 28, 287, 3, 2, 2, 2, 30, 300, 3, 2, 2, 2, 32, 340, 3, 2, 2, 2, 34, 342, 3, 2, 2, 2, 36, 345, 3, 2, 2, 2, 38, 348, 3, 2, 2, 2, 40, 362, 3, 2, 2, 2, 42, 364, 3, 2, 2, 2, 44, 369, 3, 2, 2, 2, 46, 506, 3, 2, 2, 2, 48, 523, 3, 2, 2, 2, 50, 525, 3, 2, 2, 2, 52, 558, 3, 2, 2, 2, 54, 560, 3, 2, 2, 2, 56, 571, 3, 2, 2, 2, 58, 582, 3, 2, 2, 2, 60, 587, 3, 2, 2, 2, 62, 595, 3, 2, 2, 2, 64, 614, 3, 2, 2, 2, 66, 640, 3, 2, 2, 2, 68, 642, 3, 2, 2, 2, 70, 656, 3, 2, 2, 2, 72, 658, 3, 2, 2, 2, 74, 661, 3, 2, 2, 2, 76, 668, 3, 2, 2, 2, 78, 681, 3, 2, 2, 2, 80, 721, 3, 2, 2, 2, 82, 786, 3, 2, 2, 2, 84, 819, 3, 2, 2, 2, 86, 823, 3, 2, 2, 2, 88, 841, 3, 2, 2, 2, 90, 852, 3, 2, 2, 2, 92, 863, 3, 2, 2, 2, 94, 868, 3, 2, 2, 2, 96, 870, 3, 2, 2, 2, 98, 872, 3, 2, 2, 2, 100, 879, 3, 2, 2, 2, 102, 887, 3, 2, 2, 2, 104, 898, 3, 2, 2, 2, 106, 900, 3, 2, 2, 2, 108, 919, 3, 2, 2, 2, 110, 921, 3, 2, 2, 2, 112, 950, 3, 2, 2, 2, 114, 952, 3, 2, 2, 2, 116, 956, 3, 2, 2, 2, 118, 969, 3, 2, 2, 2, 120, 124, 5, 4, 3, 2, 121, 124, 5, 6, 4, 2, 122, 124, 5, 8, 5, 2, 123, 120, 3, 2, 2, 2, 123, 121, 3, 2, 2, 2, 123, 122, 3, 2, 2, 2, 123, 124, 3, 2, 2, 2, 124, 125, 3, 2, 2, 2, 125, 126, 7, 2, 2, 3, 126, 3, 3, 2, 2, 2, 127, 133, 7, 5, 2, 2, 128, 133, 5, 44, 23, 2, 129, 130, 5, 12, 7, 2, 130, 131, 7, 5, 2, 2, 131, 133, 3, 2, 2, 2, 132, 127, 3, 2, 2, 2, 132, 128, 3, 2, 2, 2, 132, 129, 3, 2, 2, 2, 133, 5, 3, 2, 2, 2, 134, 137, 7, 5, 2, 2, 135, 137, 5, 10, 6, 2, 136, 134, 3, 2, 2, 2, 136, 135, 3, 2, 2, 2, 137, 138, 3, 2, 2, 2, 138, 136, 3, 2, 2, 2, 138, 139, 3, 2, 2, 2, 139, 7, 3, 2, 2, 2, 140, 144, 5, 88, 45, 2, 141, 143, 7, 5, 2, 2, 142, 141, 3, 2, 2, 2, 143, 146, 3, 2, 2, 2, 144, 142, 3, 2, 2, 2, 144, 145, 3, 2, 2, 2, 145, 9, 3, 2, 2, 2, 146, 144, 3, 2, 2, 2, 147, 150, 5, 44, 23, 2, 148, 150, 5, 12, 7, 2, 149, 147, 3, 2, 2, 2, 149, 148, 3, 2, 2, 2, 150, 11, 3, 2, 2, 2, 151, 152, 7, 15, 2, 2, 152, 153, 5, 64, 33, 2, 153, 154, 7, 48, 2, 2, 154, 158, 5, 14, 8, 2, 155, 157, 5, 18, 10, 2, 156, 155, 3, 2, 2, 2, 157, 160, 3, 2, 2, 2, 158, 156, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 162, 3, 2, 2, 2, 160, 158, 3, 2, 2, 2, 161, 163, 5, 20, 11, 2, 162, 161, 3, 2, 2, 2, 162, 163, 3, 2, 2, 2, 163, 226, 3, 2, 2, 2, 164, 165, 7, 18, 2, 2, 165, 166, 5, 64, 33, 2, 166, 167, 7, 48, 2, 2, 167, 169, 5, 14, 8, 2, 168, 170, 5, 20, 11, 2, 169, 168, 3, 2, 2, 2, 169, 170, 3, 2, 2, 2, 170, 226, 3, 2, 2, 2, 171, 173, 7, 37, 2, 2, 172, 171, 3, 2, 2, 2, 172, 173, 3, 2, 2, 2, 173, 174, 3, 2, 2, 2, 174, 175, 7, 19, 2, 2, 175, 176, 5, 54, 28, 2, 176, 177, 7, 20, 2, 2, 177, 178, 5, 88, 45, 2, 178, 179, 7, 48, 2, 2, 179, 181, 5, 14, 8, 2, 180, 182, 5, 20, 11, 2, 181, 180, 3, 2, 2, 2, 181, 182, 3, 2, 2, 2, 182, 226, 3, 2, 2, 2, 183, 184, 7, 21, 2, 2, 184, 185, 7, 48, 2, 2, 185, 198, 5, 14, 8, 2, 186, 188, 5, 26, 14, 2, 187, 186, 3, 2, 2, 2, 188, 189, 3, 2, 2, 2, 189, 187, 3, 2, 2, 2, 189, 190, 3, 2, 2, 2, 190, 192, 3, 2, 2, 2, 191, 193, 5, 20, 11, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 195, 3, 2, 2, 2, 194, 196, 5, 22, 12, 2, 195, 194, 3, 2, 2, 2, 195, 196, 3, 2, 2, 2, 196, 199, 3, 2, 2, 2, 197, 199, 5, 22, 12, 2, 198, 187, 3, 2, 2, 2, 198, 197, 3, 2, 2, 2, 199, 226, 3, 2, 2, 2, 200, 202, 7, 37, 2, 2, 201, 200, 3, 2, 2, 2, 201, 202, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 204, 7, 24, 2, 2, 204, 209, 5, 24, 13, 2, 205, 206, 7, 47, 2, 2, 206, 208, 5, 24, 13, 2, 207, 205, 3, 2, 2, 2, 208, 211, 3, 2, 2, 2, 209, 207, 3, 2, 2, 2, 209, 210, 3, 2, 2, 2, 210, 212, 3, 2, 2, 2, 211, 209, 3, 2, 2, 2, 212, 213, 7, 48, 2, 2, 213, 214, 5, 14, 8, 2, 214, 226, 3, 2, 2, 2, 215, 217, 5, 16, 9, 2, 216, 215, 3, 2, 2, 2, 217, 220, 3, 2, 2, 2, 218, 216, 3, 2, 2, 2, 218, 219, 3, 2, 2, 2, 219, 223, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 221, 224, 5, 28, 15, 2, 222, 224, 5, 30, 16, 2, 223, 221, 3, 2, 2, 2, 223, 222, 3, 2, 2, 2, 224, 226, 3, 2, 2, 2, 225, 151, 3, 2, 2, 2, 225, 164, 3, 2, 2, 2, 225, 172, 3, 2, 2, 2, 225, 183, 3, 2, 2, 2, 225, 201, 3, 2, 2, 2, 225, 218, 3, 2, 2, 2, 226, 13, 3, 2, 2, 2, 227, 238, 5, 44, 23, 2, 228, 229, 7, 5, 2, 2, 229, 231, 7, 3, 2, 2, 230, 232, 5, 10, 6, 2, 231, 230, 3, 2, 2, 2, 232, 233, 3, 2, 2, 2, 233, 231, 3, 2, 2, 2, 233, 234, 3, 2, 2, 2, 234, 235, 3, 2, 2, 2, 235, 236, 7, 4, 2, 2, 236, 238, 3, 2, 2, 2, 237, 227, 3, 2, 2, 2, 237, 228, 3, 2, 2, 2, 238, 15, 3, 2, 2, 2, 239, 240, 7, 70, 2, 2, 240, 246, 5, 90, 46, 2, 241, 243, 7, 92, 2, 2, 242, 244, 5, 106, 54, 2, 243, 242, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 247, 7, 93, 2, 2, 246, 241, 3, 2, 2, 2, 246, 247, 3, 2, 2, 2, 247, 248, 3, 2, 2, 2, 248, 249, 7, 5, 2, 2, 249, 17, 3, 2, 2, 2, 250, 251, 7, 16, 2, 2, 251, 252, 5, 64, 33, 2, 252, 253, 7, 48, 2, 2, 253, 254, 5, 14, 8, 2, 254, 19, 3, 2, 2, 2, 255, 256, 7, 17, 2, 2, 256, 257, 7, 48, 2, 2, 257, 258, 5, 14, 8, 2, 258, 21, 3, 2, 2, 2, 259, 260, 7, 23, 2, 2, 260, 261, 7, 48, 2, 2, 261, 262, 5, 14, 8, 2, 262, 23, 3, 2, 2, 2, 263, 266, 5, 64, 33, 2, 264, 265, 7, 12, 2, 2, 265, 267, 5, 80, 41, 2, 266, 264, 3, 2, 2, 2, 266, 267, 3, 2, 2, 2, 267, 25, 3, 2, 2, 2, 268, 282, 7, 25, 2, 2, 269, 280, 5, 64, 33, 2, 270, 271, 6, 14, 2, 2, 271, 272, 7, 47, 2, 2, 272, 273, 5, 92, 47, 2, 273, 274, 8, 14, 1, 2, 274, 281, 3, 2, 2, 2, 275, 276, 6, 14, 3, 2, 276, 277, 7, 12, 2, 2, 277, 278, 5, 92, 47, 2, 278, 279, 8, 14, 1, 2, 279, 281, 3, 2, 2, 2, 280, 270, 3, 2, 2, 2, 280, 275, 3, 2, 2, 2, 280, 281, 3, 2, 2, 2, 281, 283, 3, 2, 2, 2, 282, 269, 3, 2, 2, 2, 282, 283, 3, 2, 2, 2, 283, 284, 3, 2, 2, 2, 284, 285, 7, 48, 2, 2, 285, 286, 5, 14, 8, 2, 286, 27, 3, 2, 2, 2, 287, 288, 7, 31, 2, 2, 288, 294, 5, 92, 47, 2, 289, 291, 7, 92, 2, 2, 290, 292, 5, 106, 54, 2, 291, 290, 3, 2, 2, 2, 291, 292, 3, 2, 2, 2, 292, 293, 3, 2, 2, 2, 293, 295, 7, 93, 2, 2, 294, 289, 3, 2, 2, 2, 294, 295, 3, 2, 2, 2, 295, 296, 3, 2, 2, 2, 296, 297, 7, 48, 2, 2, 297, 298, 5, 14, 8, 2, 298, 29, 3, 2, 2, 2, 299, 301, 7, 37, 2, 2, 300, 299, 3, 2, 2, 2, 300, 301, 3, 2, 2, 2, 301, 302, 3, 2, 2, 2, 302, 303, 7, 6, 2, 2, 303, 304, 5, 92, 47, 2, 304, 306, 7, 92, 2, 2, 305, 307, 5, 32, 17, 2, 306, 305, 3, 2, 2, 2, 306, 307, 3, 2, 2, 2, 307, 308, 3, 2, 2, 2, 308, 311, 7, 93, 2, 2, 309, 310, 7, 71, 2, 2, 310, 312, 5, 64, 33, 2, 311, 309, 3, 2, 2, 2, 311, 312, 3, 2, 2, 2, 312, 313, 3, 2, 2, 2, 313, 314, 7, 48, 2, 2, 314, 315, 5, 14, 8, 2, 315, 31, 3, 2, 2, 2, 316, 317, 5, 38, 20, 2, 317, 318, 7, 47, 2, 2, 318, 320, 3, 2, 2, 2, 319, 316, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 331, 3, 2, 2, 2, 321, 324, 5, 34, 18, 2, 322, 323, 7, 47, 2, 2, 323, 325, 5, 38, 20, 2, 324, 322, 3, 2, 2, 2, 324, 325, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 327, 7, 47, 2, 2, 327, 329, 5, 36, 19, 2, 328, 326, 3, 2, 2, 2, 328, 329, 3, 2, 2, 2, 329, 332, 3, 2, 2, 2, 330, 332, 5, 36, 19, 2, 331, 321, 3, 2, 2, 2, 331, 330, 3, 2, 2, 2, 332, 334, 3, 2, 2, 2, 333, 335, 7, 47, 2, 2, 334, 333, 3, 2, 2, 2, 334, 335, 3, 2, 2, 2, 335, 341, 3, 2, 2, 2, 336, 338, 5, 38, 20, 2, 337, 339, 7, 47, 2, 2, 338, 337, 3, 2, 2, 2, 338, 339, 3, 2, 2, 2, 339, 341, 3, 2, 2, 2, 340, 319, 3, 2, 2, 2, 340, 336, 3, 2, 2, 2, 341, 33, 3, 2, 2, 2, 342, 343, 7, 46, 2, 2, 343, 344, 5, 42, 22, 2, 344, 35, 3, 2, 2, 2, 345, 346, 7, 50, 2, 2, 346, 347, 5, 42, 22, 2, 347, 37, 3, 2, 2, 2, 348, 353, 5, 40, 21, 2, 349, 350, 7, 47, 2, 2, 350, 352, 5, 40, 21, 2, 351, 349, 3, 2, 2, 2, 352, 355, 3, 2, 2, 2, 353, 351, 3, 2, 2, 2, 353, 354, 3, 2, 2, 2, 354, 39, 3, 2, 2, 2, 355, 353, 3, 2, 2, 2, 356, 359, 5, 42, 22, 2, 357, 358, 7, 51, 2, 2, 358, 360, 5, 64, 33, 2, 359, 357, 3, 2, 2, 2, 359, 360, 3, 2, 2, 2, 360, 363, 3, 2, 2, 2, 361, 363, 7, 46, 2, 2, 362, 356, 3, 2, 2, 2, 362, 361, 3, 2, 2, 2, 363, 41, 3, 2, 2, 2, 364, 367, 5, 92, 47, 2, 365, 366, 7, 48, 2, 2, 366, 368, 5, 64, 33, 2, 367, 365, 3, 2, 2, 2, 367, 368, 3, 2, 2, 2, 368, 43, 3, 2, 2, 2, 369, 374, 5, 46, 24, 2, 370, 371, 7, 49, 2, 2, 371, 373, 5, 46, 24, 2, 372, 370, 3, 2, 2, 2, 373, 376, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 374, 375, 3, 2, 2, 2, 375, 378, 3, 2, 2, 2, 376, 374, 3, 2, 2, 2, 377, 379, 7, 49, 2, 2, 378, 377, 3, 2, 2, 2, 378, 379, 3, 2, 2, 2, 379, 380, 3, 2, 2, 2, 380, 381, 9, 2, 2, 2, 381, 45, 3, 2, 2, 2, 382, 384, 5, 48, 25, 2, 383, 385, 5, 52, 27, 2, 384, 383, 3, 2, 2, 2, 384, 385, 3, 2, 2, 2, 385, 507, 3, 2, 2, 2, 386, 387, 6, 24, 4, 2, 387, 410, 7, 39, 2, 2, 388, 393, 5, 64, 33, 2, 389, 390, 7, 47, 2, 2, 390, 392, 5, 64, 33, 2, 391, 389, 3, 2, 2, 2, 392, 395, 3, 2, 2, 2, 393, 391, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 397, 3, 2, 2, 2, 395, 393, 3, 2, 2, 2, 396, 398, 7, 47, 2, 2, 397, 396, 3, 2, 2, 2, 397, 398, 3, 2, 2, 2, 398, 411, 3, 2, 2, 2, 399, 400, 7, 56, 2, 2, 400, 403, 5, 64, 33, 2, 401, 402, 7, 47, 2, 2, 402, 404, 5, 64, 33, 2, 403, 401, 3, 2, 2, 2, 404, 405, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 408, 3, 2, 2, 2, 407, 409, 7, 47, 2, 2, 408, 407, 3, 2, 2, 2, 408, 409, 3, 2, 2, 2, 409, 411, 3, 2, 2, 2, 410, 388, 3, 2, 2, 2, 410, 399, 3, 2, 2, 2, 411, 412, 3, 2, 2, 2, 412, 413, 8, 24, 1, 2, 413, 507, 3, 2, 2, 2, 414, 415, 7, 33, 2, 2, 415, 507, 5, 54, 28, 2, 416, 507, 7, 34, 2, 2, 417, 507, 7, 36, 2, 2, 418, 507, 7, 35, 2, 2, 419, 421, 7, 7, 2, 2, 420, 422, 5, 88, 45, 2, 421, 420, 3, 2, 2, 2, 421, 422, 3, 2, 2, 2, 422, 507, 3, 2, 2, 2, 423, 433, 7, 8, 2, 2, 424, 431, 5, 64, 33, 2, 425, 426, 7, 47, 2, 2, 426, 429, 5, 64, 33, 2, 427, 428, 7, 47, 2, 2, 428, 430, 5, 64, 33, 2, 429, 427, 3, 2, 2, 2, 429, 430, 3, 2, 2, 2, 430, 432, 3, 2, 2, 2, 431, 425, 3, 2, 2, 2, 431, 432, 3, 2, 2, 2, 432, 434, 3, 2, 2, 2, 433, 424, 3, 2, 2, 2, 433, 434, 3, 2, 2, 2, 434, 437, 3, 2, 2, 2, 435, 436, 7, 9, 2, 2, 436, 438, 5, 64, 33, 2, 437, 435, 3, 2, 2, 2, 437, 438, 3, 2, 2, 2, 438, 507, 3, 2, 2, 2, 439, 507, 5, 98, 50, 2, 440, 441, 7, 10, 2, 2, 441, 507, 5, 60, 31, 2, 442, 455, 7, 9, 2, 2, 443, 445, 9, 3, 2, 2, 444, 443, 3, 2, 2, 2, 445, 448, 3, 2, 2, 2, 446, 444, 3, 2, 2, 2, 446, 447, 3, 2, 2, 2, 447, 449, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 449, 456, 5, 90, 46, 2, 450, 452, 9, 3, 2, 2, 451, 450, 3, 2, 2, 2, 452, 453, 3, 2, 2, 2, 453, 451, 3, 2, 2, 2, 453, 454, 3, 2, 2, 2, 454, 456, 3, 2, 2, 2, 455, 446, 3, 2, 2, 2, 455, 451, 3, 2, 2, 2, 456, 457, 3, 2, 2, 2, 457, 464, 7, 10, 2, 2, 458, 465, 7, 46, 2, 2, 459, 460, 7, 92, 2, 2, 460, 461, 5, 56, 29, 2, 461, 462, 7, 93, 2, 2, 462, 465, 3, 2, 2, 2, 463, 465, 5, 56, 29, 2, 464, 458, 3, 2, 2, 2, 464, 459, 3, 2, 2, 2, 464, 463, 3, 2, 2, 2, 465, 507, 3, 2, 2, 2, 466, 467, 7, 13, 2, 2, 467, 472, 5, 92, 47, 2, 468, 469, 7, 47, 2, 2, 469, 471, 5, 92, 47, 2, 470, 468, 3, 2, 2, 2, 471, 474, 3, 2, 2, 2, 472, 470, 3, 2, 2, 2, 472, 473, 3, 2, 2, 2, 473, 507, 3, 2, 2, 2, 474, 472, 3, 2, 2, 2, 475, 476, 6, 24, 5, 2, 476, 477, 7, 40, 2, 2, 477, 484, 5, 80, 41, 2, 478, 479, 7, 20, 2, 2, 479, 482, 5, 64, 33, 2, 480, 481, 7, 47, 2, 2, 481, 483, 5, 64, 33, 2, 482, 480, 3, 2, 2, 2, 482, 483, 3, 2, 2, 2, 483, 485, 3, 2, 2, 2, 484, 478, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 487, 8, 24, 1, 2, 487, 507, 3, 2, 2, 2, 488, 489, 7, 14, 2, 2, 489, 492, 5, 64, 33, 2, 490, 491, 7, 47, 2, 2, 491, 493, 5, 64, 33, 2, 492, 490, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 507, 3, 2, 2, 2, 494, 495, 6, 24, 6, 2, 495, 496, 7, 11, 2, 2, 496, 501, 5, 92, 47, 2, 497, 498, 7, 47, 2, 2, 498, 500, 5, 92, 47, 2, 499, 497, 3, 2, 2, 2, 500, 503, 3, 2, 2, 2, 501, 499, 3, 2, 2, 2, 501, 502, 3, 2, 2, 2, 502, 504, 3, 2, 2, 2, 503, 501, 3, 2, 2, 2, 504, 505, 8, 24, 1, 2, 505, 507, 3, 2, 2, 2, 506, 382, 3, 2, 2, 2, 506, 386, 3, 2, 2, 2, 506, 414, 3, 2, 2, 2, 506, 416, 3, 2, 2, 2, 506, 417, 3, 2, 2, 2, 506, 418, 3, 2, 2, 2, 506, 419, 3, 2, 2, 2, 506, 423, 3, 2, 2, 2, 506, 439, 3, 2, 2, 2, 506, 440, 3, 2, 2, 2, 506, 442, 3, 2, 2, 2, 506, 466, 3, 2, 2, 2, 506, 475, 3, 2, 2, 2, 506, 488, 3, 2, 2, 2, 506, 494, 3, 2, 2, 2, 507, 47, 3, 2, 2, 2, 508, 511, 5, 64, 33, 2, 509, 511, 5, 50, 26, 2, 510, 508, 3, 2, 2, 2, 510, 509, 3, 2, 2, 2, 511, 512, 3, 2, 2, 2, 512, 513, 7, 47, 2, 2, 513, 515, 3, 2, 2, 2, 514, 510, 3, 2, 2, 2, 515, 516, 3, 2, 2, 2, 516, 514, 3, 2, 2, 2, 516, 517, 3, 2, 2, 2, 517, 520, 3, 2, 2, 2, 518, 521, 5, 64, 33, 2, 519, 521, 5, 50, 26, 2, 520, 518, 3, 2, 2, 2, 520, 519, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 524, 3, 2, 2, 2, 522, 524, 5, 88, 45, 2, 523, 514, 3, 2, 2, 2, 523, 522, 3, 2, 2, 2, 524, 49, 3, 2, 2, 2, 525, 526, 7, 46, 2, 2, 526, 527, 5, 80, 41, 2, 527, 51, 3, 2, 2, 2, 528, 542, 7, 51, 2, 2, 529, 534, 5, 48, 25, 2, 530, 531, 7, 51, 2, 2, 531, 533, 5, 48, 25, 2, 532, 530, 3, 2, 2, 2, 533, 536, 3, 2, 2, 2, 534, 532, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 539, 3, 2, 2, 2, 536, 534, 3, 2, 2, 2, 537, 538, 7, 51, 2, 2, 538, 540, 5, 98, 50, 2, 539, 537, 3, 2, 2, 2, 539, 540, 3, 2, 2, 2, 540, 543, 3, 2, 2, 2, 541, 543, 5, 98, 50, 2, 542, 529, 3, 2, 2, 2, 542, 541, 3, 2, 2, 2, 543, 559, 3, 2, 2, 2, 544, 545, 6, 27, 7, 2, 545, 546, 7, 48, 2, 2, 546, 549, 5, 64, 33, 2, 547, 548, 7, 51, 2, 2, 548, 550, 5, 88, 45, 2, 549, 547, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 551, 3, 2, 2, 2, 551, 552, 8, 27, 1, 2, 552, 559, 3, 2, 2, 2, 553, 556, 9, 4, 2, 2, 554, 557, 5, 98, 50, 2, 555, 557, 5, 88, 45, 2, 556, 554, 3, 2, 2, 2, 556, 555, 3, 2, 2, 2, 557, 559, 3, 2, 2, 2, 558, 528, 3, 2, 2, 2, 558, 544, 3, 2, 2, 2, 558, 553, 3, 2, 2, 2, 559, 53, 3, 2, 2, 2, 560, 565, 5, 80, 41, 2, 561, 562, 7, 47, 2, 2, 562, 564, 5, 80, 41, 2, 563, 561, 3, 2, 2, 2, 564, 567, 3, 2, 2, 2, 565, 563, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 569, 3, 2, 2, 2, 567, 565, 3, 2, 2, 2, 568, 570, 7, 47, 2, 2, 569, 568, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 55, 3, 2, 2, 2, 571, 576, 5, 58, 30, 2, 572, 573, 7, 47, 2, 2, 573, 575, 5, 58, 30, 2, 574, 572, 3, 2, 2, 2, 575, 578, 3, 2, 2, 2, 576, 574, 3, 2, 2, 2, 576, 577, 3, 2, 2, 2, 577, 580, 3, 2, 2, 2, 578, 576, 3, 2, 2, 2, 579, 581, 7, 47, 2, 2, 580, 579, 3, 2, 2, 2, 580, 581, 3, 2, 2, 2, 581, 57, 3, 2, 2, 2, 582, 585, 5, 92, 47, 2, 583, 584, 7, 12, 2, 2, 584, 586, 5, 92, 47, 2, 585, 583, 3, 2, 2, 2, 585, 586, 3, 2, 2, 2, 586, 59, 3, 2, 2, 2, 587, 592, 5, 62, 32, 2, 588, 589, 7, 47, 2, 2, 589, 591, 5, 62, 32, 2, 590, 588, 3, 2, 2, 2, 591, 594, 3, 2, 2, 2, 592, 590, 3, 2, 2, 2, 592, 593, 3, 2, 2, 2, 593, 61, 3, 2, 2, 2, 594, 592, 3, 2, 2, 2, 595, 598, 5, 90, 46, 2, 596, 597, 7, 12, 2, 2, 597, 599, 5, 92, 47, 2, 598, 596, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 63, 3, 2, 2, 2, 600, 606, 5, 76, 39, 2, 601, 602, 7, 15, 2, 2, 602, 603, 5, 76, 39, 2, 603, 604, 7, 17, 2, 2, 604, 605, 5, 64, 33, 2, 605, 607, 3, 2, 2, 2, 606, 601, 3, 2, 2, 2, 606, 607, 3, 2, 2, 2, 607, 615, 3, 2, 2, 2, 608, 610, 7, 26, 2, 2, 609, 611, 5, 66, 34, 2, 610, 609, 3, 2, 2, 2, 610, 611, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 613, 7, 48, 2, 2, 613, 615, 5, 64, 33, 2, 614, 600, 3, 2, 2, 2, 614, 608, 3, 2, 2, 2, 615, 65, 3, 2, 2, 2, 616, 617, 5, 68, 35, 2, 617, 618, 7, 47, 2, 2, 618, 620, 3, 2, 2, 2, 619, 616, 3, 2, 2, 2, 619, 620, 3, 2, 2, 2, 620, 631, 3, 2, 2, 2, 621, 624, 5, 72, 37, 2, 622, 623, 7, 47, 2, 2, 623, 625, 5, 68, 35, 2, 624, 622, 3, 2, 2, 2, 624, 625, 3, 2, 2, 2, 625, 628, 3, 2, 2, 2, 626, 627, 7, 47, 2, 2, 627, 629, 5, 74, 38, 2, 628, 626, 3, 2, 2, 2, 628, 629, 3, 2, 2, 2, 629, 632, 3, 2, 2, 2, 630, 632, 5, 74, 38, 2, 631, 621, 3, 2, 2, 2, 631, 630, 3, 2, 2, 2, 632, 634, 3, 2, 2, 2, 633, 635, 7, 47, 2, 2, 634, 633, 3, 2, 2, 2, 634, 635, 3, 2, 2, 2, 635, 641, 3, 2, 2, 2, 636, 638, 5, 68, 35, 2, 637, 639, 7, 47, 2, 2, 638, 637, 3, 2, 2, 2, 638, 639, 3, 2, 2, 2, 639, 641, 3, 2, 2, 2, 640, 619, 3, 2, 2, 2, 640, 636, 3, 2, 2, 2, 641, 67, 3, 2, 2, 2, 642, 647, 5, 70, 36, 2, 643, 644, 7, 47, 2, 2, 644, 646, 5, 70, 36, 2, 645, 643, 3, 2, 2, 2, 646, 649, 3, 2, 2, 2, 647, 645, 3, 2, 2, 2, 647, 648, 3, 2, 2, 2, 648, 69, 3, 2, 2, 2, 649, 647, 3, 2, 2, 2, 650, 653, 5, 92, 47, 2, 651, 652, 7, 51, 2, 2, 652, 654, 5, 64, 33, 2, 653, 651, 3, 2, 2, 2, 653, 654, 3, 2, 2, 2, 654, 657, 3, 2, 2, 2, 655, 657, 7, 46, 2, 2, 656, 650, 3, 2, 2, 2, 656, 655, 3, 2, 2, 2, 657, 71, 3, 2, 2, 2, 658, 659, 7, 46, 2, 2, 659, 660, 5, 92, 47, 2, 660, 73, 3, 2, 2, 2, 661, 662, 7, 50, 2, 2, 662, 663, 5, 92, 47, 2, 663, 75, 3, 2, 2, 2, 664, 665, 8, 39, 1, 2, 665, 669, 5, 78, 40, 2, 666, 667, 7, 29, 2, 2, 667, 669, 5, 76, 39, 5, 668, 664, 3, 2, 2, 2, 668, 666, 3, 2, 2, 2, 669, 678, 3, 2, 2, 2, 670, 671, 12, 4, 2, 2, 671, 672, 7, 28, 2, 2, 672, 677, 5, 76, 39, 5, 673, 674, 12, 3, 2, 2, 674, 675, 7, 27, 2, 2, 675, 677, 5, 76, 39, 4, 676, 670, 3, 2, 2, 2, 676, 673, 3, 2, 2, 2, 677, 680, 3, 2, 2, 2, 678, 676, 3, 2, 2, 2, 678, 679, 3, 2, 2, 2, 679, 77, 3, 2, 2, 2, 680, 678, 3, 2, 2, 2, 681, 682, 8, 40, 1, 2, 682, 683, 5, 80, 41, 2, 683, 705, 3, 2, 2, 2, 684, 700, 12, 4, 2, 2, 685, 701, 7, 63, 2, 2, 686, 701, 7, 64, 2, 2, 687, 701, 7, 65, 2, 2, 688, 701, 7, 66, 2, 2, 689, 701, 7, 67, 2, 2, 690, 701, 7, 68, 2, 2, 691, 701, 7, 69, 2, 2, 692, 694, 7, 29, 2, 2, 693, 692, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 695, 3, 2, 2, 2, 695, 701, 7, 20, 2, 2, 696, 698, 7, 30, 2, 2, 697, 699, 7, 29, 2, 2, 698, 697, 3, 2, 2, 2, 698, 699, 3, 2, 2, 2, 699, 701, 3, 2, 2, 2, 700, 685, 3, 2, 2, 2, 700, 686, 3, 2, 2, 2, 700, 687, 3, 2, 2, 2, 700, 688, 3, 2, 2, 2, 700, 689, 3, 2, 2, 2, 700, 690, 3, 2, 2, 2, 700, 691, 3, 2, 2, 2, 700, 693, 3, 2, 2, 2, 700, 696, 3, 2, 2, 2, 701, 702, 3, 2, 2, 2, 702, 704, 5, 78, 40, 5, 703, 684, 3, 2, 2, 2, 704, 707, 3, 2, 2, 2, 705, 703, 3, 2, 2, 2, 705, 706, 3, 2, 2, 2, 706, 79, 3, 2, 2, 2, 707, 705, 3, 2, 2, 2, 708, 710, 8, 41, 1, 2, 709, 711, 7, 38, 2, 2, 710, 709, 3, 2, 2, 2, 710, 711, 3, 2, 2, 2, 711, 712, 3, 2, 2, 2, 712, 716, 5, 82, 42, 2, 713, 715, 5, 102, 52, 2, 714, 713, 3, 2, 2, 2, 715, 718, 3, 2, 2, 2, 716, 714, 3, 2, 2, 2, 716, 717, 3, 2, 2, 2, 717, 722, 3, 2, 2, 2, 718, 716, 3, 2, 2, 2, 719, 720, 9, 5, 2, 2, 720, 722, 5, 80, 41, 9, 721, 708, 3, 2, 2, 2, 721, 719, 3, 2, 2, 2, 722, 746, 3, 2, 2, 2, 723, 724, 12, 10, 2, 2, 724, 725, 7, 50, 2, 2, 725, 745, 5, 80, 41, 10, 726, 727, 12, 8, 2, 2, 727, 728, 9, 6, 2, 2, 728, 745, 5, 80, 41, 9, 729, 730, 12, 7, 2, 2, 730, 731, 9, 7, 2, 2, 731, 745, 5, 80, 41, 8, 732, 733, 12, 6, 2, 2, 733, 734, 9, 8, 2, 2, 734, 745, 5, 80, 41, 7, 735, 736, 12, 5, 2, 2, 736, 737, 7, 54, 2, 2, 737, 745, 5, 80, 41, 6, 738, 739, 12, 4, 2, 2, 739, 740, 7, 53, 2, 2, 740, 745, 5, 80, 41, 5, 741, 742, 12, 3, 2, 2, 742, 743, 7, 52, 2, 2, 743, 745, 5, 80, 41, 4, 744, 723, 3, 2, 2, 2, 744, 726, 3, 2, 2, 2, 744, 729, 3, 2, 2, 2, 744, 732, 3, 2, 2, 2, 744, 735, 3, 2, 2, 2, 744, 738, 3, 2, 2, 2, 744, 741, 3, 2, 2, 2, 745, 748, 3, 2, 2, 2, 746, 744, 3, 2, 2, 2, 746, 747, 3, 2, 2, 2, 747, 81, 3, 2, 2, 2, 748, 746, 3, 2, 2, 2, 749, 752, 7, 92, 2, 2, 750, 753, 5, 98, 50, 2, 751, 753, 5, 86, 44, 2, 752, 750, 3, 2, 2, 2, 752, 751, 3, 2, 2, 2, 752, 753, 3, 2, 2, 2, 753, 754, 3, 2, 2, 2, 754, 787, 7, 93, 2, 2, 755, 757, 7, 96, 2, 2, 756, 758, 5, 86, 44, 2, 757, 756, 3, 2, 2, 2, 757, 758, 3, 2, 2, 2, 758, 759, 3, 2, 2, 2, 759, 787, 7, 97, 2, 2, 760, 762, 7, 94, 2, 2, 761, 763, 5, 84, 43, 2, 762, 761, 3, 2, 2, 2, 762, 763, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 787, 7, 95, 2, 2, 765, 766, 7, 45, 2, 2, 766, 768, 5, 88, 45, 2, 767, 769, 7, 47, 2, 2, 768, 767, 3, 2, 2, 2, 768, 769, 3, 2, 2, 2, 769, 770, 3, 2, 2, 2, 770, 771, 7, 45, 2, 2, 771, 787, 3, 2, 2, 2, 772, 787, 7, 44, 2, 2, 773, 787, 5, 92, 47, 2, 774, 787, 7, 39, 2, 2, 775, 787, 7, 40, 2, 2, 776, 778, 7, 58, 2, 2, 777, 776, 3, 2, 2, 2, 777, 778, 3, 2, 2, 2, 778, 779, 3, 2, 2, 2, 779, 787, 5, 94, 48, 2, 780, 787, 7, 22, 2, 2, 781, 783, 7, 85, 2, 2, 782, 781, 3, 2, 2, 2, 783, 784, 3, 2, 2, 2, 784, 782, 3, 2, 2, 2, 784, 785, 3, 2, 2, 2, 785, 787, 3, 2, 2, 2, 786, 749, 3, 2, 2, 2, 786, 755, 3, 2, 2, 2, 786, 760, 3, 2, 2, 2, 786, 765, 3, 2, 2, 2, 786, 772, 3, 2, 2, 2, 786, 773, 3, 2, 2, 2, 786, 774, 3, 2, 2, 2, 786, 775, 3, 2, 2, 2, 786, 777, 3, 2, 2, 2, 786, 780, 3, 2, 2, 2, 786, 782, 3, 2, 2, 2, 787, 83, 3, 2, 2, 2, 788, 789, 5, 64, 33, 2, 789, 790, 7, 48, 2, 2, 790, 791, 5, 64, 33, 2, 791, 795, 3, 2, 2, 2, 792, 793, 7, 50, 2, 2, 793, 795, 5, 80, 41, 2, 794, 788, 3, 2, 2, 2, 794, 792, 3, 2, 2, 2, 795, 807, 3, 2, 2, 2, 796, 803, 7, 47, 2, 2, 797, 798, 5, 64, 33, 2, 798, 799, 7, 48, 2, 2, 799, 800, 5, 64, 33, 2, 800, 804, 3, 2, 2, 2, 801, 802, 7, 50, 2, 2, 802, 804, 5, 80, 41, 2, 803, 797, 3, 2, 2, 2, 803, 801, 3, 2, 2, 2, 804, 806, 3, 2, 2, 2, 805, 796, 3, 2, 2, 2, 806, 809, 3, 2, 2, 2, 807, 805, 3, 2, 2, 2, 807, 808, 3, 2, 2, 2, 808, 811, 3, 2, 2, 2, 809, 807, 3, 2, 2, 2, 810, 812, 7, 47, 2, 2, 811, 810, 3, 2, 2, 2, 811, 812, 3, 2, 2, 2, 812, 820, 3, 2, 2, 2, 813, 814, 5, 64, 33, 2, 814, 815, 7, 48, 2, 2, 815, 816, 5, 64, 33, 2, 816, 817, 5, 116, 59, 2, 817, 820, 3, 2, 2, 2, 818, 820, 5, 86, 44, 2, 819, 794, 3, 2, 2, 2, 819, 813, 3, 2, 2, 2, 819, 818, 3, 2, 2, 2, 820, 85, 3, 2, 2, 2, 821, 824, 5, 64, 33, 2, 822, 824, 5, 50, 26, 2, 823, 821, 3, 2, 2, 2, 823, 822, 3, 2, 2, 2, 824, 839, 3, 2, 2, 2, 825, 840, 5, 116, 59, 2, 826, 829, 7, 47, 2, 2, 827, 830, 5, 64, 33, 2, 828, 830, 5, 50, 26, 2, 829, 827, 3, 2, 2, 2, 829, 828, 3, 2, 2, 2, 830, 832, 3, 2, 2, 2, 831, 826, 3, 2, 2, 2, 832, 835, 3, 2, 2, 2, 833, 831, 3, 2, 2, 2, 833, 834, 3, 2, 2, 2, 834, 837, 3, 2, 2, 2, 835, 833, 3, 2, 2, 2, 836, 838, 7, 47, 2, 2, 837, 836, 3, 2, 2, 2, 837, 838, 3, 2, 2, 2, 838, 840, 3, 2, 2, 2, 839, 825, 3, 2, 2, 2, 839, 833, 3, 2, 2, 2, 840, 87, 3, 2, 2, 2, 841, 846, 5, 64, 33, 2, 842, 843, 7, 47, 2, 2, 843, 845, 5, 64, 33, 2, 844, 842, 3, 2, 2, 2, 845, 848, 3, 2, 2, 2, 846, 844, 3, 2, 2, 2, 846, 847, 3, 2, 2, 2, 847, 850, 3, 2, 2, 2, 848, 846, 3, 2, 2, 2, 849, 851, 7, 47, 2, 2, 850, 849, 3, 2, 2, 2, 850, 851, 3, 2, 2, 2, 851, 89, 3, 2, 2, 2, 852, 853, 8, 46, 1, 2, 853, 854, 5, 92, 47, 2, 854, 860, 3, 2, 2, 2, 855, 856, 12, 4, 2, 2, 856, 857, 7, 43, 2, 2, 857, 859, 5, 92, 47, 2, 858, 855, 3, 2, 2, 2, 859, 862, 3, 2, 2, 2, 860, 858, 3, 2, 2, 2, 860, 861, 3, 2, 2, 2, 861, 91, 3, 2, 2, 2, 862, 860, 3, 2, 2, 2, 863, 864, 9, 9, 2, 2, 864, 93, 3, 2, 2, 2, 865, 869, 5, 96, 49, 2, 866, 869, 7, 90, 2, 2, 867, 869, 7, 91, 2, 2, 868, 865, 3, 2, 2, 2, 868, 866, 3, 2, 2, 2, 868, 867, 3, 2, 2, 2, 869, 95, 3, 2, 2, 2, 870, 871, 9, 10, 2, 2, 871, 97, 3, 2, 2, 2, 872, 874, 7, 32, 2, 2, 873, 875, 5, 100, 51, 2, 874, 873, 3, 2, 2, 2, 874, 875, 3, 2, 2, 2, 875, 99, 3, 2, 2, 2, 876, 877, 7, 9, 2, 2, 877, 880, 5, 64, 33, 2, 878, 880, 5, 88, 45, 2, 879, 876, 3, 2, 2, 2, 879, 878, 3, 2, 2, 2, 880, 101, 3, 2, 2, 2, 881, 882, 7, 43, 2, 2, 882, 884, 5, 92, 47, 2, 883, 885, 5, 104, 53, 2, 884, 883, 3, 2, 2, 2, 884, 885, 3, 2, 2, 2, 885, 888, 3, 2, 2, 2, 886, 888, 5, 104, 53, 2, 887, 881, 3, 2, 2, 2, 887, 886, 3, 2, 2, 2, 888, 103, 3, 2, 2, 2, 889, 891, 7, 92, 2, 2, 890, 892, 5, 106, 54, 2, 891, 890, 3, 2, 2, 2, 891, 892, 3, 2, 2, 2, 892, 893, 3, 2, 2, 2, 893, 899, 7, 93, 2, 2, 894, 895, 7, 96, 2, 2, 895, 896, 5, 110, 56, 2, 896, 897, 7, 97, 2, 2, 897, 899, 3, 2, 2, 2, 898, 889, 3, 2, 2, 2, 898, 894, 3, 2, 2, 2, 899, 105, 3, 2, 2, 2, 900, 905, 5, 108, 55, 2, 901, 902, 7, 47, 2, 2, 902, 904, 5, 108, 55, 2, 903, 901, 3, 2, 2, 2, 904, 907, 3, 2, 2, 2, 905, 903, 3, 2, 2, 2, 905, 906, 3, 2, 2, 2, 906, 909, 3, 2, 2, 2, 907, 905, 3, 2, 2, 2, 908, 910, 7, 47, 2, 2, 909, 908, 3, 2, 2, 2, 909, 910, 3, 2, 2, 2, 910, 107, 3, 2, 2, 2, 911, 915, 5, 64, 33, 2, 912, 916, 5, 116, 59, 2, 913, 914, 7, 51, 2, 2, 914, 916, 5, 64, 33, 2, 915, 912, 3, 2, 2, 2, 915, 913, 3, 2, 2, 2, 915, 916, 3, 2, 2, 2, 916, 920, 3, 2, 2, 2, 917, 918, 9, 11, 2, 2, 918, 920, 5, 64, 33, 2, 919, 911, 3, 2, 2, 2, 919, 917, 3, 2, 2, 2, 920, 109, 3, 2, 2, 2, 921, 926, 5, 112, 57, 2, 922, 923, 7, 47, 2, 2, 923, 925, 5, 112, 57, 2, 924, 922, 3, 2, 2, 2, 925, 928, 3, 2, 2, 2, 926, 924, 3, 2, 2, 2, 926, 927, 3, 2, 2, 2, 927, 930, 3, 2, 2, 2, 928, 926, 3, 2, 2, 2, 929, 931, 7, 47, 2, 2, 930, 929, 3, 2, 2, 2, 930, 931, 3, 2, 2, 2, 931, 111, 3, 2, 2, 2, 932, 951, 7, 44, 2, 2, 933, 941, 5, 64, 33, 2, 934, 936, 7, 48, 2, 2, 935, 937, 5, 64, 33, 2, 936, 935, 3, 2, 2, 2, 936, 937, 3, 2, 2, 2, 937, 939, 3, 2, 2, 2, 938, 940, 5, 114, 58, 2, 939, 938, 3, 2, 2, 2, 939, 940, 3, 2, 2, 2, 940, 942, 3, 2, 2, 2, 941, 934, 3, 2, 2, 2, 941, 942, 3, 2, 2, 2, 942, 951, 3, 2, 2, 2, 943, 945, 7, 48, 2, 2, 944, 946, 5, 64, 33, 2, 945, 944, 3, 2, 2, 2, 945, 946, 3, 2, 2, 2, 946, 948, 3, 2, 2, 2, 947, 949, 5, 114, 58, 2, 948, 947, 3, 2, 2, 2, 948, 949, 3, 2, 2, 2, 949, 951, 3, 2, 2, 2, 950, 932, 3, 2, 2, 2, 950, 933, 3, 2, 2, 2, 950, 943, 3, 2, 2, 2, 951, 113, 3, 2, 2, 2, 952, 954, 7, 48, 2, 2, 953, 955, 5, 64, 33, 2, 954, 953, 3, 2, 2, 2, 954, 955, 3, 2, 2, 2, 955, 115, 3, 2, 2, 2, 956, 957, 7, 19, 2, 2, 957, 958, 5, 54, 28, 2, 958, 959, 7, 20, 2, 2, 959, 961, 5, 76, 39, 2, 960, 962, 5, 118, 60, 2, 961, 960, 3, 2, 2, 2, 961, 962, 3, 2, 2, 2, 962, 117, 3, 2, 2, 2, 963, 970, 5, 116, 59, 2, 964, 965, 7, 15, 2, 2, 965, 967, 5, 64, 33, 2, 966, 968, 5, 118, 60, 2, 967, 966, 3, 2, 2, 2, 967, 968, 3, 2, 2, 2, 968, 970, 3, 2, 2, 2, 969, 963, 3, 2, 2, 2, 969, 964, 3, 2, 2, 2, 970, 119, 3, 2, 2, 2, 153, 123, 132, 136, 138, 144, 149, 158, 162, 169, 172, 181, 189, 192, 195, 198, 201, 209, 218, 223, 225, 233, 237, 243, 246, 266, 280, 282, 291, 294, 300, 306, 311, 319, 324, 328, 331, 334, 338, 340, 353, 359, 362, 367, 374, 378, 384, 393, 397, 405, 408, 410, 421, 429, 431, 433, 437, 446, 453, 455, 464, 472, 482, 484, 492, 501, 506, 510, 516, 520, 523, 534, 539, 542, 549, 556, 558, 565, 569, 576, 580, 585, 592, 598, 606, 610, 614, 619, 624, 628, 631, 634, 638, 640, 647, 653, 656, 668, 676, 678, 693, 698, 700, 705, 710, 716, 721, 744, 746, 752, 757, 762, 768, 777, 784, 786, 794, 803, 807, 811, 819, 823, 829, 833, 837, 839, 846, 850, 860, 868, 874, 879, 884, 887, 891, 898, 905, 909, 915, 919, 926, 930, 936, 939, 941, 945, 948, 950, 954, 961, 967, 969] \ No newline at end of file +[4, 1, 100, 970, 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, 1, 0, 1, 0, 1, 0, 3, 0, 122, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 131, 8, 1, 1, 2, 1, 2, 4, 2, 135, 8, 2, 11, 2, 12, 2, 136, 1, 3, 1, 3, 5, 3, 141, 8, 3, 10, 3, 12, 3, 144, 9, 3, 1, 4, 1, 4, 3, 4, 148, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 155, 8, 5, 10, 5, 12, 5, 158, 9, 5, 1, 5, 3, 5, 161, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 168, 8, 5, 1, 5, 3, 5, 171, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 180, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 186, 8, 5, 11, 5, 12, 5, 187, 1, 5, 3, 5, 191, 8, 5, 1, 5, 3, 5, 194, 8, 5, 1, 5, 3, 5, 197, 8, 5, 1, 5, 3, 5, 200, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 206, 8, 5, 10, 5, 12, 5, 209, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 215, 8, 5, 10, 5, 12, 5, 218, 9, 5, 1, 5, 1, 5, 3, 5, 222, 8, 5, 3, 5, 224, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 4, 6, 230, 8, 6, 11, 6, 12, 6, 231, 1, 6, 1, 6, 3, 6, 236, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 242, 8, 7, 1, 7, 3, 7, 245, 8, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 3, 11, 265, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 279, 8, 12, 3, 12, 281, 8, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 290, 8, 13, 1, 13, 3, 13, 293, 8, 13, 1, 13, 1, 13, 1, 13, 1, 14, 3, 14, 299, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 305, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 310, 8, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 318, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 323, 8, 15, 1, 15, 1, 15, 3, 15, 327, 8, 15, 1, 15, 3, 15, 330, 8, 15, 1, 15, 3, 15, 333, 8, 15, 1, 15, 1, 15, 3, 15, 337, 8, 15, 3, 15, 339, 8, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 5, 18, 350, 8, 18, 10, 18, 12, 18, 353, 9, 18, 1, 19, 1, 19, 1, 19, 3, 19, 358, 8, 19, 1, 19, 3, 19, 361, 8, 19, 1, 20, 1, 20, 1, 20, 3, 20, 366, 8, 20, 1, 21, 1, 21, 1, 21, 5, 21, 371, 8, 21, 10, 21, 12, 21, 374, 9, 21, 1, 21, 3, 21, 377, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 3, 22, 383, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 390, 8, 22, 10, 22, 12, 22, 393, 9, 22, 1, 22, 3, 22, 396, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 4, 22, 402, 8, 22, 11, 22, 12, 22, 403, 1, 22, 3, 22, 407, 8, 22, 3, 22, 409, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 420, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 428, 8, 22, 3, 22, 430, 8, 22, 3, 22, 432, 8, 22, 1, 22, 1, 22, 3, 22, 436, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 443, 8, 22, 10, 22, 12, 22, 446, 9, 22, 1, 22, 1, 22, 4, 22, 450, 8, 22, 11, 22, 12, 22, 451, 3, 22, 454, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 463, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 469, 8, 22, 10, 22, 12, 22, 472, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 481, 8, 22, 3, 22, 483, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 491, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 498, 8, 22, 10, 22, 12, 22, 501, 9, 22, 1, 22, 1, 22, 3, 22, 505, 8, 22, 1, 23, 1, 23, 3, 23, 509, 8, 23, 1, 23, 1, 23, 4, 23, 513, 8, 23, 11, 23, 12, 23, 514, 1, 23, 1, 23, 3, 23, 519, 8, 23, 1, 23, 3, 23, 522, 8, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 531, 8, 25, 10, 25, 12, 25, 534, 9, 25, 1, 25, 1, 25, 3, 25, 538, 8, 25, 1, 25, 3, 25, 541, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 548, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 555, 8, 25, 3, 25, 557, 8, 25, 1, 26, 1, 26, 1, 26, 5, 26, 562, 8, 26, 10, 26, 12, 26, 565, 9, 26, 1, 26, 3, 26, 568, 8, 26, 1, 27, 1, 27, 1, 27, 5, 27, 573, 8, 27, 10, 27, 12, 27, 576, 9, 27, 1, 27, 3, 27, 579, 8, 27, 1, 28, 1, 28, 1, 28, 3, 28, 584, 8, 28, 1, 29, 1, 29, 1, 29, 5, 29, 589, 8, 29, 10, 29, 12, 29, 592, 9, 29, 1, 30, 1, 30, 1, 30, 3, 30, 597, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 605, 8, 31, 1, 31, 1, 31, 3, 31, 609, 8, 31, 1, 31, 1, 31, 3, 31, 613, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 618, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 623, 8, 32, 1, 32, 1, 32, 3, 32, 627, 8, 32, 1, 32, 3, 32, 630, 8, 32, 1, 32, 3, 32, 633, 8, 32, 1, 32, 1, 32, 3, 32, 637, 8, 32, 3, 32, 639, 8, 32, 1, 33, 1, 33, 1, 33, 5, 33, 644, 8, 33, 10, 33, 12, 33, 647, 9, 33, 1, 34, 1, 34, 1, 34, 3, 34, 652, 8, 34, 1, 34, 3, 34, 655, 8, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 667, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 675, 8, 37, 10, 37, 12, 37, 678, 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 692, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 697, 8, 38, 3, 38, 699, 8, 38, 1, 38, 5, 38, 702, 8, 38, 10, 38, 12, 38, 705, 9, 38, 1, 39, 1, 39, 3, 39, 709, 8, 39, 1, 39, 1, 39, 5, 39, 713, 8, 39, 10, 39, 12, 39, 716, 9, 39, 1, 39, 1, 39, 3, 39, 720, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 743, 8, 39, 10, 39, 12, 39, 746, 9, 39, 1, 40, 1, 40, 1, 40, 3, 40, 751, 8, 40, 1, 40, 1, 40, 1, 40, 3, 40, 756, 8, 40, 1, 40, 1, 40, 1, 40, 3, 40, 761, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 767, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 776, 8, 40, 1, 40, 1, 40, 1, 40, 4, 40, 781, 8, 40, 11, 40, 12, 40, 782, 3, 40, 785, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 793, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 802, 8, 41, 5, 41, 804, 8, 41, 10, 41, 12, 41, 807, 9, 41, 1, 41, 3, 41, 810, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 818, 8, 41, 1, 42, 1, 42, 3, 42, 822, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 828, 8, 42, 5, 42, 830, 8, 42, 10, 42, 12, 42, 833, 9, 42, 1, 42, 3, 42, 836, 8, 42, 3, 42, 838, 8, 42, 1, 43, 1, 43, 1, 43, 5, 43, 843, 8, 43, 10, 43, 12, 43, 846, 9, 43, 1, 43, 3, 43, 849, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 857, 8, 44, 10, 44, 12, 44, 860, 9, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 867, 8, 46, 1, 47, 1, 47, 1, 48, 1, 48, 3, 48, 873, 8, 48, 1, 49, 1, 49, 1, 49, 3, 49, 878, 8, 49, 1, 50, 1, 50, 1, 50, 3, 50, 883, 8, 50, 1, 50, 3, 50, 886, 8, 50, 1, 51, 1, 51, 3, 51, 890, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 897, 8, 51, 1, 52, 1, 52, 1, 52, 5, 52, 902, 8, 52, 10, 52, 12, 52, 905, 9, 52, 1, 52, 3, 52, 908, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 914, 8, 53, 1, 53, 1, 53, 3, 53, 918, 8, 53, 1, 54, 1, 54, 1, 54, 5, 54, 923, 8, 54, 10, 54, 12, 54, 926, 9, 54, 1, 54, 3, 54, 929, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 935, 8, 55, 1, 55, 3, 55, 938, 8, 55, 3, 55, 940, 8, 55, 1, 55, 1, 55, 3, 55, 944, 8, 55, 1, 55, 3, 55, 947, 8, 55, 3, 55, 949, 8, 55, 1, 56, 1, 56, 3, 56, 953, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 960, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 966, 8, 58, 3, 58, 968, 8, 58, 1, 58, 0, 4, 74, 76, 78, 88, 59, 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, 0, 10, 1, 1, 3, 3, 1, 0, 41, 42, 1, 0, 70, 82, 2, 0, 55, 56, 60, 60, 3, 0, 44, 44, 57, 59, 68, 68, 1, 0, 55, 56, 1, 0, 53, 54, 2, 0, 39, 40, 96, 96, 1, 0, 84, 87, 2, 0, 44, 44, 48, 48, 1111, 0, 121, 1, 0, 0, 0, 2, 130, 1, 0, 0, 0, 4, 134, 1, 0, 0, 0, 6, 138, 1, 0, 0, 0, 8, 147, 1, 0, 0, 0, 10, 223, 1, 0, 0, 0, 12, 235, 1, 0, 0, 0, 14, 237, 1, 0, 0, 0, 16, 248, 1, 0, 0, 0, 18, 253, 1, 0, 0, 0, 20, 257, 1, 0, 0, 0, 22, 261, 1, 0, 0, 0, 24, 266, 1, 0, 0, 0, 26, 285, 1, 0, 0, 0, 28, 298, 1, 0, 0, 0, 30, 338, 1, 0, 0, 0, 32, 340, 1, 0, 0, 0, 34, 343, 1, 0, 0, 0, 36, 346, 1, 0, 0, 0, 38, 360, 1, 0, 0, 0, 40, 362, 1, 0, 0, 0, 42, 367, 1, 0, 0, 0, 44, 504, 1, 0, 0, 0, 46, 521, 1, 0, 0, 0, 48, 523, 1, 0, 0, 0, 50, 556, 1, 0, 0, 0, 52, 558, 1, 0, 0, 0, 54, 569, 1, 0, 0, 0, 56, 580, 1, 0, 0, 0, 58, 585, 1, 0, 0, 0, 60, 593, 1, 0, 0, 0, 62, 612, 1, 0, 0, 0, 64, 638, 1, 0, 0, 0, 66, 640, 1, 0, 0, 0, 68, 654, 1, 0, 0, 0, 70, 656, 1, 0, 0, 0, 72, 659, 1, 0, 0, 0, 74, 666, 1, 0, 0, 0, 76, 679, 1, 0, 0, 0, 78, 719, 1, 0, 0, 0, 80, 784, 1, 0, 0, 0, 82, 817, 1, 0, 0, 0, 84, 821, 1, 0, 0, 0, 86, 839, 1, 0, 0, 0, 88, 850, 1, 0, 0, 0, 90, 861, 1, 0, 0, 0, 92, 866, 1, 0, 0, 0, 94, 868, 1, 0, 0, 0, 96, 870, 1, 0, 0, 0, 98, 877, 1, 0, 0, 0, 100, 885, 1, 0, 0, 0, 102, 896, 1, 0, 0, 0, 104, 898, 1, 0, 0, 0, 106, 917, 1, 0, 0, 0, 108, 919, 1, 0, 0, 0, 110, 948, 1, 0, 0, 0, 112, 950, 1, 0, 0, 0, 114, 954, 1, 0, 0, 0, 116, 967, 1, 0, 0, 0, 118, 122, 3, 2, 1, 0, 119, 122, 3, 4, 2, 0, 120, 122, 3, 6, 3, 0, 121, 118, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 121, 120, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 5, 0, 0, 1, 124, 1, 1, 0, 0, 0, 125, 131, 5, 3, 0, 0, 126, 131, 3, 42, 21, 0, 127, 128, 3, 10, 5, 0, 128, 129, 5, 3, 0, 0, 129, 131, 1, 0, 0, 0, 130, 125, 1, 0, 0, 0, 130, 126, 1, 0, 0, 0, 130, 127, 1, 0, 0, 0, 131, 3, 1, 0, 0, 0, 132, 135, 5, 3, 0, 0, 133, 135, 3, 8, 4, 0, 134, 132, 1, 0, 0, 0, 134, 133, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 5, 1, 0, 0, 0, 138, 142, 3, 86, 43, 0, 139, 141, 5, 3, 0, 0, 140, 139, 1, 0, 0, 0, 141, 144, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, 142, 143, 1, 0, 0, 0, 143, 7, 1, 0, 0, 0, 144, 142, 1, 0, 0, 0, 145, 148, 3, 42, 21, 0, 146, 148, 3, 10, 5, 0, 147, 145, 1, 0, 0, 0, 147, 146, 1, 0, 0, 0, 148, 9, 1, 0, 0, 0, 149, 150, 5, 13, 0, 0, 150, 151, 3, 62, 31, 0, 151, 152, 5, 46, 0, 0, 152, 156, 3, 12, 6, 0, 153, 155, 3, 16, 8, 0, 154, 153, 1, 0, 0, 0, 155, 158, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 160, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 159, 161, 3, 18, 9, 0, 160, 159, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 224, 1, 0, 0, 0, 162, 163, 5, 16, 0, 0, 163, 164, 3, 62, 31, 0, 164, 165, 5, 46, 0, 0, 165, 167, 3, 12, 6, 0, 166, 168, 3, 18, 9, 0, 167, 166, 1, 0, 0, 0, 167, 168, 1, 0, 0, 0, 168, 224, 1, 0, 0, 0, 169, 171, 5, 35, 0, 0, 170, 169, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 173, 5, 17, 0, 0, 173, 174, 3, 52, 26, 0, 174, 175, 5, 18, 0, 0, 175, 176, 3, 86, 43, 0, 176, 177, 5, 46, 0, 0, 177, 179, 3, 12, 6, 0, 178, 180, 3, 18, 9, 0, 179, 178, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 224, 1, 0, 0, 0, 181, 182, 5, 19, 0, 0, 182, 183, 5, 46, 0, 0, 183, 196, 3, 12, 6, 0, 184, 186, 3, 24, 12, 0, 185, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 190, 1, 0, 0, 0, 189, 191, 3, 18, 9, 0, 190, 189, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 193, 1, 0, 0, 0, 192, 194, 3, 20, 10, 0, 193, 192, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 197, 1, 0, 0, 0, 195, 197, 3, 20, 10, 0, 196, 185, 1, 0, 0, 0, 196, 195, 1, 0, 0, 0, 197, 224, 1, 0, 0, 0, 198, 200, 5, 35, 0, 0, 199, 198, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 202, 5, 22, 0, 0, 202, 207, 3, 22, 11, 0, 203, 204, 5, 45, 0, 0, 204, 206, 3, 22, 11, 0, 205, 203, 1, 0, 0, 0, 206, 209, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 207, 208, 1, 0, 0, 0, 208, 210, 1, 0, 0, 0, 209, 207, 1, 0, 0, 0, 210, 211, 5, 46, 0, 0, 211, 212, 3, 12, 6, 0, 212, 224, 1, 0, 0, 0, 213, 215, 3, 14, 7, 0, 214, 213, 1, 0, 0, 0, 215, 218, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 221, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 219, 222, 3, 26, 13, 0, 220, 222, 3, 28, 14, 0, 221, 219, 1, 0, 0, 0, 221, 220, 1, 0, 0, 0, 222, 224, 1, 0, 0, 0, 223, 149, 1, 0, 0, 0, 223, 162, 1, 0, 0, 0, 223, 170, 1, 0, 0, 0, 223, 181, 1, 0, 0, 0, 223, 199, 1, 0, 0, 0, 223, 216, 1, 0, 0, 0, 224, 11, 1, 0, 0, 0, 225, 236, 3, 42, 21, 0, 226, 227, 5, 3, 0, 0, 227, 229, 5, 1, 0, 0, 228, 230, 3, 8, 4, 0, 229, 228, 1, 0, 0, 0, 230, 231, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 234, 5, 2, 0, 0, 234, 236, 1, 0, 0, 0, 235, 225, 1, 0, 0, 0, 235, 226, 1, 0, 0, 0, 236, 13, 1, 0, 0, 0, 237, 238, 5, 68, 0, 0, 238, 244, 3, 88, 44, 0, 239, 241, 5, 90, 0, 0, 240, 242, 3, 104, 52, 0, 241, 240, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 245, 5, 91, 0, 0, 244, 239, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 247, 5, 3, 0, 0, 247, 15, 1, 0, 0, 0, 248, 249, 5, 14, 0, 0, 249, 250, 3, 62, 31, 0, 250, 251, 5, 46, 0, 0, 251, 252, 3, 12, 6, 0, 252, 17, 1, 0, 0, 0, 253, 254, 5, 15, 0, 0, 254, 255, 5, 46, 0, 0, 255, 256, 3, 12, 6, 0, 256, 19, 1, 0, 0, 0, 257, 258, 5, 21, 0, 0, 258, 259, 5, 46, 0, 0, 259, 260, 3, 12, 6, 0, 260, 21, 1, 0, 0, 0, 261, 264, 3, 62, 31, 0, 262, 263, 5, 10, 0, 0, 263, 265, 3, 78, 39, 0, 264, 262, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 23, 1, 0, 0, 0, 266, 280, 5, 23, 0, 0, 267, 278, 3, 62, 31, 0, 268, 269, 4, 12, 0, 0, 269, 270, 5, 45, 0, 0, 270, 271, 3, 90, 45, 0, 271, 272, 6, 12, -1, 0, 272, 279, 1, 0, 0, 0, 273, 274, 4, 12, 1, 0, 274, 275, 5, 10, 0, 0, 275, 276, 3, 90, 45, 0, 276, 277, 6, 12, -1, 0, 277, 279, 1, 0, 0, 0, 278, 268, 1, 0, 0, 0, 278, 273, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 281, 1, 0, 0, 0, 280, 267, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 283, 5, 46, 0, 0, 283, 284, 3, 12, 6, 0, 284, 25, 1, 0, 0, 0, 285, 286, 5, 29, 0, 0, 286, 292, 3, 90, 45, 0, 287, 289, 5, 90, 0, 0, 288, 290, 3, 104, 52, 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 293, 5, 91, 0, 0, 292, 287, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 295, 5, 46, 0, 0, 295, 296, 3, 12, 6, 0, 296, 27, 1, 0, 0, 0, 297, 299, 5, 35, 0, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 301, 5, 4, 0, 0, 301, 302, 3, 90, 45, 0, 302, 304, 5, 90, 0, 0, 303, 305, 3, 30, 15, 0, 304, 303, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 309, 5, 91, 0, 0, 307, 308, 5, 69, 0, 0, 308, 310, 3, 62, 31, 0, 309, 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 312, 5, 46, 0, 0, 312, 313, 3, 12, 6, 0, 313, 29, 1, 0, 0, 0, 314, 315, 3, 36, 18, 0, 315, 316, 5, 45, 0, 0, 316, 318, 1, 0, 0, 0, 317, 314, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 329, 1, 0, 0, 0, 319, 322, 3, 32, 16, 0, 320, 321, 5, 45, 0, 0, 321, 323, 3, 36, 18, 0, 322, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 325, 5, 45, 0, 0, 325, 327, 3, 34, 17, 0, 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 330, 1, 0, 0, 0, 328, 330, 3, 34, 17, 0, 329, 319, 1, 0, 0, 0, 329, 328, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 333, 5, 45, 0, 0, 332, 331, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 339, 1, 0, 0, 0, 334, 336, 3, 36, 18, 0, 335, 337, 5, 45, 0, 0, 336, 335, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 339, 1, 0, 0, 0, 338, 317, 1, 0, 0, 0, 338, 334, 1, 0, 0, 0, 339, 31, 1, 0, 0, 0, 340, 341, 5, 44, 0, 0, 341, 342, 3, 40, 20, 0, 342, 33, 1, 0, 0, 0, 343, 344, 5, 48, 0, 0, 344, 345, 3, 40, 20, 0, 345, 35, 1, 0, 0, 0, 346, 351, 3, 38, 19, 0, 347, 348, 5, 45, 0, 0, 348, 350, 3, 38, 19, 0, 349, 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 37, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 357, 3, 40, 20, 0, 355, 356, 5, 49, 0, 0, 356, 358, 3, 62, 31, 0, 357, 355, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 361, 5, 44, 0, 0, 360, 354, 1, 0, 0, 0, 360, 359, 1, 0, 0, 0, 361, 39, 1, 0, 0, 0, 362, 365, 3, 90, 45, 0, 363, 364, 5, 46, 0, 0, 364, 366, 3, 62, 31, 0, 365, 363, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 41, 1, 0, 0, 0, 367, 372, 3, 44, 22, 0, 368, 369, 5, 47, 0, 0, 369, 371, 3, 44, 22, 0, 370, 368, 1, 0, 0, 0, 371, 374, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 375, 377, 5, 47, 0, 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 379, 7, 0, 0, 0, 379, 43, 1, 0, 0, 0, 380, 382, 3, 46, 23, 0, 381, 383, 3, 50, 25, 0, 382, 381, 1, 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 505, 1, 0, 0, 0, 384, 385, 4, 22, 2, 0, 385, 408, 5, 37, 0, 0, 386, 391, 3, 62, 31, 0, 387, 388, 5, 45, 0, 0, 388, 390, 3, 62, 31, 0, 389, 387, 1, 0, 0, 0, 390, 393, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 395, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 394, 396, 5, 45, 0, 0, 395, 394, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 409, 1, 0, 0, 0, 397, 398, 5, 54, 0, 0, 398, 401, 3, 62, 31, 0, 399, 400, 5, 45, 0, 0, 400, 402, 3, 62, 31, 0, 401, 399, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 406, 1, 0, 0, 0, 405, 407, 5, 45, 0, 0, 406, 405, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 409, 1, 0, 0, 0, 408, 386, 1, 0, 0, 0, 408, 397, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 411, 6, 22, -1, 0, 411, 505, 1, 0, 0, 0, 412, 413, 5, 31, 0, 0, 413, 505, 3, 52, 26, 0, 414, 505, 5, 32, 0, 0, 415, 505, 5, 34, 0, 0, 416, 505, 5, 33, 0, 0, 417, 419, 5, 5, 0, 0, 418, 420, 3, 86, 43, 0, 419, 418, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 505, 1, 0, 0, 0, 421, 431, 5, 6, 0, 0, 422, 429, 3, 62, 31, 0, 423, 424, 5, 45, 0, 0, 424, 427, 3, 62, 31, 0, 425, 426, 5, 45, 0, 0, 426, 428, 3, 62, 31, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 430, 1, 0, 0, 0, 429, 423, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 432, 1, 0, 0, 0, 431, 422, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 435, 1, 0, 0, 0, 433, 434, 5, 7, 0, 0, 434, 436, 3, 62, 31, 0, 435, 433, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 505, 1, 0, 0, 0, 437, 505, 3, 96, 48, 0, 438, 439, 5, 8, 0, 0, 439, 505, 3, 58, 29, 0, 440, 453, 5, 7, 0, 0, 441, 443, 7, 1, 0, 0, 442, 441, 1, 0, 0, 0, 443, 446, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 447, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 447, 454, 3, 88, 44, 0, 448, 450, 7, 1, 0, 0, 449, 448, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454, 1, 0, 0, 0, 453, 444, 1, 0, 0, 0, 453, 449, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 462, 5, 8, 0, 0, 456, 463, 5, 44, 0, 0, 457, 458, 5, 90, 0, 0, 458, 459, 3, 54, 27, 0, 459, 460, 5, 91, 0, 0, 460, 463, 1, 0, 0, 0, 461, 463, 3, 54, 27, 0, 462, 456, 1, 0, 0, 0, 462, 457, 1, 0, 0, 0, 462, 461, 1, 0, 0, 0, 463, 505, 1, 0, 0, 0, 464, 465, 5, 11, 0, 0, 465, 470, 3, 90, 45, 0, 466, 467, 5, 45, 0, 0, 467, 469, 3, 90, 45, 0, 468, 466, 1, 0, 0, 0, 469, 472, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 505, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 473, 474, 4, 22, 3, 0, 474, 475, 5, 38, 0, 0, 475, 482, 3, 78, 39, 0, 476, 477, 5, 18, 0, 0, 477, 480, 3, 62, 31, 0, 478, 479, 5, 45, 0, 0, 479, 481, 3, 62, 31, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 483, 1, 0, 0, 0, 482, 476, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 6, 22, -1, 0, 485, 505, 1, 0, 0, 0, 486, 487, 5, 12, 0, 0, 487, 490, 3, 62, 31, 0, 488, 489, 5, 45, 0, 0, 489, 491, 3, 62, 31, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 505, 1, 0, 0, 0, 492, 493, 4, 22, 4, 0, 493, 494, 5, 9, 0, 0, 494, 499, 3, 90, 45, 0, 495, 496, 5, 45, 0, 0, 496, 498, 3, 90, 45, 0, 497, 495, 1, 0, 0, 0, 498, 501, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 502, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 502, 503, 6, 22, -1, 0, 503, 505, 1, 0, 0, 0, 504, 380, 1, 0, 0, 0, 504, 384, 1, 0, 0, 0, 504, 412, 1, 0, 0, 0, 504, 414, 1, 0, 0, 0, 504, 415, 1, 0, 0, 0, 504, 416, 1, 0, 0, 0, 504, 417, 1, 0, 0, 0, 504, 421, 1, 0, 0, 0, 504, 437, 1, 0, 0, 0, 504, 438, 1, 0, 0, 0, 504, 440, 1, 0, 0, 0, 504, 464, 1, 0, 0, 0, 504, 473, 1, 0, 0, 0, 504, 486, 1, 0, 0, 0, 504, 492, 1, 0, 0, 0, 505, 45, 1, 0, 0, 0, 506, 509, 3, 62, 31, 0, 507, 509, 3, 48, 24, 0, 508, 506, 1, 0, 0, 0, 508, 507, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 511, 5, 45, 0, 0, 511, 513, 1, 0, 0, 0, 512, 508, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 512, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 518, 1, 0, 0, 0, 516, 519, 3, 62, 31, 0, 517, 519, 3, 48, 24, 0, 518, 516, 1, 0, 0, 0, 518, 517, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 522, 1, 0, 0, 0, 520, 522, 3, 86, 43, 0, 521, 512, 1, 0, 0, 0, 521, 520, 1, 0, 0, 0, 522, 47, 1, 0, 0, 0, 523, 524, 5, 44, 0, 0, 524, 525, 3, 78, 39, 0, 525, 49, 1, 0, 0, 0, 526, 540, 5, 49, 0, 0, 527, 532, 3, 46, 23, 0, 528, 529, 5, 49, 0, 0, 529, 531, 3, 46, 23, 0, 530, 528, 1, 0, 0, 0, 531, 534, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 537, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 535, 536, 5, 49, 0, 0, 536, 538, 3, 96, 48, 0, 537, 535, 1, 0, 0, 0, 537, 538, 1, 0, 0, 0, 538, 541, 1, 0, 0, 0, 539, 541, 3, 96, 48, 0, 540, 527, 1, 0, 0, 0, 540, 539, 1, 0, 0, 0, 541, 557, 1, 0, 0, 0, 542, 543, 4, 25, 5, 0, 543, 544, 5, 46, 0, 0, 544, 547, 3, 62, 31, 0, 545, 546, 5, 49, 0, 0, 546, 548, 3, 86, 43, 0, 547, 545, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 550, 6, 25, -1, 0, 550, 557, 1, 0, 0, 0, 551, 554, 7, 2, 0, 0, 552, 555, 3, 96, 48, 0, 553, 555, 3, 86, 43, 0, 554, 552, 1, 0, 0, 0, 554, 553, 1, 0, 0, 0, 555, 557, 1, 0, 0, 0, 556, 526, 1, 0, 0, 0, 556, 542, 1, 0, 0, 0, 556, 551, 1, 0, 0, 0, 557, 51, 1, 0, 0, 0, 558, 563, 3, 78, 39, 0, 559, 560, 5, 45, 0, 0, 560, 562, 3, 78, 39, 0, 561, 559, 1, 0, 0, 0, 562, 565, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 567, 1, 0, 0, 0, 565, 563, 1, 0, 0, 0, 566, 568, 5, 45, 0, 0, 567, 566, 1, 0, 0, 0, 567, 568, 1, 0, 0, 0, 568, 53, 1, 0, 0, 0, 569, 574, 3, 56, 28, 0, 570, 571, 5, 45, 0, 0, 571, 573, 3, 56, 28, 0, 572, 570, 1, 0, 0, 0, 573, 576, 1, 0, 0, 0, 574, 572, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 578, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 577, 579, 5, 45, 0, 0, 578, 577, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 55, 1, 0, 0, 0, 580, 583, 3, 90, 45, 0, 581, 582, 5, 10, 0, 0, 582, 584, 3, 90, 45, 0, 583, 581, 1, 0, 0, 0, 583, 584, 1, 0, 0, 0, 584, 57, 1, 0, 0, 0, 585, 590, 3, 60, 30, 0, 586, 587, 5, 45, 0, 0, 587, 589, 3, 60, 30, 0, 588, 586, 1, 0, 0, 0, 589, 592, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 59, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 593, 596, 3, 88, 44, 0, 594, 595, 5, 10, 0, 0, 595, 597, 3, 90, 45, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 61, 1, 0, 0, 0, 598, 604, 3, 74, 37, 0, 599, 600, 5, 13, 0, 0, 600, 601, 3, 74, 37, 0, 601, 602, 5, 15, 0, 0, 602, 603, 3, 62, 31, 0, 603, 605, 1, 0, 0, 0, 604, 599, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 613, 1, 0, 0, 0, 606, 608, 5, 24, 0, 0, 607, 609, 3, 64, 32, 0, 608, 607, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 5, 46, 0, 0, 611, 613, 3, 62, 31, 0, 612, 598, 1, 0, 0, 0, 612, 606, 1, 0, 0, 0, 613, 63, 1, 0, 0, 0, 614, 615, 3, 66, 33, 0, 615, 616, 5, 45, 0, 0, 616, 618, 1, 0, 0, 0, 617, 614, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 629, 1, 0, 0, 0, 619, 622, 3, 70, 35, 0, 620, 621, 5, 45, 0, 0, 621, 623, 3, 66, 33, 0, 622, 620, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 626, 1, 0, 0, 0, 624, 625, 5, 45, 0, 0, 625, 627, 3, 72, 36, 0, 626, 624, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 630, 1, 0, 0, 0, 628, 630, 3, 72, 36, 0, 629, 619, 1, 0, 0, 0, 629, 628, 1, 0, 0, 0, 630, 632, 1, 0, 0, 0, 631, 633, 5, 45, 0, 0, 632, 631, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 633, 639, 1, 0, 0, 0, 634, 636, 3, 66, 33, 0, 635, 637, 5, 45, 0, 0, 636, 635, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 639, 1, 0, 0, 0, 638, 617, 1, 0, 0, 0, 638, 634, 1, 0, 0, 0, 639, 65, 1, 0, 0, 0, 640, 645, 3, 68, 34, 0, 641, 642, 5, 45, 0, 0, 642, 644, 3, 68, 34, 0, 643, 641, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 67, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 651, 3, 90, 45, 0, 649, 650, 5, 49, 0, 0, 650, 652, 3, 62, 31, 0, 651, 649, 1, 0, 0, 0, 651, 652, 1, 0, 0, 0, 652, 655, 1, 0, 0, 0, 653, 655, 5, 44, 0, 0, 654, 648, 1, 0, 0, 0, 654, 653, 1, 0, 0, 0, 655, 69, 1, 0, 0, 0, 656, 657, 5, 44, 0, 0, 657, 658, 3, 90, 45, 0, 658, 71, 1, 0, 0, 0, 659, 660, 5, 48, 0, 0, 660, 661, 3, 90, 45, 0, 661, 73, 1, 0, 0, 0, 662, 663, 6, 37, -1, 0, 663, 667, 3, 76, 38, 0, 664, 665, 5, 27, 0, 0, 665, 667, 3, 74, 37, 3, 666, 662, 1, 0, 0, 0, 666, 664, 1, 0, 0, 0, 667, 676, 1, 0, 0, 0, 668, 669, 10, 2, 0, 0, 669, 670, 5, 26, 0, 0, 670, 675, 3, 74, 37, 3, 671, 672, 10, 1, 0, 0, 672, 673, 5, 25, 0, 0, 673, 675, 3, 74, 37, 2, 674, 668, 1, 0, 0, 0, 674, 671, 1, 0, 0, 0, 675, 678, 1, 0, 0, 0, 676, 674, 1, 0, 0, 0, 676, 677, 1, 0, 0, 0, 677, 75, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 679, 680, 6, 38, -1, 0, 680, 681, 3, 78, 39, 0, 681, 703, 1, 0, 0, 0, 682, 698, 10, 2, 0, 0, 683, 699, 5, 61, 0, 0, 684, 699, 5, 62, 0, 0, 685, 699, 5, 63, 0, 0, 686, 699, 5, 64, 0, 0, 687, 699, 5, 65, 0, 0, 688, 699, 5, 66, 0, 0, 689, 699, 5, 67, 0, 0, 690, 692, 5, 27, 0, 0, 691, 690, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 699, 5, 18, 0, 0, 694, 696, 5, 28, 0, 0, 695, 697, 5, 27, 0, 0, 696, 695, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 699, 1, 0, 0, 0, 698, 683, 1, 0, 0, 0, 698, 684, 1, 0, 0, 0, 698, 685, 1, 0, 0, 0, 698, 686, 1, 0, 0, 0, 698, 687, 1, 0, 0, 0, 698, 688, 1, 0, 0, 0, 698, 689, 1, 0, 0, 0, 698, 691, 1, 0, 0, 0, 698, 694, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 702, 3, 76, 38, 3, 701, 682, 1, 0, 0, 0, 702, 705, 1, 0, 0, 0, 703, 701, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 77, 1, 0, 0, 0, 705, 703, 1, 0, 0, 0, 706, 708, 6, 39, -1, 0, 707, 709, 5, 36, 0, 0, 708, 707, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 714, 3, 80, 40, 0, 711, 713, 3, 100, 50, 0, 712, 711, 1, 0, 0, 0, 713, 716, 1, 0, 0, 0, 714, 712, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 720, 1, 0, 0, 0, 716, 714, 1, 0, 0, 0, 717, 718, 7, 3, 0, 0, 718, 720, 3, 78, 39, 7, 719, 706, 1, 0, 0, 0, 719, 717, 1, 0, 0, 0, 720, 744, 1, 0, 0, 0, 721, 722, 10, 8, 0, 0, 722, 723, 5, 48, 0, 0, 723, 743, 3, 78, 39, 8, 724, 725, 10, 6, 0, 0, 725, 726, 7, 4, 0, 0, 726, 743, 3, 78, 39, 7, 727, 728, 10, 5, 0, 0, 728, 729, 7, 5, 0, 0, 729, 743, 3, 78, 39, 6, 730, 731, 10, 4, 0, 0, 731, 732, 7, 6, 0, 0, 732, 743, 3, 78, 39, 5, 733, 734, 10, 3, 0, 0, 734, 735, 5, 52, 0, 0, 735, 743, 3, 78, 39, 4, 736, 737, 10, 2, 0, 0, 737, 738, 5, 51, 0, 0, 738, 743, 3, 78, 39, 3, 739, 740, 10, 1, 0, 0, 740, 741, 5, 50, 0, 0, 741, 743, 3, 78, 39, 2, 742, 721, 1, 0, 0, 0, 742, 724, 1, 0, 0, 0, 742, 727, 1, 0, 0, 0, 742, 730, 1, 0, 0, 0, 742, 733, 1, 0, 0, 0, 742, 736, 1, 0, 0, 0, 742, 739, 1, 0, 0, 0, 743, 746, 1, 0, 0, 0, 744, 742, 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 79, 1, 0, 0, 0, 746, 744, 1, 0, 0, 0, 747, 750, 5, 90, 0, 0, 748, 751, 3, 96, 48, 0, 749, 751, 3, 84, 42, 0, 750, 748, 1, 0, 0, 0, 750, 749, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 785, 5, 91, 0, 0, 753, 755, 5, 94, 0, 0, 754, 756, 3, 84, 42, 0, 755, 754, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 785, 5, 95, 0, 0, 758, 760, 5, 92, 0, 0, 759, 761, 3, 82, 41, 0, 760, 759, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 785, 5, 93, 0, 0, 763, 764, 5, 43, 0, 0, 764, 766, 3, 86, 43, 0, 765, 767, 5, 45, 0, 0, 766, 765, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 769, 5, 43, 0, 0, 769, 785, 1, 0, 0, 0, 770, 785, 5, 42, 0, 0, 771, 785, 3, 90, 45, 0, 772, 785, 5, 37, 0, 0, 773, 785, 5, 38, 0, 0, 774, 776, 5, 56, 0, 0, 775, 774, 1, 0, 0, 0, 775, 776, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 785, 3, 92, 46, 0, 778, 785, 5, 20, 0, 0, 779, 781, 5, 83, 0, 0, 780, 779, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 780, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 785, 1, 0, 0, 0, 784, 747, 1, 0, 0, 0, 784, 753, 1, 0, 0, 0, 784, 758, 1, 0, 0, 0, 784, 763, 1, 0, 0, 0, 784, 770, 1, 0, 0, 0, 784, 771, 1, 0, 0, 0, 784, 772, 1, 0, 0, 0, 784, 773, 1, 0, 0, 0, 784, 775, 1, 0, 0, 0, 784, 778, 1, 0, 0, 0, 784, 780, 1, 0, 0, 0, 785, 81, 1, 0, 0, 0, 786, 787, 3, 62, 31, 0, 787, 788, 5, 46, 0, 0, 788, 789, 3, 62, 31, 0, 789, 793, 1, 0, 0, 0, 790, 791, 5, 48, 0, 0, 791, 793, 3, 78, 39, 0, 792, 786, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 793, 805, 1, 0, 0, 0, 794, 801, 5, 45, 0, 0, 795, 796, 3, 62, 31, 0, 796, 797, 5, 46, 0, 0, 797, 798, 3, 62, 31, 0, 798, 802, 1, 0, 0, 0, 799, 800, 5, 48, 0, 0, 800, 802, 3, 78, 39, 0, 801, 795, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 802, 804, 1, 0, 0, 0, 803, 794, 1, 0, 0, 0, 804, 807, 1, 0, 0, 0, 805, 803, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 809, 1, 0, 0, 0, 807, 805, 1, 0, 0, 0, 808, 810, 5, 45, 0, 0, 809, 808, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 818, 1, 0, 0, 0, 811, 812, 3, 62, 31, 0, 812, 813, 5, 46, 0, 0, 813, 814, 3, 62, 31, 0, 814, 815, 3, 114, 57, 0, 815, 818, 1, 0, 0, 0, 816, 818, 3, 84, 42, 0, 817, 792, 1, 0, 0, 0, 817, 811, 1, 0, 0, 0, 817, 816, 1, 0, 0, 0, 818, 83, 1, 0, 0, 0, 819, 822, 3, 62, 31, 0, 820, 822, 3, 48, 24, 0, 821, 819, 1, 0, 0, 0, 821, 820, 1, 0, 0, 0, 822, 837, 1, 0, 0, 0, 823, 838, 3, 114, 57, 0, 824, 827, 5, 45, 0, 0, 825, 828, 3, 62, 31, 0, 826, 828, 3, 48, 24, 0, 827, 825, 1, 0, 0, 0, 827, 826, 1, 0, 0, 0, 828, 830, 1, 0, 0, 0, 829, 824, 1, 0, 0, 0, 830, 833, 1, 0, 0, 0, 831, 829, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 835, 1, 0, 0, 0, 833, 831, 1, 0, 0, 0, 834, 836, 5, 45, 0, 0, 835, 834, 1, 0, 0, 0, 835, 836, 1, 0, 0, 0, 836, 838, 1, 0, 0, 0, 837, 823, 1, 0, 0, 0, 837, 831, 1, 0, 0, 0, 838, 85, 1, 0, 0, 0, 839, 844, 3, 62, 31, 0, 840, 841, 5, 45, 0, 0, 841, 843, 3, 62, 31, 0, 842, 840, 1, 0, 0, 0, 843, 846, 1, 0, 0, 0, 844, 842, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 848, 1, 0, 0, 0, 846, 844, 1, 0, 0, 0, 847, 849, 5, 45, 0, 0, 848, 847, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 87, 1, 0, 0, 0, 850, 851, 6, 44, -1, 0, 851, 852, 3, 90, 45, 0, 852, 858, 1, 0, 0, 0, 853, 854, 10, 2, 0, 0, 854, 855, 5, 41, 0, 0, 855, 857, 3, 90, 45, 0, 856, 853, 1, 0, 0, 0, 857, 860, 1, 0, 0, 0, 858, 856, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 89, 1, 0, 0, 0, 860, 858, 1, 0, 0, 0, 861, 862, 7, 7, 0, 0, 862, 91, 1, 0, 0, 0, 863, 867, 3, 94, 47, 0, 864, 867, 5, 88, 0, 0, 865, 867, 5, 89, 0, 0, 866, 863, 1, 0, 0, 0, 866, 864, 1, 0, 0, 0, 866, 865, 1, 0, 0, 0, 867, 93, 1, 0, 0, 0, 868, 869, 7, 8, 0, 0, 869, 95, 1, 0, 0, 0, 870, 872, 5, 30, 0, 0, 871, 873, 3, 98, 49, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 97, 1, 0, 0, 0, 874, 875, 5, 7, 0, 0, 875, 878, 3, 62, 31, 0, 876, 878, 3, 86, 43, 0, 877, 874, 1, 0, 0, 0, 877, 876, 1, 0, 0, 0, 878, 99, 1, 0, 0, 0, 879, 880, 5, 41, 0, 0, 880, 882, 3, 90, 45, 0, 881, 883, 3, 102, 51, 0, 882, 881, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 886, 1, 0, 0, 0, 884, 886, 3, 102, 51, 0, 885, 879, 1, 0, 0, 0, 885, 884, 1, 0, 0, 0, 886, 101, 1, 0, 0, 0, 887, 889, 5, 90, 0, 0, 888, 890, 3, 104, 52, 0, 889, 888, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 891, 1, 0, 0, 0, 891, 897, 5, 91, 0, 0, 892, 893, 5, 94, 0, 0, 893, 894, 3, 108, 54, 0, 894, 895, 5, 95, 0, 0, 895, 897, 1, 0, 0, 0, 896, 887, 1, 0, 0, 0, 896, 892, 1, 0, 0, 0, 897, 103, 1, 0, 0, 0, 898, 903, 3, 106, 53, 0, 899, 900, 5, 45, 0, 0, 900, 902, 3, 106, 53, 0, 901, 899, 1, 0, 0, 0, 902, 905, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 907, 1, 0, 0, 0, 905, 903, 1, 0, 0, 0, 906, 908, 5, 45, 0, 0, 907, 906, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 105, 1, 0, 0, 0, 909, 913, 3, 62, 31, 0, 910, 914, 3, 114, 57, 0, 911, 912, 5, 49, 0, 0, 912, 914, 3, 62, 31, 0, 913, 910, 1, 0, 0, 0, 913, 911, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 918, 1, 0, 0, 0, 915, 916, 7, 9, 0, 0, 916, 918, 3, 62, 31, 0, 917, 909, 1, 0, 0, 0, 917, 915, 1, 0, 0, 0, 918, 107, 1, 0, 0, 0, 919, 924, 3, 110, 55, 0, 920, 921, 5, 45, 0, 0, 921, 923, 3, 110, 55, 0, 922, 920, 1, 0, 0, 0, 923, 926, 1, 0, 0, 0, 924, 922, 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 928, 1, 0, 0, 0, 926, 924, 1, 0, 0, 0, 927, 929, 5, 45, 0, 0, 928, 927, 1, 0, 0, 0, 928, 929, 1, 0, 0, 0, 929, 109, 1, 0, 0, 0, 930, 949, 5, 42, 0, 0, 931, 939, 3, 62, 31, 0, 932, 934, 5, 46, 0, 0, 933, 935, 3, 62, 31, 0, 934, 933, 1, 0, 0, 0, 934, 935, 1, 0, 0, 0, 935, 937, 1, 0, 0, 0, 936, 938, 3, 112, 56, 0, 937, 936, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 940, 1, 0, 0, 0, 939, 932, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 949, 1, 0, 0, 0, 941, 943, 5, 46, 0, 0, 942, 944, 3, 62, 31, 0, 943, 942, 1, 0, 0, 0, 943, 944, 1, 0, 0, 0, 944, 946, 1, 0, 0, 0, 945, 947, 3, 112, 56, 0, 946, 945, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 949, 1, 0, 0, 0, 948, 930, 1, 0, 0, 0, 948, 931, 1, 0, 0, 0, 948, 941, 1, 0, 0, 0, 949, 111, 1, 0, 0, 0, 950, 952, 5, 46, 0, 0, 951, 953, 3, 62, 31, 0, 952, 951, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 113, 1, 0, 0, 0, 954, 955, 5, 17, 0, 0, 955, 956, 3, 52, 26, 0, 956, 957, 5, 18, 0, 0, 957, 959, 3, 74, 37, 0, 958, 960, 3, 116, 58, 0, 959, 958, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 115, 1, 0, 0, 0, 961, 968, 3, 114, 57, 0, 962, 963, 5, 13, 0, 0, 963, 965, 3, 62, 31, 0, 964, 966, 3, 116, 58, 0, 965, 964, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 968, 1, 0, 0, 0, 967, 961, 1, 0, 0, 0, 967, 962, 1, 0, 0, 0, 968, 117, 1, 0, 0, 0, 151, 121, 130, 134, 136, 142, 147, 156, 160, 167, 170, 179, 187, 190, 193, 196, 199, 207, 216, 221, 223, 231, 235, 241, 244, 264, 278, 280, 289, 292, 298, 304, 309, 317, 322, 326, 329, 332, 336, 338, 351, 357, 360, 365, 372, 376, 382, 391, 395, 403, 406, 408, 419, 427, 429, 431, 435, 444, 451, 453, 462, 470, 480, 482, 490, 499, 504, 508, 514, 518, 521, 532, 537, 540, 547, 554, 556, 563, 567, 574, 578, 583, 590, 596, 604, 608, 612, 617, 622, 626, 629, 632, 636, 638, 645, 651, 654, 666, 674, 676, 691, 696, 698, 703, 708, 714, 719, 742, 744, 750, 755, 760, 766, 775, 782, 784, 792, 801, 805, 809, 817, 821, 827, 831, 835, 837, 844, 848, 858, 866, 872, 877, 882, 885, 889, 896, 903, 907, 913, 917, 924, 928, 934, 937, 939, 943, 946, 948, 952, 959, 965, 967] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/PythonParser.py b/src/pycropml/transpiler/antlr_py/grammars/PythonParser.py index dc015dd8..0c7d9622 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/PythonParser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/PythonParser.py @@ -1,4 +1,4 @@ -# Generated from PythonParser.g4 by ANTLR 4.8 +# Generated from PythonParser.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,523 +8,395 @@ else: from typing.io import TextIO -if __name__ is not None and "." in __name__: +if "." in __name__: from .PythonParserBase import PythonParserBase else: from PythonParserBase import PythonParserBase - def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3f") - buf.write("\u03cc\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") - buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") - buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") - buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") - buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") - buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") - buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") - buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") - buf.write(";\4<\t<\3\2\3\2\3\2\5\2|\n\2\3\2\3\2\3\3\3\3\3\3\3\3\3") - buf.write("\3\5\3\u0085\n\3\3\4\3\4\6\4\u0089\n\4\r\4\16\4\u008a") - buf.write("\3\5\3\5\7\5\u008f\n\5\f\5\16\5\u0092\13\5\3\6\3\6\5\6") - buf.write("\u0096\n\6\3\7\3\7\3\7\3\7\3\7\7\7\u009d\n\7\f\7\16\7") - buf.write("\u00a0\13\7\3\7\5\7\u00a3\n\7\3\7\3\7\3\7\3\7\3\7\5\7") - buf.write("\u00aa\n\7\3\7\5\7\u00ad\n\7\3\7\3\7\3\7\3\7\3\7\3\7\3") - buf.write("\7\5\7\u00b6\n\7\3\7\3\7\3\7\3\7\6\7\u00bc\n\7\r\7\16") - buf.write("\7\u00bd\3\7\5\7\u00c1\n\7\3\7\5\7\u00c4\n\7\3\7\5\7\u00c7") - buf.write("\n\7\3\7\5\7\u00ca\n\7\3\7\3\7\3\7\3\7\7\7\u00d0\n\7\f") - buf.write("\7\16\7\u00d3\13\7\3\7\3\7\3\7\3\7\7\7\u00d9\n\7\f\7\16") - buf.write("\7\u00dc\13\7\3\7\3\7\5\7\u00e0\n\7\5\7\u00e2\n\7\3\b") - buf.write("\3\b\3\b\3\b\6\b\u00e8\n\b\r\b\16\b\u00e9\3\b\3\b\5\b") - buf.write("\u00ee\n\b\3\t\3\t\3\t\3\t\5\t\u00f4\n\t\3\t\5\t\u00f7") - buf.write("\n\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3") - buf.write("\f\3\f\3\f\3\f\3\r\3\r\3\r\5\r\u010b\n\r\3\16\3\16\3\16") - buf.write("\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u0119") - buf.write("\n\16\5\16\u011b\n\16\3\16\3\16\3\16\3\17\3\17\3\17\3") - buf.write("\17\5\17\u0124\n\17\3\17\5\17\u0127\n\17\3\17\3\17\3\17") - buf.write("\3\20\5\20\u012d\n\20\3\20\3\20\3\20\3\20\5\20\u0133\n") - buf.write("\20\3\20\3\20\3\20\5\20\u0138\n\20\3\20\3\20\3\20\3\21") - buf.write("\3\21\3\21\5\21\u0140\n\21\3\21\3\21\3\21\5\21\u0145\n") - buf.write("\21\3\21\3\21\5\21\u0149\n\21\3\21\5\21\u014c\n\21\3\21") - buf.write("\5\21\u014f\n\21\3\21\3\21\5\21\u0153\n\21\5\21\u0155") - buf.write("\n\21\3\22\3\22\3\22\3\23\3\23\3\23\3\24\3\24\3\24\7\24") - buf.write("\u0160\n\24\f\24\16\24\u0163\13\24\3\25\3\25\3\25\5\25") - buf.write("\u0168\n\25\3\25\5\25\u016b\n\25\3\26\3\26\3\26\5\26\u0170") - buf.write("\n\26\3\27\3\27\3\27\7\27\u0175\n\27\f\27\16\27\u0178") - buf.write("\13\27\3\27\5\27\u017b\n\27\3\27\3\27\3\30\3\30\5\30\u0181") - buf.write("\n\30\3\30\3\30\3\30\3\30\3\30\7\30\u0188\n\30\f\30\16") - buf.write("\30\u018b\13\30\3\30\5\30\u018e\n\30\3\30\3\30\3\30\3") - buf.write("\30\6\30\u0194\n\30\r\30\16\30\u0195\3\30\5\30\u0199\n") - buf.write("\30\5\30\u019b\n\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30") - buf.write("\3\30\3\30\5\30\u01a6\n\30\3\30\3\30\3\30\3\30\3\30\3") - buf.write("\30\5\30\u01ae\n\30\5\30\u01b0\n\30\5\30\u01b2\n\30\3") - buf.write("\30\3\30\5\30\u01b6\n\30\3\30\3\30\3\30\3\30\3\30\7\30") - buf.write("\u01bd\n\30\f\30\16\30\u01c0\13\30\3\30\3\30\6\30\u01c4") - buf.write("\n\30\r\30\16\30\u01c5\5\30\u01c8\n\30\3\30\3\30\3\30") - buf.write("\3\30\3\30\3\30\3\30\5\30\u01d1\n\30\3\30\3\30\3\30\3") - buf.write("\30\7\30\u01d7\n\30\f\30\16\30\u01da\13\30\3\30\3\30\3") - buf.write("\30\3\30\3\30\3\30\3\30\5\30\u01e3\n\30\5\30\u01e5\n\30") - buf.write("\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u01ed\n\30\3\30\3") - buf.write("\30\3\30\3\30\3\30\7\30\u01f4\n\30\f\30\16\30\u01f7\13") - buf.write("\30\3\30\3\30\5\30\u01fb\n\30\3\31\3\31\5\31\u01ff\n\31") - buf.write("\3\31\3\31\6\31\u0203\n\31\r\31\16\31\u0204\3\31\3\31") - buf.write("\5\31\u0209\n\31\3\31\5\31\u020c\n\31\3\32\3\32\3\32\3") - buf.write("\33\3\33\3\33\3\33\7\33\u0215\n\33\f\33\16\33\u0218\13") - buf.write("\33\3\33\3\33\5\33\u021c\n\33\3\33\5\33\u021f\n\33\3\33") - buf.write("\3\33\3\33\3\33\3\33\5\33\u0226\n\33\3\33\3\33\3\33\3") - buf.write("\33\3\33\5\33\u022d\n\33\5\33\u022f\n\33\3\34\3\34\3\34") - buf.write("\7\34\u0234\n\34\f\34\16\34\u0237\13\34\3\34\5\34\u023a") - buf.write("\n\34\3\35\3\35\3\35\7\35\u023f\n\35\f\35\16\35\u0242") - buf.write("\13\35\3\35\5\35\u0245\n\35\3\36\3\36\3\36\5\36\u024a") - buf.write("\n\36\3\37\3\37\3\37\7\37\u024f\n\37\f\37\16\37\u0252") - buf.write("\13\37\3 \3 \3 \5 \u0257\n \3!\3!\3!\3!\3!\3!\5!\u025f") - buf.write("\n!\3!\3!\5!\u0263\n!\3!\3!\5!\u0267\n!\3\"\3\"\3\"\5") - buf.write("\"\u026c\n\"\3\"\3\"\3\"\5\"\u0271\n\"\3\"\3\"\5\"\u0275") - buf.write("\n\"\3\"\5\"\u0278\n\"\3\"\5\"\u027b\n\"\3\"\3\"\5\"\u027f") - buf.write("\n\"\5\"\u0281\n\"\3#\3#\3#\7#\u0286\n#\f#\16#\u0289\13") - buf.write("#\3$\3$\3$\5$\u028e\n$\3$\5$\u0291\n$\3%\3%\3%\3&\3&\3") - buf.write("&\3\'\3\'\3\'\3\'\5\'\u029d\n\'\3\'\3\'\3\'\3\'\3\'\3") - buf.write("\'\7\'\u02a5\n\'\f\'\16\'\u02a8\13\'\3(\3(\3(\3(\3(\3") - buf.write("(\3(\3(\3(\3(\3(\3(\5(\u02b6\n(\3(\3(\3(\5(\u02bb\n(\5") - buf.write("(\u02bd\n(\3(\7(\u02c0\n(\f(\16(\u02c3\13(\3)\3)\5)\u02c7") - buf.write("\n)\3)\3)\7)\u02cb\n)\f)\16)\u02ce\13)\3)\3)\5)\u02d2") - buf.write("\n)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3") - buf.write(")\3)\3)\3)\3)\7)\u02e9\n)\f)\16)\u02ec\13)\3*\3*\3*\5") - buf.write("*\u02f1\n*\3*\3*\3*\5*\u02f6\n*\3*\3*\3*\5*\u02fb\n*\3") - buf.write("*\3*\3*\3*\5*\u0301\n*\3*\3*\3*\3*\3*\3*\3*\5*\u030a\n") - buf.write("*\3*\3*\3*\6*\u030f\n*\r*\16*\u0310\5*\u0313\n*\3+\3+") - buf.write("\3+\3+\3+\3+\5+\u031b\n+\3+\3+\3+\3+\3+\3+\3+\5+\u0324") - buf.write("\n+\7+\u0326\n+\f+\16+\u0329\13+\3+\5+\u032c\n+\3+\3+") - buf.write("\3+\3+\3+\3+\5+\u0334\n+\3,\3,\5,\u0338\n,\3,\3,\3,\3") - buf.write(",\5,\u033e\n,\7,\u0340\n,\f,\16,\u0343\13,\3,\5,\u0346") - buf.write("\n,\5,\u0348\n,\3-\3-\3-\7-\u034d\n-\f-\16-\u0350\13-") - buf.write("\3-\5-\u0353\n-\3.\3.\3.\3.\3.\3.\7.\u035b\n.\f.\16.\u035e") - buf.write("\13.\3/\3/\3\60\3\60\3\60\5\60\u0365\n\60\3\61\3\61\3") - buf.write("\62\3\62\5\62\u036b\n\62\3\63\3\63\3\63\5\63\u0370\n\63") - buf.write("\3\64\3\64\3\64\5\64\u0375\n\64\3\64\5\64\u0378\n\64\3") - buf.write("\65\3\65\5\65\u037c\n\65\3\65\3\65\3\65\3\65\3\65\5\65") - buf.write("\u0383\n\65\3\66\3\66\3\66\7\66\u0388\n\66\f\66\16\66") - buf.write("\u038b\13\66\3\66\5\66\u038e\n\66\3\67\3\67\3\67\3\67") - buf.write("\5\67\u0394\n\67\3\67\3\67\5\67\u0398\n\67\38\38\38\7") - buf.write("8\u039d\n8\f8\168\u03a0\138\38\58\u03a3\n8\39\39\39\3") - buf.write("9\59\u03a9\n9\39\59\u03ac\n9\59\u03ae\n9\39\39\59\u03b2") - buf.write("\n9\39\59\u03b5\n9\59\u03b7\n9\3:\3:\5:\u03bb\n:\3;\3") - buf.write(";\3;\3;\3;\5;\u03c2\n;\3<\3<\3<\3<\5<\u03c8\n<\5<\u03ca") - buf.write("\n<\3<\2\6LNPZ=\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36") - buf.write(" \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprt") - buf.write("v\2\f\3\3\5\5\3\2+,\3\2HT\4\29:>>\5\2..;=FF\3\29:\3\2") - buf.write("\678\4\2)*bb\3\2VY\4\2..\62\62\2\u0459\2{\3\2\2\2\4\u0084") - buf.write("\3\2\2\2\6\u0088\3\2\2\2\b\u008c\3\2\2\2\n\u0095\3\2\2") - buf.write("\2\f\u00e1\3\2\2\2\16\u00ed\3\2\2\2\20\u00ef\3\2\2\2\22") - buf.write("\u00fa\3\2\2\2\24\u00ff\3\2\2\2\26\u0103\3\2\2\2\30\u0107") - buf.write("\3\2\2\2\32\u010c\3\2\2\2\34\u011f\3\2\2\2\36\u012c\3") - buf.write("\2\2\2 \u0154\3\2\2\2\"\u0156\3\2\2\2$\u0159\3\2\2\2&") - buf.write("\u015c\3\2\2\2(\u016a\3\2\2\2*\u016c\3\2\2\2,\u0171\3") - buf.write("\2\2\2.\u01fa\3\2\2\2\60\u020b\3\2\2\2\62\u020d\3\2\2") - buf.write("\2\64\u022e\3\2\2\2\66\u0230\3\2\2\28\u023b\3\2\2\2:\u0246") - buf.write("\3\2\2\2<\u024b\3\2\2\2>\u0253\3\2\2\2@\u0266\3\2\2\2") - buf.write("B\u0280\3\2\2\2D\u0282\3\2\2\2F\u0290\3\2\2\2H\u0292\3") - buf.write("\2\2\2J\u0295\3\2\2\2L\u029c\3\2\2\2N\u02a9\3\2\2\2P\u02d1") - buf.write("\3\2\2\2R\u0312\3\2\2\2T\u0333\3\2\2\2V\u0337\3\2\2\2") - buf.write("X\u0349\3\2\2\2Z\u0354\3\2\2\2\\\u035f\3\2\2\2^\u0364") - buf.write("\3\2\2\2`\u0366\3\2\2\2b\u0368\3\2\2\2d\u036f\3\2\2\2") - buf.write("f\u0377\3\2\2\2h\u0382\3\2\2\2j\u0384\3\2\2\2l\u0397\3") - buf.write("\2\2\2n\u0399\3\2\2\2p\u03b6\3\2\2\2r\u03b8\3\2\2\2t\u03bc") - buf.write("\3\2\2\2v\u03c9\3\2\2\2x|\5\4\3\2y|\5\6\4\2z|\5\b\5\2") - buf.write("{x\3\2\2\2{y\3\2\2\2{z\3\2\2\2{|\3\2\2\2|}\3\2\2\2}~\7") - buf.write("\2\2\3~\3\3\2\2\2\177\u0085\7\5\2\2\u0080\u0085\5,\27") - buf.write("\2\u0081\u0082\5\f\7\2\u0082\u0083\7\5\2\2\u0083\u0085") - buf.write("\3\2\2\2\u0084\177\3\2\2\2\u0084\u0080\3\2\2\2\u0084\u0081") - buf.write("\3\2\2\2\u0085\5\3\2\2\2\u0086\u0089\7\5\2\2\u0087\u0089") - buf.write("\5\n\6\2\u0088\u0086\3\2\2\2\u0088\u0087\3\2\2\2\u0089") - buf.write("\u008a\3\2\2\2\u008a\u0088\3\2\2\2\u008a\u008b\3\2\2\2") - buf.write("\u008b\7\3\2\2\2\u008c\u0090\5X-\2\u008d\u008f\7\5\2\2") - buf.write("\u008e\u008d\3\2\2\2\u008f\u0092\3\2\2\2\u0090\u008e\3") - buf.write("\2\2\2\u0090\u0091\3\2\2\2\u0091\t\3\2\2\2\u0092\u0090") - buf.write("\3\2\2\2\u0093\u0096\5,\27\2\u0094\u0096\5\f\7\2\u0095") - buf.write("\u0093\3\2\2\2\u0095\u0094\3\2\2\2\u0096\13\3\2\2\2\u0097") - buf.write("\u0098\7\17\2\2\u0098\u0099\5@!\2\u0099\u009a\7\60\2\2") - buf.write("\u009a\u009e\5\16\b\2\u009b\u009d\5\22\n\2\u009c\u009b") - buf.write("\3\2\2\2\u009d\u00a0\3\2\2\2\u009e\u009c\3\2\2\2\u009e") - buf.write("\u009f\3\2\2\2\u009f\u00a2\3\2\2\2\u00a0\u009e\3\2\2\2") - buf.write("\u00a1\u00a3\5\24\13\2\u00a2\u00a1\3\2\2\2\u00a2\u00a3") - buf.write("\3\2\2\2\u00a3\u00e2\3\2\2\2\u00a4\u00a5\7\22\2\2\u00a5") - buf.write("\u00a6\5@!\2\u00a6\u00a7\7\60\2\2\u00a7\u00a9\5\16\b\2") - buf.write("\u00a8\u00aa\5\24\13\2\u00a9\u00a8\3\2\2\2\u00a9\u00aa") - buf.write("\3\2\2\2\u00aa\u00e2\3\2\2\2\u00ab\u00ad\7%\2\2\u00ac") - buf.write("\u00ab\3\2\2\2\u00ac\u00ad\3\2\2\2\u00ad\u00ae\3\2\2\2") - buf.write("\u00ae\u00af\7\23\2\2\u00af\u00b0\5\66\34\2\u00b0\u00b1") - buf.write("\7\24\2\2\u00b1\u00b2\5X-\2\u00b2\u00b3\7\60\2\2\u00b3") - buf.write("\u00b5\5\16\b\2\u00b4\u00b6\5\24\13\2\u00b5\u00b4\3\2") - buf.write("\2\2\u00b5\u00b6\3\2\2\2\u00b6\u00e2\3\2\2\2\u00b7\u00b8") - buf.write("\7\25\2\2\u00b8\u00b9\7\60\2\2\u00b9\u00c6\5\16\b\2\u00ba") - buf.write("\u00bc\5\32\16\2\u00bb\u00ba\3\2\2\2\u00bc\u00bd\3\2\2") - buf.write("\2\u00bd\u00bb\3\2\2\2\u00bd\u00be\3\2\2\2\u00be\u00c0") - buf.write("\3\2\2\2\u00bf\u00c1\5\24\13\2\u00c0\u00bf\3\2\2\2\u00c0") - buf.write("\u00c1\3\2\2\2\u00c1\u00c3\3\2\2\2\u00c2\u00c4\5\26\f") - buf.write("\2\u00c3\u00c2\3\2\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c7") - buf.write("\3\2\2\2\u00c5\u00c7\5\26\f\2\u00c6\u00bb\3\2\2\2\u00c6") - buf.write("\u00c5\3\2\2\2\u00c7\u00e2\3\2\2\2\u00c8\u00ca\7%\2\2") - buf.write("\u00c9\u00c8\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00cb\3") - buf.write("\2\2\2\u00cb\u00cc\7\30\2\2\u00cc\u00d1\5\30\r\2\u00cd") - buf.write("\u00ce\7/\2\2\u00ce\u00d0\5\30\r\2\u00cf\u00cd\3\2\2\2") - buf.write("\u00d0\u00d3\3\2\2\2\u00d1\u00cf\3\2\2\2\u00d1\u00d2\3") - buf.write("\2\2\2\u00d2\u00d4\3\2\2\2\u00d3\u00d1\3\2\2\2\u00d4\u00d5") - buf.write("\7\60\2\2\u00d5\u00d6\5\16\b\2\u00d6\u00e2\3\2\2\2\u00d7") - buf.write("\u00d9\5\20\t\2\u00d8\u00d7\3\2\2\2\u00d9\u00dc\3\2\2") - buf.write("\2\u00da\u00d8\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00df") - buf.write("\3\2\2\2\u00dc\u00da\3\2\2\2\u00dd\u00e0\5\34\17\2\u00de") - buf.write("\u00e0\5\36\20\2\u00df\u00dd\3\2\2\2\u00df\u00de\3\2\2") - buf.write("\2\u00e0\u00e2\3\2\2\2\u00e1\u0097\3\2\2\2\u00e1\u00a4") - buf.write("\3\2\2\2\u00e1\u00ac\3\2\2\2\u00e1\u00b7\3\2\2\2\u00e1") - buf.write("\u00c9\3\2\2\2\u00e1\u00da\3\2\2\2\u00e2\r\3\2\2\2\u00e3") - buf.write("\u00ee\5,\27\2\u00e4\u00e5\7\5\2\2\u00e5\u00e7\7\3\2\2") - buf.write("\u00e6\u00e8\5\n\6\2\u00e7\u00e6\3\2\2\2\u00e8\u00e9\3") - buf.write("\2\2\2\u00e9\u00e7\3\2\2\2\u00e9\u00ea\3\2\2\2\u00ea\u00eb") - buf.write("\3\2\2\2\u00eb\u00ec\7\4\2\2\u00ec\u00ee\3\2\2\2\u00ed") - buf.write("\u00e3\3\2\2\2\u00ed\u00e4\3\2\2\2\u00ee\17\3\2\2\2\u00ef") - buf.write("\u00f0\7F\2\2\u00f0\u00f6\5Z.\2\u00f1\u00f3\7\\\2\2\u00f2") - buf.write("\u00f4\5j\66\2\u00f3\u00f2\3\2\2\2\u00f3\u00f4\3\2\2\2") - buf.write("\u00f4\u00f5\3\2\2\2\u00f5\u00f7\7]\2\2\u00f6\u00f1\3") - buf.write("\2\2\2\u00f6\u00f7\3\2\2\2\u00f7\u00f8\3\2\2\2\u00f8\u00f9") - buf.write("\7\5\2\2\u00f9\21\3\2\2\2\u00fa\u00fb\7\20\2\2\u00fb\u00fc") - buf.write("\5@!\2\u00fc\u00fd\7\60\2\2\u00fd\u00fe\5\16\b\2\u00fe") - buf.write("\23\3\2\2\2\u00ff\u0100\7\21\2\2\u0100\u0101\7\60\2\2") - buf.write("\u0101\u0102\5\16\b\2\u0102\25\3\2\2\2\u0103\u0104\7\27") - buf.write("\2\2\u0104\u0105\7\60\2\2\u0105\u0106\5\16\b\2\u0106\27") - buf.write("\3\2\2\2\u0107\u010a\5@!\2\u0108\u0109\7\f\2\2\u0109\u010b") - buf.write("\5P)\2\u010a\u0108\3\2\2\2\u010a\u010b\3\2\2\2\u010b\31") - buf.write("\3\2\2\2\u010c\u011a\7\31\2\2\u010d\u0118\5@!\2\u010e") - buf.write("\u010f\6\16\2\2\u010f\u0110\7/\2\2\u0110\u0111\5\\/\2") - buf.write("\u0111\u0112\b\16\1\2\u0112\u0119\3\2\2\2\u0113\u0114") - buf.write("\6\16\3\2\u0114\u0115\7\f\2\2\u0115\u0116\5\\/\2\u0116") - buf.write("\u0117\b\16\1\2\u0117\u0119\3\2\2\2\u0118\u010e\3\2\2") - buf.write("\2\u0118\u0113\3\2\2\2\u0118\u0119\3\2\2\2\u0119\u011b") - buf.write("\3\2\2\2\u011a\u010d\3\2\2\2\u011a\u011b\3\2\2\2\u011b") - buf.write("\u011c\3\2\2\2\u011c\u011d\7\60\2\2\u011d\u011e\5\16\b") - buf.write("\2\u011e\33\3\2\2\2\u011f\u0120\7\37\2\2\u0120\u0126\5") - buf.write("\\/\2\u0121\u0123\7\\\2\2\u0122\u0124\5j\66\2\u0123\u0122") - buf.write("\3\2\2\2\u0123\u0124\3\2\2\2\u0124\u0125\3\2\2\2\u0125") - buf.write("\u0127\7]\2\2\u0126\u0121\3\2\2\2\u0126\u0127\3\2\2\2") - buf.write("\u0127\u0128\3\2\2\2\u0128\u0129\7\60\2\2\u0129\u012a") - buf.write("\5\16\b\2\u012a\35\3\2\2\2\u012b\u012d\7%\2\2\u012c\u012b") - buf.write("\3\2\2\2\u012c\u012d\3\2\2\2\u012d\u012e\3\2\2\2\u012e") - buf.write("\u012f\7\6\2\2\u012f\u0130\5\\/\2\u0130\u0132\7\\\2\2") - buf.write("\u0131\u0133\5 \21\2\u0132\u0131\3\2\2\2\u0132\u0133\3") - buf.write("\2\2\2\u0133\u0134\3\2\2\2\u0134\u0137\7]\2\2\u0135\u0136") - buf.write("\7G\2\2\u0136\u0138\5@!\2\u0137\u0135\3\2\2\2\u0137\u0138") - buf.write("\3\2\2\2\u0138\u0139\3\2\2\2\u0139\u013a\7\60\2\2\u013a") - buf.write("\u013b\5\16\b\2\u013b\37\3\2\2\2\u013c\u013d\5&\24\2\u013d") - buf.write("\u013e\7/\2\2\u013e\u0140\3\2\2\2\u013f\u013c\3\2\2\2") - buf.write("\u013f\u0140\3\2\2\2\u0140\u014b\3\2\2\2\u0141\u0144\5") - buf.write("\"\22\2\u0142\u0143\7/\2\2\u0143\u0145\5&\24\2\u0144\u0142") - buf.write("\3\2\2\2\u0144\u0145\3\2\2\2\u0145\u0148\3\2\2\2\u0146") - buf.write("\u0147\7/\2\2\u0147\u0149\5$\23\2\u0148\u0146\3\2\2\2") - buf.write("\u0148\u0149\3\2\2\2\u0149\u014c\3\2\2\2\u014a\u014c\5") - buf.write("$\23\2\u014b\u0141\3\2\2\2\u014b\u014a\3\2\2\2\u014c\u014e") - buf.write("\3\2\2\2\u014d\u014f\7/\2\2\u014e\u014d\3\2\2\2\u014e") - buf.write("\u014f\3\2\2\2\u014f\u0155\3\2\2\2\u0150\u0152\5&\24\2") - buf.write("\u0151\u0153\7/\2\2\u0152\u0151\3\2\2\2\u0152\u0153\3") - buf.write("\2\2\2\u0153\u0155\3\2\2\2\u0154\u013f\3\2\2\2\u0154\u0150") - buf.write("\3\2\2\2\u0155!\3\2\2\2\u0156\u0157\7.\2\2\u0157\u0158") - buf.write("\5*\26\2\u0158#\3\2\2\2\u0159\u015a\7\62\2\2\u015a\u015b") - buf.write("\5*\26\2\u015b%\3\2\2\2\u015c\u0161\5(\25\2\u015d\u015e") - buf.write("\7/\2\2\u015e\u0160\5(\25\2\u015f\u015d\3\2\2\2\u0160") - buf.write("\u0163\3\2\2\2\u0161\u015f\3\2\2\2\u0161\u0162\3\2\2\2") - buf.write("\u0162\'\3\2\2\2\u0163\u0161\3\2\2\2\u0164\u0167\5*\26") - buf.write("\2\u0165\u0166\7\63\2\2\u0166\u0168\5@!\2\u0167\u0165") - buf.write("\3\2\2\2\u0167\u0168\3\2\2\2\u0168\u016b\3\2\2\2\u0169") - buf.write("\u016b\7.\2\2\u016a\u0164\3\2\2\2\u016a\u0169\3\2\2\2") - buf.write("\u016b)\3\2\2\2\u016c\u016f\5\\/\2\u016d\u016e\7\60\2") - buf.write("\2\u016e\u0170\5@!\2\u016f\u016d\3\2\2\2\u016f\u0170\3") - buf.write("\2\2\2\u0170+\3\2\2\2\u0171\u0176\5.\30\2\u0172\u0173") - buf.write("\7\61\2\2\u0173\u0175\5.\30\2\u0174\u0172\3\2\2\2\u0175") - buf.write("\u0178\3\2\2\2\u0176\u0174\3\2\2\2\u0176\u0177\3\2\2\2") - buf.write("\u0177\u017a\3\2\2\2\u0178\u0176\3\2\2\2\u0179\u017b\7") - buf.write("\61\2\2\u017a\u0179\3\2\2\2\u017a\u017b\3\2\2\2\u017b") - buf.write("\u017c\3\2\2\2\u017c\u017d\t\2\2\2\u017d-\3\2\2\2\u017e") - buf.write("\u0180\5\60\31\2\u017f\u0181\5\64\33\2\u0180\u017f\3\2") - buf.write("\2\2\u0180\u0181\3\2\2\2\u0181\u01fb\3\2\2\2\u0182\u0183") - buf.write("\6\30\4\2\u0183\u019a\7\'\2\2\u0184\u0189\5@!\2\u0185") - buf.write("\u0186\7/\2\2\u0186\u0188\5@!\2\u0187\u0185\3\2\2\2\u0188") - buf.write("\u018b\3\2\2\2\u0189\u0187\3\2\2\2\u0189\u018a\3\2\2\2") - buf.write("\u018a\u018d\3\2\2\2\u018b\u0189\3\2\2\2\u018c\u018e\7") - buf.write("/\2\2\u018d\u018c\3\2\2\2\u018d\u018e\3\2\2\2\u018e\u019b") - buf.write("\3\2\2\2\u018f\u0190\78\2\2\u0190\u0193\5@!\2\u0191\u0192") - buf.write("\7/\2\2\u0192\u0194\5@!\2\u0193\u0191\3\2\2\2\u0194\u0195") - buf.write("\3\2\2\2\u0195\u0193\3\2\2\2\u0195\u0196\3\2\2\2\u0196") - buf.write("\u0198\3\2\2\2\u0197\u0199\7/\2\2\u0198\u0197\3\2\2\2") - buf.write("\u0198\u0199\3\2\2\2\u0199\u019b\3\2\2\2\u019a\u0184\3") - buf.write("\2\2\2\u019a\u018f\3\2\2\2\u019b\u019c\3\2\2\2\u019c\u019d") - buf.write("\b\30\1\2\u019d\u01fb\3\2\2\2\u019e\u019f\7!\2\2\u019f") - buf.write("\u01fb\5\66\34\2\u01a0\u01fb\7\"\2\2\u01a1\u01fb\7$\2") - buf.write("\2\u01a2\u01fb\7#\2\2\u01a3\u01a5\7\7\2\2\u01a4\u01a6") - buf.write("\5X-\2\u01a5\u01a4\3\2\2\2\u01a5\u01a6\3\2\2\2\u01a6\u01fb") - buf.write("\3\2\2\2\u01a7\u01b1\7\b\2\2\u01a8\u01af\5@!\2\u01a9\u01aa") - buf.write("\7/\2\2\u01aa\u01ad\5@!\2\u01ab\u01ac\7/\2\2\u01ac\u01ae") - buf.write("\5@!\2\u01ad\u01ab\3\2\2\2\u01ad\u01ae\3\2\2\2\u01ae\u01b0") - buf.write("\3\2\2\2\u01af\u01a9\3\2\2\2\u01af\u01b0\3\2\2\2\u01b0") - buf.write("\u01b2\3\2\2\2\u01b1\u01a8\3\2\2\2\u01b1\u01b2\3\2\2\2") - buf.write("\u01b2\u01b5\3\2\2\2\u01b3\u01b4\7\t\2\2\u01b4\u01b6\5") - buf.write("@!\2\u01b5\u01b3\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\u01fb") - buf.write("\3\2\2\2\u01b7\u01fb\5b\62\2\u01b8\u01b9\7\n\2\2\u01b9") - buf.write("\u01fb\5<\37\2\u01ba\u01c7\7\t\2\2\u01bb\u01bd\t\3\2\2") - buf.write("\u01bc\u01bb\3\2\2\2\u01bd\u01c0\3\2\2\2\u01be\u01bc\3") - buf.write("\2\2\2\u01be\u01bf\3\2\2\2\u01bf\u01c1\3\2\2\2\u01c0\u01be") - buf.write("\3\2\2\2\u01c1\u01c8\5Z.\2\u01c2\u01c4\t\3\2\2\u01c3\u01c2") - buf.write("\3\2\2\2\u01c4\u01c5\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c5") - buf.write("\u01c6\3\2\2\2\u01c6\u01c8\3\2\2\2\u01c7\u01be\3\2\2\2") - buf.write("\u01c7\u01c3\3\2\2\2\u01c8\u01c9\3\2\2\2\u01c9\u01d0\7") - buf.write("\n\2\2\u01ca\u01d1\7.\2\2\u01cb\u01cc\7\\\2\2\u01cc\u01cd") - buf.write("\58\35\2\u01cd\u01ce\7]\2\2\u01ce\u01d1\3\2\2\2\u01cf") - buf.write("\u01d1\58\35\2\u01d0\u01ca\3\2\2\2\u01d0\u01cb\3\2\2\2") - buf.write("\u01d0\u01cf\3\2\2\2\u01d1\u01fb\3\2\2\2\u01d2\u01d3\7") - buf.write("\r\2\2\u01d3\u01d8\5\\/\2\u01d4\u01d5\7/\2\2\u01d5\u01d7") - buf.write("\5\\/\2\u01d6\u01d4\3\2\2\2\u01d7\u01da\3\2\2\2\u01d8") - buf.write("\u01d6\3\2\2\2\u01d8\u01d9\3\2\2\2\u01d9\u01fb\3\2\2\2") - buf.write("\u01da\u01d8\3\2\2\2\u01db\u01dc\6\30\5\2\u01dc\u01dd") - buf.write("\7(\2\2\u01dd\u01e4\5P)\2\u01de\u01df\7\24\2\2\u01df\u01e2") - buf.write("\5@!\2\u01e0\u01e1\7/\2\2\u01e1\u01e3\5@!\2\u01e2\u01e0") - buf.write("\3\2\2\2\u01e2\u01e3\3\2\2\2\u01e3\u01e5\3\2\2\2\u01e4") - buf.write("\u01de\3\2\2\2\u01e4\u01e5\3\2\2\2\u01e5\u01e6\3\2\2\2") - buf.write("\u01e6\u01e7\b\30\1\2\u01e7\u01fb\3\2\2\2\u01e8\u01e9") - buf.write("\7\16\2\2\u01e9\u01ec\5@!\2\u01ea\u01eb\7/\2\2\u01eb\u01ed") - buf.write("\5@!\2\u01ec\u01ea\3\2\2\2\u01ec\u01ed\3\2\2\2\u01ed\u01fb") - buf.write("\3\2\2\2\u01ee\u01ef\6\30\6\2\u01ef\u01f0\7\13\2\2\u01f0") - buf.write("\u01f5\5\\/\2\u01f1\u01f2\7/\2\2\u01f2\u01f4\5\\/\2\u01f3") - buf.write("\u01f1\3\2\2\2\u01f4\u01f7\3\2\2\2\u01f5\u01f3\3\2\2\2") - buf.write("\u01f5\u01f6\3\2\2\2\u01f6\u01f8\3\2\2\2\u01f7\u01f5\3") - buf.write("\2\2\2\u01f8\u01f9\b\30\1\2\u01f9\u01fb\3\2\2\2\u01fa") - buf.write("\u017e\3\2\2\2\u01fa\u0182\3\2\2\2\u01fa\u019e\3\2\2\2") - buf.write("\u01fa\u01a0\3\2\2\2\u01fa\u01a1\3\2\2\2\u01fa\u01a2\3") - buf.write("\2\2\2\u01fa\u01a3\3\2\2\2\u01fa\u01a7\3\2\2\2\u01fa\u01b7") - buf.write("\3\2\2\2\u01fa\u01b8\3\2\2\2\u01fa\u01ba\3\2\2\2\u01fa") - buf.write("\u01d2\3\2\2\2\u01fa\u01db\3\2\2\2\u01fa\u01e8\3\2\2\2") - buf.write("\u01fa\u01ee\3\2\2\2\u01fb/\3\2\2\2\u01fc\u01ff\5@!\2") - buf.write("\u01fd\u01ff\5\62\32\2\u01fe\u01fc\3\2\2\2\u01fe\u01fd") - buf.write("\3\2\2\2\u01ff\u0200\3\2\2\2\u0200\u0201\7/\2\2\u0201") - buf.write("\u0203\3\2\2\2\u0202\u01fe\3\2\2\2\u0203\u0204\3\2\2\2") - buf.write("\u0204\u0202\3\2\2\2\u0204\u0205\3\2\2\2\u0205\u0208\3") - buf.write("\2\2\2\u0206\u0209\5@!\2\u0207\u0209\5\62\32\2\u0208\u0206") - buf.write("\3\2\2\2\u0208\u0207\3\2\2\2\u0208\u0209\3\2\2\2\u0209") - buf.write("\u020c\3\2\2\2\u020a\u020c\5X-\2\u020b\u0202\3\2\2\2\u020b") - buf.write("\u020a\3\2\2\2\u020c\61\3\2\2\2\u020d\u020e\7.\2\2\u020e") - buf.write("\u020f\5P)\2\u020f\63\3\2\2\2\u0210\u021e\7\63\2\2\u0211") - buf.write("\u0216\5\60\31\2\u0212\u0213\7\63\2\2\u0213\u0215\5\60") - buf.write("\31\2\u0214\u0212\3\2\2\2\u0215\u0218\3\2\2\2\u0216\u0214") - buf.write("\3\2\2\2\u0216\u0217\3\2\2\2\u0217\u021b\3\2\2\2\u0218") - buf.write("\u0216\3\2\2\2\u0219\u021a\7\63\2\2\u021a\u021c\5b\62") - buf.write("\2\u021b\u0219\3\2\2\2\u021b\u021c\3\2\2\2\u021c\u021f") - buf.write("\3\2\2\2\u021d\u021f\5b\62\2\u021e\u0211\3\2\2\2\u021e") - buf.write("\u021d\3\2\2\2\u021f\u022f\3\2\2\2\u0220\u0221\6\33\7") - buf.write("\2\u0221\u0222\7\60\2\2\u0222\u0225\5@!\2\u0223\u0224") - buf.write("\7\63\2\2\u0224\u0226\5X-\2\u0225\u0223\3\2\2\2\u0225") - buf.write("\u0226\3\2\2\2\u0226\u0227\3\2\2\2\u0227\u0228\b\33\1") - buf.write("\2\u0228\u022f\3\2\2\2\u0229\u022c\t\4\2\2\u022a\u022d") - buf.write("\5b\62\2\u022b\u022d\5X-\2\u022c\u022a\3\2\2\2\u022c\u022b") - buf.write("\3\2\2\2\u022d\u022f\3\2\2\2\u022e\u0210\3\2\2\2\u022e") - buf.write("\u0220\3\2\2\2\u022e\u0229\3\2\2\2\u022f\65\3\2\2\2\u0230") - buf.write("\u0235\5P)\2\u0231\u0232\7/\2\2\u0232\u0234\5P)\2\u0233") - buf.write("\u0231\3\2\2\2\u0234\u0237\3\2\2\2\u0235\u0233\3\2\2\2") - buf.write("\u0235\u0236\3\2\2\2\u0236\u0239\3\2\2\2\u0237\u0235\3") - buf.write("\2\2\2\u0238\u023a\7/\2\2\u0239\u0238\3\2\2\2\u0239\u023a") - buf.write("\3\2\2\2\u023a\67\3\2\2\2\u023b\u0240\5:\36\2\u023c\u023d") - buf.write("\7/\2\2\u023d\u023f\5:\36\2\u023e\u023c\3\2\2\2\u023f") - buf.write("\u0242\3\2\2\2\u0240\u023e\3\2\2\2\u0240\u0241\3\2\2\2") - buf.write("\u0241\u0244\3\2\2\2\u0242\u0240\3\2\2\2\u0243\u0245\7") - buf.write("/\2\2\u0244\u0243\3\2\2\2\u0244\u0245\3\2\2\2\u02459\3") - buf.write("\2\2\2\u0246\u0249\5\\/\2\u0247\u0248\7\f\2\2\u0248\u024a") - buf.write("\5\\/\2\u0249\u0247\3\2\2\2\u0249\u024a\3\2\2\2\u024a") - buf.write(";\3\2\2\2\u024b\u0250\5> \2\u024c\u024d\7/\2\2\u024d\u024f") - buf.write("\5> \2\u024e\u024c\3\2\2\2\u024f\u0252\3\2\2\2\u0250\u024e") - buf.write("\3\2\2\2\u0250\u0251\3\2\2\2\u0251=\3\2\2\2\u0252\u0250") - buf.write("\3\2\2\2\u0253\u0256\5Z.\2\u0254\u0255\7\f\2\2\u0255\u0257") - buf.write("\5\\/\2\u0256\u0254\3\2\2\2\u0256\u0257\3\2\2\2\u0257") - buf.write("?\3\2\2\2\u0258\u025e\5L\'\2\u0259\u025a\7\17\2\2\u025a") - buf.write("\u025b\5L\'\2\u025b\u025c\7\21\2\2\u025c\u025d\5@!\2\u025d") - buf.write("\u025f\3\2\2\2\u025e\u0259\3\2\2\2\u025e\u025f\3\2\2\2") - buf.write("\u025f\u0267\3\2\2\2\u0260\u0262\7\32\2\2\u0261\u0263") - buf.write("\5B\"\2\u0262\u0261\3\2\2\2\u0262\u0263\3\2\2\2\u0263") - buf.write("\u0264\3\2\2\2\u0264\u0265\7\60\2\2\u0265\u0267\5@!\2") - buf.write("\u0266\u0258\3\2\2\2\u0266\u0260\3\2\2\2\u0267A\3\2\2") - buf.write("\2\u0268\u0269\5D#\2\u0269\u026a\7/\2\2\u026a\u026c\3") - buf.write("\2\2\2\u026b\u0268\3\2\2\2\u026b\u026c\3\2\2\2\u026c\u0277") - buf.write("\3\2\2\2\u026d\u0270\5H%\2\u026e\u026f\7/\2\2\u026f\u0271") - buf.write("\5D#\2\u0270\u026e\3\2\2\2\u0270\u0271\3\2\2\2\u0271\u0274") - buf.write("\3\2\2\2\u0272\u0273\7/\2\2\u0273\u0275\5J&\2\u0274\u0272") - buf.write("\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0278\3\2\2\2\u0276") - buf.write("\u0278\5J&\2\u0277\u026d\3\2\2\2\u0277\u0276\3\2\2\2\u0278") - buf.write("\u027a\3\2\2\2\u0279\u027b\7/\2\2\u027a\u0279\3\2\2\2") - buf.write("\u027a\u027b\3\2\2\2\u027b\u0281\3\2\2\2\u027c\u027e\5") - buf.write("D#\2\u027d\u027f\7/\2\2\u027e\u027d\3\2\2\2\u027e\u027f") - buf.write("\3\2\2\2\u027f\u0281\3\2\2\2\u0280\u026b\3\2\2\2\u0280") - buf.write("\u027c\3\2\2\2\u0281C\3\2\2\2\u0282\u0287\5F$\2\u0283") - buf.write("\u0284\7/\2\2\u0284\u0286\5F$\2\u0285\u0283\3\2\2\2\u0286") - buf.write("\u0289\3\2\2\2\u0287\u0285\3\2\2\2\u0287\u0288\3\2\2\2") - buf.write("\u0288E\3\2\2\2\u0289\u0287\3\2\2\2\u028a\u028d\5\\/\2") - buf.write("\u028b\u028c\7\63\2\2\u028c\u028e\5@!\2\u028d\u028b\3") - buf.write("\2\2\2\u028d\u028e\3\2\2\2\u028e\u0291\3\2\2\2\u028f\u0291") - buf.write("\7.\2\2\u0290\u028a\3\2\2\2\u0290\u028f\3\2\2\2\u0291") - buf.write("G\3\2\2\2\u0292\u0293\7.\2\2\u0293\u0294\5\\/\2\u0294") - buf.write("I\3\2\2\2\u0295\u0296\7\62\2\2\u0296\u0297\5\\/\2\u0297") - buf.write("K\3\2\2\2\u0298\u0299\b\'\1\2\u0299\u029d\5N(\2\u029a") - buf.write("\u029b\7\35\2\2\u029b\u029d\5L\'\5\u029c\u0298\3\2\2\2") - buf.write("\u029c\u029a\3\2\2\2\u029d\u02a6\3\2\2\2\u029e\u029f\f") - buf.write("\4\2\2\u029f\u02a0\7\34\2\2\u02a0\u02a5\5L\'\5\u02a1\u02a2") - buf.write("\f\3\2\2\u02a2\u02a3\7\33\2\2\u02a3\u02a5\5L\'\4\u02a4") - buf.write("\u029e\3\2\2\2\u02a4\u02a1\3\2\2\2\u02a5\u02a8\3\2\2\2") - buf.write("\u02a6\u02a4\3\2\2\2\u02a6\u02a7\3\2\2\2\u02a7M\3\2\2") - buf.write("\2\u02a8\u02a6\3\2\2\2\u02a9\u02aa\b(\1\2\u02aa\u02ab") - buf.write("\5P)\2\u02ab\u02c1\3\2\2\2\u02ac\u02bc\f\4\2\2\u02ad\u02bd") - buf.write("\7?\2\2\u02ae\u02bd\7@\2\2\u02af\u02bd\7A\2\2\u02b0\u02bd") - buf.write("\7B\2\2\u02b1\u02bd\7C\2\2\u02b2\u02bd\7D\2\2\u02b3\u02bd") - buf.write("\7E\2\2\u02b4\u02b6\7\35\2\2\u02b5\u02b4\3\2\2\2\u02b5") - buf.write("\u02b6\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02bd\7\24\2") - buf.write("\2\u02b8\u02ba\7\36\2\2\u02b9\u02bb\7\35\2\2\u02ba\u02b9") - buf.write("\3\2\2\2\u02ba\u02bb\3\2\2\2\u02bb\u02bd\3\2\2\2\u02bc") - buf.write("\u02ad\3\2\2\2\u02bc\u02ae\3\2\2\2\u02bc\u02af\3\2\2\2") - buf.write("\u02bc\u02b0\3\2\2\2\u02bc\u02b1\3\2\2\2\u02bc\u02b2\3") - buf.write("\2\2\2\u02bc\u02b3\3\2\2\2\u02bc\u02b5\3\2\2\2\u02bc\u02b8") - buf.write("\3\2\2\2\u02bd\u02be\3\2\2\2\u02be\u02c0\5N(\5\u02bf\u02ac") - buf.write("\3\2\2\2\u02c0\u02c3\3\2\2\2\u02c1\u02bf\3\2\2\2\u02c1") - buf.write("\u02c2\3\2\2\2\u02c2O\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c4") - buf.write("\u02c6\b)\1\2\u02c5\u02c7\7&\2\2\u02c6\u02c5\3\2\2\2\u02c6") - buf.write("\u02c7\3\2\2\2\u02c7\u02c8\3\2\2\2\u02c8\u02cc\5R*\2\u02c9") - buf.write("\u02cb\5f\64\2\u02ca\u02c9\3\2\2\2\u02cb\u02ce\3\2\2\2") - buf.write("\u02cc\u02ca\3\2\2\2\u02cc\u02cd\3\2\2\2\u02cd\u02d2\3") - buf.write("\2\2\2\u02ce\u02cc\3\2\2\2\u02cf\u02d0\t\5\2\2\u02d0\u02d2") - buf.write("\5P)\t\u02d1\u02c4\3\2\2\2\u02d1\u02cf\3\2\2\2\u02d2\u02ea") - buf.write("\3\2\2\2\u02d3\u02d4\f\n\2\2\u02d4\u02d5\7\62\2\2\u02d5") - buf.write("\u02e9\5P)\n\u02d6\u02d7\f\b\2\2\u02d7\u02d8\t\6\2\2\u02d8") - buf.write("\u02e9\5P)\t\u02d9\u02da\f\7\2\2\u02da\u02db\t\7\2\2\u02db") - buf.write("\u02e9\5P)\b\u02dc\u02dd\f\6\2\2\u02dd\u02de\t\b\2\2\u02de") - buf.write("\u02e9\5P)\7\u02df\u02e0\f\5\2\2\u02e0\u02e1\7\66\2\2") - buf.write("\u02e1\u02e9\5P)\6\u02e2\u02e3\f\4\2\2\u02e3\u02e4\7\65") - buf.write("\2\2\u02e4\u02e9\5P)\5\u02e5\u02e6\f\3\2\2\u02e6\u02e7") - buf.write("\7\64\2\2\u02e7\u02e9\5P)\4\u02e8\u02d3\3\2\2\2\u02e8") - buf.write("\u02d6\3\2\2\2\u02e8\u02d9\3\2\2\2\u02e8\u02dc\3\2\2\2") - buf.write("\u02e8\u02df\3\2\2\2\u02e8\u02e2\3\2\2\2\u02e8\u02e5\3") - buf.write("\2\2\2\u02e9\u02ec\3\2\2\2\u02ea\u02e8\3\2\2\2\u02ea\u02eb") - buf.write("\3\2\2\2\u02ebQ\3\2\2\2\u02ec\u02ea\3\2\2\2\u02ed\u02f0") - buf.write("\7\\\2\2\u02ee\u02f1\5b\62\2\u02ef\u02f1\5V,\2\u02f0\u02ee") - buf.write("\3\2\2\2\u02f0\u02ef\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1") - buf.write("\u02f2\3\2\2\2\u02f2\u0313\7]\2\2\u02f3\u02f5\7`\2\2\u02f4") - buf.write("\u02f6\5V,\2\u02f5\u02f4\3\2\2\2\u02f5\u02f6\3\2\2\2\u02f6") - buf.write("\u02f7\3\2\2\2\u02f7\u0313\7a\2\2\u02f8\u02fa\7^\2\2\u02f9") - buf.write("\u02fb\5T+\2\u02fa\u02f9\3\2\2\2\u02fa\u02fb\3\2\2\2\u02fb") - buf.write("\u02fc\3\2\2\2\u02fc\u0313\7_\2\2\u02fd\u02fe\7-\2\2\u02fe") - buf.write("\u0300\5X-\2\u02ff\u0301\7/\2\2\u0300\u02ff\3\2\2\2\u0300") - buf.write("\u0301\3\2\2\2\u0301\u0302\3\2\2\2\u0302\u0303\7-\2\2") - buf.write("\u0303\u0313\3\2\2\2\u0304\u0313\7,\2\2\u0305\u0313\5") - buf.write("\\/\2\u0306\u0313\7\'\2\2\u0307\u0313\7(\2\2\u0308\u030a") - buf.write("\7:\2\2\u0309\u0308\3\2\2\2\u0309\u030a\3\2\2\2\u030a") - buf.write("\u030b\3\2\2\2\u030b\u0313\5^\60\2\u030c\u0313\7\26\2") - buf.write("\2\u030d\u030f\7U\2\2\u030e\u030d\3\2\2\2\u030f\u0310") - buf.write("\3\2\2\2\u0310\u030e\3\2\2\2\u0310\u0311\3\2\2\2\u0311") - buf.write("\u0313\3\2\2\2\u0312\u02ed\3\2\2\2\u0312\u02f3\3\2\2\2") - buf.write("\u0312\u02f8\3\2\2\2\u0312\u02fd\3\2\2\2\u0312\u0304\3") - buf.write("\2\2\2\u0312\u0305\3\2\2\2\u0312\u0306\3\2\2\2\u0312\u0307") - buf.write("\3\2\2\2\u0312\u0309\3\2\2\2\u0312\u030c\3\2\2\2\u0312") - buf.write("\u030e\3\2\2\2\u0313S\3\2\2\2\u0314\u0315\5@!\2\u0315") - buf.write("\u0316\7\60\2\2\u0316\u0317\5@!\2\u0317\u031b\3\2\2\2") - buf.write("\u0318\u0319\7\62\2\2\u0319\u031b\5P)\2\u031a\u0314\3") - buf.write("\2\2\2\u031a\u0318\3\2\2\2\u031b\u0327\3\2\2\2\u031c\u0323") - buf.write("\7/\2\2\u031d\u031e\5@!\2\u031e\u031f\7\60\2\2\u031f\u0320") - buf.write("\5@!\2\u0320\u0324\3\2\2\2\u0321\u0322\7\62\2\2\u0322") - buf.write("\u0324\5P)\2\u0323\u031d\3\2\2\2\u0323\u0321\3\2\2\2\u0324") - buf.write("\u0326\3\2\2\2\u0325\u031c\3\2\2\2\u0326\u0329\3\2\2\2") - buf.write("\u0327\u0325\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u032b\3") - buf.write("\2\2\2\u0329\u0327\3\2\2\2\u032a\u032c\7/\2\2\u032b\u032a") - buf.write("\3\2\2\2\u032b\u032c\3\2\2\2\u032c\u0334\3\2\2\2\u032d") - buf.write("\u032e\5@!\2\u032e\u032f\7\60\2\2\u032f\u0330\5@!\2\u0330") - buf.write("\u0331\5t;\2\u0331\u0334\3\2\2\2\u0332\u0334\5V,\2\u0333") - buf.write("\u031a\3\2\2\2\u0333\u032d\3\2\2\2\u0333\u0332\3\2\2\2") - buf.write("\u0334U\3\2\2\2\u0335\u0338\5@!\2\u0336\u0338\5\62\32") - buf.write("\2\u0337\u0335\3\2\2\2\u0337\u0336\3\2\2\2\u0338\u0347") - buf.write("\3\2\2\2\u0339\u0348\5t;\2\u033a\u033d\7/\2\2\u033b\u033e") - buf.write("\5@!\2\u033c\u033e\5\62\32\2\u033d\u033b\3\2\2\2\u033d") - buf.write("\u033c\3\2\2\2\u033e\u0340\3\2\2\2\u033f\u033a\3\2\2\2") - buf.write("\u0340\u0343\3\2\2\2\u0341\u033f\3\2\2\2\u0341\u0342\3") - buf.write("\2\2\2\u0342\u0345\3\2\2\2\u0343\u0341\3\2\2\2\u0344\u0346") - buf.write("\7/\2\2\u0345\u0344\3\2\2\2\u0345\u0346\3\2\2\2\u0346") - buf.write("\u0348\3\2\2\2\u0347\u0339\3\2\2\2\u0347\u0341\3\2\2\2") - buf.write("\u0348W\3\2\2\2\u0349\u034e\5@!\2\u034a\u034b\7/\2\2\u034b") - buf.write("\u034d\5@!\2\u034c\u034a\3\2\2\2\u034d\u0350\3\2\2\2\u034e") - buf.write("\u034c\3\2\2\2\u034e\u034f\3\2\2\2\u034f\u0352\3\2\2\2") - buf.write("\u0350\u034e\3\2\2\2\u0351\u0353\7/\2\2\u0352\u0351\3") - buf.write("\2\2\2\u0352\u0353\3\2\2\2\u0353Y\3\2\2\2\u0354\u0355") - buf.write("\b.\1\2\u0355\u0356\5\\/\2\u0356\u035c\3\2\2\2\u0357\u0358") - buf.write("\f\4\2\2\u0358\u0359\7+\2\2\u0359\u035b\5\\/\2\u035a\u0357") - buf.write("\3\2\2\2\u035b\u035e\3\2\2\2\u035c\u035a\3\2\2\2\u035c") - buf.write("\u035d\3\2\2\2\u035d[\3\2\2\2\u035e\u035c\3\2\2\2\u035f") - buf.write("\u0360\t\t\2\2\u0360]\3\2\2\2\u0361\u0365\5`\61\2\u0362") - buf.write("\u0365\7Z\2\2\u0363\u0365\7[\2\2\u0364\u0361\3\2\2\2\u0364") - buf.write("\u0362\3\2\2\2\u0364\u0363\3\2\2\2\u0365_\3\2\2\2\u0366") - buf.write("\u0367\t\n\2\2\u0367a\3\2\2\2\u0368\u036a\7 \2\2\u0369") - buf.write("\u036b\5d\63\2\u036a\u0369\3\2\2\2\u036a\u036b\3\2\2\2") - buf.write("\u036bc\3\2\2\2\u036c\u036d\7\t\2\2\u036d\u0370\5@!\2") - buf.write("\u036e\u0370\5X-\2\u036f\u036c\3\2\2\2\u036f\u036e\3\2") - buf.write("\2\2\u0370e\3\2\2\2\u0371\u0372\7+\2\2\u0372\u0374\5\\") - buf.write("/\2\u0373\u0375\5h\65\2\u0374\u0373\3\2\2\2\u0374\u0375") - buf.write("\3\2\2\2\u0375\u0378\3\2\2\2\u0376\u0378\5h\65\2\u0377") - buf.write("\u0371\3\2\2\2\u0377\u0376\3\2\2\2\u0378g\3\2\2\2\u0379") - buf.write("\u037b\7\\\2\2\u037a\u037c\5j\66\2\u037b\u037a\3\2\2\2") - buf.write("\u037b\u037c\3\2\2\2\u037c\u037d\3\2\2\2\u037d\u0383\7") - buf.write("]\2\2\u037e\u037f\7`\2\2\u037f\u0380\5n8\2\u0380\u0381") - buf.write("\7a\2\2\u0381\u0383\3\2\2\2\u0382\u0379\3\2\2\2\u0382") - buf.write("\u037e\3\2\2\2\u0383i\3\2\2\2\u0384\u0389\5l\67\2\u0385") - buf.write("\u0386\7/\2\2\u0386\u0388\5l\67\2\u0387\u0385\3\2\2\2") - buf.write("\u0388\u038b\3\2\2\2\u0389\u0387\3\2\2\2\u0389\u038a\3") - buf.write("\2\2\2\u038a\u038d\3\2\2\2\u038b\u0389\3\2\2\2\u038c\u038e") - buf.write("\7/\2\2\u038d\u038c\3\2\2\2\u038d\u038e\3\2\2\2\u038e") - buf.write("k\3\2\2\2\u038f\u0393\5@!\2\u0390\u0394\5t;\2\u0391\u0392") - buf.write("\7\63\2\2\u0392\u0394\5@!\2\u0393\u0390\3\2\2\2\u0393") - buf.write("\u0391\3\2\2\2\u0393\u0394\3\2\2\2\u0394\u0398\3\2\2\2") - buf.write("\u0395\u0396\t\13\2\2\u0396\u0398\5@!\2\u0397\u038f\3") - buf.write("\2\2\2\u0397\u0395\3\2\2\2\u0398m\3\2\2\2\u0399\u039e") - buf.write("\5p9\2\u039a\u039b\7/\2\2\u039b\u039d\5p9\2\u039c\u039a") - buf.write("\3\2\2\2\u039d\u03a0\3\2\2\2\u039e\u039c\3\2\2\2\u039e") - buf.write("\u039f\3\2\2\2\u039f\u03a2\3\2\2\2\u03a0\u039e\3\2\2\2") - buf.write("\u03a1\u03a3\7/\2\2\u03a2\u03a1\3\2\2\2\u03a2\u03a3\3") - buf.write("\2\2\2\u03a3o\3\2\2\2\u03a4\u03b7\7,\2\2\u03a5\u03ad\5") - buf.write("@!\2\u03a6\u03a8\7\60\2\2\u03a7\u03a9\5@!\2\u03a8\u03a7") - buf.write("\3\2\2\2\u03a8\u03a9\3\2\2\2\u03a9\u03ab\3\2\2\2\u03aa") - buf.write("\u03ac\5r:\2\u03ab\u03aa\3\2\2\2\u03ab\u03ac\3\2\2\2\u03ac") - buf.write("\u03ae\3\2\2\2\u03ad\u03a6\3\2\2\2\u03ad\u03ae\3\2\2\2") - buf.write("\u03ae\u03b7\3\2\2\2\u03af\u03b1\7\60\2\2\u03b0\u03b2") - buf.write("\5@!\2\u03b1\u03b0\3\2\2\2\u03b1\u03b2\3\2\2\2\u03b2\u03b4") - buf.write("\3\2\2\2\u03b3\u03b5\5r:\2\u03b4\u03b3\3\2\2\2\u03b4\u03b5") - buf.write("\3\2\2\2\u03b5\u03b7\3\2\2\2\u03b6\u03a4\3\2\2\2\u03b6") - buf.write("\u03a5\3\2\2\2\u03b6\u03af\3\2\2\2\u03b7q\3\2\2\2\u03b8") - buf.write("\u03ba\7\60\2\2\u03b9\u03bb\5@!\2\u03ba\u03b9\3\2\2\2") - buf.write("\u03ba\u03bb\3\2\2\2\u03bbs\3\2\2\2\u03bc\u03bd\7\23\2") - buf.write("\2\u03bd\u03be\5\66\34\2\u03be\u03bf\7\24\2\2\u03bf\u03c1") - buf.write("\5L\'\2\u03c0\u03c2\5v<\2\u03c1\u03c0\3\2\2\2\u03c1\u03c2") - buf.write("\3\2\2\2\u03c2u\3\2\2\2\u03c3\u03ca\5t;\2\u03c4\u03c5") - buf.write("\7\17\2\2\u03c5\u03c7\5@!\2\u03c6\u03c8\5v<\2\u03c7\u03c6") - buf.write("\3\2\2\2\u03c7\u03c8\3\2\2\2\u03c8\u03ca\3\2\2\2\u03c9") - buf.write("\u03c3\3\2\2\2\u03c9\u03c4\3\2\2\2\u03caw\3\2\2\2\u0099") - buf.write("{\u0084\u0088\u008a\u0090\u0095\u009e\u00a2\u00a9\u00ac") - buf.write("\u00b5\u00bd\u00c0\u00c3\u00c6\u00c9\u00d1\u00da\u00df") - buf.write("\u00e1\u00e9\u00ed\u00f3\u00f6\u010a\u0118\u011a\u0123") - buf.write("\u0126\u012c\u0132\u0137\u013f\u0144\u0148\u014b\u014e") - buf.write("\u0152\u0154\u0161\u0167\u016a\u016f\u0176\u017a\u0180") - buf.write("\u0189\u018d\u0195\u0198\u019a\u01a5\u01ad\u01af\u01b1") - buf.write("\u01b5\u01be\u01c5\u01c7\u01d0\u01d8\u01e2\u01e4\u01ec") - buf.write("\u01f5\u01fa\u01fe\u0204\u0208\u020b\u0216\u021b\u021e") - buf.write("\u0225\u022c\u022e\u0235\u0239\u0240\u0244\u0249\u0250") - buf.write("\u0256\u025e\u0262\u0266\u026b\u0270\u0274\u0277\u027a") - buf.write("\u027e\u0280\u0287\u028d\u0290\u029c\u02a4\u02a6\u02b5") - buf.write("\u02ba\u02bc\u02c1\u02c6\u02cc\u02d1\u02e8\u02ea\u02f0") - buf.write("\u02f5\u02fa\u0300\u0309\u0310\u0312\u031a\u0323\u0327") - buf.write("\u032b\u0333\u0337\u033d\u0341\u0345\u0347\u034e\u0352") - buf.write("\u035c\u0364\u036a\u036f\u0374\u0377\u037b\u0382\u0389") - buf.write("\u038d\u0393\u0397\u039e\u03a2\u03a8\u03ab\u03ad\u03b1") - buf.write("\u03b4\u03b6\u03ba\u03c1\u03c7\u03c9") - return buf.getvalue() - + return [ + 4,1,100,970,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,1, + 0,1,0,1,0,3,0,122,8,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,3,1,131,8,1,1, + 2,1,2,4,2,135,8,2,11,2,12,2,136,1,3,1,3,5,3,141,8,3,10,3,12,3,144, + 9,3,1,4,1,4,3,4,148,8,4,1,5,1,5,1,5,1,5,1,5,5,5,155,8,5,10,5,12, + 5,158,9,5,1,5,3,5,161,8,5,1,5,1,5,1,5,1,5,1,5,3,5,168,8,5,1,5,3, + 5,171,8,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,180,8,5,1,5,1,5,1,5,1, + 5,4,5,186,8,5,11,5,12,5,187,1,5,3,5,191,8,5,1,5,3,5,194,8,5,1,5, + 3,5,197,8,5,1,5,3,5,200,8,5,1,5,1,5,1,5,1,5,5,5,206,8,5,10,5,12, + 5,209,9,5,1,5,1,5,1,5,1,5,5,5,215,8,5,10,5,12,5,218,9,5,1,5,1,5, + 3,5,222,8,5,3,5,224,8,5,1,6,1,6,1,6,1,6,4,6,230,8,6,11,6,12,6,231, + 1,6,1,6,3,6,236,8,6,1,7,1,7,1,7,1,7,3,7,242,8,7,1,7,3,7,245,8,7, + 1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10, + 1,11,1,11,1,11,3,11,265,8,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12, + 1,12,1,12,1,12,1,12,1,12,3,12,279,8,12,3,12,281,8,12,1,12,1,12,1, + 12,1,13,1,13,1,13,1,13,3,13,290,8,13,1,13,3,13,293,8,13,1,13,1,13, + 1,13,1,14,3,14,299,8,14,1,14,1,14,1,14,1,14,3,14,305,8,14,1,14,1, + 14,1,14,3,14,310,8,14,1,14,1,14,1,14,1,15,1,15,1,15,3,15,318,8,15, + 1,15,1,15,1,15,3,15,323,8,15,1,15,1,15,3,15,327,8,15,1,15,3,15,330, + 8,15,1,15,3,15,333,8,15,1,15,1,15,3,15,337,8,15,3,15,339,8,15,1, + 16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,5,18,350,8,18,10,18,12, + 18,353,9,18,1,19,1,19,1,19,3,19,358,8,19,1,19,3,19,361,8,19,1,20, + 1,20,1,20,3,20,366,8,20,1,21,1,21,1,21,5,21,371,8,21,10,21,12,21, + 374,9,21,1,21,3,21,377,8,21,1,21,1,21,1,22,1,22,3,22,383,8,22,1, + 22,1,22,1,22,1,22,1,22,5,22,390,8,22,10,22,12,22,393,9,22,1,22,3, + 22,396,8,22,1,22,1,22,1,22,1,22,4,22,402,8,22,11,22,12,22,403,1, + 22,3,22,407,8,22,3,22,409,8,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22, + 1,22,1,22,3,22,420,8,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,428,8, + 22,3,22,430,8,22,3,22,432,8,22,1,22,1,22,3,22,436,8,22,1,22,1,22, + 1,22,1,22,1,22,5,22,443,8,22,10,22,12,22,446,9,22,1,22,1,22,4,22, + 450,8,22,11,22,12,22,451,3,22,454,8,22,1,22,1,22,1,22,1,22,1,22, + 1,22,1,22,3,22,463,8,22,1,22,1,22,1,22,1,22,5,22,469,8,22,10,22, + 12,22,472,9,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,481,8,22, + 3,22,483,8,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,491,8,22,1,22,1, + 22,1,22,1,22,1,22,5,22,498,8,22,10,22,12,22,501,9,22,1,22,1,22,3, + 22,505,8,22,1,23,1,23,3,23,509,8,23,1,23,1,23,4,23,513,8,23,11,23, + 12,23,514,1,23,1,23,3,23,519,8,23,1,23,3,23,522,8,23,1,24,1,24,1, + 24,1,25,1,25,1,25,1,25,5,25,531,8,25,10,25,12,25,534,9,25,1,25,1, + 25,3,25,538,8,25,1,25,3,25,541,8,25,1,25,1,25,1,25,1,25,1,25,3,25, + 548,8,25,1,25,1,25,1,25,1,25,1,25,3,25,555,8,25,3,25,557,8,25,1, + 26,1,26,1,26,5,26,562,8,26,10,26,12,26,565,9,26,1,26,3,26,568,8, + 26,1,27,1,27,1,27,5,27,573,8,27,10,27,12,27,576,9,27,1,27,3,27,579, + 8,27,1,28,1,28,1,28,3,28,584,8,28,1,29,1,29,1,29,5,29,589,8,29,10, + 29,12,29,592,9,29,1,30,1,30,1,30,3,30,597,8,30,1,31,1,31,1,31,1, + 31,1,31,1,31,3,31,605,8,31,1,31,1,31,3,31,609,8,31,1,31,1,31,3,31, + 613,8,31,1,32,1,32,1,32,3,32,618,8,32,1,32,1,32,1,32,3,32,623,8, + 32,1,32,1,32,3,32,627,8,32,1,32,3,32,630,8,32,1,32,3,32,633,8,32, + 1,32,1,32,3,32,637,8,32,3,32,639,8,32,1,33,1,33,1,33,5,33,644,8, + 33,10,33,12,33,647,9,33,1,34,1,34,1,34,3,34,652,8,34,1,34,3,34,655, + 8,34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37,1,37,1,37,3,37,667, + 8,37,1,37,1,37,1,37,1,37,1,37,1,37,5,37,675,8,37,10,37,12,37,678, + 9,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 3,38,692,8,38,1,38,1,38,1,38,3,38,697,8,38,3,38,699,8,38,1,38,5, + 38,702,8,38,10,38,12,38,705,9,38,1,39,1,39,3,39,709,8,39,1,39,1, + 39,5,39,713,8,39,10,39,12,39,716,9,39,1,39,1,39,3,39,720,8,39,1, + 39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1, + 39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,5,39,743,8,39,10,39,12,39, + 746,9,39,1,40,1,40,1,40,3,40,751,8,40,1,40,1,40,1,40,3,40,756,8, + 40,1,40,1,40,1,40,3,40,761,8,40,1,40,1,40,1,40,1,40,3,40,767,8,40, + 1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,776,8,40,1,40,1,40,1,40, + 4,40,781,8,40,11,40,12,40,782,3,40,785,8,40,1,41,1,41,1,41,1,41, + 1,41,1,41,3,41,793,8,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41, + 802,8,41,5,41,804,8,41,10,41,12,41,807,9,41,1,41,3,41,810,8,41,1, + 41,1,41,1,41,1,41,1,41,1,41,3,41,818,8,41,1,42,1,42,3,42,822,8,42, + 1,42,1,42,1,42,1,42,3,42,828,8,42,5,42,830,8,42,10,42,12,42,833, + 9,42,1,42,3,42,836,8,42,3,42,838,8,42,1,43,1,43,1,43,5,43,843,8, + 43,10,43,12,43,846,9,43,1,43,3,43,849,8,43,1,44,1,44,1,44,1,44,1, + 44,1,44,5,44,857,8,44,10,44,12,44,860,9,44,1,45,1,45,1,46,1,46,1, + 46,3,46,867,8,46,1,47,1,47,1,48,1,48,3,48,873,8,48,1,49,1,49,1,49, + 3,49,878,8,49,1,50,1,50,1,50,3,50,883,8,50,1,50,3,50,886,8,50,1, + 51,1,51,3,51,890,8,51,1,51,1,51,1,51,1,51,1,51,3,51,897,8,51,1,52, + 1,52,1,52,5,52,902,8,52,10,52,12,52,905,9,52,1,52,3,52,908,8,52, + 1,53,1,53,1,53,1,53,3,53,914,8,53,1,53,1,53,3,53,918,8,53,1,54,1, + 54,1,54,5,54,923,8,54,10,54,12,54,926,9,54,1,54,3,54,929,8,54,1, + 55,1,55,1,55,1,55,3,55,935,8,55,1,55,3,55,938,8,55,3,55,940,8,55, + 1,55,1,55,3,55,944,8,55,1,55,3,55,947,8,55,3,55,949,8,55,1,56,1, + 56,3,56,953,8,56,1,57,1,57,1,57,1,57,1,57,3,57,960,8,57,1,58,1,58, + 1,58,1,58,3,58,966,8,58,3,58,968,8,58,1,58,0,4,74,76,78,88,59,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,0,10,1,1,3,3,1,0, + 41,42,1,0,70,82,2,0,55,56,60,60,3,0,44,44,57,59,68,68,1,0,55,56, + 1,0,53,54,2,0,39,40,96,96,1,0,84,87,2,0,44,44,48,48,1111,0,121,1, + 0,0,0,2,130,1,0,0,0,4,134,1,0,0,0,6,138,1,0,0,0,8,147,1,0,0,0,10, + 223,1,0,0,0,12,235,1,0,0,0,14,237,1,0,0,0,16,248,1,0,0,0,18,253, + 1,0,0,0,20,257,1,0,0,0,22,261,1,0,0,0,24,266,1,0,0,0,26,285,1,0, + 0,0,28,298,1,0,0,0,30,338,1,0,0,0,32,340,1,0,0,0,34,343,1,0,0,0, + 36,346,1,0,0,0,38,360,1,0,0,0,40,362,1,0,0,0,42,367,1,0,0,0,44,504, + 1,0,0,0,46,521,1,0,0,0,48,523,1,0,0,0,50,556,1,0,0,0,52,558,1,0, + 0,0,54,569,1,0,0,0,56,580,1,0,0,0,58,585,1,0,0,0,60,593,1,0,0,0, + 62,612,1,0,0,0,64,638,1,0,0,0,66,640,1,0,0,0,68,654,1,0,0,0,70,656, + 1,0,0,0,72,659,1,0,0,0,74,666,1,0,0,0,76,679,1,0,0,0,78,719,1,0, + 0,0,80,784,1,0,0,0,82,817,1,0,0,0,84,821,1,0,0,0,86,839,1,0,0,0, + 88,850,1,0,0,0,90,861,1,0,0,0,92,866,1,0,0,0,94,868,1,0,0,0,96,870, + 1,0,0,0,98,877,1,0,0,0,100,885,1,0,0,0,102,896,1,0,0,0,104,898,1, + 0,0,0,106,917,1,0,0,0,108,919,1,0,0,0,110,948,1,0,0,0,112,950,1, + 0,0,0,114,954,1,0,0,0,116,967,1,0,0,0,118,122,3,2,1,0,119,122,3, + 4,2,0,120,122,3,6,3,0,121,118,1,0,0,0,121,119,1,0,0,0,121,120,1, + 0,0,0,121,122,1,0,0,0,122,123,1,0,0,0,123,124,5,0,0,1,124,1,1,0, + 0,0,125,131,5,3,0,0,126,131,3,42,21,0,127,128,3,10,5,0,128,129,5, + 3,0,0,129,131,1,0,0,0,130,125,1,0,0,0,130,126,1,0,0,0,130,127,1, + 0,0,0,131,3,1,0,0,0,132,135,5,3,0,0,133,135,3,8,4,0,134,132,1,0, + 0,0,134,133,1,0,0,0,135,136,1,0,0,0,136,134,1,0,0,0,136,137,1,0, + 0,0,137,5,1,0,0,0,138,142,3,86,43,0,139,141,5,3,0,0,140,139,1,0, + 0,0,141,144,1,0,0,0,142,140,1,0,0,0,142,143,1,0,0,0,143,7,1,0,0, + 0,144,142,1,0,0,0,145,148,3,42,21,0,146,148,3,10,5,0,147,145,1,0, + 0,0,147,146,1,0,0,0,148,9,1,0,0,0,149,150,5,13,0,0,150,151,3,62, + 31,0,151,152,5,46,0,0,152,156,3,12,6,0,153,155,3,16,8,0,154,153, + 1,0,0,0,155,158,1,0,0,0,156,154,1,0,0,0,156,157,1,0,0,0,157,160, + 1,0,0,0,158,156,1,0,0,0,159,161,3,18,9,0,160,159,1,0,0,0,160,161, + 1,0,0,0,161,224,1,0,0,0,162,163,5,16,0,0,163,164,3,62,31,0,164,165, + 5,46,0,0,165,167,3,12,6,0,166,168,3,18,9,0,167,166,1,0,0,0,167,168, + 1,0,0,0,168,224,1,0,0,0,169,171,5,35,0,0,170,169,1,0,0,0,170,171, + 1,0,0,0,171,172,1,0,0,0,172,173,5,17,0,0,173,174,3,52,26,0,174,175, + 5,18,0,0,175,176,3,86,43,0,176,177,5,46,0,0,177,179,3,12,6,0,178, + 180,3,18,9,0,179,178,1,0,0,0,179,180,1,0,0,0,180,224,1,0,0,0,181, + 182,5,19,0,0,182,183,5,46,0,0,183,196,3,12,6,0,184,186,3,24,12,0, + 185,184,1,0,0,0,186,187,1,0,0,0,187,185,1,0,0,0,187,188,1,0,0,0, + 188,190,1,0,0,0,189,191,3,18,9,0,190,189,1,0,0,0,190,191,1,0,0,0, + 191,193,1,0,0,0,192,194,3,20,10,0,193,192,1,0,0,0,193,194,1,0,0, + 0,194,197,1,0,0,0,195,197,3,20,10,0,196,185,1,0,0,0,196,195,1,0, + 0,0,197,224,1,0,0,0,198,200,5,35,0,0,199,198,1,0,0,0,199,200,1,0, + 0,0,200,201,1,0,0,0,201,202,5,22,0,0,202,207,3,22,11,0,203,204,5, + 45,0,0,204,206,3,22,11,0,205,203,1,0,0,0,206,209,1,0,0,0,207,205, + 1,0,0,0,207,208,1,0,0,0,208,210,1,0,0,0,209,207,1,0,0,0,210,211, + 5,46,0,0,211,212,3,12,6,0,212,224,1,0,0,0,213,215,3,14,7,0,214,213, + 1,0,0,0,215,218,1,0,0,0,216,214,1,0,0,0,216,217,1,0,0,0,217,221, + 1,0,0,0,218,216,1,0,0,0,219,222,3,26,13,0,220,222,3,28,14,0,221, + 219,1,0,0,0,221,220,1,0,0,0,222,224,1,0,0,0,223,149,1,0,0,0,223, + 162,1,0,0,0,223,170,1,0,0,0,223,181,1,0,0,0,223,199,1,0,0,0,223, + 216,1,0,0,0,224,11,1,0,0,0,225,236,3,42,21,0,226,227,5,3,0,0,227, + 229,5,1,0,0,228,230,3,8,4,0,229,228,1,0,0,0,230,231,1,0,0,0,231, + 229,1,0,0,0,231,232,1,0,0,0,232,233,1,0,0,0,233,234,5,2,0,0,234, + 236,1,0,0,0,235,225,1,0,0,0,235,226,1,0,0,0,236,13,1,0,0,0,237,238, + 5,68,0,0,238,244,3,88,44,0,239,241,5,90,0,0,240,242,3,104,52,0,241, + 240,1,0,0,0,241,242,1,0,0,0,242,243,1,0,0,0,243,245,5,91,0,0,244, + 239,1,0,0,0,244,245,1,0,0,0,245,246,1,0,0,0,246,247,5,3,0,0,247, + 15,1,0,0,0,248,249,5,14,0,0,249,250,3,62,31,0,250,251,5,46,0,0,251, + 252,3,12,6,0,252,17,1,0,0,0,253,254,5,15,0,0,254,255,5,46,0,0,255, + 256,3,12,6,0,256,19,1,0,0,0,257,258,5,21,0,0,258,259,5,46,0,0,259, + 260,3,12,6,0,260,21,1,0,0,0,261,264,3,62,31,0,262,263,5,10,0,0,263, + 265,3,78,39,0,264,262,1,0,0,0,264,265,1,0,0,0,265,23,1,0,0,0,266, + 280,5,23,0,0,267,278,3,62,31,0,268,269,4,12,0,0,269,270,5,45,0,0, + 270,271,3,90,45,0,271,272,6,12,-1,0,272,279,1,0,0,0,273,274,4,12, + 1,0,274,275,5,10,0,0,275,276,3,90,45,0,276,277,6,12,-1,0,277,279, + 1,0,0,0,278,268,1,0,0,0,278,273,1,0,0,0,278,279,1,0,0,0,279,281, + 1,0,0,0,280,267,1,0,0,0,280,281,1,0,0,0,281,282,1,0,0,0,282,283, + 5,46,0,0,283,284,3,12,6,0,284,25,1,0,0,0,285,286,5,29,0,0,286,292, + 3,90,45,0,287,289,5,90,0,0,288,290,3,104,52,0,289,288,1,0,0,0,289, + 290,1,0,0,0,290,291,1,0,0,0,291,293,5,91,0,0,292,287,1,0,0,0,292, + 293,1,0,0,0,293,294,1,0,0,0,294,295,5,46,0,0,295,296,3,12,6,0,296, + 27,1,0,0,0,297,299,5,35,0,0,298,297,1,0,0,0,298,299,1,0,0,0,299, + 300,1,0,0,0,300,301,5,4,0,0,301,302,3,90,45,0,302,304,5,90,0,0,303, + 305,3,30,15,0,304,303,1,0,0,0,304,305,1,0,0,0,305,306,1,0,0,0,306, + 309,5,91,0,0,307,308,5,69,0,0,308,310,3,62,31,0,309,307,1,0,0,0, + 309,310,1,0,0,0,310,311,1,0,0,0,311,312,5,46,0,0,312,313,3,12,6, + 0,313,29,1,0,0,0,314,315,3,36,18,0,315,316,5,45,0,0,316,318,1,0, + 0,0,317,314,1,0,0,0,317,318,1,0,0,0,318,329,1,0,0,0,319,322,3,32, + 16,0,320,321,5,45,0,0,321,323,3,36,18,0,322,320,1,0,0,0,322,323, + 1,0,0,0,323,326,1,0,0,0,324,325,5,45,0,0,325,327,3,34,17,0,326,324, + 1,0,0,0,326,327,1,0,0,0,327,330,1,0,0,0,328,330,3,34,17,0,329,319, + 1,0,0,0,329,328,1,0,0,0,330,332,1,0,0,0,331,333,5,45,0,0,332,331, + 1,0,0,0,332,333,1,0,0,0,333,339,1,0,0,0,334,336,3,36,18,0,335,337, + 5,45,0,0,336,335,1,0,0,0,336,337,1,0,0,0,337,339,1,0,0,0,338,317, + 1,0,0,0,338,334,1,0,0,0,339,31,1,0,0,0,340,341,5,44,0,0,341,342, + 3,40,20,0,342,33,1,0,0,0,343,344,5,48,0,0,344,345,3,40,20,0,345, + 35,1,0,0,0,346,351,3,38,19,0,347,348,5,45,0,0,348,350,3,38,19,0, + 349,347,1,0,0,0,350,353,1,0,0,0,351,349,1,0,0,0,351,352,1,0,0,0, + 352,37,1,0,0,0,353,351,1,0,0,0,354,357,3,40,20,0,355,356,5,49,0, + 0,356,358,3,62,31,0,357,355,1,0,0,0,357,358,1,0,0,0,358,361,1,0, + 0,0,359,361,5,44,0,0,360,354,1,0,0,0,360,359,1,0,0,0,361,39,1,0, + 0,0,362,365,3,90,45,0,363,364,5,46,0,0,364,366,3,62,31,0,365,363, + 1,0,0,0,365,366,1,0,0,0,366,41,1,0,0,0,367,372,3,44,22,0,368,369, + 5,47,0,0,369,371,3,44,22,0,370,368,1,0,0,0,371,374,1,0,0,0,372,370, + 1,0,0,0,372,373,1,0,0,0,373,376,1,0,0,0,374,372,1,0,0,0,375,377, + 5,47,0,0,376,375,1,0,0,0,376,377,1,0,0,0,377,378,1,0,0,0,378,379, + 7,0,0,0,379,43,1,0,0,0,380,382,3,46,23,0,381,383,3,50,25,0,382,381, + 1,0,0,0,382,383,1,0,0,0,383,505,1,0,0,0,384,385,4,22,2,0,385,408, + 5,37,0,0,386,391,3,62,31,0,387,388,5,45,0,0,388,390,3,62,31,0,389, + 387,1,0,0,0,390,393,1,0,0,0,391,389,1,0,0,0,391,392,1,0,0,0,392, + 395,1,0,0,0,393,391,1,0,0,0,394,396,5,45,0,0,395,394,1,0,0,0,395, + 396,1,0,0,0,396,409,1,0,0,0,397,398,5,54,0,0,398,401,3,62,31,0,399, + 400,5,45,0,0,400,402,3,62,31,0,401,399,1,0,0,0,402,403,1,0,0,0,403, + 401,1,0,0,0,403,404,1,0,0,0,404,406,1,0,0,0,405,407,5,45,0,0,406, + 405,1,0,0,0,406,407,1,0,0,0,407,409,1,0,0,0,408,386,1,0,0,0,408, + 397,1,0,0,0,409,410,1,0,0,0,410,411,6,22,-1,0,411,505,1,0,0,0,412, + 413,5,31,0,0,413,505,3,52,26,0,414,505,5,32,0,0,415,505,5,34,0,0, + 416,505,5,33,0,0,417,419,5,5,0,0,418,420,3,86,43,0,419,418,1,0,0, + 0,419,420,1,0,0,0,420,505,1,0,0,0,421,431,5,6,0,0,422,429,3,62,31, + 0,423,424,5,45,0,0,424,427,3,62,31,0,425,426,5,45,0,0,426,428,3, + 62,31,0,427,425,1,0,0,0,427,428,1,0,0,0,428,430,1,0,0,0,429,423, + 1,0,0,0,429,430,1,0,0,0,430,432,1,0,0,0,431,422,1,0,0,0,431,432, + 1,0,0,0,432,435,1,0,0,0,433,434,5,7,0,0,434,436,3,62,31,0,435,433, + 1,0,0,0,435,436,1,0,0,0,436,505,1,0,0,0,437,505,3,96,48,0,438,439, + 5,8,0,0,439,505,3,58,29,0,440,453,5,7,0,0,441,443,7,1,0,0,442,441, + 1,0,0,0,443,446,1,0,0,0,444,442,1,0,0,0,444,445,1,0,0,0,445,447, + 1,0,0,0,446,444,1,0,0,0,447,454,3,88,44,0,448,450,7,1,0,0,449,448, + 1,0,0,0,450,451,1,0,0,0,451,449,1,0,0,0,451,452,1,0,0,0,452,454, + 1,0,0,0,453,444,1,0,0,0,453,449,1,0,0,0,454,455,1,0,0,0,455,462, + 5,8,0,0,456,463,5,44,0,0,457,458,5,90,0,0,458,459,3,54,27,0,459, + 460,5,91,0,0,460,463,1,0,0,0,461,463,3,54,27,0,462,456,1,0,0,0,462, + 457,1,0,0,0,462,461,1,0,0,0,463,505,1,0,0,0,464,465,5,11,0,0,465, + 470,3,90,45,0,466,467,5,45,0,0,467,469,3,90,45,0,468,466,1,0,0,0, + 469,472,1,0,0,0,470,468,1,0,0,0,470,471,1,0,0,0,471,505,1,0,0,0, + 472,470,1,0,0,0,473,474,4,22,3,0,474,475,5,38,0,0,475,482,3,78,39, + 0,476,477,5,18,0,0,477,480,3,62,31,0,478,479,5,45,0,0,479,481,3, + 62,31,0,480,478,1,0,0,0,480,481,1,0,0,0,481,483,1,0,0,0,482,476, + 1,0,0,0,482,483,1,0,0,0,483,484,1,0,0,0,484,485,6,22,-1,0,485,505, + 1,0,0,0,486,487,5,12,0,0,487,490,3,62,31,0,488,489,5,45,0,0,489, + 491,3,62,31,0,490,488,1,0,0,0,490,491,1,0,0,0,491,505,1,0,0,0,492, + 493,4,22,4,0,493,494,5,9,0,0,494,499,3,90,45,0,495,496,5,45,0,0, + 496,498,3,90,45,0,497,495,1,0,0,0,498,501,1,0,0,0,499,497,1,0,0, + 0,499,500,1,0,0,0,500,502,1,0,0,0,501,499,1,0,0,0,502,503,6,22,-1, + 0,503,505,1,0,0,0,504,380,1,0,0,0,504,384,1,0,0,0,504,412,1,0,0, + 0,504,414,1,0,0,0,504,415,1,0,0,0,504,416,1,0,0,0,504,417,1,0,0, + 0,504,421,1,0,0,0,504,437,1,0,0,0,504,438,1,0,0,0,504,440,1,0,0, + 0,504,464,1,0,0,0,504,473,1,0,0,0,504,486,1,0,0,0,504,492,1,0,0, + 0,505,45,1,0,0,0,506,509,3,62,31,0,507,509,3,48,24,0,508,506,1,0, + 0,0,508,507,1,0,0,0,509,510,1,0,0,0,510,511,5,45,0,0,511,513,1,0, + 0,0,512,508,1,0,0,0,513,514,1,0,0,0,514,512,1,0,0,0,514,515,1,0, + 0,0,515,518,1,0,0,0,516,519,3,62,31,0,517,519,3,48,24,0,518,516, + 1,0,0,0,518,517,1,0,0,0,518,519,1,0,0,0,519,522,1,0,0,0,520,522, + 3,86,43,0,521,512,1,0,0,0,521,520,1,0,0,0,522,47,1,0,0,0,523,524, + 5,44,0,0,524,525,3,78,39,0,525,49,1,0,0,0,526,540,5,49,0,0,527,532, + 3,46,23,0,528,529,5,49,0,0,529,531,3,46,23,0,530,528,1,0,0,0,531, + 534,1,0,0,0,532,530,1,0,0,0,532,533,1,0,0,0,533,537,1,0,0,0,534, + 532,1,0,0,0,535,536,5,49,0,0,536,538,3,96,48,0,537,535,1,0,0,0,537, + 538,1,0,0,0,538,541,1,0,0,0,539,541,3,96,48,0,540,527,1,0,0,0,540, + 539,1,0,0,0,541,557,1,0,0,0,542,543,4,25,5,0,543,544,5,46,0,0,544, + 547,3,62,31,0,545,546,5,49,0,0,546,548,3,86,43,0,547,545,1,0,0,0, + 547,548,1,0,0,0,548,549,1,0,0,0,549,550,6,25,-1,0,550,557,1,0,0, + 0,551,554,7,2,0,0,552,555,3,96,48,0,553,555,3,86,43,0,554,552,1, + 0,0,0,554,553,1,0,0,0,555,557,1,0,0,0,556,526,1,0,0,0,556,542,1, + 0,0,0,556,551,1,0,0,0,557,51,1,0,0,0,558,563,3,78,39,0,559,560,5, + 45,0,0,560,562,3,78,39,0,561,559,1,0,0,0,562,565,1,0,0,0,563,561, + 1,0,0,0,563,564,1,0,0,0,564,567,1,0,0,0,565,563,1,0,0,0,566,568, + 5,45,0,0,567,566,1,0,0,0,567,568,1,0,0,0,568,53,1,0,0,0,569,574, + 3,56,28,0,570,571,5,45,0,0,571,573,3,56,28,0,572,570,1,0,0,0,573, + 576,1,0,0,0,574,572,1,0,0,0,574,575,1,0,0,0,575,578,1,0,0,0,576, + 574,1,0,0,0,577,579,5,45,0,0,578,577,1,0,0,0,578,579,1,0,0,0,579, + 55,1,0,0,0,580,583,3,90,45,0,581,582,5,10,0,0,582,584,3,90,45,0, + 583,581,1,0,0,0,583,584,1,0,0,0,584,57,1,0,0,0,585,590,3,60,30,0, + 586,587,5,45,0,0,587,589,3,60,30,0,588,586,1,0,0,0,589,592,1,0,0, + 0,590,588,1,0,0,0,590,591,1,0,0,0,591,59,1,0,0,0,592,590,1,0,0,0, + 593,596,3,88,44,0,594,595,5,10,0,0,595,597,3,90,45,0,596,594,1,0, + 0,0,596,597,1,0,0,0,597,61,1,0,0,0,598,604,3,74,37,0,599,600,5,13, + 0,0,600,601,3,74,37,0,601,602,5,15,0,0,602,603,3,62,31,0,603,605, + 1,0,0,0,604,599,1,0,0,0,604,605,1,0,0,0,605,613,1,0,0,0,606,608, + 5,24,0,0,607,609,3,64,32,0,608,607,1,0,0,0,608,609,1,0,0,0,609,610, + 1,0,0,0,610,611,5,46,0,0,611,613,3,62,31,0,612,598,1,0,0,0,612,606, + 1,0,0,0,613,63,1,0,0,0,614,615,3,66,33,0,615,616,5,45,0,0,616,618, + 1,0,0,0,617,614,1,0,0,0,617,618,1,0,0,0,618,629,1,0,0,0,619,622, + 3,70,35,0,620,621,5,45,0,0,621,623,3,66,33,0,622,620,1,0,0,0,622, + 623,1,0,0,0,623,626,1,0,0,0,624,625,5,45,0,0,625,627,3,72,36,0,626, + 624,1,0,0,0,626,627,1,0,0,0,627,630,1,0,0,0,628,630,3,72,36,0,629, + 619,1,0,0,0,629,628,1,0,0,0,630,632,1,0,0,0,631,633,5,45,0,0,632, + 631,1,0,0,0,632,633,1,0,0,0,633,639,1,0,0,0,634,636,3,66,33,0,635, + 637,5,45,0,0,636,635,1,0,0,0,636,637,1,0,0,0,637,639,1,0,0,0,638, + 617,1,0,0,0,638,634,1,0,0,0,639,65,1,0,0,0,640,645,3,68,34,0,641, + 642,5,45,0,0,642,644,3,68,34,0,643,641,1,0,0,0,644,647,1,0,0,0,645, + 643,1,0,0,0,645,646,1,0,0,0,646,67,1,0,0,0,647,645,1,0,0,0,648,651, + 3,90,45,0,649,650,5,49,0,0,650,652,3,62,31,0,651,649,1,0,0,0,651, + 652,1,0,0,0,652,655,1,0,0,0,653,655,5,44,0,0,654,648,1,0,0,0,654, + 653,1,0,0,0,655,69,1,0,0,0,656,657,5,44,0,0,657,658,3,90,45,0,658, + 71,1,0,0,0,659,660,5,48,0,0,660,661,3,90,45,0,661,73,1,0,0,0,662, + 663,6,37,-1,0,663,667,3,76,38,0,664,665,5,27,0,0,665,667,3,74,37, + 3,666,662,1,0,0,0,666,664,1,0,0,0,667,676,1,0,0,0,668,669,10,2,0, + 0,669,670,5,26,0,0,670,675,3,74,37,3,671,672,10,1,0,0,672,673,5, + 25,0,0,673,675,3,74,37,2,674,668,1,0,0,0,674,671,1,0,0,0,675,678, + 1,0,0,0,676,674,1,0,0,0,676,677,1,0,0,0,677,75,1,0,0,0,678,676,1, + 0,0,0,679,680,6,38,-1,0,680,681,3,78,39,0,681,703,1,0,0,0,682,698, + 10,2,0,0,683,699,5,61,0,0,684,699,5,62,0,0,685,699,5,63,0,0,686, + 699,5,64,0,0,687,699,5,65,0,0,688,699,5,66,0,0,689,699,5,67,0,0, + 690,692,5,27,0,0,691,690,1,0,0,0,691,692,1,0,0,0,692,693,1,0,0,0, + 693,699,5,18,0,0,694,696,5,28,0,0,695,697,5,27,0,0,696,695,1,0,0, + 0,696,697,1,0,0,0,697,699,1,0,0,0,698,683,1,0,0,0,698,684,1,0,0, + 0,698,685,1,0,0,0,698,686,1,0,0,0,698,687,1,0,0,0,698,688,1,0,0, + 0,698,689,1,0,0,0,698,691,1,0,0,0,698,694,1,0,0,0,699,700,1,0,0, + 0,700,702,3,76,38,3,701,682,1,0,0,0,702,705,1,0,0,0,703,701,1,0, + 0,0,703,704,1,0,0,0,704,77,1,0,0,0,705,703,1,0,0,0,706,708,6,39, + -1,0,707,709,5,36,0,0,708,707,1,0,0,0,708,709,1,0,0,0,709,710,1, + 0,0,0,710,714,3,80,40,0,711,713,3,100,50,0,712,711,1,0,0,0,713,716, + 1,0,0,0,714,712,1,0,0,0,714,715,1,0,0,0,715,720,1,0,0,0,716,714, + 1,0,0,0,717,718,7,3,0,0,718,720,3,78,39,7,719,706,1,0,0,0,719,717, + 1,0,0,0,720,744,1,0,0,0,721,722,10,8,0,0,722,723,5,48,0,0,723,743, + 3,78,39,8,724,725,10,6,0,0,725,726,7,4,0,0,726,743,3,78,39,7,727, + 728,10,5,0,0,728,729,7,5,0,0,729,743,3,78,39,6,730,731,10,4,0,0, + 731,732,7,6,0,0,732,743,3,78,39,5,733,734,10,3,0,0,734,735,5,52, + 0,0,735,743,3,78,39,4,736,737,10,2,0,0,737,738,5,51,0,0,738,743, + 3,78,39,3,739,740,10,1,0,0,740,741,5,50,0,0,741,743,3,78,39,2,742, + 721,1,0,0,0,742,724,1,0,0,0,742,727,1,0,0,0,742,730,1,0,0,0,742, + 733,1,0,0,0,742,736,1,0,0,0,742,739,1,0,0,0,743,746,1,0,0,0,744, + 742,1,0,0,0,744,745,1,0,0,0,745,79,1,0,0,0,746,744,1,0,0,0,747,750, + 5,90,0,0,748,751,3,96,48,0,749,751,3,84,42,0,750,748,1,0,0,0,750, + 749,1,0,0,0,750,751,1,0,0,0,751,752,1,0,0,0,752,785,5,91,0,0,753, + 755,5,94,0,0,754,756,3,84,42,0,755,754,1,0,0,0,755,756,1,0,0,0,756, + 757,1,0,0,0,757,785,5,95,0,0,758,760,5,92,0,0,759,761,3,82,41,0, + 760,759,1,0,0,0,760,761,1,0,0,0,761,762,1,0,0,0,762,785,5,93,0,0, + 763,764,5,43,0,0,764,766,3,86,43,0,765,767,5,45,0,0,766,765,1,0, + 0,0,766,767,1,0,0,0,767,768,1,0,0,0,768,769,5,43,0,0,769,785,1,0, + 0,0,770,785,5,42,0,0,771,785,3,90,45,0,772,785,5,37,0,0,773,785, + 5,38,0,0,774,776,5,56,0,0,775,774,1,0,0,0,775,776,1,0,0,0,776,777, + 1,0,0,0,777,785,3,92,46,0,778,785,5,20,0,0,779,781,5,83,0,0,780, + 779,1,0,0,0,781,782,1,0,0,0,782,780,1,0,0,0,782,783,1,0,0,0,783, + 785,1,0,0,0,784,747,1,0,0,0,784,753,1,0,0,0,784,758,1,0,0,0,784, + 763,1,0,0,0,784,770,1,0,0,0,784,771,1,0,0,0,784,772,1,0,0,0,784, + 773,1,0,0,0,784,775,1,0,0,0,784,778,1,0,0,0,784,780,1,0,0,0,785, + 81,1,0,0,0,786,787,3,62,31,0,787,788,5,46,0,0,788,789,3,62,31,0, + 789,793,1,0,0,0,790,791,5,48,0,0,791,793,3,78,39,0,792,786,1,0,0, + 0,792,790,1,0,0,0,793,805,1,0,0,0,794,801,5,45,0,0,795,796,3,62, + 31,0,796,797,5,46,0,0,797,798,3,62,31,0,798,802,1,0,0,0,799,800, + 5,48,0,0,800,802,3,78,39,0,801,795,1,0,0,0,801,799,1,0,0,0,802,804, + 1,0,0,0,803,794,1,0,0,0,804,807,1,0,0,0,805,803,1,0,0,0,805,806, + 1,0,0,0,806,809,1,0,0,0,807,805,1,0,0,0,808,810,5,45,0,0,809,808, + 1,0,0,0,809,810,1,0,0,0,810,818,1,0,0,0,811,812,3,62,31,0,812,813, + 5,46,0,0,813,814,3,62,31,0,814,815,3,114,57,0,815,818,1,0,0,0,816, + 818,3,84,42,0,817,792,1,0,0,0,817,811,1,0,0,0,817,816,1,0,0,0,818, + 83,1,0,0,0,819,822,3,62,31,0,820,822,3,48,24,0,821,819,1,0,0,0,821, + 820,1,0,0,0,822,837,1,0,0,0,823,838,3,114,57,0,824,827,5,45,0,0, + 825,828,3,62,31,0,826,828,3,48,24,0,827,825,1,0,0,0,827,826,1,0, + 0,0,828,830,1,0,0,0,829,824,1,0,0,0,830,833,1,0,0,0,831,829,1,0, + 0,0,831,832,1,0,0,0,832,835,1,0,0,0,833,831,1,0,0,0,834,836,5,45, + 0,0,835,834,1,0,0,0,835,836,1,0,0,0,836,838,1,0,0,0,837,823,1,0, + 0,0,837,831,1,0,0,0,838,85,1,0,0,0,839,844,3,62,31,0,840,841,5,45, + 0,0,841,843,3,62,31,0,842,840,1,0,0,0,843,846,1,0,0,0,844,842,1, + 0,0,0,844,845,1,0,0,0,845,848,1,0,0,0,846,844,1,0,0,0,847,849,5, + 45,0,0,848,847,1,0,0,0,848,849,1,0,0,0,849,87,1,0,0,0,850,851,6, + 44,-1,0,851,852,3,90,45,0,852,858,1,0,0,0,853,854,10,2,0,0,854,855, + 5,41,0,0,855,857,3,90,45,0,856,853,1,0,0,0,857,860,1,0,0,0,858,856, + 1,0,0,0,858,859,1,0,0,0,859,89,1,0,0,0,860,858,1,0,0,0,861,862,7, + 7,0,0,862,91,1,0,0,0,863,867,3,94,47,0,864,867,5,88,0,0,865,867, + 5,89,0,0,866,863,1,0,0,0,866,864,1,0,0,0,866,865,1,0,0,0,867,93, + 1,0,0,0,868,869,7,8,0,0,869,95,1,0,0,0,870,872,5,30,0,0,871,873, + 3,98,49,0,872,871,1,0,0,0,872,873,1,0,0,0,873,97,1,0,0,0,874,875, + 5,7,0,0,875,878,3,62,31,0,876,878,3,86,43,0,877,874,1,0,0,0,877, + 876,1,0,0,0,878,99,1,0,0,0,879,880,5,41,0,0,880,882,3,90,45,0,881, + 883,3,102,51,0,882,881,1,0,0,0,882,883,1,0,0,0,883,886,1,0,0,0,884, + 886,3,102,51,0,885,879,1,0,0,0,885,884,1,0,0,0,886,101,1,0,0,0,887, + 889,5,90,0,0,888,890,3,104,52,0,889,888,1,0,0,0,889,890,1,0,0,0, + 890,891,1,0,0,0,891,897,5,91,0,0,892,893,5,94,0,0,893,894,3,108, + 54,0,894,895,5,95,0,0,895,897,1,0,0,0,896,887,1,0,0,0,896,892,1, + 0,0,0,897,103,1,0,0,0,898,903,3,106,53,0,899,900,5,45,0,0,900,902, + 3,106,53,0,901,899,1,0,0,0,902,905,1,0,0,0,903,901,1,0,0,0,903,904, + 1,0,0,0,904,907,1,0,0,0,905,903,1,0,0,0,906,908,5,45,0,0,907,906, + 1,0,0,0,907,908,1,0,0,0,908,105,1,0,0,0,909,913,3,62,31,0,910,914, + 3,114,57,0,911,912,5,49,0,0,912,914,3,62,31,0,913,910,1,0,0,0,913, + 911,1,0,0,0,913,914,1,0,0,0,914,918,1,0,0,0,915,916,7,9,0,0,916, + 918,3,62,31,0,917,909,1,0,0,0,917,915,1,0,0,0,918,107,1,0,0,0,919, + 924,3,110,55,0,920,921,5,45,0,0,921,923,3,110,55,0,922,920,1,0,0, + 0,923,926,1,0,0,0,924,922,1,0,0,0,924,925,1,0,0,0,925,928,1,0,0, + 0,926,924,1,0,0,0,927,929,5,45,0,0,928,927,1,0,0,0,928,929,1,0,0, + 0,929,109,1,0,0,0,930,949,5,42,0,0,931,939,3,62,31,0,932,934,5,46, + 0,0,933,935,3,62,31,0,934,933,1,0,0,0,934,935,1,0,0,0,935,937,1, + 0,0,0,936,938,3,112,56,0,937,936,1,0,0,0,937,938,1,0,0,0,938,940, + 1,0,0,0,939,932,1,0,0,0,939,940,1,0,0,0,940,949,1,0,0,0,941,943, + 5,46,0,0,942,944,3,62,31,0,943,942,1,0,0,0,943,944,1,0,0,0,944,946, + 1,0,0,0,945,947,3,112,56,0,946,945,1,0,0,0,946,947,1,0,0,0,947,949, + 1,0,0,0,948,930,1,0,0,0,948,931,1,0,0,0,948,941,1,0,0,0,949,111, + 1,0,0,0,950,952,5,46,0,0,951,953,3,62,31,0,952,951,1,0,0,0,952,953, + 1,0,0,0,953,113,1,0,0,0,954,955,5,17,0,0,955,956,3,52,26,0,956,957, + 5,18,0,0,957,959,3,74,37,0,958,960,3,116,58,0,959,958,1,0,0,0,959, + 960,1,0,0,0,960,115,1,0,0,0,961,968,3,114,57,0,962,963,5,13,0,0, + 963,965,3,62,31,0,964,966,3,116,58,0,965,964,1,0,0,0,965,966,1,0, + 0,0,966,968,1,0,0,0,967,961,1,0,0,0,967,962,1,0,0,0,968,117,1,0, + 0,0,151,121,130,134,136,142,147,156,160,167,170,179,187,190,193, + 196,199,207,216,221,223,231,235,241,244,264,278,280,289,292,298, + 304,309,317,322,326,329,332,336,338,351,357,360,365,372,376,382, + 391,395,403,406,408,419,427,429,431,435,444,451,453,462,470,480, + 482,490,499,504,508,514,518,521,532,537,540,547,554,556,563,567, + 574,578,583,590,596,604,608,612,617,622,626,629,632,636,638,645, + 651,654,666,674,676,691,696,698,703,708,714,719,742,744,750,755, + 760,766,775,782,784,792,801,805,809,817,821,827,831,835,837,844, + 848,858,866,872,877,882,885,889,896,903,907,913,917,924,928,934, + 937,939,943,946,948,952,959,965,967 + ] class PythonParser ( PythonParserBase ): @@ -754,7 +626,7 @@ class PythonParser ( PythonParserBase ): def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None @@ -762,6 +634,7 @@ def __init__(self, input:TokenStream, output:TextIO = sys.stdout): class RootContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -836,6 +709,7 @@ def root(self): class Single_inputContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -911,6 +785,7 @@ def single_input(self): class File_inputContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -991,6 +866,7 @@ def file_input(self): class Eval_inputContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1038,7 +914,7 @@ def eval_input(self): self.state = 142 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==PythonParser.LINE_BREAK: + while _la==3: self.state = 139 self.match(PythonParser.LINE_BREAK) self.state = 144 @@ -1055,6 +931,7 @@ def eval_input(self): class StmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1119,6 +996,7 @@ def stmt(self): class Compound_stmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1439,7 +1317,7 @@ def compound_stmt(self): self.state = 170 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.ASYNC: + if _la==35: self.state = 169 self.match(PythonParser.ASYNC) @@ -1478,7 +1356,7 @@ def compound_stmt(self): self.state = 196 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.EXCEPT]: + if token in [23]: self.state = 185 self._errHandler.sync(self) _alt = 1 @@ -1510,7 +1388,7 @@ def compound_stmt(self): pass - elif token in [PythonParser.FINALLY]: + elif token in [21]: self.state = 195 self.finally_clause() pass @@ -1525,7 +1403,7 @@ def compound_stmt(self): self.state = 199 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.ASYNC: + if _la==35: self.state = 198 self.match(PythonParser.ASYNC) @@ -1537,7 +1415,7 @@ def compound_stmt(self): self.state = 207 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==PythonParser.COMMA: + while _la==45: self.state = 203 self.match(PythonParser.COMMA) self.state = 204 @@ -1558,7 +1436,7 @@ def compound_stmt(self): self.state = 216 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==PythonParser.AT: + while _la==68: self.state = 213 self.decorator() self.state = 218 @@ -1568,11 +1446,11 @@ def compound_stmt(self): self.state = 221 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.CLASS]: + if token in [29]: self.state = 219 self.classdef() pass - elif token in [PythonParser.DEF, PythonParser.ASYNC]: + elif token in [4, 35]: self.state = 220 self.funcdef() pass @@ -1592,6 +1470,7 @@ def compound_stmt(self): class SuiteContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1686,6 +1565,7 @@ def suite(self): class DecoratorContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1745,13 +1625,13 @@ def decorator(self): self.state = 244 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.OPEN_PAREN: + if _la==90: self.state = 239 self.match(PythonParser.OPEN_PAREN) self.state = 241 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.STAR) | (1 << PythonParser.POWER) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261322287421849600) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 240 self.arglist() @@ -1772,6 +1652,7 @@ def decorator(self): class Elif_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1835,6 +1716,7 @@ def elif_clause(self): class Else_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1892,6 +1774,7 @@ def else_clause(self): class Finally_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1949,6 +1832,7 @@ def finally_clause(self): class With_itemContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1997,7 +1881,7 @@ def with_item(self): self.state = 264 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.AS: + if _la==10: self.state = 262 self.match(PythonParser.AS) self.state = 263 @@ -2014,6 +1898,7 @@ def with_item(self): class Except_clauseContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2075,7 +1960,7 @@ def except_clause(self): self.state = 280 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261023220259094528) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 267 self.test() self.state = 278 @@ -2120,6 +2005,7 @@ def except_clause(self): class ClassdefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2183,13 +2069,13 @@ def classdef(self): self.state = 292 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.OPEN_PAREN: + if _la==90: self.state = 287 self.match(PythonParser.OPEN_PAREN) self.state = 289 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.STAR) | (1 << PythonParser.POWER) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261322287421849600) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 288 self.arglist() @@ -2212,6 +2098,7 @@ def classdef(self): class FuncdefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2281,7 +2168,7 @@ def funcdef(self): self.state = 298 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.ASYNC: + if _la==35: self.state = 297 self.match(PythonParser.ASYNC) @@ -2295,7 +2182,7 @@ def funcdef(self): self.state = 304 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 39)) & ~0x3f) == 0 and ((1 << (_la - 39)) & ((1 << (PythonParser.TRUE - 39)) | (1 << (PythonParser.FALSE - 39)) | (1 << (PythonParser.STAR - 39)) | (1 << (PythonParser.POWER - 39)) | (1 << (PythonParser.NAME - 39)))) != 0): + if ((((_la - 39)) & ~0x3f) == 0 and ((1 << (_la - 39)) & 144115188075856419) != 0): self.state = 303 self.typedargslist() @@ -2305,7 +2192,7 @@ def funcdef(self): self.state = 309 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.ARROW: + if _la==69: self.state = 307 self.match(PythonParser.ARROW) self.state = 308 @@ -2326,6 +2213,7 @@ def funcdef(self): class TypedargslistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2396,7 +2284,7 @@ def typedargslist(self): self.state = 329 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.STAR]: + if token in [44]: self.state = 319 self.args() self.state = 322 @@ -2420,7 +2308,7 @@ def typedargslist(self): pass - elif token in [PythonParser.POWER]: + elif token in [48]: self.state = 328 self.kwargs() pass @@ -2430,7 +2318,7 @@ def typedargslist(self): self.state = 332 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 331 self.match(PythonParser.COMMA) @@ -2444,7 +2332,7 @@ def typedargslist(self): self.state = 336 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 335 self.match(PythonParser.COMMA) @@ -2462,6 +2350,7 @@ def typedargslist(self): class ArgsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2514,6 +2403,7 @@ def args(self): class KwargsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2566,6 +2456,7 @@ def kwargs(self): class Def_parametersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2635,6 +2526,7 @@ def def_parameters(self): class Def_parameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2683,14 +2575,14 @@ def def_parameter(self): self.state = 360 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.TRUE, PythonParser.FALSE, PythonParser.NAME]: + if token in [39, 40, 96]: self.enterOuterAlt(localctx, 1) self.state = 354 self.named_parameter() self.state = 357 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.ASSIGN: + if _la==49: self.state = 355 self.match(PythonParser.ASSIGN) self.state = 356 @@ -2698,7 +2590,7 @@ def def_parameter(self): pass - elif token in [PythonParser.STAR]: + elif token in [44]: self.enterOuterAlt(localctx, 2) self.state = 359 self.match(PythonParser.STAR) @@ -2716,6 +2608,7 @@ def def_parameter(self): class Named_parameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2764,7 +2657,7 @@ def named_parameter(self): self.state = 365 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COLON: + if _la==46: self.state = 363 self.match(PythonParser.COLON) self.state = 364 @@ -2781,6 +2674,7 @@ def named_parameter(self): class Simple_stmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2850,14 +2744,14 @@ def simple_stmt(self): self.state = 376 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.SEMI_COLON: + if _la==47: self.state = 375 self.match(PythonParser.SEMI_COLON) self.state = 378 _la = self._input.LA(1) - if not(_la==PythonParser.EOF or _la==PythonParser.LINE_BREAK): + if not(_la==-1 or _la==3): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2872,6 +2766,7 @@ def simple_stmt(self): class Small_stmtContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3391,7 +3286,7 @@ def small_stmt(self): self.state = 408 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 386 self.test() self.state = 391 @@ -3410,13 +3305,13 @@ def small_stmt(self): self.state = 395 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 394 self.match(PythonParser.COMMA) pass - elif token in [PythonParser.RIGHT_SHIFT]: + elif token in [54]: self.state = 397 self.match(PythonParser.RIGHT_SHIFT) self.state = 398 @@ -3441,7 +3336,7 @@ def small_stmt(self): self.state = 406 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 405 self.match(PythonParser.COMMA) @@ -3491,7 +3386,7 @@ def small_stmt(self): self.state = 419 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261023220259094528) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 418 self.testlist() @@ -3506,13 +3401,13 @@ def small_stmt(self): self.state = 431 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261023220259094528) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 422 self.test() self.state = 429 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 423 self.match(PythonParser.COMMA) self.state = 424 @@ -3520,7 +3415,7 @@ def small_stmt(self): self.state = 427 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 425 self.match(PythonParser.COMMA) self.state = 426 @@ -3534,7 +3429,7 @@ def small_stmt(self): self.state = 435 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.FROM: + if _la==7: self.state = 433 self.match(PythonParser.FROM) self.state = 434 @@ -3571,10 +3466,10 @@ def small_stmt(self): self.state = 444 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==PythonParser.DOT or _la==PythonParser.ELLIPSIS: + while _la==41 or _la==42: self.state = 441 _la = self._input.LA(1) - if not(_la==PythonParser.DOT or _la==PythonParser.ELLIPSIS): + if not(_la==41 or _la==42): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -3594,7 +3489,7 @@ def small_stmt(self): while True: self.state = 448 _la = self._input.LA(1) - if not(_la==PythonParser.DOT or _la==PythonParser.ELLIPSIS): + if not(_la==41 or _la==42): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -3602,7 +3497,7 @@ def small_stmt(self): self.state = 451 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==PythonParser.DOT or _la==PythonParser.ELLIPSIS): + if not (_la==41 or _la==42): break pass @@ -3613,11 +3508,11 @@ def small_stmt(self): self.state = 462 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.STAR]: + if token in [44]: self.state = 456 self.match(PythonParser.STAR) pass - elif token in [PythonParser.OPEN_PAREN]: + elif token in [90]: self.state = 457 self.match(PythonParser.OPEN_PAREN) self.state = 458 @@ -3625,7 +3520,7 @@ def small_stmt(self): self.state = 459 self.match(PythonParser.CLOSE_PAREN) pass - elif token in [PythonParser.TRUE, PythonParser.FALSE, PythonParser.NAME]: + elif token in [39, 40, 96]: self.state = 461 self.import_as_names() pass @@ -3644,7 +3539,7 @@ def small_stmt(self): self.state = 470 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==PythonParser.COMMA: + while _la==45: self.state = 466 self.match(PythonParser.COMMA) self.state = 467 @@ -3669,7 +3564,7 @@ def small_stmt(self): self.state = 482 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.IN: + if _la==18: self.state = 476 self.match(PythonParser.IN) self.state = 477 @@ -3677,7 +3572,7 @@ def small_stmt(self): self.state = 480 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 478 self.match(PythonParser.COMMA) self.state = 479 @@ -3699,7 +3594,7 @@ def small_stmt(self): self.state = 490 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 488 self.match(PythonParser.COMMA) self.state = 489 @@ -3722,7 +3617,7 @@ def small_stmt(self): self.state = 499 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==PythonParser.COMMA: + while _la==45: self.state = 495 self.match(PythonParser.COMMA) self.state = 496 @@ -3745,6 +3640,7 @@ def small_stmt(self): class Testlist_star_exprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3812,11 +3708,11 @@ def testlist_star_expr(self): self.state = 508 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 506 self.test() pass - elif token in [PythonParser.STAR]: + elif token in [44]: self.state = 507 self.star_expr() pass @@ -3863,6 +3759,7 @@ def testlist_star_expr(self): class Star_exprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3915,6 +3812,7 @@ def star_expr(self): class Assign_partContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4024,7 +3922,7 @@ def assign_part(self): self.state = 540 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.STAR, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 44, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 527 self.testlist_star_expr() self.state = 532 @@ -4043,7 +3941,7 @@ def assign_part(self): self.state = 537 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.ASSIGN: + if _la==49: self.state = 535 self.match(PythonParser.ASSIGN) self.state = 536 @@ -4051,7 +3949,7 @@ def assign_part(self): pass - elif token in [PythonParser.YIELD]: + elif token in [30]: self.state = 539 self.yield_expr() pass @@ -4073,7 +3971,7 @@ def assign_part(self): self.state = 547 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.ASSIGN: + if _la==49: self.state = 545 self.match(PythonParser.ASSIGN) self.state = 546 @@ -4088,7 +3986,7 @@ def assign_part(self): self.state = 551 localctx.op = self._input.LT(1) _la = self._input.LA(1) - if not(((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (PythonParser.ADD_ASSIGN - 70)) | (1 << (PythonParser.SUB_ASSIGN - 70)) | (1 << (PythonParser.MULT_ASSIGN - 70)) | (1 << (PythonParser.AT_ASSIGN - 70)) | (1 << (PythonParser.DIV_ASSIGN - 70)) | (1 << (PythonParser.MOD_ASSIGN - 70)) | (1 << (PythonParser.AND_ASSIGN - 70)) | (1 << (PythonParser.OR_ASSIGN - 70)) | (1 << (PythonParser.XOR_ASSIGN - 70)) | (1 << (PythonParser.LEFT_SHIFT_ASSIGN - 70)) | (1 << (PythonParser.RIGHT_SHIFT_ASSIGN - 70)) | (1 << (PythonParser.POWER_ASSIGN - 70)) | (1 << (PythonParser.IDIV_ASSIGN - 70)))) != 0)): + if not(((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 8191) != 0)): localctx.op = self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -4096,11 +3994,11 @@ def assign_part(self): self.state = 554 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.YIELD]: + if token in [30]: self.state = 552 self.yield_expr() pass - elif token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + elif token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 553 self.testlist() pass @@ -4120,6 +4018,7 @@ def assign_part(self): class ExprlistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4183,7 +4082,7 @@ def exprlist(self): self.state = 567 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 566 self.match(PythonParser.COMMA) @@ -4198,6 +4097,7 @@ def exprlist(self): class Import_as_namesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4261,7 +4161,7 @@ def import_as_names(self): self.state = 578 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 577 self.match(PythonParser.COMMA) @@ -4276,6 +4176,7 @@ def import_as_names(self): class Import_as_nameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4323,7 +4224,7 @@ def import_as_name(self): self.state = 583 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.AS: + if _la==10: self.state = 581 self.match(PythonParser.AS) self.state = 582 @@ -4340,6 +4241,7 @@ def import_as_name(self): class Dotted_as_namesContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4390,7 +4292,7 @@ def dotted_as_names(self): self.state = 590 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==PythonParser.COMMA: + while _la==45: self.state = 586 self.match(PythonParser.COMMA) self.state = 587 @@ -4409,6 +4311,7 @@ def dotted_as_names(self): class Dotted_as_nameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4457,7 +4360,7 @@ def dotted_as_name(self): self.state = 596 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.AS: + if _la==10: self.state = 594 self.match(PythonParser.AS) self.state = 595 @@ -4474,6 +4377,7 @@ def dotted_as_name(self): class TestContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4535,7 +4439,7 @@ def test(self): self.state = 612 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.enterOuterAlt(localctx, 1) self.state = 598 self.logical_test(0) @@ -4554,14 +4458,14 @@ def test(self): pass - elif token in [PythonParser.LAMBDA]: + elif token in [24]: self.enterOuterAlt(localctx, 2) self.state = 606 self.match(PythonParser.LAMBDA) self.state = 608 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 39)) & ~0x3f) == 0 and ((1 << (_la - 39)) & ((1 << (PythonParser.TRUE - 39)) | (1 << (PythonParser.FALSE - 39)) | (1 << (PythonParser.STAR - 39)) | (1 << (PythonParser.POWER - 39)) | (1 << (PythonParser.NAME - 39)))) != 0): + if ((((_la - 39)) & ~0x3f) == 0 and ((1 << (_la - 39)) & 144115188075856419) != 0): self.state = 607 self.varargslist() @@ -4584,6 +4488,7 @@ def test(self): class VarargslistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4654,7 +4559,7 @@ def varargslist(self): self.state = 629 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.STAR]: + if token in [44]: self.state = 619 self.varargs() self.state = 622 @@ -4678,7 +4583,7 @@ def varargslist(self): pass - elif token in [PythonParser.POWER]: + elif token in [48]: self.state = 628 self.varkwargs() pass @@ -4688,7 +4593,7 @@ def varargslist(self): self.state = 632 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 631 self.match(PythonParser.COMMA) @@ -4702,7 +4607,7 @@ def varargslist(self): self.state = 636 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 635 self.match(PythonParser.COMMA) @@ -4720,6 +4625,7 @@ def varargslist(self): class Vardef_parametersContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4789,6 +4695,7 @@ def vardef_parameters(self): class Vardef_parameterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4837,14 +4744,14 @@ def vardef_parameter(self): self.state = 654 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.TRUE, PythonParser.FALSE, PythonParser.NAME]: + if token in [39, 40, 96]: self.enterOuterAlt(localctx, 1) self.state = 648 self.name() self.state = 651 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.ASSIGN: + if _la==49: self.state = 649 self.match(PythonParser.ASSIGN) self.state = 650 @@ -4852,7 +4759,7 @@ def vardef_parameter(self): pass - elif token in [PythonParser.STAR]: + elif token in [44]: self.enterOuterAlt(localctx, 2) self.state = 653 self.match(PythonParser.STAR) @@ -4870,6 +4777,7 @@ def vardef_parameter(self): class VarargsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4922,6 +4830,7 @@ def varargs(self): class VarkwargsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4974,6 +4883,7 @@ def varkwargs(self): class Logical_testContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5031,11 +4941,11 @@ def logical_test(self, _p:int=0): self.state = 666 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 663 self.comparison(0) pass - elif token in [PythonParser.NOT]: + elif token in [27]: self.state = 664 self.match(PythonParser.NOT) self.state = 665 @@ -5097,6 +5007,7 @@ def logical_test(self, _p:int=0): class ComparisonContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5193,39 +5104,39 @@ def comparison(self, _p:int=0): self.state = 698 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.LESS_THAN]: + if token in [61]: self.state = 683 self.match(PythonParser.LESS_THAN) pass - elif token in [PythonParser.GREATER_THAN]: + elif token in [62]: self.state = 684 self.match(PythonParser.GREATER_THAN) pass - elif token in [PythonParser.EQUALS]: + elif token in [63]: self.state = 685 self.match(PythonParser.EQUALS) pass - elif token in [PythonParser.GT_EQ]: + elif token in [64]: self.state = 686 self.match(PythonParser.GT_EQ) pass - elif token in [PythonParser.LT_EQ]: + elif token in [65]: self.state = 687 self.match(PythonParser.LT_EQ) pass - elif token in [PythonParser.NOT_EQ_1]: + elif token in [66]: self.state = 688 self.match(PythonParser.NOT_EQ_1) pass - elif token in [PythonParser.NOT_EQ_2]: + elif token in [67]: self.state = 689 self.match(PythonParser.NOT_EQ_2) pass - elif token in [PythonParser.IN, PythonParser.NOT]: + elif token in [18, 27]: self.state = 691 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.NOT: + if _la==27: self.state = 690 localctx.optional = self.match(PythonParser.NOT) @@ -5233,13 +5144,13 @@ def comparison(self, _p:int=0): self.state = 693 self.match(PythonParser.IN) pass - elif token in [PythonParser.IS]: + elif token in [28]: self.state = 694 self.match(PythonParser.IS) self.state = 696 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.NOT: + if _la==27: self.state = 695 localctx.optional = self.match(PythonParser.NOT) @@ -5264,6 +5175,7 @@ def comparison(self, _p:int=0): class ExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5369,7 +5281,7 @@ def expr(self, _p:int=0): self.state = 708 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.AWAIT: + if _la==36: self.state = 707 self.match(PythonParser.AWAIT) @@ -5393,7 +5305,7 @@ def expr(self, _p:int=0): self.state = 717 localctx.op = self._input.LT(1) _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 1261007895663738880) != 0)): localctx.op = self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -5438,7 +5350,7 @@ def expr(self, _p:int=0): self.state = 725 localctx.op = self._input.LT(1) _la = self._input.LA(1) - if not(((((_la - 44)) & ~0x3f) == 0 and ((1 << (_la - 44)) & ((1 << (PythonParser.STAR - 44)) | (1 << (PythonParser.DIV - 44)) | (1 << (PythonParser.MOD - 44)) | (1 << (PythonParser.IDIV - 44)) | (1 << (PythonParser.AT - 44)))) != 0)): + if not(((((_la - 44)) & ~0x3f) == 0 and ((1 << (_la - 44)) & 16834561) != 0)): localctx.op = self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -5457,7 +5369,7 @@ def expr(self, _p:int=0): self.state = 728 localctx.op = self._input.LT(1) _la = self._input.LA(1) - if not(_la==PythonParser.ADD or _la==PythonParser.MINUS): + if not(_la==55 or _la==56): localctx.op = self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -5476,7 +5388,7 @@ def expr(self, _p:int=0): self.state = 731 localctx.op = self._input.LT(1) _la = self._input.LA(1) - if not(_la==PythonParser.LEFT_SHIFT or _la==PythonParser.RIGHT_SHIFT): + if not(_la==53 or _la==54): localctx.op = self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -5539,6 +5451,7 @@ def expr(self, _p:int=0): class AtomContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5645,36 +5558,36 @@ def atom(self): self.state = 784 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.OPEN_PAREN]: + if token in [90]: self.enterOuterAlt(localctx, 1) self.state = 747 self.match(PythonParser.OPEN_PAREN) self.state = 750 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.YIELD]: + if token in [30]: self.state = 748 self.yield_expr() pass - elif token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.STAR, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + elif token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 44, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 749 self.testlist_comp() pass - elif token in [PythonParser.CLOSE_PAREN]: + elif token in [91]: pass else: pass self.state = 752 self.match(PythonParser.CLOSE_PAREN) pass - elif token in [PythonParser.OPEN_BRACKET]: + elif token in [94]: self.enterOuterAlt(localctx, 2) self.state = 753 self.match(PythonParser.OPEN_BRACKET) self.state = 755 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.STAR) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261040812445138944) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 754 self.testlist_comp() @@ -5682,14 +5595,14 @@ def atom(self): self.state = 757 self.match(PythonParser.CLOSE_BRACKET) pass - elif token in [PythonParser.OPEN_BRACE]: + elif token in [92]: self.enterOuterAlt(localctx, 3) self.state = 758 self.match(PythonParser.OPEN_BRACE) self.state = 760 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.STAR) | (1 << PythonParser.POWER) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261322287421849600) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 759 self.dictorsetmaker() @@ -5697,7 +5610,7 @@ def atom(self): self.state = 762 self.match(PythonParser.CLOSE_BRACE) pass - elif token in [PythonParser.REVERSE_QUOTE]: + elif token in [43]: self.enterOuterAlt(localctx, 4) self.state = 763 self.match(PythonParser.REVERSE_QUOTE) @@ -5706,7 +5619,7 @@ def atom(self): self.state = 766 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 765 self.match(PythonParser.COMMA) @@ -5714,32 +5627,32 @@ def atom(self): self.state = 768 self.match(PythonParser.REVERSE_QUOTE) pass - elif token in [PythonParser.ELLIPSIS]: + elif token in [42]: self.enterOuterAlt(localctx, 5) self.state = 770 self.match(PythonParser.ELLIPSIS) pass - elif token in [PythonParser.TRUE, PythonParser.FALSE, PythonParser.NAME]: + elif token in [39, 40, 96]: self.enterOuterAlt(localctx, 6) self.state = 771 self.name() pass - elif token in [PythonParser.PRINT]: + elif token in [37]: self.enterOuterAlt(localctx, 7) self.state = 772 self.match(PythonParser.PRINT) pass - elif token in [PythonParser.EXEC]: + elif token in [38]: self.enterOuterAlt(localctx, 8) self.state = 773 self.match(PythonParser.EXEC) pass - elif token in [PythonParser.MINUS, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER]: + elif token in [56, 84, 85, 86, 87, 88, 89]: self.enterOuterAlt(localctx, 9) self.state = 775 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.MINUS: + if _la==56: self.state = 774 self.match(PythonParser.MINUS) @@ -5747,12 +5660,12 @@ def atom(self): self.state = 777 self.number() pass - elif token in [PythonParser.NONE]: + elif token in [20]: self.enterOuterAlt(localctx, 10) self.state = 778 self.match(PythonParser.NONE) pass - elif token in [PythonParser.STRING]: + elif token in [83]: self.enterOuterAlt(localctx, 11) self.state = 780 self._errHandler.sync(self) @@ -5782,6 +5695,7 @@ def atom(self): class DictorsetmakerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5861,7 +5775,7 @@ def dictorsetmaker(self): self.state = 792 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 786 self.test() self.state = 787 @@ -5869,7 +5783,7 @@ def dictorsetmaker(self): self.state = 788 self.test() pass - elif token in [PythonParser.POWER]: + elif token in [48]: self.state = 790 self.match(PythonParser.POWER) self.state = 791 @@ -5888,7 +5802,7 @@ def dictorsetmaker(self): self.state = 801 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 795 self.test() self.state = 796 @@ -5896,7 +5810,7 @@ def dictorsetmaker(self): self.state = 797 self.test() pass - elif token in [PythonParser.POWER]: + elif token in [48]: self.state = 799 self.match(PythonParser.POWER) self.state = 800 @@ -5912,7 +5826,7 @@ def dictorsetmaker(self): self.state = 809 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 808 self.match(PythonParser.COMMA) @@ -5948,6 +5862,7 @@ def dictorsetmaker(self): class Testlist_compContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6007,11 +5922,11 @@ def testlist_comp(self): self.state = 821 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 819 self.test() pass - elif token in [PythonParser.STAR]: + elif token in [44]: self.state = 820 self.star_expr() pass @@ -6021,11 +5936,11 @@ def testlist_comp(self): self.state = 837 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.FOR]: + if token in [17]: self.state = 823 self.comp_for() pass - elif token in [PythonParser.COMMA, PythonParser.CLOSE_PAREN, PythonParser.CLOSE_BRACE, PythonParser.CLOSE_BRACKET]: + elif token in [45, 91, 93, 95]: self.state = 831 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,122,self._ctx) @@ -6036,11 +5951,11 @@ def testlist_comp(self): self.state = 827 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.state = 825 self.test() pass - elif token in [PythonParser.STAR]: + elif token in [44]: self.state = 826 self.star_expr() pass @@ -6054,7 +5969,7 @@ def testlist_comp(self): self.state = 835 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 834 self.match(PythonParser.COMMA) @@ -6073,6 +5988,7 @@ def testlist_comp(self): class TestlistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6150,6 +6066,7 @@ def testlist(self): class Dotted_nameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6229,6 +6146,7 @@ def dotted_name(self, _p:int=0): class NameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6272,7 +6190,7 @@ def name(self): self.enterOuterAlt(localctx, 1) self.state = 861 _la = self._input.LA(1) - if not(((((_la - 39)) & ~0x3f) == 0 and ((1 << (_la - 39)) & ((1 << (PythonParser.TRUE - 39)) | (1 << (PythonParser.FALSE - 39)) | (1 << (PythonParser.NAME - 39)))) != 0)): + if not(((((_la - 39)) & ~0x3f) == 0 and ((1 << (_la - 39)) & 144115188075855875) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -6287,6 +6205,7 @@ def name(self): class NumberContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6330,17 +6249,17 @@ def number(self): self.state = 866 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER]: + if token in [84, 85, 86, 87]: self.enterOuterAlt(localctx, 1) self.state = 863 self.integer() pass - elif token in [PythonParser.IMAG_NUMBER]: + elif token in [88]: self.enterOuterAlt(localctx, 2) self.state = 864 self.match(PythonParser.IMAG_NUMBER) pass - elif token in [PythonParser.FLOAT_NUMBER]: + elif token in [89]: self.enterOuterAlt(localctx, 3) self.state = 865 self.match(PythonParser.FLOAT_NUMBER) @@ -6358,6 +6277,7 @@ def number(self): class IntegerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6404,7 +6324,7 @@ def integer(self): self.enterOuterAlt(localctx, 1) self.state = 868 _la = self._input.LA(1) - if not(((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & ((1 << (PythonParser.DECIMAL_INTEGER - 84)) | (1 << (PythonParser.OCT_INTEGER - 84)) | (1 << (PythonParser.HEX_INTEGER - 84)) | (1 << (PythonParser.BIN_INTEGER - 84)))) != 0)): + if not(((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 15) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -6419,6 +6339,7 @@ def integer(self): class Yield_exprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6463,7 +6384,7 @@ def yield_expr(self): self.state = 872 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.FROM) | (1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261023220259094656) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 871 self.yield_arg() @@ -6478,6 +6399,7 @@ def yield_expr(self): class Yield_argContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6522,14 +6444,14 @@ def yield_arg(self): self.state = 877 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.FROM]: + if token in [7]: self.enterOuterAlt(localctx, 1) self.state = 874 self.match(PythonParser.FROM) self.state = 875 self.test() pass - elif token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + elif token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.enterOuterAlt(localctx, 2) self.state = 876 self.testlist() @@ -6547,6 +6469,7 @@ def yield_arg(self): class TrailerContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6591,7 +6514,7 @@ def trailer(self): self.state = 885 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.DOT]: + if token in [41]: self.enterOuterAlt(localctx, 1) self.state = 879 self.match(PythonParser.DOT) @@ -6606,7 +6529,7 @@ def trailer(self): pass - elif token in [PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACKET]: + elif token in [90, 94]: self.enterOuterAlt(localctx, 2) self.state = 884 self.arguments() @@ -6624,6 +6547,7 @@ def trailer(self): class ArgumentsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6678,14 +6602,14 @@ def arguments(self): self.state = 896 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.OPEN_PAREN]: + if token in [90]: self.enterOuterAlt(localctx, 1) self.state = 887 self.match(PythonParser.OPEN_PAREN) self.state = 889 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.STAR) | (1 << PythonParser.POWER) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261322287421849600) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 888 self.arglist() @@ -6693,7 +6617,7 @@ def arguments(self): self.state = 891 self.match(PythonParser.CLOSE_PAREN) pass - elif token in [PythonParser.OPEN_BRACKET]: + elif token in [94]: self.enterOuterAlt(localctx, 2) self.state = 892 self.match(PythonParser.OPEN_BRACKET) @@ -6715,6 +6639,7 @@ def arguments(self): class ArglistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6778,7 +6703,7 @@ def arglist(self): self.state = 907 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 906 self.match(PythonParser.COMMA) @@ -6793,6 +6718,7 @@ def arglist(self): class ArgumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6847,33 +6773,33 @@ def argument(self): self.state = 917 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.NONE, PythonParser.LAMBDA, PythonParser.NOT, PythonParser.AWAIT, PythonParser.PRINT, PythonParser.EXEC, PythonParser.TRUE, PythonParser.FALSE, PythonParser.ELLIPSIS, PythonParser.REVERSE_QUOTE, PythonParser.ADD, PythonParser.MINUS, PythonParser.NOT_OP, PythonParser.STRING, PythonParser.DECIMAL_INTEGER, PythonParser.OCT_INTEGER, PythonParser.HEX_INTEGER, PythonParser.BIN_INTEGER, PythonParser.IMAG_NUMBER, PythonParser.FLOAT_NUMBER, PythonParser.OPEN_PAREN, PythonParser.OPEN_BRACE, PythonParser.OPEN_BRACKET, PythonParser.NAME]: + if token in [20, 24, 27, 36, 37, 38, 39, 40, 42, 43, 55, 56, 60, 83, 84, 85, 86, 87, 88, 89, 90, 92, 94, 96]: self.enterOuterAlt(localctx, 1) self.state = 909 self.test() self.state = 913 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.FOR]: + if token in [17]: self.state = 910 self.comp_for() pass - elif token in [PythonParser.ASSIGN]: + elif token in [49]: self.state = 911 self.match(PythonParser.ASSIGN) self.state = 912 self.test() pass - elif token in [PythonParser.COMMA, PythonParser.CLOSE_PAREN]: + elif token in [45, 91]: pass else: pass pass - elif token in [PythonParser.STAR, PythonParser.POWER]: + elif token in [44, 48]: self.enterOuterAlt(localctx, 2) self.state = 915 _la = self._input.LA(1) - if not(_la==PythonParser.STAR or _la==PythonParser.POWER): + if not(_la==44 or _la==48): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -6894,6 +6820,7 @@ def argument(self): class SubscriptlistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -6957,7 +6884,7 @@ def subscriptlist(self): self.state = 928 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COMMA: + if _la==45: self.state = 927 self.match(PythonParser.COMMA) @@ -6972,6 +6899,7 @@ def subscriptlist(self): class SubscriptContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7036,13 +6964,13 @@ def subscript(self): self.state = 939 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COLON: + if _la==46: self.state = 932 self.match(PythonParser.COLON) self.state = 934 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261023220259094528) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 933 self.test() @@ -7050,7 +6978,7 @@ def subscript(self): self.state = 937 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COLON: + if _la==46: self.state = 936 self.sliceop() @@ -7066,7 +6994,7 @@ def subscript(self): self.state = 943 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261023220259094528) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 942 self.test() @@ -7074,7 +7002,7 @@ def subscript(self): self.state = 946 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.COLON: + if _la==46: self.state = 945 self.sliceop() @@ -7092,6 +7020,7 @@ def subscript(self): class SliceopContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7136,7 +7065,7 @@ def sliceop(self): self.state = 952 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << PythonParser.NONE) | (1 << PythonParser.LAMBDA) | (1 << PythonParser.NOT) | (1 << PythonParser.AWAIT) | (1 << PythonParser.PRINT) | (1 << PythonParser.EXEC) | (1 << PythonParser.TRUE) | (1 << PythonParser.FALSE) | (1 << PythonParser.ELLIPSIS) | (1 << PythonParser.REVERSE_QUOTE) | (1 << PythonParser.ADD) | (1 << PythonParser.MINUS) | (1 << PythonParser.NOT_OP))) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (PythonParser.STRING - 83)) | (1 << (PythonParser.DECIMAL_INTEGER - 83)) | (1 << (PythonParser.OCT_INTEGER - 83)) | (1 << (PythonParser.HEX_INTEGER - 83)) | (1 << (PythonParser.BIN_INTEGER - 83)) | (1 << (PythonParser.IMAG_NUMBER - 83)) | (1 << (PythonParser.FLOAT_NUMBER - 83)) | (1 << (PythonParser.OPEN_PAREN - 83)) | (1 << (PythonParser.OPEN_BRACE - 83)) | (1 << (PythonParser.OPEN_BRACKET - 83)) | (1 << (PythonParser.NAME - 83)))) != 0): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1261023220259094528) != 0) or ((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & 11007) != 0): self.state = 951 self.test() @@ -7151,6 +7080,7 @@ def sliceop(self): class Comp_forContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7212,7 +7142,7 @@ def comp_for(self): self.state = 959 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.IF or _la==PythonParser.FOR: + if _la==13 or _la==17: self.state = 958 self.comp_iter() @@ -7227,6 +7157,7 @@ def comp_for(self): class Comp_iterContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -7276,12 +7207,12 @@ def comp_iter(self): self.state = 967 self._errHandler.sync(self) token = self._input.LA(1) - if token in [PythonParser.FOR]: + if token in [17]: self.enterOuterAlt(localctx, 1) self.state = 961 self.comp_for() pass - elif token in [PythonParser.IF]: + elif token in [13]: self.enterOuterAlt(localctx, 2) self.state = 962 self.match(PythonParser.IF) @@ -7290,7 +7221,7 @@ def comp_iter(self): self.state = 965 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==PythonParser.IF or _la==PythonParser.FOR: + if _la==13 or _la==17: self.state = 964 self.comp_iter() diff --git a/src/pycropml/transpiler/antlr_py/grammars/PythonParserListener.py b/src/pycropml/transpiler/antlr_py/grammars/PythonParserListener.py index 9124c052..8dce8f79 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/PythonParserListener.py +++ b/src/pycropml/transpiler/antlr_py/grammars/PythonParserListener.py @@ -1,6 +1,6 @@ -# Generated from PythonParser.g4 by ANTLR 4.8 +# Generated from PythonParser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .PythonParser import PythonParser else: from PythonParser import PythonParser diff --git a/src/pycropml/transpiler/antlr_py/grammars/PythonParserVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/PythonParserVisitor.py index b5047303..25b11fb7 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/PythonParserVisitor.py +++ b/src/pycropml/transpiler/antlr_py/grammars/PythonParserVisitor.py @@ -1,6 +1,6 @@ -# Generated from PythonParser.g4 by ANTLR 4.8 +# Generated from PythonParser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .PythonParser import PythonParser else: from PythonParser import PythonParser diff --git a/src/pycropml/transpiler/antlr_py/grammars/R.g4 b/src/pycropml/transpiler/antlr_py/grammars/R.g4 new file mode 100644 index 00000000..0917ceae --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/R.g4 @@ -0,0 +1,266 @@ +/* + [The "BSD licence"] + Copyright (c) 2013 Terence Parr + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** +derived from http://svn.r-project.org/R/trunk/src/main/gram.y +http://cran.r-project.org/doc/manuals/R-lang.html#Parser + +I'm no R genius but this seems to work. + +Requires RFilter.g4 to strip away NL that are really whitespace, +not end-of-command. See TestR.java + +Usage: + +$ antlr4 R.g4 RFilter.g4 +$ javac *.java +$ java TestR sample.R +... prints parse tree ... +*/ + +// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging + +grammar R; + +prog + : ((SEMICOLON | NL)+ | expr )* EOF + ; + +/* +expr_or_assign + : expr ('<-'|'='|'<<-') expr_or_assign + | expr + ; +*/ + +expr + : expr LIST_ACCESS_START sublist LIST_ACCESS_END #ListAccess // '[[' follows R's yacc grammar + | expr ARRAY_ACCESS_START sublist ARRAY_ACCESS_END #ArrayAccess + | expr NAMESPACE_ACCESS expr #NamespaceAccess + | expr COMPONENT_ACCESS expr #ComponentAccess + | expr '^' expr #Exponent + | ADD_SUB expr #Sign + | expr RANGE_OPERATOR expr #Range + | expr USER_OP expr #UserDefinedOperation // anything wrappedin %: '%' .* '%' + | expr MULT_DIV expr #MultOrDiv + | expr ADD_SUB expr #AddOrSub + | expr COMPARATOR expr #Comparison + | NOT expr #Not + | expr AND expr #And + | expr OR expr #Or + | '~' expr #ModelFormulaePrefix + | expr '~' expr #ModelFormulaeInfix + | expr (ASSIGN | EQUALS) expr #Assignment + | FUNCTION PAREN_L formlist? PAREN_R expr #FunctionDefinition // define function + | expr PAREN_L sublist PAREN_R #FunctionCall // call function + | CURLY_L exprlist CURLY_R #CompoundStatement // compound statement + | IF PAREN_L expr PAREN_R expr #If + | IF PAREN_L expr PAREN_R expr NL* ELSE expr #IfElse + | FOR PAREN_L ID IN expr PAREN_R expr #For + | WHILE PAREN_L expr PAREN_R expr #While + | REPEAT expr #Repeat + | HELP expr #Help // get help on expr, usually string or ID + | NEXT #Next + | BREAK #Break + | PAREN_L expr PAREN_R #BracketTerm + | ID #Id + | STRING #String + | HEX #Hex + | INT #Int + | FLOAT #Float + | COMPLEX #Complex + | NULL #Null + | NA #Na + | INF #Inf + | NAN #Nan + | TRUE #True + | FALSE #False + | NL+ expr #Newline + ; + +exprlist + : expr ((SEMICOLON | NL) expr?)* + ; + +formlist + : form (',' form)* + ; + +form + : ID + | ID EQUALS expr + | '...' + | '.' + ; + +sublist + : sub (',' sub)* + ; + +sub + : expr + | ID EQUALS + | ID EQUALS expr + | STRING EQUALS + | STRING EQUALS expr + | NULL EQUALS + | NULL EQUALS expr + | '...' + | '.' + | + ; + +IF: 'if'; +FOR: 'for'; +WHILE: 'while'; +REPEAT: 'repeat'; +FUNCTION: 'function'; +ELSE: 'else'; +IN: 'in'; + +LIST_ACCESS_START: '[['; +LIST_ACCESS_END: ']]'; +ARRAY_ACCESS_START: '['; +ARRAY_ACCESS_END: ']'; +NAMESPACE_ACCESS: ':::' | '::'; +COMPONENT_ACCESS: '$' | '@'; + +HELP: '?'; +NEXT: 'next'; +BREAK: 'break'; + +NULL: 'NULL'; +NA: 'NA'; +INF: 'inf'; +NAN: 'NaN'; +TRUE: 'TRUE'; +FALSE: 'FALSE'; + +NOT: '!'; +RANGE_OPERATOR: ':'; + +MULT_DIV: '*' | '/'; +ADD_SUB: '+' | '-'; +COMPARATOR: '>' | '>=' | '<' | '<=' | '==' | '!='; +ASSIGN: '<-' | '<<-' | '->' | '->>' | ':='; +EQUALS: '='; +AND: '&&' | '&'; +OR: '||' | '|'; + +PAREN_L: '('; +PAREN_R: ')'; +CURLY_L: '{'; +CURLY_R: '}'; + +HEX + : '0' ('x' | 'X') HEXDIGIT+ [Ll]? + ; + +INT + : DIGIT+ [Ll]? + ; + +fragment HEXDIGIT + : ('0' ..'9' | 'a' ..'f' | 'A' ..'F') + ; + +FLOAT + : DIGIT+ '.' DIGIT* EXP? [Ll]? + | DIGIT+ EXP? [Ll]? + | '.' DIGIT+ EXP? [Ll]? + ; + +fragment DIGIT + : '0' ..'9' + ; + +fragment EXP + : ('E' | 'e') ('+' | '-')? INT + ; + +COMPLEX + : INT 'i' + | FLOAT 'i' + ; + +STRING + : '"' (ESC | ~[\\"])*? '"' + | '\'' ( ESC | ~[\\'])*? '\'' + | '`' ( ESC | ~[\\'])*? '`' + ; + +fragment ESC + : '\\' [abtnfrv"'\\] + | UNICODE_ESCAPE + | HEX_ESCAPE + | OCTAL_ESCAPE + ; + +fragment UNICODE_ESCAPE + : '\\' 'u' HEXDIGIT HEXDIGIT HEXDIGIT HEXDIGIT + | '\\' 'u' '{' HEXDIGIT HEXDIGIT HEXDIGIT HEXDIGIT '}' + ; + +fragment OCTAL_ESCAPE + : '\\' [0-3] [0-7] [0-7] + | '\\' [0-7] [0-7] + | '\\' [0-7] + ; + +fragment HEX_ESCAPE + : '\\' HEXDIGIT HEXDIGIT? + ; + +ID + : '.' (LETTER | '_' | '.') (LETTER | DIGIT | '_' | '.')* + | LETTER (LETTER | DIGIT | '_' | '.')* + ; + +fragment LETTER + : [a-zA-Z] + ; + +USER_OP + : '%' .*? '%' + ; + +COMMENT + : '#' .*? '\r'? '\n' -> type(NL) + ; + +// Match both UNIX and Windows newlines +NL + : '\r'? '\n' + ; + +SEMICOLON: ';'; + +WS + : [ \t\u000C]+ -> skip + ; \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/R.interp b/src/pycropml/transpiler/antlr_py/grammars/R.interp new file mode 100644 index 00000000..66ac84d9 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/R.interp @@ -0,0 +1,118 @@ +token literal names: +null +'^' +'~' +',' +'...' +'.' +'if' +'for' +'while' +'repeat' +'function' +'else' +'in' +'[[' +']]' +'[' +']' +null +null +'?' +'next' +'break' +'NULL' +'NA' +'inf' +'NaN' +'TRUE' +'FALSE' +'!' +':' +null +null +null +null +'=' +null +null +'(' +')' +'{' +'}' +null +null +null +null +null +null +null +null +';' +null + +token symbolic names: +null +null +null +null +null +null +IF +FOR +WHILE +REPEAT +FUNCTION +ELSE +IN +LIST_ACCESS_START +LIST_ACCESS_END +ARRAY_ACCESS_START +ARRAY_ACCESS_END +NAMESPACE_ACCESS +COMPONENT_ACCESS +HELP +NEXT +BREAK +NULL +NA +INF +NAN +TRUE +FALSE +NOT +RANGE_OPERATOR +MULT_DIV +ADD_SUB +COMPARATOR +ASSIGN +EQUALS +AND +OR +PAREN_L +PAREN_R +CURLY_L +CURLY_R +HEX +INT +FLOAT +COMPLEX +STRING +ID +USER_OP +NL +SEMICOLON +WS + +rule names: +prog +expr +exprlist +formlist +form +sublist +sub + + +atn: +[4, 1, 50, 221, 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, 1, 0, 4, 0, 16, 8, 0, 11, 0, 12, 0, 17, 1, 0, 5, 0, 21, 8, 0, 10, 0, 12, 0, 24, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 38, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 58, 8, 1, 10, 1, 12, 1, 61, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 103, 8, 1, 11, 1, 12, 1, 104, 1, 1, 3, 1, 108, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 161, 8, 1, 10, 1, 12, 1, 164, 9, 1, 1, 2, 1, 2, 1, 2, 3, 2, 169, 8, 2, 5, 2, 171, 8, 2, 10, 2, 12, 2, 174, 9, 2, 1, 3, 1, 3, 1, 3, 5, 3, 179, 8, 3, 10, 3, 12, 3, 182, 9, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 190, 8, 4, 1, 5, 1, 5, 1, 5, 5, 5, 195, 8, 5, 10, 5, 12, 5, 198, 9, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 219, 8, 6, 1, 6, 0, 1, 2, 7, 0, 2, 4, 6, 8, 10, 12, 0, 2, 1, 0, 48, 49, 1, 0, 33, 34, 276, 0, 22, 1, 0, 0, 0, 2, 107, 1, 0, 0, 0, 4, 165, 1, 0, 0, 0, 6, 175, 1, 0, 0, 0, 8, 189, 1, 0, 0, 0, 10, 191, 1, 0, 0, 0, 12, 218, 1, 0, 0, 0, 14, 16, 7, 0, 0, 0, 15, 14, 1, 0, 0, 0, 16, 17, 1, 0, 0, 0, 17, 15, 1, 0, 0, 0, 17, 18, 1, 0, 0, 0, 18, 21, 1, 0, 0, 0, 19, 21, 3, 2, 1, 0, 20, 15, 1, 0, 0, 0, 20, 19, 1, 0, 0, 0, 21, 24, 1, 0, 0, 0, 22, 20, 1, 0, 0, 0, 22, 23, 1, 0, 0, 0, 23, 25, 1, 0, 0, 0, 24, 22, 1, 0, 0, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 6, 1, -1, 0, 28, 29, 5, 31, 0, 0, 29, 108, 3, 2, 1, 37, 30, 31, 5, 28, 0, 0, 31, 108, 3, 2, 1, 31, 32, 33, 5, 2, 0, 0, 33, 108, 3, 2, 1, 28, 34, 35, 5, 10, 0, 0, 35, 37, 5, 37, 0, 0, 36, 38, 3, 6, 3, 0, 37, 36, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 40, 5, 38, 0, 0, 40, 108, 3, 2, 1, 25, 41, 42, 5, 39, 0, 0, 42, 43, 3, 4, 2, 0, 43, 44, 5, 40, 0, 0, 44, 108, 1, 0, 0, 0, 45, 46, 5, 6, 0, 0, 46, 47, 5, 37, 0, 0, 47, 48, 3, 2, 1, 0, 48, 49, 5, 38, 0, 0, 49, 50, 3, 2, 1, 22, 50, 108, 1, 0, 0, 0, 51, 52, 5, 6, 0, 0, 52, 53, 5, 37, 0, 0, 53, 54, 3, 2, 1, 0, 54, 55, 5, 38, 0, 0, 55, 59, 3, 2, 1, 0, 56, 58, 5, 48, 0, 0, 57, 56, 1, 0, 0, 0, 58, 61, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 62, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 62, 63, 5, 11, 0, 0, 63, 64, 3, 2, 1, 21, 64, 108, 1, 0, 0, 0, 65, 66, 5, 7, 0, 0, 66, 67, 5, 37, 0, 0, 67, 68, 5, 46, 0, 0, 68, 69, 5, 12, 0, 0, 69, 70, 3, 2, 1, 0, 70, 71, 5, 38, 0, 0, 71, 72, 3, 2, 1, 20, 72, 108, 1, 0, 0, 0, 73, 74, 5, 8, 0, 0, 74, 75, 5, 37, 0, 0, 75, 76, 3, 2, 1, 0, 76, 77, 5, 38, 0, 0, 77, 78, 3, 2, 1, 19, 78, 108, 1, 0, 0, 0, 79, 80, 5, 9, 0, 0, 80, 108, 3, 2, 1, 18, 81, 82, 5, 19, 0, 0, 82, 108, 3, 2, 1, 17, 83, 108, 5, 20, 0, 0, 84, 108, 5, 21, 0, 0, 85, 86, 5, 37, 0, 0, 86, 87, 3, 2, 1, 0, 87, 88, 5, 38, 0, 0, 88, 108, 1, 0, 0, 0, 89, 108, 5, 46, 0, 0, 90, 108, 5, 45, 0, 0, 91, 108, 5, 41, 0, 0, 92, 108, 5, 42, 0, 0, 93, 108, 5, 43, 0, 0, 94, 108, 5, 44, 0, 0, 95, 108, 5, 22, 0, 0, 96, 108, 5, 23, 0, 0, 97, 108, 5, 24, 0, 0, 98, 108, 5, 25, 0, 0, 99, 108, 5, 26, 0, 0, 100, 108, 5, 27, 0, 0, 101, 103, 5, 48, 0, 0, 102, 101, 1, 0, 0, 0, 103, 104, 1, 0, 0, 0, 104, 102, 1, 0, 0, 0, 104, 105, 1, 0, 0, 0, 105, 106, 1, 0, 0, 0, 106, 108, 3, 2, 1, 1, 107, 27, 1, 0, 0, 0, 107, 30, 1, 0, 0, 0, 107, 32, 1, 0, 0, 0, 107, 34, 1, 0, 0, 0, 107, 41, 1, 0, 0, 0, 107, 45, 1, 0, 0, 0, 107, 51, 1, 0, 0, 0, 107, 65, 1, 0, 0, 0, 107, 73, 1, 0, 0, 0, 107, 79, 1, 0, 0, 0, 107, 81, 1, 0, 0, 0, 107, 83, 1, 0, 0, 0, 107, 84, 1, 0, 0, 0, 107, 85, 1, 0, 0, 0, 107, 89, 1, 0, 0, 0, 107, 90, 1, 0, 0, 0, 107, 91, 1, 0, 0, 0, 107, 92, 1, 0, 0, 0, 107, 93, 1, 0, 0, 0, 107, 94, 1, 0, 0, 0, 107, 95, 1, 0, 0, 0, 107, 96, 1, 0, 0, 0, 107, 97, 1, 0, 0, 0, 107, 98, 1, 0, 0, 0, 107, 99, 1, 0, 0, 0, 107, 100, 1, 0, 0, 0, 107, 102, 1, 0, 0, 0, 108, 162, 1, 0, 0, 0, 109, 110, 10, 40, 0, 0, 110, 111, 5, 17, 0, 0, 111, 161, 3, 2, 1, 41, 112, 113, 10, 39, 0, 0, 113, 114, 5, 18, 0, 0, 114, 161, 3, 2, 1, 40, 115, 116, 10, 38, 0, 0, 116, 117, 5, 1, 0, 0, 117, 161, 3, 2, 1, 38, 118, 119, 10, 36, 0, 0, 119, 120, 5, 29, 0, 0, 120, 161, 3, 2, 1, 37, 121, 122, 10, 35, 0, 0, 122, 123, 5, 47, 0, 0, 123, 161, 3, 2, 1, 36, 124, 125, 10, 34, 0, 0, 125, 126, 5, 30, 0, 0, 126, 161, 3, 2, 1, 35, 127, 128, 10, 33, 0, 0, 128, 129, 5, 31, 0, 0, 129, 161, 3, 2, 1, 34, 130, 131, 10, 32, 0, 0, 131, 132, 5, 32, 0, 0, 132, 161, 3, 2, 1, 33, 133, 134, 10, 30, 0, 0, 134, 135, 5, 35, 0, 0, 135, 161, 3, 2, 1, 31, 136, 137, 10, 29, 0, 0, 137, 138, 5, 36, 0, 0, 138, 161, 3, 2, 1, 30, 139, 140, 10, 27, 0, 0, 140, 141, 5, 2, 0, 0, 141, 161, 3, 2, 1, 28, 142, 143, 10, 26, 0, 0, 143, 144, 7, 1, 0, 0, 144, 161, 3, 2, 1, 27, 145, 146, 10, 42, 0, 0, 146, 147, 5, 13, 0, 0, 147, 148, 3, 10, 5, 0, 148, 149, 5, 14, 0, 0, 149, 161, 1, 0, 0, 0, 150, 151, 10, 41, 0, 0, 151, 152, 5, 15, 0, 0, 152, 153, 3, 10, 5, 0, 153, 154, 5, 16, 0, 0, 154, 161, 1, 0, 0, 0, 155, 156, 10, 24, 0, 0, 156, 157, 5, 37, 0, 0, 157, 158, 3, 10, 5, 0, 158, 159, 5, 38, 0, 0, 159, 161, 1, 0, 0, 0, 160, 109, 1, 0, 0, 0, 160, 112, 1, 0, 0, 0, 160, 115, 1, 0, 0, 0, 160, 118, 1, 0, 0, 0, 160, 121, 1, 0, 0, 0, 160, 124, 1, 0, 0, 0, 160, 127, 1, 0, 0, 0, 160, 130, 1, 0, 0, 0, 160, 133, 1, 0, 0, 0, 160, 136, 1, 0, 0, 0, 160, 139, 1, 0, 0, 0, 160, 142, 1, 0, 0, 0, 160, 145, 1, 0, 0, 0, 160, 150, 1, 0, 0, 0, 160, 155, 1, 0, 0, 0, 161, 164, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 3, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 165, 172, 3, 2, 1, 0, 166, 168, 7, 0, 0, 0, 167, 169, 3, 2, 1, 0, 168, 167, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 171, 1, 0, 0, 0, 170, 166, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 5, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 180, 3, 8, 4, 0, 176, 177, 5, 3, 0, 0, 177, 179, 3, 8, 4, 0, 178, 176, 1, 0, 0, 0, 179, 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 7, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 190, 5, 46, 0, 0, 184, 185, 5, 46, 0, 0, 185, 186, 5, 34, 0, 0, 186, 190, 3, 2, 1, 0, 187, 190, 5, 4, 0, 0, 188, 190, 5, 5, 0, 0, 189, 183, 1, 0, 0, 0, 189, 184, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 189, 188, 1, 0, 0, 0, 190, 9, 1, 0, 0, 0, 191, 196, 3, 12, 6, 0, 192, 193, 5, 3, 0, 0, 193, 195, 3, 12, 6, 0, 194, 192, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 11, 1, 0, 0, 0, 198, 196, 1, 0, 0, 0, 199, 219, 3, 2, 1, 0, 200, 201, 5, 46, 0, 0, 201, 219, 5, 34, 0, 0, 202, 203, 5, 46, 0, 0, 203, 204, 5, 34, 0, 0, 204, 219, 3, 2, 1, 0, 205, 206, 5, 45, 0, 0, 206, 219, 5, 34, 0, 0, 207, 208, 5, 45, 0, 0, 208, 209, 5, 34, 0, 0, 209, 219, 3, 2, 1, 0, 210, 211, 5, 22, 0, 0, 211, 219, 5, 34, 0, 0, 212, 213, 5, 22, 0, 0, 213, 214, 5, 34, 0, 0, 214, 219, 3, 2, 1, 0, 215, 219, 5, 4, 0, 0, 216, 219, 5, 5, 0, 0, 217, 219, 1, 0, 0, 0, 218, 199, 1, 0, 0, 0, 218, 200, 1, 0, 0, 0, 218, 202, 1, 0, 0, 0, 218, 205, 1, 0, 0, 0, 218, 207, 1, 0, 0, 0, 218, 210, 1, 0, 0, 0, 218, 212, 1, 0, 0, 0, 218, 215, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 217, 1, 0, 0, 0, 219, 13, 1, 0, 0, 0, 15, 17, 20, 22, 37, 59, 104, 107, 160, 162, 168, 172, 180, 189, 196, 218] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/R.tokens b/src/pycropml/transpiler/antlr_py/grammars/R.tokens new file mode 100644 index 00000000..92062708 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/R.tokens @@ -0,0 +1,83 @@ +T__0=1 +T__1=2 +T__2=3 +T__3=4 +T__4=5 +IF=6 +FOR=7 +WHILE=8 +REPEAT=9 +FUNCTION=10 +ELSE=11 +IN=12 +LIST_ACCESS_START=13 +LIST_ACCESS_END=14 +ARRAY_ACCESS_START=15 +ARRAY_ACCESS_END=16 +NAMESPACE_ACCESS=17 +COMPONENT_ACCESS=18 +HELP=19 +NEXT=20 +BREAK=21 +NULL=22 +NA=23 +INF=24 +NAN=25 +TRUE=26 +FALSE=27 +NOT=28 +RANGE_OPERATOR=29 +MULT_DIV=30 +ADD_SUB=31 +COMPARATOR=32 +ASSIGN=33 +EQUALS=34 +AND=35 +OR=36 +PAREN_L=37 +PAREN_R=38 +CURLY_L=39 +CURLY_R=40 +HEX=41 +INT=42 +FLOAT=43 +COMPLEX=44 +STRING=45 +ID=46 +USER_OP=47 +NL=48 +SEMICOLON=49 +WS=50 +'^'=1 +'~'=2 +','=3 +'...'=4 +'.'=5 +'if'=6 +'for'=7 +'while'=8 +'repeat'=9 +'function'=10 +'else'=11 +'in'=12 +'[['=13 +']]'=14 +'['=15 +']'=16 +'?'=19 +'next'=20 +'break'=21 +'NULL'=22 +'NA'=23 +'inf'=24 +'NaN'=25 +'TRUE'=26 +'FALSE'=27 +'!'=28 +':'=29 +'='=34 +'('=37 +')'=38 +'{'=39 +'}'=40 +';'=49 diff --git a/src/pycropml/transpiler/antlr_py/grammars/RLexer.interp b/src/pycropml/transpiler/antlr_py/grammars/RLexer.interp new file mode 100644 index 00000000..b01d6a29 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/RLexer.interp @@ -0,0 +1,176 @@ +token literal names: +null +'^' +'~' +',' +'...' +'.' +'if' +'for' +'while' +'repeat' +'function' +'else' +'in' +'[[' +']]' +'[' +']' +null +null +'?' +'next' +'break' +'NULL' +'NA' +'inf' +'NaN' +'TRUE' +'FALSE' +'!' +':' +null +null +null +null +'=' +null +null +'(' +')' +'{' +'}' +null +null +null +null +null +null +null +null +';' +null + +token symbolic names: +null +null +null +null +null +null +IF +FOR +WHILE +REPEAT +FUNCTION +ELSE +IN +LIST_ACCESS_START +LIST_ACCESS_END +ARRAY_ACCESS_START +ARRAY_ACCESS_END +NAMESPACE_ACCESS +COMPONENT_ACCESS +HELP +NEXT +BREAK +NULL +NA +INF +NAN +TRUE +FALSE +NOT +RANGE_OPERATOR +MULT_DIV +ADD_SUB +COMPARATOR +ASSIGN +EQUALS +AND +OR +PAREN_L +PAREN_R +CURLY_L +CURLY_R +HEX +INT +FLOAT +COMPLEX +STRING +ID +USER_OP +NL +SEMICOLON +WS + +rule names: +T__0 +T__1 +T__2 +T__3 +T__4 +IF +FOR +WHILE +REPEAT +FUNCTION +ELSE +IN +LIST_ACCESS_START +LIST_ACCESS_END +ARRAY_ACCESS_START +ARRAY_ACCESS_END +NAMESPACE_ACCESS +COMPONENT_ACCESS +HELP +NEXT +BREAK +NULL +NA +INF +NAN +TRUE +FALSE +NOT +RANGE_OPERATOR +MULT_DIV +ADD_SUB +COMPARATOR +ASSIGN +EQUALS +AND +OR +PAREN_L +PAREN_R +CURLY_L +CURLY_R +HEX +INT +HEXDIGIT +FLOAT +DIGIT +EXP +COMPLEX +STRING +ESC +UNICODE_ESCAPE +OCTAL_ESCAPE +HEX_ESCAPE +ID +LETTER +USER_OP +COMMENT +NL +SEMICOLON +WS + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 50, 493, 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, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 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, 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, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 184, 8, 16, 1, 17, 1, 17, 1, 18, 1, 18, 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, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 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, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 246, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 260, 8, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 3, 34, 267, 8, 34, 1, 35, 1, 35, 1, 35, 3, 35, 272, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 4, 40, 285, 8, 40, 11, 40, 12, 40, 286, 1, 40, 3, 40, 290, 8, 40, 1, 41, 4, 41, 293, 8, 41, 11, 41, 12, 41, 294, 1, 41, 3, 41, 298, 8, 41, 1, 42, 1, 42, 1, 43, 4, 43, 303, 8, 43, 11, 43, 12, 43, 304, 1, 43, 1, 43, 5, 43, 309, 8, 43, 10, 43, 12, 43, 312, 9, 43, 1, 43, 3, 43, 315, 8, 43, 1, 43, 3, 43, 318, 8, 43, 1, 43, 4, 43, 321, 8, 43, 11, 43, 12, 43, 322, 1, 43, 3, 43, 326, 8, 43, 1, 43, 3, 43, 329, 8, 43, 1, 43, 1, 43, 4, 43, 333, 8, 43, 11, 43, 12, 43, 334, 1, 43, 3, 43, 338, 8, 43, 1, 43, 3, 43, 341, 8, 43, 3, 43, 343, 8, 43, 1, 44, 1, 44, 1, 45, 1, 45, 3, 45, 349, 8, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 359, 8, 46, 1, 47, 1, 47, 1, 47, 5, 47, 364, 8, 47, 10, 47, 12, 47, 367, 9, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 373, 8, 47, 10, 47, 12, 47, 376, 9, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 382, 8, 47, 10, 47, 12, 47, 385, 9, 47, 1, 47, 3, 47, 388, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 395, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 413, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 424, 8, 50, 1, 51, 1, 51, 1, 51, 3, 51, 429, 8, 51, 1, 52, 1, 52, 1, 52, 3, 52, 434, 8, 52, 1, 52, 1, 52, 1, 52, 5, 52, 439, 8, 52, 10, 52, 12, 52, 442, 9, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 448, 8, 52, 10, 52, 12, 52, 451, 9, 52, 3, 52, 453, 8, 52, 1, 53, 1, 53, 1, 54, 1, 54, 5, 54, 459, 8, 54, 10, 54, 12, 54, 462, 9, 54, 1, 54, 1, 54, 1, 55, 1, 55, 5, 55, 468, 8, 55, 10, 55, 12, 55, 471, 9, 55, 1, 55, 3, 55, 474, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 3, 56, 481, 8, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 4, 58, 488, 8, 58, 11, 58, 12, 58, 489, 1, 58, 1, 58, 5, 365, 374, 383, 460, 469, 0, 59, 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, 0, 87, 43, 89, 0, 91, 0, 93, 44, 95, 45, 97, 0, 99, 0, 101, 0, 103, 0, 105, 46, 107, 0, 109, 47, 111, 0, 113, 48, 115, 49, 117, 50, 1, 0, 15, 2, 0, 36, 36, 64, 64, 2, 0, 42, 42, 47, 47, 2, 0, 43, 43, 45, 45, 2, 0, 88, 88, 120, 120, 2, 0, 76, 76, 108, 108, 3, 0, 48, 57, 65, 70, 97, 102, 2, 0, 69, 69, 101, 101, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 9, 0, 34, 34, 39, 39, 92, 92, 97, 98, 102, 102, 110, 110, 114, 114, 116, 116, 118, 118, 1, 0, 48, 51, 1, 0, 48, 55, 2, 0, 46, 46, 95, 95, 2, 0, 65, 90, 97, 122, 3, 0, 9, 9, 12, 12, 32, 32, 542, 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, 87, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 105, 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, 1, 119, 1, 0, 0, 0, 3, 121, 1, 0, 0, 0, 5, 123, 1, 0, 0, 0, 7, 125, 1, 0, 0, 0, 9, 129, 1, 0, 0, 0, 11, 131, 1, 0, 0, 0, 13, 134, 1, 0, 0, 0, 15, 138, 1, 0, 0, 0, 17, 144, 1, 0, 0, 0, 19, 151, 1, 0, 0, 0, 21, 160, 1, 0, 0, 0, 23, 165, 1, 0, 0, 0, 25, 168, 1, 0, 0, 0, 27, 171, 1, 0, 0, 0, 29, 174, 1, 0, 0, 0, 31, 176, 1, 0, 0, 0, 33, 183, 1, 0, 0, 0, 35, 185, 1, 0, 0, 0, 37, 187, 1, 0, 0, 0, 39, 189, 1, 0, 0, 0, 41, 194, 1, 0, 0, 0, 43, 200, 1, 0, 0, 0, 45, 205, 1, 0, 0, 0, 47, 208, 1, 0, 0, 0, 49, 212, 1, 0, 0, 0, 51, 216, 1, 0, 0, 0, 53, 221, 1, 0, 0, 0, 55, 227, 1, 0, 0, 0, 57, 229, 1, 0, 0, 0, 59, 231, 1, 0, 0, 0, 61, 233, 1, 0, 0, 0, 63, 245, 1, 0, 0, 0, 65, 259, 1, 0, 0, 0, 67, 261, 1, 0, 0, 0, 69, 266, 1, 0, 0, 0, 71, 271, 1, 0, 0, 0, 73, 273, 1, 0, 0, 0, 75, 275, 1, 0, 0, 0, 77, 277, 1, 0, 0, 0, 79, 279, 1, 0, 0, 0, 81, 281, 1, 0, 0, 0, 83, 292, 1, 0, 0, 0, 85, 299, 1, 0, 0, 0, 87, 342, 1, 0, 0, 0, 89, 344, 1, 0, 0, 0, 91, 346, 1, 0, 0, 0, 93, 358, 1, 0, 0, 0, 95, 387, 1, 0, 0, 0, 97, 394, 1, 0, 0, 0, 99, 412, 1, 0, 0, 0, 101, 423, 1, 0, 0, 0, 103, 425, 1, 0, 0, 0, 105, 452, 1, 0, 0, 0, 107, 454, 1, 0, 0, 0, 109, 456, 1, 0, 0, 0, 111, 465, 1, 0, 0, 0, 113, 480, 1, 0, 0, 0, 115, 484, 1, 0, 0, 0, 117, 487, 1, 0, 0, 0, 119, 120, 5, 94, 0, 0, 120, 2, 1, 0, 0, 0, 121, 122, 5, 126, 0, 0, 122, 4, 1, 0, 0, 0, 123, 124, 5, 44, 0, 0, 124, 6, 1, 0, 0, 0, 125, 126, 5, 46, 0, 0, 126, 127, 5, 46, 0, 0, 127, 128, 5, 46, 0, 0, 128, 8, 1, 0, 0, 0, 129, 130, 5, 46, 0, 0, 130, 10, 1, 0, 0, 0, 131, 132, 5, 105, 0, 0, 132, 133, 5, 102, 0, 0, 133, 12, 1, 0, 0, 0, 134, 135, 5, 102, 0, 0, 135, 136, 5, 111, 0, 0, 136, 137, 5, 114, 0, 0, 137, 14, 1, 0, 0, 0, 138, 139, 5, 119, 0, 0, 139, 140, 5, 104, 0, 0, 140, 141, 5, 105, 0, 0, 141, 142, 5, 108, 0, 0, 142, 143, 5, 101, 0, 0, 143, 16, 1, 0, 0, 0, 144, 145, 5, 114, 0, 0, 145, 146, 5, 101, 0, 0, 146, 147, 5, 112, 0, 0, 147, 148, 5, 101, 0, 0, 148, 149, 5, 97, 0, 0, 149, 150, 5, 116, 0, 0, 150, 18, 1, 0, 0, 0, 151, 152, 5, 102, 0, 0, 152, 153, 5, 117, 0, 0, 153, 154, 5, 110, 0, 0, 154, 155, 5, 99, 0, 0, 155, 156, 5, 116, 0, 0, 156, 157, 5, 105, 0, 0, 157, 158, 5, 111, 0, 0, 158, 159, 5, 110, 0, 0, 159, 20, 1, 0, 0, 0, 160, 161, 5, 101, 0, 0, 161, 162, 5, 108, 0, 0, 162, 163, 5, 115, 0, 0, 163, 164, 5, 101, 0, 0, 164, 22, 1, 0, 0, 0, 165, 166, 5, 105, 0, 0, 166, 167, 5, 110, 0, 0, 167, 24, 1, 0, 0, 0, 168, 169, 5, 91, 0, 0, 169, 170, 5, 91, 0, 0, 170, 26, 1, 0, 0, 0, 171, 172, 5, 93, 0, 0, 172, 173, 5, 93, 0, 0, 173, 28, 1, 0, 0, 0, 174, 175, 5, 91, 0, 0, 175, 30, 1, 0, 0, 0, 176, 177, 5, 93, 0, 0, 177, 32, 1, 0, 0, 0, 178, 179, 5, 58, 0, 0, 179, 180, 5, 58, 0, 0, 180, 184, 5, 58, 0, 0, 181, 182, 5, 58, 0, 0, 182, 184, 5, 58, 0, 0, 183, 178, 1, 0, 0, 0, 183, 181, 1, 0, 0, 0, 184, 34, 1, 0, 0, 0, 185, 186, 7, 0, 0, 0, 186, 36, 1, 0, 0, 0, 187, 188, 5, 63, 0, 0, 188, 38, 1, 0, 0, 0, 189, 190, 5, 110, 0, 0, 190, 191, 5, 101, 0, 0, 191, 192, 5, 120, 0, 0, 192, 193, 5, 116, 0, 0, 193, 40, 1, 0, 0, 0, 194, 195, 5, 98, 0, 0, 195, 196, 5, 114, 0, 0, 196, 197, 5, 101, 0, 0, 197, 198, 5, 97, 0, 0, 198, 199, 5, 107, 0, 0, 199, 42, 1, 0, 0, 0, 200, 201, 5, 78, 0, 0, 201, 202, 5, 85, 0, 0, 202, 203, 5, 76, 0, 0, 203, 204, 5, 76, 0, 0, 204, 44, 1, 0, 0, 0, 205, 206, 5, 78, 0, 0, 206, 207, 5, 65, 0, 0, 207, 46, 1, 0, 0, 0, 208, 209, 5, 105, 0, 0, 209, 210, 5, 110, 0, 0, 210, 211, 5, 102, 0, 0, 211, 48, 1, 0, 0, 0, 212, 213, 5, 78, 0, 0, 213, 214, 5, 97, 0, 0, 214, 215, 5, 78, 0, 0, 215, 50, 1, 0, 0, 0, 216, 217, 5, 84, 0, 0, 217, 218, 5, 82, 0, 0, 218, 219, 5, 85, 0, 0, 219, 220, 5, 69, 0, 0, 220, 52, 1, 0, 0, 0, 221, 222, 5, 70, 0, 0, 222, 223, 5, 65, 0, 0, 223, 224, 5, 76, 0, 0, 224, 225, 5, 83, 0, 0, 225, 226, 5, 69, 0, 0, 226, 54, 1, 0, 0, 0, 227, 228, 5, 33, 0, 0, 228, 56, 1, 0, 0, 0, 229, 230, 5, 58, 0, 0, 230, 58, 1, 0, 0, 0, 231, 232, 7, 1, 0, 0, 232, 60, 1, 0, 0, 0, 233, 234, 7, 2, 0, 0, 234, 62, 1, 0, 0, 0, 235, 246, 5, 62, 0, 0, 236, 237, 5, 62, 0, 0, 237, 246, 5, 61, 0, 0, 238, 246, 5, 60, 0, 0, 239, 240, 5, 60, 0, 0, 240, 246, 5, 61, 0, 0, 241, 242, 5, 61, 0, 0, 242, 246, 5, 61, 0, 0, 243, 244, 5, 33, 0, 0, 244, 246, 5, 61, 0, 0, 245, 235, 1, 0, 0, 0, 245, 236, 1, 0, 0, 0, 245, 238, 1, 0, 0, 0, 245, 239, 1, 0, 0, 0, 245, 241, 1, 0, 0, 0, 245, 243, 1, 0, 0, 0, 246, 64, 1, 0, 0, 0, 247, 248, 5, 60, 0, 0, 248, 260, 5, 45, 0, 0, 249, 250, 5, 60, 0, 0, 250, 251, 5, 60, 0, 0, 251, 260, 5, 45, 0, 0, 252, 253, 5, 45, 0, 0, 253, 260, 5, 62, 0, 0, 254, 255, 5, 45, 0, 0, 255, 256, 5, 62, 0, 0, 256, 260, 5, 62, 0, 0, 257, 258, 5, 58, 0, 0, 258, 260, 5, 61, 0, 0, 259, 247, 1, 0, 0, 0, 259, 249, 1, 0, 0, 0, 259, 252, 1, 0, 0, 0, 259, 254, 1, 0, 0, 0, 259, 257, 1, 0, 0, 0, 260, 66, 1, 0, 0, 0, 261, 262, 5, 61, 0, 0, 262, 68, 1, 0, 0, 0, 263, 264, 5, 38, 0, 0, 264, 267, 5, 38, 0, 0, 265, 267, 5, 38, 0, 0, 266, 263, 1, 0, 0, 0, 266, 265, 1, 0, 0, 0, 267, 70, 1, 0, 0, 0, 268, 269, 5, 124, 0, 0, 269, 272, 5, 124, 0, 0, 270, 272, 5, 124, 0, 0, 271, 268, 1, 0, 0, 0, 271, 270, 1, 0, 0, 0, 272, 72, 1, 0, 0, 0, 273, 274, 5, 40, 0, 0, 274, 74, 1, 0, 0, 0, 275, 276, 5, 41, 0, 0, 276, 76, 1, 0, 0, 0, 277, 278, 5, 123, 0, 0, 278, 78, 1, 0, 0, 0, 279, 280, 5, 125, 0, 0, 280, 80, 1, 0, 0, 0, 281, 282, 5, 48, 0, 0, 282, 284, 7, 3, 0, 0, 283, 285, 3, 85, 42, 0, 284, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 289, 1, 0, 0, 0, 288, 290, 7, 4, 0, 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 82, 1, 0, 0, 0, 291, 293, 3, 89, 44, 0, 292, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 297, 1, 0, 0, 0, 296, 298, 7, 4, 0, 0, 297, 296, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 84, 1, 0, 0, 0, 299, 300, 7, 5, 0, 0, 300, 86, 1, 0, 0, 0, 301, 303, 3, 89, 44, 0, 302, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 310, 5, 46, 0, 0, 307, 309, 3, 89, 44, 0, 308, 307, 1, 0, 0, 0, 309, 312, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 314, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 313, 315, 3, 91, 45, 0, 314, 313, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 317, 1, 0, 0, 0, 316, 318, 7, 4, 0, 0, 317, 316, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 343, 1, 0, 0, 0, 319, 321, 3, 89, 44, 0, 320, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 325, 1, 0, 0, 0, 324, 326, 3, 91, 45, 0, 325, 324, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 328, 1, 0, 0, 0, 327, 329, 7, 4, 0, 0, 328, 327, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 343, 1, 0, 0, 0, 330, 332, 5, 46, 0, 0, 331, 333, 3, 89, 44, 0, 332, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 337, 1, 0, 0, 0, 336, 338, 3, 91, 45, 0, 337, 336, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 340, 1, 0, 0, 0, 339, 341, 7, 4, 0, 0, 340, 339, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 343, 1, 0, 0, 0, 342, 302, 1, 0, 0, 0, 342, 320, 1, 0, 0, 0, 342, 330, 1, 0, 0, 0, 343, 88, 1, 0, 0, 0, 344, 345, 2, 48, 57, 0, 345, 90, 1, 0, 0, 0, 346, 348, 7, 6, 0, 0, 347, 349, 7, 2, 0, 0, 348, 347, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 351, 3, 83, 41, 0, 351, 92, 1, 0, 0, 0, 352, 353, 3, 83, 41, 0, 353, 354, 5, 105, 0, 0, 354, 359, 1, 0, 0, 0, 355, 356, 3, 87, 43, 0, 356, 357, 5, 105, 0, 0, 357, 359, 1, 0, 0, 0, 358, 352, 1, 0, 0, 0, 358, 355, 1, 0, 0, 0, 359, 94, 1, 0, 0, 0, 360, 365, 5, 34, 0, 0, 361, 364, 3, 97, 48, 0, 362, 364, 8, 7, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, 1, 0, 0, 0, 364, 367, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 365, 363, 1, 0, 0, 0, 366, 368, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 368, 388, 5, 34, 0, 0, 369, 374, 5, 39, 0, 0, 370, 373, 3, 97, 48, 0, 371, 373, 8, 8, 0, 0, 372, 370, 1, 0, 0, 0, 372, 371, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 388, 5, 39, 0, 0, 378, 383, 5, 96, 0, 0, 379, 382, 3, 97, 48, 0, 380, 382, 8, 8, 0, 0, 381, 379, 1, 0, 0, 0, 381, 380, 1, 0, 0, 0, 382, 385, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 386, 388, 5, 96, 0, 0, 387, 360, 1, 0, 0, 0, 387, 369, 1, 0, 0, 0, 387, 378, 1, 0, 0, 0, 388, 96, 1, 0, 0, 0, 389, 390, 5, 92, 0, 0, 390, 395, 7, 9, 0, 0, 391, 395, 3, 99, 49, 0, 392, 395, 3, 103, 51, 0, 393, 395, 3, 101, 50, 0, 394, 389, 1, 0, 0, 0, 394, 391, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 394, 393, 1, 0, 0, 0, 395, 98, 1, 0, 0, 0, 396, 397, 5, 92, 0, 0, 397, 398, 5, 117, 0, 0, 398, 399, 3, 85, 42, 0, 399, 400, 3, 85, 42, 0, 400, 401, 3, 85, 42, 0, 401, 402, 3, 85, 42, 0, 402, 413, 1, 0, 0, 0, 403, 404, 5, 92, 0, 0, 404, 405, 5, 117, 0, 0, 405, 406, 5, 123, 0, 0, 406, 407, 3, 85, 42, 0, 407, 408, 3, 85, 42, 0, 408, 409, 3, 85, 42, 0, 409, 410, 3, 85, 42, 0, 410, 411, 5, 125, 0, 0, 411, 413, 1, 0, 0, 0, 412, 396, 1, 0, 0, 0, 412, 403, 1, 0, 0, 0, 413, 100, 1, 0, 0, 0, 414, 415, 5, 92, 0, 0, 415, 416, 7, 10, 0, 0, 416, 417, 7, 11, 0, 0, 417, 424, 7, 11, 0, 0, 418, 419, 5, 92, 0, 0, 419, 420, 7, 11, 0, 0, 420, 424, 7, 11, 0, 0, 421, 422, 5, 92, 0, 0, 422, 424, 7, 11, 0, 0, 423, 414, 1, 0, 0, 0, 423, 418, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 424, 102, 1, 0, 0, 0, 425, 426, 5, 92, 0, 0, 426, 428, 3, 85, 42, 0, 427, 429, 3, 85, 42, 0, 428, 427, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 104, 1, 0, 0, 0, 430, 433, 5, 46, 0, 0, 431, 434, 3, 107, 53, 0, 432, 434, 7, 12, 0, 0, 433, 431, 1, 0, 0, 0, 433, 432, 1, 0, 0, 0, 434, 440, 1, 0, 0, 0, 435, 439, 3, 107, 53, 0, 436, 439, 3, 89, 44, 0, 437, 439, 7, 12, 0, 0, 438, 435, 1, 0, 0, 0, 438, 436, 1, 0, 0, 0, 438, 437, 1, 0, 0, 0, 439, 442, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 453, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 443, 449, 3, 107, 53, 0, 444, 448, 3, 107, 53, 0, 445, 448, 3, 89, 44, 0, 446, 448, 7, 12, 0, 0, 447, 444, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 447, 446, 1, 0, 0, 0, 448, 451, 1, 0, 0, 0, 449, 447, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 452, 430, 1, 0, 0, 0, 452, 443, 1, 0, 0, 0, 453, 106, 1, 0, 0, 0, 454, 455, 7, 13, 0, 0, 455, 108, 1, 0, 0, 0, 456, 460, 5, 37, 0, 0, 457, 459, 9, 0, 0, 0, 458, 457, 1, 0, 0, 0, 459, 462, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 463, 1, 0, 0, 0, 462, 460, 1, 0, 0, 0, 463, 464, 5, 37, 0, 0, 464, 110, 1, 0, 0, 0, 465, 469, 5, 35, 0, 0, 466, 468, 9, 0, 0, 0, 467, 466, 1, 0, 0, 0, 468, 471, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 469, 467, 1, 0, 0, 0, 470, 473, 1, 0, 0, 0, 471, 469, 1, 0, 0, 0, 472, 474, 5, 13, 0, 0, 473, 472, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 5, 10, 0, 0, 476, 477, 1, 0, 0, 0, 477, 478, 6, 55, 0, 0, 478, 112, 1, 0, 0, 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, 483, 5, 10, 0, 0, 483, 114, 1, 0, 0, 0, 484, 485, 5, 59, 0, 0, 485, 116, 1, 0, 0, 0, 486, 488, 7, 14, 0, 0, 487, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 6, 58, 1, 0, 492, 118, 1, 0, 0, 0, 45, 0, 183, 245, 259, 266, 271, 286, 289, 294, 297, 304, 310, 314, 317, 322, 325, 328, 334, 337, 340, 342, 348, 358, 363, 365, 372, 374, 381, 383, 387, 394, 412, 423, 428, 433, 438, 440, 447, 449, 452, 460, 469, 473, 480, 489, 2, 7, 48, 0, 6, 0, 0] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/RLexer.py b/src/pycropml/transpiler/antlr_py/grammars/RLexer.py index a19918e7..fd752c28 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/RLexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/RLexer.py @@ -1,259 +1,205 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\r\R.g4 by ANTLR 4.8 +# Generated from R.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO import sys - +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2B") - buf.write("\u0215\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\3\2\3\2\3") - buf.write("\3\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\7") - buf.write("\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r\3\16") - buf.write("\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3\22\3\22\3\23") - buf.write("\3\23\3\23\3\24\3\24\3\24\3\25\3\25\3\25\3\26\3\26\3\27") - buf.write("\3\27\3\30\3\30\3\30\3\31\3\31\3\32\3\32\3\32\3\33\3\33") - buf.write("\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\36\3\36\3\37\3\37") - buf.write("\3\37\3 \3 \3 \3 \3!\3!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3\"") - buf.write("\3\"\3\"\3#\3#\3$\3$\3%\3%\3&\3&\3\'\3\'\3\'\3(\3(\3(") - buf.write("\3(\3(\3)\3)\3)\3)\3*\3*\3*\3+\3+\3+\3+\3+\3+\3,\3,\3") - buf.write(",\3,\3,\3,\3,\3-\3-\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3") - buf.write("\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\62\3\62\3\62") - buf.write("\3\62\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\65") - buf.write("\3\65\3\65\3\65\3\65\3\65\3\66\3\66\3\67\3\67\3\67\3\67") - buf.write("\38\38\39\39\39\69\u0147\n9\r9\169\u0148\39\59\u014c\n") - buf.write("9\3:\6:\u014f\n:\r:\16:\u0150\3:\5:\u0154\n:\3;\3;\3<") - buf.write("\6<\u0159\n<\r<\16<\u015a\3<\3<\7<\u015f\n<\f<\16<\u0162") - buf.write("\13<\3<\5<\u0165\n<\3<\5<\u0168\n<\3<\6<\u016b\n<\r<\16") - buf.write("<\u016c\3<\5<\u0170\n<\3<\5<\u0173\n<\3<\3<\6<\u0177\n") - buf.write("<\r<\16<\u0178\3<\5<\u017c\n<\3<\5<\u017f\n<\5<\u0181") - buf.write("\n<\3=\3=\3>\3>\5>\u0187\n>\3>\3>\3?\3?\3?\3?\3?\3?\5") - buf.write("?\u0191\n?\3@\3@\3@\7@\u0196\n@\f@\16@\u0199\13@\3@\3") - buf.write("@\3@\3@\7@\u019f\n@\f@\16@\u01a2\13@\3@\3@\3@\3@\7@\u01a8") - buf.write("\n@\f@\16@\u01ab\13@\3@\5@\u01ae\n@\3A\3A\3A\3A\3A\5A") - buf.write("\u01b5\nA\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3") - buf.write("B\3B\5B\u01c7\nB\3C\3C\3C\3C\3C\3C\3C\3C\3C\5C\u01d2\n") - buf.write("C\3D\3D\3D\5D\u01d7\nD\3E\3E\3E\5E\u01dc\nE\3E\3E\3E\7") - buf.write("E\u01e1\nE\fE\16E\u01e4\13E\3E\3E\3E\3E\7E\u01ea\nE\f") - buf.write("E\16E\u01ed\13E\5E\u01ef\nE\3F\3F\3G\3G\7G\u01f5\nG\f") - buf.write("G\16G\u01f8\13G\3G\3G\3H\3H\7H\u01fe\nH\fH\16H\u0201\13") - buf.write("H\3H\5H\u0204\nH\3H\3H\3H\3H\3I\5I\u020b\nI\3I\3I\3J\6") - buf.write("J\u0210\nJ\rJ\16J\u0211\3J\3J\7\u0197\u01a0\u01a9\u01f6") - buf.write("\u01ff\2K\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25") - buf.write("\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+") - buf.write("\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E") - buf.write("$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k") - buf.write("\67m8o9q:s;u\2w\u0081\2\u0083\2\u0085\2") - buf.write("\u0087\2\u0089?\u008b\2\u008d@\u008f\2\u0091A\u0093B\3") - buf.write("\2\17\4\2ZZzz\4\2NNnn\5\2\62;CHch\4\2GGgg\4\2--//\4\2") - buf.write("$$^^\4\2))^^\13\2$$))^^cdhhppttvvxx\3\2\62\65\3\2\629") - buf.write("\4\2\60\60aa\4\2C\\c|\5\2\13\13\16\16\"\"\2\u023a\2\3") - buf.write("\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2") - buf.write("\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2") - buf.write("\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2") - buf.write("\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3") - buf.write("\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2") - buf.write("/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67") - buf.write("\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2") - buf.write("A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2") - buf.write("\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2") - buf.write("\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2") - buf.write("\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3") - buf.write("\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q") - buf.write("\3\2\2\2\2s\3\2\2\2\2w\3\2\2\2\2}\3\2\2\2\2\177\3\2\2") - buf.write("\2\2\u0089\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091") - buf.write("\3\2\2\2\2\u0093\3\2\2\2\3\u0095\3\2\2\2\5\u0097\3\2\2") - buf.write("\2\7\u009a\3\2\2\2\t\u009c\3\2\2\2\13\u009e\3\2\2\2\r") - buf.write("\u00a1\3\2\2\2\17\u00a5\3\2\2\2\21\u00a7\3\2\2\2\23\u00a9") - buf.write("\3\2\2\2\25\u00ab\3\2\2\2\27\u00ad\3\2\2\2\31\u00af\3") - buf.write("\2\2\2\33\u00b1\3\2\2\2\35\u00b3\3\2\2\2\37\u00b5\3\2") - buf.write("\2\2!\u00b7\3\2\2\2#\u00ba\3\2\2\2%\u00bc\3\2\2\2\'\u00bf") - buf.write("\3\2\2\2)\u00c2\3\2\2\2+\u00c5\3\2\2\2-\u00c7\3\2\2\2") - buf.write("/\u00c9\3\2\2\2\61\u00cc\3\2\2\2\63\u00ce\3\2\2\2\65\u00d1") - buf.write("\3\2\2\2\67\u00d3\3\2\2\29\u00d6\3\2\2\2;\u00da\3\2\2") - buf.write("\2=\u00dc\3\2\2\2?\u00df\3\2\2\2A\u00e3\3\2\2\2C\u00e6") - buf.write("\3\2\2\2E\u00ef\3\2\2\2G\u00f1\3\2\2\2I\u00f3\3\2\2\2") - buf.write("K\u00f5\3\2\2\2M\u00f7\3\2\2\2O\u00fa\3\2\2\2Q\u00ff\3") - buf.write("\2\2\2S\u0103\3\2\2\2U\u0106\3\2\2\2W\u010c\3\2\2\2Y\u0113") - buf.write("\3\2\2\2[\u0115\3\2\2\2]\u011a\3\2\2\2_\u0120\3\2\2\2") - buf.write("a\u0125\3\2\2\2c\u0128\3\2\2\2e\u012c\3\2\2\2g\u0130\3") - buf.write("\2\2\2i\u0135\3\2\2\2k\u013b\3\2\2\2m\u013d\3\2\2\2o\u0141") - buf.write("\3\2\2\2q\u0143\3\2\2\2s\u014e\3\2\2\2u\u0155\3\2\2\2") - buf.write("w\u0180\3\2\2\2y\u0182\3\2\2\2{\u0184\3\2\2\2}\u0190\3") - buf.write("\2\2\2\177\u01ad\3\2\2\2\u0081\u01b4\3\2\2\2\u0083\u01c6") - buf.write("\3\2\2\2\u0085\u01d1\3\2\2\2\u0087\u01d3\3\2\2\2\u0089") - buf.write("\u01ee\3\2\2\2\u008b\u01f0\3\2\2\2\u008d\u01f2\3\2\2\2") - buf.write("\u008f\u01fb\3\2\2\2\u0091\u020a\3\2\2\2\u0093\u020f\3") - buf.write("\2\2\2\u0095\u0096\7=\2\2\u0096\4\3\2\2\2\u0097\u0098") - buf.write("\7]\2\2\u0098\u0099\7]\2\2\u0099\6\3\2\2\2\u009a\u009b") - buf.write("\7_\2\2\u009b\b\3\2\2\2\u009c\u009d\7]\2\2\u009d\n\3\2") - buf.write("\2\2\u009e\u009f\7<\2\2\u009f\u00a0\7<\2\2\u00a0\f\3\2") - buf.write("\2\2\u00a1\u00a2\7<\2\2\u00a2\u00a3\7<\2\2\u00a3\u00a4") - buf.write("\7<\2\2\u00a4\16\3\2\2\2\u00a5\u00a6\7&\2\2\u00a6\20\3") - buf.write("\2\2\2\u00a7\u00a8\7B\2\2\u00a8\22\3\2\2\2\u00a9\u00aa") - buf.write("\7`\2\2\u00aa\24\3\2\2\2\u00ab\u00ac\7/\2\2\u00ac\26\3") - buf.write("\2\2\2\u00ad\u00ae\7-\2\2\u00ae\30\3\2\2\2\u00af\u00b0") - buf.write("\7<\2\2\u00b0\32\3\2\2\2\u00b1\u00b2\7,\2\2\u00b2\34\3") - buf.write("\2\2\2\u00b3\u00b4\7\61\2\2\u00b4\36\3\2\2\2\u00b5\u00b6") - buf.write("\7@\2\2\u00b6 \3\2\2\2\u00b7\u00b8\7@\2\2\u00b8\u00b9") - buf.write("\7?\2\2\u00b9\"\3\2\2\2\u00ba\u00bb\7>\2\2\u00bb$\3\2") - buf.write("\2\2\u00bc\u00bd\7>\2\2\u00bd\u00be\7?\2\2\u00be&\3\2") - buf.write("\2\2\u00bf\u00c0\7?\2\2\u00c0\u00c1\7?\2\2\u00c1(\3\2") - buf.write("\2\2\u00c2\u00c3\7#\2\2\u00c3\u00c4\7?\2\2\u00c4*\3\2") - buf.write("\2\2\u00c5\u00c6\7#\2\2\u00c6,\3\2\2\2\u00c7\u00c8\7(") - buf.write("\2\2\u00c8.\3\2\2\2\u00c9\u00ca\7(\2\2\u00ca\u00cb\7(") - buf.write("\2\2\u00cb\60\3\2\2\2\u00cc\u00cd\7~\2\2\u00cd\62\3\2") - buf.write("\2\2\u00ce\u00cf\7~\2\2\u00cf\u00d0\7~\2\2\u00d0\64\3") - buf.write("\2\2\2\u00d1\u00d2\7\u0080\2\2\u00d2\66\3\2\2\2\u00d3") - buf.write("\u00d4\7>\2\2\u00d4\u00d5\7/\2\2\u00d58\3\2\2\2\u00d6") - buf.write("\u00d7\7>\2\2\u00d7\u00d8\7>\2\2\u00d8\u00d9\7/\2\2\u00d9") - buf.write(":\3\2\2\2\u00da\u00db\7?\2\2\u00db<\3\2\2\2\u00dc\u00dd") - buf.write("\7/\2\2\u00dd\u00de\7@\2\2\u00de>\3\2\2\2\u00df\u00e0") - buf.write("\7/\2\2\u00e0\u00e1\7@\2\2\u00e1\u00e2\7@\2\2\u00e2@\3") - buf.write("\2\2\2\u00e3\u00e4\7<\2\2\u00e4\u00e5\7?\2\2\u00e5B\3") - buf.write("\2\2\2\u00e6\u00e7\7h\2\2\u00e7\u00e8\7w\2\2\u00e8\u00e9") - buf.write("\7p\2\2\u00e9\u00ea\7e\2\2\u00ea\u00eb\7v\2\2\u00eb\u00ec") - buf.write("\7k\2\2\u00ec\u00ed\7q\2\2\u00ed\u00ee\7p\2\2\u00eeD\3") - buf.write("\2\2\2\u00ef\u00f0\7*\2\2\u00f0F\3\2\2\2\u00f1\u00f2\7") - buf.write("+\2\2\u00f2H\3\2\2\2\u00f3\u00f4\7}\2\2\u00f4J\3\2\2\2") - buf.write("\u00f5\u00f6\7\177\2\2\u00f6L\3\2\2\2\u00f7\u00f8\7k\2") - buf.write("\2\u00f8\u00f9\7h\2\2\u00f9N\3\2\2\2\u00fa\u00fb\7g\2") - buf.write("\2\u00fb\u00fc\7n\2\2\u00fc\u00fd\7u\2\2\u00fd\u00fe\7") - buf.write("g\2\2\u00feP\3\2\2\2\u00ff\u0100\7h\2\2\u0100\u0101\7") - buf.write("q\2\2\u0101\u0102\7t\2\2\u0102R\3\2\2\2\u0103\u0104\7") - buf.write("k\2\2\u0104\u0105\7p\2\2\u0105T\3\2\2\2\u0106\u0107\7") - buf.write("y\2\2\u0107\u0108\7j\2\2\u0108\u0109\7k\2\2\u0109\u010a") - buf.write("\7n\2\2\u010a\u010b\7g\2\2\u010bV\3\2\2\2\u010c\u010d") - buf.write("\7t\2\2\u010d\u010e\7g\2\2\u010e\u010f\7r\2\2\u010f\u0110") - buf.write("\7g\2\2\u0110\u0111\7c\2\2\u0111\u0112\7v\2\2\u0112X\3") - buf.write("\2\2\2\u0113\u0114\7A\2\2\u0114Z\3\2\2\2\u0115\u0116\7") - buf.write("p\2\2\u0116\u0117\7g\2\2\u0117\u0118\7z\2\2\u0118\u0119") - buf.write("\7v\2\2\u0119\\\3\2\2\2\u011a\u011b\7d\2\2\u011b\u011c") - buf.write("\7t\2\2\u011c\u011d\7g\2\2\u011d\u011e\7c\2\2\u011e\u011f") - buf.write("\7m\2\2\u011f^\3\2\2\2\u0120\u0121\7P\2\2\u0121\u0122") - buf.write("\7W\2\2\u0122\u0123\7N\2\2\u0123\u0124\7N\2\2\u0124`\3") - buf.write("\2\2\2\u0125\u0126\7P\2\2\u0126\u0127\7C\2\2\u0127b\3") - buf.write("\2\2\2\u0128\u0129\7K\2\2\u0129\u012a\7p\2\2\u012a\u012b") - buf.write("\7h\2\2\u012bd\3\2\2\2\u012c\u012d\7P\2\2\u012d\u012e") - buf.write("\7c\2\2\u012e\u012f\7P\2\2\u012ff\3\2\2\2\u0130\u0131") - buf.write("\7V\2\2\u0131\u0132\7T\2\2\u0132\u0133\7W\2\2\u0133\u0134") - buf.write("\7G\2\2\u0134h\3\2\2\2\u0135\u0136\7H\2\2\u0136\u0137") - buf.write("\7C\2\2\u0137\u0138\7N\2\2\u0138\u0139\7U\2\2\u0139\u013a") - buf.write("\7G\2\2\u013aj\3\2\2\2\u013b\u013c\7.\2\2\u013cl\3\2\2") - buf.write("\2\u013d\u013e\7\60\2\2\u013e\u013f\7\60\2\2\u013f\u0140") - buf.write("\7\60\2\2\u0140n\3\2\2\2\u0141\u0142\7\60\2\2\u0142p\3") - buf.write("\2\2\2\u0143\u0144\7\62\2\2\u0144\u0146\t\2\2\2\u0145") - buf.write("\u0147\5u;\2\u0146\u0145\3\2\2\2\u0147\u0148\3\2\2\2\u0148") - buf.write("\u0146\3\2\2\2\u0148\u0149\3\2\2\2\u0149\u014b\3\2\2\2") - buf.write("\u014a\u014c\t\3\2\2\u014b\u014a\3\2\2\2\u014b\u014c\3") - buf.write("\2\2\2\u014cr\3\2\2\2\u014d\u014f\5y=\2\u014e\u014d\3") - buf.write("\2\2\2\u014f\u0150\3\2\2\2\u0150\u014e\3\2\2\2\u0150\u0151") - buf.write("\3\2\2\2\u0151\u0153\3\2\2\2\u0152\u0154\t\3\2\2\u0153") - buf.write("\u0152\3\2\2\2\u0153\u0154\3\2\2\2\u0154t\3\2\2\2\u0155") - buf.write("\u0156\t\4\2\2\u0156v\3\2\2\2\u0157\u0159\5y=\2\u0158") - buf.write("\u0157\3\2\2\2\u0159\u015a\3\2\2\2\u015a\u0158\3\2\2\2") - buf.write("\u015a\u015b\3\2\2\2\u015b\u015c\3\2\2\2\u015c\u0160\7") - buf.write("\60\2\2\u015d\u015f\5y=\2\u015e\u015d\3\2\2\2\u015f\u0162") - buf.write("\3\2\2\2\u0160\u015e\3\2\2\2\u0160\u0161\3\2\2\2\u0161") - buf.write("\u0164\3\2\2\2\u0162\u0160\3\2\2\2\u0163\u0165\5{>\2\u0164") - buf.write("\u0163\3\2\2\2\u0164\u0165\3\2\2\2\u0165\u0167\3\2\2\2") - buf.write("\u0166\u0168\t\3\2\2\u0167\u0166\3\2\2\2\u0167\u0168\3") - buf.write("\2\2\2\u0168\u0181\3\2\2\2\u0169\u016b\5y=\2\u016a\u0169") - buf.write("\3\2\2\2\u016b\u016c\3\2\2\2\u016c\u016a\3\2\2\2\u016c") - buf.write("\u016d\3\2\2\2\u016d\u016f\3\2\2\2\u016e\u0170\5{>\2\u016f") - buf.write("\u016e\3\2\2\2\u016f\u0170\3\2\2\2\u0170\u0172\3\2\2\2") - buf.write("\u0171\u0173\t\3\2\2\u0172\u0171\3\2\2\2\u0172\u0173\3") - buf.write("\2\2\2\u0173\u0181\3\2\2\2\u0174\u0176\7\60\2\2\u0175") - buf.write("\u0177\5y=\2\u0176\u0175\3\2\2\2\u0177\u0178\3\2\2\2\u0178") - buf.write("\u0176\3\2\2\2\u0178\u0179\3\2\2\2\u0179\u017b\3\2\2\2") - buf.write("\u017a\u017c\5{>\2\u017b\u017a\3\2\2\2\u017b\u017c\3\2") - buf.write("\2\2\u017c\u017e\3\2\2\2\u017d\u017f\t\3\2\2\u017e\u017d") - buf.write("\3\2\2\2\u017e\u017f\3\2\2\2\u017f\u0181\3\2\2\2\u0180") - buf.write("\u0158\3\2\2\2\u0180\u016a\3\2\2\2\u0180\u0174\3\2\2\2") - buf.write("\u0181x\3\2\2\2\u0182\u0183\4\62;\2\u0183z\3\2\2\2\u0184") - buf.write("\u0186\t\5\2\2\u0185\u0187\t\6\2\2\u0186\u0185\3\2\2\2") - buf.write("\u0186\u0187\3\2\2\2\u0187\u0188\3\2\2\2\u0188\u0189\5") - buf.write("s:\2\u0189|\3\2\2\2\u018a\u018b\5s:\2\u018b\u018c\7k\2") - buf.write("\2\u018c\u0191\3\2\2\2\u018d\u018e\5w<\2\u018e\u018f\7") - buf.write("k\2\2\u018f\u0191\3\2\2\2\u0190\u018a\3\2\2\2\u0190\u018d") - buf.write("\3\2\2\2\u0191~\3\2\2\2\u0192\u0197\7$\2\2\u0193\u0196") - buf.write("\5\u0081A\2\u0194\u0196\n\7\2\2\u0195\u0193\3\2\2\2\u0195") - buf.write("\u0194\3\2\2\2\u0196\u0199\3\2\2\2\u0197\u0198\3\2\2\2") - buf.write("\u0197\u0195\3\2\2\2\u0198\u019a\3\2\2\2\u0199\u0197\3") - buf.write("\2\2\2\u019a\u01ae\7$\2\2\u019b\u01a0\7)\2\2\u019c\u019f") - buf.write("\5\u0081A\2\u019d\u019f\n\b\2\2\u019e\u019c\3\2\2\2\u019e") - buf.write("\u019d\3\2\2\2\u019f\u01a2\3\2\2\2\u01a0\u01a1\3\2\2\2") - buf.write("\u01a0\u019e\3\2\2\2\u01a1\u01a3\3\2\2\2\u01a2\u01a0\3") - buf.write("\2\2\2\u01a3\u01ae\7)\2\2\u01a4\u01a9\7b\2\2\u01a5\u01a8") - buf.write("\5\u0081A\2\u01a6\u01a8\n\b\2\2\u01a7\u01a5\3\2\2\2\u01a7") - buf.write("\u01a6\3\2\2\2\u01a8\u01ab\3\2\2\2\u01a9\u01aa\3\2\2\2") - buf.write("\u01a9\u01a7\3\2\2\2\u01aa\u01ac\3\2\2\2\u01ab\u01a9\3") - buf.write("\2\2\2\u01ac\u01ae\7b\2\2\u01ad\u0192\3\2\2\2\u01ad\u019b") - buf.write("\3\2\2\2\u01ad\u01a4\3\2\2\2\u01ae\u0080\3\2\2\2\u01af") - buf.write("\u01b0\7^\2\2\u01b0\u01b5\t\t\2\2\u01b1\u01b5\5\u0083") - buf.write("B\2\u01b2\u01b5\5\u0087D\2\u01b3\u01b5\5\u0085C\2\u01b4") - buf.write("\u01af\3\2\2\2\u01b4\u01b1\3\2\2\2\u01b4\u01b2\3\2\2\2") - buf.write("\u01b4\u01b3\3\2\2\2\u01b5\u0082\3\2\2\2\u01b6\u01b7\7") - buf.write("^\2\2\u01b7\u01b8\7w\2\2\u01b8\u01b9\5u;\2\u01b9\u01ba") - buf.write("\5u;\2\u01ba\u01bb\5u;\2\u01bb\u01bc\5u;\2\u01bc\u01c7") - buf.write("\3\2\2\2\u01bd\u01be\7^\2\2\u01be\u01bf\7w\2\2\u01bf\u01c0") - buf.write("\7}\2\2\u01c0\u01c1\5u;\2\u01c1\u01c2\5u;\2\u01c2\u01c3") - buf.write("\5u;\2\u01c3\u01c4\5u;\2\u01c4\u01c5\7\177\2\2\u01c5\u01c7") - buf.write("\3\2\2\2\u01c6\u01b6\3\2\2\2\u01c6\u01bd\3\2\2\2\u01c7") - buf.write("\u0084\3\2\2\2\u01c8\u01c9\7^\2\2\u01c9\u01ca\t\n\2\2") - buf.write("\u01ca\u01cb\t\13\2\2\u01cb\u01d2\t\13\2\2\u01cc\u01cd") - buf.write("\7^\2\2\u01cd\u01ce\t\13\2\2\u01ce\u01d2\t\13\2\2\u01cf") - buf.write("\u01d0\7^\2\2\u01d0\u01d2\t\13\2\2\u01d1\u01c8\3\2\2\2") - buf.write("\u01d1\u01cc\3\2\2\2\u01d1\u01cf\3\2\2\2\u01d2\u0086\3") - buf.write("\2\2\2\u01d3\u01d4\7^\2\2\u01d4\u01d6\5u;\2\u01d5\u01d7") - buf.write("\5u;\2\u01d6\u01d5\3\2\2\2\u01d6\u01d7\3\2\2\2\u01d7\u0088") - buf.write("\3\2\2\2\u01d8\u01db\7\60\2\2\u01d9\u01dc\5\u008bF\2\u01da") - buf.write("\u01dc\t\f\2\2\u01db\u01d9\3\2\2\2\u01db\u01da\3\2\2\2") - buf.write("\u01dc\u01e2\3\2\2\2\u01dd\u01e1\5\u008bF\2\u01de\u01e1") - buf.write("\5y=\2\u01df\u01e1\t\f\2\2\u01e0\u01dd\3\2\2\2\u01e0\u01de") - buf.write("\3\2\2\2\u01e0\u01df\3\2\2\2\u01e1\u01e4\3\2\2\2\u01e2") - buf.write("\u01e0\3\2\2\2\u01e2\u01e3\3\2\2\2\u01e3\u01ef\3\2\2\2") - buf.write("\u01e4\u01e2\3\2\2\2\u01e5\u01eb\5\u008bF\2\u01e6\u01ea") - buf.write("\5\u008bF\2\u01e7\u01ea\5y=\2\u01e8\u01ea\t\f\2\2\u01e9") - buf.write("\u01e6\3\2\2\2\u01e9\u01e7\3\2\2\2\u01e9\u01e8\3\2\2\2") - buf.write("\u01ea\u01ed\3\2\2\2\u01eb\u01e9\3\2\2\2\u01eb\u01ec\3") - buf.write("\2\2\2\u01ec\u01ef\3\2\2\2\u01ed\u01eb\3\2\2\2\u01ee\u01d8") - buf.write("\3\2\2\2\u01ee\u01e5\3\2\2\2\u01ef\u008a\3\2\2\2\u01f0") - buf.write("\u01f1\t\r\2\2\u01f1\u008c\3\2\2\2\u01f2\u01f6\7\'\2\2") - buf.write("\u01f3\u01f5\13\2\2\2\u01f4\u01f3\3\2\2\2\u01f5\u01f8") - buf.write("\3\2\2\2\u01f6\u01f7\3\2\2\2\u01f6\u01f4\3\2\2\2\u01f7") - buf.write("\u01f9\3\2\2\2\u01f8\u01f6\3\2\2\2\u01f9\u01fa\7\'\2\2") - buf.write("\u01fa\u008e\3\2\2\2\u01fb\u01ff\7%\2\2\u01fc\u01fe\13") - buf.write("\2\2\2\u01fd\u01fc\3\2\2\2\u01fe\u0201\3\2\2\2\u01ff\u0200") - buf.write("\3\2\2\2\u01ff\u01fd\3\2\2\2\u0200\u0203\3\2\2\2\u0201") - buf.write("\u01ff\3\2\2\2\u0202\u0204\7\17\2\2\u0203\u0202\3\2\2") - buf.write("\2\u0203\u0204\3\2\2\2\u0204\u0205\3\2\2\2\u0205\u0206") - buf.write("\7\f\2\2\u0206\u0207\3\2\2\2\u0207\u0208\bH\2\2\u0208") - buf.write("\u0090\3\2\2\2\u0209\u020b\7\17\2\2\u020a\u0209\3\2\2") - buf.write("\2\u020a\u020b\3\2\2\2\u020b\u020c\3\2\2\2\u020c\u020d") - buf.write("\7\f\2\2\u020d\u0092\3\2\2\2\u020e\u0210\t\16\2\2\u020f") - buf.write("\u020e\3\2\2\2\u0210\u0211\3\2\2\2\u0211\u020f\3\2\2\2") - buf.write("\u0211\u0212\3\2\2\2\u0212\u0213\3\2\2\2\u0213\u0214\b") - buf.write("J\3\2\u0214\u0094\3\2\2\2*\2\u0148\u014b\u0150\u0153\u015a") - buf.write("\u0160\u0164\u0167\u016c\u016f\u0172\u0178\u017b\u017e") - buf.write("\u0180\u0186\u0190\u0195\u0197\u019e\u01a0\u01a7\u01a9") - buf.write("\u01ad\u01b4\u01c6\u01d1\u01d6\u01db\u01e0\u01e2\u01e9") - buf.write("\u01eb\u01ee\u01f6\u01ff\u0203\u020a\u0211\4\tA\2\b\2") - buf.write("\2") - return buf.getvalue() - + return [ + 4,0,50,493,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,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,3,1,3,1,4,1,4,1,5,1,5,1,5,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, + 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, + 11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1, + 16,1,16,1,16,1,16,1,16,3,16,184,8,16,1,17,1,17,1,18,1,18,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,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,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, + 28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1, + 31,1,31,1,31,3,31,246,8,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,32,1,32,1,32,1,32,3,32,260,8,32,1,33,1,33,1,34,1,34,1,34,3, + 34,267,8,34,1,35,1,35,1,35,3,35,272,8,35,1,36,1,36,1,37,1,37,1,38, + 1,38,1,39,1,39,1,40,1,40,1,40,4,40,285,8,40,11,40,12,40,286,1,40, + 3,40,290,8,40,1,41,4,41,293,8,41,11,41,12,41,294,1,41,3,41,298,8, + 41,1,42,1,42,1,43,4,43,303,8,43,11,43,12,43,304,1,43,1,43,5,43,309, + 8,43,10,43,12,43,312,9,43,1,43,3,43,315,8,43,1,43,3,43,318,8,43, + 1,43,4,43,321,8,43,11,43,12,43,322,1,43,3,43,326,8,43,1,43,3,43, + 329,8,43,1,43,1,43,4,43,333,8,43,11,43,12,43,334,1,43,3,43,338,8, + 43,1,43,3,43,341,8,43,3,43,343,8,43,1,44,1,44,1,45,1,45,3,45,349, + 8,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,3,46,359,8,46,1,47, + 1,47,1,47,5,47,364,8,47,10,47,12,47,367,9,47,1,47,1,47,1,47,1,47, + 5,47,373,8,47,10,47,12,47,376,9,47,1,47,1,47,1,47,1,47,5,47,382, + 8,47,10,47,12,47,385,9,47,1,47,3,47,388,8,47,1,48,1,48,1,48,1,48, + 1,48,3,48,395,8,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49, + 1,49,1,49,1,49,1,49,1,49,1,49,1,49,3,49,413,8,49,1,50,1,50,1,50, + 1,50,1,50,1,50,1,50,1,50,1,50,3,50,424,8,50,1,51,1,51,1,51,3,51, + 429,8,51,1,52,1,52,1,52,3,52,434,8,52,1,52,1,52,1,52,5,52,439,8, + 52,10,52,12,52,442,9,52,1,52,1,52,1,52,1,52,5,52,448,8,52,10,52, + 12,52,451,9,52,3,52,453,8,52,1,53,1,53,1,54,1,54,5,54,459,8,54,10, + 54,12,54,462,9,54,1,54,1,54,1,55,1,55,5,55,468,8,55,10,55,12,55, + 471,9,55,1,55,3,55,474,8,55,1,55,1,55,1,55,1,55,1,56,3,56,481,8, + 56,1,56,1,56,1,57,1,57,1,58,4,58,488,8,58,11,58,12,58,489,1,58,1, + 58,5,365,374,383,460,469,0,59,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,0,87,43,89,0,91,0,93,44,95,45,97,0,99,0,101,0,103,0,105, + 46,107,0,109,47,111,0,113,48,115,49,117,50,1,0,15,2,0,36,36,64,64, + 2,0,42,42,47,47,2,0,43,43,45,45,2,0,88,88,120,120,2,0,76,76,108, + 108,3,0,48,57,65,70,97,102,2,0,69,69,101,101,2,0,34,34,92,92,2,0, + 39,39,92,92,9,0,34,34,39,39,92,92,97,98,102,102,110,110,114,114, + 116,116,118,118,1,0,48,51,1,0,48,55,2,0,46,46,95,95,2,0,65,90,97, + 122,3,0,9,9,12,12,32,32,542,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,87,1,0,0,0,0, + 93,1,0,0,0,0,95,1,0,0,0,0,105,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,1,119,1,0,0,0,3,121, + 1,0,0,0,5,123,1,0,0,0,7,125,1,0,0,0,9,129,1,0,0,0,11,131,1,0,0,0, + 13,134,1,0,0,0,15,138,1,0,0,0,17,144,1,0,0,0,19,151,1,0,0,0,21,160, + 1,0,0,0,23,165,1,0,0,0,25,168,1,0,0,0,27,171,1,0,0,0,29,174,1,0, + 0,0,31,176,1,0,0,0,33,183,1,0,0,0,35,185,1,0,0,0,37,187,1,0,0,0, + 39,189,1,0,0,0,41,194,1,0,0,0,43,200,1,0,0,0,45,205,1,0,0,0,47,208, + 1,0,0,0,49,212,1,0,0,0,51,216,1,0,0,0,53,221,1,0,0,0,55,227,1,0, + 0,0,57,229,1,0,0,0,59,231,1,0,0,0,61,233,1,0,0,0,63,245,1,0,0,0, + 65,259,1,0,0,0,67,261,1,0,0,0,69,266,1,0,0,0,71,271,1,0,0,0,73,273, + 1,0,0,0,75,275,1,0,0,0,77,277,1,0,0,0,79,279,1,0,0,0,81,281,1,0, + 0,0,83,292,1,0,0,0,85,299,1,0,0,0,87,342,1,0,0,0,89,344,1,0,0,0, + 91,346,1,0,0,0,93,358,1,0,0,0,95,387,1,0,0,0,97,394,1,0,0,0,99,412, + 1,0,0,0,101,423,1,0,0,0,103,425,1,0,0,0,105,452,1,0,0,0,107,454, + 1,0,0,0,109,456,1,0,0,0,111,465,1,0,0,0,113,480,1,0,0,0,115,484, + 1,0,0,0,117,487,1,0,0,0,119,120,5,94,0,0,120,2,1,0,0,0,121,122,5, + 126,0,0,122,4,1,0,0,0,123,124,5,44,0,0,124,6,1,0,0,0,125,126,5,46, + 0,0,126,127,5,46,0,0,127,128,5,46,0,0,128,8,1,0,0,0,129,130,5,46, + 0,0,130,10,1,0,0,0,131,132,5,105,0,0,132,133,5,102,0,0,133,12,1, + 0,0,0,134,135,5,102,0,0,135,136,5,111,0,0,136,137,5,114,0,0,137, + 14,1,0,0,0,138,139,5,119,0,0,139,140,5,104,0,0,140,141,5,105,0,0, + 141,142,5,108,0,0,142,143,5,101,0,0,143,16,1,0,0,0,144,145,5,114, + 0,0,145,146,5,101,0,0,146,147,5,112,0,0,147,148,5,101,0,0,148,149, + 5,97,0,0,149,150,5,116,0,0,150,18,1,0,0,0,151,152,5,102,0,0,152, + 153,5,117,0,0,153,154,5,110,0,0,154,155,5,99,0,0,155,156,5,116,0, + 0,156,157,5,105,0,0,157,158,5,111,0,0,158,159,5,110,0,0,159,20,1, + 0,0,0,160,161,5,101,0,0,161,162,5,108,0,0,162,163,5,115,0,0,163, + 164,5,101,0,0,164,22,1,0,0,0,165,166,5,105,0,0,166,167,5,110,0,0, + 167,24,1,0,0,0,168,169,5,91,0,0,169,170,5,91,0,0,170,26,1,0,0,0, + 171,172,5,93,0,0,172,173,5,93,0,0,173,28,1,0,0,0,174,175,5,91,0, + 0,175,30,1,0,0,0,176,177,5,93,0,0,177,32,1,0,0,0,178,179,5,58,0, + 0,179,180,5,58,0,0,180,184,5,58,0,0,181,182,5,58,0,0,182,184,5,58, + 0,0,183,178,1,0,0,0,183,181,1,0,0,0,184,34,1,0,0,0,185,186,7,0,0, + 0,186,36,1,0,0,0,187,188,5,63,0,0,188,38,1,0,0,0,189,190,5,110,0, + 0,190,191,5,101,0,0,191,192,5,120,0,0,192,193,5,116,0,0,193,40,1, + 0,0,0,194,195,5,98,0,0,195,196,5,114,0,0,196,197,5,101,0,0,197,198, + 5,97,0,0,198,199,5,107,0,0,199,42,1,0,0,0,200,201,5,78,0,0,201,202, + 5,85,0,0,202,203,5,76,0,0,203,204,5,76,0,0,204,44,1,0,0,0,205,206, + 5,78,0,0,206,207,5,65,0,0,207,46,1,0,0,0,208,209,5,105,0,0,209,210, + 5,110,0,0,210,211,5,102,0,0,211,48,1,0,0,0,212,213,5,78,0,0,213, + 214,5,97,0,0,214,215,5,78,0,0,215,50,1,0,0,0,216,217,5,84,0,0,217, + 218,5,82,0,0,218,219,5,85,0,0,219,220,5,69,0,0,220,52,1,0,0,0,221, + 222,5,70,0,0,222,223,5,65,0,0,223,224,5,76,0,0,224,225,5,83,0,0, + 225,226,5,69,0,0,226,54,1,0,0,0,227,228,5,33,0,0,228,56,1,0,0,0, + 229,230,5,58,0,0,230,58,1,0,0,0,231,232,7,1,0,0,232,60,1,0,0,0,233, + 234,7,2,0,0,234,62,1,0,0,0,235,246,5,62,0,0,236,237,5,62,0,0,237, + 246,5,61,0,0,238,246,5,60,0,0,239,240,5,60,0,0,240,246,5,61,0,0, + 241,242,5,61,0,0,242,246,5,61,0,0,243,244,5,33,0,0,244,246,5,61, + 0,0,245,235,1,0,0,0,245,236,1,0,0,0,245,238,1,0,0,0,245,239,1,0, + 0,0,245,241,1,0,0,0,245,243,1,0,0,0,246,64,1,0,0,0,247,248,5,60, + 0,0,248,260,5,45,0,0,249,250,5,60,0,0,250,251,5,60,0,0,251,260,5, + 45,0,0,252,253,5,45,0,0,253,260,5,62,0,0,254,255,5,45,0,0,255,256, + 5,62,0,0,256,260,5,62,0,0,257,258,5,58,0,0,258,260,5,61,0,0,259, + 247,1,0,0,0,259,249,1,0,0,0,259,252,1,0,0,0,259,254,1,0,0,0,259, + 257,1,0,0,0,260,66,1,0,0,0,261,262,5,61,0,0,262,68,1,0,0,0,263,264, + 5,38,0,0,264,267,5,38,0,0,265,267,5,38,0,0,266,263,1,0,0,0,266,265, + 1,0,0,0,267,70,1,0,0,0,268,269,5,124,0,0,269,272,5,124,0,0,270,272, + 5,124,0,0,271,268,1,0,0,0,271,270,1,0,0,0,272,72,1,0,0,0,273,274, + 5,40,0,0,274,74,1,0,0,0,275,276,5,41,0,0,276,76,1,0,0,0,277,278, + 5,123,0,0,278,78,1,0,0,0,279,280,5,125,0,0,280,80,1,0,0,0,281,282, + 5,48,0,0,282,284,7,3,0,0,283,285,3,85,42,0,284,283,1,0,0,0,285,286, + 1,0,0,0,286,284,1,0,0,0,286,287,1,0,0,0,287,289,1,0,0,0,288,290, + 7,4,0,0,289,288,1,0,0,0,289,290,1,0,0,0,290,82,1,0,0,0,291,293,3, + 89,44,0,292,291,1,0,0,0,293,294,1,0,0,0,294,292,1,0,0,0,294,295, + 1,0,0,0,295,297,1,0,0,0,296,298,7,4,0,0,297,296,1,0,0,0,297,298, + 1,0,0,0,298,84,1,0,0,0,299,300,7,5,0,0,300,86,1,0,0,0,301,303,3, + 89,44,0,302,301,1,0,0,0,303,304,1,0,0,0,304,302,1,0,0,0,304,305, + 1,0,0,0,305,306,1,0,0,0,306,310,5,46,0,0,307,309,3,89,44,0,308,307, + 1,0,0,0,309,312,1,0,0,0,310,308,1,0,0,0,310,311,1,0,0,0,311,314, + 1,0,0,0,312,310,1,0,0,0,313,315,3,91,45,0,314,313,1,0,0,0,314,315, + 1,0,0,0,315,317,1,0,0,0,316,318,7,4,0,0,317,316,1,0,0,0,317,318, + 1,0,0,0,318,343,1,0,0,0,319,321,3,89,44,0,320,319,1,0,0,0,321,322, + 1,0,0,0,322,320,1,0,0,0,322,323,1,0,0,0,323,325,1,0,0,0,324,326, + 3,91,45,0,325,324,1,0,0,0,325,326,1,0,0,0,326,328,1,0,0,0,327,329, + 7,4,0,0,328,327,1,0,0,0,328,329,1,0,0,0,329,343,1,0,0,0,330,332, + 5,46,0,0,331,333,3,89,44,0,332,331,1,0,0,0,333,334,1,0,0,0,334,332, + 1,0,0,0,334,335,1,0,0,0,335,337,1,0,0,0,336,338,3,91,45,0,337,336, + 1,0,0,0,337,338,1,0,0,0,338,340,1,0,0,0,339,341,7,4,0,0,340,339, + 1,0,0,0,340,341,1,0,0,0,341,343,1,0,0,0,342,302,1,0,0,0,342,320, + 1,0,0,0,342,330,1,0,0,0,343,88,1,0,0,0,344,345,2,48,57,0,345,90, + 1,0,0,0,346,348,7,6,0,0,347,349,7,2,0,0,348,347,1,0,0,0,348,349, + 1,0,0,0,349,350,1,0,0,0,350,351,3,83,41,0,351,92,1,0,0,0,352,353, + 3,83,41,0,353,354,5,105,0,0,354,359,1,0,0,0,355,356,3,87,43,0,356, + 357,5,105,0,0,357,359,1,0,0,0,358,352,1,0,0,0,358,355,1,0,0,0,359, + 94,1,0,0,0,360,365,5,34,0,0,361,364,3,97,48,0,362,364,8,7,0,0,363, + 361,1,0,0,0,363,362,1,0,0,0,364,367,1,0,0,0,365,366,1,0,0,0,365, + 363,1,0,0,0,366,368,1,0,0,0,367,365,1,0,0,0,368,388,5,34,0,0,369, + 374,5,39,0,0,370,373,3,97,48,0,371,373,8,8,0,0,372,370,1,0,0,0,372, + 371,1,0,0,0,373,376,1,0,0,0,374,375,1,0,0,0,374,372,1,0,0,0,375, + 377,1,0,0,0,376,374,1,0,0,0,377,388,5,39,0,0,378,383,5,96,0,0,379, + 382,3,97,48,0,380,382,8,8,0,0,381,379,1,0,0,0,381,380,1,0,0,0,382, + 385,1,0,0,0,383,384,1,0,0,0,383,381,1,0,0,0,384,386,1,0,0,0,385, + 383,1,0,0,0,386,388,5,96,0,0,387,360,1,0,0,0,387,369,1,0,0,0,387, + 378,1,0,0,0,388,96,1,0,0,0,389,390,5,92,0,0,390,395,7,9,0,0,391, + 395,3,99,49,0,392,395,3,103,51,0,393,395,3,101,50,0,394,389,1,0, + 0,0,394,391,1,0,0,0,394,392,1,0,0,0,394,393,1,0,0,0,395,98,1,0,0, + 0,396,397,5,92,0,0,397,398,5,117,0,0,398,399,3,85,42,0,399,400,3, + 85,42,0,400,401,3,85,42,0,401,402,3,85,42,0,402,413,1,0,0,0,403, + 404,5,92,0,0,404,405,5,117,0,0,405,406,5,123,0,0,406,407,3,85,42, + 0,407,408,3,85,42,0,408,409,3,85,42,0,409,410,3,85,42,0,410,411, + 5,125,0,0,411,413,1,0,0,0,412,396,1,0,0,0,412,403,1,0,0,0,413,100, + 1,0,0,0,414,415,5,92,0,0,415,416,7,10,0,0,416,417,7,11,0,0,417,424, + 7,11,0,0,418,419,5,92,0,0,419,420,7,11,0,0,420,424,7,11,0,0,421, + 422,5,92,0,0,422,424,7,11,0,0,423,414,1,0,0,0,423,418,1,0,0,0,423, + 421,1,0,0,0,424,102,1,0,0,0,425,426,5,92,0,0,426,428,3,85,42,0,427, + 429,3,85,42,0,428,427,1,0,0,0,428,429,1,0,0,0,429,104,1,0,0,0,430, + 433,5,46,0,0,431,434,3,107,53,0,432,434,7,12,0,0,433,431,1,0,0,0, + 433,432,1,0,0,0,434,440,1,0,0,0,435,439,3,107,53,0,436,439,3,89, + 44,0,437,439,7,12,0,0,438,435,1,0,0,0,438,436,1,0,0,0,438,437,1, + 0,0,0,439,442,1,0,0,0,440,438,1,0,0,0,440,441,1,0,0,0,441,453,1, + 0,0,0,442,440,1,0,0,0,443,449,3,107,53,0,444,448,3,107,53,0,445, + 448,3,89,44,0,446,448,7,12,0,0,447,444,1,0,0,0,447,445,1,0,0,0,447, + 446,1,0,0,0,448,451,1,0,0,0,449,447,1,0,0,0,449,450,1,0,0,0,450, + 453,1,0,0,0,451,449,1,0,0,0,452,430,1,0,0,0,452,443,1,0,0,0,453, + 106,1,0,0,0,454,455,7,13,0,0,455,108,1,0,0,0,456,460,5,37,0,0,457, + 459,9,0,0,0,458,457,1,0,0,0,459,462,1,0,0,0,460,461,1,0,0,0,460, + 458,1,0,0,0,461,463,1,0,0,0,462,460,1,0,0,0,463,464,5,37,0,0,464, + 110,1,0,0,0,465,469,5,35,0,0,466,468,9,0,0,0,467,466,1,0,0,0,468, + 471,1,0,0,0,469,470,1,0,0,0,469,467,1,0,0,0,470,473,1,0,0,0,471, + 469,1,0,0,0,472,474,5,13,0,0,473,472,1,0,0,0,473,474,1,0,0,0,474, + 475,1,0,0,0,475,476,5,10,0,0,476,477,1,0,0,0,477,478,6,55,0,0,478, + 112,1,0,0,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,483,5,10,0,0,483,114,1,0,0,0,484,485,5,59,0,0,485, + 116,1,0,0,0,486,488,7,14,0,0,487,486,1,0,0,0,488,489,1,0,0,0,489, + 487,1,0,0,0,489,490,1,0,0,0,490,491,1,0,0,0,491,492,6,58,1,0,492, + 118,1,0,0,0,45,0,183,245,259,266,271,286,289,294,297,304,310,314, + 317,322,325,328,334,337,340,342,348,358,363,365,372,374,381,383, + 387,394,412,423,428,433,438,440,447,449,452,460,469,473,480,489, + 2,7,48,0,6,0,0 + ] class RLexer(Lexer): @@ -266,102 +212,90 @@ class RLexer(Lexer): T__2 = 3 T__3 = 4 T__4 = 5 - T__5 = 6 - T__6 = 7 - T__7 = 8 - T__8 = 9 - T__9 = 10 - T__10 = 11 - T__11 = 12 - T__12 = 13 - T__13 = 14 - T__14 = 15 - T__15 = 16 - T__16 = 17 - T__17 = 18 - T__18 = 19 - T__19 = 20 - T__20 = 21 - T__21 = 22 - T__22 = 23 - T__23 = 24 - T__24 = 25 - T__25 = 26 - T__26 = 27 - T__27 = 28 - T__28 = 29 - T__29 = 30 - T__30 = 31 - T__31 = 32 - T__32 = 33 - T__33 = 34 - T__34 = 35 - T__35 = 36 - T__36 = 37 - T__37 = 38 - T__38 = 39 - T__39 = 40 - T__40 = 41 - T__41 = 42 - T__42 = 43 - T__43 = 44 - T__44 = 45 - T__45 = 46 - T__46 = 47 - T__47 = 48 - T__48 = 49 - T__49 = 50 - T__50 = 51 - T__51 = 52 - T__52 = 53 - T__53 = 54 - T__54 = 55 - HEX = 56 - INT = 57 - FLOAT = 58 - COMPLEX = 59 - STRING = 60 - ID = 61 - USER_OP = 62 - NL = 63 - WS = 64 + IF = 6 + FOR = 7 + WHILE = 8 + REPEAT = 9 + FUNCTION = 10 + ELSE = 11 + IN = 12 + LIST_ACCESS_START = 13 + LIST_ACCESS_END = 14 + ARRAY_ACCESS_START = 15 + ARRAY_ACCESS_END = 16 + NAMESPACE_ACCESS = 17 + COMPONENT_ACCESS = 18 + HELP = 19 + NEXT = 20 + BREAK = 21 + NULL = 22 + NA = 23 + INF = 24 + NAN = 25 + TRUE = 26 + FALSE = 27 + NOT = 28 + RANGE_OPERATOR = 29 + MULT_DIV = 30 + ADD_SUB = 31 + COMPARATOR = 32 + ASSIGN = 33 + EQUALS = 34 + AND = 35 + OR = 36 + PAREN_L = 37 + PAREN_R = 38 + CURLY_L = 39 + CURLY_R = 40 + HEX = 41 + INT = 42 + FLOAT = 43 + COMPLEX = 44 + STRING = 45 + ID = 46 + USER_OP = 47 + NL = 48 + SEMICOLON = 49 + WS = 50 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] modeNames = [ "DEFAULT_MODE" ] literalNames = [ "", - "';'", "'[['", "']'", "'['", "'::'", "':::'", "'$'", "'@'", - "'^'", "'-'", "'+'", "':'", "'*'", "'/'", "'>'", "'>='", "'<'", - "'<='", "'=='", "'!='", "'!'", "'&'", "'&&'", "'|'", "'||'", - "'~'", "'<-'", "'<<-'", "'='", "'->'", "'->>'", "':='", "'function'", - "'('", "')'", "'{'", "'}'", "'if'", "'else'", "'for'", "'in'", - "'while'", "'repeat'", "'?'", "'next'", "'break'", "'NULL'", - "'NA'", "'Inf'", "'NaN'", "'TRUE'", "'FALSE'", "','", "'...'", - "'.'" ] + "'^'", "'~'", "','", "'...'", "'.'", "'if'", "'for'", "'while'", + "'repeat'", "'function'", "'else'", "'in'", "'[['", "']]'", + "'['", "']'", "'?'", "'next'", "'break'", "'NULL'", "'NA'", + "'inf'", "'NaN'", "'TRUE'", "'FALSE'", "'!'", "':'", "'='", + "'('", "')'", "'{'", "'}'", "';'" ] symbolicNames = [ "", - "HEX", "INT", "FLOAT", "COMPLEX", "STRING", "ID", "USER_OP", - "NL", "WS" ] + "IF", "FOR", "WHILE", "REPEAT", "FUNCTION", "ELSE", "IN", "LIST_ACCESS_START", + "LIST_ACCESS_END", "ARRAY_ACCESS_START", "ARRAY_ACCESS_END", + "NAMESPACE_ACCESS", "COMPONENT_ACCESS", "HELP", "NEXT", "BREAK", + "NULL", "NA", "INF", "NAN", "TRUE", "FALSE", "NOT", "RANGE_OPERATOR", + "MULT_DIV", "ADD_SUB", "COMPARATOR", "ASSIGN", "EQUALS", "AND", + "OR", "PAREN_L", "PAREN_R", "CURLY_L", "CURLY_R", "HEX", "INT", + "FLOAT", "COMPLEX", "STRING", "ID", "USER_OP", "NL", "SEMICOLON", + "WS" ] - ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", - "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", - "T__14", "T__15", "T__16", "T__17", "T__18", "T__19", - "T__20", "T__21", "T__22", "T__23", "T__24", "T__25", - "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", - "T__32", "T__33", "T__34", "T__35", "T__36", "T__37", - "T__38", "T__39", "T__40", "T__41", "T__42", "T__43", - "T__44", "T__45", "T__46", "T__47", "T__48", "T__49", - "T__50", "T__51", "T__52", "T__53", "T__54", "HEX", "INT", - "HEXDIGIT", "FLOAT", "DIGIT", "EXP", "COMPLEX", "STRING", - "ESC", "UNICODE_ESCAPE", "OCTAL_ESCAPE", "HEX_ESCAPE", - "ID", "LETTER", "USER_OP", "COMMENT", "NL", "WS" ] + ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "IF", "FOR", "WHILE", + "REPEAT", "FUNCTION", "ELSE", "IN", "LIST_ACCESS_START", + "LIST_ACCESS_END", "ARRAY_ACCESS_START", "ARRAY_ACCESS_END", + "NAMESPACE_ACCESS", "COMPONENT_ACCESS", "HELP", "NEXT", + "BREAK", "NULL", "NA", "INF", "NAN", "TRUE", "FALSE", + "NOT", "RANGE_OPERATOR", "MULT_DIV", "ADD_SUB", "COMPARATOR", + "ASSIGN", "EQUALS", "AND", "OR", "PAREN_L", "PAREN_R", + "CURLY_L", "CURLY_R", "HEX", "INT", "HEXDIGIT", "FLOAT", + "DIGIT", "EXP", "COMPLEX", "STRING", "ESC", "UNICODE_ESCAPE", + "OCTAL_ESCAPE", "HEX_ESCAPE", "ID", "LETTER", "USER_OP", + "COMMENT", "NL", "SEMICOLON", "WS" ] grammarFileName = "R.g4" def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/src/pycropml/transpiler/antlr_py/grammars/RLexer.tokens b/src/pycropml/transpiler/antlr_py/grammars/RLexer.tokens new file mode 100644 index 00000000..92062708 --- /dev/null +++ b/src/pycropml/transpiler/antlr_py/grammars/RLexer.tokens @@ -0,0 +1,83 @@ +T__0=1 +T__1=2 +T__2=3 +T__3=4 +T__4=5 +IF=6 +FOR=7 +WHILE=8 +REPEAT=9 +FUNCTION=10 +ELSE=11 +IN=12 +LIST_ACCESS_START=13 +LIST_ACCESS_END=14 +ARRAY_ACCESS_START=15 +ARRAY_ACCESS_END=16 +NAMESPACE_ACCESS=17 +COMPONENT_ACCESS=18 +HELP=19 +NEXT=20 +BREAK=21 +NULL=22 +NA=23 +INF=24 +NAN=25 +TRUE=26 +FALSE=27 +NOT=28 +RANGE_OPERATOR=29 +MULT_DIV=30 +ADD_SUB=31 +COMPARATOR=32 +ASSIGN=33 +EQUALS=34 +AND=35 +OR=36 +PAREN_L=37 +PAREN_R=38 +CURLY_L=39 +CURLY_R=40 +HEX=41 +INT=42 +FLOAT=43 +COMPLEX=44 +STRING=45 +ID=46 +USER_OP=47 +NL=48 +SEMICOLON=49 +WS=50 +'^'=1 +'~'=2 +','=3 +'...'=4 +'.'=5 +'if'=6 +'for'=7 +'while'=8 +'repeat'=9 +'function'=10 +'else'=11 +'in'=12 +'[['=13 +']]'=14 +'['=15 +']'=16 +'?'=19 +'next'=20 +'break'=21 +'NULL'=22 +'NA'=23 +'inf'=24 +'NaN'=25 +'TRUE'=26 +'FALSE'=27 +'!'=28 +':'=29 +'='=34 +'('=37 +')'=38 +'{'=39 +'}'=40 +';'=49 diff --git a/src/pycropml/transpiler/antlr_py/grammars/RListener.py b/src/pycropml/transpiler/antlr_py/grammars/RListener.py index 07c9c75b..9b22e102 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/RListener.py +++ b/src/pycropml/transpiler/antlr_py/grammars/RListener.py @@ -1,6 +1,6 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\r\R.g4 by ANTLR 4.8 +# Generated from R.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .RParser import RParser else: from RParser import RParser @@ -17,12 +17,381 @@ def exitProg(self, ctx:RParser.ProgContext): pass - # Enter a parse tree produced by RParser#expr. - def enterExpr(self, ctx:RParser.ExprContext): + # Enter a parse tree produced by RParser#Inf. + def enterInf(self, ctx:RParser.InfContext): pass - # Exit a parse tree produced by RParser#expr. - def exitExpr(self, ctx:RParser.ExprContext): + # Exit a parse tree produced by RParser#Inf. + def exitInf(self, ctx:RParser.InfContext): + pass + + + # Enter a parse tree produced by RParser#Null. + def enterNull(self, ctx:RParser.NullContext): + pass + + # Exit a parse tree produced by RParser#Null. + def exitNull(self, ctx:RParser.NullContext): + pass + + + # Enter a parse tree produced by RParser#Help. + def enterHelp(self, ctx:RParser.HelpContext): + pass + + # Exit a parse tree produced by RParser#Help. + def exitHelp(self, ctx:RParser.HelpContext): + pass + + + # Enter a parse tree produced by RParser#Or. + def enterOr(self, ctx:RParser.OrContext): + pass + + # Exit a parse tree produced by RParser#Or. + def exitOr(self, ctx:RParser.OrContext): + pass + + + # Enter a parse tree produced by RParser#Exponent. + def enterExponent(self, ctx:RParser.ExponentContext): + pass + + # Exit a parse tree produced by RParser#Exponent. + def exitExponent(self, ctx:RParser.ExponentContext): + pass + + + # Enter a parse tree produced by RParser#IfElse. + def enterIfElse(self, ctx:RParser.IfElseContext): + pass + + # Exit a parse tree produced by RParser#IfElse. + def exitIfElse(self, ctx:RParser.IfElseContext): + pass + + + # Enter a parse tree produced by RParser#Break. + def enterBreak(self, ctx:RParser.BreakContext): + pass + + # Exit a parse tree produced by RParser#Break. + def exitBreak(self, ctx:RParser.BreakContext): + pass + + + # Enter a parse tree produced by RParser#True. + def enterTrue(self, ctx:RParser.TrueContext): + pass + + # Exit a parse tree produced by RParser#True. + def exitTrue(self, ctx:RParser.TrueContext): + pass + + + # Enter a parse tree produced by RParser#Repeat. + def enterRepeat(self, ctx:RParser.RepeatContext): + pass + + # Exit a parse tree produced by RParser#Repeat. + def exitRepeat(self, ctx:RParser.RepeatContext): + pass + + + # Enter a parse tree produced by RParser#String. + def enterString(self, ctx:RParser.StringContext): + pass + + # Exit a parse tree produced by RParser#String. + def exitString(self, ctx:RParser.StringContext): + pass + + + # Enter a parse tree produced by RParser#False. + def enterFalse(self, ctx:RParser.FalseContext): + pass + + # Exit a parse tree produced by RParser#False. + def exitFalse(self, ctx:RParser.FalseContext): + pass + + + # Enter a parse tree produced by RParser#Newline. + def enterNewline(self, ctx:RParser.NewlineContext): + pass + + # Exit a parse tree produced by RParser#Newline. + def exitNewline(self, ctx:RParser.NewlineContext): + pass + + + # Enter a parse tree produced by RParser#Int. + def enterInt(self, ctx:RParser.IntContext): + pass + + # Exit a parse tree produced by RParser#Int. + def exitInt(self, ctx:RParser.IntContext): + pass + + + # Enter a parse tree produced by RParser#Complex. + def enterComplex(self, ctx:RParser.ComplexContext): + pass + + # Exit a parse tree produced by RParser#Complex. + def exitComplex(self, ctx:RParser.ComplexContext): + pass + + + # Enter a parse tree produced by RParser#Assignment. + def enterAssignment(self, ctx:RParser.AssignmentContext): + pass + + # Exit a parse tree produced by RParser#Assignment. + def exitAssignment(self, ctx:RParser.AssignmentContext): + pass + + + # Enter a parse tree produced by RParser#AddOrSub. + def enterAddOrSub(self, ctx:RParser.AddOrSubContext): + pass + + # Exit a parse tree produced by RParser#AddOrSub. + def exitAddOrSub(self, ctx:RParser.AddOrSubContext): + pass + + + # Enter a parse tree produced by RParser#ArrayAccess. + def enterArrayAccess(self, ctx:RParser.ArrayAccessContext): + pass + + # Exit a parse tree produced by RParser#ArrayAccess. + def exitArrayAccess(self, ctx:RParser.ArrayAccessContext): + pass + + + # Enter a parse tree produced by RParser#Na. + def enterNa(self, ctx:RParser.NaContext): + pass + + # Exit a parse tree produced by RParser#Na. + def exitNa(self, ctx:RParser.NaContext): + pass + + + # Enter a parse tree produced by RParser#ComponentAccess. + def enterComponentAccess(self, ctx:RParser.ComponentAccessContext): + pass + + # Exit a parse tree produced by RParser#ComponentAccess. + def exitComponentAccess(self, ctx:RParser.ComponentAccessContext): + pass + + + # Enter a parse tree produced by RParser#Comparison. + def enterComparison(self, ctx:RParser.ComparisonContext): + pass + + # Exit a parse tree produced by RParser#Comparison. + def exitComparison(self, ctx:RParser.ComparisonContext): + pass + + + # Enter a parse tree produced by RParser#UserDefinedOperation. + def enterUserDefinedOperation(self, ctx:RParser.UserDefinedOperationContext): + pass + + # Exit a parse tree produced by RParser#UserDefinedOperation. + def exitUserDefinedOperation(self, ctx:RParser.UserDefinedOperationContext): + pass + + + # Enter a parse tree produced by RParser#FunctionDefinition. + def enterFunctionDefinition(self, ctx:RParser.FunctionDefinitionContext): + pass + + # Exit a parse tree produced by RParser#FunctionDefinition. + def exitFunctionDefinition(self, ctx:RParser.FunctionDefinitionContext): + pass + + + # Enter a parse tree produced by RParser#FunctionCall. + def enterFunctionCall(self, ctx:RParser.FunctionCallContext): + pass + + # Exit a parse tree produced by RParser#FunctionCall. + def exitFunctionCall(self, ctx:RParser.FunctionCallContext): + pass + + + # Enter a parse tree produced by RParser#MultOrDiv. + def enterMultOrDiv(self, ctx:RParser.MultOrDivContext): + pass + + # Exit a parse tree produced by RParser#MultOrDiv. + def exitMultOrDiv(self, ctx:RParser.MultOrDivContext): + pass + + + # Enter a parse tree produced by RParser#BracketTerm. + def enterBracketTerm(self, ctx:RParser.BracketTermContext): + pass + + # Exit a parse tree produced by RParser#BracketTerm. + def exitBracketTerm(self, ctx:RParser.BracketTermContext): + pass + + + # Enter a parse tree produced by RParser#ModelFormulaePrefix. + def enterModelFormulaePrefix(self, ctx:RParser.ModelFormulaePrefixContext): + pass + + # Exit a parse tree produced by RParser#ModelFormulaePrefix. + def exitModelFormulaePrefix(self, ctx:RParser.ModelFormulaePrefixContext): + pass + + + # Enter a parse tree produced by RParser#CompoundStatement. + def enterCompoundStatement(self, ctx:RParser.CompoundStatementContext): + pass + + # Exit a parse tree produced by RParser#CompoundStatement. + def exitCompoundStatement(self, ctx:RParser.CompoundStatementContext): + pass + + + # Enter a parse tree produced by RParser#ModelFormulaeInfix. + def enterModelFormulaeInfix(self, ctx:RParser.ModelFormulaeInfixContext): + pass + + # Exit a parse tree produced by RParser#ModelFormulaeInfix. + def exitModelFormulaeInfix(self, ctx:RParser.ModelFormulaeInfixContext): + pass + + + # Enter a parse tree produced by RParser#ListAccess. + def enterListAccess(self, ctx:RParser.ListAccessContext): + pass + + # Exit a parse tree produced by RParser#ListAccess. + def exitListAccess(self, ctx:RParser.ListAccessContext): + pass + + + # Enter a parse tree produced by RParser#For. + def enterFor(self, ctx:RParser.ForContext): + pass + + # Exit a parse tree produced by RParser#For. + def exitFor(self, ctx:RParser.ForContext): + pass + + + # Enter a parse tree produced by RParser#While. + def enterWhile(self, ctx:RParser.WhileContext): + pass + + # Exit a parse tree produced by RParser#While. + def exitWhile(self, ctx:RParser.WhileContext): + pass + + + # Enter a parse tree produced by RParser#Range. + def enterRange(self, ctx:RParser.RangeContext): + pass + + # Exit a parse tree produced by RParser#Range. + def exitRange(self, ctx:RParser.RangeContext): + pass + + + # Enter a parse tree produced by RParser#Float. + def enterFloat(self, ctx:RParser.FloatContext): + pass + + # Exit a parse tree produced by RParser#Float. + def exitFloat(self, ctx:RParser.FloatContext): + pass + + + # Enter a parse tree produced by RParser#Not. + def enterNot(self, ctx:RParser.NotContext): + pass + + # Exit a parse tree produced by RParser#Not. + def exitNot(self, ctx:RParser.NotContext): + pass + + + # Enter a parse tree produced by RParser#And. + def enterAnd(self, ctx:RParser.AndContext): + pass + + # Exit a parse tree produced by RParser#And. + def exitAnd(self, ctx:RParser.AndContext): + pass + + + # Enter a parse tree produced by RParser#Next. + def enterNext(self, ctx:RParser.NextContext): + pass + + # Exit a parse tree produced by RParser#Next. + def exitNext(self, ctx:RParser.NextContext): + pass + + + # Enter a parse tree produced by RParser#Sign. + def enterSign(self, ctx:RParser.SignContext): + pass + + # Exit a parse tree produced by RParser#Sign. + def exitSign(self, ctx:RParser.SignContext): + pass + + + # Enter a parse tree produced by RParser#Hex. + def enterHex(self, ctx:RParser.HexContext): + pass + + # Exit a parse tree produced by RParser#Hex. + def exitHex(self, ctx:RParser.HexContext): + pass + + + # Enter a parse tree produced by RParser#Nan. + def enterNan(self, ctx:RParser.NanContext): + pass + + # Exit a parse tree produced by RParser#Nan. + def exitNan(self, ctx:RParser.NanContext): + pass + + + # Enter a parse tree produced by RParser#NamespaceAccess. + def enterNamespaceAccess(self, ctx:RParser.NamespaceAccessContext): + pass + + # Exit a parse tree produced by RParser#NamespaceAccess. + def exitNamespaceAccess(self, ctx:RParser.NamespaceAccessContext): + pass + + + # Enter a parse tree produced by RParser#Id. + def enterId(self, ctx:RParser.IdContext): + pass + + # Exit a parse tree produced by RParser#Id. + def exitId(self, ctx:RParser.IdContext): + pass + + + # Enter a parse tree produced by RParser#If. + def enterIf(self, ctx:RParser.IfContext): + pass + + # Exit a parse tree produced by RParser#If. + def exitIf(self, ctx:RParser.IfContext): pass diff --git a/src/pycropml/transpiler/antlr_py/grammars/RParser.py b/src/pycropml/transpiler/antlr_py/grammars/RParser.py index 6dc126c0..57dec68a 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/RParser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/RParser.py @@ -1,4 +1,4 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\r\R.g4 by ANTLR 4.8 +# Generated from R.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,334 +8,1429 @@ else: from typing.io import TextIO +def serializedATN(): + return [ + 4,1,50,221,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,1,0,4,0,16,8,0,11,0,12,0,17,1,0,5,0,21,8,0,10,0,12,0,24,9,0,1, + 0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,38,8,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 5,1,58,8,1,10,1,12,1,61,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1, + 103,8,1,11,1,12,1,104,1,1,3,1,108,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,161,8,1,10, + 1,12,1,164,9,1,1,2,1,2,1,2,3,2,169,8,2,5,2,171,8,2,10,2,12,2,174, + 9,2,1,3,1,3,1,3,5,3,179,8,3,10,3,12,3,182,9,3,1,4,1,4,1,4,1,4,1, + 4,1,4,3,4,190,8,4,1,5,1,5,1,5,5,5,195,8,5,10,5,12,5,198,9,5,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6, + 1,6,1,6,3,6,219,8,6,1,6,0,1,2,7,0,2,4,6,8,10,12,0,2,1,0,48,49,1, + 0,33,34,276,0,22,1,0,0,0,2,107,1,0,0,0,4,165,1,0,0,0,6,175,1,0,0, + 0,8,189,1,0,0,0,10,191,1,0,0,0,12,218,1,0,0,0,14,16,7,0,0,0,15,14, + 1,0,0,0,16,17,1,0,0,0,17,15,1,0,0,0,17,18,1,0,0,0,18,21,1,0,0,0, + 19,21,3,2,1,0,20,15,1,0,0,0,20,19,1,0,0,0,21,24,1,0,0,0,22,20,1, + 0,0,0,22,23,1,0,0,0,23,25,1,0,0,0,24,22,1,0,0,0,25,26,5,0,0,1,26, + 1,1,0,0,0,27,28,6,1,-1,0,28,29,5,31,0,0,29,108,3,2,1,37,30,31,5, + 28,0,0,31,108,3,2,1,31,32,33,5,2,0,0,33,108,3,2,1,28,34,35,5,10, + 0,0,35,37,5,37,0,0,36,38,3,6,3,0,37,36,1,0,0,0,37,38,1,0,0,0,38, + 39,1,0,0,0,39,40,5,38,0,0,40,108,3,2,1,25,41,42,5,39,0,0,42,43,3, + 4,2,0,43,44,5,40,0,0,44,108,1,0,0,0,45,46,5,6,0,0,46,47,5,37,0,0, + 47,48,3,2,1,0,48,49,5,38,0,0,49,50,3,2,1,22,50,108,1,0,0,0,51,52, + 5,6,0,0,52,53,5,37,0,0,53,54,3,2,1,0,54,55,5,38,0,0,55,59,3,2,1, + 0,56,58,5,48,0,0,57,56,1,0,0,0,58,61,1,0,0,0,59,57,1,0,0,0,59,60, + 1,0,0,0,60,62,1,0,0,0,61,59,1,0,0,0,62,63,5,11,0,0,63,64,3,2,1,21, + 64,108,1,0,0,0,65,66,5,7,0,0,66,67,5,37,0,0,67,68,5,46,0,0,68,69, + 5,12,0,0,69,70,3,2,1,0,70,71,5,38,0,0,71,72,3,2,1,20,72,108,1,0, + 0,0,73,74,5,8,0,0,74,75,5,37,0,0,75,76,3,2,1,0,76,77,5,38,0,0,77, + 78,3,2,1,19,78,108,1,0,0,0,79,80,5,9,0,0,80,108,3,2,1,18,81,82,5, + 19,0,0,82,108,3,2,1,17,83,108,5,20,0,0,84,108,5,21,0,0,85,86,5,37, + 0,0,86,87,3,2,1,0,87,88,5,38,0,0,88,108,1,0,0,0,89,108,5,46,0,0, + 90,108,5,45,0,0,91,108,5,41,0,0,92,108,5,42,0,0,93,108,5,43,0,0, + 94,108,5,44,0,0,95,108,5,22,0,0,96,108,5,23,0,0,97,108,5,24,0,0, + 98,108,5,25,0,0,99,108,5,26,0,0,100,108,5,27,0,0,101,103,5,48,0, + 0,102,101,1,0,0,0,103,104,1,0,0,0,104,102,1,0,0,0,104,105,1,0,0, + 0,105,106,1,0,0,0,106,108,3,2,1,1,107,27,1,0,0,0,107,30,1,0,0,0, + 107,32,1,0,0,0,107,34,1,0,0,0,107,41,1,0,0,0,107,45,1,0,0,0,107, + 51,1,0,0,0,107,65,1,0,0,0,107,73,1,0,0,0,107,79,1,0,0,0,107,81,1, + 0,0,0,107,83,1,0,0,0,107,84,1,0,0,0,107,85,1,0,0,0,107,89,1,0,0, + 0,107,90,1,0,0,0,107,91,1,0,0,0,107,92,1,0,0,0,107,93,1,0,0,0,107, + 94,1,0,0,0,107,95,1,0,0,0,107,96,1,0,0,0,107,97,1,0,0,0,107,98,1, + 0,0,0,107,99,1,0,0,0,107,100,1,0,0,0,107,102,1,0,0,0,108,162,1,0, + 0,0,109,110,10,40,0,0,110,111,5,17,0,0,111,161,3,2,1,41,112,113, + 10,39,0,0,113,114,5,18,0,0,114,161,3,2,1,40,115,116,10,38,0,0,116, + 117,5,1,0,0,117,161,3,2,1,38,118,119,10,36,0,0,119,120,5,29,0,0, + 120,161,3,2,1,37,121,122,10,35,0,0,122,123,5,47,0,0,123,161,3,2, + 1,36,124,125,10,34,0,0,125,126,5,30,0,0,126,161,3,2,1,35,127,128, + 10,33,0,0,128,129,5,31,0,0,129,161,3,2,1,34,130,131,10,32,0,0,131, + 132,5,32,0,0,132,161,3,2,1,33,133,134,10,30,0,0,134,135,5,35,0,0, + 135,161,3,2,1,31,136,137,10,29,0,0,137,138,5,36,0,0,138,161,3,2, + 1,30,139,140,10,27,0,0,140,141,5,2,0,0,141,161,3,2,1,28,142,143, + 10,26,0,0,143,144,7,1,0,0,144,161,3,2,1,27,145,146,10,42,0,0,146, + 147,5,13,0,0,147,148,3,10,5,0,148,149,5,14,0,0,149,161,1,0,0,0,150, + 151,10,41,0,0,151,152,5,15,0,0,152,153,3,10,5,0,153,154,5,16,0,0, + 154,161,1,0,0,0,155,156,10,24,0,0,156,157,5,37,0,0,157,158,3,10, + 5,0,158,159,5,38,0,0,159,161,1,0,0,0,160,109,1,0,0,0,160,112,1,0, + 0,0,160,115,1,0,0,0,160,118,1,0,0,0,160,121,1,0,0,0,160,124,1,0, + 0,0,160,127,1,0,0,0,160,130,1,0,0,0,160,133,1,0,0,0,160,136,1,0, + 0,0,160,139,1,0,0,0,160,142,1,0,0,0,160,145,1,0,0,0,160,150,1,0, + 0,0,160,155,1,0,0,0,161,164,1,0,0,0,162,160,1,0,0,0,162,163,1,0, + 0,0,163,3,1,0,0,0,164,162,1,0,0,0,165,172,3,2,1,0,166,168,7,0,0, + 0,167,169,3,2,1,0,168,167,1,0,0,0,168,169,1,0,0,0,169,171,1,0,0, + 0,170,166,1,0,0,0,171,174,1,0,0,0,172,170,1,0,0,0,172,173,1,0,0, + 0,173,5,1,0,0,0,174,172,1,0,0,0,175,180,3,8,4,0,176,177,5,3,0,0, + 177,179,3,8,4,0,178,176,1,0,0,0,179,182,1,0,0,0,180,178,1,0,0,0, + 180,181,1,0,0,0,181,7,1,0,0,0,182,180,1,0,0,0,183,190,5,46,0,0,184, + 185,5,46,0,0,185,186,5,34,0,0,186,190,3,2,1,0,187,190,5,4,0,0,188, + 190,5,5,0,0,189,183,1,0,0,0,189,184,1,0,0,0,189,187,1,0,0,0,189, + 188,1,0,0,0,190,9,1,0,0,0,191,196,3,12,6,0,192,193,5,3,0,0,193,195, + 3,12,6,0,194,192,1,0,0,0,195,198,1,0,0,0,196,194,1,0,0,0,196,197, + 1,0,0,0,197,11,1,0,0,0,198,196,1,0,0,0,199,219,3,2,1,0,200,201,5, + 46,0,0,201,219,5,34,0,0,202,203,5,46,0,0,203,204,5,34,0,0,204,219, + 3,2,1,0,205,206,5,45,0,0,206,219,5,34,0,0,207,208,5,45,0,0,208,209, + 5,34,0,0,209,219,3,2,1,0,210,211,5,22,0,0,211,219,5,34,0,0,212,213, + 5,22,0,0,213,214,5,34,0,0,214,219,3,2,1,0,215,219,5,4,0,0,216,219, + 5,5,0,0,217,219,1,0,0,0,218,199,1,0,0,0,218,200,1,0,0,0,218,202, + 1,0,0,0,218,205,1,0,0,0,218,207,1,0,0,0,218,210,1,0,0,0,218,212, + 1,0,0,0,218,215,1,0,0,0,218,216,1,0,0,0,218,217,1,0,0,0,219,13,1, + 0,0,0,15,17,20,22,37,59,104,107,160,162,168,172,180,189,196,218 + ] + +class RParser ( Parser ): + + grammarFileName = "R.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + sharedContextCache = PredictionContextCache() + + literalNames = [ "", "'^'", "'~'", "','", "'...'", "'.'", "'if'", + "'for'", "'while'", "'repeat'", "'function'", "'else'", + "'in'", "'[['", "']]'", "'['", "']'", "", + "", "'?'", "'next'", "'break'", "'NULL'", + "'NA'", "'inf'", "'NaN'", "'TRUE'", "'FALSE'", "'!'", + "':'", "", "", "", "", + "'='", "", "", "'('", "')'", "'{'", + "'}'", "", "", "", "", + "", "", "", "", + "';'" ] + + symbolicNames = [ "", "", "", "", + "", "", "IF", "FOR", "WHILE", "REPEAT", + "FUNCTION", "ELSE", "IN", "LIST_ACCESS_START", "LIST_ACCESS_END", + "ARRAY_ACCESS_START", "ARRAY_ACCESS_END", "NAMESPACE_ACCESS", + "COMPONENT_ACCESS", "HELP", "NEXT", "BREAK", "NULL", + "NA", "INF", "NAN", "TRUE", "FALSE", "NOT", "RANGE_OPERATOR", + "MULT_DIV", "ADD_SUB", "COMPARATOR", "ASSIGN", "EQUALS", + "AND", "OR", "PAREN_L", "PAREN_R", "CURLY_L", "CURLY_R", + "HEX", "INT", "FLOAT", "COMPLEX", "STRING", "ID", + "USER_OP", "NL", "SEMICOLON", "WS" ] + + RULE_prog = 0 + RULE_expr = 1 + RULE_exprlist = 2 + RULE_formlist = 3 + RULE_form = 4 + RULE_sublist = 5 + RULE_sub = 6 + + ruleNames = [ "prog", "expr", "exprlist", "formlist", "form", "sublist", + "sub" ] + + EOF = Token.EOF + T__0=1 + T__1=2 + T__2=3 + T__3=4 + T__4=5 + IF=6 + FOR=7 + WHILE=8 + REPEAT=9 + FUNCTION=10 + ELSE=11 + IN=12 + LIST_ACCESS_START=13 + LIST_ACCESS_END=14 + ARRAY_ACCESS_START=15 + ARRAY_ACCESS_END=16 + NAMESPACE_ACCESS=17 + COMPONENT_ACCESS=18 + HELP=19 + NEXT=20 + BREAK=21 + NULL=22 + NA=23 + INF=24 + NAN=25 + TRUE=26 + FALSE=27 + NOT=28 + RANGE_OPERATOR=29 + MULT_DIV=30 + ADD_SUB=31 + COMPARATOR=32 + ASSIGN=33 + EQUALS=34 + AND=35 + OR=36 + PAREN_L=37 + PAREN_R=38 + CURLY_L=39 + CURLY_R=40 + HEX=41 + INT=42 + FLOAT=43 + COMPLEX=44 + STRING=45 + ID=46 + USER_OP=47 + NL=48 + SEMICOLON=49 + WS=50 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.2") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + + + + class ProgContext(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(RParser.EOF, 0) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + + def SEMICOLON(self, i:int=None): + if i is None: + return self.getTokens(RParser.SEMICOLON) + else: + return self.getToken(RParser.SEMICOLON, i) + + def NL(self, i:int=None): + if i is None: + return self.getTokens(RParser.NL) + else: + return self.getToken(RParser.NL, i) + + def getRuleIndex(self): + return RParser.RULE_prog + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProg" ): + listener.enterProg(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProg" ): + listener.exitProg(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitProg" ): + return visitor.visitProg(self) + else: + return visitor.visitChildren(self) + + + + + def prog(self): + + localctx = RParser.ProgContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_prog) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 22 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 983653273831364) != 0): + self.state = 20 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,1,self._ctx) + if la_ == 1: + self.state = 15 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 14 + _la = self._input.LA(1) + if not(_la==48 or _la==49): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + else: + raise NoViableAltException(self) + self.state = 17 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,0,self._ctx) + + pass + + elif la_ == 2: + self.state = 19 + self.expr(0) + pass + + + self.state = 24 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 25 + self.match(RParser.EOF) + 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 getRuleIndex(self): + return RParser.RULE_expr + + + def copyFrom(self, ctx:ParserRuleContext): + super().copyFrom(ctx) + + + class InfContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def INF(self): + return self.getToken(RParser.INF, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInf" ): + listener.enterInf(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInf" ): + listener.exitInf(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInf" ): + return visitor.visitInf(self) + else: + return visitor.visitChildren(self) + + + class NullContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def NULL(self): + return self.getToken(RParser.NULL, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNull" ): + listener.enterNull(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNull" ): + listener.exitNull(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNull" ): + return visitor.visitNull(self) + else: + return visitor.visitChildren(self) + + + class HelpContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def HELP(self): + return self.getToken(RParser.HELP, 0) + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHelp" ): + listener.enterHelp(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHelp" ): + listener.exitHelp(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitHelp" ): + return visitor.visitHelp(self) + else: + return visitor.visitChildren(self) + + + class OrContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def OR(self): + return self.getToken(RParser.OR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOr" ): + listener.enterOr(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOr" ): + listener.exitOr(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitOr" ): + return visitor.visitOr(self) + else: + return visitor.visitChildren(self) + + + class ExponentContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExponent" ): + listener.enterExponent(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExponent" ): + listener.exitExponent(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExponent" ): + return visitor.visitExponent(self) + else: + return visitor.visitChildren(self) + + + class IfElseContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def IF(self): + return self.getToken(RParser.IF, 0) + def PAREN_L(self): + return self.getToken(RParser.PAREN_L, 0) + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def PAREN_R(self): + return self.getToken(RParser.PAREN_R, 0) + def ELSE(self): + return self.getToken(RParser.ELSE, 0) + def NL(self, i:int=None): + if i is None: + return self.getTokens(RParser.NL) + else: + return self.getToken(RParser.NL, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIfElse" ): + listener.enterIfElse(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIfElse" ): + listener.exitIfElse(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIfElse" ): + return visitor.visitIfElse(self) + else: + return visitor.visitChildren(self) + + + class BreakContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def BREAK(self): + return self.getToken(RParser.BREAK, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBreak" ): + listener.enterBreak(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBreak" ): + listener.exitBreak(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitBreak" ): + return visitor.visitBreak(self) + else: + return visitor.visitChildren(self) + + + class TrueContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def TRUE(self): + return self.getToken(RParser.TRUE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTrue" ): + listener.enterTrue(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTrue" ): + listener.exitTrue(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTrue" ): + return visitor.visitTrue(self) + else: + return visitor.visitChildren(self) + + + class RepeatContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def REPEAT(self): + return self.getToken(RParser.REPEAT, 0) + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRepeat" ): + listener.enterRepeat(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRepeat" ): + listener.exitRepeat(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRepeat" ): + return visitor.visitRepeat(self) + else: + return visitor.visitChildren(self) + + + class StringContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def STRING(self): + return self.getToken(RParser.STRING, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterString" ): + listener.enterString(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitString" ): + listener.exitString(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitString" ): + return visitor.visitString(self) + else: + return visitor.visitChildren(self) + + + class FalseContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def FALSE(self): + return self.getToken(RParser.FALSE, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFalse" ): + listener.enterFalse(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFalse" ): + listener.exitFalse(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFalse" ): + return visitor.visitFalse(self) + else: + return visitor.visitChildren(self) + + + class NewlineContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + def NL(self, i:int=None): + if i is None: + return self.getTokens(RParser.NL) + else: + return self.getToken(RParser.NL, i) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNewline" ): + listener.enterNewline(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNewline" ): + listener.exitNewline(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNewline" ): + return visitor.visitNewline(self) + else: + return visitor.visitChildren(self) + + + class IntContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def INT(self): + return self.getToken(RParser.INT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInt" ): + listener.enterInt(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInt" ): + listener.exitInt(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInt" ): + return visitor.visitInt(self) + else: + return visitor.visitChildren(self) + + + class ComplexContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def COMPLEX(self): + return self.getToken(RParser.COMPLEX, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComplex" ): + listener.enterComplex(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComplex" ): + listener.exitComplex(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitComplex" ): + return visitor.visitComplex(self) + else: + return visitor.visitChildren(self) + + + class AssignmentContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def ASSIGN(self): + return self.getToken(RParser.ASSIGN, 0) + def EQUALS(self): + return self.getToken(RParser.EQUALS, 0) + + 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) + + + class AddOrSubContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def ADD_SUB(self): + return self.getToken(RParser.ADD_SUB, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAddOrSub" ): + listener.enterAddOrSub(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAddOrSub" ): + listener.exitAddOrSub(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAddOrSub" ): + return visitor.visitAddOrSub(self) + else: + return visitor.visitChildren(self) + + + class ArrayAccessContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + def ARRAY_ACCESS_START(self): + return self.getToken(RParser.ARRAY_ACCESS_START, 0) + def sublist(self): + return self.getTypedRuleContext(RParser.SublistContext,0) + + def ARRAY_ACCESS_END(self): + return self.getToken(RParser.ARRAY_ACCESS_END, 0) + + 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) + + + class NaContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def NA(self): + return self.getToken(RParser.NA, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNa" ): + listener.enterNa(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNa" ): + listener.exitNa(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNa" ): + return visitor.visitNa(self) + else: + return visitor.visitChildren(self) + + + class ComponentAccessContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def COMPONENT_ACCESS(self): + return self.getToken(RParser.COMPONENT_ACCESS, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComponentAccess" ): + listener.enterComponentAccess(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitComponentAccess" ): + listener.exitComponentAccess(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitComponentAccess" ): + return visitor.visitComponentAccess(self) + else: + return visitor.visitChildren(self) + + + class ComparisonContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def COMPARATOR(self): + return self.getToken(RParser.COMPARATOR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterComparison" ): + listener.enterComparison(self) -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3B") - buf.write("\u00d9\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\3\2\3\2\7\2\23\n\2\f\2\16\2\26\13\2\3\2\7\2\31") - buf.write("\n\2\f\2\16\2\34\13\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\5\3*\n\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\5\3d\n\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\7\3\u009a\n\3\f\3") - buf.write("\16\3\u009d\13\3\3\4\3\4\3\4\5\4\u00a2\n\4\7\4\u00a4\n") - buf.write("\4\f\4\16\4\u00a7\13\4\3\4\5\4\u00aa\n\4\3\5\3\5\3\5\7") - buf.write("\5\u00af\n\5\f\5\16\5\u00b2\13\5\3\6\3\6\3\6\3\6\3\6\3") - buf.write("\6\5\6\u00ba\n\6\3\7\3\7\3\7\7\7\u00bf\n\7\f\7\16\7\u00c2") - buf.write("\13\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b") - buf.write("\3\b\3\b\3\b\3\b\3\b\3\b\3\b\5\b\u00d7\n\b\3\b\2\3\4\t") - buf.write("\2\4\6\b\n\f\16\2\13\4\2\3\3AA\3\2\f\r\3\2\7\b\3\2\t\n") - buf.write("\3\2\17\20\3\2\21\26\3\2\30\31\3\2\32\33\3\2\35\"\2\u010e") - buf.write("\2\32\3\2\2\2\4c\3\2\2\2\6\u00a9\3\2\2\2\b\u00ab\3\2\2") - buf.write("\2\n\u00b9\3\2\2\2\f\u00bb\3\2\2\2\16\u00d6\3\2\2\2\20") - buf.write("\24\5\4\3\2\21\23\t\2\2\2\22\21\3\2\2\2\23\26\3\2\2\2") - buf.write("\24\22\3\2\2\2\24\25\3\2\2\2\25\31\3\2\2\2\26\24\3\2\2") - buf.write("\2\27\31\7A\2\2\30\20\3\2\2\2\30\27\3\2\2\2\31\34\3\2") - buf.write("\2\2\32\30\3\2\2\2\32\33\3\2\2\2\33\35\3\2\2\2\34\32\3") - buf.write("\2\2\2\35\36\7\2\2\3\36\3\3\2\2\2\37 \b\3\1\2 !\t\3\2") - buf.write("\2!d\5\4\3&\"#\7\27\2\2#d\5\4\3 $%\7\34\2\2%d\5\4\3\35") - buf.write("&\'\7#\2\2\')\7$\2\2(*\5\b\5\2)(\3\2\2\2)*\3\2\2\2*+\3") - buf.write("\2\2\2+,\7%\2\2,d\5\4\3\32-.\7&\2\2./\5\6\4\2/\60\7\'") - buf.write("\2\2\60d\3\2\2\2\61\62\7(\2\2\62\63\7$\2\2\63\64\5\4\3") - buf.write("\2\64\65\7%\2\2\65\66\5\4\3\27\66d\3\2\2\2\678\7(\2\2") - buf.write("89\7$\2\29:\5\4\3\2:;\7%\2\2;<\5\4\3\2<=\7)\2\2=>\5\4") - buf.write("\3\26>d\3\2\2\2?@\7*\2\2@A\7$\2\2AB\7?\2\2BC\7+\2\2CD") - buf.write("\5\4\3\2DE\7%\2\2EF\5\4\3\25Fd\3\2\2\2GH\7,\2\2HI\7$\2") - buf.write("\2IJ\5\4\3\2JK\7%\2\2KL\5\4\3\24Ld\3\2\2\2MN\7-\2\2Nd") - buf.write("\5\4\3\23OP\7.\2\2Pd\5\4\3\22Qd\7/\2\2Rd\7\60\2\2ST\7") - buf.write("$\2\2TU\5\4\3\2UV\7%\2\2Vd\3\2\2\2Wd\7?\2\2Xd\7>\2\2Y") - buf.write("d\7:\2\2Zd\7;\2\2[d\7<\2\2\\d\7=\2\2]d\7\61\2\2^d\7\62") - buf.write("\2\2_d\7\63\2\2`d\7\64\2\2ad\7\65\2\2bd\7\66\2\2c\37\3") - buf.write("\2\2\2c\"\3\2\2\2c$\3\2\2\2c&\3\2\2\2c-\3\2\2\2c\61\3") - buf.write("\2\2\2c\67\3\2\2\2c?\3\2\2\2cG\3\2\2\2cM\3\2\2\2cO\3\2") - buf.write("\2\2cQ\3\2\2\2cR\3\2\2\2cS\3\2\2\2cW\3\2\2\2cX\3\2\2\2") - buf.write("cY\3\2\2\2cZ\3\2\2\2c[\3\2\2\2c\\\3\2\2\2c]\3\2\2\2c^") - buf.write("\3\2\2\2c_\3\2\2\2c`\3\2\2\2ca\3\2\2\2cb\3\2\2\2d\u009b") - buf.write("\3\2\2\2ef\f)\2\2fg\t\4\2\2g\u009a\5\4\3*hi\f(\2\2ij\t") - buf.write("\5\2\2j\u009a\5\4\3)kl\f\'\2\2lm\7\13\2\2m\u009a\5\4\3") - buf.write("\'no\f%\2\2op\7\16\2\2p\u009a\5\4\3&qr\f$\2\2rs\7@\2\2") - buf.write("s\u009a\5\4\3%tu\f#\2\2uv\t\6\2\2v\u009a\5\4\3$wx\f\"") - buf.write("\2\2xy\t\3\2\2y\u009a\5\4\3#z{\f!\2\2{|\t\7\2\2|\u009a") - buf.write("\5\4\3\"}~\f\37\2\2~\177\t\b\2\2\177\u009a\5\4\3 \u0080") - buf.write("\u0081\f\36\2\2\u0081\u0082\t\t\2\2\u0082\u009a\5\4\3") - buf.write("\37\u0083\u0084\f\34\2\2\u0084\u0085\7\34\2\2\u0085\u009a") - buf.write("\5\4\3\35\u0086\u0087\f\33\2\2\u0087\u0088\t\n\2\2\u0088") - buf.write("\u009a\5\4\3\34\u0089\u008a\f+\2\2\u008a\u008b\7\4\2\2") - buf.write("\u008b\u008c\5\f\7\2\u008c\u008d\7\5\2\2\u008d\u008e\7") - buf.write("\5\2\2\u008e\u009a\3\2\2\2\u008f\u0090\f*\2\2\u0090\u0091") - buf.write("\7\6\2\2\u0091\u0092\5\f\7\2\u0092\u0093\7\5\2\2\u0093") - buf.write("\u009a\3\2\2\2\u0094\u0095\f\31\2\2\u0095\u0096\7$\2\2") - buf.write("\u0096\u0097\5\f\7\2\u0097\u0098\7%\2\2\u0098\u009a\3") - buf.write("\2\2\2\u0099e\3\2\2\2\u0099h\3\2\2\2\u0099k\3\2\2\2\u0099") - buf.write("n\3\2\2\2\u0099q\3\2\2\2\u0099t\3\2\2\2\u0099w\3\2\2\2") - buf.write("\u0099z\3\2\2\2\u0099}\3\2\2\2\u0099\u0080\3\2\2\2\u0099") - buf.write("\u0083\3\2\2\2\u0099\u0086\3\2\2\2\u0099\u0089\3\2\2\2") - buf.write("\u0099\u008f\3\2\2\2\u0099\u0094\3\2\2\2\u009a\u009d\3") - buf.write("\2\2\2\u009b\u0099\3\2\2\2\u009b\u009c\3\2\2\2\u009c\5") - buf.write("\3\2\2\2\u009d\u009b\3\2\2\2\u009e\u00a5\5\4\3\2\u009f") - buf.write("\u00a1\t\2\2\2\u00a0\u00a2\5\4\3\2\u00a1\u00a0\3\2\2\2") - buf.write("\u00a1\u00a2\3\2\2\2\u00a2\u00a4\3\2\2\2\u00a3\u009f\3") - buf.write("\2\2\2\u00a4\u00a7\3\2\2\2\u00a5\u00a3\3\2\2\2\u00a5\u00a6") - buf.write("\3\2\2\2\u00a6\u00aa\3\2\2\2\u00a7\u00a5\3\2\2\2\u00a8") - buf.write("\u00aa\3\2\2\2\u00a9\u009e\3\2\2\2\u00a9\u00a8\3\2\2\2") - buf.write("\u00aa\7\3\2\2\2\u00ab\u00b0\5\n\6\2\u00ac\u00ad\7\67") - buf.write("\2\2\u00ad\u00af\5\n\6\2\u00ae\u00ac\3\2\2\2\u00af\u00b2") - buf.write("\3\2\2\2\u00b0\u00ae\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1") - buf.write("\t\3\2\2\2\u00b2\u00b0\3\2\2\2\u00b3\u00ba\7?\2\2\u00b4") - buf.write("\u00b5\7?\2\2\u00b5\u00b6\7\37\2\2\u00b6\u00ba\5\4\3\2") - buf.write("\u00b7\u00ba\78\2\2\u00b8\u00ba\79\2\2\u00b9\u00b3\3\2") - buf.write("\2\2\u00b9\u00b4\3\2\2\2\u00b9\u00b7\3\2\2\2\u00b9\u00b8") - buf.write("\3\2\2\2\u00ba\13\3\2\2\2\u00bb\u00c0\5\16\b\2\u00bc\u00bd") - buf.write("\7\67\2\2\u00bd\u00bf\5\16\b\2\u00be\u00bc\3\2\2\2\u00bf") - buf.write("\u00c2\3\2\2\2\u00c0\u00be\3\2\2\2\u00c0\u00c1\3\2\2\2") - buf.write("\u00c1\r\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c3\u00d7\5\4\3") - buf.write("\2\u00c4\u00c5\7?\2\2\u00c5\u00d7\7\37\2\2\u00c6\u00c7") - buf.write("\7?\2\2\u00c7\u00c8\7\37\2\2\u00c8\u00d7\5\4\3\2\u00c9") - buf.write("\u00ca\7>\2\2\u00ca\u00d7\7\37\2\2\u00cb\u00cc\7>\2\2") - buf.write("\u00cc\u00cd\7\37\2\2\u00cd\u00d7\5\4\3\2\u00ce\u00cf") - buf.write("\7\61\2\2\u00cf\u00d7\7\37\2\2\u00d0\u00d1\7\61\2\2\u00d1") - buf.write("\u00d2\7\37\2\2\u00d2\u00d7\5\4\3\2\u00d3\u00d7\78\2\2") - buf.write("\u00d4\u00d7\79\2\2\u00d5\u00d7\3\2\2\2\u00d6\u00c3\3") - buf.write("\2\2\2\u00d6\u00c4\3\2\2\2\u00d6\u00c6\3\2\2\2\u00d6\u00c9") - buf.write("\3\2\2\2\u00d6\u00cb\3\2\2\2\u00d6\u00ce\3\2\2\2\u00d6") - buf.write("\u00d0\3\2\2\2\u00d6\u00d3\3\2\2\2\u00d6\u00d4\3\2\2\2") - buf.write("\u00d6\u00d5\3\2\2\2\u00d7\17\3\2\2\2\20\24\30\32)c\u0099") - buf.write("\u009b\u00a1\u00a5\u00a9\u00b0\u00b9\u00c0\u00d6") - return buf.getvalue() + 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) + + + class UserDefinedOperationContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def USER_OP(self): + return self.getToken(RParser.USER_OP, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUserDefinedOperation" ): + listener.enterUserDefinedOperation(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUserDefinedOperation" ): + listener.exitUserDefinedOperation(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUserDefinedOperation" ): + return visitor.visitUserDefinedOperation(self) + else: + return visitor.visitChildren(self) + + + class FunctionDefinitionContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def FUNCTION(self): + return self.getToken(RParser.FUNCTION, 0) + def PAREN_L(self): + return self.getToken(RParser.PAREN_L, 0) + def PAREN_R(self): + return self.getToken(RParser.PAREN_R, 0) + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + def formlist(self): + return self.getTypedRuleContext(RParser.FormlistContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionDefinition" ): + listener.enterFunctionDefinition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionDefinition" ): + listener.exitFunctionDefinition(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFunctionDefinition" ): + return visitor.visitFunctionDefinition(self) + else: + return visitor.visitChildren(self) + + + class FunctionCallContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + def PAREN_L(self): + return self.getToken(RParser.PAREN_L, 0) + def sublist(self): + return self.getTypedRuleContext(RParser.SublistContext,0) + + def PAREN_R(self): + return self.getToken(RParser.PAREN_R, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFunctionCall" ): + listener.enterFunctionCall(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFunctionCall" ): + listener.exitFunctionCall(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFunctionCall" ): + return visitor.visitFunctionCall(self) + else: + return visitor.visitChildren(self) + + + class MultOrDivContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def MULT_DIV(self): + return self.getToken(RParser.MULT_DIV, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMultOrDiv" ): + listener.enterMultOrDiv(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMultOrDiv" ): + listener.exitMultOrDiv(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitMultOrDiv" ): + return visitor.visitMultOrDiv(self) + else: + return visitor.visitChildren(self) + + + class BracketTermContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def PAREN_L(self): + return self.getToken(RParser.PAREN_L, 0) + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + def PAREN_R(self): + return self.getToken(RParser.PAREN_R, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBracketTerm" ): + listener.enterBracketTerm(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBracketTerm" ): + listener.exitBracketTerm(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitBracketTerm" ): + return visitor.visitBracketTerm(self) + else: + return visitor.visitChildren(self) + + + class ModelFormulaePrefixContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModelFormulaePrefix" ): + listener.enterModelFormulaePrefix(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModelFormulaePrefix" ): + listener.exitModelFormulaePrefix(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitModelFormulaePrefix" ): + return visitor.visitModelFormulaePrefix(self) + else: + return visitor.visitChildren(self) + + + class CompoundStatementContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def CURLY_L(self): + return self.getToken(RParser.CURLY_L, 0) + def exprlist(self): + return self.getTypedRuleContext(RParser.ExprlistContext,0) + + def CURLY_R(self): + return self.getToken(RParser.CURLY_R, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCompoundStatement" ): + listener.enterCompoundStatement(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCompoundStatement" ): + listener.exitCompoundStatement(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitCompoundStatement" ): + return visitor.visitCompoundStatement(self) + else: + return visitor.visitChildren(self) + + + class ModelFormulaeInfixContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterModelFormulaeInfix" ): + listener.enterModelFormulaeInfix(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitModelFormulaeInfix" ): + listener.exitModelFormulaeInfix(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitModelFormulaeInfix" ): + return visitor.visitModelFormulaeInfix(self) + else: + return visitor.visitChildren(self) + + + class ListAccessContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + def LIST_ACCESS_START(self): + return self.getToken(RParser.LIST_ACCESS_START, 0) + def sublist(self): + return self.getTypedRuleContext(RParser.SublistContext,0) + + def LIST_ACCESS_END(self): + return self.getToken(RParser.LIST_ACCESS_END, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterListAccess" ): + listener.enterListAccess(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitListAccess" ): + listener.exitListAccess(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitListAccess" ): + return visitor.visitListAccess(self) + else: + return visitor.visitChildren(self) + + + class ForContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def FOR(self): + return self.getToken(RParser.FOR, 0) + def PAREN_L(self): + return self.getToken(RParser.PAREN_L, 0) + def ID(self): + return self.getToken(RParser.ID, 0) + def IN(self): + return self.getToken(RParser.IN, 0) + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def PAREN_R(self): + return self.getToken(RParser.PAREN_R, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFor" ): + listener.enterFor(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFor" ): + listener.exitFor(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFor" ): + return visitor.visitFor(self) + else: + return visitor.visitChildren(self) + + + class WhileContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def WHILE(self): + return self.getToken(RParser.WHILE, 0) + def PAREN_L(self): + return self.getToken(RParser.PAREN_L, 0) + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def PAREN_R(self): + return self.getToken(RParser.PAREN_R, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterWhile" ): + listener.enterWhile(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitWhile" ): + listener.exitWhile(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWhile" ): + return visitor.visitWhile(self) + else: + return visitor.visitChildren(self) + + + class RangeContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + + def RANGE_OPERATOR(self): + return self.getToken(RParser.RANGE_OPERATOR, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRange" ): + listener.enterRange(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRange" ): + listener.exitRange(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRange" ): + return visitor.visitRange(self) + else: + return visitor.visitChildren(self) + + + class FloatContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def FLOAT(self): + return self.getToken(RParser.FLOAT, 0) + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFloat" ): + listener.enterFloat(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFloat" ): + listener.exitFloat(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFloat" ): + return visitor.visitFloat(self) + else: + return visitor.visitChildren(self) + + + class NotContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def NOT(self): + return self.getToken(RParser.NOT, 0) + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) + + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNot" ): + listener.enterNot(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNot" ): + listener.exitNot(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNot" ): + return visitor.visitNot(self) + else: + return visitor.visitChildren(self) + + + class AndContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) + def AND(self): + return self.getToken(RParser.AND, 0) -class RParser ( Parser ): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAnd" ): + listener.enterAnd(self) - grammarFileName = "R.g4" + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAnd" ): + listener.exitAnd(self) - atn = ATNDeserializer().deserialize(serializedATN()) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAnd" ): + return visitor.visitAnd(self) + else: + return visitor.visitChildren(self) - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - sharedContextCache = PredictionContextCache() + class NextContext(ExprContext): - literalNames = [ "", "';'", "'[['", "']'", "'['", "'::'", "':::'", - "'$'", "'@'", "'^'", "'-'", "'+'", "':'", "'*'", "'/'", - "'>'", "'>='", "'<'", "'<='", "'=='", "'!='", "'!'", - "'&'", "'&&'", "'|'", "'||'", "'~'", "'<-'", "'<<-'", - "'='", "'->'", "'->>'", "':='", "'function'", "'('", - "')'", "'{'", "'}'", "'if'", "'else'", "'for'", "'in'", - "'while'", "'repeat'", "'?'", "'next'", "'break'", - "'NULL'", "'NA'", "'Inf'", "'NaN'", "'TRUE'", "'FALSE'", - "','", "'...'", "'.'" ] + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) - symbolicNames = [ "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "HEX", "INT", "FLOAT", "COMPLEX", "STRING", "ID", - "USER_OP", "NL", "WS" ] + def NEXT(self): + return self.getToken(RParser.NEXT, 0) - RULE_prog = 0 - RULE_expr = 1 - RULE_exprlist = 2 - RULE_formlist = 3 - RULE_form = 4 - RULE_sublist = 5 - RULE_sub = 6 + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNext" ): + listener.enterNext(self) - ruleNames = [ "prog", "expr", "exprlist", "formlist", "form", "sublist", - "sub" ] + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNext" ): + listener.exitNext(self) - EOF = Token.EOF - T__0=1 - T__1=2 - T__2=3 - T__3=4 - T__4=5 - T__5=6 - T__6=7 - T__7=8 - T__8=9 - T__9=10 - T__10=11 - T__11=12 - T__12=13 - T__13=14 - T__14=15 - T__15=16 - T__16=17 - T__17=18 - T__18=19 - T__19=20 - T__20=21 - T__21=22 - T__22=23 - T__23=24 - T__24=25 - T__25=26 - T__26=27 - T__27=28 - T__28=29 - T__29=30 - T__30=31 - T__31=32 - T__32=33 - T__33=34 - T__34=35 - T__35=36 - T__36=37 - T__37=38 - T__38=39 - T__39=40 - T__40=41 - T__41=42 - T__42=43 - T__43=44 - T__44=45 - T__45=46 - T__46=47 - T__47=48 - T__48=49 - T__49=50 - T__50=51 - T__51=52 - T__52=53 - T__53=54 - T__54=55 - HEX=56 - INT=57 - FLOAT=58 - COMPLEX=59 - STRING=60 - ID=61 - USER_OP=62 - NL=63 - WS=64 + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNext" ): + return visitor.visitNext(self) + else: + return visitor.visitChildren(self) - def __init__(self, input:TokenStream, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.8") - self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) - self._predicates = None + class SignContext(ExprContext): + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + def ADD_SUB(self): + return self.getToken(RParser.ADD_SUB, 0) + def expr(self): + return self.getTypedRuleContext(RParser.ExprContext,0) - class ProgContext(ParserRuleContext): - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSign" ): + listener.enterSign(self) - def EOF(self): - return self.getToken(RParser.EOF, 0) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSign" ): + listener.exitSign(self) - def expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(RParser.ExprContext) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSign" ): + return visitor.visitSign(self) else: - return self.getTypedRuleContext(RParser.ExprContext,i) + return visitor.visitChildren(self) - def NL(self, i:int=None): - if i is None: - return self.getTokens(RParser.NL) - else: - return self.getToken(RParser.NL, i) + class HexContext(ExprContext): - def getRuleIndex(self): - return RParser.RULE_prog + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + + def HEX(self): + return self.getToken(RParser.HEX, 0) def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterProg" ): - listener.enterProg(self) + if hasattr( listener, "enterHex" ): + listener.enterHex(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitProg" ): - listener.exitProg(self) + if hasattr( listener, "exitHex" ): + listener.exitHex(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitProg" ): - return visitor.visitProg(self) + if hasattr( visitor, "visitHex" ): + return visitor.visitHex(self) else: return visitor.visitChildren(self) + class NanContext(ExprContext): + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) - def prog(self): - - localctx = RParser.ProgContext(self, self._ctx, self.state) - self.enterRule(localctx, 0, self.RULE_prog) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 24 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << RParser.T__9) | (1 << RParser.T__10) | (1 << RParser.T__20) | (1 << RParser.T__25) | (1 << RParser.T__32) | (1 << RParser.T__33) | (1 << RParser.T__35) | (1 << RParser.T__37) | (1 << RParser.T__39) | (1 << RParser.T__41) | (1 << RParser.T__42) | (1 << RParser.T__43) | (1 << RParser.T__44) | (1 << RParser.T__45) | (1 << RParser.T__46) | (1 << RParser.T__47) | (1 << RParser.T__48) | (1 << RParser.T__49) | (1 << RParser.T__50) | (1 << RParser.T__51) | (1 << RParser.HEX) | (1 << RParser.INT) | (1 << RParser.FLOAT) | (1 << RParser.COMPLEX) | (1 << RParser.STRING) | (1 << RParser.ID) | (1 << RParser.NL))) != 0): - self.state = 22 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [RParser.T__9, RParser.T__10, RParser.T__20, RParser.T__25, RParser.T__32, RParser.T__33, RParser.T__35, RParser.T__37, RParser.T__39, RParser.T__41, RParser.T__42, RParser.T__43, RParser.T__44, RParser.T__45, RParser.T__46, RParser.T__47, RParser.T__48, RParser.T__49, RParser.T__50, RParser.T__51, RParser.HEX, RParser.INT, RParser.FLOAT, RParser.COMPLEX, RParser.STRING, RParser.ID]: - self.state = 14 - self.expr(0) - self.state = 18 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,0,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 15 - _la = self._input.LA(1) - if not(_la==RParser.T__0 or _la==RParser.NL): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 20 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,0,self._ctx) + def NAN(self): + return self.getToken(RParser.NAN, 0) - pass - elif token in [RParser.NL]: - self.state = 21 - self.match(RParser.NL) - pass - else: - raise NoViableAltException(self) + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNan" ): + listener.enterNan(self) - self.state = 26 - self._errHandler.sync(self) - _la = self._input.LA(1) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNan" ): + listener.exitNan(self) - self.state = 27 - self.match(RParser.EOF) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNan" ): + return visitor.visitNan(self) + else: + return visitor.visitChildren(self) - class ExprContext(ParserRuleContext): + class NamespaceAccessContext(ExprContext): - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) def expr(self, i:int=None): if i is None: @@ -343,54 +1438,78 @@ def expr(self, i:int=None): else: return self.getTypedRuleContext(RParser.ExprContext,i) + def NAMESPACE_ACCESS(self): + return self.getToken(RParser.NAMESPACE_ACCESS, 0) - def formlist(self): - return self.getTypedRuleContext(RParser.FormlistContext,0) + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNamespaceAccess" ): + listener.enterNamespaceAccess(self) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNamespaceAccess" ): + listener.exitNamespaceAccess(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNamespaceAccess" ): + return visitor.visitNamespaceAccess(self) + else: + return visitor.visitChildren(self) - def exprlist(self): - return self.getTypedRuleContext(RParser.ExprlistContext,0) + class IdContext(ExprContext): + + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) def ID(self): return self.getToken(RParser.ID, 0) - def STRING(self): - return self.getToken(RParser.STRING, 0) - - def HEX(self): - return self.getToken(RParser.HEX, 0) + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterId" ): + listener.enterId(self) - def INT(self): - return self.getToken(RParser.INT, 0) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitId" ): + listener.exitId(self) - def FLOAT(self): - return self.getToken(RParser.FLOAT, 0) + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitId" ): + return visitor.visitId(self) + else: + return visitor.visitChildren(self) - def COMPLEX(self): - return self.getToken(RParser.COMPLEX, 0) - def USER_OP(self): - return self.getToken(RParser.USER_OP, 0) + class IfContext(ExprContext): - def sublist(self): - return self.getTypedRuleContext(RParser.SublistContext,0) + def __init__(self, parser, ctx:ParserRuleContext): # actually a RParser.ExprContext + super().__init__(parser) + self.copyFrom(ctx) + def IF(self): + return self.getToken(RParser.IF, 0) + def PAREN_L(self): + return self.getToken(RParser.PAREN_L, 0) + def expr(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(RParser.ExprContext) + else: + return self.getTypedRuleContext(RParser.ExprContext,i) - def getRuleIndex(self): - return RParser.RULE_expr + def PAREN_R(self): + return self.getToken(RParser.PAREN_R, 0) def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpr" ): - listener.enterExpr(self) + if hasattr( listener, "enterIf" ): + listener.enterIf(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpr" ): - listener.exitExpr(self) + if hasattr( listener, "exitIf" ): + listener.exitIf(self) def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpr" ): - return visitor.visitExpr(self) + if hasattr( visitor, "visitIf" ): + return visitor.visitIf(self) else: return visitor.visitChildren(self) @@ -406,476 +1525,545 @@ def expr(self, _p:int=0): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 97 + self.state = 107 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,4,self._ctx) + la_ = self._interp.adaptivePredict(self._input,6,self._ctx) if la_ == 1: + localctx = RParser.SignContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + + self.state = 28 + self.match(RParser.ADD_SUB) + self.state = 29 + self.expr(37) + pass + + elif la_ == 2: + localctx = RParser.NotContext(self, localctx) + self._ctx = localctx + _prevctx = localctx self.state = 30 - _la = self._input.LA(1) - if not(_la==RParser.T__9 or _la==RParser.T__10): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() + self.match(RParser.NOT) self.state = 31 - self.expr(36) + self.expr(31) pass - elif la_ == 2: + elif la_ == 3: + localctx = RParser.ModelFormulaePrefixContext(self, localctx) + self._ctx = localctx + _prevctx = localctx self.state = 32 - self.match(RParser.T__20) + self.match(RParser.T__1) self.state = 33 - self.expr(30) + self.expr(28) pass - elif la_ == 3: + elif la_ == 4: + localctx = RParser.FunctionDefinitionContext(self, localctx) + self._ctx = localctx + _prevctx = localctx self.state = 34 - self.match(RParser.T__25) + self.match(RParser.FUNCTION) self.state = 35 - self.expr(27) - pass - - elif la_ == 4: - self.state = 36 - self.match(RParser.T__32) + self.match(RParser.PAREN_L) self.state = 37 - self.match(RParser.T__33) - self.state = 39 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << RParser.T__53) | (1 << RParser.T__54) | (1 << RParser.ID))) != 0): - self.state = 38 + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 70368744177712) != 0): + self.state = 36 self.formlist() - self.state = 41 - self.match(RParser.T__34) - self.state = 42 - self.expr(24) + self.state = 39 + self.match(RParser.PAREN_R) + self.state = 40 + self.expr(25) pass elif la_ == 5: - self.state = 43 - self.match(RParser.T__35) - self.state = 44 + localctx = RParser.CompoundStatementContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 41 + self.match(RParser.CURLY_L) + self.state = 42 self.exprlist() - self.state = 45 - self.match(RParser.T__36) + self.state = 43 + self.match(RParser.CURLY_R) pass elif la_ == 6: + localctx = RParser.IfContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 45 + self.match(RParser.IF) + self.state = 46 + self.match(RParser.PAREN_L) self.state = 47 - self.match(RParser.T__37) + self.expr(0) self.state = 48 - self.match(RParser.T__33) + self.match(RParser.PAREN_R) self.state = 49 - self.expr(0) - self.state = 50 - self.match(RParser.T__34) - self.state = 51 - self.expr(21) + self.expr(22) pass elif la_ == 7: + localctx = RParser.IfElseContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 51 + self.match(RParser.IF) + self.state = 52 + self.match(RParser.PAREN_L) self.state = 53 - self.match(RParser.T__37) + self.expr(0) self.state = 54 - self.match(RParser.T__33) + self.match(RParser.PAREN_R) self.state = 55 self.expr(0) - self.state = 56 - self.match(RParser.T__34) - self.state = 57 - self.expr(0) - self.state = 58 - self.match(RParser.T__38) self.state = 59 - self.expr(20) - pass + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==48: + self.state = 56 + self.match(RParser.NL) + self.state = 61 + self._errHandler.sync(self) + _la = self._input.LA(1) - elif la_ == 8: - self.state = 61 - self.match(RParser.T__39) self.state = 62 - self.match(RParser.T__33) + self.match(RParser.ELSE) self.state = 63 - self.match(RParser.ID) - self.state = 64 - self.match(RParser.T__40) + self.expr(21) + pass + + elif la_ == 8: + localctx = RParser.ForContext(self, localctx) + self._ctx = localctx + _prevctx = localctx self.state = 65 - self.expr(0) + self.match(RParser.FOR) self.state = 66 - self.match(RParser.T__34) + self.match(RParser.PAREN_L) self.state = 67 - self.expr(19) - pass - - elif la_ == 9: + self.match(RParser.ID) + self.state = 68 + self.match(RParser.IN) self.state = 69 - self.match(RParser.T__41) + self.expr(0) self.state = 70 - self.match(RParser.T__33) + self.match(RParser.PAREN_R) self.state = 71 - self.expr(0) - self.state = 72 - self.match(RParser.T__34) - self.state = 73 - self.expr(18) + self.expr(20) pass - elif la_ == 10: + elif la_ == 9: + localctx = RParser.WhileContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 73 + self.match(RParser.WHILE) + self.state = 74 + self.match(RParser.PAREN_L) self.state = 75 - self.match(RParser.T__42) + self.expr(0) self.state = 76 - self.expr(17) + self.match(RParser.PAREN_R) + self.state = 77 + self.expr(19) + pass + + elif la_ == 10: + localctx = RParser.RepeatContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 79 + self.match(RParser.REPEAT) + self.state = 80 + self.expr(18) pass elif la_ == 11: - self.state = 77 - self.match(RParser.T__43) - self.state = 78 - self.expr(16) + localctx = RParser.HelpContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 81 + self.match(RParser.HELP) + self.state = 82 + self.expr(17) pass elif la_ == 12: - self.state = 79 - self.match(RParser.T__44) + localctx = RParser.NextContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 83 + self.match(RParser.NEXT) pass elif la_ == 13: - self.state = 80 - self.match(RParser.T__45) + localctx = RParser.BreakContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 84 + self.match(RParser.BREAK) pass elif la_ == 14: - self.state = 81 - self.match(RParser.T__33) - self.state = 82 + localctx = RParser.BracketTermContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 85 + self.match(RParser.PAREN_L) + self.state = 86 self.expr(0) - self.state = 83 - self.match(RParser.T__34) + self.state = 87 + self.match(RParser.PAREN_R) pass elif la_ == 15: - self.state = 85 + localctx = RParser.IdContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 89 self.match(RParser.ID) pass elif la_ == 16: - self.state = 86 + localctx = RParser.StringContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 90 self.match(RParser.STRING) pass elif la_ == 17: - self.state = 87 + localctx = RParser.HexContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 91 self.match(RParser.HEX) pass elif la_ == 18: - self.state = 88 + localctx = RParser.IntContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 92 self.match(RParser.INT) pass elif la_ == 19: - self.state = 89 + localctx = RParser.FloatContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 93 self.match(RParser.FLOAT) pass elif la_ == 20: - self.state = 90 + localctx = RParser.ComplexContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 94 self.match(RParser.COMPLEX) pass elif la_ == 21: - self.state = 91 - self.match(RParser.T__46) + localctx = RParser.NullContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 95 + self.match(RParser.NULL) pass elif la_ == 22: - self.state = 92 - self.match(RParser.T__47) + localctx = RParser.NaContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 96 + self.match(RParser.NA) pass elif la_ == 23: - self.state = 93 - self.match(RParser.T__48) + localctx = RParser.InfContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 97 + self.match(RParser.INF) pass elif la_ == 24: - self.state = 94 - self.match(RParser.T__49) + localctx = RParser.NanContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 98 + self.match(RParser.NAN) + pass + + elif la_ == 25: + localctx = RParser.TrueContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 99 + self.match(RParser.TRUE) + pass + + elif la_ == 26: + localctx = RParser.FalseContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 100 + self.match(RParser.FALSE) pass - elif la_ == 25: - self.state = 95 - self.match(RParser.T__50) - pass + elif la_ == 27: + localctx = RParser.NewlineContext(self, localctx) + self._ctx = localctx + _prevctx = localctx + self.state = 102 + self._errHandler.sync(self) + _alt = 1 + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 101 + self.match(RParser.NL) + + else: + raise NoViableAltException(self) + self.state = 104 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input,5,self._ctx) - elif la_ == 26: - self.state = 96 - self.match(RParser.T__51) + self.state = 106 + self.expr(1) pass self._ctx.stop = self._input.LT(-1) - self.state = 153 + self.state = 162 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,6,self._ctx) + _alt = self._interp.adaptivePredict(self._input,8,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 = 151 + self.state = 160 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,5,self._ctx) + la_ = self._interp.adaptivePredict(self._input,7,self._ctx) if la_ == 1: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + localctx = RParser.NamespaceAccessContext(self, RParser.ExprContext(self, _parentctx, _parentState)) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) + self.state = 109 + if not self.precpred(self._ctx, 40): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 40)") + self.state = 110 + self.match(RParser.NAMESPACE_ACCESS) + self.state = 111 + self.expr(41) + pass + + elif la_ == 2: + localctx = RParser.ComponentAccessContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 99 + self.state = 112 if not self.precpred(self._ctx, 39): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 39)") - self.state = 100 - _la = self._input.LA(1) - if not(_la==RParser.T__4 or _la==RParser.T__5): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 101 + self.state = 113 + self.match(RParser.COMPONENT_ACCESS) + self.state = 114 self.expr(40) pass - elif la_ == 2: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + elif la_ == 3: + localctx = RParser.ExponentContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 102 + self.state = 115 if not self.precpred(self._ctx, 38): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 38)") - self.state = 103 - _la = self._input.LA(1) - if not(_la==RParser.T__6 or _la==RParser.T__7): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 104 - self.expr(39) + self.state = 116 + self.match(RParser.T__0) + self.state = 117 + self.expr(38) pass - elif la_ == 3: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + elif la_ == 4: + localctx = RParser.RangeContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 105 - if not self.precpred(self._ctx, 37): + self.state = 118 + if not self.precpred(self._ctx, 36): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 37)") - self.state = 106 - self.match(RParser.T__8) - self.state = 107 + raise FailedPredicateException(self, "self.precpred(self._ctx, 36)") + self.state = 119 + self.match(RParser.RANGE_OPERATOR) + self.state = 120 self.expr(37) pass - elif la_ == 4: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + elif la_ == 5: + localctx = RParser.UserDefinedOperationContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 108 + self.state = 121 if not self.precpred(self._ctx, 35): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 35)") - self.state = 109 - self.match(RParser.T__11) - self.state = 110 + self.state = 122 + self.match(RParser.USER_OP) + self.state = 123 self.expr(36) pass - elif la_ == 5: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + elif la_ == 6: + localctx = RParser.MultOrDivContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 111 + self.state = 124 if not self.precpred(self._ctx, 34): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 34)") - self.state = 112 - self.match(RParser.USER_OP) - self.state = 113 + self.state = 125 + self.match(RParser.MULT_DIV) + self.state = 126 self.expr(35) pass - elif la_ == 6: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + elif la_ == 7: + localctx = RParser.AddOrSubContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 114 + self.state = 127 if not self.precpred(self._ctx, 33): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 33)") - self.state = 115 - _la = self._input.LA(1) - if not(_la==RParser.T__12 or _la==RParser.T__13): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 116 + self.state = 128 + self.match(RParser.ADD_SUB) + self.state = 129 self.expr(34) pass - elif la_ == 7: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + elif la_ == 8: + localctx = RParser.ComparisonContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 117 + self.state = 130 if not self.precpred(self._ctx, 32): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 32)") - self.state = 118 - _la = self._input.LA(1) - if not(_la==RParser.T__9 or _la==RParser.T__10): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 119 + self.state = 131 + self.match(RParser.COMPARATOR) + self.state = 132 self.expr(33) pass - elif la_ == 8: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + elif la_ == 9: + localctx = RParser.AndContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 120 - if not self.precpred(self._ctx, 31): + self.state = 133 + if not self.precpred(self._ctx, 30): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 31)") - self.state = 121 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << RParser.T__14) | (1 << RParser.T__15) | (1 << RParser.T__16) | (1 << RParser.T__17) | (1 << RParser.T__18) | (1 << RParser.T__19))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 122 - self.expr(32) + raise FailedPredicateException(self, "self.precpred(self._ctx, 30)") + self.state = 134 + self.match(RParser.AND) + self.state = 135 + self.expr(31) pass - elif la_ == 9: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + elif la_ == 10: + localctx = RParser.OrContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 123 + self.state = 136 if not self.precpred(self._ctx, 29): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 29)") - self.state = 124 - _la = self._input.LA(1) - if not(_la==RParser.T__21 or _la==RParser.T__22): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 125 + self.state = 137 + self.match(RParser.OR) + self.state = 138 self.expr(30) pass - elif la_ == 10: - localctx = RParser.ExprContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 126 - if not self.precpred(self._ctx, 28): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 28)") - self.state = 127 - _la = self._input.LA(1) - if not(_la==RParser.T__23 or _la==RParser.T__24): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 128 - self.expr(29) - pass - elif la_ == 11: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + localctx = RParser.ModelFormulaeInfixContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 129 - if not self.precpred(self._ctx, 26): + self.state = 139 + if not self.precpred(self._ctx, 27): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 26)") - self.state = 130 - self.match(RParser.T__25) - self.state = 131 - self.expr(27) + raise FailedPredicateException(self, "self.precpred(self._ctx, 27)") + self.state = 140 + self.match(RParser.T__1) + self.state = 141 + self.expr(28) pass elif la_ == 12: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + localctx = RParser.AssignmentContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 132 - if not self.precpred(self._ctx, 25): + self.state = 142 + if not self.precpred(self._ctx, 26): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 25)") - self.state = 133 + raise FailedPredicateException(self, "self.precpred(self._ctx, 26)") + self.state = 143 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << RParser.T__26) | (1 << RParser.T__27) | (1 << RParser.T__28) | (1 << RParser.T__29) | (1 << RParser.T__30) | (1 << RParser.T__31))) != 0)): + if not(_la==33 or _la==34): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 134 - self.expr(26) + self.state = 144 + self.expr(27) pass elif la_ == 13: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + localctx = RParser.ListAccessContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 135 - if not self.precpred(self._ctx, 41): + self.state = 145 + if not self.precpred(self._ctx, 42): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 41)") - self.state = 136 - self.match(RParser.T__1) - self.state = 137 + raise FailedPredicateException(self, "self.precpred(self._ctx, 42)") + self.state = 146 + self.match(RParser.LIST_ACCESS_START) + self.state = 147 self.sublist() - self.state = 138 - self.match(RParser.T__2) - self.state = 139 - self.match(RParser.T__2) + self.state = 148 + self.match(RParser.LIST_ACCESS_END) pass elif la_ == 14: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + localctx = RParser.ArrayAccessContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 141 - if not self.precpred(self._ctx, 40): + self.state = 150 + if not self.precpred(self._ctx, 41): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 40)") - self.state = 142 - self.match(RParser.T__3) - self.state = 143 + raise FailedPredicateException(self, "self.precpred(self._ctx, 41)") + self.state = 151 + self.match(RParser.ARRAY_ACCESS_START) + self.state = 152 self.sublist() - self.state = 144 - self.match(RParser.T__2) + self.state = 153 + self.match(RParser.ARRAY_ACCESS_END) pass elif la_ == 15: - localctx = RParser.ExprContext(self, _parentctx, _parentState) + localctx = RParser.FunctionCallContext(self, RParser.ExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) - self.state = 146 - if not self.precpred(self._ctx, 23): + self.state = 155 + if not self.precpred(self._ctx, 24): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 23)") - self.state = 147 - self.match(RParser.T__33) - self.state = 148 + raise FailedPredicateException(self, "self.precpred(self._ctx, 24)") + self.state = 156 + self.match(RParser.PAREN_L) + self.state = 157 self.sublist() - self.state = 149 - self.match(RParser.T__34) + self.state = 158 + self.match(RParser.PAREN_R) pass - self.state = 155 + self.state = 164 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,6,self._ctx) + _alt = self._interp.adaptivePredict(self._input,8,self._ctx) except RecognitionException as re: localctx.exception = re @@ -887,6 +2075,7 @@ def expr(self, _p:int=0): class ExprlistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -899,6 +2088,12 @@ def expr(self, i:int=None): return self.getTypedRuleContext(RParser.ExprContext,i) + def SEMICOLON(self, i:int=None): + if i is None: + return self.getTokens(RParser.SEMICOLON) + else: + return self.getToken(RParser.SEMICOLON, i) + def NL(self, i:int=None): if i is None: return self.getTokens(RParser.NL) @@ -931,43 +2126,31 @@ def exprlist(self): self.enterRule(localctx, 4, self.RULE_exprlist) self._la = 0 # Token type try: - self.state = 167 + self.enterOuterAlt(localctx, 1) + self.state = 165 + self.expr(0) + self.state = 172 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [RParser.T__9, RParser.T__10, RParser.T__20, RParser.T__25, RParser.T__32, RParser.T__33, RParser.T__35, RParser.T__37, RParser.T__39, RParser.T__41, RParser.T__42, RParser.T__43, RParser.T__44, RParser.T__45, RParser.T__46, RParser.T__47, RParser.T__48, RParser.T__49, RParser.T__50, RParser.T__51, RParser.HEX, RParser.INT, RParser.FLOAT, RParser.COMPLEX, RParser.STRING, RParser.ID]: - self.enterOuterAlt(localctx, 1) - self.state = 156 - self.expr(0) - self.state = 163 - self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==48 or _la==49: + self.state = 166 _la = self._input.LA(1) - while _la==RParser.T__0 or _la==RParser.NL: - self.state = 157 - _la = self._input.LA(1) - if not(_la==RParser.T__0 or _la==RParser.NL): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 159 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << RParser.T__9) | (1 << RParser.T__10) | (1 << RParser.T__20) | (1 << RParser.T__25) | (1 << RParser.T__32) | (1 << RParser.T__33) | (1 << RParser.T__35) | (1 << RParser.T__37) | (1 << RParser.T__39) | (1 << RParser.T__41) | (1 << RParser.T__42) | (1 << RParser.T__43) | (1 << RParser.T__44) | (1 << RParser.T__45) | (1 << RParser.T__46) | (1 << RParser.T__47) | (1 << RParser.T__48) | (1 << RParser.T__49) | (1 << RParser.T__50) | (1 << RParser.T__51) | (1 << RParser.HEX) | (1 << RParser.INT) | (1 << RParser.FLOAT) | (1 << RParser.COMPLEX) | (1 << RParser.STRING) | (1 << RParser.ID))) != 0): - self.state = 158 - self.expr(0) - - - self.state = 165 - self._errHandler.sync(self) - _la = self._input.LA(1) + if not(_la==48 or _la==49): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 168 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,9,self._ctx) + if la_ == 1: + self.state = 167 + self.expr(0) - pass - elif token in [RParser.T__36]: - self.enterOuterAlt(localctx, 2) - pass - else: - raise NoViableAltException(self) + self.state = 174 + self._errHandler.sync(self) + _la = self._input.LA(1) except RecognitionException as re: localctx.exception = re @@ -979,6 +2162,7 @@ def exprlist(self): class FormlistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1018,17 +2202,17 @@ def formlist(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 169 + self.state = 175 self.form() - self.state = 174 + self.state = 180 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==RParser.T__52: - self.state = 170 - self.match(RParser.T__52) - self.state = 171 - self.form() + while _la==3: self.state = 176 + self.match(RParser.T__2) + self.state = 177 + self.form() + self.state = 182 self._errHandler.sync(self) _la = self._input.LA(1) @@ -1042,6 +2226,7 @@ def formlist(self): class FormContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1050,6 +2235,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ID(self): return self.getToken(RParser.ID, 0) + def EQUALS(self): + return self.getToken(RParser.EQUALS, 0) + def expr(self): return self.getTypedRuleContext(RParser.ExprContext,0) @@ -1079,35 +2267,35 @@ def form(self): localctx = RParser.FormContext(self, self._ctx, self.state) self.enterRule(localctx, 8, self.RULE_form) try: - self.state = 183 + self.state = 189 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,11,self._ctx) + la_ = self._interp.adaptivePredict(self._input,12,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 177 + self.state = 183 self.match(RParser.ID) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 178 + self.state = 184 self.match(RParser.ID) - self.state = 179 - self.match(RParser.T__28) - self.state = 180 + self.state = 185 + self.match(RParser.EQUALS) + self.state = 186 self.expr(0) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 181 - self.match(RParser.T__53) + self.state = 187 + self.match(RParser.T__3) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 182 - self.match(RParser.T__54) + self.state = 188 + self.match(RParser.T__4) pass @@ -1121,6 +2309,7 @@ def form(self): class SublistContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1160,17 +2349,17 @@ def sublist(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 185 + self.state = 191 self.sub() - self.state = 190 + self.state = 196 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==RParser.T__52: - self.state = 186 - self.match(RParser.T__52) - self.state = 187 - self.sub() + while _la==3: self.state = 192 + self.match(RParser.T__2) + self.state = 193 + self.sub() + self.state = 198 self._errHandler.sync(self) _la = self._input.LA(1) @@ -1184,6 +2373,7 @@ def sublist(self): class SubContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1196,9 +2386,15 @@ def expr(self): def ID(self): return self.getToken(RParser.ID, 0) + def EQUALS(self): + return self.getToken(RParser.EQUALS, 0) + def STRING(self): return self.getToken(RParser.STRING, 0) + def NULL(self): + return self.getToken(RParser.NULL, 0) + def getRuleIndex(self): return RParser.RULE_sub @@ -1224,79 +2420,79 @@ def sub(self): localctx = RParser.SubContext(self, self._ctx, self.state) self.enterRule(localctx, 12, self.RULE_sub) try: - self.state = 212 + self.state = 218 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,13,self._ctx) + la_ = self._interp.adaptivePredict(self._input,14,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 193 + self.state = 199 self.expr(0) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 194 + self.state = 200 self.match(RParser.ID) - self.state = 195 - self.match(RParser.T__28) + self.state = 201 + self.match(RParser.EQUALS) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 196 + self.state = 202 self.match(RParser.ID) - self.state = 197 - self.match(RParser.T__28) - self.state = 198 + self.state = 203 + self.match(RParser.EQUALS) + self.state = 204 self.expr(0) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 199 + self.state = 205 self.match(RParser.STRING) - self.state = 200 - self.match(RParser.T__28) + self.state = 206 + self.match(RParser.EQUALS) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 201 + self.state = 207 self.match(RParser.STRING) - self.state = 202 - self.match(RParser.T__28) - self.state = 203 + self.state = 208 + self.match(RParser.EQUALS) + self.state = 209 self.expr(0) pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 204 - self.match(RParser.T__46) - self.state = 205 - self.match(RParser.T__28) + self.state = 210 + self.match(RParser.NULL) + self.state = 211 + self.match(RParser.EQUALS) pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 206 - self.match(RParser.T__46) - self.state = 207 - self.match(RParser.T__28) - self.state = 208 + self.state = 212 + self.match(RParser.NULL) + self.state = 213 + self.match(RParser.EQUALS) + self.state = 214 self.expr(0) pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 209 - self.match(RParser.T__53) + self.state = 215 + self.match(RParser.T__3) pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 210 - self.match(RParser.T__54) + self.state = 216 + self.match(RParser.T__4) pass elif la_ == 10: @@ -1327,63 +2523,63 @@ def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): def expr_sempred(self, localctx:ExprContext, predIndex:int): if predIndex == 0: - return self.precpred(self._ctx, 39) + return self.precpred(self._ctx, 40) if predIndex == 1: - return self.precpred(self._ctx, 38) + return self.precpred(self._ctx, 39) if predIndex == 2: - return self.precpred(self._ctx, 37) + return self.precpred(self._ctx, 38) if predIndex == 3: - return self.precpred(self._ctx, 35) + return self.precpred(self._ctx, 36) if predIndex == 4: - return self.precpred(self._ctx, 34) + return self.precpred(self._ctx, 35) if predIndex == 5: - return self.precpred(self._ctx, 33) + return self.precpred(self._ctx, 34) if predIndex == 6: - return self.precpred(self._ctx, 32) + return self.precpred(self._ctx, 33) if predIndex == 7: - return self.precpred(self._ctx, 31) + return self.precpred(self._ctx, 32) if predIndex == 8: - return self.precpred(self._ctx, 29) + return self.precpred(self._ctx, 30) if predIndex == 9: - return self.precpred(self._ctx, 28) + return self.precpred(self._ctx, 29) if predIndex == 10: - return self.precpred(self._ctx, 26) + return self.precpred(self._ctx, 27) if predIndex == 11: - return self.precpred(self._ctx, 25) + return self.precpred(self._ctx, 26) if predIndex == 12: - return self.precpred(self._ctx, 41) + return self.precpred(self._ctx, 42) if predIndex == 13: - return self.precpred(self._ctx, 40) + return self.precpred(self._ctx, 41) if predIndex == 14: - return self.precpred(self._ctx, 23) + return self.precpred(self._ctx, 24) diff --git a/src/pycropml/transpiler/antlr_py/grammars/RVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/RVisitor.py index c1797b5e..b85711bc 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/RVisitor.py +++ b/src/pycropml/transpiler/antlr_py/grammars/RVisitor.py @@ -1,6 +1,6 @@ -# Generated from Documents\THESE\pycropml_pheno\src\pycropml\antlr_grammarV4\r\R.g4 by ANTLR 4.8 +# Generated from R.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .RParser import RParser else: from RParser import RParser @@ -14,8 +14,213 @@ def visitProg(self, ctx:RParser.ProgContext): return self.visitChildren(ctx) - # Visit a parse tree produced by RParser#expr. - def visitExpr(self, ctx:RParser.ExprContext): + # Visit a parse tree produced by RParser#Inf. + def visitInf(self, ctx:RParser.InfContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Null. + def visitNull(self, ctx:RParser.NullContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Help. + def visitHelp(self, ctx:RParser.HelpContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Or. + def visitOr(self, ctx:RParser.OrContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Exponent. + def visitExponent(self, ctx:RParser.ExponentContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#IfElse. + def visitIfElse(self, ctx:RParser.IfElseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Break. + def visitBreak(self, ctx:RParser.BreakContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#True. + def visitTrue(self, ctx:RParser.TrueContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Repeat. + def visitRepeat(self, ctx:RParser.RepeatContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#String. + def visitString(self, ctx:RParser.StringContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#False. + def visitFalse(self, ctx:RParser.FalseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Newline. + def visitNewline(self, ctx:RParser.NewlineContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Int. + def visitInt(self, ctx:RParser.IntContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Complex. + def visitComplex(self, ctx:RParser.ComplexContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Assignment. + def visitAssignment(self, ctx:RParser.AssignmentContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#AddOrSub. + def visitAddOrSub(self, ctx:RParser.AddOrSubContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#ArrayAccess. + def visitArrayAccess(self, ctx:RParser.ArrayAccessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Na. + def visitNa(self, ctx:RParser.NaContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#ComponentAccess. + def visitComponentAccess(self, ctx:RParser.ComponentAccessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Comparison. + def visitComparison(self, ctx:RParser.ComparisonContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#UserDefinedOperation. + def visitUserDefinedOperation(self, ctx:RParser.UserDefinedOperationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#FunctionDefinition. + def visitFunctionDefinition(self, ctx:RParser.FunctionDefinitionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#FunctionCall. + def visitFunctionCall(self, ctx:RParser.FunctionCallContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#MultOrDiv. + def visitMultOrDiv(self, ctx:RParser.MultOrDivContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#BracketTerm. + def visitBracketTerm(self, ctx:RParser.BracketTermContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#ModelFormulaePrefix. + def visitModelFormulaePrefix(self, ctx:RParser.ModelFormulaePrefixContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#CompoundStatement. + def visitCompoundStatement(self, ctx:RParser.CompoundStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#ModelFormulaeInfix. + def visitModelFormulaeInfix(self, ctx:RParser.ModelFormulaeInfixContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#ListAccess. + def visitListAccess(self, ctx:RParser.ListAccessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#For. + def visitFor(self, ctx:RParser.ForContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#While. + def visitWhile(self, ctx:RParser.WhileContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Range. + def visitRange(self, ctx:RParser.RangeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Float. + def visitFloat(self, ctx:RParser.FloatContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Not. + def visitNot(self, ctx:RParser.NotContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#And. + def visitAnd(self, ctx:RParser.AndContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Next. + def visitNext(self, ctx:RParser.NextContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Sign. + def visitSign(self, ctx:RParser.SignContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Hex. + def visitHex(self, ctx:RParser.HexContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Nan. + def visitNan(self, ctx:RParser.NanContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#NamespaceAccess. + def visitNamespaceAccess(self, ctx:RParser.NamespaceAccessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#Id. + def visitId(self, ctx:RParser.IdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by RParser#If. + def visitIf(self, ctx:RParser.IfContext): return self.visitChildren(ctx) diff --git a/src/pycropml/transpiler/antlr_py/grammars/XMLLexer.interp b/src/pycropml/transpiler/antlr_py/grammars/XMLLexer.interp index dab2f2b0..fb511a32 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/XMLLexer.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/XMLLexer.interp @@ -76,4 +76,4 @@ INSIDE PROC_INSTR atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 20, 233, 8, 1, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 60, 10, 2, 12, 2, 14, 2, 63, 11, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 80, 10, 3, 12, 3, 14, 3, 83, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 93, 10, 4, 12, 4, 14, 4, 96, 11, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 6, 6, 110, 10, 6, 13, 6, 14, 6, 111, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 6, 6, 121, 10, 6, 13, 6, 14, 6, 122, 3, 6, 3, 6, 5, 6, 127, 10, 6, 3, 7, 3, 7, 5, 7, 131, 10, 7, 3, 7, 6, 7, 134, 10, 7, 13, 7, 14, 7, 135, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 6, 11, 161, 10, 11, 13, 11, 14, 11, 162, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 7, 17, 185, 10, 17, 12, 17, 14, 17, 188, 11, 17, 3, 17, 3, 17, 3, 17, 7, 17, 193, 10, 17, 12, 17, 14, 17, 196, 11, 17, 3, 17, 5, 17, 199, 10, 17, 3, 18, 3, 18, 7, 18, 203, 10, 18, 12, 18, 14, 18, 206, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 220, 10, 22, 3, 23, 5, 23, 223, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 5, 61, 81, 94, 2, 26, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 2, 23, 11, 25, 12, 27, 13, 29, 14, 31, 15, 33, 16, 35, 17, 37, 18, 39, 19, 41, 2, 43, 2, 45, 2, 47, 2, 49, 20, 51, 2, 5, 2, 3, 4, 12, 4, 2, 11, 11, 34, 34, 4, 2, 40, 40, 62, 62, 4, 2, 36, 36, 62, 62, 4, 2, 41, 41, 62, 62, 5, 2, 11, 12, 15, 15, 34, 34, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 50, 59, 4, 2, 47, 48, 97, 97, 5, 2, 185, 185, 770, 881, 8257, 8258, 10, 2, 60, 60, 67, 92, 99, 124, 8306, 8593, 11266, 12273, 12291, 55297, 63746, 64977, 65010, 65535, 2, 243, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 3, 25, 3, 2, 2, 2, 3, 27, 3, 2, 2, 2, 3, 29, 3, 2, 2, 2, 3, 31, 3, 2, 2, 2, 3, 33, 3, 2, 2, 2, 3, 35, 3, 2, 2, 2, 3, 37, 3, 2, 2, 2, 3, 39, 3, 2, 2, 2, 4, 49, 3, 2, 2, 2, 4, 51, 3, 2, 2, 2, 5, 53, 3, 2, 2, 2, 7, 68, 3, 2, 2, 2, 9, 88, 3, 2, 2, 2, 11, 101, 3, 2, 2, 2, 13, 126, 3, 2, 2, 2, 15, 133, 3, 2, 2, 2, 17, 137, 3, 2, 2, 2, 19, 141, 3, 2, 2, 2, 21, 151, 3, 2, 2, 2, 23, 160, 3, 2, 2, 2, 25, 164, 3, 2, 2, 2, 27, 168, 3, 2, 2, 2, 29, 173, 3, 2, 2, 2, 31, 178, 3, 2, 2, 2, 33, 180, 3, 2, 2, 2, 35, 198, 3, 2, 2, 2, 37, 200, 3, 2, 2, 2, 39, 207, 3, 2, 2, 2, 41, 211, 3, 2, 2, 2, 43, 213, 3, 2, 2, 2, 45, 219, 3, 2, 2, 2, 47, 222, 3, 2, 2, 2, 49, 224, 3, 2, 2, 2, 51, 229, 3, 2, 2, 2, 53, 54, 7, 62, 2, 2, 54, 55, 7, 35, 2, 2, 55, 56, 7, 47, 2, 2, 56, 57, 7, 47, 2, 2, 57, 61, 3, 2, 2, 2, 58, 60, 11, 2, 2, 2, 59, 58, 3, 2, 2, 2, 60, 63, 3, 2, 2, 2, 61, 62, 3, 2, 2, 2, 61, 59, 3, 2, 2, 2, 62, 64, 3, 2, 2, 2, 63, 61, 3, 2, 2, 2, 64, 65, 7, 47, 2, 2, 65, 66, 7, 47, 2, 2, 66, 67, 7, 64, 2, 2, 67, 6, 3, 2, 2, 2, 68, 69, 7, 62, 2, 2, 69, 70, 7, 35, 2, 2, 70, 71, 7, 93, 2, 2, 71, 72, 7, 69, 2, 2, 72, 73, 7, 70, 2, 2, 73, 74, 7, 67, 2, 2, 74, 75, 7, 86, 2, 2, 75, 76, 7, 67, 2, 2, 76, 77, 7, 93, 2, 2, 77, 81, 3, 2, 2, 2, 78, 80, 11, 2, 2, 2, 79, 78, 3, 2, 2, 2, 80, 83, 3, 2, 2, 2, 81, 82, 3, 2, 2, 2, 81, 79, 3, 2, 2, 2, 82, 84, 3, 2, 2, 2, 83, 81, 3, 2, 2, 2, 84, 85, 7, 95, 2, 2, 85, 86, 7, 95, 2, 2, 86, 87, 7, 64, 2, 2, 87, 8, 3, 2, 2, 2, 88, 89, 7, 62, 2, 2, 89, 90, 7, 35, 2, 2, 90, 94, 3, 2, 2, 2, 91, 93, 11, 2, 2, 2, 92, 91, 3, 2, 2, 2, 93, 96, 3, 2, 2, 2, 94, 95, 3, 2, 2, 2, 94, 92, 3, 2, 2, 2, 95, 97, 3, 2, 2, 2, 96, 94, 3, 2, 2, 2, 97, 98, 7, 64, 2, 2, 98, 99, 3, 2, 2, 2, 99, 100, 8, 4, 2, 2, 100, 10, 3, 2, 2, 2, 101, 102, 7, 40, 2, 2, 102, 103, 5, 37, 18, 2, 103, 104, 7, 61, 2, 2, 104, 12, 3, 2, 2, 2, 105, 106, 7, 40, 2, 2, 106, 107, 7, 37, 2, 2, 107, 109, 3, 2, 2, 2, 108, 110, 5, 43, 21, 2, 109, 108, 3, 2, 2, 2, 110, 111, 3, 2, 2, 2, 111, 109, 3, 2, 2, 2, 111, 112, 3, 2, 2, 2, 112, 113, 3, 2, 2, 2, 113, 114, 7, 61, 2, 2, 114, 127, 3, 2, 2, 2, 115, 116, 7, 40, 2, 2, 116, 117, 7, 37, 2, 2, 117, 118, 7, 122, 2, 2, 118, 120, 3, 2, 2, 2, 119, 121, 5, 41, 20, 2, 120, 119, 3, 2, 2, 2, 121, 122, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 122, 123, 3, 2, 2, 2, 123, 124, 3, 2, 2, 2, 124, 125, 7, 61, 2, 2, 125, 127, 3, 2, 2, 2, 126, 105, 3, 2, 2, 2, 126, 115, 3, 2, 2, 2, 127, 14, 3, 2, 2, 2, 128, 134, 9, 2, 2, 2, 129, 131, 7, 15, 2, 2, 130, 129, 3, 2, 2, 2, 130, 131, 3, 2, 2, 2, 131, 132, 3, 2, 2, 2, 132, 134, 7, 12, 2, 2, 133, 128, 3, 2, 2, 2, 133, 130, 3, 2, 2, 2, 134, 135, 3, 2, 2, 2, 135, 133, 3, 2, 2, 2, 135, 136, 3, 2, 2, 2, 136, 16, 3, 2, 2, 2, 137, 138, 7, 62, 2, 2, 138, 139, 3, 2, 2, 2, 139, 140, 8, 8, 3, 2, 140, 18, 3, 2, 2, 2, 141, 142, 7, 62, 2, 2, 142, 143, 7, 65, 2, 2, 143, 144, 7, 122, 2, 2, 144, 145, 7, 111, 2, 2, 145, 146, 7, 110, 2, 2, 146, 147, 3, 2, 2, 2, 147, 148, 5, 39, 19, 2, 148, 149, 3, 2, 2, 2, 149, 150, 8, 9, 3, 2, 150, 20, 3, 2, 2, 2, 151, 152, 7, 62, 2, 2, 152, 153, 7, 65, 2, 2, 153, 154, 3, 2, 2, 2, 154, 155, 5, 37, 18, 2, 155, 156, 3, 2, 2, 2, 156, 157, 8, 10, 4, 2, 157, 158, 8, 10, 5, 2, 158, 22, 3, 2, 2, 2, 159, 161, 10, 3, 2, 2, 160, 159, 3, 2, 2, 2, 161, 162, 3, 2, 2, 2, 162, 160, 3, 2, 2, 2, 162, 163, 3, 2, 2, 2, 163, 24, 3, 2, 2, 2, 164, 165, 7, 64, 2, 2, 165, 166, 3, 2, 2, 2, 166, 167, 8, 12, 6, 2, 167, 26, 3, 2, 2, 2, 168, 169, 7, 65, 2, 2, 169, 170, 7, 64, 2, 2, 170, 171, 3, 2, 2, 2, 171, 172, 8, 13, 6, 2, 172, 28, 3, 2, 2, 2, 173, 174, 7, 49, 2, 2, 174, 175, 7, 64, 2, 2, 175, 176, 3, 2, 2, 2, 176, 177, 8, 14, 6, 2, 177, 30, 3, 2, 2, 2, 178, 179, 7, 49, 2, 2, 179, 32, 3, 2, 2, 2, 180, 181, 7, 63, 2, 2, 181, 34, 3, 2, 2, 2, 182, 186, 7, 36, 2, 2, 183, 185, 10, 4, 2, 2, 184, 183, 3, 2, 2, 2, 185, 188, 3, 2, 2, 2, 186, 184, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 189, 3, 2, 2, 2, 188, 186, 3, 2, 2, 2, 189, 199, 7, 36, 2, 2, 190, 194, 7, 41, 2, 2, 191, 193, 10, 5, 2, 2, 192, 191, 3, 2, 2, 2, 193, 196, 3, 2, 2, 2, 194, 192, 3, 2, 2, 2, 194, 195, 3, 2, 2, 2, 195, 197, 3, 2, 2, 2, 196, 194, 3, 2, 2, 2, 197, 199, 7, 41, 2, 2, 198, 182, 3, 2, 2, 2, 198, 190, 3, 2, 2, 2, 199, 36, 3, 2, 2, 2, 200, 204, 5, 47, 23, 2, 201, 203, 5, 45, 22, 2, 202, 201, 3, 2, 2, 2, 203, 206, 3, 2, 2, 2, 204, 202, 3, 2, 2, 2, 204, 205, 3, 2, 2, 2, 205, 38, 3, 2, 2, 2, 206, 204, 3, 2, 2, 2, 207, 208, 9, 6, 2, 2, 208, 209, 3, 2, 2, 2, 209, 210, 8, 19, 2, 2, 210, 40, 3, 2, 2, 2, 211, 212, 9, 7, 2, 2, 212, 42, 3, 2, 2, 2, 213, 214, 9, 8, 2, 2, 214, 44, 3, 2, 2, 2, 215, 220, 5, 47, 23, 2, 216, 220, 9, 9, 2, 2, 217, 220, 5, 43, 21, 2, 218, 220, 9, 10, 2, 2, 219, 215, 3, 2, 2, 2, 219, 216, 3, 2, 2, 2, 219, 217, 3, 2, 2, 2, 219, 218, 3, 2, 2, 2, 220, 46, 3, 2, 2, 2, 221, 223, 9, 11, 2, 2, 222, 221, 3, 2, 2, 2, 223, 48, 3, 2, 2, 2, 224, 225, 7, 65, 2, 2, 225, 226, 7, 64, 2, 2, 226, 227, 3, 2, 2, 2, 227, 228, 8, 24, 6, 2, 228, 50, 3, 2, 2, 2, 229, 230, 11, 2, 2, 2, 230, 231, 3, 2, 2, 2, 231, 232, 8, 25, 4, 2, 232, 52, 3, 2, 2, 2, 21, 2, 3, 4, 61, 81, 94, 111, 122, 126, 130, 133, 135, 162, 186, 194, 198, 204, 219, 222, 7, 8, 2, 2, 7, 3, 2, 5, 2, 2, 7, 4, 2, 6, 2, 2] \ No newline at end of file +[4, 0, 18, 231, 6, -1, 6, -1, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 58, 8, 0, 10, 0, 12, 0, 61, 9, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 78, 8, 1, 10, 1, 12, 1, 81, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 91, 8, 2, 10, 2, 12, 2, 94, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 108, 8, 4, 11, 4, 12, 4, 109, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 119, 8, 4, 11, 4, 12, 4, 120, 1, 4, 1, 4, 3, 4, 125, 8, 4, 1, 5, 1, 5, 3, 5, 129, 8, 5, 1, 5, 4, 5, 132, 8, 5, 11, 5, 12, 5, 133, 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, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 4, 9, 159, 8, 9, 11, 9, 12, 9, 160, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 5, 15, 183, 8, 15, 10, 15, 12, 15, 186, 9, 15, 1, 15, 1, 15, 1, 15, 5, 15, 191, 8, 15, 10, 15, 12, 15, 194, 9, 15, 1, 15, 3, 15, 197, 8, 15, 1, 16, 1, 16, 5, 16, 201, 8, 16, 10, 16, 12, 16, 204, 9, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 218, 8, 20, 1, 21, 3, 21, 221, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 59, 79, 92, 0, 24, 3, 1, 5, 2, 7, 3, 9, 4, 11, 5, 13, 6, 15, 7, 17, 8, 19, 0, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 0, 41, 0, 43, 0, 45, 0, 47, 18, 49, 0, 3, 0, 1, 2, 10, 2, 0, 9, 9, 32, 32, 2, 0, 38, 38, 60, 60, 2, 0, 34, 34, 60, 60, 2, 0, 39, 39, 60, 60, 3, 0, 9, 10, 13, 13, 32, 32, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 57, 2, 0, 45, 46, 95, 95, 3, 0, 183, 183, 768, 879, 8255, 8256, 8, 0, 58, 58, 65, 90, 97, 122, 8304, 8591, 11264, 12271, 12289, 55295, 63744, 64975, 65008, 65533, 241, 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, 1, 23, 1, 0, 0, 0, 1, 25, 1, 0, 0, 0, 1, 27, 1, 0, 0, 0, 1, 29, 1, 0, 0, 0, 1, 31, 1, 0, 0, 0, 1, 33, 1, 0, 0, 0, 1, 35, 1, 0, 0, 0, 1, 37, 1, 0, 0, 0, 2, 47, 1, 0, 0, 0, 2, 49, 1, 0, 0, 0, 3, 51, 1, 0, 0, 0, 5, 66, 1, 0, 0, 0, 7, 86, 1, 0, 0, 0, 9, 99, 1, 0, 0, 0, 11, 124, 1, 0, 0, 0, 13, 131, 1, 0, 0, 0, 15, 135, 1, 0, 0, 0, 17, 139, 1, 0, 0, 0, 19, 149, 1, 0, 0, 0, 21, 158, 1, 0, 0, 0, 23, 162, 1, 0, 0, 0, 25, 166, 1, 0, 0, 0, 27, 171, 1, 0, 0, 0, 29, 176, 1, 0, 0, 0, 31, 178, 1, 0, 0, 0, 33, 196, 1, 0, 0, 0, 35, 198, 1, 0, 0, 0, 37, 205, 1, 0, 0, 0, 39, 209, 1, 0, 0, 0, 41, 211, 1, 0, 0, 0, 43, 217, 1, 0, 0, 0, 45, 220, 1, 0, 0, 0, 47, 222, 1, 0, 0, 0, 49, 227, 1, 0, 0, 0, 51, 52, 5, 60, 0, 0, 52, 53, 5, 33, 0, 0, 53, 54, 5, 45, 0, 0, 54, 55, 5, 45, 0, 0, 55, 59, 1, 0, 0, 0, 56, 58, 9, 0, 0, 0, 57, 56, 1, 0, 0, 0, 58, 61, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 60, 62, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 62, 63, 5, 45, 0, 0, 63, 64, 5, 45, 0, 0, 64, 65, 5, 62, 0, 0, 65, 4, 1, 0, 0, 0, 66, 67, 5, 60, 0, 0, 67, 68, 5, 33, 0, 0, 68, 69, 5, 91, 0, 0, 69, 70, 5, 67, 0, 0, 70, 71, 5, 68, 0, 0, 71, 72, 5, 65, 0, 0, 72, 73, 5, 84, 0, 0, 73, 74, 5, 65, 0, 0, 74, 75, 5, 91, 0, 0, 75, 79, 1, 0, 0, 0, 76, 78, 9, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 81, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 79, 77, 1, 0, 0, 0, 80, 82, 1, 0, 0, 0, 81, 79, 1, 0, 0, 0, 82, 83, 5, 93, 0, 0, 83, 84, 5, 93, 0, 0, 84, 85, 5, 62, 0, 0, 85, 6, 1, 0, 0, 0, 86, 87, 5, 60, 0, 0, 87, 88, 5, 33, 0, 0, 88, 92, 1, 0, 0, 0, 89, 91, 9, 0, 0, 0, 90, 89, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 93, 95, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 5, 62, 0, 0, 96, 97, 1, 0, 0, 0, 97, 98, 6, 2, 0, 0, 98, 8, 1, 0, 0, 0, 99, 100, 5, 38, 0, 0, 100, 101, 3, 35, 16, 0, 101, 102, 5, 59, 0, 0, 102, 10, 1, 0, 0, 0, 103, 104, 5, 38, 0, 0, 104, 105, 5, 35, 0, 0, 105, 107, 1, 0, 0, 0, 106, 108, 3, 41, 19, 0, 107, 106, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 107, 1, 0, 0, 0, 109, 110, 1, 0, 0, 0, 110, 111, 1, 0, 0, 0, 111, 112, 5, 59, 0, 0, 112, 125, 1, 0, 0, 0, 113, 114, 5, 38, 0, 0, 114, 115, 5, 35, 0, 0, 115, 116, 5, 120, 0, 0, 116, 118, 1, 0, 0, 0, 117, 119, 3, 39, 18, 0, 118, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 123, 5, 59, 0, 0, 123, 125, 1, 0, 0, 0, 124, 103, 1, 0, 0, 0, 124, 113, 1, 0, 0, 0, 125, 12, 1, 0, 0, 0, 126, 132, 7, 0, 0, 0, 127, 129, 5, 13, 0, 0, 128, 127, 1, 0, 0, 0, 128, 129, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 132, 5, 10, 0, 0, 131, 126, 1, 0, 0, 0, 131, 128, 1, 0, 0, 0, 132, 133, 1, 0, 0, 0, 133, 131, 1, 0, 0, 0, 133, 134, 1, 0, 0, 0, 134, 14, 1, 0, 0, 0, 135, 136, 5, 60, 0, 0, 136, 137, 1, 0, 0, 0, 137, 138, 6, 6, 1, 0, 138, 16, 1, 0, 0, 0, 139, 140, 5, 60, 0, 0, 140, 141, 5, 63, 0, 0, 141, 142, 5, 120, 0, 0, 142, 143, 5, 109, 0, 0, 143, 144, 5, 108, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 3, 37, 17, 0, 146, 147, 1, 0, 0, 0, 147, 148, 6, 7, 1, 0, 148, 18, 1, 0, 0, 0, 149, 150, 5, 60, 0, 0, 150, 151, 5, 63, 0, 0, 151, 152, 1, 0, 0, 0, 152, 153, 3, 35, 16, 0, 153, 154, 1, 0, 0, 0, 154, 155, 6, 8, 2, 0, 155, 156, 6, 8, 3, 0, 156, 20, 1, 0, 0, 0, 157, 159, 8, 1, 0, 0, 158, 157, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 22, 1, 0, 0, 0, 162, 163, 5, 62, 0, 0, 163, 164, 1, 0, 0, 0, 164, 165, 6, 10, 4, 0, 165, 24, 1, 0, 0, 0, 166, 167, 5, 63, 0, 0, 167, 168, 5, 62, 0, 0, 168, 169, 1, 0, 0, 0, 169, 170, 6, 11, 4, 0, 170, 26, 1, 0, 0, 0, 171, 172, 5, 47, 0, 0, 172, 173, 5, 62, 0, 0, 173, 174, 1, 0, 0, 0, 174, 175, 6, 12, 4, 0, 175, 28, 1, 0, 0, 0, 176, 177, 5, 47, 0, 0, 177, 30, 1, 0, 0, 0, 178, 179, 5, 61, 0, 0, 179, 32, 1, 0, 0, 0, 180, 184, 5, 34, 0, 0, 181, 183, 8, 2, 0, 0, 182, 181, 1, 0, 0, 0, 183, 186, 1, 0, 0, 0, 184, 182, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 187, 1, 0, 0, 0, 186, 184, 1, 0, 0, 0, 187, 197, 5, 34, 0, 0, 188, 192, 5, 39, 0, 0, 189, 191, 8, 3, 0, 0, 190, 189, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 190, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 195, 1, 0, 0, 0, 194, 192, 1, 0, 0, 0, 195, 197, 5, 39, 0, 0, 196, 180, 1, 0, 0, 0, 196, 188, 1, 0, 0, 0, 197, 34, 1, 0, 0, 0, 198, 202, 3, 45, 21, 0, 199, 201, 3, 43, 20, 0, 200, 199, 1, 0, 0, 0, 201, 204, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 36, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 205, 206, 7, 4, 0, 0, 206, 207, 1, 0, 0, 0, 207, 208, 6, 17, 0, 0, 208, 38, 1, 0, 0, 0, 209, 210, 7, 5, 0, 0, 210, 40, 1, 0, 0, 0, 211, 212, 7, 6, 0, 0, 212, 42, 1, 0, 0, 0, 213, 218, 3, 45, 21, 0, 214, 218, 7, 7, 0, 0, 215, 218, 3, 41, 19, 0, 216, 218, 7, 8, 0, 0, 217, 213, 1, 0, 0, 0, 217, 214, 1, 0, 0, 0, 217, 215, 1, 0, 0, 0, 217, 216, 1, 0, 0, 0, 218, 44, 1, 0, 0, 0, 219, 221, 7, 9, 0, 0, 220, 219, 1, 0, 0, 0, 221, 46, 1, 0, 0, 0, 222, 223, 5, 63, 0, 0, 223, 224, 5, 62, 0, 0, 224, 225, 1, 0, 0, 0, 225, 226, 6, 22, 4, 0, 226, 48, 1, 0, 0, 0, 227, 228, 9, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 230, 6, 23, 2, 0, 230, 50, 1, 0, 0, 0, 19, 0, 1, 2, 59, 79, 92, 109, 120, 124, 128, 131, 133, 160, 184, 192, 196, 202, 217, 220, 5, 6, 0, 0, 5, 1, 0, 3, 0, 0, 5, 2, 0, 4, 0, 0] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/XMLLexer.py b/src/pycropml/transpiler/antlr_py/grammars/XMLLexer.py index 9b1eead3..2f007b2a 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/XMLLexer.py +++ b/src/pycropml/transpiler/antlr_py/grammars/XMLLexer.py @@ -1,113 +1,99 @@ -# Generated from gram\xml\XMLLexer.g4 by ANTLR 4.8 +# Generated from XMLLexer.g4 by ANTLR 4.13.2 from antlr4 import * from io import StringIO -from typing.io import TextIO import sys - +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\24") - buf.write("\u00e9\b\1\b\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6") - buf.write("\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f") - buf.write("\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22") - buf.write("\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27") - buf.write("\4\30\t\30\4\31\t\31\3\2\3\2\3\2\3\2\3\2\3\2\7\2<\n\2") - buf.write("\f\2\16\2?\13\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\3\3\3\3\3\3\3\3\3\7\3P\n\3\f\3\16\3S\13\3\3\3\3\3") - buf.write("\3\3\3\3\3\4\3\4\3\4\3\4\7\4]\n\4\f\4\16\4`\13\4\3\4\3") - buf.write("\4\3\4\3\4\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\6\6n\n\6\r") - buf.write("\6\16\6o\3\6\3\6\3\6\3\6\3\6\3\6\3\6\6\6y\n\6\r\6\16\6") - buf.write("z\3\6\3\6\5\6\177\n\6\3\7\3\7\5\7\u0083\n\7\3\7\6\7\u0086") - buf.write("\n\7\r\7\16\7\u0087\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3") - buf.write("\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n") - buf.write("\3\13\6\13\u00a1\n\13\r\13\16\13\u00a2\3\f\3\f\3\f\3\f") - buf.write("\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\17\3\17") - buf.write("\3\20\3\20\3\21\3\21\7\21\u00b9\n\21\f\21\16\21\u00bc") - buf.write("\13\21\3\21\3\21\3\21\7\21\u00c1\n\21\f\21\16\21\u00c4") - buf.write("\13\21\3\21\5\21\u00c7\n\21\3\22\3\22\7\22\u00cb\n\22") - buf.write("\f\22\16\22\u00ce\13\22\3\23\3\23\3\23\3\23\3\24\3\24") - buf.write("\3\25\3\25\3\26\3\26\3\26\3\26\5\26\u00dc\n\26\3\27\5") - buf.write("\27\u00df\n\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31") - buf.write("\3\31\5=Q^\2\32\5\3\7\4\t\5\13\6\r\7\17\b\21\t\23\n\25") - buf.write("\2\27\13\31\f\33\r\35\16\37\17!\20#\21%\22\'\23)\2+\2") - buf.write("-\2/\2\61\24\63\2\5\2\3\4\f\4\2\13\13\"\"\4\2((>>\4\2") - buf.write("$$>>\4\2))>>\5\2\13\f\17\17\"\"\5\2\62;CHch\3\2\62;\4") - buf.write("\2/\60aa\5\2\u00b9\u00b9\u0302\u0371\u2041\u2042\n\2<") - buf.write("\2\2\66\67\7#\2\2\678\7/\2\289\7/\2\29=\3\2\2\2:<\13") - buf.write("\2\2\2;:\3\2\2\2\3\2\2\2=;\3\2\2\2>@\3\2\2") - buf.write("\2?=\3\2\2\2@A\7/\2\2AB\7/\2\2BC\7@\2\2C\6\3\2\2\2DE\7") - buf.write(">\2\2EF\7#\2\2FG\7]\2\2GH\7E\2\2HI\7F\2\2IJ\7C\2\2JK\7") - buf.write("V\2\2KL\7C\2\2LM\7]\2\2MQ\3\2\2\2NP\13\2\2\2ON\3\2\2\2") - buf.write("PS\3\2\2\2QR\3\2\2\2QO\3\2\2\2RT\3\2\2\2SQ\3\2\2\2TU\7") - buf.write("_\2\2UV\7_\2\2VW\7@\2\2W\b\3\2\2\2XY\7>\2\2YZ\7#\2\2Z") - buf.write("^\3\2\2\2[]\13\2\2\2\\[\3\2\2\2]`\3\2\2\2^_\3\2\2\2^\\") - buf.write("\3\2\2\2_a\3\2\2\2`^\3\2\2\2ab\7@\2\2bc\3\2\2\2cd\b\4") - buf.write("\2\2d\n\3\2\2\2ef\7(\2\2fg\5%\22\2gh\7=\2\2h\f\3\2\2\2") - buf.write("ij\7(\2\2jk\7%\2\2km\3\2\2\2ln\5+\25\2ml\3\2\2\2no\3\2") - buf.write("\2\2om\3\2\2\2op\3\2\2\2pq\3\2\2\2qr\7=\2\2r\177\3\2\2") - buf.write("\2st\7(\2\2tu\7%\2\2uv\7z\2\2vx\3\2\2\2wy\5)\24\2xw\3") - buf.write("\2\2\2yz\3\2\2\2zx\3\2\2\2z{\3\2\2\2{|\3\2\2\2|}\7=\2") - buf.write("\2}\177\3\2\2\2~i\3\2\2\2~s\3\2\2\2\177\16\3\2\2\2\u0080") - buf.write("\u0086\t\2\2\2\u0081\u0083\7\17\2\2\u0082\u0081\3\2\2") - buf.write("\2\u0082\u0083\3\2\2\2\u0083\u0084\3\2\2\2\u0084\u0086") - buf.write("\7\f\2\2\u0085\u0080\3\2\2\2\u0085\u0082\3\2\2\2\u0086") - buf.write("\u0087\3\2\2\2\u0087\u0085\3\2\2\2\u0087\u0088\3\2\2\2") - buf.write("\u0088\20\3\2\2\2\u0089\u008a\7>\2\2\u008a\u008b\3\2\2") - buf.write("\2\u008b\u008c\b\b\3\2\u008c\22\3\2\2\2\u008d\u008e\7") - buf.write(">\2\2\u008e\u008f\7A\2\2\u008f\u0090\7z\2\2\u0090\u0091") - buf.write("\7o\2\2\u0091\u0092\7n\2\2\u0092\u0093\3\2\2\2\u0093\u0094") - buf.write("\5\'\23\2\u0094\u0095\3\2\2\2\u0095\u0096\b\t\3\2\u0096") - buf.write("\24\3\2\2\2\u0097\u0098\7>\2\2\u0098\u0099\7A\2\2\u0099") - buf.write("\u009a\3\2\2\2\u009a\u009b\5%\22\2\u009b\u009c\3\2\2\2") - buf.write("\u009c\u009d\b\n\4\2\u009d\u009e\b\n\5\2\u009e\26\3\2") - buf.write("\2\2\u009f\u00a1\n\3\2\2\u00a0\u009f\3\2\2\2\u00a1\u00a2") - buf.write("\3\2\2\2\u00a2\u00a0\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3") - buf.write("\30\3\2\2\2\u00a4\u00a5\7@\2\2\u00a5\u00a6\3\2\2\2\u00a6") - buf.write("\u00a7\b\f\6\2\u00a7\32\3\2\2\2\u00a8\u00a9\7A\2\2\u00a9") - buf.write("\u00aa\7@\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00ac\b\r\6\2") - buf.write("\u00ac\34\3\2\2\2\u00ad\u00ae\7\61\2\2\u00ae\u00af\7@") - buf.write("\2\2\u00af\u00b0\3\2\2\2\u00b0\u00b1\b\16\6\2\u00b1\36") - buf.write("\3\2\2\2\u00b2\u00b3\7\61\2\2\u00b3 \3\2\2\2\u00b4\u00b5") - buf.write("\7?\2\2\u00b5\"\3\2\2\2\u00b6\u00ba\7$\2\2\u00b7\u00b9") - buf.write("\n\4\2\2\u00b8\u00b7\3\2\2\2\u00b9\u00bc\3\2\2\2\u00ba") - buf.write("\u00b8\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb\u00bd\3\2\2\2") - buf.write("\u00bc\u00ba\3\2\2\2\u00bd\u00c7\7$\2\2\u00be\u00c2\7") - buf.write(")\2\2\u00bf\u00c1\n\5\2\2\u00c0\u00bf\3\2\2\2\u00c1\u00c4") - buf.write("\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3") - buf.write("\u00c5\3\2\2\2\u00c4\u00c2\3\2\2\2\u00c5\u00c7\7)\2\2") - buf.write("\u00c6\u00b6\3\2\2\2\u00c6\u00be\3\2\2\2\u00c7$\3\2\2") - buf.write("\2\u00c8\u00cc\5/\27\2\u00c9\u00cb\5-\26\2\u00ca\u00c9") - buf.write("\3\2\2\2\u00cb\u00ce\3\2\2\2\u00cc\u00ca\3\2\2\2\u00cc") - buf.write("\u00cd\3\2\2\2\u00cd&\3\2\2\2\u00ce\u00cc\3\2\2\2\u00cf") - buf.write("\u00d0\t\6\2\2\u00d0\u00d1\3\2\2\2\u00d1\u00d2\b\23\2") - buf.write("\2\u00d2(\3\2\2\2\u00d3\u00d4\t\7\2\2\u00d4*\3\2\2\2\u00d5") - buf.write("\u00d6\t\b\2\2\u00d6,\3\2\2\2\u00d7\u00dc\5/\27\2\u00d8") - buf.write("\u00dc\t\t\2\2\u00d9\u00dc\5+\25\2\u00da\u00dc\t\n\2\2") - buf.write("\u00db\u00d7\3\2\2\2\u00db\u00d8\3\2\2\2\u00db\u00d9\3") - buf.write("\2\2\2\u00db\u00da\3\2\2\2\u00dc.\3\2\2\2\u00dd\u00df") - buf.write("\t\13\2\2\u00de\u00dd\3\2\2\2\u00df\60\3\2\2\2\u00e0\u00e1") - buf.write("\7A\2\2\u00e1\u00e2\7@\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e4") - buf.write("\b\30\6\2\u00e4\62\3\2\2\2\u00e5\u00e6\13\2\2\2\u00e6") - buf.write("\u00e7\3\2\2\2\u00e7\u00e8\b\31\4\2\u00e8\64\3\2\2\2\25") - buf.write("\2\3\4=Q^oz~\u0082\u0085\u0087\u00a2\u00ba\u00c2\u00c6") - buf.write("\u00cc\u00db\u00de\7\b\2\2\7\3\2\5\2\2\7\4\2\6\2\2") - return buf.getvalue() - + return [ + 4,0,18,231,6,-1,6,-1,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,1,0,1,0,1,0, + 1,0,1,0,1,0,5,0,58,8,0,10,0,12,0,61,9,0,1,0,1,0,1,0,1,0,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,78,8,1,10,1,12,1,81,9,1, + 1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,5,2,91,8,2,10,2,12,2,94,9,2,1,2, + 1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,4,4,108,8,4,11,4,12, + 4,109,1,4,1,4,1,4,1,4,1,4,1,4,1,4,4,4,119,8,4,11,4,12,4,120,1,4, + 1,4,3,4,125,8,4,1,5,1,5,3,5,129,8,5,1,5,4,5,132,8,5,11,5,12,5,133, + 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,7,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,9,4,9,159,8,9,11,9,12,9,160,1,10,1,10, + 1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,13, + 1,13,1,14,1,14,1,15,1,15,5,15,183,8,15,10,15,12,15,186,9,15,1,15, + 1,15,1,15,5,15,191,8,15,10,15,12,15,194,9,15,1,15,3,15,197,8,15, + 1,16,1,16,5,16,201,8,16,10,16,12,16,204,9,16,1,17,1,17,1,17,1,17, + 1,18,1,18,1,19,1,19,1,20,1,20,1,20,1,20,3,20,218,8,20,1,21,3,21, + 221,8,21,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,3,59,79,92, + 0,24,3,1,5,2,7,3,9,4,11,5,13,6,15,7,17,8,19,0,21,9,23,10,25,11,27, + 12,29,13,31,14,33,15,35,16,37,17,39,0,41,0,43,0,45,0,47,18,49,0, + 3,0,1,2,10,2,0,9,9,32,32,2,0,38,38,60,60,2,0,34,34,60,60,2,0,39, + 39,60,60,3,0,9,10,13,13,32,32,3,0,48,57,65,70,97,102,1,0,48,57,2, + 0,45,46,95,95,3,0,183,183,768,879,8255,8256,8,0,58,58,65,90,97,122, + 8304,8591,11264,12271,12289,55295,63744,64975,65008,65533,241,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,1,23, + 1,0,0,0,1,25,1,0,0,0,1,27,1,0,0,0,1,29,1,0,0,0,1,31,1,0,0,0,1,33, + 1,0,0,0,1,35,1,0,0,0,1,37,1,0,0,0,2,47,1,0,0,0,2,49,1,0,0,0,3,51, + 1,0,0,0,5,66,1,0,0,0,7,86,1,0,0,0,9,99,1,0,0,0,11,124,1,0,0,0,13, + 131,1,0,0,0,15,135,1,0,0,0,17,139,1,0,0,0,19,149,1,0,0,0,21,158, + 1,0,0,0,23,162,1,0,0,0,25,166,1,0,0,0,27,171,1,0,0,0,29,176,1,0, + 0,0,31,178,1,0,0,0,33,196,1,0,0,0,35,198,1,0,0,0,37,205,1,0,0,0, + 39,209,1,0,0,0,41,211,1,0,0,0,43,217,1,0,0,0,45,220,1,0,0,0,47,222, + 1,0,0,0,49,227,1,0,0,0,51,52,5,60,0,0,52,53,5,33,0,0,53,54,5,45, + 0,0,54,55,5,45,0,0,55,59,1,0,0,0,56,58,9,0,0,0,57,56,1,0,0,0,58, + 61,1,0,0,0,59,60,1,0,0,0,59,57,1,0,0,0,60,62,1,0,0,0,61,59,1,0,0, + 0,62,63,5,45,0,0,63,64,5,45,0,0,64,65,5,62,0,0,65,4,1,0,0,0,66,67, + 5,60,0,0,67,68,5,33,0,0,68,69,5,91,0,0,69,70,5,67,0,0,70,71,5,68, + 0,0,71,72,5,65,0,0,72,73,5,84,0,0,73,74,5,65,0,0,74,75,5,91,0,0, + 75,79,1,0,0,0,76,78,9,0,0,0,77,76,1,0,0,0,78,81,1,0,0,0,79,80,1, + 0,0,0,79,77,1,0,0,0,80,82,1,0,0,0,81,79,1,0,0,0,82,83,5,93,0,0,83, + 84,5,93,0,0,84,85,5,62,0,0,85,6,1,0,0,0,86,87,5,60,0,0,87,88,5,33, + 0,0,88,92,1,0,0,0,89,91,9,0,0,0,90,89,1,0,0,0,91,94,1,0,0,0,92,93, + 1,0,0,0,92,90,1,0,0,0,93,95,1,0,0,0,94,92,1,0,0,0,95,96,5,62,0,0, + 96,97,1,0,0,0,97,98,6,2,0,0,98,8,1,0,0,0,99,100,5,38,0,0,100,101, + 3,35,16,0,101,102,5,59,0,0,102,10,1,0,0,0,103,104,5,38,0,0,104,105, + 5,35,0,0,105,107,1,0,0,0,106,108,3,41,19,0,107,106,1,0,0,0,108,109, + 1,0,0,0,109,107,1,0,0,0,109,110,1,0,0,0,110,111,1,0,0,0,111,112, + 5,59,0,0,112,125,1,0,0,0,113,114,5,38,0,0,114,115,5,35,0,0,115,116, + 5,120,0,0,116,118,1,0,0,0,117,119,3,39,18,0,118,117,1,0,0,0,119, + 120,1,0,0,0,120,118,1,0,0,0,120,121,1,0,0,0,121,122,1,0,0,0,122, + 123,5,59,0,0,123,125,1,0,0,0,124,103,1,0,0,0,124,113,1,0,0,0,125, + 12,1,0,0,0,126,132,7,0,0,0,127,129,5,13,0,0,128,127,1,0,0,0,128, + 129,1,0,0,0,129,130,1,0,0,0,130,132,5,10,0,0,131,126,1,0,0,0,131, + 128,1,0,0,0,132,133,1,0,0,0,133,131,1,0,0,0,133,134,1,0,0,0,134, + 14,1,0,0,0,135,136,5,60,0,0,136,137,1,0,0,0,137,138,6,6,1,0,138, + 16,1,0,0,0,139,140,5,60,0,0,140,141,5,63,0,0,141,142,5,120,0,0,142, + 143,5,109,0,0,143,144,5,108,0,0,144,145,1,0,0,0,145,146,3,37,17, + 0,146,147,1,0,0,0,147,148,6,7,1,0,148,18,1,0,0,0,149,150,5,60,0, + 0,150,151,5,63,0,0,151,152,1,0,0,0,152,153,3,35,16,0,153,154,1,0, + 0,0,154,155,6,8,2,0,155,156,6,8,3,0,156,20,1,0,0,0,157,159,8,1,0, + 0,158,157,1,0,0,0,159,160,1,0,0,0,160,158,1,0,0,0,160,161,1,0,0, + 0,161,22,1,0,0,0,162,163,5,62,0,0,163,164,1,0,0,0,164,165,6,10,4, + 0,165,24,1,0,0,0,166,167,5,63,0,0,167,168,5,62,0,0,168,169,1,0,0, + 0,169,170,6,11,4,0,170,26,1,0,0,0,171,172,5,47,0,0,172,173,5,62, + 0,0,173,174,1,0,0,0,174,175,6,12,4,0,175,28,1,0,0,0,176,177,5,47, + 0,0,177,30,1,0,0,0,178,179,5,61,0,0,179,32,1,0,0,0,180,184,5,34, + 0,0,181,183,8,2,0,0,182,181,1,0,0,0,183,186,1,0,0,0,184,182,1,0, + 0,0,184,185,1,0,0,0,185,187,1,0,0,0,186,184,1,0,0,0,187,197,5,34, + 0,0,188,192,5,39,0,0,189,191,8,3,0,0,190,189,1,0,0,0,191,194,1,0, + 0,0,192,190,1,0,0,0,192,193,1,0,0,0,193,195,1,0,0,0,194,192,1,0, + 0,0,195,197,5,39,0,0,196,180,1,0,0,0,196,188,1,0,0,0,197,34,1,0, + 0,0,198,202,3,45,21,0,199,201,3,43,20,0,200,199,1,0,0,0,201,204, + 1,0,0,0,202,200,1,0,0,0,202,203,1,0,0,0,203,36,1,0,0,0,204,202,1, + 0,0,0,205,206,7,4,0,0,206,207,1,0,0,0,207,208,6,17,0,0,208,38,1, + 0,0,0,209,210,7,5,0,0,210,40,1,0,0,0,211,212,7,6,0,0,212,42,1,0, + 0,0,213,218,3,45,21,0,214,218,7,7,0,0,215,218,3,41,19,0,216,218, + 7,8,0,0,217,213,1,0,0,0,217,214,1,0,0,0,217,215,1,0,0,0,217,216, + 1,0,0,0,218,44,1,0,0,0,219,221,7,9,0,0,220,219,1,0,0,0,221,46,1, + 0,0,0,222,223,5,63,0,0,223,224,5,62,0,0,224,225,1,0,0,0,225,226, + 6,22,4,0,226,48,1,0,0,0,227,228,9,0,0,0,228,229,1,0,0,0,229,230, + 6,23,2,0,230,50,1,0,0,0,19,0,1,2,59,79,92,109,120,124,128,131,133, + 160,184,192,196,202,217,220,5,6,0,0,5,1,0,3,0,0,5,2,0,4,0,0 + ] class XMLLexer(Lexer): @@ -159,7 +145,7 @@ class XMLLexer(Lexer): def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/src/pycropml/transpiler/antlr_py/grammars/XMLParser.interp b/src/pycropml/transpiler/antlr_py/grammars/XMLParser.interp index fa3df494..b34cbbae 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/XMLParser.interp +++ b/src/pycropml/transpiler/antlr_py/grammars/XMLParser.interp @@ -52,4 +52,4 @@ misc atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 20, 98, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 3, 2, 5, 2, 20, 10, 2, 3, 2, 7, 2, 23, 10, 2, 12, 2, 14, 2, 26, 11, 2, 3, 2, 3, 2, 7, 2, 30, 10, 2, 12, 2, 14, 2, 33, 11, 2, 3, 3, 3, 3, 7, 3, 37, 10, 3, 12, 3, 14, 3, 40, 11, 3, 3, 3, 3, 3, 3, 4, 5, 4, 45, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 52, 10, 4, 3, 4, 5, 4, 55, 10, 4, 7, 4, 57, 10, 4, 12, 4, 14, 4, 60, 11, 4, 3, 5, 3, 5, 3, 5, 7, 5, 65, 10, 5, 12, 5, 14, 5, 68, 11, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 7, 5, 80, 10, 5, 12, 5, 14, 5, 83, 11, 5, 3, 5, 5, 5, 86, 10, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 2, 2, 10, 2, 4, 6, 8, 10, 12, 14, 16, 2, 5, 3, 2, 6, 7, 4, 2, 8, 8, 11, 11, 5, 2, 3, 3, 8, 8, 20, 20, 2, 103, 2, 19, 3, 2, 2, 2, 4, 34, 3, 2, 2, 2, 6, 44, 3, 2, 2, 2, 8, 85, 3, 2, 2, 2, 10, 87, 3, 2, 2, 2, 12, 89, 3, 2, 2, 2, 14, 93, 3, 2, 2, 2, 16, 95, 3, 2, 2, 2, 18, 20, 5, 4, 3, 2, 19, 18, 3, 2, 2, 2, 19, 20, 3, 2, 2, 2, 20, 24, 3, 2, 2, 2, 21, 23, 5, 16, 9, 2, 22, 21, 3, 2, 2, 2, 23, 26, 3, 2, 2, 2, 24, 22, 3, 2, 2, 2, 24, 25, 3, 2, 2, 2, 25, 27, 3, 2, 2, 2, 26, 24, 3, 2, 2, 2, 27, 31, 5, 8, 5, 2, 28, 30, 5, 16, 9, 2, 29, 28, 3, 2, 2, 2, 30, 33, 3, 2, 2, 2, 31, 29, 3, 2, 2, 2, 31, 32, 3, 2, 2, 2, 32, 3, 3, 2, 2, 2, 33, 31, 3, 2, 2, 2, 34, 38, 7, 10, 2, 2, 35, 37, 5, 12, 7, 2, 36, 35, 3, 2, 2, 2, 37, 40, 3, 2, 2, 2, 38, 36, 3, 2, 2, 2, 38, 39, 3, 2, 2, 2, 39, 41, 3, 2, 2, 2, 40, 38, 3, 2, 2, 2, 41, 42, 7, 13, 2, 2, 42, 5, 3, 2, 2, 2, 43, 45, 5, 14, 8, 2, 44, 43, 3, 2, 2, 2, 44, 45, 3, 2, 2, 2, 45, 58, 3, 2, 2, 2, 46, 52, 5, 8, 5, 2, 47, 52, 5, 10, 6, 2, 48, 52, 7, 4, 2, 2, 49, 52, 7, 20, 2, 2, 50, 52, 7, 3, 2, 2, 51, 46, 3, 2, 2, 2, 51, 47, 3, 2, 2, 2, 51, 48, 3, 2, 2, 2, 51, 49, 3, 2, 2, 2, 51, 50, 3, 2, 2, 2, 52, 54, 3, 2, 2, 2, 53, 55, 5, 14, 8, 2, 54, 53, 3, 2, 2, 2, 54, 55, 3, 2, 2, 2, 55, 57, 3, 2, 2, 2, 56, 51, 3, 2, 2, 2, 57, 60, 3, 2, 2, 2, 58, 56, 3, 2, 2, 2, 58, 59, 3, 2, 2, 2, 59, 7, 3, 2, 2, 2, 60, 58, 3, 2, 2, 2, 61, 62, 7, 9, 2, 2, 62, 66, 7, 18, 2, 2, 63, 65, 5, 12, 7, 2, 64, 63, 3, 2, 2, 2, 65, 68, 3, 2, 2, 2, 66, 64, 3, 2, 2, 2, 66, 67, 3, 2, 2, 2, 67, 69, 3, 2, 2, 2, 68, 66, 3, 2, 2, 2, 69, 70, 7, 12, 2, 2, 70, 71, 5, 6, 4, 2, 71, 72, 7, 9, 2, 2, 72, 73, 7, 15, 2, 2, 73, 74, 7, 18, 2, 2, 74, 75, 7, 12, 2, 2, 75, 86, 3, 2, 2, 2, 76, 77, 7, 9, 2, 2, 77, 81, 7, 18, 2, 2, 78, 80, 5, 12, 7, 2, 79, 78, 3, 2, 2, 2, 80, 83, 3, 2, 2, 2, 81, 79, 3, 2, 2, 2, 81, 82, 3, 2, 2, 2, 82, 84, 3, 2, 2, 2, 83, 81, 3, 2, 2, 2, 84, 86, 7, 14, 2, 2, 85, 61, 3, 2, 2, 2, 85, 76, 3, 2, 2, 2, 86, 9, 3, 2, 2, 2, 87, 88, 9, 2, 2, 2, 88, 11, 3, 2, 2, 2, 89, 90, 7, 18, 2, 2, 90, 91, 7, 16, 2, 2, 91, 92, 7, 17, 2, 2, 92, 13, 3, 2, 2, 2, 93, 94, 9, 3, 2, 2, 94, 15, 3, 2, 2, 2, 95, 96, 9, 4, 2, 2, 96, 17, 3, 2, 2, 2, 13, 19, 24, 31, 38, 44, 51, 54, 58, 66, 81, 85] \ No newline at end of file +[4, 1, 18, 96, 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, 1, 0, 3, 0, 18, 8, 0, 1, 0, 5, 0, 21, 8, 0, 10, 0, 12, 0, 24, 9, 0, 1, 0, 1, 0, 5, 0, 28, 8, 0, 10, 0, 12, 0, 31, 9, 0, 1, 1, 1, 1, 5, 1, 35, 8, 1, 10, 1, 12, 1, 38, 9, 1, 1, 1, 1, 1, 1, 2, 3, 2, 43, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 50, 8, 2, 1, 2, 3, 2, 53, 8, 2, 5, 2, 55, 8, 2, 10, 2, 12, 2, 58, 9, 2, 1, 3, 1, 3, 1, 3, 5, 3, 63, 8, 3, 10, 3, 12, 3, 66, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 78, 8, 3, 10, 3, 12, 3, 81, 9, 3, 1, 3, 3, 3, 84, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 0, 0, 8, 0, 2, 4, 6, 8, 10, 12, 14, 0, 3, 1, 0, 4, 5, 2, 0, 6, 6, 9, 9, 3, 0, 1, 1, 6, 6, 18, 18, 101, 0, 17, 1, 0, 0, 0, 2, 32, 1, 0, 0, 0, 4, 42, 1, 0, 0, 0, 6, 83, 1, 0, 0, 0, 8, 85, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 91, 1, 0, 0, 0, 14, 93, 1, 0, 0, 0, 16, 18, 3, 2, 1, 0, 17, 16, 1, 0, 0, 0, 17, 18, 1, 0, 0, 0, 18, 22, 1, 0, 0, 0, 19, 21, 3, 14, 7, 0, 20, 19, 1, 0, 0, 0, 21, 24, 1, 0, 0, 0, 22, 20, 1, 0, 0, 0, 22, 23, 1, 0, 0, 0, 23, 25, 1, 0, 0, 0, 24, 22, 1, 0, 0, 0, 25, 29, 3, 6, 3, 0, 26, 28, 3, 14, 7, 0, 27, 26, 1, 0, 0, 0, 28, 31, 1, 0, 0, 0, 29, 27, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 1, 1, 0, 0, 0, 31, 29, 1, 0, 0, 0, 32, 36, 5, 8, 0, 0, 33, 35, 3, 10, 5, 0, 34, 33, 1, 0, 0, 0, 35, 38, 1, 0, 0, 0, 36, 34, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 39, 1, 0, 0, 0, 38, 36, 1, 0, 0, 0, 39, 40, 5, 11, 0, 0, 40, 3, 1, 0, 0, 0, 41, 43, 3, 12, 6, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 56, 1, 0, 0, 0, 44, 50, 3, 6, 3, 0, 45, 50, 3, 8, 4, 0, 46, 50, 5, 2, 0, 0, 47, 50, 5, 18, 0, 0, 48, 50, 5, 1, 0, 0, 49, 44, 1, 0, 0, 0, 49, 45, 1, 0, 0, 0, 49, 46, 1, 0, 0, 0, 49, 47, 1, 0, 0, 0, 49, 48, 1, 0, 0, 0, 50, 52, 1, 0, 0, 0, 51, 53, 3, 12, 6, 0, 52, 51, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 55, 1, 0, 0, 0, 54, 49, 1, 0, 0, 0, 55, 58, 1, 0, 0, 0, 56, 54, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 5, 1, 0, 0, 0, 58, 56, 1, 0, 0, 0, 59, 60, 5, 7, 0, 0, 60, 64, 5, 16, 0, 0, 61, 63, 3, 10, 5, 0, 62, 61, 1, 0, 0, 0, 63, 66, 1, 0, 0, 0, 64, 62, 1, 0, 0, 0, 64, 65, 1, 0, 0, 0, 65, 67, 1, 0, 0, 0, 66, 64, 1, 0, 0, 0, 67, 68, 5, 10, 0, 0, 68, 69, 3, 4, 2, 0, 69, 70, 5, 7, 0, 0, 70, 71, 5, 13, 0, 0, 71, 72, 5, 16, 0, 0, 72, 73, 5, 10, 0, 0, 73, 84, 1, 0, 0, 0, 74, 75, 5, 7, 0, 0, 75, 79, 5, 16, 0, 0, 76, 78, 3, 10, 5, 0, 77, 76, 1, 0, 0, 0, 78, 81, 1, 0, 0, 0, 79, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 82, 1, 0, 0, 0, 81, 79, 1, 0, 0, 0, 82, 84, 5, 12, 0, 0, 83, 59, 1, 0, 0, 0, 83, 74, 1, 0, 0, 0, 84, 7, 1, 0, 0, 0, 85, 86, 7, 0, 0, 0, 86, 9, 1, 0, 0, 0, 87, 88, 5, 16, 0, 0, 88, 89, 5, 14, 0, 0, 89, 90, 5, 15, 0, 0, 90, 11, 1, 0, 0, 0, 91, 92, 7, 1, 0, 0, 92, 13, 1, 0, 0, 0, 93, 94, 7, 2, 0, 0, 94, 15, 1, 0, 0, 0, 11, 17, 22, 29, 36, 42, 49, 52, 56, 64, 79, 83] \ No newline at end of file diff --git a/src/pycropml/transpiler/antlr_py/grammars/XMLParser.py b/src/pycropml/transpiler/antlr_py/grammars/XMLParser.py index 9855a6c9..a6b557f0 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/XMLParser.py +++ b/src/pycropml/transpiler/antlr_py/grammars/XMLParser.py @@ -1,4 +1,4 @@ -# Generated from gram\xml\XMLParser.g4 by ANTLR 4.8 +# Generated from XMLParser.g4 by ANTLR 4.13.2 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -8,44 +8,40 @@ else: from typing.io import TextIO - def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\24") - buf.write("b\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b") - buf.write("\t\b\4\t\t\t\3\2\5\2\24\n\2\3\2\7\2\27\n\2\f\2\16\2\32") - buf.write("\13\2\3\2\3\2\7\2\36\n\2\f\2\16\2!\13\2\3\3\3\3\7\3%\n") - buf.write("\3\f\3\16\3(\13\3\3\3\3\3\3\4\5\4-\n\4\3\4\3\4\3\4\3\4") - buf.write("\3\4\5\4\64\n\4\3\4\5\4\67\n\4\7\49\n\4\f\4\16\4<\13\4") - buf.write("\3\5\3\5\3\5\7\5A\n\5\f\5\16\5D\13\5\3\5\3\5\3\5\3\5\3") - buf.write("\5\3\5\3\5\3\5\3\5\3\5\7\5P\n\5\f\5\16\5S\13\5\3\5\5\5") - buf.write("V\n\5\3\6\3\6\3\7\3\7\3\7\3\7\3\b\3\b\3\t\3\t\3\t\2\2") - buf.write("\n\2\4\6\b\n\f\16\20\2\5\3\2\6\7\4\2\b\b\13\13\5\2\3\3") - buf.write("\b\b\24\24\2g\2\23\3\2\2\2\4\"\3\2\2\2\6,\3\2\2\2\bU\3") - buf.write("\2\2\2\nW\3\2\2\2\fY\3\2\2\2\16]\3\2\2\2\20_\3\2\2\2\22") - buf.write("\24\5\4\3\2\23\22\3\2\2\2\23\24\3\2\2\2\24\30\3\2\2\2") - buf.write("\25\27\5\20\t\2\26\25\3\2\2\2\27\32\3\2\2\2\30\26\3\2") - buf.write("\2\2\30\31\3\2\2\2\31\33\3\2\2\2\32\30\3\2\2\2\33\37\5") - buf.write("\b\5\2\34\36\5\20\t\2\35\34\3\2\2\2\36!\3\2\2\2\37\35") - buf.write("\3\2\2\2\37 \3\2\2\2 \3\3\2\2\2!\37\3\2\2\2\"&\7\n\2\2") - buf.write("#%\5\f\7\2$#\3\2\2\2%(\3\2\2\2&$\3\2\2\2&\'\3\2\2\2\'") - buf.write(")\3\2\2\2(&\3\2\2\2)*\7\r\2\2*\5\3\2\2\2+-\5\16\b\2,+") - buf.write("\3\2\2\2,-\3\2\2\2-:\3\2\2\2.\64\5\b\5\2/\64\5\n\6\2\60") - buf.write("\64\7\4\2\2\61\64\7\24\2\2\62\64\7\3\2\2\63.\3\2\2\2\63") - buf.write("/\3\2\2\2\63\60\3\2\2\2\63\61\3\2\2\2\63\62\3\2\2\2\64") - buf.write("\66\3\2\2\2\65\67\5\16\b\2\66\65\3\2\2\2\66\67\3\2\2\2") - buf.write("\679\3\2\2\28\63\3\2\2\29<\3\2\2\2:8\3\2\2\2:;\3\2\2\2") - buf.write(";\7\3\2\2\2<:\3\2\2\2=>\7\t\2\2>B\7\22\2\2?A\5\f\7\2@") - buf.write("?\3\2\2\2AD\3\2\2\2B@\3\2\2\2BC\3\2\2\2CE\3\2\2\2DB\3") - buf.write("\2\2\2EF\7\f\2\2FG\5\6\4\2GH\7\t\2\2HI\7\17\2\2IJ\7\22") - buf.write("\2\2JK\7\f\2\2KV\3\2\2\2LM\7\t\2\2MQ\7\22\2\2NP\5\f\7") - buf.write("\2ON\3\2\2\2PS\3\2\2\2QO\3\2\2\2QR\3\2\2\2RT\3\2\2\2S") - buf.write("Q\3\2\2\2TV\7\16\2\2U=\3\2\2\2UL\3\2\2\2V\t\3\2\2\2WX") - buf.write("\t\2\2\2X\13\3\2\2\2YZ\7\22\2\2Z[\7\20\2\2[\\\7\21\2\2") - buf.write("\\\r\3\2\2\2]^\t\3\2\2^\17\3\2\2\2_`\t\4\2\2`\21\3\2\2") - buf.write("\2\r\23\30\37&,\63\66:BQU") - return buf.getvalue() - + return [ + 4,1,18,96,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,1,0,3,0,18,8,0,1,0,5,0,21,8,0,10,0,12,0,24,9,0,1,0,1,0, + 5,0,28,8,0,10,0,12,0,31,9,0,1,1,1,1,5,1,35,8,1,10,1,12,1,38,9,1, + 1,1,1,1,1,2,3,2,43,8,2,1,2,1,2,1,2,1,2,1,2,3,2,50,8,2,1,2,3,2,53, + 8,2,5,2,55,8,2,10,2,12,2,58,9,2,1,3,1,3,1,3,5,3,63,8,3,10,3,12,3, + 66,9,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,5,3,78,8,3,10,3,12, + 3,81,9,3,1,3,3,3,84,8,3,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,7,1,7, + 1,7,0,0,8,0,2,4,6,8,10,12,14,0,3,1,0,4,5,2,0,6,6,9,9,3,0,1,1,6,6, + 18,18,101,0,17,1,0,0,0,2,32,1,0,0,0,4,42,1,0,0,0,6,83,1,0,0,0,8, + 85,1,0,0,0,10,87,1,0,0,0,12,91,1,0,0,0,14,93,1,0,0,0,16,18,3,2,1, + 0,17,16,1,0,0,0,17,18,1,0,0,0,18,22,1,0,0,0,19,21,3,14,7,0,20,19, + 1,0,0,0,21,24,1,0,0,0,22,20,1,0,0,0,22,23,1,0,0,0,23,25,1,0,0,0, + 24,22,1,0,0,0,25,29,3,6,3,0,26,28,3,14,7,0,27,26,1,0,0,0,28,31,1, + 0,0,0,29,27,1,0,0,0,29,30,1,0,0,0,30,1,1,0,0,0,31,29,1,0,0,0,32, + 36,5,8,0,0,33,35,3,10,5,0,34,33,1,0,0,0,35,38,1,0,0,0,36,34,1,0, + 0,0,36,37,1,0,0,0,37,39,1,0,0,0,38,36,1,0,0,0,39,40,5,11,0,0,40, + 3,1,0,0,0,41,43,3,12,6,0,42,41,1,0,0,0,42,43,1,0,0,0,43,56,1,0,0, + 0,44,50,3,6,3,0,45,50,3,8,4,0,46,50,5,2,0,0,47,50,5,18,0,0,48,50, + 5,1,0,0,49,44,1,0,0,0,49,45,1,0,0,0,49,46,1,0,0,0,49,47,1,0,0,0, + 49,48,1,0,0,0,50,52,1,0,0,0,51,53,3,12,6,0,52,51,1,0,0,0,52,53,1, + 0,0,0,53,55,1,0,0,0,54,49,1,0,0,0,55,58,1,0,0,0,56,54,1,0,0,0,56, + 57,1,0,0,0,57,5,1,0,0,0,58,56,1,0,0,0,59,60,5,7,0,0,60,64,5,16,0, + 0,61,63,3,10,5,0,62,61,1,0,0,0,63,66,1,0,0,0,64,62,1,0,0,0,64,65, + 1,0,0,0,65,67,1,0,0,0,66,64,1,0,0,0,67,68,5,10,0,0,68,69,3,4,2,0, + 69,70,5,7,0,0,70,71,5,13,0,0,71,72,5,16,0,0,72,73,5,10,0,0,73,84, + 1,0,0,0,74,75,5,7,0,0,75,79,5,16,0,0,76,78,3,10,5,0,77,76,1,0,0, + 0,78,81,1,0,0,0,79,77,1,0,0,0,79,80,1,0,0,0,80,82,1,0,0,0,81,79, + 1,0,0,0,82,84,5,12,0,0,83,59,1,0,0,0,83,74,1,0,0,0,84,7,1,0,0,0, + 85,86,7,0,0,0,86,9,1,0,0,0,87,88,5,16,0,0,88,89,5,14,0,0,89,90,5, + 15,0,0,90,11,1,0,0,0,91,92,7,1,0,0,92,13,1,0,0,0,93,94,7,2,0,0,94, + 15,1,0,0,0,11,17,22,29,36,42,49,52,56,64,79,83 + ] class XMLParser ( Parser ): @@ -100,7 +96,7 @@ class XMLParser ( Parser ): def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.8") + self.checkVersion("4.13.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None @@ -108,6 +104,7 @@ def __init__(self, input:TokenStream, output:TextIO = sys.stdout): class DocumentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -158,7 +155,7 @@ def document(self): self.state = 17 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==XMLParser.XMLDeclOpen: + if _la==8: self.state = 16 self.prolog() @@ -166,7 +163,7 @@ def document(self): self.state = 22 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XMLParser.COMMENT) | (1 << XMLParser.SEA_WS) | (1 << XMLParser.PI))) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 262210) != 0): self.state = 19 self.misc() self.state = 24 @@ -178,7 +175,7 @@ def document(self): self.state = 29 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XMLParser.COMMENT) | (1 << XMLParser.SEA_WS) | (1 << XMLParser.PI))) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 262210) != 0): self.state = 26 self.misc() self.state = 31 @@ -195,6 +192,7 @@ def document(self): class PrologContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -245,7 +243,7 @@ def prolog(self): self.state = 36 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==XMLParser.Name: + while _la==16: self.state = 33 self.attribute() self.state = 38 @@ -264,6 +262,7 @@ def prolog(self): class ContentContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -338,7 +337,7 @@ def content(self): self.state = 42 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==XMLParser.SEA_WS or _la==XMLParser.TEXT: + if _la==6 or _la==9: self.state = 41 self.chardata() @@ -351,23 +350,23 @@ def content(self): self.state = 49 self._errHandler.sync(self) token = self._input.LA(1) - if token in [XMLParser.OPEN]: + if token in [7]: self.state = 44 self.element() pass - elif token in [XMLParser.EntityRef, XMLParser.CharRef]: + elif token in [4, 5]: self.state = 45 self.reference() pass - elif token in [XMLParser.CDATA]: + elif token in [2]: self.state = 46 self.match(XMLParser.CDATA) pass - elif token in [XMLParser.PI]: + elif token in [18]: self.state = 47 self.match(XMLParser.PI) pass - elif token in [XMLParser.COMMENT]: + elif token in [1]: self.state = 48 self.match(XMLParser.COMMENT) pass @@ -377,7 +376,7 @@ def content(self): self.state = 52 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==XMLParser.SEA_WS or _la==XMLParser.TEXT: + if _la==6 or _la==9: self.state = 51 self.chardata() @@ -396,6 +395,7 @@ def content(self): class ElementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -474,7 +474,7 @@ def element(self): self.state = 64 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==XMLParser.Name: + while _la==16: self.state = 61 self.attribute() self.state = 66 @@ -504,7 +504,7 @@ def element(self): self.state = 79 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==XMLParser.Name: + while _la==16: self.state = 76 self.attribute() self.state = 81 @@ -526,6 +526,7 @@ def element(self): class ReferenceContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -566,7 +567,7 @@ def reference(self): self.enterOuterAlt(localctx, 1) self.state = 85 _la = self._input.LA(1) - if not(_la==XMLParser.EntityRef or _la==XMLParser.CharRef): + if not(_la==4 or _la==5): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -581,6 +582,7 @@ def reference(self): class AttributeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -637,6 +639,7 @@ def attribute(self): class ChardataContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -677,7 +680,7 @@ def chardata(self): self.enterOuterAlt(localctx, 1) self.state = 91 _la = self._input.LA(1) - if not(_la==XMLParser.SEA_WS or _la==XMLParser.TEXT): + if not(_la==6 or _la==9): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -692,6 +695,7 @@ def chardata(self): class MiscContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -735,7 +739,7 @@ def misc(self): self.enterOuterAlt(localctx, 1) self.state = 93 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XMLParser.COMMENT) | (1 << XMLParser.SEA_WS) | (1 << XMLParser.PI))) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 262210) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) diff --git a/src/pycropml/transpiler/antlr_py/grammars/XMLParserListener.py b/src/pycropml/transpiler/antlr_py/grammars/XMLParserListener.py index 78d3f458..0f0d7587 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/XMLParserListener.py +++ b/src/pycropml/transpiler/antlr_py/grammars/XMLParserListener.py @@ -1,6 +1,6 @@ -# Generated from gram\xml\XMLParser.g4 by ANTLR 4.8 +# Generated from XMLParser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .XMLParser import XMLParser else: from XMLParser import XMLParser diff --git a/src/pycropml/transpiler/antlr_py/grammars/XMLParserVisitor.py b/src/pycropml/transpiler/antlr_py/grammars/XMLParserVisitor.py index 8f94bf19..97238402 100644 --- a/src/pycropml/transpiler/antlr_py/grammars/XMLParserVisitor.py +++ b/src/pycropml/transpiler/antlr_py/grammars/XMLParserVisitor.py @@ -1,6 +1,6 @@ -# Generated from gram\xml\XMLParser.g4 by ANTLR 4.8 +# Generated from XMLParser.g4 by ANTLR 4.13.2 from antlr4 import * -if __name__ is not None and "." in __name__: +if "." in __name__: from .XMLParser import XMLParser else: from XMLParser import XMLParser diff --git a/src/pycropml/version.py b/src/pycropml/version.py index a34b018a..bc71a479 100644 --- a/src/pycropml/version.py +++ b/src/pycropml/version.py @@ -8,7 +8,7 @@ MAJOR = 2 """(int) Version major component.""" -MINOR = 1 +MINOR = 2 """(int) Version minor component.""" POST = 0 diff --git a/test/Tutorial - Raccourci.lnk b/test/Tutorial - Raccourci.lnk deleted file mode 100644 index a8a3defd..00000000 Binary files a/test/Tutorial - Raccourci.lnk and /dev/null differ diff --git a/test/test_unitmodels.py b/test/test_unitmodels.py index 42142970..e6d8cd3b 100644 --- a/test/test_unitmodels.py +++ b/test/test_unitmodels.py @@ -4,16 +4,16 @@ """ from __future__ import absolute_import from __future__ import print_function -from path import Path +from pathlib import Path from pycropml import pparse, render_cyml from pycropml.cyml import transpile_package -cwd = Path(__file__).dirname() +cwd = Path(__file__).parent data = cwd/'Tutorial' -packages = [p for p in data.listdir() if (p/'crop2ml').isdir()] +packages = [str(p) for p in data.iterdir() if (p/'crop2ml').is_dir()] pkg_nrj, pkg_pheno, snow_pkg = packages ##############################################################################