diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a2df7648..af2bbe37 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,4 +43,4 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: mvn -e -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=green-code-initiative_ecoCode-mobile -Dsonar.exclusions=**/codenarc-converter/**,**/*.groovy,**/android-plugin/src/test/**,**/*.dummy + run: mvn -e -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=green-code-initiative_ecoCode-mobile diff --git a/android-plugin/pom.xml b/android-plugin/pom.xml index 8122ea68..af566b87 100644 --- a/android-plugin/pom.xml +++ b/android-plugin/pom.xml @@ -183,7 +183,7 @@ org.codenarc CodeNarc - 2.2.3 + 2.2.0 diff --git a/codenarc-converter/pom.xml b/codenarc-converter/pom.xml index 745088a0..9236d19c 100644 --- a/codenarc-converter/pom.xml +++ b/codenarc-converter/pom.xml @@ -13,7 +13,7 @@ Sonar CodeNarc Converter - 2.2.3 + 2.2.0 1.8.2 true diff --git a/ios-plugin/CONTRIBUTING.md b/ios-plugin/CONTRIBUTING.md new file mode 100644 index 00000000..48040767 --- /dev/null +++ b/ios-plugin/CONTRIBUTING.md @@ -0,0 +1,50 @@ +# Contributing + +## General information + +The iOS plugin is split into 3 different modules: +- `swift-lang` is for Swift source files parsing and checks +- `commons-ios` gather common parsing utils and models that can be reused to implement other languages support +- `sonar-ios-plugin` the actual SonarQube plugin declaration + +Swift file parser is build using the [ANTLR](https://www.antlr.org/) parser generator. + +The generated parser source files are located into `swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated`. those source files should not be edited manually. + +When necessary (in case of Swift language syntax upgrade for example), those source files should be re-generated with ANTLR. + +## Adding new rules + +When adding a new rule, the following steps are required: +- Declare the rule +- Implement a check +- Add the check to the visitor + +### Declaring the rule + +The new rule must be declared into 2 files : +- `swift-lang/src/resources/ecocode-swift_profile.json` +- `swift-lang/src/resources/ecocode-swift-rules.json` + +> Note: if a rich HTML description of the rule is required. Use a separated .html file put aside `swift-lang/src/resources/ecocode-swift-rules.json` and name it after the rule key. For example: `RULE_KEY.html`. When an specific HTML description file is provided for a rule, it overrides the description provided into the `ecocode-swift-rules.json`. + +### Implementing a check + +In order to implement a check for the rule, create a Check class inherited from `RuleCheck` in `src/main/java/io/ecocode/ios/swift/checks`. + +Have a look at `swift-lang/src/main/java/io/ecocode/ios/swift/checks/idleness/IdleTimerDisabledCheck` to learn more about the implementation. + +### Adding check to the visitor + +Once implemented, add the new check to `swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftVisitor`. + +For example: + +```java + public EcoCodeSwiftVisitor() { + ... + // Load checks + checks.add(new MyNewCheck()); + ... + } +``` diff --git a/ios-plugin/Dockerfile b/ios-plugin/Dockerfile new file mode 100644 index 00000000..4c945e54 --- /dev/null +++ b/ios-plugin/Dockerfile @@ -0,0 +1,2 @@ +FROM sonarqube:9.8-community +ADD https://github.com/insideapp-oss/sonar-apple/releases/download/0.3.0/sonar-apple-plugin-0.3.0.jar /opt/sonarqube/extensions/plugins/sonar-apple-plugin-0.3.0.jar diff --git a/ios-plugin/LICENSE.txt b/ios-plugin/LICENSE.txt new file mode 100644 index 00000000..65c5ca88 --- /dev/null +++ b/ios-plugin/LICENSE.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/ios-plugin/NOTICE.txt b/ios-plugin/NOTICE.txt new file mode 100644 index 00000000..f19ec54a --- /dev/null +++ b/ios-plugin/NOTICE.txt @@ -0,0 +1,3 @@ +ecoCode SonarQube plugin +Copyright (C) 2020-2021 Snapp' - Université de Pau et des Pays de l'Adour +mailto: contact@ecocode.io diff --git a/ios-plugin/README.md b/ios-plugin/README.md new file mode 100644 index 00000000..89b144be --- /dev/null +++ b/ios-plugin/README.md @@ -0,0 +1,31 @@ +# ecoCode iOS SonarQube plugin + +ecoCode iOS SonarQube plugin is an "eco-responsibility" static code analyzer for iOS projects written in Swift. Its aim is to detect code smells indicating how the source code can be improved to reduce their environmental and social impact. + +## Requirements + +- Java JDK 11+ +- Maven 3.8 or later +- A local SonarQube instance for local testing + +## Main commands + +#### Local deployment using Docker + +**This implies to have a machine ready to run containerized applications.** Please refer to Docker documentation: https://www.docker.com/. + +The project uses a 8.6 docker instance of SonarQube to run. + +Pop docker containers by using: + +```bash +docker-compose up --build -d && docker ps +``` + +The tests instance of SonarQube with the plugin will then be available at: http://localhost:9000 + +#### Packaging + +```bash +$ mvn package +``` diff --git a/ios-plugin/commons-ios/pom.xml b/ios-plugin/commons-ios/pom.xml new file mode 100644 index 00000000..b06f851d --- /dev/null +++ b/ios-plugin/commons-ios/pom.xml @@ -0,0 +1,33 @@ + + + io.ecocode + ios-plugin + 0.1.1-SNAPSHOT + + 4.0.0 + + ecocode-commons-ios + + + + + com.fasterxml.staxmate + staxmate + 2.4.0 + + + + org.antlr + antlr4-runtime + 4.10 + + + + org.json + json + 20220320 + + + + + \ No newline at end of file diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/AntlrContext.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/AntlrContext.java new file mode 100644 index 00000000..0479a742 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/AntlrContext.java @@ -0,0 +1,88 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.antlr; + +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.tree.ParseTree; +import org.sonar.api.batch.fs.InputFile; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; + +public abstract class AntlrContext { + + private InputFile file; + private CommonTokenStream stream; + private ParseTree root; + private SourceLine[] lines; + + public void loadFromFile(InputFile file, Charset charset) throws IOException { + loadFromStreams(file, file.inputStream(), file.inputStream(), charset); + } + + public abstract void loadFromStreams(InputFile inputFile, InputStream file, InputStream linesStream, + Charset charset) throws IOException; + + public SourceLine[] getLines() { + return lines; + } + + public Token[] getTokens() { + return this.stream.getTokens().toArray(new Token[0]); + } + + public int[] getLineAndColumn(final int global) { + + for (final SourceLine line : this.lines) { + if (line.getEnd() > global) { + return new int[]{line.getLine(), global - line.getStart()}; + } + } + return new int[0]; + } + + public InputFile getFile() { + return file; + } + + protected void setFile(InputFile file) { + this.file = file; + } + + public CommonTokenStream getStream() { + return stream; + } + + public ParseTree getRoot() { + return root; + } + + protected void setStream(CommonTokenStream stream) { + this.stream = stream; + } + + protected void setRoot(ParseTree root) { + this.root = root; + } + + protected void setLines(SourceLine[] lines) { + this.lines = lines; + } +} diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/ParseTreeItemVisitor.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/ParseTreeItemVisitor.java new file mode 100644 index 00000000..2d2ab6f6 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/ParseTreeItemVisitor.java @@ -0,0 +1,27 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.antlr; + +import org.antlr.v4.runtime.tree.ParseTree; +import org.sonar.api.batch.sensor.SensorContext; + +public interface ParseTreeItemVisitor { + void apply(ParseTree tree); + + void fillContext(SensorContext context, AntlrContext antlrContext); +} \ No newline at end of file diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/SourceLine.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/SourceLine.java new file mode 100644 index 00000000..4ee53b15 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/SourceLine.java @@ -0,0 +1,56 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.antlr; + +public final class SourceLine { + + private final int count; + private final int start; + private final int end; + private final int line; + + public SourceLine(final int line, final int count, final int start, final int end) { + this.line = line; + this.count = count; + this.start = start; + this.end = end; + + } + + @Override + public String toString() { + return "SourceLine [line=" + line + ", count=" + count + ", start=" + start + ", end=" + end + "]"; + } + + public int getLine() { + return line; + } + + public int getCount() { + return count; + } + + public int getEnd() { + return end; + } + + public int getStart() { + return start; + } + +} diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/SourceLinesProvider.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/SourceLinesProvider.java new file mode 100644 index 00000000..6335b6f9 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/antlr/SourceLinesProvider.java @@ -0,0 +1,65 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.antlr; + +import org.apache.commons.io.input.BOMInputStream; +import org.sonar.api.utils.log.Logger; +import org.sonar.api.utils.log.Loggers; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; + +public class SourceLinesProvider { + private static final Logger LOGGER = Loggers.get(SourceLinesProvider.class); + + public SourceLine[] getLines(final InputStream inputStream, final Charset charset) { + if (inputStream == null) { + return new SourceLine[0]; + } + final List sourceLines = new ArrayList<>(); + + try (final BufferedReader bufferedReader = new BufferedReader( + new InputStreamReader(new BOMInputStream(inputStream, false), charset))) { + int totalLines = 1; + int global = 0; + int count = 0; + + int currentChar; + while ((currentChar = bufferedReader.read()) != -1) { + global++; + count++; + if (currentChar == 10) { + sourceLines.add(new SourceLine(totalLines, count, global - count, global)); + totalLines++; + count = 0; + } + + } + sourceLines.add(new SourceLine(totalLines, count, global - count, global)); + } catch (final Exception e) { + LOGGER.warn("Error occurred reading file", e); + } + + return sourceLines.toArray(new SourceLine[0]); + } + +} diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/checks/ReportIssue.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/checks/ReportIssue.java new file mode 100644 index 00000000..94a63c33 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/checks/ReportIssue.java @@ -0,0 +1,77 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.checks; + +import javax.annotation.Nullable; +import java.util.Objects; + +public class ReportIssue { + + private final String ruleId; + private final String message; + @Nullable + private final String filePath; + @Nullable + private final Integer lineNumber; + + public ReportIssue(String ruleId, String message, @Nullable String filePath, @Nullable Integer lineNumber) { + this.ruleId = ruleId; + this.message = message; + this.filePath = filePath; + this.lineNumber = lineNumber; + } + + public ReportIssue(String ruleId, String message) { + this.ruleId = ruleId; + this.message = message; + this.filePath = null; + this.lineNumber = null; + } + + public String getRuleId() { + return ruleId; + } + + public String getMessage() { + return message; + } + + public String getFilePath() { + return filePath; + } + + public Integer getLineNumber() { + return lineNumber; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ReportIssue that = (ReportIssue) o; + return Objects.equals(lineNumber, that.lineNumber) && + Objects.equals(ruleId, that.ruleId) && + Objects.equals(message, that.message) && + Objects.equals(filePath, that.filePath); + } + + @Override + public int hashCode() { + return Objects.hash(ruleId, message, filePath, lineNumber); + } +} diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/checks/ReportIssueRecorder.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/checks/ReportIssueRecorder.java new file mode 100644 index 00000000..69d07114 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/checks/ReportIssueRecorder.java @@ -0,0 +1,92 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.checks; + +import org.sonar.api.batch.fs.FilePredicate; +import org.sonar.api.batch.fs.FilePredicates; +import org.sonar.api.batch.fs.FileSystem; +import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.sensor.SensorContext; +import org.sonar.api.batch.sensor.issue.NewIssue; +import org.sonar.api.batch.sensor.issue.NewIssueLocation; +import org.sonar.api.rule.RuleKey; +import org.sonar.api.utils.log.Logger; +import org.sonar.api.utils.log.Loggers; + +import java.util.List; + +public class ReportIssueRecorder { + + private static final Logger LOGGER = Loggers.get(ReportIssueRecorder.class); + private final SensorContext sensorContext; + + public ReportIssueRecorder(SensorContext sensorContext) { + this.sensorContext = sensorContext; + } + + public void recordIssues(List issues, String repository) { + + final FileSystem fs = sensorContext.fileSystem(); + final FilePredicates predicates = fs.predicates(); + FilePredicate mainPredicate = predicates.hasType(InputFile.Type.MAIN); + + // Record issues + for (ReportIssue issue : issues) { + + // The issue to be record + NewIssue sonarIssue = sensorContext + .newIssue() + .forRule(RuleKey.of(repository, issue.getRuleId())); + // The location of the issue to be record + NewIssueLocation sonarIssueLocation = sonarIssue.newLocation() + .message(issue.getMessage()); + + final String filePath = issue.getFilePath(); + // We have a file location associated with the generated issue + if (filePath != null) { + final FilePredicate relativePathPredicate = predicates.hasRelativePath(filePath); + final FilePredicate absolutePathPredicate = predicates.hasAbsolutePath(filePath); + final FilePredicate pathPredicate = predicates.or(absolutePathPredicate, relativePathPredicate); + final FilePredicate filePredicate = predicates.and(pathPredicate, mainPredicate); + InputFile inputFile = fs.inputFile(filePredicate); + // Making sure the file is part of SonarQube FS + if (fs.hasFiles(filePredicate) && inputFile != null) { + // Adding the location of the file + sonarIssueLocation.on(inputFile); + final Integer lineNumber = issue.getLineNumber(); + // We have a line number for that file + if (lineNumber != null) { + // Adding the line number + sonarIssueLocation.at(inputFile.selectLine(lineNumber)); + } + // Associating the location to the issue and saving it. + sonarIssue.at(sonarIssueLocation).save(); + } else { + LOGGER.warn("File not included in SonarQube sources {}", filePath); + } + } else { + // No location specified, so a global issue. + // Setting the project as location. + sonarIssueLocation.on(sensorContext.project()); + // Associating the location to the issue and saving it. + sonarIssue.at(sonarIssueLocation).save(); + } + + } + } +} diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/checks/RuleCheck.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/checks/RuleCheck.java new file mode 100644 index 00000000..1074aea6 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/checks/RuleCheck.java @@ -0,0 +1,113 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.checks; + +import io.ecocode.ios.antlr.AntlrContext; +import io.ecocode.ios.antlr.ParseTreeItemVisitor; +import io.ecocode.ios.rules.RepositoryRule; +import io.ecocode.ios.rules.RepositoryRuleParser; +import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.sensor.SensorContext; +import org.sonar.api.utils.log.Logger; +import org.sonar.api.utils.log.Loggers; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import static java.lang.String.format; + +public abstract class RuleCheck implements ParseTreeItemVisitor { + + private static final Logger LOGGER = Loggers.get(RuleCheck.class); + + protected String ruleId; + protected String rulesPath; + protected String repositoryKey; + + private class Issue { + protected Issue(String ruleId, int startIndex) { + this.ruleId = ruleId; + this.startIndex = startIndex; + } + protected String ruleId; + protected int startIndex; + } + + private List issues = new ArrayList<>(); + + private static List rules = new ArrayList<>(); + public static RepositoryRule getRepositoryRule(String ruleId, String rulesPath) throws IOException { + if (rules.isEmpty()) { + RepositoryRuleParser repositoryRuleParser = new RepositoryRuleParser(); + rules = repositoryRuleParser.parse(rulesPath); + } + Optional rule = rules.stream().filter(r -> r.getKey().equals(ruleId)).findFirst(); + if (rule.isPresent()) { + return rule.get(); + } else { + return null; + } + } + + protected RuleCheck(String ruleId, String rulesPath, String repositoryKey) { + this.ruleId = ruleId; + this.rulesPath = rulesPath; + this.repositoryKey = repositoryKey; + } + + protected void recordIssue(String ruleId, int startIndex) { + issues.add(new Issue(ruleId, startIndex)); + } + + @Override + public void fillContext(SensorContext context, AntlrContext antlrContext) { + + final InputFile file = antlrContext.getFile(); + if (file == null) { + return; + } + + // Build ReportIssue list + List reportIssues = new ArrayList<>(); + for (Issue i : issues) { + // Compute location + int[] loc = antlrContext.getLineAndColumn(i.startIndex); + // Retrieve rule data + try { + RepositoryRule rule = RuleCheck.getRepositoryRule(i.ruleId, rulesPath); + if (rule != null) { + reportIssues.add(new ReportIssue(i.ruleId, rule.getDescription(), file.toString(), loc[0])); + } else { + LOGGER.warn(format("Failed to identify rule %s", i.ruleId)); + } + + } catch (IOException e) { + LOGGER.warn(format("Failed to identify rule %s", i.ruleId),e); + } + } + + // Record + ReportIssueRecorder recorder = new ReportIssueRecorder(context); + recorder.recordIssues(reportIssues, repositoryKey); + + // Clear issues for next file + issues.clear(); + } +} diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/JSONRulesDefinition.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/JSONRulesDefinition.java new file mode 100644 index 00000000..92791561 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/JSONRulesDefinition.java @@ -0,0 +1,97 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.rules; + +import org.apache.commons.io.IOUtils; +import org.sonar.api.rules.RuleType; +import org.sonar.api.server.rule.RulesDefinition; +import org.sonar.api.utils.log.Logger; +import org.sonar.api.utils.log.Loggers; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.List; + +public abstract class JSONRulesDefinition implements RulesDefinition { + + + private static final Logger LOGGER = Loggers.get(JSONRulesDefinition.class); + + private final String repositoryKey; + private final String repositoryName; + private final String language; + + private final String jsonResourcePath; + + protected JSONRulesDefinition(String repositoryKey, String repositoryName, String language, String jsonResourcePath) { + this.repositoryKey = repositoryKey; + this.repositoryName = repositoryName; + this.language = language; + this.jsonResourcePath = jsonResourcePath; + } + + @Override + public void define(Context context) { + NewRepository repository = context.createRepository(this.repositoryKey, this.language).setName(this.repositoryName); + RepositoryRuleParser repositoryRuleParser = new RepositoryRuleParser(); + try { + List repositoryRules = repositoryRuleParser.parse(jsonResourcePath); + for (RepositoryRule r : repositoryRules) { + + String type = r.getType(); + if (type == null) { + type = "CODE_SMELL"; + LOGGER.warn(String.format("Rule %s has no type, using CODE_SMELL as default", r.getKey())); + } + + String severity = r.getSeverity(); + if (severity == null) { + severity = "MAJOR"; + LOGGER.warn(String.format("Rule %s has no severity, using MAJOR as default", r.getKey())); + } + + // Read description from JSON + // But overrides it .html description of the rule is found in resources + String description = r.getDescription(); + InputStream dis = getClass().getResourceAsStream(String.format("/%s.html", r.getKey())); + if (dis != null) { + description = IOUtils.toString(dis, StandardCharsets.UTF_8); + } + + NewRule nr = repository.createRule(r.getKey()) + .setName(r.getName()) + .setSeverity(severity) + .setType(RuleType.valueOf(type)) + .setTags(r.getTags().toArray(new String[0])) + .setHtmlDescription(description); + + if (r.getDebt() != null) { + nr.setDebtRemediationFunction(nr.debtRemediationFunctions().constantPerIssue(r.getDebt().getOffset())); + } else { + LOGGER.warn(String.format("Rule %s has no debt information", r.getKey())); + } + + } + } catch (IOException e) { + LOGGER.error(String.format("Failed to load %s rules", this.repositoryName), e); + } + + repository.done(); + } +} diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/RepositoryRule.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/RepositoryRule.java new file mode 100644 index 00000000..b1abbfa3 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/RepositoryRule.java @@ -0,0 +1,68 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.rules; + +import java.util.List; + +public final class RepositoryRule { + + private final String key; + private final String name; + private final String severity; + private final String description; + private final String type; + private final RepositoryRuleDebt debt; + + private final List tags; + + public RepositoryRule(final String key, final String name, final String severity, final String description, final String type, final RepositoryRuleDebt debt, final List tags) { + this.key = key; + this.name = name; + this.severity = severity; + this.description = description; + this.type = type; + this.debt = debt; + this.tags = tags; + } + + public String getKey() { + return key; + } + + public String getName() { + return name; + } + + public String getSeverity() { + return severity; + } + + public String getDescription() { + return description; + } + + public String getType() { + return type; + } + + public RepositoryRuleDebt getDebt() { + return debt; + } + + public List getTags() {return tags;} +} diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/RepositoryRuleDebt.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/RepositoryRuleDebt.java new file mode 100644 index 00000000..e65f074b --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/RepositoryRuleDebt.java @@ -0,0 +1,37 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.rules; + +public final class RepositoryRuleDebt { + + private final String function; + private final String offset; + + public RepositoryRuleDebt(final String function, final String offset) { + this.function = function; + this.offset = offset; + } + + public String getFunction() { + return function; + } + + public String getOffset() { + return offset; + } +} diff --git a/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/RepositoryRuleParser.java b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/RepositoryRuleParser.java new file mode 100644 index 00000000..cc1452d5 --- /dev/null +++ b/ios-plugin/commons-ios/src/main/java/io/ecocode/ios/rules/RepositoryRuleParser.java @@ -0,0 +1,62 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.rules; + +import org.sonarsource.analyzer.commons.internal.json.simple.JSONArray; +import org.sonarsource.analyzer.commons.internal.json.simple.JSONObject; +import org.sonarsource.analyzer.commons.internal.json.simple.JSONValue; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +public class RepositoryRuleParser { + + public List parse(String resourceName) throws IOException { + InputStream is = getClass().getResourceAsStream(resourceName); + if (is == null) { + throw new IOException(String.format("JSON rule file not found in resources at %s", resourceName)); + } + Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8); + List repositoryRules = new ArrayList<>(); + JSONArray jsonRules = (JSONArray) JSONValue.parse(reader); + if (jsonRules != null) { + for (Object obj : jsonRules) { + JSONObject jsonRule = (JSONObject) obj; + JSONObject jsonDebt = (JSONObject) jsonRule.get("debt"); + RepositoryRuleDebt debt = null; + if (jsonDebt != null) { + debt = new RepositoryRuleDebt((String) jsonDebt.get("function"), (String) jsonDebt.get("offset")); + } + RepositoryRule repositoryRule = new RepositoryRule( + (String) jsonRule.get("key"), + (String) jsonRule.get("name"), + (String) jsonRule.get("severity"), + (String) jsonRule.get("description"), + (String) jsonRule.get("type"), + debt, (List)jsonRule.get("tags")); + repositoryRules.add(repositoryRule); + } + } + return repositoryRules; + } +} diff --git a/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/antlr/AntlrContextTest.java b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/antlr/AntlrContextTest.java new file mode 100644 index 00000000..20bbf2e5 --- /dev/null +++ b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/antlr/AntlrContextTest.java @@ -0,0 +1,58 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.antlr; + +import org.apache.commons.io.IOUtils; +import org.junit.Test; +import org.sonar.api.batch.fs.InputFile; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; + +import static org.assertj.core.api.Assertions.assertThat; + +public class AntlrContextTest { + + @Test + public void loadFromStreams() throws IOException { + + AntlrContext context = new AntlrContext() { + @Override + public void loadFromStreams(InputFile inputFile, InputStream file, InputStream linesStream, Charset charset) throws IOException { + + SourceLine[] lines = new SourceLine[1]; + lines[0] = new SourceLine(0, 0, 0, 0); + this.setLines(lines); + this.setRoot(null); + this.setStream(null); + this.setFile(null); + } + }; + + // Load an empty content as loadFromStreams is mocked in test + context.loadFromStreams(null, IOUtils.toInputStream("", Charset.defaultCharset()), + IOUtils.toInputStream("", Charset.defaultCharset()), Charset.defaultCharset()); + + assertThat(context.getLines()).hasSize(1); + assertThat(context.getRoot()).isNull(); + assertThat(context.getStream()).isNull(); + assertThat(context.getFile()).isNull(); + + } +} diff --git a/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/antlr/SourceLinesProviderTest.java b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/antlr/SourceLinesProviderTest.java new file mode 100644 index 00000000..2e47ffe9 --- /dev/null +++ b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/antlr/SourceLinesProviderTest.java @@ -0,0 +1,36 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.antlr; + +import org.junit.Test; +import java.nio.charset.Charset; +import static org.assertj.core.api.Assertions.assertThat; + +public class SourceLinesProviderTest { + + private static final String MAIN_SRC = "/antlr/main.swift"; + + @Test + public void getLines() { + + + SourceLinesProvider provider = new SourceLinesProvider(); + SourceLine[] lines = provider.getLines(this.getClass().getResourceAsStream(MAIN_SRC), Charset.defaultCharset()); + assertThat(lines).hasSize(6); + } +} diff --git a/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/checks/RuleCheckTest.java b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/checks/RuleCheckTest.java new file mode 100644 index 00000000..a98e7372 --- /dev/null +++ b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/checks/RuleCheckTest.java @@ -0,0 +1,83 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.checks; + +import io.ecocode.ios.antlr.AntlrContext; +import org.antlr.v4.runtime.tree.ParseTree; +import org.junit.Test; +import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.fs.internal.TestInputFileBuilder; +import org.sonar.api.batch.sensor.internal.SensorContextTester; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +public class RuleCheckTest { + + private static final String TEST_ROOT = "src/test/resources"; + private static final int LINE_COUNT = 100; + + @Test + public void fillContext() { + + AntlrContext antlrContext = new AntlrContext() { + @Override + public void loadFromStreams(InputFile inputFile, InputStream file, InputStream linesStream, Charset charset) throws IOException { + } + + @Override + public InputFile getFile() { + return new TestInputFileBuilder("", "main.swift") + .setType(InputFile.Type.MAIN) + .setLines(LINE_COUNT) + .setOriginalLineEndOffsets(new int[LINE_COUNT]) + .setOriginalLineStartOffsets(new int[LINE_COUNT]) + .setModuleBaseDir(Paths.get(TEST_ROOT)) + .setLanguage("swift").build(); + } + + @Override + public int[] getLineAndColumn(int global) { + return new int[] {1, 1}; + } + }; + + RuleCheck ruleCheck = new RuleCheck("rule1", "/rules/rules.json", "repositoryKey") { + + @Override + public void apply(ParseTree tree) { + this.recordIssue(this.ruleId, 0); + } + }; + + + ruleCheck.apply(null); + + SensorContextTester sensorContext = SensorContextTester.create(new File(TEST_ROOT)); + sensorContext.fileSystem().add(antlrContext.getFile()); + ruleCheck.fillContext(sensorContext, antlrContext); + + assertThat(sensorContext.allIssues()).hasSize(1); + + } +} diff --git a/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/JSONRulesDefinitionTest.java b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/JSONRulesDefinitionTest.java new file mode 100644 index 00000000..25804455 --- /dev/null +++ b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/JSONRulesDefinitionTest.java @@ -0,0 +1,47 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.rules; + +import io.ecocode.ios.rules.JSONRulesDefinition; +import org.junit.Test; +import org.sonar.api.server.rule.RulesDefinition; + +import static org.assertj.core.api.Assertions.assertThat; + +public class JSONRulesDefinitionTest { + + @Test + public void define() { + + JSONRulesDefinition rulesDefinition = new JSONRulesDefinition("rep_key", "rep_name", "lang", "/rules/rules.json") {}; + + + RulesDefinition.Context context = new RulesDefinition.Context(); + rulesDefinition.define(context); + + RulesDefinition.Repository repository = context.repository("rep_key"); + assertThat(repository).isNotNull(); + assertThat(repository.name()).isEqualTo("rep_name"); + assertThat(repository.language()).isEqualTo("lang"); + assertThat(repository.rules()).isNotEmpty(); + assertThat(repository.rules().get(0).tags()).isNotEmpty(); + assertThat(repository.rules().get(0).htmlDescription()).isEqualTo("

Test description from HTML file

"); + assertThat(repository.rules().get(1).htmlDescription()).isEqualTo("This is rule 2."); + + } +} diff --git a/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/ReportIssueRecorderTest.java b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/ReportIssueRecorderTest.java new file mode 100644 index 00000000..8e2a57e0 --- /dev/null +++ b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/ReportIssueRecorderTest.java @@ -0,0 +1,61 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.rules; + +import io.ecocode.ios.checks.ReportIssue; +import io.ecocode.ios.checks.ReportIssueRecorder; +import org.junit.Test; +import org.sonar.api.batch.fs.internal.DefaultInputFile; +import org.sonar.api.batch.fs.internal.TestInputFileBuilder; +import org.sonar.api.batch.sensor.internal.SensorContextTester; + +import java.io.File; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Java6Assertions.assertThat; + +public class ReportIssueRecorderTest { + + private static final String TEST_ROOT = "src/test/resources"; + private static final String TEST_FILENAME = "swift/main.swift"; + + @Test + public void recordIssues() { + + SensorContextTester context = SensorContextTester.create(new File(TEST_ROOT)); + DefaultInputFile testFile = new TestInputFileBuilder("", TEST_FILENAME) + .setLanguage("swift") + .setLines(10) + .setOriginalLineEndOffsets(new int[10]) + .setOriginalLineStartOffsets(new int[10]) + .setModuleBaseDir(Paths.get(TEST_ROOT)) + .build(); + context.fileSystem().add(testFile); + + List issues = new ArrayList<>(); + issues.add(new ReportIssue("ruleId", "message", testFile.path().toString(), 3)); + + ReportIssueRecorder recorder = new ReportIssueRecorder(context); + recorder.recordIssues(issues, "TestRepo"); + + assertThat(context.allIssues()).hasSize(1); + + } +} diff --git a/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/ReportIssueTest.java b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/ReportIssueTest.java new file mode 100644 index 00000000..3f0fb3d7 --- /dev/null +++ b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/ReportIssueTest.java @@ -0,0 +1,42 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.rules; + +import io.ecocode.ios.checks.ReportIssue; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ReportIssueTest { + + @Test + public void equals() { + ReportIssue issue1 = new ReportIssue("1", "msg", "/test/path", 20); + ReportIssue issue2 = new ReportIssue("1", "msg", "/test/path", 20); + + assertThat(issue1).isEqualTo(issue2); + } + + @Test + public void notEqual() { + ReportIssue issue1 = new ReportIssue("1", "msg", "/test/path", 20); + ReportIssue issue2 = new ReportIssue("2", "msg", "/test/path", 20); + + assertThat(issue1).isNotEqualTo(issue2); + } +} diff --git a/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/RepositoryRuleParserTest.java b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/RepositoryRuleParserTest.java new file mode 100644 index 00000000..24ee0f42 --- /dev/null +++ b/ios-plugin/commons-ios/src/test/java/io/ecocode/ios/rules/RepositoryRuleParserTest.java @@ -0,0 +1,60 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.rules; + +import io.ecocode.ios.rules.RepositoryRule; +import io.ecocode.ios.rules.RepositoryRuleParser; +import org.junit.Test; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class RepositoryRuleParserTest { + + @Test + public void parse() throws Throwable { + + RepositoryRuleParser parser = new RepositoryRuleParser(); + List repositoryRules = parser.parse("/rules/rules.json"); + assertThat(repositoryRules).hasSize(2); + + RepositoryRule repositoryRule1 = repositoryRules.get(0); + assertThat(repositoryRule1.getKey()).isEqualTo("rule1"); + assertThat(repositoryRule1.getName()).isEqualTo("Rule 1"); + assertThat(repositoryRule1.getDescription()).isEqualTo("This is rule 1."); + assertThat(repositoryRule1.getSeverity()).isEqualTo("MINOR"); + assertThat(repositoryRule1.getDebt()).isNotNull(); + assertThat(repositoryRule1.getDebt().getFunction()).isEqualTo("CONSTANT_ISSUE"); + assertThat(repositoryRule1.getDebt().getOffset()).isEqualTo("5min"); + assertThat(repositoryRule1.getTags()).hasSize(2); + assertThat(repositoryRule1.getTags().get(0)).isEqualTo("tag1"); + assertThat(repositoryRule1.getTags().get(1)).isEqualTo("tag2"); + + RepositoryRule repositoryRule2 = repositoryRules.get(1); + assertThat(repositoryRule2.getKey()).isEqualTo("rule2"); + assertThat(repositoryRule2.getName()).isEqualTo("Rule 2"); + assertThat(repositoryRule2.getDescription()).isEqualTo("This is rule 2."); + assertThat(repositoryRule2.getSeverity()).isEqualTo("MAJOR"); + assertThat(repositoryRule2.getDebt()).isNotNull(); + assertThat(repositoryRule2.getDebt().getFunction()).isEqualTo("CONSTANT_ISSUE"); + assertThat(repositoryRule2.getDebt().getOffset()).isEqualTo("15min"); + assertThat(repositoryRule2.getTags()).hasSize(1); + assertThat(repositoryRule2.getTags().get(0)).isEqualTo("tag1"); + } +} diff --git a/ios-plugin/commons-ios/src/test/resources/antlr/main.swift b/ios-plugin/commons-ios/src/test/resources/antlr/main.swift new file mode 100644 index 00000000..d1b6be4c --- /dev/null +++ b/ios-plugin/commons-ios/src/test/resources/antlr/main.swift @@ -0,0 +1,6 @@ +@main +struct App { + static func main() { + print("Starting.") + } +} \ No newline at end of file diff --git a/ios-plugin/commons-ios/src/test/resources/rule1.html b/ios-plugin/commons-ios/src/test/resources/rule1.html new file mode 100644 index 00000000..de83f7f6 --- /dev/null +++ b/ios-plugin/commons-ios/src/test/resources/rule1.html @@ -0,0 +1 @@ +

Test description from HTML file

\ No newline at end of file diff --git a/ios-plugin/commons-ios/src/test/resources/rules/rules.json b/ios-plugin/commons-ios/src/test/resources/rules/rules.json new file mode 100644 index 00000000..7cba46dc --- /dev/null +++ b/ios-plugin/commons-ios/src/test/resources/rules/rules.json @@ -0,0 +1,29 @@ +[ + { + "key": "rule1", + "name": "Rule 1", + "severity": "MINOR", + "description": "This is rule 1.", + "debt": { + "function": "CONSTANT_ISSUE", + "offset": "5min" + }, + "tags": [ + "tag1", + "tag2" + ] + }, + { + "key": "rule2", + "name": "Rule 2", + "severity": "MAJOR", + "description": "This is rule 2.", + "debt": { + "function": "CONSTANT_ISSUE", + "offset": "15min" + }, + "tags": [ + "tag1" + ] + } +] diff --git a/ios-plugin/docker-compose.yml b/ios-plugin/docker-compose.yml new file mode 100644 index 00000000..20ee4878 --- /dev/null +++ b/ios-plugin/docker-compose.yml @@ -0,0 +1,45 @@ +version: "3.3" +services: + sonar: + build: + dockerfile: Dockerfile + ports: + - "9000:9000" + networks: + - sonarnet + depends_on: + - db + environment: + SONAR_JDBC_USERNAME: sonar + SONAR_JDBC_PASSWORD: sonar + SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonarqube + SONAR_ES_BOOTSTRAP_CHECKS_DISABLE: 'true' + volumes: + - type: bind + source: ./sonar-ios-plugin/target/ecodecode-sonar-ios-plugin-0.1.1-SNAPSHOT.jar + target: /opt/sonarqube/extensions/plugins/ecodecode-sonar-ios-plugin-0.1.1-SNAPSHOT.jar + - "logs:/opt/sonarqube/logs" + - "data:/opt/sonarqube/data" + + db: + image: postgres:12 + container_name: postgresql + networks: + - sonarnet + volumes: + - pg_data:/var/lib/postgresql/data + environment: + POSTGRES_USER: sonar + POSTGRES_PASSWORD: sonar + POSTGRES_DB: sonarqube + PGDATA: pg_data:/var/lib/postgresql/data/pgdata + +networks: + sonarnet: + driver: bridge + +volumes: + data: + logs: + extensions: + pg_data: \ No newline at end of file diff --git a/ios-plugin/docs/logoInsideApp.jpg b/ios-plugin/docs/logoInsideApp.jpg new file mode 100644 index 00000000..0081d738 Binary files /dev/null and b/ios-plugin/docs/logoInsideApp.jpg differ diff --git a/ios-plugin/pom.xml b/ios-plugin/pom.xml new file mode 100644 index 00000000..6b612924 --- /dev/null +++ b/ios-plugin/pom.xml @@ -0,0 +1,174 @@ + + + 4.0.0 + + + io.ecocode + ecocode-mobile-parent + 0.1.1-SNAPSHOT + + + ios-plugin + pom + + ecoCode iOS plugin + Help the earth, adopt this green plugin for your applications + https://github.com/cnumr/ecoCode + 2022 + + + swift-lang + commons-ios + sonar-ios-plugin + + + + + GNU LGPL 3 + http://www.gnu.org/licenses/lgpl.txt + repo + + + + + + 1.21 + 2.6 + 0.1.2 + 4.10 + 4.4.0 + + + + + + org.sonarsource.sonarqube + sonar-plugin-api + provided + + + + + org.sonarsource.sonarqube + sonar-plugin-api-impl + + + + org.sonarsource.analyzer-commons + sonar-analyzer-commons + + + + org.sonarsource.analyzer-commons + sonar-xml-parsing + ${sonar.analyzerCommons.version} + + + + commons-io + commons-io + ${sonar.apacheCommons.version} + + + + org.antlr + antlr4-runtime + ${antlr.version} + + + + + + org.sonarsource.sonarqube + sonar-testing-harness + ${sonarqube.version} + test + + + org.sonarsource.sslr + sslr-testing-harness + ${sslr.version} + test + + + junit + junit + test + + + org.assertj + assertj-core + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + + + + + + + + + org.jacoco + jacoco-maven-plugin + + + **/generated/** + + + + + prepare-agent + + prepare-agent + + + + report + + report + + + + + + + com.mycila + license-maven-plugin + 4.1 + + + ecoCode iOS plugin + https://www.ecocode.io/ + + + +
com/mycila/maven/plugin/license/templates/LGPL-3.txt
+ + **/*.java + +
+
+
+ + + validate + + check + + validate + + +
+ +
+
+ +
diff --git a/ios-plugin/sonar-ios-plugin/pom.xml b/ios-plugin/sonar-ios-plugin/pom.xml new file mode 100644 index 00000000..26c1f440 --- /dev/null +++ b/ios-plugin/sonar-ios-plugin/pom.xml @@ -0,0 +1,47 @@ + + + + io.ecocode + ios-plugin + 0.1.1-SNAPSHOT + + 4.0.0 + + ecodecode-sonar-ios-plugin + + sonar-plugin + + + + + io.ecocode + ecocode-swift-lang + ${project.version} + + + + + + + + + + org.sonarsource.sonar-packaging-maven-plugin + sonar-packaging-maven-plugin + true + + ${project.artifactId} + ${project.name} + io.ecocode.ios.EcoCodeIOSPlugin + ${sonarqube.version} + false + ${java.version} + + + + + + + + \ No newline at end of file diff --git a/ios-plugin/sonar-ios-plugin/src/main/java/io/ecocode/ios/EcoCodeIOSPlugin.java b/ios-plugin/sonar-ios-plugin/src/main/java/io/ecocode/ios/EcoCodeIOSPlugin.java new file mode 100644 index 00000000..6c7200db --- /dev/null +++ b/ios-plugin/sonar-ios-plugin/src/main/java/io/ecocode/ios/EcoCodeIOSPlugin.java @@ -0,0 +1,32 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios; + +import io.ecocode.ios.swift.EcoCodeSwiftProfile; +import io.ecocode.ios.swift.EcoCodeSwiftRulesDefinition; +import io.ecocode.ios.swift.SwiftSensor; +import org.sonar.api.Plugin; + +public class EcoCodeIOSPlugin implements Plugin { + + @Override + public void define(Context context) { + + context.addExtensions(SwiftSensor.class, EcoCodeSwiftProfile.class, EcoCodeSwiftRulesDefinition.class); + } +} diff --git a/ios-plugin/swift-lang/pom.xml b/ios-plugin/swift-lang/pom.xml new file mode 100644 index 00000000..32a3fc37 --- /dev/null +++ b/ios-plugin/swift-lang/pom.xml @@ -0,0 +1,21 @@ + + + io.ecocode + ios-plugin + 0.1.1-SNAPSHOT + + 4.0.0 + + ecocode-swift-lang + + + + + io.ecocode + ecocode-commons-ios + ${project.version} + + + + + \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftProfile.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftProfile.java new file mode 100644 index 00000000..faccf779 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftProfile.java @@ -0,0 +1,30 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift; + +import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition; +import org.sonarsource.analyzer.commons.BuiltInQualityProfileJsonLoader; + +public class EcoCodeSwiftProfile implements BuiltInQualityProfilesDefinition { + @Override + public void define(Context context) { + NewBuiltInQualityProfile ecoCodeProfile = context.createBuiltInQualityProfile(Swift.PROFILE_NAME, Swift.KEY); + BuiltInQualityProfileJsonLoader.load(ecoCodeProfile, Swift.REPOSITORY_KEY, Swift.PROFILE_PATH); + ecoCodeProfile.done(); + } +} diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftRulesDefinition.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftRulesDefinition.java new file mode 100644 index 00000000..095a0865 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftRulesDefinition.java @@ -0,0 +1,27 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift; + +import io.ecocode.ios.rules.JSONRulesDefinition; + +public class EcoCodeSwiftRulesDefinition extends JSONRulesDefinition { + + public EcoCodeSwiftRulesDefinition() { + super(Swift.REPOSITORY_KEY, Swift.REPOSITORY_NAME, Swift.KEY, Swift.RULES_PATH); + } +} diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftVisitor.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftVisitor.java new file mode 100644 index 00000000..617d1f1b --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/EcoCodeSwiftVisitor.java @@ -0,0 +1,54 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift; + +import io.ecocode.ios.antlr.AntlrContext; +import io.ecocode.ios.antlr.ParseTreeItemVisitor; +import io.ecocode.ios.checks.RuleCheck; +import io.ecocode.ios.swift.checks.idleness.IdleTimerDisabledCheck; +import org.antlr.v4.runtime.tree.ParseTree; +import org.sonar.api.batch.sensor.SensorContext; + +import java.util.ArrayList; +import java.util.List; + +public class EcoCodeSwiftVisitor implements ParseTreeItemVisitor { + + private List checks = new ArrayList<>(); + + public EcoCodeSwiftVisitor() { + + // Load checks + checks.add(new IdleTimerDisabledCheck()); + + } + + @Override + public void apply(ParseTree tree) { + for (RuleCheck check : checks) { + check.apply(tree); + } + } + + @Override + public void fillContext(SensorContext context, AntlrContext antlrContext) { + for (RuleCheck check : checks) { + check.fillContext(context, antlrContext); + } + } +} diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/Swift.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/Swift.java new file mode 100644 index 00000000..6cac095b --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/Swift.java @@ -0,0 +1,32 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift; + +public final class Swift { + + private Swift() {} + + public static final String KEY = "swift"; + public static final String PROFILE_NAME = "ecoCode"; + public static final String REPOSITORY_NAME = "ecoCode"; + public static final String REPOSITORY_KEY = "ecoCode-swift"; + public static final String PROFILE_PATH = "ecocode_swift_profile.json"; + + public static final String RULES_PATH = "/ecocode-swift-rules.json"; + +} diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/SwiftSensor.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/SwiftSensor.java new file mode 100644 index 00000000..98e57973 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/SwiftSensor.java @@ -0,0 +1,44 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift; + +import io.ecocode.ios.swift.antlr.ParseTreeAnalyzer; +import io.ecocode.ios.swift.antlr.SwiftAntlrContext; +import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.sensor.Sensor; +import org.sonar.api.batch.sensor.SensorContext; +import org.sonar.api.batch.sensor.SensorDescriptor; + +public class SwiftSensor implements Sensor { + + @Override + public void describe(SensorDescriptor sensorDescriptor) { + sensorDescriptor + .onlyOnLanguage(Swift.KEY) + .name("ecoCode Swift Sensor") + .onlyOnFileType(InputFile.Type.MAIN); + } + + @Override + public void execute(SensorContext sensorContext) { + final SwiftAntlrContext antlrContext = new SwiftAntlrContext(); + // Analyse source files + new ParseTreeAnalyzer(Swift.KEY, InputFile.Type.MAIN, antlrContext, sensorContext) + .analyze(new EcoCodeSwiftVisitor()); + } +} diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/CustomTreeVisitor.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/CustomTreeVisitor.java new file mode 100644 index 00000000..90cb4eba --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/CustomTreeVisitor.java @@ -0,0 +1,62 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.antlr; + +import io.ecocode.ios.antlr.AntlrContext; +import io.ecocode.ios.antlr.ParseTreeItemVisitor; +import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor; +import org.antlr.v4.runtime.tree.ParseTree; +import org.sonar.api.batch.sensor.SensorContext; + +public class CustomTreeVisitor extends AbstractParseTreeVisitor implements ParseTreeItemVisitor { + + private final ParseTreeItemVisitor[] visitors; + + public CustomTreeVisitor(final ParseTreeItemVisitor... visitors) { + this.visitors = visitors; + } + + @Override + public Object visit(final ParseTree tree) { + + final int n = tree.getChildCount(); + + for (int i = 0; i < n; i++) { + final ParseTree c = tree.getChild(i); + visit(c); + } + for (final ParseTreeItemVisitor visitor : this.visitors) { + visitor.apply(tree); + } + + return null; + } + + @Override + public void fillContext(SensorContext context, AntlrContext antlrContext) { + this.apply(antlrContext.getRoot()); + for (final ParseTreeItemVisitor visitor : this.visitors) { + visitor.fillContext(context, antlrContext); + } + } + + @Override + public void apply(ParseTree tree) { + this.visit(tree); + } +} diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/ParseTreeAnalyzer.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/ParseTreeAnalyzer.java new file mode 100644 index 00000000..f11369e1 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/ParseTreeAnalyzer.java @@ -0,0 +1,69 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.antlr; + +import io.ecocode.ios.antlr.AntlrContext; +import io.ecocode.ios.antlr.ParseTreeItemVisitor; +import org.sonar.api.batch.fs.FilePredicate; +import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.fs.InputFile.Type; +import org.sonar.api.batch.sensor.SensorContext; +import org.sonar.api.utils.log.Logger; +import org.sonar.api.utils.log.Loggers; + +import java.io.IOException; +import java.nio.charset.Charset; + +public class ParseTreeAnalyzer { + + private static final Logger LOGGER = Loggers.get(ParseTreeAnalyzer.class); + + private final String languageKey; + private final Type type; + private final AntlrContext antlrContext; + private final SensorContext sensorContext; + + public ParseTreeAnalyzer(String languageKey, Type type, AntlrContext antlrContext, SensorContext sensorContext) { + this.languageKey = languageKey; + this.type = type; + this.antlrContext = antlrContext; + this.sensorContext = sensorContext; + } + + public void analyze(final ParseTreeItemVisitor... visitors) { + + FilePredicate hasLang = sensorContext.fileSystem().predicates().hasLanguage(languageKey); + FilePredicate hasType = sensorContext.fileSystem().predicates().hasType(type); + FilePredicate langAndType = sensorContext.fileSystem().predicates().and(hasLang, hasType); + final Charset charset = sensorContext.fileSystem().encoding(); + + for (InputFile inf : sensorContext.fileSystem().inputFiles(langAndType)) { + + // Visit source files + try { + antlrContext.loadFromFile(inf, charset); + ParseTreeItemVisitor visitor = new CustomTreeVisitor(visitors); + visitor.fillContext(sensorContext, antlrContext); + } catch (IOException e) { + LOGGER.warn("Unexpected error while analyzing file " + inf.filename(), e); + } + + } + + } +} diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/SwiftAntlrContext.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/SwiftAntlrContext.java new file mode 100644 index 00000000..d5f7b956 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/SwiftAntlrContext.java @@ -0,0 +1,55 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.antlr; + +import io.ecocode.ios.antlr.AntlrContext; +import io.ecocode.ios.antlr.SourceLine; +import io.ecocode.ios.antlr.SourceLinesProvider; +import io.ecocode.ios.swift.antlr.generated.Swift5Lexer; +import io.ecocode.ios.swift.antlr.generated.Swift5Parser; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CharStreams; +import org.antlr.v4.runtime.CommonTokenStream; +import org.sonar.api.batch.fs.InputFile; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; + +public class SwiftAntlrContext extends AntlrContext { + + @Override + public void loadFromStreams(InputFile inputFile, InputStream file, InputStream linesStream, Charset charset) throws IOException { + final SourceLinesProvider linesProvider = new SourceLinesProvider(); + final CharStream charStream = CharStreams.fromStream(file, charset); + final Swift5Lexer lexer = new Swift5Lexer(charStream); + lexer.removeErrorListeners(); + final CommonTokenStream stream = new CommonTokenStream(lexer); + stream.fill(); + final Swift5Parser parser = new Swift5Parser(stream); + parser.removeErrorListeners(); + final Swift5Parser.Top_levelContext root = parser.top_level(); + final SourceLine[] lines = linesProvider.getLines(linesStream, charset); + + this.setFile(inputFile); + this.setStream(stream); + this.setLines(lines); + this.setRoot(root); + } + +} diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Lexer.interp b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Lexer.interp new file mode 100644 index 00000000..431c501c --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Lexer.interp @@ -0,0 +1,633 @@ +token literal names: +null +'as' +'alpha' +'break' +'case' +'catch' +'class' +'continue' +'default' +'defer' +'do' +'guard' +'else' +'enum' +'for' +'fallthrough' +'func' +'in' +'if' +'import' +'internal' +'final' +'open' +'private' +'public' +'where' +'while' +'let' +'var' +'protocol' +'get' +'set' +'willSet' +'didSet' +'repeat' +'switch' +'struct' +'return' +'throw' +'throws' +'rethrows' +'indirect' +'init' +'deinit' +'associatedtype' +'extension' +'subscript' +'prefix' +'infix' +'left' +'right' +'none' +'precedencegroup' +'higherThan' +'lowerThan' +'assignment' +'associativity' +'postfix' +'operator' +'typealias' +'os' +'arch' +'swift' +'compiler' +'canImport' +'targetEnvironment' +'convenience' +'dynamic' +'lazy' +'optional' +'override' +'required' +'static' +'weak' +'unowned' +'safe' +'unsafe' +'mutating' +'nonmutating' +'fileprivate' +'is' +'try' +'super' +'Any' +'false' +'red' +'blue' +'green' +'resourceName' +'true' +'nil' +'inout' +'some' +'Type' +'precedence' +'self' +'Self' +'macOS' +'iOS' +'OSX' +'watchOS' +'tvOS' +'Linux' +'Windows' +'i386' +'x86_64' +'arm' +'arm64' +'simulator' +'macCatalyst' +'iOSApplicationExtension' +'macCatalystApplicationExtension' +'macOSApplicationExtension' +'#sourceLocation' +'file' +'line' +'#error' +'#warning' +'#available' +'#if' +'#elseif' +'#else' +'#endif' +'#file' +'#fileID' +'#filePath' +'#line' +'#column' +'#function' +'#dsohandle' +'#selector' +'#keyPath' +'#colorLiteral' +'#fileLiteral' +'#imageLiteral' +'getter' +'setter' +null +'.' +'{' +'(' +'[' +'}' +')' +']' +',' +':' +';' +'<' +'>' +'_' +'!' +'?' +'@' +'&' +'-' +'=' +'|' +'/' +'+' +'*' +'%' +'^' +'~' +'#' +'`' +'$' +'\\' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +AS +ALPHA +BREAK +CASE +CATCH +CLASS +CONTINUE +DEFAULT +DEFER +DO +GUARD +ELSE +ENUM +FOR +FALLTHROUGH +FUNC +IN +IF +IMPORT +INTERNAL +FINAL +OPEN +PRIVATE +PUBLIC +WHERE +WHILE +LET +VAR +PROTOCOL +GET +SET +WILL_SET +DID_SET +REPEAT +SWITCH +STRUCT +RETURN +THROW +THROWS +RETHROWS +INDIRECT +INIT +DEINIT +ASSOCIATED_TYPE +EXTENSION +SUBSCRIPT +PREFIX +INFIX +LEFT +RIGHT +NONE +PRECEDENCE_GROUP +HIGHER_THAN +LOWER_THAN +ASSIGNMENT +ASSOCIATIVITY +POSTFIX +OPERATOR +TYPEALIAS +OS +ARCH +SWIFT +COMPILER +CAN_IMPORT +TARGET_ENVIRONMENT +CONVENIENCE +DYNAMIC +LAZY +OPTIONAL +OVERRIDE +REQUIRED +STATIC +WEAK +UNOWNED +SAFE +UNSAFE +MUTATING +NONMUTATING +FILE_PRIVATE +IS +TRY +SUPER +ANY +FALSE +RED +BLUE +GREEN +RESOURCE_NAME +TRUE +NIL +INOUT +SOME +TYPE +PRECEDENCE +SELF +SELF_BIG +MAC_OS +I_OS +OSX +WATCH_OS +TV_OS +LINUX +WINDOWS +I386 +X86_64 +ARM +ARM64 +SIMULATOR +MAC_CATALYST +I_OS_APPLICATION_EXTENSION +MAC_CATALYST_APPLICATION_EXTENSION +MAC_OS_APPLICATION_EXTENSION +SOURCE_LOCATION +FILE +LINE +ERROR +WARNING +AVAILABLE +HASH_IF +HASH_ELSEIF +HASH_ELSE +HASH_ENDIF +HASH_FILE +HASH_FILE_ID +HASH_FILE_PATH +HASH_LINE +HASH_COLUMN +HASH_FUNCTION +HASH_DSO_HANDLE +HASH_SELECTOR +HASH_KEYPATH +HASH_COLOR_LITERAL +HASH_FILE_LITERAL +HASH_IMAGE_LITERAL +GETTER +SETTER +Identifier +DOT +LCURLY +LPAREN +LBRACK +RCURLY +RPAREN +RBRACK +COMMA +COLON +SEMI +LT +GT +UNDERSCORE +BANG +QUESTION +AT +AND +SUB +EQUAL +OR +DIV +ADD +MUL +MOD +CARET +TILDE +HASH +BACKTICK +DOLLAR +BACKSLASH +Operator_head_other +Operator_following_character +Binary_literal +Octal_literal +Decimal_digits +Decimal_literal +Hexadecimal_literal +Floating_point_literal +WS +HASHBANG +Block_comment +Line_comment +Multi_line_extended_string_open +Single_line_extended_string_open +Multi_line_string_open +Single_line_string_open +Interpolataion_single_line +Single_line_string_close +Quoted_single_line_text +Interpolataion_multi_line +Multi_line_string_close +Quoted_multi_line_text +Single_line_extended_string_close +Quoted_single_line_extended_text +Multi_line_extended_string_close +Quoted_multi_line_extended_text + +rule names: +AS +ALPHA +BREAK +CASE +CATCH +CLASS +CONTINUE +DEFAULT +DEFER +DO +GUARD +ELSE +ENUM +FOR +FALLTHROUGH +FUNC +IN +IF +IMPORT +INTERNAL +FINAL +OPEN +PRIVATE +PUBLIC +WHERE +WHILE +LET +VAR +PROTOCOL +GET +SET +WILL_SET +DID_SET +REPEAT +SWITCH +STRUCT +RETURN +THROW +THROWS +RETHROWS +INDIRECT +INIT +DEINIT +ASSOCIATED_TYPE +EXTENSION +SUBSCRIPT +PREFIX +INFIX +LEFT +RIGHT +NONE +PRECEDENCE_GROUP +HIGHER_THAN +LOWER_THAN +ASSIGNMENT +ASSOCIATIVITY +POSTFIX +OPERATOR +TYPEALIAS +OS +ARCH +SWIFT +COMPILER +CAN_IMPORT +TARGET_ENVIRONMENT +CONVENIENCE +DYNAMIC +LAZY +OPTIONAL +OVERRIDE +REQUIRED +STATIC +WEAK +UNOWNED +SAFE +UNSAFE +MUTATING +NONMUTATING +FILE_PRIVATE +IS +TRY +SUPER +ANY +FALSE +RED +BLUE +GREEN +RESOURCE_NAME +TRUE +NIL +INOUT +SOME +TYPE +PRECEDENCE +SELF +SELF_BIG +MAC_OS +I_OS +OSX +WATCH_OS +TV_OS +LINUX +WINDOWS +I386 +X86_64 +ARM +ARM64 +SIMULATOR +MAC_CATALYST +I_OS_APPLICATION_EXTENSION +MAC_CATALYST_APPLICATION_EXTENSION +MAC_OS_APPLICATION_EXTENSION +SOURCE_LOCATION +FILE +LINE +ERROR +WARNING +AVAILABLE +HASH_IF +HASH_ELSEIF +HASH_ELSE +HASH_ENDIF +HASH_FILE +HASH_FILE_ID +HASH_FILE_PATH +HASH_LINE +HASH_COLUMN +HASH_FUNCTION +HASH_DSO_HANDLE +HASH_SELECTOR +HASH_KEYPATH +HASH_COLOR_LITERAL +HASH_FILE_LITERAL +HASH_IMAGE_LITERAL +GETTER +SETTER +Identifier +Identifier_head +Identifier_character +Identifier_characters +Implicit_parameter_name +Property_wrapper_projection +DOT +LCURLY +LPAREN +LBRACK +RCURLY +RPAREN +RBRACK +COMMA +COLON +SEMI +LT +GT +UNDERSCORE +BANG +QUESTION +AT +AND +SUB +EQUAL +OR +DIV +ADD +MUL +MOD +CARET +TILDE +HASH +BACKTICK +DOLLAR +BACKSLASH +Operator_head_other +Operator_following_character +Binary_literal +Binary_digit +Binary_literal_character +Binary_literal_characters +Octal_literal +Octal_digit +Octal_literal_character +Octal_literal_characters +Decimal_digits +Decimal_literal +Decimal_digit +Decimal_literal_character +Decimal_literal_characters +Hexadecimal_literal +Hexadecimal_digit +Hexadecimal_literal_character +Hexadecimal_literal_characters +Floating_point_literal +Decimal_fraction +Decimal_exponent +Hexadecimal_fraction +Hexadecimal_exponent +Floating_point_e +Floating_point_p +Sign +WS +HASHBANG +Block_comment +Line_comment +Multi_line_extended_string_open +Single_line_extended_string_open +Multi_line_string_open +Single_line_string_open +Interpolataion_single_line +Single_line_string_close +Quoted_single_line_text +Interpolataion_multi_line +Multi_line_string_close +Quoted_multi_line_text +Single_line_extended_string_close +Quoted_single_line_extended_text +Multi_line_extended_string_close +Quoted_multi_line_extended_text +Quoted_text +Quoted_text_item +Multiline_quoted_text +Escape_sequence +Escaped_character +Unicode_scalar_digits +Escaped_newline +Inline_spaces +Line_break + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE +SingleLine +MultiLine +SingleLineExtended +MultiLineExtended + +atn: +[4, 0, 193, 1946, 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, 1, 0, 1, 0, 1, 0, 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, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 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, 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, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 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, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 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, 27, 1, 27, 1, 27, 1, 27, 1, 28, 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, 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, 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, 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, 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, 40, 1, 40, 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, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 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, 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, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 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, 1, 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, 1, 52, 1, 52, 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, 53, 1, 53, 1, 54, 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, 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, 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, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 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, 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, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 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, 68, 1, 68, 1, 68, 1, 68, 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, 70, 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, 71, 1, 71, 1, 71, 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, 73, 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, 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, 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, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 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, 84, 1, 84, 1, 85, 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, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 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, 96, 1, 97, 1, 97, 1, 97, 1, 97, 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, 100, 1, 100, 1, 100, 1, 100, 1, 100, 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, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 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, 107, 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, 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, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 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, 1, 110, 1, 110, 1, 110, 1, 110, 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, 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, 1, 111, 1, 111, 1, 111, 1, 111, 1, 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, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 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, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 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, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 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, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 3, 136, 1522, 8, 136, 1, 136, 1, 136, 3, 136, 1526, 8, 136, 1, 137, 3, 137, 1529, 8, 137, 1, 138, 1, 138, 3, 138, 1533, 8, 138, 1, 139, 4, 139, 1536, 8, 139, 11, 139, 12, 139, 1537, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 149, 1, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 154, 1, 154, 1, 155, 1, 155, 1, 156, 1, 156, 1, 157, 1, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 3, 172, 1609, 8, 172, 1, 173, 3, 173, 1612, 8, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 1619, 8, 174, 1, 175, 1, 175, 1, 176, 1, 176, 3, 176, 1625, 8, 176, 1, 177, 4, 177, 1628, 8, 177, 11, 177, 12, 177, 1629, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 3, 178, 1637, 8, 178, 1, 179, 1, 179, 1, 180, 1, 180, 3, 180, 1643, 8, 180, 1, 181, 4, 181, 1646, 8, 181, 11, 181, 12, 181, 1647, 1, 182, 4, 182, 1651, 8, 182, 11, 182, 12, 182, 1652, 1, 183, 1, 183, 3, 183, 1657, 8, 183, 1, 184, 1, 184, 1, 185, 1, 185, 3, 185, 1663, 8, 185, 1, 186, 4, 186, 1666, 8, 186, 11, 186, 12, 186, 1667, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 1675, 8, 187, 1, 188, 1, 188, 1, 189, 1, 189, 3, 189, 1681, 8, 189, 1, 190, 4, 190, 1684, 8, 190, 11, 190, 12, 190, 1685, 1, 191, 1, 191, 3, 191, 1690, 8, 191, 1, 191, 3, 191, 1693, 8, 191, 1, 191, 1, 191, 3, 191, 1697, 8, 191, 1, 191, 1, 191, 3, 191, 1701, 8, 191, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 3, 193, 1708, 8, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 3, 194, 1715, 8, 194, 1, 195, 1, 195, 3, 195, 1719, 8, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 197, 1, 197, 1, 198, 1, 198, 1, 199, 4, 199, 1730, 8, 199, 11, 199, 12, 199, 1731, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 5, 200, 1740, 8, 200, 10, 200, 12, 200, 1743, 9, 200, 1, 200, 4, 200, 1746, 8, 200, 11, 200, 12, 200, 1747, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 5, 201, 1757, 8, 201, 10, 201, 12, 201, 1760, 9, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 5, 202, 1771, 8, 202, 10, 202, 12, 202, 1774, 9, 202, 1, 202, 3, 202, 1777, 8, 202, 1, 202, 1, 202, 1, 203, 4, 203, 1782, 8, 203, 11, 203, 12, 203, 1783, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 4, 204, 1793, 8, 204, 11, 204, 12, 204, 1794, 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, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 213, 1, 213, 4, 213, 1841, 8, 213, 11, 213, 12, 213, 1842, 1, 213, 1, 213, 1, 214, 4, 214, 1848, 8, 214, 11, 214, 12, 214, 1849, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 4, 215, 1857, 8, 215, 11, 215, 12, 215, 1858, 1, 215, 1, 215, 1, 216, 4, 216, 1864, 8, 216, 11, 216, 12, 216, 1865, 1, 216, 1, 216, 3, 216, 1870, 8, 216, 3, 216, 1872, 8, 216, 1, 217, 4, 217, 1875, 8, 217, 11, 217, 12, 217, 1876, 1, 218, 1, 218, 3, 218, 1881, 8, 218, 1, 219, 1, 219, 4, 219, 1885, 8, 219, 11, 219, 12, 219, 1886, 1, 219, 1, 219, 3, 219, 1891, 8, 219, 1, 219, 3, 219, 1894, 8, 219, 1, 220, 1, 220, 5, 220, 1898, 8, 220, 10, 220, 12, 220, 1901, 9, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 1910, 8, 221, 1, 222, 1, 222, 3, 222, 1914, 8, 222, 1, 222, 3, 222, 1917, 8, 222, 1, 222, 3, 222, 1920, 8, 222, 1, 222, 3, 222, 1923, 8, 222, 1, 222, 3, 222, 1926, 8, 222, 1, 222, 3, 222, 1929, 8, 222, 1, 222, 3, 222, 1932, 8, 222, 1, 223, 1, 223, 3, 223, 1936, 8, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 3, 225, 1945, 8, 225, 3, 1741, 1758, 1772, 0, 226, 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, 0, 281, 0, 283, 0, 285, 0, 287, 0, 289, 138, 291, 139, 293, 140, 295, 141, 297, 142, 299, 143, 301, 144, 303, 145, 305, 146, 307, 147, 309, 148, 311, 149, 313, 150, 315, 151, 317, 152, 319, 153, 321, 154, 323, 155, 325, 156, 327, 157, 329, 158, 331, 159, 333, 160, 335, 161, 337, 162, 339, 163, 341, 164, 343, 165, 345, 166, 347, 167, 349, 168, 351, 169, 353, 170, 355, 0, 357, 0, 359, 0, 361, 171, 363, 0, 365, 0, 367, 0, 369, 172, 371, 173, 373, 0, 375, 0, 377, 0, 379, 174, 381, 0, 383, 0, 385, 0, 387, 175, 389, 0, 391, 0, 393, 0, 395, 0, 397, 0, 399, 0, 401, 0, 403, 176, 405, 177, 407, 178, 409, 179, 411, 180, 413, 181, 415, 182, 417, 183, 419, 184, 421, 185, 423, 186, 425, 187, 427, 188, 429, 189, 431, 190, 433, 191, 435, 192, 437, 193, 439, 0, 441, 0, 443, 0, 445, 0, 447, 0, 449, 0, 451, 0, 453, 0, 455, 0, 5, 0, 1, 2, 3, 4, 20, 49, 0, 65, 90, 95, 95, 97, 122, 168, 168, 170, 170, 173, 173, 175, 175, 178, 181, 183, 186, 188, 190, 192, 214, 216, 246, 248, 767, 880, 5759, 5761, 6157, 6159, 7615, 7680, 8191, 8203, 8205, 8234, 8238, 8255, 8256, 8276, 8276, 8288, 8399, 8448, 8591, 9312, 9471, 10102, 10131, 11264, 11775, 11904, 12287, 12292, 12295, 12321, 12335, 12337, 55295, 63744, 64829, 64832, 64975, 65008, 65055, 65072, 65092, 65095, 65533, 65536, 131069, 131072, 196605, 196608, 262141, 262144, 327677, 327680, 393213, 393216, 458749, 458752, 524285, 524288, 589821, 589824, 655357, 655360, 720893, 720896, 786429, 786432, 851965, 851968, 917501, 917504, 983037, 5, 0, 48, 57, 768, 879, 7616, 7679, 8400, 8447, 65056, 65071, 22, 0, 161, 167, 169, 169, 171, 172, 174, 174, 176, 177, 182, 182, 187, 187, 191, 191, 215, 215, 247, 247, 8214, 8215, 8224, 8231, 8240, 8254, 8257, 8275, 8277, 8286, 8592, 9215, 9472, 10101, 10132, 11263, 11776, 11903, 12289, 12291, 12296, 12320, 12336, 12336, 6, 0, 768, 879, 7616, 7679, 8400, 8447, 65024, 65039, 65056, 65071, 917760, 917999, 1, 0, 48, 49, 1, 0, 48, 55, 1, 0, 48, 57, 3, 0, 48, 57, 65, 70, 97, 102, 2, 0, 69, 69, 101, 101, 2, 0, 80, 80, 112, 112, 2, 0, 43, 43, 45, 45, 3, 0, 0, 0, 9, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1, 1, 10, 10, 3, 0, 10, 10, 13, 13, 34, 34, 1, 0, 34, 34, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 34, 34, 92, 92, 8, 0, 34, 34, 39, 39, 48, 48, 92, 92, 110, 110, 114, 114, 116, 116, 8220, 8220, 2, 0, 9, 9, 32, 32, 1965, 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, 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, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 1, 419, 1, 0, 0, 0, 1, 421, 1, 0, 0, 0, 1, 423, 1, 0, 0, 0, 2, 425, 1, 0, 0, 0, 2, 427, 1, 0, 0, 0, 2, 429, 1, 0, 0, 0, 3, 431, 1, 0, 0, 0, 3, 433, 1, 0, 0, 0, 4, 435, 1, 0, 0, 0, 4, 437, 1, 0, 0, 0, 5, 457, 1, 0, 0, 0, 7, 460, 1, 0, 0, 0, 9, 466, 1, 0, 0, 0, 11, 472, 1, 0, 0, 0, 13, 477, 1, 0, 0, 0, 15, 483, 1, 0, 0, 0, 17, 489, 1, 0, 0, 0, 19, 498, 1, 0, 0, 0, 21, 506, 1, 0, 0, 0, 23, 512, 1, 0, 0, 0, 25, 515, 1, 0, 0, 0, 27, 521, 1, 0, 0, 0, 29, 526, 1, 0, 0, 0, 31, 531, 1, 0, 0, 0, 33, 535, 1, 0, 0, 0, 35, 547, 1, 0, 0, 0, 37, 552, 1, 0, 0, 0, 39, 555, 1, 0, 0, 0, 41, 558, 1, 0, 0, 0, 43, 565, 1, 0, 0, 0, 45, 574, 1, 0, 0, 0, 47, 580, 1, 0, 0, 0, 49, 585, 1, 0, 0, 0, 51, 593, 1, 0, 0, 0, 53, 600, 1, 0, 0, 0, 55, 606, 1, 0, 0, 0, 57, 612, 1, 0, 0, 0, 59, 616, 1, 0, 0, 0, 61, 620, 1, 0, 0, 0, 63, 629, 1, 0, 0, 0, 65, 633, 1, 0, 0, 0, 67, 637, 1, 0, 0, 0, 69, 645, 1, 0, 0, 0, 71, 652, 1, 0, 0, 0, 73, 659, 1, 0, 0, 0, 75, 666, 1, 0, 0, 0, 77, 673, 1, 0, 0, 0, 79, 680, 1, 0, 0, 0, 81, 686, 1, 0, 0, 0, 83, 693, 1, 0, 0, 0, 85, 702, 1, 0, 0, 0, 87, 711, 1, 0, 0, 0, 89, 716, 1, 0, 0, 0, 91, 723, 1, 0, 0, 0, 93, 738, 1, 0, 0, 0, 95, 748, 1, 0, 0, 0, 97, 758, 1, 0, 0, 0, 99, 765, 1, 0, 0, 0, 101, 771, 1, 0, 0, 0, 103, 776, 1, 0, 0, 0, 105, 782, 1, 0, 0, 0, 107, 787, 1, 0, 0, 0, 109, 803, 1, 0, 0, 0, 111, 814, 1, 0, 0, 0, 113, 824, 1, 0, 0, 0, 115, 835, 1, 0, 0, 0, 117, 849, 1, 0, 0, 0, 119, 857, 1, 0, 0, 0, 121, 866, 1, 0, 0, 0, 123, 876, 1, 0, 0, 0, 125, 879, 1, 0, 0, 0, 127, 884, 1, 0, 0, 0, 129, 890, 1, 0, 0, 0, 131, 899, 1, 0, 0, 0, 133, 909, 1, 0, 0, 0, 135, 927, 1, 0, 0, 0, 137, 939, 1, 0, 0, 0, 139, 947, 1, 0, 0, 0, 141, 952, 1, 0, 0, 0, 143, 961, 1, 0, 0, 0, 145, 970, 1, 0, 0, 0, 147, 979, 1, 0, 0, 0, 149, 986, 1, 0, 0, 0, 151, 991, 1, 0, 0, 0, 153, 999, 1, 0, 0, 0, 155, 1004, 1, 0, 0, 0, 157, 1011, 1, 0, 0, 0, 159, 1020, 1, 0, 0, 0, 161, 1032, 1, 0, 0, 0, 163, 1044, 1, 0, 0, 0, 165, 1047, 1, 0, 0, 0, 167, 1051, 1, 0, 0, 0, 169, 1057, 1, 0, 0, 0, 171, 1061, 1, 0, 0, 0, 173, 1067, 1, 0, 0, 0, 175, 1071, 1, 0, 0, 0, 177, 1076, 1, 0, 0, 0, 179, 1082, 1, 0, 0, 0, 181, 1095, 1, 0, 0, 0, 183, 1100, 1, 0, 0, 0, 185, 1104, 1, 0, 0, 0, 187, 1110, 1, 0, 0, 0, 189, 1115, 1, 0, 0, 0, 191, 1120, 1, 0, 0, 0, 193, 1131, 1, 0, 0, 0, 195, 1136, 1, 0, 0, 0, 197, 1141, 1, 0, 0, 0, 199, 1147, 1, 0, 0, 0, 201, 1151, 1, 0, 0, 0, 203, 1155, 1, 0, 0, 0, 205, 1163, 1, 0, 0, 0, 207, 1168, 1, 0, 0, 0, 209, 1174, 1, 0, 0, 0, 211, 1182, 1, 0, 0, 0, 213, 1187, 1, 0, 0, 0, 215, 1194, 1, 0, 0, 0, 217, 1198, 1, 0, 0, 0, 219, 1204, 1, 0, 0, 0, 221, 1214, 1, 0, 0, 0, 223, 1226, 1, 0, 0, 0, 225, 1250, 1, 0, 0, 0, 227, 1282, 1, 0, 0, 0, 229, 1308, 1, 0, 0, 0, 231, 1324, 1, 0, 0, 0, 233, 1329, 1, 0, 0, 0, 235, 1334, 1, 0, 0, 0, 237, 1341, 1, 0, 0, 0, 239, 1350, 1, 0, 0, 0, 241, 1361, 1, 0, 0, 0, 243, 1365, 1, 0, 0, 0, 245, 1373, 1, 0, 0, 0, 247, 1379, 1, 0, 0, 0, 249, 1386, 1, 0, 0, 0, 251, 1392, 1, 0, 0, 0, 253, 1400, 1, 0, 0, 0, 255, 1410, 1, 0, 0, 0, 257, 1416, 1, 0, 0, 0, 259, 1424, 1, 0, 0, 0, 261, 1434, 1, 0, 0, 0, 263, 1445, 1, 0, 0, 0, 265, 1455, 1, 0, 0, 0, 267, 1464, 1, 0, 0, 0, 269, 1478, 1, 0, 0, 0, 271, 1491, 1, 0, 0, 0, 273, 1505, 1, 0, 0, 0, 275, 1512, 1, 0, 0, 0, 277, 1525, 1, 0, 0, 0, 279, 1528, 1, 0, 0, 0, 281, 1532, 1, 0, 0, 0, 283, 1535, 1, 0, 0, 0, 285, 1539, 1, 0, 0, 0, 287, 1542, 1, 0, 0, 0, 289, 1545, 1, 0, 0, 0, 291, 1547, 1, 0, 0, 0, 293, 1549, 1, 0, 0, 0, 295, 1552, 1, 0, 0, 0, 297, 1554, 1, 0, 0, 0, 299, 1556, 1, 0, 0, 0, 301, 1559, 1, 0, 0, 0, 303, 1561, 1, 0, 0, 0, 305, 1563, 1, 0, 0, 0, 307, 1565, 1, 0, 0, 0, 309, 1567, 1, 0, 0, 0, 311, 1569, 1, 0, 0, 0, 313, 1571, 1, 0, 0, 0, 315, 1573, 1, 0, 0, 0, 317, 1575, 1, 0, 0, 0, 319, 1577, 1, 0, 0, 0, 321, 1579, 1, 0, 0, 0, 323, 1581, 1, 0, 0, 0, 325, 1583, 1, 0, 0, 0, 327, 1585, 1, 0, 0, 0, 329, 1587, 1, 0, 0, 0, 331, 1589, 1, 0, 0, 0, 333, 1591, 1, 0, 0, 0, 335, 1593, 1, 0, 0, 0, 337, 1595, 1, 0, 0, 0, 339, 1597, 1, 0, 0, 0, 341, 1599, 1, 0, 0, 0, 343, 1601, 1, 0, 0, 0, 345, 1603, 1, 0, 0, 0, 347, 1605, 1, 0, 0, 0, 349, 1608, 1, 0, 0, 0, 351, 1611, 1, 0, 0, 0, 353, 1613, 1, 0, 0, 0, 355, 1620, 1, 0, 0, 0, 357, 1624, 1, 0, 0, 0, 359, 1627, 1, 0, 0, 0, 361, 1631, 1, 0, 0, 0, 363, 1638, 1, 0, 0, 0, 365, 1642, 1, 0, 0, 0, 367, 1645, 1, 0, 0, 0, 369, 1650, 1, 0, 0, 0, 371, 1654, 1, 0, 0, 0, 373, 1658, 1, 0, 0, 0, 375, 1662, 1, 0, 0, 0, 377, 1665, 1, 0, 0, 0, 379, 1669, 1, 0, 0, 0, 381, 1676, 1, 0, 0, 0, 383, 1680, 1, 0, 0, 0, 385, 1683, 1, 0, 0, 0, 387, 1700, 1, 0, 0, 0, 389, 1702, 1, 0, 0, 0, 391, 1705, 1, 0, 0, 0, 393, 1711, 1, 0, 0, 0, 395, 1716, 1, 0, 0, 0, 397, 1722, 1, 0, 0, 0, 399, 1724, 1, 0, 0, 0, 401, 1726, 1, 0, 0, 0, 403, 1729, 1, 0, 0, 0, 405, 1735, 1, 0, 0, 0, 407, 1751, 1, 0, 0, 0, 409, 1766, 1, 0, 0, 0, 411, 1781, 1, 0, 0, 0, 413, 1792, 1, 0, 0, 0, 415, 1800, 1, 0, 0, 0, 417, 1806, 1, 0, 0, 0, 419, 1810, 1, 0, 0, 0, 421, 1817, 1, 0, 0, 0, 423, 1821, 1, 0, 0, 0, 425, 1823, 1, 0, 0, 0, 427, 1830, 1, 0, 0, 0, 429, 1836, 1, 0, 0, 0, 431, 1838, 1, 0, 0, 0, 433, 1847, 1, 0, 0, 0, 435, 1851, 1, 0, 0, 0, 437, 1871, 1, 0, 0, 0, 439, 1874, 1, 0, 0, 0, 441, 1880, 1, 0, 0, 0, 443, 1893, 1, 0, 0, 0, 445, 1895, 1, 0, 0, 0, 447, 1902, 1, 0, 0, 0, 449, 1911, 1, 0, 0, 0, 451, 1933, 1, 0, 0, 0, 453, 1939, 1, 0, 0, 0, 455, 1944, 1, 0, 0, 0, 457, 458, 5, 97, 0, 0, 458, 459, 5, 115, 0, 0, 459, 6, 1, 0, 0, 0, 460, 461, 5, 97, 0, 0, 461, 462, 5, 108, 0, 0, 462, 463, 5, 112, 0, 0, 463, 464, 5, 104, 0, 0, 464, 465, 5, 97, 0, 0, 465, 8, 1, 0, 0, 0, 466, 467, 5, 98, 0, 0, 467, 468, 5, 114, 0, 0, 468, 469, 5, 101, 0, 0, 469, 470, 5, 97, 0, 0, 470, 471, 5, 107, 0, 0, 471, 10, 1, 0, 0, 0, 472, 473, 5, 99, 0, 0, 473, 474, 5, 97, 0, 0, 474, 475, 5, 115, 0, 0, 475, 476, 5, 101, 0, 0, 476, 12, 1, 0, 0, 0, 477, 478, 5, 99, 0, 0, 478, 479, 5, 97, 0, 0, 479, 480, 5, 116, 0, 0, 480, 481, 5, 99, 0, 0, 481, 482, 5, 104, 0, 0, 482, 14, 1, 0, 0, 0, 483, 484, 5, 99, 0, 0, 484, 485, 5, 108, 0, 0, 485, 486, 5, 97, 0, 0, 486, 487, 5, 115, 0, 0, 487, 488, 5, 115, 0, 0, 488, 16, 1, 0, 0, 0, 489, 490, 5, 99, 0, 0, 490, 491, 5, 111, 0, 0, 491, 492, 5, 110, 0, 0, 492, 493, 5, 116, 0, 0, 493, 494, 5, 105, 0, 0, 494, 495, 5, 110, 0, 0, 495, 496, 5, 117, 0, 0, 496, 497, 5, 101, 0, 0, 497, 18, 1, 0, 0, 0, 498, 499, 5, 100, 0, 0, 499, 500, 5, 101, 0, 0, 500, 501, 5, 102, 0, 0, 501, 502, 5, 97, 0, 0, 502, 503, 5, 117, 0, 0, 503, 504, 5, 108, 0, 0, 504, 505, 5, 116, 0, 0, 505, 20, 1, 0, 0, 0, 506, 507, 5, 100, 0, 0, 507, 508, 5, 101, 0, 0, 508, 509, 5, 102, 0, 0, 509, 510, 5, 101, 0, 0, 510, 511, 5, 114, 0, 0, 511, 22, 1, 0, 0, 0, 512, 513, 5, 100, 0, 0, 513, 514, 5, 111, 0, 0, 514, 24, 1, 0, 0, 0, 515, 516, 5, 103, 0, 0, 516, 517, 5, 117, 0, 0, 517, 518, 5, 97, 0, 0, 518, 519, 5, 114, 0, 0, 519, 520, 5, 100, 0, 0, 520, 26, 1, 0, 0, 0, 521, 522, 5, 101, 0, 0, 522, 523, 5, 108, 0, 0, 523, 524, 5, 115, 0, 0, 524, 525, 5, 101, 0, 0, 525, 28, 1, 0, 0, 0, 526, 527, 5, 101, 0, 0, 527, 528, 5, 110, 0, 0, 528, 529, 5, 117, 0, 0, 529, 530, 5, 109, 0, 0, 530, 30, 1, 0, 0, 0, 531, 532, 5, 102, 0, 0, 532, 533, 5, 111, 0, 0, 533, 534, 5, 114, 0, 0, 534, 32, 1, 0, 0, 0, 535, 536, 5, 102, 0, 0, 536, 537, 5, 97, 0, 0, 537, 538, 5, 108, 0, 0, 538, 539, 5, 108, 0, 0, 539, 540, 5, 116, 0, 0, 540, 541, 5, 104, 0, 0, 541, 542, 5, 114, 0, 0, 542, 543, 5, 111, 0, 0, 543, 544, 5, 117, 0, 0, 544, 545, 5, 103, 0, 0, 545, 546, 5, 104, 0, 0, 546, 34, 1, 0, 0, 0, 547, 548, 5, 102, 0, 0, 548, 549, 5, 117, 0, 0, 549, 550, 5, 110, 0, 0, 550, 551, 5, 99, 0, 0, 551, 36, 1, 0, 0, 0, 552, 553, 5, 105, 0, 0, 553, 554, 5, 110, 0, 0, 554, 38, 1, 0, 0, 0, 555, 556, 5, 105, 0, 0, 556, 557, 5, 102, 0, 0, 557, 40, 1, 0, 0, 0, 558, 559, 5, 105, 0, 0, 559, 560, 5, 109, 0, 0, 560, 561, 5, 112, 0, 0, 561, 562, 5, 111, 0, 0, 562, 563, 5, 114, 0, 0, 563, 564, 5, 116, 0, 0, 564, 42, 1, 0, 0, 0, 565, 566, 5, 105, 0, 0, 566, 567, 5, 110, 0, 0, 567, 568, 5, 116, 0, 0, 568, 569, 5, 101, 0, 0, 569, 570, 5, 114, 0, 0, 570, 571, 5, 110, 0, 0, 571, 572, 5, 97, 0, 0, 572, 573, 5, 108, 0, 0, 573, 44, 1, 0, 0, 0, 574, 575, 5, 102, 0, 0, 575, 576, 5, 105, 0, 0, 576, 577, 5, 110, 0, 0, 577, 578, 5, 97, 0, 0, 578, 579, 5, 108, 0, 0, 579, 46, 1, 0, 0, 0, 580, 581, 5, 111, 0, 0, 581, 582, 5, 112, 0, 0, 582, 583, 5, 101, 0, 0, 583, 584, 5, 110, 0, 0, 584, 48, 1, 0, 0, 0, 585, 586, 5, 112, 0, 0, 586, 587, 5, 114, 0, 0, 587, 588, 5, 105, 0, 0, 588, 589, 5, 118, 0, 0, 589, 590, 5, 97, 0, 0, 590, 591, 5, 116, 0, 0, 591, 592, 5, 101, 0, 0, 592, 50, 1, 0, 0, 0, 593, 594, 5, 112, 0, 0, 594, 595, 5, 117, 0, 0, 595, 596, 5, 98, 0, 0, 596, 597, 5, 108, 0, 0, 597, 598, 5, 105, 0, 0, 598, 599, 5, 99, 0, 0, 599, 52, 1, 0, 0, 0, 600, 601, 5, 119, 0, 0, 601, 602, 5, 104, 0, 0, 602, 603, 5, 101, 0, 0, 603, 604, 5, 114, 0, 0, 604, 605, 5, 101, 0, 0, 605, 54, 1, 0, 0, 0, 606, 607, 5, 119, 0, 0, 607, 608, 5, 104, 0, 0, 608, 609, 5, 105, 0, 0, 609, 610, 5, 108, 0, 0, 610, 611, 5, 101, 0, 0, 611, 56, 1, 0, 0, 0, 612, 613, 5, 108, 0, 0, 613, 614, 5, 101, 0, 0, 614, 615, 5, 116, 0, 0, 615, 58, 1, 0, 0, 0, 616, 617, 5, 118, 0, 0, 617, 618, 5, 97, 0, 0, 618, 619, 5, 114, 0, 0, 619, 60, 1, 0, 0, 0, 620, 621, 5, 112, 0, 0, 621, 622, 5, 114, 0, 0, 622, 623, 5, 111, 0, 0, 623, 624, 5, 116, 0, 0, 624, 625, 5, 111, 0, 0, 625, 626, 5, 99, 0, 0, 626, 627, 5, 111, 0, 0, 627, 628, 5, 108, 0, 0, 628, 62, 1, 0, 0, 0, 629, 630, 5, 103, 0, 0, 630, 631, 5, 101, 0, 0, 631, 632, 5, 116, 0, 0, 632, 64, 1, 0, 0, 0, 633, 634, 5, 115, 0, 0, 634, 635, 5, 101, 0, 0, 635, 636, 5, 116, 0, 0, 636, 66, 1, 0, 0, 0, 637, 638, 5, 119, 0, 0, 638, 639, 5, 105, 0, 0, 639, 640, 5, 108, 0, 0, 640, 641, 5, 108, 0, 0, 641, 642, 5, 83, 0, 0, 642, 643, 5, 101, 0, 0, 643, 644, 5, 116, 0, 0, 644, 68, 1, 0, 0, 0, 645, 646, 5, 100, 0, 0, 646, 647, 5, 105, 0, 0, 647, 648, 5, 100, 0, 0, 648, 649, 5, 83, 0, 0, 649, 650, 5, 101, 0, 0, 650, 651, 5, 116, 0, 0, 651, 70, 1, 0, 0, 0, 652, 653, 5, 114, 0, 0, 653, 654, 5, 101, 0, 0, 654, 655, 5, 112, 0, 0, 655, 656, 5, 101, 0, 0, 656, 657, 5, 97, 0, 0, 657, 658, 5, 116, 0, 0, 658, 72, 1, 0, 0, 0, 659, 660, 5, 115, 0, 0, 660, 661, 5, 119, 0, 0, 661, 662, 5, 105, 0, 0, 662, 663, 5, 116, 0, 0, 663, 664, 5, 99, 0, 0, 664, 665, 5, 104, 0, 0, 665, 74, 1, 0, 0, 0, 666, 667, 5, 115, 0, 0, 667, 668, 5, 116, 0, 0, 668, 669, 5, 114, 0, 0, 669, 670, 5, 117, 0, 0, 670, 671, 5, 99, 0, 0, 671, 672, 5, 116, 0, 0, 672, 76, 1, 0, 0, 0, 673, 674, 5, 114, 0, 0, 674, 675, 5, 101, 0, 0, 675, 676, 5, 116, 0, 0, 676, 677, 5, 117, 0, 0, 677, 678, 5, 114, 0, 0, 678, 679, 5, 110, 0, 0, 679, 78, 1, 0, 0, 0, 680, 681, 5, 116, 0, 0, 681, 682, 5, 104, 0, 0, 682, 683, 5, 114, 0, 0, 683, 684, 5, 111, 0, 0, 684, 685, 5, 119, 0, 0, 685, 80, 1, 0, 0, 0, 686, 687, 5, 116, 0, 0, 687, 688, 5, 104, 0, 0, 688, 689, 5, 114, 0, 0, 689, 690, 5, 111, 0, 0, 690, 691, 5, 119, 0, 0, 691, 692, 5, 115, 0, 0, 692, 82, 1, 0, 0, 0, 693, 694, 5, 114, 0, 0, 694, 695, 5, 101, 0, 0, 695, 696, 5, 116, 0, 0, 696, 697, 5, 104, 0, 0, 697, 698, 5, 114, 0, 0, 698, 699, 5, 111, 0, 0, 699, 700, 5, 119, 0, 0, 700, 701, 5, 115, 0, 0, 701, 84, 1, 0, 0, 0, 702, 703, 5, 105, 0, 0, 703, 704, 5, 110, 0, 0, 704, 705, 5, 100, 0, 0, 705, 706, 5, 105, 0, 0, 706, 707, 5, 114, 0, 0, 707, 708, 5, 101, 0, 0, 708, 709, 5, 99, 0, 0, 709, 710, 5, 116, 0, 0, 710, 86, 1, 0, 0, 0, 711, 712, 5, 105, 0, 0, 712, 713, 5, 110, 0, 0, 713, 714, 5, 105, 0, 0, 714, 715, 5, 116, 0, 0, 715, 88, 1, 0, 0, 0, 716, 717, 5, 100, 0, 0, 717, 718, 5, 101, 0, 0, 718, 719, 5, 105, 0, 0, 719, 720, 5, 110, 0, 0, 720, 721, 5, 105, 0, 0, 721, 722, 5, 116, 0, 0, 722, 90, 1, 0, 0, 0, 723, 724, 5, 97, 0, 0, 724, 725, 5, 115, 0, 0, 725, 726, 5, 115, 0, 0, 726, 727, 5, 111, 0, 0, 727, 728, 5, 99, 0, 0, 728, 729, 5, 105, 0, 0, 729, 730, 5, 97, 0, 0, 730, 731, 5, 116, 0, 0, 731, 732, 5, 101, 0, 0, 732, 733, 5, 100, 0, 0, 733, 734, 5, 116, 0, 0, 734, 735, 5, 121, 0, 0, 735, 736, 5, 112, 0, 0, 736, 737, 5, 101, 0, 0, 737, 92, 1, 0, 0, 0, 738, 739, 5, 101, 0, 0, 739, 740, 5, 120, 0, 0, 740, 741, 5, 116, 0, 0, 741, 742, 5, 101, 0, 0, 742, 743, 5, 110, 0, 0, 743, 744, 5, 115, 0, 0, 744, 745, 5, 105, 0, 0, 745, 746, 5, 111, 0, 0, 746, 747, 5, 110, 0, 0, 747, 94, 1, 0, 0, 0, 748, 749, 5, 115, 0, 0, 749, 750, 5, 117, 0, 0, 750, 751, 5, 98, 0, 0, 751, 752, 5, 115, 0, 0, 752, 753, 5, 99, 0, 0, 753, 754, 5, 114, 0, 0, 754, 755, 5, 105, 0, 0, 755, 756, 5, 112, 0, 0, 756, 757, 5, 116, 0, 0, 757, 96, 1, 0, 0, 0, 758, 759, 5, 112, 0, 0, 759, 760, 5, 114, 0, 0, 760, 761, 5, 101, 0, 0, 761, 762, 5, 102, 0, 0, 762, 763, 5, 105, 0, 0, 763, 764, 5, 120, 0, 0, 764, 98, 1, 0, 0, 0, 765, 766, 5, 105, 0, 0, 766, 767, 5, 110, 0, 0, 767, 768, 5, 102, 0, 0, 768, 769, 5, 105, 0, 0, 769, 770, 5, 120, 0, 0, 770, 100, 1, 0, 0, 0, 771, 772, 5, 108, 0, 0, 772, 773, 5, 101, 0, 0, 773, 774, 5, 102, 0, 0, 774, 775, 5, 116, 0, 0, 775, 102, 1, 0, 0, 0, 776, 777, 5, 114, 0, 0, 777, 778, 5, 105, 0, 0, 778, 779, 5, 103, 0, 0, 779, 780, 5, 104, 0, 0, 780, 781, 5, 116, 0, 0, 781, 104, 1, 0, 0, 0, 782, 783, 5, 110, 0, 0, 783, 784, 5, 111, 0, 0, 784, 785, 5, 110, 0, 0, 785, 786, 5, 101, 0, 0, 786, 106, 1, 0, 0, 0, 787, 788, 5, 112, 0, 0, 788, 789, 5, 114, 0, 0, 789, 790, 5, 101, 0, 0, 790, 791, 5, 99, 0, 0, 791, 792, 5, 101, 0, 0, 792, 793, 5, 100, 0, 0, 793, 794, 5, 101, 0, 0, 794, 795, 5, 110, 0, 0, 795, 796, 5, 99, 0, 0, 796, 797, 5, 101, 0, 0, 797, 798, 5, 103, 0, 0, 798, 799, 5, 114, 0, 0, 799, 800, 5, 111, 0, 0, 800, 801, 5, 117, 0, 0, 801, 802, 5, 112, 0, 0, 802, 108, 1, 0, 0, 0, 803, 804, 5, 104, 0, 0, 804, 805, 5, 105, 0, 0, 805, 806, 5, 103, 0, 0, 806, 807, 5, 104, 0, 0, 807, 808, 5, 101, 0, 0, 808, 809, 5, 114, 0, 0, 809, 810, 5, 84, 0, 0, 810, 811, 5, 104, 0, 0, 811, 812, 5, 97, 0, 0, 812, 813, 5, 110, 0, 0, 813, 110, 1, 0, 0, 0, 814, 815, 5, 108, 0, 0, 815, 816, 5, 111, 0, 0, 816, 817, 5, 119, 0, 0, 817, 818, 5, 101, 0, 0, 818, 819, 5, 114, 0, 0, 819, 820, 5, 84, 0, 0, 820, 821, 5, 104, 0, 0, 821, 822, 5, 97, 0, 0, 822, 823, 5, 110, 0, 0, 823, 112, 1, 0, 0, 0, 824, 825, 5, 97, 0, 0, 825, 826, 5, 115, 0, 0, 826, 827, 5, 115, 0, 0, 827, 828, 5, 105, 0, 0, 828, 829, 5, 103, 0, 0, 829, 830, 5, 110, 0, 0, 830, 831, 5, 109, 0, 0, 831, 832, 5, 101, 0, 0, 832, 833, 5, 110, 0, 0, 833, 834, 5, 116, 0, 0, 834, 114, 1, 0, 0, 0, 835, 836, 5, 97, 0, 0, 836, 837, 5, 115, 0, 0, 837, 838, 5, 115, 0, 0, 838, 839, 5, 111, 0, 0, 839, 840, 5, 99, 0, 0, 840, 841, 5, 105, 0, 0, 841, 842, 5, 97, 0, 0, 842, 843, 5, 116, 0, 0, 843, 844, 5, 105, 0, 0, 844, 845, 5, 118, 0, 0, 845, 846, 5, 105, 0, 0, 846, 847, 5, 116, 0, 0, 847, 848, 5, 121, 0, 0, 848, 116, 1, 0, 0, 0, 849, 850, 5, 112, 0, 0, 850, 851, 5, 111, 0, 0, 851, 852, 5, 115, 0, 0, 852, 853, 5, 116, 0, 0, 853, 854, 5, 102, 0, 0, 854, 855, 5, 105, 0, 0, 855, 856, 5, 120, 0, 0, 856, 118, 1, 0, 0, 0, 857, 858, 5, 111, 0, 0, 858, 859, 5, 112, 0, 0, 859, 860, 5, 101, 0, 0, 860, 861, 5, 114, 0, 0, 861, 862, 5, 97, 0, 0, 862, 863, 5, 116, 0, 0, 863, 864, 5, 111, 0, 0, 864, 865, 5, 114, 0, 0, 865, 120, 1, 0, 0, 0, 866, 867, 5, 116, 0, 0, 867, 868, 5, 121, 0, 0, 868, 869, 5, 112, 0, 0, 869, 870, 5, 101, 0, 0, 870, 871, 5, 97, 0, 0, 871, 872, 5, 108, 0, 0, 872, 873, 5, 105, 0, 0, 873, 874, 5, 97, 0, 0, 874, 875, 5, 115, 0, 0, 875, 122, 1, 0, 0, 0, 876, 877, 5, 111, 0, 0, 877, 878, 5, 115, 0, 0, 878, 124, 1, 0, 0, 0, 879, 880, 5, 97, 0, 0, 880, 881, 5, 114, 0, 0, 881, 882, 5, 99, 0, 0, 882, 883, 5, 104, 0, 0, 883, 126, 1, 0, 0, 0, 884, 885, 5, 115, 0, 0, 885, 886, 5, 119, 0, 0, 886, 887, 5, 105, 0, 0, 887, 888, 5, 102, 0, 0, 888, 889, 5, 116, 0, 0, 889, 128, 1, 0, 0, 0, 890, 891, 5, 99, 0, 0, 891, 892, 5, 111, 0, 0, 892, 893, 5, 109, 0, 0, 893, 894, 5, 112, 0, 0, 894, 895, 5, 105, 0, 0, 895, 896, 5, 108, 0, 0, 896, 897, 5, 101, 0, 0, 897, 898, 5, 114, 0, 0, 898, 130, 1, 0, 0, 0, 899, 900, 5, 99, 0, 0, 900, 901, 5, 97, 0, 0, 901, 902, 5, 110, 0, 0, 902, 903, 5, 73, 0, 0, 903, 904, 5, 109, 0, 0, 904, 905, 5, 112, 0, 0, 905, 906, 5, 111, 0, 0, 906, 907, 5, 114, 0, 0, 907, 908, 5, 116, 0, 0, 908, 132, 1, 0, 0, 0, 909, 910, 5, 116, 0, 0, 910, 911, 5, 97, 0, 0, 911, 912, 5, 114, 0, 0, 912, 913, 5, 103, 0, 0, 913, 914, 5, 101, 0, 0, 914, 915, 5, 116, 0, 0, 915, 916, 5, 69, 0, 0, 916, 917, 5, 110, 0, 0, 917, 918, 5, 118, 0, 0, 918, 919, 5, 105, 0, 0, 919, 920, 5, 114, 0, 0, 920, 921, 5, 111, 0, 0, 921, 922, 5, 110, 0, 0, 922, 923, 5, 109, 0, 0, 923, 924, 5, 101, 0, 0, 924, 925, 5, 110, 0, 0, 925, 926, 5, 116, 0, 0, 926, 134, 1, 0, 0, 0, 927, 928, 5, 99, 0, 0, 928, 929, 5, 111, 0, 0, 929, 930, 5, 110, 0, 0, 930, 931, 5, 118, 0, 0, 931, 932, 5, 101, 0, 0, 932, 933, 5, 110, 0, 0, 933, 934, 5, 105, 0, 0, 934, 935, 5, 101, 0, 0, 935, 936, 5, 110, 0, 0, 936, 937, 5, 99, 0, 0, 937, 938, 5, 101, 0, 0, 938, 136, 1, 0, 0, 0, 939, 940, 5, 100, 0, 0, 940, 941, 5, 121, 0, 0, 941, 942, 5, 110, 0, 0, 942, 943, 5, 97, 0, 0, 943, 944, 5, 109, 0, 0, 944, 945, 5, 105, 0, 0, 945, 946, 5, 99, 0, 0, 946, 138, 1, 0, 0, 0, 947, 948, 5, 108, 0, 0, 948, 949, 5, 97, 0, 0, 949, 950, 5, 122, 0, 0, 950, 951, 5, 121, 0, 0, 951, 140, 1, 0, 0, 0, 952, 953, 5, 111, 0, 0, 953, 954, 5, 112, 0, 0, 954, 955, 5, 116, 0, 0, 955, 956, 5, 105, 0, 0, 956, 957, 5, 111, 0, 0, 957, 958, 5, 110, 0, 0, 958, 959, 5, 97, 0, 0, 959, 960, 5, 108, 0, 0, 960, 142, 1, 0, 0, 0, 961, 962, 5, 111, 0, 0, 962, 963, 5, 118, 0, 0, 963, 964, 5, 101, 0, 0, 964, 965, 5, 114, 0, 0, 965, 966, 5, 114, 0, 0, 966, 967, 5, 105, 0, 0, 967, 968, 5, 100, 0, 0, 968, 969, 5, 101, 0, 0, 969, 144, 1, 0, 0, 0, 970, 971, 5, 114, 0, 0, 971, 972, 5, 101, 0, 0, 972, 973, 5, 113, 0, 0, 973, 974, 5, 117, 0, 0, 974, 975, 5, 105, 0, 0, 975, 976, 5, 114, 0, 0, 976, 977, 5, 101, 0, 0, 977, 978, 5, 100, 0, 0, 978, 146, 1, 0, 0, 0, 979, 980, 5, 115, 0, 0, 980, 981, 5, 116, 0, 0, 981, 982, 5, 97, 0, 0, 982, 983, 5, 116, 0, 0, 983, 984, 5, 105, 0, 0, 984, 985, 5, 99, 0, 0, 985, 148, 1, 0, 0, 0, 986, 987, 5, 119, 0, 0, 987, 988, 5, 101, 0, 0, 988, 989, 5, 97, 0, 0, 989, 990, 5, 107, 0, 0, 990, 150, 1, 0, 0, 0, 991, 992, 5, 117, 0, 0, 992, 993, 5, 110, 0, 0, 993, 994, 5, 111, 0, 0, 994, 995, 5, 119, 0, 0, 995, 996, 5, 110, 0, 0, 996, 997, 5, 101, 0, 0, 997, 998, 5, 100, 0, 0, 998, 152, 1, 0, 0, 0, 999, 1000, 5, 115, 0, 0, 1000, 1001, 5, 97, 0, 0, 1001, 1002, 5, 102, 0, 0, 1002, 1003, 5, 101, 0, 0, 1003, 154, 1, 0, 0, 0, 1004, 1005, 5, 117, 0, 0, 1005, 1006, 5, 110, 0, 0, 1006, 1007, 5, 115, 0, 0, 1007, 1008, 5, 97, 0, 0, 1008, 1009, 5, 102, 0, 0, 1009, 1010, 5, 101, 0, 0, 1010, 156, 1, 0, 0, 0, 1011, 1012, 5, 109, 0, 0, 1012, 1013, 5, 117, 0, 0, 1013, 1014, 5, 116, 0, 0, 1014, 1015, 5, 97, 0, 0, 1015, 1016, 5, 116, 0, 0, 1016, 1017, 5, 105, 0, 0, 1017, 1018, 5, 110, 0, 0, 1018, 1019, 5, 103, 0, 0, 1019, 158, 1, 0, 0, 0, 1020, 1021, 5, 110, 0, 0, 1021, 1022, 5, 111, 0, 0, 1022, 1023, 5, 110, 0, 0, 1023, 1024, 5, 109, 0, 0, 1024, 1025, 5, 117, 0, 0, 1025, 1026, 5, 116, 0, 0, 1026, 1027, 5, 97, 0, 0, 1027, 1028, 5, 116, 0, 0, 1028, 1029, 5, 105, 0, 0, 1029, 1030, 5, 110, 0, 0, 1030, 1031, 5, 103, 0, 0, 1031, 160, 1, 0, 0, 0, 1032, 1033, 5, 102, 0, 0, 1033, 1034, 5, 105, 0, 0, 1034, 1035, 5, 108, 0, 0, 1035, 1036, 5, 101, 0, 0, 1036, 1037, 5, 112, 0, 0, 1037, 1038, 5, 114, 0, 0, 1038, 1039, 5, 105, 0, 0, 1039, 1040, 5, 118, 0, 0, 1040, 1041, 5, 97, 0, 0, 1041, 1042, 5, 116, 0, 0, 1042, 1043, 5, 101, 0, 0, 1043, 162, 1, 0, 0, 0, 1044, 1045, 5, 105, 0, 0, 1045, 1046, 5, 115, 0, 0, 1046, 164, 1, 0, 0, 0, 1047, 1048, 5, 116, 0, 0, 1048, 1049, 5, 114, 0, 0, 1049, 1050, 5, 121, 0, 0, 1050, 166, 1, 0, 0, 0, 1051, 1052, 5, 115, 0, 0, 1052, 1053, 5, 117, 0, 0, 1053, 1054, 5, 112, 0, 0, 1054, 1055, 5, 101, 0, 0, 1055, 1056, 5, 114, 0, 0, 1056, 168, 1, 0, 0, 0, 1057, 1058, 5, 65, 0, 0, 1058, 1059, 5, 110, 0, 0, 1059, 1060, 5, 121, 0, 0, 1060, 170, 1, 0, 0, 0, 1061, 1062, 5, 102, 0, 0, 1062, 1063, 5, 97, 0, 0, 1063, 1064, 5, 108, 0, 0, 1064, 1065, 5, 115, 0, 0, 1065, 1066, 5, 101, 0, 0, 1066, 172, 1, 0, 0, 0, 1067, 1068, 5, 114, 0, 0, 1068, 1069, 5, 101, 0, 0, 1069, 1070, 5, 100, 0, 0, 1070, 174, 1, 0, 0, 0, 1071, 1072, 5, 98, 0, 0, 1072, 1073, 5, 108, 0, 0, 1073, 1074, 5, 117, 0, 0, 1074, 1075, 5, 101, 0, 0, 1075, 176, 1, 0, 0, 0, 1076, 1077, 5, 103, 0, 0, 1077, 1078, 5, 114, 0, 0, 1078, 1079, 5, 101, 0, 0, 1079, 1080, 5, 101, 0, 0, 1080, 1081, 5, 110, 0, 0, 1081, 178, 1, 0, 0, 0, 1082, 1083, 5, 114, 0, 0, 1083, 1084, 5, 101, 0, 0, 1084, 1085, 5, 115, 0, 0, 1085, 1086, 5, 111, 0, 0, 1086, 1087, 5, 117, 0, 0, 1087, 1088, 5, 114, 0, 0, 1088, 1089, 5, 99, 0, 0, 1089, 1090, 5, 101, 0, 0, 1090, 1091, 5, 78, 0, 0, 1091, 1092, 5, 97, 0, 0, 1092, 1093, 5, 109, 0, 0, 1093, 1094, 5, 101, 0, 0, 1094, 180, 1, 0, 0, 0, 1095, 1096, 5, 116, 0, 0, 1096, 1097, 5, 114, 0, 0, 1097, 1098, 5, 117, 0, 0, 1098, 1099, 5, 101, 0, 0, 1099, 182, 1, 0, 0, 0, 1100, 1101, 5, 110, 0, 0, 1101, 1102, 5, 105, 0, 0, 1102, 1103, 5, 108, 0, 0, 1103, 184, 1, 0, 0, 0, 1104, 1105, 5, 105, 0, 0, 1105, 1106, 5, 110, 0, 0, 1106, 1107, 5, 111, 0, 0, 1107, 1108, 5, 117, 0, 0, 1108, 1109, 5, 116, 0, 0, 1109, 186, 1, 0, 0, 0, 1110, 1111, 5, 115, 0, 0, 1111, 1112, 5, 111, 0, 0, 1112, 1113, 5, 109, 0, 0, 1113, 1114, 5, 101, 0, 0, 1114, 188, 1, 0, 0, 0, 1115, 1116, 5, 84, 0, 0, 1116, 1117, 5, 121, 0, 0, 1117, 1118, 5, 112, 0, 0, 1118, 1119, 5, 101, 0, 0, 1119, 190, 1, 0, 0, 0, 1120, 1121, 5, 112, 0, 0, 1121, 1122, 5, 114, 0, 0, 1122, 1123, 5, 101, 0, 0, 1123, 1124, 5, 99, 0, 0, 1124, 1125, 5, 101, 0, 0, 1125, 1126, 5, 100, 0, 0, 1126, 1127, 5, 101, 0, 0, 1127, 1128, 5, 110, 0, 0, 1128, 1129, 5, 99, 0, 0, 1129, 1130, 5, 101, 0, 0, 1130, 192, 1, 0, 0, 0, 1131, 1132, 5, 115, 0, 0, 1132, 1133, 5, 101, 0, 0, 1133, 1134, 5, 108, 0, 0, 1134, 1135, 5, 102, 0, 0, 1135, 194, 1, 0, 0, 0, 1136, 1137, 5, 83, 0, 0, 1137, 1138, 5, 101, 0, 0, 1138, 1139, 5, 108, 0, 0, 1139, 1140, 5, 102, 0, 0, 1140, 196, 1, 0, 0, 0, 1141, 1142, 5, 109, 0, 0, 1142, 1143, 5, 97, 0, 0, 1143, 1144, 5, 99, 0, 0, 1144, 1145, 5, 79, 0, 0, 1145, 1146, 5, 83, 0, 0, 1146, 198, 1, 0, 0, 0, 1147, 1148, 5, 105, 0, 0, 1148, 1149, 5, 79, 0, 0, 1149, 1150, 5, 83, 0, 0, 1150, 200, 1, 0, 0, 0, 1151, 1152, 5, 79, 0, 0, 1152, 1153, 5, 83, 0, 0, 1153, 1154, 5, 88, 0, 0, 1154, 202, 1, 0, 0, 0, 1155, 1156, 5, 119, 0, 0, 1156, 1157, 5, 97, 0, 0, 1157, 1158, 5, 116, 0, 0, 1158, 1159, 5, 99, 0, 0, 1159, 1160, 5, 104, 0, 0, 1160, 1161, 5, 79, 0, 0, 1161, 1162, 5, 83, 0, 0, 1162, 204, 1, 0, 0, 0, 1163, 1164, 5, 116, 0, 0, 1164, 1165, 5, 118, 0, 0, 1165, 1166, 5, 79, 0, 0, 1166, 1167, 5, 83, 0, 0, 1167, 206, 1, 0, 0, 0, 1168, 1169, 5, 76, 0, 0, 1169, 1170, 5, 105, 0, 0, 1170, 1171, 5, 110, 0, 0, 1171, 1172, 5, 117, 0, 0, 1172, 1173, 5, 120, 0, 0, 1173, 208, 1, 0, 0, 0, 1174, 1175, 5, 87, 0, 0, 1175, 1176, 5, 105, 0, 0, 1176, 1177, 5, 110, 0, 0, 1177, 1178, 5, 100, 0, 0, 1178, 1179, 5, 111, 0, 0, 1179, 1180, 5, 119, 0, 0, 1180, 1181, 5, 115, 0, 0, 1181, 210, 1, 0, 0, 0, 1182, 1183, 5, 105, 0, 0, 1183, 1184, 5, 51, 0, 0, 1184, 1185, 5, 56, 0, 0, 1185, 1186, 5, 54, 0, 0, 1186, 212, 1, 0, 0, 0, 1187, 1188, 5, 120, 0, 0, 1188, 1189, 5, 56, 0, 0, 1189, 1190, 5, 54, 0, 0, 1190, 1191, 5, 95, 0, 0, 1191, 1192, 5, 54, 0, 0, 1192, 1193, 5, 52, 0, 0, 1193, 214, 1, 0, 0, 0, 1194, 1195, 5, 97, 0, 0, 1195, 1196, 5, 114, 0, 0, 1196, 1197, 5, 109, 0, 0, 1197, 216, 1, 0, 0, 0, 1198, 1199, 5, 97, 0, 0, 1199, 1200, 5, 114, 0, 0, 1200, 1201, 5, 109, 0, 0, 1201, 1202, 5, 54, 0, 0, 1202, 1203, 5, 52, 0, 0, 1203, 218, 1, 0, 0, 0, 1204, 1205, 5, 115, 0, 0, 1205, 1206, 5, 105, 0, 0, 1206, 1207, 5, 109, 0, 0, 1207, 1208, 5, 117, 0, 0, 1208, 1209, 5, 108, 0, 0, 1209, 1210, 5, 97, 0, 0, 1210, 1211, 5, 116, 0, 0, 1211, 1212, 5, 111, 0, 0, 1212, 1213, 5, 114, 0, 0, 1213, 220, 1, 0, 0, 0, 1214, 1215, 5, 109, 0, 0, 1215, 1216, 5, 97, 0, 0, 1216, 1217, 5, 99, 0, 0, 1217, 1218, 5, 67, 0, 0, 1218, 1219, 5, 97, 0, 0, 1219, 1220, 5, 116, 0, 0, 1220, 1221, 5, 97, 0, 0, 1221, 1222, 5, 108, 0, 0, 1222, 1223, 5, 121, 0, 0, 1223, 1224, 5, 115, 0, 0, 1224, 1225, 5, 116, 0, 0, 1225, 222, 1, 0, 0, 0, 1226, 1227, 5, 105, 0, 0, 1227, 1228, 5, 79, 0, 0, 1228, 1229, 5, 83, 0, 0, 1229, 1230, 5, 65, 0, 0, 1230, 1231, 5, 112, 0, 0, 1231, 1232, 5, 112, 0, 0, 1232, 1233, 5, 108, 0, 0, 1233, 1234, 5, 105, 0, 0, 1234, 1235, 5, 99, 0, 0, 1235, 1236, 5, 97, 0, 0, 1236, 1237, 5, 116, 0, 0, 1237, 1238, 5, 105, 0, 0, 1238, 1239, 5, 111, 0, 0, 1239, 1240, 5, 110, 0, 0, 1240, 1241, 5, 69, 0, 0, 1241, 1242, 5, 120, 0, 0, 1242, 1243, 5, 116, 0, 0, 1243, 1244, 5, 101, 0, 0, 1244, 1245, 5, 110, 0, 0, 1245, 1246, 5, 115, 0, 0, 1246, 1247, 5, 105, 0, 0, 1247, 1248, 5, 111, 0, 0, 1248, 1249, 5, 110, 0, 0, 1249, 224, 1, 0, 0, 0, 1250, 1251, 5, 109, 0, 0, 1251, 1252, 5, 97, 0, 0, 1252, 1253, 5, 99, 0, 0, 1253, 1254, 5, 67, 0, 0, 1254, 1255, 5, 97, 0, 0, 1255, 1256, 5, 116, 0, 0, 1256, 1257, 5, 97, 0, 0, 1257, 1258, 5, 108, 0, 0, 1258, 1259, 5, 121, 0, 0, 1259, 1260, 5, 115, 0, 0, 1260, 1261, 5, 116, 0, 0, 1261, 1262, 5, 65, 0, 0, 1262, 1263, 5, 112, 0, 0, 1263, 1264, 5, 112, 0, 0, 1264, 1265, 5, 108, 0, 0, 1265, 1266, 5, 105, 0, 0, 1266, 1267, 5, 99, 0, 0, 1267, 1268, 5, 97, 0, 0, 1268, 1269, 5, 116, 0, 0, 1269, 1270, 5, 105, 0, 0, 1270, 1271, 5, 111, 0, 0, 1271, 1272, 5, 110, 0, 0, 1272, 1273, 5, 69, 0, 0, 1273, 1274, 5, 120, 0, 0, 1274, 1275, 5, 116, 0, 0, 1275, 1276, 5, 101, 0, 0, 1276, 1277, 5, 110, 0, 0, 1277, 1278, 5, 115, 0, 0, 1278, 1279, 5, 105, 0, 0, 1279, 1280, 5, 111, 0, 0, 1280, 1281, 5, 110, 0, 0, 1281, 226, 1, 0, 0, 0, 1282, 1283, 5, 109, 0, 0, 1283, 1284, 5, 97, 0, 0, 1284, 1285, 5, 99, 0, 0, 1285, 1286, 5, 79, 0, 0, 1286, 1287, 5, 83, 0, 0, 1287, 1288, 5, 65, 0, 0, 1288, 1289, 5, 112, 0, 0, 1289, 1290, 5, 112, 0, 0, 1290, 1291, 5, 108, 0, 0, 1291, 1292, 5, 105, 0, 0, 1292, 1293, 5, 99, 0, 0, 1293, 1294, 5, 97, 0, 0, 1294, 1295, 5, 116, 0, 0, 1295, 1296, 5, 105, 0, 0, 1296, 1297, 5, 111, 0, 0, 1297, 1298, 5, 110, 0, 0, 1298, 1299, 5, 69, 0, 0, 1299, 1300, 5, 120, 0, 0, 1300, 1301, 5, 116, 0, 0, 1301, 1302, 5, 101, 0, 0, 1302, 1303, 5, 110, 0, 0, 1303, 1304, 5, 115, 0, 0, 1304, 1305, 5, 105, 0, 0, 1305, 1306, 5, 111, 0, 0, 1306, 1307, 5, 110, 0, 0, 1307, 228, 1, 0, 0, 0, 1308, 1309, 5, 35, 0, 0, 1309, 1310, 5, 115, 0, 0, 1310, 1311, 5, 111, 0, 0, 1311, 1312, 5, 117, 0, 0, 1312, 1313, 5, 114, 0, 0, 1313, 1314, 5, 99, 0, 0, 1314, 1315, 5, 101, 0, 0, 1315, 1316, 5, 76, 0, 0, 1316, 1317, 5, 111, 0, 0, 1317, 1318, 5, 99, 0, 0, 1318, 1319, 5, 97, 0, 0, 1319, 1320, 5, 116, 0, 0, 1320, 1321, 5, 105, 0, 0, 1321, 1322, 5, 111, 0, 0, 1322, 1323, 5, 110, 0, 0, 1323, 230, 1, 0, 0, 0, 1324, 1325, 5, 102, 0, 0, 1325, 1326, 5, 105, 0, 0, 1326, 1327, 5, 108, 0, 0, 1327, 1328, 5, 101, 0, 0, 1328, 232, 1, 0, 0, 0, 1329, 1330, 5, 108, 0, 0, 1330, 1331, 5, 105, 0, 0, 1331, 1332, 5, 110, 0, 0, 1332, 1333, 5, 101, 0, 0, 1333, 234, 1, 0, 0, 0, 1334, 1335, 5, 35, 0, 0, 1335, 1336, 5, 101, 0, 0, 1336, 1337, 5, 114, 0, 0, 1337, 1338, 5, 114, 0, 0, 1338, 1339, 5, 111, 0, 0, 1339, 1340, 5, 114, 0, 0, 1340, 236, 1, 0, 0, 0, 1341, 1342, 5, 35, 0, 0, 1342, 1343, 5, 119, 0, 0, 1343, 1344, 5, 97, 0, 0, 1344, 1345, 5, 114, 0, 0, 1345, 1346, 5, 110, 0, 0, 1346, 1347, 5, 105, 0, 0, 1347, 1348, 5, 110, 0, 0, 1348, 1349, 5, 103, 0, 0, 1349, 238, 1, 0, 0, 0, 1350, 1351, 5, 35, 0, 0, 1351, 1352, 5, 97, 0, 0, 1352, 1353, 5, 118, 0, 0, 1353, 1354, 5, 97, 0, 0, 1354, 1355, 5, 105, 0, 0, 1355, 1356, 5, 108, 0, 0, 1356, 1357, 5, 97, 0, 0, 1357, 1358, 5, 98, 0, 0, 1358, 1359, 5, 108, 0, 0, 1359, 1360, 5, 101, 0, 0, 1360, 240, 1, 0, 0, 0, 1361, 1362, 5, 35, 0, 0, 1362, 1363, 5, 105, 0, 0, 1363, 1364, 5, 102, 0, 0, 1364, 242, 1, 0, 0, 0, 1365, 1366, 5, 35, 0, 0, 1366, 1367, 5, 101, 0, 0, 1367, 1368, 5, 108, 0, 0, 1368, 1369, 5, 115, 0, 0, 1369, 1370, 5, 101, 0, 0, 1370, 1371, 5, 105, 0, 0, 1371, 1372, 5, 102, 0, 0, 1372, 244, 1, 0, 0, 0, 1373, 1374, 5, 35, 0, 0, 1374, 1375, 5, 101, 0, 0, 1375, 1376, 5, 108, 0, 0, 1376, 1377, 5, 115, 0, 0, 1377, 1378, 5, 101, 0, 0, 1378, 246, 1, 0, 0, 0, 1379, 1380, 5, 35, 0, 0, 1380, 1381, 5, 101, 0, 0, 1381, 1382, 5, 110, 0, 0, 1382, 1383, 5, 100, 0, 0, 1383, 1384, 5, 105, 0, 0, 1384, 1385, 5, 102, 0, 0, 1385, 248, 1, 0, 0, 0, 1386, 1387, 5, 35, 0, 0, 1387, 1388, 5, 102, 0, 0, 1388, 1389, 5, 105, 0, 0, 1389, 1390, 5, 108, 0, 0, 1390, 1391, 5, 101, 0, 0, 1391, 250, 1, 0, 0, 0, 1392, 1393, 5, 35, 0, 0, 1393, 1394, 5, 102, 0, 0, 1394, 1395, 5, 105, 0, 0, 1395, 1396, 5, 108, 0, 0, 1396, 1397, 5, 101, 0, 0, 1397, 1398, 5, 73, 0, 0, 1398, 1399, 5, 68, 0, 0, 1399, 252, 1, 0, 0, 0, 1400, 1401, 5, 35, 0, 0, 1401, 1402, 5, 102, 0, 0, 1402, 1403, 5, 105, 0, 0, 1403, 1404, 5, 108, 0, 0, 1404, 1405, 5, 101, 0, 0, 1405, 1406, 5, 80, 0, 0, 1406, 1407, 5, 97, 0, 0, 1407, 1408, 5, 116, 0, 0, 1408, 1409, 5, 104, 0, 0, 1409, 254, 1, 0, 0, 0, 1410, 1411, 5, 35, 0, 0, 1411, 1412, 5, 108, 0, 0, 1412, 1413, 5, 105, 0, 0, 1413, 1414, 5, 110, 0, 0, 1414, 1415, 5, 101, 0, 0, 1415, 256, 1, 0, 0, 0, 1416, 1417, 5, 35, 0, 0, 1417, 1418, 5, 99, 0, 0, 1418, 1419, 5, 111, 0, 0, 1419, 1420, 5, 108, 0, 0, 1420, 1421, 5, 117, 0, 0, 1421, 1422, 5, 109, 0, 0, 1422, 1423, 5, 110, 0, 0, 1423, 258, 1, 0, 0, 0, 1424, 1425, 5, 35, 0, 0, 1425, 1426, 5, 102, 0, 0, 1426, 1427, 5, 117, 0, 0, 1427, 1428, 5, 110, 0, 0, 1428, 1429, 5, 99, 0, 0, 1429, 1430, 5, 116, 0, 0, 1430, 1431, 5, 105, 0, 0, 1431, 1432, 5, 111, 0, 0, 1432, 1433, 5, 110, 0, 0, 1433, 260, 1, 0, 0, 0, 1434, 1435, 5, 35, 0, 0, 1435, 1436, 5, 100, 0, 0, 1436, 1437, 5, 115, 0, 0, 1437, 1438, 5, 111, 0, 0, 1438, 1439, 5, 104, 0, 0, 1439, 1440, 5, 97, 0, 0, 1440, 1441, 5, 110, 0, 0, 1441, 1442, 5, 100, 0, 0, 1442, 1443, 5, 108, 0, 0, 1443, 1444, 5, 101, 0, 0, 1444, 262, 1, 0, 0, 0, 1445, 1446, 5, 35, 0, 0, 1446, 1447, 5, 115, 0, 0, 1447, 1448, 5, 101, 0, 0, 1448, 1449, 5, 108, 0, 0, 1449, 1450, 5, 101, 0, 0, 1450, 1451, 5, 99, 0, 0, 1451, 1452, 5, 116, 0, 0, 1452, 1453, 5, 111, 0, 0, 1453, 1454, 5, 114, 0, 0, 1454, 264, 1, 0, 0, 0, 1455, 1456, 5, 35, 0, 0, 1456, 1457, 5, 107, 0, 0, 1457, 1458, 5, 101, 0, 0, 1458, 1459, 5, 121, 0, 0, 1459, 1460, 5, 80, 0, 0, 1460, 1461, 5, 97, 0, 0, 1461, 1462, 5, 116, 0, 0, 1462, 1463, 5, 104, 0, 0, 1463, 266, 1, 0, 0, 0, 1464, 1465, 5, 35, 0, 0, 1465, 1466, 5, 99, 0, 0, 1466, 1467, 5, 111, 0, 0, 1467, 1468, 5, 108, 0, 0, 1468, 1469, 5, 111, 0, 0, 1469, 1470, 5, 114, 0, 0, 1470, 1471, 5, 76, 0, 0, 1471, 1472, 5, 105, 0, 0, 1472, 1473, 5, 116, 0, 0, 1473, 1474, 5, 101, 0, 0, 1474, 1475, 5, 114, 0, 0, 1475, 1476, 5, 97, 0, 0, 1476, 1477, 5, 108, 0, 0, 1477, 268, 1, 0, 0, 0, 1478, 1479, 5, 35, 0, 0, 1479, 1480, 5, 102, 0, 0, 1480, 1481, 5, 105, 0, 0, 1481, 1482, 5, 108, 0, 0, 1482, 1483, 5, 101, 0, 0, 1483, 1484, 5, 76, 0, 0, 1484, 1485, 5, 105, 0, 0, 1485, 1486, 5, 116, 0, 0, 1486, 1487, 5, 101, 0, 0, 1487, 1488, 5, 114, 0, 0, 1488, 1489, 5, 97, 0, 0, 1489, 1490, 5, 108, 0, 0, 1490, 270, 1, 0, 0, 0, 1491, 1492, 5, 35, 0, 0, 1492, 1493, 5, 105, 0, 0, 1493, 1494, 5, 109, 0, 0, 1494, 1495, 5, 97, 0, 0, 1495, 1496, 5, 103, 0, 0, 1496, 1497, 5, 101, 0, 0, 1497, 1498, 5, 76, 0, 0, 1498, 1499, 5, 105, 0, 0, 1499, 1500, 5, 116, 0, 0, 1500, 1501, 5, 101, 0, 0, 1501, 1502, 5, 114, 0, 0, 1502, 1503, 5, 97, 0, 0, 1503, 1504, 5, 108, 0, 0, 1504, 272, 1, 0, 0, 0, 1505, 1506, 5, 103, 0, 0, 1506, 1507, 5, 101, 0, 0, 1507, 1508, 5, 116, 0, 0, 1508, 1509, 5, 116, 0, 0, 1509, 1510, 5, 101, 0, 0, 1510, 1511, 5, 114, 0, 0, 1511, 274, 1, 0, 0, 0, 1512, 1513, 5, 115, 0, 0, 1513, 1514, 5, 101, 0, 0, 1514, 1515, 5, 116, 0, 0, 1515, 1516, 5, 116, 0, 0, 1516, 1517, 5, 101, 0, 0, 1517, 1518, 5, 114, 0, 0, 1518, 276, 1, 0, 0, 0, 1519, 1521, 3, 279, 137, 0, 1520, 1522, 3, 283, 139, 0, 1521, 1520, 1, 0, 0, 0, 1521, 1522, 1, 0, 0, 0, 1522, 1526, 1, 0, 0, 0, 1523, 1526, 3, 285, 140, 0, 1524, 1526, 3, 287, 141, 0, 1525, 1519, 1, 0, 0, 0, 1525, 1523, 1, 0, 0, 0, 1525, 1524, 1, 0, 0, 0, 1526, 278, 1, 0, 0, 0, 1527, 1529, 7, 0, 0, 0, 1528, 1527, 1, 0, 0, 0, 1529, 280, 1, 0, 0, 0, 1530, 1533, 7, 1, 0, 0, 1531, 1533, 3, 279, 137, 0, 1532, 1530, 1, 0, 0, 0, 1532, 1531, 1, 0, 0, 0, 1533, 282, 1, 0, 0, 0, 1534, 1536, 3, 281, 138, 0, 1535, 1534, 1, 0, 0, 0, 1536, 1537, 1, 0, 0, 0, 1537, 1535, 1, 0, 0, 0, 1537, 1538, 1, 0, 0, 0, 1538, 284, 1, 0, 0, 0, 1539, 1540, 5, 36, 0, 0, 1540, 1541, 3, 369, 182, 0, 1541, 286, 1, 0, 0, 0, 1542, 1543, 5, 36, 0, 0, 1543, 1544, 3, 283, 139, 0, 1544, 288, 1, 0, 0, 0, 1545, 1546, 5, 46, 0, 0, 1546, 290, 1, 0, 0, 0, 1547, 1548, 5, 123, 0, 0, 1548, 292, 1, 0, 0, 0, 1549, 1550, 5, 40, 0, 0, 1550, 1551, 6, 144, 0, 0, 1551, 294, 1, 0, 0, 0, 1552, 1553, 5, 91, 0, 0, 1553, 296, 1, 0, 0, 0, 1554, 1555, 5, 125, 0, 0, 1555, 298, 1, 0, 0, 0, 1556, 1557, 5, 41, 0, 0, 1557, 1558, 6, 147, 1, 0, 1558, 300, 1, 0, 0, 0, 1559, 1560, 5, 93, 0, 0, 1560, 302, 1, 0, 0, 0, 1561, 1562, 5, 44, 0, 0, 1562, 304, 1, 0, 0, 0, 1563, 1564, 5, 58, 0, 0, 1564, 306, 1, 0, 0, 0, 1565, 1566, 5, 59, 0, 0, 1566, 308, 1, 0, 0, 0, 1567, 1568, 5, 60, 0, 0, 1568, 310, 1, 0, 0, 0, 1569, 1570, 5, 62, 0, 0, 1570, 312, 1, 0, 0, 0, 1571, 1572, 5, 95, 0, 0, 1572, 314, 1, 0, 0, 0, 1573, 1574, 5, 33, 0, 0, 1574, 316, 1, 0, 0, 0, 1575, 1576, 5, 63, 0, 0, 1576, 318, 1, 0, 0, 0, 1577, 1578, 5, 64, 0, 0, 1578, 320, 1, 0, 0, 0, 1579, 1580, 5, 38, 0, 0, 1580, 322, 1, 0, 0, 0, 1581, 1582, 5, 45, 0, 0, 1582, 324, 1, 0, 0, 0, 1583, 1584, 5, 61, 0, 0, 1584, 326, 1, 0, 0, 0, 1585, 1586, 5, 124, 0, 0, 1586, 328, 1, 0, 0, 0, 1587, 1588, 5, 47, 0, 0, 1588, 330, 1, 0, 0, 0, 1589, 1590, 5, 43, 0, 0, 1590, 332, 1, 0, 0, 0, 1591, 1592, 5, 42, 0, 0, 1592, 334, 1, 0, 0, 0, 1593, 1594, 5, 37, 0, 0, 1594, 336, 1, 0, 0, 0, 1595, 1596, 5, 94, 0, 0, 1596, 338, 1, 0, 0, 0, 1597, 1598, 5, 126, 0, 0, 1598, 340, 1, 0, 0, 0, 1599, 1600, 5, 35, 0, 0, 1600, 342, 1, 0, 0, 0, 1601, 1602, 5, 96, 0, 0, 1602, 344, 1, 0, 0, 0, 1603, 1604, 5, 36, 0, 0, 1604, 346, 1, 0, 0, 0, 1605, 1606, 5, 92, 0, 0, 1606, 348, 1, 0, 0, 0, 1607, 1609, 7, 2, 0, 0, 1608, 1607, 1, 0, 0, 0, 1609, 350, 1, 0, 0, 0, 1610, 1612, 7, 3, 0, 0, 1611, 1610, 1, 0, 0, 0, 1612, 352, 1, 0, 0, 0, 1613, 1614, 5, 48, 0, 0, 1614, 1615, 5, 98, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1618, 3, 355, 175, 0, 1617, 1619, 3, 359, 177, 0, 1618, 1617, 1, 0, 0, 0, 1618, 1619, 1, 0, 0, 0, 1619, 354, 1, 0, 0, 0, 1620, 1621, 7, 4, 0, 0, 1621, 356, 1, 0, 0, 0, 1622, 1625, 3, 355, 175, 0, 1623, 1625, 5, 95, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1623, 1, 0, 0, 0, 1625, 358, 1, 0, 0, 0, 1626, 1628, 3, 357, 176, 0, 1627, 1626, 1, 0, 0, 0, 1628, 1629, 1, 0, 0, 0, 1629, 1627, 1, 0, 0, 0, 1629, 1630, 1, 0, 0, 0, 1630, 360, 1, 0, 0, 0, 1631, 1632, 5, 48, 0, 0, 1632, 1633, 5, 111, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 3, 363, 179, 0, 1635, 1637, 3, 367, 181, 0, 1636, 1635, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 362, 1, 0, 0, 0, 1638, 1639, 7, 5, 0, 0, 1639, 364, 1, 0, 0, 0, 1640, 1643, 3, 363, 179, 0, 1641, 1643, 5, 95, 0, 0, 1642, 1640, 1, 0, 0, 0, 1642, 1641, 1, 0, 0, 0, 1643, 366, 1, 0, 0, 0, 1644, 1646, 3, 365, 180, 0, 1645, 1644, 1, 0, 0, 0, 1646, 1647, 1, 0, 0, 0, 1647, 1645, 1, 0, 0, 0, 1647, 1648, 1, 0, 0, 0, 1648, 368, 1, 0, 0, 0, 1649, 1651, 3, 373, 184, 0, 1650, 1649, 1, 0, 0, 0, 1651, 1652, 1, 0, 0, 0, 1652, 1650, 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 370, 1, 0, 0, 0, 1654, 1656, 3, 373, 184, 0, 1655, 1657, 3, 377, 186, 0, 1656, 1655, 1, 0, 0, 0, 1656, 1657, 1, 0, 0, 0, 1657, 372, 1, 0, 0, 0, 1658, 1659, 7, 6, 0, 0, 1659, 374, 1, 0, 0, 0, 1660, 1663, 3, 373, 184, 0, 1661, 1663, 5, 95, 0, 0, 1662, 1660, 1, 0, 0, 0, 1662, 1661, 1, 0, 0, 0, 1663, 376, 1, 0, 0, 0, 1664, 1666, 3, 375, 185, 0, 1665, 1664, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1665, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 378, 1, 0, 0, 0, 1669, 1670, 5, 48, 0, 0, 1670, 1671, 5, 120, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1674, 3, 381, 188, 0, 1673, 1675, 3, 385, 190, 0, 1674, 1673, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 380, 1, 0, 0, 0, 1676, 1677, 7, 7, 0, 0, 1677, 382, 1, 0, 0, 0, 1678, 1681, 3, 381, 188, 0, 1679, 1681, 5, 95, 0, 0, 1680, 1678, 1, 0, 0, 0, 1680, 1679, 1, 0, 0, 0, 1681, 384, 1, 0, 0, 0, 1682, 1684, 3, 383, 189, 0, 1683, 1682, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1683, 1, 0, 0, 0, 1685, 1686, 1, 0, 0, 0, 1686, 386, 1, 0, 0, 0, 1687, 1689, 3, 371, 183, 0, 1688, 1690, 3, 389, 192, 0, 1689, 1688, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1692, 1, 0, 0, 0, 1691, 1693, 3, 391, 193, 0, 1692, 1691, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1701, 1, 0, 0, 0, 1694, 1696, 3, 379, 187, 0, 1695, 1697, 3, 393, 194, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1699, 3, 395, 195, 0, 1699, 1701, 1, 0, 0, 0, 1700, 1687, 1, 0, 0, 0, 1700, 1694, 1, 0, 0, 0, 1701, 388, 1, 0, 0, 0, 1702, 1703, 5, 46, 0, 0, 1703, 1704, 3, 371, 183, 0, 1704, 390, 1, 0, 0, 0, 1705, 1707, 3, 397, 196, 0, 1706, 1708, 3, 401, 198, 0, 1707, 1706, 1, 0, 0, 0, 1707, 1708, 1, 0, 0, 0, 1708, 1709, 1, 0, 0, 0, 1709, 1710, 3, 371, 183, 0, 1710, 392, 1, 0, 0, 0, 1711, 1712, 5, 46, 0, 0, 1712, 1714, 3, 381, 188, 0, 1713, 1715, 3, 385, 190, 0, 1714, 1713, 1, 0, 0, 0, 1714, 1715, 1, 0, 0, 0, 1715, 394, 1, 0, 0, 0, 1716, 1718, 3, 399, 197, 0, 1717, 1719, 3, 401, 198, 0, 1718, 1717, 1, 0, 0, 0, 1718, 1719, 1, 0, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 1721, 3, 371, 183, 0, 1721, 396, 1, 0, 0, 0, 1722, 1723, 7, 8, 0, 0, 1723, 398, 1, 0, 0, 0, 1724, 1725, 7, 9, 0, 0, 1725, 400, 1, 0, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 402, 1, 0, 0, 0, 1728, 1730, 7, 11, 0, 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, 1733, 1, 0, 0, 0, 1733, 1734, 6, 199, 2, 0, 1734, 404, 1, 0, 0, 0, 1735, 1736, 5, 35, 0, 0, 1736, 1737, 5, 33, 0, 0, 1737, 1741, 1, 0, 0, 0, 1738, 1740, 9, 0, 0, 0, 1739, 1738, 1, 0, 0, 0, 1740, 1743, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1741, 1739, 1, 0, 0, 0, 1742, 1745, 1, 0, 0, 0, 1743, 1741, 1, 0, 0, 0, 1744, 1746, 7, 12, 0, 0, 1745, 1744, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1745, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1750, 6, 200, 2, 0, 1750, 406, 1, 0, 0, 0, 1751, 1752, 5, 47, 0, 0, 1752, 1753, 5, 42, 0, 0, 1753, 1758, 1, 0, 0, 0, 1754, 1757, 3, 407, 201, 0, 1755, 1757, 9, 0, 0, 0, 1756, 1754, 1, 0, 0, 0, 1756, 1755, 1, 0, 0, 0, 1757, 1760, 1, 0, 0, 0, 1758, 1759, 1, 0, 0, 0, 1758, 1756, 1, 0, 0, 0, 1759, 1761, 1, 0, 0, 0, 1760, 1758, 1, 0, 0, 0, 1761, 1762, 5, 42, 0, 0, 1762, 1763, 5, 47, 0, 0, 1763, 1764, 1, 0, 0, 0, 1764, 1765, 6, 201, 2, 0, 1765, 408, 1, 0, 0, 0, 1766, 1767, 5, 47, 0, 0, 1767, 1768, 5, 47, 0, 0, 1768, 1772, 1, 0, 0, 0, 1769, 1771, 9, 0, 0, 0, 1770, 1769, 1, 0, 0, 0, 1771, 1774, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1772, 1770, 1, 0, 0, 0, 1773, 1776, 1, 0, 0, 0, 1774, 1772, 1, 0, 0, 0, 1775, 1777, 7, 13, 0, 0, 1776, 1775, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1779, 6, 202, 2, 0, 1779, 410, 1, 0, 0, 0, 1780, 1782, 5, 35, 0, 0, 1781, 1780, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1781, 1, 0, 0, 0, 1783, 1784, 1, 0, 0, 0, 1784, 1785, 1, 0, 0, 0, 1785, 1786, 5, 34, 0, 0, 1786, 1787, 5, 34, 0, 0, 1787, 1788, 5, 34, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1790, 6, 203, 3, 0, 1790, 412, 1, 0, 0, 0, 1791, 1793, 5, 35, 0, 0, 1792, 1791, 1, 0, 0, 0, 1793, 1794, 1, 0, 0, 0, 1794, 1792, 1, 0, 0, 0, 1794, 1795, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, 5, 34, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1799, 6, 204, 4, 0, 1799, 414, 1, 0, 0, 0, 1800, 1801, 5, 34, 0, 0, 1801, 1802, 5, 34, 0, 0, 1802, 1803, 5, 34, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1805, 6, 205, 5, 0, 1805, 416, 1, 0, 0, 0, 1806, 1807, 5, 34, 0, 0, 1807, 1808, 1, 0, 0, 0, 1808, 1809, 6, 206, 6, 0, 1809, 418, 1, 0, 0, 0, 1810, 1811, 5, 92, 0, 0, 1811, 1812, 5, 40, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1814, 6, 207, 7, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1816, 6, 207, 8, 0, 1816, 420, 1, 0, 0, 0, 1817, 1818, 5, 34, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1820, 6, 208, 9, 0, 1820, 422, 1, 0, 0, 0, 1821, 1822, 3, 439, 217, 0, 1822, 424, 1, 0, 0, 0, 1823, 1824, 5, 92, 0, 0, 1824, 1825, 5, 40, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 1827, 6, 210, 10, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1829, 6, 210, 8, 0, 1829, 426, 1, 0, 0, 0, 1830, 1831, 5, 34, 0, 0, 1831, 1832, 5, 34, 0, 0, 1832, 1833, 5, 34, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 1835, 6, 211, 9, 0, 1835, 428, 1, 0, 0, 0, 1836, 1837, 3, 443, 219, 0, 1837, 430, 1, 0, 0, 0, 1838, 1840, 5, 34, 0, 0, 1839, 1841, 5, 35, 0, 0, 1840, 1839, 1, 0, 0, 0, 1841, 1842, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1845, 6, 213, 9, 0, 1845, 432, 1, 0, 0, 0, 1846, 1848, 8, 14, 0, 0, 1847, 1846, 1, 0, 0, 0, 1848, 1849, 1, 0, 0, 0, 1849, 1847, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 434, 1, 0, 0, 0, 1851, 1852, 5, 34, 0, 0, 1852, 1853, 5, 34, 0, 0, 1853, 1854, 5, 34, 0, 0, 1854, 1856, 1, 0, 0, 0, 1855, 1857, 5, 35, 0, 0, 1856, 1855, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 1856, 1, 0, 0, 0, 1858, 1859, 1, 0, 0, 0, 1859, 1860, 1, 0, 0, 0, 1860, 1861, 6, 215, 9, 0, 1861, 436, 1, 0, 0, 0, 1862, 1864, 8, 15, 0, 0, 1863, 1862, 1, 0, 0, 0, 1864, 1865, 1, 0, 0, 0, 1865, 1863, 1, 0, 0, 0, 1865, 1866, 1, 0, 0, 0, 1866, 1872, 1, 0, 0, 0, 1867, 1869, 5, 34, 0, 0, 1868, 1870, 5, 34, 0, 0, 1869, 1868, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1872, 1, 0, 0, 0, 1871, 1863, 1, 0, 0, 0, 1871, 1867, 1, 0, 0, 0, 1872, 438, 1, 0, 0, 0, 1873, 1875, 3, 441, 218, 0, 1874, 1873, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1874, 1, 0, 0, 0, 1876, 1877, 1, 0, 0, 0, 1877, 440, 1, 0, 0, 0, 1878, 1881, 3, 447, 221, 0, 1879, 1881, 8, 16, 0, 0, 1880, 1878, 1, 0, 0, 0, 1880, 1879, 1, 0, 0, 0, 1881, 442, 1, 0, 0, 0, 1882, 1894, 3, 447, 221, 0, 1883, 1885, 8, 17, 0, 0, 1884, 1883, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1884, 1, 0, 0, 0, 1886, 1887, 1, 0, 0, 0, 1887, 1894, 1, 0, 0, 0, 1888, 1890, 5, 34, 0, 0, 1889, 1891, 5, 34, 0, 0, 1890, 1889, 1, 0, 0, 0, 1890, 1891, 1, 0, 0, 0, 1891, 1894, 1, 0, 0, 0, 1892, 1894, 3, 451, 223, 0, 1893, 1882, 1, 0, 0, 0, 1893, 1884, 1, 0, 0, 0, 1893, 1888, 1, 0, 0, 0, 1893, 1892, 1, 0, 0, 0, 1894, 444, 1, 0, 0, 0, 1895, 1899, 5, 92, 0, 0, 1896, 1898, 5, 35, 0, 0, 1897, 1896, 1, 0, 0, 0, 1898, 1901, 1, 0, 0, 0, 1899, 1897, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 446, 1, 0, 0, 0, 1901, 1899, 1, 0, 0, 0, 1902, 1909, 3, 445, 220, 0, 1903, 1910, 7, 18, 0, 0, 1904, 1905, 5, 117, 0, 0, 1905, 1906, 5, 123, 0, 0, 1906, 1907, 3, 449, 222, 0, 1907, 1908, 5, 125, 0, 0, 1908, 1910, 1, 0, 0, 0, 1909, 1903, 1, 0, 0, 0, 1909, 1904, 1, 0, 0, 0, 1910, 448, 1, 0, 0, 0, 1911, 1913, 3, 381, 188, 0, 1912, 1914, 3, 381, 188, 0, 1913, 1912, 1, 0, 0, 0, 1913, 1914, 1, 0, 0, 0, 1914, 1916, 1, 0, 0, 0, 1915, 1917, 3, 381, 188, 0, 1916, 1915, 1, 0, 0, 0, 1916, 1917, 1, 0, 0, 0, 1917, 1919, 1, 0, 0, 0, 1918, 1920, 3, 381, 188, 0, 1919, 1918, 1, 0, 0, 0, 1919, 1920, 1, 0, 0, 0, 1920, 1922, 1, 0, 0, 0, 1921, 1923, 3, 381, 188, 0, 1922, 1921, 1, 0, 0, 0, 1922, 1923, 1, 0, 0, 0, 1923, 1925, 1, 0, 0, 0, 1924, 1926, 3, 381, 188, 0, 1925, 1924, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1928, 1, 0, 0, 0, 1927, 1929, 3, 381, 188, 0, 1928, 1927, 1, 0, 0, 0, 1928, 1929, 1, 0, 0, 0, 1929, 1931, 1, 0, 0, 0, 1930, 1932, 3, 381, 188, 0, 1931, 1930, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 450, 1, 0, 0, 0, 1933, 1935, 3, 445, 220, 0, 1934, 1936, 3, 453, 224, 0, 1935, 1934, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1937, 1, 0, 0, 0, 1937, 1938, 3, 455, 225, 0, 1938, 452, 1, 0, 0, 0, 1939, 1940, 7, 19, 0, 0, 1940, 454, 1, 0, 0, 0, 1941, 1945, 7, 12, 0, 0, 1942, 1943, 5, 13, 0, 0, 1943, 1945, 5, 10, 0, 0, 1944, 1941, 1, 0, 0, 0, 1944, 1942, 1, 0, 0, 0, 1945, 456, 1, 0, 0, 0, 63, 0, 1, 2, 3, 4, 1521, 1525, 1528, 1532, 1537, 1608, 1611, 1618, 1624, 1629, 1636, 1642, 1647, 1652, 1656, 1662, 1667, 1674, 1680, 1685, 1689, 1692, 1696, 1700, 1707, 1714, 1718, 1731, 1741, 1747, 1756, 1758, 1772, 1776, 1783, 1794, 1842, 1849, 1858, 1865, 1869, 1871, 1876, 1880, 1886, 1890, 1893, 1899, 1909, 1913, 1916, 1919, 1922, 1925, 1928, 1931, 1935, 1944, 11, 1, 144, 0, 1, 147, 1, 0, 1, 0, 5, 4, 0, 5, 3, 0, 5, 2, 0, 5, 1, 0, 1, 207, 2, 5, 0, 0, 4, 0, 0, 1, 210, 3] \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Lexer.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Lexer.java new file mode 100644 index 00000000..2a1a25af --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Lexer.java @@ -0,0 +1,1548 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +// Generated from Swift5Lexer.g4 by ANTLR 4.10 +package io.ecocode.ios.swift.antlr.generated; + +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; + +import java.util.Stack; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class Swift5Lexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.10", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + AS=1, ALPHA=2, BREAK=3, CASE=4, CATCH=5, CLASS=6, CONTINUE=7, DEFAULT=8, + DEFER=9, DO=10, GUARD=11, ELSE=12, ENUM=13, FOR=14, FALLTHROUGH=15, FUNC=16, + IN=17, IF=18, IMPORT=19, INTERNAL=20, FINAL=21, OPEN=22, PRIVATE=23, PUBLIC=24, + WHERE=25, WHILE=26, LET=27, VAR=28, PROTOCOL=29, GET=30, SET=31, WILL_SET=32, + DID_SET=33, REPEAT=34, SWITCH=35, STRUCT=36, RETURN=37, THROW=38, THROWS=39, + RETHROWS=40, INDIRECT=41, INIT=42, DEINIT=43, ASSOCIATED_TYPE=44, EXTENSION=45, + SUBSCRIPT=46, PREFIX=47, INFIX=48, LEFT=49, RIGHT=50, NONE=51, PRECEDENCE_GROUP=52, + HIGHER_THAN=53, LOWER_THAN=54, ASSIGNMENT=55, ASSOCIATIVITY=56, POSTFIX=57, + OPERATOR=58, TYPEALIAS=59, OS=60, ARCH=61, SWIFT=62, COMPILER=63, CAN_IMPORT=64, + TARGET_ENVIRONMENT=65, CONVENIENCE=66, DYNAMIC=67, LAZY=68, OPTIONAL=69, + OVERRIDE=70, REQUIRED=71, STATIC=72, WEAK=73, UNOWNED=74, SAFE=75, UNSAFE=76, + MUTATING=77, NONMUTATING=78, FILE_PRIVATE=79, IS=80, TRY=81, SUPER=82, + ANY=83, FALSE=84, RED=85, BLUE=86, GREEN=87, RESOURCE_NAME=88, TRUE=89, + NIL=90, INOUT=91, SOME=92, TYPE=93, PRECEDENCE=94, SELF=95, SELF_BIG=96, + MAC_OS=97, I_OS=98, OSX=99, WATCH_OS=100, TV_OS=101, LINUX=102, WINDOWS=103, + I386=104, X86_64=105, ARM=106, ARM64=107, SIMULATOR=108, MAC_CATALYST=109, + I_OS_APPLICATION_EXTENSION=110, MAC_CATALYST_APPLICATION_EXTENSION=111, + MAC_OS_APPLICATION_EXTENSION=112, SOURCE_LOCATION=113, FILE=114, LINE=115, + ERROR=116, WARNING=117, AVAILABLE=118, HASH_IF=119, HASH_ELSEIF=120, HASH_ELSE=121, + HASH_ENDIF=122, HASH_FILE=123, HASH_FILE_ID=124, HASH_FILE_PATH=125, HASH_LINE=126, + HASH_COLUMN=127, HASH_FUNCTION=128, HASH_DSO_HANDLE=129, HASH_SELECTOR=130, + HASH_KEYPATH=131, HASH_COLOR_LITERAL=132, HASH_FILE_LITERAL=133, HASH_IMAGE_LITERAL=134, + GETTER=135, SETTER=136, Identifier=137, DOT=138, LCURLY=139, LPAREN=140, + LBRACK=141, RCURLY=142, RPAREN=143, RBRACK=144, COMMA=145, COLON=146, + SEMI=147, LT=148, GT=149, UNDERSCORE=150, BANG=151, QUESTION=152, AT=153, + AND=154, SUB=155, EQUAL=156, OR=157, DIV=158, ADD=159, MUL=160, MOD=161, + CARET=162, TILDE=163, HASH=164, BACKTICK=165, DOLLAR=166, BACKSLASH=167, + Operator_head_other=168, Operator_following_character=169, Binary_literal=170, + Octal_literal=171, Decimal_digits=172, Decimal_literal=173, Hexadecimal_literal=174, + Floating_point_literal=175, WS=176, HASHBANG=177, Block_comment=178, Line_comment=179, + Multi_line_extended_string_open=180, Single_line_extended_string_open=181, + Multi_line_string_open=182, Single_line_string_open=183, Interpolataion_single_line=184, + Single_line_string_close=185, Quoted_single_line_text=186, Interpolataion_multi_line=187, + Multi_line_string_close=188, Quoted_multi_line_text=189, Single_line_extended_string_close=190, + Quoted_single_line_extended_text=191, Multi_line_extended_string_close=192, + Quoted_multi_line_extended_text=193; + public static final int + SingleLine=1, MultiLine=2, SingleLineExtended=3, MultiLineExtended=4; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE", "SingleLine", "MultiLine", "SingleLineExtended", "MultiLineExtended" + }; + + private static String[] makeRuleNames() { + return new String[] { + "AS", "ALPHA", "BREAK", "CASE", "CATCH", "CLASS", "CONTINUE", "DEFAULT", + "DEFER", "DO", "GUARD", "ELSE", "ENUM", "FOR", "FALLTHROUGH", "FUNC", + "IN", "IF", "IMPORT", "INTERNAL", "FINAL", "OPEN", "PRIVATE", "PUBLIC", + "WHERE", "WHILE", "LET", "VAR", "PROTOCOL", "GET", "SET", "WILL_SET", + "DID_SET", "REPEAT", "SWITCH", "STRUCT", "RETURN", "THROW", "THROWS", + "RETHROWS", "INDIRECT", "INIT", "DEINIT", "ASSOCIATED_TYPE", "EXTENSION", + "SUBSCRIPT", "PREFIX", "INFIX", "LEFT", "RIGHT", "NONE", "PRECEDENCE_GROUP", + "HIGHER_THAN", "LOWER_THAN", "ASSIGNMENT", "ASSOCIATIVITY", "POSTFIX", + "OPERATOR", "TYPEALIAS", "OS", "ARCH", "SWIFT", "COMPILER", "CAN_IMPORT", + "TARGET_ENVIRONMENT", "CONVENIENCE", "DYNAMIC", "LAZY", "OPTIONAL", "OVERRIDE", + "REQUIRED", "STATIC", "WEAK", "UNOWNED", "SAFE", "UNSAFE", "MUTATING", + "NONMUTATING", "FILE_PRIVATE", "IS", "TRY", "SUPER", "ANY", "FALSE", + "RED", "BLUE", "GREEN", "RESOURCE_NAME", "TRUE", "NIL", "INOUT", "SOME", + "TYPE", "PRECEDENCE", "SELF", "SELF_BIG", "MAC_OS", "I_OS", "OSX", "WATCH_OS", + "TV_OS", "LINUX", "WINDOWS", "I386", "X86_64", "ARM", "ARM64", "SIMULATOR", + "MAC_CATALYST", "I_OS_APPLICATION_EXTENSION", "MAC_CATALYST_APPLICATION_EXTENSION", + "MAC_OS_APPLICATION_EXTENSION", "SOURCE_LOCATION", "FILE", "LINE", "ERROR", + "WARNING", "AVAILABLE", "HASH_IF", "HASH_ELSEIF", "HASH_ELSE", "HASH_ENDIF", + "HASH_FILE", "HASH_FILE_ID", "HASH_FILE_PATH", "HASH_LINE", "HASH_COLUMN", + "HASH_FUNCTION", "HASH_DSO_HANDLE", "HASH_SELECTOR", "HASH_KEYPATH", + "HASH_COLOR_LITERAL", "HASH_FILE_LITERAL", "HASH_IMAGE_LITERAL", "GETTER", + "SETTER", "Identifier", "Identifier_head", "Identifier_character", "Identifier_characters", + "Implicit_parameter_name", "Property_wrapper_projection", "DOT", "LCURLY", + "LPAREN", "LBRACK", "RCURLY", "RPAREN", "RBRACK", "COMMA", "COLON", "SEMI", + "LT", "GT", "UNDERSCORE", "BANG", "QUESTION", "AT", "AND", "SUB", "EQUAL", + "OR", "DIV", "ADD", "MUL", "MOD", "CARET", "TILDE", "HASH", "BACKTICK", + "DOLLAR", "BACKSLASH", "Operator_head_other", "Operator_following_character", + "Binary_literal", "Binary_digit", "Binary_literal_character", "Binary_literal_characters", + "Octal_literal", "Octal_digit", "Octal_literal_character", "Octal_literal_characters", + "Decimal_digits", "Decimal_literal", "Decimal_digit", "Decimal_literal_character", + "Decimal_literal_characters", "Hexadecimal_literal", "Hexadecimal_digit", + "Hexadecimal_literal_character", "Hexadecimal_literal_characters", "Floating_point_literal", + "Decimal_fraction", "Decimal_exponent", "Hexadecimal_fraction", "Hexadecimal_exponent", + "Floating_point_e", "Floating_point_p", "Sign", "WS", "HASHBANG", "Block_comment", + "Line_comment", "Multi_line_extended_string_open", "Single_line_extended_string_open", + "Multi_line_string_open", "Single_line_string_open", "Interpolataion_single_line", + "Single_line_string_close", "Quoted_single_line_text", "Interpolataion_multi_line", + "Multi_line_string_close", "Quoted_multi_line_text", "Single_line_extended_string_close", + "Quoted_single_line_extended_text", "Multi_line_extended_string_close", + "Quoted_multi_line_extended_text", "Quoted_text", "Quoted_text_item", + "Multiline_quoted_text", "Escape_sequence", "Escaped_character", "Unicode_scalar_digits", + "Escaped_newline", "Inline_spaces", "Line_break" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "'as'", "'alpha'", "'break'", "'case'", "'catch'", "'class'", "'continue'", + "'default'", "'defer'", "'do'", "'guard'", "'else'", "'enum'", "'for'", + "'fallthrough'", "'func'", "'in'", "'if'", "'import'", "'internal'", + "'final'", "'open'", "'private'", "'public'", "'where'", "'while'", "'let'", + "'var'", "'protocol'", "'get'", "'set'", "'willSet'", "'didSet'", "'repeat'", + "'switch'", "'struct'", "'return'", "'throw'", "'throws'", "'rethrows'", + "'indirect'", "'init'", "'deinit'", "'associatedtype'", "'extension'", + "'subscript'", "'prefix'", "'infix'", "'left'", "'right'", "'none'", + "'precedencegroup'", "'higherThan'", "'lowerThan'", "'assignment'", "'associativity'", + "'postfix'", "'operator'", "'typealias'", "'os'", "'arch'", "'swift'", + "'compiler'", "'canImport'", "'targetEnvironment'", "'convenience'", + "'dynamic'", "'lazy'", "'optional'", "'override'", "'required'", "'static'", + "'weak'", "'unowned'", "'safe'", "'unsafe'", "'mutating'", "'nonmutating'", + "'fileprivate'", "'is'", "'try'", "'super'", "'Any'", "'false'", "'red'", + "'blue'", "'green'", "'resourceName'", "'true'", "'nil'", "'inout'", + "'some'", "'Type'", "'precedence'", "'self'", "'Self'", "'macOS'", "'iOS'", + "'OSX'", "'watchOS'", "'tvOS'", "'Linux'", "'Windows'", "'i386'", "'x86_64'", + "'arm'", "'arm64'", "'simulator'", "'macCatalyst'", "'iOSApplicationExtension'", + "'macCatalystApplicationExtension'", "'macOSApplicationExtension'", "'#sourceLocation'", + "'file'", "'line'", "'#error'", "'#warning'", "'#available'", "'#if'", + "'#elseif'", "'#else'", "'#endif'", "'#file'", "'#fileID'", "'#filePath'", + "'#line'", "'#column'", "'#function'", "'#dsohandle'", "'#selector'", + "'#keyPath'", "'#colorLiteral'", "'#fileLiteral'", "'#imageLiteral'", + "'getter'", "'setter'", null, "'.'", "'{'", "'('", "'['", "'}'", "')'", + "']'", "','", "':'", "';'", "'<'", "'>'", "'_'", "'!'", "'?'", "'@'", + "'&'", "'-'", "'='", "'|'", "'/'", "'+'", "'*'", "'%'", "'^'", "'~'", + "'#'", "'`'", "'$'", "'\\'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "AS", "ALPHA", "BREAK", "CASE", "CATCH", "CLASS", "CONTINUE", "DEFAULT", + "DEFER", "DO", "GUARD", "ELSE", "ENUM", "FOR", "FALLTHROUGH", "FUNC", + "IN", "IF", "IMPORT", "INTERNAL", "FINAL", "OPEN", "PRIVATE", "PUBLIC", + "WHERE", "WHILE", "LET", "VAR", "PROTOCOL", "GET", "SET", "WILL_SET", + "DID_SET", "REPEAT", "SWITCH", "STRUCT", "RETURN", "THROW", "THROWS", + "RETHROWS", "INDIRECT", "INIT", "DEINIT", "ASSOCIATED_TYPE", "EXTENSION", + "SUBSCRIPT", "PREFIX", "INFIX", "LEFT", "RIGHT", "NONE", "PRECEDENCE_GROUP", + "HIGHER_THAN", "LOWER_THAN", "ASSIGNMENT", "ASSOCIATIVITY", "POSTFIX", + "OPERATOR", "TYPEALIAS", "OS", "ARCH", "SWIFT", "COMPILER", "CAN_IMPORT", + "TARGET_ENVIRONMENT", "CONVENIENCE", "DYNAMIC", "LAZY", "OPTIONAL", "OVERRIDE", + "REQUIRED", "STATIC", "WEAK", "UNOWNED", "SAFE", "UNSAFE", "MUTATING", + "NONMUTATING", "FILE_PRIVATE", "IS", "TRY", "SUPER", "ANY", "FALSE", + "RED", "BLUE", "GREEN", "RESOURCE_NAME", "TRUE", "NIL", "INOUT", "SOME", + "TYPE", "PRECEDENCE", "SELF", "SELF_BIG", "MAC_OS", "I_OS", "OSX", "WATCH_OS", + "TV_OS", "LINUX", "WINDOWS", "I386", "X86_64", "ARM", "ARM64", "SIMULATOR", + "MAC_CATALYST", "I_OS_APPLICATION_EXTENSION", "MAC_CATALYST_APPLICATION_EXTENSION", + "MAC_OS_APPLICATION_EXTENSION", "SOURCE_LOCATION", "FILE", "LINE", "ERROR", + "WARNING", "AVAILABLE", "HASH_IF", "HASH_ELSEIF", "HASH_ELSE", "HASH_ENDIF", + "HASH_FILE", "HASH_FILE_ID", "HASH_FILE_PATH", "HASH_LINE", "HASH_COLUMN", + "HASH_FUNCTION", "HASH_DSO_HANDLE", "HASH_SELECTOR", "HASH_KEYPATH", + "HASH_COLOR_LITERAL", "HASH_FILE_LITERAL", "HASH_IMAGE_LITERAL", "GETTER", + "SETTER", "Identifier", "DOT", "LCURLY", "LPAREN", "LBRACK", "RCURLY", + "RPAREN", "RBRACK", "COMMA", "COLON", "SEMI", "LT", "GT", "UNDERSCORE", + "BANG", "QUESTION", "AT", "AND", "SUB", "EQUAL", "OR", "DIV", "ADD", + "MUL", "MOD", "CARET", "TILDE", "HASH", "BACKTICK", "DOLLAR", "BACKSLASH", + "Operator_head_other", "Operator_following_character", "Binary_literal", + "Octal_literal", "Decimal_digits", "Decimal_literal", "Hexadecimal_literal", + "Floating_point_literal", "WS", "HASHBANG", "Block_comment", "Line_comment", + "Multi_line_extended_string_open", "Single_line_extended_string_open", + "Multi_line_string_open", "Single_line_string_open", "Interpolataion_single_line", + "Single_line_string_close", "Quoted_single_line_text", "Interpolataion_multi_line", + "Multi_line_string_close", "Quoted_multi_line_text", "Single_line_extended_string_close", + "Quoted_single_line_extended_text", "Multi_line_extended_string_close", + "Quoted_multi_line_extended_text" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + Stack parenthesis = new Stack(); + + @Override + public void reset(){ + super.reset(); + parenthesis.clear(); + } + + + public Swift5Lexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "Swift5Lexer.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + @Override + public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { + switch (ruleIndex) { + case 144: + LPAREN_action((RuleContext)_localctx, actionIndex); + break; + case 147: + RPAREN_action((RuleContext)_localctx, actionIndex); + break; + case 207: + Interpolataion_single_line_action((RuleContext)_localctx, actionIndex); + break; + case 210: + Interpolataion_multi_line_action((RuleContext)_localctx, actionIndex); + break; + } + } + private void LPAREN_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 0: + if(!parenthesis.isEmpty()) parenthesis.push(parenthesis.pop()+1); + break; + } + } + private void RPAREN_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 1: + if(!parenthesis.isEmpty()) + { + parenthesis.push(parenthesis.pop()-1); + if(parenthesis.peek() == 0) + { + parenthesis.pop(); + popMode(); + } + } + + break; + } + } + private void Interpolataion_single_line_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 2: + parenthesis.push(1); + break; + } + } + private void Interpolataion_multi_line_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 3: + parenthesis.push(1); + break; + } + } + + public static final String _serializedATN = + "\u0004\u0000\u00c1\u079a\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+ + "\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+ + "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+ + "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+ + "\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002"+ + "\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e"+ + "\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011"+ + "\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014"+ + "\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017"+ + "\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a"+ + "\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d"+ + "\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!"+ + "\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002"+ + "&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002"+ + "+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u0002"+ + "0\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0002"+ + "5\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002"+ + ":\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002"+ + "?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002"+ + "D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002"+ + "I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002"+ + "N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002"+ + "S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002"+ + "X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002"+ + "]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002"+ + "b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002"+ + "g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002"+ + "l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002"+ + "q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002"+ + "v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002"+ + "{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f"+ + "\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082"+ + "\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085"+ + "\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088"+ + "\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b"+ + "\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e"+ + "\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091"+ + "\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094"+ + "\u0002\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097"+ + "\u0002\u0098\u0007\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a"+ + "\u0002\u009b\u0007\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d"+ + "\u0002\u009e\u0007\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0"+ + "\u0002\u00a1\u0007\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3"+ + "\u0002\u00a4\u0007\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6"+ + "\u0002\u00a7\u0007\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9"+ + "\u0002\u00aa\u0007\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac"+ + "\u0002\u00ad\u0007\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af"+ + "\u0002\u00b0\u0007\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2"+ + "\u0002\u00b3\u0007\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5"+ + "\u0002\u00b6\u0007\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8"+ + "\u0002\u00b9\u0007\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb"+ + "\u0002\u00bc\u0007\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be"+ + "\u0002\u00bf\u0007\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1"+ + "\u0002\u00c2\u0007\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4"+ + "\u0002\u00c5\u0007\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7"+ + "\u0002\u00c8\u0007\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca"+ + "\u0002\u00cb\u0007\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd"+ + "\u0002\u00ce\u0007\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0"+ + "\u0002\u00d1\u0007\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3"+ + "\u0002\u00d4\u0007\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6"+ + "\u0002\u00d7\u0007\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9"+ + "\u0002\u00da\u0007\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc"+ + "\u0002\u00dd\u0007\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df"+ + "\u0002\u00e0\u0007\u00e0\u0002\u00e1\u0007\u00e1\u0001\u0000\u0001\u0000"+ + "\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+ + "\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+ + "\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+ + "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+ + "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ + "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ + "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+ + "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001"+ + "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+ + "\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+ + "\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ + "\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011"+ + "\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+ + "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+ + "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016"+ + "\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+ + "\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+ + "\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018"+ + "\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+ + "\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b"+ + "\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c"+ + "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c"+ + "\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e"+ + "\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f"+ + "\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001 "+ + "\u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001!\u0001!\u0001!\u0001"+ + "!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001"+ + "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001$\u0001$\u0001$\u0001"+ + "$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001%\u0001%\u0001"+ + "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001"+ + "\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001"+ + "(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0001"+ + ")\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001+\u0001"+ + "+\u0001+\u0001+\u0001+\u0001+\u0001+\u0001+\u0001+\u0001+\u0001+\u0001"+ + "+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001,\u0001,\u0001,\u0001"+ + ",\u0001,\u0001,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ + "-\u0001-\u0001-\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ + "/\u0001/\u0001/\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00010\u0001"+ + "0\u00011\u00011\u00011\u00011\u00011\u00011\u00012\u00012\u00012\u0001"+ + "2\u00012\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u0001"+ + "3\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u00014\u00014\u0001"+ + "4\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00015\u0001"+ + "5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00016\u0001"+ + "6\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ + "7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ + "7\u00017\u00017\u00017\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+ + "8\u00018\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ + "9\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001"+ + ":\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001<\u0001<\u0001=\u0001"+ + "=\u0001=\u0001=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+ + ">\u0001>\u0001>\u0001>\u0001?\u0001?\u0001?\u0001?\u0001?\u0001?\u0001"+ + "?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001"+ + "@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001"+ + "@\u0001@\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001"+ + "A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ + "B\u0001B\u0001C\u0001C\u0001C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001"+ + "D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001E\u0001E\u0001E\u0001E\u0001"+ + "E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+ + "F\u0001F\u0001F\u0001F\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001"+ + "G\u0001H\u0001H\u0001H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001I\u0001"+ + "I\u0001I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001K\u0001"+ + "K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001"+ + "L\u0001L\u0001L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001"+ + "M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001N\u0001N\u0001N\u0001"+ + "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001"+ + "O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+ + "Q\u0001Q\u0001R\u0001R\u0001R\u0001R\u0001S\u0001S\u0001S\u0001S\u0001"+ + "S\u0001S\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001U\u0001"+ + "U\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001W\u0001"+ + "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+ + "X\u0001X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001"+ + "Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001[\u0001"+ + "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001]\u0001]\u0001]\u0001]\u0001]"+ + "\u0001]\u0001]\u0001]\u0001]\u0001]\u0001]\u0001^\u0001^\u0001^\u0001"+ + "^\u0001^\u0001_\u0001_\u0001_\u0001_\u0001_\u0001`\u0001`\u0001`\u0001"+ + "`\u0001`\u0001`\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001"+ + "b\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001"+ + "d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ + "f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001"+ + "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ + "i\u0001i\u0001i\u0001i\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001"+ + "k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ + "l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001"+ + "l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ + "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ + "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001"+ + "n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001"+ + "n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001"+ + "n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001"+ + "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+ + "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+ + "o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001"+ + "p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001"+ + "q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ + "s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001"+ + "t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001"+ + "u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001"+ + "v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001"+ + "x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ + "y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001{\u0001{\u0001"+ + "{\u0001{\u0001{\u0001{\u0001{\u0001{\u0001|\u0001|\u0001|\u0001|\u0001"+ + "|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001}\u0001}\u0001}\u0001}\u0001"+ + "}\u0001}\u0001~\u0001~\u0001~\u0001~\u0001~\u0001~\u0001~\u0001~\u0001"+ + "\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001"+ + "\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0001"+ + "\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001"+ + "\u0080\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001"+ + "\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001"+ + "\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001"+ + "\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0083\u0001\u0083\u0001"+ + "\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001"+ + "\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001"+ + "\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001"+ + "\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001"+ + "\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ + "\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ + "\u0085\u0001\u0085\u0001\u0085\u0001\u0086\u0001\u0086\u0001\u0086\u0001"+ + "\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0087\u0001\u0087\u0001"+ + "\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088\u0001"+ + "\u0088\u0003\u0088\u05f2\b\u0088\u0001\u0088\u0001\u0088\u0003\u0088\u05f6"+ + "\b\u0088\u0001\u0089\u0003\u0089\u05f9\b\u0089\u0001\u008a\u0001\u008a"+ + "\u0003\u008a\u05fd\b\u008a\u0001\u008b\u0004\u008b\u0600\b\u008b\u000b"+ + "\u008b\f\u008b\u0601\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008d\u0001"+ + "\u008d\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001"+ + "\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091\u0001\u0092\u0001"+ + "\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0094\u0001\u0094\u0001"+ + "\u0095\u0001\u0095\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001"+ + "\u0098\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u009a\u0001\u009a\u0001"+ + "\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009d\u0001\u009d\u0001"+ + "\u009e\u0001\u009e\u0001\u009f\u0001\u009f\u0001\u00a0\u0001\u00a0\u0001"+ + "\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3\u0001"+ + "\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001\u00a6\u0001"+ + "\u00a7\u0001\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a9\u0001\u00a9\u0001"+ + "\u00aa\u0001\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ac\u0003\u00ac\u0649"+ + "\b\u00ac\u0001\u00ad\u0003\u00ad\u064c\b\u00ad\u0001\u00ae\u0001\u00ae"+ + "\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0003\u00ae\u0653\b\u00ae\u0001\u00af"+ + "\u0001\u00af\u0001\u00b0\u0001\u00b0\u0003\u00b0\u0659\b\u00b0\u0001\u00b1"+ + "\u0004\u00b1\u065c\b\u00b1\u000b\u00b1\f\u00b1\u065d\u0001\u00b2\u0001"+ + "\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0003\u00b2\u0665\b\u00b2\u0001"+ + "\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0003\u00b4\u066b\b\u00b4\u0001"+ + "\u00b5\u0004\u00b5\u066e\b\u00b5\u000b\u00b5\f\u00b5\u066f\u0001\u00b6"+ + "\u0004\u00b6\u0673\b\u00b6\u000b\u00b6\f\u00b6\u0674\u0001\u00b7\u0001"+ + "\u00b7\u0003\u00b7\u0679\b\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001"+ + "\u00b9\u0003\u00b9\u067f\b\u00b9\u0001\u00ba\u0004\u00ba\u0682\b\u00ba"+ + "\u000b\u00ba\f\u00ba\u0683\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ + "\u0001\u00bb\u0003\u00bb\u068b\b\u00bb\u0001\u00bc\u0001\u00bc\u0001\u00bd"+ + "\u0001\u00bd\u0003\u00bd\u0691\b\u00bd\u0001\u00be\u0004\u00be\u0694\b"+ + "\u00be\u000b\u00be\f\u00be\u0695\u0001\u00bf\u0001\u00bf\u0003\u00bf\u069a"+ + "\b\u00bf\u0001\u00bf\u0003\u00bf\u069d\b\u00bf\u0001\u00bf\u0001\u00bf"+ + "\u0003\u00bf\u06a1\b\u00bf\u0001\u00bf\u0001\u00bf\u0003\u00bf\u06a5\b"+ + "\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1\u0003"+ + "\u00c1\u06ac\b\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001"+ + "\u00c2\u0003\u00c2\u06b3\b\u00c2\u0001\u00c3\u0001\u00c3\u0003\u00c3\u06b7"+ + "\b\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001"+ + "\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0004\u00c7\u06c2\b\u00c7\u000b"+ + "\u00c7\f\u00c7\u06c3\u0001\u00c7\u0001\u00c7\u0001\u00c8\u0001\u00c8\u0001"+ + "\u00c8\u0001\u00c8\u0005\u00c8\u06cc\b\u00c8\n\u00c8\f\u00c8\u06cf\t\u00c8"+ + "\u0001\u00c8\u0004\u00c8\u06d2\b\u00c8\u000b\u00c8\f\u00c8\u06d3\u0001"+ + "\u00c8\u0001\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001"+ + "\u00c9\u0005\u00c9\u06dd\b\u00c9\n\u00c9\f\u00c9\u06e0\t\u00c9\u0001\u00c9"+ + "\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca"+ + "\u0001\u00ca\u0001\u00ca\u0005\u00ca\u06eb\b\u00ca\n\u00ca\f\u00ca\u06ee"+ + "\t\u00ca\u0001\u00ca\u0003\u00ca\u06f1\b\u00ca\u0001\u00ca\u0001\u00ca"+ + "\u0001\u00cb\u0004\u00cb\u06f6\b\u00cb\u000b\u00cb\f\u00cb\u06f7\u0001"+ + "\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001"+ + "\u00cc\u0004\u00cc\u0701\b\u00cc\u000b\u00cc\f\u00cc\u0702\u0001\u00cc"+ + "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd\u0001\u00cd\u0001\u00cd"+ + "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce"+ + "\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf"+ + "\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0"+ + "\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+ + "\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ + "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d5"+ + "\u0001\u00d5\u0004\u00d5\u0731\b\u00d5\u000b\u00d5\f\u00d5\u0732\u0001"+ + "\u00d5\u0001\u00d5\u0001\u00d6\u0004\u00d6\u0738\b\u00d6\u000b\u00d6\f"+ + "\u00d6\u0739\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7"+ + "\u0004\u00d7\u0741\b\u00d7\u000b\u00d7\f\u00d7\u0742\u0001\u00d7\u0001"+ + "\u00d7\u0001\u00d8\u0004\u00d8\u0748\b\u00d8\u000b\u00d8\f\u00d8\u0749"+ + "\u0001\u00d8\u0001\u00d8\u0003\u00d8\u074e\b\u00d8\u0003\u00d8\u0750\b"+ + "\u00d8\u0001\u00d9\u0004\u00d9\u0753\b\u00d9\u000b\u00d9\f\u00d9\u0754"+ + "\u0001\u00da\u0001\u00da\u0003\u00da\u0759\b\u00da\u0001\u00db\u0001\u00db"+ + "\u0004\u00db\u075d\b\u00db\u000b\u00db\f\u00db\u075e\u0001\u00db\u0001"+ + "\u00db\u0003\u00db\u0763\b\u00db\u0001\u00db\u0003\u00db\u0766\b\u00db"+ + "\u0001\u00dc\u0001\u00dc\u0005\u00dc\u076a\b\u00dc\n\u00dc\f\u00dc\u076d"+ + "\t\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001"+ + "\u00dd\u0001\u00dd\u0003\u00dd\u0776\b\u00dd\u0001\u00de\u0001\u00de\u0003"+ + "\u00de\u077a\b\u00de\u0001\u00de\u0003\u00de\u077d\b\u00de\u0001\u00de"+ + "\u0003\u00de\u0780\b\u00de\u0001\u00de\u0003\u00de\u0783\b\u00de\u0001"+ + "\u00de\u0003\u00de\u0786\b\u00de\u0001\u00de\u0003\u00de\u0789\b\u00de"+ + "\u0001\u00de\u0003\u00de\u078c\b\u00de\u0001\u00df\u0001\u00df\u0003\u00df"+ + "\u0790\b\u00df\u0001\u00df\u0001\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e1"+ + "\u0001\u00e1\u0001\u00e1\u0003\u00e1\u0799\b\u00e1\u0003\u06cd\u06de\u06ec"+ + "\u0000\u00e2\u0005\u0001\u0007\u0002\t\u0003\u000b\u0004\r\u0005\u000f"+ + "\u0006\u0011\u0007\u0013\b\u0015\t\u0017\n\u0019\u000b\u001b\f\u001d\r"+ + "\u001f\u000e!\u000f#\u0010%\u0011\'\u0012)\u0013+\u0014-\u0015/\u0016"+ + "1\u00173\u00185\u00197\u001a9\u001b;\u001c=\u001d?\u001eA\u001fC E!G\""+ + "I#K$M%O&Q\'S(U)W*Y+[,]-_.a/c0e1g2i3k4m5o6q7s8u9w:y;{<}=\u007f>\u0081?"+ + "\u0083@\u0085A\u0087B\u0089C\u008bD\u008dE\u008fF\u0091G\u0093H\u0095"+ + "I\u0097J\u0099K\u009bL\u009dM\u009fN\u00a1O\u00a3P\u00a5Q\u00a7R\u00a9"+ + "S\u00abT\u00adU\u00afV\u00b1W\u00b3X\u00b5Y\u00b7Z\u00b9[\u00bb\\\u00bd"+ + "]\u00bf^\u00c1_\u00c3`\u00c5a\u00c7b\u00c9c\u00cbd\u00cde\u00cff\u00d1"+ + "g\u00d3h\u00d5i\u00d7j\u00d9k\u00dbl\u00ddm\u00dfn\u00e1o\u00e3p\u00e5"+ + "q\u00e7r\u00e9s\u00ebt\u00edu\u00efv\u00f1w\u00f3x\u00f5y\u00f7z\u00f9"+ + "{\u00fb|\u00fd}\u00ff~\u0101\u007f\u0103\u0080\u0105\u0081\u0107\u0082"+ + "\u0109\u0083\u010b\u0084\u010d\u0085\u010f\u0086\u0111\u0087\u0113\u0088"+ + "\u0115\u0089\u0117\u0000\u0119\u0000\u011b\u0000\u011d\u0000\u011f\u0000"+ + "\u0121\u008a\u0123\u008b\u0125\u008c\u0127\u008d\u0129\u008e\u012b\u008f"+ + "\u012d\u0090\u012f\u0091\u0131\u0092\u0133\u0093\u0135\u0094\u0137\u0095"+ + "\u0139\u0096\u013b\u0097\u013d\u0098\u013f\u0099\u0141\u009a\u0143\u009b"+ + "\u0145\u009c\u0147\u009d\u0149\u009e\u014b\u009f\u014d\u00a0\u014f\u00a1"+ + "\u0151\u00a2\u0153\u00a3\u0155\u00a4\u0157\u00a5\u0159\u00a6\u015b\u00a7"+ + "\u015d\u00a8\u015f\u00a9\u0161\u00aa\u0163\u0000\u0165\u0000\u0167\u0000"+ + "\u0169\u00ab\u016b\u0000\u016d\u0000\u016f\u0000\u0171\u00ac\u0173\u00ad"+ + "\u0175\u0000\u0177\u0000\u0179\u0000\u017b\u00ae\u017d\u0000\u017f\u0000"+ + "\u0181\u0000\u0183\u00af\u0185\u0000\u0187\u0000\u0189\u0000\u018b\u0000"+ + "\u018d\u0000\u018f\u0000\u0191\u0000\u0193\u00b0\u0195\u00b1\u0197\u00b2"+ + "\u0199\u00b3\u019b\u00b4\u019d\u00b5\u019f\u00b6\u01a1\u00b7\u01a3\u00b8"+ + "\u01a5\u00b9\u01a7\u00ba\u01a9\u00bb\u01ab\u00bc\u01ad\u00bd\u01af\u00be"+ + "\u01b1\u00bf\u01b3\u00c0\u01b5\u00c1\u01b7\u0000\u01b9\u0000\u01bb\u0000"+ + "\u01bd\u0000\u01bf\u0000\u01c1\u0000\u01c3\u0000\u01c5\u0000\u01c7\u0000"+ + "\u0005\u0000\u0001\u0002\u0003\u0004\u00141\u0000AZ__az\u00a8\u00a8\u00aa"+ + "\u00aa\u00ad\u00ad\u00af\u00af\u00b2\u00b5\u00b7\u00ba\u00bc\u00be\u00c0"+ + "\u00d6\u00d8\u00f6\u00f8\u02ff\u0370\u167f\u1681\u180d\u180f\u1dbf\u1e00"+ + "\u1fff\u200b\u200d\u202a\u202e\u203f\u2040\u2054\u2054\u2060\u20cf\u2100"+ + "\u218f\u2460\u24ff\u2776\u2793\u2c00\u2dff\u2e80\u2fff\u3004\u3007\u3021"+ + "\u302f\u3031\u8000\ud7ff\u8000\uf900\u8000\ufd3d\u8000\ufd40\u8000\ufdcf"+ + "\u8000\ufdf0\u8000\ufe1f\u8000\ufe30\u8000\ufe44\u8000\ufe47\u8000\ufffd"+ + "\u8001\u0000\u8001\ufffd\u8002\u0000\u8002\ufffd\u8003\u0000\u8003\ufffd"+ + "\u8004\u0000\u8004\ufffd\u8005\u0000\u8005\ufffd\u8006\u0000\u8006\ufffd"+ + "\u8007\u0000\u8007\ufffd\u8008\u0000\u8008\ufffd\u8009\u0000\u8009\ufffd"+ + "\u800a\u0000\u800a\ufffd\u800b\u0000\u800b\ufffd\u800c\u0000\u800c\ufffd"+ + "\u800d\u0000\u800d\ufffd\u800e\u0000\u800e\ufffd\u0005\u000009\u0300\u036f"+ + "\u1dc0\u1dff\u20d0\u20ff\u8000\ufe20\u8000\ufe2f\u0016\u0000\u00a1\u00a7"+ + "\u00a9\u00a9\u00ab\u00ac\u00ae\u00ae\u00b0\u00b1\u00b6\u00b6\u00bb\u00bb"+ + "\u00bf\u00bf\u00d7\u00d7\u00f7\u00f7\u2016\u2017\u2020\u2027\u2030\u203e"+ + "\u2041\u2053\u2055\u205e\u2190\u23ff\u2500\u2775\u2794\u2bff\u2e00\u2e7f"+ + "\u3001\u3003\u3008\u3020\u3030\u3030\u0006\u0000\u0300\u036f\u1dc0\u1dff"+ + "\u20d0\u20ff\u8000\ufe00\u8000\ufe0f\u8000\ufe20\u8000\ufe2f\u800e\u0100"+ + "\u800e\u01ef\u0001\u000001\u0001\u000007\u0001\u000009\u0003\u000009A"+ + "Faf\u0002\u0000EEee\u0002\u0000PPpp\u0002\u0000++--\u0003\u0000\u0000"+ + "\u0000\t\r \u0002\u0000\n\n\r\r\u0001\u0001\n\n\u0003\u0000\n\n\r\r\""+ + "\"\u0001\u0000\"\"\u0004\u0000\n\n\r\r\"\"\\\\\u0002\u0000\"\"\\\\\b\u0000"+ + "\"\"\'\'00\\\\nnrrtt\u201c\u201c\u0002\u0000\t\t \u07ad\u0000\u0005\u0001"+ + "\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000"+ + "\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000"+ + "\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000"+ + "\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000"+ + "\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000"+ + "\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000"+ + "\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000"+ + "\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'"+ + "\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000"+ + "\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000"+ + "\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005"+ + "\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000"+ + "\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000"+ + "\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C"+ + "\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000"+ + "\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000"+ + "\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000Q"+ + "\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001\u0000"+ + "\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000Y\u0001\u0000\u0000\u0000"+ + "\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000_"+ + "\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000\u0000\u0000c\u0001\u0000"+ + "\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000g\u0001\u0000\u0000\u0000"+ + "\u0000i\u0001\u0000\u0000\u0000\u0000k\u0001\u0000\u0000\u0000\u0000m"+ + "\u0001\u0000\u0000\u0000\u0000o\u0001\u0000\u0000\u0000\u0000q\u0001\u0000"+ + "\u0000\u0000\u0000s\u0001\u0000\u0000\u0000\u0000u\u0001\u0000\u0000\u0000"+ + "\u0000w\u0001\u0000\u0000\u0000\u0000y\u0001\u0000\u0000\u0000\u0000{"+ + "\u0001\u0000\u0000\u0000\u0000}\u0001\u0000\u0000\u0000\u0000\u007f\u0001"+ + "\u0000\u0000\u0000\u0000\u0081\u0001\u0000\u0000\u0000\u0000\u0083\u0001"+ + "\u0000\u0000\u0000\u0000\u0085\u0001\u0000\u0000\u0000\u0000\u0087\u0001"+ + "\u0000\u0000\u0000\u0000\u0089\u0001\u0000\u0000\u0000\u0000\u008b\u0001"+ + "\u0000\u0000\u0000\u0000\u008d\u0001\u0000\u0000\u0000\u0000\u008f\u0001"+ + "\u0000\u0000\u0000\u0000\u0091\u0001\u0000\u0000\u0000\u0000\u0093\u0001"+ + "\u0000\u0000\u0000\u0000\u0095\u0001\u0000\u0000\u0000\u0000\u0097\u0001"+ + "\u0000\u0000\u0000\u0000\u0099\u0001\u0000\u0000\u0000\u0000\u009b\u0001"+ + "\u0000\u0000\u0000\u0000\u009d\u0001\u0000\u0000\u0000\u0000\u009f\u0001"+ + "\u0000\u0000\u0000\u0000\u00a1\u0001\u0000\u0000\u0000\u0000\u00a3\u0001"+ + "\u0000\u0000\u0000\u0000\u00a5\u0001\u0000\u0000\u0000\u0000\u00a7\u0001"+ + "\u0000\u0000\u0000\u0000\u00a9\u0001\u0000\u0000\u0000\u0000\u00ab\u0001"+ + "\u0000\u0000\u0000\u0000\u00ad\u0001\u0000\u0000\u0000\u0000\u00af\u0001"+ + "\u0000\u0000\u0000\u0000\u00b1\u0001\u0000\u0000\u0000\u0000\u00b3\u0001"+ + "\u0000\u0000\u0000\u0000\u00b5\u0001\u0000\u0000\u0000\u0000\u00b7\u0001"+ + "\u0000\u0000\u0000\u0000\u00b9\u0001\u0000\u0000\u0000\u0000\u00bb\u0001"+ + "\u0000\u0000\u0000\u0000\u00bd\u0001\u0000\u0000\u0000\u0000\u00bf\u0001"+ + "\u0000\u0000\u0000\u0000\u00c1\u0001\u0000\u0000\u0000\u0000\u00c3\u0001"+ + "\u0000\u0000\u0000\u0000\u00c5\u0001\u0000\u0000\u0000\u0000\u00c7\u0001"+ + "\u0000\u0000\u0000\u0000\u00c9\u0001\u0000\u0000\u0000\u0000\u00cb\u0001"+ + "\u0000\u0000\u0000\u0000\u00cd\u0001\u0000\u0000\u0000\u0000\u00cf\u0001"+ + "\u0000\u0000\u0000\u0000\u00d1\u0001\u0000\u0000\u0000\u0000\u00d3\u0001"+ + "\u0000\u0000\u0000\u0000\u00d5\u0001\u0000\u0000\u0000\u0000\u00d7\u0001"+ + "\u0000\u0000\u0000\u0000\u00d9\u0001\u0000\u0000\u0000\u0000\u00db\u0001"+ + "\u0000\u0000\u0000\u0000\u00dd\u0001\u0000\u0000\u0000\u0000\u00df\u0001"+ + "\u0000\u0000\u0000\u0000\u00e1\u0001\u0000\u0000\u0000\u0000\u00e3\u0001"+ + "\u0000\u0000\u0000\u0000\u00e5\u0001\u0000\u0000\u0000\u0000\u00e7\u0001"+ + "\u0000\u0000\u0000\u0000\u00e9\u0001\u0000\u0000\u0000\u0000\u00eb\u0001"+ + "\u0000\u0000\u0000\u0000\u00ed\u0001\u0000\u0000\u0000\u0000\u00ef\u0001"+ + "\u0000\u0000\u0000\u0000\u00f1\u0001\u0000\u0000\u0000\u0000\u00f3\u0001"+ + "\u0000\u0000\u0000\u0000\u00f5\u0001\u0000\u0000\u0000\u0000\u00f7\u0001"+ + "\u0000\u0000\u0000\u0000\u00f9\u0001\u0000\u0000\u0000\u0000\u00fb\u0001"+ + "\u0000\u0000\u0000\u0000\u00fd\u0001\u0000\u0000\u0000\u0000\u00ff\u0001"+ + "\u0000\u0000\u0000\u0000\u0101\u0001\u0000\u0000\u0000\u0000\u0103\u0001"+ + "\u0000\u0000\u0000\u0000\u0105\u0001\u0000\u0000\u0000\u0000\u0107\u0001"+ + "\u0000\u0000\u0000\u0000\u0109\u0001\u0000\u0000\u0000\u0000\u010b\u0001"+ + "\u0000\u0000\u0000\u0000\u010d\u0001\u0000\u0000\u0000\u0000\u010f\u0001"+ + "\u0000\u0000\u0000\u0000\u0111\u0001\u0000\u0000\u0000\u0000\u0113\u0001"+ + "\u0000\u0000\u0000\u0000\u0115\u0001\u0000\u0000\u0000\u0000\u0121\u0001"+ + "\u0000\u0000\u0000\u0000\u0123\u0001\u0000\u0000\u0000\u0000\u0125\u0001"+ + "\u0000\u0000\u0000\u0000\u0127\u0001\u0000\u0000\u0000\u0000\u0129\u0001"+ + "\u0000\u0000\u0000\u0000\u012b\u0001\u0000\u0000\u0000\u0000\u012d\u0001"+ + "\u0000\u0000\u0000\u0000\u012f\u0001\u0000\u0000\u0000\u0000\u0131\u0001"+ + "\u0000\u0000\u0000\u0000\u0133\u0001\u0000\u0000\u0000\u0000\u0135\u0001"+ + "\u0000\u0000\u0000\u0000\u0137\u0001\u0000\u0000\u0000\u0000\u0139\u0001"+ + "\u0000\u0000\u0000\u0000\u013b\u0001\u0000\u0000\u0000\u0000\u013d\u0001"+ + "\u0000\u0000\u0000\u0000\u013f\u0001\u0000\u0000\u0000\u0000\u0141\u0001"+ + "\u0000\u0000\u0000\u0000\u0143\u0001\u0000\u0000\u0000\u0000\u0145\u0001"+ + "\u0000\u0000\u0000\u0000\u0147\u0001\u0000\u0000\u0000\u0000\u0149\u0001"+ + "\u0000\u0000\u0000\u0000\u014b\u0001\u0000\u0000\u0000\u0000\u014d\u0001"+ + "\u0000\u0000\u0000\u0000\u014f\u0001\u0000\u0000\u0000\u0000\u0151\u0001"+ + "\u0000\u0000\u0000\u0000\u0153\u0001\u0000\u0000\u0000\u0000\u0155\u0001"+ + "\u0000\u0000\u0000\u0000\u0157\u0001\u0000\u0000\u0000\u0000\u0159\u0001"+ + "\u0000\u0000\u0000\u0000\u015b\u0001\u0000\u0000\u0000\u0000\u015d\u0001"+ + "\u0000\u0000\u0000\u0000\u015f\u0001\u0000\u0000\u0000\u0000\u0161\u0001"+ + "\u0000\u0000\u0000\u0000\u0169\u0001\u0000\u0000\u0000\u0000\u0171\u0001"+ + "\u0000\u0000\u0000\u0000\u0173\u0001\u0000\u0000\u0000\u0000\u017b\u0001"+ + "\u0000\u0000\u0000\u0000\u0183\u0001\u0000\u0000\u0000\u0000\u0193\u0001"+ + "\u0000\u0000\u0000\u0000\u0195\u0001\u0000\u0000\u0000\u0000\u0197\u0001"+ + "\u0000\u0000\u0000\u0000\u0199\u0001\u0000\u0000\u0000\u0000\u019b\u0001"+ + "\u0000\u0000\u0000\u0000\u019d\u0001\u0000\u0000\u0000\u0000\u019f\u0001"+ + "\u0000\u0000\u0000\u0000\u01a1\u0001\u0000\u0000\u0000\u0001\u01a3\u0001"+ + "\u0000\u0000\u0000\u0001\u01a5\u0001\u0000\u0000\u0000\u0001\u01a7\u0001"+ + "\u0000\u0000\u0000\u0002\u01a9\u0001\u0000\u0000\u0000\u0002\u01ab\u0001"+ + "\u0000\u0000\u0000\u0002\u01ad\u0001\u0000\u0000\u0000\u0003\u01af\u0001"+ + "\u0000\u0000\u0000\u0003\u01b1\u0001\u0000\u0000\u0000\u0004\u01b3\u0001"+ + "\u0000\u0000\u0000\u0004\u01b5\u0001\u0000\u0000\u0000\u0005\u01c9\u0001"+ + "\u0000\u0000\u0000\u0007\u01cc\u0001\u0000\u0000\u0000\t\u01d2\u0001\u0000"+ + "\u0000\u0000\u000b\u01d8\u0001\u0000\u0000\u0000\r\u01dd\u0001\u0000\u0000"+ + "\u0000\u000f\u01e3\u0001\u0000\u0000\u0000\u0011\u01e9\u0001\u0000\u0000"+ + "\u0000\u0013\u01f2\u0001\u0000\u0000\u0000\u0015\u01fa\u0001\u0000\u0000"+ + "\u0000\u0017\u0200\u0001\u0000\u0000\u0000\u0019\u0203\u0001\u0000\u0000"+ + "\u0000\u001b\u0209\u0001\u0000\u0000\u0000\u001d\u020e\u0001\u0000\u0000"+ + "\u0000\u001f\u0213\u0001\u0000\u0000\u0000!\u0217\u0001\u0000\u0000\u0000"+ + "#\u0223\u0001\u0000\u0000\u0000%\u0228\u0001\u0000\u0000\u0000\'\u022b"+ + "\u0001\u0000\u0000\u0000)\u022e\u0001\u0000\u0000\u0000+\u0235\u0001\u0000"+ + "\u0000\u0000-\u023e\u0001\u0000\u0000\u0000/\u0244\u0001\u0000\u0000\u0000"+ + "1\u0249\u0001\u0000\u0000\u00003\u0251\u0001\u0000\u0000\u00005\u0258"+ + "\u0001\u0000\u0000\u00007\u025e\u0001\u0000\u0000\u00009\u0264\u0001\u0000"+ + "\u0000\u0000;\u0268\u0001\u0000\u0000\u0000=\u026c\u0001\u0000\u0000\u0000"+ + "?\u0275\u0001\u0000\u0000\u0000A\u0279\u0001\u0000\u0000\u0000C\u027d"+ + "\u0001\u0000\u0000\u0000E\u0285\u0001\u0000\u0000\u0000G\u028c\u0001\u0000"+ + "\u0000\u0000I\u0293\u0001\u0000\u0000\u0000K\u029a\u0001\u0000\u0000\u0000"+ + "M\u02a1\u0001\u0000\u0000\u0000O\u02a8\u0001\u0000\u0000\u0000Q\u02ae"+ + "\u0001\u0000\u0000\u0000S\u02b5\u0001\u0000\u0000\u0000U\u02be\u0001\u0000"+ + "\u0000\u0000W\u02c7\u0001\u0000\u0000\u0000Y\u02cc\u0001\u0000\u0000\u0000"+ + "[\u02d3\u0001\u0000\u0000\u0000]\u02e2\u0001\u0000\u0000\u0000_\u02ec"+ + "\u0001\u0000\u0000\u0000a\u02f6\u0001\u0000\u0000\u0000c\u02fd\u0001\u0000"+ + "\u0000\u0000e\u0303\u0001\u0000\u0000\u0000g\u0308\u0001\u0000\u0000\u0000"+ + "i\u030e\u0001\u0000\u0000\u0000k\u0313\u0001\u0000\u0000\u0000m\u0323"+ + "\u0001\u0000\u0000\u0000o\u032e\u0001\u0000\u0000\u0000q\u0338\u0001\u0000"+ + "\u0000\u0000s\u0343\u0001\u0000\u0000\u0000u\u0351\u0001\u0000\u0000\u0000"+ + "w\u0359\u0001\u0000\u0000\u0000y\u0362\u0001\u0000\u0000\u0000{\u036c"+ + "\u0001\u0000\u0000\u0000}\u036f\u0001\u0000\u0000\u0000\u007f\u0374\u0001"+ + "\u0000\u0000\u0000\u0081\u037a\u0001\u0000\u0000\u0000\u0083\u0383\u0001"+ + "\u0000\u0000\u0000\u0085\u038d\u0001\u0000\u0000\u0000\u0087\u039f\u0001"+ + "\u0000\u0000\u0000\u0089\u03ab\u0001\u0000\u0000\u0000\u008b\u03b3\u0001"+ + "\u0000\u0000\u0000\u008d\u03b8\u0001\u0000\u0000\u0000\u008f\u03c1\u0001"+ + "\u0000\u0000\u0000\u0091\u03ca\u0001\u0000\u0000\u0000\u0093\u03d3\u0001"+ + "\u0000\u0000\u0000\u0095\u03da\u0001\u0000\u0000\u0000\u0097\u03df\u0001"+ + "\u0000\u0000\u0000\u0099\u03e7\u0001\u0000\u0000\u0000\u009b\u03ec\u0001"+ + "\u0000\u0000\u0000\u009d\u03f3\u0001\u0000\u0000\u0000\u009f\u03fc\u0001"+ + "\u0000\u0000\u0000\u00a1\u0408\u0001\u0000\u0000\u0000\u00a3\u0414\u0001"+ + "\u0000\u0000\u0000\u00a5\u0417\u0001\u0000\u0000\u0000\u00a7\u041b\u0001"+ + "\u0000\u0000\u0000\u00a9\u0421\u0001\u0000\u0000\u0000\u00ab\u0425\u0001"+ + "\u0000\u0000\u0000\u00ad\u042b\u0001\u0000\u0000\u0000\u00af\u042f\u0001"+ + "\u0000\u0000\u0000\u00b1\u0434\u0001\u0000\u0000\u0000\u00b3\u043a\u0001"+ + "\u0000\u0000\u0000\u00b5\u0447\u0001\u0000\u0000\u0000\u00b7\u044c\u0001"+ + "\u0000\u0000\u0000\u00b9\u0450\u0001\u0000\u0000\u0000\u00bb\u0456\u0001"+ + "\u0000\u0000\u0000\u00bd\u045b\u0001\u0000\u0000\u0000\u00bf\u0460\u0001"+ + "\u0000\u0000\u0000\u00c1\u046b\u0001\u0000\u0000\u0000\u00c3\u0470\u0001"+ + "\u0000\u0000\u0000\u00c5\u0475\u0001\u0000\u0000\u0000\u00c7\u047b\u0001"+ + "\u0000\u0000\u0000\u00c9\u047f\u0001\u0000\u0000\u0000\u00cb\u0483\u0001"+ + "\u0000\u0000\u0000\u00cd\u048b\u0001\u0000\u0000\u0000\u00cf\u0490\u0001"+ + "\u0000\u0000\u0000\u00d1\u0496\u0001\u0000\u0000\u0000\u00d3\u049e\u0001"+ + "\u0000\u0000\u0000\u00d5\u04a3\u0001\u0000\u0000\u0000\u00d7\u04aa\u0001"+ + "\u0000\u0000\u0000\u00d9\u04ae\u0001\u0000\u0000\u0000\u00db\u04b4\u0001"+ + "\u0000\u0000\u0000\u00dd\u04be\u0001\u0000\u0000\u0000\u00df\u04ca\u0001"+ + "\u0000\u0000\u0000\u00e1\u04e2\u0001\u0000\u0000\u0000\u00e3\u0502\u0001"+ + "\u0000\u0000\u0000\u00e5\u051c\u0001\u0000\u0000\u0000\u00e7\u052c\u0001"+ + "\u0000\u0000\u0000\u00e9\u0531\u0001\u0000\u0000\u0000\u00eb\u0536\u0001"+ + "\u0000\u0000\u0000\u00ed\u053d\u0001\u0000\u0000\u0000\u00ef\u0546\u0001"+ + "\u0000\u0000\u0000\u00f1\u0551\u0001\u0000\u0000\u0000\u00f3\u0555\u0001"+ + "\u0000\u0000\u0000\u00f5\u055d\u0001\u0000\u0000\u0000\u00f7\u0563\u0001"+ + "\u0000\u0000\u0000\u00f9\u056a\u0001\u0000\u0000\u0000\u00fb\u0570\u0001"+ + "\u0000\u0000\u0000\u00fd\u0578\u0001\u0000\u0000\u0000\u00ff\u0582\u0001"+ + "\u0000\u0000\u0000\u0101\u0588\u0001\u0000\u0000\u0000\u0103\u0590\u0001"+ + "\u0000\u0000\u0000\u0105\u059a\u0001\u0000\u0000\u0000\u0107\u05a5\u0001"+ + "\u0000\u0000\u0000\u0109\u05af\u0001\u0000\u0000\u0000\u010b\u05b8\u0001"+ + "\u0000\u0000\u0000\u010d\u05c6\u0001\u0000\u0000\u0000\u010f\u05d3\u0001"+ + "\u0000\u0000\u0000\u0111\u05e1\u0001\u0000\u0000\u0000\u0113\u05e8\u0001"+ + "\u0000\u0000\u0000\u0115\u05f5\u0001\u0000\u0000\u0000\u0117\u05f8\u0001"+ + "\u0000\u0000\u0000\u0119\u05fc\u0001\u0000\u0000\u0000\u011b\u05ff\u0001"+ + "\u0000\u0000\u0000\u011d\u0603\u0001\u0000\u0000\u0000\u011f\u0606\u0001"+ + "\u0000\u0000\u0000\u0121\u0609\u0001\u0000\u0000\u0000\u0123\u060b\u0001"+ + "\u0000\u0000\u0000\u0125\u060d\u0001\u0000\u0000\u0000\u0127\u0610\u0001"+ + "\u0000\u0000\u0000\u0129\u0612\u0001\u0000\u0000\u0000\u012b\u0614\u0001"+ + "\u0000\u0000\u0000\u012d\u0617\u0001\u0000\u0000\u0000\u012f\u0619\u0001"+ + "\u0000\u0000\u0000\u0131\u061b\u0001\u0000\u0000\u0000\u0133\u061d\u0001"+ + "\u0000\u0000\u0000\u0135\u061f\u0001\u0000\u0000\u0000\u0137\u0621\u0001"+ + "\u0000\u0000\u0000\u0139\u0623\u0001\u0000\u0000\u0000\u013b\u0625\u0001"+ + "\u0000\u0000\u0000\u013d\u0627\u0001\u0000\u0000\u0000\u013f\u0629\u0001"+ + "\u0000\u0000\u0000\u0141\u062b\u0001\u0000\u0000\u0000\u0143\u062d\u0001"+ + "\u0000\u0000\u0000\u0145\u062f\u0001\u0000\u0000\u0000\u0147\u0631\u0001"+ + "\u0000\u0000\u0000\u0149\u0633\u0001\u0000\u0000\u0000\u014b\u0635\u0001"+ + "\u0000\u0000\u0000\u014d\u0637\u0001\u0000\u0000\u0000\u014f\u0639\u0001"+ + "\u0000\u0000\u0000\u0151\u063b\u0001\u0000\u0000\u0000\u0153\u063d\u0001"+ + "\u0000\u0000\u0000\u0155\u063f\u0001\u0000\u0000\u0000\u0157\u0641\u0001"+ + "\u0000\u0000\u0000\u0159\u0643\u0001\u0000\u0000\u0000\u015b\u0645\u0001"+ + "\u0000\u0000\u0000\u015d\u0648\u0001\u0000\u0000\u0000\u015f\u064b\u0001"+ + "\u0000\u0000\u0000\u0161\u064d\u0001\u0000\u0000\u0000\u0163\u0654\u0001"+ + "\u0000\u0000\u0000\u0165\u0658\u0001\u0000\u0000\u0000\u0167\u065b\u0001"+ + "\u0000\u0000\u0000\u0169\u065f\u0001\u0000\u0000\u0000\u016b\u0666\u0001"+ + "\u0000\u0000\u0000\u016d\u066a\u0001\u0000\u0000\u0000\u016f\u066d\u0001"+ + "\u0000\u0000\u0000\u0171\u0672\u0001\u0000\u0000\u0000\u0173\u0676\u0001"+ + "\u0000\u0000\u0000\u0175\u067a\u0001\u0000\u0000\u0000\u0177\u067e\u0001"+ + "\u0000\u0000\u0000\u0179\u0681\u0001\u0000\u0000\u0000\u017b\u0685\u0001"+ + "\u0000\u0000\u0000\u017d\u068c\u0001\u0000\u0000\u0000\u017f\u0690\u0001"+ + "\u0000\u0000\u0000\u0181\u0693\u0001\u0000\u0000\u0000\u0183\u06a4\u0001"+ + "\u0000\u0000\u0000\u0185\u06a6\u0001\u0000\u0000\u0000\u0187\u06a9\u0001"+ + "\u0000\u0000\u0000\u0189\u06af\u0001\u0000\u0000\u0000\u018b\u06b4\u0001"+ + "\u0000\u0000\u0000\u018d\u06ba\u0001\u0000\u0000\u0000\u018f\u06bc\u0001"+ + "\u0000\u0000\u0000\u0191\u06be\u0001\u0000\u0000\u0000\u0193\u06c1\u0001"+ + "\u0000\u0000\u0000\u0195\u06c7\u0001\u0000\u0000\u0000\u0197\u06d7\u0001"+ + "\u0000\u0000\u0000\u0199\u06e6\u0001\u0000\u0000\u0000\u019b\u06f5\u0001"+ + "\u0000\u0000\u0000\u019d\u0700\u0001\u0000\u0000\u0000\u019f\u0708\u0001"+ + "\u0000\u0000\u0000\u01a1\u070e\u0001\u0000\u0000\u0000\u01a3\u0712\u0001"+ + "\u0000\u0000\u0000\u01a5\u0719\u0001\u0000\u0000\u0000\u01a7\u071d\u0001"+ + "\u0000\u0000\u0000\u01a9\u071f\u0001\u0000\u0000\u0000\u01ab\u0726\u0001"+ + "\u0000\u0000\u0000\u01ad\u072c\u0001\u0000\u0000\u0000\u01af\u072e\u0001"+ + "\u0000\u0000\u0000\u01b1\u0737\u0001\u0000\u0000\u0000\u01b3\u073b\u0001"+ + "\u0000\u0000\u0000\u01b5\u074f\u0001\u0000\u0000\u0000\u01b7\u0752\u0001"+ + "\u0000\u0000\u0000\u01b9\u0758\u0001\u0000\u0000\u0000\u01bb\u0765\u0001"+ + "\u0000\u0000\u0000\u01bd\u0767\u0001\u0000\u0000\u0000\u01bf\u076e\u0001"+ + "\u0000\u0000\u0000\u01c1\u0777\u0001\u0000\u0000\u0000\u01c3\u078d\u0001"+ + "\u0000\u0000\u0000\u01c5\u0793\u0001\u0000\u0000\u0000\u01c7\u0798\u0001"+ + "\u0000\u0000\u0000\u01c9\u01ca\u0005a\u0000\u0000\u01ca\u01cb\u0005s\u0000"+ + "\u0000\u01cb\u0006\u0001\u0000\u0000\u0000\u01cc\u01cd\u0005a\u0000\u0000"+ + "\u01cd\u01ce\u0005l\u0000\u0000\u01ce\u01cf\u0005p\u0000\u0000\u01cf\u01d0"+ + "\u0005h\u0000\u0000\u01d0\u01d1\u0005a\u0000\u0000\u01d1\b\u0001\u0000"+ + "\u0000\u0000\u01d2\u01d3\u0005b\u0000\u0000\u01d3\u01d4\u0005r\u0000\u0000"+ + "\u01d4\u01d5\u0005e\u0000\u0000\u01d5\u01d6\u0005a\u0000\u0000\u01d6\u01d7"+ + "\u0005k\u0000\u0000\u01d7\n\u0001\u0000\u0000\u0000\u01d8\u01d9\u0005"+ + "c\u0000\u0000\u01d9\u01da\u0005a\u0000\u0000\u01da\u01db\u0005s\u0000"+ + "\u0000\u01db\u01dc\u0005e\u0000\u0000\u01dc\f\u0001\u0000\u0000\u0000"+ + "\u01dd\u01de\u0005c\u0000\u0000\u01de\u01df\u0005a\u0000\u0000\u01df\u01e0"+ + "\u0005t\u0000\u0000\u01e0\u01e1\u0005c\u0000\u0000\u01e1\u01e2\u0005h"+ + "\u0000\u0000\u01e2\u000e\u0001\u0000\u0000\u0000\u01e3\u01e4\u0005c\u0000"+ + "\u0000\u01e4\u01e5\u0005l\u0000\u0000\u01e5\u01e6\u0005a\u0000\u0000\u01e6"+ + "\u01e7\u0005s\u0000\u0000\u01e7\u01e8\u0005s\u0000\u0000\u01e8\u0010\u0001"+ + "\u0000\u0000\u0000\u01e9\u01ea\u0005c\u0000\u0000\u01ea\u01eb\u0005o\u0000"+ + "\u0000\u01eb\u01ec\u0005n\u0000\u0000\u01ec\u01ed\u0005t\u0000\u0000\u01ed"+ + "\u01ee\u0005i\u0000\u0000\u01ee\u01ef\u0005n\u0000\u0000\u01ef\u01f0\u0005"+ + "u\u0000\u0000\u01f0\u01f1\u0005e\u0000\u0000\u01f1\u0012\u0001\u0000\u0000"+ + "\u0000\u01f2\u01f3\u0005d\u0000\u0000\u01f3\u01f4\u0005e\u0000\u0000\u01f4"+ + "\u01f5\u0005f\u0000\u0000\u01f5\u01f6\u0005a\u0000\u0000\u01f6\u01f7\u0005"+ + "u\u0000\u0000\u01f7\u01f8\u0005l\u0000\u0000\u01f8\u01f9\u0005t\u0000"+ + "\u0000\u01f9\u0014\u0001\u0000\u0000\u0000\u01fa\u01fb\u0005d\u0000\u0000"+ + "\u01fb\u01fc\u0005e\u0000\u0000\u01fc\u01fd\u0005f\u0000\u0000\u01fd\u01fe"+ + "\u0005e\u0000\u0000\u01fe\u01ff\u0005r\u0000\u0000\u01ff\u0016\u0001\u0000"+ + "\u0000\u0000\u0200\u0201\u0005d\u0000\u0000\u0201\u0202\u0005o\u0000\u0000"+ + "\u0202\u0018\u0001\u0000\u0000\u0000\u0203\u0204\u0005g\u0000\u0000\u0204"+ + "\u0205\u0005u\u0000\u0000\u0205\u0206\u0005a\u0000\u0000\u0206\u0207\u0005"+ + "r\u0000\u0000\u0207\u0208\u0005d\u0000\u0000\u0208\u001a\u0001\u0000\u0000"+ + "\u0000\u0209\u020a\u0005e\u0000\u0000\u020a\u020b\u0005l\u0000\u0000\u020b"+ + "\u020c\u0005s\u0000\u0000\u020c\u020d\u0005e\u0000\u0000\u020d\u001c\u0001"+ + "\u0000\u0000\u0000\u020e\u020f\u0005e\u0000\u0000\u020f\u0210\u0005n\u0000"+ + "\u0000\u0210\u0211\u0005u\u0000\u0000\u0211\u0212\u0005m\u0000\u0000\u0212"+ + "\u001e\u0001\u0000\u0000\u0000\u0213\u0214\u0005f\u0000\u0000\u0214\u0215"+ + "\u0005o\u0000\u0000\u0215\u0216\u0005r\u0000\u0000\u0216 \u0001\u0000"+ + "\u0000\u0000\u0217\u0218\u0005f\u0000\u0000\u0218\u0219\u0005a\u0000\u0000"+ + "\u0219\u021a\u0005l\u0000\u0000\u021a\u021b\u0005l\u0000\u0000\u021b\u021c"+ + "\u0005t\u0000\u0000\u021c\u021d\u0005h\u0000\u0000\u021d\u021e\u0005r"+ + "\u0000\u0000\u021e\u021f\u0005o\u0000\u0000\u021f\u0220\u0005u\u0000\u0000"+ + "\u0220\u0221\u0005g\u0000\u0000\u0221\u0222\u0005h\u0000\u0000\u0222\""+ + "\u0001\u0000\u0000\u0000\u0223\u0224\u0005f\u0000\u0000\u0224\u0225\u0005"+ + "u\u0000\u0000\u0225\u0226\u0005n\u0000\u0000\u0226\u0227\u0005c\u0000"+ + "\u0000\u0227$\u0001\u0000\u0000\u0000\u0228\u0229\u0005i\u0000\u0000\u0229"+ + "\u022a\u0005n\u0000\u0000\u022a&\u0001\u0000\u0000\u0000\u022b\u022c\u0005"+ + "i\u0000\u0000\u022c\u022d\u0005f\u0000\u0000\u022d(\u0001\u0000\u0000"+ + "\u0000\u022e\u022f\u0005i\u0000\u0000\u022f\u0230\u0005m\u0000\u0000\u0230"+ + "\u0231\u0005p\u0000\u0000\u0231\u0232\u0005o\u0000\u0000\u0232\u0233\u0005"+ + "r\u0000\u0000\u0233\u0234\u0005t\u0000\u0000\u0234*\u0001\u0000\u0000"+ + "\u0000\u0235\u0236\u0005i\u0000\u0000\u0236\u0237\u0005n\u0000\u0000\u0237"+ + "\u0238\u0005t\u0000\u0000\u0238\u0239\u0005e\u0000\u0000\u0239\u023a\u0005"+ + "r\u0000\u0000\u023a\u023b\u0005n\u0000\u0000\u023b\u023c\u0005a\u0000"+ + "\u0000\u023c\u023d\u0005l\u0000\u0000\u023d,\u0001\u0000\u0000\u0000\u023e"+ + "\u023f\u0005f\u0000\u0000\u023f\u0240\u0005i\u0000\u0000\u0240\u0241\u0005"+ + "n\u0000\u0000\u0241\u0242\u0005a\u0000\u0000\u0242\u0243\u0005l\u0000"+ + "\u0000\u0243.\u0001\u0000\u0000\u0000\u0244\u0245\u0005o\u0000\u0000\u0245"+ + "\u0246\u0005p\u0000\u0000\u0246\u0247\u0005e\u0000\u0000\u0247\u0248\u0005"+ + "n\u0000\u0000\u02480\u0001\u0000\u0000\u0000\u0249\u024a\u0005p\u0000"+ + "\u0000\u024a\u024b\u0005r\u0000\u0000\u024b\u024c\u0005i\u0000\u0000\u024c"+ + "\u024d\u0005v\u0000\u0000\u024d\u024e\u0005a\u0000\u0000\u024e\u024f\u0005"+ + "t\u0000\u0000\u024f\u0250\u0005e\u0000\u0000\u02502\u0001\u0000\u0000"+ + "\u0000\u0251\u0252\u0005p\u0000\u0000\u0252\u0253\u0005u\u0000\u0000\u0253"+ + "\u0254\u0005b\u0000\u0000\u0254\u0255\u0005l\u0000\u0000\u0255\u0256\u0005"+ + "i\u0000\u0000\u0256\u0257\u0005c\u0000\u0000\u02574\u0001\u0000\u0000"+ + "\u0000\u0258\u0259\u0005w\u0000\u0000\u0259\u025a\u0005h\u0000\u0000\u025a"+ + "\u025b\u0005e\u0000\u0000\u025b\u025c\u0005r\u0000\u0000\u025c\u025d\u0005"+ + "e\u0000\u0000\u025d6\u0001\u0000\u0000\u0000\u025e\u025f\u0005w\u0000"+ + "\u0000\u025f\u0260\u0005h\u0000\u0000\u0260\u0261\u0005i\u0000\u0000\u0261"+ + "\u0262\u0005l\u0000\u0000\u0262\u0263\u0005e\u0000\u0000\u02638\u0001"+ + "\u0000\u0000\u0000\u0264\u0265\u0005l\u0000\u0000\u0265\u0266\u0005e\u0000"+ + "\u0000\u0266\u0267\u0005t\u0000\u0000\u0267:\u0001\u0000\u0000\u0000\u0268"+ + "\u0269\u0005v\u0000\u0000\u0269\u026a\u0005a\u0000\u0000\u026a\u026b\u0005"+ + "r\u0000\u0000\u026b<\u0001\u0000\u0000\u0000\u026c\u026d\u0005p\u0000"+ + "\u0000\u026d\u026e\u0005r\u0000\u0000\u026e\u026f\u0005o\u0000\u0000\u026f"+ + "\u0270\u0005t\u0000\u0000\u0270\u0271\u0005o\u0000\u0000\u0271\u0272\u0005"+ + "c\u0000\u0000\u0272\u0273\u0005o\u0000\u0000\u0273\u0274\u0005l\u0000"+ + "\u0000\u0274>\u0001\u0000\u0000\u0000\u0275\u0276\u0005g\u0000\u0000\u0276"+ + "\u0277\u0005e\u0000\u0000\u0277\u0278\u0005t\u0000\u0000\u0278@\u0001"+ + "\u0000\u0000\u0000\u0279\u027a\u0005s\u0000\u0000\u027a\u027b\u0005e\u0000"+ + "\u0000\u027b\u027c\u0005t\u0000\u0000\u027cB\u0001\u0000\u0000\u0000\u027d"+ + "\u027e\u0005w\u0000\u0000\u027e\u027f\u0005i\u0000\u0000\u027f\u0280\u0005"+ + "l\u0000\u0000\u0280\u0281\u0005l\u0000\u0000\u0281\u0282\u0005S\u0000"+ + "\u0000\u0282\u0283\u0005e\u0000\u0000\u0283\u0284\u0005t\u0000\u0000\u0284"+ + "D\u0001\u0000\u0000\u0000\u0285\u0286\u0005d\u0000\u0000\u0286\u0287\u0005"+ + "i\u0000\u0000\u0287\u0288\u0005d\u0000\u0000\u0288\u0289\u0005S\u0000"+ + "\u0000\u0289\u028a\u0005e\u0000\u0000\u028a\u028b\u0005t\u0000\u0000\u028b"+ + "F\u0001\u0000\u0000\u0000\u028c\u028d\u0005r\u0000\u0000\u028d\u028e\u0005"+ + "e\u0000\u0000\u028e\u028f\u0005p\u0000\u0000\u028f\u0290\u0005e\u0000"+ + "\u0000\u0290\u0291\u0005a\u0000\u0000\u0291\u0292\u0005t\u0000\u0000\u0292"+ + "H\u0001\u0000\u0000\u0000\u0293\u0294\u0005s\u0000\u0000\u0294\u0295\u0005"+ + "w\u0000\u0000\u0295\u0296\u0005i\u0000\u0000\u0296\u0297\u0005t\u0000"+ + "\u0000\u0297\u0298\u0005c\u0000\u0000\u0298\u0299\u0005h\u0000\u0000\u0299"+ + "J\u0001\u0000\u0000\u0000\u029a\u029b\u0005s\u0000\u0000\u029b\u029c\u0005"+ + "t\u0000\u0000\u029c\u029d\u0005r\u0000\u0000\u029d\u029e\u0005u\u0000"+ + "\u0000\u029e\u029f\u0005c\u0000\u0000\u029f\u02a0\u0005t\u0000\u0000\u02a0"+ + "L\u0001\u0000\u0000\u0000\u02a1\u02a2\u0005r\u0000\u0000\u02a2\u02a3\u0005"+ + "e\u0000\u0000\u02a3\u02a4\u0005t\u0000\u0000\u02a4\u02a5\u0005u\u0000"+ + "\u0000\u02a5\u02a6\u0005r\u0000\u0000\u02a6\u02a7\u0005n\u0000\u0000\u02a7"+ + "N\u0001\u0000\u0000\u0000\u02a8\u02a9\u0005t\u0000\u0000\u02a9\u02aa\u0005"+ + "h\u0000\u0000\u02aa\u02ab\u0005r\u0000\u0000\u02ab\u02ac\u0005o\u0000"+ + "\u0000\u02ac\u02ad\u0005w\u0000\u0000\u02adP\u0001\u0000\u0000\u0000\u02ae"+ + "\u02af\u0005t\u0000\u0000\u02af\u02b0\u0005h\u0000\u0000\u02b0\u02b1\u0005"+ + "r\u0000\u0000\u02b1\u02b2\u0005o\u0000\u0000\u02b2\u02b3\u0005w\u0000"+ + "\u0000\u02b3\u02b4\u0005s\u0000\u0000\u02b4R\u0001\u0000\u0000\u0000\u02b5"+ + "\u02b6\u0005r\u0000\u0000\u02b6\u02b7\u0005e\u0000\u0000\u02b7\u02b8\u0005"+ + "t\u0000\u0000\u02b8\u02b9\u0005h\u0000\u0000\u02b9\u02ba\u0005r\u0000"+ + "\u0000\u02ba\u02bb\u0005o\u0000\u0000\u02bb\u02bc\u0005w\u0000\u0000\u02bc"+ + "\u02bd\u0005s\u0000\u0000\u02bdT\u0001\u0000\u0000\u0000\u02be\u02bf\u0005"+ + "i\u0000\u0000\u02bf\u02c0\u0005n\u0000\u0000\u02c0\u02c1\u0005d\u0000"+ + "\u0000\u02c1\u02c2\u0005i\u0000\u0000\u02c2\u02c3\u0005r\u0000\u0000\u02c3"+ + "\u02c4\u0005e\u0000\u0000\u02c4\u02c5\u0005c\u0000\u0000\u02c5\u02c6\u0005"+ + "t\u0000\u0000\u02c6V\u0001\u0000\u0000\u0000\u02c7\u02c8\u0005i\u0000"+ + "\u0000\u02c8\u02c9\u0005n\u0000\u0000\u02c9\u02ca\u0005i\u0000\u0000\u02ca"+ + "\u02cb\u0005t\u0000\u0000\u02cbX\u0001\u0000\u0000\u0000\u02cc\u02cd\u0005"+ + "d\u0000\u0000\u02cd\u02ce\u0005e\u0000\u0000\u02ce\u02cf\u0005i\u0000"+ + "\u0000\u02cf\u02d0\u0005n\u0000\u0000\u02d0\u02d1\u0005i\u0000\u0000\u02d1"+ + "\u02d2\u0005t\u0000\u0000\u02d2Z\u0001\u0000\u0000\u0000\u02d3\u02d4\u0005"+ + "a\u0000\u0000\u02d4\u02d5\u0005s\u0000\u0000\u02d5\u02d6\u0005s\u0000"+ + "\u0000\u02d6\u02d7\u0005o\u0000\u0000\u02d7\u02d8\u0005c\u0000\u0000\u02d8"+ + "\u02d9\u0005i\u0000\u0000\u02d9\u02da\u0005a\u0000\u0000\u02da\u02db\u0005"+ + "t\u0000\u0000\u02db\u02dc\u0005e\u0000\u0000\u02dc\u02dd\u0005d\u0000"+ + "\u0000\u02dd\u02de\u0005t\u0000\u0000\u02de\u02df\u0005y\u0000\u0000\u02df"+ + "\u02e0\u0005p\u0000\u0000\u02e0\u02e1\u0005e\u0000\u0000\u02e1\\\u0001"+ + "\u0000\u0000\u0000\u02e2\u02e3\u0005e\u0000\u0000\u02e3\u02e4\u0005x\u0000"+ + "\u0000\u02e4\u02e5\u0005t\u0000\u0000\u02e5\u02e6\u0005e\u0000\u0000\u02e6"+ + "\u02e7\u0005n\u0000\u0000\u02e7\u02e8\u0005s\u0000\u0000\u02e8\u02e9\u0005"+ + "i\u0000\u0000\u02e9\u02ea\u0005o\u0000\u0000\u02ea\u02eb\u0005n\u0000"+ + "\u0000\u02eb^\u0001\u0000\u0000\u0000\u02ec\u02ed\u0005s\u0000\u0000\u02ed"+ + "\u02ee\u0005u\u0000\u0000\u02ee\u02ef\u0005b\u0000\u0000\u02ef\u02f0\u0005"+ + "s\u0000\u0000\u02f0\u02f1\u0005c\u0000\u0000\u02f1\u02f2\u0005r\u0000"+ + "\u0000\u02f2\u02f3\u0005i\u0000\u0000\u02f3\u02f4\u0005p\u0000\u0000\u02f4"+ + "\u02f5\u0005t\u0000\u0000\u02f5`\u0001\u0000\u0000\u0000\u02f6\u02f7\u0005"+ + "p\u0000\u0000\u02f7\u02f8\u0005r\u0000\u0000\u02f8\u02f9\u0005e\u0000"+ + "\u0000\u02f9\u02fa\u0005f\u0000\u0000\u02fa\u02fb\u0005i\u0000\u0000\u02fb"+ + "\u02fc\u0005x\u0000\u0000\u02fcb\u0001\u0000\u0000\u0000\u02fd\u02fe\u0005"+ + "i\u0000\u0000\u02fe\u02ff\u0005n\u0000\u0000\u02ff\u0300\u0005f\u0000"+ + "\u0000\u0300\u0301\u0005i\u0000\u0000\u0301\u0302\u0005x\u0000\u0000\u0302"+ + "d\u0001\u0000\u0000\u0000\u0303\u0304\u0005l\u0000\u0000\u0304\u0305\u0005"+ + "e\u0000\u0000\u0305\u0306\u0005f\u0000\u0000\u0306\u0307\u0005t\u0000"+ + "\u0000\u0307f\u0001\u0000\u0000\u0000\u0308\u0309\u0005r\u0000\u0000\u0309"+ + "\u030a\u0005i\u0000\u0000\u030a\u030b\u0005g\u0000\u0000\u030b\u030c\u0005"+ + "h\u0000\u0000\u030c\u030d\u0005t\u0000\u0000\u030dh\u0001\u0000\u0000"+ + "\u0000\u030e\u030f\u0005n\u0000\u0000\u030f\u0310\u0005o\u0000\u0000\u0310"+ + "\u0311\u0005n\u0000\u0000\u0311\u0312\u0005e\u0000\u0000\u0312j\u0001"+ + "\u0000\u0000\u0000\u0313\u0314\u0005p\u0000\u0000\u0314\u0315\u0005r\u0000"+ + "\u0000\u0315\u0316\u0005e\u0000\u0000\u0316\u0317\u0005c\u0000\u0000\u0317"+ + "\u0318\u0005e\u0000\u0000\u0318\u0319\u0005d\u0000\u0000\u0319\u031a\u0005"+ + "e\u0000\u0000\u031a\u031b\u0005n\u0000\u0000\u031b\u031c\u0005c\u0000"+ + "\u0000\u031c\u031d\u0005e\u0000\u0000\u031d\u031e\u0005g\u0000\u0000\u031e"+ + "\u031f\u0005r\u0000\u0000\u031f\u0320\u0005o\u0000\u0000\u0320\u0321\u0005"+ + "u\u0000\u0000\u0321\u0322\u0005p\u0000\u0000\u0322l\u0001\u0000\u0000"+ + "\u0000\u0323\u0324\u0005h\u0000\u0000\u0324\u0325\u0005i\u0000\u0000\u0325"+ + "\u0326\u0005g\u0000\u0000\u0326\u0327\u0005h\u0000\u0000\u0327\u0328\u0005"+ + "e\u0000\u0000\u0328\u0329\u0005r\u0000\u0000\u0329\u032a\u0005T\u0000"+ + "\u0000\u032a\u032b\u0005h\u0000\u0000\u032b\u032c\u0005a\u0000\u0000\u032c"+ + "\u032d\u0005n\u0000\u0000\u032dn\u0001\u0000\u0000\u0000\u032e\u032f\u0005"+ + "l\u0000\u0000\u032f\u0330\u0005o\u0000\u0000\u0330\u0331\u0005w\u0000"+ + "\u0000\u0331\u0332\u0005e\u0000\u0000\u0332\u0333\u0005r\u0000\u0000\u0333"+ + "\u0334\u0005T\u0000\u0000\u0334\u0335\u0005h\u0000\u0000\u0335\u0336\u0005"+ + "a\u0000\u0000\u0336\u0337\u0005n\u0000\u0000\u0337p\u0001\u0000\u0000"+ + "\u0000\u0338\u0339\u0005a\u0000\u0000\u0339\u033a\u0005s\u0000\u0000\u033a"+ + "\u033b\u0005s\u0000\u0000\u033b\u033c\u0005i\u0000\u0000\u033c\u033d\u0005"+ + "g\u0000\u0000\u033d\u033e\u0005n\u0000\u0000\u033e\u033f\u0005m\u0000"+ + "\u0000\u033f\u0340\u0005e\u0000\u0000\u0340\u0341\u0005n\u0000\u0000\u0341"+ + "\u0342\u0005t\u0000\u0000\u0342r\u0001\u0000\u0000\u0000\u0343\u0344\u0005"+ + "a\u0000\u0000\u0344\u0345\u0005s\u0000\u0000\u0345\u0346\u0005s\u0000"+ + "\u0000\u0346\u0347\u0005o\u0000\u0000\u0347\u0348\u0005c\u0000\u0000\u0348"+ + "\u0349\u0005i\u0000\u0000\u0349\u034a\u0005a\u0000\u0000\u034a\u034b\u0005"+ + "t\u0000\u0000\u034b\u034c\u0005i\u0000\u0000\u034c\u034d\u0005v\u0000"+ + "\u0000\u034d\u034e\u0005i\u0000\u0000\u034e\u034f\u0005t\u0000\u0000\u034f"+ + "\u0350\u0005y\u0000\u0000\u0350t\u0001\u0000\u0000\u0000\u0351\u0352\u0005"+ + "p\u0000\u0000\u0352\u0353\u0005o\u0000\u0000\u0353\u0354\u0005s\u0000"+ + "\u0000\u0354\u0355\u0005t\u0000\u0000\u0355\u0356\u0005f\u0000\u0000\u0356"+ + "\u0357\u0005i\u0000\u0000\u0357\u0358\u0005x\u0000\u0000\u0358v\u0001"+ + "\u0000\u0000\u0000\u0359\u035a\u0005o\u0000\u0000\u035a\u035b\u0005p\u0000"+ + "\u0000\u035b\u035c\u0005e\u0000\u0000\u035c\u035d\u0005r\u0000\u0000\u035d"+ + "\u035e\u0005a\u0000\u0000\u035e\u035f\u0005t\u0000\u0000\u035f\u0360\u0005"+ + "o\u0000\u0000\u0360\u0361\u0005r\u0000\u0000\u0361x\u0001\u0000\u0000"+ + "\u0000\u0362\u0363\u0005t\u0000\u0000\u0363\u0364\u0005y\u0000\u0000\u0364"+ + "\u0365\u0005p\u0000\u0000\u0365\u0366\u0005e\u0000\u0000\u0366\u0367\u0005"+ + "a\u0000\u0000\u0367\u0368\u0005l\u0000\u0000\u0368\u0369\u0005i\u0000"+ + "\u0000\u0369\u036a\u0005a\u0000\u0000\u036a\u036b\u0005s\u0000\u0000\u036b"+ + "z\u0001\u0000\u0000\u0000\u036c\u036d\u0005o\u0000\u0000\u036d\u036e\u0005"+ + "s\u0000\u0000\u036e|\u0001\u0000\u0000\u0000\u036f\u0370\u0005a\u0000"+ + "\u0000\u0370\u0371\u0005r\u0000\u0000\u0371\u0372\u0005c\u0000\u0000\u0372"+ + "\u0373\u0005h\u0000\u0000\u0373~\u0001\u0000\u0000\u0000\u0374\u0375\u0005"+ + "s\u0000\u0000\u0375\u0376\u0005w\u0000\u0000\u0376\u0377\u0005i\u0000"+ + "\u0000\u0377\u0378\u0005f\u0000\u0000\u0378\u0379\u0005t\u0000\u0000\u0379"+ + "\u0080\u0001\u0000\u0000\u0000\u037a\u037b\u0005c\u0000\u0000\u037b\u037c"+ + "\u0005o\u0000\u0000\u037c\u037d\u0005m\u0000\u0000\u037d\u037e\u0005p"+ + "\u0000\u0000\u037e\u037f\u0005i\u0000\u0000\u037f\u0380\u0005l\u0000\u0000"+ + "\u0380\u0381\u0005e\u0000\u0000\u0381\u0382\u0005r\u0000\u0000\u0382\u0082"+ + "\u0001\u0000\u0000\u0000\u0383\u0384\u0005c\u0000\u0000\u0384\u0385\u0005"+ + "a\u0000\u0000\u0385\u0386\u0005n\u0000\u0000\u0386\u0387\u0005I\u0000"+ + "\u0000\u0387\u0388\u0005m\u0000\u0000\u0388\u0389\u0005p\u0000\u0000\u0389"+ + "\u038a\u0005o\u0000\u0000\u038a\u038b\u0005r\u0000\u0000\u038b\u038c\u0005"+ + "t\u0000\u0000\u038c\u0084\u0001\u0000\u0000\u0000\u038d\u038e\u0005t\u0000"+ + "\u0000\u038e\u038f\u0005a\u0000\u0000\u038f\u0390\u0005r\u0000\u0000\u0390"+ + "\u0391\u0005g\u0000\u0000\u0391\u0392\u0005e\u0000\u0000\u0392\u0393\u0005"+ + "t\u0000\u0000\u0393\u0394\u0005E\u0000\u0000\u0394\u0395\u0005n\u0000"+ + "\u0000\u0395\u0396\u0005v\u0000\u0000\u0396\u0397\u0005i\u0000\u0000\u0397"+ + "\u0398\u0005r\u0000\u0000\u0398\u0399\u0005o\u0000\u0000\u0399\u039a\u0005"+ + "n\u0000\u0000\u039a\u039b\u0005m\u0000\u0000\u039b\u039c\u0005e\u0000"+ + "\u0000\u039c\u039d\u0005n\u0000\u0000\u039d\u039e\u0005t\u0000\u0000\u039e"+ + "\u0086\u0001\u0000\u0000\u0000\u039f\u03a0\u0005c\u0000\u0000\u03a0\u03a1"+ + "\u0005o\u0000\u0000\u03a1\u03a2\u0005n\u0000\u0000\u03a2\u03a3\u0005v"+ + "\u0000\u0000\u03a3\u03a4\u0005e\u0000\u0000\u03a4\u03a5\u0005n\u0000\u0000"+ + "\u03a5\u03a6\u0005i\u0000\u0000\u03a6\u03a7\u0005e\u0000\u0000\u03a7\u03a8"+ + "\u0005n\u0000\u0000\u03a8\u03a9\u0005c\u0000\u0000\u03a9\u03aa\u0005e"+ + "\u0000\u0000\u03aa\u0088\u0001\u0000\u0000\u0000\u03ab\u03ac\u0005d\u0000"+ + "\u0000\u03ac\u03ad\u0005y\u0000\u0000\u03ad\u03ae\u0005n\u0000\u0000\u03ae"+ + "\u03af\u0005a\u0000\u0000\u03af\u03b0\u0005m\u0000\u0000\u03b0\u03b1\u0005"+ + "i\u0000\u0000\u03b1\u03b2\u0005c\u0000\u0000\u03b2\u008a\u0001\u0000\u0000"+ + "\u0000\u03b3\u03b4\u0005l\u0000\u0000\u03b4\u03b5\u0005a\u0000\u0000\u03b5"+ + "\u03b6\u0005z\u0000\u0000\u03b6\u03b7\u0005y\u0000\u0000\u03b7\u008c\u0001"+ + "\u0000\u0000\u0000\u03b8\u03b9\u0005o\u0000\u0000\u03b9\u03ba\u0005p\u0000"+ + "\u0000\u03ba\u03bb\u0005t\u0000\u0000\u03bb\u03bc\u0005i\u0000\u0000\u03bc"+ + "\u03bd\u0005o\u0000\u0000\u03bd\u03be\u0005n\u0000\u0000\u03be\u03bf\u0005"+ + "a\u0000\u0000\u03bf\u03c0\u0005l\u0000\u0000\u03c0\u008e\u0001\u0000\u0000"+ + "\u0000\u03c1\u03c2\u0005o\u0000\u0000\u03c2\u03c3\u0005v\u0000\u0000\u03c3"+ + "\u03c4\u0005e\u0000\u0000\u03c4\u03c5\u0005r\u0000\u0000\u03c5\u03c6\u0005"+ + "r\u0000\u0000\u03c6\u03c7\u0005i\u0000\u0000\u03c7\u03c8\u0005d\u0000"+ + "\u0000\u03c8\u03c9\u0005e\u0000\u0000\u03c9\u0090\u0001\u0000\u0000\u0000"+ + "\u03ca\u03cb\u0005r\u0000\u0000\u03cb\u03cc\u0005e\u0000\u0000\u03cc\u03cd"+ + "\u0005q\u0000\u0000\u03cd\u03ce\u0005u\u0000\u0000\u03ce\u03cf\u0005i"+ + "\u0000\u0000\u03cf\u03d0\u0005r\u0000\u0000\u03d0\u03d1\u0005e\u0000\u0000"+ + "\u03d1\u03d2\u0005d\u0000\u0000\u03d2\u0092\u0001\u0000\u0000\u0000\u03d3"+ + "\u03d4\u0005s\u0000\u0000\u03d4\u03d5\u0005t\u0000\u0000\u03d5\u03d6\u0005"+ + "a\u0000\u0000\u03d6\u03d7\u0005t\u0000\u0000\u03d7\u03d8\u0005i\u0000"+ + "\u0000\u03d8\u03d9\u0005c\u0000\u0000\u03d9\u0094\u0001\u0000\u0000\u0000"+ + "\u03da\u03db\u0005w\u0000\u0000\u03db\u03dc\u0005e\u0000\u0000\u03dc\u03dd"+ + "\u0005a\u0000\u0000\u03dd\u03de\u0005k\u0000\u0000\u03de\u0096\u0001\u0000"+ + "\u0000\u0000\u03df\u03e0\u0005u\u0000\u0000\u03e0\u03e1\u0005n\u0000\u0000"+ + "\u03e1\u03e2\u0005o\u0000\u0000\u03e2\u03e3\u0005w\u0000\u0000\u03e3\u03e4"+ + "\u0005n\u0000\u0000\u03e4\u03e5\u0005e\u0000\u0000\u03e5\u03e6\u0005d"+ + "\u0000\u0000\u03e6\u0098\u0001\u0000\u0000\u0000\u03e7\u03e8\u0005s\u0000"+ + "\u0000\u03e8\u03e9\u0005a\u0000\u0000\u03e9\u03ea\u0005f\u0000\u0000\u03ea"+ + "\u03eb\u0005e\u0000\u0000\u03eb\u009a\u0001\u0000\u0000\u0000\u03ec\u03ed"+ + "\u0005u\u0000\u0000\u03ed\u03ee\u0005n\u0000\u0000\u03ee\u03ef\u0005s"+ + "\u0000\u0000\u03ef\u03f0\u0005a\u0000\u0000\u03f0\u03f1\u0005f\u0000\u0000"+ + "\u03f1\u03f2\u0005e\u0000\u0000\u03f2\u009c\u0001\u0000\u0000\u0000\u03f3"+ + "\u03f4\u0005m\u0000\u0000\u03f4\u03f5\u0005u\u0000\u0000\u03f5\u03f6\u0005"+ + "t\u0000\u0000\u03f6\u03f7\u0005a\u0000\u0000\u03f7\u03f8\u0005t\u0000"+ + "\u0000\u03f8\u03f9\u0005i\u0000\u0000\u03f9\u03fa\u0005n\u0000\u0000\u03fa"+ + "\u03fb\u0005g\u0000\u0000\u03fb\u009e\u0001\u0000\u0000\u0000\u03fc\u03fd"+ + "\u0005n\u0000\u0000\u03fd\u03fe\u0005o\u0000\u0000\u03fe\u03ff\u0005n"+ + "\u0000\u0000\u03ff\u0400\u0005m\u0000\u0000\u0400\u0401\u0005u\u0000\u0000"+ + "\u0401\u0402\u0005t\u0000\u0000\u0402\u0403\u0005a\u0000\u0000\u0403\u0404"+ + "\u0005t\u0000\u0000\u0404\u0405\u0005i\u0000\u0000\u0405\u0406\u0005n"+ + "\u0000\u0000\u0406\u0407\u0005g\u0000\u0000\u0407\u00a0\u0001\u0000\u0000"+ + "\u0000\u0408\u0409\u0005f\u0000\u0000\u0409\u040a\u0005i\u0000\u0000\u040a"+ + "\u040b\u0005l\u0000\u0000\u040b\u040c\u0005e\u0000\u0000\u040c\u040d\u0005"+ + "p\u0000\u0000\u040d\u040e\u0005r\u0000\u0000\u040e\u040f\u0005i\u0000"+ + "\u0000\u040f\u0410\u0005v\u0000\u0000\u0410\u0411\u0005a\u0000\u0000\u0411"+ + "\u0412\u0005t\u0000\u0000\u0412\u0413\u0005e\u0000\u0000\u0413\u00a2\u0001"+ + "\u0000\u0000\u0000\u0414\u0415\u0005i\u0000\u0000\u0415\u0416\u0005s\u0000"+ + "\u0000\u0416\u00a4\u0001\u0000\u0000\u0000\u0417\u0418\u0005t\u0000\u0000"+ + "\u0418\u0419\u0005r\u0000\u0000\u0419\u041a\u0005y\u0000\u0000\u041a\u00a6"+ + "\u0001\u0000\u0000\u0000\u041b\u041c\u0005s\u0000\u0000\u041c\u041d\u0005"+ + "u\u0000\u0000\u041d\u041e\u0005p\u0000\u0000\u041e\u041f\u0005e\u0000"+ + "\u0000\u041f\u0420\u0005r\u0000\u0000\u0420\u00a8\u0001\u0000\u0000\u0000"+ + "\u0421\u0422\u0005A\u0000\u0000\u0422\u0423\u0005n\u0000\u0000\u0423\u0424"+ + "\u0005y\u0000\u0000\u0424\u00aa\u0001\u0000\u0000\u0000\u0425\u0426\u0005"+ + "f\u0000\u0000\u0426\u0427\u0005a\u0000\u0000\u0427\u0428\u0005l\u0000"+ + "\u0000\u0428\u0429\u0005s\u0000\u0000\u0429\u042a\u0005e\u0000\u0000\u042a"+ + "\u00ac\u0001\u0000\u0000\u0000\u042b\u042c\u0005r\u0000\u0000\u042c\u042d"+ + "\u0005e\u0000\u0000\u042d\u042e\u0005d\u0000\u0000\u042e\u00ae\u0001\u0000"+ + "\u0000\u0000\u042f\u0430\u0005b\u0000\u0000\u0430\u0431\u0005l\u0000\u0000"+ + "\u0431\u0432\u0005u\u0000\u0000\u0432\u0433\u0005e\u0000\u0000\u0433\u00b0"+ + "\u0001\u0000\u0000\u0000\u0434\u0435\u0005g\u0000\u0000\u0435\u0436\u0005"+ + "r\u0000\u0000\u0436\u0437\u0005e\u0000\u0000\u0437\u0438\u0005e\u0000"+ + "\u0000\u0438\u0439\u0005n\u0000\u0000\u0439\u00b2\u0001\u0000\u0000\u0000"+ + "\u043a\u043b\u0005r\u0000\u0000\u043b\u043c\u0005e\u0000\u0000\u043c\u043d"+ + "\u0005s\u0000\u0000\u043d\u043e\u0005o\u0000\u0000\u043e\u043f\u0005u"+ + "\u0000\u0000\u043f\u0440\u0005r\u0000\u0000\u0440\u0441\u0005c\u0000\u0000"+ + "\u0441\u0442\u0005e\u0000\u0000\u0442\u0443\u0005N\u0000\u0000\u0443\u0444"+ + "\u0005a\u0000\u0000\u0444\u0445\u0005m\u0000\u0000\u0445\u0446\u0005e"+ + "\u0000\u0000\u0446\u00b4\u0001\u0000\u0000\u0000\u0447\u0448\u0005t\u0000"+ + "\u0000\u0448\u0449\u0005r\u0000\u0000\u0449\u044a\u0005u\u0000\u0000\u044a"+ + "\u044b\u0005e\u0000\u0000\u044b\u00b6\u0001\u0000\u0000\u0000\u044c\u044d"+ + "\u0005n\u0000\u0000\u044d\u044e\u0005i\u0000\u0000\u044e\u044f\u0005l"+ + "\u0000\u0000\u044f\u00b8\u0001\u0000\u0000\u0000\u0450\u0451\u0005i\u0000"+ + "\u0000\u0451\u0452\u0005n\u0000\u0000\u0452\u0453\u0005o\u0000\u0000\u0453"+ + "\u0454\u0005u\u0000\u0000\u0454\u0455\u0005t\u0000\u0000\u0455\u00ba\u0001"+ + "\u0000\u0000\u0000\u0456\u0457\u0005s\u0000\u0000\u0457\u0458\u0005o\u0000"+ + "\u0000\u0458\u0459\u0005m\u0000\u0000\u0459\u045a\u0005e\u0000\u0000\u045a"+ + "\u00bc\u0001\u0000\u0000\u0000\u045b\u045c\u0005T\u0000\u0000\u045c\u045d"+ + "\u0005y\u0000\u0000\u045d\u045e\u0005p\u0000\u0000\u045e\u045f\u0005e"+ + "\u0000\u0000\u045f\u00be\u0001\u0000\u0000\u0000\u0460\u0461\u0005p\u0000"+ + "\u0000\u0461\u0462\u0005r\u0000\u0000\u0462\u0463\u0005e\u0000\u0000\u0463"+ + "\u0464\u0005c\u0000\u0000\u0464\u0465\u0005e\u0000\u0000\u0465\u0466\u0005"+ + "d\u0000\u0000\u0466\u0467\u0005e\u0000\u0000\u0467\u0468\u0005n\u0000"+ + "\u0000\u0468\u0469\u0005c\u0000\u0000\u0469\u046a\u0005e\u0000\u0000\u046a"+ + "\u00c0\u0001\u0000\u0000\u0000\u046b\u046c\u0005s\u0000\u0000\u046c\u046d"+ + "\u0005e\u0000\u0000\u046d\u046e\u0005l\u0000\u0000\u046e\u046f\u0005f"+ + "\u0000\u0000\u046f\u00c2\u0001\u0000\u0000\u0000\u0470\u0471\u0005S\u0000"+ + "\u0000\u0471\u0472\u0005e\u0000\u0000\u0472\u0473\u0005l\u0000\u0000\u0473"+ + "\u0474\u0005f\u0000\u0000\u0474\u00c4\u0001\u0000\u0000\u0000\u0475\u0476"+ + "\u0005m\u0000\u0000\u0476\u0477\u0005a\u0000\u0000\u0477\u0478\u0005c"+ + "\u0000\u0000\u0478\u0479\u0005O\u0000\u0000\u0479\u047a\u0005S\u0000\u0000"+ + "\u047a\u00c6\u0001\u0000\u0000\u0000\u047b\u047c\u0005i\u0000\u0000\u047c"+ + "\u047d\u0005O\u0000\u0000\u047d\u047e\u0005S\u0000\u0000\u047e\u00c8\u0001"+ + "\u0000\u0000\u0000\u047f\u0480\u0005O\u0000\u0000\u0480\u0481\u0005S\u0000"+ + "\u0000\u0481\u0482\u0005X\u0000\u0000\u0482\u00ca\u0001\u0000\u0000\u0000"+ + "\u0483\u0484\u0005w\u0000\u0000\u0484\u0485\u0005a\u0000\u0000\u0485\u0486"+ + "\u0005t\u0000\u0000\u0486\u0487\u0005c\u0000\u0000\u0487\u0488\u0005h"+ + "\u0000\u0000\u0488\u0489\u0005O\u0000\u0000\u0489\u048a\u0005S\u0000\u0000"+ + "\u048a\u00cc\u0001\u0000\u0000\u0000\u048b\u048c\u0005t\u0000\u0000\u048c"+ + "\u048d\u0005v\u0000\u0000\u048d\u048e\u0005O\u0000\u0000\u048e\u048f\u0005"+ + "S\u0000\u0000\u048f\u00ce\u0001\u0000\u0000\u0000\u0490\u0491\u0005L\u0000"+ + "\u0000\u0491\u0492\u0005i\u0000\u0000\u0492\u0493\u0005n\u0000\u0000\u0493"+ + "\u0494\u0005u\u0000\u0000\u0494\u0495\u0005x\u0000\u0000\u0495\u00d0\u0001"+ + "\u0000\u0000\u0000\u0496\u0497\u0005W\u0000\u0000\u0497\u0498\u0005i\u0000"+ + "\u0000\u0498\u0499\u0005n\u0000\u0000\u0499\u049a\u0005d\u0000\u0000\u049a"+ + "\u049b\u0005o\u0000\u0000\u049b\u049c\u0005w\u0000\u0000\u049c\u049d\u0005"+ + "s\u0000\u0000\u049d\u00d2\u0001\u0000\u0000\u0000\u049e\u049f\u0005i\u0000"+ + "\u0000\u049f\u04a0\u00053\u0000\u0000\u04a0\u04a1\u00058\u0000\u0000\u04a1"+ + "\u04a2\u00056\u0000\u0000\u04a2\u00d4\u0001\u0000\u0000\u0000\u04a3\u04a4"+ + "\u0005x\u0000\u0000\u04a4\u04a5\u00058\u0000\u0000\u04a5\u04a6\u00056"+ + "\u0000\u0000\u04a6\u04a7\u0005_\u0000\u0000\u04a7\u04a8\u00056\u0000\u0000"+ + "\u04a8\u04a9\u00054\u0000\u0000\u04a9\u00d6\u0001\u0000\u0000\u0000\u04aa"+ + "\u04ab\u0005a\u0000\u0000\u04ab\u04ac\u0005r\u0000\u0000\u04ac\u04ad\u0005"+ + "m\u0000\u0000\u04ad\u00d8\u0001\u0000\u0000\u0000\u04ae\u04af\u0005a\u0000"+ + "\u0000\u04af\u04b0\u0005r\u0000\u0000\u04b0\u04b1\u0005m\u0000\u0000\u04b1"+ + "\u04b2\u00056\u0000\u0000\u04b2\u04b3\u00054\u0000\u0000\u04b3\u00da\u0001"+ + "\u0000\u0000\u0000\u04b4\u04b5\u0005s\u0000\u0000\u04b5\u04b6\u0005i\u0000"+ + "\u0000\u04b6\u04b7\u0005m\u0000\u0000\u04b7\u04b8\u0005u\u0000\u0000\u04b8"+ + "\u04b9\u0005l\u0000\u0000\u04b9\u04ba\u0005a\u0000\u0000\u04ba\u04bb\u0005"+ + "t\u0000\u0000\u04bb\u04bc\u0005o\u0000\u0000\u04bc\u04bd\u0005r\u0000"+ + "\u0000\u04bd\u00dc\u0001\u0000\u0000\u0000\u04be\u04bf\u0005m\u0000\u0000"+ + "\u04bf\u04c0\u0005a\u0000\u0000\u04c0\u04c1\u0005c\u0000\u0000\u04c1\u04c2"+ + "\u0005C\u0000\u0000\u04c2\u04c3\u0005a\u0000\u0000\u04c3\u04c4\u0005t"+ + "\u0000\u0000\u04c4\u04c5\u0005a\u0000\u0000\u04c5\u04c6\u0005l\u0000\u0000"+ + "\u04c6\u04c7\u0005y\u0000\u0000\u04c7\u04c8\u0005s\u0000\u0000\u04c8\u04c9"+ + "\u0005t\u0000\u0000\u04c9\u00de\u0001\u0000\u0000\u0000\u04ca\u04cb\u0005"+ + "i\u0000\u0000\u04cb\u04cc\u0005O\u0000\u0000\u04cc\u04cd\u0005S\u0000"+ + "\u0000\u04cd\u04ce\u0005A\u0000\u0000\u04ce\u04cf\u0005p\u0000\u0000\u04cf"+ + "\u04d0\u0005p\u0000\u0000\u04d0\u04d1\u0005l\u0000\u0000\u04d1\u04d2\u0005"+ + "i\u0000\u0000\u04d2\u04d3\u0005c\u0000\u0000\u04d3\u04d4\u0005a\u0000"+ + "\u0000\u04d4\u04d5\u0005t\u0000\u0000\u04d5\u04d6\u0005i\u0000\u0000\u04d6"+ + "\u04d7\u0005o\u0000\u0000\u04d7\u04d8\u0005n\u0000\u0000\u04d8\u04d9\u0005"+ + "E\u0000\u0000\u04d9\u04da\u0005x\u0000\u0000\u04da\u04db\u0005t\u0000"+ + "\u0000\u04db\u04dc\u0005e\u0000\u0000\u04dc\u04dd\u0005n\u0000\u0000\u04dd"+ + "\u04de\u0005s\u0000\u0000\u04de\u04df\u0005i\u0000\u0000\u04df\u04e0\u0005"+ + "o\u0000\u0000\u04e0\u04e1\u0005n\u0000\u0000\u04e1\u00e0\u0001\u0000\u0000"+ + "\u0000\u04e2\u04e3\u0005m\u0000\u0000\u04e3\u04e4\u0005a\u0000\u0000\u04e4"+ + "\u04e5\u0005c\u0000\u0000\u04e5\u04e6\u0005C\u0000\u0000\u04e6\u04e7\u0005"+ + "a\u0000\u0000\u04e7\u04e8\u0005t\u0000\u0000\u04e8\u04e9\u0005a\u0000"+ + "\u0000\u04e9\u04ea\u0005l\u0000\u0000\u04ea\u04eb\u0005y\u0000\u0000\u04eb"+ + "\u04ec\u0005s\u0000\u0000\u04ec\u04ed\u0005t\u0000\u0000\u04ed\u04ee\u0005"+ + "A\u0000\u0000\u04ee\u04ef\u0005p\u0000\u0000\u04ef\u04f0\u0005p\u0000"+ + "\u0000\u04f0\u04f1\u0005l\u0000\u0000\u04f1\u04f2\u0005i\u0000\u0000\u04f2"+ + "\u04f3\u0005c\u0000\u0000\u04f3\u04f4\u0005a\u0000\u0000\u04f4\u04f5\u0005"+ + "t\u0000\u0000\u04f5\u04f6\u0005i\u0000\u0000\u04f6\u04f7\u0005o\u0000"+ + "\u0000\u04f7\u04f8\u0005n\u0000\u0000\u04f8\u04f9\u0005E\u0000\u0000\u04f9"+ + "\u04fa\u0005x\u0000\u0000\u04fa\u04fb\u0005t\u0000\u0000\u04fb\u04fc\u0005"+ + "e\u0000\u0000\u04fc\u04fd\u0005n\u0000\u0000\u04fd\u04fe\u0005s\u0000"+ + "\u0000\u04fe\u04ff\u0005i\u0000\u0000\u04ff\u0500\u0005o\u0000\u0000\u0500"+ + "\u0501\u0005n\u0000\u0000\u0501\u00e2\u0001\u0000\u0000\u0000\u0502\u0503"+ + "\u0005m\u0000\u0000\u0503\u0504\u0005a\u0000\u0000\u0504\u0505\u0005c"+ + "\u0000\u0000\u0505\u0506\u0005O\u0000\u0000\u0506\u0507\u0005S\u0000\u0000"+ + "\u0507\u0508\u0005A\u0000\u0000\u0508\u0509\u0005p\u0000\u0000\u0509\u050a"+ + "\u0005p\u0000\u0000\u050a\u050b\u0005l\u0000\u0000\u050b\u050c\u0005i"+ + "\u0000\u0000\u050c\u050d\u0005c\u0000\u0000\u050d\u050e\u0005a\u0000\u0000"+ + "\u050e\u050f\u0005t\u0000\u0000\u050f\u0510\u0005i\u0000\u0000\u0510\u0511"+ + "\u0005o\u0000\u0000\u0511\u0512\u0005n\u0000\u0000\u0512\u0513\u0005E"+ + "\u0000\u0000\u0513\u0514\u0005x\u0000\u0000\u0514\u0515\u0005t\u0000\u0000"+ + "\u0515\u0516\u0005e\u0000\u0000\u0516\u0517\u0005n\u0000\u0000\u0517\u0518"+ + "\u0005s\u0000\u0000\u0518\u0519\u0005i\u0000\u0000\u0519\u051a\u0005o"+ + "\u0000\u0000\u051a\u051b\u0005n\u0000\u0000\u051b\u00e4\u0001\u0000\u0000"+ + "\u0000\u051c\u051d\u0005#\u0000\u0000\u051d\u051e\u0005s\u0000\u0000\u051e"+ + "\u051f\u0005o\u0000\u0000\u051f\u0520\u0005u\u0000\u0000\u0520\u0521\u0005"+ + "r\u0000\u0000\u0521\u0522\u0005c\u0000\u0000\u0522\u0523\u0005e\u0000"+ + "\u0000\u0523\u0524\u0005L\u0000\u0000\u0524\u0525\u0005o\u0000\u0000\u0525"+ + "\u0526\u0005c\u0000\u0000\u0526\u0527\u0005a\u0000\u0000\u0527\u0528\u0005"+ + "t\u0000\u0000\u0528\u0529\u0005i\u0000\u0000\u0529\u052a\u0005o\u0000"+ + "\u0000\u052a\u052b\u0005n\u0000\u0000\u052b\u00e6\u0001\u0000\u0000\u0000"+ + "\u052c\u052d\u0005f\u0000\u0000\u052d\u052e\u0005i\u0000\u0000\u052e\u052f"+ + "\u0005l\u0000\u0000\u052f\u0530\u0005e\u0000\u0000\u0530\u00e8\u0001\u0000"+ + "\u0000\u0000\u0531\u0532\u0005l\u0000\u0000\u0532\u0533\u0005i\u0000\u0000"+ + "\u0533\u0534\u0005n\u0000\u0000\u0534\u0535\u0005e\u0000\u0000\u0535\u00ea"+ + "\u0001\u0000\u0000\u0000\u0536\u0537\u0005#\u0000\u0000\u0537\u0538\u0005"+ + "e\u0000\u0000\u0538\u0539\u0005r\u0000\u0000\u0539\u053a\u0005r\u0000"+ + "\u0000\u053a\u053b\u0005o\u0000\u0000\u053b\u053c\u0005r\u0000\u0000\u053c"+ + "\u00ec\u0001\u0000\u0000\u0000\u053d\u053e\u0005#\u0000\u0000\u053e\u053f"+ + "\u0005w\u0000\u0000\u053f\u0540\u0005a\u0000\u0000\u0540\u0541\u0005r"+ + "\u0000\u0000\u0541\u0542\u0005n\u0000\u0000\u0542\u0543\u0005i\u0000\u0000"+ + "\u0543\u0544\u0005n\u0000\u0000\u0544\u0545\u0005g\u0000\u0000\u0545\u00ee"+ + "\u0001\u0000\u0000\u0000\u0546\u0547\u0005#\u0000\u0000\u0547\u0548\u0005"+ + "a\u0000\u0000\u0548\u0549\u0005v\u0000\u0000\u0549\u054a\u0005a\u0000"+ + "\u0000\u054a\u054b\u0005i\u0000\u0000\u054b\u054c\u0005l\u0000\u0000\u054c"+ + "\u054d\u0005a\u0000\u0000\u054d\u054e\u0005b\u0000\u0000\u054e\u054f\u0005"+ + "l\u0000\u0000\u054f\u0550\u0005e\u0000\u0000\u0550\u00f0\u0001\u0000\u0000"+ + "\u0000\u0551\u0552\u0005#\u0000\u0000\u0552\u0553\u0005i\u0000\u0000\u0553"+ + "\u0554\u0005f\u0000\u0000\u0554\u00f2\u0001\u0000\u0000\u0000\u0555\u0556"+ + "\u0005#\u0000\u0000\u0556\u0557\u0005e\u0000\u0000\u0557\u0558\u0005l"+ + "\u0000\u0000\u0558\u0559\u0005s\u0000\u0000\u0559\u055a\u0005e\u0000\u0000"+ + "\u055a\u055b\u0005i\u0000\u0000\u055b\u055c\u0005f\u0000\u0000\u055c\u00f4"+ + "\u0001\u0000\u0000\u0000\u055d\u055e\u0005#\u0000\u0000\u055e\u055f\u0005"+ + "e\u0000\u0000\u055f\u0560\u0005l\u0000\u0000\u0560\u0561\u0005s\u0000"+ + "\u0000\u0561\u0562\u0005e\u0000\u0000\u0562\u00f6\u0001\u0000\u0000\u0000"+ + "\u0563\u0564\u0005#\u0000\u0000\u0564\u0565\u0005e\u0000\u0000\u0565\u0566"+ + "\u0005n\u0000\u0000\u0566\u0567\u0005d\u0000\u0000\u0567\u0568\u0005i"+ + "\u0000\u0000\u0568\u0569\u0005f\u0000\u0000\u0569\u00f8\u0001\u0000\u0000"+ + "\u0000\u056a\u056b\u0005#\u0000\u0000\u056b\u056c\u0005f\u0000\u0000\u056c"+ + "\u056d\u0005i\u0000\u0000\u056d\u056e\u0005l\u0000\u0000\u056e\u056f\u0005"+ + "e\u0000\u0000\u056f\u00fa\u0001\u0000\u0000\u0000\u0570\u0571\u0005#\u0000"+ + "\u0000\u0571\u0572\u0005f\u0000\u0000\u0572\u0573\u0005i\u0000\u0000\u0573"+ + "\u0574\u0005l\u0000\u0000\u0574\u0575\u0005e\u0000\u0000\u0575\u0576\u0005"+ + "I\u0000\u0000\u0576\u0577\u0005D\u0000\u0000\u0577\u00fc\u0001\u0000\u0000"+ + "\u0000\u0578\u0579\u0005#\u0000\u0000\u0579\u057a\u0005f\u0000\u0000\u057a"+ + "\u057b\u0005i\u0000\u0000\u057b\u057c\u0005l\u0000\u0000\u057c\u057d\u0005"+ + "e\u0000\u0000\u057d\u057e\u0005P\u0000\u0000\u057e\u057f\u0005a\u0000"+ + "\u0000\u057f\u0580\u0005t\u0000\u0000\u0580\u0581\u0005h\u0000\u0000\u0581"+ + "\u00fe\u0001\u0000\u0000\u0000\u0582\u0583\u0005#\u0000\u0000\u0583\u0584"+ + "\u0005l\u0000\u0000\u0584\u0585\u0005i\u0000\u0000\u0585\u0586\u0005n"+ + "\u0000\u0000\u0586\u0587\u0005e\u0000\u0000\u0587\u0100\u0001\u0000\u0000"+ + "\u0000\u0588\u0589\u0005#\u0000\u0000\u0589\u058a\u0005c\u0000\u0000\u058a"+ + "\u058b\u0005o\u0000\u0000\u058b\u058c\u0005l\u0000\u0000\u058c\u058d\u0005"+ + "u\u0000\u0000\u058d\u058e\u0005m\u0000\u0000\u058e\u058f\u0005n\u0000"+ + "\u0000\u058f\u0102\u0001\u0000\u0000\u0000\u0590\u0591\u0005#\u0000\u0000"+ + "\u0591\u0592\u0005f\u0000\u0000\u0592\u0593\u0005u\u0000\u0000\u0593\u0594"+ + "\u0005n\u0000\u0000\u0594\u0595\u0005c\u0000\u0000\u0595\u0596\u0005t"+ + "\u0000\u0000\u0596\u0597\u0005i\u0000\u0000\u0597\u0598\u0005o\u0000\u0000"+ + "\u0598\u0599\u0005n\u0000\u0000\u0599\u0104\u0001\u0000\u0000\u0000\u059a"+ + "\u059b\u0005#\u0000\u0000\u059b\u059c\u0005d\u0000\u0000\u059c\u059d\u0005"+ + "s\u0000\u0000\u059d\u059e\u0005o\u0000\u0000\u059e\u059f\u0005h\u0000"+ + "\u0000\u059f\u05a0\u0005a\u0000\u0000\u05a0\u05a1\u0005n\u0000\u0000\u05a1"+ + "\u05a2\u0005d\u0000\u0000\u05a2\u05a3\u0005l\u0000\u0000\u05a3\u05a4\u0005"+ + "e\u0000\u0000\u05a4\u0106\u0001\u0000\u0000\u0000\u05a5\u05a6\u0005#\u0000"+ + "\u0000\u05a6\u05a7\u0005s\u0000\u0000\u05a7\u05a8\u0005e\u0000\u0000\u05a8"+ + "\u05a9\u0005l\u0000\u0000\u05a9\u05aa\u0005e\u0000\u0000\u05aa\u05ab\u0005"+ + "c\u0000\u0000\u05ab\u05ac\u0005t\u0000\u0000\u05ac\u05ad\u0005o\u0000"+ + "\u0000\u05ad\u05ae\u0005r\u0000\u0000\u05ae\u0108\u0001\u0000\u0000\u0000"+ + "\u05af\u05b0\u0005#\u0000\u0000\u05b0\u05b1\u0005k\u0000\u0000\u05b1\u05b2"+ + "\u0005e\u0000\u0000\u05b2\u05b3\u0005y\u0000\u0000\u05b3\u05b4\u0005P"+ + "\u0000\u0000\u05b4\u05b5\u0005a\u0000\u0000\u05b5\u05b6\u0005t\u0000\u0000"+ + "\u05b6\u05b7\u0005h\u0000\u0000\u05b7\u010a\u0001\u0000\u0000\u0000\u05b8"+ + "\u05b9\u0005#\u0000\u0000\u05b9\u05ba\u0005c\u0000\u0000\u05ba\u05bb\u0005"+ + "o\u0000\u0000\u05bb\u05bc\u0005l\u0000\u0000\u05bc\u05bd\u0005o\u0000"+ + "\u0000\u05bd\u05be\u0005r\u0000\u0000\u05be\u05bf\u0005L\u0000\u0000\u05bf"+ + "\u05c0\u0005i\u0000\u0000\u05c0\u05c1\u0005t\u0000\u0000\u05c1\u05c2\u0005"+ + "e\u0000\u0000\u05c2\u05c3\u0005r\u0000\u0000\u05c3\u05c4\u0005a\u0000"+ + "\u0000\u05c4\u05c5\u0005l\u0000\u0000\u05c5\u010c\u0001\u0000\u0000\u0000"+ + "\u05c6\u05c7\u0005#\u0000\u0000\u05c7\u05c8\u0005f\u0000\u0000\u05c8\u05c9"+ + "\u0005i\u0000\u0000\u05c9\u05ca\u0005l\u0000\u0000\u05ca\u05cb\u0005e"+ + "\u0000\u0000\u05cb\u05cc\u0005L\u0000\u0000\u05cc\u05cd\u0005i\u0000\u0000"+ + "\u05cd\u05ce\u0005t\u0000\u0000\u05ce\u05cf\u0005e\u0000\u0000\u05cf\u05d0"+ + "\u0005r\u0000\u0000\u05d0\u05d1\u0005a\u0000\u0000\u05d1\u05d2\u0005l"+ + "\u0000\u0000\u05d2\u010e\u0001\u0000\u0000\u0000\u05d3\u05d4\u0005#\u0000"+ + "\u0000\u05d4\u05d5\u0005i\u0000\u0000\u05d5\u05d6\u0005m\u0000\u0000\u05d6"+ + "\u05d7\u0005a\u0000\u0000\u05d7\u05d8\u0005g\u0000\u0000\u05d8\u05d9\u0005"+ + "e\u0000\u0000\u05d9\u05da\u0005L\u0000\u0000\u05da\u05db\u0005i\u0000"+ + "\u0000\u05db\u05dc\u0005t\u0000\u0000\u05dc\u05dd\u0005e\u0000\u0000\u05dd"+ + "\u05de\u0005r\u0000\u0000\u05de\u05df\u0005a\u0000\u0000\u05df\u05e0\u0005"+ + "l\u0000\u0000\u05e0\u0110\u0001\u0000\u0000\u0000\u05e1\u05e2\u0005g\u0000"+ + "\u0000\u05e2\u05e3\u0005e\u0000\u0000\u05e3\u05e4\u0005t\u0000\u0000\u05e4"+ + "\u05e5\u0005t\u0000\u0000\u05e5\u05e6\u0005e\u0000\u0000\u05e6\u05e7\u0005"+ + "r\u0000\u0000\u05e7\u0112\u0001\u0000\u0000\u0000\u05e8\u05e9\u0005s\u0000"+ + "\u0000\u05e9\u05ea\u0005e\u0000\u0000\u05ea\u05eb\u0005t\u0000\u0000\u05eb"+ + "\u05ec\u0005t\u0000\u0000\u05ec\u05ed\u0005e\u0000\u0000\u05ed\u05ee\u0005"+ + "r\u0000\u0000\u05ee\u0114\u0001\u0000\u0000\u0000\u05ef\u05f1\u0003\u0117"+ + "\u0089\u0000\u05f0\u05f2\u0003\u011b\u008b\u0000\u05f1\u05f0\u0001\u0000"+ + "\u0000\u0000\u05f1\u05f2\u0001\u0000\u0000\u0000\u05f2\u05f6\u0001\u0000"+ + "\u0000\u0000\u05f3\u05f6\u0003\u011d\u008c\u0000\u05f4\u05f6\u0003\u011f"+ + "\u008d\u0000\u05f5\u05ef\u0001\u0000\u0000\u0000\u05f5\u05f3\u0001\u0000"+ + "\u0000\u0000\u05f5\u05f4\u0001\u0000\u0000\u0000\u05f6\u0116\u0001\u0000"+ + "\u0000\u0000\u05f7\u05f9\u0007\u0000\u0000\u0000\u05f8\u05f7\u0001\u0000"+ + "\u0000\u0000\u05f9\u0118\u0001\u0000\u0000\u0000\u05fa\u05fd\u0007\u0001"+ + "\u0000\u0000\u05fb\u05fd\u0003\u0117\u0089\u0000\u05fc\u05fa\u0001\u0000"+ + "\u0000\u0000\u05fc\u05fb\u0001\u0000\u0000\u0000\u05fd\u011a\u0001\u0000"+ + "\u0000\u0000\u05fe\u0600\u0003\u0119\u008a\u0000\u05ff\u05fe\u0001\u0000"+ + "\u0000\u0000\u0600\u0601\u0001\u0000\u0000\u0000\u0601\u05ff\u0001\u0000"+ + "\u0000\u0000\u0601\u0602\u0001\u0000\u0000\u0000\u0602\u011c\u0001\u0000"+ + "\u0000\u0000\u0603\u0604\u0005$\u0000\u0000\u0604\u0605\u0003\u0171\u00b6"+ + "\u0000\u0605\u011e\u0001\u0000\u0000\u0000\u0606\u0607\u0005$\u0000\u0000"+ + "\u0607\u0608\u0003\u011b\u008b\u0000\u0608\u0120\u0001\u0000\u0000\u0000"+ + "\u0609\u060a\u0005.\u0000\u0000\u060a\u0122\u0001\u0000\u0000\u0000\u060b"+ + "\u060c\u0005{\u0000\u0000\u060c\u0124\u0001\u0000\u0000\u0000\u060d\u060e"+ + "\u0005(\u0000\u0000\u060e\u060f\u0006\u0090\u0000\u0000\u060f\u0126\u0001"+ + "\u0000\u0000\u0000\u0610\u0611\u0005[\u0000\u0000\u0611\u0128\u0001\u0000"+ + "\u0000\u0000\u0612\u0613\u0005}\u0000\u0000\u0613\u012a\u0001\u0000\u0000"+ + "\u0000\u0614\u0615\u0005)\u0000\u0000\u0615\u0616\u0006\u0093\u0001\u0000"+ + "\u0616\u012c\u0001\u0000\u0000\u0000\u0617\u0618\u0005]\u0000\u0000\u0618"+ + "\u012e\u0001\u0000\u0000\u0000\u0619\u061a\u0005,\u0000\u0000\u061a\u0130"+ + "\u0001\u0000\u0000\u0000\u061b\u061c\u0005:\u0000\u0000\u061c\u0132\u0001"+ + "\u0000\u0000\u0000\u061d\u061e\u0005;\u0000\u0000\u061e\u0134\u0001\u0000"+ + "\u0000\u0000\u061f\u0620\u0005<\u0000\u0000\u0620\u0136\u0001\u0000\u0000"+ + "\u0000\u0621\u0622\u0005>\u0000\u0000\u0622\u0138\u0001\u0000\u0000\u0000"+ + "\u0623\u0624\u0005_\u0000\u0000\u0624\u013a\u0001\u0000\u0000\u0000\u0625"+ + "\u0626\u0005!\u0000\u0000\u0626\u013c\u0001\u0000\u0000\u0000\u0627\u0628"+ + "\u0005?\u0000\u0000\u0628\u013e\u0001\u0000\u0000\u0000\u0629\u062a\u0005"+ + "@\u0000\u0000\u062a\u0140\u0001\u0000\u0000\u0000\u062b\u062c\u0005&\u0000"+ + "\u0000\u062c\u0142\u0001\u0000\u0000\u0000\u062d\u062e\u0005-\u0000\u0000"+ + "\u062e\u0144\u0001\u0000\u0000\u0000\u062f\u0630\u0005=\u0000\u0000\u0630"+ + "\u0146\u0001\u0000\u0000\u0000\u0631\u0632\u0005|\u0000\u0000\u0632\u0148"+ + "\u0001\u0000\u0000\u0000\u0633\u0634\u0005/\u0000\u0000\u0634\u014a\u0001"+ + "\u0000\u0000\u0000\u0635\u0636\u0005+\u0000\u0000\u0636\u014c\u0001\u0000"+ + "\u0000\u0000\u0637\u0638\u0005*\u0000\u0000\u0638\u014e\u0001\u0000\u0000"+ + "\u0000\u0639\u063a\u0005%\u0000\u0000\u063a\u0150\u0001\u0000\u0000\u0000"+ + "\u063b\u063c\u0005^\u0000\u0000\u063c\u0152\u0001\u0000\u0000\u0000\u063d"+ + "\u063e\u0005~\u0000\u0000\u063e\u0154\u0001\u0000\u0000\u0000\u063f\u0640"+ + "\u0005#\u0000\u0000\u0640\u0156\u0001\u0000\u0000\u0000\u0641\u0642\u0005"+ + "`\u0000\u0000\u0642\u0158\u0001\u0000\u0000\u0000\u0643\u0644\u0005$\u0000"+ + "\u0000\u0644\u015a\u0001\u0000\u0000\u0000\u0645\u0646\u0005\\\u0000\u0000"+ + "\u0646\u015c\u0001\u0000\u0000\u0000\u0647\u0649\u0007\u0002\u0000\u0000"+ + "\u0648\u0647\u0001\u0000\u0000\u0000\u0649\u015e\u0001\u0000\u0000\u0000"+ + "\u064a\u064c\u0007\u0003\u0000\u0000\u064b\u064a\u0001\u0000\u0000\u0000"+ + "\u064c\u0160\u0001\u0000\u0000\u0000\u064d\u064e\u00050\u0000\u0000\u064e"+ + "\u064f\u0005b\u0000\u0000\u064f\u0650\u0001\u0000\u0000\u0000\u0650\u0652"+ + "\u0003\u0163\u00af\u0000\u0651\u0653\u0003\u0167\u00b1\u0000\u0652\u0651"+ + "\u0001\u0000\u0000\u0000\u0652\u0653\u0001\u0000\u0000\u0000\u0653\u0162"+ + "\u0001\u0000\u0000\u0000\u0654\u0655\u0007\u0004\u0000\u0000\u0655\u0164"+ + "\u0001\u0000\u0000\u0000\u0656\u0659\u0003\u0163\u00af\u0000\u0657\u0659"+ + "\u0005_\u0000\u0000\u0658\u0656\u0001\u0000\u0000\u0000\u0658\u0657\u0001"+ + "\u0000\u0000\u0000\u0659\u0166\u0001\u0000\u0000\u0000\u065a\u065c\u0003"+ + "\u0165\u00b0\u0000\u065b\u065a\u0001\u0000\u0000\u0000\u065c\u065d\u0001"+ + "\u0000\u0000\u0000\u065d\u065b\u0001\u0000\u0000\u0000\u065d\u065e\u0001"+ + "\u0000\u0000\u0000\u065e\u0168\u0001\u0000\u0000\u0000\u065f\u0660\u0005"+ + "0\u0000\u0000\u0660\u0661\u0005o\u0000\u0000\u0661\u0662\u0001\u0000\u0000"+ + "\u0000\u0662\u0664\u0003\u016b\u00b3\u0000\u0663\u0665\u0003\u016f\u00b5"+ + "\u0000\u0664\u0663\u0001\u0000\u0000\u0000\u0664\u0665\u0001\u0000\u0000"+ + "\u0000\u0665\u016a\u0001\u0000\u0000\u0000\u0666\u0667\u0007\u0005\u0000"+ + "\u0000\u0667\u016c\u0001\u0000\u0000\u0000\u0668\u066b\u0003\u016b\u00b3"+ + "\u0000\u0669\u066b\u0005_\u0000\u0000\u066a\u0668\u0001\u0000\u0000\u0000"+ + "\u066a\u0669\u0001\u0000\u0000\u0000\u066b\u016e\u0001\u0000\u0000\u0000"+ + "\u066c\u066e\u0003\u016d\u00b4\u0000\u066d\u066c\u0001\u0000\u0000\u0000"+ + "\u066e\u066f\u0001\u0000\u0000\u0000\u066f\u066d\u0001\u0000\u0000\u0000"+ + "\u066f\u0670\u0001\u0000\u0000\u0000\u0670\u0170\u0001\u0000\u0000\u0000"+ + "\u0671\u0673\u0003\u0175\u00b8\u0000\u0672\u0671\u0001\u0000\u0000\u0000"+ + "\u0673\u0674\u0001\u0000\u0000\u0000\u0674\u0672\u0001\u0000\u0000\u0000"+ + "\u0674\u0675\u0001\u0000\u0000\u0000\u0675\u0172\u0001\u0000\u0000\u0000"+ + "\u0676\u0678\u0003\u0175\u00b8\u0000\u0677\u0679\u0003\u0179\u00ba\u0000"+ + "\u0678\u0677\u0001\u0000\u0000\u0000\u0678\u0679\u0001\u0000\u0000\u0000"+ + "\u0679\u0174\u0001\u0000\u0000\u0000\u067a\u067b\u0007\u0006\u0000\u0000"+ + "\u067b\u0176\u0001\u0000\u0000\u0000\u067c\u067f\u0003\u0175\u00b8\u0000"+ + "\u067d\u067f\u0005_\u0000\u0000\u067e\u067c\u0001\u0000\u0000\u0000\u067e"+ + "\u067d\u0001\u0000\u0000\u0000\u067f\u0178\u0001\u0000\u0000\u0000\u0680"+ + "\u0682\u0003\u0177\u00b9\u0000\u0681\u0680\u0001\u0000\u0000\u0000\u0682"+ + "\u0683\u0001\u0000\u0000\u0000\u0683\u0681\u0001\u0000\u0000\u0000\u0683"+ + "\u0684\u0001\u0000\u0000\u0000\u0684\u017a\u0001\u0000\u0000\u0000\u0685"+ + "\u0686\u00050\u0000\u0000\u0686\u0687\u0005x\u0000\u0000\u0687\u0688\u0001"+ + "\u0000\u0000\u0000\u0688\u068a\u0003\u017d\u00bc\u0000\u0689\u068b\u0003"+ + "\u0181\u00be\u0000\u068a\u0689\u0001\u0000\u0000\u0000\u068a\u068b\u0001"+ + "\u0000\u0000\u0000\u068b\u017c\u0001\u0000\u0000\u0000\u068c\u068d\u0007"+ + "\u0007\u0000\u0000\u068d\u017e\u0001\u0000\u0000\u0000\u068e\u0691\u0003"+ + "\u017d\u00bc\u0000\u068f\u0691\u0005_\u0000\u0000\u0690\u068e\u0001\u0000"+ + "\u0000\u0000\u0690\u068f\u0001\u0000\u0000\u0000\u0691\u0180\u0001\u0000"+ + "\u0000\u0000\u0692\u0694\u0003\u017f\u00bd\u0000\u0693\u0692\u0001\u0000"+ + "\u0000\u0000\u0694\u0695\u0001\u0000\u0000\u0000\u0695\u0693\u0001\u0000"+ + "\u0000\u0000\u0695\u0696\u0001\u0000\u0000\u0000\u0696\u0182\u0001\u0000"+ + "\u0000\u0000\u0697\u0699\u0003\u0173\u00b7\u0000\u0698\u069a\u0003\u0185"+ + "\u00c0\u0000\u0699\u0698\u0001\u0000\u0000\u0000\u0699\u069a\u0001\u0000"+ + "\u0000\u0000\u069a\u069c\u0001\u0000\u0000\u0000\u069b\u069d\u0003\u0187"+ + "\u00c1\u0000\u069c\u069b\u0001\u0000\u0000\u0000\u069c\u069d\u0001\u0000"+ + "\u0000\u0000\u069d\u06a5\u0001\u0000\u0000\u0000\u069e\u06a0\u0003\u017b"+ + "\u00bb\u0000\u069f\u06a1\u0003\u0189\u00c2\u0000\u06a0\u069f\u0001\u0000"+ + "\u0000\u0000\u06a0\u06a1\u0001\u0000\u0000\u0000\u06a1\u06a2\u0001\u0000"+ + "\u0000\u0000\u06a2\u06a3\u0003\u018b\u00c3\u0000\u06a3\u06a5\u0001\u0000"+ + "\u0000\u0000\u06a4\u0697\u0001\u0000\u0000\u0000\u06a4\u069e\u0001\u0000"+ + "\u0000\u0000\u06a5\u0184\u0001\u0000\u0000\u0000\u06a6\u06a7\u0005.\u0000"+ + "\u0000\u06a7\u06a8\u0003\u0173\u00b7\u0000\u06a8\u0186\u0001\u0000\u0000"+ + "\u0000\u06a9\u06ab\u0003\u018d\u00c4\u0000\u06aa\u06ac\u0003\u0191\u00c6"+ + "\u0000\u06ab\u06aa\u0001\u0000\u0000\u0000\u06ab\u06ac\u0001\u0000\u0000"+ + "\u0000\u06ac\u06ad\u0001\u0000\u0000\u0000\u06ad\u06ae\u0003\u0173\u00b7"+ + "\u0000\u06ae\u0188\u0001\u0000\u0000\u0000\u06af\u06b0\u0005.\u0000\u0000"+ + "\u06b0\u06b2\u0003\u017d\u00bc\u0000\u06b1\u06b3\u0003\u0181\u00be\u0000"+ + "\u06b2\u06b1\u0001\u0000\u0000\u0000\u06b2\u06b3\u0001\u0000\u0000\u0000"+ + "\u06b3\u018a\u0001\u0000\u0000\u0000\u06b4\u06b6\u0003\u018f\u00c5\u0000"+ + "\u06b5\u06b7\u0003\u0191\u00c6\u0000\u06b6\u06b5\u0001\u0000\u0000\u0000"+ + "\u06b6\u06b7\u0001\u0000\u0000\u0000\u06b7\u06b8\u0001\u0000\u0000\u0000"+ + "\u06b8\u06b9\u0003\u0173\u00b7\u0000\u06b9\u018c\u0001\u0000\u0000\u0000"+ + "\u06ba\u06bb\u0007\b\u0000\u0000\u06bb\u018e\u0001\u0000\u0000\u0000\u06bc"+ + "\u06bd\u0007\t\u0000\u0000\u06bd\u0190\u0001\u0000\u0000\u0000\u06be\u06bf"+ + "\u0007\n\u0000\u0000\u06bf\u0192\u0001\u0000\u0000\u0000\u06c0\u06c2\u0007"+ + "\u000b\u0000\u0000\u06c1\u06c0\u0001\u0000\u0000\u0000\u06c2\u06c3\u0001"+ + "\u0000\u0000\u0000\u06c3\u06c1\u0001\u0000\u0000\u0000\u06c3\u06c4\u0001"+ + "\u0000\u0000\u0000\u06c4\u06c5\u0001\u0000\u0000\u0000\u06c5\u06c6\u0006"+ + "\u00c7\u0002\u0000\u06c6\u0194\u0001\u0000\u0000\u0000\u06c7\u06c8\u0005"+ + "#\u0000\u0000\u06c8\u06c9\u0005!\u0000\u0000\u06c9\u06cd\u0001\u0000\u0000"+ + "\u0000\u06ca\u06cc\t\u0000\u0000\u0000\u06cb\u06ca\u0001\u0000\u0000\u0000"+ + "\u06cc\u06cf\u0001\u0000\u0000\u0000\u06cd\u06ce\u0001\u0000\u0000\u0000"+ + "\u06cd\u06cb\u0001\u0000\u0000\u0000\u06ce\u06d1\u0001\u0000\u0000\u0000"+ + "\u06cf\u06cd\u0001\u0000\u0000\u0000\u06d0\u06d2\u0007\f\u0000\u0000\u06d1"+ + "\u06d0\u0001\u0000\u0000\u0000\u06d2\u06d3\u0001\u0000\u0000\u0000\u06d3"+ + "\u06d1\u0001\u0000\u0000\u0000\u06d3\u06d4\u0001\u0000\u0000\u0000\u06d4"+ + "\u06d5\u0001\u0000\u0000\u0000\u06d5\u06d6\u0006\u00c8\u0002\u0000\u06d6"+ + "\u0196\u0001\u0000\u0000\u0000\u06d7\u06d8\u0005/\u0000\u0000\u06d8\u06d9"+ + "\u0005*\u0000\u0000\u06d9\u06de\u0001\u0000\u0000\u0000\u06da\u06dd\u0003"+ + "\u0197\u00c9\u0000\u06db\u06dd\t\u0000\u0000\u0000\u06dc\u06da\u0001\u0000"+ + "\u0000\u0000\u06dc\u06db\u0001\u0000\u0000\u0000\u06dd\u06e0\u0001\u0000"+ + "\u0000\u0000\u06de\u06df\u0001\u0000\u0000\u0000\u06de\u06dc\u0001\u0000"+ + "\u0000\u0000\u06df\u06e1\u0001\u0000\u0000\u0000\u06e0\u06de\u0001\u0000"+ + "\u0000\u0000\u06e1\u06e2\u0005*\u0000\u0000\u06e2\u06e3\u0005/\u0000\u0000"+ + "\u06e3\u06e4\u0001\u0000\u0000\u0000\u06e4\u06e5\u0006\u00c9\u0002\u0000"+ + "\u06e5\u0198\u0001\u0000\u0000\u0000\u06e6\u06e7\u0005/\u0000\u0000\u06e7"+ + "\u06e8\u0005/\u0000\u0000\u06e8\u06ec\u0001\u0000\u0000\u0000\u06e9\u06eb"+ + "\t\u0000\u0000\u0000\u06ea\u06e9\u0001\u0000\u0000\u0000\u06eb\u06ee\u0001"+ + "\u0000\u0000\u0000\u06ec\u06ed\u0001\u0000\u0000\u0000\u06ec\u06ea\u0001"+ + "\u0000\u0000\u0000\u06ed\u06f0\u0001\u0000\u0000\u0000\u06ee\u06ec\u0001"+ + "\u0000\u0000\u0000\u06ef\u06f1\u0007\r\u0000\u0000\u06f0\u06ef\u0001\u0000"+ + "\u0000\u0000\u06f1\u06f2\u0001\u0000\u0000\u0000\u06f2\u06f3\u0006\u00ca"+ + "\u0002\u0000\u06f3\u019a\u0001\u0000\u0000\u0000\u06f4\u06f6\u0005#\u0000"+ + "\u0000\u06f5\u06f4\u0001\u0000\u0000\u0000\u06f6\u06f7\u0001\u0000\u0000"+ + "\u0000\u06f7\u06f5\u0001\u0000\u0000\u0000\u06f7\u06f8\u0001\u0000\u0000"+ + "\u0000\u06f8\u06f9\u0001\u0000\u0000\u0000\u06f9\u06fa\u0005\"\u0000\u0000"+ + "\u06fa\u06fb\u0005\"\u0000\u0000\u06fb\u06fc\u0005\"\u0000\u0000\u06fc"+ + "\u06fd\u0001\u0000\u0000\u0000\u06fd\u06fe\u0006\u00cb\u0003\u0000\u06fe"+ + "\u019c\u0001\u0000\u0000\u0000\u06ff\u0701\u0005#\u0000\u0000\u0700\u06ff"+ + "\u0001\u0000\u0000\u0000\u0701\u0702\u0001\u0000\u0000\u0000\u0702\u0700"+ + "\u0001\u0000\u0000\u0000\u0702\u0703\u0001\u0000\u0000\u0000\u0703\u0704"+ + "\u0001\u0000\u0000\u0000\u0704\u0705\u0005\"\u0000\u0000\u0705\u0706\u0001"+ + "\u0000\u0000\u0000\u0706\u0707\u0006\u00cc\u0004\u0000\u0707\u019e\u0001"+ + "\u0000\u0000\u0000\u0708\u0709\u0005\"\u0000\u0000\u0709\u070a\u0005\""+ + "\u0000\u0000\u070a\u070b\u0005\"\u0000\u0000\u070b\u070c\u0001\u0000\u0000"+ + "\u0000\u070c\u070d\u0006\u00cd\u0005\u0000\u070d\u01a0\u0001\u0000\u0000"+ + "\u0000\u070e\u070f\u0005\"\u0000\u0000\u070f\u0710\u0001\u0000\u0000\u0000"+ + "\u0710\u0711\u0006\u00ce\u0006\u0000\u0711\u01a2\u0001\u0000\u0000\u0000"+ + "\u0712\u0713\u0005\\\u0000\u0000\u0713\u0714\u0005(\u0000\u0000\u0714"+ + "\u0715\u0001\u0000\u0000\u0000\u0715\u0716\u0006\u00cf\u0007\u0000\u0716"+ + "\u0717\u0001\u0000\u0000\u0000\u0717\u0718\u0006\u00cf\b\u0000\u0718\u01a4"+ + "\u0001\u0000\u0000\u0000\u0719\u071a\u0005\"\u0000\u0000\u071a\u071b\u0001"+ + "\u0000\u0000\u0000\u071b\u071c\u0006\u00d0\t\u0000\u071c\u01a6\u0001\u0000"+ + "\u0000\u0000\u071d\u071e\u0003\u01b7\u00d9\u0000\u071e\u01a8\u0001\u0000"+ + "\u0000\u0000\u071f\u0720\u0005\\\u0000\u0000\u0720\u0721\u0005(\u0000"+ + "\u0000\u0721\u0722\u0001\u0000\u0000\u0000\u0722\u0723\u0006\u00d2\n\u0000"+ + "\u0723\u0724\u0001\u0000\u0000\u0000\u0724\u0725\u0006\u00d2\b\u0000\u0725"+ + "\u01aa\u0001\u0000\u0000\u0000\u0726\u0727\u0005\"\u0000\u0000\u0727\u0728"+ + "\u0005\"\u0000\u0000\u0728\u0729\u0005\"\u0000\u0000\u0729\u072a\u0001"+ + "\u0000\u0000\u0000\u072a\u072b\u0006\u00d3\t\u0000\u072b\u01ac\u0001\u0000"+ + "\u0000\u0000\u072c\u072d\u0003\u01bb\u00db\u0000\u072d\u01ae\u0001\u0000"+ + "\u0000\u0000\u072e\u0730\u0005\"\u0000\u0000\u072f\u0731\u0005#\u0000"+ + "\u0000\u0730\u072f\u0001\u0000\u0000\u0000\u0731\u0732\u0001\u0000\u0000"+ + "\u0000\u0732\u0730\u0001\u0000\u0000\u0000\u0732\u0733\u0001\u0000\u0000"+ + "\u0000\u0733\u0734\u0001\u0000\u0000\u0000\u0734\u0735\u0006\u00d5\t\u0000"+ + "\u0735\u01b0\u0001\u0000\u0000\u0000\u0736\u0738\b\u000e\u0000\u0000\u0737"+ + "\u0736\u0001\u0000\u0000\u0000\u0738\u0739\u0001\u0000\u0000\u0000\u0739"+ + "\u0737\u0001\u0000\u0000\u0000\u0739\u073a\u0001\u0000\u0000\u0000\u073a"+ + "\u01b2\u0001\u0000\u0000\u0000\u073b\u073c\u0005\"\u0000\u0000\u073c\u073d"+ + "\u0005\"\u0000\u0000\u073d\u073e\u0005\"\u0000\u0000\u073e\u0740\u0001"+ + "\u0000\u0000\u0000\u073f\u0741\u0005#\u0000\u0000\u0740\u073f\u0001\u0000"+ + "\u0000\u0000\u0741\u0742\u0001\u0000\u0000\u0000\u0742\u0740\u0001\u0000"+ + "\u0000\u0000\u0742\u0743\u0001\u0000\u0000\u0000\u0743\u0744\u0001\u0000"+ + "\u0000\u0000\u0744\u0745\u0006\u00d7\t\u0000\u0745\u01b4\u0001\u0000\u0000"+ + "\u0000\u0746\u0748\b\u000f\u0000\u0000\u0747\u0746\u0001\u0000\u0000\u0000"+ + "\u0748\u0749\u0001\u0000\u0000\u0000\u0749\u0747\u0001\u0000\u0000\u0000"+ + "\u0749\u074a\u0001\u0000\u0000\u0000\u074a\u0750\u0001\u0000\u0000\u0000"+ + "\u074b\u074d\u0005\"\u0000\u0000\u074c\u074e\u0005\"\u0000\u0000\u074d"+ + "\u074c\u0001\u0000\u0000\u0000\u074d\u074e\u0001\u0000\u0000\u0000\u074e"+ + "\u0750\u0001\u0000\u0000\u0000\u074f\u0747\u0001\u0000\u0000\u0000\u074f"+ + "\u074b\u0001\u0000\u0000\u0000\u0750\u01b6\u0001\u0000\u0000\u0000\u0751"+ + "\u0753\u0003\u01b9\u00da\u0000\u0752\u0751\u0001\u0000\u0000\u0000\u0753"+ + "\u0754\u0001\u0000\u0000\u0000\u0754\u0752\u0001\u0000\u0000\u0000\u0754"+ + "\u0755\u0001\u0000\u0000\u0000\u0755\u01b8\u0001\u0000\u0000\u0000\u0756"+ + "\u0759\u0003\u01bf\u00dd\u0000\u0757\u0759\b\u0010\u0000\u0000\u0758\u0756"+ + "\u0001\u0000\u0000\u0000\u0758\u0757\u0001\u0000\u0000\u0000\u0759\u01ba"+ + "\u0001\u0000\u0000\u0000\u075a\u0766\u0003\u01bf\u00dd\u0000\u075b\u075d"+ + "\b\u0011\u0000\u0000\u075c\u075b\u0001\u0000\u0000\u0000\u075d\u075e\u0001"+ + "\u0000\u0000\u0000\u075e\u075c\u0001\u0000\u0000\u0000\u075e\u075f\u0001"+ + "\u0000\u0000\u0000\u075f\u0766\u0001\u0000\u0000\u0000\u0760\u0762\u0005"+ + "\"\u0000\u0000\u0761\u0763\u0005\"\u0000\u0000\u0762\u0761\u0001\u0000"+ + "\u0000\u0000\u0762\u0763\u0001\u0000\u0000\u0000\u0763\u0766\u0001\u0000"+ + "\u0000\u0000\u0764\u0766\u0003\u01c3\u00df\u0000\u0765\u075a\u0001\u0000"+ + "\u0000\u0000\u0765\u075c\u0001\u0000\u0000\u0000\u0765\u0760\u0001\u0000"+ + "\u0000\u0000\u0765\u0764\u0001\u0000\u0000\u0000\u0766\u01bc\u0001\u0000"+ + "\u0000\u0000\u0767\u076b\u0005\\\u0000\u0000\u0768\u076a\u0005#\u0000"+ + "\u0000\u0769\u0768\u0001\u0000\u0000\u0000\u076a\u076d\u0001\u0000\u0000"+ + "\u0000\u076b\u0769\u0001\u0000\u0000\u0000\u076b\u076c\u0001\u0000\u0000"+ + "\u0000\u076c\u01be\u0001\u0000\u0000\u0000\u076d\u076b\u0001\u0000\u0000"+ + "\u0000\u076e\u0775\u0003\u01bd\u00dc\u0000\u076f\u0776\u0007\u0012\u0000"+ + "\u0000\u0770\u0771\u0005u\u0000\u0000\u0771\u0772\u0005{\u0000\u0000\u0772"+ + "\u0773\u0003\u01c1\u00de\u0000\u0773\u0774\u0005}\u0000\u0000\u0774\u0776"+ + "\u0001\u0000\u0000\u0000\u0775\u076f\u0001\u0000\u0000\u0000\u0775\u0770"+ + "\u0001\u0000\u0000\u0000\u0776\u01c0\u0001\u0000\u0000\u0000\u0777\u0779"+ + "\u0003\u017d\u00bc\u0000\u0778\u077a\u0003\u017d\u00bc\u0000\u0779\u0778"+ + "\u0001\u0000\u0000\u0000\u0779\u077a\u0001\u0000\u0000\u0000\u077a\u077c"+ + "\u0001\u0000\u0000\u0000\u077b\u077d\u0003\u017d\u00bc\u0000\u077c\u077b"+ + "\u0001\u0000\u0000\u0000\u077c\u077d\u0001\u0000\u0000\u0000\u077d\u077f"+ + "\u0001\u0000\u0000\u0000\u077e\u0780\u0003\u017d\u00bc\u0000\u077f\u077e"+ + "\u0001\u0000\u0000\u0000\u077f\u0780\u0001\u0000\u0000\u0000\u0780\u0782"+ + "\u0001\u0000\u0000\u0000\u0781\u0783\u0003\u017d\u00bc\u0000\u0782\u0781"+ + "\u0001\u0000\u0000\u0000\u0782\u0783\u0001\u0000\u0000\u0000\u0783\u0785"+ + "\u0001\u0000\u0000\u0000\u0784\u0786\u0003\u017d\u00bc\u0000\u0785\u0784"+ + "\u0001\u0000\u0000\u0000\u0785\u0786\u0001\u0000\u0000\u0000\u0786\u0788"+ + "\u0001\u0000\u0000\u0000\u0787\u0789\u0003\u017d\u00bc\u0000\u0788\u0787"+ + "\u0001\u0000\u0000\u0000\u0788\u0789\u0001\u0000\u0000\u0000\u0789\u078b"+ + "\u0001\u0000\u0000\u0000\u078a\u078c\u0003\u017d\u00bc\u0000\u078b\u078a"+ + "\u0001\u0000\u0000\u0000\u078b\u078c\u0001\u0000\u0000\u0000\u078c\u01c2"+ + "\u0001\u0000\u0000\u0000\u078d\u078f\u0003\u01bd\u00dc\u0000\u078e\u0790"+ + "\u0003\u01c5\u00e0\u0000\u078f\u078e\u0001\u0000\u0000\u0000\u078f\u0790"+ + "\u0001\u0000\u0000\u0000\u0790\u0791\u0001\u0000\u0000\u0000\u0791\u0792"+ + "\u0003\u01c7\u00e1\u0000\u0792\u01c4\u0001\u0000\u0000\u0000\u0793\u0794"+ + "\u0007\u0013\u0000\u0000\u0794\u01c6\u0001\u0000\u0000\u0000\u0795\u0799"+ + "\u0007\f\u0000\u0000\u0796\u0797\u0005\r\u0000\u0000\u0797\u0799\u0005"+ + "\n\u0000\u0000\u0798\u0795\u0001\u0000\u0000\u0000\u0798\u0796\u0001\u0000"+ + "\u0000\u0000\u0799\u01c8\u0001\u0000\u0000\u0000?\u0000\u0001\u0002\u0003"+ + "\u0004\u05f1\u05f5\u05f8\u05fc\u0601\u0648\u064b\u0652\u0658\u065d\u0664"+ + "\u066a\u066f\u0674\u0678\u067e\u0683\u068a\u0690\u0695\u0699\u069c\u06a0"+ + "\u06a4\u06ab\u06b2\u06b6\u06c3\u06cd\u06d3\u06dc\u06de\u06ec\u06f0\u06f7"+ + "\u0702\u0732\u0739\u0742\u0749\u074d\u074f\u0754\u0758\u075e\u0762\u0765"+ + "\u076b\u0775\u0779\u077c\u077f\u0782\u0785\u0788\u078b\u078f\u0798\u000b"+ + "\u0001\u0090\u0000\u0001\u0093\u0001\u0000\u0001\u0000\u0005\u0004\u0000"+ + "\u0005\u0003\u0000\u0005\u0002\u0000\u0005\u0001\u0000\u0001\u00cf\u0002"+ + "\u0005\u0000\u0000\u0004\u0000\u0000\u0001\u00d2\u0003"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Lexer.tokens b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Lexer.tokens new file mode 100644 index 00000000..a104ca5b --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Lexer.tokens @@ -0,0 +1,359 @@ +AS=1 +ALPHA=2 +BREAK=3 +CASE=4 +CATCH=5 +CLASS=6 +CONTINUE=7 +DEFAULT=8 +DEFER=9 +DO=10 +GUARD=11 +ELSE=12 +ENUM=13 +FOR=14 +FALLTHROUGH=15 +FUNC=16 +IN=17 +IF=18 +IMPORT=19 +INTERNAL=20 +FINAL=21 +OPEN=22 +PRIVATE=23 +PUBLIC=24 +WHERE=25 +WHILE=26 +LET=27 +VAR=28 +PROTOCOL=29 +GET=30 +SET=31 +WILL_SET=32 +DID_SET=33 +REPEAT=34 +SWITCH=35 +STRUCT=36 +RETURN=37 +THROW=38 +THROWS=39 +RETHROWS=40 +INDIRECT=41 +INIT=42 +DEINIT=43 +ASSOCIATED_TYPE=44 +EXTENSION=45 +SUBSCRIPT=46 +PREFIX=47 +INFIX=48 +LEFT=49 +RIGHT=50 +NONE=51 +PRECEDENCE_GROUP=52 +HIGHER_THAN=53 +LOWER_THAN=54 +ASSIGNMENT=55 +ASSOCIATIVITY=56 +POSTFIX=57 +OPERATOR=58 +TYPEALIAS=59 +OS=60 +ARCH=61 +SWIFT=62 +COMPILER=63 +CAN_IMPORT=64 +TARGET_ENVIRONMENT=65 +CONVENIENCE=66 +DYNAMIC=67 +LAZY=68 +OPTIONAL=69 +OVERRIDE=70 +REQUIRED=71 +STATIC=72 +WEAK=73 +UNOWNED=74 +SAFE=75 +UNSAFE=76 +MUTATING=77 +NONMUTATING=78 +FILE_PRIVATE=79 +IS=80 +TRY=81 +SUPER=82 +ANY=83 +FALSE=84 +RED=85 +BLUE=86 +GREEN=87 +RESOURCE_NAME=88 +TRUE=89 +NIL=90 +INOUT=91 +SOME=92 +TYPE=93 +PRECEDENCE=94 +SELF=95 +SELF_BIG=96 +MAC_OS=97 +I_OS=98 +OSX=99 +WATCH_OS=100 +TV_OS=101 +LINUX=102 +WINDOWS=103 +I386=104 +X86_64=105 +ARM=106 +ARM64=107 +SIMULATOR=108 +MAC_CATALYST=109 +I_OS_APPLICATION_EXTENSION=110 +MAC_CATALYST_APPLICATION_EXTENSION=111 +MAC_OS_APPLICATION_EXTENSION=112 +SOURCE_LOCATION=113 +FILE=114 +LINE=115 +ERROR=116 +WARNING=117 +AVAILABLE=118 +HASH_IF=119 +HASH_ELSEIF=120 +HASH_ELSE=121 +HASH_ENDIF=122 +HASH_FILE=123 +HASH_FILE_ID=124 +HASH_FILE_PATH=125 +HASH_LINE=126 +HASH_COLUMN=127 +HASH_FUNCTION=128 +HASH_DSO_HANDLE=129 +HASH_SELECTOR=130 +HASH_KEYPATH=131 +HASH_COLOR_LITERAL=132 +HASH_FILE_LITERAL=133 +HASH_IMAGE_LITERAL=134 +GETTER=135 +SETTER=136 +Identifier=137 +DOT=138 +LCURLY=139 +LPAREN=140 +LBRACK=141 +RCURLY=142 +RPAREN=143 +RBRACK=144 +COMMA=145 +COLON=146 +SEMI=147 +LT=148 +GT=149 +UNDERSCORE=150 +BANG=151 +QUESTION=152 +AT=153 +AND=154 +SUB=155 +EQUAL=156 +OR=157 +DIV=158 +ADD=159 +MUL=160 +MOD=161 +CARET=162 +TILDE=163 +HASH=164 +BACKTICK=165 +DOLLAR=166 +BACKSLASH=167 +Operator_head_other=168 +Operator_following_character=169 +Binary_literal=170 +Octal_literal=171 +Decimal_digits=172 +Decimal_literal=173 +Hexadecimal_literal=174 +Floating_point_literal=175 +WS=176 +HASHBANG=177 +Block_comment=178 +Line_comment=179 +Multi_line_extended_string_open=180 +Single_line_extended_string_open=181 +Multi_line_string_open=182 +Single_line_string_open=183 +Interpolataion_single_line=184 +Single_line_string_close=185 +Quoted_single_line_text=186 +Interpolataion_multi_line=187 +Multi_line_string_close=188 +Quoted_multi_line_text=189 +Single_line_extended_string_close=190 +Quoted_single_line_extended_text=191 +Multi_line_extended_string_close=192 +Quoted_multi_line_extended_text=193 +'as'=1 +'alpha'=2 +'break'=3 +'case'=4 +'catch'=5 +'class'=6 +'continue'=7 +'default'=8 +'defer'=9 +'do'=10 +'guard'=11 +'else'=12 +'enum'=13 +'for'=14 +'fallthrough'=15 +'func'=16 +'in'=17 +'if'=18 +'import'=19 +'internal'=20 +'final'=21 +'open'=22 +'private'=23 +'public'=24 +'where'=25 +'while'=26 +'let'=27 +'var'=28 +'protocol'=29 +'get'=30 +'set'=31 +'willSet'=32 +'didSet'=33 +'repeat'=34 +'switch'=35 +'struct'=36 +'return'=37 +'throw'=38 +'throws'=39 +'rethrows'=40 +'indirect'=41 +'init'=42 +'deinit'=43 +'associatedtype'=44 +'extension'=45 +'subscript'=46 +'prefix'=47 +'infix'=48 +'left'=49 +'right'=50 +'none'=51 +'precedencegroup'=52 +'higherThan'=53 +'lowerThan'=54 +'assignment'=55 +'associativity'=56 +'postfix'=57 +'operator'=58 +'typealias'=59 +'os'=60 +'arch'=61 +'swift'=62 +'compiler'=63 +'canImport'=64 +'targetEnvironment'=65 +'convenience'=66 +'dynamic'=67 +'lazy'=68 +'optional'=69 +'override'=70 +'required'=71 +'static'=72 +'weak'=73 +'unowned'=74 +'safe'=75 +'unsafe'=76 +'mutating'=77 +'nonmutating'=78 +'fileprivate'=79 +'is'=80 +'try'=81 +'super'=82 +'Any'=83 +'false'=84 +'red'=85 +'blue'=86 +'green'=87 +'resourceName'=88 +'true'=89 +'nil'=90 +'inout'=91 +'some'=92 +'Type'=93 +'precedence'=94 +'self'=95 +'Self'=96 +'macOS'=97 +'iOS'=98 +'OSX'=99 +'watchOS'=100 +'tvOS'=101 +'Linux'=102 +'Windows'=103 +'i386'=104 +'x86_64'=105 +'arm'=106 +'arm64'=107 +'simulator'=108 +'macCatalyst'=109 +'iOSApplicationExtension'=110 +'macCatalystApplicationExtension'=111 +'macOSApplicationExtension'=112 +'#sourceLocation'=113 +'file'=114 +'line'=115 +'#error'=116 +'#warning'=117 +'#available'=118 +'#if'=119 +'#elseif'=120 +'#else'=121 +'#endif'=122 +'#file'=123 +'#fileID'=124 +'#filePath'=125 +'#line'=126 +'#column'=127 +'#function'=128 +'#dsohandle'=129 +'#selector'=130 +'#keyPath'=131 +'#colorLiteral'=132 +'#fileLiteral'=133 +'#imageLiteral'=134 +'getter'=135 +'setter'=136 +'.'=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 diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Parser.interp b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Parser.interp new file mode 100644 index 00000000..01f7664b --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Parser.interp @@ -0,0 +1,711 @@ +token literal names: +null +'as' +'alpha' +'break' +'case' +'catch' +'class' +'continue' +'default' +'defer' +'do' +'guard' +'else' +'enum' +'for' +'fallthrough' +'func' +'in' +'if' +'import' +'internal' +'final' +'open' +'private' +'public' +'where' +'while' +'let' +'var' +'protocol' +'get' +'set' +'willSet' +'didSet' +'repeat' +'switch' +'struct' +'return' +'throw' +'throws' +'rethrows' +'indirect' +'init' +'deinit' +'associatedtype' +'extension' +'subscript' +'prefix' +'infix' +'left' +'right' +'none' +'precedencegroup' +'higherThan' +'lowerThan' +'assignment' +'associativity' +'postfix' +'operator' +'typealias' +'os' +'arch' +'swift' +'compiler' +'canImport' +'targetEnvironment' +'convenience' +'dynamic' +'lazy' +'optional' +'override' +'required' +'static' +'weak' +'unowned' +'safe' +'unsafe' +'mutating' +'nonmutating' +'fileprivate' +'is' +'try' +'super' +'Any' +'false' +'red' +'blue' +'green' +'resourceName' +'true' +'nil' +'inout' +'some' +'Type' +'precedence' +'self' +'Self' +'macOS' +'iOS' +'OSX' +'watchOS' +'tvOS' +'Linux' +'Windows' +'i386' +'x86_64' +'arm' +'arm64' +'simulator' +'macCatalyst' +'iOSApplicationExtension' +'macCatalystApplicationExtension' +'macOSApplicationExtension' +'#sourceLocation' +'file' +'line' +'#error' +'#warning' +'#available' +'#if' +'#elseif' +'#else' +'#endif' +'#file' +'#fileID' +'#filePath' +'#line' +'#column' +'#function' +'#dsohandle' +'#selector' +'#keyPath' +'#colorLiteral' +'#fileLiteral' +'#imageLiteral' +'getter' +'setter' +null +'.' +'{' +'(' +'[' +'}' +')' +']' +',' +':' +';' +'<' +'>' +'_' +'!' +'?' +'@' +'&' +'-' +'=' +'|' +'/' +'+' +'*' +'%' +'^' +'~' +'#' +'`' +'$' +'\\' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +AS +ALPHA +BREAK +CASE +CATCH +CLASS +CONTINUE +DEFAULT +DEFER +DO +GUARD +ELSE +ENUM +FOR +FALLTHROUGH +FUNC +IN +IF +IMPORT +INTERNAL +FINAL +OPEN +PRIVATE +PUBLIC +WHERE +WHILE +LET +VAR +PROTOCOL +GET +SET +WILL_SET +DID_SET +REPEAT +SWITCH +STRUCT +RETURN +THROW +THROWS +RETHROWS +INDIRECT +INIT +DEINIT +ASSOCIATED_TYPE +EXTENSION +SUBSCRIPT +PREFIX +INFIX +LEFT +RIGHT +NONE +PRECEDENCE_GROUP +HIGHER_THAN +LOWER_THAN +ASSIGNMENT +ASSOCIATIVITY +POSTFIX +OPERATOR +TYPEALIAS +OS +ARCH +SWIFT +COMPILER +CAN_IMPORT +TARGET_ENVIRONMENT +CONVENIENCE +DYNAMIC +LAZY +OPTIONAL +OVERRIDE +REQUIRED +STATIC +WEAK +UNOWNED +SAFE +UNSAFE +MUTATING +NONMUTATING +FILE_PRIVATE +IS +TRY +SUPER +ANY +FALSE +RED +BLUE +GREEN +RESOURCE_NAME +TRUE +NIL +INOUT +SOME +TYPE +PRECEDENCE +SELF +SELF_BIG +MAC_OS +I_OS +OSX +WATCH_OS +TV_OS +LINUX +WINDOWS +I386 +X86_64 +ARM +ARM64 +SIMULATOR +MAC_CATALYST +I_OS_APPLICATION_EXTENSION +MAC_CATALYST_APPLICATION_EXTENSION +MAC_OS_APPLICATION_EXTENSION +SOURCE_LOCATION +FILE +LINE +ERROR +WARNING +AVAILABLE +HASH_IF +HASH_ELSEIF +HASH_ELSE +HASH_ENDIF +HASH_FILE +HASH_FILE_ID +HASH_FILE_PATH +HASH_LINE +HASH_COLUMN +HASH_FUNCTION +HASH_DSO_HANDLE +HASH_SELECTOR +HASH_KEYPATH +HASH_COLOR_LITERAL +HASH_FILE_LITERAL +HASH_IMAGE_LITERAL +GETTER +SETTER +Identifier +DOT +LCURLY +LPAREN +LBRACK +RCURLY +RPAREN +RBRACK +COMMA +COLON +SEMI +LT +GT +UNDERSCORE +BANG +QUESTION +AT +AND +SUB +EQUAL +OR +DIV +ADD +MUL +MOD +CARET +TILDE +HASH +BACKTICK +DOLLAR +BACKSLASH +Operator_head_other +Operator_following_character +Binary_literal +Octal_literal +Decimal_digits +Decimal_literal +Hexadecimal_literal +Floating_point_literal +WS +HASHBANG +Block_comment +Line_comment +Multi_line_extended_string_open +Single_line_extended_string_open +Multi_line_string_open +Single_line_string_open +Interpolataion_single_line +Single_line_string_close +Quoted_single_line_text +Interpolataion_multi_line +Multi_line_string_close +Quoted_multi_line_text +Single_line_extended_string_close +Quoted_single_line_extended_text +Multi_line_extended_string_close +Quoted_multi_line_extended_text + +rule names: +top_level +statement +statements +loop_statement +for_in_statement +while_statement +condition_list +condition +case_condition +optional_binding_condition +repeat_while_statement +branch_statement +if_statement +else_clause +guard_statement +switch_statement +switch_cases +switch_case +case_label +case_item_list +default_label +where_clause +where_expression +conditional_switch_case +switch_if_directive_clause +switch_elseif_directive_clauses +switch_elseif_directive_clause +switch_else_directive_clause +labeled_statement +statement_label +label_name +control_transfer_statement +break_statement +continue_statement +fallthrough_statement +return_statement +throw_statement +defer_statement +do_statement +catch_clauses +catch_clause +catch_pattern_list +catch_pattern +compiler_control_statement +conditional_compilation_block +if_directive_clause +elseif_directive_clauses +elseif_directive_clause +else_directive_clause +compilation_condition +platform_condition +swift_version +swift_version_continuation +operating_system +architecture +module_name +environment +line_control_statement +line_number +file_name +diagnostic_statement +diagnostic_message +availability_condition +availability_arguments +availability_argument +platform_name +platform_version +generic_parameter_clause +generic_parameter_list +generic_parameter +generic_where_clause +requirement_list +requirement +conformance_requirement +same_type_requirement +generic_argument_clause +generic_argument_list +generic_argument +declaration +declarations +top_level_declaration +code_block +import_declaration +import_kind +import_path +import_path_identifier +constant_declaration +pattern_initializer_list +pattern_initializer +initializer +variable_declaration +variable_declaration_head +variable_name +getter_setter_block +getter_clause +setter_clause +setter_name +getter_setter_keyword_block +getter_keyword_clause +setter_keyword_clause +willSet_didSet_block +willSet_clause +didSet_clause +typealias_declaration +typealias_name +typealias_assignment +function_declaration +function_head +function_name +function_signature +function_result +function_body +parameter_clause +parameter_list +parameter +external_parameter_name +local_parameter_name +default_argument_clause +enum_declaration +union_style_enum +union_style_enum_members +union_style_enum_member +union_style_enum_case_clause +union_style_enum_case_list +union_style_enum_case +enum_name +enum_case_name +raw_value_style_enum +raw_value_style_enum_members +raw_value_style_enum_member +raw_value_style_enum_case_clause +raw_value_style_enum_case_list +raw_value_style_enum_case +raw_value_assignment +raw_value_literal +struct_declaration +struct_name +struct_body +struct_members +struct_member +class_declaration +class_name +class_body +class_members +class_member +protocol_declaration +protocol_name +protocol_body +protocol_members +protocol_member +protocol_member_declaration +protocol_property_declaration +protocol_method_declaration +protocol_initializer_declaration +protocol_subscript_declaration +protocol_associated_type_declaration +initializer_declaration +initializer_head +initializer_body +deinitializer_declaration +extension_declaration +extension_body +extension_members +extension_member +subscript_declaration +subscript_head +subscript_result +operator_declaration +prefix_operator_declaration +postfix_operator_declaration +infix_operator_declaration +infix_operator_group +precedence_group_declaration +precedence_group_attributes +precedence_group_attribute +precedence_group_relation +precedence_group_assignment +precedence_group_associativity +precedence_group_names +precedence_group_name +declaration_modifier +declaration_modifiers +access_level_modifier +mutation_modifier +pattern +wildcard_pattern +identifier_pattern +value_binding_pattern +tuple_pattern +tuple_pattern_element_list +tuple_pattern_element +enum_case_pattern +optional_pattern +expression_pattern +attribute +attribute_name +attribute_argument_clause +attributes +balanced_tokens +balanced_token +balanced_token_punctuation +expression +expression_list +prefix_expression +in_out_expression +try_operator +binary_expression +binary_expressions +conditional_operator +type_casting_operator +primary_expression +unqualified_name +literal_expression +array_literal +array_literal_items +array_literal_item +dictionary_literal +dictionary_literal_items +dictionary_literal_item +playground_literal +self_expression +superclass_expression +closure_expression +closure_signature +closure_parameter_clause +closure_parameter_list +closure_parameter +capture_list +capture_list_items +capture_list_item +capture_specifier +implicit_member_expression +parenthesized_operator +parenthesized_expression +tuple_expression +tuple_element_list +tuple_element +wildcard_expression +key_path_expression +key_path_components +key_path_component +key_path_postfixes +key_path_postfix +selector_expression +key_path_string_expression +postfix_expression +function_call_suffix +initializer_suffix +explicit_member_suffix +postfix_self_suffix +subscript_suffix +forced_value_suffix +optional_chaining_suffix +function_call_argument_clause +function_call_argument_list +function_call_argument +trailing_closures +labeled_trailing_closures +labeled_trailing_closure +argument_names +argument_name +type +type_annotation +type_identifier +type_name +tuple_type +tuple_type_element_list +tuple_type_element +element_name +function_type +function_type_argument_clause +function_type_argument_list +function_type_argument +argument_label +array_type +dictionary_type +protocol_composition_type +trailing_composition_and +opaque_type +any_type +self_type +type_inheritance_clause +type_inheritance_list +identifier +identifier_list +keyword +assignment_operator +negate_prefix_operator +compilation_condition_AND +compilation_condition_OR +compilation_condition_GE +compilation_condition_L +arrow_operator +range_operator +same_type_equals +binary_operator +prefix_operator +postfix_operator +operator +operator_head +operator_character +operator_characters +dot_operator_head +dot_operator_character +dot_operator_characters +literal +numeric_literal +boolean_literal +nil_literal +integer_literal +string_literal +extended_string_literal +static_string_literal +interpolated_string_literal + + +atn: +[4, 1, 193, 2872, 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, 1, 0, 3, 0, 630, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 642, 8, 1, 1, 1, 3, 1, 645, 8, 1, 1, 1, 3, 1, 648, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 4, 2, 654, 8, 2, 11, 2, 12, 2, 655, 1, 3, 1, 3, 1, 3, 3, 3, 661, 8, 3, 1, 4, 1, 4, 3, 4, 665, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 671, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 5, 6, 682, 8, 6, 10, 6, 12, 6, 685, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 691, 8, 7, 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, 11, 1, 11, 1, 11, 3, 11, 709, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 715, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 721, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 732, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 738, 8, 16, 1, 17, 1, 17, 3, 17, 742, 8, 17, 1, 17, 1, 17, 1, 17, 3, 17, 747, 8, 17, 1, 18, 3, 18, 750, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 758, 8, 19, 1, 19, 1, 19, 1, 19, 3, 19, 763, 8, 19, 5, 19, 765, 8, 19, 10, 19, 12, 19, 768, 9, 19, 1, 20, 3, 20, 771, 8, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 783, 8, 23, 1, 23, 3, 23, 786, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 3, 24, 793, 8, 24, 1, 25, 1, 25, 3, 25, 797, 8, 25, 1, 26, 1, 26, 1, 26, 3, 26, 802, 8, 26, 1, 27, 1, 27, 3, 27, 806, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 813, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 825, 8, 31, 1, 32, 1, 32, 3, 32, 829, 8, 32, 1, 33, 1, 33, 3, 33, 833, 8, 33, 1, 34, 1, 34, 1, 35, 1, 35, 3, 35, 839, 8, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 3, 38, 850, 8, 38, 1, 39, 4, 39, 853, 8, 39, 11, 39, 12, 39, 854, 1, 40, 1, 40, 3, 40, 859, 8, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 868, 8, 41, 10, 41, 12, 41, 871, 9, 41, 1, 42, 1, 42, 3, 42, 875, 8, 42, 1, 43, 1, 43, 1, 43, 3, 43, 880, 8, 43, 1, 44, 1, 44, 3, 44, 884, 8, 44, 1, 44, 3, 44, 887, 8, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 3, 45, 894, 8, 45, 1, 46, 4, 46, 897, 8, 46, 11, 46, 12, 46, 898, 1, 47, 1, 47, 1, 47, 3, 47, 904, 8, 47, 1, 48, 1, 48, 3, 48, 908, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 920, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 925, 8, 49, 1, 49, 1, 49, 5, 49, 929, 8, 49, 10, 49, 12, 49, 932, 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, 1, 50, 1, 50, 3, 50, 948, 8, 50, 1, 50, 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, 963, 8, 50, 1, 51, 1, 51, 3, 51, 967, 8, 51, 1, 52, 1, 52, 1, 52, 3, 52, 972, 8, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 5, 55, 981, 8, 55, 10, 55, 12, 55, 984, 9, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 998, 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 5, 63, 1021, 8, 63, 10, 63, 12, 63, 1024, 9, 63, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1030, 8, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1039, 8, 66, 3, 66, 1041, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 5, 68, 1050, 8, 68, 10, 68, 12, 68, 1053, 9, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1059, 8, 69, 3, 69, 1061, 8, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 5, 71, 1069, 8, 71, 10, 71, 12, 71, 1072, 9, 71, 1, 72, 1, 72, 3, 72, 1076, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1082, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1088, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 5, 76, 1097, 8, 76, 10, 76, 12, 76, 1100, 9, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1119, 8, 78, 1, 78, 3, 78, 1122, 8, 78, 1, 79, 4, 79, 1125, 8, 79, 11, 79, 12, 79, 1126, 1, 80, 3, 80, 1130, 8, 80, 1, 81, 1, 81, 3, 81, 1134, 8, 81, 1, 81, 1, 81, 1, 82, 3, 82, 1139, 8, 82, 1, 82, 1, 82, 3, 82, 1143, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 5, 84, 1152, 8, 84, 10, 84, 12, 84, 1155, 9, 84, 1, 85, 1, 85, 3, 85, 1159, 8, 85, 1, 86, 3, 86, 1162, 8, 86, 1, 86, 3, 86, 1165, 8, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 5, 87, 1173, 8, 87, 10, 87, 12, 87, 1176, 9, 87, 1, 88, 1, 88, 3, 88, 1180, 8, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1194, 8, 90, 1, 90, 3, 90, 1197, 8, 90, 3, 90, 1199, 8, 90, 1, 90, 3, 90, 1202, 8, 90, 1, 91, 3, 91, 1205, 8, 91, 1, 91, 3, 91, 1208, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 3, 93, 1217, 8, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1222, 8, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1227, 8, 93, 1, 94, 3, 94, 1230, 8, 94, 1, 94, 3, 94, 1233, 8, 94, 1, 94, 1, 94, 3, 94, 1237, 8, 94, 1, 95, 3, 95, 1240, 8, 95, 1, 95, 3, 95, 1243, 8, 95, 1, 95, 1, 95, 3, 95, 1247, 8, 95, 1, 95, 3, 95, 1250, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 3, 97, 1259, 8, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1264, 8, 97, 1, 97, 1, 97, 1, 98, 3, 98, 1269, 8, 98, 1, 98, 3, 98, 1272, 8, 98, 1, 98, 1, 98, 1, 99, 3, 99, 1277, 8, 99, 1, 99, 3, 99, 1280, 8, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 3, 100, 1287, 8, 100, 1, 100, 1, 100, 3, 100, 1291, 8, 100, 3, 100, 1293, 8, 100, 1, 100, 1, 100, 1, 101, 3, 101, 1298, 8, 101, 1, 101, 1, 101, 3, 101, 1302, 8, 101, 1, 101, 1, 101, 1, 102, 3, 102, 1307, 8, 102, 1, 102, 1, 102, 3, 102, 1311, 8, 102, 1, 102, 1, 102, 1, 103, 3, 103, 1316, 8, 103, 1, 103, 3, 103, 1319, 8, 103, 1, 103, 1, 103, 1, 103, 3, 103, 1324, 8, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 3, 106, 1336, 8, 106, 1, 106, 1, 106, 3, 106, 1340, 8, 106, 1, 106, 3, 106, 1343, 8, 106, 1, 107, 3, 107, 1346, 8, 107, 1, 107, 3, 107, 1349, 8, 107, 1, 107, 1, 107, 1, 108, 1, 108, 3, 108, 1355, 8, 108, 1, 109, 1, 109, 3, 109, 1359, 8, 109, 1, 109, 3, 109, 1362, 8, 109, 1, 109, 3, 109, 1365, 8, 109, 1, 110, 1, 110, 3, 110, 1369, 8, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 3, 112, 1377, 8, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 5, 113, 1384, 8, 113, 10, 113, 12, 113, 1387, 9, 113, 1, 114, 3, 114, 1390, 8, 114, 1, 114, 3, 114, 1393, 8, 114, 1, 114, 1, 114, 1, 114, 3, 114, 1398, 8, 114, 1, 114, 3, 114, 1401, 8, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 118, 3, 118, 1411, 8, 118, 1, 118, 3, 118, 1414, 8, 118, 1, 118, 1, 118, 3, 118, 1418, 8, 118, 1, 119, 3, 119, 1421, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1426, 8, 119, 1, 119, 3, 119, 1429, 8, 119, 1, 119, 3, 119, 1432, 8, 119, 1, 119, 1, 119, 3, 119, 1436, 8, 119, 1, 119, 1, 119, 1, 120, 4, 120, 1441, 8, 120, 11, 120, 12, 120, 1442, 1, 121, 1, 121, 1, 121, 3, 121, 1448, 8, 121, 1, 122, 3, 122, 1451, 8, 122, 1, 122, 3, 122, 1454, 8, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 5, 123, 1462, 8, 123, 10, 123, 12, 123, 1465, 9, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 1474, 8, 124, 3, 124, 1476, 8, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 3, 127, 1485, 8, 127, 1, 127, 1, 127, 3, 127, 1489, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 4, 128, 1496, 8, 128, 11, 128, 12, 128, 1497, 1, 129, 1, 129, 1, 129, 3, 129, 1503, 8, 129, 1, 130, 3, 130, 1506, 8, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 5, 131, 1514, 8, 131, 10, 131, 12, 131, 1517, 9, 131, 1, 132, 1, 132, 3, 132, 1521, 8, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 3, 134, 1529, 8, 134, 1, 135, 3, 135, 1532, 8, 135, 1, 135, 3, 135, 1535, 8, 135, 1, 135, 1, 135, 1, 135, 3, 135, 1540, 8, 135, 1, 135, 3, 135, 1543, 8, 135, 1, 135, 3, 135, 1546, 8, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 5, 138, 1557, 8, 138, 10, 138, 12, 138, 1560, 9, 138, 1, 139, 1, 139, 3, 139, 1564, 8, 139, 1, 140, 3, 140, 1567, 8, 140, 1, 140, 3, 140, 1570, 8, 140, 1, 140, 3, 140, 1573, 8, 140, 1, 140, 1, 140, 3, 140, 1577, 8, 140, 3, 140, 1579, 8, 140, 1, 140, 1, 140, 1, 140, 3, 140, 1584, 8, 140, 1, 140, 3, 140, 1587, 8, 140, 1, 140, 3, 140, 1590, 8, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 5, 143, 1601, 8, 143, 10, 143, 12, 143, 1604, 9, 143, 1, 144, 1, 144, 3, 144, 1608, 8, 144, 1, 145, 3, 145, 1611, 8, 145, 1, 145, 3, 145, 1614, 8, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 1621, 8, 145, 1, 145, 3, 145, 1624, 8, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 5, 148, 1635, 8, 148, 10, 148, 12, 148, 1638, 9, 148, 1, 149, 1, 149, 3, 149, 1642, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 1650, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 3, 152, 1660, 8, 152, 1, 152, 1, 152, 3, 152, 1664, 8, 152, 1, 153, 1, 153, 3, 153, 1668, 8, 153, 1, 153, 1, 153, 3, 153, 1672, 8, 153, 1, 153, 3, 153, 1675, 8, 153, 1, 153, 3, 153, 1678, 8, 153, 1, 154, 1, 154, 1, 154, 3, 154, 1683, 8, 154, 1, 154, 1, 154, 1, 155, 3, 155, 1688, 8, 155, 1, 155, 3, 155, 1691, 8, 155, 1, 155, 1, 155, 1, 155, 3, 155, 1696, 8, 155, 1, 155, 3, 155, 1699, 8, 155, 1, 155, 3, 155, 1702, 8, 155, 1, 156, 1, 156, 3, 156, 1706, 8, 156, 1, 156, 1, 156, 3, 156, 1710, 8, 156, 1, 156, 3, 156, 1713, 8, 156, 1, 156, 1, 156, 1, 157, 3, 157, 1718, 8, 157, 1, 157, 3, 157, 1721, 8, 157, 1, 157, 1, 157, 3, 157, 1725, 8, 157, 1, 158, 1, 158, 1, 159, 3, 159, 1730, 8, 159, 1, 159, 1, 159, 1, 159, 1, 160, 3, 160, 1736, 8, 160, 1, 160, 3, 160, 1739, 8, 160, 1, 160, 1, 160, 1, 160, 3, 160, 1744, 8, 160, 1, 160, 3, 160, 1747, 8, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 5, 162, 1756, 8, 162, 10, 162, 12, 162, 1759, 9, 162, 1, 163, 1, 163, 3, 163, 1763, 8, 163, 1, 164, 1, 164, 1, 164, 3, 164, 1768, 8, 164, 1, 164, 1, 164, 1, 164, 3, 164, 1773, 8, 164, 1, 165, 3, 165, 1776, 8, 165, 1, 165, 3, 165, 1779, 8, 165, 1, 165, 1, 165, 3, 165, 1783, 8, 165, 1, 165, 1, 165, 1, 166, 1, 166, 3, 166, 1789, 8, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 3, 167, 1796, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 3, 170, 1810, 8, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 1819, 8, 172, 1, 172, 1, 172, 1, 173, 4, 173, 1824, 8, 173, 11, 173, 12, 173, 1825, 1, 174, 1, 174, 1, 174, 3, 174, 1831, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 5, 178, 1848, 8, 178, 10, 178, 12, 178, 1851, 9, 178, 1, 179, 1, 179, 1, 179, 5, 179, 1856, 8, 179, 10, 179, 12, 179, 1859, 9, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 1877, 8, 180, 1, 180, 1, 180, 1, 180, 3, 180, 1882, 8, 180, 1, 181, 4, 181, 1885, 8, 181, 11, 181, 12, 181, 1886, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 1893, 8, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 3, 184, 1901, 8, 184, 1, 184, 3, 184, 1904, 8, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 3, 184, 1912, 8, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1917, 8, 184, 10, 184, 12, 184, 1920, 9, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 1930, 8, 187, 1, 188, 1, 188, 3, 188, 1934, 8, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 5, 189, 1941, 8, 189, 10, 189, 12, 189, 1944, 9, 189, 1, 190, 1, 190, 1, 190, 3, 190, 1949, 8, 190, 1, 190, 1, 190, 1, 191, 3, 191, 1954, 8, 191, 1, 191, 1, 191, 1, 191, 3, 191, 1959, 8, 191, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 3, 194, 1969, 8, 194, 1, 195, 1, 195, 1, 195, 5, 195, 1974, 8, 195, 10, 195, 12, 195, 1977, 9, 195, 1, 196, 1, 196, 3, 196, 1981, 8, 196, 1, 196, 1, 196, 1, 197, 4, 197, 1986, 8, 197, 11, 197, 12, 197, 1987, 1, 198, 4, 198, 1991, 8, 198, 11, 198, 12, 198, 1992, 1, 199, 1, 199, 3, 199, 1997, 8, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2002, 8, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2007, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2015, 8, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2023, 8, 200, 1, 201, 3, 201, 2026, 8, 201, 1, 201, 1, 201, 3, 201, 2030, 8, 201, 1, 202, 1, 202, 1, 202, 5, 202, 2035, 8, 202, 10, 202, 12, 202, 2038, 9, 202, 1, 203, 3, 203, 2041, 8, 203, 1, 203, 1, 203, 3, 203, 2045, 8, 203, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 3, 205, 2052, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 2059, 8, 206, 1, 206, 3, 206, 2062, 8, 206, 1, 206, 1, 206, 1, 206, 3, 206, 2067, 8, 206, 1, 207, 4, 207, 2070, 8, 207, 11, 207, 12, 207, 2071, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 3, 209, 2081, 8, 209, 3, 209, 2083, 8, 209, 1, 209, 1, 209, 1, 210, 1, 210, 3, 210, 2089, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2105, 8, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 3, 211, 2112, 8, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2125, 8, 212, 1, 213, 1, 213, 3, 213, 2129, 8, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 5, 214, 2136, 8, 214, 10, 214, 12, 214, 2139, 9, 214, 1, 214, 3, 214, 2142, 8, 214, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 3, 216, 2149, 8, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 5, 217, 2156, 8, 217, 10, 217, 12, 217, 2159, 9, 217, 1, 217, 3, 217, 2162, 8, 217, 1, 218, 1, 218, 1, 218, 1, 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, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 3, 219, 2201, 8, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 3, 220, 2215, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 2228, 8, 221, 1, 222, 1, 222, 3, 222, 2232, 8, 222, 1, 222, 3, 222, 2235, 8, 222, 1, 222, 1, 222, 1, 223, 3, 223, 2240, 8, 223, 1, 223, 1, 223, 3, 223, 2244, 8, 223, 1, 223, 3, 223, 2247, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 2254, 8, 223, 1, 224, 1, 224, 3, 224, 2258, 8, 224, 1, 224, 1, 224, 3, 224, 2262, 8, 224, 1, 225, 1, 225, 1, 225, 5, 225, 2267, 8, 225, 10, 225, 12, 225, 2270, 9, 225, 1, 226, 1, 226, 1, 226, 3, 226, 2275, 8, 226, 3, 226, 2277, 8, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 5, 228, 2286, 8, 228, 10, 228, 12, 228, 2289, 9, 228, 1, 229, 3, 229, 2292, 8, 229, 1, 229, 1, 229, 3, 229, 2296, 8, 229, 1, 229, 1, 229, 1, 229, 3, 229, 2301, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 2308, 8, 230, 3, 230, 2310, 8, 230, 1, 231, 1, 231, 1, 231, 3, 231, 2315, 8, 231, 1, 231, 1, 231, 3, 231, 2319, 8, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 2337, 8, 234, 1, 235, 1, 235, 1, 235, 5, 235, 2342, 8, 235, 10, 235, 12, 235, 2345, 9, 235, 1, 236, 1, 236, 1, 236, 3, 236, 2350, 8, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 238, 1, 238, 3, 238, 2358, 8, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 5, 239, 2366, 8, 239, 10, 239, 12, 239, 2369, 9, 239, 1, 240, 1, 240, 3, 240, 2373, 8, 240, 1, 240, 3, 240, 2376, 8, 240, 1, 241, 4, 241, 2379, 8, 241, 11, 241, 12, 241, 2380, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 2390, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 2396, 8, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 5, 245, 2414, 8, 245, 10, 245, 12, 245, 2417, 9, 245, 1, 245, 5, 245, 2420, 8, 245, 10, 245, 12, 245, 2423, 9, 245, 1, 246, 3, 246, 2426, 8, 246, 1, 246, 1, 246, 3, 246, 2430, 8, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 2438, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 2448, 8, 248, 3, 248, 2450, 8, 248, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 3, 253, 2467, 8, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 5, 254, 2474, 8, 254, 10, 254, 12, 254, 2477, 9, 254, 1, 255, 3, 255, 2480, 8, 255, 1, 255, 1, 255, 1, 255, 3, 255, 2485, 8, 255, 1, 256, 1, 256, 3, 256, 2489, 8, 256, 1, 257, 4, 257, 2492, 8, 257, 11, 257, 12, 257, 2493, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 4, 259, 2501, 8, 259, 11, 259, 12, 259, 2502, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 2522, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 2533, 8, 261, 5, 261, 2535, 8, 261, 10, 261, 12, 261, 2538, 9, 261, 1, 262, 1, 262, 3, 262, 2542, 8, 262, 1, 262, 3, 262, 2545, 8, 262, 1, 262, 1, 262, 1, 263, 1, 263, 3, 263, 2551, 8, 263, 1, 263, 1, 263, 3, 263, 2555, 8, 263, 1, 264, 1, 264, 1, 265, 1, 265, 3, 265, 2561, 8, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 5, 266, 2568, 8, 266, 10, 266, 12, 266, 2571, 9, 266, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 2577, 8, 267, 1, 267, 1, 267, 3, 267, 2581, 8, 267, 1, 268, 4, 268, 2584, 8, 268, 11, 268, 12, 268, 2585, 1, 269, 3, 269, 2589, 8, 269, 1, 269, 1, 269, 3, 269, 2593, 8, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 3, 270, 2601, 8, 270, 3, 270, 2603, 8, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 5, 271, 2610, 8, 271, 10, 271, 12, 271, 2613, 9, 271, 1, 272, 3, 272, 2616, 8, 272, 1, 272, 3, 272, 2619, 8, 272, 1, 272, 1, 272, 1, 272, 1, 272, 3, 272, 2625, 8, 272, 1, 273, 4, 273, 2628, 8, 273, 11, 273, 12, 273, 2629, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 5, 276, 2645, 8, 276, 10, 276, 12, 276, 2648, 9, 276, 1, 276, 3, 276, 2651, 8, 276, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 5, 282, 2669, 8, 282, 10, 282, 12, 282, 2672, 9, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 3, 283, 2680, 8, 283, 1, 283, 3, 283, 2683, 8, 283, 1, 284, 1, 284, 1, 284, 5, 284, 2688, 8, 284, 10, 284, 12, 284, 2691, 9, 284, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 3, 298, 2740, 8, 298, 1, 298, 1, 298, 1, 298, 3, 298, 2745, 8, 298, 1, 299, 1, 299, 3, 299, 2749, 8, 299, 1, 300, 1, 300, 3, 300, 2753, 8, 300, 1, 301, 1, 301, 4, 301, 2757, 8, 301, 11, 301, 12, 301, 2758, 1, 302, 1, 302, 1, 303, 1, 303, 3, 303, 2765, 8, 303, 1, 304, 1, 304, 4, 304, 2769, 8, 304, 11, 304, 12, 304, 2770, 1, 305, 1, 305, 1, 305, 1, 305, 3, 305, 2777, 8, 305, 1, 306, 3, 306, 2780, 8, 306, 1, 306, 1, 306, 3, 306, 2784, 8, 306, 1, 306, 3, 306, 2787, 8, 306, 1, 307, 1, 307, 1, 308, 1, 308, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 3, 310, 2798, 8, 310, 1, 311, 1, 311, 4, 311, 2802, 8, 311, 11, 311, 12, 311, 2803, 1, 311, 1, 311, 1, 311, 4, 311, 2809, 8, 311, 11, 311, 12, 311, 2810, 1, 311, 3, 311, 2814, 8, 311, 1, 312, 1, 312, 5, 312, 2818, 8, 312, 10, 312, 12, 312, 2821, 9, 312, 1, 312, 1, 312, 1, 312, 5, 312, 2826, 8, 312, 10, 312, 12, 312, 2829, 9, 312, 1, 312, 3, 312, 2832, 8, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 2842, 8, 313, 1, 313, 1, 313, 5, 313, 2846, 8, 313, 10, 313, 12, 313, 2849, 9, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 2860, 8, 313, 1, 313, 1, 313, 5, 313, 2864, 8, 313, 10, 313, 12, 313, 2867, 9, 313, 1, 313, 3, 313, 2870, 8, 313, 1, 313, 1, 2421, 3, 98, 368, 522, 314, 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, 0, 22, 1, 0, 27, 28, 1, 0, 62, 63, 1, 0, 97, 103, 1, 0, 104, 107, 1, 0, 108, 109, 1, 0, 116, 117, 2, 0, 97, 101, 109, 112, 6, 0, 6, 6, 13, 13, 16, 16, 27, 29, 36, 36, 59, 59, 1, 0, 39, 40, 1, 0, 151, 152, 1, 0, 53, 54, 1, 0, 49, 51, 1, 0, 75, 76, 3, 0, 20, 20, 22, 24, 79, 79, 1, 0, 77, 78, 5, 0, 138, 138, 145, 147, 152, 153, 156, 156, 164, 165, 1, 0, 135, 136, 16, 0, 1, 2, 5, 6, 8, 8, 10, 11, 14, 14, 17, 17, 20, 26, 29, 33, 41, 41, 47, 58, 60, 71, 73, 78, 85, 88, 92, 112, 114, 115, 135, 136, 15, 0, 1, 1, 3, 20, 22, 29, 34, 40, 42, 46, 58, 59, 72, 72, 79, 84, 89, 91, 95, 96, 113, 113, 116, 128, 130, 130, 132, 134, 150, 150, 3, 0, 148, 149, 151, 152, 154, 163, 2, 0, 84, 84, 89, 89, 1, 0, 170, 174, 3041, 0, 629, 1, 0, 0, 0, 2, 647, 1, 0, 0, 0, 4, 653, 1, 0, 0, 0, 6, 660, 1, 0, 0, 0, 8, 662, 1, 0, 0, 0, 10, 674, 1, 0, 0, 0, 12, 678, 1, 0, 0, 0, 14, 690, 1, 0, 0, 0, 16, 692, 1, 0, 0, 0, 18, 696, 1, 0, 0, 0, 20, 700, 1, 0, 0, 0, 22, 708, 1, 0, 0, 0, 24, 710, 1, 0, 0, 0, 26, 720, 1, 0, 0, 0, 28, 722, 1, 0, 0, 0, 30, 727, 1, 0, 0, 0, 32, 735, 1, 0, 0, 0, 34, 746, 1, 0, 0, 0, 36, 749, 1, 0, 0, 0, 38, 755, 1, 0, 0, 0, 40, 770, 1, 0, 0, 0, 42, 775, 1, 0, 0, 0, 44, 778, 1, 0, 0, 0, 46, 780, 1, 0, 0, 0, 48, 789, 1, 0, 0, 0, 50, 794, 1, 0, 0, 0, 52, 798, 1, 0, 0, 0, 54, 803, 1, 0, 0, 0, 56, 807, 1, 0, 0, 0, 58, 814, 1, 0, 0, 0, 60, 817, 1, 0, 0, 0, 62, 824, 1, 0, 0, 0, 64, 826, 1, 0, 0, 0, 66, 830, 1, 0, 0, 0, 68, 834, 1, 0, 0, 0, 70, 836, 1, 0, 0, 0, 72, 840, 1, 0, 0, 0, 74, 843, 1, 0, 0, 0, 76, 846, 1, 0, 0, 0, 78, 852, 1, 0, 0, 0, 80, 856, 1, 0, 0, 0, 82, 862, 1, 0, 0, 0, 84, 872, 1, 0, 0, 0, 86, 879, 1, 0, 0, 0, 88, 881, 1, 0, 0, 0, 90, 890, 1, 0, 0, 0, 92, 896, 1, 0, 0, 0, 94, 900, 1, 0, 0, 0, 96, 905, 1, 0, 0, 0, 98, 919, 1, 0, 0, 0, 100, 962, 1, 0, 0, 0, 102, 964, 1, 0, 0, 0, 104, 968, 1, 0, 0, 0, 106, 973, 1, 0, 0, 0, 108, 975, 1, 0, 0, 0, 110, 977, 1, 0, 0, 0, 112, 985, 1, 0, 0, 0, 114, 987, 1, 0, 0, 0, 116, 1001, 1, 0, 0, 0, 118, 1003, 1, 0, 0, 0, 120, 1005, 1, 0, 0, 0, 122, 1010, 1, 0, 0, 0, 124, 1012, 1, 0, 0, 0, 126, 1017, 1, 0, 0, 0, 128, 1029, 1, 0, 0, 0, 130, 1031, 1, 0, 0, 0, 132, 1040, 1, 0, 0, 0, 134, 1042, 1, 0, 0, 0, 136, 1046, 1, 0, 0, 0, 138, 1054, 1, 0, 0, 0, 140, 1062, 1, 0, 0, 0, 142, 1065, 1, 0, 0, 0, 144, 1075, 1, 0, 0, 0, 146, 1077, 1, 0, 0, 0, 148, 1083, 1, 0, 0, 0, 150, 1089, 1, 0, 0, 0, 152, 1093, 1, 0, 0, 0, 154, 1101, 1, 0, 0, 0, 156, 1118, 1, 0, 0, 0, 158, 1124, 1, 0, 0, 0, 160, 1129, 1, 0, 0, 0, 162, 1131, 1, 0, 0, 0, 164, 1138, 1, 0, 0, 0, 166, 1146, 1, 0, 0, 0, 168, 1148, 1, 0, 0, 0, 170, 1158, 1, 0, 0, 0, 172, 1161, 1, 0, 0, 0, 174, 1169, 1, 0, 0, 0, 176, 1177, 1, 0, 0, 0, 178, 1181, 1, 0, 0, 0, 180, 1184, 1, 0, 0, 0, 182, 1204, 1, 0, 0, 0, 184, 1211, 1, 0, 0, 0, 186, 1226, 1, 0, 0, 0, 188, 1229, 1, 0, 0, 0, 190, 1239, 1, 0, 0, 0, 192, 1251, 1, 0, 0, 0, 194, 1255, 1, 0, 0, 0, 196, 1268, 1, 0, 0, 0, 198, 1276, 1, 0, 0, 0, 200, 1283, 1, 0, 0, 0, 202, 1297, 1, 0, 0, 0, 204, 1306, 1, 0, 0, 0, 206, 1315, 1, 0, 0, 0, 208, 1327, 1, 0, 0, 0, 210, 1329, 1, 0, 0, 0, 212, 1332, 1, 0, 0, 0, 214, 1345, 1, 0, 0, 0, 216, 1354, 1, 0, 0, 0, 218, 1356, 1, 0, 0, 0, 220, 1366, 1, 0, 0, 0, 222, 1372, 1, 0, 0, 0, 224, 1374, 1, 0, 0, 0, 226, 1380, 1, 0, 0, 0, 228, 1389, 1, 0, 0, 0, 230, 1402, 1, 0, 0, 0, 232, 1404, 1, 0, 0, 0, 234, 1406, 1, 0, 0, 0, 236, 1410, 1, 0, 0, 0, 238, 1420, 1, 0, 0, 0, 240, 1440, 1, 0, 0, 0, 242, 1447, 1, 0, 0, 0, 244, 1450, 1, 0, 0, 0, 246, 1458, 1, 0, 0, 0, 248, 1475, 1, 0, 0, 0, 250, 1477, 1, 0, 0, 0, 252, 1479, 1, 0, 0, 0, 254, 1481, 1, 0, 0, 0, 256, 1495, 1, 0, 0, 0, 258, 1502, 1, 0, 0, 0, 260, 1505, 1, 0, 0, 0, 262, 1510, 1, 0, 0, 0, 264, 1518, 1, 0, 0, 0, 266, 1522, 1, 0, 0, 0, 268, 1528, 1, 0, 0, 0, 270, 1531, 1, 0, 0, 0, 272, 1549, 1, 0, 0, 0, 274, 1551, 1, 0, 0, 0, 276, 1558, 1, 0, 0, 0, 278, 1563, 1, 0, 0, 0, 280, 1566, 1, 0, 0, 0, 282, 1593, 1, 0, 0, 0, 284, 1595, 1, 0, 0, 0, 286, 1602, 1, 0, 0, 0, 288, 1607, 1, 0, 0, 0, 290, 1610, 1, 0, 0, 0, 292, 1627, 1, 0, 0, 0, 294, 1629, 1, 0, 0, 0, 296, 1636, 1, 0, 0, 0, 298, 1641, 1, 0, 0, 0, 300, 1649, 1, 0, 0, 0, 302, 1651, 1, 0, 0, 0, 304, 1656, 1, 0, 0, 0, 306, 1665, 1, 0, 0, 0, 308, 1679, 1, 0, 0, 0, 310, 1687, 1, 0, 0, 0, 312, 1703, 1, 0, 0, 0, 314, 1717, 1, 0, 0, 0, 316, 1726, 1, 0, 0, 0, 318, 1729, 1, 0, 0, 0, 320, 1735, 1, 0, 0, 0, 322, 1750, 1, 0, 0, 0, 324, 1757, 1, 0, 0, 0, 326, 1762, 1, 0, 0, 0, 328, 1764, 1, 0, 0, 0, 330, 1775, 1, 0, 0, 0, 332, 1786, 1, 0, 0, 0, 334, 1795, 1, 0, 0, 0, 336, 1797, 1, 0, 0, 0, 338, 1801, 1, 0, 0, 0, 340, 1805, 1, 0, 0, 0, 342, 1811, 1, 0, 0, 0, 344, 1814, 1, 0, 0, 0, 346, 1823, 1, 0, 0, 0, 348, 1830, 1, 0, 0, 0, 350, 1832, 1, 0, 0, 0, 352, 1836, 1, 0, 0, 0, 354, 1840, 1, 0, 0, 0, 356, 1844, 1, 0, 0, 0, 358, 1852, 1, 0, 0, 0, 360, 1881, 1, 0, 0, 0, 362, 1884, 1, 0, 0, 0, 364, 1888, 1, 0, 0, 0, 366, 1894, 1, 0, 0, 0, 368, 1911, 1, 0, 0, 0, 370, 1921, 1, 0, 0, 0, 372, 1923, 1, 0, 0, 0, 374, 1929, 1, 0, 0, 0, 376, 1931, 1, 0, 0, 0, 378, 1937, 1, 0, 0, 0, 380, 1948, 1, 0, 0, 0, 382, 1953, 1, 0, 0, 0, 384, 1960, 1, 0, 0, 0, 386, 1963, 1, 0, 0, 0, 388, 1965, 1, 0, 0, 0, 390, 1970, 1, 0, 0, 0, 392, 1978, 1, 0, 0, 0, 394, 1985, 1, 0, 0, 0, 396, 1990, 1, 0, 0, 0, 398, 2014, 1, 0, 0, 0, 400, 2022, 1, 0, 0, 0, 402, 2025, 1, 0, 0, 0, 404, 2031, 1, 0, 0, 0, 406, 2044, 1, 0, 0, 0, 408, 2046, 1, 0, 0, 0, 410, 2049, 1, 0, 0, 0, 412, 2066, 1, 0, 0, 0, 414, 2069, 1, 0, 0, 0, 416, 2073, 1, 0, 0, 0, 418, 2082, 1, 0, 0, 0, 420, 2104, 1, 0, 0, 0, 422, 2106, 1, 0, 0, 0, 424, 2124, 1, 0, 0, 0, 426, 2126, 1, 0, 0, 0, 428, 2132, 1, 0, 0, 0, 430, 2143, 1, 0, 0, 0, 432, 2145, 1, 0, 0, 0, 434, 2152, 1, 0, 0, 0, 436, 2163, 1, 0, 0, 0, 438, 2200, 1, 0, 0, 0, 440, 2214, 1, 0, 0, 0, 442, 2227, 1, 0, 0, 0, 444, 2229, 1, 0, 0, 0, 446, 2253, 1, 0, 0, 0, 448, 2261, 1, 0, 0, 0, 450, 2263, 1, 0, 0, 0, 452, 2271, 1, 0, 0, 0, 454, 2278, 1, 0, 0, 0, 456, 2282, 1, 0, 0, 0, 458, 2291, 1, 0, 0, 0, 460, 2309, 1, 0, 0, 0, 462, 2311, 1, 0, 0, 0, 464, 2320, 1, 0, 0, 0, 466, 2324, 1, 0, 0, 0, 468, 2336, 1, 0, 0, 0, 470, 2338, 1, 0, 0, 0, 472, 2349, 1, 0, 0, 0, 474, 2353, 1, 0, 0, 0, 476, 2355, 1, 0, 0, 0, 478, 2362, 1, 0, 0, 0, 480, 2375, 1, 0, 0, 0, 482, 2378, 1, 0, 0, 0, 484, 2389, 1, 0, 0, 0, 486, 2391, 1, 0, 0, 0, 488, 2400, 1, 0, 0, 0, 490, 2405, 1, 0, 0, 0, 492, 2429, 1, 0, 0, 0, 494, 2431, 1, 0, 0, 0, 496, 2439, 1, 0, 0, 0, 498, 2451, 1, 0, 0, 0, 500, 2454, 1, 0, 0, 0, 502, 2458, 1, 0, 0, 0, 504, 2461, 1, 0, 0, 0, 506, 2464, 1, 0, 0, 0, 508, 2470, 1, 0, 0, 0, 510, 2479, 1, 0, 0, 0, 512, 2486, 1, 0, 0, 0, 514, 2491, 1, 0, 0, 0, 516, 2495, 1, 0, 0, 0, 518, 2500, 1, 0, 0, 0, 520, 2504, 1, 0, 0, 0, 522, 2521, 1, 0, 0, 0, 524, 2539, 1, 0, 0, 0, 526, 2548, 1, 0, 0, 0, 528, 2556, 1, 0, 0, 0, 530, 2558, 1, 0, 0, 0, 532, 2564, 1, 0, 0, 0, 534, 2576, 1, 0, 0, 0, 536, 2583, 1, 0, 0, 0, 538, 2588, 1, 0, 0, 0, 540, 2597, 1, 0, 0, 0, 542, 2606, 1, 0, 0, 0, 544, 2624, 1, 0, 0, 0, 546, 2627, 1, 0, 0, 0, 548, 2631, 1, 0, 0, 0, 550, 2635, 1, 0, 0, 0, 552, 2641, 1, 0, 0, 0, 554, 2652, 1, 0, 0, 0, 556, 2655, 1, 0, 0, 0, 558, 2658, 1, 0, 0, 0, 560, 2660, 1, 0, 0, 0, 562, 2662, 1, 0, 0, 0, 564, 2665, 1, 0, 0, 0, 566, 2682, 1, 0, 0, 0, 568, 2684, 1, 0, 0, 0, 570, 2692, 1, 0, 0, 0, 572, 2694, 1, 0, 0, 0, 574, 2697, 1, 0, 0, 0, 576, 2700, 1, 0, 0, 0, 578, 2704, 1, 0, 0, 0, 580, 2708, 1, 0, 0, 0, 582, 2712, 1, 0, 0, 0, 584, 2715, 1, 0, 0, 0, 586, 2719, 1, 0, 0, 0, 588, 2724, 1, 0, 0, 0, 590, 2728, 1, 0, 0, 0, 592, 2731, 1, 0, 0, 0, 594, 2734, 1, 0, 0, 0, 596, 2744, 1, 0, 0, 0, 598, 2748, 1, 0, 0, 0, 600, 2752, 1, 0, 0, 0, 602, 2756, 1, 0, 0, 0, 604, 2760, 1, 0, 0, 0, 606, 2764, 1, 0, 0, 0, 608, 2768, 1, 0, 0, 0, 610, 2776, 1, 0, 0, 0, 612, 2786, 1, 0, 0, 0, 614, 2788, 1, 0, 0, 0, 616, 2790, 1, 0, 0, 0, 618, 2792, 1, 0, 0, 0, 620, 2797, 1, 0, 0, 0, 622, 2813, 1, 0, 0, 0, 624, 2831, 1, 0, 0, 0, 626, 2869, 1, 0, 0, 0, 628, 630, 3, 4, 2, 0, 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 632, 5, 0, 0, 1, 632, 1, 1, 0, 0, 0, 633, 642, 3, 6, 3, 0, 634, 642, 3, 156, 78, 0, 635, 642, 3, 22, 11, 0, 636, 642, 3, 56, 28, 0, 637, 642, 3, 62, 31, 0, 638, 642, 3, 74, 37, 0, 639, 642, 3, 76, 38, 0, 640, 642, 3, 402, 201, 0, 641, 633, 1, 0, 0, 0, 641, 634, 1, 0, 0, 0, 641, 635, 1, 0, 0, 0, 641, 636, 1, 0, 0, 0, 641, 637, 1, 0, 0, 0, 641, 638, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 641, 640, 1, 0, 0, 0, 642, 644, 1, 0, 0, 0, 643, 645, 5, 147, 0, 0, 644, 643, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 648, 1, 0, 0, 0, 646, 648, 3, 86, 43, 0, 647, 641, 1, 0, 0, 0, 647, 646, 1, 0, 0, 0, 648, 3, 1, 0, 0, 0, 649, 650, 4, 2, 0, 1, 650, 651, 3, 2, 1, 0, 651, 652, 6, 2, -1, 0, 652, 654, 1, 0, 0, 0, 653, 649, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 5, 1, 0, 0, 0, 657, 661, 3, 8, 4, 0, 658, 661, 3, 10, 5, 0, 659, 661, 3, 20, 10, 0, 660, 657, 1, 0, 0, 0, 660, 658, 1, 0, 0, 0, 660, 659, 1, 0, 0, 0, 661, 7, 1, 0, 0, 0, 662, 664, 5, 14, 0, 0, 663, 665, 5, 4, 0, 0, 664, 663, 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667, 3, 368, 184, 0, 667, 668, 5, 17, 0, 0, 668, 670, 3, 402, 201, 0, 669, 671, 3, 42, 21, 0, 670, 669, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 673, 3, 162, 81, 0, 673, 9, 1, 0, 0, 0, 674, 675, 5, 26, 0, 0, 675, 676, 3, 12, 6, 0, 676, 677, 3, 162, 81, 0, 677, 11, 1, 0, 0, 0, 678, 683, 3, 14, 7, 0, 679, 680, 5, 145, 0, 0, 680, 682, 3, 14, 7, 0, 681, 679, 1, 0, 0, 0, 682, 685, 1, 0, 0, 0, 683, 681, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 13, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 686, 691, 3, 124, 62, 0, 687, 691, 3, 402, 201, 0, 688, 691, 3, 16, 8, 0, 689, 691, 3, 18, 9, 0, 690, 686, 1, 0, 0, 0, 690, 687, 1, 0, 0, 0, 690, 688, 1, 0, 0, 0, 690, 689, 1, 0, 0, 0, 691, 15, 1, 0, 0, 0, 692, 693, 5, 4, 0, 0, 693, 694, 3, 368, 184, 0, 694, 695, 3, 178, 89, 0, 695, 17, 1, 0, 0, 0, 696, 697, 7, 0, 0, 0, 697, 698, 3, 368, 184, 0, 698, 699, 3, 178, 89, 0, 699, 19, 1, 0, 0, 0, 700, 701, 5, 34, 0, 0, 701, 702, 3, 162, 81, 0, 702, 703, 5, 26, 0, 0, 703, 704, 3, 402, 201, 0, 704, 21, 1, 0, 0, 0, 705, 709, 3, 24, 12, 0, 706, 709, 3, 28, 14, 0, 707, 709, 3, 30, 15, 0, 708, 705, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 708, 707, 1, 0, 0, 0, 709, 23, 1, 0, 0, 0, 710, 711, 5, 18, 0, 0, 711, 712, 3, 12, 6, 0, 712, 714, 3, 162, 81, 0, 713, 715, 3, 26, 13, 0, 714, 713, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 25, 1, 0, 0, 0, 716, 717, 5, 12, 0, 0, 717, 721, 3, 162, 81, 0, 718, 719, 5, 12, 0, 0, 719, 721, 3, 24, 12, 0, 720, 716, 1, 0, 0, 0, 720, 718, 1, 0, 0, 0, 721, 27, 1, 0, 0, 0, 722, 723, 5, 11, 0, 0, 723, 724, 3, 12, 6, 0, 724, 725, 5, 12, 0, 0, 725, 726, 3, 162, 81, 0, 726, 29, 1, 0, 0, 0, 727, 728, 5, 35, 0, 0, 728, 729, 3, 402, 201, 0, 729, 731, 5, 139, 0, 0, 730, 732, 3, 32, 16, 0, 731, 730, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 733, 1, 0, 0, 0, 733, 734, 5, 142, 0, 0, 734, 31, 1, 0, 0, 0, 735, 737, 3, 34, 17, 0, 736, 738, 3, 32, 16, 0, 737, 736, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 33, 1, 0, 0, 0, 739, 742, 3, 36, 18, 0, 740, 742, 3, 40, 20, 0, 741, 739, 1, 0, 0, 0, 741, 740, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 3, 4, 2, 0, 744, 747, 1, 0, 0, 0, 745, 747, 3, 46, 23, 0, 746, 741, 1, 0, 0, 0, 746, 745, 1, 0, 0, 0, 747, 35, 1, 0, 0, 0, 748, 750, 3, 394, 197, 0, 749, 748, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 752, 5, 4, 0, 0, 752, 753, 3, 38, 19, 0, 753, 754, 5, 146, 0, 0, 754, 37, 1, 0, 0, 0, 755, 757, 3, 368, 184, 0, 756, 758, 3, 42, 21, 0, 757, 756, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 766, 1, 0, 0, 0, 759, 760, 5, 145, 0, 0, 760, 762, 3, 368, 184, 0, 761, 763, 3, 42, 21, 0, 762, 761, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 765, 1, 0, 0, 0, 764, 759, 1, 0, 0, 0, 765, 768, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 39, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 769, 771, 3, 394, 197, 0, 770, 769, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 773, 5, 8, 0, 0, 773, 774, 5, 146, 0, 0, 774, 41, 1, 0, 0, 0, 775, 776, 5, 25, 0, 0, 776, 777, 3, 44, 22, 0, 777, 43, 1, 0, 0, 0, 778, 779, 3, 402, 201, 0, 779, 45, 1, 0, 0, 0, 780, 782, 3, 48, 24, 0, 781, 783, 3, 50, 25, 0, 782, 781, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 785, 1, 0, 0, 0, 784, 786, 3, 54, 27, 0, 785, 784, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 788, 5, 122, 0, 0, 788, 47, 1, 0, 0, 0, 789, 790, 5, 119, 0, 0, 790, 792, 3, 98, 49, 0, 791, 793, 3, 32, 16, 0, 792, 791, 1, 0, 0, 0, 792, 793, 1, 0, 0, 0, 793, 49, 1, 0, 0, 0, 794, 796, 3, 94, 47, 0, 795, 797, 3, 50, 25, 0, 796, 795, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 51, 1, 0, 0, 0, 798, 799, 5, 120, 0, 0, 799, 801, 3, 98, 49, 0, 800, 802, 3, 32, 16, 0, 801, 800, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 53, 1, 0, 0, 0, 803, 805, 5, 121, 0, 0, 804, 806, 3, 32, 16, 0, 805, 804, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 55, 1, 0, 0, 0, 807, 812, 3, 58, 29, 0, 808, 813, 3, 6, 3, 0, 809, 813, 3, 24, 12, 0, 810, 813, 3, 30, 15, 0, 811, 813, 3, 76, 38, 0, 812, 808, 1, 0, 0, 0, 812, 809, 1, 0, 0, 0, 812, 810, 1, 0, 0, 0, 812, 811, 1, 0, 0, 0, 813, 57, 1, 0, 0, 0, 814, 815, 3, 60, 30, 0, 815, 816, 5, 146, 0, 0, 816, 59, 1, 0, 0, 0, 817, 818, 3, 566, 283, 0, 818, 61, 1, 0, 0, 0, 819, 825, 3, 64, 32, 0, 820, 825, 3, 66, 33, 0, 821, 825, 3, 68, 34, 0, 822, 825, 3, 70, 35, 0, 823, 825, 3, 72, 36, 0, 824, 819, 1, 0, 0, 0, 824, 820, 1, 0, 0, 0, 824, 821, 1, 0, 0, 0, 824, 822, 1, 0, 0, 0, 824, 823, 1, 0, 0, 0, 825, 63, 1, 0, 0, 0, 826, 828, 5, 3, 0, 0, 827, 829, 3, 60, 30, 0, 828, 827, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 65, 1, 0, 0, 0, 830, 832, 5, 7, 0, 0, 831, 833, 3, 60, 30, 0, 832, 831, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, 67, 1, 0, 0, 0, 834, 835, 5, 15, 0, 0, 835, 69, 1, 0, 0, 0, 836, 838, 5, 37, 0, 0, 837, 839, 3, 402, 201, 0, 838, 837, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 71, 1, 0, 0, 0, 840, 841, 5, 38, 0, 0, 841, 842, 3, 402, 201, 0, 842, 73, 1, 0, 0, 0, 843, 844, 5, 9, 0, 0, 844, 845, 3, 162, 81, 0, 845, 75, 1, 0, 0, 0, 846, 847, 5, 10, 0, 0, 847, 849, 3, 162, 81, 0, 848, 850, 3, 78, 39, 0, 849, 848, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 77, 1, 0, 0, 0, 851, 853, 3, 80, 40, 0, 852, 851, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 79, 1, 0, 0, 0, 856, 858, 5, 5, 0, 0, 857, 859, 3, 82, 41, 0, 858, 857, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 861, 3, 162, 81, 0, 861, 81, 1, 0, 0, 0, 862, 869, 3, 84, 42, 0, 863, 864, 3, 84, 42, 0, 864, 865, 5, 145, 0, 0, 865, 866, 3, 84, 42, 0, 866, 868, 1, 0, 0, 0, 867, 863, 1, 0, 0, 0, 868, 871, 1, 0, 0, 0, 869, 867, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 83, 1, 0, 0, 0, 871, 869, 1, 0, 0, 0, 872, 874, 3, 368, 184, 0, 873, 875, 3, 42, 21, 0, 874, 873, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 85, 1, 0, 0, 0, 876, 880, 3, 88, 44, 0, 877, 880, 3, 114, 57, 0, 878, 880, 3, 120, 60, 0, 879, 876, 1, 0, 0, 0, 879, 877, 1, 0, 0, 0, 879, 878, 1, 0, 0, 0, 880, 87, 1, 0, 0, 0, 881, 883, 3, 90, 45, 0, 882, 884, 3, 92, 46, 0, 883, 882, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 886, 1, 0, 0, 0, 885, 887, 3, 96, 48, 0, 886, 885, 1, 0, 0, 0, 886, 887, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 5, 122, 0, 0, 889, 89, 1, 0, 0, 0, 890, 891, 5, 119, 0, 0, 891, 893, 3, 98, 49, 0, 892, 894, 3, 4, 2, 0, 893, 892, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 91, 1, 0, 0, 0, 895, 897, 3, 94, 47, 0, 896, 895, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 93, 1, 0, 0, 0, 900, 901, 5, 120, 0, 0, 901, 903, 3, 98, 49, 0, 902, 904, 3, 4, 2, 0, 903, 902, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 95, 1, 0, 0, 0, 905, 907, 5, 121, 0, 0, 906, 908, 3, 4, 2, 0, 907, 906, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 97, 1, 0, 0, 0, 909, 910, 6, 49, -1, 0, 910, 920, 3, 100, 50, 0, 911, 920, 3, 566, 283, 0, 912, 920, 3, 614, 307, 0, 913, 914, 5, 140, 0, 0, 914, 915, 3, 98, 49, 0, 915, 916, 5, 143, 0, 0, 916, 920, 1, 0, 0, 0, 917, 918, 5, 151, 0, 0, 918, 920, 3, 98, 49, 2, 919, 909, 1, 0, 0, 0, 919, 911, 1, 0, 0, 0, 919, 912, 1, 0, 0, 0, 919, 913, 1, 0, 0, 0, 919, 917, 1, 0, 0, 0, 920, 930, 1, 0, 0, 0, 921, 924, 10, 1, 0, 0, 922, 925, 3, 576, 288, 0, 923, 925, 3, 578, 289, 0, 924, 922, 1, 0, 0, 0, 924, 923, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 3, 98, 49, 2, 927, 929, 1, 0, 0, 0, 928, 921, 1, 0, 0, 0, 929, 932, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 99, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 933, 934, 5, 60, 0, 0, 934, 935, 5, 140, 0, 0, 935, 936, 3, 106, 53, 0, 936, 937, 5, 143, 0, 0, 937, 963, 1, 0, 0, 0, 938, 939, 5, 61, 0, 0, 939, 940, 5, 140, 0, 0, 940, 941, 3, 108, 54, 0, 941, 942, 5, 143, 0, 0, 942, 963, 1, 0, 0, 0, 943, 944, 7, 1, 0, 0, 944, 947, 5, 140, 0, 0, 945, 948, 3, 580, 290, 0, 946, 948, 3, 582, 291, 0, 947, 945, 1, 0, 0, 0, 947, 946, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 950, 3, 102, 51, 0, 950, 951, 5, 143, 0, 0, 951, 963, 1, 0, 0, 0, 952, 953, 5, 64, 0, 0, 953, 954, 5, 140, 0, 0, 954, 955, 3, 110, 55, 0, 955, 956, 5, 143, 0, 0, 956, 963, 1, 0, 0, 0, 957, 958, 5, 65, 0, 0, 958, 959, 5, 140, 0, 0, 959, 960, 3, 112, 56, 0, 960, 961, 5, 143, 0, 0, 961, 963, 1, 0, 0, 0, 962, 933, 1, 0, 0, 0, 962, 938, 1, 0, 0, 0, 962, 943, 1, 0, 0, 0, 962, 952, 1, 0, 0, 0, 962, 957, 1, 0, 0, 0, 963, 101, 1, 0, 0, 0, 964, 966, 5, 172, 0, 0, 965, 967, 3, 104, 52, 0, 966, 965, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 103, 1, 0, 0, 0, 968, 969, 5, 138, 0, 0, 969, 971, 5, 172, 0, 0, 970, 972, 3, 104, 52, 0, 971, 970, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 105, 1, 0, 0, 0, 973, 974, 7, 2, 0, 0, 974, 107, 1, 0, 0, 0, 975, 976, 7, 3, 0, 0, 976, 109, 1, 0, 0, 0, 977, 982, 3, 566, 283, 0, 978, 979, 5, 138, 0, 0, 979, 981, 3, 566, 283, 0, 980, 978, 1, 0, 0, 0, 981, 984, 1, 0, 0, 0, 982, 980, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 111, 1, 0, 0, 0, 984, 982, 1, 0, 0, 0, 985, 986, 7, 4, 0, 0, 986, 113, 1, 0, 0, 0, 987, 988, 5, 113, 0, 0, 988, 997, 5, 140, 0, 0, 989, 990, 5, 114, 0, 0, 990, 991, 5, 146, 0, 0, 991, 992, 3, 118, 59, 0, 992, 993, 5, 145, 0, 0, 993, 994, 5, 115, 0, 0, 994, 995, 5, 146, 0, 0, 995, 996, 3, 116, 58, 0, 996, 998, 1, 0, 0, 0, 997, 989, 1, 0, 0, 0, 997, 998, 1, 0, 0, 0, 998, 999, 1, 0, 0, 0, 999, 1000, 5, 143, 0, 0, 1000, 115, 1, 0, 0, 0, 1001, 1002, 5, 173, 0, 0, 1002, 117, 1, 0, 0, 0, 1003, 1004, 3, 624, 312, 0, 1004, 119, 1, 0, 0, 0, 1005, 1006, 7, 5, 0, 0, 1006, 1007, 5, 140, 0, 0, 1007, 1008, 3, 122, 61, 0, 1008, 1009, 5, 143, 0, 0, 1009, 121, 1, 0, 0, 0, 1010, 1011, 3, 624, 312, 0, 1011, 123, 1, 0, 0, 0, 1012, 1013, 5, 118, 0, 0, 1013, 1014, 5, 140, 0, 0, 1014, 1015, 3, 126, 63, 0, 1015, 1016, 5, 143, 0, 0, 1016, 125, 1, 0, 0, 0, 1017, 1022, 3, 128, 64, 0, 1018, 1019, 5, 145, 0, 0, 1019, 1021, 3, 128, 64, 0, 1020, 1018, 1, 0, 0, 0, 1021, 1024, 1, 0, 0, 0, 1022, 1020, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 127, 1, 0, 0, 0, 1024, 1022, 1, 0, 0, 0, 1025, 1026, 3, 130, 65, 0, 1026, 1027, 3, 132, 66, 0, 1027, 1030, 1, 0, 0, 0, 1028, 1030, 5, 160, 0, 0, 1029, 1025, 1, 0, 0, 0, 1029, 1028, 1, 0, 0, 0, 1030, 129, 1, 0, 0, 0, 1031, 1032, 7, 6, 0, 0, 1032, 131, 1, 0, 0, 0, 1033, 1041, 5, 173, 0, 0, 1034, 1041, 5, 172, 0, 0, 1035, 1038, 5, 175, 0, 0, 1036, 1037, 5, 138, 0, 0, 1037, 1039, 5, 172, 0, 0, 1038, 1036, 1, 0, 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1041, 1, 0, 0, 0, 1040, 1033, 1, 0, 0, 0, 1040, 1034, 1, 0, 0, 0, 1040, 1035, 1, 0, 0, 0, 1041, 133, 1, 0, 0, 0, 1042, 1043, 5, 148, 0, 0, 1043, 1044, 3, 136, 68, 0, 1044, 1045, 5, 149, 0, 0, 1045, 135, 1, 0, 0, 0, 1046, 1051, 3, 138, 69, 0, 1047, 1048, 5, 145, 0, 0, 1048, 1050, 3, 138, 69, 0, 1049, 1047, 1, 0, 0, 0, 1050, 1053, 1, 0, 0, 0, 1051, 1049, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 137, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1054, 1060, 3, 528, 264, 0, 1055, 1058, 5, 146, 0, 0, 1056, 1059, 3, 526, 263, 0, 1057, 1059, 3, 552, 276, 0, 1058, 1056, 1, 0, 0, 0, 1058, 1057, 1, 0, 0, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1055, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 139, 1, 0, 0, 0, 1062, 1063, 5, 25, 0, 0, 1063, 1064, 3, 142, 71, 0, 1064, 141, 1, 0, 0, 0, 1065, 1070, 3, 144, 72, 0, 1066, 1067, 5, 145, 0, 0, 1067, 1069, 3, 144, 72, 0, 1068, 1066, 1, 0, 0, 0, 1069, 1072, 1, 0, 0, 0, 1070, 1068, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 143, 1, 0, 0, 0, 1072, 1070, 1, 0, 0, 0, 1073, 1076, 3, 146, 73, 0, 1074, 1076, 3, 148, 74, 0, 1075, 1073, 1, 0, 0, 0, 1075, 1074, 1, 0, 0, 0, 1076, 145, 1, 0, 0, 0, 1077, 1078, 3, 526, 263, 0, 1078, 1081, 5, 146, 0, 0, 1079, 1082, 3, 526, 263, 0, 1080, 1082, 3, 552, 276, 0, 1081, 1079, 1, 0, 0, 0, 1081, 1080, 1, 0, 0, 0, 1082, 147, 1, 0, 0, 0, 1083, 1084, 3, 526, 263, 0, 1084, 1087, 3, 588, 294, 0, 1085, 1088, 3, 526, 263, 0, 1086, 1088, 3, 522, 261, 0, 1087, 1085, 1, 0, 0, 0, 1087, 1086, 1, 0, 0, 0, 1088, 149, 1, 0, 0, 0, 1089, 1090, 5, 148, 0, 0, 1090, 1091, 3, 152, 76, 0, 1091, 1092, 5, 149, 0, 0, 1092, 151, 1, 0, 0, 0, 1093, 1098, 3, 154, 77, 0, 1094, 1095, 5, 145, 0, 0, 1095, 1097, 3, 154, 77, 0, 1096, 1094, 1, 0, 0, 0, 1097, 1100, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 153, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, 1101, 1102, 3, 522, 261, 0, 1102, 155, 1, 0, 0, 0, 1103, 1119, 3, 164, 82, 0, 1104, 1119, 3, 172, 86, 0, 1105, 1119, 3, 180, 90, 0, 1106, 1119, 3, 206, 103, 0, 1107, 1119, 3, 212, 106, 0, 1108, 1119, 3, 236, 118, 0, 1109, 1119, 3, 270, 135, 0, 1110, 1119, 3, 280, 140, 0, 1111, 1119, 3, 290, 145, 0, 1112, 1119, 3, 312, 156, 0, 1113, 1119, 3, 318, 159, 0, 1114, 1119, 3, 320, 160, 0, 1115, 1119, 3, 328, 164, 0, 1116, 1119, 3, 334, 167, 0, 1117, 1119, 3, 344, 172, 0, 1118, 1103, 1, 0, 0, 0, 1118, 1104, 1, 0, 0, 0, 1118, 1105, 1, 0, 0, 0, 1118, 1106, 1, 0, 0, 0, 1118, 1107, 1, 0, 0, 0, 1118, 1108, 1, 0, 0, 0, 1118, 1109, 1, 0, 0, 0, 1118, 1110, 1, 0, 0, 0, 1118, 1111, 1, 0, 0, 0, 1118, 1112, 1, 0, 0, 0, 1118, 1113, 1, 0, 0, 0, 1118, 1114, 1, 0, 0, 0, 1118, 1115, 1, 0, 0, 0, 1118, 1116, 1, 0, 0, 0, 1118, 1117, 1, 0, 0, 0, 1119, 1121, 1, 0, 0, 0, 1120, 1122, 5, 147, 0, 0, 1121, 1120, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 157, 1, 0, 0, 0, 1123, 1125, 3, 156, 78, 0, 1124, 1123, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1124, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 159, 1, 0, 0, 0, 1128, 1130, 3, 4, 2, 0, 1129, 1128, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 161, 1, 0, 0, 0, 1131, 1133, 5, 139, 0, 0, 1132, 1134, 3, 4, 2, 0, 1133, 1132, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 5, 142, 0, 0, 1136, 163, 1, 0, 0, 0, 1137, 1139, 3, 394, 197, 0, 1138, 1137, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1142, 5, 19, 0, 0, 1141, 1143, 3, 166, 83, 0, 1142, 1141, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1145, 3, 168, 84, 0, 1145, 165, 1, 0, 0, 0, 1146, 1147, 7, 7, 0, 0, 1147, 167, 1, 0, 0, 0, 1148, 1153, 3, 170, 85, 0, 1149, 1150, 5, 138, 0, 0, 1150, 1152, 3, 170, 85, 0, 1151, 1149, 1, 0, 0, 0, 1152, 1155, 1, 0, 0, 0, 1153, 1151, 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 169, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1156, 1159, 3, 566, 283, 0, 1157, 1159, 3, 596, 298, 0, 1158, 1156, 1, 0, 0, 0, 1158, 1157, 1, 0, 0, 0, 1159, 171, 1, 0, 0, 0, 1160, 1162, 3, 394, 197, 0, 1161, 1160, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1164, 1, 0, 0, 0, 1163, 1165, 3, 362, 181, 0, 1164, 1163, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, 1, 0, 0, 0, 1166, 1167, 5, 27, 0, 0, 1167, 1168, 3, 174, 87, 0, 1168, 173, 1, 0, 0, 0, 1169, 1174, 3, 176, 88, 0, 1170, 1171, 5, 145, 0, 0, 1171, 1173, 3, 176, 88, 0, 1172, 1170, 1, 0, 0, 0, 1173, 1176, 1, 0, 0, 0, 1174, 1172, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 175, 1, 0, 0, 0, 1176, 1174, 1, 0, 0, 0, 1177, 1179, 3, 368, 184, 0, 1178, 1180, 3, 178, 89, 0, 1179, 1178, 1, 0, 0, 0, 1179, 1180, 1, 0, 0, 0, 1180, 177, 1, 0, 0, 0, 1181, 1182, 5, 156, 0, 0, 1182, 1183, 3, 402, 201, 0, 1183, 179, 1, 0, 0, 0, 1184, 1201, 3, 182, 91, 0, 1185, 1198, 3, 184, 92, 0, 1186, 1187, 3, 178, 89, 0, 1187, 1188, 3, 200, 100, 0, 1188, 1199, 1, 0, 0, 0, 1189, 1196, 3, 524, 262, 0, 1190, 1197, 3, 186, 93, 0, 1191, 1197, 3, 194, 97, 0, 1192, 1194, 3, 178, 89, 0, 1193, 1192, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1197, 3, 200, 100, 0, 1196, 1190, 1, 0, 0, 0, 1196, 1191, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1197, 1199, 1, 0, 0, 0, 1198, 1186, 1, 0, 0, 0, 1198, 1189, 1, 0, 0, 0, 1199, 1202, 1, 0, 0, 0, 1200, 1202, 3, 174, 87, 0, 1201, 1185, 1, 0, 0, 0, 1201, 1200, 1, 0, 0, 0, 1202, 181, 1, 0, 0, 0, 1203, 1205, 3, 394, 197, 0, 1204, 1203, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1207, 1, 0, 0, 0, 1206, 1208, 3, 362, 181, 0, 1207, 1206, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1210, 5, 28, 0, 0, 1210, 183, 1, 0, 0, 0, 1211, 1212, 3, 566, 283, 0, 1212, 185, 1, 0, 0, 0, 1213, 1221, 5, 139, 0, 0, 1214, 1216, 3, 188, 94, 0, 1215, 1217, 3, 190, 95, 0, 1216, 1215, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1222, 1, 0, 0, 0, 1218, 1219, 3, 190, 95, 0, 1219, 1220, 3, 188, 94, 0, 1220, 1222, 1, 0, 0, 0, 1221, 1214, 1, 0, 0, 0, 1221, 1218, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 5, 142, 0, 0, 1224, 1227, 1, 0, 0, 0, 1225, 1227, 3, 162, 81, 0, 1226, 1213, 1, 0, 0, 0, 1226, 1225, 1, 0, 0, 0, 1227, 187, 1, 0, 0, 0, 1228, 1230, 3, 394, 197, 0, 1229, 1228, 1, 0, 0, 0, 1229, 1230, 1, 0, 0, 0, 1230, 1232, 1, 0, 0, 0, 1231, 1233, 3, 366, 183, 0, 1232, 1231, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1236, 5, 30, 0, 0, 1235, 1237, 3, 162, 81, 0, 1236, 1235, 1, 0, 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 189, 1, 0, 0, 0, 1238, 1240, 3, 394, 197, 0, 1239, 1238, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1242, 1, 0, 0, 0, 1241, 1243, 3, 366, 183, 0, 1242, 1241, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1246, 5, 31, 0, 0, 1245, 1247, 3, 192, 96, 0, 1246, 1245, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1249, 1, 0, 0, 0, 1248, 1250, 3, 162, 81, 0, 1249, 1248, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 191, 1, 0, 0, 0, 1251, 1252, 5, 140, 0, 0, 1252, 1253, 3, 566, 283, 0, 1253, 1254, 5, 143, 0, 0, 1254, 193, 1, 0, 0, 0, 1255, 1263, 5, 139, 0, 0, 1256, 1258, 3, 196, 98, 0, 1257, 1259, 3, 198, 99, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1264, 1, 0, 0, 0, 1260, 1261, 3, 198, 99, 0, 1261, 1262, 3, 196, 98, 0, 1262, 1264, 1, 0, 0, 0, 1263, 1256, 1, 0, 0, 0, 1263, 1260, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1266, 5, 142, 0, 0, 1266, 195, 1, 0, 0, 0, 1267, 1269, 3, 394, 197, 0, 1268, 1267, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1271, 1, 0, 0, 0, 1270, 1272, 3, 366, 183, 0, 1271, 1270, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1274, 5, 30, 0, 0, 1274, 197, 1, 0, 0, 0, 1275, 1277, 3, 394, 197, 0, 1276, 1275, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1279, 1, 0, 0, 0, 1278, 1280, 3, 366, 183, 0, 1279, 1278, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, 1282, 5, 31, 0, 0, 1282, 199, 1, 0, 0, 0, 1283, 1292, 5, 139, 0, 0, 1284, 1286, 3, 202, 101, 0, 1285, 1287, 3, 204, 102, 0, 1286, 1285, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1293, 1, 0, 0, 0, 1288, 1290, 3, 204, 102, 0, 1289, 1291, 3, 202, 101, 0, 1290, 1289, 1, 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1293, 1, 0, 0, 0, 1292, 1284, 1, 0, 0, 0, 1292, 1288, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, 1295, 5, 142, 0, 0, 1295, 201, 1, 0, 0, 0, 1296, 1298, 3, 394, 197, 0, 1297, 1296, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1301, 5, 32, 0, 0, 1300, 1302, 3, 192, 96, 0, 1301, 1300, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1303, 1, 0, 0, 0, 1303, 1304, 3, 162, 81, 0, 1304, 203, 1, 0, 0, 0, 1305, 1307, 3, 394, 197, 0, 1306, 1305, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1308, 1, 0, 0, 0, 1308, 1310, 5, 33, 0, 0, 1309, 1311, 3, 192, 96, 0, 1310, 1309, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1313, 3, 162, 81, 0, 1313, 205, 1, 0, 0, 0, 1314, 1316, 3, 394, 197, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1318, 1, 0, 0, 0, 1317, 1319, 3, 364, 182, 0, 1318, 1317, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1320, 1, 0, 0, 0, 1320, 1321, 5, 59, 0, 0, 1321, 1323, 3, 208, 104, 0, 1322, 1324, 3, 134, 67, 0, 1323, 1322, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1326, 3, 210, 105, 0, 1326, 207, 1, 0, 0, 0, 1327, 1328, 3, 566, 283, 0, 1328, 209, 1, 0, 0, 0, 1329, 1330, 5, 156, 0, 0, 1330, 1331, 3, 522, 261, 0, 1331, 211, 1, 0, 0, 0, 1332, 1333, 3, 214, 107, 0, 1333, 1335, 3, 216, 108, 0, 1334, 1336, 3, 134, 67, 0, 1335, 1334, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1339, 3, 218, 109, 0, 1338, 1340, 3, 140, 70, 0, 1339, 1338, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1342, 1, 0, 0, 0, 1341, 1343, 3, 222, 111, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 213, 1, 0, 0, 0, 1344, 1346, 3, 394, 197, 0, 1345, 1344, 1, 0, 0, 0, 1345, 1346, 1, 0, 0, 0, 1346, 1348, 1, 0, 0, 0, 1347, 1349, 3, 362, 181, 0, 1348, 1347, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1351, 5, 16, 0, 0, 1351, 215, 1, 0, 0, 0, 1352, 1355, 3, 566, 283, 0, 1353, 1355, 3, 596, 298, 0, 1354, 1352, 1, 0, 0, 0, 1354, 1353, 1, 0, 0, 0, 1355, 217, 1, 0, 0, 0, 1356, 1361, 3, 224, 112, 0, 1357, 1359, 5, 39, 0, 0, 1358, 1357, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 1362, 1, 0, 0, 0, 1360, 1362, 5, 40, 0, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1360, 1, 0, 0, 0, 1362, 1364, 1, 0, 0, 0, 1363, 1365, 3, 220, 110, 0, 1364, 1363, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 219, 1, 0, 0, 0, 1366, 1368, 3, 584, 292, 0, 1367, 1369, 3, 394, 197, 0, 1368, 1367, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1371, 3, 522, 261, 0, 1371, 221, 1, 0, 0, 0, 1372, 1373, 3, 162, 81, 0, 1373, 223, 1, 0, 0, 0, 1374, 1376, 5, 140, 0, 0, 1375, 1377, 3, 226, 113, 0, 1376, 1375, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1379, 5, 143, 0, 0, 1379, 225, 1, 0, 0, 0, 1380, 1385, 3, 228, 114, 0, 1381, 1382, 5, 145, 0, 0, 1382, 1384, 3, 228, 114, 0, 1383, 1381, 1, 0, 0, 0, 1384, 1387, 1, 0, 0, 0, 1385, 1383, 1, 0, 0, 0, 1385, 1386, 1, 0, 0, 0, 1386, 227, 1, 0, 0, 0, 1387, 1385, 1, 0, 0, 0, 1388, 1390, 3, 394, 197, 0, 1389, 1388, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1392, 1, 0, 0, 0, 1391, 1393, 3, 230, 115, 0, 1392, 1391, 1, 0, 0, 0, 1392, 1393, 1, 0, 0, 0, 1393, 1394, 1, 0, 0, 0, 1394, 1395, 3, 232, 116, 0, 1395, 1400, 3, 524, 262, 0, 1396, 1398, 3, 234, 117, 0, 1397, 1396, 1, 0, 0, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1401, 1, 0, 0, 0, 1399, 1401, 3, 586, 293, 0, 1400, 1397, 1, 0, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 229, 1, 0, 0, 0, 1402, 1403, 3, 566, 283, 0, 1403, 231, 1, 0, 0, 0, 1404, 1405, 3, 566, 283, 0, 1405, 233, 1, 0, 0, 0, 1406, 1407, 5, 156, 0, 0, 1407, 1408, 3, 402, 201, 0, 1408, 235, 1, 0, 0, 0, 1409, 1411, 3, 394, 197, 0, 1410, 1409, 1, 0, 0, 0, 1410, 1411, 1, 0, 0, 0, 1411, 1413, 1, 0, 0, 0, 1412, 1414, 3, 364, 182, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1417, 1, 0, 0, 0, 1415, 1418, 3, 238, 119, 0, 1416, 1418, 3, 254, 127, 0, 1417, 1415, 1, 0, 0, 0, 1417, 1416, 1, 0, 0, 0, 1418, 237, 1, 0, 0, 0, 1419, 1421, 5, 41, 0, 0, 1420, 1419, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1423, 5, 13, 0, 0, 1423, 1425, 3, 250, 125, 0, 1424, 1426, 3, 134, 67, 0, 1425, 1424, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1428, 1, 0, 0, 0, 1427, 1429, 3, 562, 281, 0, 1428, 1427, 1, 0, 0, 0, 1428, 1429, 1, 0, 0, 0, 1429, 1431, 1, 0, 0, 0, 1430, 1432, 3, 140, 70, 0, 1431, 1430, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1435, 5, 139, 0, 0, 1434, 1436, 3, 240, 120, 0, 1435, 1434, 1, 0, 0, 0, 1435, 1436, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1438, 5, 142, 0, 0, 1438, 239, 1, 0, 0, 0, 1439, 1441, 3, 242, 121, 0, 1440, 1439, 1, 0, 0, 0, 1441, 1442, 1, 0, 0, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 241, 1, 0, 0, 0, 1444, 1448, 3, 156, 78, 0, 1445, 1448, 3, 244, 122, 0, 1446, 1448, 3, 86, 43, 0, 1447, 1444, 1, 0, 0, 0, 1447, 1445, 1, 0, 0, 0, 1447, 1446, 1, 0, 0, 0, 1448, 243, 1, 0, 0, 0, 1449, 1451, 3, 394, 197, 0, 1450, 1449, 1, 0, 0, 0, 1450, 1451, 1, 0, 0, 0, 1451, 1453, 1, 0, 0, 0, 1452, 1454, 5, 41, 0, 0, 1453, 1452, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 1, 0, 0, 0, 1455, 1456, 5, 4, 0, 0, 1456, 1457, 3, 246, 123, 0, 1457, 245, 1, 0, 0, 0, 1458, 1463, 3, 248, 124, 0, 1459, 1460, 5, 145, 0, 0, 1460, 1462, 3, 248, 124, 0, 1461, 1459, 1, 0, 0, 0, 1462, 1465, 1, 0, 0, 0, 1463, 1461, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 247, 1, 0, 0, 0, 1465, 1463, 1, 0, 0, 0, 1466, 1476, 3, 556, 278, 0, 1467, 1473, 3, 252, 126, 0, 1468, 1474, 3, 530, 265, 0, 1469, 1470, 5, 140, 0, 0, 1470, 1471, 3, 522, 261, 0, 1471, 1472, 5, 143, 0, 0, 1472, 1474, 1, 0, 0, 0, 1473, 1468, 1, 0, 0, 0, 1473, 1469, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1476, 1, 0, 0, 0, 1475, 1466, 1, 0, 0, 0, 1475, 1467, 1, 0, 0, 0, 1476, 249, 1, 0, 0, 0, 1477, 1478, 3, 566, 283, 0, 1478, 251, 1, 0, 0, 0, 1479, 1480, 3, 566, 283, 0, 1480, 253, 1, 0, 0, 0, 1481, 1482, 5, 13, 0, 0, 1482, 1484, 3, 250, 125, 0, 1483, 1485, 3, 134, 67, 0, 1484, 1483, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1488, 3, 562, 281, 0, 1487, 1489, 3, 140, 70, 0, 1488, 1487, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1491, 5, 139, 0, 0, 1491, 1492, 3, 256, 128, 0, 1492, 1493, 5, 142, 0, 0, 1493, 255, 1, 0, 0, 0, 1494, 1496, 3, 258, 129, 0, 1495, 1494, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 257, 1, 0, 0, 0, 1499, 1503, 3, 156, 78, 0, 1500, 1503, 3, 260, 130, 0, 1501, 1503, 3, 86, 43, 0, 1502, 1499, 1, 0, 0, 0, 1502, 1500, 1, 0, 0, 0, 1502, 1501, 1, 0, 0, 0, 1503, 259, 1, 0, 0, 0, 1504, 1506, 3, 394, 197, 0, 1505, 1504, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 5, 4, 0, 0, 1508, 1509, 3, 262, 131, 0, 1509, 261, 1, 0, 0, 0, 1510, 1515, 3, 264, 132, 0, 1511, 1512, 5, 145, 0, 0, 1512, 1514, 3, 264, 132, 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, 263, 1, 0, 0, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1520, 3, 252, 126, 0, 1519, 1521, 3, 266, 133, 0, 1520, 1519, 1, 0, 0, 0, 1520, 1521, 1, 0, 0, 0, 1521, 265, 1, 0, 0, 0, 1522, 1523, 5, 156, 0, 0, 1523, 1524, 3, 268, 134, 0, 1524, 267, 1, 0, 0, 0, 1525, 1529, 3, 612, 306, 0, 1526, 1529, 3, 624, 312, 0, 1527, 1529, 3, 614, 307, 0, 1528, 1525, 1, 0, 0, 0, 1528, 1526, 1, 0, 0, 0, 1528, 1527, 1, 0, 0, 0, 1529, 269, 1, 0, 0, 0, 1530, 1532, 3, 394, 197, 0, 1531, 1530, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1534, 1, 0, 0, 0, 1533, 1535, 3, 364, 182, 0, 1534, 1533, 1, 0, 0, 0, 1534, 1535, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1537, 5, 36, 0, 0, 1537, 1539, 3, 272, 136, 0, 1538, 1540, 3, 134, 67, 0, 1539, 1538, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1542, 1, 0, 0, 0, 1541, 1543, 3, 562, 281, 0, 1542, 1541, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1545, 1, 0, 0, 0, 1544, 1546, 3, 140, 70, 0, 1545, 1544, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1547, 1, 0, 0, 0, 1547, 1548, 3, 274, 137, 0, 1548, 271, 1, 0, 0, 0, 1549, 1550, 3, 566, 283, 0, 1550, 273, 1, 0, 0, 0, 1551, 1552, 5, 139, 0, 0, 1552, 1553, 3, 276, 138, 0, 1553, 1554, 5, 142, 0, 0, 1554, 275, 1, 0, 0, 0, 1555, 1557, 3, 278, 139, 0, 1556, 1555, 1, 0, 0, 0, 1557, 1560, 1, 0, 0, 0, 1558, 1556, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 277, 1, 0, 0, 0, 1560, 1558, 1, 0, 0, 0, 1561, 1564, 3, 156, 78, 0, 1562, 1564, 3, 86, 43, 0, 1563, 1561, 1, 0, 0, 0, 1563, 1562, 1, 0, 0, 0, 1564, 279, 1, 0, 0, 0, 1565, 1567, 3, 394, 197, 0, 1566, 1565, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1578, 1, 0, 0, 0, 1568, 1570, 3, 364, 182, 0, 1569, 1568, 1, 0, 0, 0, 1569, 1570, 1, 0, 0, 0, 1570, 1572, 1, 0, 0, 0, 1571, 1573, 5, 21, 0, 0, 1572, 1571, 1, 0, 0, 0, 1572, 1573, 1, 0, 0, 0, 1573, 1579, 1, 0, 0, 0, 1574, 1576, 5, 21, 0, 0, 1575, 1577, 3, 364, 182, 0, 1576, 1575, 1, 0, 0, 0, 1576, 1577, 1, 0, 0, 0, 1577, 1579, 1, 0, 0, 0, 1578, 1569, 1, 0, 0, 0, 1578, 1574, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 5, 6, 0, 0, 1581, 1583, 3, 282, 141, 0, 1582, 1584, 3, 134, 67, 0, 1583, 1582, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 1586, 1, 0, 0, 0, 1585, 1587, 3, 562, 281, 0, 1586, 1585, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1589, 1, 0, 0, 0, 1588, 1590, 3, 140, 70, 0, 1589, 1588, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 1591, 1, 0, 0, 0, 1591, 1592, 3, 284, 142, 0, 1592, 281, 1, 0, 0, 0, 1593, 1594, 3, 566, 283, 0, 1594, 283, 1, 0, 0, 0, 1595, 1596, 5, 139, 0, 0, 1596, 1597, 3, 286, 143, 0, 1597, 1598, 5, 142, 0, 0, 1598, 285, 1, 0, 0, 0, 1599, 1601, 3, 288, 144, 0, 1600, 1599, 1, 0, 0, 0, 1601, 1604, 1, 0, 0, 0, 1602, 1600, 1, 0, 0, 0, 1602, 1603, 1, 0, 0, 0, 1603, 287, 1, 0, 0, 0, 1604, 1602, 1, 0, 0, 0, 1605, 1608, 3, 156, 78, 0, 1606, 1608, 3, 86, 43, 0, 1607, 1605, 1, 0, 0, 0, 1607, 1606, 1, 0, 0, 0, 1608, 289, 1, 0, 0, 0, 1609, 1611, 3, 394, 197, 0, 1610, 1609, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1613, 1, 0, 0, 0, 1612, 1614, 3, 364, 182, 0, 1613, 1612, 1, 0, 0, 0, 1613, 1614, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1616, 5, 29, 0, 0, 1616, 1620, 3, 292, 146, 0, 1617, 1618, 5, 146, 0, 0, 1618, 1621, 5, 6, 0, 0, 1619, 1621, 3, 562, 281, 0, 1620, 1617, 1, 0, 0, 0, 1620, 1619, 1, 0, 0, 0, 1620, 1621, 1, 0, 0, 0, 1621, 1623, 1, 0, 0, 0, 1622, 1624, 3, 140, 70, 0, 1623, 1622, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1626, 3, 294, 147, 0, 1626, 291, 1, 0, 0, 0, 1627, 1628, 3, 566, 283, 0, 1628, 293, 1, 0, 0, 0, 1629, 1630, 5, 139, 0, 0, 1630, 1631, 3, 296, 148, 0, 1631, 1632, 5, 142, 0, 0, 1632, 295, 1, 0, 0, 0, 1633, 1635, 3, 298, 149, 0, 1634, 1633, 1, 0, 0, 0, 1635, 1638, 1, 0, 0, 0, 1636, 1634, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 297, 1, 0, 0, 0, 1638, 1636, 1, 0, 0, 0, 1639, 1642, 3, 300, 150, 0, 1640, 1642, 3, 86, 43, 0, 1641, 1639, 1, 0, 0, 0, 1641, 1640, 1, 0, 0, 0, 1642, 299, 1, 0, 0, 0, 1643, 1650, 3, 302, 151, 0, 1644, 1650, 3, 304, 152, 0, 1645, 1650, 3, 306, 153, 0, 1646, 1650, 3, 308, 154, 0, 1647, 1650, 3, 310, 155, 0, 1648, 1650, 3, 206, 103, 0, 1649, 1643, 1, 0, 0, 0, 1649, 1644, 1, 0, 0, 0, 1649, 1645, 1, 0, 0, 0, 1649, 1646, 1, 0, 0, 0, 1649, 1647, 1, 0, 0, 0, 1649, 1648, 1, 0, 0, 0, 1650, 301, 1, 0, 0, 0, 1651, 1652, 3, 182, 91, 0, 1652, 1653, 3, 184, 92, 0, 1653, 1654, 3, 524, 262, 0, 1654, 1655, 3, 194, 97, 0, 1655, 303, 1, 0, 0, 0, 1656, 1657, 3, 214, 107, 0, 1657, 1659, 3, 216, 108, 0, 1658, 1660, 3, 134, 67, 0, 1659, 1658, 1, 0, 0, 0, 1659, 1660, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1663, 3, 218, 109, 0, 1662, 1664, 3, 140, 70, 0, 1663, 1662, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 305, 1, 0, 0, 0, 1665, 1667, 3, 314, 157, 0, 1666, 1668, 3, 134, 67, 0, 1667, 1666, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1674, 3, 224, 112, 0, 1670, 1672, 5, 39, 0, 0, 1671, 1670, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1675, 1, 0, 0, 0, 1673, 1675, 5, 40, 0, 0, 1674, 1671, 1, 0, 0, 0, 1674, 1673, 1, 0, 0, 0, 1675, 1677, 1, 0, 0, 0, 1676, 1678, 3, 140, 70, 0, 1677, 1676, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 307, 1, 0, 0, 0, 1679, 1680, 3, 330, 165, 0, 1680, 1682, 3, 332, 166, 0, 1681, 1683, 3, 140, 70, 0, 1682, 1681, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 3, 194, 97, 0, 1685, 309, 1, 0, 0, 0, 1686, 1688, 3, 394, 197, 0, 1687, 1686, 1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1690, 1, 0, 0, 0, 1689, 1691, 3, 364, 182, 0, 1690, 1689, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1692, 1, 0, 0, 0, 1692, 1693, 5, 44, 0, 0, 1693, 1695, 3, 208, 104, 0, 1694, 1696, 3, 562, 281, 0, 1695, 1694, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1698, 1, 0, 0, 0, 1697, 1699, 3, 210, 105, 0, 1698, 1697, 1, 0, 0, 0, 1698, 1699, 1, 0, 0, 0, 1699, 1701, 1, 0, 0, 0, 1700, 1702, 3, 140, 70, 0, 1701, 1700, 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 311, 1, 0, 0, 0, 1703, 1705, 3, 314, 157, 0, 1704, 1706, 3, 134, 67, 0, 1705, 1704, 1, 0, 0, 0, 1705, 1706, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1709, 3, 224, 112, 0, 1708, 1710, 7, 8, 0, 0, 1709, 1708, 1, 0, 0, 0, 1709, 1710, 1, 0, 0, 0, 1710, 1712, 1, 0, 0, 0, 1711, 1713, 3, 140, 70, 0, 1712, 1711, 1, 0, 0, 0, 1712, 1713, 1, 0, 0, 0, 1713, 1714, 1, 0, 0, 0, 1714, 1715, 3, 316, 158, 0, 1715, 313, 1, 0, 0, 0, 1716, 1718, 3, 394, 197, 0, 1717, 1716, 1, 0, 0, 0, 1717, 1718, 1, 0, 0, 0, 1718, 1720, 1, 0, 0, 0, 1719, 1721, 3, 362, 181, 0, 1720, 1719, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1724, 5, 42, 0, 0, 1723, 1725, 7, 9, 0, 0, 1724, 1723, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 315, 1, 0, 0, 0, 1726, 1727, 3, 162, 81, 0, 1727, 317, 1, 0, 0, 0, 1728, 1730, 3, 394, 197, 0, 1729, 1728, 1, 0, 0, 0, 1729, 1730, 1, 0, 0, 0, 1730, 1731, 1, 0, 0, 0, 1731, 1732, 5, 43, 0, 0, 1732, 1733, 3, 162, 81, 0, 1733, 319, 1, 0, 0, 0, 1734, 1736, 3, 394, 197, 0, 1735, 1734, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 1738, 1, 0, 0, 0, 1737, 1739, 3, 364, 182, 0, 1738, 1737, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1741, 5, 45, 0, 0, 1741, 1743, 3, 526, 263, 0, 1742, 1744, 3, 562, 281, 0, 1743, 1742, 1, 0, 0, 0, 1743, 1744, 1, 0, 0, 0, 1744, 1746, 1, 0, 0, 0, 1745, 1747, 3, 140, 70, 0, 1746, 1745, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 3, 322, 161, 0, 1749, 321, 1, 0, 0, 0, 1750, 1751, 5, 139, 0, 0, 1751, 1752, 3, 324, 162, 0, 1752, 1753, 5, 142, 0, 0, 1753, 323, 1, 0, 0, 0, 1754, 1756, 3, 326, 163, 0, 1755, 1754, 1, 0, 0, 0, 1756, 1759, 1, 0, 0, 0, 1757, 1755, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 325, 1, 0, 0, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1763, 3, 156, 78, 0, 1761, 1763, 3, 86, 43, 0, 1762, 1760, 1, 0, 0, 0, 1762, 1761, 1, 0, 0, 0, 1763, 327, 1, 0, 0, 0, 1764, 1765, 3, 330, 165, 0, 1765, 1767, 3, 332, 166, 0, 1766, 1768, 3, 140, 70, 0, 1767, 1766, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1772, 1, 0, 0, 0, 1769, 1773, 3, 162, 81, 0, 1770, 1773, 3, 186, 93, 0, 1771, 1773, 3, 194, 97, 0, 1772, 1769, 1, 0, 0, 0, 1772, 1770, 1, 0, 0, 0, 1772, 1771, 1, 0, 0, 0, 1773, 329, 1, 0, 0, 0, 1774, 1776, 3, 394, 197, 0, 1775, 1774, 1, 0, 0, 0, 1775, 1776, 1, 0, 0, 0, 1776, 1778, 1, 0, 0, 0, 1777, 1779, 3, 362, 181, 0, 1778, 1777, 1, 0, 0, 0, 1778, 1779, 1, 0, 0, 0, 1779, 1780, 1, 0, 0, 0, 1780, 1782, 5, 46, 0, 0, 1781, 1783, 3, 134, 67, 0, 1782, 1781, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1784, 1, 0, 0, 0, 1784, 1785, 3, 224, 112, 0, 1785, 331, 1, 0, 0, 0, 1786, 1788, 3, 584, 292, 0, 1787, 1789, 3, 394, 197, 0, 1788, 1787, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790, 1791, 3, 522, 261, 0, 1791, 333, 1, 0, 0, 0, 1792, 1796, 3, 336, 168, 0, 1793, 1796, 3, 338, 169, 0, 1794, 1796, 3, 340, 170, 0, 1795, 1792, 1, 0, 0, 0, 1795, 1793, 1, 0, 0, 0, 1795, 1794, 1, 0, 0, 0, 1796, 335, 1, 0, 0, 0, 1797, 1798, 5, 47, 0, 0, 1798, 1799, 5, 58, 0, 0, 1799, 1800, 3, 596, 298, 0, 1800, 337, 1, 0, 0, 0, 1801, 1802, 5, 57, 0, 0, 1802, 1803, 5, 58, 0, 0, 1803, 1804, 3, 596, 298, 0, 1804, 339, 1, 0, 0, 0, 1805, 1806, 5, 48, 0, 0, 1806, 1807, 5, 58, 0, 0, 1807, 1809, 3, 596, 298, 0, 1808, 1810, 3, 342, 171, 0, 1809, 1808, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 341, 1, 0, 0, 0, 1811, 1812, 5, 146, 0, 0, 1812, 1813, 3, 358, 179, 0, 1813, 343, 1, 0, 0, 0, 1814, 1815, 5, 52, 0, 0, 1815, 1816, 3, 358, 179, 0, 1816, 1818, 5, 139, 0, 0, 1817, 1819, 3, 346, 173, 0, 1818, 1817, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1820, 1, 0, 0, 0, 1820, 1821, 5, 142, 0, 0, 1821, 345, 1, 0, 0, 0, 1822, 1824, 3, 348, 174, 0, 1823, 1822, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1823, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 347, 1, 0, 0, 0, 1827, 1831, 3, 350, 175, 0, 1828, 1831, 3, 352, 176, 0, 1829, 1831, 3, 354, 177, 0, 1830, 1827, 1, 0, 0, 0, 1830, 1828, 1, 0, 0, 0, 1830, 1829, 1, 0, 0, 0, 1831, 349, 1, 0, 0, 0, 1832, 1833, 7, 10, 0, 0, 1833, 1834, 5, 146, 0, 0, 1834, 1835, 3, 356, 178, 0, 1835, 351, 1, 0, 0, 0, 1836, 1837, 5, 55, 0, 0, 1837, 1838, 5, 146, 0, 0, 1838, 1839, 3, 614, 307, 0, 1839, 353, 1, 0, 0, 0, 1840, 1841, 5, 56, 0, 0, 1841, 1842, 5, 146, 0, 0, 1842, 1843, 7, 11, 0, 0, 1843, 355, 1, 0, 0, 0, 1844, 1849, 3, 358, 179, 0, 1845, 1846, 5, 145, 0, 0, 1846, 1848, 3, 358, 179, 0, 1847, 1845, 1, 0, 0, 0, 1848, 1851, 1, 0, 0, 0, 1849, 1847, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 357, 1, 0, 0, 0, 1851, 1849, 1, 0, 0, 0, 1852, 1857, 3, 566, 283, 0, 1853, 1854, 5, 138, 0, 0, 1854, 1856, 3, 566, 283, 0, 1855, 1853, 1, 0, 0, 0, 1856, 1859, 1, 0, 0, 0, 1857, 1855, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 359, 1, 0, 0, 0, 1859, 1857, 1, 0, 0, 0, 1860, 1882, 5, 6, 0, 0, 1861, 1882, 5, 66, 0, 0, 1862, 1882, 5, 67, 0, 0, 1863, 1882, 5, 21, 0, 0, 1864, 1882, 5, 48, 0, 0, 1865, 1882, 5, 68, 0, 0, 1866, 1882, 5, 69, 0, 0, 1867, 1882, 5, 70, 0, 0, 1868, 1882, 5, 57, 0, 0, 1869, 1882, 5, 47, 0, 0, 1870, 1882, 5, 71, 0, 0, 1871, 1882, 5, 72, 0, 0, 1872, 1876, 5, 74, 0, 0, 1873, 1874, 5, 140, 0, 0, 1874, 1875, 7, 12, 0, 0, 1875, 1877, 5, 143, 0, 0, 1876, 1873, 1, 0, 0, 0, 1876, 1877, 1, 0, 0, 0, 1877, 1882, 1, 0, 0, 0, 1878, 1882, 5, 73, 0, 0, 1879, 1882, 3, 364, 182, 0, 1880, 1882, 3, 366, 183, 0, 1881, 1860, 1, 0, 0, 0, 1881, 1861, 1, 0, 0, 0, 1881, 1862, 1, 0, 0, 0, 1881, 1863, 1, 0, 0, 0, 1881, 1864, 1, 0, 0, 0, 1881, 1865, 1, 0, 0, 0, 1881, 1866, 1, 0, 0, 0, 1881, 1867, 1, 0, 0, 0, 1881, 1868, 1, 0, 0, 0, 1881, 1869, 1, 0, 0, 0, 1881, 1870, 1, 0, 0, 0, 1881, 1871, 1, 0, 0, 0, 1881, 1872, 1, 0, 0, 0, 1881, 1878, 1, 0, 0, 0, 1881, 1879, 1, 0, 0, 0, 1881, 1880, 1, 0, 0, 0, 1882, 361, 1, 0, 0, 0, 1883, 1885, 3, 360, 180, 0, 1884, 1883, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1884, 1, 0, 0, 0, 1886, 1887, 1, 0, 0, 0, 1887, 363, 1, 0, 0, 0, 1888, 1892, 7, 13, 0, 0, 1889, 1890, 5, 140, 0, 0, 1890, 1891, 5, 31, 0, 0, 1891, 1893, 5, 143, 0, 0, 1892, 1889, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 365, 1, 0, 0, 0, 1894, 1895, 7, 14, 0, 0, 1895, 367, 1, 0, 0, 0, 1896, 1900, 6, 184, -1, 0, 1897, 1901, 3, 370, 185, 0, 1898, 1901, 3, 372, 186, 0, 1899, 1901, 3, 376, 188, 0, 1900, 1897, 1, 0, 0, 0, 1900, 1898, 1, 0, 0, 0, 1900, 1899, 1, 0, 0, 0, 1901, 1903, 1, 0, 0, 0, 1902, 1904, 3, 524, 262, 0, 1903, 1902, 1, 0, 0, 0, 1903, 1904, 1, 0, 0, 0, 1904, 1912, 1, 0, 0, 0, 1905, 1912, 3, 374, 187, 0, 1906, 1912, 3, 382, 191, 0, 1907, 1912, 3, 384, 192, 0, 1908, 1909, 5, 80, 0, 0, 1909, 1912, 3, 522, 261, 0, 1910, 1912, 3, 386, 193, 0, 1911, 1896, 1, 0, 0, 0, 1911, 1905, 1, 0, 0, 0, 1911, 1906, 1, 0, 0, 0, 1911, 1907, 1, 0, 0, 0, 1911, 1908, 1, 0, 0, 0, 1911, 1910, 1, 0, 0, 0, 1912, 1918, 1, 0, 0, 0, 1913, 1914, 10, 2, 0, 0, 1914, 1915, 5, 1, 0, 0, 1915, 1917, 3, 522, 261, 0, 1916, 1913, 1, 0, 0, 0, 1917, 1920, 1, 0, 0, 0, 1918, 1916, 1, 0, 0, 0, 1918, 1919, 1, 0, 0, 0, 1919, 369, 1, 0, 0, 0, 1920, 1918, 1, 0, 0, 0, 1921, 1922, 5, 150, 0, 0, 1922, 371, 1, 0, 0, 0, 1923, 1924, 3, 566, 283, 0, 1924, 373, 1, 0, 0, 0, 1925, 1926, 5, 28, 0, 0, 1926, 1930, 3, 368, 184, 0, 1927, 1928, 5, 27, 0, 0, 1928, 1930, 3, 368, 184, 0, 1929, 1925, 1, 0, 0, 0, 1929, 1927, 1, 0, 0, 0, 1930, 375, 1, 0, 0, 0, 1931, 1933, 5, 140, 0, 0, 1932, 1934, 3, 378, 189, 0, 1933, 1932, 1, 0, 0, 0, 1933, 1934, 1, 0, 0, 0, 1934, 1935, 1, 0, 0, 0, 1935, 1936, 5, 143, 0, 0, 1936, 377, 1, 0, 0, 0, 1937, 1942, 3, 380, 190, 0, 1938, 1939, 5, 145, 0, 0, 1939, 1941, 3, 380, 190, 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, 379, 1, 0, 0, 0, 1944, 1942, 1, 0, 0, 0, 1945, 1946, 3, 566, 283, 0, 1946, 1947, 5, 146, 0, 0, 1947, 1949, 1, 0, 0, 0, 1948, 1945, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 1950, 1, 0, 0, 0, 1950, 1951, 3, 368, 184, 0, 1951, 381, 1, 0, 0, 0, 1952, 1954, 3, 526, 263, 0, 1953, 1952, 1, 0, 0, 0, 1953, 1954, 1, 0, 0, 0, 1954, 1955, 1, 0, 0, 0, 1955, 1956, 5, 138, 0, 0, 1956, 1958, 3, 252, 126, 0, 1957, 1959, 3, 376, 188, 0, 1958, 1957, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 383, 1, 0, 0, 0, 1960, 1961, 3, 372, 186, 0, 1961, 1962, 5, 152, 0, 0, 1962, 385, 1, 0, 0, 0, 1963, 1964, 3, 402, 201, 0, 1964, 387, 1, 0, 0, 0, 1965, 1966, 5, 153, 0, 0, 1966, 1968, 3, 390, 195, 0, 1967, 1969, 3, 392, 196, 0, 1968, 1967, 1, 0, 0, 0, 1968, 1969, 1, 0, 0, 0, 1969, 389, 1, 0, 0, 0, 1970, 1975, 3, 566, 283, 0, 1971, 1972, 5, 138, 0, 0, 1972, 1974, 3, 566, 283, 0, 1973, 1971, 1, 0, 0, 0, 1974, 1977, 1, 0, 0, 0, 1975, 1973, 1, 0, 0, 0, 1975, 1976, 1, 0, 0, 0, 1976, 391, 1, 0, 0, 0, 1977, 1975, 1, 0, 0, 0, 1978, 1980, 5, 140, 0, 0, 1979, 1981, 3, 396, 198, 0, 1980, 1979, 1, 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 1982, 1, 0, 0, 0, 1982, 1983, 5, 143, 0, 0, 1983, 393, 1, 0, 0, 0, 1984, 1986, 3, 388, 194, 0, 1985, 1984, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 1985, 1, 0, 0, 0, 1987, 1988, 1, 0, 0, 0, 1988, 395, 1, 0, 0, 0, 1989, 1991, 3, 398, 199, 0, 1990, 1989, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1990, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 397, 1, 0, 0, 0, 1994, 1996, 5, 140, 0, 0, 1995, 1997, 3, 396, 198, 0, 1996, 1995, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 2015, 5, 143, 0, 0, 1999, 2001, 5, 141, 0, 0, 2000, 2002, 3, 396, 198, 0, 2001, 2000, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2015, 5, 144, 0, 0, 2004, 2006, 5, 139, 0, 0, 2005, 2007, 3, 396, 198, 0, 2006, 2005, 1, 0, 0, 0, 2006, 2007, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2015, 5, 142, 0, 0, 2009, 2015, 3, 566, 283, 0, 2010, 2015, 3, 570, 285, 0, 2011, 2015, 3, 610, 305, 0, 2012, 2015, 3, 596, 298, 0, 2013, 2015, 3, 400, 200, 0, 2014, 1994, 1, 0, 0, 0, 2014, 1999, 1, 0, 0, 0, 2014, 2004, 1, 0, 0, 0, 2014, 2009, 1, 0, 0, 0, 2014, 2010, 1, 0, 0, 0, 2014, 2011, 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2014, 2013, 1, 0, 0, 0, 2015, 399, 1, 0, 0, 0, 2016, 2023, 7, 15, 0, 0, 2017, 2023, 3, 584, 292, 0, 2018, 2019, 4, 200, 3, 0, 2019, 2023, 5, 154, 0, 0, 2020, 2021, 4, 200, 4, 0, 2021, 2023, 5, 151, 0, 0, 2022, 2016, 1, 0, 0, 0, 2022, 2017, 1, 0, 0, 0, 2022, 2018, 1, 0, 0, 0, 2022, 2020, 1, 0, 0, 0, 2023, 401, 1, 0, 0, 0, 2024, 2026, 3, 410, 205, 0, 2025, 2024, 1, 0, 0, 0, 2025, 2026, 1, 0, 0, 0, 2026, 2027, 1, 0, 0, 0, 2027, 2029, 3, 406, 203, 0, 2028, 2030, 3, 414, 207, 0, 2029, 2028, 1, 0, 0, 0, 2029, 2030, 1, 0, 0, 0, 2030, 403, 1, 0, 0, 0, 2031, 2036, 3, 402, 201, 0, 2032, 2033, 5, 145, 0, 0, 2033, 2035, 3, 402, 201, 0, 2034, 2032, 1, 0, 0, 0, 2035, 2038, 1, 0, 0, 0, 2036, 2034, 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 405, 1, 0, 0, 0, 2038, 2036, 1, 0, 0, 0, 2039, 2041, 3, 592, 296, 0, 2040, 2039, 1, 0, 0, 0, 2040, 2041, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2045, 3, 490, 245, 0, 2043, 2045, 3, 408, 204, 0, 2044, 2040, 1, 0, 0, 0, 2044, 2043, 1, 0, 0, 0, 2045, 407, 1, 0, 0, 0, 2046, 2047, 5, 154, 0, 0, 2047, 2048, 3, 566, 283, 0, 2048, 409, 1, 0, 0, 0, 2049, 2051, 5, 81, 0, 0, 2050, 2052, 7, 9, 0, 0, 2051, 2050, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 411, 1, 0, 0, 0, 2053, 2054, 3, 590, 295, 0, 2054, 2055, 3, 406, 203, 0, 2055, 2067, 1, 0, 0, 0, 2056, 2059, 3, 572, 286, 0, 2057, 2059, 3, 416, 208, 0, 2058, 2056, 1, 0, 0, 0, 2058, 2057, 1, 0, 0, 0, 2059, 2061, 1, 0, 0, 0, 2060, 2062, 3, 410, 205, 0, 2061, 2060, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2063, 1, 0, 0, 0, 2063, 2064, 3, 406, 203, 0, 2064, 2067, 1, 0, 0, 0, 2065, 2067, 3, 418, 209, 0, 2066, 2053, 1, 0, 0, 0, 2066, 2058, 1, 0, 0, 0, 2066, 2065, 1, 0, 0, 0, 2067, 413, 1, 0, 0, 0, 2068, 2070, 3, 412, 206, 0, 2069, 2068, 1, 0, 0, 0, 2070, 2071, 1, 0, 0, 0, 2071, 2069, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 415, 1, 0, 0, 0, 2073, 2074, 5, 152, 0, 0, 2074, 2075, 3, 402, 201, 0, 2075, 2076, 5, 146, 0, 0, 2076, 417, 1, 0, 0, 0, 2077, 2083, 5, 80, 0, 0, 2078, 2080, 5, 1, 0, 0, 2079, 2081, 7, 9, 0, 0, 2080, 2079, 1, 0, 0, 0, 2080, 2081, 1, 0, 0, 0, 2081, 2083, 1, 0, 0, 0, 2082, 2077, 1, 0, 0, 0, 2082, 2078, 1, 0, 0, 0, 2083, 2084, 1, 0, 0, 0, 2084, 2085, 3, 522, 261, 0, 2085, 419, 1, 0, 0, 0, 2086, 2088, 3, 422, 211, 0, 2087, 2089, 3, 150, 75, 0, 2088, 2087, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2105, 1, 0, 0, 0, 2090, 2105, 3, 548, 274, 0, 2091, 2105, 3, 550, 275, 0, 2092, 2105, 3, 424, 212, 0, 2093, 2105, 3, 440, 220, 0, 2094, 2105, 3, 442, 221, 0, 2095, 2105, 3, 444, 222, 0, 2096, 2105, 3, 464, 232, 0, 2097, 2105, 3, 466, 233, 0, 2098, 2105, 3, 468, 234, 0, 2099, 2105, 3, 462, 231, 0, 2100, 2105, 3, 474, 237, 0, 2101, 2105, 3, 476, 238, 0, 2102, 2105, 3, 486, 243, 0, 2103, 2105, 3, 488, 244, 0, 2104, 2086, 1, 0, 0, 0, 2104, 2090, 1, 0, 0, 0, 2104, 2091, 1, 0, 0, 0, 2104, 2092, 1, 0, 0, 0, 2104, 2093, 1, 0, 0, 0, 2104, 2094, 1, 0, 0, 0, 2104, 2095, 1, 0, 0, 0, 2104, 2096, 1, 0, 0, 0, 2104, 2097, 1, 0, 0, 0, 2104, 2098, 1, 0, 0, 0, 2104, 2099, 1, 0, 0, 0, 2104, 2100, 1, 0, 0, 0, 2104, 2101, 1, 0, 0, 0, 2104, 2102, 1, 0, 0, 0, 2104, 2103, 1, 0, 0, 0, 2105, 421, 1, 0, 0, 0, 2106, 2111, 3, 566, 283, 0, 2107, 2108, 5, 140, 0, 0, 2108, 2109, 3, 518, 259, 0, 2109, 2110, 5, 143, 0, 0, 2110, 2112, 1, 0, 0, 0, 2111, 2107, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 423, 1, 0, 0, 0, 2113, 2125, 3, 610, 305, 0, 2114, 2125, 3, 426, 213, 0, 2115, 2125, 3, 432, 216, 0, 2116, 2125, 3, 438, 219, 0, 2117, 2125, 5, 123, 0, 0, 2118, 2125, 5, 124, 0, 0, 2119, 2125, 5, 125, 0, 0, 2120, 2125, 5, 126, 0, 0, 2121, 2125, 5, 127, 0, 0, 2122, 2125, 5, 128, 0, 0, 2123, 2125, 5, 129, 0, 0, 2124, 2113, 1, 0, 0, 0, 2124, 2114, 1, 0, 0, 0, 2124, 2115, 1, 0, 0, 0, 2124, 2116, 1, 0, 0, 0, 2124, 2117, 1, 0, 0, 0, 2124, 2118, 1, 0, 0, 0, 2124, 2119, 1, 0, 0, 0, 2124, 2120, 1, 0, 0, 0, 2124, 2121, 1, 0, 0, 0, 2124, 2122, 1, 0, 0, 0, 2124, 2123, 1, 0, 0, 0, 2125, 425, 1, 0, 0, 0, 2126, 2128, 5, 141, 0, 0, 2127, 2129, 3, 428, 214, 0, 2128, 2127, 1, 0, 0, 0, 2128, 2129, 1, 0, 0, 0, 2129, 2130, 1, 0, 0, 0, 2130, 2131, 5, 144, 0, 0, 2131, 427, 1, 0, 0, 0, 2132, 2137, 3, 430, 215, 0, 2133, 2134, 5, 145, 0, 0, 2134, 2136, 3, 430, 215, 0, 2135, 2133, 1, 0, 0, 0, 2136, 2139, 1, 0, 0, 0, 2137, 2135, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2141, 1, 0, 0, 0, 2139, 2137, 1, 0, 0, 0, 2140, 2142, 5, 145, 0, 0, 2141, 2140, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 429, 1, 0, 0, 0, 2143, 2144, 3, 402, 201, 0, 2144, 431, 1, 0, 0, 0, 2145, 2148, 5, 141, 0, 0, 2146, 2149, 3, 434, 217, 0, 2147, 2149, 5, 146, 0, 0, 2148, 2146, 1, 0, 0, 0, 2148, 2147, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2151, 5, 144, 0, 0, 2151, 433, 1, 0, 0, 0, 2152, 2157, 3, 436, 218, 0, 2153, 2154, 5, 145, 0, 0, 2154, 2156, 3, 436, 218, 0, 2155, 2153, 1, 0, 0, 0, 2156, 2159, 1, 0, 0, 0, 2157, 2155, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2161, 1, 0, 0, 0, 2159, 2157, 1, 0, 0, 0, 2160, 2162, 5, 145, 0, 0, 2161, 2160, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 435, 1, 0, 0, 0, 2163, 2164, 3, 402, 201, 0, 2164, 2165, 5, 146, 0, 0, 2165, 2166, 3, 402, 201, 0, 2166, 437, 1, 0, 0, 0, 2167, 2168, 5, 132, 0, 0, 2168, 2169, 5, 140, 0, 0, 2169, 2170, 5, 85, 0, 0, 2170, 2171, 5, 146, 0, 0, 2171, 2172, 3, 402, 201, 0, 2172, 2173, 5, 145, 0, 0, 2173, 2174, 5, 87, 0, 0, 2174, 2175, 5, 146, 0, 0, 2175, 2176, 3, 402, 201, 0, 2176, 2177, 5, 145, 0, 0, 2177, 2178, 5, 86, 0, 0, 2178, 2179, 5, 146, 0, 0, 2179, 2180, 3, 402, 201, 0, 2180, 2181, 5, 145, 0, 0, 2181, 2182, 5, 2, 0, 0, 2182, 2183, 5, 146, 0, 0, 2183, 2184, 3, 402, 201, 0, 2184, 2185, 5, 143, 0, 0, 2185, 2201, 1, 0, 0, 0, 2186, 2187, 5, 133, 0, 0, 2187, 2188, 5, 140, 0, 0, 2188, 2189, 5, 88, 0, 0, 2189, 2190, 5, 146, 0, 0, 2190, 2191, 3, 402, 201, 0, 2191, 2192, 5, 143, 0, 0, 2192, 2201, 1, 0, 0, 0, 2193, 2194, 5, 134, 0, 0, 2194, 2195, 5, 140, 0, 0, 2195, 2196, 5, 88, 0, 0, 2196, 2197, 5, 146, 0, 0, 2197, 2198, 3, 402, 201, 0, 2198, 2199, 5, 143, 0, 0, 2199, 2201, 1, 0, 0, 0, 2200, 2167, 1, 0, 0, 0, 2200, 2186, 1, 0, 0, 0, 2200, 2193, 1, 0, 0, 0, 2201, 439, 1, 0, 0, 0, 2202, 2215, 5, 95, 0, 0, 2203, 2204, 5, 95, 0, 0, 2204, 2205, 5, 138, 0, 0, 2205, 2215, 3, 566, 283, 0, 2206, 2207, 5, 95, 0, 0, 2207, 2208, 5, 141, 0, 0, 2208, 2209, 3, 508, 254, 0, 2209, 2210, 5, 144, 0, 0, 2210, 2215, 1, 0, 0, 0, 2211, 2212, 5, 95, 0, 0, 2212, 2213, 5, 138, 0, 0, 2213, 2215, 5, 42, 0, 0, 2214, 2202, 1, 0, 0, 0, 2214, 2203, 1, 0, 0, 0, 2214, 2206, 1, 0, 0, 0, 2214, 2211, 1, 0, 0, 0, 2215, 441, 1, 0, 0, 0, 2216, 2217, 5, 82, 0, 0, 2217, 2218, 5, 138, 0, 0, 2218, 2228, 3, 566, 283, 0, 2219, 2220, 5, 82, 0, 0, 2220, 2221, 5, 141, 0, 0, 2221, 2222, 3, 508, 254, 0, 2222, 2223, 5, 144, 0, 0, 2223, 2228, 1, 0, 0, 0, 2224, 2225, 5, 82, 0, 0, 2225, 2226, 5, 138, 0, 0, 2226, 2228, 5, 42, 0, 0, 2227, 2216, 1, 0, 0, 0, 2227, 2219, 1, 0, 0, 0, 2227, 2224, 1, 0, 0, 0, 2228, 443, 1, 0, 0, 0, 2229, 2231, 5, 139, 0, 0, 2230, 2232, 3, 446, 223, 0, 2231, 2230, 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2234, 1, 0, 0, 0, 2233, 2235, 3, 4, 2, 0, 2234, 2233, 1, 0, 0, 0, 2234, 2235, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 2237, 5, 142, 0, 0, 2237, 445, 1, 0, 0, 0, 2238, 2240, 3, 454, 227, 0, 2239, 2238, 1, 0, 0, 0, 2239, 2240, 1, 0, 0, 0, 2240, 2241, 1, 0, 0, 0, 2241, 2243, 3, 448, 224, 0, 2242, 2244, 5, 39, 0, 0, 2243, 2242, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2246, 1, 0, 0, 0, 2245, 2247, 3, 220, 110, 0, 2246, 2245, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2249, 5, 17, 0, 0, 2249, 2254, 1, 0, 0, 0, 2250, 2251, 3, 454, 227, 0, 2251, 2252, 5, 17, 0, 0, 2252, 2254, 1, 0, 0, 0, 2253, 2239, 1, 0, 0, 0, 2253, 2250, 1, 0, 0, 0, 2254, 447, 1, 0, 0, 0, 2255, 2257, 5, 140, 0, 0, 2256, 2258, 3, 450, 225, 0, 2257, 2256, 1, 0, 0, 0, 2257, 2258, 1, 0, 0, 0, 2258, 2259, 1, 0, 0, 0, 2259, 2262, 5, 143, 0, 0, 2260, 2262, 3, 568, 284, 0, 2261, 2255, 1, 0, 0, 0, 2261, 2260, 1, 0, 0, 0, 2262, 449, 1, 0, 0, 0, 2263, 2268, 3, 452, 226, 0, 2264, 2265, 5, 145, 0, 0, 2265, 2267, 3, 452, 226, 0, 2266, 2264, 1, 0, 0, 0, 2267, 2270, 1, 0, 0, 0, 2268, 2266, 1, 0, 0, 0, 2268, 2269, 1, 0, 0, 0, 2269, 451, 1, 0, 0, 0, 2270, 2268, 1, 0, 0, 0, 2271, 2276, 3, 566, 283, 0, 2272, 2274, 3, 524, 262, 0, 2273, 2275, 3, 586, 293, 0, 2274, 2273, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2277, 1, 0, 0, 0, 2276, 2272, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 453, 1, 0, 0, 0, 2278, 2279, 5, 141, 0, 0, 2279, 2280, 3, 456, 228, 0, 2280, 2281, 5, 144, 0, 0, 2281, 455, 1, 0, 0, 0, 2282, 2287, 3, 458, 229, 0, 2283, 2284, 5, 145, 0, 0, 2284, 2286, 3, 458, 229, 0, 2285, 2283, 1, 0, 0, 0, 2286, 2289, 1, 0, 0, 0, 2287, 2285, 1, 0, 0, 0, 2287, 2288, 1, 0, 0, 0, 2288, 457, 1, 0, 0, 0, 2289, 2287, 1, 0, 0, 0, 2290, 2292, 3, 460, 230, 0, 2291, 2290, 1, 0, 0, 0, 2291, 2292, 1, 0, 0, 0, 2292, 2300, 1, 0, 0, 0, 2293, 2295, 3, 566, 283, 0, 2294, 2296, 5, 156, 0, 0, 2295, 2294, 1, 0, 0, 0, 2295, 2296, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 2298, 3, 402, 201, 0, 2298, 2301, 1, 0, 0, 0, 2299, 2301, 3, 440, 220, 0, 2300, 2293, 1, 0, 0, 0, 2300, 2299, 1, 0, 0, 0, 2301, 459, 1, 0, 0, 0, 2302, 2310, 5, 73, 0, 0, 2303, 2307, 5, 74, 0, 0, 2304, 2305, 5, 140, 0, 0, 2305, 2306, 7, 12, 0, 0, 2306, 2308, 5, 143, 0, 0, 2307, 2304, 1, 0, 0, 0, 2307, 2308, 1, 0, 0, 0, 2308, 2310, 1, 0, 0, 0, 2309, 2302, 1, 0, 0, 0, 2309, 2303, 1, 0, 0, 0, 2310, 461, 1, 0, 0, 0, 2311, 2314, 5, 138, 0, 0, 2312, 2315, 3, 566, 283, 0, 2313, 2315, 3, 570, 285, 0, 2314, 2312, 1, 0, 0, 0, 2314, 2313, 1, 0, 0, 0, 2315, 2318, 1, 0, 0, 0, 2316, 2317, 5, 138, 0, 0, 2317, 2319, 3, 490, 245, 0, 2318, 2316, 1, 0, 0, 0, 2318, 2319, 1, 0, 0, 0, 2319, 463, 1, 0, 0, 0, 2320, 2321, 5, 140, 0, 0, 2321, 2322, 3, 596, 298, 0, 2322, 2323, 5, 143, 0, 0, 2323, 465, 1, 0, 0, 0, 2324, 2325, 5, 140, 0, 0, 2325, 2326, 3, 402, 201, 0, 2326, 2327, 5, 143, 0, 0, 2327, 467, 1, 0, 0, 0, 2328, 2329, 5, 140, 0, 0, 2329, 2337, 5, 143, 0, 0, 2330, 2331, 5, 140, 0, 0, 2331, 2332, 3, 472, 236, 0, 2332, 2333, 5, 145, 0, 0, 2333, 2334, 3, 470, 235, 0, 2334, 2335, 5, 143, 0, 0, 2335, 2337, 1, 0, 0, 0, 2336, 2328, 1, 0, 0, 0, 2336, 2330, 1, 0, 0, 0, 2337, 469, 1, 0, 0, 0, 2338, 2343, 3, 472, 236, 0, 2339, 2340, 5, 145, 0, 0, 2340, 2342, 3, 472, 236, 0, 2341, 2339, 1, 0, 0, 0, 2342, 2345, 1, 0, 0, 0, 2343, 2341, 1, 0, 0, 0, 2343, 2344, 1, 0, 0, 0, 2344, 471, 1, 0, 0, 0, 2345, 2343, 1, 0, 0, 0, 2346, 2347, 3, 566, 283, 0, 2347, 2348, 5, 146, 0, 0, 2348, 2350, 1, 0, 0, 0, 2349, 2346, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2351, 1, 0, 0, 0, 2351, 2352, 3, 402, 201, 0, 2352, 473, 1, 0, 0, 0, 2353, 2354, 5, 150, 0, 0, 2354, 475, 1, 0, 0, 0, 2355, 2357, 5, 167, 0, 0, 2356, 2358, 3, 522, 261, 0, 2357, 2356, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2359, 1, 0, 0, 0, 2359, 2360, 5, 138, 0, 0, 2360, 2361, 3, 478, 239, 0, 2361, 477, 1, 0, 0, 0, 2362, 2367, 3, 480, 240, 0, 2363, 2364, 5, 138, 0, 0, 2364, 2366, 3, 480, 240, 0, 2365, 2363, 1, 0, 0, 0, 2366, 2369, 1, 0, 0, 0, 2367, 2365, 1, 0, 0, 0, 2367, 2368, 1, 0, 0, 0, 2368, 479, 1, 0, 0, 0, 2369, 2367, 1, 0, 0, 0, 2370, 2372, 3, 566, 283, 0, 2371, 2373, 3, 482, 241, 0, 2372, 2371, 1, 0, 0, 0, 2372, 2373, 1, 0, 0, 0, 2373, 2376, 1, 0, 0, 0, 2374, 2376, 3, 482, 241, 0, 2375, 2370, 1, 0, 0, 0, 2375, 2374, 1, 0, 0, 0, 2376, 481, 1, 0, 0, 0, 2377, 2379, 3, 484, 242, 0, 2378, 2377, 1, 0, 0, 0, 2379, 2380, 1, 0, 0, 0, 2380, 2378, 1, 0, 0, 0, 2380, 2381, 1, 0, 0, 0, 2381, 483, 1, 0, 0, 0, 2382, 2390, 5, 152, 0, 0, 2383, 2390, 5, 151, 0, 0, 2384, 2390, 5, 95, 0, 0, 2385, 2386, 5, 141, 0, 0, 2386, 2387, 3, 508, 254, 0, 2387, 2388, 5, 144, 0, 0, 2388, 2390, 1, 0, 0, 0, 2389, 2382, 1, 0, 0, 0, 2389, 2383, 1, 0, 0, 0, 2389, 2384, 1, 0, 0, 0, 2389, 2385, 1, 0, 0, 0, 2390, 485, 1, 0, 0, 0, 2391, 2392, 5, 130, 0, 0, 2392, 2395, 5, 140, 0, 0, 2393, 2394, 7, 16, 0, 0, 2394, 2396, 5, 146, 0, 0, 2395, 2393, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2398, 3, 402, 201, 0, 2398, 2399, 5, 143, 0, 0, 2399, 487, 1, 0, 0, 0, 2400, 2401, 5, 131, 0, 0, 2401, 2402, 5, 140, 0, 0, 2402, 2403, 3, 402, 201, 0, 2403, 2404, 5, 143, 0, 0, 2404, 489, 1, 0, 0, 0, 2405, 2415, 3, 420, 210, 0, 2406, 2414, 3, 492, 246, 0, 2407, 2414, 3, 494, 247, 0, 2408, 2414, 3, 496, 248, 0, 2409, 2414, 3, 498, 249, 0, 2410, 2414, 3, 500, 250, 0, 2411, 2414, 3, 502, 251, 0, 2412, 2414, 3, 504, 252, 0, 2413, 2406, 1, 0, 0, 0, 2413, 2407, 1, 0, 0, 0, 2413, 2408, 1, 0, 0, 0, 2413, 2409, 1, 0, 0, 0, 2413, 2410, 1, 0, 0, 0, 2413, 2411, 1, 0, 0, 0, 2413, 2412, 1, 0, 0, 0, 2414, 2417, 1, 0, 0, 0, 2415, 2413, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2421, 1, 0, 0, 0, 2417, 2415, 1, 0, 0, 0, 2418, 2420, 3, 594, 297, 0, 2419, 2418, 1, 0, 0, 0, 2420, 2423, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2422, 491, 1, 0, 0, 0, 2423, 2421, 1, 0, 0, 0, 2424, 2426, 3, 506, 253, 0, 2425, 2424, 1, 0, 0, 0, 2425, 2426, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2430, 3, 512, 256, 0, 2428, 2430, 3, 506, 253, 0, 2429, 2425, 1, 0, 0, 0, 2429, 2428, 1, 0, 0, 0, 2430, 493, 1, 0, 0, 0, 2431, 2432, 5, 138, 0, 0, 2432, 2437, 5, 42, 0, 0, 2433, 2434, 5, 140, 0, 0, 2434, 2435, 3, 518, 259, 0, 2435, 2436, 5, 143, 0, 0, 2436, 2438, 1, 0, 0, 0, 2437, 2433, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 495, 1, 0, 0, 0, 2439, 2449, 5, 138, 0, 0, 2440, 2450, 5, 172, 0, 0, 2441, 2447, 3, 566, 283, 0, 2442, 2448, 3, 150, 75, 0, 2443, 2444, 5, 140, 0, 0, 2444, 2445, 3, 518, 259, 0, 2445, 2446, 5, 143, 0, 0, 2446, 2448, 1, 0, 0, 0, 2447, 2442, 1, 0, 0, 0, 2447, 2443, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2450, 1, 0, 0, 0, 2449, 2440, 1, 0, 0, 0, 2449, 2441, 1, 0, 0, 0, 2450, 497, 1, 0, 0, 0, 2451, 2452, 5, 138, 0, 0, 2452, 2453, 5, 95, 0, 0, 2453, 499, 1, 0, 0, 0, 2454, 2455, 5, 141, 0, 0, 2455, 2456, 3, 508, 254, 0, 2456, 2457, 5, 144, 0, 0, 2457, 501, 1, 0, 0, 0, 2458, 2459, 4, 251, 5, 0, 2459, 2460, 5, 151, 0, 0, 2460, 503, 1, 0, 0, 0, 2461, 2462, 4, 252, 6, 0, 2462, 2463, 5, 152, 0, 0, 2463, 505, 1, 0, 0, 0, 2464, 2466, 5, 140, 0, 0, 2465, 2467, 3, 508, 254, 0, 2466, 2465, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 2468, 1, 0, 0, 0, 2468, 2469, 5, 143, 0, 0, 2469, 507, 1, 0, 0, 0, 2470, 2475, 3, 510, 255, 0, 2471, 2472, 5, 145, 0, 0, 2472, 2474, 3, 510, 255, 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, 509, 1, 0, 0, 0, 2477, 2475, 1, 0, 0, 0, 2478, 2480, 3, 520, 260, 0, 2479, 2478, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2484, 1, 0, 0, 0, 2481, 2485, 3, 566, 283, 0, 2482, 2485, 3, 402, 201, 0, 2483, 2485, 3, 596, 298, 0, 2484, 2481, 1, 0, 0, 0, 2484, 2482, 1, 0, 0, 0, 2484, 2483, 1, 0, 0, 0, 2485, 511, 1, 0, 0, 0, 2486, 2488, 3, 444, 222, 0, 2487, 2489, 3, 514, 257, 0, 2488, 2487, 1, 0, 0, 0, 2488, 2489, 1, 0, 0, 0, 2489, 513, 1, 0, 0, 0, 2490, 2492, 3, 516, 258, 0, 2491, 2490, 1, 0, 0, 0, 2492, 2493, 1, 0, 0, 0, 2493, 2491, 1, 0, 0, 0, 2493, 2494, 1, 0, 0, 0, 2494, 515, 1, 0, 0, 0, 2495, 2496, 3, 566, 283, 0, 2496, 2497, 5, 146, 0, 0, 2497, 2498, 3, 444, 222, 0, 2498, 517, 1, 0, 0, 0, 2499, 2501, 3, 520, 260, 0, 2500, 2499, 1, 0, 0, 0, 2501, 2502, 1, 0, 0, 0, 2502, 2500, 1, 0, 0, 0, 2502, 2503, 1, 0, 0, 0, 2503, 519, 1, 0, 0, 0, 2504, 2505, 3, 566, 283, 0, 2505, 2506, 5, 146, 0, 0, 2506, 521, 1, 0, 0, 0, 2507, 2508, 6, 261, -1, 0, 2508, 2522, 3, 538, 269, 0, 2509, 2522, 3, 548, 274, 0, 2510, 2522, 3, 550, 275, 0, 2511, 2522, 3, 552, 276, 0, 2512, 2522, 3, 526, 263, 0, 2513, 2522, 3, 530, 265, 0, 2514, 2522, 3, 556, 278, 0, 2515, 2522, 3, 558, 279, 0, 2516, 2522, 3, 560, 280, 0, 2517, 2518, 5, 140, 0, 0, 2518, 2519, 3, 522, 261, 0, 2519, 2520, 5, 143, 0, 0, 2520, 2522, 1, 0, 0, 0, 2521, 2507, 1, 0, 0, 0, 2521, 2509, 1, 0, 0, 0, 2521, 2510, 1, 0, 0, 0, 2521, 2511, 1, 0, 0, 0, 2521, 2512, 1, 0, 0, 0, 2521, 2513, 1, 0, 0, 0, 2521, 2514, 1, 0, 0, 0, 2521, 2515, 1, 0, 0, 0, 2521, 2516, 1, 0, 0, 0, 2521, 2517, 1, 0, 0, 0, 2522, 2536, 1, 0, 0, 0, 2523, 2532, 10, 4, 0, 0, 2524, 2525, 4, 261, 8, 0, 2525, 2533, 5, 152, 0, 0, 2526, 2527, 4, 261, 9, 0, 2527, 2533, 5, 151, 0, 0, 2528, 2529, 5, 138, 0, 0, 2529, 2533, 5, 93, 0, 0, 2530, 2531, 5, 138, 0, 0, 2531, 2533, 5, 29, 0, 0, 2532, 2524, 1, 0, 0, 0, 2532, 2526, 1, 0, 0, 0, 2532, 2528, 1, 0, 0, 0, 2532, 2530, 1, 0, 0, 0, 2533, 2535, 1, 0, 0, 0, 2534, 2523, 1, 0, 0, 0, 2535, 2538, 1, 0, 0, 0, 2536, 2534, 1, 0, 0, 0, 2536, 2537, 1, 0, 0, 0, 2537, 523, 1, 0, 0, 0, 2538, 2536, 1, 0, 0, 0, 2539, 2541, 5, 146, 0, 0, 2540, 2542, 3, 394, 197, 0, 2541, 2540, 1, 0, 0, 0, 2541, 2542, 1, 0, 0, 0, 2542, 2544, 1, 0, 0, 0, 2543, 2545, 5, 91, 0, 0, 2544, 2543, 1, 0, 0, 0, 2544, 2545, 1, 0, 0, 0, 2545, 2546, 1, 0, 0, 0, 2546, 2547, 3, 522, 261, 0, 2547, 525, 1, 0, 0, 0, 2548, 2550, 3, 528, 264, 0, 2549, 2551, 3, 150, 75, 0, 2550, 2549, 1, 0, 0, 0, 2550, 2551, 1, 0, 0, 0, 2551, 2554, 1, 0, 0, 0, 2552, 2553, 5, 138, 0, 0, 2553, 2555, 3, 526, 263, 0, 2554, 2552, 1, 0, 0, 0, 2554, 2555, 1, 0, 0, 0, 2555, 527, 1, 0, 0, 0, 2556, 2557, 3, 566, 283, 0, 2557, 529, 1, 0, 0, 0, 2558, 2560, 5, 140, 0, 0, 2559, 2561, 3, 532, 266, 0, 2560, 2559, 1, 0, 0, 0, 2560, 2561, 1, 0, 0, 0, 2561, 2562, 1, 0, 0, 0, 2562, 2563, 5, 143, 0, 0, 2563, 531, 1, 0, 0, 0, 2564, 2569, 3, 534, 267, 0, 2565, 2566, 5, 145, 0, 0, 2566, 2568, 3, 534, 267, 0, 2567, 2565, 1, 0, 0, 0, 2568, 2571, 1, 0, 0, 0, 2569, 2567, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 533, 1, 0, 0, 0, 2571, 2569, 1, 0, 0, 0, 2572, 2573, 3, 536, 268, 0, 2573, 2574, 3, 524, 262, 0, 2574, 2577, 1, 0, 0, 0, 2575, 2577, 3, 522, 261, 0, 2576, 2572, 1, 0, 0, 0, 2576, 2575, 1, 0, 0, 0, 2577, 2580, 1, 0, 0, 0, 2578, 2579, 5, 156, 0, 0, 2579, 2581, 3, 402, 201, 0, 2580, 2578, 1, 0, 0, 0, 2580, 2581, 1, 0, 0, 0, 2581, 535, 1, 0, 0, 0, 2582, 2584, 3, 566, 283, 0, 2583, 2582, 1, 0, 0, 0, 2584, 2585, 1, 0, 0, 0, 2585, 2583, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 537, 1, 0, 0, 0, 2587, 2589, 3, 394, 197, 0, 2588, 2587, 1, 0, 0, 0, 2588, 2589, 1, 0, 0, 0, 2589, 2590, 1, 0, 0, 0, 2590, 2592, 3, 540, 270, 0, 2591, 2593, 5, 39, 0, 0, 2592, 2591, 1, 0, 0, 0, 2592, 2593, 1, 0, 0, 0, 2593, 2594, 1, 0, 0, 0, 2594, 2595, 3, 584, 292, 0, 2595, 2596, 3, 522, 261, 0, 2596, 539, 1, 0, 0, 0, 2597, 2602, 5, 140, 0, 0, 2598, 2600, 3, 542, 271, 0, 2599, 2601, 3, 586, 293, 0, 2600, 2599, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2603, 1, 0, 0, 0, 2602, 2598, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2605, 5, 143, 0, 0, 2605, 541, 1, 0, 0, 0, 2606, 2611, 3, 544, 272, 0, 2607, 2608, 5, 145, 0, 0, 2608, 2610, 3, 544, 272, 0, 2609, 2607, 1, 0, 0, 0, 2610, 2613, 1, 0, 0, 0, 2611, 2609, 1, 0, 0, 0, 2611, 2612, 1, 0, 0, 0, 2612, 543, 1, 0, 0, 0, 2613, 2611, 1, 0, 0, 0, 2614, 2616, 3, 394, 197, 0, 2615, 2614, 1, 0, 0, 0, 2615, 2616, 1, 0, 0, 0, 2616, 2618, 1, 0, 0, 0, 2617, 2619, 5, 91, 0, 0, 2618, 2617, 1, 0, 0, 0, 2618, 2619, 1, 0, 0, 0, 2619, 2620, 1, 0, 0, 0, 2620, 2625, 3, 522, 261, 0, 2621, 2622, 3, 546, 273, 0, 2622, 2623, 3, 524, 262, 0, 2623, 2625, 1, 0, 0, 0, 2624, 2615, 1, 0, 0, 0, 2624, 2621, 1, 0, 0, 0, 2625, 545, 1, 0, 0, 0, 2626, 2628, 3, 566, 283, 0, 2627, 2626, 1, 0, 0, 0, 2628, 2629, 1, 0, 0, 0, 2629, 2627, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 547, 1, 0, 0, 0, 2631, 2632, 5, 141, 0, 0, 2632, 2633, 3, 522, 261, 0, 2633, 2634, 5, 144, 0, 0, 2634, 549, 1, 0, 0, 0, 2635, 2636, 5, 141, 0, 0, 2636, 2637, 3, 522, 261, 0, 2637, 2638, 5, 146, 0, 0, 2638, 2639, 3, 522, 261, 0, 2639, 2640, 5, 144, 0, 0, 2640, 551, 1, 0, 0, 0, 2641, 2646, 3, 526, 263, 0, 2642, 2643, 5, 154, 0, 0, 2643, 2645, 3, 526, 263, 0, 2644, 2642, 1, 0, 0, 0, 2645, 2648, 1, 0, 0, 0, 2646, 2644, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 2650, 1, 0, 0, 0, 2648, 2646, 1, 0, 0, 0, 2649, 2651, 3, 554, 277, 0, 2650, 2649, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 553, 1, 0, 0, 0, 2652, 2653, 4, 277, 10, 0, 2653, 2654, 5, 154, 0, 0, 2654, 555, 1, 0, 0, 0, 2655, 2656, 5, 92, 0, 0, 2656, 2657, 3, 522, 261, 0, 2657, 557, 1, 0, 0, 0, 2658, 2659, 5, 83, 0, 0, 2659, 559, 1, 0, 0, 0, 2660, 2661, 5, 96, 0, 0, 2661, 561, 1, 0, 0, 0, 2662, 2663, 5, 146, 0, 0, 2663, 2664, 3, 564, 282, 0, 2664, 563, 1, 0, 0, 0, 2665, 2670, 3, 526, 263, 0, 2666, 2667, 5, 145, 0, 0, 2667, 2669, 3, 526, 263, 0, 2668, 2666, 1, 0, 0, 0, 2669, 2672, 1, 0, 0, 0, 2670, 2668, 1, 0, 0, 0, 2670, 2671, 1, 0, 0, 0, 2671, 565, 1, 0, 0, 0, 2672, 2670, 1, 0, 0, 0, 2673, 2683, 7, 17, 0, 0, 2674, 2683, 5, 137, 0, 0, 2675, 2679, 5, 165, 0, 0, 2676, 2680, 3, 570, 285, 0, 2677, 2680, 5, 137, 0, 0, 2678, 2680, 5, 166, 0, 0, 2679, 2676, 1, 0, 0, 0, 2679, 2677, 1, 0, 0, 0, 2679, 2678, 1, 0, 0, 0, 2680, 2681, 1, 0, 0, 0, 2681, 2683, 5, 165, 0, 0, 2682, 2673, 1, 0, 0, 0, 2682, 2674, 1, 0, 0, 0, 2682, 2675, 1, 0, 0, 0, 2683, 567, 1, 0, 0, 0, 2684, 2689, 3, 566, 283, 0, 2685, 2686, 5, 145, 0, 0, 2686, 2688, 3, 566, 283, 0, 2687, 2685, 1, 0, 0, 0, 2688, 2691, 1, 0, 0, 0, 2689, 2687, 1, 0, 0, 0, 2689, 2690, 1, 0, 0, 0, 2690, 569, 1, 0, 0, 0, 2691, 2689, 1, 0, 0, 0, 2692, 2693, 7, 18, 0, 0, 2693, 571, 1, 0, 0, 0, 2694, 2695, 4, 286, 11, 0, 2695, 2696, 5, 156, 0, 0, 2696, 573, 1, 0, 0, 0, 2697, 2698, 4, 287, 12, 0, 2698, 2699, 5, 155, 0, 0, 2699, 575, 1, 0, 0, 0, 2700, 2701, 4, 288, 13, 0, 2701, 2702, 5, 154, 0, 0, 2702, 2703, 5, 154, 0, 0, 2703, 577, 1, 0, 0, 0, 2704, 2705, 4, 289, 14, 0, 2705, 2706, 5, 157, 0, 0, 2706, 2707, 5, 157, 0, 0, 2707, 579, 1, 0, 0, 0, 2708, 2709, 4, 290, 15, 0, 2709, 2710, 5, 149, 0, 0, 2710, 2711, 5, 156, 0, 0, 2711, 581, 1, 0, 0, 0, 2712, 2713, 4, 291, 16, 0, 2713, 2714, 5, 148, 0, 0, 2714, 583, 1, 0, 0, 0, 2715, 2716, 4, 292, 17, 0, 2716, 2717, 5, 155, 0, 0, 2717, 2718, 5, 149, 0, 0, 2718, 585, 1, 0, 0, 0, 2719, 2720, 4, 293, 18, 0, 2720, 2721, 5, 138, 0, 0, 2721, 2722, 5, 138, 0, 0, 2722, 2723, 5, 138, 0, 0, 2723, 587, 1, 0, 0, 0, 2724, 2725, 4, 294, 19, 0, 2725, 2726, 5, 156, 0, 0, 2726, 2727, 5, 156, 0, 0, 2727, 589, 1, 0, 0, 0, 2728, 2729, 4, 295, 20, 0, 2729, 2730, 3, 596, 298, 0, 2730, 591, 1, 0, 0, 0, 2731, 2732, 4, 296, 21, 0, 2732, 2733, 3, 596, 298, 0, 2733, 593, 1, 0, 0, 0, 2734, 2735, 4, 297, 22, 0, 2735, 2736, 3, 596, 298, 0, 2736, 595, 1, 0, 0, 0, 2737, 2739, 3, 598, 299, 0, 2738, 2740, 3, 602, 301, 0, 2739, 2738, 1, 0, 0, 0, 2739, 2740, 1, 0, 0, 0, 2740, 2745, 1, 0, 0, 0, 2741, 2742, 3, 604, 302, 0, 2742, 2743, 3, 608, 304, 0, 2743, 2745, 1, 0, 0, 0, 2744, 2737, 1, 0, 0, 0, 2744, 2741, 1, 0, 0, 0, 2745, 597, 1, 0, 0, 0, 2746, 2749, 7, 19, 0, 0, 2747, 2749, 5, 168, 0, 0, 2748, 2746, 1, 0, 0, 0, 2748, 2747, 1, 0, 0, 0, 2749, 599, 1, 0, 0, 0, 2750, 2753, 3, 598, 299, 0, 2751, 2753, 5, 169, 0, 0, 2752, 2750, 1, 0, 0, 0, 2752, 2751, 1, 0, 0, 0, 2753, 601, 1, 0, 0, 0, 2754, 2755, 4, 301, 23, 0, 2755, 2757, 3, 600, 300, 0, 2756, 2754, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2756, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 603, 1, 0, 0, 0, 2760, 2761, 5, 138, 0, 0, 2761, 605, 1, 0, 0, 0, 2762, 2765, 5, 138, 0, 0, 2763, 2765, 3, 600, 300, 0, 2764, 2762, 1, 0, 0, 0, 2764, 2763, 1, 0, 0, 0, 2765, 607, 1, 0, 0, 0, 2766, 2767, 4, 304, 24, 0, 2767, 2769, 3, 606, 303, 0, 2768, 2766, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2768, 1, 0, 0, 0, 2770, 2771, 1, 0, 0, 0, 2771, 609, 1, 0, 0, 0, 2772, 2777, 3, 612, 306, 0, 2773, 2777, 3, 620, 310, 0, 2774, 2777, 3, 614, 307, 0, 2775, 2777, 3, 616, 308, 0, 2776, 2772, 1, 0, 0, 0, 2776, 2773, 1, 0, 0, 0, 2776, 2774, 1, 0, 0, 0, 2776, 2775, 1, 0, 0, 0, 2777, 611, 1, 0, 0, 0, 2778, 2780, 3, 574, 287, 0, 2779, 2778, 1, 0, 0, 0, 2779, 2780, 1, 0, 0, 0, 2780, 2781, 1, 0, 0, 0, 2781, 2787, 3, 618, 309, 0, 2782, 2784, 3, 574, 287, 0, 2783, 2782, 1, 0, 0, 0, 2783, 2784, 1, 0, 0, 0, 2784, 2785, 1, 0, 0, 0, 2785, 2787, 5, 175, 0, 0, 2786, 2779, 1, 0, 0, 0, 2786, 2783, 1, 0, 0, 0, 2787, 613, 1, 0, 0, 0, 2788, 2789, 7, 20, 0, 0, 2789, 615, 1, 0, 0, 0, 2790, 2791, 5, 90, 0, 0, 2791, 617, 1, 0, 0, 0, 2792, 2793, 7, 21, 0, 0, 2793, 619, 1, 0, 0, 0, 2794, 2798, 3, 622, 311, 0, 2795, 2798, 3, 626, 313, 0, 2796, 2798, 3, 624, 312, 0, 2797, 2794, 1, 0, 0, 0, 2797, 2795, 1, 0, 0, 0, 2797, 2796, 1, 0, 0, 0, 2798, 621, 1, 0, 0, 0, 2799, 2801, 5, 180, 0, 0, 2800, 2802, 5, 193, 0, 0, 2801, 2800, 1, 0, 0, 0, 2802, 2803, 1, 0, 0, 0, 2803, 2801, 1, 0, 0, 0, 2803, 2804, 1, 0, 0, 0, 2804, 2805, 1, 0, 0, 0, 2805, 2814, 5, 192, 0, 0, 2806, 2808, 5, 181, 0, 0, 2807, 2809, 5, 191, 0, 0, 2808, 2807, 1, 0, 0, 0, 2809, 2810, 1, 0, 0, 0, 2810, 2808, 1, 0, 0, 0, 2810, 2811, 1, 0, 0, 0, 2811, 2812, 1, 0, 0, 0, 2812, 2814, 5, 190, 0, 0, 2813, 2799, 1, 0, 0, 0, 2813, 2806, 1, 0, 0, 0, 2814, 623, 1, 0, 0, 0, 2815, 2819, 5, 183, 0, 0, 2816, 2818, 5, 186, 0, 0, 2817, 2816, 1, 0, 0, 0, 2818, 2821, 1, 0, 0, 0, 2819, 2817, 1, 0, 0, 0, 2819, 2820, 1, 0, 0, 0, 2820, 2822, 1, 0, 0, 0, 2821, 2819, 1, 0, 0, 0, 2822, 2832, 5, 185, 0, 0, 2823, 2827, 5, 182, 0, 0, 2824, 2826, 5, 189, 0, 0, 2825, 2824, 1, 0, 0, 0, 2826, 2829, 1, 0, 0, 0, 2827, 2825, 1, 0, 0, 0, 2827, 2828, 1, 0, 0, 0, 2828, 2830, 1, 0, 0, 0, 2829, 2827, 1, 0, 0, 0, 2830, 2832, 5, 188, 0, 0, 2831, 2815, 1, 0, 0, 0, 2831, 2823, 1, 0, 0, 0, 2832, 625, 1, 0, 0, 0, 2833, 2847, 5, 183, 0, 0, 2834, 2846, 5, 186, 0, 0, 2835, 2841, 5, 184, 0, 0, 2836, 2842, 3, 402, 201, 0, 2837, 2838, 3, 472, 236, 0, 2838, 2839, 5, 145, 0, 0, 2839, 2840, 3, 470, 235, 0, 2840, 2842, 1, 0, 0, 0, 2841, 2836, 1, 0, 0, 0, 2841, 2837, 1, 0, 0, 0, 2842, 2843, 1, 0, 0, 0, 2843, 2844, 5, 143, 0, 0, 2844, 2846, 1, 0, 0, 0, 2845, 2834, 1, 0, 0, 0, 2845, 2835, 1, 0, 0, 0, 2846, 2849, 1, 0, 0, 0, 2847, 2845, 1, 0, 0, 0, 2847, 2848, 1, 0, 0, 0, 2848, 2850, 1, 0, 0, 0, 2849, 2847, 1, 0, 0, 0, 2850, 2870, 5, 185, 0, 0, 2851, 2865, 5, 182, 0, 0, 2852, 2864, 5, 189, 0, 0, 2853, 2859, 5, 187, 0, 0, 2854, 2860, 3, 402, 201, 0, 2855, 2856, 3, 472, 236, 0, 2856, 2857, 5, 145, 0, 0, 2857, 2858, 3, 470, 235, 0, 2858, 2860, 1, 0, 0, 0, 2859, 2854, 1, 0, 0, 0, 2859, 2855, 1, 0, 0, 0, 2860, 2861, 1, 0, 0, 0, 2861, 2862, 5, 143, 0, 0, 2862, 2864, 1, 0, 0, 0, 2863, 2852, 1, 0, 0, 0, 2863, 2853, 1, 0, 0, 0, 2864, 2867, 1, 0, 0, 0, 2865, 2863, 1, 0, 0, 0, 2865, 2866, 1, 0, 0, 0, 2866, 2868, 1, 0, 0, 0, 2867, 2865, 1, 0, 0, 0, 2868, 2870, 5, 188, 0, 0, 2869, 2833, 1, 0, 0, 0, 2869, 2851, 1, 0, 0, 0, 2870, 627, 1, 0, 0, 0, 357, 629, 641, 644, 647, 655, 660, 664, 670, 683, 690, 708, 714, 720, 731, 737, 741, 746, 749, 757, 762, 766, 770, 782, 785, 792, 796, 801, 805, 812, 824, 828, 832, 838, 849, 854, 858, 869, 874, 879, 883, 886, 893, 898, 903, 907, 919, 924, 930, 947, 962, 966, 971, 982, 997, 1022, 1029, 1038, 1040, 1051, 1058, 1060, 1070, 1075, 1081, 1087, 1098, 1118, 1121, 1126, 1129, 1133, 1138, 1142, 1153, 1158, 1161, 1164, 1174, 1179, 1193, 1196, 1198, 1201, 1204, 1207, 1216, 1221, 1226, 1229, 1232, 1236, 1239, 1242, 1246, 1249, 1258, 1263, 1268, 1271, 1276, 1279, 1286, 1290, 1292, 1297, 1301, 1306, 1310, 1315, 1318, 1323, 1335, 1339, 1342, 1345, 1348, 1354, 1358, 1361, 1364, 1368, 1376, 1385, 1389, 1392, 1397, 1400, 1410, 1413, 1417, 1420, 1425, 1428, 1431, 1435, 1442, 1447, 1450, 1453, 1463, 1473, 1475, 1484, 1488, 1497, 1502, 1505, 1515, 1520, 1528, 1531, 1534, 1539, 1542, 1545, 1558, 1563, 1566, 1569, 1572, 1576, 1578, 1583, 1586, 1589, 1602, 1607, 1610, 1613, 1620, 1623, 1636, 1641, 1649, 1659, 1663, 1667, 1671, 1674, 1677, 1682, 1687, 1690, 1695, 1698, 1701, 1705, 1709, 1712, 1717, 1720, 1724, 1729, 1735, 1738, 1743, 1746, 1757, 1762, 1767, 1772, 1775, 1778, 1782, 1788, 1795, 1809, 1818, 1825, 1830, 1849, 1857, 1876, 1881, 1886, 1892, 1900, 1903, 1911, 1918, 1929, 1933, 1942, 1948, 1953, 1958, 1968, 1975, 1980, 1987, 1992, 1996, 2001, 2006, 2014, 2022, 2025, 2029, 2036, 2040, 2044, 2051, 2058, 2061, 2066, 2071, 2080, 2082, 2088, 2104, 2111, 2124, 2128, 2137, 2141, 2148, 2157, 2161, 2200, 2214, 2227, 2231, 2234, 2239, 2243, 2246, 2253, 2257, 2261, 2268, 2274, 2276, 2287, 2291, 2295, 2300, 2307, 2309, 2314, 2318, 2336, 2343, 2349, 2357, 2367, 2372, 2375, 2380, 2389, 2395, 2413, 2415, 2421, 2425, 2429, 2437, 2447, 2449, 2466, 2475, 2479, 2484, 2488, 2493, 2502, 2521, 2532, 2536, 2541, 2544, 2550, 2554, 2560, 2569, 2576, 2580, 2585, 2588, 2592, 2600, 2602, 2611, 2615, 2618, 2624, 2629, 2646, 2650, 2670, 2679, 2682, 2689, 2739, 2744, 2748, 2752, 2758, 2764, 2770, 2776, 2779, 2783, 2786, 2797, 2803, 2810, 2813, 2819, 2827, 2831, 2841, 2845, 2847, 2859, 2863, 2865, 2869] \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Parser.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Parser.java new file mode 100644 index 00000000..abf3bafa --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Parser.java @@ -0,0 +1,25561 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +// Generated from Swift5Parser.g4 by ANTLR 4.10 +package io.ecocode.ios.swift.antlr.generated; + +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; + +import java.util.List; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class Swift5Parser extends Parser { + static { RuntimeMetaData.checkVersion("4.10", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + AS=1, ALPHA=2, BREAK=3, CASE=4, CATCH=5, CLASS=6, CONTINUE=7, DEFAULT=8, + DEFER=9, DO=10, GUARD=11, ELSE=12, ENUM=13, FOR=14, FALLTHROUGH=15, FUNC=16, + IN=17, IF=18, IMPORT=19, INTERNAL=20, FINAL=21, OPEN=22, PRIVATE=23, PUBLIC=24, + WHERE=25, WHILE=26, LET=27, VAR=28, PROTOCOL=29, GET=30, SET=31, WILL_SET=32, + DID_SET=33, REPEAT=34, SWITCH=35, STRUCT=36, RETURN=37, THROW=38, THROWS=39, + RETHROWS=40, INDIRECT=41, INIT=42, DEINIT=43, ASSOCIATED_TYPE=44, EXTENSION=45, + SUBSCRIPT=46, PREFIX=47, INFIX=48, LEFT=49, RIGHT=50, NONE=51, PRECEDENCE_GROUP=52, + HIGHER_THAN=53, LOWER_THAN=54, ASSIGNMENT=55, ASSOCIATIVITY=56, POSTFIX=57, + OPERATOR=58, TYPEALIAS=59, OS=60, ARCH=61, SWIFT=62, COMPILER=63, CAN_IMPORT=64, + TARGET_ENVIRONMENT=65, CONVENIENCE=66, DYNAMIC=67, LAZY=68, OPTIONAL=69, + OVERRIDE=70, REQUIRED=71, STATIC=72, WEAK=73, UNOWNED=74, SAFE=75, UNSAFE=76, + MUTATING=77, NONMUTATING=78, FILE_PRIVATE=79, IS=80, TRY=81, SUPER=82, + ANY=83, FALSE=84, RED=85, BLUE=86, GREEN=87, RESOURCE_NAME=88, TRUE=89, + NIL=90, INOUT=91, SOME=92, TYPE=93, PRECEDENCE=94, SELF=95, SELF_BIG=96, + MAC_OS=97, I_OS=98, OSX=99, WATCH_OS=100, TV_OS=101, LINUX=102, WINDOWS=103, + I386=104, X86_64=105, ARM=106, ARM64=107, SIMULATOR=108, MAC_CATALYST=109, + I_OS_APPLICATION_EXTENSION=110, MAC_CATALYST_APPLICATION_EXTENSION=111, + MAC_OS_APPLICATION_EXTENSION=112, SOURCE_LOCATION=113, FILE=114, LINE=115, + ERROR=116, WARNING=117, AVAILABLE=118, HASH_IF=119, HASH_ELSEIF=120, HASH_ELSE=121, + HASH_ENDIF=122, HASH_FILE=123, HASH_FILE_ID=124, HASH_FILE_PATH=125, HASH_LINE=126, + HASH_COLUMN=127, HASH_FUNCTION=128, HASH_DSO_HANDLE=129, HASH_SELECTOR=130, + HASH_KEYPATH=131, HASH_COLOR_LITERAL=132, HASH_FILE_LITERAL=133, HASH_IMAGE_LITERAL=134, + GETTER=135, SETTER=136, Identifier=137, DOT=138, LCURLY=139, LPAREN=140, + LBRACK=141, RCURLY=142, RPAREN=143, RBRACK=144, COMMA=145, COLON=146, + SEMI=147, LT=148, GT=149, UNDERSCORE=150, BANG=151, QUESTION=152, AT=153, + AND=154, SUB=155, EQUAL=156, OR=157, DIV=158, ADD=159, MUL=160, MOD=161, + CARET=162, TILDE=163, HASH=164, BACKTICK=165, DOLLAR=166, BACKSLASH=167, + Operator_head_other=168, Operator_following_character=169, Binary_literal=170, + Octal_literal=171, Decimal_digits=172, Decimal_literal=173, Hexadecimal_literal=174, + Floating_point_literal=175, WS=176, HASHBANG=177, Block_comment=178, Line_comment=179, + Multi_line_extended_string_open=180, Single_line_extended_string_open=181, + Multi_line_string_open=182, Single_line_string_open=183, Interpolataion_single_line=184, + Single_line_string_close=185, Quoted_single_line_text=186, Interpolataion_multi_line=187, + Multi_line_string_close=188, Quoted_multi_line_text=189, Single_line_extended_string_close=190, + Quoted_single_line_extended_text=191, Multi_line_extended_string_close=192, + Quoted_multi_line_extended_text=193; + public static final int + RULE_top_level = 0, RULE_statement = 1, RULE_statements = 2, RULE_loop_statement = 3, + RULE_for_in_statement = 4, RULE_while_statement = 5, RULE_condition_list = 6, + RULE_condition = 7, RULE_case_condition = 8, RULE_optional_binding_condition = 9, + RULE_repeat_while_statement = 10, RULE_branch_statement = 11, RULE_if_statement = 12, + RULE_else_clause = 13, RULE_guard_statement = 14, RULE_switch_statement = 15, + RULE_switch_cases = 16, RULE_switch_case = 17, RULE_case_label = 18, RULE_case_item_list = 19, + RULE_default_label = 20, RULE_where_clause = 21, RULE_where_expression = 22, + RULE_conditional_switch_case = 23, RULE_switch_if_directive_clause = 24, + RULE_switch_elseif_directive_clauses = 25, RULE_switch_elseif_directive_clause = 26, + RULE_switch_else_directive_clause = 27, RULE_labeled_statement = 28, RULE_statement_label = 29, + RULE_label_name = 30, RULE_control_transfer_statement = 31, RULE_break_statement = 32, + RULE_continue_statement = 33, RULE_fallthrough_statement = 34, RULE_return_statement = 35, + RULE_throw_statement = 36, RULE_defer_statement = 37, RULE_do_statement = 38, + RULE_catch_clauses = 39, RULE_catch_clause = 40, RULE_catch_pattern_list = 41, + RULE_catch_pattern = 42, RULE_compiler_control_statement = 43, RULE_conditional_compilation_block = 44, + RULE_if_directive_clause = 45, RULE_elseif_directive_clauses = 46, RULE_elseif_directive_clause = 47, + RULE_else_directive_clause = 48, RULE_compilation_condition = 49, RULE_platform_condition = 50, + RULE_swift_version = 51, RULE_swift_version_continuation = 52, RULE_operating_system = 53, + RULE_architecture = 54, RULE_module_name = 55, RULE_environment = 56, + RULE_line_control_statement = 57, RULE_line_number = 58, RULE_file_name = 59, + RULE_diagnostic_statement = 60, RULE_diagnostic_message = 61, RULE_availability_condition = 62, + RULE_availability_arguments = 63, RULE_availability_argument = 64, RULE_platform_name = 65, + RULE_platform_version = 66, RULE_generic_parameter_clause = 67, RULE_generic_parameter_list = 68, + RULE_generic_parameter = 69, RULE_generic_where_clause = 70, RULE_requirement_list = 71, + RULE_requirement = 72, RULE_conformance_requirement = 73, RULE_same_type_requirement = 74, + RULE_generic_argument_clause = 75, RULE_generic_argument_list = 76, RULE_generic_argument = 77, + RULE_declaration = 78, RULE_declarations = 79, RULE_top_level_declaration = 80, + RULE_code_block = 81, RULE_import_declaration = 82, RULE_import_kind = 83, + RULE_import_path = 84, RULE_import_path_identifier = 85, RULE_constant_declaration = 86, + RULE_pattern_initializer_list = 87, RULE_pattern_initializer = 88, RULE_initializer = 89, + RULE_variable_declaration = 90, RULE_variable_declaration_head = 91, RULE_variable_name = 92, + RULE_getter_setter_block = 93, RULE_getter_clause = 94, RULE_setter_clause = 95, + RULE_setter_name = 96, RULE_getter_setter_keyword_block = 97, RULE_getter_keyword_clause = 98, + RULE_setter_keyword_clause = 99, RULE_willSet_didSet_block = 100, RULE_willSet_clause = 101, + RULE_didSet_clause = 102, RULE_typealias_declaration = 103, RULE_typealias_name = 104, + RULE_typealias_assignment = 105, RULE_function_declaration = 106, RULE_function_head = 107, + RULE_function_name = 108, RULE_function_signature = 109, RULE_function_result = 110, + RULE_function_body = 111, RULE_parameter_clause = 112, RULE_parameter_list = 113, + RULE_parameter = 114, RULE_external_parameter_name = 115, RULE_local_parameter_name = 116, + RULE_default_argument_clause = 117, RULE_enum_declaration = 118, RULE_union_style_enum = 119, + RULE_union_style_enum_members = 120, RULE_union_style_enum_member = 121, + RULE_union_style_enum_case_clause = 122, RULE_union_style_enum_case_list = 123, + RULE_union_style_enum_case = 124, RULE_enum_name = 125, RULE_enum_case_name = 126, + RULE_raw_value_style_enum = 127, RULE_raw_value_style_enum_members = 128, + RULE_raw_value_style_enum_member = 129, RULE_raw_value_style_enum_case_clause = 130, + RULE_raw_value_style_enum_case_list = 131, RULE_raw_value_style_enum_case = 132, + RULE_raw_value_assignment = 133, RULE_raw_value_literal = 134, RULE_struct_declaration = 135, + RULE_struct_name = 136, RULE_struct_body = 137, RULE_struct_members = 138, + RULE_struct_member = 139, RULE_class_declaration = 140, RULE_class_name = 141, + RULE_class_body = 142, RULE_class_members = 143, RULE_class_member = 144, + RULE_protocol_declaration = 145, RULE_protocol_name = 146, RULE_protocol_body = 147, + RULE_protocol_members = 148, RULE_protocol_member = 149, RULE_protocol_member_declaration = 150, + RULE_protocol_property_declaration = 151, RULE_protocol_method_declaration = 152, + RULE_protocol_initializer_declaration = 153, RULE_protocol_subscript_declaration = 154, + RULE_protocol_associated_type_declaration = 155, RULE_initializer_declaration = 156, + RULE_initializer_head = 157, RULE_initializer_body = 158, RULE_deinitializer_declaration = 159, + RULE_extension_declaration = 160, RULE_extension_body = 161, RULE_extension_members = 162, + RULE_extension_member = 163, RULE_subscript_declaration = 164, RULE_subscript_head = 165, + RULE_subscript_result = 166, RULE_operator_declaration = 167, RULE_prefix_operator_declaration = 168, + RULE_postfix_operator_declaration = 169, RULE_infix_operator_declaration = 170, + RULE_infix_operator_group = 171, RULE_precedence_group_declaration = 172, + RULE_precedence_group_attributes = 173, RULE_precedence_group_attribute = 174, + RULE_precedence_group_relation = 175, RULE_precedence_group_assignment = 176, + RULE_precedence_group_associativity = 177, RULE_precedence_group_names = 178, + RULE_precedence_group_name = 179, RULE_declaration_modifier = 180, RULE_declaration_modifiers = 181, + RULE_access_level_modifier = 182, RULE_mutation_modifier = 183, RULE_pattern = 184, + RULE_wildcard_pattern = 185, RULE_identifier_pattern = 186, RULE_value_binding_pattern = 187, + RULE_tuple_pattern = 188, RULE_tuple_pattern_element_list = 189, RULE_tuple_pattern_element = 190, + RULE_enum_case_pattern = 191, RULE_optional_pattern = 192, RULE_expression_pattern = 193, + RULE_attribute = 194, RULE_attribute_name = 195, RULE_attribute_argument_clause = 196, + RULE_attributes = 197, RULE_balanced_tokens = 198, RULE_balanced_token = 199, + RULE_balanced_token_punctuation = 200, RULE_expression = 201, RULE_expression_list = 202, + RULE_prefix_expression = 203, RULE_in_out_expression = 204, RULE_try_operator = 205, + RULE_binary_expression = 206, RULE_binary_expressions = 207, RULE_conditional_operator = 208, + RULE_type_casting_operator = 209, RULE_primary_expression = 210, RULE_unqualified_name = 211, + RULE_literal_expression = 212, RULE_array_literal = 213, RULE_array_literal_items = 214, + RULE_array_literal_item = 215, RULE_dictionary_literal = 216, RULE_dictionary_literal_items = 217, + RULE_dictionary_literal_item = 218, RULE_playground_literal = 219, RULE_self_expression = 220, + RULE_superclass_expression = 221, RULE_closure_expression = 222, RULE_closure_signature = 223, + RULE_closure_parameter_clause = 224, RULE_closure_parameter_list = 225, + RULE_closure_parameter = 226, RULE_capture_list = 227, RULE_capture_list_items = 228, + RULE_capture_list_item = 229, RULE_capture_specifier = 230, RULE_implicit_member_expression = 231, + RULE_parenthesized_operator = 232, RULE_parenthesized_expression = 233, + RULE_tuple_expression = 234, RULE_tuple_element_list = 235, RULE_tuple_element = 236, + RULE_wildcard_expression = 237, RULE_key_path_expression = 238, RULE_key_path_components = 239, + RULE_key_path_component = 240, RULE_key_path_postfixes = 241, RULE_key_path_postfix = 242, + RULE_selector_expression = 243, RULE_key_path_string_expression = 244, + RULE_postfix_expression = 245, RULE_function_call_suffix = 246, RULE_initializer_suffix = 247, + RULE_explicit_member_suffix = 248, RULE_postfix_self_suffix = 249, RULE_subscript_suffix = 250, + RULE_forced_value_suffix = 251, RULE_optional_chaining_suffix = 252, RULE_function_call_argument_clause = 253, + RULE_function_call_argument_list = 254, RULE_function_call_argument = 255, + RULE_trailing_closures = 256, RULE_labeled_trailing_closures = 257, RULE_labeled_trailing_closure = 258, + RULE_argument_names = 259, RULE_argument_name = 260, RULE_type = 261, + RULE_type_annotation = 262, RULE_type_identifier = 263, RULE_type_name = 264, + RULE_tuple_type = 265, RULE_tuple_type_element_list = 266, RULE_tuple_type_element = 267, + RULE_element_name = 268, RULE_function_type = 269, RULE_function_type_argument_clause = 270, + RULE_function_type_argument_list = 271, RULE_function_type_argument = 272, + RULE_argument_label = 273, RULE_array_type = 274, RULE_dictionary_type = 275, + RULE_protocol_composition_type = 276, RULE_trailing_composition_and = 277, + RULE_opaque_type = 278, RULE_any_type = 279, RULE_self_type = 280, RULE_type_inheritance_clause = 281, + RULE_type_inheritance_list = 282, RULE_identifier = 283, RULE_identifier_list = 284, + RULE_keyword = 285, RULE_assignment_operator = 286, RULE_negate_prefix_operator = 287, + RULE_compilation_condition_AND = 288, RULE_compilation_condition_OR = 289, + RULE_compilation_condition_GE = 290, RULE_compilation_condition_L = 291, + RULE_arrow_operator = 292, RULE_range_operator = 293, RULE_same_type_equals = 294, + RULE_binary_operator = 295, RULE_prefix_operator = 296, RULE_postfix_operator = 297, + RULE_operator = 298, RULE_operator_head = 299, RULE_operator_character = 300, + RULE_operator_characters = 301, RULE_dot_operator_head = 302, RULE_dot_operator_character = 303, + RULE_dot_operator_characters = 304, RULE_literal = 305, RULE_numeric_literal = 306, + RULE_boolean_literal = 307, RULE_nil_literal = 308, RULE_integer_literal = 309, + RULE_string_literal = 310, RULE_extended_string_literal = 311, RULE_static_string_literal = 312, + RULE_interpolated_string_literal = 313; + private static String[] makeRuleNames() { + return new String[] { + "top_level", "statement", "statements", "loop_statement", "for_in_statement", + "while_statement", "condition_list", "condition", "case_condition", "optional_binding_condition", + "repeat_while_statement", "branch_statement", "if_statement", "else_clause", + "guard_statement", "switch_statement", "switch_cases", "switch_case", + "case_label", "case_item_list", "default_label", "where_clause", "where_expression", + "conditional_switch_case", "switch_if_directive_clause", "switch_elseif_directive_clauses", + "switch_elseif_directive_clause", "switch_else_directive_clause", "labeled_statement", + "statement_label", "label_name", "control_transfer_statement", "break_statement", + "continue_statement", "fallthrough_statement", "return_statement", "throw_statement", + "defer_statement", "do_statement", "catch_clauses", "catch_clause", "catch_pattern_list", + "catch_pattern", "compiler_control_statement", "conditional_compilation_block", + "if_directive_clause", "elseif_directive_clauses", "elseif_directive_clause", + "else_directive_clause", "compilation_condition", "platform_condition", + "swift_version", "swift_version_continuation", "operating_system", "architecture", + "module_name", "environment", "line_control_statement", "line_number", + "file_name", "diagnostic_statement", "diagnostic_message", "availability_condition", + "availability_arguments", "availability_argument", "platform_name", "platform_version", + "generic_parameter_clause", "generic_parameter_list", "generic_parameter", + "generic_where_clause", "requirement_list", "requirement", "conformance_requirement", + "same_type_requirement", "generic_argument_clause", "generic_argument_list", + "generic_argument", "declaration", "declarations", "top_level_declaration", + "code_block", "import_declaration", "import_kind", "import_path", "import_path_identifier", + "constant_declaration", "pattern_initializer_list", "pattern_initializer", + "initializer", "variable_declaration", "variable_declaration_head", "variable_name", + "getter_setter_block", "getter_clause", "setter_clause", "setter_name", + "getter_setter_keyword_block", "getter_keyword_clause", "setter_keyword_clause", + "willSet_didSet_block", "willSet_clause", "didSet_clause", "typealias_declaration", + "typealias_name", "typealias_assignment", "function_declaration", "function_head", + "function_name", "function_signature", "function_result", "function_body", + "parameter_clause", "parameter_list", "parameter", "external_parameter_name", + "local_parameter_name", "default_argument_clause", "enum_declaration", + "union_style_enum", "union_style_enum_members", "union_style_enum_member", + "union_style_enum_case_clause", "union_style_enum_case_list", "union_style_enum_case", + "enum_name", "enum_case_name", "raw_value_style_enum", "raw_value_style_enum_members", + "raw_value_style_enum_member", "raw_value_style_enum_case_clause", "raw_value_style_enum_case_list", + "raw_value_style_enum_case", "raw_value_assignment", "raw_value_literal", + "struct_declaration", "struct_name", "struct_body", "struct_members", + "struct_member", "class_declaration", "class_name", "class_body", "class_members", + "class_member", "protocol_declaration", "protocol_name", "protocol_body", + "protocol_members", "protocol_member", "protocol_member_declaration", + "protocol_property_declaration", "protocol_method_declaration", "protocol_initializer_declaration", + "protocol_subscript_declaration", "protocol_associated_type_declaration", + "initializer_declaration", "initializer_head", "initializer_body", "deinitializer_declaration", + "extension_declaration", "extension_body", "extension_members", "extension_member", + "subscript_declaration", "subscript_head", "subscript_result", "operator_declaration", + "prefix_operator_declaration", "postfix_operator_declaration", "infix_operator_declaration", + "infix_operator_group", "precedence_group_declaration", "precedence_group_attributes", + "precedence_group_attribute", "precedence_group_relation", "precedence_group_assignment", + "precedence_group_associativity", "precedence_group_names", "precedence_group_name", + "declaration_modifier", "declaration_modifiers", "access_level_modifier", + "mutation_modifier", "pattern", "wildcard_pattern", "identifier_pattern", + "value_binding_pattern", "tuple_pattern", "tuple_pattern_element_list", + "tuple_pattern_element", "enum_case_pattern", "optional_pattern", "expression_pattern", + "attribute", "attribute_name", "attribute_argument_clause", "attributes", + "balanced_tokens", "balanced_token", "balanced_token_punctuation", "expression", + "expression_list", "prefix_expression", "in_out_expression", "try_operator", + "binary_expression", "binary_expressions", "conditional_operator", "type_casting_operator", + "primary_expression", "unqualified_name", "literal_expression", "array_literal", + "array_literal_items", "array_literal_item", "dictionary_literal", "dictionary_literal_items", + "dictionary_literal_item", "playground_literal", "self_expression", "superclass_expression", + "closure_expression", "closure_signature", "closure_parameter_clause", + "closure_parameter_list", "closure_parameter", "capture_list", "capture_list_items", + "capture_list_item", "capture_specifier", "implicit_member_expression", + "parenthesized_operator", "parenthesized_expression", "tuple_expression", + "tuple_element_list", "tuple_element", "wildcard_expression", "key_path_expression", + "key_path_components", "key_path_component", "key_path_postfixes", "key_path_postfix", + "selector_expression", "key_path_string_expression", "postfix_expression", + "function_call_suffix", "initializer_suffix", "explicit_member_suffix", + "postfix_self_suffix", "subscript_suffix", "forced_value_suffix", "optional_chaining_suffix", + "function_call_argument_clause", "function_call_argument_list", "function_call_argument", + "trailing_closures", "labeled_trailing_closures", "labeled_trailing_closure", + "argument_names", "argument_name", "type", "type_annotation", "type_identifier", + "type_name", "tuple_type", "tuple_type_element_list", "tuple_type_element", + "element_name", "function_type", "function_type_argument_clause", "function_type_argument_list", + "function_type_argument", "argument_label", "array_type", "dictionary_type", + "protocol_composition_type", "trailing_composition_and", "opaque_type", + "any_type", "self_type", "type_inheritance_clause", "type_inheritance_list", + "identifier", "identifier_list", "keyword", "assignment_operator", "negate_prefix_operator", + "compilation_condition_AND", "compilation_condition_OR", "compilation_condition_GE", + "compilation_condition_L", "arrow_operator", "range_operator", "same_type_equals", + "binary_operator", "prefix_operator", "postfix_operator", "operator", + "operator_head", "operator_character", "operator_characters", "dot_operator_head", + "dot_operator_character", "dot_operator_characters", "literal", "numeric_literal", + "boolean_literal", "nil_literal", "integer_literal", "string_literal", + "extended_string_literal", "static_string_literal", "interpolated_string_literal" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "'as'", "'alpha'", "'break'", "'case'", "'catch'", "'class'", "'continue'", + "'default'", "'defer'", "'do'", "'guard'", "'else'", "'enum'", "'for'", + "'fallthrough'", "'func'", "'in'", "'if'", "'import'", "'internal'", + "'final'", "'open'", "'private'", "'public'", "'where'", "'while'", "'let'", + "'var'", "'protocol'", "'get'", "'set'", "'willSet'", "'didSet'", "'repeat'", + "'switch'", "'struct'", "'return'", "'throw'", "'throws'", "'rethrows'", + "'indirect'", "'init'", "'deinit'", "'associatedtype'", "'extension'", + "'subscript'", "'prefix'", "'infix'", "'left'", "'right'", "'none'", + "'precedencegroup'", "'higherThan'", "'lowerThan'", "'assignment'", "'associativity'", + "'postfix'", "'operator'", "'typealias'", "'os'", "'arch'", "'swift'", + "'compiler'", "'canImport'", "'targetEnvironment'", "'convenience'", + "'dynamic'", "'lazy'", "'optional'", "'override'", "'required'", "'static'", + "'weak'", "'unowned'", "'safe'", "'unsafe'", "'mutating'", "'nonmutating'", + "'fileprivate'", "'is'", "'try'", "'super'", "'Any'", "'false'", "'red'", + "'blue'", "'green'", "'resourceName'", "'true'", "'nil'", "'inout'", + "'some'", "'Type'", "'precedence'", "'self'", "'Self'", "'macOS'", "'iOS'", + "'OSX'", "'watchOS'", "'tvOS'", "'Linux'", "'Windows'", "'i386'", "'x86_64'", + "'arm'", "'arm64'", "'simulator'", "'macCatalyst'", "'iOSApplicationExtension'", + "'macCatalystApplicationExtension'", "'macOSApplicationExtension'", "'#sourceLocation'", + "'file'", "'line'", "'#error'", "'#warning'", "'#available'", "'#if'", + "'#elseif'", "'#else'", "'#endif'", "'#file'", "'#fileID'", "'#filePath'", + "'#line'", "'#column'", "'#function'", "'#dsohandle'", "'#selector'", + "'#keyPath'", "'#colorLiteral'", "'#fileLiteral'", "'#imageLiteral'", + "'getter'", "'setter'", null, "'.'", "'{'", "'('", "'['", "'}'", "')'", + "']'", "','", "':'", "';'", "'<'", "'>'", "'_'", "'!'", "'?'", "'@'", + "'&'", "'-'", "'='", "'|'", "'/'", "'+'", "'*'", "'%'", "'^'", "'~'", + "'#'", "'`'", "'$'", "'\\'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "AS", "ALPHA", "BREAK", "CASE", "CATCH", "CLASS", "CONTINUE", "DEFAULT", + "DEFER", "DO", "GUARD", "ELSE", "ENUM", "FOR", "FALLTHROUGH", "FUNC", + "IN", "IF", "IMPORT", "INTERNAL", "FINAL", "OPEN", "PRIVATE", "PUBLIC", + "WHERE", "WHILE", "LET", "VAR", "PROTOCOL", "GET", "SET", "WILL_SET", + "DID_SET", "REPEAT", "SWITCH", "STRUCT", "RETURN", "THROW", "THROWS", + "RETHROWS", "INDIRECT", "INIT", "DEINIT", "ASSOCIATED_TYPE", "EXTENSION", + "SUBSCRIPT", "PREFIX", "INFIX", "LEFT", "RIGHT", "NONE", "PRECEDENCE_GROUP", + "HIGHER_THAN", "LOWER_THAN", "ASSIGNMENT", "ASSOCIATIVITY", "POSTFIX", + "OPERATOR", "TYPEALIAS", "OS", "ARCH", "SWIFT", "COMPILER", "CAN_IMPORT", + "TARGET_ENVIRONMENT", "CONVENIENCE", "DYNAMIC", "LAZY", "OPTIONAL", "OVERRIDE", + "REQUIRED", "STATIC", "WEAK", "UNOWNED", "SAFE", "UNSAFE", "MUTATING", + "NONMUTATING", "FILE_PRIVATE", "IS", "TRY", "SUPER", "ANY", "FALSE", + "RED", "BLUE", "GREEN", "RESOURCE_NAME", "TRUE", "NIL", "INOUT", "SOME", + "TYPE", "PRECEDENCE", "SELF", "SELF_BIG", "MAC_OS", "I_OS", "OSX", "WATCH_OS", + "TV_OS", "LINUX", "WINDOWS", "I386", "X86_64", "ARM", "ARM64", "SIMULATOR", + "MAC_CATALYST", "I_OS_APPLICATION_EXTENSION", "MAC_CATALYST_APPLICATION_EXTENSION", + "MAC_OS_APPLICATION_EXTENSION", "SOURCE_LOCATION", "FILE", "LINE", "ERROR", + "WARNING", "AVAILABLE", "HASH_IF", "HASH_ELSEIF", "HASH_ELSE", "HASH_ENDIF", + "HASH_FILE", "HASH_FILE_ID", "HASH_FILE_PATH", "HASH_LINE", "HASH_COLUMN", + "HASH_FUNCTION", "HASH_DSO_HANDLE", "HASH_SELECTOR", "HASH_KEYPATH", + "HASH_COLOR_LITERAL", "HASH_FILE_LITERAL", "HASH_IMAGE_LITERAL", "GETTER", + "SETTER", "Identifier", "DOT", "LCURLY", "LPAREN", "LBRACK", "RCURLY", + "RPAREN", "RBRACK", "COMMA", "COLON", "SEMI", "LT", "GT", "UNDERSCORE", + "BANG", "QUESTION", "AT", "AND", "SUB", "EQUAL", "OR", "DIV", "ADD", + "MUL", "MOD", "CARET", "TILDE", "HASH", "BACKTICK", "DOLLAR", "BACKSLASH", + "Operator_head_other", "Operator_following_character", "Binary_literal", + "Octal_literal", "Decimal_digits", "Decimal_literal", "Hexadecimal_literal", + "Floating_point_literal", "WS", "HASHBANG", "Block_comment", "Line_comment", + "Multi_line_extended_string_open", "Single_line_extended_string_open", + "Multi_line_string_open", "Single_line_string_open", "Interpolataion_single_line", + "Single_line_string_close", "Quoted_single_line_text", "Interpolataion_multi_line", + "Multi_line_string_close", "Quoted_multi_line_text", "Single_line_extended_string_close", + "Quoted_single_line_extended_text", "Multi_line_extended_string_close", + "Quoted_multi_line_extended_text" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "Swift5Parser.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public Swift5Parser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + public static class Top_levelContext extends ParserRuleContext { + public TerminalNode EOF() { return getToken(Swift5Parser.EOF, 0); } + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public Top_levelContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_top_level; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTop_level(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTop_level(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTop_level(this); + else return visitor.visitChildren(this); + } + } + + public final Top_levelContext top_level() throws RecognitionException { + Top_levelContext _localctx = new Top_levelContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_top_level); + try { + enterOuterAlt(_localctx, 1); + { + setState(629); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { + case 1: + { + setState(628); + statements(); + } + break; + } + setState(631); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementContext extends ParserRuleContext { + public Loop_statementContext loop_statement() { + return getRuleContext(Loop_statementContext.class,0); + } + public DeclarationContext declaration() { + return getRuleContext(DeclarationContext.class,0); + } + public Branch_statementContext branch_statement() { + return getRuleContext(Branch_statementContext.class,0); + } + public Labeled_statementContext labeled_statement() { + return getRuleContext(Labeled_statementContext.class,0); + } + public Control_transfer_statementContext control_transfer_statement() { + return getRuleContext(Control_transfer_statementContext.class,0); + } + public Defer_statementContext defer_statement() { + return getRuleContext(Defer_statementContext.class,0); + } + public Do_statementContext do_statement() { + return getRuleContext(Do_statementContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode SEMI() { return getToken(Swift5Parser.SEMI, 0); } + public Compiler_control_statementContext compiler_control_statement() { + return getRuleContext(Compiler_control_statementContext.class,0); + } + public StatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitStatement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitStatement(this); + else return visitor.visitChildren(this); + } + } + + public final StatementContext statement() throws RecognitionException { + StatementContext _localctx = new StatementContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_statement); + try { + setState(647); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(641); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) { + case 1: + { + setState(633); + loop_statement(); + } + break; + case 2: + { + setState(634); + declaration(); + } + break; + case 3: + { + setState(635); + branch_statement(); + } + break; + case 4: + { + setState(636); + labeled_statement(); + } + break; + case 5: + { + setState(637); + control_transfer_statement(); + } + break; + case 6: + { + setState(638); + defer_statement(); + } + break; + case 7: + { + setState(639); + do_statement(); + } + break; + case 8: + { + setState(640); + expression(); + } + break; + } + setState(644); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) { + case 1: + { + setState(643); + match(SEMI); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(646); + compiler_control_statement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementsContext extends ParserRuleContext { + public int indexBefore = -1; + public List statement() { + return getRuleContexts(StatementContext.class); + } + public StatementContext statement(int i) { + return getRuleContext(StatementContext.class,i); + } + public StatementsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statements; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterStatements(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitStatements(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitStatements(this); + else return visitor.visitChildren(this); + } + } + + public final StatementsContext statements() throws RecognitionException { + StatementsContext _localctx = new StatementsContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_statements); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(653); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(649); + if (!(SwiftSupport.isSeparatedStatement(_input, _localctx.indexBefore))) throw new FailedPredicateException(this, "SwiftSupport.isSeparatedStatement(_input, $indexBefore)"); + setState(650); + statement(); + ((StatementsContext)_localctx).indexBefore = _input.index(); + + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(655); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,4,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Loop_statementContext extends ParserRuleContext { + public For_in_statementContext for_in_statement() { + return getRuleContext(For_in_statementContext.class,0); + } + public While_statementContext while_statement() { + return getRuleContext(While_statementContext.class,0); + } + public Repeat_while_statementContext repeat_while_statement() { + return getRuleContext(Repeat_while_statementContext.class,0); + } + public Loop_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_loop_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLoop_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLoop_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLoop_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Loop_statementContext loop_statement() throws RecognitionException { + Loop_statementContext _localctx = new Loop_statementContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_loop_statement); + try { + setState(660); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FOR: + enterOuterAlt(_localctx, 1); + { + setState(657); + for_in_statement(); + } + break; + case WHILE: + enterOuterAlt(_localctx, 2); + { + setState(658); + while_statement(); + } + break; + case REPEAT: + enterOuterAlt(_localctx, 3); + { + setState(659); + repeat_while_statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class For_in_statementContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(Swift5Parser.FOR, 0); } + public PatternContext pattern() { + return getRuleContext(PatternContext.class,0); + } + public TerminalNode IN() { return getToken(Swift5Parser.IN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public TerminalNode CASE() { return getToken(Swift5Parser.CASE, 0); } + public Where_clauseContext where_clause() { + return getRuleContext(Where_clauseContext.class,0); + } + public For_in_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_for_in_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFor_in_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFor_in_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFor_in_statement(this); + else return visitor.visitChildren(this); + } + } + + public final For_in_statementContext for_in_statement() throws RecognitionException { + For_in_statementContext _localctx = new For_in_statementContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_for_in_statement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(662); + match(FOR); + setState(664); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { + case 1: + { + setState(663); + match(CASE); + } + break; + } + setState(666); + pattern(0); + setState(667); + match(IN); + setState(668); + expression(); + setState(670); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(669); + where_clause(); + } + } + + setState(672); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class While_statementContext extends ParserRuleContext { + public TerminalNode WHILE() { return getToken(Swift5Parser.WHILE, 0); } + public Condition_listContext condition_list() { + return getRuleContext(Condition_listContext.class,0); + } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public While_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_while_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterWhile_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitWhile_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitWhile_statement(this); + else return visitor.visitChildren(this); + } + } + + public final While_statementContext while_statement() throws RecognitionException { + While_statementContext _localctx = new While_statementContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_while_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(674); + match(WHILE); + setState(675); + condition_list(); + setState(676); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Condition_listContext extends ParserRuleContext { + public List condition() { + return getRuleContexts(ConditionContext.class); + } + public ConditionContext condition(int i) { + return getRuleContext(ConditionContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Condition_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_condition_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCondition_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCondition_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCondition_list(this); + else return visitor.visitChildren(this); + } + } + + public final Condition_listContext condition_list() throws RecognitionException { + Condition_listContext _localctx = new Condition_listContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_condition_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(678); + condition(); + setState(683); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(679); + match(COMMA); + setState(680); + condition(); + } + } + setState(685); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConditionContext extends ParserRuleContext { + public Availability_conditionContext availability_condition() { + return getRuleContext(Availability_conditionContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Case_conditionContext case_condition() { + return getRuleContext(Case_conditionContext.class,0); + } + public Optional_binding_conditionContext optional_binding_condition() { + return getRuleContext(Optional_binding_conditionContext.class,0); + } + public ConditionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_condition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCondition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCondition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCondition(this); + else return visitor.visitChildren(this); + } + } + + public final ConditionContext condition() throws RecognitionException { + ConditionContext _localctx = new ConditionContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_condition); + try { + setState(690); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(686); + availability_condition(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(687); + expression(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(688); + case_condition(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(689); + optional_binding_condition(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Case_conditionContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(Swift5Parser.CASE, 0); } + public PatternContext pattern() { + return getRuleContext(PatternContext.class,0); + } + public InitializerContext initializer() { + return getRuleContext(InitializerContext.class,0); + } + public Case_conditionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_case_condition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCase_condition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCase_condition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCase_condition(this); + else return visitor.visitChildren(this); + } + } + + public final Case_conditionContext case_condition() throws RecognitionException { + Case_conditionContext _localctx = new Case_conditionContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_case_condition); + try { + enterOuterAlt(_localctx, 1); + { + setState(692); + match(CASE); + setState(693); + pattern(0); + setState(694); + initializer(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Optional_binding_conditionContext extends ParserRuleContext { + public PatternContext pattern() { + return getRuleContext(PatternContext.class,0); + } + public InitializerContext initializer() { + return getRuleContext(InitializerContext.class,0); + } + public TerminalNode LET() { return getToken(Swift5Parser.LET, 0); } + public TerminalNode VAR() { return getToken(Swift5Parser.VAR, 0); } + public Optional_binding_conditionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_optional_binding_condition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOptional_binding_condition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOptional_binding_condition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOptional_binding_condition(this); + else return visitor.visitChildren(this); + } + } + + public final Optional_binding_conditionContext optional_binding_condition() throws RecognitionException { + Optional_binding_conditionContext _localctx = new Optional_binding_conditionContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_optional_binding_condition); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(696); + _la = _input.LA(1); + if ( !(_la==LET || _la==VAR) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(697); + pattern(0); + setState(698); + initializer(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Repeat_while_statementContext extends ParserRuleContext { + public TerminalNode REPEAT() { return getToken(Swift5Parser.REPEAT, 0); } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public TerminalNode WHILE() { return getToken(Swift5Parser.WHILE, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Repeat_while_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_repeat_while_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRepeat_while_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRepeat_while_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRepeat_while_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Repeat_while_statementContext repeat_while_statement() throws RecognitionException { + Repeat_while_statementContext _localctx = new Repeat_while_statementContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_repeat_while_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(700); + match(REPEAT); + setState(701); + code_block(); + setState(702); + match(WHILE); + setState(703); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Branch_statementContext extends ParserRuleContext { + public If_statementContext if_statement() { + return getRuleContext(If_statementContext.class,0); + } + public Guard_statementContext guard_statement() { + return getRuleContext(Guard_statementContext.class,0); + } + public Switch_statementContext switch_statement() { + return getRuleContext(Switch_statementContext.class,0); + } + public Branch_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_branch_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterBranch_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitBranch_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitBranch_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Branch_statementContext branch_statement() throws RecognitionException { + Branch_statementContext _localctx = new Branch_statementContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_branch_statement); + try { + setState(708); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IF: + enterOuterAlt(_localctx, 1); + { + setState(705); + if_statement(); + } + break; + case GUARD: + enterOuterAlt(_localctx, 2); + { + setState(706); + guard_statement(); + } + break; + case SWITCH: + enterOuterAlt(_localctx, 3); + { + setState(707); + switch_statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class If_statementContext extends ParserRuleContext { + public TerminalNode IF() { return getToken(Swift5Parser.IF, 0); } + public Condition_listContext condition_list() { + return getRuleContext(Condition_listContext.class,0); + } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Else_clauseContext else_clause() { + return getRuleContext(Else_clauseContext.class,0); + } + public If_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_if_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterIf_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitIf_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitIf_statement(this); + else return visitor.visitChildren(this); + } + } + + public final If_statementContext if_statement() throws RecognitionException { + If_statementContext _localctx = new If_statementContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_if_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(710); + match(IF); + setState(711); + condition_list(); + setState(712); + code_block(); + setState(714); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { + case 1: + { + setState(713); + else_clause(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Else_clauseContext extends ParserRuleContext { + public TerminalNode ELSE() { return getToken(Swift5Parser.ELSE, 0); } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public If_statementContext if_statement() { + return getRuleContext(If_statementContext.class,0); + } + public Else_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_else_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterElse_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitElse_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitElse_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Else_clauseContext else_clause() throws RecognitionException { + Else_clauseContext _localctx = new Else_clauseContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_else_clause); + try { + setState(720); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(716); + match(ELSE); + setState(717); + code_block(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(718); + match(ELSE); + setState(719); + if_statement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Guard_statementContext extends ParserRuleContext { + public TerminalNode GUARD() { return getToken(Swift5Parser.GUARD, 0); } + public Condition_listContext condition_list() { + return getRuleContext(Condition_listContext.class,0); + } + public TerminalNode ELSE() { return getToken(Swift5Parser.ELSE, 0); } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Guard_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_guard_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGuard_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGuard_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGuard_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Guard_statementContext guard_statement() throws RecognitionException { + Guard_statementContext _localctx = new Guard_statementContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_guard_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(722); + match(GUARD); + setState(723); + condition_list(); + setState(724); + match(ELSE); + setState(725); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Switch_statementContext extends ParserRuleContext { + public TerminalNode SWITCH() { return getToken(Swift5Parser.SWITCH, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Switch_casesContext switch_cases() { + return getRuleContext(Switch_casesContext.class,0); + } + public Switch_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switch_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSwitch_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSwitch_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSwitch_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Switch_statementContext switch_statement() throws RecognitionException { + Switch_statementContext _localctx = new Switch_statementContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_switch_statement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(727); + match(SWITCH); + setState(728); + expression(); + setState(729); + match(LCURLY); + setState(731); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CASE || _la==DEFAULT || _la==HASH_IF || _la==AT) { + { + setState(730); + switch_cases(); + } + } + + setState(733); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Switch_casesContext extends ParserRuleContext { + public Switch_caseContext switch_case() { + return getRuleContext(Switch_caseContext.class,0); + } + public Switch_casesContext switch_cases() { + return getRuleContext(Switch_casesContext.class,0); + } + public Switch_casesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switch_cases; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSwitch_cases(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSwitch_cases(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSwitch_cases(this); + else return visitor.visitChildren(this); + } + } + + public final Switch_casesContext switch_cases() throws RecognitionException { + Switch_casesContext _localctx = new Switch_casesContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_switch_cases); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(735); + switch_case(); + setState(737); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CASE || _la==DEFAULT || _la==HASH_IF || _la==AT) { + { + setState(736); + switch_cases(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Switch_caseContext extends ParserRuleContext { + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public Case_labelContext case_label() { + return getRuleContext(Case_labelContext.class,0); + } + public Default_labelContext default_label() { + return getRuleContext(Default_labelContext.class,0); + } + public Conditional_switch_caseContext conditional_switch_case() { + return getRuleContext(Conditional_switch_caseContext.class,0); + } + public Switch_caseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switch_case; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSwitch_case(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSwitch_case(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSwitch_case(this); + else return visitor.visitChildren(this); + } + } + + public final Switch_caseContext switch_case() throws RecognitionException { + Switch_caseContext _localctx = new Switch_caseContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_switch_case); + try { + setState(746); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CASE: + case DEFAULT: + case AT: + enterOuterAlt(_localctx, 1); + { + setState(741); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) { + case 1: + { + setState(739); + case_label(); + } + break; + case 2: + { + setState(740); + default_label(); + } + break; + } + setState(743); + statements(); + } + break; + case HASH_IF: + enterOuterAlt(_localctx, 2); + { + setState(745); + conditional_switch_case(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Case_labelContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(Swift5Parser.CASE, 0); } + public Case_item_listContext case_item_list() { + return getRuleContext(Case_item_listContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Case_labelContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_case_label; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCase_label(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCase_label(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCase_label(this); + else return visitor.visitChildren(this); + } + } + + public final Case_labelContext case_label() throws RecognitionException { + Case_labelContext _localctx = new Case_labelContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_case_label); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(749); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(748); + attributes(); + } + } + + setState(751); + match(CASE); + setState(752); + case_item_list(); + setState(753); + match(COLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Case_item_listContext extends ParserRuleContext { + public List pattern() { + return getRuleContexts(PatternContext.class); + } + public PatternContext pattern(int i) { + return getRuleContext(PatternContext.class,i); + } + public List where_clause() { + return getRuleContexts(Where_clauseContext.class); + } + public Where_clauseContext where_clause(int i) { + return getRuleContext(Where_clauseContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Case_item_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_case_item_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCase_item_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCase_item_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCase_item_list(this); + else return visitor.visitChildren(this); + } + } + + public final Case_item_listContext case_item_list() throws RecognitionException { + Case_item_listContext _localctx = new Case_item_listContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_case_item_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(755); + pattern(0); + setState(757); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(756); + where_clause(); + } + } + + setState(766); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(759); + match(COMMA); + setState(760); + pattern(0); + setState(762); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(761); + where_clause(); + } + } + + } + } + setState(768); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Default_labelContext extends ParserRuleContext { + public TerminalNode DEFAULT() { return getToken(Swift5Parser.DEFAULT, 0); } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Default_labelContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_default_label; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDefault_label(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDefault_label(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDefault_label(this); + else return visitor.visitChildren(this); + } + } + + public final Default_labelContext default_label() throws RecognitionException { + Default_labelContext _localctx = new Default_labelContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_default_label); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(770); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(769); + attributes(); + } + } + + setState(772); + match(DEFAULT); + setState(773); + match(COLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Where_clauseContext extends ParserRuleContext { + public TerminalNode WHERE() { return getToken(Swift5Parser.WHERE, 0); } + public Where_expressionContext where_expression() { + return getRuleContext(Where_expressionContext.class,0); + } + public Where_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_where_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterWhere_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitWhere_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitWhere_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Where_clauseContext where_clause() throws RecognitionException { + Where_clauseContext _localctx = new Where_clauseContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_where_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(775); + match(WHERE); + setState(776); + where_expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Where_expressionContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Where_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_where_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterWhere_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitWhere_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitWhere_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Where_expressionContext where_expression() throws RecognitionException { + Where_expressionContext _localctx = new Where_expressionContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_where_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(778); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Conditional_switch_caseContext extends ParserRuleContext { + public Switch_if_directive_clauseContext switch_if_directive_clause() { + return getRuleContext(Switch_if_directive_clauseContext.class,0); + } + public TerminalNode HASH_ENDIF() { return getToken(Swift5Parser.HASH_ENDIF, 0); } + public Switch_elseif_directive_clausesContext switch_elseif_directive_clauses() { + return getRuleContext(Switch_elseif_directive_clausesContext.class,0); + } + public Switch_else_directive_clauseContext switch_else_directive_clause() { + return getRuleContext(Switch_else_directive_clauseContext.class,0); + } + public Conditional_switch_caseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditional_switch_case; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterConditional_switch_case(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitConditional_switch_case(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitConditional_switch_case(this); + else return visitor.visitChildren(this); + } + } + + public final Conditional_switch_caseContext conditional_switch_case() throws RecognitionException { + Conditional_switch_caseContext _localctx = new Conditional_switch_caseContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_conditional_switch_case); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(780); + switch_if_directive_clause(); + setState(782); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==HASH_ELSEIF) { + { + setState(781); + switch_elseif_directive_clauses(); + } + } + + setState(785); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==HASH_ELSE) { + { + setState(784); + switch_else_directive_clause(); + } + } + + setState(787); + match(HASH_ENDIF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Switch_if_directive_clauseContext extends ParserRuleContext { + public TerminalNode HASH_IF() { return getToken(Swift5Parser.HASH_IF, 0); } + public Compilation_conditionContext compilation_condition() { + return getRuleContext(Compilation_conditionContext.class,0); + } + public Switch_casesContext switch_cases() { + return getRuleContext(Switch_casesContext.class,0); + } + public Switch_if_directive_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switch_if_directive_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSwitch_if_directive_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSwitch_if_directive_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSwitch_if_directive_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Switch_if_directive_clauseContext switch_if_directive_clause() throws RecognitionException { + Switch_if_directive_clauseContext _localctx = new Switch_if_directive_clauseContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_switch_if_directive_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(789); + match(HASH_IF); + setState(790); + compilation_condition(0); + setState(792); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CASE || _la==DEFAULT || _la==HASH_IF || _la==AT) { + { + setState(791); + switch_cases(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Switch_elseif_directive_clausesContext extends ParserRuleContext { + public Elseif_directive_clauseContext elseif_directive_clause() { + return getRuleContext(Elseif_directive_clauseContext.class,0); + } + public Switch_elseif_directive_clausesContext switch_elseif_directive_clauses() { + return getRuleContext(Switch_elseif_directive_clausesContext.class,0); + } + public Switch_elseif_directive_clausesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switch_elseif_directive_clauses; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSwitch_elseif_directive_clauses(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSwitch_elseif_directive_clauses(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSwitch_elseif_directive_clauses(this); + else return visitor.visitChildren(this); + } + } + + public final Switch_elseif_directive_clausesContext switch_elseif_directive_clauses() throws RecognitionException { + Switch_elseif_directive_clausesContext _localctx = new Switch_elseif_directive_clausesContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_switch_elseif_directive_clauses); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(794); + elseif_directive_clause(); + setState(796); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==HASH_ELSEIF) { + { + setState(795); + switch_elseif_directive_clauses(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Switch_elseif_directive_clauseContext extends ParserRuleContext { + public TerminalNode HASH_ELSEIF() { return getToken(Swift5Parser.HASH_ELSEIF, 0); } + public Compilation_conditionContext compilation_condition() { + return getRuleContext(Compilation_conditionContext.class,0); + } + public Switch_casesContext switch_cases() { + return getRuleContext(Switch_casesContext.class,0); + } + public Switch_elseif_directive_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switch_elseif_directive_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSwitch_elseif_directive_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSwitch_elseif_directive_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSwitch_elseif_directive_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Switch_elseif_directive_clauseContext switch_elseif_directive_clause() throws RecognitionException { + Switch_elseif_directive_clauseContext _localctx = new Switch_elseif_directive_clauseContext(_ctx, getState()); + enterRule(_localctx, 52, RULE_switch_elseif_directive_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(798); + match(HASH_ELSEIF); + setState(799); + compilation_condition(0); + setState(801); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CASE || _la==DEFAULT || _la==HASH_IF || _la==AT) { + { + setState(800); + switch_cases(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Switch_else_directive_clauseContext extends ParserRuleContext { + public TerminalNode HASH_ELSE() { return getToken(Swift5Parser.HASH_ELSE, 0); } + public Switch_casesContext switch_cases() { + return getRuleContext(Switch_casesContext.class,0); + } + public Switch_else_directive_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switch_else_directive_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSwitch_else_directive_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSwitch_else_directive_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSwitch_else_directive_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Switch_else_directive_clauseContext switch_else_directive_clause() throws RecognitionException { + Switch_else_directive_clauseContext _localctx = new Switch_else_directive_clauseContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_switch_else_directive_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(803); + match(HASH_ELSE); + setState(805); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CASE || _la==DEFAULT || _la==HASH_IF || _la==AT) { + { + setState(804); + switch_cases(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Labeled_statementContext extends ParserRuleContext { + public Statement_labelContext statement_label() { + return getRuleContext(Statement_labelContext.class,0); + } + public Loop_statementContext loop_statement() { + return getRuleContext(Loop_statementContext.class,0); + } + public If_statementContext if_statement() { + return getRuleContext(If_statementContext.class,0); + } + public Switch_statementContext switch_statement() { + return getRuleContext(Switch_statementContext.class,0); + } + public Do_statementContext do_statement() { + return getRuleContext(Do_statementContext.class,0); + } + public Labeled_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_labeled_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLabeled_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLabeled_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLabeled_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Labeled_statementContext labeled_statement() throws RecognitionException { + Labeled_statementContext _localctx = new Labeled_statementContext(_ctx, getState()); + enterRule(_localctx, 56, RULE_labeled_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(807); + statement_label(); + setState(812); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FOR: + case WHILE: + case REPEAT: + { + setState(808); + loop_statement(); + } + break; + case IF: + { + setState(809); + if_statement(); + } + break; + case SWITCH: + { + setState(810); + switch_statement(); + } + break; + case DO: + { + setState(811); + do_statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Statement_labelContext extends ParserRuleContext { + public Label_nameContext label_name() { + return getRuleContext(Label_nameContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Statement_labelContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statement_label; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterStatement_label(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitStatement_label(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitStatement_label(this); + else return visitor.visitChildren(this); + } + } + + public final Statement_labelContext statement_label() throws RecognitionException { + Statement_labelContext _localctx = new Statement_labelContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_statement_label); + try { + enterOuterAlt(_localctx, 1); + { + setState(814); + label_name(); + setState(815); + match(COLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Label_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Label_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_label_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLabel_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLabel_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLabel_name(this); + else return visitor.visitChildren(this); + } + } + + public final Label_nameContext label_name() throws RecognitionException { + Label_nameContext _localctx = new Label_nameContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_label_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(817); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Control_transfer_statementContext extends ParserRuleContext { + public Break_statementContext break_statement() { + return getRuleContext(Break_statementContext.class,0); + } + public Continue_statementContext continue_statement() { + return getRuleContext(Continue_statementContext.class,0); + } + public Fallthrough_statementContext fallthrough_statement() { + return getRuleContext(Fallthrough_statementContext.class,0); + } + public Return_statementContext return_statement() { + return getRuleContext(Return_statementContext.class,0); + } + public Throw_statementContext throw_statement() { + return getRuleContext(Throw_statementContext.class,0); + } + public Control_transfer_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_control_transfer_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterControl_transfer_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitControl_transfer_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitControl_transfer_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Control_transfer_statementContext control_transfer_statement() throws RecognitionException { + Control_transfer_statementContext _localctx = new Control_transfer_statementContext(_ctx, getState()); + enterRule(_localctx, 62, RULE_control_transfer_statement); + try { + setState(824); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BREAK: + enterOuterAlt(_localctx, 1); + { + setState(819); + break_statement(); + } + break; + case CONTINUE: + enterOuterAlt(_localctx, 2); + { + setState(820); + continue_statement(); + } + break; + case FALLTHROUGH: + enterOuterAlt(_localctx, 3); + { + setState(821); + fallthrough_statement(); + } + break; + case RETURN: + enterOuterAlt(_localctx, 4); + { + setState(822); + return_statement(); + } + break; + case THROW: + enterOuterAlt(_localctx, 5); + { + setState(823); + throw_statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Break_statementContext extends ParserRuleContext { + public TerminalNode BREAK() { return getToken(Swift5Parser.BREAK, 0); } + public Label_nameContext label_name() { + return getRuleContext(Label_nameContext.class,0); + } + public Break_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_break_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterBreak_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitBreak_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitBreak_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Break_statementContext break_statement() throws RecognitionException { + Break_statementContext _localctx = new Break_statementContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_break_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(826); + match(BREAK); + setState(828); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) { + case 1: + { + setState(827); + label_name(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Continue_statementContext extends ParserRuleContext { + public TerminalNode CONTINUE() { return getToken(Swift5Parser.CONTINUE, 0); } + public Label_nameContext label_name() { + return getRuleContext(Label_nameContext.class,0); + } + public Continue_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_continue_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterContinue_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitContinue_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitContinue_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Continue_statementContext continue_statement() throws RecognitionException { + Continue_statementContext _localctx = new Continue_statementContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_continue_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(830); + match(CONTINUE); + setState(832); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) { + case 1: + { + setState(831); + label_name(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Fallthrough_statementContext extends ParserRuleContext { + public TerminalNode FALLTHROUGH() { return getToken(Swift5Parser.FALLTHROUGH, 0); } + public Fallthrough_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fallthrough_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFallthrough_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFallthrough_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFallthrough_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Fallthrough_statementContext fallthrough_statement() throws RecognitionException { + Fallthrough_statementContext _localctx = new Fallthrough_statementContext(_ctx, getState()); + enterRule(_localctx, 68, RULE_fallthrough_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(834); + match(FALLTHROUGH); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Return_statementContext extends ParserRuleContext { + public TerminalNode RETURN() { return getToken(Swift5Parser.RETURN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Return_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_return_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterReturn_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitReturn_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitReturn_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Return_statementContext return_statement() throws RecognitionException { + Return_statementContext _localctx = new Return_statementContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_return_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(836); + match(RETURN); + setState(838); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) { + case 1: + { + setState(837); + expression(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Throw_statementContext extends ParserRuleContext { + public TerminalNode THROW() { return getToken(Swift5Parser.THROW, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Throw_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_throw_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterThrow_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitThrow_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitThrow_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Throw_statementContext throw_statement() throws RecognitionException { + Throw_statementContext _localctx = new Throw_statementContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_throw_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(840); + match(THROW); + setState(841); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Defer_statementContext extends ParserRuleContext { + public TerminalNode DEFER() { return getToken(Swift5Parser.DEFER, 0); } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Defer_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_defer_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDefer_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDefer_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDefer_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Defer_statementContext defer_statement() throws RecognitionException { + Defer_statementContext _localctx = new Defer_statementContext(_ctx, getState()); + enterRule(_localctx, 74, RULE_defer_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(843); + match(DEFER); + setState(844); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Do_statementContext extends ParserRuleContext { + public TerminalNode DO() { return getToken(Swift5Parser.DO, 0); } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Catch_clausesContext catch_clauses() { + return getRuleContext(Catch_clausesContext.class,0); + } + public Do_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_do_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDo_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDo_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDo_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Do_statementContext do_statement() throws RecognitionException { + Do_statementContext _localctx = new Do_statementContext(_ctx, getState()); + enterRule(_localctx, 76, RULE_do_statement); + try { + enterOuterAlt(_localctx, 1); + { + setState(846); + match(DO); + setState(847); + code_block(); + setState(849); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { + case 1: + { + setState(848); + catch_clauses(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Catch_clausesContext extends ParserRuleContext { + public List catch_clause() { + return getRuleContexts(Catch_clauseContext.class); + } + public Catch_clauseContext catch_clause(int i) { + return getRuleContext(Catch_clauseContext.class,i); + } + public Catch_clausesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catch_clauses; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCatch_clauses(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCatch_clauses(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCatch_clauses(this); + else return visitor.visitChildren(this); + } + } + + public final Catch_clausesContext catch_clauses() throws RecognitionException { + Catch_clausesContext _localctx = new Catch_clausesContext(_ctx, getState()); + enterRule(_localctx, 78, RULE_catch_clauses); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(852); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(851); + catch_clause(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(854); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Catch_clauseContext extends ParserRuleContext { + public TerminalNode CATCH() { return getToken(Swift5Parser.CATCH, 0); } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Catch_pattern_listContext catch_pattern_list() { + return getRuleContext(Catch_pattern_listContext.class,0); + } + public Catch_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catch_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCatch_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCatch_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCatch_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Catch_clauseContext catch_clause() throws RecognitionException { + Catch_clauseContext _localctx = new Catch_clauseContext(_ctx, getState()); + enterRule(_localctx, 80, RULE_catch_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(856); + match(CATCH); + setState(858); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) { + case 1: + { + setState(857); + catch_pattern_list(); + } + break; + } + setState(860); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Catch_pattern_listContext extends ParserRuleContext { + public List catch_pattern() { + return getRuleContexts(Catch_patternContext.class); + } + public Catch_patternContext catch_pattern(int i) { + return getRuleContext(Catch_patternContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Catch_pattern_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catch_pattern_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCatch_pattern_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCatch_pattern_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCatch_pattern_list(this); + else return visitor.visitChildren(this); + } + } + + public final Catch_pattern_listContext catch_pattern_list() throws RecognitionException { + Catch_pattern_listContext _localctx = new Catch_pattern_listContext(_ctx, getState()); + enterRule(_localctx, 82, RULE_catch_pattern_list); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(862); + catch_pattern(); + setState(869); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,36,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(863); + catch_pattern(); + setState(864); + match(COMMA); + setState(865); + catch_pattern(); + } + } + } + setState(871); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,36,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Catch_patternContext extends ParserRuleContext { + public PatternContext pattern() { + return getRuleContext(PatternContext.class,0); + } + public Where_clauseContext where_clause() { + return getRuleContext(Where_clauseContext.class,0); + } + public Catch_patternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_catch_pattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCatch_pattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCatch_pattern(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCatch_pattern(this); + else return visitor.visitChildren(this); + } + } + + public final Catch_patternContext catch_pattern() throws RecognitionException { + Catch_patternContext _localctx = new Catch_patternContext(_ctx, getState()); + enterRule(_localctx, 84, RULE_catch_pattern); + try { + enterOuterAlt(_localctx, 1); + { + setState(872); + pattern(0); + setState(874); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) { + case 1: + { + setState(873); + where_clause(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Compiler_control_statementContext extends ParserRuleContext { + public Conditional_compilation_blockContext conditional_compilation_block() { + return getRuleContext(Conditional_compilation_blockContext.class,0); + } + public Line_control_statementContext line_control_statement() { + return getRuleContext(Line_control_statementContext.class,0); + } + public Diagnostic_statementContext diagnostic_statement() { + return getRuleContext(Diagnostic_statementContext.class,0); + } + public Compiler_control_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compiler_control_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCompiler_control_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCompiler_control_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCompiler_control_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Compiler_control_statementContext compiler_control_statement() throws RecognitionException { + Compiler_control_statementContext _localctx = new Compiler_control_statementContext(_ctx, getState()); + enterRule(_localctx, 86, RULE_compiler_control_statement); + try { + setState(879); + _errHandler.sync(this); + switch (_input.LA(1)) { + case HASH_IF: + enterOuterAlt(_localctx, 1); + { + setState(876); + conditional_compilation_block(); + } + break; + case SOURCE_LOCATION: + enterOuterAlt(_localctx, 2); + { + setState(877); + line_control_statement(); + } + break; + case ERROR: + case WARNING: + enterOuterAlt(_localctx, 3); + { + setState(878); + diagnostic_statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Conditional_compilation_blockContext extends ParserRuleContext { + public If_directive_clauseContext if_directive_clause() { + return getRuleContext(If_directive_clauseContext.class,0); + } + public TerminalNode HASH_ENDIF() { return getToken(Swift5Parser.HASH_ENDIF, 0); } + public Elseif_directive_clausesContext elseif_directive_clauses() { + return getRuleContext(Elseif_directive_clausesContext.class,0); + } + public Else_directive_clauseContext else_directive_clause() { + return getRuleContext(Else_directive_clauseContext.class,0); + } + public Conditional_compilation_blockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditional_compilation_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterConditional_compilation_block(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitConditional_compilation_block(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitConditional_compilation_block(this); + else return visitor.visitChildren(this); + } + } + + public final Conditional_compilation_blockContext conditional_compilation_block() throws RecognitionException { + Conditional_compilation_blockContext _localctx = new Conditional_compilation_blockContext(_ctx, getState()); + enterRule(_localctx, 88, RULE_conditional_compilation_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(881); + if_directive_clause(); + setState(883); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==HASH_ELSEIF) { + { + setState(882); + elseif_directive_clauses(); + } + } + + setState(886); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==HASH_ELSE) { + { + setState(885); + else_directive_clause(); + } + } + + setState(888); + match(HASH_ENDIF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class If_directive_clauseContext extends ParserRuleContext { + public TerminalNode HASH_IF() { return getToken(Swift5Parser.HASH_IF, 0); } + public Compilation_conditionContext compilation_condition() { + return getRuleContext(Compilation_conditionContext.class,0); + } + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public If_directive_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_if_directive_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterIf_directive_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitIf_directive_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitIf_directive_clause(this); + else return visitor.visitChildren(this); + } + } + + public final If_directive_clauseContext if_directive_clause() throws RecognitionException { + If_directive_clauseContext _localctx = new If_directive_clauseContext(_ctx, getState()); + enterRule(_localctx, 90, RULE_if_directive_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(890); + match(HASH_IF); + setState(891); + compilation_condition(0); + setState(893); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) { + case 1: + { + setState(892); + statements(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Elseif_directive_clausesContext extends ParserRuleContext { + public List elseif_directive_clause() { + return getRuleContexts(Elseif_directive_clauseContext.class); + } + public Elseif_directive_clauseContext elseif_directive_clause(int i) { + return getRuleContext(Elseif_directive_clauseContext.class,i); + } + public Elseif_directive_clausesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elseif_directive_clauses; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterElseif_directive_clauses(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitElseif_directive_clauses(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitElseif_directive_clauses(this); + else return visitor.visitChildren(this); + } + } + + public final Elseif_directive_clausesContext elseif_directive_clauses() throws RecognitionException { + Elseif_directive_clausesContext _localctx = new Elseif_directive_clausesContext(_ctx, getState()); + enterRule(_localctx, 92, RULE_elseif_directive_clauses); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(896); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(895); + elseif_directive_clause(); + } + } + setState(898); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==HASH_ELSEIF ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Elseif_directive_clauseContext extends ParserRuleContext { + public TerminalNode HASH_ELSEIF() { return getToken(Swift5Parser.HASH_ELSEIF, 0); } + public Compilation_conditionContext compilation_condition() { + return getRuleContext(Compilation_conditionContext.class,0); + } + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public Elseif_directive_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elseif_directive_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterElseif_directive_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitElseif_directive_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitElseif_directive_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Elseif_directive_clauseContext elseif_directive_clause() throws RecognitionException { + Elseif_directive_clauseContext _localctx = new Elseif_directive_clauseContext(_ctx, getState()); + enterRule(_localctx, 94, RULE_elseif_directive_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(900); + match(HASH_ELSEIF); + setState(901); + compilation_condition(0); + setState(903); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) { + case 1: + { + setState(902); + statements(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Else_directive_clauseContext extends ParserRuleContext { + public TerminalNode HASH_ELSE() { return getToken(Swift5Parser.HASH_ELSE, 0); } + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public Else_directive_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_else_directive_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterElse_directive_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitElse_directive_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitElse_directive_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Else_directive_clauseContext else_directive_clause() throws RecognitionException { + Else_directive_clauseContext _localctx = new Else_directive_clauseContext(_ctx, getState()); + enterRule(_localctx, 96, RULE_else_directive_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(905); + match(HASH_ELSE); + setState(907); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) { + case 1: + { + setState(906); + statements(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Compilation_conditionContext extends ParserRuleContext { + public Platform_conditionContext platform_condition() { + return getRuleContext(Platform_conditionContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Boolean_literalContext boolean_literal() { + return getRuleContext(Boolean_literalContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public List compilation_condition() { + return getRuleContexts(Compilation_conditionContext.class); + } + public Compilation_conditionContext compilation_condition(int i) { + return getRuleContext(Compilation_conditionContext.class,i); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public TerminalNode BANG() { return getToken(Swift5Parser.BANG, 0); } + public Compilation_condition_ANDContext compilation_condition_AND() { + return getRuleContext(Compilation_condition_ANDContext.class,0); + } + public Compilation_condition_ORContext compilation_condition_OR() { + return getRuleContext(Compilation_condition_ORContext.class,0); + } + public Compilation_conditionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compilation_condition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCompilation_condition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCompilation_condition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCompilation_condition(this); + else return visitor.visitChildren(this); + } + } + + public final Compilation_conditionContext compilation_condition() throws RecognitionException { + return compilation_condition(0); + } + + private Compilation_conditionContext compilation_condition(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + Compilation_conditionContext _localctx = new Compilation_conditionContext(_ctx, _parentState); + Compilation_conditionContext _prevctx = _localctx; + int _startState = 98; + enterRecursionRule(_localctx, 98, RULE_compilation_condition, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(919); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) { + case 1: + { + setState(910); + platform_condition(); + } + break; + case 2: + { + setState(911); + identifier(); + } + break; + case 3: + { + setState(912); + boolean_literal(); + } + break; + case 4: + { + setState(913); + match(LPAREN); + setState(914); + compilation_condition(0); + setState(915); + match(RPAREN); + } + break; + case 5: + { + setState(917); + match(BANG); + setState(918); + compilation_condition(2); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(930); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,47,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new Compilation_conditionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_compilation_condition); + setState(921); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(924); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) { + case 1: + { + setState(922); + compilation_condition_AND(); + } + break; + case 2: + { + setState(923); + compilation_condition_OR(); + } + break; + } + setState(926); + compilation_condition(2); + } + } + } + setState(932); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,47,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class Platform_conditionContext extends ParserRuleContext { + public TerminalNode OS() { return getToken(Swift5Parser.OS, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public Operating_systemContext operating_system() { + return getRuleContext(Operating_systemContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public TerminalNode ARCH() { return getToken(Swift5Parser.ARCH, 0); } + public ArchitectureContext architecture() { + return getRuleContext(ArchitectureContext.class,0); + } + public Swift_versionContext swift_version() { + return getRuleContext(Swift_versionContext.class,0); + } + public TerminalNode SWIFT() { return getToken(Swift5Parser.SWIFT, 0); } + public TerminalNode COMPILER() { return getToken(Swift5Parser.COMPILER, 0); } + public Compilation_condition_GEContext compilation_condition_GE() { + return getRuleContext(Compilation_condition_GEContext.class,0); + } + public Compilation_condition_LContext compilation_condition_L() { + return getRuleContext(Compilation_condition_LContext.class,0); + } + public TerminalNode CAN_IMPORT() { return getToken(Swift5Parser.CAN_IMPORT, 0); } + public Module_nameContext module_name() { + return getRuleContext(Module_nameContext.class,0); + } + public TerminalNode TARGET_ENVIRONMENT() { return getToken(Swift5Parser.TARGET_ENVIRONMENT, 0); } + public EnvironmentContext environment() { + return getRuleContext(EnvironmentContext.class,0); + } + public Platform_conditionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_platform_condition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPlatform_condition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPlatform_condition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPlatform_condition(this); + else return visitor.visitChildren(this); + } + } + + public final Platform_conditionContext platform_condition() throws RecognitionException { + Platform_conditionContext _localctx = new Platform_conditionContext(_ctx, getState()); + enterRule(_localctx, 100, RULE_platform_condition); + int _la; + try { + setState(962); + _errHandler.sync(this); + switch (_input.LA(1)) { + case OS: + enterOuterAlt(_localctx, 1); + { + setState(933); + match(OS); + setState(934); + match(LPAREN); + setState(935); + operating_system(); + setState(936); + match(RPAREN); + } + break; + case ARCH: + enterOuterAlt(_localctx, 2); + { + setState(938); + match(ARCH); + setState(939); + match(LPAREN); + setState(940); + architecture(); + setState(941); + match(RPAREN); + } + break; + case SWIFT: + case COMPILER: + enterOuterAlt(_localctx, 3); + { + setState(943); + _la = _input.LA(1); + if ( !(_la==SWIFT || _la==COMPILER) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(944); + match(LPAREN); + setState(947); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) { + case 1: + { + setState(945); + compilation_condition_GE(); + } + break; + case 2: + { + setState(946); + compilation_condition_L(); + } + break; + } + setState(949); + swift_version(); + setState(950); + match(RPAREN); + } + break; + case CAN_IMPORT: + enterOuterAlt(_localctx, 4); + { + setState(952); + match(CAN_IMPORT); + setState(953); + match(LPAREN); + setState(954); + module_name(); + setState(955); + match(RPAREN); + } + break; + case TARGET_ENVIRONMENT: + enterOuterAlt(_localctx, 5); + { + setState(957); + match(TARGET_ENVIRONMENT); + setState(958); + match(LPAREN); + setState(959); + environment(); + setState(960); + match(RPAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Swift_versionContext extends ParserRuleContext { + public TerminalNode Decimal_digits() { return getToken(Swift5Parser.Decimal_digits, 0); } + public Swift_version_continuationContext swift_version_continuation() { + return getRuleContext(Swift_version_continuationContext.class,0); + } + public Swift_versionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_swift_version; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSwift_version(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSwift_version(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSwift_version(this); + else return visitor.visitChildren(this); + } + } + + public final Swift_versionContext swift_version() throws RecognitionException { + Swift_versionContext _localctx = new Swift_versionContext(_ctx, getState()); + enterRule(_localctx, 102, RULE_swift_version); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(964); + match(Decimal_digits); + setState(966); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DOT) { + { + setState(965); + swift_version_continuation(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Swift_version_continuationContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public TerminalNode Decimal_digits() { return getToken(Swift5Parser.Decimal_digits, 0); } + public Swift_version_continuationContext swift_version_continuation() { + return getRuleContext(Swift_version_continuationContext.class,0); + } + public Swift_version_continuationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_swift_version_continuation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSwift_version_continuation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSwift_version_continuation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSwift_version_continuation(this); + else return visitor.visitChildren(this); + } + } + + public final Swift_version_continuationContext swift_version_continuation() throws RecognitionException { + Swift_version_continuationContext _localctx = new Swift_version_continuationContext(_ctx, getState()); + enterRule(_localctx, 104, RULE_swift_version_continuation); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(968); + match(DOT); + setState(969); + match(Decimal_digits); + setState(971); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DOT) { + { + setState(970); + swift_version_continuation(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Operating_systemContext extends ParserRuleContext { + public TerminalNode MAC_OS() { return getToken(Swift5Parser.MAC_OS, 0); } + public TerminalNode I_OS() { return getToken(Swift5Parser.I_OS, 0); } + public TerminalNode OSX() { return getToken(Swift5Parser.OSX, 0); } + public TerminalNode WATCH_OS() { return getToken(Swift5Parser.WATCH_OS, 0); } + public TerminalNode TV_OS() { return getToken(Swift5Parser.TV_OS, 0); } + public TerminalNode LINUX() { return getToken(Swift5Parser.LINUX, 0); } + public TerminalNode WINDOWS() { return getToken(Swift5Parser.WINDOWS, 0); } + public Operating_systemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_operating_system; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOperating_system(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOperating_system(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOperating_system(this); + else return visitor.visitChildren(this); + } + } + + public final Operating_systemContext operating_system() throws RecognitionException { + Operating_systemContext _localctx = new Operating_systemContext(_ctx, getState()); + enterRule(_localctx, 106, RULE_operating_system); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(973); + _la = _input.LA(1); + if ( !(((((_la - 97)) & ~0x3f) == 0 && ((1L << (_la - 97)) & ((1L << (MAC_OS - 97)) | (1L << (I_OS - 97)) | (1L << (OSX - 97)) | (1L << (WATCH_OS - 97)) | (1L << (TV_OS - 97)) | (1L << (LINUX - 97)) | (1L << (WINDOWS - 97)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArchitectureContext extends ParserRuleContext { + public TerminalNode I386() { return getToken(Swift5Parser.I386, 0); } + public TerminalNode X86_64() { return getToken(Swift5Parser.X86_64, 0); } + public TerminalNode ARM() { return getToken(Swift5Parser.ARM, 0); } + public TerminalNode ARM64() { return getToken(Swift5Parser.ARM64, 0); } + public ArchitectureContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_architecture; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterArchitecture(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitArchitecture(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitArchitecture(this); + else return visitor.visitChildren(this); + } + } + + public final ArchitectureContext architecture() throws RecognitionException { + ArchitectureContext _localctx = new ArchitectureContext(_ctx, getState()); + enterRule(_localctx, 108, RULE_architecture); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(975); + _la = _input.LA(1); + if ( !(((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (I386 - 104)) | (1L << (X86_64 - 104)) | (1L << (ARM - 104)) | (1L << (ARM64 - 104)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Module_nameContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List DOT() { return getTokens(Swift5Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Swift5Parser.DOT, i); + } + public Module_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_module_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterModule_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitModule_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitModule_name(this); + else return visitor.visitChildren(this); + } + } + + public final Module_nameContext module_name() throws RecognitionException { + Module_nameContext _localctx = new Module_nameContext(_ctx, getState()); + enterRule(_localctx, 110, RULE_module_name); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(977); + identifier(); + setState(982); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(978); + match(DOT); + setState(979); + identifier(); + } + } + setState(984); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EnvironmentContext extends ParserRuleContext { + public TerminalNode SIMULATOR() { return getToken(Swift5Parser.SIMULATOR, 0); } + public TerminalNode MAC_CATALYST() { return getToken(Swift5Parser.MAC_CATALYST, 0); } + public EnvironmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_environment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterEnvironment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitEnvironment(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitEnvironment(this); + else return visitor.visitChildren(this); + } + } + + public final EnvironmentContext environment() throws RecognitionException { + EnvironmentContext _localctx = new EnvironmentContext(_ctx, getState()); + enterRule(_localctx, 112, RULE_environment); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(985); + _la = _input.LA(1); + if ( !(_la==SIMULATOR || _la==MAC_CATALYST) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Line_control_statementContext extends ParserRuleContext { + public TerminalNode SOURCE_LOCATION() { return getToken(Swift5Parser.SOURCE_LOCATION, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public TerminalNode FILE() { return getToken(Swift5Parser.FILE, 0); } + public List COLON() { return getTokens(Swift5Parser.COLON); } + public TerminalNode COLON(int i) { + return getToken(Swift5Parser.COLON, i); + } + public File_nameContext file_name() { + return getRuleContext(File_nameContext.class,0); + } + public TerminalNode COMMA() { return getToken(Swift5Parser.COMMA, 0); } + public TerminalNode LINE() { return getToken(Swift5Parser.LINE, 0); } + public Line_numberContext line_number() { + return getRuleContext(Line_numberContext.class,0); + } + public Line_control_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_line_control_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLine_control_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLine_control_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLine_control_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Line_control_statementContext line_control_statement() throws RecognitionException { + Line_control_statementContext _localctx = new Line_control_statementContext(_ctx, getState()); + enterRule(_localctx, 114, RULE_line_control_statement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(987); + match(SOURCE_LOCATION); + setState(988); + match(LPAREN); + setState(997); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FILE) { + { + setState(989); + match(FILE); + setState(990); + match(COLON); + setState(991); + file_name(); + setState(992); + match(COMMA); + setState(993); + match(LINE); + setState(994); + match(COLON); + setState(995); + line_number(); + } + } + + setState(999); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Line_numberContext extends ParserRuleContext { + public TerminalNode Decimal_literal() { return getToken(Swift5Parser.Decimal_literal, 0); } + public Line_numberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_line_number; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLine_number(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLine_number(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLine_number(this); + else return visitor.visitChildren(this); + } + } + + public final Line_numberContext line_number() throws RecognitionException { + Line_numberContext _localctx = new Line_numberContext(_ctx, getState()); + enterRule(_localctx, 116, RULE_line_number); + try { + enterOuterAlt(_localctx, 1); + { + setState(1001); + match(Decimal_literal); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class File_nameContext extends ParserRuleContext { + public Static_string_literalContext static_string_literal() { + return getRuleContext(Static_string_literalContext.class,0); + } + public File_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_file_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFile_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFile_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFile_name(this); + else return visitor.visitChildren(this); + } + } + + public final File_nameContext file_name() throws RecognitionException { + File_nameContext _localctx = new File_nameContext(_ctx, getState()); + enterRule(_localctx, 118, RULE_file_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1003); + static_string_literal(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Diagnostic_statementContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public Diagnostic_messageContext diagnostic_message() { + return getRuleContext(Diagnostic_messageContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public TerminalNode ERROR() { return getToken(Swift5Parser.ERROR, 0); } + public TerminalNode WARNING() { return getToken(Swift5Parser.WARNING, 0); } + public Diagnostic_statementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_diagnostic_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDiagnostic_statement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDiagnostic_statement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDiagnostic_statement(this); + else return visitor.visitChildren(this); + } + } + + public final Diagnostic_statementContext diagnostic_statement() throws RecognitionException { + Diagnostic_statementContext _localctx = new Diagnostic_statementContext(_ctx, getState()); + enterRule(_localctx, 120, RULE_diagnostic_statement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1005); + _la = _input.LA(1); + if ( !(_la==ERROR || _la==WARNING) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1006); + match(LPAREN); + setState(1007); + diagnostic_message(); + setState(1008); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Diagnostic_messageContext extends ParserRuleContext { + public Static_string_literalContext static_string_literal() { + return getRuleContext(Static_string_literalContext.class,0); + } + public Diagnostic_messageContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_diagnostic_message; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDiagnostic_message(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDiagnostic_message(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDiagnostic_message(this); + else return visitor.visitChildren(this); + } + } + + public final Diagnostic_messageContext diagnostic_message() throws RecognitionException { + Diagnostic_messageContext _localctx = new Diagnostic_messageContext(_ctx, getState()); + enterRule(_localctx, 122, RULE_diagnostic_message); + try { + enterOuterAlt(_localctx, 1); + { + setState(1010); + static_string_literal(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Availability_conditionContext extends ParserRuleContext { + public TerminalNode AVAILABLE() { return getToken(Swift5Parser.AVAILABLE, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public Availability_argumentsContext availability_arguments() { + return getRuleContext(Availability_argumentsContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Availability_conditionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_availability_condition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAvailability_condition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAvailability_condition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAvailability_condition(this); + else return visitor.visitChildren(this); + } + } + + public final Availability_conditionContext availability_condition() throws RecognitionException { + Availability_conditionContext _localctx = new Availability_conditionContext(_ctx, getState()); + enterRule(_localctx, 124, RULE_availability_condition); + try { + enterOuterAlt(_localctx, 1); + { + setState(1012); + match(AVAILABLE); + setState(1013); + match(LPAREN); + setState(1014); + availability_arguments(); + setState(1015); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Availability_argumentsContext extends ParserRuleContext { + public List availability_argument() { + return getRuleContexts(Availability_argumentContext.class); + } + public Availability_argumentContext availability_argument(int i) { + return getRuleContext(Availability_argumentContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Availability_argumentsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_availability_arguments; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAvailability_arguments(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAvailability_arguments(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAvailability_arguments(this); + else return visitor.visitChildren(this); + } + } + + public final Availability_argumentsContext availability_arguments() throws RecognitionException { + Availability_argumentsContext _localctx = new Availability_argumentsContext(_ctx, getState()); + enterRule(_localctx, 126, RULE_availability_arguments); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1017); + availability_argument(); + setState(1022); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1018); + match(COMMA); + setState(1019); + availability_argument(); + } + } + setState(1024); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Availability_argumentContext extends ParserRuleContext { + public Platform_nameContext platform_name() { + return getRuleContext(Platform_nameContext.class,0); + } + public Platform_versionContext platform_version() { + return getRuleContext(Platform_versionContext.class,0); + } + public TerminalNode MUL() { return getToken(Swift5Parser.MUL, 0); } + public Availability_argumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_availability_argument; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAvailability_argument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAvailability_argument(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAvailability_argument(this); + else return visitor.visitChildren(this); + } + } + + public final Availability_argumentContext availability_argument() throws RecognitionException { + Availability_argumentContext _localctx = new Availability_argumentContext(_ctx, getState()); + enterRule(_localctx, 128, RULE_availability_argument); + try { + setState(1029); + _errHandler.sync(this); + switch (_input.LA(1)) { + case MAC_OS: + case I_OS: + case OSX: + case WATCH_OS: + case TV_OS: + case MAC_CATALYST: + case I_OS_APPLICATION_EXTENSION: + case MAC_CATALYST_APPLICATION_EXTENSION: + case MAC_OS_APPLICATION_EXTENSION: + enterOuterAlt(_localctx, 1); + { + setState(1025); + platform_name(); + setState(1026); + platform_version(); + } + break; + case MUL: + enterOuterAlt(_localctx, 2); + { + setState(1028); + match(MUL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Platform_nameContext extends ParserRuleContext { + public TerminalNode I_OS() { return getToken(Swift5Parser.I_OS, 0); } + public TerminalNode OSX() { return getToken(Swift5Parser.OSX, 0); } + public TerminalNode I_OS_APPLICATION_EXTENSION() { return getToken(Swift5Parser.I_OS_APPLICATION_EXTENSION, 0); } + public TerminalNode MAC_OS() { return getToken(Swift5Parser.MAC_OS, 0); } + public TerminalNode MAC_OS_APPLICATION_EXTENSION() { return getToken(Swift5Parser.MAC_OS_APPLICATION_EXTENSION, 0); } + public TerminalNode MAC_CATALYST() { return getToken(Swift5Parser.MAC_CATALYST, 0); } + public TerminalNode MAC_CATALYST_APPLICATION_EXTENSION() { return getToken(Swift5Parser.MAC_CATALYST_APPLICATION_EXTENSION, 0); } + public TerminalNode WATCH_OS() { return getToken(Swift5Parser.WATCH_OS, 0); } + public TerminalNode TV_OS() { return getToken(Swift5Parser.TV_OS, 0); } + public Platform_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_platform_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPlatform_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPlatform_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPlatform_name(this); + else return visitor.visitChildren(this); + } + } + + public final Platform_nameContext platform_name() throws RecognitionException { + Platform_nameContext _localctx = new Platform_nameContext(_ctx, getState()); + enterRule(_localctx, 130, RULE_platform_name); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1031); + _la = _input.LA(1); + if ( !(((((_la - 97)) & ~0x3f) == 0 && ((1L << (_la - 97)) & ((1L << (MAC_OS - 97)) | (1L << (I_OS - 97)) | (1L << (OSX - 97)) | (1L << (WATCH_OS - 97)) | (1L << (TV_OS - 97)) | (1L << (MAC_CATALYST - 97)) | (1L << (I_OS_APPLICATION_EXTENSION - 97)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 97)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 97)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Platform_versionContext extends ParserRuleContext { + public TerminalNode Decimal_literal() { return getToken(Swift5Parser.Decimal_literal, 0); } + public TerminalNode Decimal_digits() { return getToken(Swift5Parser.Decimal_digits, 0); } + public TerminalNode Floating_point_literal() { return getToken(Swift5Parser.Floating_point_literal, 0); } + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public Platform_versionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_platform_version; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPlatform_version(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPlatform_version(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPlatform_version(this); + else return visitor.visitChildren(this); + } + } + + public final Platform_versionContext platform_version() throws RecognitionException { + Platform_versionContext _localctx = new Platform_versionContext(_ctx, getState()); + enterRule(_localctx, 132, RULE_platform_version); + int _la; + try { + setState(1040); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Decimal_literal: + enterOuterAlt(_localctx, 1); + { + setState(1033); + match(Decimal_literal); + } + break; + case Decimal_digits: + enterOuterAlt(_localctx, 2); + { + setState(1034); + match(Decimal_digits); + } + break; + case Floating_point_literal: + enterOuterAlt(_localctx, 3); + { + setState(1035); + match(Floating_point_literal); + setState(1038); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DOT) { + { + setState(1036); + match(DOT); + setState(1037); + match(Decimal_digits); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Generic_parameter_clauseContext extends ParserRuleContext { + public TerminalNode LT() { return getToken(Swift5Parser.LT, 0); } + public Generic_parameter_listContext generic_parameter_list() { + return getRuleContext(Generic_parameter_listContext.class,0); + } + public TerminalNode GT() { return getToken(Swift5Parser.GT, 0); } + public Generic_parameter_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_generic_parameter_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGeneric_parameter_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGeneric_parameter_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGeneric_parameter_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Generic_parameter_clauseContext generic_parameter_clause() throws RecognitionException { + Generic_parameter_clauseContext _localctx = new Generic_parameter_clauseContext(_ctx, getState()); + enterRule(_localctx, 134, RULE_generic_parameter_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1042); + match(LT); + setState(1043); + generic_parameter_list(); + setState(1044); + match(GT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Generic_parameter_listContext extends ParserRuleContext { + public List generic_parameter() { + return getRuleContexts(Generic_parameterContext.class); + } + public Generic_parameterContext generic_parameter(int i) { + return getRuleContext(Generic_parameterContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Generic_parameter_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_generic_parameter_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGeneric_parameter_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGeneric_parameter_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGeneric_parameter_list(this); + else return visitor.visitChildren(this); + } + } + + public final Generic_parameter_listContext generic_parameter_list() throws RecognitionException { + Generic_parameter_listContext _localctx = new Generic_parameter_listContext(_ctx, getState()); + enterRule(_localctx, 136, RULE_generic_parameter_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1046); + generic_parameter(); + setState(1051); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1047); + match(COMMA); + setState(1048); + generic_parameter(); + } + } + setState(1053); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Generic_parameterContext extends ParserRuleContext { + public Type_nameContext type_name() { + return getRuleContext(Type_nameContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Type_identifierContext type_identifier() { + return getRuleContext(Type_identifierContext.class,0); + } + public Protocol_composition_typeContext protocol_composition_type() { + return getRuleContext(Protocol_composition_typeContext.class,0); + } + public Generic_parameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_generic_parameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGeneric_parameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGeneric_parameter(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGeneric_parameter(this); + else return visitor.visitChildren(this); + } + } + + public final Generic_parameterContext generic_parameter() throws RecognitionException { + Generic_parameterContext _localctx = new Generic_parameterContext(_ctx, getState()); + enterRule(_localctx, 138, RULE_generic_parameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1054); + type_name(); + setState(1060); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLON) { + { + setState(1055); + match(COLON); + setState(1058); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) { + case 1: + { + setState(1056); + type_identifier(); + } + break; + case 2: + { + setState(1057); + protocol_composition_type(); + } + break; + } + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Generic_where_clauseContext extends ParserRuleContext { + public TerminalNode WHERE() { return getToken(Swift5Parser.WHERE, 0); } + public Requirement_listContext requirement_list() { + return getRuleContext(Requirement_listContext.class,0); + } + public Generic_where_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_generic_where_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGeneric_where_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGeneric_where_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGeneric_where_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Generic_where_clauseContext generic_where_clause() throws RecognitionException { + Generic_where_clauseContext _localctx = new Generic_where_clauseContext(_ctx, getState()); + enterRule(_localctx, 140, RULE_generic_where_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1062); + match(WHERE); + setState(1063); + requirement_list(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Requirement_listContext extends ParserRuleContext { + public List requirement() { + return getRuleContexts(RequirementContext.class); + } + public RequirementContext requirement(int i) { + return getRuleContext(RequirementContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Requirement_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_requirement_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRequirement_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRequirement_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRequirement_list(this); + else return visitor.visitChildren(this); + } + } + + public final Requirement_listContext requirement_list() throws RecognitionException { + Requirement_listContext _localctx = new Requirement_listContext(_ctx, getState()); + enterRule(_localctx, 142, RULE_requirement_list); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1065); + requirement(); + setState(1070); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,61,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1066); + match(COMMA); + setState(1067); + requirement(); + } + } + } + setState(1072); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,61,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RequirementContext extends ParserRuleContext { + public Conformance_requirementContext conformance_requirement() { + return getRuleContext(Conformance_requirementContext.class,0); + } + public Same_type_requirementContext same_type_requirement() { + return getRuleContext(Same_type_requirementContext.class,0); + } + public RequirementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_requirement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRequirement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRequirement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRequirement(this); + else return visitor.visitChildren(this); + } + } + + public final RequirementContext requirement() throws RecognitionException { + RequirementContext _localctx = new RequirementContext(_ctx, getState()); + enterRule(_localctx, 144, RULE_requirement); + try { + setState(1075); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1073); + conformance_requirement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1074); + same_type_requirement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Conformance_requirementContext extends ParserRuleContext { + public List type_identifier() { + return getRuleContexts(Type_identifierContext.class); + } + public Type_identifierContext type_identifier(int i) { + return getRuleContext(Type_identifierContext.class,i); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Protocol_composition_typeContext protocol_composition_type() { + return getRuleContext(Protocol_composition_typeContext.class,0); + } + public Conformance_requirementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conformance_requirement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterConformance_requirement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitConformance_requirement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitConformance_requirement(this); + else return visitor.visitChildren(this); + } + } + + public final Conformance_requirementContext conformance_requirement() throws RecognitionException { + Conformance_requirementContext _localctx = new Conformance_requirementContext(_ctx, getState()); + enterRule(_localctx, 146, RULE_conformance_requirement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1077); + type_identifier(); + setState(1078); + match(COLON); + setState(1081); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) { + case 1: + { + setState(1079); + type_identifier(); + } + break; + case 2: + { + setState(1080); + protocol_composition_type(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Same_type_requirementContext extends ParserRuleContext { + public List type_identifier() { + return getRuleContexts(Type_identifierContext.class); + } + public Type_identifierContext type_identifier(int i) { + return getRuleContext(Type_identifierContext.class,i); + } + public Same_type_equalsContext same_type_equals() { + return getRuleContext(Same_type_equalsContext.class,0); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public Same_type_requirementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_same_type_requirement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSame_type_requirement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSame_type_requirement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSame_type_requirement(this); + else return visitor.visitChildren(this); + } + } + + public final Same_type_requirementContext same_type_requirement() throws RecognitionException { + Same_type_requirementContext _localctx = new Same_type_requirementContext(_ctx, getState()); + enterRule(_localctx, 148, RULE_same_type_requirement); + try { + enterOuterAlt(_localctx, 1); + { + setState(1083); + type_identifier(); + setState(1084); + same_type_equals(); + setState(1087); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) { + case 1: + { + setState(1085); + type_identifier(); + } + break; + case 2: + { + setState(1086); + type(0); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Generic_argument_clauseContext extends ParserRuleContext { + public TerminalNode LT() { return getToken(Swift5Parser.LT, 0); } + public Generic_argument_listContext generic_argument_list() { + return getRuleContext(Generic_argument_listContext.class,0); + } + public TerminalNode GT() { return getToken(Swift5Parser.GT, 0); } + public Generic_argument_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_generic_argument_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGeneric_argument_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGeneric_argument_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGeneric_argument_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Generic_argument_clauseContext generic_argument_clause() throws RecognitionException { + Generic_argument_clauseContext _localctx = new Generic_argument_clauseContext(_ctx, getState()); + enterRule(_localctx, 150, RULE_generic_argument_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1089); + match(LT); + setState(1090); + generic_argument_list(); + setState(1091); + match(GT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Generic_argument_listContext extends ParserRuleContext { + public List generic_argument() { + return getRuleContexts(Generic_argumentContext.class); + } + public Generic_argumentContext generic_argument(int i) { + return getRuleContext(Generic_argumentContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Generic_argument_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_generic_argument_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGeneric_argument_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGeneric_argument_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGeneric_argument_list(this); + else return visitor.visitChildren(this); + } + } + + public final Generic_argument_listContext generic_argument_list() throws RecognitionException { + Generic_argument_listContext _localctx = new Generic_argument_listContext(_ctx, getState()); + enterRule(_localctx, 152, RULE_generic_argument_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1093); + generic_argument(); + setState(1098); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1094); + match(COMMA); + setState(1095); + generic_argument(); + } + } + setState(1100); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Generic_argumentContext extends ParserRuleContext { + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public Generic_argumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_generic_argument; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGeneric_argument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGeneric_argument(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGeneric_argument(this); + else return visitor.visitChildren(this); + } + } + + public final Generic_argumentContext generic_argument() throws RecognitionException { + Generic_argumentContext _localctx = new Generic_argumentContext(_ctx, getState()); + enterRule(_localctx, 154, RULE_generic_argument); + try { + enterOuterAlt(_localctx, 1); + { + setState(1101); + type(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DeclarationContext extends ParserRuleContext { + public Import_declarationContext import_declaration() { + return getRuleContext(Import_declarationContext.class,0); + } + public Constant_declarationContext constant_declaration() { + return getRuleContext(Constant_declarationContext.class,0); + } + public Variable_declarationContext variable_declaration() { + return getRuleContext(Variable_declarationContext.class,0); + } + public Typealias_declarationContext typealias_declaration() { + return getRuleContext(Typealias_declarationContext.class,0); + } + public Function_declarationContext function_declaration() { + return getRuleContext(Function_declarationContext.class,0); + } + public Enum_declarationContext enum_declaration() { + return getRuleContext(Enum_declarationContext.class,0); + } + public Struct_declarationContext struct_declaration() { + return getRuleContext(Struct_declarationContext.class,0); + } + public Class_declarationContext class_declaration() { + return getRuleContext(Class_declarationContext.class,0); + } + public Protocol_declarationContext protocol_declaration() { + return getRuleContext(Protocol_declarationContext.class,0); + } + public Initializer_declarationContext initializer_declaration() { + return getRuleContext(Initializer_declarationContext.class,0); + } + public Deinitializer_declarationContext deinitializer_declaration() { + return getRuleContext(Deinitializer_declarationContext.class,0); + } + public Extension_declarationContext extension_declaration() { + return getRuleContext(Extension_declarationContext.class,0); + } + public Subscript_declarationContext subscript_declaration() { + return getRuleContext(Subscript_declarationContext.class,0); + } + public Operator_declarationContext operator_declaration() { + return getRuleContext(Operator_declarationContext.class,0); + } + public Precedence_group_declarationContext precedence_group_declaration() { + return getRuleContext(Precedence_group_declarationContext.class,0); + } + public TerminalNode SEMI() { return getToken(Swift5Parser.SEMI, 0); } + public DeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDeclaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDeclaration(this); + else return visitor.visitChildren(this); + } + } + + public final DeclarationContext declaration() throws RecognitionException { + DeclarationContext _localctx = new DeclarationContext(_ctx, getState()); + enterRule(_localctx, 156, RULE_declaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(1118); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) { + case 1: + { + setState(1103); + import_declaration(); + } + break; + case 2: + { + setState(1104); + constant_declaration(); + } + break; + case 3: + { + setState(1105); + variable_declaration(); + } + break; + case 4: + { + setState(1106); + typealias_declaration(); + } + break; + case 5: + { + setState(1107); + function_declaration(); + } + break; + case 6: + { + setState(1108); + enum_declaration(); + } + break; + case 7: + { + setState(1109); + struct_declaration(); + } + break; + case 8: + { + setState(1110); + class_declaration(); + } + break; + case 9: + { + setState(1111); + protocol_declaration(); + } + break; + case 10: + { + setState(1112); + initializer_declaration(); + } + break; + case 11: + { + setState(1113); + deinitializer_declaration(); + } + break; + case 12: + { + setState(1114); + extension_declaration(); + } + break; + case 13: + { + setState(1115); + subscript_declaration(); + } + break; + case 14: + { + setState(1116); + operator_declaration(); + } + break; + case 15: + { + setState(1117); + precedence_group_declaration(); + } + break; + } + setState(1121); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) { + case 1: + { + setState(1120); + match(SEMI); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DeclarationsContext extends ParserRuleContext { + public List declaration() { + return getRuleContexts(DeclarationContext.class); + } + public DeclarationContext declaration(int i) { + return getRuleContext(DeclarationContext.class,i); + } + public DeclarationsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_declarations; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDeclarations(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDeclarations(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDeclarations(this); + else return visitor.visitChildren(this); + } + } + + public final DeclarationsContext declarations() throws RecognitionException { + DeclarationsContext _localctx = new DeclarationsContext(_ctx, getState()); + enterRule(_localctx, 158, RULE_declarations); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1124); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1123); + declaration(); + } + } + setState(1126); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << ENUM) | (1L << FUNC) | (1L << IMPORT) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << LET) | (1L << VAR) | (1L << PROTOCOL) | (1L << STRUCT) | (1L << INDIRECT) | (1L << INIT) | (1L << DEINIT) | (1L << EXTENSION) | (1L << SUBSCRIPT) | (1L << PREFIX) | (1L << INFIX) | (1L << PRECEDENCE_GROUP) | (1L << POSTFIX) | (1L << TYPEALIAS))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)))) != 0) || _la==AT ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Top_level_declarationContext extends ParserRuleContext { + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public Top_level_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_top_level_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTop_level_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTop_level_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTop_level_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Top_level_declarationContext top_level_declaration() throws RecognitionException { + Top_level_declarationContext _localctx = new Top_level_declarationContext(_ctx, getState()); + enterRule(_localctx, 160, RULE_top_level_declaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(1129); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,69,_ctx) ) { + case 1: + { + setState(1128); + statements(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Code_blockContext extends ParserRuleContext { + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public Code_blockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_code_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCode_block(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCode_block(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCode_block(this); + else return visitor.visitChildren(this); + } + } + + public final Code_blockContext code_block() throws RecognitionException { + Code_blockContext _localctx = new Code_blockContext(_ctx, getState()); + enterRule(_localctx, 162, RULE_code_block); + try { + enterOuterAlt(_localctx, 1); + { + setState(1131); + match(LCURLY); + setState(1133); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) { + case 1: + { + setState(1132); + statements(); + } + break; + } + setState(1135); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Import_declarationContext extends ParserRuleContext { + public TerminalNode IMPORT() { return getToken(Swift5Parser.IMPORT, 0); } + public Import_pathContext import_path() { + return getRuleContext(Import_pathContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Import_kindContext import_kind() { + return getRuleContext(Import_kindContext.class,0); + } + public Import_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_import_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterImport_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitImport_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitImport_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Import_declarationContext import_declaration() throws RecognitionException { + Import_declarationContext _localctx = new Import_declarationContext(_ctx, getState()); + enterRule(_localctx, 164, RULE_import_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1138); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1137); + attributes(); + } + } + + setState(1140); + match(IMPORT); + setState(1142); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) { + case 1: + { + setState(1141); + import_kind(); + } + break; + } + setState(1144); + import_path(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Import_kindContext extends ParserRuleContext { + public TerminalNode TYPEALIAS() { return getToken(Swift5Parser.TYPEALIAS, 0); } + public TerminalNode STRUCT() { return getToken(Swift5Parser.STRUCT, 0); } + public TerminalNode CLASS() { return getToken(Swift5Parser.CLASS, 0); } + public TerminalNode ENUM() { return getToken(Swift5Parser.ENUM, 0); } + public TerminalNode PROTOCOL() { return getToken(Swift5Parser.PROTOCOL, 0); } + public TerminalNode LET() { return getToken(Swift5Parser.LET, 0); } + public TerminalNode VAR() { return getToken(Swift5Parser.VAR, 0); } + public TerminalNode FUNC() { return getToken(Swift5Parser.FUNC, 0); } + public Import_kindContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_import_kind; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterImport_kind(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitImport_kind(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitImport_kind(this); + else return visitor.visitChildren(this); + } + } + + public final Import_kindContext import_kind() throws RecognitionException { + Import_kindContext _localctx = new Import_kindContext(_ctx, getState()); + enterRule(_localctx, 166, RULE_import_kind); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1146); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << ENUM) | (1L << FUNC) | (1L << LET) | (1L << VAR) | (1L << PROTOCOL) | (1L << STRUCT) | (1L << TYPEALIAS))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Import_pathContext extends ParserRuleContext { + public List import_path_identifier() { + return getRuleContexts(Import_path_identifierContext.class); + } + public Import_path_identifierContext import_path_identifier(int i) { + return getRuleContext(Import_path_identifierContext.class,i); + } + public List DOT() { return getTokens(Swift5Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Swift5Parser.DOT, i); + } + public Import_pathContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_import_path; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterImport_path(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitImport_path(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitImport_path(this); + else return visitor.visitChildren(this); + } + } + + public final Import_pathContext import_path() throws RecognitionException { + Import_pathContext _localctx = new Import_pathContext(_ctx, getState()); + enterRule(_localctx, 168, RULE_import_path); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1148); + import_path_identifier(); + setState(1153); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,73,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1149); + match(DOT); + setState(1150); + import_path_identifier(); + } + } + } + setState(1155); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,73,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Import_path_identifierContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Import_path_identifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_import_path_identifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterImport_path_identifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitImport_path_identifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitImport_path_identifier(this); + else return visitor.visitChildren(this); + } + } + + public final Import_path_identifierContext import_path_identifier() throws RecognitionException { + Import_path_identifierContext _localctx = new Import_path_identifierContext(_ctx, getState()); + enterRule(_localctx, 170, RULE_import_path_identifier); + try { + setState(1158); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AS: + case ALPHA: + case CATCH: + case CLASS: + case DEFAULT: + case DO: + case GUARD: + case FOR: + case IN: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case WHERE: + case WHILE: + case PROTOCOL: + case GET: + case SET: + case WILL_SET: + case DID_SET: + case INDIRECT: + case PREFIX: + case INFIX: + case LEFT: + case RIGHT: + case NONE: + case PRECEDENCE_GROUP: + case HIGHER_THAN: + case LOWER_THAN: + case ASSIGNMENT: + case ASSOCIATIVITY: + case POSTFIX: + case OPERATOR: + case OS: + case ARCH: + case SWIFT: + case COMPILER: + case CAN_IMPORT: + case TARGET_ENVIRONMENT: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case WEAK: + case UNOWNED: + case SAFE: + case UNSAFE: + case MUTATING: + case NONMUTATING: + case RED: + case BLUE: + case GREEN: + case RESOURCE_NAME: + case SOME: + case TYPE: + case PRECEDENCE: + case SELF: + case SELF_BIG: + case MAC_OS: + case I_OS: + case OSX: + case WATCH_OS: + case TV_OS: + case LINUX: + case WINDOWS: + case I386: + case X86_64: + case ARM: + case ARM64: + case SIMULATOR: + case MAC_CATALYST: + case I_OS_APPLICATION_EXTENSION: + case MAC_CATALYST_APPLICATION_EXTENSION: + case MAC_OS_APPLICATION_EXTENSION: + case FILE: + case LINE: + case GETTER: + case SETTER: + case Identifier: + case BACKTICK: + enterOuterAlt(_localctx, 1); + { + setState(1156); + identifier(); + } + break; + case DOT: + case LT: + case GT: + case BANG: + case QUESTION: + case AND: + case SUB: + case EQUAL: + case OR: + case DIV: + case ADD: + case MUL: + case MOD: + case CARET: + case TILDE: + case Operator_head_other: + enterOuterAlt(_localctx, 2); + { + setState(1157); + operator(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Constant_declarationContext extends ParserRuleContext { + public TerminalNode LET() { return getToken(Swift5Parser.LET, 0); } + public Pattern_initializer_listContext pattern_initializer_list() { + return getRuleContext(Pattern_initializer_listContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Declaration_modifiersContext declaration_modifiers() { + return getRuleContext(Declaration_modifiersContext.class,0); + } + public Constant_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constant_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterConstant_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitConstant_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitConstant_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Constant_declarationContext constant_declaration() throws RecognitionException { + Constant_declarationContext _localctx = new Constant_declarationContext(_ctx, getState()); + enterRule(_localctx, 172, RULE_constant_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1161); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1160); + attributes(); + } + } + + setState(1164); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << PREFIX) | (1L << INFIX) | (1L << POSTFIX))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)))) != 0)) { + { + setState(1163); + declaration_modifiers(); + } + } + + setState(1166); + match(LET); + setState(1167); + pattern_initializer_list(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Pattern_initializer_listContext extends ParserRuleContext { + public List pattern_initializer() { + return getRuleContexts(Pattern_initializerContext.class); + } + public Pattern_initializerContext pattern_initializer(int i) { + return getRuleContext(Pattern_initializerContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Pattern_initializer_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_pattern_initializer_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPattern_initializer_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPattern_initializer_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPattern_initializer_list(this); + else return visitor.visitChildren(this); + } + } + + public final Pattern_initializer_listContext pattern_initializer_list() throws RecognitionException { + Pattern_initializer_listContext _localctx = new Pattern_initializer_listContext(_ctx, getState()); + enterRule(_localctx, 174, RULE_pattern_initializer_list); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1169); + pattern_initializer(); + setState(1174); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,77,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1170); + match(COMMA); + setState(1171); + pattern_initializer(); + } + } + } + setState(1176); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,77,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Pattern_initializerContext extends ParserRuleContext { + public PatternContext pattern() { + return getRuleContext(PatternContext.class,0); + } + public InitializerContext initializer() { + return getRuleContext(InitializerContext.class,0); + } + public Pattern_initializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_pattern_initializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPattern_initializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPattern_initializer(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPattern_initializer(this); + else return visitor.visitChildren(this); + } + } + + public final Pattern_initializerContext pattern_initializer() throws RecognitionException { + Pattern_initializerContext _localctx = new Pattern_initializerContext(_ctx, getState()); + enterRule(_localctx, 176, RULE_pattern_initializer); + try { + enterOuterAlt(_localctx, 1); + { + setState(1177); + pattern(0); + setState(1179); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) { + case 1: + { + setState(1178); + initializer(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InitializerContext extends ParserRuleContext { + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public InitializerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_initializer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterInitializer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitInitializer(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitInitializer(this); + else return visitor.visitChildren(this); + } + } + + public final InitializerContext initializer() throws RecognitionException { + InitializerContext _localctx = new InitializerContext(_ctx, getState()); + enterRule(_localctx, 178, RULE_initializer); + try { + enterOuterAlt(_localctx, 1); + { + setState(1181); + match(EQUAL); + setState(1182); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Variable_declarationContext extends ParserRuleContext { + public Variable_declaration_headContext variable_declaration_head() { + return getRuleContext(Variable_declaration_headContext.class,0); + } + public Variable_nameContext variable_name() { + return getRuleContext(Variable_nameContext.class,0); + } + public Pattern_initializer_listContext pattern_initializer_list() { + return getRuleContext(Pattern_initializer_listContext.class,0); + } + public InitializerContext initializer() { + return getRuleContext(InitializerContext.class,0); + } + public WillSet_didSet_blockContext willSet_didSet_block() { + return getRuleContext(WillSet_didSet_blockContext.class,0); + } + public Type_annotationContext type_annotation() { + return getRuleContext(Type_annotationContext.class,0); + } + public Getter_setter_blockContext getter_setter_block() { + return getRuleContext(Getter_setter_blockContext.class,0); + } + public Getter_setter_keyword_blockContext getter_setter_keyword_block() { + return getRuleContext(Getter_setter_keyword_blockContext.class,0); + } + public Variable_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variable_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterVariable_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitVariable_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitVariable_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Variable_declarationContext variable_declaration() throws RecognitionException { + Variable_declarationContext _localctx = new Variable_declarationContext(_ctx, getState()); + enterRule(_localctx, 180, RULE_variable_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1184); + variable_declaration_head(); + setState(1201); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,82,_ctx) ) { + case 1: + { + setState(1185); + variable_name(); + setState(1198); + _errHandler.sync(this); + switch (_input.LA(1)) { + case EQUAL: + { + setState(1186); + initializer(); + setState(1187); + willSet_didSet_block(); + } + break; + case COLON: + { + setState(1189); + type_annotation(); + setState(1196); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) { + case 1: + { + setState(1190); + getter_setter_block(); + } + break; + case 2: + { + setState(1191); + getter_setter_keyword_block(); + } + break; + case 3: + { + setState(1193); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQUAL) { + { + setState(1192); + initializer(); + } + } + + setState(1195); + willSet_didSet_block(); + } + break; + } + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 2: + { + setState(1200); + pattern_initializer_list(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Variable_declaration_headContext extends ParserRuleContext { + public TerminalNode VAR() { return getToken(Swift5Parser.VAR, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Declaration_modifiersContext declaration_modifiers() { + return getRuleContext(Declaration_modifiersContext.class,0); + } + public Variable_declaration_headContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variable_declaration_head; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterVariable_declaration_head(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitVariable_declaration_head(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitVariable_declaration_head(this); + else return visitor.visitChildren(this); + } + } + + public final Variable_declaration_headContext variable_declaration_head() throws RecognitionException { + Variable_declaration_headContext _localctx = new Variable_declaration_headContext(_ctx, getState()); + enterRule(_localctx, 182, RULE_variable_declaration_head); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1204); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1203); + attributes(); + } + } + + setState(1207); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << PREFIX) | (1L << INFIX) | (1L << POSTFIX))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)))) != 0)) { + { + setState(1206); + declaration_modifiers(); + } + } + + setState(1209); + match(VAR); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Variable_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Variable_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variable_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterVariable_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitVariable_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitVariable_name(this); + else return visitor.visitChildren(this); + } + } + + public final Variable_nameContext variable_name() throws RecognitionException { + Variable_nameContext _localctx = new Variable_nameContext(_ctx, getState()); + enterRule(_localctx, 184, RULE_variable_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1211); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Getter_setter_blockContext extends ParserRuleContext { + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Getter_clauseContext getter_clause() { + return getRuleContext(Getter_clauseContext.class,0); + } + public Setter_clauseContext setter_clause() { + return getRuleContext(Setter_clauseContext.class,0); + } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Getter_setter_blockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_getter_setter_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGetter_setter_block(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGetter_setter_block(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGetter_setter_block(this); + else return visitor.visitChildren(this); + } + } + + public final Getter_setter_blockContext getter_setter_block() throws RecognitionException { + Getter_setter_blockContext _localctx = new Getter_setter_blockContext(_ctx, getState()); + enterRule(_localctx, 186, RULE_getter_setter_block); + int _la; + try { + setState(1226); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1213); + match(LCURLY); + setState(1221); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) { + case 1: + { + setState(1214); + getter_clause(); + setState(1216); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (SET - 31)) | (1L << (MUTATING - 31)) | (1L << (NONMUTATING - 31)))) != 0) || _la==AT) { + { + setState(1215); + setter_clause(); + } + } + + } + break; + case 2: + { + setState(1218); + setter_clause(); + setState(1219); + getter_clause(); + } + break; + } + setState(1223); + match(RCURLY); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1225); + code_block(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Getter_clauseContext extends ParserRuleContext { + public TerminalNode GET() { return getToken(Swift5Parser.GET, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Mutation_modifierContext mutation_modifier() { + return getRuleContext(Mutation_modifierContext.class,0); + } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Getter_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_getter_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGetter_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGetter_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGetter_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Getter_clauseContext getter_clause() throws RecognitionException { + Getter_clauseContext _localctx = new Getter_clauseContext(_ctx, getState()); + enterRule(_localctx, 188, RULE_getter_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1229); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1228); + attributes(); + } + } + + setState(1232); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MUTATING || _la==NONMUTATING) { + { + setState(1231); + mutation_modifier(); + } + } + + setState(1234); + match(GET); + setState(1236); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LCURLY) { + { + setState(1235); + code_block(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Setter_clauseContext extends ParserRuleContext { + public TerminalNode SET() { return getToken(Swift5Parser.SET, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Mutation_modifierContext mutation_modifier() { + return getRuleContext(Mutation_modifierContext.class,0); + } + public Setter_nameContext setter_name() { + return getRuleContext(Setter_nameContext.class,0); + } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Setter_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_setter_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSetter_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSetter_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSetter_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Setter_clauseContext setter_clause() throws RecognitionException { + Setter_clauseContext _localctx = new Setter_clauseContext(_ctx, getState()); + enterRule(_localctx, 190, RULE_setter_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1239); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1238); + attributes(); + } + } + + setState(1242); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MUTATING || _la==NONMUTATING) { + { + setState(1241); + mutation_modifier(); + } + } + + setState(1244); + match(SET); + setState(1246); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(1245); + setter_name(); + } + } + + setState(1249); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LCURLY) { + { + setState(1248); + code_block(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Setter_nameContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Setter_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_setter_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSetter_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSetter_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSetter_name(this); + else return visitor.visitChildren(this); + } + } + + public final Setter_nameContext setter_name() throws RecognitionException { + Setter_nameContext _localctx = new Setter_nameContext(_ctx, getState()); + enterRule(_localctx, 192, RULE_setter_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1251); + match(LPAREN); + setState(1252); + identifier(); + setState(1253); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Getter_setter_keyword_blockContext extends ParserRuleContext { + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Getter_keyword_clauseContext getter_keyword_clause() { + return getRuleContext(Getter_keyword_clauseContext.class,0); + } + public Setter_keyword_clauseContext setter_keyword_clause() { + return getRuleContext(Setter_keyword_clauseContext.class,0); + } + public Getter_setter_keyword_blockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_getter_setter_keyword_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGetter_setter_keyword_block(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGetter_setter_keyword_block(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGetter_setter_keyword_block(this); + else return visitor.visitChildren(this); + } + } + + public final Getter_setter_keyword_blockContext getter_setter_keyword_block() throws RecognitionException { + Getter_setter_keyword_blockContext _localctx = new Getter_setter_keyword_blockContext(_ctx, getState()); + enterRule(_localctx, 194, RULE_getter_setter_keyword_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1255); + match(LCURLY); + setState(1263); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,96,_ctx) ) { + case 1: + { + setState(1256); + getter_keyword_clause(); + setState(1258); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (SET - 31)) | (1L << (MUTATING - 31)) | (1L << (NONMUTATING - 31)))) != 0) || _la==AT) { + { + setState(1257); + setter_keyword_clause(); + } + } + + } + break; + case 2: + { + setState(1260); + setter_keyword_clause(); + setState(1261); + getter_keyword_clause(); + } + break; + } + setState(1265); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Getter_keyword_clauseContext extends ParserRuleContext { + public TerminalNode GET() { return getToken(Swift5Parser.GET, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Mutation_modifierContext mutation_modifier() { + return getRuleContext(Mutation_modifierContext.class,0); + } + public Getter_keyword_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_getter_keyword_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterGetter_keyword_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitGetter_keyword_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitGetter_keyword_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Getter_keyword_clauseContext getter_keyword_clause() throws RecognitionException { + Getter_keyword_clauseContext _localctx = new Getter_keyword_clauseContext(_ctx, getState()); + enterRule(_localctx, 196, RULE_getter_keyword_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1268); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1267); + attributes(); + } + } + + setState(1271); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MUTATING || _la==NONMUTATING) { + { + setState(1270); + mutation_modifier(); + } + } + + setState(1273); + match(GET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Setter_keyword_clauseContext extends ParserRuleContext { + public TerminalNode SET() { return getToken(Swift5Parser.SET, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Mutation_modifierContext mutation_modifier() { + return getRuleContext(Mutation_modifierContext.class,0); + } + public Setter_keyword_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_setter_keyword_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSetter_keyword_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSetter_keyword_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSetter_keyword_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Setter_keyword_clauseContext setter_keyword_clause() throws RecognitionException { + Setter_keyword_clauseContext _localctx = new Setter_keyword_clauseContext(_ctx, getState()); + enterRule(_localctx, 198, RULE_setter_keyword_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1276); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1275); + attributes(); + } + } + + setState(1279); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MUTATING || _la==NONMUTATING) { + { + setState(1278); + mutation_modifier(); + } + } + + setState(1281); + match(SET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WillSet_didSet_blockContext extends ParserRuleContext { + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public WillSet_clauseContext willSet_clause() { + return getRuleContext(WillSet_clauseContext.class,0); + } + public DidSet_clauseContext didSet_clause() { + return getRuleContext(DidSet_clauseContext.class,0); + } + public WillSet_didSet_blockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_willSet_didSet_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterWillSet_didSet_block(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitWillSet_didSet_block(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitWillSet_didSet_block(this); + else return visitor.visitChildren(this); + } + } + + public final WillSet_didSet_blockContext willSet_didSet_block() throws RecognitionException { + WillSet_didSet_blockContext _localctx = new WillSet_didSet_blockContext(_ctx, getState()); + enterRule(_localctx, 200, RULE_willSet_didSet_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1283); + match(LCURLY); + setState(1292); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) { + case 1: + { + setState(1284); + willSet_clause(); + setState(1286); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DID_SET || _la==AT) { + { + setState(1285); + didSet_clause(); + } + } + + } + break; + case 2: + { + setState(1288); + didSet_clause(); + setState(1290); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WILL_SET || _la==AT) { + { + setState(1289); + willSet_clause(); + } + } + + } + break; + } + setState(1294); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class WillSet_clauseContext extends ParserRuleContext { + public TerminalNode WILL_SET() { return getToken(Swift5Parser.WILL_SET, 0); } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Setter_nameContext setter_name() { + return getRuleContext(Setter_nameContext.class,0); + } + public WillSet_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_willSet_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterWillSet_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitWillSet_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitWillSet_clause(this); + else return visitor.visitChildren(this); + } + } + + public final WillSet_clauseContext willSet_clause() throws RecognitionException { + WillSet_clauseContext _localctx = new WillSet_clauseContext(_ctx, getState()); + enterRule(_localctx, 202, RULE_willSet_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1297); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1296); + attributes(); + } + } + + setState(1299); + match(WILL_SET); + setState(1301); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(1300); + setter_name(); + } + } + + setState(1303); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DidSet_clauseContext extends ParserRuleContext { + public TerminalNode DID_SET() { return getToken(Swift5Parser.DID_SET, 0); } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Setter_nameContext setter_name() { + return getRuleContext(Setter_nameContext.class,0); + } + public DidSet_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_didSet_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDidSet_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDidSet_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDidSet_clause(this); + else return visitor.visitChildren(this); + } + } + + public final DidSet_clauseContext didSet_clause() throws RecognitionException { + DidSet_clauseContext _localctx = new DidSet_clauseContext(_ctx, getState()); + enterRule(_localctx, 204, RULE_didSet_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1306); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1305); + attributes(); + } + } + + setState(1308); + match(DID_SET); + setState(1310); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(1309); + setter_name(); + } + } + + setState(1312); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Typealias_declarationContext extends ParserRuleContext { + public TerminalNode TYPEALIAS() { return getToken(Swift5Parser.TYPEALIAS, 0); } + public Typealias_nameContext typealias_name() { + return getRuleContext(Typealias_nameContext.class,0); + } + public Typealias_assignmentContext typealias_assignment() { + return getRuleContext(Typealias_assignmentContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Access_level_modifierContext access_level_modifier() { + return getRuleContext(Access_level_modifierContext.class,0); + } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Typealias_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typealias_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTypealias_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTypealias_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTypealias_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Typealias_declarationContext typealias_declaration() throws RecognitionException { + Typealias_declarationContext _localctx = new Typealias_declarationContext(_ctx, getState()); + enterRule(_localctx, 206, RULE_typealias_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1315); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1314); + attributes(); + } + } + + setState(1318); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 20)) & ~0x3f) == 0 && ((1L << (_la - 20)) & ((1L << (INTERNAL - 20)) | (1L << (OPEN - 20)) | (1L << (PRIVATE - 20)) | (1L << (PUBLIC - 20)) | (1L << (FILE_PRIVATE - 20)))) != 0)) { + { + setState(1317); + access_level_modifier(); + } + } + + setState(1320); + match(TYPEALIAS); + setState(1321); + typealias_name(); + setState(1323); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1322); + generic_parameter_clause(); + } + } + + setState(1325); + typealias_assignment(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Typealias_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Typealias_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typealias_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTypealias_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTypealias_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTypealias_name(this); + else return visitor.visitChildren(this); + } + } + + public final Typealias_nameContext typealias_name() throws RecognitionException { + Typealias_nameContext _localctx = new Typealias_nameContext(_ctx, getState()); + enterRule(_localctx, 208, RULE_typealias_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1327); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Typealias_assignmentContext extends ParserRuleContext { + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public Typealias_assignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typealias_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTypealias_assignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTypealias_assignment(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTypealias_assignment(this); + else return visitor.visitChildren(this); + } + } + + public final Typealias_assignmentContext typealias_assignment() throws RecognitionException { + Typealias_assignmentContext _localctx = new Typealias_assignmentContext(_ctx, getState()); + enterRule(_localctx, 210, RULE_typealias_assignment); + try { + enterOuterAlt(_localctx, 1); + { + setState(1329); + match(EQUAL); + setState(1330); + type(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_declarationContext extends ParserRuleContext { + public Function_headContext function_head() { + return getRuleContext(Function_headContext.class,0); + } + public Function_nameContext function_name() { + return getRuleContext(Function_nameContext.class,0); + } + public Function_signatureContext function_signature() { + return getRuleContext(Function_signatureContext.class,0); + } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Function_bodyContext function_body() { + return getRuleContext(Function_bodyContext.class,0); + } + public Function_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Function_declarationContext function_declaration() throws RecognitionException { + Function_declarationContext _localctx = new Function_declarationContext(_ctx, getState()); + enterRule(_localctx, 212, RULE_function_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1332); + function_head(); + setState(1333); + function_name(); + setState(1335); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1334); + generic_parameter_clause(); + } + } + + setState(1337); + function_signature(); + setState(1339); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) { + case 1: + { + setState(1338); + generic_where_clause(); + } + break; + } + setState(1342); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) { + case 1: + { + setState(1341); + function_body(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_headContext extends ParserRuleContext { + public TerminalNode FUNC() { return getToken(Swift5Parser.FUNC, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Declaration_modifiersContext declaration_modifiers() { + return getRuleContext(Declaration_modifiersContext.class,0); + } + public Function_headContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_head; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_head(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_head(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_head(this); + else return visitor.visitChildren(this); + } + } + + public final Function_headContext function_head() throws RecognitionException { + Function_headContext _localctx = new Function_headContext(_ctx, getState()); + enterRule(_localctx, 214, RULE_function_head); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1345); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1344); + attributes(); + } + } + + setState(1348); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << PREFIX) | (1L << INFIX) | (1L << POSTFIX))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)))) != 0)) { + { + setState(1347); + declaration_modifiers(); + } + } + + setState(1350); + match(FUNC); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Function_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_name(this); + else return visitor.visitChildren(this); + } + } + + public final Function_nameContext function_name() throws RecognitionException { + Function_nameContext _localctx = new Function_nameContext(_ctx, getState()); + enterRule(_localctx, 216, RULE_function_name); + try { + setState(1354); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AS: + case ALPHA: + case CATCH: + case CLASS: + case DEFAULT: + case DO: + case GUARD: + case FOR: + case IN: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case WHERE: + case WHILE: + case PROTOCOL: + case GET: + case SET: + case WILL_SET: + case DID_SET: + case INDIRECT: + case PREFIX: + case INFIX: + case LEFT: + case RIGHT: + case NONE: + case PRECEDENCE_GROUP: + case HIGHER_THAN: + case LOWER_THAN: + case ASSIGNMENT: + case ASSOCIATIVITY: + case POSTFIX: + case OPERATOR: + case OS: + case ARCH: + case SWIFT: + case COMPILER: + case CAN_IMPORT: + case TARGET_ENVIRONMENT: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case WEAK: + case UNOWNED: + case SAFE: + case UNSAFE: + case MUTATING: + case NONMUTATING: + case RED: + case BLUE: + case GREEN: + case RESOURCE_NAME: + case SOME: + case TYPE: + case PRECEDENCE: + case SELF: + case SELF_BIG: + case MAC_OS: + case I_OS: + case OSX: + case WATCH_OS: + case TV_OS: + case LINUX: + case WINDOWS: + case I386: + case X86_64: + case ARM: + case ARM64: + case SIMULATOR: + case MAC_CATALYST: + case I_OS_APPLICATION_EXTENSION: + case MAC_CATALYST_APPLICATION_EXTENSION: + case MAC_OS_APPLICATION_EXTENSION: + case FILE: + case LINE: + case GETTER: + case SETTER: + case Identifier: + case BACKTICK: + enterOuterAlt(_localctx, 1); + { + setState(1352); + identifier(); + } + break; + case DOT: + case LT: + case GT: + case BANG: + case QUESTION: + case AND: + case SUB: + case EQUAL: + case OR: + case DIV: + case ADD: + case MUL: + case MOD: + case CARET: + case TILDE: + case Operator_head_other: + enterOuterAlt(_localctx, 2); + { + setState(1353); + operator(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_signatureContext extends ParserRuleContext { + public Parameter_clauseContext parameter_clause() { + return getRuleContext(Parameter_clauseContext.class,0); + } + public TerminalNode RETHROWS() { return getToken(Swift5Parser.RETHROWS, 0); } + public Function_resultContext function_result() { + return getRuleContext(Function_resultContext.class,0); + } + public TerminalNode THROWS() { return getToken(Swift5Parser.THROWS, 0); } + public Function_signatureContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_signature; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_signature(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_signature(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_signature(this); + else return visitor.visitChildren(this); + } + } + + public final Function_signatureContext function_signature() throws RecognitionException { + Function_signatureContext _localctx = new Function_signatureContext(_ctx, getState()); + enterRule(_localctx, 218, RULE_function_signature); + try { + enterOuterAlt(_localctx, 1); + { + setState(1356); + parameter_clause(); + setState(1361); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,118,_ctx) ) { + case 1: + { + setState(1358); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,117,_ctx) ) { + case 1: + { + setState(1357); + match(THROWS); + } + break; + } + } + break; + case 2: + { + setState(1360); + match(RETHROWS); + } + break; + } + setState(1364); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,119,_ctx) ) { + case 1: + { + setState(1363); + function_result(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_resultContext extends ParserRuleContext { + public Arrow_operatorContext arrow_operator() { + return getRuleContext(Arrow_operatorContext.class,0); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Function_resultContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_result; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_result(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_result(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_result(this); + else return visitor.visitChildren(this); + } + } + + public final Function_resultContext function_result() throws RecognitionException { + Function_resultContext _localctx = new Function_resultContext(_ctx, getState()); + enterRule(_localctx, 220, RULE_function_result); + try { + enterOuterAlt(_localctx, 1); + { + setState(1366); + arrow_operator(); + setState(1368); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,120,_ctx) ) { + case 1: + { + setState(1367); + attributes(); + } + break; + } + setState(1370); + type(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_bodyContext extends ParserRuleContext { + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Function_bodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_body; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_body(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_body(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_body(this); + else return visitor.visitChildren(this); + } + } + + public final Function_bodyContext function_body() throws RecognitionException { + Function_bodyContext _localctx = new Function_bodyContext(_ctx, getState()); + enterRule(_localctx, 222, RULE_function_body); + try { + enterOuterAlt(_localctx, 1); + { + setState(1372); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Parameter_clauseContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Parameter_listContext parameter_list() { + return getRuleContext(Parameter_listContext.class,0); + } + public Parameter_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parameter_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterParameter_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitParameter_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitParameter_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Parameter_clauseContext parameter_clause() throws RecognitionException { + Parameter_clauseContext _localctx = new Parameter_clauseContext(_ctx, getState()); + enterRule(_localctx, 224, RULE_parameter_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1374); + match(LPAREN); + setState(1376); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || ((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (GETTER - 135)) | (1L << (SETTER - 135)) | (1L << (Identifier - 135)) | (1L << (AT - 135)) | (1L << (BACKTICK - 135)))) != 0)) { + { + setState(1375); + parameter_list(); + } + } + + setState(1378); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Parameter_listContext extends ParserRuleContext { + public List parameter() { + return getRuleContexts(ParameterContext.class); + } + public ParameterContext parameter(int i) { + return getRuleContext(ParameterContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Parameter_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parameter_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterParameter_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitParameter_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitParameter_list(this); + else return visitor.visitChildren(this); + } + } + + public final Parameter_listContext parameter_list() throws RecognitionException { + Parameter_listContext _localctx = new Parameter_listContext(_ctx, getState()); + enterRule(_localctx, 226, RULE_parameter_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1380); + parameter(); + setState(1385); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1381); + match(COMMA); + setState(1382); + parameter(); + } + } + setState(1387); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ParameterContext extends ParserRuleContext { + public Local_parameter_nameContext local_parameter_name() { + return getRuleContext(Local_parameter_nameContext.class,0); + } + public Type_annotationContext type_annotation() { + return getRuleContext(Type_annotationContext.class,0); + } + public Range_operatorContext range_operator() { + return getRuleContext(Range_operatorContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public External_parameter_nameContext external_parameter_name() { + return getRuleContext(External_parameter_nameContext.class,0); + } + public Default_argument_clauseContext default_argument_clause() { + return getRuleContext(Default_argument_clauseContext.class,0); + } + public ParameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterParameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitParameter(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitParameter(this); + else return visitor.visitChildren(this); + } + } + + public final ParameterContext parameter() throws RecognitionException { + ParameterContext _localctx = new ParameterContext(_ctx, getState()); + enterRule(_localctx, 228, RULE_parameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1389); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1388); + attributes(); + } + } + + setState(1392); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,124,_ctx) ) { + case 1: + { + setState(1391); + external_parameter_name(); + } + break; + } + setState(1394); + local_parameter_name(); + setState(1395); + type_annotation(); + setState(1400); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,126,_ctx) ) { + case 1: + { + setState(1397); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQUAL) { + { + setState(1396); + default_argument_clause(); + } + } + + } + break; + case 2: + { + setState(1399); + range_operator(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class External_parameter_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public External_parameter_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_external_parameter_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExternal_parameter_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExternal_parameter_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExternal_parameter_name(this); + else return visitor.visitChildren(this); + } + } + + public final External_parameter_nameContext external_parameter_name() throws RecognitionException { + External_parameter_nameContext _localctx = new External_parameter_nameContext(_ctx, getState()); + enterRule(_localctx, 230, RULE_external_parameter_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1402); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Local_parameter_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Local_parameter_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_local_parameter_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLocal_parameter_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLocal_parameter_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLocal_parameter_name(this); + else return visitor.visitChildren(this); + } + } + + public final Local_parameter_nameContext local_parameter_name() throws RecognitionException { + Local_parameter_nameContext _localctx = new Local_parameter_nameContext(_ctx, getState()); + enterRule(_localctx, 232, RULE_local_parameter_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1404); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Default_argument_clauseContext extends ParserRuleContext { + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Default_argument_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_default_argument_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDefault_argument_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDefault_argument_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDefault_argument_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Default_argument_clauseContext default_argument_clause() throws RecognitionException { + Default_argument_clauseContext _localctx = new Default_argument_clauseContext(_ctx, getState()); + enterRule(_localctx, 234, RULE_default_argument_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1406); + match(EQUAL); + setState(1407); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Enum_declarationContext extends ParserRuleContext { + public Union_style_enumContext union_style_enum() { + return getRuleContext(Union_style_enumContext.class,0); + } + public Raw_value_style_enumContext raw_value_style_enum() { + return getRuleContext(Raw_value_style_enumContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Access_level_modifierContext access_level_modifier() { + return getRuleContext(Access_level_modifierContext.class,0); + } + public Enum_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enum_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterEnum_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitEnum_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitEnum_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Enum_declarationContext enum_declaration() throws RecognitionException { + Enum_declarationContext _localctx = new Enum_declarationContext(_ctx, getState()); + enterRule(_localctx, 236, RULE_enum_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1410); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1409); + attributes(); + } + } + + setState(1413); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 20)) & ~0x3f) == 0 && ((1L << (_la - 20)) & ((1L << (INTERNAL - 20)) | (1L << (OPEN - 20)) | (1L << (PRIVATE - 20)) | (1L << (PUBLIC - 20)) | (1L << (FILE_PRIVATE - 20)))) != 0)) { + { + setState(1412); + access_level_modifier(); + } + } + + setState(1417); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,129,_ctx) ) { + case 1: + { + setState(1415); + union_style_enum(); + } + break; + case 2: + { + setState(1416); + raw_value_style_enum(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Union_style_enumContext extends ParserRuleContext { + public TerminalNode ENUM() { return getToken(Swift5Parser.ENUM, 0); } + public Enum_nameContext enum_name() { + return getRuleContext(Enum_nameContext.class,0); + } + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public TerminalNode INDIRECT() { return getToken(Swift5Parser.INDIRECT, 0); } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Type_inheritance_clauseContext type_inheritance_clause() { + return getRuleContext(Type_inheritance_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Union_style_enum_membersContext union_style_enum_members() { + return getRuleContext(Union_style_enum_membersContext.class,0); + } + public Union_style_enumContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_union_style_enum; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterUnion_style_enum(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitUnion_style_enum(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitUnion_style_enum(this); + else return visitor.visitChildren(this); + } + } + + public final Union_style_enumContext union_style_enum() throws RecognitionException { + Union_style_enumContext _localctx = new Union_style_enumContext(_ctx, getState()); + enterRule(_localctx, 238, RULE_union_style_enum); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1420); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INDIRECT) { + { + setState(1419); + match(INDIRECT); + } + } + + setState(1422); + match(ENUM); + setState(1423); + enum_name(); + setState(1425); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1424); + generic_parameter_clause(); + } + } + + setState(1428); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLON) { + { + setState(1427); + type_inheritance_clause(); + } + } + + setState(1431); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1430); + generic_where_clause(); + } + } + + setState(1433); + match(LCURLY); + setState(1435); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CASE) | (1L << CLASS) | (1L << ENUM) | (1L << FUNC) | (1L << IMPORT) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << LET) | (1L << VAR) | (1L << PROTOCOL) | (1L << STRUCT) | (1L << INDIRECT) | (1L << INIT) | (1L << DEINIT) | (1L << EXTENSION) | (1L << SUBSCRIPT) | (1L << PREFIX) | (1L << INFIX) | (1L << PRECEDENCE_GROUP) | (1L << POSTFIX) | (1L << TYPEALIAS))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)) | (1L << (SOURCE_LOCATION - 66)) | (1L << (ERROR - 66)) | (1L << (WARNING - 66)) | (1L << (HASH_IF - 66)))) != 0) || _la==AT) { + { + setState(1434); + union_style_enum_members(); + } + } + + setState(1437); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Union_style_enum_membersContext extends ParserRuleContext { + public List union_style_enum_member() { + return getRuleContexts(Union_style_enum_memberContext.class); + } + public Union_style_enum_memberContext union_style_enum_member(int i) { + return getRuleContext(Union_style_enum_memberContext.class,i); + } + public Union_style_enum_membersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_union_style_enum_members; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterUnion_style_enum_members(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitUnion_style_enum_members(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitUnion_style_enum_members(this); + else return visitor.visitChildren(this); + } + } + + public final Union_style_enum_membersContext union_style_enum_members() throws RecognitionException { + Union_style_enum_membersContext _localctx = new Union_style_enum_membersContext(_ctx, getState()); + enterRule(_localctx, 240, RULE_union_style_enum_members); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1440); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1439); + union_style_enum_member(); + } + } + setState(1442); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CASE) | (1L << CLASS) | (1L << ENUM) | (1L << FUNC) | (1L << IMPORT) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << LET) | (1L << VAR) | (1L << PROTOCOL) | (1L << STRUCT) | (1L << INDIRECT) | (1L << INIT) | (1L << DEINIT) | (1L << EXTENSION) | (1L << SUBSCRIPT) | (1L << PREFIX) | (1L << INFIX) | (1L << PRECEDENCE_GROUP) | (1L << POSTFIX) | (1L << TYPEALIAS))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)) | (1L << (SOURCE_LOCATION - 66)) | (1L << (ERROR - 66)) | (1L << (WARNING - 66)) | (1L << (HASH_IF - 66)))) != 0) || _la==AT ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Union_style_enum_memberContext extends ParserRuleContext { + public DeclarationContext declaration() { + return getRuleContext(DeclarationContext.class,0); + } + public Union_style_enum_case_clauseContext union_style_enum_case_clause() { + return getRuleContext(Union_style_enum_case_clauseContext.class,0); + } + public Compiler_control_statementContext compiler_control_statement() { + return getRuleContext(Compiler_control_statementContext.class,0); + } + public Union_style_enum_memberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_union_style_enum_member; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterUnion_style_enum_member(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitUnion_style_enum_member(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitUnion_style_enum_member(this); + else return visitor.visitChildren(this); + } + } + + public final Union_style_enum_memberContext union_style_enum_member() throws RecognitionException { + Union_style_enum_memberContext _localctx = new Union_style_enum_memberContext(_ctx, getState()); + enterRule(_localctx, 242, RULE_union_style_enum_member); + try { + setState(1447); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,136,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1444); + declaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1445); + union_style_enum_case_clause(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1446); + compiler_control_statement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Union_style_enum_case_clauseContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(Swift5Parser.CASE, 0); } + public Union_style_enum_case_listContext union_style_enum_case_list() { + return getRuleContext(Union_style_enum_case_listContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TerminalNode INDIRECT() { return getToken(Swift5Parser.INDIRECT, 0); } + public Union_style_enum_case_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_union_style_enum_case_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterUnion_style_enum_case_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitUnion_style_enum_case_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitUnion_style_enum_case_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Union_style_enum_case_clauseContext union_style_enum_case_clause() throws RecognitionException { + Union_style_enum_case_clauseContext _localctx = new Union_style_enum_case_clauseContext(_ctx, getState()); + enterRule(_localctx, 244, RULE_union_style_enum_case_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1450); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1449); + attributes(); + } + } + + setState(1453); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INDIRECT) { + { + setState(1452); + match(INDIRECT); + } + } + + setState(1455); + match(CASE); + setState(1456); + union_style_enum_case_list(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Union_style_enum_case_listContext extends ParserRuleContext { + public List union_style_enum_case() { + return getRuleContexts(Union_style_enum_caseContext.class); + } + public Union_style_enum_caseContext union_style_enum_case(int i) { + return getRuleContext(Union_style_enum_caseContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Union_style_enum_case_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_union_style_enum_case_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterUnion_style_enum_case_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitUnion_style_enum_case_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitUnion_style_enum_case_list(this); + else return visitor.visitChildren(this); + } + } + + public final Union_style_enum_case_listContext union_style_enum_case_list() throws RecognitionException { + Union_style_enum_case_listContext _localctx = new Union_style_enum_case_listContext(_ctx, getState()); + enterRule(_localctx, 246, RULE_union_style_enum_case_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1458); + union_style_enum_case(); + setState(1463); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1459); + match(COMMA); + setState(1460); + union_style_enum_case(); + } + } + setState(1465); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Union_style_enum_caseContext extends ParserRuleContext { + public Opaque_typeContext opaque_type() { + return getRuleContext(Opaque_typeContext.class,0); + } + public Enum_case_nameContext enum_case_name() { + return getRuleContext(Enum_case_nameContext.class,0); + } + public Tuple_typeContext tuple_type() { + return getRuleContext(Tuple_typeContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Union_style_enum_caseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_union_style_enum_case; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterUnion_style_enum_case(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitUnion_style_enum_case(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitUnion_style_enum_case(this); + else return visitor.visitChildren(this); + } + } + + public final Union_style_enum_caseContext union_style_enum_case() throws RecognitionException { + Union_style_enum_caseContext _localctx = new Union_style_enum_caseContext(_ctx, getState()); + enterRule(_localctx, 248, RULE_union_style_enum_case); + try { + setState(1475); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,141,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1466); + opaque_type(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1467); + enum_case_name(); + setState(1473); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,140,_ctx) ) { + case 1: + { + setState(1468); + tuple_type(); + } + break; + case 2: + { + setState(1469); + match(LPAREN); + setState(1470); + type(0); + setState(1471); + match(RPAREN); + } + break; + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Enum_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Enum_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enum_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterEnum_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitEnum_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitEnum_name(this); + else return visitor.visitChildren(this); + } + } + + public final Enum_nameContext enum_name() throws RecognitionException { + Enum_nameContext _localctx = new Enum_nameContext(_ctx, getState()); + enterRule(_localctx, 250, RULE_enum_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1477); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Enum_case_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Enum_case_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enum_case_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterEnum_case_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitEnum_case_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitEnum_case_name(this); + else return visitor.visitChildren(this); + } + } + + public final Enum_case_nameContext enum_case_name() throws RecognitionException { + Enum_case_nameContext _localctx = new Enum_case_nameContext(_ctx, getState()); + enterRule(_localctx, 252, RULE_enum_case_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1479); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Raw_value_style_enumContext extends ParserRuleContext { + public TerminalNode ENUM() { return getToken(Swift5Parser.ENUM, 0); } + public Enum_nameContext enum_name() { + return getRuleContext(Enum_nameContext.class,0); + } + public Type_inheritance_clauseContext type_inheritance_clause() { + return getRuleContext(Type_inheritance_clauseContext.class,0); + } + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public Raw_value_style_enum_membersContext raw_value_style_enum_members() { + return getRuleContext(Raw_value_style_enum_membersContext.class,0); + } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Raw_value_style_enumContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_raw_value_style_enum; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRaw_value_style_enum(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRaw_value_style_enum(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRaw_value_style_enum(this); + else return visitor.visitChildren(this); + } + } + + public final Raw_value_style_enumContext raw_value_style_enum() throws RecognitionException { + Raw_value_style_enumContext _localctx = new Raw_value_style_enumContext(_ctx, getState()); + enterRule(_localctx, 254, RULE_raw_value_style_enum); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1481); + match(ENUM); + setState(1482); + enum_name(); + setState(1484); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1483); + generic_parameter_clause(); + } + } + + setState(1486); + type_inheritance_clause(); + setState(1488); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1487); + generic_where_clause(); + } + } + + setState(1490); + match(LCURLY); + setState(1491); + raw_value_style_enum_members(); + setState(1492); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Raw_value_style_enum_membersContext extends ParserRuleContext { + public List raw_value_style_enum_member() { + return getRuleContexts(Raw_value_style_enum_memberContext.class); + } + public Raw_value_style_enum_memberContext raw_value_style_enum_member(int i) { + return getRuleContext(Raw_value_style_enum_memberContext.class,i); + } + public Raw_value_style_enum_membersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_raw_value_style_enum_members; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRaw_value_style_enum_members(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRaw_value_style_enum_members(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRaw_value_style_enum_members(this); + else return visitor.visitChildren(this); + } + } + + public final Raw_value_style_enum_membersContext raw_value_style_enum_members() throws RecognitionException { + Raw_value_style_enum_membersContext _localctx = new Raw_value_style_enum_membersContext(_ctx, getState()); + enterRule(_localctx, 256, RULE_raw_value_style_enum_members); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1495); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1494); + raw_value_style_enum_member(); + } + } + setState(1497); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CASE) | (1L << CLASS) | (1L << ENUM) | (1L << FUNC) | (1L << IMPORT) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << LET) | (1L << VAR) | (1L << PROTOCOL) | (1L << STRUCT) | (1L << INDIRECT) | (1L << INIT) | (1L << DEINIT) | (1L << EXTENSION) | (1L << SUBSCRIPT) | (1L << PREFIX) | (1L << INFIX) | (1L << PRECEDENCE_GROUP) | (1L << POSTFIX) | (1L << TYPEALIAS))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)) | (1L << (SOURCE_LOCATION - 66)) | (1L << (ERROR - 66)) | (1L << (WARNING - 66)) | (1L << (HASH_IF - 66)))) != 0) || _la==AT ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Raw_value_style_enum_memberContext extends ParserRuleContext { + public DeclarationContext declaration() { + return getRuleContext(DeclarationContext.class,0); + } + public Raw_value_style_enum_case_clauseContext raw_value_style_enum_case_clause() { + return getRuleContext(Raw_value_style_enum_case_clauseContext.class,0); + } + public Compiler_control_statementContext compiler_control_statement() { + return getRuleContext(Compiler_control_statementContext.class,0); + } + public Raw_value_style_enum_memberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_raw_value_style_enum_member; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRaw_value_style_enum_member(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRaw_value_style_enum_member(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRaw_value_style_enum_member(this); + else return visitor.visitChildren(this); + } + } + + public final Raw_value_style_enum_memberContext raw_value_style_enum_member() throws RecognitionException { + Raw_value_style_enum_memberContext _localctx = new Raw_value_style_enum_memberContext(_ctx, getState()); + enterRule(_localctx, 258, RULE_raw_value_style_enum_member); + try { + setState(1502); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,145,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1499); + declaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1500); + raw_value_style_enum_case_clause(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1501); + compiler_control_statement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Raw_value_style_enum_case_clauseContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(Swift5Parser.CASE, 0); } + public Raw_value_style_enum_case_listContext raw_value_style_enum_case_list() { + return getRuleContext(Raw_value_style_enum_case_listContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Raw_value_style_enum_case_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_raw_value_style_enum_case_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRaw_value_style_enum_case_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRaw_value_style_enum_case_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRaw_value_style_enum_case_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Raw_value_style_enum_case_clauseContext raw_value_style_enum_case_clause() throws RecognitionException { + Raw_value_style_enum_case_clauseContext _localctx = new Raw_value_style_enum_case_clauseContext(_ctx, getState()); + enterRule(_localctx, 260, RULE_raw_value_style_enum_case_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1505); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1504); + attributes(); + } + } + + setState(1507); + match(CASE); + setState(1508); + raw_value_style_enum_case_list(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Raw_value_style_enum_case_listContext extends ParserRuleContext { + public List raw_value_style_enum_case() { + return getRuleContexts(Raw_value_style_enum_caseContext.class); + } + public Raw_value_style_enum_caseContext raw_value_style_enum_case(int i) { + return getRuleContext(Raw_value_style_enum_caseContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Raw_value_style_enum_case_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_raw_value_style_enum_case_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRaw_value_style_enum_case_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRaw_value_style_enum_case_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRaw_value_style_enum_case_list(this); + else return visitor.visitChildren(this); + } + } + + public final Raw_value_style_enum_case_listContext raw_value_style_enum_case_list() throws RecognitionException { + Raw_value_style_enum_case_listContext _localctx = new Raw_value_style_enum_case_listContext(_ctx, getState()); + enterRule(_localctx, 262, RULE_raw_value_style_enum_case_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1510); + raw_value_style_enum_case(); + setState(1515); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1511); + match(COMMA); + setState(1512); + raw_value_style_enum_case(); + } + } + setState(1517); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Raw_value_style_enum_caseContext extends ParserRuleContext { + public Enum_case_nameContext enum_case_name() { + return getRuleContext(Enum_case_nameContext.class,0); + } + public Raw_value_assignmentContext raw_value_assignment() { + return getRuleContext(Raw_value_assignmentContext.class,0); + } + public Raw_value_style_enum_caseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_raw_value_style_enum_case; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRaw_value_style_enum_case(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRaw_value_style_enum_case(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRaw_value_style_enum_case(this); + else return visitor.visitChildren(this); + } + } + + public final Raw_value_style_enum_caseContext raw_value_style_enum_case() throws RecognitionException { + Raw_value_style_enum_caseContext _localctx = new Raw_value_style_enum_caseContext(_ctx, getState()); + enterRule(_localctx, 264, RULE_raw_value_style_enum_case); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1518); + enum_case_name(); + setState(1520); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQUAL) { + { + setState(1519); + raw_value_assignment(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Raw_value_assignmentContext extends ParserRuleContext { + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public Raw_value_literalContext raw_value_literal() { + return getRuleContext(Raw_value_literalContext.class,0); + } + public Raw_value_assignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_raw_value_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRaw_value_assignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRaw_value_assignment(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRaw_value_assignment(this); + else return visitor.visitChildren(this); + } + } + + public final Raw_value_assignmentContext raw_value_assignment() throws RecognitionException { + Raw_value_assignmentContext _localctx = new Raw_value_assignmentContext(_ctx, getState()); + enterRule(_localctx, 266, RULE_raw_value_assignment); + try { + enterOuterAlt(_localctx, 1); + { + setState(1522); + match(EQUAL); + setState(1523); + raw_value_literal(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Raw_value_literalContext extends ParserRuleContext { + public Numeric_literalContext numeric_literal() { + return getRuleContext(Numeric_literalContext.class,0); + } + public Static_string_literalContext static_string_literal() { + return getRuleContext(Static_string_literalContext.class,0); + } + public Boolean_literalContext boolean_literal() { + return getRuleContext(Boolean_literalContext.class,0); + } + public Raw_value_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_raw_value_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRaw_value_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRaw_value_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRaw_value_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Raw_value_literalContext raw_value_literal() throws RecognitionException { + Raw_value_literalContext _localctx = new Raw_value_literalContext(_ctx, getState()); + enterRule(_localctx, 268, RULE_raw_value_literal); + try { + setState(1528); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,149,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1525); + numeric_literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1526); + static_string_literal(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1527); + boolean_literal(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Struct_declarationContext extends ParserRuleContext { + public TerminalNode STRUCT() { return getToken(Swift5Parser.STRUCT, 0); } + public Struct_nameContext struct_name() { + return getRuleContext(Struct_nameContext.class,0); + } + public Struct_bodyContext struct_body() { + return getRuleContext(Struct_bodyContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Access_level_modifierContext access_level_modifier() { + return getRuleContext(Access_level_modifierContext.class,0); + } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Type_inheritance_clauseContext type_inheritance_clause() { + return getRuleContext(Type_inheritance_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Struct_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_struct_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterStruct_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitStruct_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitStruct_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Struct_declarationContext struct_declaration() throws RecognitionException { + Struct_declarationContext _localctx = new Struct_declarationContext(_ctx, getState()); + enterRule(_localctx, 270, RULE_struct_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1531); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1530); + attributes(); + } + } + + setState(1534); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 20)) & ~0x3f) == 0 && ((1L << (_la - 20)) & ((1L << (INTERNAL - 20)) | (1L << (OPEN - 20)) | (1L << (PRIVATE - 20)) | (1L << (PUBLIC - 20)) | (1L << (FILE_PRIVATE - 20)))) != 0)) { + { + setState(1533); + access_level_modifier(); + } + } + + setState(1536); + match(STRUCT); + setState(1537); + struct_name(); + setState(1539); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1538); + generic_parameter_clause(); + } + } + + setState(1542); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLON) { + { + setState(1541); + type_inheritance_clause(); + } + } + + setState(1545); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1544); + generic_where_clause(); + } + } + + setState(1547); + struct_body(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Struct_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Struct_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_struct_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterStruct_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitStruct_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitStruct_name(this); + else return visitor.visitChildren(this); + } + } + + public final Struct_nameContext struct_name() throws RecognitionException { + Struct_nameContext _localctx = new Struct_nameContext(_ctx, getState()); + enterRule(_localctx, 272, RULE_struct_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1549); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Struct_bodyContext extends ParserRuleContext { + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public Struct_membersContext struct_members() { + return getRuleContext(Struct_membersContext.class,0); + } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Struct_bodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_struct_body; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterStruct_body(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitStruct_body(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitStruct_body(this); + else return visitor.visitChildren(this); + } + } + + public final Struct_bodyContext struct_body() throws RecognitionException { + Struct_bodyContext _localctx = new Struct_bodyContext(_ctx, getState()); + enterRule(_localctx, 274, RULE_struct_body); + try { + enterOuterAlt(_localctx, 1); + { + setState(1551); + match(LCURLY); + setState(1552); + struct_members(); + setState(1553); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Struct_membersContext extends ParserRuleContext { + public List struct_member() { + return getRuleContexts(Struct_memberContext.class); + } + public Struct_memberContext struct_member(int i) { + return getRuleContext(Struct_memberContext.class,i); + } + public Struct_membersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_struct_members; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterStruct_members(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitStruct_members(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitStruct_members(this); + else return visitor.visitChildren(this); + } + } + + public final Struct_membersContext struct_members() throws RecognitionException { + Struct_membersContext _localctx = new Struct_membersContext(_ctx, getState()); + enterRule(_localctx, 276, RULE_struct_members); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1558); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << ENUM) | (1L << FUNC) | (1L << IMPORT) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << LET) | (1L << VAR) | (1L << PROTOCOL) | (1L << STRUCT) | (1L << INDIRECT) | (1L << INIT) | (1L << DEINIT) | (1L << EXTENSION) | (1L << SUBSCRIPT) | (1L << PREFIX) | (1L << INFIX) | (1L << PRECEDENCE_GROUP) | (1L << POSTFIX) | (1L << TYPEALIAS))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)) | (1L << (SOURCE_LOCATION - 66)) | (1L << (ERROR - 66)) | (1L << (WARNING - 66)) | (1L << (HASH_IF - 66)))) != 0) || _la==AT) { + { + { + setState(1555); + struct_member(); + } + } + setState(1560); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Struct_memberContext extends ParserRuleContext { + public DeclarationContext declaration() { + return getRuleContext(DeclarationContext.class,0); + } + public Compiler_control_statementContext compiler_control_statement() { + return getRuleContext(Compiler_control_statementContext.class,0); + } + public Struct_memberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_struct_member; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterStruct_member(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitStruct_member(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitStruct_member(this); + else return visitor.visitChildren(this); + } + } + + public final Struct_memberContext struct_member() throws RecognitionException { + Struct_memberContext _localctx = new Struct_memberContext(_ctx, getState()); + enterRule(_localctx, 278, RULE_struct_member); + try { + setState(1563); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLASS: + case ENUM: + case FUNC: + case IMPORT: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case LET: + case VAR: + case PROTOCOL: + case STRUCT: + case INDIRECT: + case INIT: + case DEINIT: + case EXTENSION: + case SUBSCRIPT: + case PREFIX: + case INFIX: + case PRECEDENCE_GROUP: + case POSTFIX: + case TYPEALIAS: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case STATIC: + case WEAK: + case UNOWNED: + case MUTATING: + case NONMUTATING: + case FILE_PRIVATE: + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1561); + declaration(); + } + break; + case SOURCE_LOCATION: + case ERROR: + case WARNING: + case HASH_IF: + enterOuterAlt(_localctx, 2); + { + setState(1562); + compiler_control_statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Class_declarationContext extends ParserRuleContext { + public TerminalNode CLASS() { return getToken(Swift5Parser.CLASS, 0); } + public Class_nameContext class_name() { + return getRuleContext(Class_nameContext.class,0); + } + public Class_bodyContext class_body() { + return getRuleContext(Class_bodyContext.class,0); + } + public TerminalNode FINAL() { return getToken(Swift5Parser.FINAL, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Type_inheritance_clauseContext type_inheritance_clause() { + return getRuleContext(Type_inheritance_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Access_level_modifierContext access_level_modifier() { + return getRuleContext(Access_level_modifierContext.class,0); + } + public Class_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_class_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClass_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClass_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClass_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Class_declarationContext class_declaration() throws RecognitionException { + Class_declarationContext _localctx = new Class_declarationContext(_ctx, getState()); + enterRule(_localctx, 280, RULE_class_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1566); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1565); + attributes(); + } + } + + setState(1578); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,161,_ctx) ) { + case 1: + { + setState(1569); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 20)) & ~0x3f) == 0 && ((1L << (_la - 20)) & ((1L << (INTERNAL - 20)) | (1L << (OPEN - 20)) | (1L << (PRIVATE - 20)) | (1L << (PUBLIC - 20)) | (1L << (FILE_PRIVATE - 20)))) != 0)) { + { + setState(1568); + access_level_modifier(); + } + } + + setState(1572); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FINAL) { + { + setState(1571); + match(FINAL); + } + } + + } + break; + case 2: + { + setState(1574); + match(FINAL); + setState(1576); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 20)) & ~0x3f) == 0 && ((1L << (_la - 20)) & ((1L << (INTERNAL - 20)) | (1L << (OPEN - 20)) | (1L << (PRIVATE - 20)) | (1L << (PUBLIC - 20)) | (1L << (FILE_PRIVATE - 20)))) != 0)) { + { + setState(1575); + access_level_modifier(); + } + } + + } + break; + } + setState(1580); + match(CLASS); + setState(1581); + class_name(); + setState(1583); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1582); + generic_parameter_clause(); + } + } + + setState(1586); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLON) { + { + setState(1585); + type_inheritance_clause(); + } + } + + setState(1589); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1588); + generic_where_clause(); + } + } + + setState(1591); + class_body(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Class_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Class_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_class_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClass_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClass_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClass_name(this); + else return visitor.visitChildren(this); + } + } + + public final Class_nameContext class_name() throws RecognitionException { + Class_nameContext _localctx = new Class_nameContext(_ctx, getState()); + enterRule(_localctx, 282, RULE_class_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1593); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Class_bodyContext extends ParserRuleContext { + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public Class_membersContext class_members() { + return getRuleContext(Class_membersContext.class,0); + } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Class_bodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_class_body; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClass_body(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClass_body(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClass_body(this); + else return visitor.visitChildren(this); + } + } + + public final Class_bodyContext class_body() throws RecognitionException { + Class_bodyContext _localctx = new Class_bodyContext(_ctx, getState()); + enterRule(_localctx, 284, RULE_class_body); + try { + enterOuterAlt(_localctx, 1); + { + setState(1595); + match(LCURLY); + setState(1596); + class_members(); + setState(1597); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Class_membersContext extends ParserRuleContext { + public List class_member() { + return getRuleContexts(Class_memberContext.class); + } + public Class_memberContext class_member(int i) { + return getRuleContext(Class_memberContext.class,i); + } + public Class_membersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_class_members; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClass_members(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClass_members(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClass_members(this); + else return visitor.visitChildren(this); + } + } + + public final Class_membersContext class_members() throws RecognitionException { + Class_membersContext _localctx = new Class_membersContext(_ctx, getState()); + enterRule(_localctx, 286, RULE_class_members); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1602); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << ENUM) | (1L << FUNC) | (1L << IMPORT) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << LET) | (1L << VAR) | (1L << PROTOCOL) | (1L << STRUCT) | (1L << INDIRECT) | (1L << INIT) | (1L << DEINIT) | (1L << EXTENSION) | (1L << SUBSCRIPT) | (1L << PREFIX) | (1L << INFIX) | (1L << PRECEDENCE_GROUP) | (1L << POSTFIX) | (1L << TYPEALIAS))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)) | (1L << (SOURCE_LOCATION - 66)) | (1L << (ERROR - 66)) | (1L << (WARNING - 66)) | (1L << (HASH_IF - 66)))) != 0) || _la==AT) { + { + { + setState(1599); + class_member(); + } + } + setState(1604); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Class_memberContext extends ParserRuleContext { + public DeclarationContext declaration() { + return getRuleContext(DeclarationContext.class,0); + } + public Compiler_control_statementContext compiler_control_statement() { + return getRuleContext(Compiler_control_statementContext.class,0); + } + public Class_memberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_class_member; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClass_member(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClass_member(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClass_member(this); + else return visitor.visitChildren(this); + } + } + + public final Class_memberContext class_member() throws RecognitionException { + Class_memberContext _localctx = new Class_memberContext(_ctx, getState()); + enterRule(_localctx, 288, RULE_class_member); + try { + setState(1607); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLASS: + case ENUM: + case FUNC: + case IMPORT: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case LET: + case VAR: + case PROTOCOL: + case STRUCT: + case INDIRECT: + case INIT: + case DEINIT: + case EXTENSION: + case SUBSCRIPT: + case PREFIX: + case INFIX: + case PRECEDENCE_GROUP: + case POSTFIX: + case TYPEALIAS: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case STATIC: + case WEAK: + case UNOWNED: + case MUTATING: + case NONMUTATING: + case FILE_PRIVATE: + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1605); + declaration(); + } + break; + case SOURCE_LOCATION: + case ERROR: + case WARNING: + case HASH_IF: + enterOuterAlt(_localctx, 2); + { + setState(1606); + compiler_control_statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_declarationContext extends ParserRuleContext { + public TerminalNode PROTOCOL() { return getToken(Swift5Parser.PROTOCOL, 0); } + public Protocol_nameContext protocol_name() { + return getRuleContext(Protocol_nameContext.class,0); + } + public Protocol_bodyContext protocol_body() { + return getRuleContext(Protocol_bodyContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Access_level_modifierContext access_level_modifier() { + return getRuleContext(Access_level_modifierContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public TerminalNode CLASS() { return getToken(Swift5Parser.CLASS, 0); } + public Type_inheritance_clauseContext type_inheritance_clause() { + return getRuleContext(Type_inheritance_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Protocol_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_declarationContext protocol_declaration() throws RecognitionException { + Protocol_declarationContext _localctx = new Protocol_declarationContext(_ctx, getState()); + enterRule(_localctx, 290, RULE_protocol_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1610); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1609); + attributes(); + } + } + + setState(1613); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 20)) & ~0x3f) == 0 && ((1L << (_la - 20)) & ((1L << (INTERNAL - 20)) | (1L << (OPEN - 20)) | (1L << (PRIVATE - 20)) | (1L << (PUBLIC - 20)) | (1L << (FILE_PRIVATE - 20)))) != 0)) { + { + setState(1612); + access_level_modifier(); + } + } + + setState(1615); + match(PROTOCOL); + setState(1616); + protocol_name(); + setState(1620); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,169,_ctx) ) { + case 1: + { + setState(1617); + match(COLON); + setState(1618); + match(CLASS); + } + break; + case 2: + { + setState(1619); + type_inheritance_clause(); + } + break; + } + setState(1623); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1622); + generic_where_clause(); + } + } + + setState(1625); + protocol_body(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Protocol_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_name(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_nameContext protocol_name() throws RecognitionException { + Protocol_nameContext _localctx = new Protocol_nameContext(_ctx, getState()); + enterRule(_localctx, 292, RULE_protocol_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(1627); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_bodyContext extends ParserRuleContext { + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public Protocol_membersContext protocol_members() { + return getRuleContext(Protocol_membersContext.class,0); + } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Protocol_bodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_body; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_body(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_body(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_body(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_bodyContext protocol_body() throws RecognitionException { + Protocol_bodyContext _localctx = new Protocol_bodyContext(_ctx, getState()); + enterRule(_localctx, 294, RULE_protocol_body); + try { + enterOuterAlt(_localctx, 1); + { + setState(1629); + match(LCURLY); + setState(1630); + protocol_members(); + setState(1631); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_membersContext extends ParserRuleContext { + public List protocol_member() { + return getRuleContexts(Protocol_memberContext.class); + } + public Protocol_memberContext protocol_member(int i) { + return getRuleContext(Protocol_memberContext.class,i); + } + public Protocol_membersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_members; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_members(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_members(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_members(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_membersContext protocol_members() throws RecognitionException { + Protocol_membersContext _localctx = new Protocol_membersContext(_ctx, getState()); + enterRule(_localctx, 296, RULE_protocol_members); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1636); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << FUNC) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << VAR) | (1L << INIT) | (1L << ASSOCIATED_TYPE) | (1L << SUBSCRIPT) | (1L << PREFIX) | (1L << INFIX) | (1L << POSTFIX) | (1L << TYPEALIAS))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)) | (1L << (SOURCE_LOCATION - 66)) | (1L << (ERROR - 66)) | (1L << (WARNING - 66)) | (1L << (HASH_IF - 66)))) != 0) || _la==AT) { + { + { + setState(1633); + protocol_member(); + } + } + setState(1638); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_memberContext extends ParserRuleContext { + public Protocol_member_declarationContext protocol_member_declaration() { + return getRuleContext(Protocol_member_declarationContext.class,0); + } + public Compiler_control_statementContext compiler_control_statement() { + return getRuleContext(Compiler_control_statementContext.class,0); + } + public Protocol_memberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_member; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_member(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_member(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_member(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_memberContext protocol_member() throws RecognitionException { + Protocol_memberContext _localctx = new Protocol_memberContext(_ctx, getState()); + enterRule(_localctx, 298, RULE_protocol_member); + try { + setState(1641); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLASS: + case FUNC: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case VAR: + case INIT: + case ASSOCIATED_TYPE: + case SUBSCRIPT: + case PREFIX: + case INFIX: + case POSTFIX: + case TYPEALIAS: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case STATIC: + case WEAK: + case UNOWNED: + case MUTATING: + case NONMUTATING: + case FILE_PRIVATE: + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1639); + protocol_member_declaration(); + } + break; + case SOURCE_LOCATION: + case ERROR: + case WARNING: + case HASH_IF: + enterOuterAlt(_localctx, 2); + { + setState(1640); + compiler_control_statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_member_declarationContext extends ParserRuleContext { + public Protocol_property_declarationContext protocol_property_declaration() { + return getRuleContext(Protocol_property_declarationContext.class,0); + } + public Protocol_method_declarationContext protocol_method_declaration() { + return getRuleContext(Protocol_method_declarationContext.class,0); + } + public Protocol_initializer_declarationContext protocol_initializer_declaration() { + return getRuleContext(Protocol_initializer_declarationContext.class,0); + } + public Protocol_subscript_declarationContext protocol_subscript_declaration() { + return getRuleContext(Protocol_subscript_declarationContext.class,0); + } + public Protocol_associated_type_declarationContext protocol_associated_type_declaration() { + return getRuleContext(Protocol_associated_type_declarationContext.class,0); + } + public Typealias_declarationContext typealias_declaration() { + return getRuleContext(Typealias_declarationContext.class,0); + } + public Protocol_member_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_member_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_member_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_member_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_member_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_member_declarationContext protocol_member_declaration() throws RecognitionException { + Protocol_member_declarationContext _localctx = new Protocol_member_declarationContext(_ctx, getState()); + enterRule(_localctx, 300, RULE_protocol_member_declaration); + try { + setState(1649); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,173,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1643); + protocol_property_declaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1644); + protocol_method_declaration(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1645); + protocol_initializer_declaration(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1646); + protocol_subscript_declaration(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(1647); + protocol_associated_type_declaration(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(1648); + typealias_declaration(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_property_declarationContext extends ParserRuleContext { + public Variable_declaration_headContext variable_declaration_head() { + return getRuleContext(Variable_declaration_headContext.class,0); + } + public Variable_nameContext variable_name() { + return getRuleContext(Variable_nameContext.class,0); + } + public Type_annotationContext type_annotation() { + return getRuleContext(Type_annotationContext.class,0); + } + public Getter_setter_keyword_blockContext getter_setter_keyword_block() { + return getRuleContext(Getter_setter_keyword_blockContext.class,0); + } + public Protocol_property_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_property_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_property_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_property_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_property_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_property_declarationContext protocol_property_declaration() throws RecognitionException { + Protocol_property_declarationContext _localctx = new Protocol_property_declarationContext(_ctx, getState()); + enterRule(_localctx, 302, RULE_protocol_property_declaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(1651); + variable_declaration_head(); + setState(1652); + variable_name(); + setState(1653); + type_annotation(); + setState(1654); + getter_setter_keyword_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_method_declarationContext extends ParserRuleContext { + public Function_headContext function_head() { + return getRuleContext(Function_headContext.class,0); + } + public Function_nameContext function_name() { + return getRuleContext(Function_nameContext.class,0); + } + public Function_signatureContext function_signature() { + return getRuleContext(Function_signatureContext.class,0); + } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Protocol_method_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_method_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_method_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_method_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_method_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_method_declarationContext protocol_method_declaration() throws RecognitionException { + Protocol_method_declarationContext _localctx = new Protocol_method_declarationContext(_ctx, getState()); + enterRule(_localctx, 304, RULE_protocol_method_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1656); + function_head(); + setState(1657); + function_name(); + setState(1659); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1658); + generic_parameter_clause(); + } + } + + setState(1661); + function_signature(); + setState(1663); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1662); + generic_where_clause(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_initializer_declarationContext extends ParserRuleContext { + public Initializer_headContext initializer_head() { + return getRuleContext(Initializer_headContext.class,0); + } + public Parameter_clauseContext parameter_clause() { + return getRuleContext(Parameter_clauseContext.class,0); + } + public TerminalNode RETHROWS() { return getToken(Swift5Parser.RETHROWS, 0); } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public TerminalNode THROWS() { return getToken(Swift5Parser.THROWS, 0); } + public Protocol_initializer_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_initializer_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_initializer_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_initializer_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_initializer_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_initializer_declarationContext protocol_initializer_declaration() throws RecognitionException { + Protocol_initializer_declarationContext _localctx = new Protocol_initializer_declarationContext(_ctx, getState()); + enterRule(_localctx, 306, RULE_protocol_initializer_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1665); + initializer_head(); + setState(1667); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1666); + generic_parameter_clause(); + } + } + + setState(1669); + parameter_clause(); + setState(1674); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLASS: + case FUNC: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case WHERE: + case VAR: + case THROWS: + case INIT: + case ASSOCIATED_TYPE: + case SUBSCRIPT: + case PREFIX: + case INFIX: + case POSTFIX: + case TYPEALIAS: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case STATIC: + case WEAK: + case UNOWNED: + case MUTATING: + case NONMUTATING: + case FILE_PRIVATE: + case SOURCE_LOCATION: + case ERROR: + case WARNING: + case HASH_IF: + case RCURLY: + case AT: + { + setState(1671); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==THROWS) { + { + setState(1670); + match(THROWS); + } + } + + } + break; + case RETHROWS: + { + setState(1673); + match(RETHROWS); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1677); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1676); + generic_where_clause(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_subscript_declarationContext extends ParserRuleContext { + public Subscript_headContext subscript_head() { + return getRuleContext(Subscript_headContext.class,0); + } + public Subscript_resultContext subscript_result() { + return getRuleContext(Subscript_resultContext.class,0); + } + public Getter_setter_keyword_blockContext getter_setter_keyword_block() { + return getRuleContext(Getter_setter_keyword_blockContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Protocol_subscript_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_subscript_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_subscript_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_subscript_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_subscript_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_subscript_declarationContext protocol_subscript_declaration() throws RecognitionException { + Protocol_subscript_declarationContext _localctx = new Protocol_subscript_declarationContext(_ctx, getState()); + enterRule(_localctx, 308, RULE_protocol_subscript_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1679); + subscript_head(); + setState(1680); + subscript_result(); + setState(1682); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1681); + generic_where_clause(); + } + } + + setState(1684); + getter_setter_keyword_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_associated_type_declarationContext extends ParserRuleContext { + public TerminalNode ASSOCIATED_TYPE() { return getToken(Swift5Parser.ASSOCIATED_TYPE, 0); } + public Typealias_nameContext typealias_name() { + return getRuleContext(Typealias_nameContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Access_level_modifierContext access_level_modifier() { + return getRuleContext(Access_level_modifierContext.class,0); + } + public Type_inheritance_clauseContext type_inheritance_clause() { + return getRuleContext(Type_inheritance_clauseContext.class,0); + } + public Typealias_assignmentContext typealias_assignment() { + return getRuleContext(Typealias_assignmentContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Protocol_associated_type_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_associated_type_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_associated_type_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_associated_type_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_associated_type_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_associated_type_declarationContext protocol_associated_type_declaration() throws RecognitionException { + Protocol_associated_type_declarationContext _localctx = new Protocol_associated_type_declarationContext(_ctx, getState()); + enterRule(_localctx, 310, RULE_protocol_associated_type_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1687); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1686); + attributes(); + } + } + + setState(1690); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 20)) & ~0x3f) == 0 && ((1L << (_la - 20)) & ((1L << (INTERNAL - 20)) | (1L << (OPEN - 20)) | (1L << (PRIVATE - 20)) | (1L << (PUBLIC - 20)) | (1L << (FILE_PRIVATE - 20)))) != 0)) { + { + setState(1689); + access_level_modifier(); + } + } + + setState(1692); + match(ASSOCIATED_TYPE); + setState(1693); + typealias_name(); + setState(1695); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLON) { + { + setState(1694); + type_inheritance_clause(); + } + } + + setState(1698); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQUAL) { + { + setState(1697); + typealias_assignment(); + } + } + + setState(1701); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1700); + generic_where_clause(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Initializer_declarationContext extends ParserRuleContext { + public Initializer_headContext initializer_head() { + return getRuleContext(Initializer_headContext.class,0); + } + public Parameter_clauseContext parameter_clause() { + return getRuleContext(Parameter_clauseContext.class,0); + } + public Initializer_bodyContext initializer_body() { + return getRuleContext(Initializer_bodyContext.class,0); + } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public TerminalNode THROWS() { return getToken(Swift5Parser.THROWS, 0); } + public TerminalNode RETHROWS() { return getToken(Swift5Parser.RETHROWS, 0); } + public Initializer_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_initializer_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterInitializer_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitInitializer_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitInitializer_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Initializer_declarationContext initializer_declaration() throws RecognitionException { + Initializer_declarationContext _localctx = new Initializer_declarationContext(_ctx, getState()); + enterRule(_localctx, 312, RULE_initializer_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1703); + initializer_head(); + setState(1705); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1704); + generic_parameter_clause(); + } + } + + setState(1707); + parameter_clause(); + setState(1709); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==THROWS || _la==RETHROWS) { + { + setState(1708); + _la = _input.LA(1); + if ( !(_la==THROWS || _la==RETHROWS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(1712); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1711); + generic_where_clause(); + } + } + + setState(1714); + initializer_body(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Initializer_headContext extends ParserRuleContext { + public TerminalNode INIT() { return getToken(Swift5Parser.INIT, 0); } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Declaration_modifiersContext declaration_modifiers() { + return getRuleContext(Declaration_modifiersContext.class,0); + } + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public TerminalNode BANG() { return getToken(Swift5Parser.BANG, 0); } + public Initializer_headContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_initializer_head; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterInitializer_head(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitInitializer_head(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitInitializer_head(this); + else return visitor.visitChildren(this); + } + } + + public final Initializer_headContext initializer_head() throws RecognitionException { + Initializer_headContext _localctx = new Initializer_headContext(_ctx, getState()); + enterRule(_localctx, 314, RULE_initializer_head); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1717); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1716); + attributes(); + } + } + + setState(1720); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << PREFIX) | (1L << INFIX) | (1L << POSTFIX))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)))) != 0)) { + { + setState(1719); + declaration_modifiers(); + } + } + + setState(1722); + match(INIT); + setState(1724); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BANG || _la==QUESTION) { + { + setState(1723); + _la = _input.LA(1); + if ( !(_la==BANG || _la==QUESTION) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Initializer_bodyContext extends ParserRuleContext { + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Initializer_bodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_initializer_body; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterInitializer_body(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitInitializer_body(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitInitializer_body(this); + else return visitor.visitChildren(this); + } + } + + public final Initializer_bodyContext initializer_body() throws RecognitionException { + Initializer_bodyContext _localctx = new Initializer_bodyContext(_ctx, getState()); + enterRule(_localctx, 316, RULE_initializer_body); + try { + enterOuterAlt(_localctx, 1); + { + setState(1726); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Deinitializer_declarationContext extends ParserRuleContext { + public TerminalNode DEINIT() { return getToken(Swift5Parser.DEINIT, 0); } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Deinitializer_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_deinitializer_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDeinitializer_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDeinitializer_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDeinitializer_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Deinitializer_declarationContext deinitializer_declaration() throws RecognitionException { + Deinitializer_declarationContext _localctx = new Deinitializer_declarationContext(_ctx, getState()); + enterRule(_localctx, 318, RULE_deinitializer_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1729); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1728); + attributes(); + } + } + + setState(1731); + match(DEINIT); + setState(1732); + code_block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Extension_declarationContext extends ParserRuleContext { + public TerminalNode EXTENSION() { return getToken(Swift5Parser.EXTENSION, 0); } + public Type_identifierContext type_identifier() { + return getRuleContext(Type_identifierContext.class,0); + } + public Extension_bodyContext extension_body() { + return getRuleContext(Extension_bodyContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Access_level_modifierContext access_level_modifier() { + return getRuleContext(Access_level_modifierContext.class,0); + } + public Type_inheritance_clauseContext type_inheritance_clause() { + return getRuleContext(Type_inheritance_clauseContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Extension_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_extension_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExtension_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExtension_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExtension_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Extension_declarationContext extension_declaration() throws RecognitionException { + Extension_declarationContext _localctx = new Extension_declarationContext(_ctx, getState()); + enterRule(_localctx, 320, RULE_extension_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1735); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1734); + attributes(); + } + } + + setState(1738); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 20)) & ~0x3f) == 0 && ((1L << (_la - 20)) & ((1L << (INTERNAL - 20)) | (1L << (OPEN - 20)) | (1L << (PRIVATE - 20)) | (1L << (PUBLIC - 20)) | (1L << (FILE_PRIVATE - 20)))) != 0)) { + { + setState(1737); + access_level_modifier(); + } + } + + setState(1740); + match(EXTENSION); + setState(1741); + type_identifier(); + setState(1743); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLON) { + { + setState(1742); + type_inheritance_clause(); + } + } + + setState(1746); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1745); + generic_where_clause(); + } + } + + setState(1748); + extension_body(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Extension_bodyContext extends ParserRuleContext { + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public Extension_membersContext extension_members() { + return getRuleContext(Extension_membersContext.class,0); + } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Extension_bodyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_extension_body; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExtension_body(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExtension_body(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExtension_body(this); + else return visitor.visitChildren(this); + } + } + + public final Extension_bodyContext extension_body() throws RecognitionException { + Extension_bodyContext _localctx = new Extension_bodyContext(_ctx, getState()); + enterRule(_localctx, 322, RULE_extension_body); + try { + enterOuterAlt(_localctx, 1); + { + setState(1750); + match(LCURLY); + setState(1751); + extension_members(); + setState(1752); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Extension_membersContext extends ParserRuleContext { + public List extension_member() { + return getRuleContexts(Extension_memberContext.class); + } + public Extension_memberContext extension_member(int i) { + return getRuleContext(Extension_memberContext.class,i); + } + public Extension_membersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_extension_members; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExtension_members(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExtension_members(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExtension_members(this); + else return visitor.visitChildren(this); + } + } + + public final Extension_membersContext extension_members() throws RecognitionException { + Extension_membersContext _localctx = new Extension_membersContext(_ctx, getState()); + enterRule(_localctx, 324, RULE_extension_members); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1757); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << ENUM) | (1L << FUNC) | (1L << IMPORT) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << LET) | (1L << VAR) | (1L << PROTOCOL) | (1L << STRUCT) | (1L << INDIRECT) | (1L << INIT) | (1L << DEINIT) | (1L << EXTENSION) | (1L << SUBSCRIPT) | (1L << PREFIX) | (1L << INFIX) | (1L << PRECEDENCE_GROUP) | (1L << POSTFIX) | (1L << TYPEALIAS))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)) | (1L << (SOURCE_LOCATION - 66)) | (1L << (ERROR - 66)) | (1L << (WARNING - 66)) | (1L << (HASH_IF - 66)))) != 0) || _la==AT) { + { + { + setState(1754); + extension_member(); + } + } + setState(1759); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Extension_memberContext extends ParserRuleContext { + public DeclarationContext declaration() { + return getRuleContext(DeclarationContext.class,0); + } + public Compiler_control_statementContext compiler_control_statement() { + return getRuleContext(Compiler_control_statementContext.class,0); + } + public Extension_memberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_extension_member; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExtension_member(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExtension_member(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExtension_member(this); + else return visitor.visitChildren(this); + } + } + + public final Extension_memberContext extension_member() throws RecognitionException { + Extension_memberContext _localctx = new Extension_memberContext(_ctx, getState()); + enterRule(_localctx, 326, RULE_extension_member); + try { + setState(1762); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLASS: + case ENUM: + case FUNC: + case IMPORT: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case LET: + case VAR: + case PROTOCOL: + case STRUCT: + case INDIRECT: + case INIT: + case DEINIT: + case EXTENSION: + case SUBSCRIPT: + case PREFIX: + case INFIX: + case PRECEDENCE_GROUP: + case POSTFIX: + case TYPEALIAS: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case STATIC: + case WEAK: + case UNOWNED: + case MUTATING: + case NONMUTATING: + case FILE_PRIVATE: + case AT: + enterOuterAlt(_localctx, 1); + { + setState(1760); + declaration(); + } + break; + case SOURCE_LOCATION: + case ERROR: + case WARNING: + case HASH_IF: + enterOuterAlt(_localctx, 2); + { + setState(1761); + compiler_control_statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Subscript_declarationContext extends ParserRuleContext { + public Subscript_headContext subscript_head() { + return getRuleContext(Subscript_headContext.class,0); + } + public Subscript_resultContext subscript_result() { + return getRuleContext(Subscript_resultContext.class,0); + } + public Code_blockContext code_block() { + return getRuleContext(Code_blockContext.class,0); + } + public Getter_setter_blockContext getter_setter_block() { + return getRuleContext(Getter_setter_blockContext.class,0); + } + public Getter_setter_keyword_blockContext getter_setter_keyword_block() { + return getRuleContext(Getter_setter_keyword_blockContext.class,0); + } + public Generic_where_clauseContext generic_where_clause() { + return getRuleContext(Generic_where_clauseContext.class,0); + } + public Subscript_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_subscript_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSubscript_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSubscript_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSubscript_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Subscript_declarationContext subscript_declaration() throws RecognitionException { + Subscript_declarationContext _localctx = new Subscript_declarationContext(_ctx, getState()); + enterRule(_localctx, 328, RULE_subscript_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1764); + subscript_head(); + setState(1765); + subscript_result(); + setState(1767); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(1766); + generic_where_clause(); + } + } + + setState(1772); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,200,_ctx) ) { + case 1: + { + setState(1769); + code_block(); + } + break; + case 2: + { + setState(1770); + getter_setter_block(); + } + break; + case 3: + { + setState(1771); + getter_setter_keyword_block(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Subscript_headContext extends ParserRuleContext { + public TerminalNode SUBSCRIPT() { return getToken(Swift5Parser.SUBSCRIPT, 0); } + public Parameter_clauseContext parameter_clause() { + return getRuleContext(Parameter_clauseContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Declaration_modifiersContext declaration_modifiers() { + return getRuleContext(Declaration_modifiersContext.class,0); + } + public Generic_parameter_clauseContext generic_parameter_clause() { + return getRuleContext(Generic_parameter_clauseContext.class,0); + } + public Subscript_headContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_subscript_head; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSubscript_head(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSubscript_head(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSubscript_head(this); + else return visitor.visitChildren(this); + } + } + + public final Subscript_headContext subscript_head() throws RecognitionException { + Subscript_headContext _localctx = new Subscript_headContext(_ctx, getState()); + enterRule(_localctx, 330, RULE_subscript_head); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1775); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(1774); + attributes(); + } + } + + setState(1778); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << PREFIX) | (1L << INFIX) | (1L << POSTFIX))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)))) != 0)) { + { + setState(1777); + declaration_modifiers(); + } + } + + setState(1780); + match(SUBSCRIPT); + setState(1782); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LT) { + { + setState(1781); + generic_parameter_clause(); + } + } + + setState(1784); + parameter_clause(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Subscript_resultContext extends ParserRuleContext { + public Arrow_operatorContext arrow_operator() { + return getRuleContext(Arrow_operatorContext.class,0); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public Subscript_resultContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_subscript_result; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSubscript_result(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSubscript_result(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSubscript_result(this); + else return visitor.visitChildren(this); + } + } + + public final Subscript_resultContext subscript_result() throws RecognitionException { + Subscript_resultContext _localctx = new Subscript_resultContext(_ctx, getState()); + enterRule(_localctx, 332, RULE_subscript_result); + try { + enterOuterAlt(_localctx, 1); + { + setState(1786); + arrow_operator(); + setState(1788); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,204,_ctx) ) { + case 1: + { + setState(1787); + attributes(); + } + break; + } + setState(1790); + type(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Operator_declarationContext extends ParserRuleContext { + public Prefix_operator_declarationContext prefix_operator_declaration() { + return getRuleContext(Prefix_operator_declarationContext.class,0); + } + public Postfix_operator_declarationContext postfix_operator_declaration() { + return getRuleContext(Postfix_operator_declarationContext.class,0); + } + public Infix_operator_declarationContext infix_operator_declaration() { + return getRuleContext(Infix_operator_declarationContext.class,0); + } + public Operator_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_operator_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOperator_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOperator_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOperator_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Operator_declarationContext operator_declaration() throws RecognitionException { + Operator_declarationContext _localctx = new Operator_declarationContext(_ctx, getState()); + enterRule(_localctx, 334, RULE_operator_declaration); + try { + setState(1795); + _errHandler.sync(this); + switch (_input.LA(1)) { + case PREFIX: + enterOuterAlt(_localctx, 1); + { + setState(1792); + prefix_operator_declaration(); + } + break; + case POSTFIX: + enterOuterAlt(_localctx, 2); + { + setState(1793); + postfix_operator_declaration(); + } + break; + case INFIX: + enterOuterAlt(_localctx, 3); + { + setState(1794); + infix_operator_declaration(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Prefix_operator_declarationContext extends ParserRuleContext { + public TerminalNode PREFIX() { return getToken(Swift5Parser.PREFIX, 0); } + public TerminalNode OPERATOR() { return getToken(Swift5Parser.OPERATOR, 0); } + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Prefix_operator_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_prefix_operator_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrefix_operator_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrefix_operator_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrefix_operator_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Prefix_operator_declarationContext prefix_operator_declaration() throws RecognitionException { + Prefix_operator_declarationContext _localctx = new Prefix_operator_declarationContext(_ctx, getState()); + enterRule(_localctx, 336, RULE_prefix_operator_declaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(1797); + match(PREFIX); + setState(1798); + match(OPERATOR); + setState(1799); + operator(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Postfix_operator_declarationContext extends ParserRuleContext { + public TerminalNode POSTFIX() { return getToken(Swift5Parser.POSTFIX, 0); } + public TerminalNode OPERATOR() { return getToken(Swift5Parser.OPERATOR, 0); } + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Postfix_operator_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postfix_operator_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPostfix_operator_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPostfix_operator_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPostfix_operator_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Postfix_operator_declarationContext postfix_operator_declaration() throws RecognitionException { + Postfix_operator_declarationContext _localctx = new Postfix_operator_declarationContext(_ctx, getState()); + enterRule(_localctx, 338, RULE_postfix_operator_declaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(1801); + match(POSTFIX); + setState(1802); + match(OPERATOR); + setState(1803); + operator(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Infix_operator_declarationContext extends ParserRuleContext { + public TerminalNode INFIX() { return getToken(Swift5Parser.INFIX, 0); } + public TerminalNode OPERATOR() { return getToken(Swift5Parser.OPERATOR, 0); } + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Infix_operator_groupContext infix_operator_group() { + return getRuleContext(Infix_operator_groupContext.class,0); + } + public Infix_operator_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_infix_operator_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterInfix_operator_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitInfix_operator_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitInfix_operator_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Infix_operator_declarationContext infix_operator_declaration() throws RecognitionException { + Infix_operator_declarationContext _localctx = new Infix_operator_declarationContext(_ctx, getState()); + enterRule(_localctx, 340, RULE_infix_operator_declaration); + try { + enterOuterAlt(_localctx, 1); + { + setState(1805); + match(INFIX); + setState(1806); + match(OPERATOR); + setState(1807); + operator(); + setState(1809); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,206,_ctx) ) { + case 1: + { + setState(1808); + infix_operator_group(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Infix_operator_groupContext extends ParserRuleContext { + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Precedence_group_nameContext precedence_group_name() { + return getRuleContext(Precedence_group_nameContext.class,0); + } + public Infix_operator_groupContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_infix_operator_group; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterInfix_operator_group(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitInfix_operator_group(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitInfix_operator_group(this); + else return visitor.visitChildren(this); + } + } + + public final Infix_operator_groupContext infix_operator_group() throws RecognitionException { + Infix_operator_groupContext _localctx = new Infix_operator_groupContext(_ctx, getState()); + enterRule(_localctx, 342, RULE_infix_operator_group); + try { + enterOuterAlt(_localctx, 1); + { + setState(1811); + match(COLON); + setState(1812); + precedence_group_name(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Precedence_group_declarationContext extends ParserRuleContext { + public TerminalNode PRECEDENCE_GROUP() { return getToken(Swift5Parser.PRECEDENCE_GROUP, 0); } + public Precedence_group_nameContext precedence_group_name() { + return getRuleContext(Precedence_group_nameContext.class,0); + } + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Precedence_group_attributesContext precedence_group_attributes() { + return getRuleContext(Precedence_group_attributesContext.class,0); + } + public Precedence_group_declarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_precedence_group_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrecedence_group_declaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrecedence_group_declaration(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrecedence_group_declaration(this); + else return visitor.visitChildren(this); + } + } + + public final Precedence_group_declarationContext precedence_group_declaration() throws RecognitionException { + Precedence_group_declarationContext _localctx = new Precedence_group_declarationContext(_ctx, getState()); + enterRule(_localctx, 344, RULE_precedence_group_declaration); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1814); + match(PRECEDENCE_GROUP); + setState(1815); + precedence_group_name(); + setState(1816); + match(LCURLY); + setState(1818); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY))) != 0)) { + { + setState(1817); + precedence_group_attributes(); + } + } + + setState(1820); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Precedence_group_attributesContext extends ParserRuleContext { + public List precedence_group_attribute() { + return getRuleContexts(Precedence_group_attributeContext.class); + } + public Precedence_group_attributeContext precedence_group_attribute(int i) { + return getRuleContext(Precedence_group_attributeContext.class,i); + } + public Precedence_group_attributesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_precedence_group_attributes; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrecedence_group_attributes(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrecedence_group_attributes(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrecedence_group_attributes(this); + else return visitor.visitChildren(this); + } + } + + public final Precedence_group_attributesContext precedence_group_attributes() throws RecognitionException { + Precedence_group_attributesContext _localctx = new Precedence_group_attributesContext(_ctx, getState()); + enterRule(_localctx, 346, RULE_precedence_group_attributes); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1823); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1822); + precedence_group_attribute(); + } + } + setState(1825); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY))) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Precedence_group_attributeContext extends ParserRuleContext { + public Precedence_group_relationContext precedence_group_relation() { + return getRuleContext(Precedence_group_relationContext.class,0); + } + public Precedence_group_assignmentContext precedence_group_assignment() { + return getRuleContext(Precedence_group_assignmentContext.class,0); + } + public Precedence_group_associativityContext precedence_group_associativity() { + return getRuleContext(Precedence_group_associativityContext.class,0); + } + public Precedence_group_attributeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_precedence_group_attribute; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrecedence_group_attribute(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrecedence_group_attribute(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrecedence_group_attribute(this); + else return visitor.visitChildren(this); + } + } + + public final Precedence_group_attributeContext precedence_group_attribute() throws RecognitionException { + Precedence_group_attributeContext _localctx = new Precedence_group_attributeContext(_ctx, getState()); + enterRule(_localctx, 348, RULE_precedence_group_attribute); + try { + setState(1830); + _errHandler.sync(this); + switch (_input.LA(1)) { + case HIGHER_THAN: + case LOWER_THAN: + enterOuterAlt(_localctx, 1); + { + setState(1827); + precedence_group_relation(); + } + break; + case ASSIGNMENT: + enterOuterAlt(_localctx, 2); + { + setState(1828); + precedence_group_assignment(); + } + break; + case ASSOCIATIVITY: + enterOuterAlt(_localctx, 3); + { + setState(1829); + precedence_group_associativity(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Precedence_group_relationContext extends ParserRuleContext { + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Precedence_group_namesContext precedence_group_names() { + return getRuleContext(Precedence_group_namesContext.class,0); + } + public TerminalNode HIGHER_THAN() { return getToken(Swift5Parser.HIGHER_THAN, 0); } + public TerminalNode LOWER_THAN() { return getToken(Swift5Parser.LOWER_THAN, 0); } + public Precedence_group_relationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_precedence_group_relation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrecedence_group_relation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrecedence_group_relation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrecedence_group_relation(this); + else return visitor.visitChildren(this); + } + } + + public final Precedence_group_relationContext precedence_group_relation() throws RecognitionException { + Precedence_group_relationContext _localctx = new Precedence_group_relationContext(_ctx, getState()); + enterRule(_localctx, 350, RULE_precedence_group_relation); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1832); + _la = _input.LA(1); + if ( !(_la==HIGHER_THAN || _la==LOWER_THAN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1833); + match(COLON); + setState(1834); + precedence_group_names(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Precedence_group_assignmentContext extends ParserRuleContext { + public TerminalNode ASSIGNMENT() { return getToken(Swift5Parser.ASSIGNMENT, 0); } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Boolean_literalContext boolean_literal() { + return getRuleContext(Boolean_literalContext.class,0); + } + public Precedence_group_assignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_precedence_group_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrecedence_group_assignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrecedence_group_assignment(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrecedence_group_assignment(this); + else return visitor.visitChildren(this); + } + } + + public final Precedence_group_assignmentContext precedence_group_assignment() throws RecognitionException { + Precedence_group_assignmentContext _localctx = new Precedence_group_assignmentContext(_ctx, getState()); + enterRule(_localctx, 352, RULE_precedence_group_assignment); + try { + enterOuterAlt(_localctx, 1); + { + setState(1836); + match(ASSIGNMENT); + setState(1837); + match(COLON); + setState(1838); + boolean_literal(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Precedence_group_associativityContext extends ParserRuleContext { + public TerminalNode ASSOCIATIVITY() { return getToken(Swift5Parser.ASSOCIATIVITY, 0); } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public TerminalNode LEFT() { return getToken(Swift5Parser.LEFT, 0); } + public TerminalNode RIGHT() { return getToken(Swift5Parser.RIGHT, 0); } + public TerminalNode NONE() { return getToken(Swift5Parser.NONE, 0); } + public Precedence_group_associativityContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_precedence_group_associativity; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrecedence_group_associativity(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrecedence_group_associativity(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrecedence_group_associativity(this); + else return visitor.visitChildren(this); + } + } + + public final Precedence_group_associativityContext precedence_group_associativity() throws RecognitionException { + Precedence_group_associativityContext _localctx = new Precedence_group_associativityContext(_ctx, getState()); + enterRule(_localctx, 354, RULE_precedence_group_associativity); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1840); + match(ASSOCIATIVITY); + setState(1841); + match(COLON); + setState(1842); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LEFT) | (1L << RIGHT) | (1L << NONE))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Precedence_group_namesContext extends ParserRuleContext { + public List precedence_group_name() { + return getRuleContexts(Precedence_group_nameContext.class); + } + public Precedence_group_nameContext precedence_group_name(int i) { + return getRuleContext(Precedence_group_nameContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Precedence_group_namesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_precedence_group_names; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrecedence_group_names(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrecedence_group_names(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrecedence_group_names(this); + else return visitor.visitChildren(this); + } + } + + public final Precedence_group_namesContext precedence_group_names() throws RecognitionException { + Precedence_group_namesContext _localctx = new Precedence_group_namesContext(_ctx, getState()); + enterRule(_localctx, 356, RULE_precedence_group_names); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1844); + precedence_group_name(); + setState(1849); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1845); + match(COMMA); + setState(1846); + precedence_group_name(); + } + } + setState(1851); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Precedence_group_nameContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List DOT() { return getTokens(Swift5Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Swift5Parser.DOT, i); + } + public Precedence_group_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_precedence_group_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrecedence_group_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrecedence_group_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrecedence_group_name(this); + else return visitor.visitChildren(this); + } + } + + public final Precedence_group_nameContext precedence_group_name() throws RecognitionException { + Precedence_group_nameContext _localctx = new Precedence_group_nameContext(_ctx, getState()); + enterRule(_localctx, 358, RULE_precedence_group_name); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1852); + identifier(); + setState(1857); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,211,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(1853); + match(DOT); + setState(1854); + identifier(); + } + } + } + setState(1859); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,211,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Declaration_modifierContext extends ParserRuleContext { + public TerminalNode CLASS() { return getToken(Swift5Parser.CLASS, 0); } + public TerminalNode CONVENIENCE() { return getToken(Swift5Parser.CONVENIENCE, 0); } + public TerminalNode DYNAMIC() { return getToken(Swift5Parser.DYNAMIC, 0); } + public TerminalNode FINAL() { return getToken(Swift5Parser.FINAL, 0); } + public TerminalNode INFIX() { return getToken(Swift5Parser.INFIX, 0); } + public TerminalNode LAZY() { return getToken(Swift5Parser.LAZY, 0); } + public TerminalNode OPTIONAL() { return getToken(Swift5Parser.OPTIONAL, 0); } + public TerminalNode OVERRIDE() { return getToken(Swift5Parser.OVERRIDE, 0); } + public TerminalNode POSTFIX() { return getToken(Swift5Parser.POSTFIX, 0); } + public TerminalNode PREFIX() { return getToken(Swift5Parser.PREFIX, 0); } + public TerminalNode REQUIRED() { return getToken(Swift5Parser.REQUIRED, 0); } + public TerminalNode STATIC() { return getToken(Swift5Parser.STATIC, 0); } + public TerminalNode UNOWNED() { return getToken(Swift5Parser.UNOWNED, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public TerminalNode SAFE() { return getToken(Swift5Parser.SAFE, 0); } + public TerminalNode UNSAFE() { return getToken(Swift5Parser.UNSAFE, 0); } + public TerminalNode WEAK() { return getToken(Swift5Parser.WEAK, 0); } + public Access_level_modifierContext access_level_modifier() { + return getRuleContext(Access_level_modifierContext.class,0); + } + public Mutation_modifierContext mutation_modifier() { + return getRuleContext(Mutation_modifierContext.class,0); + } + public Declaration_modifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_declaration_modifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDeclaration_modifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDeclaration_modifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDeclaration_modifier(this); + else return visitor.visitChildren(this); + } + } + + public final Declaration_modifierContext declaration_modifier() throws RecognitionException { + Declaration_modifierContext _localctx = new Declaration_modifierContext(_ctx, getState()); + enterRule(_localctx, 360, RULE_declaration_modifier); + int _la; + try { + setState(1881); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLASS: + enterOuterAlt(_localctx, 1); + { + setState(1860); + match(CLASS); + } + break; + case CONVENIENCE: + enterOuterAlt(_localctx, 2); + { + setState(1861); + match(CONVENIENCE); + } + break; + case DYNAMIC: + enterOuterAlt(_localctx, 3); + { + setState(1862); + match(DYNAMIC); + } + break; + case FINAL: + enterOuterAlt(_localctx, 4); + { + setState(1863); + match(FINAL); + } + break; + case INFIX: + enterOuterAlt(_localctx, 5); + { + setState(1864); + match(INFIX); + } + break; + case LAZY: + enterOuterAlt(_localctx, 6); + { + setState(1865); + match(LAZY); + } + break; + case OPTIONAL: + enterOuterAlt(_localctx, 7); + { + setState(1866); + match(OPTIONAL); + } + break; + case OVERRIDE: + enterOuterAlt(_localctx, 8); + { + setState(1867); + match(OVERRIDE); + } + break; + case POSTFIX: + enterOuterAlt(_localctx, 9); + { + setState(1868); + match(POSTFIX); + } + break; + case PREFIX: + enterOuterAlt(_localctx, 10); + { + setState(1869); + match(PREFIX); + } + break; + case REQUIRED: + enterOuterAlt(_localctx, 11); + { + setState(1870); + match(REQUIRED); + } + break; + case STATIC: + enterOuterAlt(_localctx, 12); + { + setState(1871); + match(STATIC); + } + break; + case UNOWNED: + enterOuterAlt(_localctx, 13); + { + setState(1872); + match(UNOWNED); + setState(1876); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(1873); + match(LPAREN); + setState(1874); + _la = _input.LA(1); + if ( !(_la==SAFE || _la==UNSAFE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1875); + match(RPAREN); + } + } + + } + break; + case WEAK: + enterOuterAlt(_localctx, 14); + { + setState(1878); + match(WEAK); + } + break; + case INTERNAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case FILE_PRIVATE: + enterOuterAlt(_localctx, 15); + { + setState(1879); + access_level_modifier(); + } + break; + case MUTATING: + case NONMUTATING: + enterOuterAlt(_localctx, 16); + { + setState(1880); + mutation_modifier(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Declaration_modifiersContext extends ParserRuleContext { + public List declaration_modifier() { + return getRuleContexts(Declaration_modifierContext.class); + } + public Declaration_modifierContext declaration_modifier(int i) { + return getRuleContext(Declaration_modifierContext.class,i); + } + public Declaration_modifiersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_declaration_modifiers; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDeclaration_modifiers(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDeclaration_modifiers(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDeclaration_modifiers(this); + else return visitor.visitChildren(this); + } + } + + public final Declaration_modifiersContext declaration_modifiers() throws RecognitionException { + Declaration_modifiersContext _localctx = new Declaration_modifiersContext(_ctx, getState()); + enterRule(_localctx, 362, RULE_declaration_modifiers); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1884); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(1883); + declaration_modifier(); + } + } + setState(1886); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CLASS) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << PREFIX) | (1L << INFIX) | (1L << POSTFIX))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONVENIENCE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (LAZY - 66)) | (1L << (OPTIONAL - 66)) | (1L << (OVERRIDE - 66)) | (1L << (REQUIRED - 66)) | (1L << (STATIC - 66)) | (1L << (WEAK - 66)) | (1L << (UNOWNED - 66)) | (1L << (MUTATING - 66)) | (1L << (NONMUTATING - 66)) | (1L << (FILE_PRIVATE - 66)))) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Access_level_modifierContext extends ParserRuleContext { + public TerminalNode PRIVATE() { return getToken(Swift5Parser.PRIVATE, 0); } + public TerminalNode FILE_PRIVATE() { return getToken(Swift5Parser.FILE_PRIVATE, 0); } + public TerminalNode INTERNAL() { return getToken(Swift5Parser.INTERNAL, 0); } + public TerminalNode PUBLIC() { return getToken(Swift5Parser.PUBLIC, 0); } + public TerminalNode OPEN() { return getToken(Swift5Parser.OPEN, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode SET() { return getToken(Swift5Parser.SET, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Access_level_modifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_access_level_modifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAccess_level_modifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAccess_level_modifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAccess_level_modifier(this); + else return visitor.visitChildren(this); + } + } + + public final Access_level_modifierContext access_level_modifier() throws RecognitionException { + Access_level_modifierContext _localctx = new Access_level_modifierContext(_ctx, getState()); + enterRule(_localctx, 364, RULE_access_level_modifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1888); + _la = _input.LA(1); + if ( !(((((_la - 20)) & ~0x3f) == 0 && ((1L << (_la - 20)) & ((1L << (INTERNAL - 20)) | (1L << (OPEN - 20)) | (1L << (PRIVATE - 20)) | (1L << (PUBLIC - 20)) | (1L << (FILE_PRIVATE - 20)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1892); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(1889); + match(LPAREN); + setState(1890); + match(SET); + setState(1891); + match(RPAREN); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Mutation_modifierContext extends ParserRuleContext { + public TerminalNode MUTATING() { return getToken(Swift5Parser.MUTATING, 0); } + public TerminalNode NONMUTATING() { return getToken(Swift5Parser.NONMUTATING, 0); } + public Mutation_modifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_mutation_modifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterMutation_modifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitMutation_modifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitMutation_modifier(this); + else return visitor.visitChildren(this); + } + } + + public final Mutation_modifierContext mutation_modifier() throws RecognitionException { + Mutation_modifierContext _localctx = new Mutation_modifierContext(_ctx, getState()); + enterRule(_localctx, 366, RULE_mutation_modifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1894); + _la = _input.LA(1); + if ( !(_la==MUTATING || _la==NONMUTATING) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PatternContext extends ParserRuleContext { + public Wildcard_patternContext wildcard_pattern() { + return getRuleContext(Wildcard_patternContext.class,0); + } + public Identifier_patternContext identifier_pattern() { + return getRuleContext(Identifier_patternContext.class,0); + } + public Tuple_patternContext tuple_pattern() { + return getRuleContext(Tuple_patternContext.class,0); + } + public Type_annotationContext type_annotation() { + return getRuleContext(Type_annotationContext.class,0); + } + public Value_binding_patternContext value_binding_pattern() { + return getRuleContext(Value_binding_patternContext.class,0); + } + public Enum_case_patternContext enum_case_pattern() { + return getRuleContext(Enum_case_patternContext.class,0); + } + public Optional_patternContext optional_pattern() { + return getRuleContext(Optional_patternContext.class,0); + } + public TerminalNode IS() { return getToken(Swift5Parser.IS, 0); } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public Expression_patternContext expression_pattern() { + return getRuleContext(Expression_patternContext.class,0); + } + public PatternContext pattern() { + return getRuleContext(PatternContext.class,0); + } + public TerminalNode AS() { return getToken(Swift5Parser.AS, 0); } + public PatternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_pattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPattern(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPattern(this); + else return visitor.visitChildren(this); + } + } + + public final PatternContext pattern() throws RecognitionException { + return pattern(0); + } + + private PatternContext pattern(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + PatternContext _localctx = new PatternContext(_ctx, _parentState); + PatternContext _prevctx = _localctx; + int _startState = 368; + enterRecursionRule(_localctx, 368, RULE_pattern, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1911); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,218,_ctx) ) { + case 1: + { + setState(1900); + _errHandler.sync(this); + switch (_input.LA(1)) { + case UNDERSCORE: + { + setState(1897); + wildcard_pattern(); + } + break; + case AS: + case ALPHA: + case CATCH: + case CLASS: + case DEFAULT: + case DO: + case GUARD: + case FOR: + case IN: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case WHERE: + case WHILE: + case PROTOCOL: + case GET: + case SET: + case WILL_SET: + case DID_SET: + case INDIRECT: + case PREFIX: + case INFIX: + case LEFT: + case RIGHT: + case NONE: + case PRECEDENCE_GROUP: + case HIGHER_THAN: + case LOWER_THAN: + case ASSIGNMENT: + case ASSOCIATIVITY: + case POSTFIX: + case OPERATOR: + case OS: + case ARCH: + case SWIFT: + case COMPILER: + case CAN_IMPORT: + case TARGET_ENVIRONMENT: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case WEAK: + case UNOWNED: + case SAFE: + case UNSAFE: + case MUTATING: + case NONMUTATING: + case RED: + case BLUE: + case GREEN: + case RESOURCE_NAME: + case SOME: + case TYPE: + case PRECEDENCE: + case SELF: + case SELF_BIG: + case MAC_OS: + case I_OS: + case OSX: + case WATCH_OS: + case TV_OS: + case LINUX: + case WINDOWS: + case I386: + case X86_64: + case ARM: + case ARM64: + case SIMULATOR: + case MAC_CATALYST: + case I_OS_APPLICATION_EXTENSION: + case MAC_CATALYST_APPLICATION_EXTENSION: + case MAC_OS_APPLICATION_EXTENSION: + case FILE: + case LINE: + case GETTER: + case SETTER: + case Identifier: + case BACKTICK: + { + setState(1898); + identifier_pattern(); + } + break; + case LPAREN: + { + setState(1899); + tuple_pattern(); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1903); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,217,_ctx) ) { + case 1: + { + setState(1902); + type_annotation(); + } + break; + } + } + break; + case 2: + { + setState(1905); + value_binding_pattern(); + } + break; + case 3: + { + setState(1906); + enum_case_pattern(); + } + break; + case 4: + { + setState(1907); + optional_pattern(); + } + break; + case 5: + { + setState(1908); + match(IS); + setState(1909); + type(0); + } + break; + case 6: + { + setState(1910); + expression_pattern(); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(1918); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,219,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new PatternContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_pattern); + setState(1913); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(1914); + match(AS); + setState(1915); + type(0); + } + } + } + setState(1920); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,219,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class Wildcard_patternContext extends ParserRuleContext { + public TerminalNode UNDERSCORE() { return getToken(Swift5Parser.UNDERSCORE, 0); } + public Wildcard_patternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_wildcard_pattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterWildcard_pattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitWildcard_pattern(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitWildcard_pattern(this); + else return visitor.visitChildren(this); + } + } + + public final Wildcard_patternContext wildcard_pattern() throws RecognitionException { + Wildcard_patternContext _localctx = new Wildcard_patternContext(_ctx, getState()); + enterRule(_localctx, 370, RULE_wildcard_pattern); + try { + enterOuterAlt(_localctx, 1); + { + setState(1921); + match(UNDERSCORE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Identifier_patternContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Identifier_patternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifier_pattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterIdentifier_pattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitIdentifier_pattern(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitIdentifier_pattern(this); + else return visitor.visitChildren(this); + } + } + + public final Identifier_patternContext identifier_pattern() throws RecognitionException { + Identifier_patternContext _localctx = new Identifier_patternContext(_ctx, getState()); + enterRule(_localctx, 372, RULE_identifier_pattern); + try { + enterOuterAlt(_localctx, 1); + { + setState(1923); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Value_binding_patternContext extends ParserRuleContext { + public TerminalNode VAR() { return getToken(Swift5Parser.VAR, 0); } + public PatternContext pattern() { + return getRuleContext(PatternContext.class,0); + } + public TerminalNode LET() { return getToken(Swift5Parser.LET, 0); } + public Value_binding_patternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_value_binding_pattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterValue_binding_pattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitValue_binding_pattern(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitValue_binding_pattern(this); + else return visitor.visitChildren(this); + } + } + + public final Value_binding_patternContext value_binding_pattern() throws RecognitionException { + Value_binding_patternContext _localctx = new Value_binding_patternContext(_ctx, getState()); + enterRule(_localctx, 374, RULE_value_binding_pattern); + try { + setState(1929); + _errHandler.sync(this); + switch (_input.LA(1)) { + case VAR: + enterOuterAlt(_localctx, 1); + { + setState(1925); + match(VAR); + setState(1926); + pattern(0); + } + break; + case LET: + enterOuterAlt(_localctx, 2); + { + setState(1927); + match(LET); + setState(1928); + pattern(0); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Tuple_patternContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Tuple_pattern_element_listContext tuple_pattern_element_list() { + return getRuleContext(Tuple_pattern_element_listContext.class,0); + } + public Tuple_patternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tuple_pattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTuple_pattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTuple_pattern(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTuple_pattern(this); + else return visitor.visitChildren(this); + } + } + + public final Tuple_patternContext tuple_pattern() throws RecognitionException { + Tuple_patternContext _localctx = new Tuple_patternContext(_ctx, getState()); + enterRule(_localctx, 376, RULE_tuple_pattern); + try { + enterOuterAlt(_localctx, 1); + { + setState(1931); + match(LPAREN); + setState(1933); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,221,_ctx) ) { + case 1: + { + setState(1932); + tuple_pattern_element_list(); + } + break; + } + setState(1935); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Tuple_pattern_element_listContext extends ParserRuleContext { + public List tuple_pattern_element() { + return getRuleContexts(Tuple_pattern_elementContext.class); + } + public Tuple_pattern_elementContext tuple_pattern_element(int i) { + return getRuleContext(Tuple_pattern_elementContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Tuple_pattern_element_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tuple_pattern_element_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTuple_pattern_element_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTuple_pattern_element_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTuple_pattern_element_list(this); + else return visitor.visitChildren(this); + } + } + + public final Tuple_pattern_element_listContext tuple_pattern_element_list() throws RecognitionException { + Tuple_pattern_element_listContext _localctx = new Tuple_pattern_element_listContext(_ctx, getState()); + enterRule(_localctx, 378, RULE_tuple_pattern_element_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1937); + tuple_pattern_element(); + setState(1942); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1938); + match(COMMA); + setState(1939); + tuple_pattern_element(); + } + } + setState(1944); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Tuple_pattern_elementContext extends ParserRuleContext { + public PatternContext pattern() { + return getRuleContext(PatternContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Tuple_pattern_elementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tuple_pattern_element; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTuple_pattern_element(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTuple_pattern_element(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTuple_pattern_element(this); + else return visitor.visitChildren(this); + } + } + + public final Tuple_pattern_elementContext tuple_pattern_element() throws RecognitionException { + Tuple_pattern_elementContext _localctx = new Tuple_pattern_elementContext(_ctx, getState()); + enterRule(_localctx, 380, RULE_tuple_pattern_element); + try { + enterOuterAlt(_localctx, 1); + { + setState(1948); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,223,_ctx) ) { + case 1: + { + setState(1945); + identifier(); + setState(1946); + match(COLON); + } + break; + } + setState(1950); + pattern(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Enum_case_patternContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public Enum_case_nameContext enum_case_name() { + return getRuleContext(Enum_case_nameContext.class,0); + } + public Type_identifierContext type_identifier() { + return getRuleContext(Type_identifierContext.class,0); + } + public Tuple_patternContext tuple_pattern() { + return getRuleContext(Tuple_patternContext.class,0); + } + public Enum_case_patternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_enum_case_pattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterEnum_case_pattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitEnum_case_pattern(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitEnum_case_pattern(this); + else return visitor.visitChildren(this); + } + } + + public final Enum_case_patternContext enum_case_pattern() throws RecognitionException { + Enum_case_patternContext _localctx = new Enum_case_patternContext(_ctx, getState()); + enterRule(_localctx, 382, RULE_enum_case_pattern); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1953); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || ((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (GETTER - 135)) | (1L << (SETTER - 135)) | (1L << (Identifier - 135)) | (1L << (BACKTICK - 135)))) != 0)) { + { + setState(1952); + type_identifier(); + } + } + + setState(1955); + match(DOT); + setState(1956); + enum_case_name(); + setState(1958); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,225,_ctx) ) { + case 1: + { + setState(1957); + tuple_pattern(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Optional_patternContext extends ParserRuleContext { + public Identifier_patternContext identifier_pattern() { + return getRuleContext(Identifier_patternContext.class,0); + } + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public Optional_patternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_optional_pattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOptional_pattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOptional_pattern(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOptional_pattern(this); + else return visitor.visitChildren(this); + } + } + + public final Optional_patternContext optional_pattern() throws RecognitionException { + Optional_patternContext _localctx = new Optional_patternContext(_ctx, getState()); + enterRule(_localctx, 384, RULE_optional_pattern); + try { + enterOuterAlt(_localctx, 1); + { + setState(1960); + identifier_pattern(); + setState(1961); + match(QUESTION); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Expression_patternContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Expression_patternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression_pattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExpression_pattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExpression_pattern(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExpression_pattern(this); + else return visitor.visitChildren(this); + } + } + + public final Expression_patternContext expression_pattern() throws RecognitionException { + Expression_patternContext _localctx = new Expression_patternContext(_ctx, getState()); + enterRule(_localctx, 386, RULE_expression_pattern); + try { + enterOuterAlt(_localctx, 1); + { + setState(1963); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AttributeContext extends ParserRuleContext { + public TerminalNode AT() { return getToken(Swift5Parser.AT, 0); } + public Attribute_nameContext attribute_name() { + return getRuleContext(Attribute_nameContext.class,0); + } + public Attribute_argument_clauseContext attribute_argument_clause() { + return getRuleContext(Attribute_argument_clauseContext.class,0); + } + public AttributeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_attribute; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAttribute(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAttribute(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAttribute(this); + else return visitor.visitChildren(this); + } + } + + public final AttributeContext attribute() throws RecognitionException { + AttributeContext _localctx = new AttributeContext(_ctx, getState()); + enterRule(_localctx, 388, RULE_attribute); + try { + enterOuterAlt(_localctx, 1); + { + setState(1965); + match(AT); + setState(1966); + attribute_name(); + setState(1968); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,226,_ctx) ) { + case 1: + { + setState(1967); + attribute_argument_clause(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Attribute_nameContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List DOT() { return getTokens(Swift5Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Swift5Parser.DOT, i); + } + public Attribute_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_attribute_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAttribute_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAttribute_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAttribute_name(this); + else return visitor.visitChildren(this); + } + } + + public final Attribute_nameContext attribute_name() throws RecognitionException { + Attribute_nameContext _localctx = new Attribute_nameContext(_ctx, getState()); + enterRule(_localctx, 390, RULE_attribute_name); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(1970); + identifier(); + setState(1975); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(1971); + match(DOT); + setState(1972); + identifier(); + } + } + setState(1977); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Attribute_argument_clauseContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Balanced_tokensContext balanced_tokens() { + return getRuleContext(Balanced_tokensContext.class,0); + } + public Attribute_argument_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_attribute_argument_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAttribute_argument_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAttribute_argument_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAttribute_argument_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Attribute_argument_clauseContext attribute_argument_clause() throws RecognitionException { + Attribute_argument_clauseContext _localctx = new Attribute_argument_clauseContext(_ctx, getState()); + enterRule(_localctx, 392, RULE_attribute_argument_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(1978); + match(LPAREN); + setState(1980); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,228,_ctx) ) { + case 1: + { + setState(1979); + balanced_tokens(); + } + break; + } + setState(1982); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AttributesContext extends ParserRuleContext { + public List attribute() { + return getRuleContexts(AttributeContext.class); + } + public AttributeContext attribute(int i) { + return getRuleContext(AttributeContext.class,i); + } + public AttributesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_attributes; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAttributes(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAttributes(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAttributes(this); + else return visitor.visitChildren(this); + } + } + + public final AttributesContext attributes() throws RecognitionException { + AttributesContext _localctx = new AttributesContext(_ctx, getState()); + enterRule(_localctx, 394, RULE_attributes); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1985); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(1984); + attribute(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(1987); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,229,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Balanced_tokensContext extends ParserRuleContext { + public List balanced_token() { + return getRuleContexts(Balanced_tokenContext.class); + } + public Balanced_tokenContext balanced_token(int i) { + return getRuleContext(Balanced_tokenContext.class,i); + } + public Balanced_tokensContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_balanced_tokens; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterBalanced_tokens(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitBalanced_tokens(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitBalanced_tokens(this); + else return visitor.visitChildren(this); + } + } + + public final Balanced_tokensContext balanced_tokens() throws RecognitionException { + Balanced_tokensContext _localctx = new Balanced_tokensContext(_ctx, getState()); + enterRule(_localctx, 396, RULE_balanced_tokens); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(1990); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(1989); + balanced_token(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(1992); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,230,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Balanced_tokenContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Balanced_tokensContext balanced_tokens() { + return getRuleContext(Balanced_tokensContext.class,0); + } + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public KeywordContext keyword() { + return getRuleContext(KeywordContext.class,0); + } + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Balanced_token_punctuationContext balanced_token_punctuation() { + return getRuleContext(Balanced_token_punctuationContext.class,0); + } + public Balanced_tokenContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_balanced_token; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterBalanced_token(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitBalanced_token(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitBalanced_token(this); + else return visitor.visitChildren(this); + } + } + + public final Balanced_tokenContext balanced_token() throws RecognitionException { + Balanced_tokenContext _localctx = new Balanced_tokenContext(_ctx, getState()); + enterRule(_localctx, 398, RULE_balanced_token); + try { + setState(2014); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,234,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1994); + match(LPAREN); + setState(1996); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,231,_ctx) ) { + case 1: + { + setState(1995); + balanced_tokens(); + } + break; + } + setState(1998); + match(RPAREN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1999); + match(LBRACK); + setState(2001); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,232,_ctx) ) { + case 1: + { + setState(2000); + balanced_tokens(); + } + break; + } + setState(2003); + match(RBRACK); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2004); + match(LCURLY); + setState(2006); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,233,_ctx) ) { + case 1: + { + setState(2005); + balanced_tokens(); + } + break; + } + setState(2008); + match(RCURLY); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2009); + identifier(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2010); + keyword(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2011); + literal(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2012); + operator(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(2013); + balanced_token_punctuation(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Balanced_token_punctuationContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public TerminalNode COMMA() { return getToken(Swift5Parser.COMMA, 0); } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public TerminalNode SEMI() { return getToken(Swift5Parser.SEMI, 0); } + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public TerminalNode AT() { return getToken(Swift5Parser.AT, 0); } + public TerminalNode HASH() { return getToken(Swift5Parser.HASH, 0); } + public TerminalNode BACKTICK() { return getToken(Swift5Parser.BACKTICK, 0); } + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public Arrow_operatorContext arrow_operator() { + return getRuleContext(Arrow_operatorContext.class,0); + } + public TerminalNode AND() { return getToken(Swift5Parser.AND, 0); } + public TerminalNode BANG() { return getToken(Swift5Parser.BANG, 0); } + public Balanced_token_punctuationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_balanced_token_punctuation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterBalanced_token_punctuation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitBalanced_token_punctuation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitBalanced_token_punctuation(this); + else return visitor.visitChildren(this); + } + } + + public final Balanced_token_punctuationContext balanced_token_punctuation() throws RecognitionException { + Balanced_token_punctuationContext _localctx = new Balanced_token_punctuationContext(_ctx, getState()); + enterRule(_localctx, 400, RULE_balanced_token_punctuation); + int _la; + try { + setState(2022); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,235,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2016); + _la = _input.LA(1); + if ( !(((((_la - 138)) & ~0x3f) == 0 && ((1L << (_la - 138)) & ((1L << (DOT - 138)) | (1L << (COMMA - 138)) | (1L << (COLON - 138)) | (1L << (SEMI - 138)) | (1L << (QUESTION - 138)) | (1L << (AT - 138)) | (1L << (EQUAL - 138)) | (1L << (HASH - 138)) | (1L << (BACKTICK - 138)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2017); + arrow_operator(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2018); + if (!(SwiftSupport.isPrefixOp(_input))) throw new FailedPredicateException(this, "SwiftSupport.isPrefixOp(_input)"); + setState(2019); + match(AND); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2020); + if (!(SwiftSupport.isPostfixOp(_input))) throw new FailedPredicateException(this, "SwiftSupport.isPostfixOp(_input)"); + setState(2021); + match(BANG); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionContext extends ParserRuleContext { + public Prefix_expressionContext prefix_expression() { + return getRuleContext(Prefix_expressionContext.class,0); + } + public Try_operatorContext try_operator() { + return getRuleContext(Try_operatorContext.class,0); + } + public Binary_expressionsContext binary_expressions() { + return getRuleContext(Binary_expressionsContext.class,0); + } + public ExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExpression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExpression(this); + else return visitor.visitChildren(this); + } + } + + public final ExpressionContext expression() throws RecognitionException { + ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); + enterRule(_localctx, 402, RULE_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2025); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,236,_ctx) ) { + case 1: + { + setState(2024); + try_operator(); + } + break; + } + setState(2027); + prefix_expression(); + setState(2029); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,237,_ctx) ) { + case 1: + { + setState(2028); + binary_expressions(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Expression_listContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Expression_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExpression_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExpression_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExpression_list(this); + else return visitor.visitChildren(this); + } + } + + public final Expression_listContext expression_list() throws RecognitionException { + Expression_listContext _localctx = new Expression_listContext(_ctx, getState()); + enterRule(_localctx, 404, RULE_expression_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2031); + expression(); + setState(2036); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2032); + match(COMMA); + setState(2033); + expression(); + } + } + setState(2038); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Prefix_expressionContext extends ParserRuleContext { + public Postfix_expressionContext postfix_expression() { + return getRuleContext(Postfix_expressionContext.class,0); + } + public Prefix_operatorContext prefix_operator() { + return getRuleContext(Prefix_operatorContext.class,0); + } + public In_out_expressionContext in_out_expression() { + return getRuleContext(In_out_expressionContext.class,0); + } + public Prefix_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_prefix_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrefix_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrefix_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrefix_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Prefix_expressionContext prefix_expression() throws RecognitionException { + Prefix_expressionContext _localctx = new Prefix_expressionContext(_ctx, getState()); + enterRule(_localctx, 406, RULE_prefix_expression); + try { + setState(2044); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,240,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2040); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,239,_ctx) ) { + case 1: + { + setState(2039); + prefix_operator(); + } + break; + } + setState(2042); + postfix_expression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2043); + in_out_expression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class In_out_expressionContext extends ParserRuleContext { + public TerminalNode AND() { return getToken(Swift5Parser.AND, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public In_out_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_in_out_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterIn_out_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitIn_out_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitIn_out_expression(this); + else return visitor.visitChildren(this); + } + } + + public final In_out_expressionContext in_out_expression() throws RecognitionException { + In_out_expressionContext _localctx = new In_out_expressionContext(_ctx, getState()); + enterRule(_localctx, 408, RULE_in_out_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2046); + match(AND); + setState(2047); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Try_operatorContext extends ParserRuleContext { + public TerminalNode TRY() { return getToken(Swift5Parser.TRY, 0); } + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public TerminalNode BANG() { return getToken(Swift5Parser.BANG, 0); } + public Try_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_try_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTry_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTry_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTry_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Try_operatorContext try_operator() throws RecognitionException { + Try_operatorContext _localctx = new Try_operatorContext(_ctx, getState()); + enterRule(_localctx, 410, RULE_try_operator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2049); + match(TRY); + setState(2051); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,241,_ctx) ) { + case 1: + { + setState(2050); + _la = _input.LA(1); + if ( !(_la==BANG || _la==QUESTION) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Binary_expressionContext extends ParserRuleContext { + public Binary_operatorContext binary_operator() { + return getRuleContext(Binary_operatorContext.class,0); + } + public Prefix_expressionContext prefix_expression() { + return getRuleContext(Prefix_expressionContext.class,0); + } + public Assignment_operatorContext assignment_operator() { + return getRuleContext(Assignment_operatorContext.class,0); + } + public Conditional_operatorContext conditional_operator() { + return getRuleContext(Conditional_operatorContext.class,0); + } + public Try_operatorContext try_operator() { + return getRuleContext(Try_operatorContext.class,0); + } + public Type_casting_operatorContext type_casting_operator() { + return getRuleContext(Type_casting_operatorContext.class,0); + } + public Binary_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_binary_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterBinary_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitBinary_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitBinary_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Binary_expressionContext binary_expression() throws RecognitionException { + Binary_expressionContext _localctx = new Binary_expressionContext(_ctx, getState()); + enterRule(_localctx, 412, RULE_binary_expression); + try { + setState(2066); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,244,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2053); + binary_operator(); + setState(2054); + prefix_expression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2058); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,242,_ctx) ) { + case 1: + { + setState(2056); + assignment_operator(); + } + break; + case 2: + { + setState(2057); + conditional_operator(); + } + break; + } + setState(2061); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,243,_ctx) ) { + case 1: + { + setState(2060); + try_operator(); + } + break; + } + setState(2063); + prefix_expression(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2065); + type_casting_operator(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Binary_expressionsContext extends ParserRuleContext { + public List binary_expression() { + return getRuleContexts(Binary_expressionContext.class); + } + public Binary_expressionContext binary_expression(int i) { + return getRuleContext(Binary_expressionContext.class,i); + } + public Binary_expressionsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_binary_expressions; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterBinary_expressions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitBinary_expressions(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitBinary_expressions(this); + else return visitor.visitChildren(this); + } + } + + public final Binary_expressionsContext binary_expressions() throws RecognitionException { + Binary_expressionsContext _localctx = new Binary_expressionsContext(_ctx, getState()); + enterRule(_localctx, 414, RULE_binary_expressions); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2069); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(2068); + binary_expression(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(2071); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,245,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Conditional_operatorContext extends ParserRuleContext { + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Conditional_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conditional_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterConditional_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitConditional_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitConditional_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Conditional_operatorContext conditional_operator() throws RecognitionException { + Conditional_operatorContext _localctx = new Conditional_operatorContext(_ctx, getState()); + enterRule(_localctx, 416, RULE_conditional_operator); + try { + enterOuterAlt(_localctx, 1); + { + setState(2073); + match(QUESTION); + setState(2074); + expression(); + setState(2075); + match(COLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Type_casting_operatorContext extends ParserRuleContext { + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public TerminalNode IS() { return getToken(Swift5Parser.IS, 0); } + public TerminalNode AS() { return getToken(Swift5Parser.AS, 0); } + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public TerminalNode BANG() { return getToken(Swift5Parser.BANG, 0); } + public Type_casting_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type_casting_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterType_casting_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitType_casting_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitType_casting_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Type_casting_operatorContext type_casting_operator() throws RecognitionException { + Type_casting_operatorContext _localctx = new Type_casting_operatorContext(_ctx, getState()); + enterRule(_localctx, 418, RULE_type_casting_operator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2082); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IS: + { + setState(2077); + match(IS); + } + break; + case AS: + { + setState(2078); + match(AS); + setState(2080); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BANG || _la==QUESTION) { + { + setState(2079); + _la = _input.LA(1); + if ( !(_la==BANG || _la==QUESTION) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + setState(2084); + type(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Primary_expressionContext extends ParserRuleContext { + public Unqualified_nameContext unqualified_name() { + return getRuleContext(Unqualified_nameContext.class,0); + } + public Generic_argument_clauseContext generic_argument_clause() { + return getRuleContext(Generic_argument_clauseContext.class,0); + } + public Array_typeContext array_type() { + return getRuleContext(Array_typeContext.class,0); + } + public Dictionary_typeContext dictionary_type() { + return getRuleContext(Dictionary_typeContext.class,0); + } + public Literal_expressionContext literal_expression() { + return getRuleContext(Literal_expressionContext.class,0); + } + public Self_expressionContext self_expression() { + return getRuleContext(Self_expressionContext.class,0); + } + public Superclass_expressionContext superclass_expression() { + return getRuleContext(Superclass_expressionContext.class,0); + } + public Closure_expressionContext closure_expression() { + return getRuleContext(Closure_expressionContext.class,0); + } + public Parenthesized_operatorContext parenthesized_operator() { + return getRuleContext(Parenthesized_operatorContext.class,0); + } + public Parenthesized_expressionContext parenthesized_expression() { + return getRuleContext(Parenthesized_expressionContext.class,0); + } + public Tuple_expressionContext tuple_expression() { + return getRuleContext(Tuple_expressionContext.class,0); + } + public Implicit_member_expressionContext implicit_member_expression() { + return getRuleContext(Implicit_member_expressionContext.class,0); + } + public Wildcard_expressionContext wildcard_expression() { + return getRuleContext(Wildcard_expressionContext.class,0); + } + public Key_path_expressionContext key_path_expression() { + return getRuleContext(Key_path_expressionContext.class,0); + } + public Selector_expressionContext selector_expression() { + return getRuleContext(Selector_expressionContext.class,0); + } + public Key_path_string_expressionContext key_path_string_expression() { + return getRuleContext(Key_path_string_expressionContext.class,0); + } + public Primary_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primary_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrimary_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrimary_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrimary_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Primary_expressionContext primary_expression() throws RecognitionException { + Primary_expressionContext _localctx = new Primary_expressionContext(_ctx, getState()); + enterRule(_localctx, 420, RULE_primary_expression); + try { + setState(2104); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,249,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2086); + unqualified_name(); + setState(2088); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,248,_ctx) ) { + case 1: + { + setState(2087); + generic_argument_clause(); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2090); + array_type(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2091); + dictionary_type(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2092); + literal_expression(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2093); + self_expression(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2094); + superclass_expression(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2095); + closure_expression(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(2096); + parenthesized_operator(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(2097); + parenthesized_expression(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(2098); + tuple_expression(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(2099); + implicit_member_expression(); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(2100); + wildcard_expression(); + } + break; + case 13: + enterOuterAlt(_localctx, 13); + { + setState(2101); + key_path_expression(); + } + break; + case 14: + enterOuterAlt(_localctx, 14); + { + setState(2102); + selector_expression(); + } + break; + case 15: + enterOuterAlt(_localctx, 15); + { + setState(2103); + key_path_string_expression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Unqualified_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public Argument_namesContext argument_names() { + return getRuleContext(Argument_namesContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Unqualified_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unqualified_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterUnqualified_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitUnqualified_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitUnqualified_name(this); + else return visitor.visitChildren(this); + } + } + + public final Unqualified_nameContext unqualified_name() throws RecognitionException { + Unqualified_nameContext _localctx = new Unqualified_nameContext(_ctx, getState()); + enterRule(_localctx, 422, RULE_unqualified_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(2106); + identifier(); + setState(2111); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,250,_ctx) ) { + case 1: + { + setState(2107); + match(LPAREN); + setState(2108); + argument_names(); + setState(2109); + match(RPAREN); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Literal_expressionContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public Array_literalContext array_literal() { + return getRuleContext(Array_literalContext.class,0); + } + public Dictionary_literalContext dictionary_literal() { + return getRuleContext(Dictionary_literalContext.class,0); + } + public Playground_literalContext playground_literal() { + return getRuleContext(Playground_literalContext.class,0); + } + public TerminalNode HASH_FILE() { return getToken(Swift5Parser.HASH_FILE, 0); } + public TerminalNode HASH_FILE_ID() { return getToken(Swift5Parser.HASH_FILE_ID, 0); } + public TerminalNode HASH_FILE_PATH() { return getToken(Swift5Parser.HASH_FILE_PATH, 0); } + public TerminalNode HASH_LINE() { return getToken(Swift5Parser.HASH_LINE, 0); } + public TerminalNode HASH_COLUMN() { return getToken(Swift5Parser.HASH_COLUMN, 0); } + public TerminalNode HASH_FUNCTION() { return getToken(Swift5Parser.HASH_FUNCTION, 0); } + public TerminalNode HASH_DSO_HANDLE() { return getToken(Swift5Parser.HASH_DSO_HANDLE, 0); } + public Literal_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_literal_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLiteral_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLiteral_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLiteral_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Literal_expressionContext literal_expression() throws RecognitionException { + Literal_expressionContext _localctx = new Literal_expressionContext(_ctx, getState()); + enterRule(_localctx, 424, RULE_literal_expression); + try { + setState(2124); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,251,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2113); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2114); + array_literal(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2115); + dictionary_literal(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2116); + playground_literal(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(2117); + match(HASH_FILE); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(2118); + match(HASH_FILE_ID); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(2119); + match(HASH_FILE_PATH); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(2120); + match(HASH_LINE); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(2121); + match(HASH_COLUMN); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(2122); + match(HASH_FUNCTION); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(2123); + match(HASH_DSO_HANDLE); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Array_literalContext extends ParserRuleContext { + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public Array_literal_itemsContext array_literal_items() { + return getRuleContext(Array_literal_itemsContext.class,0); + } + public Array_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_array_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterArray_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitArray_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitArray_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Array_literalContext array_literal() throws RecognitionException { + Array_literalContext _localctx = new Array_literalContext(_ctx, getState()); + enterRule(_localctx, 426, RULE_array_literal); + try { + enterOuterAlt(_localctx, 1); + { + setState(2126); + match(LBRACK); + setState(2128); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,252,_ctx) ) { + case 1: + { + setState(2127); + array_literal_items(); + } + break; + } + setState(2130); + match(RBRACK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Array_literal_itemsContext extends ParserRuleContext { + public List array_literal_item() { + return getRuleContexts(Array_literal_itemContext.class); + } + public Array_literal_itemContext array_literal_item(int i) { + return getRuleContext(Array_literal_itemContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Array_literal_itemsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_array_literal_items; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterArray_literal_items(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitArray_literal_items(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitArray_literal_items(this); + else return visitor.visitChildren(this); + } + } + + public final Array_literal_itemsContext array_literal_items() throws RecognitionException { + Array_literal_itemsContext _localctx = new Array_literal_itemsContext(_ctx, getState()); + enterRule(_localctx, 428, RULE_array_literal_items); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2132); + array_literal_item(); + setState(2137); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,253,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2133); + match(COMMA); + setState(2134); + array_literal_item(); + } + } + } + setState(2139); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,253,_ctx); + } + setState(2141); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(2140); + match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Array_literal_itemContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Array_literal_itemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_array_literal_item; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterArray_literal_item(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitArray_literal_item(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitArray_literal_item(this); + else return visitor.visitChildren(this); + } + } + + public final Array_literal_itemContext array_literal_item() throws RecognitionException { + Array_literal_itemContext _localctx = new Array_literal_itemContext(_ctx, getState()); + enterRule(_localctx, 430, RULE_array_literal_item); + try { + enterOuterAlt(_localctx, 1); + { + setState(2143); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Dictionary_literalContext extends ParserRuleContext { + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public Dictionary_literal_itemsContext dictionary_literal_items() { + return getRuleContext(Dictionary_literal_itemsContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Dictionary_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dictionary_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDictionary_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDictionary_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDictionary_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Dictionary_literalContext dictionary_literal() throws RecognitionException { + Dictionary_literalContext _localctx = new Dictionary_literalContext(_ctx, getState()); + enterRule(_localctx, 432, RULE_dictionary_literal); + try { + enterOuterAlt(_localctx, 1); + { + setState(2145); + match(LBRACK); + setState(2148); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,255,_ctx) ) { + case 1: + { + setState(2146); + dictionary_literal_items(); + } + break; + case 2: + { + setState(2147); + match(COLON); + } + break; + } + setState(2150); + match(RBRACK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Dictionary_literal_itemsContext extends ParserRuleContext { + public List dictionary_literal_item() { + return getRuleContexts(Dictionary_literal_itemContext.class); + } + public Dictionary_literal_itemContext dictionary_literal_item(int i) { + return getRuleContext(Dictionary_literal_itemContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Dictionary_literal_itemsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dictionary_literal_items; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDictionary_literal_items(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDictionary_literal_items(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDictionary_literal_items(this); + else return visitor.visitChildren(this); + } + } + + public final Dictionary_literal_itemsContext dictionary_literal_items() throws RecognitionException { + Dictionary_literal_itemsContext _localctx = new Dictionary_literal_itemsContext(_ctx, getState()); + enterRule(_localctx, 434, RULE_dictionary_literal_items); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2152); + dictionary_literal_item(); + setState(2157); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,256,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2153); + match(COMMA); + setState(2154); + dictionary_literal_item(); + } + } + } + setState(2159); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,256,_ctx); + } + setState(2161); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(2160); + match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Dictionary_literal_itemContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Dictionary_literal_itemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dictionary_literal_item; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDictionary_literal_item(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDictionary_literal_item(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDictionary_literal_item(this); + else return visitor.visitChildren(this); + } + } + + public final Dictionary_literal_itemContext dictionary_literal_item() throws RecognitionException { + Dictionary_literal_itemContext _localctx = new Dictionary_literal_itemContext(_ctx, getState()); + enterRule(_localctx, 436, RULE_dictionary_literal_item); + try { + enterOuterAlt(_localctx, 1); + { + setState(2163); + expression(); + setState(2164); + match(COLON); + setState(2165); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Playground_literalContext extends ParserRuleContext { + public TerminalNode HASH_COLOR_LITERAL() { return getToken(Swift5Parser.HASH_COLOR_LITERAL, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RED() { return getToken(Swift5Parser.RED, 0); } + public List COLON() { return getTokens(Swift5Parser.COLON); } + public TerminalNode COLON(int i) { + return getToken(Swift5Parser.COLON, i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public TerminalNode GREEN() { return getToken(Swift5Parser.GREEN, 0); } + public TerminalNode BLUE() { return getToken(Swift5Parser.BLUE, 0); } + public TerminalNode ALPHA() { return getToken(Swift5Parser.ALPHA, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public TerminalNode HASH_FILE_LITERAL() { return getToken(Swift5Parser.HASH_FILE_LITERAL, 0); } + public TerminalNode RESOURCE_NAME() { return getToken(Swift5Parser.RESOURCE_NAME, 0); } + public TerminalNode HASH_IMAGE_LITERAL() { return getToken(Swift5Parser.HASH_IMAGE_LITERAL, 0); } + public Playground_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_playground_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPlayground_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPlayground_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPlayground_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Playground_literalContext playground_literal() throws RecognitionException { + Playground_literalContext _localctx = new Playground_literalContext(_ctx, getState()); + enterRule(_localctx, 438, RULE_playground_literal); + try { + setState(2200); + _errHandler.sync(this); + switch (_input.LA(1)) { + case HASH_COLOR_LITERAL: + enterOuterAlt(_localctx, 1); + { + setState(2167); + match(HASH_COLOR_LITERAL); + setState(2168); + match(LPAREN); + setState(2169); + match(RED); + setState(2170); + match(COLON); + setState(2171); + expression(); + setState(2172); + match(COMMA); + setState(2173); + match(GREEN); + setState(2174); + match(COLON); + setState(2175); + expression(); + setState(2176); + match(COMMA); + setState(2177); + match(BLUE); + setState(2178); + match(COLON); + setState(2179); + expression(); + setState(2180); + match(COMMA); + setState(2181); + match(ALPHA); + setState(2182); + match(COLON); + setState(2183); + expression(); + setState(2184); + match(RPAREN); + } + break; + case HASH_FILE_LITERAL: + enterOuterAlt(_localctx, 2); + { + setState(2186); + match(HASH_FILE_LITERAL); + setState(2187); + match(LPAREN); + setState(2188); + match(RESOURCE_NAME); + setState(2189); + match(COLON); + setState(2190); + expression(); + setState(2191); + match(RPAREN); + } + break; + case HASH_IMAGE_LITERAL: + enterOuterAlt(_localctx, 3); + { + setState(2193); + match(HASH_IMAGE_LITERAL); + setState(2194); + match(LPAREN); + setState(2195); + match(RESOURCE_NAME); + setState(2196); + match(COLON); + setState(2197); + expression(); + setState(2198); + match(RPAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Self_expressionContext extends ParserRuleContext { + public Self_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_self_expression; } + + public Self_expressionContext() { } + public void copyFrom(Self_expressionContext ctx) { + super.copyFrom(ctx); + } + } + public static class Self_initializer_expressionContext extends Self_expressionContext { + public TerminalNode SELF() { return getToken(Swift5Parser.SELF, 0); } + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public TerminalNode INIT() { return getToken(Swift5Parser.INIT, 0); } + public Self_initializer_expressionContext(Self_expressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSelf_initializer_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSelf_initializer_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSelf_initializer_expression(this); + else return visitor.visitChildren(this); + } + } + public static class Self_pure_expressionContext extends Self_expressionContext { + public TerminalNode SELF() { return getToken(Swift5Parser.SELF, 0); } + public Self_pure_expressionContext(Self_expressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSelf_pure_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSelf_pure_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSelf_pure_expression(this); + else return visitor.visitChildren(this); + } + } + public static class Self_subscript_expressionContext extends Self_expressionContext { + public TerminalNode SELF() { return getToken(Swift5Parser.SELF, 0); } + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public Function_call_argument_listContext function_call_argument_list() { + return getRuleContext(Function_call_argument_listContext.class,0); + } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public Self_subscript_expressionContext(Self_expressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSelf_subscript_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSelf_subscript_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSelf_subscript_expression(this); + else return visitor.visitChildren(this); + } + } + public static class Self_method_expressionContext extends Self_expressionContext { + public TerminalNode SELF() { return getToken(Swift5Parser.SELF, 0); } + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Self_method_expressionContext(Self_expressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSelf_method_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSelf_method_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSelf_method_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Self_expressionContext self_expression() throws RecognitionException { + Self_expressionContext _localctx = new Self_expressionContext(_ctx, getState()); + enterRule(_localctx, 440, RULE_self_expression); + try { + setState(2214); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,259,_ctx) ) { + case 1: + _localctx = new Self_pure_expressionContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2202); + match(SELF); + } + break; + case 2: + _localctx = new Self_method_expressionContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2203); + match(SELF); + setState(2204); + match(DOT); + setState(2205); + identifier(); + } + break; + case 3: + _localctx = new Self_subscript_expressionContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2206); + match(SELF); + setState(2207); + match(LBRACK); + setState(2208); + function_call_argument_list(); + setState(2209); + match(RBRACK); + } + break; + case 4: + _localctx = new Self_initializer_expressionContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2211); + match(SELF); + setState(2212); + match(DOT); + setState(2213); + match(INIT); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Superclass_expressionContext extends ParserRuleContext { + public Superclass_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_superclass_expression; } + + public Superclass_expressionContext() { } + public void copyFrom(Superclass_expressionContext ctx) { + super.copyFrom(ctx); + } + } + public static class Superclass_subscript_expressionContext extends Superclass_expressionContext { + public TerminalNode SUPER() { return getToken(Swift5Parser.SUPER, 0); } + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public Function_call_argument_listContext function_call_argument_list() { + return getRuleContext(Function_call_argument_listContext.class,0); + } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public Superclass_subscript_expressionContext(Superclass_expressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSuperclass_subscript_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSuperclass_subscript_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSuperclass_subscript_expression(this); + else return visitor.visitChildren(this); + } + } + public static class Superclass_initializer_expressionContext extends Superclass_expressionContext { + public TerminalNode SUPER() { return getToken(Swift5Parser.SUPER, 0); } + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public TerminalNode INIT() { return getToken(Swift5Parser.INIT, 0); } + public Superclass_initializer_expressionContext(Superclass_expressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSuperclass_initializer_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSuperclass_initializer_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSuperclass_initializer_expression(this); + else return visitor.visitChildren(this); + } + } + public static class Superclass_method_expressionContext extends Superclass_expressionContext { + public TerminalNode SUPER() { return getToken(Swift5Parser.SUPER, 0); } + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Superclass_method_expressionContext(Superclass_expressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSuperclass_method_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSuperclass_method_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSuperclass_method_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Superclass_expressionContext superclass_expression() throws RecognitionException { + Superclass_expressionContext _localctx = new Superclass_expressionContext(_ctx, getState()); + enterRule(_localctx, 442, RULE_superclass_expression); + try { + setState(2227); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,260,_ctx) ) { + case 1: + _localctx = new Superclass_method_expressionContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2216); + match(SUPER); + setState(2217); + match(DOT); + setState(2218); + identifier(); + } + break; + case 2: + _localctx = new Superclass_subscript_expressionContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2219); + match(SUPER); + setState(2220); + match(LBRACK); + setState(2221); + function_call_argument_list(); + setState(2222); + match(RBRACK); + } + break; + case 3: + _localctx = new Superclass_initializer_expressionContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2224); + match(SUPER); + setState(2225); + match(DOT); + setState(2226); + match(INIT); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Closure_expressionContext extends ParserRuleContext { + public TerminalNode LCURLY() { return getToken(Swift5Parser.LCURLY, 0); } + public TerminalNode RCURLY() { return getToken(Swift5Parser.RCURLY, 0); } + public Closure_signatureContext closure_signature() { + return getRuleContext(Closure_signatureContext.class,0); + } + public StatementsContext statements() { + return getRuleContext(StatementsContext.class,0); + } + public Closure_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_closure_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClosure_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClosure_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClosure_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Closure_expressionContext closure_expression() throws RecognitionException { + Closure_expressionContext _localctx = new Closure_expressionContext(_ctx, getState()); + enterRule(_localctx, 444, RULE_closure_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2229); + match(LCURLY); + setState(2231); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,261,_ctx) ) { + case 1: + { + setState(2230); + closure_signature(); + } + break; + } + setState(2234); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,262,_ctx) ) { + case 1: + { + setState(2233); + statements(); + } + break; + } + setState(2236); + match(RCURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Closure_signatureContext extends ParserRuleContext { + public Closure_parameter_clauseContext closure_parameter_clause() { + return getRuleContext(Closure_parameter_clauseContext.class,0); + } + public TerminalNode IN() { return getToken(Swift5Parser.IN, 0); } + public Capture_listContext capture_list() { + return getRuleContext(Capture_listContext.class,0); + } + public TerminalNode THROWS() { return getToken(Swift5Parser.THROWS, 0); } + public Function_resultContext function_result() { + return getRuleContext(Function_resultContext.class,0); + } + public Closure_signatureContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_closure_signature; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClosure_signature(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClosure_signature(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClosure_signature(this); + else return visitor.visitChildren(this); + } + } + + public final Closure_signatureContext closure_signature() throws RecognitionException { + Closure_signatureContext _localctx = new Closure_signatureContext(_ctx, getState()); + enterRule(_localctx, 446, RULE_closure_signature); + int _la; + try { + setState(2253); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,266,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2239); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LBRACK) { + { + setState(2238); + capture_list(); + } + } + + setState(2241); + closure_parameter_clause(); + setState(2243); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,264,_ctx) ) { + case 1: + { + setState(2242); + match(THROWS); + } + break; + } + setState(2246); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,265,_ctx) ) { + case 1: + { + setState(2245); + function_result(); + } + break; + } + setState(2248); + match(IN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2250); + capture_list(); + setState(2251); + match(IN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Closure_parameter_clauseContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Closure_parameter_listContext closure_parameter_list() { + return getRuleContext(Closure_parameter_listContext.class,0); + } + public Identifier_listContext identifier_list() { + return getRuleContext(Identifier_listContext.class,0); + } + public Closure_parameter_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_closure_parameter_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClosure_parameter_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClosure_parameter_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClosure_parameter_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Closure_parameter_clauseContext closure_parameter_clause() throws RecognitionException { + Closure_parameter_clauseContext _localctx = new Closure_parameter_clauseContext(_ctx, getState()); + enterRule(_localctx, 448, RULE_closure_parameter_clause); + int _la; + try { + setState(2261); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LPAREN: + enterOuterAlt(_localctx, 1); + { + setState(2255); + match(LPAREN); + setState(2257); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || ((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (GETTER - 135)) | (1L << (SETTER - 135)) | (1L << (Identifier - 135)) | (1L << (BACKTICK - 135)))) != 0)) { + { + setState(2256); + closure_parameter_list(); + } + } + + setState(2259); + match(RPAREN); + } + break; + case AS: + case ALPHA: + case CATCH: + case CLASS: + case DEFAULT: + case DO: + case GUARD: + case FOR: + case IN: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case WHERE: + case WHILE: + case PROTOCOL: + case GET: + case SET: + case WILL_SET: + case DID_SET: + case INDIRECT: + case PREFIX: + case INFIX: + case LEFT: + case RIGHT: + case NONE: + case PRECEDENCE_GROUP: + case HIGHER_THAN: + case LOWER_THAN: + case ASSIGNMENT: + case ASSOCIATIVITY: + case POSTFIX: + case OPERATOR: + case OS: + case ARCH: + case SWIFT: + case COMPILER: + case CAN_IMPORT: + case TARGET_ENVIRONMENT: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case WEAK: + case UNOWNED: + case SAFE: + case UNSAFE: + case MUTATING: + case NONMUTATING: + case RED: + case BLUE: + case GREEN: + case RESOURCE_NAME: + case SOME: + case TYPE: + case PRECEDENCE: + case SELF: + case SELF_BIG: + case MAC_OS: + case I_OS: + case OSX: + case WATCH_OS: + case TV_OS: + case LINUX: + case WINDOWS: + case I386: + case X86_64: + case ARM: + case ARM64: + case SIMULATOR: + case MAC_CATALYST: + case I_OS_APPLICATION_EXTENSION: + case MAC_CATALYST_APPLICATION_EXTENSION: + case MAC_OS_APPLICATION_EXTENSION: + case FILE: + case LINE: + case GETTER: + case SETTER: + case Identifier: + case BACKTICK: + enterOuterAlt(_localctx, 2); + { + setState(2260); + identifier_list(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Closure_parameter_listContext extends ParserRuleContext { + public List closure_parameter() { + return getRuleContexts(Closure_parameterContext.class); + } + public Closure_parameterContext closure_parameter(int i) { + return getRuleContext(Closure_parameterContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Closure_parameter_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_closure_parameter_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClosure_parameter_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClosure_parameter_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClosure_parameter_list(this); + else return visitor.visitChildren(this); + } + } + + public final Closure_parameter_listContext closure_parameter_list() throws RecognitionException { + Closure_parameter_listContext _localctx = new Closure_parameter_listContext(_ctx, getState()); + enterRule(_localctx, 450, RULE_closure_parameter_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2263); + closure_parameter(); + setState(2268); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2264); + match(COMMA); + setState(2265); + closure_parameter(); + } + } + setState(2270); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Closure_parameterContext extends ParserRuleContext { + public IdentifierContext closure_parameter_name; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Type_annotationContext type_annotation() { + return getRuleContext(Type_annotationContext.class,0); + } + public Range_operatorContext range_operator() { + return getRuleContext(Range_operatorContext.class,0); + } + public Closure_parameterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_closure_parameter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterClosure_parameter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitClosure_parameter(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitClosure_parameter(this); + else return visitor.visitChildren(this); + } + } + + public final Closure_parameterContext closure_parameter() throws RecognitionException { + Closure_parameterContext _localctx = new Closure_parameterContext(_ctx, getState()); + enterRule(_localctx, 452, RULE_closure_parameter); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2271); + ((Closure_parameterContext)_localctx).closure_parameter_name = identifier(); + setState(2276); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLON) { + { + setState(2272); + type_annotation(); + setState(2274); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,270,_ctx) ) { + case 1: + { + setState(2273); + range_operator(); + } + break; + } + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Capture_listContext extends ParserRuleContext { + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public Capture_list_itemsContext capture_list_items() { + return getRuleContext(Capture_list_itemsContext.class,0); + } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public Capture_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_capture_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCapture_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCapture_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCapture_list(this); + else return visitor.visitChildren(this); + } + } + + public final Capture_listContext capture_list() throws RecognitionException { + Capture_listContext _localctx = new Capture_listContext(_ctx, getState()); + enterRule(_localctx, 454, RULE_capture_list); + try { + enterOuterAlt(_localctx, 1); + { + setState(2278); + match(LBRACK); + setState(2279); + capture_list_items(); + setState(2280); + match(RBRACK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Capture_list_itemsContext extends ParserRuleContext { + public List capture_list_item() { + return getRuleContexts(Capture_list_itemContext.class); + } + public Capture_list_itemContext capture_list_item(int i) { + return getRuleContext(Capture_list_itemContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Capture_list_itemsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_capture_list_items; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCapture_list_items(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCapture_list_items(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCapture_list_items(this); + else return visitor.visitChildren(this); + } + } + + public final Capture_list_itemsContext capture_list_items() throws RecognitionException { + Capture_list_itemsContext _localctx = new Capture_list_itemsContext(_ctx, getState()); + enterRule(_localctx, 456, RULE_capture_list_items); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2282); + capture_list_item(); + setState(2287); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2283); + match(COMMA); + setState(2284); + capture_list_item(); + } + } + setState(2289); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Capture_list_itemContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Self_expressionContext self_expression() { + return getRuleContext(Self_expressionContext.class,0); + } + public Capture_specifierContext capture_specifier() { + return getRuleContext(Capture_specifierContext.class,0); + } + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public Capture_list_itemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_capture_list_item; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCapture_list_item(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCapture_list_item(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCapture_list_item(this); + else return visitor.visitChildren(this); + } + } + + public final Capture_list_itemContext capture_list_item() throws RecognitionException { + Capture_list_itemContext _localctx = new Capture_list_itemContext(_ctx, getState()); + enterRule(_localctx, 458, RULE_capture_list_item); + try { + enterOuterAlt(_localctx, 1); + { + setState(2291); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,273,_ctx) ) { + case 1: + { + setState(2290); + capture_specifier(); + } + break; + } + setState(2300); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,275,_ctx) ) { + case 1: + { + setState(2293); + identifier(); + setState(2295); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,274,_ctx) ) { + case 1: + { + setState(2294); + match(EQUAL); + } + break; + } + setState(2297); + expression(); + } + break; + case 2: + { + setState(2299); + self_expression(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Capture_specifierContext extends ParserRuleContext { + public TerminalNode WEAK() { return getToken(Swift5Parser.WEAK, 0); } + public TerminalNode UNOWNED() { return getToken(Swift5Parser.UNOWNED, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public TerminalNode SAFE() { return getToken(Swift5Parser.SAFE, 0); } + public TerminalNode UNSAFE() { return getToken(Swift5Parser.UNSAFE, 0); } + public Capture_specifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_capture_specifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCapture_specifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCapture_specifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCapture_specifier(this); + else return visitor.visitChildren(this); + } + } + + public final Capture_specifierContext capture_specifier() throws RecognitionException { + Capture_specifierContext _localctx = new Capture_specifierContext(_ctx, getState()); + enterRule(_localctx, 460, RULE_capture_specifier); + int _la; + try { + setState(2309); + _errHandler.sync(this); + switch (_input.LA(1)) { + case WEAK: + enterOuterAlt(_localctx, 1); + { + setState(2302); + match(WEAK); + } + break; + case UNOWNED: + enterOuterAlt(_localctx, 2); + { + setState(2303); + match(UNOWNED); + setState(2307); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(2304); + match(LPAREN); + setState(2305); + _la = _input.LA(1); + if ( !(_la==SAFE || _la==UNSAFE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2306); + match(RPAREN); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Implicit_member_expressionContext extends ParserRuleContext { + public List DOT() { return getTokens(Swift5Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Swift5Parser.DOT, i); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public KeywordContext keyword() { + return getRuleContext(KeywordContext.class,0); + } + public Postfix_expressionContext postfix_expression() { + return getRuleContext(Postfix_expressionContext.class,0); + } + public Implicit_member_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_implicit_member_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterImplicit_member_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitImplicit_member_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitImplicit_member_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Implicit_member_expressionContext implicit_member_expression() throws RecognitionException { + Implicit_member_expressionContext _localctx = new Implicit_member_expressionContext(_ctx, getState()); + enterRule(_localctx, 462, RULE_implicit_member_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2311); + match(DOT); + setState(2314); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,278,_ctx) ) { + case 1: + { + setState(2312); + identifier(); + } + break; + case 2: + { + setState(2313); + keyword(); + } + break; + } + setState(2318); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,279,_ctx) ) { + case 1: + { + setState(2316); + match(DOT); + setState(2317); + postfix_expression(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Parenthesized_operatorContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Parenthesized_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parenthesized_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterParenthesized_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitParenthesized_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitParenthesized_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Parenthesized_operatorContext parenthesized_operator() throws RecognitionException { + Parenthesized_operatorContext _localctx = new Parenthesized_operatorContext(_ctx, getState()); + enterRule(_localctx, 464, RULE_parenthesized_operator); + try { + enterOuterAlt(_localctx, 1); + { + setState(2320); + match(LPAREN); + setState(2321); + operator(); + setState(2322); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Parenthesized_expressionContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Parenthesized_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parenthesized_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterParenthesized_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitParenthesized_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitParenthesized_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Parenthesized_expressionContext parenthesized_expression() throws RecognitionException { + Parenthesized_expressionContext _localctx = new Parenthesized_expressionContext(_ctx, getState()); + enterRule(_localctx, 466, RULE_parenthesized_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2324); + match(LPAREN); + setState(2325); + expression(); + setState(2326); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Tuple_expressionContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Tuple_elementContext tuple_element() { + return getRuleContext(Tuple_elementContext.class,0); + } + public TerminalNode COMMA() { return getToken(Swift5Parser.COMMA, 0); } + public Tuple_element_listContext tuple_element_list() { + return getRuleContext(Tuple_element_listContext.class,0); + } + public Tuple_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tuple_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTuple_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTuple_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTuple_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Tuple_expressionContext tuple_expression() throws RecognitionException { + Tuple_expressionContext _localctx = new Tuple_expressionContext(_ctx, getState()); + enterRule(_localctx, 468, RULE_tuple_expression); + try { + setState(2336); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,280,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2328); + match(LPAREN); + setState(2329); + match(RPAREN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2330); + match(LPAREN); + setState(2331); + tuple_element(); + setState(2332); + match(COMMA); + setState(2333); + tuple_element_list(); + setState(2334); + match(RPAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Tuple_element_listContext extends ParserRuleContext { + public List tuple_element() { + return getRuleContexts(Tuple_elementContext.class); + } + public Tuple_elementContext tuple_element(int i) { + return getRuleContext(Tuple_elementContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Tuple_element_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tuple_element_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTuple_element_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTuple_element_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTuple_element_list(this); + else return visitor.visitChildren(this); + } + } + + public final Tuple_element_listContext tuple_element_list() throws RecognitionException { + Tuple_element_listContext _localctx = new Tuple_element_listContext(_ctx, getState()); + enterRule(_localctx, 470, RULE_tuple_element_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2338); + tuple_element(); + setState(2343); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2339); + match(COMMA); + setState(2340); + tuple_element(); + } + } + setState(2345); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Tuple_elementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Tuple_elementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tuple_element; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTuple_element(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTuple_element(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTuple_element(this); + else return visitor.visitChildren(this); + } + } + + public final Tuple_elementContext tuple_element() throws RecognitionException { + Tuple_elementContext _localctx = new Tuple_elementContext(_ctx, getState()); + enterRule(_localctx, 472, RULE_tuple_element); + try { + enterOuterAlt(_localctx, 1); + { + setState(2349); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,282,_ctx) ) { + case 1: + { + setState(2346); + identifier(); + setState(2347); + match(COLON); + } + break; + } + setState(2351); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Wildcard_expressionContext extends ParserRuleContext { + public TerminalNode UNDERSCORE() { return getToken(Swift5Parser.UNDERSCORE, 0); } + public Wildcard_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_wildcard_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterWildcard_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitWildcard_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitWildcard_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Wildcard_expressionContext wildcard_expression() throws RecognitionException { + Wildcard_expressionContext _localctx = new Wildcard_expressionContext(_ctx, getState()); + enterRule(_localctx, 474, RULE_wildcard_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2353); + match(UNDERSCORE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Key_path_expressionContext extends ParserRuleContext { + public TerminalNode BACKSLASH() { return getToken(Swift5Parser.BACKSLASH, 0); } + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public Key_path_componentsContext key_path_components() { + return getRuleContext(Key_path_componentsContext.class,0); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public Key_path_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_key_path_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterKey_path_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitKey_path_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitKey_path_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Key_path_expressionContext key_path_expression() throws RecognitionException { + Key_path_expressionContext _localctx = new Key_path_expressionContext(_ctx, getState()); + enterRule(_localctx, 476, RULE_key_path_expression); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2355); + match(BACKSLASH); + setState(2357); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (ANY - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || ((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (GETTER - 135)) | (1L << (SETTER - 135)) | (1L << (Identifier - 135)) | (1L << (LPAREN - 135)) | (1L << (LBRACK - 135)) | (1L << (AT - 135)) | (1L << (BACKTICK - 135)))) != 0)) { + { + setState(2356); + type(0); + } + } + + setState(2359); + match(DOT); + setState(2360); + key_path_components(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Key_path_componentsContext extends ParserRuleContext { + public List key_path_component() { + return getRuleContexts(Key_path_componentContext.class); + } + public Key_path_componentContext key_path_component(int i) { + return getRuleContext(Key_path_componentContext.class,i); + } + public List DOT() { return getTokens(Swift5Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Swift5Parser.DOT, i); + } + public Key_path_componentsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_key_path_components; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterKey_path_components(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitKey_path_components(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitKey_path_components(this); + else return visitor.visitChildren(this); + } + } + + public final Key_path_componentsContext key_path_components() throws RecognitionException { + Key_path_componentsContext _localctx = new Key_path_componentsContext(_ctx, getState()); + enterRule(_localctx, 478, RULE_key_path_components); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2362); + key_path_component(); + setState(2367); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,284,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2363); + match(DOT); + setState(2364); + key_path_component(); + } + } + } + setState(2369); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,284,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Key_path_componentContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Key_path_postfixesContext key_path_postfixes() { + return getRuleContext(Key_path_postfixesContext.class,0); + } + public Key_path_componentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_key_path_component; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterKey_path_component(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitKey_path_component(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitKey_path_component(this); + else return visitor.visitChildren(this); + } + } + + public final Key_path_componentContext key_path_component() throws RecognitionException { + Key_path_componentContext _localctx = new Key_path_componentContext(_ctx, getState()); + enterRule(_localctx, 480, RULE_key_path_component); + try { + setState(2375); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,286,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2370); + identifier(); + setState(2372); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,285,_ctx) ) { + case 1: + { + setState(2371); + key_path_postfixes(); + } + break; + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2374); + key_path_postfixes(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Key_path_postfixesContext extends ParserRuleContext { + public List key_path_postfix() { + return getRuleContexts(Key_path_postfixContext.class); + } + public Key_path_postfixContext key_path_postfix(int i) { + return getRuleContext(Key_path_postfixContext.class,i); + } + public Key_path_postfixesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_key_path_postfixes; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterKey_path_postfixes(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitKey_path_postfixes(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitKey_path_postfixes(this); + else return visitor.visitChildren(this); + } + } + + public final Key_path_postfixesContext key_path_postfixes() throws RecognitionException { + Key_path_postfixesContext _localctx = new Key_path_postfixesContext(_ctx, getState()); + enterRule(_localctx, 482, RULE_key_path_postfixes); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2378); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(2377); + key_path_postfix(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(2380); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,287,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Key_path_postfixContext extends ParserRuleContext { + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public TerminalNode BANG() { return getToken(Swift5Parser.BANG, 0); } + public TerminalNode SELF() { return getToken(Swift5Parser.SELF, 0); } + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public Function_call_argument_listContext function_call_argument_list() { + return getRuleContext(Function_call_argument_listContext.class,0); + } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public Key_path_postfixContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_key_path_postfix; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterKey_path_postfix(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitKey_path_postfix(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitKey_path_postfix(this); + else return visitor.visitChildren(this); + } + } + + public final Key_path_postfixContext key_path_postfix() throws RecognitionException { + Key_path_postfixContext _localctx = new Key_path_postfixContext(_ctx, getState()); + enterRule(_localctx, 484, RULE_key_path_postfix); + try { + setState(2389); + _errHandler.sync(this); + switch (_input.LA(1)) { + case QUESTION: + enterOuterAlt(_localctx, 1); + { + setState(2382); + match(QUESTION); + } + break; + case BANG: + enterOuterAlt(_localctx, 2); + { + setState(2383); + match(BANG); + } + break; + case SELF: + enterOuterAlt(_localctx, 3); + { + setState(2384); + match(SELF); + } + break; + case LBRACK: + enterOuterAlt(_localctx, 4); + { + setState(2385); + match(LBRACK); + setState(2386); + function_call_argument_list(); + setState(2387); + match(RBRACK); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Selector_expressionContext extends ParserRuleContext { + public TerminalNode HASH_SELECTOR() { return getToken(Swift5Parser.HASH_SELECTOR, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public TerminalNode GETTER() { return getToken(Swift5Parser.GETTER, 0); } + public TerminalNode SETTER() { return getToken(Swift5Parser.SETTER, 0); } + public Selector_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_selector_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSelector_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSelector_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSelector_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Selector_expressionContext selector_expression() throws RecognitionException { + Selector_expressionContext _localctx = new Selector_expressionContext(_ctx, getState()); + enterRule(_localctx, 486, RULE_selector_expression); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2391); + match(HASH_SELECTOR); + setState(2392); + match(LPAREN); + setState(2395); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,289,_ctx) ) { + case 1: + { + setState(2393); + _la = _input.LA(1); + if ( !(_la==GETTER || _la==SETTER) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2394); + match(COLON); + } + break; + } + setState(2397); + expression(); + setState(2398); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Key_path_string_expressionContext extends ParserRuleContext { + public TerminalNode HASH_KEYPATH() { return getToken(Swift5Parser.HASH_KEYPATH, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Key_path_string_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_key_path_string_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterKey_path_string_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitKey_path_string_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitKey_path_string_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Key_path_string_expressionContext key_path_string_expression() throws RecognitionException { + Key_path_string_expressionContext _localctx = new Key_path_string_expressionContext(_ctx, getState()); + enterRule(_localctx, 488, RULE_key_path_string_expression); + try { + enterOuterAlt(_localctx, 1); + { + setState(2400); + match(HASH_KEYPATH); + setState(2401); + match(LPAREN); + setState(2402); + expression(); + setState(2403); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Postfix_expressionContext extends ParserRuleContext { + public Primary_expressionContext primary_expression() { + return getRuleContext(Primary_expressionContext.class,0); + } + public List function_call_suffix() { + return getRuleContexts(Function_call_suffixContext.class); + } + public Function_call_suffixContext function_call_suffix(int i) { + return getRuleContext(Function_call_suffixContext.class,i); + } + public List initializer_suffix() { + return getRuleContexts(Initializer_suffixContext.class); + } + public Initializer_suffixContext initializer_suffix(int i) { + return getRuleContext(Initializer_suffixContext.class,i); + } + public List explicit_member_suffix() { + return getRuleContexts(Explicit_member_suffixContext.class); + } + public Explicit_member_suffixContext explicit_member_suffix(int i) { + return getRuleContext(Explicit_member_suffixContext.class,i); + } + public List postfix_self_suffix() { + return getRuleContexts(Postfix_self_suffixContext.class); + } + public Postfix_self_suffixContext postfix_self_suffix(int i) { + return getRuleContext(Postfix_self_suffixContext.class,i); + } + public List subscript_suffix() { + return getRuleContexts(Subscript_suffixContext.class); + } + public Subscript_suffixContext subscript_suffix(int i) { + return getRuleContext(Subscript_suffixContext.class,i); + } + public List forced_value_suffix() { + return getRuleContexts(Forced_value_suffixContext.class); + } + public Forced_value_suffixContext forced_value_suffix(int i) { + return getRuleContext(Forced_value_suffixContext.class,i); + } + public List optional_chaining_suffix() { + return getRuleContexts(Optional_chaining_suffixContext.class); + } + public Optional_chaining_suffixContext optional_chaining_suffix(int i) { + return getRuleContext(Optional_chaining_suffixContext.class,i); + } + public List postfix_operator() { + return getRuleContexts(Postfix_operatorContext.class); + } + public Postfix_operatorContext postfix_operator(int i) { + return getRuleContext(Postfix_operatorContext.class,i); + } + public Postfix_expressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postfix_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPostfix_expression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPostfix_expression(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPostfix_expression(this); + else return visitor.visitChildren(this); + } + } + + public final Postfix_expressionContext postfix_expression() throws RecognitionException { + Postfix_expressionContext _localctx = new Postfix_expressionContext(_ctx, getState()); + enterRule(_localctx, 490, RULE_postfix_expression); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2405); + primary_expression(); + setState(2415); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,291,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + setState(2413); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,290,_ctx) ) { + case 1: + { + setState(2406); + function_call_suffix(); + } + break; + case 2: + { + setState(2407); + initializer_suffix(); + } + break; + case 3: + { + setState(2408); + explicit_member_suffix(); + } + break; + case 4: + { + setState(2409); + postfix_self_suffix(); + } + break; + case 5: + { + setState(2410); + subscript_suffix(); + } + break; + case 6: + { + setState(2411); + forced_value_suffix(); + } + break; + case 7: + { + setState(2412); + optional_chaining_suffix(); + } + break; + } + } + } + setState(2417); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,291,_ctx); + } + setState(2421); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,292,_ctx); + while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1+1 ) { + { + { + setState(2418); + postfix_operator(); + } + } + } + setState(2423); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,292,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_call_suffixContext extends ParserRuleContext { + public Trailing_closuresContext trailing_closures() { + return getRuleContext(Trailing_closuresContext.class,0); + } + public Function_call_argument_clauseContext function_call_argument_clause() { + return getRuleContext(Function_call_argument_clauseContext.class,0); + } + public Function_call_suffixContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_call_suffix; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_call_suffix(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_call_suffix(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_call_suffix(this); + else return visitor.visitChildren(this); + } + } + + public final Function_call_suffixContext function_call_suffix() throws RecognitionException { + Function_call_suffixContext _localctx = new Function_call_suffixContext(_ctx, getState()); + enterRule(_localctx, 492, RULE_function_call_suffix); + int _la; + try { + setState(2429); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,294,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2425); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LPAREN) { + { + setState(2424); + function_call_argument_clause(); + } + } + + setState(2427); + trailing_closures(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2428); + function_call_argument_clause(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Initializer_suffixContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public TerminalNode INIT() { return getToken(Swift5Parser.INIT, 0); } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public Argument_namesContext argument_names() { + return getRuleContext(Argument_namesContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Initializer_suffixContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_initializer_suffix; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterInitializer_suffix(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitInitializer_suffix(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitInitializer_suffix(this); + else return visitor.visitChildren(this); + } + } + + public final Initializer_suffixContext initializer_suffix() throws RecognitionException { + Initializer_suffixContext _localctx = new Initializer_suffixContext(_ctx, getState()); + enterRule(_localctx, 494, RULE_initializer_suffix); + try { + enterOuterAlt(_localctx, 1); + { + setState(2431); + match(DOT); + setState(2432); + match(INIT); + setState(2437); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) { + case 1: + { + setState(2433); + match(LPAREN); + setState(2434); + argument_names(); + setState(2435); + match(RPAREN); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Explicit_member_suffixContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public TerminalNode Decimal_digits() { return getToken(Swift5Parser.Decimal_digits, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Generic_argument_clauseContext generic_argument_clause() { + return getRuleContext(Generic_argument_clauseContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public Argument_namesContext argument_names() { + return getRuleContext(Argument_namesContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Explicit_member_suffixContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_explicit_member_suffix; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExplicit_member_suffix(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExplicit_member_suffix(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExplicit_member_suffix(this); + else return visitor.visitChildren(this); + } + } + + public final Explicit_member_suffixContext explicit_member_suffix() throws RecognitionException { + Explicit_member_suffixContext _localctx = new Explicit_member_suffixContext(_ctx, getState()); + enterRule(_localctx, 496, RULE_explicit_member_suffix); + try { + enterOuterAlt(_localctx, 1); + { + setState(2439); + match(DOT); + setState(2449); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Decimal_digits: + { + setState(2440); + match(Decimal_digits); + } + break; + case AS: + case ALPHA: + case CATCH: + case CLASS: + case DEFAULT: + case DO: + case GUARD: + case FOR: + case IN: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case WHERE: + case WHILE: + case PROTOCOL: + case GET: + case SET: + case WILL_SET: + case DID_SET: + case INDIRECT: + case PREFIX: + case INFIX: + case LEFT: + case RIGHT: + case NONE: + case PRECEDENCE_GROUP: + case HIGHER_THAN: + case LOWER_THAN: + case ASSIGNMENT: + case ASSOCIATIVITY: + case POSTFIX: + case OPERATOR: + case OS: + case ARCH: + case SWIFT: + case COMPILER: + case CAN_IMPORT: + case TARGET_ENVIRONMENT: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case WEAK: + case UNOWNED: + case SAFE: + case UNSAFE: + case MUTATING: + case NONMUTATING: + case RED: + case BLUE: + case GREEN: + case RESOURCE_NAME: + case SOME: + case TYPE: + case PRECEDENCE: + case SELF: + case SELF_BIG: + case MAC_OS: + case I_OS: + case OSX: + case WATCH_OS: + case TV_OS: + case LINUX: + case WINDOWS: + case I386: + case X86_64: + case ARM: + case ARM64: + case SIMULATOR: + case MAC_CATALYST: + case I_OS_APPLICATION_EXTENSION: + case MAC_CATALYST_APPLICATION_EXTENSION: + case MAC_OS_APPLICATION_EXTENSION: + case FILE: + case LINE: + case GETTER: + case SETTER: + case Identifier: + case BACKTICK: + { + setState(2441); + identifier(); + setState(2447); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,296,_ctx) ) { + case 1: + { + setState(2442); + generic_argument_clause(); + } + break; + case 2: + { + setState(2443); + match(LPAREN); + setState(2444); + argument_names(); + setState(2445); + match(RPAREN); + } + break; + } + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Postfix_self_suffixContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public TerminalNode SELF() { return getToken(Swift5Parser.SELF, 0); } + public Postfix_self_suffixContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postfix_self_suffix; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPostfix_self_suffix(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPostfix_self_suffix(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPostfix_self_suffix(this); + else return visitor.visitChildren(this); + } + } + + public final Postfix_self_suffixContext postfix_self_suffix() throws RecognitionException { + Postfix_self_suffixContext _localctx = new Postfix_self_suffixContext(_ctx, getState()); + enterRule(_localctx, 498, RULE_postfix_self_suffix); + try { + enterOuterAlt(_localctx, 1); + { + setState(2451); + match(DOT); + setState(2452); + match(SELF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Subscript_suffixContext extends ParserRuleContext { + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public Function_call_argument_listContext function_call_argument_list() { + return getRuleContext(Function_call_argument_listContext.class,0); + } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public Subscript_suffixContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_subscript_suffix; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSubscript_suffix(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSubscript_suffix(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSubscript_suffix(this); + else return visitor.visitChildren(this); + } + } + + public final Subscript_suffixContext subscript_suffix() throws RecognitionException { + Subscript_suffixContext _localctx = new Subscript_suffixContext(_ctx, getState()); + enterRule(_localctx, 500, RULE_subscript_suffix); + try { + enterOuterAlt(_localctx, 1); + { + setState(2454); + match(LBRACK); + setState(2455); + function_call_argument_list(); + setState(2456); + match(RBRACK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Forced_value_suffixContext extends ParserRuleContext { + public TerminalNode BANG() { return getToken(Swift5Parser.BANG, 0); } + public Forced_value_suffixContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forced_value_suffix; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterForced_value_suffix(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitForced_value_suffix(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitForced_value_suffix(this); + else return visitor.visitChildren(this); + } + } + + public final Forced_value_suffixContext forced_value_suffix() throws RecognitionException { + Forced_value_suffixContext _localctx = new Forced_value_suffixContext(_ctx, getState()); + enterRule(_localctx, 502, RULE_forced_value_suffix); + try { + enterOuterAlt(_localctx, 1); + { + setState(2458); + if (!(!SwiftSupport.isBinaryOp(_input))) throw new FailedPredicateException(this, "!SwiftSupport.isBinaryOp(_input)"); + setState(2459); + match(BANG); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Optional_chaining_suffixContext extends ParserRuleContext { + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public Optional_chaining_suffixContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_optional_chaining_suffix; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOptional_chaining_suffix(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOptional_chaining_suffix(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOptional_chaining_suffix(this); + else return visitor.visitChildren(this); + } + } + + public final Optional_chaining_suffixContext optional_chaining_suffix() throws RecognitionException { + Optional_chaining_suffixContext _localctx = new Optional_chaining_suffixContext(_ctx, getState()); + enterRule(_localctx, 504, RULE_optional_chaining_suffix); + try { + enterOuterAlt(_localctx, 1); + { + setState(2461); + if (!(!SwiftSupport.isBinaryOp(_input))) throw new FailedPredicateException(this, "!SwiftSupport.isBinaryOp(_input)"); + setState(2462); + match(QUESTION); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_call_argument_clauseContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Function_call_argument_listContext function_call_argument_list() { + return getRuleContext(Function_call_argument_listContext.class,0); + } + public Function_call_argument_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_call_argument_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_call_argument_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_call_argument_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_call_argument_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Function_call_argument_clauseContext function_call_argument_clause() throws RecognitionException { + Function_call_argument_clauseContext _localctx = new Function_call_argument_clauseContext(_ctx, getState()); + enterRule(_localctx, 506, RULE_function_call_argument_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(2464); + match(LPAREN); + setState(2466); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,298,_ctx) ) { + case 1: + { + setState(2465); + function_call_argument_list(); + } + break; + } + setState(2468); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_call_argument_listContext extends ParserRuleContext { + public List function_call_argument() { + return getRuleContexts(Function_call_argumentContext.class); + } + public Function_call_argumentContext function_call_argument(int i) { + return getRuleContext(Function_call_argumentContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Function_call_argument_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_call_argument_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_call_argument_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_call_argument_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_call_argument_list(this); + else return visitor.visitChildren(this); + } + } + + public final Function_call_argument_listContext function_call_argument_list() throws RecognitionException { + Function_call_argument_listContext _localctx = new Function_call_argument_listContext(_ctx, getState()); + enterRule(_localctx, 508, RULE_function_call_argument_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2470); + function_call_argument(); + setState(2475); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2471); + match(COMMA); + setState(2472); + function_call_argument(); + } + } + setState(2477); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_call_argumentContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Argument_nameContext argument_name() { + return getRuleContext(Argument_nameContext.class,0); + } + public Function_call_argumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_call_argument; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_call_argument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_call_argument(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_call_argument(this); + else return visitor.visitChildren(this); + } + } + + public final Function_call_argumentContext function_call_argument() throws RecognitionException { + Function_call_argumentContext _localctx = new Function_call_argumentContext(_ctx, getState()); + enterRule(_localctx, 510, RULE_function_call_argument); + try { + enterOuterAlt(_localctx, 1); + { + setState(2479); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,300,_ctx) ) { + case 1: + { + setState(2478); + argument_name(); + } + break; + } + setState(2484); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,301,_ctx) ) { + case 1: + { + setState(2481); + identifier(); + } + break; + case 2: + { + setState(2482); + expression(); + } + break; + case 3: + { + setState(2483); + operator(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Trailing_closuresContext extends ParserRuleContext { + public Closure_expressionContext closure_expression() { + return getRuleContext(Closure_expressionContext.class,0); + } + public Labeled_trailing_closuresContext labeled_trailing_closures() { + return getRuleContext(Labeled_trailing_closuresContext.class,0); + } + public Trailing_closuresContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_trailing_closures; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTrailing_closures(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTrailing_closures(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTrailing_closures(this); + else return visitor.visitChildren(this); + } + } + + public final Trailing_closuresContext trailing_closures() throws RecognitionException { + Trailing_closuresContext _localctx = new Trailing_closuresContext(_ctx, getState()); + enterRule(_localctx, 512, RULE_trailing_closures); + try { + enterOuterAlt(_localctx, 1); + { + setState(2486); + closure_expression(); + setState(2488); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,302,_ctx) ) { + case 1: + { + setState(2487); + labeled_trailing_closures(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Labeled_trailing_closuresContext extends ParserRuleContext { + public List labeled_trailing_closure() { + return getRuleContexts(Labeled_trailing_closureContext.class); + } + public Labeled_trailing_closureContext labeled_trailing_closure(int i) { + return getRuleContext(Labeled_trailing_closureContext.class,i); + } + public Labeled_trailing_closuresContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_labeled_trailing_closures; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLabeled_trailing_closures(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLabeled_trailing_closures(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLabeled_trailing_closures(this); + else return visitor.visitChildren(this); + } + } + + public final Labeled_trailing_closuresContext labeled_trailing_closures() throws RecognitionException { + Labeled_trailing_closuresContext _localctx = new Labeled_trailing_closuresContext(_ctx, getState()); + enterRule(_localctx, 514, RULE_labeled_trailing_closures); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2491); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(2490); + labeled_trailing_closure(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(2493); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,303,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Labeled_trailing_closureContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Closure_expressionContext closure_expression() { + return getRuleContext(Closure_expressionContext.class,0); + } + public Labeled_trailing_closureContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_labeled_trailing_closure; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLabeled_trailing_closure(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLabeled_trailing_closure(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLabeled_trailing_closure(this); + else return visitor.visitChildren(this); + } + } + + public final Labeled_trailing_closureContext labeled_trailing_closure() throws RecognitionException { + Labeled_trailing_closureContext _localctx = new Labeled_trailing_closureContext(_ctx, getState()); + enterRule(_localctx, 516, RULE_labeled_trailing_closure); + try { + enterOuterAlt(_localctx, 1); + { + setState(2495); + identifier(); + setState(2496); + match(COLON); + setState(2497); + closure_expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Argument_namesContext extends ParserRuleContext { + public List argument_name() { + return getRuleContexts(Argument_nameContext.class); + } + public Argument_nameContext argument_name(int i) { + return getRuleContext(Argument_nameContext.class,i); + } + public Argument_namesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_argument_names; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterArgument_names(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitArgument_names(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitArgument_names(this); + else return visitor.visitChildren(this); + } + } + + public final Argument_namesContext argument_names() throws RecognitionException { + Argument_namesContext _localctx = new Argument_namesContext(_ctx, getState()); + enterRule(_localctx, 518, RULE_argument_names); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2500); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(2499); + argument_name(); + } + } + setState(2502); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || ((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (GETTER - 135)) | (1L << (SETTER - 135)) | (1L << (Identifier - 135)) | (1L << (BACKTICK - 135)))) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Argument_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Argument_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_argument_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterArgument_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitArgument_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitArgument_name(this); + else return visitor.visitChildren(this); + } + } + + public final Argument_nameContext argument_name() throws RecognitionException { + Argument_nameContext _localctx = new Argument_nameContext(_ctx, getState()); + enterRule(_localctx, 520, RULE_argument_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(2504); + identifier(); + setState(2505); + match(COLON); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeContext extends ParserRuleContext { + public Function_typeContext function_type() { + return getRuleContext(Function_typeContext.class,0); + } + public Array_typeContext array_type() { + return getRuleContext(Array_typeContext.class,0); + } + public Dictionary_typeContext dictionary_type() { + return getRuleContext(Dictionary_typeContext.class,0); + } + public Protocol_composition_typeContext protocol_composition_type() { + return getRuleContext(Protocol_composition_typeContext.class,0); + } + public Type_identifierContext type_identifier() { + return getRuleContext(Type_identifierContext.class,0); + } + public Tuple_typeContext tuple_type() { + return getRuleContext(Tuple_typeContext.class,0); + } + public Opaque_typeContext opaque_type() { + return getRuleContext(Opaque_typeContext.class,0); + } + public Any_typeContext any_type() { + return getRuleContext(Any_typeContext.class,0); + } + public Self_typeContext self_type() { + return getRuleContext(Self_typeContext.class,0); + } + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public TerminalNode BANG() { return getToken(Swift5Parser.BANG, 0); } + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public TerminalNode TYPE() { return getToken(Swift5Parser.TYPE, 0); } + public TerminalNode PROTOCOL() { return getToken(Swift5Parser.PROTOCOL, 0); } + public TypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitType(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitType(this); + else return visitor.visitChildren(this); + } + } + + public final TypeContext type() throws RecognitionException { + return type(0); + } + + private TypeContext type(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + TypeContext _localctx = new TypeContext(_ctx, _parentState); + TypeContext _prevctx = _localctx; + int _startState = 522; + enterRecursionRule(_localctx, 522, RULE_type, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2521); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,305,_ctx) ) { + case 1: + { + setState(2508); + function_type(); + } + break; + case 2: + { + setState(2509); + array_type(); + } + break; + case 3: + { + setState(2510); + dictionary_type(); + } + break; + case 4: + { + setState(2511); + protocol_composition_type(); + } + break; + case 5: + { + setState(2512); + type_identifier(); + } + break; + case 6: + { + setState(2513); + tuple_type(); + } + break; + case 7: + { + setState(2514); + opaque_type(); + } + break; + case 8: + { + setState(2515); + any_type(); + } + break; + case 9: + { + setState(2516); + self_type(); + } + break; + case 10: + { + setState(2517); + match(LPAREN); + setState(2518); + type(0); + setState(2519); + match(RPAREN); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(2536); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,307,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new TypeContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_type); + setState(2523); + if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(2532); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,306,_ctx) ) { + case 1: + { + setState(2524); + if (!(!SwiftSupport.isBinaryOp(_input))) throw new FailedPredicateException(this, "!SwiftSupport.isBinaryOp(_input)"); + setState(2525); + match(QUESTION); + } + break; + case 2: + { + setState(2526); + if (!(!SwiftSupport.isBinaryOp(_input))) throw new FailedPredicateException(this, "!SwiftSupport.isBinaryOp(_input)"); + setState(2527); + match(BANG); + } + break; + case 3: + { + setState(2528); + match(DOT); + setState(2529); + match(TYPE); + } + break; + case 4: + { + setState(2530); + match(DOT); + setState(2531); + match(PROTOCOL); + } + break; + } + } + } + } + setState(2538); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,307,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class Type_annotationContext extends ParserRuleContext { + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TerminalNode INOUT() { return getToken(Swift5Parser.INOUT, 0); } + public Type_annotationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type_annotation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterType_annotation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitType_annotation(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitType_annotation(this); + else return visitor.visitChildren(this); + } + } + + public final Type_annotationContext type_annotation() throws RecognitionException { + Type_annotationContext _localctx = new Type_annotationContext(_ctx, getState()); + enterRule(_localctx, 524, RULE_type_annotation); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2539); + match(COLON); + setState(2541); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,308,_ctx) ) { + case 1: + { + setState(2540); + attributes(); + } + break; + } + setState(2544); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INOUT) { + { + setState(2543); + match(INOUT); + } + } + + setState(2546); + type(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Type_identifierContext extends ParserRuleContext { + public Type_nameContext type_name() { + return getRuleContext(Type_nameContext.class,0); + } + public Generic_argument_clauseContext generic_argument_clause() { + return getRuleContext(Generic_argument_clauseContext.class,0); + } + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public Type_identifierContext type_identifier() { + return getRuleContext(Type_identifierContext.class,0); + } + public Type_identifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type_identifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterType_identifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitType_identifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitType_identifier(this); + else return visitor.visitChildren(this); + } + } + + public final Type_identifierContext type_identifier() throws RecognitionException { + Type_identifierContext _localctx = new Type_identifierContext(_ctx, getState()); + enterRule(_localctx, 526, RULE_type_identifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(2548); + type_name(); + setState(2550); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,310,_ctx) ) { + case 1: + { + setState(2549); + generic_argument_clause(); + } + break; + } + setState(2554); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,311,_ctx) ) { + case 1: + { + setState(2552); + match(DOT); + setState(2553); + type_identifier(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Type_nameContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public Type_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterType_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitType_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitType_name(this); + else return visitor.visitChildren(this); + } + } + + public final Type_nameContext type_name() throws RecognitionException { + Type_nameContext _localctx = new Type_nameContext(_ctx, getState()); + enterRule(_localctx, 528, RULE_type_name); + try { + enterOuterAlt(_localctx, 1); + { + setState(2556); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Tuple_typeContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Tuple_type_element_listContext tuple_type_element_list() { + return getRuleContext(Tuple_type_element_listContext.class,0); + } + public Tuple_typeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tuple_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTuple_type(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTuple_type(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTuple_type(this); + else return visitor.visitChildren(this); + } + } + + public final Tuple_typeContext tuple_type() throws RecognitionException { + Tuple_typeContext _localctx = new Tuple_typeContext(_ctx, getState()); + enterRule(_localctx, 530, RULE_tuple_type); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2558); + match(LPAREN); + setState(2560); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (ANY - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || ((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (GETTER - 135)) | (1L << (SETTER - 135)) | (1L << (Identifier - 135)) | (1L << (LPAREN - 135)) | (1L << (LBRACK - 135)) | (1L << (AT - 135)) | (1L << (BACKTICK - 135)))) != 0)) { + { + setState(2559); + tuple_type_element_list(); + } + } + + setState(2562); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Tuple_type_element_listContext extends ParserRuleContext { + public List tuple_type_element() { + return getRuleContexts(Tuple_type_elementContext.class); + } + public Tuple_type_elementContext tuple_type_element(int i) { + return getRuleContext(Tuple_type_elementContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Tuple_type_element_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tuple_type_element_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTuple_type_element_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTuple_type_element_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTuple_type_element_list(this); + else return visitor.visitChildren(this); + } + } + + public final Tuple_type_element_listContext tuple_type_element_list() throws RecognitionException { + Tuple_type_element_listContext _localctx = new Tuple_type_element_listContext(_ctx, getState()); + enterRule(_localctx, 532, RULE_tuple_type_element_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2564); + tuple_type_element(); + setState(2569); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2565); + match(COMMA); + setState(2566); + tuple_type_element(); + } + } + setState(2571); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Tuple_type_elementContext extends ParserRuleContext { + public Element_nameContext element_name() { + return getRuleContext(Element_nameContext.class,0); + } + public Type_annotationContext type_annotation() { + return getRuleContext(Type_annotationContext.class,0); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public Tuple_type_elementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tuple_type_element; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTuple_type_element(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTuple_type_element(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTuple_type_element(this); + else return visitor.visitChildren(this); + } + } + + public final Tuple_type_elementContext tuple_type_element() throws RecognitionException { + Tuple_type_elementContext _localctx = new Tuple_type_elementContext(_ctx, getState()); + enterRule(_localctx, 534, RULE_tuple_type_element); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2576); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,314,_ctx) ) { + case 1: + { + setState(2572); + element_name(); + setState(2573); + type_annotation(); + } + break; + case 2: + { + setState(2575); + type(0); + } + break; + } + setState(2580); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQUAL) { + { + setState(2578); + match(EQUAL); + setState(2579); + expression(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Element_nameContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public Element_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_element_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterElement_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitElement_name(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitElement_name(this); + else return visitor.visitChildren(this); + } + } + + public final Element_nameContext element_name() throws RecognitionException { + Element_nameContext _localctx = new Element_nameContext(_ctx, getState()); + enterRule(_localctx, 536, RULE_element_name); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2583); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(2582); + identifier(); + } + } + setState(2585); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || ((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (GETTER - 135)) | (1L << (SETTER - 135)) | (1L << (Identifier - 135)) | (1L << (BACKTICK - 135)))) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_typeContext extends ParserRuleContext { + public Function_type_argument_clauseContext function_type_argument_clause() { + return getRuleContext(Function_type_argument_clauseContext.class,0); + } + public Arrow_operatorContext arrow_operator() { + return getRuleContext(Arrow_operatorContext.class,0); + } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TerminalNode THROWS() { return getToken(Swift5Parser.THROWS, 0); } + public Function_typeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_type(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_type(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_type(this); + else return visitor.visitChildren(this); + } + } + + public final Function_typeContext function_type() throws RecognitionException { + Function_typeContext _localctx = new Function_typeContext(_ctx, getState()); + enterRule(_localctx, 538, RULE_function_type); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2588); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AT) { + { + setState(2587); + attributes(); + } + } + + setState(2590); + function_type_argument_clause(); + setState(2592); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,318,_ctx) ) { + case 1: + { + setState(2591); + match(THROWS); + } + break; + } + setState(2594); + arrow_operator(); + setState(2595); + type(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_type_argument_clauseContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(Swift5Parser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(Swift5Parser.RPAREN, 0); } + public Function_type_argument_listContext function_type_argument_list() { + return getRuleContext(Function_type_argument_listContext.class,0); + } + public Range_operatorContext range_operator() { + return getRuleContext(Range_operatorContext.class,0); + } + public Function_type_argument_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_type_argument_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_type_argument_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_type_argument_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_type_argument_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Function_type_argument_clauseContext function_type_argument_clause() throws RecognitionException { + Function_type_argument_clauseContext _localctx = new Function_type_argument_clauseContext(_ctx, getState()); + enterRule(_localctx, 540, RULE_function_type_argument_clause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2597); + match(LPAREN); + setState(2602); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (ANY - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (INOUT - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || ((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (GETTER - 135)) | (1L << (SETTER - 135)) | (1L << (Identifier - 135)) | (1L << (LPAREN - 135)) | (1L << (LBRACK - 135)) | (1L << (AT - 135)) | (1L << (BACKTICK - 135)))) != 0)) { + { + setState(2598); + function_type_argument_list(); + setState(2600); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,319,_ctx) ) { + case 1: + { + setState(2599); + range_operator(); + } + break; + } + } + } + + setState(2604); + match(RPAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_type_argument_listContext extends ParserRuleContext { + public List function_type_argument() { + return getRuleContexts(Function_type_argumentContext.class); + } + public Function_type_argumentContext function_type_argument(int i) { + return getRuleContext(Function_type_argumentContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Function_type_argument_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_type_argument_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_type_argument_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_type_argument_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_type_argument_list(this); + else return visitor.visitChildren(this); + } + } + + public final Function_type_argument_listContext function_type_argument_list() throws RecognitionException { + Function_type_argument_listContext _localctx = new Function_type_argument_listContext(_ctx, getState()); + enterRule(_localctx, 542, RULE_function_type_argument_list); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2606); + function_type_argument(); + setState(2611); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,321,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2607); + match(COMMA); + setState(2608); + function_type_argument(); + } + } + } + setState(2613); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,321,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Function_type_argumentContext extends ParserRuleContext { + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public AttributesContext attributes() { + return getRuleContext(AttributesContext.class,0); + } + public TerminalNode INOUT() { return getToken(Swift5Parser.INOUT, 0); } + public Argument_labelContext argument_label() { + return getRuleContext(Argument_labelContext.class,0); + } + public Type_annotationContext type_annotation() { + return getRuleContext(Type_annotationContext.class,0); + } + public Function_type_argumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_function_type_argument; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterFunction_type_argument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitFunction_type_argument(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitFunction_type_argument(this); + else return visitor.visitChildren(this); + } + } + + public final Function_type_argumentContext function_type_argument() throws RecognitionException { + Function_type_argumentContext _localctx = new Function_type_argumentContext(_ctx, getState()); + enterRule(_localctx, 544, RULE_function_type_argument); + int _la; + try { + setState(2624); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,324,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2615); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,322,_ctx) ) { + case 1: + { + setState(2614); + attributes(); + } + break; + } + setState(2618); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INOUT) { + { + setState(2617); + match(INOUT); + } + } + + setState(2620); + type(0); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2621); + argument_label(); + setState(2622); + type_annotation(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Argument_labelContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public Argument_labelContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_argument_label; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterArgument_label(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitArgument_label(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitArgument_label(this); + else return visitor.visitChildren(this); + } + } + + public final Argument_labelContext argument_label() throws RecognitionException { + Argument_labelContext _localctx = new Argument_labelContext(_ctx, getState()); + enterRule(_localctx, 546, RULE_argument_label); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2627); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(2626); + identifier(); + } + } + setState(2629); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || ((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (GETTER - 135)) | (1L << (SETTER - 135)) | (1L << (Identifier - 135)) | (1L << (BACKTICK - 135)))) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Array_typeContext extends ParserRuleContext { + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public Array_typeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_array_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterArray_type(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitArray_type(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitArray_type(this); + else return visitor.visitChildren(this); + } + } + + public final Array_typeContext array_type() throws RecognitionException { + Array_typeContext _localctx = new Array_typeContext(_ctx, getState()); + enterRule(_localctx, 548, RULE_array_type); + try { + enterOuterAlt(_localctx, 1); + { + setState(2631); + match(LBRACK); + setState(2632); + type(0); + setState(2633); + match(RBRACK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Dictionary_typeContext extends ParserRuleContext { + public TerminalNode LBRACK() { return getToken(Swift5Parser.LBRACK, 0); } + public List type() { + return getRuleContexts(TypeContext.class); + } + public TypeContext type(int i) { + return getRuleContext(TypeContext.class,i); + } + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public TerminalNode RBRACK() { return getToken(Swift5Parser.RBRACK, 0); } + public Dictionary_typeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dictionary_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDictionary_type(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDictionary_type(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDictionary_type(this); + else return visitor.visitChildren(this); + } + } + + public final Dictionary_typeContext dictionary_type() throws RecognitionException { + Dictionary_typeContext _localctx = new Dictionary_typeContext(_ctx, getState()); + enterRule(_localctx, 550, RULE_dictionary_type); + try { + enterOuterAlt(_localctx, 1); + { + setState(2635); + match(LBRACK); + setState(2636); + type(0); + setState(2637); + match(COLON); + setState(2638); + type(0); + setState(2639); + match(RBRACK); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Protocol_composition_typeContext extends ParserRuleContext { + public List type_identifier() { + return getRuleContexts(Type_identifierContext.class); + } + public Type_identifierContext type_identifier(int i) { + return getRuleContext(Type_identifierContext.class,i); + } + public List AND() { return getTokens(Swift5Parser.AND); } + public TerminalNode AND(int i) { + return getToken(Swift5Parser.AND, i); + } + public Trailing_composition_andContext trailing_composition_and() { + return getRuleContext(Trailing_composition_andContext.class,0); + } + public Protocol_composition_typeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_protocol_composition_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterProtocol_composition_type(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitProtocol_composition_type(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitProtocol_composition_type(this); + else return visitor.visitChildren(this); + } + } + + public final Protocol_composition_typeContext protocol_composition_type() throws RecognitionException { + Protocol_composition_typeContext _localctx = new Protocol_composition_typeContext(_ctx, getState()); + enterRule(_localctx, 552, RULE_protocol_composition_type); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2641); + type_identifier(); + setState(2646); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,326,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2642); + match(AND); + setState(2643); + type_identifier(); + } + } + } + setState(2648); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,326,_ctx); + } + setState(2650); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,327,_ctx) ) { + case 1: + { + setState(2649); + trailing_composition_and(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Trailing_composition_andContext extends ParserRuleContext { + public TerminalNode AND() { return getToken(Swift5Parser.AND, 0); } + public Trailing_composition_andContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_trailing_composition_and; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterTrailing_composition_and(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitTrailing_composition_and(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitTrailing_composition_and(this); + else return visitor.visitChildren(this); + } + } + + public final Trailing_composition_andContext trailing_composition_and() throws RecognitionException { + Trailing_composition_andContext _localctx = new Trailing_composition_andContext(_ctx, getState()); + enterRule(_localctx, 554, RULE_trailing_composition_and); + try { + enterOuterAlt(_localctx, 1); + { + setState(2652); + if (!(!SwiftSupport.isBinaryOp(_input))) throw new FailedPredicateException(this, "!SwiftSupport.isBinaryOp(_input)"); + setState(2653); + match(AND); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Opaque_typeContext extends ParserRuleContext { + public TerminalNode SOME() { return getToken(Swift5Parser.SOME, 0); } + public TypeContext type() { + return getRuleContext(TypeContext.class,0); + } + public Opaque_typeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_opaque_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOpaque_type(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOpaque_type(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOpaque_type(this); + else return visitor.visitChildren(this); + } + } + + public final Opaque_typeContext opaque_type() throws RecognitionException { + Opaque_typeContext _localctx = new Opaque_typeContext(_ctx, getState()); + enterRule(_localctx, 556, RULE_opaque_type); + try { + enterOuterAlt(_localctx, 1); + { + setState(2655); + match(SOME); + setState(2656); + type(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Any_typeContext extends ParserRuleContext { + public TerminalNode ANY() { return getToken(Swift5Parser.ANY, 0); } + public Any_typeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_any_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAny_type(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAny_type(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAny_type(this); + else return visitor.visitChildren(this); + } + } + + public final Any_typeContext any_type() throws RecognitionException { + Any_typeContext _localctx = new Any_typeContext(_ctx, getState()); + enterRule(_localctx, 558, RULE_any_type); + try { + enterOuterAlt(_localctx, 1); + { + setState(2658); + match(ANY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Self_typeContext extends ParserRuleContext { + public TerminalNode SELF_BIG() { return getToken(Swift5Parser.SELF_BIG, 0); } + public Self_typeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_self_type; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSelf_type(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSelf_type(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSelf_type(this); + else return visitor.visitChildren(this); + } + } + + public final Self_typeContext self_type() throws RecognitionException { + Self_typeContext _localctx = new Self_typeContext(_ctx, getState()); + enterRule(_localctx, 560, RULE_self_type); + try { + enterOuterAlt(_localctx, 1); + { + setState(2660); + match(SELF_BIG); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Type_inheritance_clauseContext extends ParserRuleContext { + public TerminalNode COLON() { return getToken(Swift5Parser.COLON, 0); } + public Type_inheritance_listContext type_inheritance_list() { + return getRuleContext(Type_inheritance_listContext.class,0); + } + public Type_inheritance_clauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type_inheritance_clause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterType_inheritance_clause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitType_inheritance_clause(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitType_inheritance_clause(this); + else return visitor.visitChildren(this); + } + } + + public final Type_inheritance_clauseContext type_inheritance_clause() throws RecognitionException { + Type_inheritance_clauseContext _localctx = new Type_inheritance_clauseContext(_ctx, getState()); + enterRule(_localctx, 562, RULE_type_inheritance_clause); + try { + enterOuterAlt(_localctx, 1); + { + setState(2662); + match(COLON); + setState(2663); + type_inheritance_list(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Type_inheritance_listContext extends ParserRuleContext { + public List type_identifier() { + return getRuleContexts(Type_identifierContext.class); + } + public Type_identifierContext type_identifier(int i) { + return getRuleContext(Type_identifierContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Type_inheritance_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type_inheritance_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterType_inheritance_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitType_inheritance_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitType_inheritance_list(this); + else return visitor.visitChildren(this); + } + } + + public final Type_inheritance_listContext type_inheritance_list() throws RecognitionException { + Type_inheritance_listContext _localctx = new Type_inheritance_listContext(_ctx, getState()); + enterRule(_localctx, 564, RULE_type_inheritance_list); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2665); + type_identifier(); + setState(2670); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2666); + match(COMMA); + setState(2667); + type_identifier(); + } + } + setState(2672); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierContext extends ParserRuleContext { + public TerminalNode LINUX() { return getToken(Swift5Parser.LINUX, 0); } + public TerminalNode WINDOWS() { return getToken(Swift5Parser.WINDOWS, 0); } + public TerminalNode ALPHA() { return getToken(Swift5Parser.ALPHA, 0); } + public TerminalNode ARCH() { return getToken(Swift5Parser.ARCH, 0); } + public TerminalNode ARM() { return getToken(Swift5Parser.ARM, 0); } + public TerminalNode ARM64() { return getToken(Swift5Parser.ARM64, 0); } + public TerminalNode ASSIGNMENT() { return getToken(Swift5Parser.ASSIGNMENT, 0); } + public TerminalNode BLUE() { return getToken(Swift5Parser.BLUE, 0); } + public TerminalNode CAN_IMPORT() { return getToken(Swift5Parser.CAN_IMPORT, 0); } + public TerminalNode COMPILER() { return getToken(Swift5Parser.COMPILER, 0); } + public TerminalNode FILE() { return getToken(Swift5Parser.FILE, 0); } + public TerminalNode GREEN() { return getToken(Swift5Parser.GREEN, 0); } + public TerminalNode HIGHER_THAN() { return getToken(Swift5Parser.HIGHER_THAN, 0); } + public TerminalNode I386() { return getToken(Swift5Parser.I386, 0); } + public TerminalNode I_OS() { return getToken(Swift5Parser.I_OS, 0); } + public TerminalNode OSX() { return getToken(Swift5Parser.OSX, 0); } + public TerminalNode I_OS_APPLICATION_EXTENSION() { return getToken(Swift5Parser.I_OS_APPLICATION_EXTENSION, 0); } + public TerminalNode LINE() { return getToken(Swift5Parser.LINE, 0); } + public TerminalNode LOWER_THAN() { return getToken(Swift5Parser.LOWER_THAN, 0); } + public TerminalNode MAC_CATALYST() { return getToken(Swift5Parser.MAC_CATALYST, 0); } + public TerminalNode MAC_CATALYST_APPLICATION_EXTENSION() { return getToken(Swift5Parser.MAC_CATALYST_APPLICATION_EXTENSION, 0); } + public TerminalNode MAC_OS() { return getToken(Swift5Parser.MAC_OS, 0); } + public TerminalNode MAC_OS_APPLICATION_EXTENSION() { return getToken(Swift5Parser.MAC_OS_APPLICATION_EXTENSION, 0); } + public TerminalNode OS() { return getToken(Swift5Parser.OS, 0); } + public TerminalNode PRECEDENCE_GROUP() { return getToken(Swift5Parser.PRECEDENCE_GROUP, 0); } + public TerminalNode RED() { return getToken(Swift5Parser.RED, 0); } + public TerminalNode RESOURCE_NAME() { return getToken(Swift5Parser.RESOURCE_NAME, 0); } + public TerminalNode SAFE() { return getToken(Swift5Parser.SAFE, 0); } + public TerminalNode SIMULATOR() { return getToken(Swift5Parser.SIMULATOR, 0); } + public TerminalNode SOME() { return getToken(Swift5Parser.SOME, 0); } + public TerminalNode SWIFT() { return getToken(Swift5Parser.SWIFT, 0); } + public TerminalNode TARGET_ENVIRONMENT() { return getToken(Swift5Parser.TARGET_ENVIRONMENT, 0); } + public TerminalNode TV_OS() { return getToken(Swift5Parser.TV_OS, 0); } + public TerminalNode UNSAFE() { return getToken(Swift5Parser.UNSAFE, 0); } + public TerminalNode WATCH_OS() { return getToken(Swift5Parser.WATCH_OS, 0); } + public TerminalNode X86_64() { return getToken(Swift5Parser.X86_64, 0); } + public TerminalNode ASSOCIATIVITY() { return getToken(Swift5Parser.ASSOCIATIVITY, 0); } + public TerminalNode CONVENIENCE() { return getToken(Swift5Parser.CONVENIENCE, 0); } + public TerminalNode DYNAMIC() { return getToken(Swift5Parser.DYNAMIC, 0); } + public TerminalNode DID_SET() { return getToken(Swift5Parser.DID_SET, 0); } + public TerminalNode FINAL() { return getToken(Swift5Parser.FINAL, 0); } + public TerminalNode GET() { return getToken(Swift5Parser.GET, 0); } + public TerminalNode INFIX() { return getToken(Swift5Parser.INFIX, 0); } + public TerminalNode INDIRECT() { return getToken(Swift5Parser.INDIRECT, 0); } + public TerminalNode LAZY() { return getToken(Swift5Parser.LAZY, 0); } + public TerminalNode LEFT() { return getToken(Swift5Parser.LEFT, 0); } + public TerminalNode MUTATING() { return getToken(Swift5Parser.MUTATING, 0); } + public TerminalNode NONE() { return getToken(Swift5Parser.NONE, 0); } + public TerminalNode NONMUTATING() { return getToken(Swift5Parser.NONMUTATING, 0); } + public TerminalNode OPTIONAL() { return getToken(Swift5Parser.OPTIONAL, 0); } + public TerminalNode OVERRIDE() { return getToken(Swift5Parser.OVERRIDE, 0); } + public TerminalNode POSTFIX() { return getToken(Swift5Parser.POSTFIX, 0); } + public TerminalNode PRECEDENCE() { return getToken(Swift5Parser.PRECEDENCE, 0); } + public TerminalNode PREFIX() { return getToken(Swift5Parser.PREFIX, 0); } + public TerminalNode PROTOCOL() { return getToken(Swift5Parser.PROTOCOL, 0); } + public TerminalNode REQUIRED() { return getToken(Swift5Parser.REQUIRED, 0); } + public TerminalNode RIGHT() { return getToken(Swift5Parser.RIGHT, 0); } + public TerminalNode SET() { return getToken(Swift5Parser.SET, 0); } + public TerminalNode TYPE() { return getToken(Swift5Parser.TYPE, 0); } + public TerminalNode UNOWNED() { return getToken(Swift5Parser.UNOWNED, 0); } + public TerminalNode WEAK() { return getToken(Swift5Parser.WEAK, 0); } + public TerminalNode WILL_SET() { return getToken(Swift5Parser.WILL_SET, 0); } + public TerminalNode IN() { return getToken(Swift5Parser.IN, 0); } + public TerminalNode FOR() { return getToken(Swift5Parser.FOR, 0); } + public TerminalNode GUARD() { return getToken(Swift5Parser.GUARD, 0); } + public TerminalNode WHERE() { return getToken(Swift5Parser.WHERE, 0); } + public TerminalNode DEFAULT() { return getToken(Swift5Parser.DEFAULT, 0); } + public TerminalNode INTERNAL() { return getToken(Swift5Parser.INTERNAL, 0); } + public TerminalNode PRIVATE() { return getToken(Swift5Parser.PRIVATE, 0); } + public TerminalNode PUBLIC() { return getToken(Swift5Parser.PUBLIC, 0); } + public TerminalNode OPEN() { return getToken(Swift5Parser.OPEN, 0); } + public TerminalNode AS() { return getToken(Swift5Parser.AS, 0); } + public TerminalNode WHILE() { return getToken(Swift5Parser.WHILE, 0); } + public TerminalNode SELF() { return getToken(Swift5Parser.SELF, 0); } + public TerminalNode SELF_BIG() { return getToken(Swift5Parser.SELF_BIG, 0); } + public TerminalNode CLASS() { return getToken(Swift5Parser.CLASS, 0); } + public TerminalNode GETTER() { return getToken(Swift5Parser.GETTER, 0); } + public TerminalNode SETTER() { return getToken(Swift5Parser.SETTER, 0); } + public TerminalNode OPERATOR() { return getToken(Swift5Parser.OPERATOR, 0); } + public TerminalNode DO() { return getToken(Swift5Parser.DO, 0); } + public TerminalNode CATCH() { return getToken(Swift5Parser.CATCH, 0); } + public TerminalNode Identifier() { return getToken(Swift5Parser.Identifier, 0); } + public List BACKTICK() { return getTokens(Swift5Parser.BACKTICK); } + public TerminalNode BACKTICK(int i) { + return getToken(Swift5Parser.BACKTICK, i); + } + public KeywordContext keyword() { + return getRuleContext(KeywordContext.class,0); + } + public TerminalNode DOLLAR() { return getToken(Swift5Parser.DOLLAR, 0); } + public IdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitIdentifier(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitIdentifier(this); + else return visitor.visitChildren(this); + } + } + + public final IdentifierContext identifier() throws RecognitionException { + IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); + enterRule(_localctx, 566, RULE_identifier); + int _la; + try { + setState(2682); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AS: + case ALPHA: + case CATCH: + case CLASS: + case DEFAULT: + case DO: + case GUARD: + case FOR: + case IN: + case INTERNAL: + case FINAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case WHERE: + case WHILE: + case PROTOCOL: + case GET: + case SET: + case WILL_SET: + case DID_SET: + case INDIRECT: + case PREFIX: + case INFIX: + case LEFT: + case RIGHT: + case NONE: + case PRECEDENCE_GROUP: + case HIGHER_THAN: + case LOWER_THAN: + case ASSIGNMENT: + case ASSOCIATIVITY: + case POSTFIX: + case OPERATOR: + case OS: + case ARCH: + case SWIFT: + case COMPILER: + case CAN_IMPORT: + case TARGET_ENVIRONMENT: + case CONVENIENCE: + case DYNAMIC: + case LAZY: + case OPTIONAL: + case OVERRIDE: + case REQUIRED: + case WEAK: + case UNOWNED: + case SAFE: + case UNSAFE: + case MUTATING: + case NONMUTATING: + case RED: + case BLUE: + case GREEN: + case RESOURCE_NAME: + case SOME: + case TYPE: + case PRECEDENCE: + case SELF: + case SELF_BIG: + case MAC_OS: + case I_OS: + case OSX: + case WATCH_OS: + case TV_OS: + case LINUX: + case WINDOWS: + case I386: + case X86_64: + case ARM: + case ARM64: + case SIMULATOR: + case MAC_CATALYST: + case I_OS_APPLICATION_EXTENSION: + case MAC_CATALYST_APPLICATION_EXTENSION: + case MAC_OS_APPLICATION_EXTENSION: + case FILE: + case LINE: + case GETTER: + case SETTER: + enterOuterAlt(_localctx, 1); + { + setState(2673); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << ALPHA) | (1L << CATCH) | (1L << CLASS) | (1L << DEFAULT) | (1L << DO) | (1L << GUARD) | (1L << FOR) | (1L << IN) | (1L << INTERNAL) | (1L << FINAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << PROTOCOL) | (1L << GET) | (1L << SET) | (1L << WILL_SET) | (1L << DID_SET) | (1L << INDIRECT) | (1L << PREFIX) | (1L << INFIX) | (1L << LEFT) | (1L << RIGHT) | (1L << NONE) | (1L << PRECEDENCE_GROUP) | (1L << HIGHER_THAN) | (1L << LOWER_THAN) | (1L << ASSIGNMENT) | (1L << ASSOCIATIVITY) | (1L << POSTFIX) | (1L << OPERATOR) | (1L << OS) | (1L << ARCH) | (1L << SWIFT) | (1L << COMPILER))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CAN_IMPORT - 64)) | (1L << (TARGET_ENVIRONMENT - 64)) | (1L << (CONVENIENCE - 64)) | (1L << (DYNAMIC - 64)) | (1L << (LAZY - 64)) | (1L << (OPTIONAL - 64)) | (1L << (OVERRIDE - 64)) | (1L << (REQUIRED - 64)) | (1L << (WEAK - 64)) | (1L << (UNOWNED - 64)) | (1L << (SAFE - 64)) | (1L << (UNSAFE - 64)) | (1L << (MUTATING - 64)) | (1L << (NONMUTATING - 64)) | (1L << (RED - 64)) | (1L << (BLUE - 64)) | (1L << (GREEN - 64)) | (1L << (RESOURCE_NAME - 64)) | (1L << (SOME - 64)) | (1L << (TYPE - 64)) | (1L << (PRECEDENCE - 64)) | (1L << (SELF - 64)) | (1L << (SELF_BIG - 64)) | (1L << (MAC_OS - 64)) | (1L << (I_OS - 64)) | (1L << (OSX - 64)) | (1L << (WATCH_OS - 64)) | (1L << (TV_OS - 64)) | (1L << (LINUX - 64)) | (1L << (WINDOWS - 64)) | (1L << (I386 - 64)) | (1L << (X86_64 - 64)) | (1L << (ARM - 64)) | (1L << (ARM64 - 64)) | (1L << (SIMULATOR - 64)) | (1L << (MAC_CATALYST - 64)) | (1L << (I_OS_APPLICATION_EXTENSION - 64)) | (1L << (MAC_CATALYST_APPLICATION_EXTENSION - 64)) | (1L << (MAC_OS_APPLICATION_EXTENSION - 64)) | (1L << (FILE - 64)) | (1L << (LINE - 64)))) != 0) || _la==GETTER || _la==SETTER) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case Identifier: + enterOuterAlt(_localctx, 2); + { + setState(2674); + match(Identifier); + } + break; + case BACKTICK: + enterOuterAlt(_localctx, 3); + { + setState(2675); + match(BACKTICK); + setState(2679); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AS: + case BREAK: + case CASE: + case CATCH: + case CLASS: + case CONTINUE: + case DEFAULT: + case DEFER: + case DO: + case GUARD: + case ELSE: + case ENUM: + case FOR: + case FALLTHROUGH: + case FUNC: + case IN: + case IF: + case IMPORT: + case INTERNAL: + case OPEN: + case PRIVATE: + case PUBLIC: + case WHERE: + case WHILE: + case LET: + case VAR: + case PROTOCOL: + case REPEAT: + case SWITCH: + case STRUCT: + case RETURN: + case THROW: + case THROWS: + case RETHROWS: + case INIT: + case DEINIT: + case ASSOCIATED_TYPE: + case EXTENSION: + case SUBSCRIPT: + case OPERATOR: + case TYPEALIAS: + case STATIC: + case FILE_PRIVATE: + case IS: + case TRY: + case SUPER: + case ANY: + case FALSE: + case TRUE: + case NIL: + case INOUT: + case SELF: + case SELF_BIG: + case SOURCE_LOCATION: + case ERROR: + case WARNING: + case AVAILABLE: + case HASH_IF: + case HASH_ELSEIF: + case HASH_ELSE: + case HASH_ENDIF: + case HASH_FILE: + case HASH_FILE_ID: + case HASH_FILE_PATH: + case HASH_LINE: + case HASH_COLUMN: + case HASH_FUNCTION: + case HASH_SELECTOR: + case HASH_COLOR_LITERAL: + case HASH_FILE_LITERAL: + case HASH_IMAGE_LITERAL: + case UNDERSCORE: + { + setState(2676); + keyword(); + } + break; + case Identifier: + { + setState(2677); + match(Identifier); + } + break; + case DOLLAR: + { + setState(2678); + match(DOLLAR); + } + break; + default: + throw new NoViableAltException(this); + } + setState(2681); + match(BACKTICK); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Identifier_listContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public Identifier_listContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifier_list; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterIdentifier_list(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitIdentifier_list(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitIdentifier_list(this); + else return visitor.visitChildren(this); + } + } + + public final Identifier_listContext identifier_list() throws RecognitionException { + Identifier_listContext _localctx = new Identifier_listContext(_ctx, getState()); + enterRule(_localctx, 568, RULE_identifier_list); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2684); + identifier(); + setState(2689); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,331,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(2685); + match(COMMA); + setState(2686); + identifier(); + } + } + } + setState(2691); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,331,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class KeywordContext extends ParserRuleContext { + public TerminalNode ASSOCIATED_TYPE() { return getToken(Swift5Parser.ASSOCIATED_TYPE, 0); } + public TerminalNode CLASS() { return getToken(Swift5Parser.CLASS, 0); } + public TerminalNode DEINIT() { return getToken(Swift5Parser.DEINIT, 0); } + public TerminalNode ENUM() { return getToken(Swift5Parser.ENUM, 0); } + public TerminalNode EXTENSION() { return getToken(Swift5Parser.EXTENSION, 0); } + public TerminalNode FILE_PRIVATE() { return getToken(Swift5Parser.FILE_PRIVATE, 0); } + public TerminalNode FUNC() { return getToken(Swift5Parser.FUNC, 0); } + public TerminalNode IMPORT() { return getToken(Swift5Parser.IMPORT, 0); } + public TerminalNode INIT() { return getToken(Swift5Parser.INIT, 0); } + public TerminalNode INOUT() { return getToken(Swift5Parser.INOUT, 0); } + public TerminalNode INTERNAL() { return getToken(Swift5Parser.INTERNAL, 0); } + public TerminalNode LET() { return getToken(Swift5Parser.LET, 0); } + public TerminalNode OPEN() { return getToken(Swift5Parser.OPEN, 0); } + public TerminalNode OPERATOR() { return getToken(Swift5Parser.OPERATOR, 0); } + public TerminalNode PRIVATE() { return getToken(Swift5Parser.PRIVATE, 0); } + public TerminalNode PROTOCOL() { return getToken(Swift5Parser.PROTOCOL, 0); } + public TerminalNode PUBLIC() { return getToken(Swift5Parser.PUBLIC, 0); } + public TerminalNode RETHROWS() { return getToken(Swift5Parser.RETHROWS, 0); } + public TerminalNode STATIC() { return getToken(Swift5Parser.STATIC, 0); } + public TerminalNode STRUCT() { return getToken(Swift5Parser.STRUCT, 0); } + public TerminalNode SUBSCRIPT() { return getToken(Swift5Parser.SUBSCRIPT, 0); } + public TerminalNode TYPEALIAS() { return getToken(Swift5Parser.TYPEALIAS, 0); } + public TerminalNode VAR() { return getToken(Swift5Parser.VAR, 0); } + public TerminalNode BREAK() { return getToken(Swift5Parser.BREAK, 0); } + public TerminalNode CASE() { return getToken(Swift5Parser.CASE, 0); } + public TerminalNode CONTINUE() { return getToken(Swift5Parser.CONTINUE, 0); } + public TerminalNode DEFAULT() { return getToken(Swift5Parser.DEFAULT, 0); } + public TerminalNode DEFER() { return getToken(Swift5Parser.DEFER, 0); } + public TerminalNode DO() { return getToken(Swift5Parser.DO, 0); } + public TerminalNode ELSE() { return getToken(Swift5Parser.ELSE, 0); } + public TerminalNode FALLTHROUGH() { return getToken(Swift5Parser.FALLTHROUGH, 0); } + public TerminalNode FOR() { return getToken(Swift5Parser.FOR, 0); } + public TerminalNode GUARD() { return getToken(Swift5Parser.GUARD, 0); } + public TerminalNode IF() { return getToken(Swift5Parser.IF, 0); } + public TerminalNode IN() { return getToken(Swift5Parser.IN, 0); } + public TerminalNode REPEAT() { return getToken(Swift5Parser.REPEAT, 0); } + public TerminalNode RETURN() { return getToken(Swift5Parser.RETURN, 0); } + public TerminalNode SWITCH() { return getToken(Swift5Parser.SWITCH, 0); } + public TerminalNode WHERE() { return getToken(Swift5Parser.WHERE, 0); } + public TerminalNode WHILE() { return getToken(Swift5Parser.WHILE, 0); } + public TerminalNode AS() { return getToken(Swift5Parser.AS, 0); } + public TerminalNode ANY() { return getToken(Swift5Parser.ANY, 0); } + public TerminalNode CATCH() { return getToken(Swift5Parser.CATCH, 0); } + public TerminalNode FALSE() { return getToken(Swift5Parser.FALSE, 0); } + public TerminalNode IS() { return getToken(Swift5Parser.IS, 0); } + public TerminalNode NIL() { return getToken(Swift5Parser.NIL, 0); } + public TerminalNode SUPER() { return getToken(Swift5Parser.SUPER, 0); } + public TerminalNode SELF() { return getToken(Swift5Parser.SELF, 0); } + public TerminalNode SELF_BIG() { return getToken(Swift5Parser.SELF_BIG, 0); } + public TerminalNode THROW() { return getToken(Swift5Parser.THROW, 0); } + public TerminalNode THROWS() { return getToken(Swift5Parser.THROWS, 0); } + public TerminalNode TRUE() { return getToken(Swift5Parser.TRUE, 0); } + public TerminalNode TRY() { return getToken(Swift5Parser.TRY, 0); } + public TerminalNode UNDERSCORE() { return getToken(Swift5Parser.UNDERSCORE, 0); } + public TerminalNode AVAILABLE() { return getToken(Swift5Parser.AVAILABLE, 0); } + public TerminalNode HASH_COLOR_LITERAL() { return getToken(Swift5Parser.HASH_COLOR_LITERAL, 0); } + public TerminalNode HASH_COLUMN() { return getToken(Swift5Parser.HASH_COLUMN, 0); } + public TerminalNode HASH_ELSE() { return getToken(Swift5Parser.HASH_ELSE, 0); } + public TerminalNode HASH_ELSEIF() { return getToken(Swift5Parser.HASH_ELSEIF, 0); } + public TerminalNode HASH_ENDIF() { return getToken(Swift5Parser.HASH_ENDIF, 0); } + public TerminalNode ERROR() { return getToken(Swift5Parser.ERROR, 0); } + public TerminalNode HASH_FILE() { return getToken(Swift5Parser.HASH_FILE, 0); } + public TerminalNode HASH_FILE_ID() { return getToken(Swift5Parser.HASH_FILE_ID, 0); } + public TerminalNode HASH_FILE_LITERAL() { return getToken(Swift5Parser.HASH_FILE_LITERAL, 0); } + public TerminalNode HASH_FILE_PATH() { return getToken(Swift5Parser.HASH_FILE_PATH, 0); } + public TerminalNode HASH_FUNCTION() { return getToken(Swift5Parser.HASH_FUNCTION, 0); } + public TerminalNode HASH_IF() { return getToken(Swift5Parser.HASH_IF, 0); } + public TerminalNode HASH_IMAGE_LITERAL() { return getToken(Swift5Parser.HASH_IMAGE_LITERAL, 0); } + public TerminalNode HASH_LINE() { return getToken(Swift5Parser.HASH_LINE, 0); } + public TerminalNode HASH_SELECTOR() { return getToken(Swift5Parser.HASH_SELECTOR, 0); } + public TerminalNode SOURCE_LOCATION() { return getToken(Swift5Parser.SOURCE_LOCATION, 0); } + public TerminalNode WARNING() { return getToken(Swift5Parser.WARNING, 0); } + public KeywordContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_keyword; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterKeyword(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitKeyword(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitKeyword(this); + else return visitor.visitChildren(this); + } + } + + public final KeywordContext keyword() throws RecognitionException { + KeywordContext _localctx = new KeywordContext(_ctx, getState()); + enterRule(_localctx, 570, RULE_keyword); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2692); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << BREAK) | (1L << CASE) | (1L << CATCH) | (1L << CLASS) | (1L << CONTINUE) | (1L << DEFAULT) | (1L << DEFER) | (1L << DO) | (1L << GUARD) | (1L << ELSE) | (1L << ENUM) | (1L << FOR) | (1L << FALLTHROUGH) | (1L << FUNC) | (1L << IN) | (1L << IF) | (1L << IMPORT) | (1L << INTERNAL) | (1L << OPEN) | (1L << PRIVATE) | (1L << PUBLIC) | (1L << WHERE) | (1L << WHILE) | (1L << LET) | (1L << VAR) | (1L << PROTOCOL) | (1L << REPEAT) | (1L << SWITCH) | (1L << STRUCT) | (1L << RETURN) | (1L << THROW) | (1L << THROWS) | (1L << RETHROWS) | (1L << INIT) | (1L << DEINIT) | (1L << ASSOCIATED_TYPE) | (1L << EXTENSION) | (1L << SUBSCRIPT) | (1L << OPERATOR) | (1L << TYPEALIAS))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (STATIC - 72)) | (1L << (FILE_PRIVATE - 72)) | (1L << (IS - 72)) | (1L << (TRY - 72)) | (1L << (SUPER - 72)) | (1L << (ANY - 72)) | (1L << (FALSE - 72)) | (1L << (TRUE - 72)) | (1L << (NIL - 72)) | (1L << (INOUT - 72)) | (1L << (SELF - 72)) | (1L << (SELF_BIG - 72)) | (1L << (SOURCE_LOCATION - 72)) | (1L << (ERROR - 72)) | (1L << (WARNING - 72)) | (1L << (AVAILABLE - 72)) | (1L << (HASH_IF - 72)) | (1L << (HASH_ELSEIF - 72)) | (1L << (HASH_ELSE - 72)) | (1L << (HASH_ENDIF - 72)) | (1L << (HASH_FILE - 72)) | (1L << (HASH_FILE_ID - 72)) | (1L << (HASH_FILE_PATH - 72)) | (1L << (HASH_LINE - 72)) | (1L << (HASH_COLUMN - 72)) | (1L << (HASH_FUNCTION - 72)) | (1L << (HASH_SELECTOR - 72)) | (1L << (HASH_COLOR_LITERAL - 72)) | (1L << (HASH_FILE_LITERAL - 72)) | (1L << (HASH_IMAGE_LITERAL - 72)))) != 0) || _la==UNDERSCORE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Assignment_operatorContext extends ParserRuleContext { + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public Assignment_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignment_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterAssignment_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitAssignment_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitAssignment_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Assignment_operatorContext assignment_operator() throws RecognitionException { + Assignment_operatorContext _localctx = new Assignment_operatorContext(_ctx, getState()); + enterRule(_localctx, 572, RULE_assignment_operator); + try { + enterOuterAlt(_localctx, 1); + { + setState(2694); + if (!(SwiftSupport.isBinaryOp(_input))) throw new FailedPredicateException(this, "SwiftSupport.isBinaryOp(_input)"); + setState(2695); + match(EQUAL); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Negate_prefix_operatorContext extends ParserRuleContext { + public TerminalNode SUB() { return getToken(Swift5Parser.SUB, 0); } + public Negate_prefix_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_negate_prefix_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterNegate_prefix_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitNegate_prefix_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitNegate_prefix_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Negate_prefix_operatorContext negate_prefix_operator() throws RecognitionException { + Negate_prefix_operatorContext _localctx = new Negate_prefix_operatorContext(_ctx, getState()); + enterRule(_localctx, 574, RULE_negate_prefix_operator); + try { + enterOuterAlt(_localctx, 1); + { + setState(2697); + if (!(SwiftSupport.isPrefixOp(_input))) throw new FailedPredicateException(this, "SwiftSupport.isPrefixOp(_input)"); + setState(2698); + match(SUB); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Compilation_condition_ANDContext extends ParserRuleContext { + public List AND() { return getTokens(Swift5Parser.AND); } + public TerminalNode AND(int i) { + return getToken(Swift5Parser.AND, i); + } + public Compilation_condition_ANDContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compilation_condition_AND; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCompilation_condition_AND(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCompilation_condition_AND(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCompilation_condition_AND(this); + else return visitor.visitChildren(this); + } + } + + public final Compilation_condition_ANDContext compilation_condition_AND() throws RecognitionException { + Compilation_condition_ANDContext _localctx = new Compilation_condition_ANDContext(_ctx, getState()); + enterRule(_localctx, 576, RULE_compilation_condition_AND); + try { + enterOuterAlt(_localctx, 1); + { + setState(2700); + if (!(SwiftSupport.isOperator(_input,"&&"))) throw new FailedPredicateException(this, "SwiftSupport.isOperator(_input,\"&&\")"); + setState(2701); + match(AND); + setState(2702); + match(AND); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Compilation_condition_ORContext extends ParserRuleContext { + public List OR() { return getTokens(Swift5Parser.OR); } + public TerminalNode OR(int i) { + return getToken(Swift5Parser.OR, i); + } + public Compilation_condition_ORContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compilation_condition_OR; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCompilation_condition_OR(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCompilation_condition_OR(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCompilation_condition_OR(this); + else return visitor.visitChildren(this); + } + } + + public final Compilation_condition_ORContext compilation_condition_OR() throws RecognitionException { + Compilation_condition_ORContext _localctx = new Compilation_condition_ORContext(_ctx, getState()); + enterRule(_localctx, 578, RULE_compilation_condition_OR); + try { + enterOuterAlt(_localctx, 1); + { + setState(2704); + if (!(SwiftSupport.isOperator(_input,"||"))) throw new FailedPredicateException(this, "SwiftSupport.isOperator(_input,\"||\")"); + setState(2705); + match(OR); + setState(2706); + match(OR); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Compilation_condition_GEContext extends ParserRuleContext { + public TerminalNode GT() { return getToken(Swift5Parser.GT, 0); } + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public Compilation_condition_GEContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compilation_condition_GE; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCompilation_condition_GE(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCompilation_condition_GE(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCompilation_condition_GE(this); + else return visitor.visitChildren(this); + } + } + + public final Compilation_condition_GEContext compilation_condition_GE() throws RecognitionException { + Compilation_condition_GEContext _localctx = new Compilation_condition_GEContext(_ctx, getState()); + enterRule(_localctx, 580, RULE_compilation_condition_GE); + try { + enterOuterAlt(_localctx, 1); + { + setState(2708); + if (!(SwiftSupport.isOperator(_input,">="))) throw new FailedPredicateException(this, "SwiftSupport.isOperator(_input,\">=\")"); + setState(2709); + match(GT); + setState(2710); + match(EQUAL); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Compilation_condition_LContext extends ParserRuleContext { + public TerminalNode LT() { return getToken(Swift5Parser.LT, 0); } + public Compilation_condition_LContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compilation_condition_L; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterCompilation_condition_L(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitCompilation_condition_L(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitCompilation_condition_L(this); + else return visitor.visitChildren(this); + } + } + + public final Compilation_condition_LContext compilation_condition_L() throws RecognitionException { + Compilation_condition_LContext _localctx = new Compilation_condition_LContext(_ctx, getState()); + enterRule(_localctx, 582, RULE_compilation_condition_L); + try { + enterOuterAlt(_localctx, 1); + { + setState(2712); + if (!(SwiftSupport.isOperator(_input,"<"))) throw new FailedPredicateException(this, "SwiftSupport.isOperator(_input,\"<\")"); + setState(2713); + match(LT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Arrow_operatorContext extends ParserRuleContext { + public TerminalNode SUB() { return getToken(Swift5Parser.SUB, 0); } + public TerminalNode GT() { return getToken(Swift5Parser.GT, 0); } + public Arrow_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrow_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterArrow_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitArrow_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitArrow_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Arrow_operatorContext arrow_operator() throws RecognitionException { + Arrow_operatorContext _localctx = new Arrow_operatorContext(_ctx, getState()); + enterRule(_localctx, 584, RULE_arrow_operator); + try { + enterOuterAlt(_localctx, 1); + { + setState(2715); + if (!(SwiftSupport.isOperator(_input,"->"))) throw new FailedPredicateException(this, "SwiftSupport.isOperator(_input,\"->\")"); + setState(2716); + match(SUB); + setState(2717); + match(GT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Range_operatorContext extends ParserRuleContext { + public List DOT() { return getTokens(Swift5Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Swift5Parser.DOT, i); + } + public Range_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_range_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterRange_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitRange_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitRange_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Range_operatorContext range_operator() throws RecognitionException { + Range_operatorContext _localctx = new Range_operatorContext(_ctx, getState()); + enterRule(_localctx, 586, RULE_range_operator); + try { + enterOuterAlt(_localctx, 1); + { + setState(2719); + if (!(SwiftSupport.isOperator(_input,"..."))) throw new FailedPredicateException(this, "SwiftSupport.isOperator(_input,\"...\")"); + setState(2720); + match(DOT); + setState(2721); + match(DOT); + setState(2722); + match(DOT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Same_type_equalsContext extends ParserRuleContext { + public List EQUAL() { return getTokens(Swift5Parser.EQUAL); } + public TerminalNode EQUAL(int i) { + return getToken(Swift5Parser.EQUAL, i); + } + public Same_type_equalsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_same_type_equals; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterSame_type_equals(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitSame_type_equals(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitSame_type_equals(this); + else return visitor.visitChildren(this); + } + } + + public final Same_type_equalsContext same_type_equals() throws RecognitionException { + Same_type_equalsContext _localctx = new Same_type_equalsContext(_ctx, getState()); + enterRule(_localctx, 588, RULE_same_type_equals); + try { + enterOuterAlt(_localctx, 1); + { + setState(2724); + if (!(SwiftSupport.isOperator(_input,"=="))) throw new FailedPredicateException(this, "SwiftSupport.isOperator(_input,\"==\")"); + setState(2725); + match(EQUAL); + setState(2726); + match(EQUAL); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Binary_operatorContext extends ParserRuleContext { + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Binary_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_binary_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterBinary_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitBinary_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitBinary_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Binary_operatorContext binary_operator() throws RecognitionException { + Binary_operatorContext _localctx = new Binary_operatorContext(_ctx, getState()); + enterRule(_localctx, 590, RULE_binary_operator); + try { + enterOuterAlt(_localctx, 1); + { + setState(2728); + if (!(SwiftSupport.isBinaryOp(_input))) throw new FailedPredicateException(this, "SwiftSupport.isBinaryOp(_input)"); + setState(2729); + operator(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Prefix_operatorContext extends ParserRuleContext { + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Prefix_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_prefix_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPrefix_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPrefix_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPrefix_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Prefix_operatorContext prefix_operator() throws RecognitionException { + Prefix_operatorContext _localctx = new Prefix_operatorContext(_ctx, getState()); + enterRule(_localctx, 592, RULE_prefix_operator); + try { + enterOuterAlt(_localctx, 1); + { + setState(2731); + if (!(SwiftSupport.isPrefixOp(_input))) throw new FailedPredicateException(this, "SwiftSupport.isPrefixOp(_input)"); + setState(2732); + operator(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Postfix_operatorContext extends ParserRuleContext { + public OperatorContext operator() { + return getRuleContext(OperatorContext.class,0); + } + public Postfix_operatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_postfix_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterPostfix_operator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitPostfix_operator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitPostfix_operator(this); + else return visitor.visitChildren(this); + } + } + + public final Postfix_operatorContext postfix_operator() throws RecognitionException { + Postfix_operatorContext _localctx = new Postfix_operatorContext(_ctx, getState()); + enterRule(_localctx, 594, RULE_postfix_operator); + try { + enterOuterAlt(_localctx, 1); + { + setState(2734); + if (!(SwiftSupport.isPostfixOp(_input))) throw new FailedPredicateException(this, "SwiftSupport.isPostfixOp(_input)"); + setState(2735); + operator(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class OperatorContext extends ParserRuleContext { + public Operator_headContext operator_head() { + return getRuleContext(Operator_headContext.class,0); + } + public Operator_charactersContext operator_characters() { + return getRuleContext(Operator_charactersContext.class,0); + } + public Dot_operator_headContext dot_operator_head() { + return getRuleContext(Dot_operator_headContext.class,0); + } + public Dot_operator_charactersContext dot_operator_characters() { + return getRuleContext(Dot_operator_charactersContext.class,0); + } + public OperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_operator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOperator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOperator(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOperator(this); + else return visitor.visitChildren(this); + } + } + + public final OperatorContext operator() throws RecognitionException { + OperatorContext _localctx = new OperatorContext(_ctx, getState()); + enterRule(_localctx, 596, RULE_operator); + try { + setState(2744); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LT: + case GT: + case BANG: + case QUESTION: + case AND: + case SUB: + case EQUAL: + case OR: + case DIV: + case ADD: + case MUL: + case MOD: + case CARET: + case TILDE: + case Operator_head_other: + enterOuterAlt(_localctx, 1); + { + setState(2737); + operator_head(); + setState(2739); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,332,_ctx) ) { + case 1: + { + setState(2738); + operator_characters(); + } + break; + } + } + break; + case DOT: + enterOuterAlt(_localctx, 2); + { + setState(2741); + dot_operator_head(); + setState(2742); + dot_operator_characters(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Operator_headContext extends ParserRuleContext { + public TerminalNode DIV() { return getToken(Swift5Parser.DIV, 0); } + public TerminalNode EQUAL() { return getToken(Swift5Parser.EQUAL, 0); } + public TerminalNode SUB() { return getToken(Swift5Parser.SUB, 0); } + public TerminalNode ADD() { return getToken(Swift5Parser.ADD, 0); } + public TerminalNode BANG() { return getToken(Swift5Parser.BANG, 0); } + public TerminalNode MUL() { return getToken(Swift5Parser.MUL, 0); } + public TerminalNode MOD() { return getToken(Swift5Parser.MOD, 0); } + public TerminalNode AND() { return getToken(Swift5Parser.AND, 0); } + public TerminalNode OR() { return getToken(Swift5Parser.OR, 0); } + public TerminalNode LT() { return getToken(Swift5Parser.LT, 0); } + public TerminalNode GT() { return getToken(Swift5Parser.GT, 0); } + public TerminalNode CARET() { return getToken(Swift5Parser.CARET, 0); } + public TerminalNode TILDE() { return getToken(Swift5Parser.TILDE, 0); } + public TerminalNode QUESTION() { return getToken(Swift5Parser.QUESTION, 0); } + public TerminalNode Operator_head_other() { return getToken(Swift5Parser.Operator_head_other, 0); } + public Operator_headContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_operator_head; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOperator_head(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOperator_head(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOperator_head(this); + else return visitor.visitChildren(this); + } + } + + public final Operator_headContext operator_head() throws RecognitionException { + Operator_headContext _localctx = new Operator_headContext(_ctx, getState()); + enterRule(_localctx, 598, RULE_operator_head); + int _la; + try { + setState(2748); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LT: + case GT: + case BANG: + case QUESTION: + case AND: + case SUB: + case EQUAL: + case OR: + case DIV: + case ADD: + case MUL: + case MOD: + case CARET: + case TILDE: + enterOuterAlt(_localctx, 1); + { + setState(2746); + _la = _input.LA(1); + if ( !(((((_la - 148)) & ~0x3f) == 0 && ((1L << (_la - 148)) & ((1L << (LT - 148)) | (1L << (GT - 148)) | (1L << (BANG - 148)) | (1L << (QUESTION - 148)) | (1L << (AND - 148)) | (1L << (SUB - 148)) | (1L << (EQUAL - 148)) | (1L << (OR - 148)) | (1L << (DIV - 148)) | (1L << (ADD - 148)) | (1L << (MUL - 148)) | (1L << (MOD - 148)) | (1L << (CARET - 148)) | (1L << (TILDE - 148)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case Operator_head_other: + enterOuterAlt(_localctx, 2); + { + setState(2747); + match(Operator_head_other); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Operator_characterContext extends ParserRuleContext { + public Operator_headContext operator_head() { + return getRuleContext(Operator_headContext.class,0); + } + public TerminalNode Operator_following_character() { return getToken(Swift5Parser.Operator_following_character, 0); } + public Operator_characterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_operator_character; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOperator_character(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOperator_character(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOperator_character(this); + else return visitor.visitChildren(this); + } + } + + public final Operator_characterContext operator_character() throws RecognitionException { + Operator_characterContext _localctx = new Operator_characterContext(_ctx, getState()); + enterRule(_localctx, 600, RULE_operator_character); + try { + setState(2752); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LT: + case GT: + case BANG: + case QUESTION: + case AND: + case SUB: + case EQUAL: + case OR: + case DIV: + case ADD: + case MUL: + case MOD: + case CARET: + case TILDE: + case Operator_head_other: + enterOuterAlt(_localctx, 1); + { + setState(2750); + operator_head(); + } + break; + case Operator_following_character: + enterOuterAlt(_localctx, 2); + { + setState(2751); + match(Operator_following_character); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Operator_charactersContext extends ParserRuleContext { + public List operator_character() { + return getRuleContexts(Operator_characterContext.class); + } + public Operator_characterContext operator_character(int i) { + return getRuleContext(Operator_characterContext.class,i); + } + public Operator_charactersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_operator_characters; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterOperator_characters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitOperator_characters(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitOperator_characters(this); + else return visitor.visitChildren(this); + } + } + + public final Operator_charactersContext operator_characters() throws RecognitionException { + Operator_charactersContext _localctx = new Operator_charactersContext(_ctx, getState()); + enterRule(_localctx, 602, RULE_operator_characters); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2756); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(2754); + if (!(_input.get(_input.index()-1).getType()!=WS)) throw new FailedPredicateException(this, "_input.get(_input.index()-1).getType()!=WS"); + setState(2755); + operator_character(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(2758); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,336,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Dot_operator_headContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public Dot_operator_headContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dot_operator_head; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDot_operator_head(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDot_operator_head(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDot_operator_head(this); + else return visitor.visitChildren(this); + } + } + + public final Dot_operator_headContext dot_operator_head() throws RecognitionException { + Dot_operator_headContext _localctx = new Dot_operator_headContext(_ctx, getState()); + enterRule(_localctx, 604, RULE_dot_operator_head); + try { + enterOuterAlt(_localctx, 1); + { + setState(2760); + match(DOT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Dot_operator_characterContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(Swift5Parser.DOT, 0); } + public Operator_characterContext operator_character() { + return getRuleContext(Operator_characterContext.class,0); + } + public Dot_operator_characterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dot_operator_character; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDot_operator_character(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDot_operator_character(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDot_operator_character(this); + else return visitor.visitChildren(this); + } + } + + public final Dot_operator_characterContext dot_operator_character() throws RecognitionException { + Dot_operator_characterContext _localctx = new Dot_operator_characterContext(_ctx, getState()); + enterRule(_localctx, 606, RULE_dot_operator_character); + try { + setState(2764); + _errHandler.sync(this); + switch (_input.LA(1)) { + case DOT: + enterOuterAlt(_localctx, 1); + { + setState(2762); + match(DOT); + } + break; + case LT: + case GT: + case BANG: + case QUESTION: + case AND: + case SUB: + case EQUAL: + case OR: + case DIV: + case ADD: + case MUL: + case MOD: + case CARET: + case TILDE: + case Operator_head_other: + case Operator_following_character: + enterOuterAlt(_localctx, 2); + { + setState(2763); + operator_character(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Dot_operator_charactersContext extends ParserRuleContext { + public List dot_operator_character() { + return getRuleContexts(Dot_operator_characterContext.class); + } + public Dot_operator_characterContext dot_operator_character(int i) { + return getRuleContext(Dot_operator_characterContext.class,i); + } + public Dot_operator_charactersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dot_operator_characters; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterDot_operator_characters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitDot_operator_characters(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitDot_operator_characters(this); + else return visitor.visitChildren(this); + } + } + + public final Dot_operator_charactersContext dot_operator_characters() throws RecognitionException { + Dot_operator_charactersContext _localctx = new Dot_operator_charactersContext(_ctx, getState()); + enterRule(_localctx, 608, RULE_dot_operator_characters); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(2768); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(2766); + if (!(_input.get(_input.index()-1).getType()!=WS)) throw new FailedPredicateException(this, "_input.get(_input.index()-1).getType()!=WS"); + setState(2767); + dot_operator_character(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(2770); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,338,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LiteralContext extends ParserRuleContext { + public Numeric_literalContext numeric_literal() { + return getRuleContext(Numeric_literalContext.class,0); + } + public String_literalContext string_literal() { + return getRuleContext(String_literalContext.class,0); + } + public Boolean_literalContext boolean_literal() { + return getRuleContext(Boolean_literalContext.class,0); + } + public Nil_literalContext nil_literal() { + return getRuleContext(Nil_literalContext.class,0); + } + public LiteralContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitLiteral(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitLiteral(this); + else return visitor.visitChildren(this); + } + } + + public final LiteralContext literal() throws RecognitionException { + LiteralContext _localctx = new LiteralContext(_ctx, getState()); + enterRule(_localctx, 610, RULE_literal); + try { + setState(2776); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,339,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2772); + numeric_literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2773); + string_literal(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2774); + boolean_literal(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(2775); + nil_literal(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Numeric_literalContext extends ParserRuleContext { + public Integer_literalContext integer_literal() { + return getRuleContext(Integer_literalContext.class,0); + } + public Negate_prefix_operatorContext negate_prefix_operator() { + return getRuleContext(Negate_prefix_operatorContext.class,0); + } + public TerminalNode Floating_point_literal() { return getToken(Swift5Parser.Floating_point_literal, 0); } + public Numeric_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_numeric_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterNumeric_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitNumeric_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitNumeric_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Numeric_literalContext numeric_literal() throws RecognitionException { + Numeric_literalContext _localctx = new Numeric_literalContext(_ctx, getState()); + enterRule(_localctx, 612, RULE_numeric_literal); + try { + setState(2786); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,342,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2779); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,340,_ctx) ) { + case 1: + { + setState(2778); + negate_prefix_operator(); + } + break; + } + setState(2781); + integer_literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2783); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,341,_ctx) ) { + case 1: + { + setState(2782); + negate_prefix_operator(); + } + break; + } + setState(2785); + match(Floating_point_literal); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Boolean_literalContext extends ParserRuleContext { + public TerminalNode TRUE() { return getToken(Swift5Parser.TRUE, 0); } + public TerminalNode FALSE() { return getToken(Swift5Parser.FALSE, 0); } + public Boolean_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_boolean_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterBoolean_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitBoolean_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitBoolean_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Boolean_literalContext boolean_literal() throws RecognitionException { + Boolean_literalContext _localctx = new Boolean_literalContext(_ctx, getState()); + enterRule(_localctx, 614, RULE_boolean_literal); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2788); + _la = _input.LA(1); + if ( !(_la==FALSE || _la==TRUE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Nil_literalContext extends ParserRuleContext { + public TerminalNode NIL() { return getToken(Swift5Parser.NIL, 0); } + public Nil_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_nil_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterNil_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitNil_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitNil_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Nil_literalContext nil_literal() throws RecognitionException { + Nil_literalContext _localctx = new Nil_literalContext(_ctx, getState()); + enterRule(_localctx, 616, RULE_nil_literal); + try { + enterOuterAlt(_localctx, 1); + { + setState(2790); + match(NIL); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Integer_literalContext extends ParserRuleContext { + public TerminalNode Decimal_digits() { return getToken(Swift5Parser.Decimal_digits, 0); } + public TerminalNode Decimal_literal() { return getToken(Swift5Parser.Decimal_literal, 0); } + public TerminalNode Binary_literal() { return getToken(Swift5Parser.Binary_literal, 0); } + public TerminalNode Octal_literal() { return getToken(Swift5Parser.Octal_literal, 0); } + public TerminalNode Hexadecimal_literal() { return getToken(Swift5Parser.Hexadecimal_literal, 0); } + public Integer_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_integer_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterInteger_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitInteger_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitInteger_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Integer_literalContext integer_literal() throws RecognitionException { + Integer_literalContext _localctx = new Integer_literalContext(_ctx, getState()); + enterRule(_localctx, 618, RULE_integer_literal); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2792); + _la = _input.LA(1); + if ( !(((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (Binary_literal - 170)) | (1L << (Octal_literal - 170)) | (1L << (Decimal_digits - 170)) | (1L << (Decimal_literal - 170)) | (1L << (Hexadecimal_literal - 170)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class String_literalContext extends ParserRuleContext { + public Extended_string_literalContext extended_string_literal() { + return getRuleContext(Extended_string_literalContext.class,0); + } + public Interpolated_string_literalContext interpolated_string_literal() { + return getRuleContext(Interpolated_string_literalContext.class,0); + } + public Static_string_literalContext static_string_literal() { + return getRuleContext(Static_string_literalContext.class,0); + } + public String_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_string_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterString_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitString_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitString_literal(this); + else return visitor.visitChildren(this); + } + } + + public final String_literalContext string_literal() throws RecognitionException { + String_literalContext _localctx = new String_literalContext(_ctx, getState()); + enterRule(_localctx, 620, RULE_string_literal); + try { + setState(2797); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,343,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(2794); + extended_string_literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(2795); + interpolated_string_literal(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2796); + static_string_literal(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Extended_string_literalContext extends ParserRuleContext { + public TerminalNode Multi_line_extended_string_open() { return getToken(Swift5Parser.Multi_line_extended_string_open, 0); } + public TerminalNode Multi_line_extended_string_close() { return getToken(Swift5Parser.Multi_line_extended_string_close, 0); } + public List Quoted_multi_line_extended_text() { return getTokens(Swift5Parser.Quoted_multi_line_extended_text); } + public TerminalNode Quoted_multi_line_extended_text(int i) { + return getToken(Swift5Parser.Quoted_multi_line_extended_text, i); + } + public TerminalNode Single_line_extended_string_open() { return getToken(Swift5Parser.Single_line_extended_string_open, 0); } + public TerminalNode Single_line_extended_string_close() { return getToken(Swift5Parser.Single_line_extended_string_close, 0); } + public List Quoted_single_line_extended_text() { return getTokens(Swift5Parser.Quoted_single_line_extended_text); } + public TerminalNode Quoted_single_line_extended_text(int i) { + return getToken(Swift5Parser.Quoted_single_line_extended_text, i); + } + public Extended_string_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_extended_string_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterExtended_string_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitExtended_string_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitExtended_string_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Extended_string_literalContext extended_string_literal() throws RecognitionException { + Extended_string_literalContext _localctx = new Extended_string_literalContext(_ctx, getState()); + enterRule(_localctx, 622, RULE_extended_string_literal); + int _la; + try { + setState(2813); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Multi_line_extended_string_open: + enterOuterAlt(_localctx, 1); + { + setState(2799); + match(Multi_line_extended_string_open); + setState(2801); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(2800); + match(Quoted_multi_line_extended_text); + } + } + setState(2803); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==Quoted_multi_line_extended_text ); + setState(2805); + match(Multi_line_extended_string_close); + } + break; + case Single_line_extended_string_open: + enterOuterAlt(_localctx, 2); + { + setState(2806); + match(Single_line_extended_string_open); + setState(2808); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(2807); + match(Quoted_single_line_extended_text); + } + } + setState(2810); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==Quoted_single_line_extended_text ); + setState(2812); + match(Single_line_extended_string_close); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Static_string_literalContext extends ParserRuleContext { + public TerminalNode Single_line_string_open() { return getToken(Swift5Parser.Single_line_string_open, 0); } + public TerminalNode Single_line_string_close() { return getToken(Swift5Parser.Single_line_string_close, 0); } + public List Quoted_single_line_text() { return getTokens(Swift5Parser.Quoted_single_line_text); } + public TerminalNode Quoted_single_line_text(int i) { + return getToken(Swift5Parser.Quoted_single_line_text, i); + } + public TerminalNode Multi_line_string_open() { return getToken(Swift5Parser.Multi_line_string_open, 0); } + public TerminalNode Multi_line_string_close() { return getToken(Swift5Parser.Multi_line_string_close, 0); } + public List Quoted_multi_line_text() { return getTokens(Swift5Parser.Quoted_multi_line_text); } + public TerminalNode Quoted_multi_line_text(int i) { + return getToken(Swift5Parser.Quoted_multi_line_text, i); + } + public Static_string_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_static_string_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterStatic_string_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitStatic_string_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitStatic_string_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Static_string_literalContext static_string_literal() throws RecognitionException { + Static_string_literalContext _localctx = new Static_string_literalContext(_ctx, getState()); + enterRule(_localctx, 624, RULE_static_string_literal); + int _la; + try { + setState(2831); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Single_line_string_open: + enterOuterAlt(_localctx, 1); + { + setState(2815); + match(Single_line_string_open); + setState(2819); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Quoted_single_line_text) { + { + { + setState(2816); + match(Quoted_single_line_text); + } + } + setState(2821); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2822); + match(Single_line_string_close); + } + break; + case Multi_line_string_open: + enterOuterAlt(_localctx, 2); + { + setState(2823); + match(Multi_line_string_open); + setState(2827); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Quoted_multi_line_text) { + { + { + setState(2824); + match(Quoted_multi_line_text); + } + } + setState(2829); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2830); + match(Multi_line_string_close); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Interpolated_string_literalContext extends ParserRuleContext { + public TerminalNode Single_line_string_open() { return getToken(Swift5Parser.Single_line_string_open, 0); } + public TerminalNode Single_line_string_close() { return getToken(Swift5Parser.Single_line_string_close, 0); } + public List Quoted_single_line_text() { return getTokens(Swift5Parser.Quoted_single_line_text); } + public TerminalNode Quoted_single_line_text(int i) { + return getToken(Swift5Parser.Quoted_single_line_text, i); + } + public List Interpolataion_single_line() { return getTokens(Swift5Parser.Interpolataion_single_line); } + public TerminalNode Interpolataion_single_line(int i) { + return getToken(Swift5Parser.Interpolataion_single_line, i); + } + public List RPAREN() { return getTokens(Swift5Parser.RPAREN); } + public TerminalNode RPAREN(int i) { + return getToken(Swift5Parser.RPAREN, i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List tuple_element() { + return getRuleContexts(Tuple_elementContext.class); + } + public Tuple_elementContext tuple_element(int i) { + return getRuleContext(Tuple_elementContext.class,i); + } + public List COMMA() { return getTokens(Swift5Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Swift5Parser.COMMA, i); + } + public List tuple_element_list() { + return getRuleContexts(Tuple_element_listContext.class); + } + public Tuple_element_listContext tuple_element_list(int i) { + return getRuleContext(Tuple_element_listContext.class,i); + } + public TerminalNode Multi_line_string_open() { return getToken(Swift5Parser.Multi_line_string_open, 0); } + public TerminalNode Multi_line_string_close() { return getToken(Swift5Parser.Multi_line_string_close, 0); } + public List Quoted_multi_line_text() { return getTokens(Swift5Parser.Quoted_multi_line_text); } + public TerminalNode Quoted_multi_line_text(int i) { + return getToken(Swift5Parser.Quoted_multi_line_text, i); + } + public List Interpolataion_multi_line() { return getTokens(Swift5Parser.Interpolataion_multi_line); } + public TerminalNode Interpolataion_multi_line(int i) { + return getToken(Swift5Parser.Interpolataion_multi_line, i); + } + public Interpolated_string_literalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interpolated_string_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).enterInterpolated_string_literal(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Swift5ParserListener ) ((Swift5ParserListener)listener).exitInterpolated_string_literal(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof Swift5ParserVisitor ) return ((Swift5ParserVisitor)visitor).visitInterpolated_string_literal(this); + else return visitor.visitChildren(this); + } + } + + public final Interpolated_string_literalContext interpolated_string_literal() throws RecognitionException { + Interpolated_string_literalContext _localctx = new Interpolated_string_literalContext(_ctx, getState()); + enterRule(_localctx, 626, RULE_interpolated_string_literal); + int _la; + try { + setState(2869); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Single_line_string_open: + enterOuterAlt(_localctx, 1); + { + setState(2833); + match(Single_line_string_open); + setState(2847); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Interpolataion_single_line || _la==Quoted_single_line_text) { + { + setState(2845); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Quoted_single_line_text: + { + setState(2834); + match(Quoted_single_line_text); + } + break; + case Interpolataion_single_line: + { + setState(2835); + match(Interpolataion_single_line); + setState(2841); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,350,_ctx) ) { + case 1: + { + setState(2836); + expression(); + } + break; + case 2: + { + setState(2837); + tuple_element(); + setState(2838); + match(COMMA); + setState(2839); + tuple_element_list(); + } + break; + } + setState(2843); + match(RPAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(2849); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2850); + match(Single_line_string_close); + } + break; + case Multi_line_string_open: + enterOuterAlt(_localctx, 2); + { + setState(2851); + match(Multi_line_string_open); + setState(2865); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==Interpolataion_multi_line || _la==Quoted_multi_line_text) { + { + setState(2863); + _errHandler.sync(this); + switch (_input.LA(1)) { + case Quoted_multi_line_text: + { + setState(2852); + match(Quoted_multi_line_text); + } + break; + case Interpolataion_multi_line: + { + setState(2853); + match(Interpolataion_multi_line); + setState(2859); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,353,_ctx) ) { + case 1: + { + setState(2854); + expression(); + } + break; + case 2: + { + setState(2855); + tuple_element(); + setState(2856); + match(COMMA); + setState(2857); + tuple_element_list(); + } + break; + } + setState(2861); + match(RPAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(2867); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2868); + match(Multi_line_string_close); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 2: + return statements_sempred((StatementsContext)_localctx, predIndex); + case 49: + return compilation_condition_sempred((Compilation_conditionContext)_localctx, predIndex); + case 184: + return pattern_sempred((PatternContext)_localctx, predIndex); + case 200: + return balanced_token_punctuation_sempred((Balanced_token_punctuationContext)_localctx, predIndex); + case 251: + return forced_value_suffix_sempred((Forced_value_suffixContext)_localctx, predIndex); + case 252: + return optional_chaining_suffix_sempred((Optional_chaining_suffixContext)_localctx, predIndex); + case 261: + return type_sempred((TypeContext)_localctx, predIndex); + case 277: + return trailing_composition_and_sempred((Trailing_composition_andContext)_localctx, predIndex); + case 286: + return assignment_operator_sempred((Assignment_operatorContext)_localctx, predIndex); + case 287: + return negate_prefix_operator_sempred((Negate_prefix_operatorContext)_localctx, predIndex); + case 288: + return compilation_condition_AND_sempred((Compilation_condition_ANDContext)_localctx, predIndex); + case 289: + return compilation_condition_OR_sempred((Compilation_condition_ORContext)_localctx, predIndex); + case 290: + return compilation_condition_GE_sempred((Compilation_condition_GEContext)_localctx, predIndex); + case 291: + return compilation_condition_L_sempred((Compilation_condition_LContext)_localctx, predIndex); + case 292: + return arrow_operator_sempred((Arrow_operatorContext)_localctx, predIndex); + case 293: + return range_operator_sempred((Range_operatorContext)_localctx, predIndex); + case 294: + return same_type_equals_sempred((Same_type_equalsContext)_localctx, predIndex); + case 295: + return binary_operator_sempred((Binary_operatorContext)_localctx, predIndex); + case 296: + return prefix_operator_sempred((Prefix_operatorContext)_localctx, predIndex); + case 297: + return postfix_operator_sempred((Postfix_operatorContext)_localctx, predIndex); + case 301: + return operator_characters_sempred((Operator_charactersContext)_localctx, predIndex); + case 304: + return dot_operator_characters_sempred((Dot_operator_charactersContext)_localctx, predIndex); + } + return true; + } + private boolean statements_sempred(StatementsContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return SwiftSupport.isSeparatedStatement(_input, _localctx.indexBefore); + } + return true; + } + private boolean compilation_condition_sempred(Compilation_conditionContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return precpred(_ctx, 1); + } + return true; + } + private boolean pattern_sempred(PatternContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return precpred(_ctx, 2); + } + return true; + } + private boolean balanced_token_punctuation_sempred(Balanced_token_punctuationContext _localctx, int predIndex) { + switch (predIndex) { + case 3: + return SwiftSupport.isPrefixOp(_input); + case 4: + return SwiftSupport.isPostfixOp(_input); + } + return true; + } + private boolean forced_value_suffix_sempred(Forced_value_suffixContext _localctx, int predIndex) { + switch (predIndex) { + case 5: + return !SwiftSupport.isBinaryOp(_input); + } + return true; + } + private boolean optional_chaining_suffix_sempred(Optional_chaining_suffixContext _localctx, int predIndex) { + switch (predIndex) { + case 6: + return !SwiftSupport.isBinaryOp(_input); + } + return true; + } + private boolean type_sempred(TypeContext _localctx, int predIndex) { + switch (predIndex) { + case 7: + return precpred(_ctx, 4); + case 8: + return !SwiftSupport.isBinaryOp(_input); + case 9: + return !SwiftSupport.isBinaryOp(_input); + } + return true; + } + private boolean trailing_composition_and_sempred(Trailing_composition_andContext _localctx, int predIndex) { + switch (predIndex) { + case 10: + return !SwiftSupport.isBinaryOp(_input); + } + return true; + } + private boolean assignment_operator_sempred(Assignment_operatorContext _localctx, int predIndex) { + switch (predIndex) { + case 11: + return SwiftSupport.isBinaryOp(_input); + } + return true; + } + private boolean negate_prefix_operator_sempred(Negate_prefix_operatorContext _localctx, int predIndex) { + switch (predIndex) { + case 12: + return SwiftSupport.isPrefixOp(_input); + } + return true; + } + private boolean compilation_condition_AND_sempred(Compilation_condition_ANDContext _localctx, int predIndex) { + switch (predIndex) { + case 13: + return SwiftSupport.isOperator(_input,"&&"); + } + return true; + } + private boolean compilation_condition_OR_sempred(Compilation_condition_ORContext _localctx, int predIndex) { + switch (predIndex) { + case 14: + return SwiftSupport.isOperator(_input,"||"); + } + return true; + } + private boolean compilation_condition_GE_sempred(Compilation_condition_GEContext _localctx, int predIndex) { + switch (predIndex) { + case 15: + return SwiftSupport.isOperator(_input,">="); + } + return true; + } + private boolean compilation_condition_L_sempred(Compilation_condition_LContext _localctx, int predIndex) { + switch (predIndex) { + case 16: + return SwiftSupport.isOperator(_input,"<"); + } + return true; + } + private boolean arrow_operator_sempred(Arrow_operatorContext _localctx, int predIndex) { + switch (predIndex) { + case 17: + return SwiftSupport.isOperator(_input,"->"); + } + return true; + } + private boolean range_operator_sempred(Range_operatorContext _localctx, int predIndex) { + switch (predIndex) { + case 18: + return SwiftSupport.isOperator(_input,"..."); + } + return true; + } + private boolean same_type_equals_sempred(Same_type_equalsContext _localctx, int predIndex) { + switch (predIndex) { + case 19: + return SwiftSupport.isOperator(_input,"=="); + } + return true; + } + private boolean binary_operator_sempred(Binary_operatorContext _localctx, int predIndex) { + switch (predIndex) { + case 20: + return SwiftSupport.isBinaryOp(_input); + } + return true; + } + private boolean prefix_operator_sempred(Prefix_operatorContext _localctx, int predIndex) { + switch (predIndex) { + case 21: + return SwiftSupport.isPrefixOp(_input); + } + return true; + } + private boolean postfix_operator_sempred(Postfix_operatorContext _localctx, int predIndex) { + switch (predIndex) { + case 22: + return SwiftSupport.isPostfixOp(_input); + } + return true; + } + private boolean operator_characters_sempred(Operator_charactersContext _localctx, int predIndex) { + switch (predIndex) { + case 23: + return _input.get(_input.index()-1).getType()!=WS; + } + return true; + } + private boolean dot_operator_characters_sempred(Dot_operator_charactersContext _localctx, int predIndex) { + switch (predIndex) { + case 24: + return _input.get(_input.index()-1).getType()!=WS; + } + return true; + } + + private static final String _serializedATNSegment0 = + "\u0004\u0001\u00c1\u0b38\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+ + "\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+ + "\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+ + "\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+ + "\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+ + "\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+ + "\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+ + "\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+ + "\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+ + "\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+ + "\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+ + "\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+ + "\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+ + ",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+ + "1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+ + "6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+ + ";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+ + "@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+ + "E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+ + "J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+ + "O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+ + "T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+ + "Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+ + "^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+ + "c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+ + "h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+ + "m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+ + "r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+ + "w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+ + "|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+ + "\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+ + "\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+ + "\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+ + "\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+ + "\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+ + "\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+ + "\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+ + "\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+ + "\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+ + "\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+ + "\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+ + "\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+ + "\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+ + "\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+ + "\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+ + "\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+ + "\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+ + "\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+ + "\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+ + "\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+ + "\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+ + "\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+ + "\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+ + "\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+ + "\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+ + "\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+ + "\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+ + "\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+ + "\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+ + "\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+ + "\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+ + "\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+ + "\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+ + "\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007"+ + "\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007"+ + "\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007"+ + "\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007"+ + "\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1\u0002\u00f2\u0007"+ + "\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4\u0002\u00f5\u0007"+ + "\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7\u0002\u00f8\u0007"+ + "\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa\u0002\u00fb\u0007"+ + "\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd\u0002\u00fe\u0007"+ + "\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100\u0002\u0101\u0007"+ + "\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103\u0002\u0104\u0007"+ + "\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106\u0002\u0107\u0007"+ + "\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109\u0002\u010a\u0007"+ + "\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c\u0002\u010d\u0007"+ + "\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f\u0002\u0110\u0007"+ + "\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112\u0002\u0113\u0007"+ + "\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115\u0002\u0116\u0007"+ + "\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118\u0002\u0119\u0007"+ + "\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b\u0002\u011c\u0007"+ + "\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e\u0002\u011f\u0007"+ + "\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121\u0002\u0122\u0007"+ + "\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124\u0002\u0125\u0007"+ + "\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127\u0002\u0128\u0007"+ + "\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a\u0002\u012b\u0007"+ + "\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d\u0002\u012e\u0007"+ + "\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130\u0002\u0131\u0007"+ + "\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133\u0002\u0134\u0007"+ + "\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136\u0002\u0137\u0007"+ + "\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139\u0001\u0000\u0003"+ + "\u0000\u0276\b\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001"+ + "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003"+ + "\u0001\u0282\b\u0001\u0001\u0001\u0003\u0001\u0285\b\u0001\u0001\u0001"+ + "\u0003\u0001\u0288\b\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+ + "\u0004\u0002\u028e\b\u0002\u000b\u0002\f\u0002\u028f\u0001\u0003\u0001"+ + "\u0003\u0001\u0003\u0003\u0003\u0295\b\u0003\u0001\u0004\u0001\u0004\u0003"+ + "\u0004\u0299\b\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0003"+ + "\u0004\u029f\b\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0005\u0006\u02aa"+ + "\b\u0006\n\u0006\f\u0006\u02ad\t\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+ + "\u0001\u0007\u0003\u0007\u02b3\b\u0007\u0001\b\u0001\b\u0001\b\u0001\b"+ + "\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u02c5\b\u000b\u0001"+ + "\f\u0001\f\u0001\f\u0001\f\u0003\f\u02cb\b\f\u0001\r\u0001\r\u0001\r\u0001"+ + "\r\u0003\r\u02d1\b\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+ + "\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u02dc"+ + "\b\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0003\u0010\u02e2"+ + "\b\u0010\u0001\u0011\u0001\u0011\u0003\u0011\u02e6\b\u0011\u0001\u0011"+ + "\u0001\u0011\u0001\u0011\u0003\u0011\u02eb\b\u0011\u0001\u0012\u0003\u0012"+ + "\u02ee\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013"+ + "\u0001\u0013\u0003\u0013\u02f6\b\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+ + "\u0003\u0013\u02fb\b\u0013\u0005\u0013\u02fd\b\u0013\n\u0013\f\u0013\u0300"+ + "\t\u0013\u0001\u0014\u0003\u0014\u0303\b\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016"+ + "\u0001\u0017\u0001\u0017\u0003\u0017\u030f\b\u0017\u0001\u0017\u0003\u0017"+ + "\u0312\b\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018"+ + "\u0003\u0018\u0319\b\u0018\u0001\u0019\u0001\u0019\u0003\u0019\u031d\b"+ + "\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0003\u001a\u0322\b\u001a\u0001"+ + "\u001b\u0001\u001b\u0003\u001b\u0326\b\u001b\u0001\u001c\u0001\u001c\u0001"+ + "\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u032d\b\u001c\u0001\u001d\u0001"+ + "\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001"+ + "\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u0339\b\u001f\u0001 \u0001"+ + " \u0003 \u033d\b \u0001!\u0001!\u0003!\u0341\b!\u0001\"\u0001\"\u0001"+ + "#\u0001#\u0003#\u0347\b#\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001"+ + "&\u0001&\u0001&\u0003&\u0352\b&\u0001\'\u0004\'\u0355\b\'\u000b\'\f\'"+ + "\u0356\u0001(\u0001(\u0003(\u035b\b(\u0001(\u0001(\u0001)\u0001)\u0001"+ + ")\u0001)\u0001)\u0005)\u0364\b)\n)\f)\u0367\t)\u0001*\u0001*\u0003*\u036b"+ + "\b*\u0001+\u0001+\u0001+\u0003+\u0370\b+\u0001,\u0001,\u0003,\u0374\b"+ + ",\u0001,\u0003,\u0377\b,\u0001,\u0001,\u0001-\u0001-\u0001-\u0003-\u037e"+ + "\b-\u0001.\u0004.\u0381\b.\u000b.\f.\u0382\u0001/\u0001/\u0001/\u0003"+ + "/\u0388\b/\u00010\u00010\u00030\u038c\b0\u00011\u00011\u00011\u00011\u0001"+ + "1\u00011\u00011\u00011\u00011\u00011\u00031\u0398\b1\u00011\u00011\u0001"+ + "1\u00031\u039d\b1\u00011\u00011\u00051\u03a1\b1\n1\f1\u03a4\t1\u00012"+ + "\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u0001"+ + "2\u00012\u00012\u00012\u00032\u03b4\b2\u00012\u00012\u00012\u00012\u0001"+ + "2\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00032\u03c3"+ + "\b2\u00013\u00013\u00033\u03c7\b3\u00014\u00014\u00014\u00034\u03cc\b"+ + "4\u00015\u00015\u00016\u00016\u00017\u00017\u00017\u00057\u03d5\b7\n7"+ + "\f7\u03d8\t7\u00018\u00018\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ + "9\u00019\u00019\u00019\u00039\u03e6\b9\u00019\u00019\u0001:\u0001:\u0001"+ + ";\u0001;\u0001<\u0001<\u0001<\u0001<\u0001<\u0001=\u0001=\u0001>\u0001"+ + ">\u0001>\u0001>\u0001>\u0001?\u0001?\u0001?\u0005?\u03fd\b?\n?\f?\u0400"+ + "\t?\u0001@\u0001@\u0001@\u0001@\u0003@\u0406\b@\u0001A\u0001A\u0001B\u0001"+ + "B\u0001B\u0001B\u0001B\u0003B\u040f\bB\u0003B\u0411\bB\u0001C\u0001C\u0001"+ + "C\u0001C\u0001D\u0001D\u0001D\u0005D\u041a\bD\nD\fD\u041d\tD\u0001E\u0001"+ + "E\u0001E\u0001E\u0003E\u0423\bE\u0003E\u0425\bE\u0001F\u0001F\u0001F\u0001"+ + "G\u0001G\u0001G\u0005G\u042d\bG\nG\fG\u0430\tG\u0001H\u0001H\u0003H\u0434"+ + "\bH\u0001I\u0001I\u0001I\u0001I\u0003I\u043a\bI\u0001J\u0001J\u0001J\u0001"+ + "J\u0003J\u0440\bJ\u0001K\u0001K\u0001K\u0001K\u0001L\u0001L\u0001L\u0005"+ + "L\u0449\bL\nL\fL\u044c\tL\u0001M\u0001M\u0001N\u0001N\u0001N\u0001N\u0001"+ + "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+ + "N\u0003N\u045f\bN\u0001N\u0003N\u0462\bN\u0001O\u0004O\u0465\bO\u000b"+ + "O\fO\u0466\u0001P\u0003P\u046a\bP\u0001Q\u0001Q\u0003Q\u046e\bQ\u0001"+ + "Q\u0001Q\u0001R\u0003R\u0473\bR\u0001R\u0001R\u0003R\u0477\bR\u0001R\u0001"+ + "R\u0001S\u0001S\u0001T\u0001T\u0001T\u0005T\u0480\bT\nT\fT\u0483\tT\u0001"+ + "U\u0001U\u0003U\u0487\bU\u0001V\u0003V\u048a\bV\u0001V\u0003V\u048d\b"+ + "V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001W\u0005W\u0495\bW\nW\fW\u0498"+ + "\tW\u0001X\u0001X\u0003X\u049c\bX\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001"+ + "Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0003Z\u04aa\bZ\u0001Z\u0003"+ + "Z\u04ad\bZ\u0003Z\u04af\bZ\u0001Z\u0003Z\u04b2\bZ\u0001[\u0003[\u04b5"+ + "\b[\u0001[\u0003[\u04b8\b[\u0001[\u0001[\u0001\\\u0001\\\u0001]\u0001"+ + "]\u0001]\u0003]\u04c1\b]\u0001]\u0001]\u0001]\u0003]\u04c6\b]\u0001]\u0001"+ + "]\u0001]\u0003]\u04cb\b]\u0001^\u0003^\u04ce\b^\u0001^\u0003^\u04d1\b"+ + "^\u0001^\u0001^\u0003^\u04d5\b^\u0001_\u0003_\u04d8\b_\u0001_\u0003_\u04db"+ + "\b_\u0001_\u0001_\u0003_\u04df\b_\u0001_\u0003_\u04e2\b_\u0001`\u0001"+ + "`\u0001`\u0001`\u0001a\u0001a\u0001a\u0003a\u04eb\ba\u0001a\u0001a\u0001"+ + "a\u0003a\u04f0\ba\u0001a\u0001a\u0001b\u0003b\u04f5\bb\u0001b\u0003b\u04f8"+ + "\bb\u0001b\u0001b\u0001c\u0003c\u04fd\bc\u0001c\u0003c\u0500\bc\u0001"+ + "c\u0001c\u0001d\u0001d\u0001d\u0003d\u0507\bd\u0001d\u0001d\u0003d\u050b"+ + "\bd\u0003d\u050d\bd\u0001d\u0001d\u0001e\u0003e\u0512\be\u0001e\u0001"+ + "e\u0003e\u0516\be\u0001e\u0001e\u0001f\u0003f\u051b\bf\u0001f\u0001f\u0003"+ + "f\u051f\bf\u0001f\u0001f\u0001g\u0003g\u0524\bg\u0001g\u0003g\u0527\b"+ + "g\u0001g\u0001g\u0001g\u0003g\u052c\bg\u0001g\u0001g\u0001h\u0001h\u0001"+ + "i\u0001i\u0001i\u0001j\u0001j\u0001j\u0003j\u0538\bj\u0001j\u0001j\u0003"+ + "j\u053c\bj\u0001j\u0003j\u053f\bj\u0001k\u0003k\u0542\bk\u0001k\u0003"+ + "k\u0545\bk\u0001k\u0001k\u0001l\u0001l\u0003l\u054b\bl\u0001m\u0001m\u0003"+ + "m\u054f\bm\u0001m\u0003m\u0552\bm\u0001m\u0003m\u0555\bm\u0001n\u0001"+ + "n\u0003n\u0559\bn\u0001n\u0001n\u0001o\u0001o\u0001p\u0001p\u0003p\u0561"+ + "\bp\u0001p\u0001p\u0001q\u0001q\u0001q\u0005q\u0568\bq\nq\fq\u056b\tq"+ + "\u0001r\u0003r\u056e\br\u0001r\u0003r\u0571\br\u0001r\u0001r\u0001r\u0003"+ + "r\u0576\br\u0001r\u0003r\u0579\br\u0001s\u0001s\u0001t\u0001t\u0001u\u0001"+ + "u\u0001u\u0001v\u0003v\u0583\bv\u0001v\u0003v\u0586\bv\u0001v\u0001v\u0003"+ + "v\u058a\bv\u0001w\u0003w\u058d\bw\u0001w\u0001w\u0001w\u0003w\u0592\b"+ + "w\u0001w\u0003w\u0595\bw\u0001w\u0003w\u0598\bw\u0001w\u0001w\u0003w\u059c"+ + "\bw\u0001w\u0001w\u0001x\u0004x\u05a1\bx\u000bx\fx\u05a2\u0001y\u0001"+ + "y\u0001y\u0003y\u05a8\by\u0001z\u0003z\u05ab\bz\u0001z\u0003z\u05ae\b"+ + "z\u0001z\u0001z\u0001z\u0001{\u0001{\u0001{\u0005{\u05b6\b{\n{\f{\u05b9"+ + "\t{\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0003|\u05c2\b|\u0003"+ + "|\u05c4\b|\u0001}\u0001}\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f"+ + "\u0003\u007f\u05cd\b\u007f\u0001\u007f\u0001\u007f\u0003\u007f\u05d1\b"+ + "\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0004"+ + "\u0080\u05d8\b\u0080\u000b\u0080\f\u0080\u05d9\u0001\u0081\u0001\u0081"+ + "\u0001\u0081\u0003\u0081\u05df\b\u0081\u0001\u0082\u0003\u0082\u05e2\b"+ + "\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0083\u0001\u0083\u0001"+ + "\u0083\u0005\u0083\u05ea\b\u0083\n\u0083\f\u0083\u05ed\t\u0083\u0001\u0084"+ + "\u0001\u0084\u0003\u0084\u05f1\b\u0084\u0001\u0085\u0001\u0085\u0001\u0085"+ + "\u0001\u0086\u0001\u0086\u0001\u0086\u0003\u0086\u05f9\b\u0086\u0001\u0087"+ + "\u0003\u0087\u05fc\b\u0087\u0001\u0087\u0003\u0087\u05ff\b\u0087\u0001"+ + "\u0087\u0001\u0087\u0001\u0087\u0003\u0087\u0604\b\u0087\u0001\u0087\u0003"+ + "\u0087\u0607\b\u0087\u0001\u0087\u0003\u0087\u060a\b\u0087\u0001\u0087"+ + "\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089"+ + "\u0001\u0089\u0001\u008a\u0005\u008a\u0615\b\u008a\n\u008a\f\u008a\u0618"+ + "\t\u008a\u0001\u008b\u0001\u008b\u0003\u008b\u061c\b\u008b\u0001\u008c"+ + "\u0003\u008c\u061f\b\u008c\u0001\u008c\u0003\u008c\u0622\b\u008c\u0001"+ + "\u008c\u0003\u008c\u0625\b\u008c\u0001\u008c\u0001\u008c\u0003\u008c\u0629"+ + "\b\u008c\u0003\u008c\u062b\b\u008c\u0001\u008c\u0001\u008c\u0001\u008c"+ + "\u0003\u008c\u0630\b\u008c\u0001\u008c\u0003\u008c\u0633\b\u008c\u0001"+ + "\u008c\u0003\u008c\u0636\b\u008c\u0001\u008c\u0001\u008c\u0001\u008d\u0001"+ + "\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008f\u0005"+ + "\u008f\u0641\b\u008f\n\u008f\f\u008f\u0644\t\u008f\u0001\u0090\u0001\u0090"+ + "\u0003\u0090\u0648\b\u0090\u0001\u0091\u0003\u0091\u064b\b\u0091\u0001"+ + "\u0091\u0003\u0091\u064e\b\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001"+ + "\u0091\u0001\u0091\u0003\u0091\u0655\b\u0091\u0001\u0091\u0003\u0091\u0658"+ + "\b\u0091\u0001\u0091\u0001\u0091\u0001\u0092\u0001\u0092\u0001\u0093\u0001"+ + "\u0093\u0001\u0093\u0001\u0093\u0001\u0094\u0005\u0094\u0663\b\u0094\n"+ + "\u0094\f\u0094\u0666\t\u0094\u0001\u0095\u0001\u0095\u0003\u0095\u066a"+ + "\b\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001"+ + "\u0096\u0003\u0096\u0672\b\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001"+ + "\u0097\u0001\u0097\u0001\u0098\u0001\u0098\u0001\u0098\u0003\u0098\u067c"+ + "\b\u0098\u0001\u0098\u0001\u0098\u0003\u0098\u0680\b\u0098\u0001\u0099"+ + "\u0001\u0099\u0003\u0099\u0684\b\u0099\u0001\u0099\u0001\u0099\u0003\u0099"+ + "\u0688\b\u0099\u0001\u0099\u0003\u0099\u068b\b\u0099\u0001\u0099\u0003"+ + "\u0099\u068e\b\u0099\u0001\u009a\u0001\u009a\u0001\u009a\u0003\u009a\u0693"+ + "\b\u009a\u0001\u009a\u0001\u009a\u0001\u009b\u0003\u009b\u0698\b\u009b"+ + "\u0001\u009b\u0003\u009b\u069b\b\u009b\u0001\u009b\u0001\u009b\u0001\u009b"+ + "\u0003\u009b\u06a0\b\u009b\u0001\u009b\u0003\u009b\u06a3\b\u009b\u0001"+ + "\u009b\u0003\u009b\u06a6\b\u009b\u0001\u009c\u0001\u009c\u0003\u009c\u06aa"+ + "\b\u009c\u0001\u009c\u0001\u009c\u0003\u009c\u06ae\b\u009c\u0001\u009c"+ + "\u0003\u009c\u06b1\b\u009c\u0001\u009c\u0001\u009c\u0001\u009d\u0003\u009d"+ + "\u06b6\b\u009d\u0001\u009d\u0003\u009d\u06b9\b\u009d\u0001\u009d\u0001"+ + "\u009d\u0003\u009d\u06bd\b\u009d\u0001\u009e\u0001\u009e\u0001\u009f\u0003"+ + "\u009f\u06c2\b\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u00a0\u0003"+ + "\u00a0\u06c8\b\u00a0\u0001\u00a0\u0003\u00a0\u06cb\b\u00a0\u0001\u00a0"+ + "\u0001\u00a0\u0001\u00a0\u0003\u00a0\u06d0\b\u00a0\u0001\u00a0\u0003\u00a0"+ + "\u06d3\b\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a1\u0001\u00a1\u0001\u00a1"+ + "\u0001\u00a1\u0001\u00a2\u0005\u00a2\u06dc\b\u00a2\n\u00a2\f\u00a2\u06df"+ + "\t\u00a2\u0001\u00a3\u0001\u00a3\u0003\u00a3\u06e3\b\u00a3\u0001\u00a4"+ + "\u0001\u00a4\u0001\u00a4\u0003\u00a4\u06e8\b\u00a4\u0001\u00a4\u0001\u00a4"+ + "\u0001\u00a4\u0003\u00a4\u06ed\b\u00a4\u0001\u00a5\u0003\u00a5\u06f0\b"+ + "\u00a5\u0001\u00a5\u0003\u00a5\u06f3\b\u00a5\u0001\u00a5\u0001\u00a5\u0003"+ + "\u00a5\u06f7\b\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001\u00a6\u0003"+ + "\u00a6\u06fd\b\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a7\u0001\u00a7\u0001"+ + "\u00a7\u0003\u00a7\u0704\b\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001"+ + "\u00a8\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00aa\u0001"+ + "\u00aa\u0001\u00aa\u0001\u00aa\u0003\u00aa\u0712\b\u00aa\u0001\u00ab\u0001"+ + "\u00ab\u0001\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0003"+ + "\u00ac\u071b\b\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0004\u00ad\u0720"+ + "\b\u00ad\u000b\u00ad\f\u00ad\u0721\u0001\u00ae\u0001\u00ae\u0001\u00ae"+ + "\u0003\u00ae\u0727\b\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af"+ + "\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b1\u0001\u00b1"+ + "\u0001\u00b1\u0001\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0005\u00b2"+ + "\u0738\b\u00b2\n\u00b2\f\u00b2\u073b\t\u00b2\u0001\u00b3\u0001\u00b3\u0001"+ + "\u00b3\u0005\u00b3\u0740\b\u00b3\n\u00b3\f\u00b3\u0743\t\u00b3\u0001\u00b4"+ + "\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4"+ + "\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4"+ + "\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0003\u00b4\u0755\b\u00b4\u0001\u00b4"+ + "\u0001\u00b4\u0001\u00b4\u0003\u00b4\u075a\b\u00b4\u0001\u00b5\u0004\u00b5"+ + "\u075d\b\u00b5\u000b\u00b5\f\u00b5\u075e\u0001\u00b6\u0001\u00b6\u0001"+ + "\u00b6\u0001\u00b6\u0003\u00b6\u0765\b\u00b6\u0001\u00b7\u0001\u00b7\u0001"+ + "\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0003\u00b8\u076d\b\u00b8\u0001"+ + "\u00b8\u0003\u00b8\u0770\b\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001"+ + "\u00b8\u0001\u00b8\u0001\u00b8\u0003\u00b8\u0778\b\u00b8\u0001\u00b8\u0001"+ + "\u00b8\u0001\u00b8\u0005\u00b8\u077d\b\u00b8\n\u00b8\f\u00b8\u0780\t\u00b8"+ + "\u0001\u00b9\u0001\u00b9\u0001\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb"+ + "\u0001\u00bb\u0001\u00bb\u0003\u00bb\u078a\b\u00bb\u0001\u00bc\u0001\u00bc"+ + "\u0003\u00bc\u078e\b\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bd\u0001\u00bd"+ + "\u0001\u00bd\u0005\u00bd\u0795\b\u00bd\n\u00bd\f\u00bd\u0798\t\u00bd\u0001"+ + "\u00be\u0001\u00be\u0001\u00be\u0003\u00be\u079d\b\u00be\u0001\u00be\u0001"+ + "\u00be\u0001\u00bf\u0003\u00bf\u07a2\b\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ + "\u00bf\u0003\u00bf\u07a7\b\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ + "\u00c1\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0003\u00c2\u07b1"+ + "\b\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0005\u00c3\u07b6\b\u00c3"+ + "\n\u00c3\f\u00c3\u07b9\t\u00c3\u0001\u00c4\u0001\u00c4\u0003\u00c4\u07bd"+ + "\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0004\u00c5\u07c2\b\u00c5"+ + "\u000b\u00c5\f\u00c5\u07c3\u0001\u00c6\u0004\u00c6\u07c7\b\u00c6\u000b"+ + "\u00c6\f\u00c6\u07c8\u0001\u00c7\u0001\u00c7\u0003\u00c7\u07cd\b\u00c7"+ + "\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0003\u00c7\u07d2\b\u00c7\u0001\u00c7"+ + "\u0001\u00c7\u0001\u00c7\u0003\u00c7\u07d7\b\u00c7\u0001\u00c7\u0001\u00c7"+ + "\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0003\u00c7\u07df\b\u00c7"+ + "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+ + "\u0003\u00c8\u07e7\b\u00c8\u0001\u00c9\u0003\u00c9\u07ea\b\u00c9\u0001"+ + "\u00c9\u0001\u00c9\u0003\u00c9\u07ee\b\u00c9\u0001\u00ca\u0001\u00ca\u0001"+ + "\u00ca\u0005\u00ca\u07f3\b\u00ca\n\u00ca\f\u00ca\u07f6\t\u00ca\u0001\u00cb"+ + "\u0003\u00cb\u07f9\b\u00cb\u0001\u00cb\u0001\u00cb\u0003\u00cb\u07fd\b"+ + "\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd\u0001\u00cd\u0003"+ + "\u00cd\u0804\b\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001"+ + "\u00ce\u0003\u00ce\u080b\b\u00ce\u0001\u00ce\u0003\u00ce\u080e\b\u00ce"+ + "\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0003\u00ce\u0813\b\u00ce\u0001\u00cf"+ + "\u0004\u00cf\u0816\b\u00cf\u000b\u00cf\f\u00cf\u0817\u0001\u00d0\u0001"+ + "\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0003"+ + "\u00d1\u0821\b\u00d1\u0003\u00d1\u0823\b\u00d1\u0001\u00d1\u0001\u00d1"+ + "\u0001\u00d2\u0001\u00d2\u0003\u00d2\u0829\b\u00d2\u0001\u00d2\u0001\u00d2"+ + "\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+ + "\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+ + "\u0003\u00d2\u0839\b\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ + "\u0001\u00d3\u0003\u00d3\u0840\b\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4"+ + "\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+ + "\u0001\u00d4\u0001\u00d4\u0003\u00d4\u084d\b\u00d4\u0001\u00d5\u0001\u00d5"+ + "\u0003\u00d5\u0851\b\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6\u0001\u00d6"+ + "\u0001\u00d6\u0005\u00d6\u0858\b\u00d6\n\u00d6\f\u00d6\u085b\t\u00d6\u0001"+ + "\u00d6\u0003\u00d6\u085e\b\u00d6\u0001\u00d7\u0001\u00d7\u0001\u00d8\u0001"+ + "\u00d8\u0001\u00d8\u0003\u00d8\u0865\b\u00d8\u0001\u00d8\u0001\u00d8\u0001"+ + "\u00d9\u0001\u00d9\u0001\u00d9\u0005\u00d9\u086c\b\u00d9\n\u00d9\f\u00d9"+ + "\u086f\t\u00d9\u0001\u00d9\u0003\u00d9\u0872\b\u00d9\u0001\u00da\u0001"+ + "\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db\u0001\u00db\u0001"+ + "\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001"+ + "\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001"+ + "\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001"+ + "\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001"+ + "\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0003"+ + "\u00db\u0899\b\u00db\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+ + "\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+ + "\u00dc\u0001\u00dc\u0003\u00dc\u08a7\b\u00dc\u0001\u00dd\u0001\u00dd\u0001"+ + "\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001"+ + "\u00dd\u0001\u00dd\u0001\u00dd\u0003\u00dd\u08b4\b\u00dd\u0001\u00de\u0001"+ + "\u00de\u0003\u00de\u08b8\b\u00de\u0001\u00de\u0003\u00de\u08bb\b\u00de"+ + "\u0001\u00de\u0001\u00de\u0001\u00df\u0003\u00df\u08c0\b\u00df\u0001\u00df"+ + "\u0001\u00df\u0003\u00df\u08c4\b\u00df\u0001\u00df\u0003\u00df\u08c7\b"+ + "\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0003"+ + "\u00df\u08ce\b\u00df\u0001\u00e0\u0001\u00e0\u0003\u00e0\u08d2\b\u00e0"+ + "\u0001\u00e0\u0001\u00e0\u0003\u00e0\u08d6\b\u00e0\u0001\u00e1\u0001\u00e1"+ + "\u0001\u00e1\u0005\u00e1\u08db\b\u00e1\n\u00e1\f\u00e1\u08de\t\u00e1\u0001"+ + "\u00e2\u0001\u00e2\u0001\u00e2\u0003\u00e2\u08e3\b\u00e2\u0003\u00e2\u08e5"+ + "\b\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001"+ + "\u00e4\u0001\u00e4\u0005\u00e4\u08ee\b\u00e4\n\u00e4\f\u00e4\u08f1\t\u00e4"+ + "\u0001\u00e5\u0003\u00e5\u08f4\b\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5"+ + "\u08f8\b\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5\u08fd\b"+ + "\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0003"+ + "\u00e6\u0904\b\u00e6\u0003\u00e6\u0906\b\u00e6\u0001\u00e7\u0001\u00e7"+ + "\u0001\u00e7\u0003\u00e7\u090b\b\u00e7\u0001\u00e7\u0001\u00e7\u0003\u00e7"+ + "\u090f\b\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e9"+ + "\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0001\u00ea\u0001\u00ea"+ + "\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0003\u00ea"+ + "\u0921\b\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0005\u00eb\u0926\b"+ + "\u00eb\n\u00eb\f\u00eb\u0929\t\u00eb\u0001\u00ec\u0001\u00ec\u0001\u00ec"+ + "\u0003\u00ec\u092e\b\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed"+ + "\u0001\u00ee\u0001\u00ee\u0003\u00ee\u0936\b\u00ee\u0001\u00ee\u0001\u00ee"+ + "\u0001\u00ee\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0005\u00ef\u093e\b\u00ef"+ + "\n\u00ef\f\u00ef\u0941\t\u00ef\u0001\u00f0\u0001\u00f0\u0003\u00f0\u0945"+ + "\b\u00f0\u0001\u00f0\u0003\u00f0\u0948\b\u00f0\u0001\u00f1\u0004\u00f1"+ + "\u094b\b\u00f1\u000b\u00f1\f\u00f1\u094c\u0001\u00f2\u0001\u00f2\u0001"+ + "\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0003\u00f2\u0956"+ + "\b\u00f2\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0003\u00f3\u095c"+ + "\b\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0001"+ + "\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001"+ + "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0005\u00f5\u096e"+ + "\b\u00f5\n\u00f5\f\u00f5\u0971\t\u00f5\u0001\u00f5\u0005\u00f5\u0974\b"+ + "\u00f5\n\u00f5\f\u00f5\u0977\t\u00f5\u0001\u00f6\u0003\u00f6\u097a\b\u00f6"+ + "\u0001\u00f6\u0001\u00f6\u0003\u00f6\u097e\b\u00f6\u0001\u00f7\u0001\u00f7"+ + "\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0003\u00f7\u0986\b\u00f7"+ + "\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8"+ + "\u0001\u00f8\u0001\u00f8\u0003\u00f8\u0990\b\u00f8\u0003\u00f8\u0992\b"+ + "\u00f8\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa\u0001"+ + "\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fc\u0001"+ + "\u00fc\u0001\u00fc\u0001\u00fd\u0001\u00fd\u0003\u00fd\u09a3\b\u00fd\u0001"+ + "\u00fd\u0001\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0005\u00fe\u09aa"+ + "\b\u00fe\n\u00fe\f\u00fe\u09ad\t\u00fe\u0001\u00ff\u0003\u00ff\u09b0\b"+ + "\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0003\u00ff\u09b5\b\u00ff\u0001"+ + "\u0100\u0001\u0100\u0003\u0100\u09b9\b\u0100\u0001\u0101\u0004\u0101\u09bc"+ + "\b\u0101\u000b\u0101\f\u0101\u09bd\u0001\u0102\u0001\u0102\u0001\u0102"+ + "\u0001\u0102\u0001\u0103\u0004\u0103\u09c5\b\u0103\u000b\u0103\f\u0103"+ + "\u09c6\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0105\u0001\u0105\u0001"+ + "\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ + "\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0003"+ + "\u0105\u09da\b\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ + "\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0003\u0105\u09e5"+ + "\b\u0105\u0005\u0105\u09e7\b\u0105\n\u0105\f\u0105\u09ea\t\u0105\u0001"+ + "\u0106\u0001\u0106\u0003\u0106\u09ee\b\u0106\u0001\u0106\u0003\u0106\u09f1"+ + "\b\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001\u0107\u0003\u0107\u09f7"+ + "\b\u0107\u0001\u0107\u0001\u0107\u0003\u0107\u09fb\b\u0107\u0001\u0108"+ + "\u0001\u0108\u0001\u0109\u0001\u0109\u0003\u0109\u0a01\b\u0109\u0001\u0109"+ + "\u0001\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0005\u010a\u0a08\b\u010a"+ + "\n\u010a\f\u010a\u0a0b\t\u010a\u0001\u010b\u0001\u010b\u0001\u010b\u0001"+ + "\u010b\u0003\u010b\u0a11\b\u010b\u0001\u010b\u0001\u010b\u0003\u010b\u0a15"+ + "\b\u010b\u0001\u010c\u0004\u010c\u0a18\b\u010c\u000b\u010c\f\u010c\u0a19"+ + "\u0001\u010d\u0003\u010d\u0a1d\b\u010d\u0001\u010d\u0001\u010d\u0003\u010d"+ + "\u0a21\b\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e"+ + "\u0001\u010e\u0003\u010e\u0a29\b\u010e\u0003\u010e\u0a2b\b\u010e\u0001"+ + "\u010e\u0001\u010e\u0001\u010f\u0001\u010f\u0001\u010f\u0005\u010f\u0a32"+ + "\b\u010f\n\u010f\f\u010f\u0a35\t\u010f\u0001\u0110\u0003\u0110\u0a38\b"+ + "\u0110\u0001\u0110\u0003\u0110\u0a3b\b\u0110\u0001\u0110\u0001\u0110\u0001"+ + "\u0110\u0001\u0110\u0003\u0110\u0a41\b\u0110\u0001\u0111\u0004\u0111\u0a44"+ + "\b\u0111\u000b\u0111\f\u0111\u0a45\u0001\u0112\u0001\u0112\u0001\u0112"+ + "\u0001\u0112\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+ + "\u0001\u0113\u0001\u0114\u0001\u0114\u0001\u0114\u0005\u0114\u0a55\b\u0114"+ + "\n\u0114\f\u0114\u0a58\t\u0114\u0001\u0114\u0003\u0114\u0a5b\b\u0114\u0001"+ + "\u0115\u0001\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116\u0001"+ + "\u0117\u0001\u0117\u0001\u0118\u0001\u0118\u0001\u0119\u0001\u0119\u0001"+ + "\u0119\u0001\u011a\u0001\u011a\u0001\u011a\u0005\u011a\u0a6d\b\u011a\n"+ + "\u011a\f\u011a\u0a70\t\u011a\u0001\u011b\u0001\u011b\u0001\u011b\u0001"+ + "\u011b\u0001\u011b\u0001\u011b\u0003\u011b\u0a78\b\u011b\u0001\u011b\u0003"+ + "\u011b\u0a7b\b\u011b\u0001\u011c\u0001\u011c\u0001\u011c\u0005\u011c\u0a80"+ + "\b\u011c\n\u011c\f\u011c\u0a83\t\u011c\u0001\u011d\u0001\u011d\u0001\u011e"+ + "\u0001\u011e\u0001\u011e\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u0120"+ + "\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0121\u0001\u0121\u0001\u0121"+ + "\u0001\u0121\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0123"+ + "\u0001\u0123\u0001\u0123\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124"+ + "\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0126"+ + "\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0127\u0001\u0127\u0001\u0127"+ + "\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0129\u0001\u0129\u0001\u0129"+ + "\u0001\u012a\u0001\u012a\u0003\u012a\u0ab4\b\u012a\u0001\u012a\u0001\u012a"+ + "\u0001\u012a\u0003\u012a\u0ab9\b\u012a\u0001\u012b\u0001\u012b\u0003\u012b"+ + "\u0abd\b\u012b\u0001\u012c\u0001\u012c\u0003\u012c\u0ac1\b\u012c\u0001"+ + "\u012d\u0001\u012d\u0004\u012d\u0ac5\b\u012d\u000b\u012d\f\u012d\u0ac6"+ + "\u0001\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0003\u012f\u0acd\b\u012f"+ + "\u0001\u0130\u0001\u0130\u0004\u0130\u0ad1\b\u0130\u000b\u0130\f\u0130"+ + "\u0ad2\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0003\u0131\u0ad9"+ + "\b\u0131\u0001\u0132\u0003\u0132\u0adc\b\u0132\u0001\u0132\u0001\u0132"+ + "\u0003\u0132\u0ae0\b\u0132\u0001\u0132\u0003\u0132\u0ae3\b\u0132\u0001"+ + "\u0133\u0001\u0133\u0001\u0134\u0001\u0134\u0001\u0135\u0001\u0135\u0001"+ + "\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u0aee\b\u0136\u0001\u0137\u0001"+ + "\u0137\u0004\u0137\u0af2\b\u0137\u000b\u0137\f\u0137\u0af3\u0001\u0137"+ + "\u0001\u0137\u0001\u0137\u0004\u0137\u0af9\b\u0137\u000b\u0137\f\u0137"+ + "\u0afa\u0001\u0137\u0003\u0137\u0afe\b\u0137\u0001\u0138\u0001\u0138\u0005"+ + "\u0138\u0b02\b\u0138\n\u0138\f\u0138\u0b05\t\u0138\u0001\u0138\u0001\u0138"+ + "\u0001\u0138\u0005\u0138\u0b0a\b\u0138\n\u0138\f\u0138\u0b0d\t\u0138\u0001"+ + "\u0138\u0003\u0138\u0b10\b\u0138\u0001\u0139\u0001\u0139\u0001\u0139\u0001"+ + "\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0003\u0139\u0b1a"+ + "\b\u0139\u0001\u0139\u0001\u0139\u0005\u0139\u0b1e\b\u0139\n\u0139\f\u0139"+ + "\u0b21\t\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139"+ + "\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0003\u0139\u0b2c\b\u0139"+ + "\u0001\u0139\u0001\u0139\u0005\u0139\u0b30\b\u0139\n\u0139\f\u0139\u0b33"+ + "\t\u0139\u0001\u0139\u0003\u0139\u0b36\b\u0139\u0001\u0139\u0001\u0975"+ + "\u0003b\u0170\u020a\u013a\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012"+ + "\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\"+ + "^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090"+ + "\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8"+ + "\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0"+ + "\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8"+ + "\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0"+ + "\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108"+ + "\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120"+ + "\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0138"+ + "\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a\u014c\u014e\u0150"+ + "\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168"+ + "\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a\u017c\u017e\u0180"+ + "\u0182\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192\u0194\u0196\u0198"+ + "\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0"+ + "\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u01c8"+ + "\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\u01dc\u01de\u01e0"+ + "\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f0\u01f2\u01f4\u01f6\u01f8"+ + "\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a\u020c\u020e\u0210"+ + "\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222\u0224\u0226\u0228"+ + "\u022a\u022c\u022e\u0230\u0232\u0234\u0236\u0238\u023a\u023c\u023e\u0240"+ + "\u0242\u0244\u0246\u0248\u024a\u024c\u024e\u0250\u0252\u0254\u0256\u0258"+ + "\u025a\u025c\u025e\u0260\u0262\u0264\u0266\u0268\u026a\u026c\u026e\u0270"+ + "\u0272\u0000\u0016\u0001\u0000\u001b\u001c\u0001\u0000>?\u0001\u0000a"+ + "g\u0001\u0000hk\u0001\u0000lm\u0001\u0000tu\u0002\u0000aemp\u0006\u0000"+ + "\u0006\u0006\r\r\u0010\u0010\u001b\u001d$$;;\u0001\u0000\'(\u0001\u0000"+ + "\u0097\u0098\u0001\u000056\u0001\u000013\u0001\u0000KL\u0003\u0000\u0014"+ + "\u0014\u0016\u0018OO\u0001\u0000MN\u0005\u0000\u008a\u008a\u0091\u0093"+ + "\u0098\u0099\u009c\u009c\u00a4\u00a5\u0001\u0000\u0087\u0088\u0010\u0000"+ + "\u0001\u0002\u0005\u0006\b\b\n\u000b\u000e\u000e\u0011\u0011\u0014\u001a"+ + "\u001d!))/:\u0338\u0001\u0000\u0000"+ + "\u0000@\u033a\u0001\u0000\u0000\u0000B\u033e\u0001\u0000\u0000\u0000D"+ + "\u0342\u0001\u0000\u0000\u0000F\u0344\u0001\u0000\u0000\u0000H\u0348\u0001"+ + "\u0000\u0000\u0000J\u034b\u0001\u0000\u0000\u0000L\u034e\u0001\u0000\u0000"+ + "\u0000N\u0354\u0001\u0000\u0000\u0000P\u0358\u0001\u0000\u0000\u0000R"+ + "\u035e\u0001\u0000\u0000\u0000T\u0368\u0001\u0000\u0000\u0000V\u036f\u0001"+ + "\u0000\u0000\u0000X\u0371\u0001\u0000\u0000\u0000Z\u037a\u0001\u0000\u0000"+ + "\u0000\\\u0380\u0001\u0000\u0000\u0000^\u0384\u0001\u0000\u0000\u0000"+ + "`\u0389\u0001\u0000\u0000\u0000b\u0397\u0001\u0000\u0000\u0000d\u03c2"+ + "\u0001\u0000\u0000\u0000f\u03c4\u0001\u0000\u0000\u0000h\u03c8\u0001\u0000"+ + "\u0000\u0000j\u03cd\u0001\u0000\u0000\u0000l\u03cf\u0001\u0000\u0000\u0000"+ + "n\u03d1\u0001\u0000\u0000\u0000p\u03d9\u0001\u0000\u0000\u0000r\u03db"+ + "\u0001\u0000\u0000\u0000t\u03e9\u0001\u0000\u0000\u0000v\u03eb\u0001\u0000"+ + "\u0000\u0000x\u03ed\u0001\u0000\u0000\u0000z\u03f2\u0001\u0000\u0000\u0000"+ + "|\u03f4\u0001\u0000\u0000\u0000~\u03f9\u0001\u0000\u0000\u0000\u0080\u0405"+ + "\u0001\u0000\u0000\u0000\u0082\u0407\u0001\u0000\u0000\u0000\u0084\u0410"+ + "\u0001\u0000\u0000\u0000\u0086\u0412\u0001\u0000\u0000\u0000\u0088\u0416"+ + "\u0001\u0000\u0000\u0000\u008a\u041e\u0001\u0000\u0000\u0000\u008c\u0426"+ + "\u0001\u0000\u0000\u0000\u008e\u0429\u0001\u0000\u0000\u0000\u0090\u0433"+ + "\u0001\u0000\u0000\u0000\u0092\u0435\u0001\u0000\u0000\u0000\u0094\u043b"+ + "\u0001\u0000\u0000\u0000\u0096\u0441\u0001\u0000\u0000\u0000\u0098\u0445"+ + "\u0001\u0000\u0000\u0000\u009a\u044d\u0001\u0000\u0000\u0000\u009c\u045e"+ + "\u0001\u0000\u0000\u0000\u009e\u0464\u0001\u0000\u0000\u0000\u00a0\u0469"+ + "\u0001\u0000\u0000\u0000\u00a2\u046b\u0001\u0000\u0000\u0000\u00a4\u0472"+ + "\u0001\u0000\u0000\u0000\u00a6\u047a\u0001\u0000\u0000\u0000\u00a8\u047c"+ + "\u0001\u0000\u0000\u0000\u00aa\u0486\u0001\u0000\u0000\u0000\u00ac\u0489"+ + "\u0001\u0000\u0000\u0000\u00ae\u0491\u0001\u0000\u0000\u0000\u00b0\u0499"+ + "\u0001\u0000\u0000\u0000\u00b2\u049d\u0001\u0000\u0000\u0000\u00b4\u04a0"+ + "\u0001\u0000\u0000\u0000\u00b6\u04b4\u0001\u0000\u0000\u0000\u00b8\u04bb"+ + "\u0001\u0000\u0000\u0000\u00ba\u04ca\u0001\u0000\u0000\u0000\u00bc\u04cd"+ + "\u0001\u0000\u0000\u0000\u00be\u04d7\u0001\u0000\u0000\u0000\u00c0\u04e3"+ + "\u0001\u0000\u0000\u0000\u00c2\u04e7\u0001\u0000\u0000\u0000\u00c4\u04f4"+ + "\u0001\u0000\u0000\u0000\u00c6\u04fc\u0001\u0000\u0000\u0000\u00c8\u0503"+ + "\u0001\u0000\u0000\u0000\u00ca\u0511\u0001\u0000\u0000\u0000\u00cc\u051a"+ + "\u0001\u0000\u0000\u0000\u00ce\u0523\u0001\u0000\u0000\u0000\u00d0\u052f"+ + "\u0001\u0000\u0000\u0000\u00d2\u0531\u0001\u0000\u0000\u0000\u00d4\u0534"+ + "\u0001\u0000\u0000\u0000\u00d6\u0541\u0001\u0000\u0000\u0000\u00d8\u054a"+ + "\u0001\u0000\u0000\u0000\u00da\u054c\u0001\u0000\u0000\u0000\u00dc\u0556"+ + "\u0001\u0000\u0000\u0000\u00de\u055c\u0001\u0000\u0000\u0000\u00e0\u055e"+ + "\u0001\u0000\u0000\u0000\u00e2\u0564\u0001\u0000\u0000\u0000\u00e4\u056d"+ + "\u0001\u0000\u0000\u0000\u00e6\u057a\u0001\u0000\u0000\u0000\u00e8\u057c"+ + "\u0001\u0000\u0000\u0000\u00ea\u057e\u0001\u0000\u0000\u0000\u00ec\u0582"+ + "\u0001\u0000\u0000\u0000\u00ee\u058c\u0001\u0000\u0000\u0000\u00f0\u05a0"+ + "\u0001\u0000\u0000\u0000\u00f2\u05a7\u0001\u0000\u0000\u0000\u00f4\u05aa"+ + "\u0001\u0000\u0000\u0000\u00f6\u05b2\u0001\u0000\u0000\u0000\u00f8\u05c3"+ + "\u0001\u0000\u0000\u0000\u00fa\u05c5\u0001\u0000\u0000\u0000\u00fc\u05c7"+ + "\u0001\u0000\u0000\u0000\u00fe\u05c9\u0001\u0000\u0000\u0000\u0100\u05d7"+ + "\u0001\u0000\u0000\u0000\u0102\u05de\u0001\u0000\u0000\u0000\u0104\u05e1"+ + "\u0001\u0000\u0000\u0000\u0106\u05e6\u0001\u0000\u0000\u0000\u0108\u05ee"+ + "\u0001\u0000\u0000\u0000\u010a\u05f2\u0001\u0000\u0000\u0000\u010c\u05f8"+ + "\u0001\u0000\u0000\u0000\u010e\u05fb\u0001\u0000\u0000\u0000\u0110\u060d"+ + "\u0001\u0000\u0000\u0000\u0112\u060f\u0001\u0000\u0000\u0000\u0114\u0616"+ + "\u0001\u0000\u0000\u0000\u0116\u061b\u0001\u0000\u0000\u0000\u0118\u061e"+ + "\u0001\u0000\u0000\u0000\u011a\u0639\u0001\u0000\u0000\u0000\u011c\u063b"+ + "\u0001\u0000\u0000\u0000\u011e\u0642\u0001\u0000\u0000\u0000\u0120\u0647"+ + "\u0001\u0000\u0000\u0000\u0122\u064a\u0001\u0000\u0000\u0000\u0124\u065b"+ + "\u0001\u0000\u0000\u0000\u0126\u065d\u0001\u0000\u0000\u0000\u0128\u0664"+ + "\u0001\u0000\u0000\u0000\u012a\u0669\u0001\u0000\u0000\u0000\u012c\u0671"+ + "\u0001\u0000\u0000\u0000\u012e\u0673\u0001\u0000\u0000\u0000\u0130\u0678"+ + "\u0001\u0000\u0000\u0000\u0132\u0681\u0001\u0000\u0000\u0000\u0134\u068f"+ + "\u0001\u0000\u0000\u0000\u0136\u0697\u0001\u0000\u0000\u0000\u0138\u06a7"+ + "\u0001\u0000\u0000\u0000\u013a\u06b5\u0001\u0000\u0000\u0000\u013c\u06be"+ + "\u0001\u0000\u0000\u0000\u013e\u06c1\u0001\u0000\u0000\u0000\u0140\u06c7"+ + "\u0001\u0000\u0000\u0000\u0142\u06d6\u0001\u0000\u0000\u0000\u0144\u06dd"+ + "\u0001\u0000\u0000\u0000\u0146\u06e2\u0001\u0000\u0000\u0000\u0148\u06e4"+ + "\u0001\u0000\u0000\u0000\u014a\u06ef\u0001\u0000\u0000\u0000\u014c\u06fa"+ + "\u0001\u0000\u0000\u0000\u014e\u0703\u0001\u0000\u0000\u0000\u0150\u0705"+ + "\u0001\u0000\u0000\u0000\u0152\u0709\u0001\u0000\u0000\u0000\u0154\u070d"+ + "\u0001\u0000\u0000\u0000\u0156\u0713\u0001\u0000\u0000\u0000\u0158\u0716"+ + "\u0001\u0000\u0000\u0000\u015a\u071f\u0001\u0000\u0000\u0000\u015c\u0726"+ + "\u0001\u0000\u0000\u0000\u015e\u0728\u0001\u0000\u0000\u0000\u0160\u072c"+ + "\u0001\u0000\u0000\u0000\u0162\u0730\u0001\u0000\u0000\u0000\u0164\u0734"+ + "\u0001\u0000\u0000\u0000\u0166\u073c\u0001\u0000\u0000\u0000\u0168\u0759"+ + "\u0001\u0000\u0000\u0000\u016a\u075c\u0001\u0000\u0000\u0000\u016c\u0760"+ + "\u0001\u0000\u0000\u0000\u016e\u0766\u0001\u0000\u0000\u0000\u0170\u0777"+ + "\u0001\u0000\u0000\u0000\u0172\u0781\u0001\u0000\u0000\u0000\u0174\u0783"+ + "\u0001\u0000\u0000\u0000\u0176\u0789\u0001\u0000\u0000\u0000\u0178\u078b"+ + "\u0001\u0000\u0000\u0000\u017a\u0791\u0001\u0000\u0000\u0000\u017c\u079c"+ + "\u0001\u0000\u0000\u0000\u017e\u07a1\u0001\u0000\u0000\u0000\u0180\u07a8"+ + "\u0001\u0000\u0000\u0000\u0182\u07ab\u0001\u0000\u0000\u0000\u0184\u07ad"+ + "\u0001\u0000\u0000\u0000\u0186\u07b2\u0001\u0000\u0000\u0000\u0188\u07ba"+ + "\u0001\u0000\u0000\u0000\u018a\u07c1\u0001\u0000\u0000\u0000\u018c\u07c6"+ + "\u0001\u0000\u0000\u0000\u018e\u07de\u0001\u0000\u0000\u0000\u0190\u07e6"+ + "\u0001\u0000\u0000\u0000\u0192\u07e9\u0001\u0000\u0000\u0000\u0194\u07ef"+ + "\u0001\u0000\u0000\u0000\u0196\u07fc\u0001\u0000\u0000\u0000\u0198\u07fe"+ + "\u0001\u0000\u0000\u0000\u019a\u0801\u0001\u0000\u0000\u0000\u019c\u0812"+ + "\u0001\u0000\u0000\u0000\u019e\u0815\u0001\u0000\u0000\u0000\u01a0\u0819"+ + "\u0001\u0000\u0000\u0000\u01a2\u0822\u0001\u0000\u0000\u0000\u01a4\u0838"+ + "\u0001\u0000\u0000\u0000\u01a6\u083a\u0001\u0000\u0000\u0000\u01a8\u084c"+ + "\u0001\u0000\u0000\u0000\u01aa\u084e\u0001\u0000\u0000\u0000\u01ac\u0854"+ + "\u0001\u0000\u0000\u0000\u01ae\u085f\u0001\u0000\u0000\u0000\u01b0\u0861"+ + "\u0001\u0000\u0000\u0000\u01b2\u0868\u0001\u0000\u0000\u0000\u01b4\u0873"+ + "\u0001\u0000\u0000\u0000\u01b6\u0898\u0001\u0000\u0000\u0000\u01b8\u08a6"+ + "\u0001\u0000\u0000\u0000\u01ba\u08b3\u0001\u0000\u0000\u0000\u01bc\u08b5"+ + "\u0001\u0000\u0000\u0000\u01be\u08cd\u0001\u0000\u0000\u0000\u01c0\u08d5"+ + "\u0001\u0000\u0000\u0000\u01c2\u08d7\u0001\u0000\u0000\u0000\u01c4\u08df"+ + "\u0001\u0000\u0000\u0000\u01c6\u08e6\u0001\u0000\u0000\u0000\u01c8\u08ea"+ + "\u0001\u0000\u0000\u0000\u01ca\u08f3\u0001\u0000\u0000\u0000\u01cc\u0905"+ + "\u0001\u0000\u0000\u0000\u01ce\u0907\u0001\u0000\u0000\u0000\u01d0\u0910"+ + "\u0001\u0000\u0000\u0000\u01d2\u0914\u0001\u0000\u0000\u0000\u01d4\u0920"+ + "\u0001\u0000\u0000\u0000\u01d6\u0922\u0001\u0000\u0000\u0000\u01d8\u092d"+ + "\u0001\u0000\u0000\u0000\u01da\u0931\u0001\u0000\u0000\u0000\u01dc\u0933"+ + "\u0001\u0000\u0000\u0000\u01de\u093a\u0001\u0000\u0000\u0000\u01e0\u0947"+ + "\u0001\u0000\u0000\u0000\u01e2\u094a\u0001\u0000\u0000\u0000\u01e4\u0955"+ + "\u0001\u0000\u0000\u0000\u01e6\u0957\u0001\u0000\u0000\u0000\u01e8\u0960"+ + "\u0001\u0000\u0000\u0000\u01ea\u0965\u0001\u0000\u0000\u0000\u01ec\u097d"+ + "\u0001\u0000\u0000\u0000\u01ee\u097f\u0001\u0000\u0000\u0000\u01f0\u0987"+ + "\u0001\u0000\u0000\u0000\u01f2\u0993\u0001\u0000\u0000\u0000\u01f4\u0996"+ + "\u0001\u0000\u0000\u0000\u01f6\u099a\u0001\u0000\u0000\u0000\u01f8\u099d"+ + "\u0001\u0000\u0000\u0000\u01fa\u09a0\u0001\u0000\u0000\u0000\u01fc\u09a6"+ + "\u0001\u0000\u0000\u0000\u01fe\u09af\u0001\u0000\u0000\u0000\u0200\u09b6"+ + "\u0001\u0000\u0000\u0000\u0202\u09bb\u0001\u0000\u0000\u0000\u0204\u09bf"+ + "\u0001\u0000\u0000\u0000\u0206\u09c4\u0001\u0000\u0000\u0000\u0208\u09c8"+ + "\u0001\u0000\u0000\u0000\u020a\u09d9\u0001\u0000\u0000\u0000\u020c\u09eb"+ + "\u0001\u0000\u0000\u0000\u020e\u09f4\u0001\u0000\u0000\u0000\u0210\u09fc"+ + "\u0001\u0000\u0000\u0000\u0212\u09fe\u0001\u0000\u0000\u0000\u0214\u0a04"+ + "\u0001\u0000\u0000\u0000\u0216\u0a10\u0001\u0000\u0000\u0000\u0218\u0a17"+ + "\u0001\u0000\u0000\u0000\u021a\u0a1c\u0001\u0000\u0000\u0000\u021c\u0a25"+ + "\u0001\u0000\u0000\u0000\u021e\u0a2e\u0001\u0000\u0000\u0000\u0220\u0a40"+ + "\u0001\u0000\u0000\u0000\u0222\u0a43\u0001\u0000\u0000\u0000\u0224\u0a47"+ + "\u0001\u0000\u0000\u0000\u0226\u0a4b\u0001\u0000\u0000\u0000\u0228\u0a51"+ + "\u0001\u0000\u0000\u0000\u022a\u0a5c\u0001\u0000\u0000\u0000\u022c\u0a5f"+ + "\u0001\u0000\u0000\u0000\u022e\u0a62\u0001\u0000\u0000\u0000\u0230\u0a64"+ + "\u0001\u0000\u0000\u0000\u0232\u0a66\u0001\u0000\u0000\u0000\u0234\u0a69"+ + "\u0001\u0000\u0000\u0000\u0236\u0a7a\u0001\u0000\u0000\u0000\u0238\u0a7c"+ + "\u0001\u0000\u0000\u0000\u023a\u0a84\u0001\u0000\u0000\u0000\u023c\u0a86"+ + "\u0001\u0000\u0000\u0000\u023e\u0a89\u0001\u0000\u0000\u0000\u0240\u0a8c"+ + "\u0001\u0000\u0000\u0000\u0242\u0a90\u0001\u0000\u0000\u0000\u0244\u0a94"+ + "\u0001\u0000\u0000\u0000\u0246\u0a98\u0001\u0000\u0000\u0000\u0248\u0a9b"+ + "\u0001\u0000\u0000\u0000\u024a\u0a9f\u0001\u0000\u0000\u0000\u024c\u0aa4"+ + "\u0001\u0000\u0000\u0000\u024e\u0aa8\u0001\u0000\u0000\u0000\u0250\u0aab"+ + "\u0001\u0000\u0000\u0000\u0252\u0aae\u0001\u0000\u0000\u0000\u0254\u0ab8"+ + "\u0001\u0000\u0000\u0000\u0256\u0abc\u0001\u0000\u0000\u0000\u0258\u0ac0"+ + "\u0001\u0000\u0000\u0000\u025a\u0ac4\u0001\u0000\u0000\u0000\u025c\u0ac8"+ + "\u0001\u0000\u0000\u0000\u025e\u0acc\u0001\u0000\u0000\u0000\u0260\u0ad0"+ + "\u0001\u0000\u0000\u0000\u0262\u0ad8\u0001\u0000\u0000\u0000\u0264\u0ae2"+ + "\u0001\u0000\u0000\u0000\u0266\u0ae4\u0001\u0000\u0000\u0000\u0268\u0ae6"+ + "\u0001\u0000\u0000\u0000\u026a\u0ae8\u0001\u0000\u0000\u0000\u026c\u0aed"+ + "\u0001\u0000\u0000\u0000\u026e\u0afd\u0001\u0000\u0000\u0000\u0270\u0b0f"+ + "\u0001\u0000\u0000\u0000\u0272\u0b35\u0001\u0000\u0000\u0000\u0274\u0276"+ + "\u0003\u0004\u0002\u0000\u0275\u0274\u0001\u0000\u0000\u0000\u0275\u0276"+ + "\u0001\u0000\u0000\u0000\u0276\u0277\u0001\u0000\u0000\u0000\u0277\u0278"+ + "\u0005\u0000\u0000\u0001\u0278\u0001\u0001\u0000\u0000\u0000\u0279\u0282"+ + "\u0003\u0006\u0003\u0000\u027a\u0282\u0003\u009cN\u0000\u027b\u0282\u0003"+ + "\u0016\u000b\u0000\u027c\u0282\u00038\u001c\u0000\u027d\u0282\u0003>\u001f"+ + "\u0000\u027e\u0282\u0003J%\u0000\u027f\u0282\u0003L&\u0000\u0280\u0282"+ + "\u0003\u0192\u00c9\u0000\u0281\u0279\u0001\u0000\u0000\u0000\u0281\u027a"+ + "\u0001\u0000\u0000\u0000\u0281\u027b\u0001\u0000\u0000\u0000\u0281\u027c"+ + "\u0001\u0000\u0000\u0000\u0281\u027d\u0001\u0000\u0000\u0000\u0281\u027e"+ + "\u0001\u0000\u0000\u0000\u0281\u027f\u0001\u0000\u0000\u0000\u0281\u0280"+ + "\u0001\u0000\u0000\u0000\u0282\u0284\u0001\u0000\u0000\u0000\u0283\u0285"+ + "\u0005\u0093\u0000\u0000\u0284\u0283\u0001\u0000\u0000\u0000\u0284\u0285"+ + "\u0001\u0000\u0000\u0000\u0285\u0288\u0001\u0000\u0000\u0000\u0286\u0288"+ + "\u0003V+\u0000\u0287\u0281\u0001\u0000\u0000\u0000\u0287\u0286\u0001\u0000"+ + "\u0000\u0000\u0288\u0003\u0001\u0000\u0000\u0000\u0289\u028a\u0004\u0002"+ + "\u0000\u0001\u028a\u028b\u0003\u0002\u0001\u0000\u028b\u028c\u0006\u0002"+ + "\uffff\uffff\u0000\u028c\u028e\u0001\u0000\u0000\u0000\u028d\u0289\u0001"+ + "\u0000\u0000\u0000\u028e\u028f\u0001\u0000\u0000\u0000\u028f\u028d\u0001"+ + "\u0000\u0000\u0000\u028f\u0290\u0001\u0000\u0000\u0000\u0290\u0005\u0001"+ + "\u0000\u0000\u0000\u0291\u0295\u0003\b\u0004\u0000\u0292\u0295\u0003\n"+ + "\u0005\u0000\u0293\u0295\u0003\u0014\n\u0000\u0294\u0291\u0001\u0000\u0000"+ + "\u0000\u0294\u0292\u0001\u0000\u0000\u0000\u0294\u0293\u0001\u0000\u0000"+ + "\u0000\u0295\u0007\u0001\u0000\u0000\u0000\u0296\u0298\u0005\u000e\u0000"+ + "\u0000\u0297\u0299\u0005\u0004\u0000\u0000\u0298\u0297\u0001\u0000\u0000"+ + "\u0000\u0298\u0299\u0001\u0000\u0000\u0000\u0299\u029a\u0001\u0000\u0000"+ + "\u0000\u029a\u029b\u0003\u0170\u00b8\u0000\u029b\u029c\u0005\u0011\u0000"+ + "\u0000\u029c\u029e\u0003\u0192\u00c9\u0000\u029d\u029f\u0003*\u0015\u0000"+ + "\u029e\u029d\u0001\u0000\u0000\u0000\u029e\u029f\u0001\u0000\u0000\u0000"+ + "\u029f\u02a0\u0001\u0000\u0000\u0000\u02a0\u02a1\u0003\u00a2Q\u0000\u02a1"+ + "\t\u0001\u0000\u0000\u0000\u02a2\u02a3\u0005\u001a\u0000\u0000\u02a3\u02a4"+ + "\u0003\f\u0006\u0000\u02a4\u02a5\u0003\u00a2Q\u0000\u02a5\u000b\u0001"+ + "\u0000\u0000\u0000\u02a6\u02ab\u0003\u000e\u0007\u0000\u02a7\u02a8\u0005"+ + "\u0091\u0000\u0000\u02a8\u02aa\u0003\u000e\u0007\u0000\u02a9\u02a7\u0001"+ + "\u0000\u0000\u0000\u02aa\u02ad\u0001\u0000\u0000\u0000\u02ab\u02a9\u0001"+ + "\u0000\u0000\u0000\u02ab\u02ac\u0001\u0000\u0000\u0000\u02ac\r\u0001\u0000"+ + "\u0000\u0000\u02ad\u02ab\u0001\u0000\u0000\u0000\u02ae\u02b3\u0003|>\u0000"+ + "\u02af\u02b3\u0003\u0192\u00c9\u0000\u02b0\u02b3\u0003\u0010\b\u0000\u02b1"+ + "\u02b3\u0003\u0012\t\u0000\u02b2\u02ae\u0001\u0000\u0000\u0000\u02b2\u02af"+ + "\u0001\u0000\u0000\u0000\u02b2\u02b0\u0001\u0000\u0000\u0000\u02b2\u02b1"+ + "\u0001\u0000\u0000\u0000\u02b3\u000f\u0001\u0000\u0000\u0000\u02b4\u02b5"+ + "\u0005\u0004\u0000\u0000\u02b5\u02b6\u0003\u0170\u00b8\u0000\u02b6\u02b7"+ + "\u0003\u00b2Y\u0000\u02b7\u0011\u0001\u0000\u0000\u0000\u02b8\u02b9\u0007"+ + "\u0000\u0000\u0000\u02b9\u02ba\u0003\u0170\u00b8\u0000\u02ba\u02bb\u0003"+ + "\u00b2Y\u0000\u02bb\u0013\u0001\u0000\u0000\u0000\u02bc\u02bd\u0005\""+ + "\u0000\u0000\u02bd\u02be\u0003\u00a2Q\u0000\u02be\u02bf\u0005\u001a\u0000"+ + "\u0000\u02bf\u02c0\u0003\u0192\u00c9\u0000\u02c0\u0015\u0001\u0000\u0000"+ + "\u0000\u02c1\u02c5\u0003\u0018\f\u0000\u02c2\u02c5\u0003\u001c\u000e\u0000"+ + "\u02c3\u02c5\u0003\u001e\u000f\u0000\u02c4\u02c1\u0001\u0000\u0000\u0000"+ + "\u02c4\u02c2\u0001\u0000\u0000\u0000\u02c4\u02c3\u0001\u0000\u0000\u0000"+ + "\u02c5\u0017\u0001\u0000\u0000\u0000\u02c6\u02c7\u0005\u0012\u0000\u0000"+ + "\u02c7\u02c8\u0003\f\u0006\u0000\u02c8\u02ca\u0003\u00a2Q\u0000\u02c9"+ + "\u02cb\u0003\u001a\r\u0000\u02ca\u02c9\u0001\u0000\u0000\u0000\u02ca\u02cb"+ + "\u0001\u0000\u0000\u0000\u02cb\u0019\u0001\u0000\u0000\u0000\u02cc\u02cd"+ + "\u0005\f\u0000\u0000\u02cd\u02d1\u0003\u00a2Q\u0000\u02ce\u02cf\u0005"+ + "\f\u0000\u0000\u02cf\u02d1\u0003\u0018\f\u0000\u02d0\u02cc\u0001\u0000"+ + "\u0000\u0000\u02d0\u02ce\u0001\u0000\u0000\u0000\u02d1\u001b\u0001\u0000"+ + "\u0000\u0000\u02d2\u02d3\u0005\u000b\u0000\u0000\u02d3\u02d4\u0003\f\u0006"+ + "\u0000\u02d4\u02d5\u0005\f\u0000\u0000\u02d5\u02d6\u0003\u00a2Q\u0000"+ + "\u02d6\u001d\u0001\u0000\u0000\u0000\u02d7\u02d8\u0005#\u0000\u0000\u02d8"+ + "\u02d9\u0003\u0192\u00c9\u0000\u02d9\u02db\u0005\u008b\u0000\u0000\u02da"+ + "\u02dc\u0003 \u0010\u0000\u02db\u02da\u0001\u0000\u0000\u0000\u02db\u02dc"+ + "\u0001\u0000\u0000\u0000\u02dc\u02dd\u0001\u0000\u0000\u0000\u02dd\u02de"+ + "\u0005\u008e\u0000\u0000\u02de\u001f\u0001\u0000\u0000\u0000\u02df\u02e1"+ + "\u0003\"\u0011\u0000\u02e0\u02e2\u0003 \u0010\u0000\u02e1\u02e0\u0001"+ + "\u0000\u0000\u0000\u02e1\u02e2\u0001\u0000\u0000\u0000\u02e2!\u0001\u0000"+ + "\u0000\u0000\u02e3\u02e6\u0003$\u0012\u0000\u02e4\u02e6\u0003(\u0014\u0000"+ + "\u02e5\u02e3\u0001\u0000\u0000\u0000\u02e5\u02e4\u0001\u0000\u0000\u0000"+ + "\u02e6\u02e7\u0001\u0000\u0000\u0000\u02e7\u02e8\u0003\u0004\u0002\u0000"+ + "\u02e8\u02eb\u0001\u0000\u0000\u0000\u02e9\u02eb\u0003.\u0017\u0000\u02ea"+ + "\u02e5\u0001\u0000\u0000\u0000\u02ea\u02e9\u0001\u0000\u0000\u0000\u02eb"+ + "#\u0001\u0000\u0000\u0000\u02ec\u02ee\u0003\u018a\u00c5\u0000\u02ed\u02ec"+ + "\u0001\u0000\u0000\u0000\u02ed\u02ee\u0001\u0000\u0000\u0000\u02ee\u02ef"+ + "\u0001\u0000\u0000\u0000\u02ef\u02f0\u0005\u0004\u0000\u0000\u02f0\u02f1"+ + "\u0003&\u0013\u0000\u02f1\u02f2\u0005\u0092\u0000\u0000\u02f2%\u0001\u0000"+ + "\u0000\u0000\u02f3\u02f5\u0003\u0170\u00b8\u0000\u02f4\u02f6\u0003*\u0015"+ + "\u0000\u02f5\u02f4\u0001\u0000\u0000\u0000\u02f5\u02f6\u0001\u0000\u0000"+ + "\u0000\u02f6\u02fe\u0001\u0000\u0000\u0000\u02f7\u02f8\u0005\u0091\u0000"+ + "\u0000\u02f8\u02fa\u0003\u0170\u00b8\u0000\u02f9\u02fb\u0003*\u0015\u0000"+ + "\u02fa\u02f9\u0001\u0000\u0000\u0000\u02fa\u02fb\u0001\u0000\u0000\u0000"+ + "\u02fb\u02fd\u0001\u0000\u0000\u0000\u02fc\u02f7\u0001\u0000\u0000\u0000"+ + "\u02fd\u0300\u0001\u0000\u0000\u0000\u02fe\u02fc\u0001\u0000\u0000\u0000"+ + "\u02fe\u02ff\u0001\u0000\u0000\u0000\u02ff\'\u0001\u0000\u0000\u0000\u0300"+ + "\u02fe\u0001\u0000\u0000\u0000\u0301\u0303\u0003\u018a\u00c5\u0000\u0302"+ + "\u0301\u0001\u0000\u0000\u0000\u0302\u0303\u0001\u0000\u0000\u0000\u0303"+ + "\u0304\u0001\u0000\u0000\u0000\u0304\u0305\u0005\b\u0000\u0000\u0305\u0306"+ + "\u0005\u0092\u0000\u0000\u0306)\u0001\u0000\u0000\u0000\u0307\u0308\u0005"+ + "\u0019\u0000\u0000\u0308\u0309\u0003,\u0016\u0000\u0309+\u0001\u0000\u0000"+ + "\u0000\u030a\u030b\u0003\u0192\u00c9\u0000\u030b-\u0001\u0000\u0000\u0000"+ + "\u030c\u030e\u00030\u0018\u0000\u030d\u030f\u00032\u0019\u0000\u030e\u030d"+ + "\u0001\u0000\u0000\u0000\u030e\u030f\u0001\u0000\u0000\u0000\u030f\u0311"+ + "\u0001\u0000\u0000\u0000\u0310\u0312\u00036\u001b\u0000\u0311\u0310\u0001"+ + "\u0000\u0000\u0000\u0311\u0312\u0001\u0000\u0000\u0000\u0312\u0313\u0001"+ + "\u0000\u0000\u0000\u0313\u0314\u0005z\u0000\u0000\u0314/\u0001\u0000\u0000"+ + "\u0000\u0315\u0316\u0005w\u0000\u0000\u0316\u0318\u0003b1\u0000\u0317"+ + "\u0319\u0003 \u0010\u0000\u0318\u0317\u0001\u0000\u0000\u0000\u0318\u0319"+ + "\u0001\u0000\u0000\u0000\u03191\u0001\u0000\u0000\u0000\u031a\u031c\u0003"+ + "^/\u0000\u031b\u031d\u00032\u0019\u0000\u031c\u031b\u0001\u0000\u0000"+ + "\u0000\u031c\u031d\u0001\u0000\u0000\u0000\u031d3\u0001\u0000\u0000\u0000"+ + "\u031e\u031f\u0005x\u0000\u0000\u031f\u0321\u0003b1\u0000\u0320\u0322"+ + "\u0003 \u0010\u0000\u0321\u0320\u0001\u0000\u0000\u0000\u0321\u0322\u0001"+ + "\u0000\u0000\u0000\u03225\u0001\u0000\u0000\u0000\u0323\u0325\u0005y\u0000"+ + "\u0000\u0324\u0326\u0003 \u0010\u0000\u0325\u0324\u0001\u0000\u0000\u0000"+ + "\u0325\u0326\u0001\u0000\u0000\u0000\u03267\u0001\u0000\u0000\u0000\u0327"+ + "\u032c\u0003:\u001d\u0000\u0328\u032d\u0003\u0006\u0003\u0000\u0329\u032d"+ + "\u0003\u0018\f\u0000\u032a\u032d\u0003\u001e\u000f\u0000\u032b\u032d\u0003"+ + "L&\u0000\u032c\u0328\u0001\u0000\u0000\u0000\u032c\u0329\u0001\u0000\u0000"+ + "\u0000\u032c\u032a\u0001\u0000\u0000\u0000\u032c\u032b\u0001\u0000\u0000"+ + "\u0000\u032d9\u0001\u0000\u0000\u0000\u032e\u032f\u0003<\u001e\u0000\u032f"+ + "\u0330\u0005\u0092\u0000\u0000\u0330;\u0001\u0000\u0000\u0000\u0331\u0332"+ + "\u0003\u0236\u011b\u0000\u0332=\u0001\u0000\u0000\u0000\u0333\u0339\u0003"+ + "@ \u0000\u0334\u0339\u0003B!\u0000\u0335\u0339\u0003D\"\u0000\u0336\u0339"+ + "\u0003F#\u0000\u0337\u0339\u0003H$\u0000\u0338\u0333\u0001\u0000\u0000"+ + "\u0000\u0338\u0334\u0001\u0000\u0000\u0000\u0338\u0335\u0001\u0000\u0000"+ + "\u0000\u0338\u0336\u0001\u0000\u0000\u0000\u0338\u0337\u0001\u0000\u0000"+ + "\u0000\u0339?\u0001\u0000\u0000\u0000\u033a\u033c\u0005\u0003\u0000\u0000"+ + "\u033b\u033d\u0003<\u001e\u0000\u033c\u033b\u0001\u0000\u0000\u0000\u033c"+ + "\u033d\u0001\u0000\u0000\u0000\u033dA\u0001\u0000\u0000\u0000\u033e\u0340"+ + "\u0005\u0007\u0000\u0000\u033f\u0341\u0003<\u001e\u0000\u0340\u033f\u0001"+ + "\u0000\u0000\u0000\u0340\u0341\u0001\u0000\u0000\u0000\u0341C\u0001\u0000"+ + "\u0000\u0000\u0342\u0343\u0005\u000f\u0000\u0000\u0343E\u0001\u0000\u0000"+ + "\u0000\u0344\u0346\u0005%\u0000\u0000\u0345\u0347\u0003\u0192\u00c9\u0000"+ + "\u0346\u0345\u0001\u0000\u0000\u0000\u0346\u0347\u0001\u0000\u0000\u0000"+ + "\u0347G\u0001\u0000\u0000\u0000\u0348\u0349\u0005&\u0000\u0000\u0349\u034a"+ + "\u0003\u0192\u00c9\u0000\u034aI\u0001\u0000\u0000\u0000\u034b\u034c\u0005"+ + "\t\u0000\u0000\u034c\u034d\u0003\u00a2Q\u0000\u034dK\u0001\u0000\u0000"+ + "\u0000\u034e\u034f\u0005\n\u0000\u0000\u034f\u0351\u0003\u00a2Q\u0000"+ + "\u0350\u0352\u0003N\'\u0000\u0351\u0350\u0001\u0000\u0000\u0000\u0351"+ + "\u0352\u0001\u0000\u0000\u0000\u0352M\u0001\u0000\u0000\u0000\u0353\u0355"+ + "\u0003P(\u0000\u0354\u0353\u0001\u0000\u0000\u0000\u0355\u0356\u0001\u0000"+ + "\u0000\u0000\u0356\u0354\u0001\u0000\u0000\u0000\u0356\u0357\u0001\u0000"+ + "\u0000\u0000\u0357O\u0001\u0000\u0000\u0000\u0358\u035a\u0005\u0005\u0000"+ + "\u0000\u0359\u035b\u0003R)\u0000\u035a\u0359\u0001\u0000\u0000\u0000\u035a"+ + "\u035b\u0001\u0000\u0000\u0000\u035b\u035c\u0001\u0000\u0000\u0000\u035c"+ + "\u035d\u0003\u00a2Q\u0000\u035dQ\u0001\u0000\u0000\u0000\u035e\u0365\u0003"+ + "T*\u0000\u035f\u0360\u0003T*\u0000\u0360\u0361\u0005\u0091\u0000\u0000"+ + "\u0361\u0362\u0003T*\u0000\u0362\u0364\u0001\u0000\u0000\u0000\u0363\u035f"+ + "\u0001\u0000\u0000\u0000\u0364\u0367\u0001\u0000\u0000\u0000\u0365\u0363"+ + "\u0001\u0000\u0000\u0000\u0365\u0366\u0001\u0000\u0000\u0000\u0366S\u0001"+ + "\u0000\u0000\u0000\u0367\u0365\u0001\u0000\u0000\u0000\u0368\u036a\u0003"+ + "\u0170\u00b8\u0000\u0369\u036b\u0003*\u0015\u0000\u036a\u0369\u0001\u0000"+ + "\u0000\u0000\u036a\u036b\u0001\u0000\u0000\u0000\u036bU\u0001\u0000\u0000"+ + "\u0000\u036c\u0370\u0003X,\u0000\u036d\u0370\u0003r9\u0000\u036e\u0370"+ + "\u0003x<\u0000\u036f\u036c\u0001\u0000\u0000\u0000\u036f\u036d\u0001\u0000"+ + "\u0000\u0000\u036f\u036e\u0001\u0000\u0000\u0000\u0370W\u0001\u0000\u0000"+ + "\u0000\u0371\u0373\u0003Z-\u0000\u0372\u0374\u0003\\.\u0000\u0373\u0372"+ + "\u0001\u0000\u0000\u0000\u0373\u0374\u0001\u0000\u0000\u0000\u0374\u0376"+ + "\u0001\u0000\u0000\u0000\u0375\u0377\u0003`0\u0000\u0376\u0375\u0001\u0000"+ + "\u0000\u0000\u0376\u0377\u0001\u0000\u0000\u0000\u0377\u0378\u0001\u0000"+ + "\u0000\u0000\u0378\u0379\u0005z\u0000\u0000\u0379Y\u0001\u0000\u0000\u0000"+ + "\u037a\u037b\u0005w\u0000\u0000\u037b\u037d\u0003b1\u0000\u037c\u037e"+ + "\u0003\u0004\u0002\u0000\u037d\u037c\u0001\u0000\u0000\u0000\u037d\u037e"+ + "\u0001\u0000\u0000\u0000\u037e[\u0001\u0000\u0000\u0000\u037f\u0381\u0003"+ + "^/\u0000\u0380\u037f\u0001\u0000\u0000\u0000\u0381\u0382\u0001\u0000\u0000"+ + "\u0000\u0382\u0380\u0001\u0000\u0000\u0000\u0382\u0383\u0001\u0000\u0000"+ + "\u0000\u0383]\u0001\u0000\u0000\u0000\u0384\u0385\u0005x\u0000\u0000\u0385"+ + "\u0387\u0003b1\u0000\u0386\u0388\u0003\u0004\u0002\u0000\u0387\u0386\u0001"+ + "\u0000\u0000\u0000\u0387\u0388\u0001\u0000\u0000\u0000\u0388_\u0001\u0000"+ + "\u0000\u0000\u0389\u038b\u0005y\u0000\u0000\u038a\u038c\u0003\u0004\u0002"+ + "\u0000\u038b\u038a\u0001\u0000\u0000\u0000\u038b\u038c\u0001\u0000\u0000"+ + "\u0000\u038ca\u0001\u0000\u0000\u0000\u038d\u038e\u00061\uffff\uffff\u0000"+ + "\u038e\u0398\u0003d2\u0000\u038f\u0398\u0003\u0236\u011b\u0000\u0390\u0398"+ + "\u0003\u0266\u0133\u0000\u0391\u0392\u0005\u008c\u0000\u0000\u0392\u0393"+ + "\u0003b1\u0000\u0393\u0394\u0005\u008f\u0000\u0000\u0394\u0398\u0001\u0000"+ + "\u0000\u0000\u0395\u0396\u0005\u0097\u0000\u0000\u0396\u0398\u0003b1\u0002"+ + "\u0397\u038d\u0001\u0000\u0000\u0000\u0397\u038f\u0001\u0000\u0000\u0000"+ + "\u0397\u0390\u0001\u0000\u0000\u0000\u0397\u0391\u0001\u0000\u0000\u0000"+ + "\u0397\u0395\u0001\u0000\u0000\u0000\u0398\u03a2\u0001\u0000\u0000\u0000"+ + "\u0399\u039c\n\u0001\u0000\u0000\u039a\u039d\u0003\u0240\u0120\u0000\u039b"+ + "\u039d\u0003\u0242\u0121\u0000\u039c\u039a\u0001\u0000\u0000\u0000\u039c"+ + "\u039b\u0001\u0000\u0000\u0000\u039d\u039e\u0001\u0000\u0000\u0000\u039e"+ + "\u039f\u0003b1\u0002\u039f\u03a1\u0001\u0000\u0000\u0000\u03a0\u0399\u0001"+ + "\u0000\u0000\u0000\u03a1\u03a4\u0001\u0000\u0000\u0000\u03a2\u03a0\u0001"+ + "\u0000\u0000\u0000\u03a2\u03a3\u0001\u0000\u0000\u0000\u03a3c\u0001\u0000"+ + "\u0000\u0000\u03a4\u03a2\u0001\u0000\u0000\u0000\u03a5\u03a6\u0005<\u0000"+ + "\u0000\u03a6\u03a7\u0005\u008c\u0000\u0000\u03a7\u03a8\u0003j5\u0000\u03a8"+ + "\u03a9\u0005\u008f\u0000\u0000\u03a9\u03c3\u0001\u0000\u0000\u0000\u03aa"+ + "\u03ab\u0005=\u0000\u0000\u03ab\u03ac\u0005\u008c\u0000\u0000\u03ac\u03ad"+ + "\u0003l6\u0000\u03ad\u03ae\u0005\u008f\u0000\u0000\u03ae\u03c3\u0001\u0000"+ + "\u0000\u0000\u03af\u03b0\u0007\u0001\u0000\u0000\u03b0\u03b3\u0005\u008c"+ + "\u0000\u0000\u03b1\u03b4\u0003\u0244\u0122\u0000\u03b2\u03b4\u0003\u0246"+ + "\u0123\u0000\u03b3\u03b1\u0001\u0000\u0000\u0000\u03b3\u03b2\u0001\u0000"+ + "\u0000\u0000\u03b4\u03b5\u0001\u0000\u0000\u0000\u03b5\u03b6\u0003f3\u0000"+ + "\u03b6\u03b7\u0005\u008f\u0000\u0000\u03b7\u03c3\u0001\u0000\u0000\u0000"+ + "\u03b8\u03b9\u0005@\u0000\u0000\u03b9\u03ba\u0005\u008c\u0000\u0000\u03ba"+ + "\u03bb\u0003n7\u0000\u03bb\u03bc\u0005\u008f\u0000\u0000\u03bc\u03c3\u0001"+ + "\u0000\u0000\u0000\u03bd\u03be\u0005A\u0000\u0000\u03be\u03bf\u0005\u008c"+ + "\u0000\u0000\u03bf\u03c0\u0003p8\u0000\u03c0\u03c1\u0005\u008f\u0000\u0000"+ + "\u03c1\u03c3\u0001\u0000\u0000\u0000\u03c2\u03a5\u0001\u0000\u0000\u0000"+ + "\u03c2\u03aa\u0001\u0000\u0000\u0000\u03c2\u03af\u0001\u0000\u0000\u0000"+ + "\u03c2\u03b8\u0001\u0000\u0000\u0000\u03c2\u03bd\u0001\u0000\u0000\u0000"+ + "\u03c3e\u0001\u0000\u0000\u0000\u03c4\u03c6\u0005\u00ac\u0000\u0000\u03c5"+ + "\u03c7\u0003h4\u0000\u03c6\u03c5\u0001\u0000\u0000\u0000\u03c6\u03c7\u0001"+ + "\u0000\u0000\u0000\u03c7g\u0001\u0000\u0000\u0000\u03c8\u03c9\u0005\u008a"+ + "\u0000\u0000\u03c9\u03cb\u0005\u00ac\u0000\u0000\u03ca\u03cc\u0003h4\u0000"+ + "\u03cb\u03ca\u0001\u0000\u0000\u0000\u03cb\u03cc\u0001\u0000\u0000\u0000"+ + "\u03cci\u0001\u0000\u0000\u0000\u03cd\u03ce\u0007\u0002\u0000\u0000\u03ce"+ + "k\u0001\u0000\u0000\u0000\u03cf\u03d0\u0007\u0003\u0000\u0000\u03d0m\u0001"+ + "\u0000\u0000\u0000\u03d1\u03d6\u0003\u0236\u011b\u0000\u03d2\u03d3\u0005"+ + "\u008a\u0000\u0000\u03d3\u03d5\u0003\u0236\u011b\u0000\u03d4\u03d2\u0001"+ + "\u0000\u0000\u0000\u03d5\u03d8\u0001\u0000\u0000\u0000\u03d6\u03d4\u0001"+ + "\u0000\u0000\u0000\u03d6\u03d7\u0001\u0000\u0000\u0000\u03d7o\u0001\u0000"+ + "\u0000\u0000\u03d8\u03d6\u0001\u0000\u0000\u0000\u03d9\u03da\u0007\u0004"+ + "\u0000\u0000\u03daq\u0001\u0000\u0000\u0000\u03db\u03dc\u0005q\u0000\u0000"+ + "\u03dc\u03e5\u0005\u008c\u0000\u0000\u03dd\u03de\u0005r\u0000\u0000\u03de"+ + "\u03df\u0005\u0092\u0000\u0000\u03df\u03e0\u0003v;\u0000\u03e0\u03e1\u0005"+ + "\u0091\u0000\u0000\u03e1\u03e2\u0005s\u0000\u0000\u03e2\u03e3\u0005\u0092"+ + "\u0000\u0000\u03e3\u03e4\u0003t:\u0000\u03e4\u03e6\u0001\u0000\u0000\u0000"+ + "\u03e5\u03dd\u0001\u0000\u0000\u0000\u03e5\u03e6\u0001\u0000\u0000\u0000"+ + "\u03e6\u03e7\u0001\u0000\u0000\u0000\u03e7\u03e8\u0005\u008f\u0000\u0000"+ + "\u03e8s\u0001\u0000\u0000\u0000\u03e9\u03ea\u0005\u00ad\u0000\u0000\u03ea"+ + "u\u0001\u0000\u0000\u0000\u03eb\u03ec\u0003\u0270\u0138\u0000\u03ecw\u0001"+ + "\u0000\u0000\u0000\u03ed\u03ee\u0007\u0005\u0000\u0000\u03ee\u03ef\u0005"+ + "\u008c\u0000\u0000\u03ef\u03f0\u0003z=\u0000\u03f0\u03f1\u0005\u008f\u0000"+ + "\u0000\u03f1y\u0001\u0000\u0000\u0000\u03f2\u03f3\u0003\u0270\u0138\u0000"+ + "\u03f3{\u0001\u0000\u0000\u0000\u03f4\u03f5\u0005v\u0000\u0000\u03f5\u03f6"+ + "\u0005\u008c\u0000\u0000\u03f6\u03f7\u0003~?\u0000\u03f7\u03f8\u0005\u008f"+ + "\u0000\u0000\u03f8}\u0001\u0000\u0000\u0000\u03f9\u03fe\u0003\u0080@\u0000"+ + "\u03fa\u03fb\u0005\u0091\u0000\u0000\u03fb\u03fd\u0003\u0080@\u0000\u03fc"+ + "\u03fa\u0001\u0000\u0000\u0000\u03fd\u0400\u0001\u0000\u0000\u0000\u03fe"+ + "\u03fc\u0001\u0000\u0000\u0000\u03fe\u03ff\u0001\u0000\u0000\u0000\u03ff"+ + "\u007f\u0001\u0000\u0000\u0000\u0400\u03fe\u0001\u0000\u0000\u0000\u0401"+ + "\u0402\u0003\u0082A\u0000\u0402\u0403\u0003\u0084B\u0000\u0403\u0406\u0001"+ + "\u0000\u0000\u0000\u0404\u0406\u0005\u00a0\u0000\u0000\u0405\u0401\u0001"+ + "\u0000\u0000\u0000\u0405\u0404\u0001\u0000\u0000\u0000\u0406\u0081\u0001"+ + "\u0000\u0000\u0000\u0407\u0408\u0007\u0006\u0000\u0000\u0408\u0083\u0001"+ + "\u0000\u0000\u0000\u0409\u0411\u0005\u00ad\u0000\u0000\u040a\u0411\u0005"+ + "\u00ac\u0000\u0000\u040b\u040e\u0005\u00af\u0000\u0000\u040c\u040d\u0005"+ + "\u008a\u0000\u0000\u040d\u040f\u0005\u00ac\u0000\u0000\u040e\u040c\u0001"+ + "\u0000\u0000\u0000\u040e\u040f\u0001\u0000\u0000\u0000\u040f\u0411\u0001"+ + "\u0000\u0000\u0000\u0410\u0409\u0001\u0000\u0000\u0000\u0410\u040a\u0001"+ + "\u0000\u0000\u0000\u0410\u040b\u0001\u0000\u0000\u0000\u0411\u0085\u0001"+ + "\u0000\u0000\u0000\u0412\u0413\u0005\u0094\u0000\u0000\u0413\u0414\u0003"+ + "\u0088D\u0000\u0414\u0415\u0005\u0095\u0000\u0000\u0415\u0087\u0001\u0000"+ + "\u0000\u0000\u0416\u041b\u0003\u008aE\u0000\u0417\u0418\u0005\u0091\u0000"+ + "\u0000\u0418\u041a\u0003\u008aE\u0000\u0419\u0417\u0001\u0000\u0000\u0000"+ + "\u041a\u041d\u0001\u0000\u0000\u0000\u041b\u0419\u0001\u0000\u0000\u0000"+ + "\u041b\u041c\u0001\u0000\u0000\u0000\u041c\u0089\u0001\u0000\u0000\u0000"+ + "\u041d\u041b\u0001\u0000\u0000\u0000\u041e\u0424\u0003\u0210\u0108\u0000"+ + "\u041f\u0422\u0005\u0092\u0000\u0000\u0420\u0423\u0003\u020e\u0107\u0000"+ + "\u0421\u0423\u0003\u0228\u0114\u0000\u0422\u0420\u0001\u0000\u0000\u0000"+ + "\u0422\u0421\u0001\u0000\u0000\u0000\u0423\u0425\u0001\u0000\u0000\u0000"+ + "\u0424\u041f\u0001\u0000\u0000\u0000\u0424\u0425\u0001\u0000\u0000\u0000"+ + "\u0425\u008b\u0001\u0000\u0000\u0000\u0426\u0427\u0005\u0019\u0000\u0000"+ + "\u0427\u0428\u0003\u008eG\u0000\u0428\u008d\u0001\u0000\u0000\u0000\u0429"+ + "\u042e\u0003\u0090H\u0000\u042a\u042b\u0005\u0091\u0000\u0000\u042b\u042d"+ + "\u0003\u0090H\u0000\u042c\u042a\u0001\u0000\u0000\u0000\u042d\u0430\u0001"+ + "\u0000\u0000\u0000\u042e\u042c\u0001\u0000\u0000\u0000\u042e\u042f\u0001"+ + "\u0000\u0000\u0000\u042f\u008f\u0001\u0000\u0000\u0000\u0430\u042e\u0001"+ + "\u0000\u0000\u0000\u0431\u0434\u0003\u0092I\u0000\u0432\u0434\u0003\u0094"+ + "J\u0000\u0433\u0431\u0001\u0000\u0000\u0000\u0433\u0432\u0001\u0000\u0000"+ + "\u0000\u0434\u0091\u0001\u0000\u0000\u0000\u0435\u0436\u0003\u020e\u0107"+ + "\u0000\u0436\u0439\u0005\u0092\u0000\u0000\u0437\u043a\u0003\u020e\u0107"+ + "\u0000\u0438\u043a\u0003\u0228\u0114\u0000\u0439\u0437\u0001\u0000\u0000"+ + "\u0000\u0439\u0438\u0001\u0000\u0000\u0000\u043a\u0093\u0001\u0000\u0000"+ + "\u0000\u043b\u043c\u0003\u020e\u0107\u0000\u043c\u043f\u0003\u024c\u0126"+ + "\u0000\u043d\u0440\u0003\u020e\u0107\u0000\u043e\u0440\u0003\u020a\u0105"+ + "\u0000\u043f\u043d\u0001\u0000\u0000\u0000\u043f\u043e\u0001\u0000\u0000"+ + "\u0000\u0440\u0095\u0001\u0000\u0000\u0000\u0441\u0442\u0005\u0094\u0000"+ + "\u0000\u0442\u0443\u0003\u0098L\u0000\u0443\u0444\u0005\u0095\u0000\u0000"+ + "\u0444\u0097\u0001\u0000\u0000\u0000\u0445\u044a\u0003\u009aM\u0000\u0446"+ + "\u0447\u0005\u0091\u0000\u0000\u0447\u0449\u0003\u009aM\u0000\u0448\u0446"+ + "\u0001\u0000\u0000\u0000\u0449\u044c\u0001\u0000\u0000\u0000\u044a\u0448"+ + "\u0001\u0000\u0000\u0000\u044a\u044b\u0001\u0000\u0000\u0000\u044b\u0099"+ + "\u0001\u0000\u0000\u0000\u044c\u044a\u0001\u0000\u0000\u0000\u044d\u044e"+ + "\u0003\u020a\u0105\u0000\u044e\u009b\u0001\u0000\u0000\u0000\u044f\u045f"+ + "\u0003\u00a4R\u0000\u0450\u045f\u0003\u00acV\u0000\u0451\u045f\u0003\u00b4"+ + "Z\u0000\u0452\u045f\u0003\u00ceg\u0000\u0453\u045f\u0003\u00d4j\u0000"+ + "\u0454\u045f\u0003\u00ecv\u0000\u0455\u045f\u0003\u010e\u0087\u0000\u0456"+ + "\u045f\u0003\u0118\u008c\u0000\u0457\u045f\u0003\u0122\u0091\u0000\u0458"+ + "\u045f\u0003\u0138\u009c\u0000\u0459\u045f\u0003\u013e\u009f\u0000\u045a"+ + "\u045f\u0003\u0140\u00a0\u0000\u045b\u045f\u0003\u0148\u00a4\u0000\u045c"+ + "\u045f\u0003\u014e\u00a7\u0000\u045d\u045f\u0003\u0158\u00ac\u0000\u045e"+ + "\u044f\u0001\u0000\u0000\u0000\u045e\u0450\u0001\u0000\u0000\u0000\u045e"+ + "\u0451\u0001\u0000\u0000\u0000\u045e\u0452\u0001\u0000\u0000\u0000\u045e"+ + "\u0453\u0001\u0000\u0000\u0000\u045e\u0454\u0001\u0000\u0000\u0000\u045e"+ + "\u0455\u0001\u0000\u0000\u0000\u045e\u0456\u0001\u0000\u0000\u0000\u045e"+ + "\u0457\u0001\u0000\u0000\u0000\u045e\u0458\u0001\u0000\u0000\u0000\u045e"+ + "\u0459\u0001\u0000\u0000\u0000\u045e\u045a\u0001\u0000\u0000\u0000\u045e"+ + "\u045b\u0001\u0000\u0000\u0000\u045e\u045c\u0001\u0000\u0000\u0000\u045e"+ + "\u045d\u0001\u0000\u0000\u0000\u045f\u0461\u0001\u0000\u0000\u0000\u0460"+ + "\u0462\u0005\u0093\u0000\u0000\u0461\u0460\u0001\u0000\u0000\u0000\u0461"+ + "\u0462\u0001\u0000\u0000\u0000\u0462\u009d\u0001\u0000\u0000\u0000\u0463"+ + "\u0465\u0003\u009cN\u0000\u0464\u0463\u0001\u0000\u0000\u0000\u0465\u0466"+ + "\u0001\u0000\u0000\u0000\u0466\u0464\u0001\u0000\u0000\u0000\u0466\u0467"+ + "\u0001\u0000\u0000\u0000\u0467\u009f\u0001\u0000\u0000\u0000\u0468\u046a"+ + "\u0003\u0004\u0002\u0000\u0469\u0468\u0001\u0000\u0000\u0000\u0469\u046a"+ + "\u0001\u0000\u0000\u0000\u046a\u00a1\u0001\u0000\u0000\u0000\u046b\u046d"+ + "\u0005\u008b\u0000\u0000\u046c\u046e\u0003\u0004\u0002\u0000\u046d\u046c"+ + "\u0001\u0000\u0000\u0000\u046d\u046e\u0001\u0000\u0000\u0000\u046e\u046f"+ + "\u0001\u0000\u0000\u0000\u046f\u0470\u0005\u008e\u0000\u0000\u0470\u00a3"+ + "\u0001\u0000\u0000\u0000\u0471\u0473\u0003\u018a\u00c5\u0000\u0472\u0471"+ + "\u0001\u0000\u0000\u0000\u0472\u0473\u0001\u0000\u0000\u0000\u0473\u0474"+ + "\u0001\u0000\u0000\u0000\u0474\u0476\u0005\u0013\u0000\u0000\u0475\u0477"+ + "\u0003\u00a6S\u0000\u0476\u0475\u0001\u0000\u0000\u0000\u0476\u0477\u0001"+ + "\u0000\u0000\u0000\u0477\u0478\u0001\u0000\u0000\u0000\u0478\u0479\u0003"+ + "\u00a8T\u0000\u0479\u00a5\u0001\u0000\u0000\u0000\u047a\u047b\u0007\u0007"+ + "\u0000\u0000\u047b\u00a7\u0001\u0000\u0000\u0000\u047c\u0481\u0003\u00aa"+ + "U\u0000\u047d\u047e\u0005\u008a\u0000\u0000\u047e\u0480\u0003\u00aaU\u0000"+ + "\u047f\u047d\u0001\u0000\u0000\u0000\u0480\u0483\u0001\u0000\u0000\u0000"+ + "\u0481\u047f\u0001\u0000\u0000\u0000\u0481\u0482\u0001\u0000\u0000\u0000"+ + "\u0482\u00a9\u0001\u0000\u0000\u0000\u0483\u0481\u0001\u0000\u0000\u0000"+ + "\u0484\u0487\u0003\u0236\u011b\u0000\u0485\u0487\u0003\u0254\u012a\u0000"+ + "\u0486\u0484\u0001\u0000\u0000\u0000\u0486\u0485\u0001\u0000\u0000\u0000"+ + "\u0487\u00ab\u0001\u0000\u0000\u0000\u0488\u048a\u0003\u018a\u00c5\u0000"+ + "\u0489\u0488\u0001\u0000\u0000\u0000\u0489\u048a\u0001\u0000\u0000\u0000"+ + "\u048a\u048c\u0001\u0000\u0000\u0000\u048b\u048d\u0003\u016a\u00b5\u0000"+ + "\u048c\u048b\u0001\u0000\u0000\u0000\u048c\u048d\u0001\u0000\u0000\u0000"+ + "\u048d\u048e\u0001\u0000\u0000\u0000\u048e\u048f\u0005\u001b\u0000\u0000"+ + "\u048f\u0490\u0003\u00aeW\u0000\u0490\u00ad\u0001\u0000\u0000\u0000\u0491"+ + "\u0496\u0003\u00b0X\u0000\u0492\u0493\u0005\u0091\u0000\u0000\u0493\u0495"+ + "\u0003\u00b0X\u0000\u0494\u0492\u0001\u0000\u0000\u0000\u0495\u0498\u0001"+ + "\u0000\u0000\u0000\u0496\u0494\u0001\u0000\u0000\u0000\u0496\u0497\u0001"+ + "\u0000\u0000\u0000\u0497\u00af\u0001\u0000\u0000\u0000\u0498\u0496\u0001"+ + "\u0000\u0000\u0000\u0499\u049b\u0003\u0170\u00b8\u0000\u049a\u049c\u0003"+ + "\u00b2Y\u0000\u049b\u049a\u0001\u0000\u0000\u0000\u049b\u049c\u0001\u0000"+ + "\u0000\u0000\u049c\u00b1\u0001\u0000\u0000\u0000\u049d\u049e\u0005\u009c"+ + "\u0000\u0000\u049e\u049f\u0003\u0192\u00c9\u0000\u049f\u00b3\u0001\u0000"+ + "\u0000\u0000\u04a0\u04b1\u0003\u00b6[\u0000\u04a1\u04ae\u0003\u00b8\\"+ + "\u0000\u04a2\u04a3\u0003\u00b2Y\u0000\u04a3\u04a4\u0003\u00c8d\u0000\u04a4"+ + "\u04af\u0001\u0000\u0000\u0000\u04a5\u04ac\u0003\u020c\u0106\u0000\u04a6"+ + "\u04ad\u0003\u00ba]\u0000\u04a7\u04ad\u0003\u00c2a\u0000\u04a8\u04aa\u0003"+ + "\u00b2Y\u0000\u04a9\u04a8\u0001\u0000\u0000\u0000\u04a9\u04aa\u0001\u0000"+ + "\u0000\u0000\u04aa\u04ab\u0001\u0000\u0000\u0000\u04ab\u04ad\u0003\u00c8"+ + "d\u0000\u04ac\u04a6\u0001\u0000\u0000\u0000\u04ac\u04a7\u0001\u0000\u0000"+ + "\u0000\u04ac\u04a9\u0001\u0000\u0000\u0000\u04ad\u04af\u0001\u0000\u0000"+ + "\u0000\u04ae\u04a2\u0001\u0000\u0000\u0000\u04ae\u04a5\u0001\u0000\u0000"+ + "\u0000\u04af\u04b2\u0001\u0000\u0000\u0000\u04b0\u04b2\u0003\u00aeW\u0000"+ + "\u04b1\u04a1\u0001\u0000\u0000\u0000\u04b1\u04b0\u0001\u0000\u0000\u0000"+ + "\u04b2\u00b5\u0001\u0000\u0000\u0000\u04b3\u04b5\u0003\u018a\u00c5\u0000"+ + "\u04b4\u04b3\u0001\u0000\u0000\u0000\u04b4\u04b5\u0001\u0000\u0000\u0000"+ + "\u04b5\u04b7\u0001\u0000\u0000\u0000\u04b6\u04b8\u0003\u016a\u00b5\u0000"+ + "\u04b7\u04b6\u0001\u0000\u0000\u0000\u04b7\u04b8\u0001\u0000\u0000\u0000"+ + "\u04b8\u04b9\u0001\u0000\u0000\u0000\u04b9\u04ba\u0005\u001c\u0000\u0000"+ + "\u04ba\u00b7\u0001\u0000\u0000\u0000\u04bb\u04bc\u0003\u0236\u011b\u0000"+ + "\u04bc\u00b9\u0001\u0000\u0000\u0000\u04bd\u04c5\u0005\u008b\u0000\u0000"+ + "\u04be\u04c0\u0003\u00bc^\u0000\u04bf\u04c1\u0003\u00be_\u0000\u04c0\u04bf"+ + "\u0001\u0000\u0000\u0000\u04c0\u04c1\u0001\u0000\u0000\u0000\u04c1\u04c6"+ + "\u0001\u0000\u0000\u0000\u04c2\u04c3\u0003\u00be_\u0000\u04c3\u04c4\u0003"+ + "\u00bc^\u0000\u04c4\u04c6\u0001\u0000\u0000\u0000\u04c5\u04be\u0001\u0000"+ + "\u0000\u0000\u04c5\u04c2\u0001\u0000\u0000\u0000\u04c6\u04c7\u0001\u0000"+ + "\u0000\u0000\u04c7\u04c8\u0005\u008e\u0000\u0000\u04c8\u04cb\u0001\u0000"+ + "\u0000\u0000\u04c9\u04cb\u0003\u00a2Q\u0000\u04ca\u04bd\u0001\u0000\u0000"+ + "\u0000\u04ca\u04c9\u0001\u0000\u0000\u0000\u04cb\u00bb\u0001\u0000\u0000"+ + "\u0000\u04cc\u04ce\u0003\u018a\u00c5\u0000\u04cd\u04cc\u0001\u0000\u0000"+ + "\u0000\u04cd\u04ce\u0001\u0000\u0000\u0000\u04ce\u04d0\u0001\u0000\u0000"+ + "\u0000\u04cf\u04d1\u0003\u016e\u00b7\u0000\u04d0\u04cf\u0001\u0000\u0000"+ + "\u0000\u04d0\u04d1\u0001\u0000\u0000\u0000\u04d1\u04d2\u0001\u0000\u0000"+ + "\u0000\u04d2\u04d4\u0005\u001e\u0000\u0000\u04d3\u04d5\u0003\u00a2Q\u0000"+ + "\u04d4\u04d3\u0001\u0000\u0000\u0000\u04d4\u04d5\u0001\u0000\u0000\u0000"+ + "\u04d5\u00bd\u0001\u0000\u0000\u0000\u04d6\u04d8\u0003\u018a\u00c5\u0000"+ + "\u04d7\u04d6\u0001\u0000\u0000\u0000\u04d7\u04d8\u0001\u0000\u0000\u0000"+ + "\u04d8\u04da\u0001\u0000\u0000\u0000\u04d9\u04db\u0003\u016e\u00b7\u0000"+ + "\u04da\u04d9\u0001\u0000\u0000\u0000\u04da\u04db\u0001\u0000\u0000\u0000"+ + "\u04db\u04dc\u0001\u0000\u0000\u0000\u04dc\u04de\u0005\u001f\u0000\u0000"+ + "\u04dd\u04df\u0003\u00c0`\u0000\u04de\u04dd\u0001\u0000\u0000\u0000\u04de"+ + "\u04df\u0001\u0000\u0000\u0000\u04df\u04e1\u0001\u0000\u0000\u0000\u04e0"+ + "\u04e2\u0003\u00a2Q\u0000\u04e1\u04e0\u0001\u0000\u0000\u0000\u04e1\u04e2"+ + "\u0001\u0000\u0000\u0000\u04e2\u00bf\u0001\u0000\u0000\u0000\u04e3\u04e4"+ + "\u0005\u008c\u0000\u0000\u04e4\u04e5\u0003\u0236\u011b\u0000\u04e5\u04e6"+ + "\u0005\u008f\u0000\u0000\u04e6\u00c1\u0001\u0000\u0000\u0000\u04e7\u04ef"+ + "\u0005\u008b\u0000\u0000\u04e8\u04ea\u0003\u00c4b\u0000\u04e9\u04eb\u0003"+ + "\u00c6c\u0000\u04ea\u04e9\u0001\u0000\u0000\u0000\u04ea\u04eb\u0001\u0000"+ + "\u0000\u0000\u04eb\u04f0\u0001\u0000\u0000\u0000\u04ec\u04ed\u0003\u00c6"+ + "c\u0000\u04ed\u04ee\u0003\u00c4b\u0000\u04ee\u04f0\u0001\u0000\u0000\u0000"+ + "\u04ef\u04e8\u0001\u0000\u0000\u0000\u04ef\u04ec\u0001\u0000\u0000\u0000"+ + "\u04f0\u04f1\u0001\u0000\u0000\u0000\u04f1\u04f2\u0005\u008e\u0000\u0000"+ + "\u04f2\u00c3\u0001\u0000\u0000\u0000\u04f3\u04f5\u0003\u018a\u00c5\u0000"+ + "\u04f4\u04f3\u0001\u0000\u0000\u0000\u04f4\u04f5\u0001\u0000\u0000\u0000"+ + "\u04f5\u04f7\u0001\u0000\u0000\u0000\u04f6\u04f8\u0003\u016e\u00b7\u0000"+ + "\u04f7\u04f6\u0001\u0000\u0000\u0000\u04f7\u04f8\u0001\u0000\u0000\u0000"+ + "\u04f8\u04f9\u0001\u0000\u0000\u0000\u04f9\u04fa\u0005\u001e\u0000\u0000"+ + "\u04fa\u00c5\u0001\u0000\u0000\u0000\u04fb\u04fd\u0003\u018a\u00c5\u0000"+ + "\u04fc\u04fb\u0001\u0000\u0000\u0000\u04fc\u04fd\u0001\u0000\u0000\u0000"+ + "\u04fd\u04ff\u0001\u0000\u0000\u0000\u04fe\u0500\u0003\u016e\u00b7\u0000"+ + "\u04ff\u04fe\u0001\u0000\u0000\u0000\u04ff\u0500\u0001\u0000\u0000\u0000"+ + "\u0500\u0501\u0001\u0000\u0000\u0000\u0501\u0502\u0005\u001f\u0000\u0000"+ + "\u0502\u00c7\u0001\u0000\u0000\u0000\u0503\u050c\u0005\u008b\u0000\u0000"+ + "\u0504\u0506\u0003\u00cae\u0000\u0505\u0507\u0003\u00ccf\u0000\u0506\u0505"+ + "\u0001\u0000\u0000\u0000\u0506\u0507\u0001\u0000\u0000\u0000\u0507\u050d"+ + "\u0001\u0000\u0000\u0000\u0508\u050a\u0003\u00ccf\u0000\u0509\u050b\u0003"+ + "\u00cae\u0000\u050a\u0509\u0001\u0000\u0000\u0000\u050a\u050b\u0001\u0000"+ + "\u0000\u0000\u050b\u050d\u0001\u0000\u0000\u0000\u050c\u0504\u0001\u0000"+ + "\u0000\u0000\u050c\u0508\u0001\u0000\u0000\u0000\u050d\u050e\u0001\u0000"+ + "\u0000\u0000\u050e\u050f\u0005\u008e\u0000\u0000\u050f\u00c9\u0001\u0000"+ + "\u0000\u0000\u0510\u0512\u0003\u018a\u00c5\u0000\u0511\u0510\u0001\u0000"+ + "\u0000\u0000\u0511\u0512\u0001\u0000\u0000\u0000\u0512\u0513\u0001\u0000"+ + "\u0000\u0000\u0513\u0515\u0005 \u0000\u0000\u0514\u0516\u0003\u00c0`\u0000"+ + "\u0515\u0514\u0001\u0000\u0000\u0000\u0515\u0516\u0001\u0000\u0000\u0000"+ + "\u0516\u0517\u0001\u0000\u0000\u0000\u0517\u0518\u0003\u00a2Q\u0000\u0518"+ + "\u00cb\u0001\u0000\u0000\u0000\u0519\u051b\u0003\u018a\u00c5\u0000\u051a"+ + "\u0519\u0001\u0000\u0000\u0000\u051a\u051b\u0001\u0000\u0000\u0000\u051b"+ + "\u051c\u0001\u0000\u0000\u0000\u051c\u051e\u0005!\u0000\u0000\u051d\u051f"+ + "\u0003\u00c0`\u0000\u051e\u051d\u0001\u0000\u0000\u0000\u051e\u051f\u0001"+ + "\u0000\u0000\u0000\u051f\u0520\u0001\u0000\u0000\u0000\u0520\u0521\u0003"+ + "\u00a2Q\u0000\u0521\u00cd\u0001\u0000\u0000\u0000\u0522\u0524\u0003\u018a"+ + "\u00c5\u0000\u0523\u0522\u0001\u0000\u0000\u0000\u0523\u0524\u0001\u0000"+ + "\u0000\u0000\u0524\u0526\u0001\u0000\u0000\u0000\u0525\u0527\u0003\u016c"+ + "\u00b6\u0000\u0526\u0525\u0001\u0000\u0000\u0000\u0526\u0527\u0001\u0000"+ + "\u0000\u0000\u0527\u0528\u0001\u0000\u0000\u0000\u0528\u0529\u0005;\u0000"+ + "\u0000\u0529\u052b\u0003\u00d0h\u0000\u052a\u052c\u0003\u0086C\u0000\u052b"+ + "\u052a\u0001\u0000\u0000\u0000\u052b\u052c\u0001\u0000\u0000\u0000\u052c"+ + "\u052d\u0001\u0000\u0000\u0000\u052d\u052e\u0003\u00d2i\u0000\u052e\u00cf"+ + "\u0001\u0000\u0000\u0000\u052f\u0530\u0003\u0236\u011b\u0000\u0530\u00d1"+ + "\u0001\u0000\u0000\u0000\u0531\u0532\u0005\u009c\u0000\u0000\u0532\u0533"+ + "\u0003\u020a\u0105\u0000\u0533\u00d3\u0001\u0000\u0000\u0000\u0534\u0535"+ + "\u0003\u00d6k\u0000\u0535\u0537\u0003\u00d8l\u0000\u0536\u0538\u0003\u0086"+ + "C\u0000\u0537\u0536\u0001\u0000\u0000\u0000\u0537\u0538\u0001\u0000\u0000"+ + "\u0000\u0538\u0539\u0001\u0000\u0000\u0000\u0539\u053b\u0003\u00dam\u0000"+ + "\u053a\u053c\u0003\u008cF\u0000\u053b\u053a\u0001\u0000\u0000\u0000\u053b"+ + "\u053c\u0001\u0000\u0000\u0000\u053c\u053e\u0001\u0000\u0000\u0000\u053d"+ + "\u053f\u0003\u00deo\u0000\u053e\u053d\u0001\u0000\u0000\u0000\u053e\u053f"+ + "\u0001\u0000\u0000\u0000\u053f\u00d5\u0001\u0000\u0000\u0000\u0540\u0542"+ + "\u0003\u018a\u00c5\u0000\u0541\u0540\u0001\u0000\u0000\u0000\u0541\u0542"+ + "\u0001\u0000\u0000\u0000\u0542\u0544\u0001\u0000\u0000\u0000\u0543\u0545"+ + "\u0003\u016a\u00b5\u0000\u0544\u0543\u0001\u0000\u0000\u0000\u0544\u0545"+ + "\u0001\u0000\u0000\u0000\u0545\u0546\u0001\u0000\u0000\u0000\u0546\u0547"+ + "\u0005\u0010\u0000\u0000\u0547\u00d7\u0001\u0000\u0000\u0000\u0548\u054b"+ + "\u0003\u0236\u011b\u0000\u0549\u054b\u0003\u0254\u012a\u0000\u054a\u0548"+ + "\u0001\u0000\u0000\u0000\u054a\u0549\u0001\u0000\u0000\u0000\u054b\u00d9"+ + "\u0001\u0000\u0000\u0000\u054c\u0551\u0003\u00e0p\u0000\u054d\u054f\u0005"+ + "\'\u0000\u0000\u054e\u054d\u0001\u0000\u0000\u0000\u054e\u054f\u0001\u0000"+ + "\u0000\u0000\u054f\u0552\u0001\u0000\u0000\u0000\u0550\u0552\u0005(\u0000"+ + "\u0000\u0551\u054e\u0001\u0000\u0000\u0000\u0551\u0550\u0001\u0000\u0000"+ + "\u0000\u0552\u0554\u0001\u0000\u0000\u0000\u0553\u0555\u0003\u00dcn\u0000"+ + "\u0554\u0553\u0001\u0000\u0000\u0000\u0554\u0555\u0001\u0000\u0000\u0000"+ + "\u0555\u00db\u0001\u0000\u0000\u0000\u0556\u0558\u0003\u0248\u0124\u0000"+ + "\u0557\u0559\u0003\u018a\u00c5\u0000\u0558\u0557\u0001\u0000\u0000\u0000"+ + "\u0558\u0559\u0001\u0000\u0000\u0000\u0559\u055a\u0001\u0000\u0000\u0000"+ + "\u055a\u055b\u0003\u020a\u0105\u0000\u055b\u00dd\u0001\u0000\u0000\u0000"+ + "\u055c\u055d\u0003\u00a2Q\u0000\u055d\u00df\u0001\u0000\u0000\u0000\u055e"+ + "\u0560\u0005\u008c\u0000\u0000\u055f\u0561\u0003\u00e2q\u0000\u0560\u055f"+ + "\u0001\u0000\u0000\u0000\u0560\u0561\u0001\u0000\u0000\u0000\u0561\u0562"+ + "\u0001\u0000\u0000\u0000\u0562\u0563\u0005\u008f\u0000\u0000\u0563\u00e1"+ + "\u0001\u0000\u0000\u0000\u0564\u0569\u0003\u00e4r\u0000\u0565\u0566\u0005"+ + "\u0091\u0000\u0000\u0566\u0568\u0003\u00e4r\u0000\u0567\u0565\u0001\u0000"+ + "\u0000\u0000\u0568\u056b\u0001\u0000\u0000\u0000\u0569\u0567\u0001\u0000"+ + "\u0000\u0000\u0569\u056a\u0001\u0000\u0000\u0000\u056a\u00e3\u0001\u0000"+ + "\u0000\u0000\u056b\u0569\u0001\u0000\u0000\u0000\u056c\u056e\u0003\u018a"+ + "\u00c5\u0000\u056d\u056c\u0001\u0000\u0000\u0000\u056d\u056e\u0001\u0000"+ + "\u0000\u0000\u056e\u0570\u0001\u0000\u0000\u0000\u056f\u0571\u0003\u00e6"+ + "s\u0000\u0570\u056f\u0001\u0000\u0000\u0000\u0570\u0571\u0001\u0000\u0000"+ + "\u0000\u0571\u0572\u0001\u0000\u0000\u0000\u0572\u0573\u0003\u00e8t\u0000"+ + "\u0573\u0578\u0003\u020c\u0106\u0000\u0574\u0576\u0003\u00eau\u0000\u0575"+ + "\u0574\u0001\u0000\u0000\u0000\u0575\u0576\u0001\u0000\u0000\u0000\u0576"+ + "\u0579\u0001\u0000\u0000\u0000\u0577\u0579\u0003\u024a\u0125\u0000\u0578"+ + "\u0575\u0001\u0000\u0000\u0000\u0578\u0577\u0001\u0000\u0000\u0000\u0579"+ + "\u00e5\u0001\u0000\u0000\u0000\u057a\u057b\u0003\u0236\u011b\u0000\u057b"+ + "\u00e7\u0001\u0000\u0000\u0000\u057c\u057d\u0003\u0236\u011b\u0000\u057d"+ + "\u00e9\u0001\u0000\u0000\u0000\u057e\u057f\u0005\u009c\u0000\u0000\u057f"+ + "\u0580\u0003\u0192\u00c9\u0000\u0580\u00eb\u0001\u0000\u0000\u0000\u0581"+ + "\u0583\u0003\u018a\u00c5\u0000\u0582\u0581\u0001\u0000\u0000\u0000\u0582"+ + "\u0583\u0001\u0000\u0000\u0000\u0583\u0585\u0001\u0000\u0000\u0000\u0584"+ + "\u0586\u0003\u016c\u00b6\u0000\u0585\u0584\u0001\u0000\u0000\u0000\u0585"+ + "\u0586\u0001\u0000\u0000\u0000\u0586\u0589\u0001\u0000\u0000\u0000\u0587"+ + "\u058a\u0003\u00eew\u0000\u0588\u058a\u0003\u00fe\u007f\u0000\u0589\u0587"+ + "\u0001\u0000\u0000\u0000\u0589\u0588\u0001\u0000\u0000\u0000\u058a\u00ed"+ + "\u0001\u0000\u0000\u0000\u058b\u058d\u0005)\u0000\u0000\u058c\u058b\u0001"+ + "\u0000\u0000\u0000\u058c\u058d\u0001\u0000\u0000\u0000\u058d\u058e\u0001"+ + "\u0000\u0000\u0000\u058e\u058f\u0005\r\u0000\u0000\u058f\u0591\u0003\u00fa"+ + "}\u0000\u0590\u0592\u0003\u0086C\u0000\u0591\u0590\u0001\u0000\u0000\u0000"+ + "\u0591\u0592\u0001\u0000\u0000\u0000\u0592\u0594\u0001\u0000\u0000\u0000"+ + "\u0593\u0595\u0003\u0232\u0119\u0000\u0594\u0593\u0001\u0000\u0000\u0000"+ + "\u0594\u0595\u0001\u0000\u0000\u0000\u0595\u0597\u0001\u0000\u0000\u0000"+ + "\u0596\u0598\u0003\u008cF\u0000\u0597\u0596\u0001\u0000\u0000\u0000\u0597"+ + "\u0598\u0001\u0000\u0000\u0000\u0598\u0599\u0001\u0000\u0000\u0000\u0599"+ + "\u059b\u0005\u008b\u0000\u0000\u059a\u059c\u0003\u00f0x\u0000\u059b\u059a"+ + "\u0001\u0000\u0000\u0000\u059b\u059c\u0001\u0000\u0000\u0000\u059c\u059d"+ + "\u0001\u0000\u0000\u0000\u059d\u059e\u0005\u008e\u0000\u0000\u059e\u00ef"+ + "\u0001\u0000\u0000\u0000\u059f\u05a1\u0003\u00f2y\u0000\u05a0\u059f\u0001"+ + "\u0000\u0000\u0000\u05a1\u05a2\u0001\u0000\u0000\u0000\u05a2\u05a0\u0001"+ + "\u0000\u0000\u0000\u05a2\u05a3\u0001\u0000\u0000\u0000\u05a3\u00f1\u0001"+ + "\u0000\u0000\u0000\u05a4\u05a8\u0003\u009cN\u0000\u05a5\u05a8\u0003\u00f4"+ + "z\u0000\u05a6\u05a8\u0003V+\u0000\u05a7\u05a4\u0001\u0000\u0000\u0000"+ + "\u05a7\u05a5\u0001\u0000\u0000\u0000\u05a7\u05a6\u0001\u0000\u0000\u0000"+ + "\u05a8\u00f3\u0001\u0000\u0000\u0000\u05a9\u05ab\u0003\u018a\u00c5\u0000"+ + "\u05aa\u05a9\u0001\u0000\u0000\u0000\u05aa\u05ab\u0001\u0000\u0000\u0000"+ + "\u05ab\u05ad\u0001\u0000\u0000\u0000\u05ac\u05ae\u0005)\u0000\u0000\u05ad"+ + "\u05ac\u0001\u0000\u0000\u0000\u05ad\u05ae\u0001\u0000\u0000\u0000\u05ae"+ + "\u05af\u0001\u0000\u0000\u0000\u05af\u05b0\u0005\u0004\u0000\u0000\u05b0"+ + "\u05b1\u0003\u00f6{\u0000\u05b1\u00f5\u0001\u0000\u0000\u0000\u05b2\u05b7"+ + "\u0003\u00f8|\u0000\u05b3\u05b4\u0005\u0091\u0000\u0000\u05b4\u05b6\u0003"+ + "\u00f8|\u0000\u05b5\u05b3\u0001\u0000\u0000\u0000\u05b6\u05b9\u0001\u0000"+ + "\u0000\u0000\u05b7\u05b5\u0001\u0000\u0000\u0000\u05b7\u05b8\u0001\u0000"+ + "\u0000\u0000\u05b8\u00f7\u0001\u0000\u0000\u0000\u05b9\u05b7\u0001\u0000"+ + "\u0000\u0000\u05ba\u05c4\u0003\u022c\u0116\u0000\u05bb\u05c1\u0003\u00fc"+ + "~\u0000\u05bc\u05c2\u0003\u0212\u0109\u0000\u05bd\u05be\u0005\u008c\u0000"+ + "\u0000\u05be\u05bf\u0003\u020a\u0105\u0000\u05bf\u05c0\u0005\u008f\u0000"+ + "\u0000\u05c0\u05c2\u0001\u0000\u0000\u0000\u05c1\u05bc\u0001\u0000\u0000"+ + "\u0000\u05c1\u05bd\u0001\u0000\u0000\u0000\u05c1\u05c2\u0001\u0000\u0000"+ + "\u0000\u05c2\u05c4\u0001\u0000\u0000\u0000\u05c3\u05ba\u0001\u0000\u0000"+ + "\u0000\u05c3\u05bb\u0001\u0000\u0000\u0000\u05c4\u00f9\u0001\u0000\u0000"+ + "\u0000\u05c5\u05c6\u0003\u0236\u011b\u0000\u05c6\u00fb\u0001\u0000\u0000"+ + "\u0000\u05c7\u05c8\u0003\u0236\u011b\u0000\u05c8\u00fd\u0001\u0000\u0000"+ + "\u0000\u05c9\u05ca\u0005\r\u0000\u0000\u05ca\u05cc\u0003\u00fa}\u0000"+ + "\u05cb\u05cd\u0003\u0086C\u0000\u05cc\u05cb\u0001\u0000\u0000\u0000\u05cc"+ + "\u05cd\u0001\u0000\u0000\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce"+ + "\u05d0\u0003\u0232\u0119\u0000\u05cf\u05d1\u0003\u008cF\u0000\u05d0\u05cf"+ + "\u0001\u0000\u0000\u0000\u05d0\u05d1\u0001\u0000\u0000\u0000\u05d1\u05d2"+ + "\u0001\u0000\u0000\u0000\u05d2\u05d3\u0005\u008b\u0000\u0000\u05d3\u05d4"+ + "\u0003\u0100\u0080\u0000\u05d4\u05d5\u0005\u008e\u0000\u0000\u05d5\u00ff"+ + "\u0001\u0000\u0000\u0000\u05d6\u05d8\u0003\u0102\u0081\u0000\u05d7\u05d6"+ + "\u0001\u0000\u0000\u0000\u05d8\u05d9\u0001\u0000\u0000\u0000\u05d9\u05d7"+ + "\u0001\u0000\u0000\u0000\u05d9\u05da\u0001\u0000\u0000\u0000\u05da\u0101"+ + "\u0001\u0000\u0000\u0000\u05db\u05df\u0003\u009cN\u0000\u05dc\u05df\u0003"+ + "\u0104\u0082\u0000\u05dd\u05df\u0003V+\u0000\u05de\u05db\u0001\u0000\u0000"+ + "\u0000\u05de\u05dc\u0001\u0000\u0000\u0000\u05de\u05dd\u0001\u0000\u0000"+ + "\u0000\u05df\u0103\u0001\u0000\u0000\u0000\u05e0\u05e2\u0003\u018a\u00c5"+ + "\u0000\u05e1\u05e0\u0001\u0000\u0000\u0000\u05e1\u05e2\u0001\u0000\u0000"+ + "\u0000\u05e2\u05e3\u0001\u0000\u0000\u0000\u05e3\u05e4\u0005\u0004\u0000"+ + "\u0000\u05e4\u05e5\u0003\u0106\u0083\u0000\u05e5\u0105\u0001\u0000\u0000"+ + "\u0000\u05e6\u05eb\u0003\u0108\u0084\u0000\u05e7\u05e8\u0005\u0091\u0000"+ + "\u0000\u05e8\u05ea\u0003\u0108\u0084\u0000\u05e9\u05e7\u0001\u0000\u0000"+ + "\u0000\u05ea\u05ed\u0001\u0000\u0000\u0000\u05eb\u05e9\u0001\u0000\u0000"+ + "\u0000\u05eb\u05ec\u0001\u0000\u0000\u0000\u05ec\u0107\u0001\u0000\u0000"+ + "\u0000\u05ed\u05eb\u0001\u0000\u0000\u0000\u05ee\u05f0\u0003\u00fc~\u0000"+ + "\u05ef\u05f1\u0003\u010a\u0085\u0000\u05f0\u05ef\u0001\u0000\u0000\u0000"+ + "\u05f0\u05f1\u0001\u0000\u0000\u0000\u05f1\u0109\u0001\u0000\u0000\u0000"+ + "\u05f2\u05f3\u0005\u009c\u0000\u0000\u05f3\u05f4\u0003\u010c\u0086\u0000"+ + "\u05f4\u010b\u0001\u0000\u0000\u0000\u05f5\u05f9\u0003\u0264\u0132\u0000"+ + "\u05f6\u05f9\u0003\u0270\u0138\u0000\u05f7\u05f9\u0003\u0266\u0133\u0000"+ + "\u05f8\u05f5\u0001\u0000\u0000\u0000\u05f8\u05f6\u0001\u0000\u0000\u0000"+ + "\u05f8\u05f7\u0001\u0000\u0000\u0000\u05f9\u010d\u0001\u0000\u0000\u0000"+ + "\u05fa\u05fc\u0003\u018a\u00c5\u0000\u05fb\u05fa\u0001\u0000\u0000\u0000"+ + "\u05fb\u05fc\u0001\u0000\u0000\u0000\u05fc\u05fe\u0001\u0000\u0000\u0000"+ + "\u05fd\u05ff\u0003\u016c\u00b6\u0000\u05fe\u05fd\u0001\u0000\u0000\u0000"+ + "\u05fe\u05ff\u0001\u0000\u0000\u0000\u05ff\u0600\u0001\u0000\u0000\u0000"+ + "\u0600\u0601\u0005$\u0000\u0000\u0601\u0603\u0003\u0110\u0088\u0000\u0602"+ + "\u0604\u0003\u0086C\u0000\u0603\u0602\u0001\u0000\u0000\u0000\u0603\u0604"+ + "\u0001\u0000\u0000\u0000\u0604\u0606\u0001\u0000\u0000\u0000\u0605\u0607"+ + "\u0003\u0232\u0119\u0000\u0606\u0605\u0001\u0000\u0000\u0000\u0606\u0607"+ + "\u0001\u0000\u0000\u0000\u0607\u0609\u0001\u0000\u0000\u0000\u0608\u060a"+ + "\u0003\u008cF\u0000\u0609\u0608\u0001\u0000\u0000\u0000\u0609\u060a\u0001"+ + "\u0000\u0000\u0000\u060a\u060b\u0001\u0000\u0000\u0000\u060b\u060c\u0003"+ + "\u0112\u0089\u0000\u060c\u010f\u0001\u0000\u0000\u0000\u060d\u060e\u0003"+ + "\u0236\u011b\u0000\u060e\u0111\u0001\u0000\u0000\u0000\u060f\u0610\u0005"+ + "\u008b\u0000\u0000\u0610\u0611\u0003\u0114\u008a\u0000\u0611\u0612\u0005"+ + "\u008e\u0000\u0000\u0612\u0113\u0001\u0000\u0000\u0000\u0613\u0615\u0003"+ + "\u0116\u008b\u0000\u0614\u0613\u0001\u0000\u0000\u0000\u0615\u0618\u0001"+ + "\u0000\u0000\u0000\u0616\u0614\u0001\u0000\u0000\u0000\u0616\u0617\u0001"+ + "\u0000\u0000\u0000\u0617\u0115\u0001\u0000\u0000\u0000\u0618\u0616\u0001"+ + "\u0000\u0000\u0000\u0619\u061c\u0003\u009cN\u0000\u061a\u061c\u0003V+"+ + "\u0000\u061b\u0619\u0001\u0000\u0000\u0000\u061b\u061a\u0001\u0000\u0000"+ + "\u0000\u061c\u0117\u0001\u0000\u0000\u0000\u061d\u061f\u0003\u018a\u00c5"+ + "\u0000\u061e\u061d\u0001\u0000\u0000\u0000\u061e\u061f\u0001\u0000\u0000"+ + "\u0000\u061f\u062a\u0001\u0000\u0000\u0000\u0620\u0622\u0003\u016c\u00b6"+ + "\u0000\u0621\u0620\u0001\u0000\u0000\u0000\u0621\u0622\u0001\u0000\u0000"+ + "\u0000\u0622\u0624\u0001\u0000\u0000\u0000\u0623\u0625\u0005\u0015\u0000"+ + "\u0000\u0624\u0623\u0001\u0000\u0000\u0000\u0624\u0625\u0001\u0000\u0000"+ + "\u0000\u0625\u062b\u0001\u0000\u0000\u0000\u0626\u0628\u0005\u0015\u0000"+ + "\u0000\u0627\u0629\u0003\u016c\u00b6\u0000\u0628\u0627\u0001\u0000\u0000"+ + "\u0000\u0628\u0629\u0001\u0000\u0000\u0000\u0629\u062b\u0001\u0000\u0000"+ + "\u0000\u062a\u0621\u0001\u0000\u0000\u0000\u062a\u0626\u0001\u0000\u0000"+ + "\u0000\u062b\u062c\u0001\u0000\u0000\u0000\u062c\u062d\u0005\u0006\u0000"+ + "\u0000\u062d\u062f\u0003\u011a\u008d\u0000\u062e\u0630\u0003\u0086C\u0000"+ + "\u062f\u062e\u0001\u0000\u0000\u0000\u062f\u0630\u0001\u0000\u0000\u0000"+ + "\u0630\u0632\u0001\u0000\u0000\u0000\u0631\u0633\u0003\u0232\u0119\u0000"+ + "\u0632\u0631\u0001\u0000\u0000\u0000\u0632\u0633\u0001\u0000\u0000\u0000"+ + "\u0633\u0635\u0001\u0000\u0000\u0000\u0634\u0636\u0003\u008cF\u0000\u0635"+ + "\u0634\u0001\u0000\u0000\u0000\u0635\u0636\u0001\u0000\u0000\u0000\u0636"+ + "\u0637\u0001\u0000\u0000\u0000\u0637\u0638\u0003\u011c\u008e\u0000\u0638"+ + "\u0119\u0001\u0000\u0000\u0000\u0639\u063a\u0003\u0236\u011b\u0000\u063a"+ + "\u011b\u0001\u0000\u0000\u0000\u063b\u063c\u0005\u008b\u0000\u0000\u063c"+ + "\u063d\u0003\u011e\u008f\u0000\u063d\u063e\u0005\u008e\u0000\u0000\u063e"+ + "\u011d\u0001\u0000\u0000\u0000\u063f\u0641\u0003\u0120\u0090\u0000\u0640"+ + "\u063f\u0001\u0000\u0000\u0000\u0641\u0644\u0001\u0000\u0000\u0000\u0642"+ + "\u0640\u0001\u0000\u0000\u0000\u0642\u0643\u0001\u0000\u0000\u0000\u0643"+ + "\u011f\u0001\u0000\u0000\u0000\u0644\u0642\u0001\u0000\u0000\u0000\u0645"+ + "\u0648\u0003\u009cN\u0000\u0646\u0648\u0003V+\u0000\u0647\u0645\u0001"+ + "\u0000\u0000\u0000\u0647\u0646\u0001\u0000\u0000\u0000\u0648\u0121\u0001"+ + "\u0000\u0000\u0000\u0649\u064b\u0003\u018a\u00c5\u0000\u064a\u0649\u0001"+ + "\u0000\u0000\u0000\u064a\u064b\u0001\u0000\u0000\u0000\u064b\u064d\u0001"+ + "\u0000\u0000\u0000\u064c\u064e\u0003\u016c\u00b6\u0000\u064d\u064c\u0001"+ + "\u0000\u0000\u0000\u064d\u064e\u0001\u0000\u0000\u0000\u064e\u064f\u0001"+ + "\u0000\u0000\u0000\u064f\u0650\u0005\u001d\u0000\u0000\u0650\u0654\u0003"+ + "\u0124\u0092\u0000\u0651\u0652\u0005\u0092\u0000\u0000\u0652\u0655\u0005"+ + "\u0006\u0000\u0000\u0653\u0655\u0003\u0232\u0119\u0000\u0654\u0651\u0001"+ + "\u0000\u0000\u0000\u0654\u0653\u0001\u0000\u0000\u0000\u0654\u0655\u0001"+ + "\u0000\u0000\u0000\u0655\u0657\u0001\u0000\u0000\u0000\u0656\u0658\u0003"+ + "\u008cF\u0000\u0657\u0656\u0001\u0000\u0000\u0000\u0657\u0658\u0001\u0000"+ + "\u0000\u0000\u0658\u0659\u0001\u0000\u0000\u0000\u0659\u065a\u0003\u0126"+ + "\u0093\u0000\u065a\u0123\u0001\u0000\u0000\u0000\u065b\u065c\u0003\u0236"+ + "\u011b\u0000\u065c\u0125\u0001\u0000\u0000\u0000\u065d\u065e\u0005\u008b"+ + "\u0000\u0000\u065e\u065f\u0003\u0128\u0094\u0000\u065f\u0660\u0005\u008e"+ + "\u0000\u0000\u0660\u0127\u0001\u0000\u0000\u0000\u0661\u0663\u0003\u012a"+ + "\u0095\u0000\u0662\u0661\u0001\u0000\u0000\u0000\u0663\u0666\u0001\u0000"+ + "\u0000\u0000\u0664\u0662\u0001\u0000\u0000\u0000\u0664\u0665\u0001\u0000"+ + "\u0000\u0000\u0665\u0129\u0001\u0000\u0000\u0000\u0666\u0664\u0001\u0000"+ + "\u0000\u0000\u0667\u066a\u0003\u012c\u0096\u0000\u0668\u066a\u0003V+\u0000"+ + "\u0669\u0667\u0001\u0000\u0000\u0000\u0669\u0668\u0001\u0000\u0000\u0000"+ + "\u066a\u012b\u0001\u0000\u0000\u0000\u066b\u0672\u0003\u012e\u0097\u0000"+ + "\u066c\u0672\u0003\u0130\u0098\u0000\u066d\u0672\u0003\u0132\u0099\u0000"+ + "\u066e\u0672\u0003\u0134\u009a\u0000\u066f\u0672\u0003\u0136\u009b\u0000"+ + "\u0670\u0672\u0003\u00ceg\u0000\u0671\u066b\u0001\u0000\u0000\u0000\u0671"+ + "\u066c\u0001\u0000\u0000\u0000\u0671\u066d\u0001\u0000\u0000\u0000\u0671"+ + "\u066e\u0001\u0000\u0000\u0000\u0671\u066f\u0001\u0000\u0000\u0000\u0671"+ + "\u0670\u0001\u0000\u0000\u0000\u0672\u012d\u0001\u0000\u0000\u0000\u0673"+ + "\u0674\u0003\u00b6[\u0000\u0674\u0675\u0003\u00b8\\\u0000\u0675\u0676"+ + "\u0003\u020c\u0106\u0000\u0676\u0677\u0003\u00c2a\u0000\u0677\u012f\u0001"+ + "\u0000\u0000\u0000\u0678\u0679\u0003\u00d6k\u0000\u0679\u067b\u0003\u00d8"+ + "l\u0000\u067a\u067c\u0003\u0086C\u0000\u067b\u067a\u0001\u0000\u0000\u0000"+ + "\u067b\u067c\u0001\u0000\u0000\u0000\u067c\u067d\u0001\u0000\u0000\u0000"+ + "\u067d\u067f\u0003\u00dam\u0000\u067e\u0680\u0003\u008cF\u0000\u067f\u067e"+ + "\u0001\u0000\u0000\u0000\u067f\u0680\u0001\u0000\u0000\u0000\u0680\u0131"+ + "\u0001\u0000\u0000\u0000\u0681\u0683\u0003\u013a\u009d\u0000\u0682\u0684"+ + "\u0003\u0086C\u0000\u0683\u0682\u0001\u0000\u0000\u0000\u0683\u0684\u0001"+ + "\u0000\u0000\u0000\u0684\u0685\u0001\u0000\u0000\u0000\u0685\u068a\u0003"+ + "\u00e0p\u0000\u0686\u0688\u0005\'\u0000\u0000\u0687\u0686\u0001\u0000"+ + "\u0000\u0000\u0687\u0688\u0001\u0000\u0000\u0000\u0688\u068b\u0001\u0000"+ + "\u0000\u0000\u0689\u068b\u0005(\u0000\u0000\u068a\u0687\u0001\u0000\u0000"+ + "\u0000\u068a\u0689\u0001\u0000\u0000\u0000\u068b\u068d\u0001\u0000\u0000"+ + "\u0000\u068c\u068e\u0003\u008cF\u0000\u068d\u068c\u0001\u0000\u0000\u0000"+ + "\u068d\u068e\u0001\u0000\u0000\u0000\u068e\u0133\u0001\u0000\u0000\u0000"+ + "\u068f\u0690\u0003\u014a\u00a5\u0000\u0690\u0692\u0003\u014c\u00a6\u0000"+ + "\u0691\u0693\u0003\u008cF\u0000\u0692\u0691\u0001\u0000\u0000\u0000\u0692"+ + "\u0693\u0001\u0000\u0000\u0000\u0693\u0694\u0001\u0000\u0000\u0000\u0694"+ + "\u0695\u0003\u00c2a\u0000\u0695\u0135\u0001\u0000\u0000\u0000\u0696\u0698"+ + "\u0003\u018a\u00c5\u0000\u0697\u0696\u0001\u0000\u0000\u0000\u0697\u0698"+ + "\u0001\u0000\u0000\u0000\u0698\u069a\u0001\u0000\u0000\u0000\u0699\u069b"+ + "\u0003\u016c\u00b6\u0000\u069a\u0699\u0001\u0000\u0000\u0000\u069a\u069b"+ + "\u0001\u0000\u0000\u0000\u069b\u069c\u0001\u0000\u0000\u0000\u069c\u069d"+ + "\u0005,\u0000\u0000\u069d\u069f\u0003\u00d0h\u0000\u069e\u06a0\u0003\u0232"+ + "\u0119\u0000\u069f\u069e\u0001\u0000\u0000\u0000\u069f\u06a0\u0001\u0000"+ + "\u0000\u0000\u06a0\u06a2\u0001\u0000\u0000\u0000\u06a1\u06a3\u0003\u00d2"+ + "i\u0000\u06a2\u06a1\u0001\u0000\u0000\u0000\u06a2\u06a3\u0001\u0000\u0000"+ + "\u0000\u06a3\u06a5\u0001\u0000\u0000\u0000\u06a4\u06a6\u0003\u008cF\u0000"+ + "\u06a5\u06a4\u0001\u0000\u0000\u0000\u06a5\u06a6\u0001\u0000\u0000\u0000"+ + "\u06a6\u0137\u0001\u0000\u0000\u0000\u06a7\u06a9\u0003\u013a\u009d\u0000"+ + "\u06a8\u06aa\u0003\u0086C\u0000\u06a9\u06a8\u0001\u0000\u0000\u0000\u06a9"+ + "\u06aa\u0001\u0000\u0000\u0000\u06aa\u06ab\u0001\u0000\u0000\u0000\u06ab"+ + "\u06ad\u0003\u00e0p\u0000\u06ac\u06ae\u0007\b\u0000\u0000\u06ad\u06ac"+ + "\u0001\u0000\u0000\u0000\u06ad\u06ae\u0001\u0000\u0000\u0000\u06ae\u06b0"+ + "\u0001\u0000\u0000\u0000\u06af\u06b1\u0003\u008cF\u0000\u06b0\u06af\u0001"+ + "\u0000\u0000\u0000\u06b0\u06b1\u0001\u0000\u0000\u0000\u06b1\u06b2\u0001"+ + "\u0000\u0000\u0000\u06b2\u06b3\u0003\u013c\u009e\u0000\u06b3\u0139\u0001"+ + "\u0000\u0000\u0000\u06b4\u06b6\u0003\u018a\u00c5\u0000\u06b5\u06b4\u0001"+ + "\u0000\u0000\u0000\u06b5\u06b6\u0001\u0000\u0000\u0000\u06b6\u06b8\u0001"+ + "\u0000\u0000\u0000\u06b7\u06b9\u0003\u016a\u00b5\u0000\u06b8\u06b7\u0001"+ + "\u0000\u0000\u0000\u06b8\u06b9\u0001\u0000\u0000\u0000\u06b9\u06ba\u0001"+ + "\u0000\u0000\u0000\u06ba\u06bc\u0005*\u0000\u0000\u06bb\u06bd\u0007\t"+ + "\u0000\u0000\u06bc\u06bb\u0001\u0000\u0000\u0000\u06bc\u06bd\u0001\u0000"+ + "\u0000\u0000\u06bd\u013b\u0001\u0000\u0000\u0000\u06be\u06bf\u0003\u00a2"+ + "Q\u0000\u06bf\u013d\u0001\u0000\u0000\u0000\u06c0\u06c2\u0003\u018a\u00c5"+ + "\u0000\u06c1\u06c0\u0001\u0000\u0000\u0000\u06c1\u06c2\u0001\u0000\u0000"+ + "\u0000\u06c2\u06c3\u0001\u0000\u0000\u0000\u06c3\u06c4\u0005+\u0000\u0000"+ + "\u06c4\u06c5\u0003\u00a2Q\u0000\u06c5\u013f\u0001\u0000\u0000\u0000\u06c6"+ + "\u06c8\u0003\u018a\u00c5\u0000\u06c7\u06c6\u0001\u0000\u0000\u0000\u06c7"+ + "\u06c8\u0001\u0000\u0000\u0000\u06c8\u06ca\u0001\u0000\u0000\u0000\u06c9"+ + "\u06cb\u0003\u016c\u00b6\u0000\u06ca\u06c9\u0001\u0000\u0000\u0000\u06ca"+ + "\u06cb\u0001\u0000\u0000\u0000\u06cb\u06cc\u0001\u0000\u0000\u0000\u06cc"+ + "\u06cd\u0005-\u0000\u0000\u06cd\u06cf\u0003\u020e\u0107\u0000\u06ce\u06d0"+ + "\u0003\u0232\u0119\u0000\u06cf\u06ce\u0001\u0000\u0000\u0000\u06cf\u06d0"+ + "\u0001\u0000\u0000\u0000\u06d0\u06d2\u0001\u0000\u0000\u0000\u06d1\u06d3"+ + "\u0003\u008cF\u0000\u06d2\u06d1\u0001\u0000\u0000\u0000\u06d2\u06d3\u0001"+ + "\u0000\u0000\u0000\u06d3\u06d4\u0001\u0000\u0000\u0000\u06d4\u06d5\u0003"+ + "\u0142\u00a1\u0000\u06d5\u0141\u0001\u0000\u0000\u0000\u06d6\u06d7\u0005"+ + "\u008b\u0000\u0000\u06d7\u06d8\u0003\u0144\u00a2\u0000\u06d8\u06d9\u0005"+ + "\u008e\u0000\u0000\u06d9\u0143\u0001\u0000\u0000\u0000\u06da\u06dc\u0003"+ + "\u0146\u00a3\u0000\u06db\u06da\u0001\u0000\u0000\u0000\u06dc\u06df\u0001"+ + "\u0000\u0000\u0000\u06dd\u06db\u0001\u0000\u0000\u0000\u06dd\u06de\u0001"+ + "\u0000\u0000\u0000\u06de\u0145\u0001\u0000\u0000\u0000\u06df\u06dd\u0001"+ + "\u0000\u0000\u0000\u06e0\u06e3\u0003\u009cN\u0000\u06e1\u06e3\u0003V+"+ + "\u0000\u06e2\u06e0\u0001\u0000\u0000\u0000\u06e2\u06e1\u0001\u0000\u0000"+ + "\u0000\u06e3\u0147\u0001\u0000\u0000\u0000\u06e4\u06e5\u0003\u014a\u00a5"+ + "\u0000\u06e5\u06e7\u0003\u014c\u00a6\u0000\u06e6\u06e8\u0003\u008cF\u0000"+ + "\u06e7\u06e6\u0001\u0000\u0000\u0000\u06e7\u06e8\u0001\u0000\u0000\u0000"+ + "\u06e8\u06ec\u0001\u0000\u0000\u0000\u06e9\u06ed\u0003\u00a2Q\u0000\u06ea"+ + "\u06ed\u0003\u00ba]\u0000\u06eb\u06ed\u0003\u00c2a\u0000\u06ec\u06e9\u0001"+ + "\u0000\u0000\u0000\u06ec\u06ea\u0001\u0000\u0000\u0000\u06ec\u06eb\u0001"+ + "\u0000\u0000\u0000\u06ed\u0149\u0001\u0000\u0000\u0000\u06ee\u06f0\u0003"+ + "\u018a\u00c5\u0000\u06ef\u06ee\u0001\u0000\u0000\u0000\u06ef\u06f0\u0001"+ + "\u0000\u0000\u0000\u06f0\u06f2\u0001\u0000\u0000\u0000\u06f1\u06f3\u0003"+ + "\u016a\u00b5\u0000\u06f2\u06f1\u0001\u0000\u0000\u0000\u06f2\u06f3\u0001"+ + "\u0000\u0000\u0000\u06f3\u06f4\u0001\u0000\u0000\u0000\u06f4\u06f6\u0005"+ + ".\u0000\u0000\u06f5\u06f7\u0003\u0086C\u0000\u06f6\u06f5\u0001\u0000\u0000"+ + "\u0000\u06f6\u06f7\u0001\u0000\u0000\u0000\u06f7\u06f8\u0001\u0000\u0000"+ + "\u0000\u06f8\u06f9\u0003\u00e0p\u0000\u06f9\u014b\u0001\u0000\u0000\u0000"+ + "\u06fa\u06fc\u0003\u0248\u0124\u0000\u06fb\u06fd\u0003\u018a\u00c5\u0000"+ + "\u06fc\u06fb\u0001\u0000\u0000\u0000\u06fc\u06fd\u0001\u0000\u0000\u0000"+ + "\u06fd\u06fe\u0001\u0000\u0000\u0000\u06fe\u06ff\u0003\u020a\u0105\u0000"+ + "\u06ff\u014d\u0001\u0000\u0000\u0000\u0700\u0704\u0003\u0150\u00a8\u0000"+ + "\u0701\u0704\u0003\u0152\u00a9\u0000\u0702\u0704\u0003\u0154\u00aa\u0000"+ + "\u0703\u0700\u0001\u0000\u0000\u0000\u0703\u0701\u0001\u0000\u0000\u0000"+ + "\u0703\u0702\u0001\u0000\u0000\u0000\u0704\u014f\u0001\u0000\u0000\u0000"+ + "\u0705\u0706\u0005/\u0000\u0000\u0706\u0707\u0005:\u0000\u0000\u0707\u0708"+ + "\u0003\u0254\u012a\u0000\u0708\u0151\u0001\u0000\u0000\u0000\u0709\u070a"+ + "\u00059\u0000\u0000\u070a\u070b\u0005:\u0000\u0000\u070b\u070c\u0003\u0254"+ + "\u012a\u0000\u070c\u0153\u0001\u0000\u0000\u0000\u070d\u070e\u00050\u0000"+ + "\u0000\u070e\u070f\u0005:\u0000\u0000\u070f\u0711\u0003\u0254\u012a\u0000"+ + "\u0710\u0712\u0003\u0156\u00ab\u0000\u0711\u0710\u0001\u0000\u0000\u0000"+ + "\u0711\u0712\u0001\u0000\u0000\u0000\u0712\u0155\u0001\u0000\u0000\u0000"+ + "\u0713\u0714\u0005\u0092\u0000\u0000\u0714\u0715\u0003\u0166\u00b3\u0000"+ + "\u0715\u0157\u0001\u0000\u0000\u0000\u0716\u0717\u00054\u0000\u0000\u0717"+ + "\u0718\u0003\u0166\u00b3\u0000\u0718\u071a\u0005\u008b\u0000\u0000\u0719"+ + "\u071b\u0003\u015a\u00ad\u0000\u071a\u0719\u0001\u0000\u0000\u0000\u071a"+ + "\u071b\u0001\u0000\u0000\u0000\u071b\u071c\u0001\u0000\u0000\u0000\u071c"+ + "\u071d\u0005\u008e\u0000\u0000\u071d\u0159\u0001\u0000\u0000\u0000\u071e"+ + "\u0720\u0003\u015c\u00ae\u0000\u071f\u071e\u0001\u0000\u0000\u0000\u0720"+ + "\u0721\u0001\u0000\u0000\u0000\u0721\u071f\u0001\u0000\u0000\u0000\u0721"+ + "\u0722\u0001\u0000\u0000\u0000\u0722\u015b\u0001\u0000\u0000\u0000\u0723"+ + "\u0727\u0003\u015e\u00af\u0000\u0724\u0727\u0003\u0160\u00b0\u0000\u0725"+ + "\u0727\u0003\u0162\u00b1\u0000\u0726\u0723\u0001\u0000\u0000\u0000\u0726"+ + "\u0724\u0001\u0000\u0000\u0000\u0726\u0725\u0001\u0000\u0000\u0000\u0727"+ + "\u015d\u0001\u0000\u0000\u0000\u0728\u0729\u0007\n\u0000\u0000\u0729\u072a"+ + "\u0005\u0092\u0000\u0000\u072a\u072b\u0003\u0164\u00b2\u0000\u072b\u015f"+ + "\u0001\u0000\u0000\u0000\u072c\u072d\u00057\u0000\u0000\u072d\u072e\u0005"+ + "\u0092\u0000\u0000\u072e\u072f\u0003\u0266\u0133\u0000\u072f\u0161\u0001"+ + "\u0000\u0000\u0000\u0730\u0731\u00058\u0000\u0000\u0731\u0732\u0005\u0092"+ + "\u0000\u0000\u0732\u0733\u0007\u000b\u0000\u0000\u0733\u0163\u0001\u0000"+ + "\u0000\u0000\u0734\u0739\u0003\u0166\u00b3\u0000\u0735\u0736\u0005\u0091"+ + "\u0000\u0000\u0736\u0738\u0003\u0166\u00b3\u0000\u0737\u0735\u0001\u0000"+ + "\u0000\u0000\u0738\u073b\u0001\u0000\u0000\u0000\u0739\u0737\u0001\u0000"+ + "\u0000\u0000\u0739\u073a\u0001\u0000\u0000\u0000\u073a\u0165\u0001\u0000"+ + "\u0000\u0000\u073b\u0739\u0001\u0000\u0000\u0000\u073c\u0741\u0003\u0236"+ + "\u011b\u0000\u073d\u073e\u0005\u008a\u0000\u0000\u073e\u0740\u0003\u0236"+ + "\u011b\u0000\u073f\u073d\u0001\u0000\u0000\u0000\u0740\u0743\u0001\u0000"+ + "\u0000\u0000\u0741\u073f\u0001\u0000\u0000\u0000\u0741\u0742\u0001\u0000"+ + "\u0000\u0000\u0742\u0167\u0001\u0000\u0000\u0000\u0743\u0741\u0001\u0000"+ + "\u0000\u0000\u0744\u075a\u0005\u0006\u0000\u0000\u0745\u075a\u0005B\u0000"+ + "\u0000\u0746\u075a\u0005C\u0000\u0000\u0747\u075a\u0005\u0015\u0000\u0000"+ + "\u0748\u075a\u00050\u0000\u0000\u0749\u075a\u0005D\u0000\u0000\u074a\u075a"+ + "\u0005E\u0000\u0000\u074b\u075a\u0005F\u0000\u0000\u074c\u075a\u00059"+ + "\u0000\u0000\u074d\u075a\u0005/\u0000\u0000\u074e\u075a\u0005G\u0000\u0000"+ + "\u074f\u075a\u0005H\u0000\u0000\u0750\u0754\u0005J\u0000\u0000\u0751\u0752"+ + "\u0005\u008c\u0000\u0000\u0752\u0753\u0007\f\u0000\u0000\u0753\u0755\u0005"+ + "\u008f\u0000\u0000\u0754\u0751\u0001\u0000\u0000\u0000\u0754\u0755\u0001"+ + "\u0000\u0000\u0000\u0755\u075a\u0001\u0000\u0000\u0000\u0756\u075a\u0005"+ + "I\u0000\u0000\u0757\u075a\u0003\u016c\u00b6\u0000\u0758\u075a\u0003\u016e"+ + "\u00b7\u0000\u0759\u0744\u0001\u0000\u0000\u0000\u0759\u0745\u0001\u0000"+ + "\u0000\u0000\u0759\u0746\u0001\u0000\u0000\u0000\u0759\u0747\u0001\u0000"+ + "\u0000\u0000\u0759\u0748\u0001\u0000\u0000\u0000\u0759\u0749\u0001\u0000"+ + "\u0000\u0000\u0759\u074a\u0001\u0000\u0000\u0000\u0759\u074b\u0001\u0000"+ + "\u0000\u0000\u0759\u074c\u0001\u0000\u0000\u0000\u0759\u074d\u0001\u0000"+ + "\u0000\u0000\u0759\u074e\u0001\u0000\u0000\u0000\u0759\u074f\u0001\u0000"+ + "\u0000\u0000\u0759\u0750\u0001\u0000\u0000\u0000\u0759\u0756\u0001\u0000"+ + "\u0000\u0000\u0759\u0757\u0001\u0000\u0000\u0000\u0759\u0758\u0001\u0000"+ + "\u0000\u0000\u075a\u0169\u0001\u0000\u0000\u0000\u075b\u075d\u0003\u0168"+ + "\u00b4\u0000\u075c\u075b\u0001\u0000\u0000\u0000\u075d\u075e\u0001\u0000"+ + "\u0000\u0000\u075e\u075c\u0001\u0000\u0000\u0000\u075e\u075f\u0001\u0000"+ + "\u0000\u0000\u075f\u016b\u0001\u0000\u0000\u0000\u0760\u0764\u0007\r\u0000"+ + "\u0000\u0761\u0762\u0005\u008c\u0000\u0000\u0762\u0763\u0005\u001f\u0000"+ + "\u0000\u0763\u0765\u0005\u008f\u0000\u0000\u0764\u0761\u0001\u0000\u0000"+ + "\u0000\u0764\u0765\u0001\u0000\u0000\u0000\u0765\u016d\u0001\u0000\u0000"+ + "\u0000\u0766\u0767\u0007\u000e\u0000\u0000\u0767\u016f\u0001\u0000\u0000"+ + "\u0000\u0768\u076c\u0006\u00b8\uffff\uffff\u0000\u0769\u076d\u0003\u0172"+ + "\u00b9\u0000\u076a\u076d\u0003\u0174\u00ba\u0000\u076b\u076d\u0003\u0178"+ + "\u00bc\u0000\u076c\u0769\u0001\u0000\u0000\u0000\u076c\u076a\u0001\u0000"+ + "\u0000\u0000\u076c\u076b\u0001\u0000\u0000\u0000\u076d\u076f\u0001\u0000"+ + "\u0000\u0000\u076e\u0770\u0003\u020c\u0106\u0000\u076f\u076e\u0001\u0000"+ + "\u0000\u0000\u076f\u0770\u0001\u0000\u0000\u0000\u0770\u0778\u0001\u0000"+ + "\u0000\u0000\u0771\u0778\u0003\u0176\u00bb\u0000\u0772\u0778\u0003\u017e"+ + "\u00bf\u0000\u0773\u0778\u0003\u0180\u00c0\u0000\u0774\u0775\u0005P\u0000"+ + "\u0000\u0775\u0778\u0003\u020a\u0105\u0000\u0776\u0778\u0003\u0182\u00c1"+ + "\u0000\u0777\u0768\u0001\u0000\u0000\u0000\u0777\u0771\u0001\u0000\u0000"+ + "\u0000\u0777\u0772\u0001\u0000\u0000\u0000\u0777\u0773\u0001\u0000\u0000"+ + "\u0000\u0777\u0774\u0001\u0000\u0000\u0000\u0777\u0776\u0001\u0000\u0000"+ + "\u0000\u0778\u077e\u0001\u0000\u0000\u0000\u0779\u077a\n\u0002\u0000\u0000"+ + "\u077a\u077b\u0005\u0001\u0000\u0000\u077b\u077d\u0003\u020a\u0105\u0000"+ + "\u077c\u0779\u0001\u0000\u0000\u0000\u077d\u0780\u0001\u0000\u0000\u0000"+ + "\u077e\u077c\u0001\u0000\u0000\u0000\u077e\u077f\u0001\u0000\u0000\u0000"+ + "\u077f\u0171\u0001\u0000\u0000\u0000\u0780\u077e\u0001\u0000\u0000\u0000"+ + "\u0781\u0782\u0005\u0096\u0000\u0000\u0782\u0173\u0001\u0000\u0000\u0000"+ + "\u0783\u0784\u0003\u0236\u011b\u0000\u0784\u0175\u0001\u0000\u0000\u0000"+ + "\u0785\u0786\u0005\u001c\u0000\u0000\u0786\u078a\u0003\u0170\u00b8\u0000"+ + "\u0787\u0788\u0005\u001b\u0000\u0000\u0788\u078a\u0003\u0170\u00b8\u0000"+ + "\u0789\u0785\u0001\u0000\u0000\u0000\u0789\u0787\u0001\u0000\u0000\u0000"+ + "\u078a\u0177\u0001\u0000\u0000\u0000\u078b\u078d\u0005\u008c\u0000\u0000"+ + "\u078c\u078e\u0003\u017a\u00bd\u0000\u078d\u078c\u0001\u0000\u0000\u0000"+ + "\u078d\u078e\u0001\u0000\u0000\u0000\u078e\u078f\u0001\u0000\u0000\u0000"+ + "\u078f\u0790\u0005\u008f\u0000\u0000\u0790\u0179\u0001\u0000\u0000\u0000"+ + "\u0791\u0796\u0003\u017c\u00be\u0000\u0792\u0793\u0005\u0091\u0000\u0000"+ + "\u0793\u0795\u0003\u017c\u00be\u0000\u0794\u0792\u0001\u0000\u0000\u0000"+ + "\u0795\u0798\u0001\u0000\u0000\u0000\u0796\u0794\u0001\u0000\u0000\u0000"+ + "\u0796\u0797\u0001\u0000\u0000\u0000\u0797\u017b\u0001\u0000\u0000\u0000"+ + "\u0798\u0796\u0001\u0000\u0000\u0000\u0799\u079a\u0003\u0236\u011b\u0000"+ + "\u079a\u079b\u0005\u0092\u0000\u0000\u079b\u079d\u0001\u0000\u0000\u0000"+ + "\u079c\u0799\u0001\u0000\u0000\u0000\u079c\u079d\u0001\u0000\u0000\u0000"+ + "\u079d\u079e\u0001\u0000\u0000\u0000\u079e\u079f\u0003\u0170\u00b8\u0000"+ + "\u079f\u017d\u0001\u0000\u0000\u0000\u07a0\u07a2\u0003\u020e\u0107\u0000"+ + "\u07a1\u07a0\u0001\u0000\u0000\u0000\u07a1\u07a2\u0001\u0000\u0000\u0000"+ + "\u07a2\u07a3\u0001\u0000\u0000\u0000\u07a3\u07a4\u0005\u008a\u0000\u0000"+ + "\u07a4\u07a6\u0003\u00fc~\u0000\u07a5\u07a7\u0003\u0178\u00bc\u0000\u07a6"+ + "\u07a5\u0001\u0000\u0000\u0000\u07a6\u07a7\u0001\u0000\u0000\u0000\u07a7"+ + "\u017f\u0001\u0000\u0000\u0000\u07a8\u07a9\u0003\u0174\u00ba\u0000\u07a9"+ + "\u07aa\u0005\u0098\u0000\u0000\u07aa\u0181\u0001\u0000\u0000\u0000\u07ab"+ + "\u07ac\u0003\u0192\u00c9\u0000\u07ac\u0183\u0001\u0000\u0000\u0000\u07ad"+ + "\u07ae\u0005\u0099\u0000\u0000\u07ae\u07b0\u0003\u0186\u00c3\u0000\u07af"+ + "\u07b1\u0003\u0188\u00c4\u0000\u07b0\u07af\u0001\u0000\u0000\u0000\u07b0"+ + "\u07b1\u0001\u0000\u0000\u0000\u07b1\u0185\u0001\u0000\u0000\u0000\u07b2"+ + "\u07b7\u0003\u0236\u011b\u0000\u07b3\u07b4\u0005\u008a\u0000\u0000\u07b4"+ + "\u07b6\u0003\u0236\u011b\u0000\u07b5\u07b3\u0001\u0000\u0000\u0000\u07b6"+ + "\u07b9\u0001\u0000\u0000\u0000\u07b7\u07b5\u0001\u0000\u0000\u0000\u07b7"+ + "\u07b8\u0001\u0000\u0000\u0000\u07b8\u0187\u0001\u0000\u0000\u0000\u07b9"+ + "\u07b7\u0001\u0000\u0000\u0000\u07ba\u07bc\u0005\u008c\u0000\u0000\u07bb"+ + "\u07bd\u0003\u018c\u00c6\u0000\u07bc\u07bb\u0001\u0000\u0000\u0000\u07bc"+ + "\u07bd\u0001\u0000\u0000\u0000\u07bd\u07be\u0001\u0000\u0000\u0000\u07be"+ + "\u07bf\u0005\u008f\u0000\u0000\u07bf\u0189\u0001\u0000\u0000\u0000\u07c0"+ + "\u07c2\u0003\u0184\u00c2\u0000\u07c1\u07c0\u0001\u0000\u0000\u0000\u07c2"+ + "\u07c3\u0001\u0000\u0000\u0000\u07c3\u07c1\u0001\u0000\u0000\u0000\u07c3"+ + "\u07c4\u0001\u0000\u0000\u0000\u07c4\u018b\u0001\u0000\u0000\u0000\u07c5"+ + "\u07c7\u0003\u018e\u00c7\u0000\u07c6\u07c5\u0001\u0000\u0000\u0000\u07c7"+ + "\u07c8\u0001\u0000\u0000\u0000\u07c8\u07c6\u0001\u0000\u0000\u0000\u07c8"+ + "\u07c9\u0001\u0000\u0000\u0000\u07c9\u018d\u0001\u0000\u0000\u0000\u07ca"+ + "\u07cc\u0005\u008c\u0000\u0000\u07cb\u07cd\u0003\u018c\u00c6\u0000\u07cc"+ + "\u07cb\u0001\u0000\u0000\u0000\u07cc\u07cd\u0001\u0000\u0000\u0000\u07cd"+ + "\u07ce\u0001\u0000\u0000\u0000\u07ce\u07df\u0005\u008f\u0000\u0000\u07cf"+ + "\u07d1\u0005\u008d\u0000\u0000\u07d0\u07d2\u0003\u018c\u00c6\u0000\u07d1"+ + "\u07d0\u0001\u0000\u0000\u0000\u07d1\u07d2\u0001\u0000\u0000\u0000\u07d2"+ + "\u07d3\u0001\u0000\u0000\u0000\u07d3\u07df\u0005\u0090\u0000\u0000\u07d4"+ + "\u07d6\u0005\u008b\u0000\u0000\u07d5\u07d7\u0003\u018c\u00c6\u0000\u07d6"+ + "\u07d5\u0001\u0000\u0000\u0000\u07d6\u07d7\u0001\u0000\u0000\u0000\u07d7"+ + "\u07d8\u0001\u0000\u0000\u0000\u07d8\u07df\u0005\u008e\u0000\u0000\u07d9"+ + "\u07df\u0003\u0236\u011b\u0000\u07da\u07df\u0003\u023a\u011d\u0000\u07db"+ + "\u07df\u0003\u0262\u0131\u0000\u07dc\u07df\u0003\u0254\u012a\u0000\u07dd"+ + "\u07df\u0003\u0190\u00c8\u0000\u07de\u07ca\u0001\u0000\u0000\u0000\u07de"+ + "\u07cf\u0001\u0000\u0000\u0000\u07de\u07d4\u0001\u0000\u0000\u0000\u07de"+ + "\u07d9\u0001\u0000\u0000\u0000\u07de\u07da\u0001\u0000\u0000\u0000\u07de"+ + "\u07db\u0001\u0000\u0000\u0000\u07de\u07dc\u0001\u0000\u0000\u0000\u07de"+ + "\u07dd\u0001\u0000\u0000\u0000\u07df\u018f\u0001\u0000\u0000\u0000\u07e0"+ + "\u07e7\u0007\u000f\u0000\u0000\u07e1\u07e7\u0003\u0248\u0124\u0000\u07e2"+ + "\u07e3\u0004\u00c8\u0003\u0000\u07e3\u07e7\u0005\u009a\u0000\u0000\u07e4"+ + "\u07e5\u0004\u00c8\u0004\u0000\u07e5\u07e7\u0005\u0097\u0000\u0000\u07e6"+ + "\u07e0\u0001\u0000\u0000\u0000\u07e6\u07e1\u0001\u0000\u0000\u0000\u07e6"+ + "\u07e2\u0001\u0000\u0000\u0000\u07e6\u07e4\u0001\u0000\u0000\u0000\u07e7"+ + "\u0191\u0001\u0000\u0000\u0000\u07e8\u07ea\u0003\u019a\u00cd\u0000\u07e9"+ + "\u07e8\u0001\u0000\u0000\u0000\u07e9\u07ea\u0001\u0000\u0000\u0000\u07ea"+ + "\u07eb\u0001\u0000\u0000\u0000\u07eb\u07ed\u0003\u0196\u00cb\u0000\u07ec"+ + "\u07ee\u0003\u019e\u00cf\u0000\u07ed\u07ec\u0001\u0000\u0000\u0000\u07ed"+ + "\u07ee\u0001\u0000\u0000\u0000\u07ee\u0193\u0001\u0000\u0000\u0000\u07ef"+ + "\u07f4\u0003\u0192\u00c9\u0000\u07f0\u07f1\u0005\u0091\u0000\u0000\u07f1"+ + "\u07f3\u0003\u0192\u00c9\u0000\u07f2\u07f0\u0001\u0000\u0000\u0000\u07f3"+ + "\u07f6\u0001\u0000\u0000\u0000\u07f4\u07f2\u0001\u0000\u0000\u0000\u07f4"+ + "\u07f5\u0001\u0000\u0000\u0000\u07f5\u0195\u0001\u0000\u0000\u0000\u07f6"+ + "\u07f4\u0001\u0000\u0000\u0000\u07f7\u07f9\u0003\u0250\u0128\u0000\u07f8"+ + "\u07f7\u0001\u0000\u0000\u0000\u07f8\u07f9\u0001\u0000\u0000\u0000\u07f9"+ + "\u07fa\u0001\u0000\u0000\u0000\u07fa\u07fd\u0003\u01ea\u00f5\u0000\u07fb"+ + "\u07fd\u0003\u0198\u00cc\u0000\u07fc\u07f8\u0001\u0000\u0000\u0000\u07fc"+ + "\u07fb\u0001\u0000\u0000\u0000\u07fd\u0197\u0001\u0000\u0000\u0000\u07fe"+ + "\u07ff\u0005\u009a\u0000\u0000\u07ff\u0800\u0003\u0236\u011b\u0000\u0800"+ + "\u0199\u0001\u0000\u0000\u0000\u0801\u0803\u0005Q\u0000\u0000\u0802\u0804"+ + "\u0007\t\u0000\u0000\u0803\u0802\u0001\u0000\u0000\u0000\u0803\u0804\u0001"+ + "\u0000\u0000\u0000\u0804\u019b\u0001\u0000\u0000\u0000\u0805\u0806\u0003"+ + "\u024e\u0127\u0000\u0806\u0807\u0003\u0196\u00cb\u0000\u0807\u0813\u0001"+ + "\u0000\u0000\u0000\u0808\u080b\u0003\u023c\u011e\u0000\u0809\u080b\u0003"+ + "\u01a0\u00d0\u0000\u080a\u0808\u0001\u0000\u0000\u0000\u080a\u0809\u0001"+ + "\u0000\u0000\u0000\u080b\u080d\u0001\u0000\u0000\u0000\u080c\u080e\u0003"+ + "\u019a\u00cd\u0000\u080d\u080c\u0001\u0000\u0000\u0000\u080d\u080e\u0001"+ + "\u0000\u0000\u0000\u080e\u080f\u0001\u0000\u0000\u0000\u080f\u0810\u0003"+ + "\u0196\u00cb\u0000\u0810\u0813\u0001\u0000\u0000\u0000\u0811\u0813\u0003"+ + "\u01a2\u00d1\u0000\u0812\u0805\u0001\u0000\u0000\u0000\u0812\u080a\u0001"+ + "\u0000\u0000\u0000\u0812\u0811\u0001\u0000\u0000\u0000\u0813\u019d\u0001"+ + "\u0000\u0000\u0000\u0814\u0816\u0003\u019c\u00ce\u0000\u0815\u0814\u0001"+ + "\u0000\u0000\u0000\u0816\u0817\u0001\u0000\u0000\u0000\u0817\u0815\u0001"+ + "\u0000\u0000\u0000\u0817\u0818\u0001\u0000\u0000\u0000\u0818\u019f\u0001"+ + "\u0000\u0000\u0000\u0819\u081a\u0005\u0098\u0000\u0000\u081a\u081b\u0003"+ + "\u0192\u00c9\u0000\u081b\u081c\u0005\u0092\u0000\u0000\u081c\u01a1\u0001"+ + "\u0000\u0000\u0000\u081d\u0823\u0005P\u0000\u0000\u081e\u0820\u0005\u0001"+ + "\u0000\u0000\u081f\u0821\u0007\t\u0000\u0000\u0820\u081f\u0001\u0000\u0000"+ + "\u0000\u0820\u0821\u0001\u0000\u0000\u0000\u0821\u0823\u0001\u0000\u0000"+ + "\u0000\u0822\u081d\u0001\u0000\u0000\u0000\u0822\u081e\u0001\u0000\u0000"+ + "\u0000\u0823\u0824\u0001\u0000\u0000\u0000\u0824\u0825\u0003\u020a\u0105"+ + "\u0000\u0825\u01a3\u0001\u0000\u0000\u0000\u0826\u0828\u0003\u01a6\u00d3"+ + "\u0000\u0827\u0829\u0003\u0096K\u0000\u0828\u0827\u0001\u0000\u0000\u0000"+ + "\u0828\u0829\u0001\u0000\u0000\u0000\u0829\u0839\u0001\u0000\u0000\u0000"+ + "\u082a\u0839\u0003\u0224\u0112\u0000\u082b\u0839\u0003\u0226\u0113\u0000"+ + "\u082c\u0839\u0003\u01a8\u00d4\u0000\u082d\u0839\u0003\u01b8\u00dc\u0000"+ + "\u082e\u0839\u0003\u01ba\u00dd\u0000\u082f\u0839\u0003\u01bc\u00de\u0000"+ + "\u0830\u0839\u0003\u01d0\u00e8\u0000\u0831\u0839\u0003\u01d2\u00e9\u0000"+ + "\u0832\u0839\u0003\u01d4\u00ea\u0000\u0833\u0839\u0003\u01ce\u00e7\u0000"+ + "\u0834\u0839\u0003\u01da\u00ed\u0000\u0835\u0839\u0003\u01dc\u00ee\u0000"+ + "\u0836\u0839\u0003\u01e6\u00f3\u0000\u0837\u0839\u0003\u01e8\u00f4\u0000"+ + "\u0838\u0826\u0001\u0000\u0000\u0000\u0838\u082a\u0001\u0000\u0000\u0000"+ + "\u0838\u082b\u0001\u0000\u0000\u0000\u0838\u082c\u0001\u0000\u0000\u0000"+ + "\u0838\u082d\u0001\u0000\u0000\u0000\u0838\u082e\u0001\u0000\u0000\u0000"+ + "\u0838\u082f\u0001\u0000\u0000\u0000\u0838\u0830\u0001\u0000\u0000\u0000"+ + "\u0838\u0831\u0001\u0000\u0000\u0000\u0838\u0832\u0001\u0000\u0000\u0000"+ + "\u0838\u0833\u0001\u0000\u0000\u0000\u0838\u0834\u0001\u0000\u0000\u0000"+ + "\u0838\u0835\u0001\u0000\u0000\u0000\u0838\u0836\u0001\u0000\u0000\u0000"+ + "\u0838\u0837\u0001\u0000\u0000\u0000\u0839\u01a5\u0001\u0000\u0000\u0000"+ + "\u083a\u083f\u0003\u0236\u011b\u0000\u083b\u083c\u0005\u008c\u0000\u0000"+ + "\u083c\u083d\u0003\u0206\u0103\u0000\u083d\u083e\u0005\u008f\u0000\u0000"+ + "\u083e\u0840\u0001\u0000\u0000\u0000\u083f\u083b\u0001\u0000\u0000\u0000"+ + "\u083f\u0840\u0001\u0000\u0000\u0000\u0840\u01a7\u0001\u0000\u0000\u0000"+ + "\u0841\u084d\u0003\u0262\u0131\u0000\u0842\u084d\u0003\u01aa\u00d5\u0000"+ + "\u0843\u084d\u0003\u01b0\u00d8\u0000\u0844\u084d\u0003\u01b6\u00db\u0000"+ + "\u0845\u084d\u0005{\u0000\u0000\u0846\u084d\u0005|\u0000\u0000\u0847\u084d"+ + "\u0005}\u0000\u0000\u0848\u084d\u0005~\u0000\u0000\u0849\u084d\u0005\u007f"+ + "\u0000\u0000\u084a\u084d\u0005\u0080\u0000\u0000\u084b\u084d\u0005\u0081"+ + "\u0000\u0000\u084c\u0841\u0001\u0000\u0000\u0000\u084c\u0842\u0001\u0000"+ + "\u0000\u0000\u084c\u0843\u0001\u0000\u0000\u0000\u084c\u0844\u0001\u0000"+ + "\u0000\u0000\u084c\u0845\u0001\u0000\u0000\u0000\u084c\u0846\u0001\u0000"+ + "\u0000\u0000\u084c\u0847\u0001\u0000\u0000\u0000\u084c\u0848\u0001\u0000"+ + "\u0000\u0000\u084c\u0849\u0001\u0000\u0000\u0000\u084c\u084a\u0001\u0000"+ + "\u0000\u0000\u084c\u084b\u0001\u0000\u0000\u0000\u084d\u01a9\u0001\u0000"+ + "\u0000\u0000\u084e\u0850\u0005\u008d\u0000\u0000\u084f\u0851\u0003\u01ac"+ + "\u00d6\u0000\u0850\u084f\u0001\u0000\u0000\u0000\u0850\u0851\u0001\u0000"+ + "\u0000\u0000\u0851\u0852\u0001\u0000\u0000\u0000\u0852\u0853\u0005\u0090"+ + "\u0000\u0000\u0853\u01ab\u0001\u0000\u0000\u0000\u0854\u0859\u0003\u01ae"+ + "\u00d7\u0000\u0855\u0856\u0005\u0091\u0000\u0000\u0856\u0858\u0003\u01ae"+ + "\u00d7\u0000\u0857\u0855\u0001\u0000\u0000\u0000\u0858\u085b\u0001\u0000"+ + "\u0000\u0000\u0859\u0857\u0001\u0000\u0000\u0000\u0859\u085a\u0001\u0000"+ + "\u0000\u0000\u085a\u085d\u0001\u0000\u0000\u0000\u085b\u0859\u0001\u0000"+ + "\u0000\u0000\u085c\u085e\u0005\u0091\u0000\u0000\u085d\u085c\u0001\u0000"+ + "\u0000\u0000\u085d\u085e\u0001\u0000\u0000\u0000\u085e\u01ad\u0001\u0000"+ + "\u0000\u0000\u085f\u0860\u0003\u0192\u00c9\u0000\u0860\u01af\u0001\u0000"+ + "\u0000\u0000\u0861\u0864\u0005\u008d\u0000\u0000\u0862\u0865\u0003\u01b2"+ + "\u00d9\u0000\u0863\u0865\u0005\u0092\u0000\u0000\u0864\u0862\u0001\u0000"+ + "\u0000\u0000\u0864\u0863\u0001\u0000\u0000\u0000\u0865\u0866\u0001\u0000"+ + "\u0000\u0000\u0866\u0867\u0005\u0090\u0000\u0000\u0867\u01b1\u0001\u0000"+ + "\u0000\u0000\u0868\u086d\u0003\u01b4\u00da\u0000\u0869\u086a\u0005\u0091"+ + "\u0000\u0000\u086a\u086c\u0003\u01b4\u00da\u0000\u086b\u0869\u0001\u0000"+ + "\u0000\u0000\u086c\u086f\u0001\u0000\u0000\u0000\u086d\u086b\u0001\u0000"+ + "\u0000\u0000\u086d\u086e\u0001\u0000\u0000\u0000\u086e\u0871\u0001\u0000"+ + "\u0000\u0000\u086f\u086d\u0001\u0000\u0000\u0000\u0870\u0872\u0005\u0091"+ + "\u0000\u0000\u0871\u0870\u0001\u0000\u0000\u0000\u0871\u0872\u0001\u0000"+ + "\u0000\u0000\u0872\u01b3\u0001\u0000\u0000\u0000\u0873\u0874\u0003\u0192"+ + "\u00c9\u0000\u0874\u0875\u0005\u0092\u0000\u0000\u0875\u0876\u0003\u0192"+ + "\u00c9\u0000\u0876\u01b5\u0001\u0000\u0000\u0000\u0877\u0878\u0005\u0084"+ + "\u0000\u0000\u0878\u0879\u0005\u008c\u0000\u0000\u0879\u087a\u0005U\u0000"+ + "\u0000\u087a\u087b\u0005\u0092\u0000\u0000\u087b\u087c\u0003\u0192\u00c9"+ + "\u0000\u087c\u087d\u0005\u0091\u0000\u0000\u087d\u087e\u0005W\u0000\u0000"+ + "\u087e\u087f\u0005\u0092\u0000\u0000\u087f\u0880\u0003\u0192\u00c9\u0000"+ + "\u0880\u0881\u0005\u0091\u0000\u0000\u0881\u0882\u0005V\u0000\u0000\u0882"+ + "\u0883\u0005\u0092\u0000\u0000\u0883\u0884\u0003\u0192\u00c9\u0000\u0884"+ + "\u0885\u0005\u0091\u0000\u0000\u0885\u0886\u0005\u0002\u0000\u0000\u0886"+ + "\u0887\u0005\u0092\u0000\u0000\u0887\u0888\u0003\u0192\u00c9\u0000\u0888"+ + "\u0889\u0005\u008f\u0000\u0000\u0889\u0899\u0001\u0000\u0000\u0000\u088a"+ + "\u088b\u0005\u0085\u0000\u0000\u088b\u088c\u0005\u008c\u0000\u0000\u088c"+ + "\u088d\u0005X\u0000\u0000\u088d\u088e\u0005\u0092\u0000\u0000\u088e\u088f"+ + "\u0003\u0192\u00c9\u0000\u088f\u0890\u0005\u008f\u0000\u0000\u0890\u0899"+ + "\u0001\u0000\u0000\u0000\u0891\u0892\u0005\u0086\u0000\u0000\u0892\u0893"+ + "\u0005\u008c\u0000\u0000\u0893\u0894\u0005X\u0000\u0000\u0894\u0895\u0005"+ + "\u0092\u0000\u0000\u0895\u0896\u0003\u0192\u00c9\u0000\u0896\u0897\u0005"+ + "\u008f\u0000\u0000\u0897\u0899\u0001\u0000\u0000\u0000\u0898\u0877\u0001"+ + "\u0000\u0000\u0000\u0898\u088a\u0001\u0000\u0000\u0000\u0898\u0891\u0001"+ + "\u0000\u0000\u0000\u0899\u01b7\u0001\u0000\u0000\u0000\u089a\u08a7\u0005"+ + "_\u0000\u0000\u089b\u089c\u0005_\u0000\u0000\u089c\u089d\u0005\u008a\u0000"+ + "\u0000\u089d\u08a7\u0003\u0236\u011b\u0000\u089e\u089f\u0005_\u0000\u0000"+ + "\u089f\u08a0\u0005\u008d\u0000\u0000\u08a0\u08a1\u0003\u01fc\u00fe\u0000"+ + "\u08a1\u08a2\u0005\u0090\u0000\u0000\u08a2\u08a7\u0001\u0000\u0000\u0000"+ + "\u08a3\u08a4\u0005_\u0000\u0000\u08a4\u08a5\u0005\u008a\u0000\u0000\u08a5"+ + "\u08a7\u0005*\u0000\u0000\u08a6\u089a\u0001\u0000\u0000\u0000\u08a6\u089b"+ + "\u0001\u0000\u0000\u0000\u08a6\u089e\u0001\u0000\u0000\u0000\u08a6\u08a3"+ + "\u0001\u0000\u0000\u0000\u08a7\u01b9\u0001\u0000\u0000\u0000\u08a8\u08a9"+ + "\u0005R\u0000\u0000\u08a9\u08aa\u0005\u008a\u0000\u0000\u08aa\u08b4\u0003"+ + "\u0236\u011b\u0000\u08ab\u08ac\u0005R\u0000\u0000\u08ac\u08ad\u0005\u008d"+ + "\u0000\u0000\u08ad\u08ae\u0003\u01fc\u00fe\u0000\u08ae\u08af\u0005\u0090"+ + "\u0000\u0000\u08af\u08b4\u0001\u0000\u0000\u0000\u08b0\u08b1\u0005R\u0000"+ + "\u0000\u08b1\u08b2\u0005\u008a\u0000\u0000\u08b2\u08b4\u0005*\u0000\u0000"+ + "\u08b3\u08a8\u0001\u0000\u0000\u0000\u08b3\u08ab\u0001\u0000\u0000\u0000"+ + "\u08b3\u08b0\u0001\u0000\u0000\u0000\u08b4\u01bb\u0001\u0000\u0000\u0000"+ + "\u08b5\u08b7\u0005\u008b\u0000\u0000\u08b6\u08b8\u0003\u01be\u00df\u0000"+ + "\u08b7\u08b6\u0001\u0000\u0000\u0000\u08b7\u08b8\u0001\u0000\u0000\u0000"+ + "\u08b8\u08ba\u0001\u0000\u0000\u0000\u08b9\u08bb\u0003\u0004\u0002\u0000"+ + "\u08ba\u08b9\u0001\u0000\u0000\u0000\u08ba\u08bb\u0001\u0000\u0000\u0000"+ + "\u08bb\u08bc\u0001\u0000\u0000\u0000\u08bc\u08bd\u0005\u008e\u0000\u0000"+ + "\u08bd\u01bd\u0001\u0000\u0000\u0000\u08be\u08c0\u0003\u01c6\u00e3\u0000"+ + "\u08bf\u08be\u0001\u0000\u0000\u0000\u08bf\u08c0\u0001\u0000\u0000\u0000"+ + "\u08c0\u08c1\u0001\u0000\u0000\u0000\u08c1\u08c3\u0003\u01c0\u00e0\u0000"+ + "\u08c2\u08c4\u0005\'\u0000\u0000\u08c3\u08c2\u0001\u0000\u0000\u0000\u08c3"+ + "\u08c4\u0001\u0000\u0000\u0000\u08c4\u08c6\u0001\u0000\u0000\u0000\u08c5"+ + "\u08c7\u0003\u00dcn\u0000\u08c6\u08c5\u0001\u0000\u0000\u0000\u08c6\u08c7"+ + "\u0001\u0000\u0000\u0000\u08c7\u08c8\u0001\u0000\u0000\u0000\u08c8\u08c9"+ + "\u0005\u0011\u0000\u0000\u08c9\u08ce\u0001\u0000\u0000\u0000\u08ca\u08cb"+ + "\u0003\u01c6\u00e3\u0000\u08cb\u08cc\u0005\u0011\u0000\u0000\u08cc\u08ce"+ + "\u0001\u0000\u0000\u0000\u08cd\u08bf\u0001\u0000\u0000\u0000\u08cd\u08ca"+ + "\u0001\u0000\u0000\u0000\u08ce\u01bf\u0001\u0000\u0000\u0000\u08cf\u08d1"+ + "\u0005\u008c\u0000\u0000\u08d0\u08d2\u0003\u01c2\u00e1\u0000\u08d1\u08d0"+ + "\u0001\u0000\u0000\u0000\u08d1\u08d2\u0001\u0000\u0000\u0000\u08d2\u08d3"+ + "\u0001\u0000\u0000\u0000\u08d3\u08d6\u0005\u008f\u0000\u0000\u08d4\u08d6"+ + "\u0003\u0238\u011c\u0000\u08d5\u08cf\u0001\u0000\u0000\u0000\u08d5\u08d4"+ + "\u0001\u0000\u0000\u0000\u08d6\u01c1\u0001\u0000\u0000\u0000\u08d7\u08dc"+ + "\u0003\u01c4\u00e2\u0000\u08d8\u08d9\u0005\u0091\u0000\u0000\u08d9\u08db"+ + "\u0003\u01c4\u00e2\u0000\u08da\u08d8\u0001\u0000\u0000\u0000\u08db\u08de"+ + "\u0001\u0000\u0000\u0000\u08dc\u08da\u0001\u0000\u0000\u0000\u08dc\u08dd"+ + "\u0001\u0000\u0000\u0000\u08dd\u01c3\u0001\u0000\u0000\u0000\u08de\u08dc"+ + "\u0001\u0000\u0000\u0000\u08df\u08e4\u0003\u0236\u011b\u0000\u08e0\u08e2"+ + "\u0003\u020c\u0106\u0000\u08e1\u08e3\u0003\u024a\u0125\u0000\u08e2\u08e1"+ + "\u0001\u0000\u0000\u0000\u08e2\u08e3\u0001\u0000\u0000\u0000\u08e3\u08e5"+ + "\u0001\u0000\u0000\u0000\u08e4\u08e0\u0001\u0000\u0000\u0000\u08e4\u08e5"+ + "\u0001\u0000\u0000\u0000\u08e5\u01c5\u0001\u0000\u0000\u0000\u08e6\u08e7"+ + "\u0005\u008d\u0000\u0000\u08e7\u08e8\u0003\u01c8\u00e4\u0000\u08e8\u08e9"+ + "\u0005\u0090\u0000\u0000\u08e9\u01c7\u0001\u0000\u0000\u0000\u08ea\u08ef"+ + "\u0003\u01ca\u00e5\u0000\u08eb\u08ec\u0005\u0091\u0000\u0000\u08ec\u08ee"+ + "\u0003\u01ca\u00e5\u0000\u08ed\u08eb\u0001\u0000\u0000\u0000\u08ee\u08f1"+ + "\u0001\u0000\u0000\u0000\u08ef\u08ed\u0001\u0000\u0000\u0000\u08ef\u08f0"+ + "\u0001\u0000\u0000\u0000\u08f0\u01c9\u0001\u0000\u0000\u0000\u08f1\u08ef"+ + "\u0001\u0000\u0000\u0000\u08f2\u08f4\u0003\u01cc\u00e6\u0000\u08f3\u08f2"+ + "\u0001\u0000\u0000\u0000\u08f3\u08f4\u0001\u0000\u0000\u0000\u08f4\u08fc"+ + "\u0001\u0000\u0000\u0000\u08f5\u08f7\u0003\u0236\u011b\u0000\u08f6\u08f8"+ + "\u0005\u009c\u0000\u0000\u08f7\u08f6\u0001\u0000\u0000\u0000\u08f7\u08f8"+ + "\u0001\u0000\u0000\u0000\u08f8\u08f9\u0001\u0000\u0000\u0000\u08f9\u08fa"+ + "\u0003\u0192\u00c9\u0000\u08fa\u08fd\u0001\u0000\u0000\u0000\u08fb\u08fd"+ + "\u0003\u01b8\u00dc\u0000\u08fc\u08f5\u0001\u0000\u0000\u0000\u08fc\u08fb"+ + "\u0001\u0000\u0000\u0000\u08fd\u01cb\u0001\u0000\u0000\u0000\u08fe\u0906"+ + "\u0005I\u0000\u0000\u08ff\u0903\u0005J\u0000\u0000\u0900\u0901\u0005\u008c"+ + "\u0000\u0000\u0901\u0902\u0007\f\u0000\u0000\u0902\u0904\u0005\u008f\u0000"+ + "\u0000\u0903\u0900\u0001\u0000\u0000\u0000\u0903\u0904\u0001\u0000\u0000"+ + "\u0000\u0904\u0906\u0001\u0000\u0000\u0000\u0905\u08fe\u0001\u0000\u0000"+ + "\u0000\u0905\u08ff\u0001\u0000\u0000\u0000\u0906\u01cd\u0001\u0000\u0000"+ + "\u0000\u0907\u090a\u0005\u008a\u0000\u0000\u0908\u090b\u0003\u0236\u011b"+ + "\u0000\u0909\u090b\u0003\u023a\u011d\u0000\u090a\u0908\u0001\u0000\u0000"+ + "\u0000\u090a\u0909\u0001\u0000\u0000\u0000\u090b\u090e\u0001\u0000\u0000"+ + "\u0000\u090c\u090d\u0005\u008a\u0000\u0000\u090d\u090f\u0003\u01ea\u00f5"+ + "\u0000\u090e\u090c\u0001\u0000\u0000\u0000\u090e\u090f\u0001\u0000\u0000"+ + "\u0000\u090f\u01cf\u0001\u0000\u0000\u0000\u0910\u0911\u0005\u008c\u0000"+ + "\u0000\u0911\u0912\u0003\u0254\u012a\u0000\u0912\u0913\u0005\u008f\u0000"+ + "\u0000\u0913\u01d1\u0001\u0000\u0000\u0000\u0914\u0915\u0005\u008c\u0000"+ + "\u0000\u0915\u0916\u0003\u0192\u00c9\u0000\u0916\u0917\u0005\u008f\u0000"+ + "\u0000\u0917\u01d3\u0001\u0000\u0000\u0000\u0918\u0919\u0005\u008c\u0000"+ + "\u0000\u0919\u0921\u0005\u008f\u0000\u0000\u091a\u091b\u0005\u008c\u0000"+ + "\u0000\u091b\u091c\u0003\u01d8\u00ec\u0000\u091c\u091d\u0005\u0091\u0000"+ + "\u0000\u091d\u091e\u0003\u01d6\u00eb\u0000\u091e\u091f\u0005\u008f\u0000"+ + "\u0000\u091f\u0921\u0001\u0000\u0000\u0000\u0920\u0918\u0001\u0000\u0000"+ + "\u0000\u0920\u091a\u0001\u0000\u0000\u0000\u0921\u01d5\u0001\u0000\u0000"+ + "\u0000\u0922\u0927\u0003\u01d8\u00ec\u0000\u0923\u0924\u0005\u0091\u0000"+ + "\u0000\u0924\u0926\u0003\u01d8\u00ec\u0000\u0925\u0923\u0001\u0000\u0000"+ + "\u0000\u0926\u0929\u0001\u0000\u0000\u0000\u0927\u0925\u0001\u0000\u0000"+ + "\u0000\u0927\u0928\u0001\u0000\u0000\u0000\u0928\u01d7\u0001\u0000\u0000"+ + "\u0000\u0929\u0927\u0001\u0000\u0000\u0000\u092a\u092b\u0003\u0236\u011b"+ + "\u0000\u092b\u092c\u0005\u0092\u0000\u0000\u092c\u092e\u0001\u0000\u0000"+ + "\u0000\u092d\u092a\u0001\u0000\u0000\u0000\u092d\u092e\u0001\u0000\u0000"+ + "\u0000\u092e\u092f\u0001\u0000\u0000\u0000\u092f\u0930\u0003\u0192\u00c9"+ + "\u0000\u0930\u01d9\u0001\u0000\u0000\u0000\u0931\u0932\u0005\u0096\u0000"+ + "\u0000\u0932\u01db\u0001\u0000\u0000\u0000\u0933\u0935\u0005\u00a7\u0000"+ + "\u0000\u0934\u0936\u0003\u020a\u0105\u0000\u0935\u0934\u0001\u0000\u0000"+ + "\u0000\u0935\u0936\u0001\u0000\u0000\u0000\u0936\u0937\u0001\u0000\u0000"+ + "\u0000\u0937\u0938\u0005\u008a\u0000\u0000\u0938\u0939\u0003\u01de\u00ef"+ + "\u0000\u0939\u01dd\u0001\u0000\u0000\u0000\u093a\u093f\u0003\u01e0\u00f0"+ + "\u0000\u093b\u093c\u0005\u008a\u0000\u0000\u093c\u093e\u0003\u01e0\u00f0"+ + "\u0000\u093d\u093b\u0001\u0000\u0000\u0000\u093e\u0941\u0001\u0000\u0000"+ + "\u0000\u093f\u093d\u0001\u0000\u0000\u0000\u093f\u0940\u0001\u0000\u0000"+ + "\u0000\u0940\u01df\u0001\u0000\u0000\u0000\u0941\u093f\u0001\u0000\u0000"+ + "\u0000\u0942\u0944\u0003\u0236\u011b\u0000\u0943\u0945\u0003\u01e2\u00f1"+ + "\u0000\u0944\u0943\u0001\u0000\u0000\u0000\u0944\u0945\u0001\u0000\u0000"+ + "\u0000\u0945\u0948\u0001\u0000\u0000\u0000\u0946\u0948\u0003\u01e2\u00f1"+ + "\u0000\u0947\u0942\u0001\u0000\u0000\u0000\u0947\u0946\u0001\u0000\u0000"+ + "\u0000\u0948\u01e1\u0001\u0000\u0000\u0000\u0949\u094b\u0003\u01e4\u00f2"+ + "\u0000\u094a\u0949\u0001\u0000\u0000\u0000\u094b\u094c\u0001\u0000\u0000"+ + "\u0000\u094c\u094a\u0001\u0000\u0000\u0000\u094c\u094d\u0001\u0000\u0000"+ + "\u0000\u094d\u01e3\u0001\u0000\u0000\u0000\u094e\u0956\u0005\u0098\u0000"+ + "\u0000\u094f\u0956\u0005\u0097\u0000\u0000\u0950\u0956\u0005_\u0000\u0000"+ + "\u0951\u0952\u0005\u008d\u0000\u0000\u0952\u0953\u0003\u01fc\u00fe\u0000"+ + "\u0953\u0954\u0005\u0090\u0000\u0000\u0954\u0956\u0001\u0000\u0000\u0000"+ + "\u0955\u094e\u0001\u0000\u0000\u0000\u0955\u094f\u0001\u0000\u0000\u0000"+ + "\u0955\u0950\u0001\u0000\u0000\u0000\u0955\u0951\u0001\u0000\u0000\u0000"+ + "\u0956\u01e5\u0001\u0000\u0000\u0000\u0957\u0958\u0005\u0082\u0000\u0000"+ + "\u0958\u095b\u0005\u008c\u0000\u0000\u0959\u095a\u0007\u0010\u0000\u0000"+ + "\u095a\u095c\u0005\u0092\u0000\u0000\u095b\u0959\u0001\u0000\u0000\u0000"+ + "\u095b\u095c\u0001\u0000\u0000\u0000\u095c\u095d\u0001\u0000\u0000\u0000"+ + "\u095d\u095e\u0003\u0192\u00c9\u0000\u095e\u095f\u0005\u008f\u0000\u0000"+ + "\u095f\u01e7\u0001\u0000\u0000\u0000\u0960\u0961\u0005\u0083\u0000\u0000"+ + "\u0961\u0962\u0005\u008c\u0000\u0000\u0962\u0963\u0003\u0192\u00c9\u0000"+ + "\u0963\u0964\u0005\u008f\u0000\u0000\u0964\u01e9\u0001\u0000\u0000\u0000"+ + "\u0965\u096f\u0003\u01a4\u00d2\u0000\u0966\u096e\u0003\u01ec\u00f6\u0000"+ + "\u0967\u096e\u0003\u01ee\u00f7\u0000\u0968\u096e\u0003\u01f0\u00f8\u0000"+ + "\u0969\u096e\u0003\u01f2\u00f9\u0000\u096a\u096e\u0003\u01f4\u00fa\u0000"+ + "\u096b\u096e\u0003\u01f6\u00fb\u0000\u096c\u096e\u0003\u01f8\u00fc\u0000"+ + "\u096d\u0966\u0001\u0000\u0000\u0000\u096d\u0967\u0001\u0000\u0000\u0000"+ + "\u096d\u0968\u0001\u0000\u0000\u0000\u096d\u0969\u0001\u0000\u0000\u0000"+ + "\u096d\u096a\u0001\u0000\u0000\u0000\u096d\u096b\u0001\u0000\u0000\u0000"+ + "\u096d\u096c\u0001\u0000\u0000\u0000\u096e\u0971\u0001\u0000\u0000\u0000"+ + "\u096f\u096d\u0001\u0000\u0000\u0000\u096f\u0970\u0001\u0000\u0000\u0000"+ + "\u0970\u0975\u0001\u0000\u0000\u0000\u0971\u096f\u0001\u0000\u0000\u0000"+ + "\u0972\u0974\u0003\u0252\u0129\u0000\u0973\u0972\u0001\u0000\u0000\u0000"+ + "\u0974\u0977\u0001\u0000\u0000\u0000\u0975\u0976\u0001\u0000\u0000\u0000"+ + "\u0975\u0973\u0001\u0000\u0000\u0000\u0976\u01eb\u0001\u0000\u0000\u0000"+ + "\u0977\u0975\u0001\u0000\u0000\u0000\u0978\u097a\u0003\u01fa\u00fd\u0000"+ + "\u0979\u0978\u0001\u0000\u0000\u0000\u0979\u097a\u0001\u0000\u0000\u0000"+ + "\u097a\u097b\u0001\u0000\u0000\u0000\u097b\u097e\u0003\u0200\u0100\u0000"+ + "\u097c\u097e\u0003\u01fa\u00fd\u0000\u097d\u0979\u0001\u0000\u0000\u0000"+ + "\u097d\u097c\u0001\u0000\u0000\u0000\u097e\u01ed\u0001\u0000\u0000\u0000"+ + "\u097f\u0980\u0005\u008a\u0000\u0000\u0980\u0985\u0005*\u0000\u0000\u0981"+ + "\u0982\u0005\u008c\u0000\u0000\u0982\u0983\u0003\u0206\u0103\u0000\u0983"+ + "\u0984\u0005\u008f\u0000\u0000\u0984\u0986\u0001\u0000\u0000\u0000\u0985"+ + "\u0981\u0001\u0000\u0000\u0000\u0985\u0986\u0001"; + private static final String _serializedATNSegment1 = + "\u0000\u0000\u0000\u0986\u01ef\u0001\u0000\u0000\u0000\u0987\u0991\u0005"+ + "\u008a\u0000\u0000\u0988\u0992\u0005\u00ac\u0000\u0000\u0989\u098f\u0003"+ + "\u0236\u011b\u0000\u098a\u0990\u0003\u0096K\u0000\u098b\u098c\u0005\u008c"+ + "\u0000\u0000\u098c\u098d\u0003\u0206\u0103\u0000\u098d\u098e\u0005\u008f"+ + "\u0000\u0000\u098e\u0990\u0001\u0000\u0000\u0000\u098f\u098a\u0001\u0000"+ + "\u0000\u0000\u098f\u098b\u0001\u0000\u0000\u0000\u098f\u0990\u0001\u0000"+ + "\u0000\u0000\u0990\u0992\u0001\u0000\u0000\u0000\u0991\u0988\u0001\u0000"+ + "\u0000\u0000\u0991\u0989\u0001\u0000\u0000\u0000\u0992\u01f1\u0001\u0000"+ + "\u0000\u0000\u0993\u0994\u0005\u008a\u0000\u0000\u0994\u0995\u0005_\u0000"+ + "\u0000\u0995\u01f3\u0001\u0000\u0000\u0000\u0996\u0997\u0005\u008d\u0000"+ + "\u0000\u0997\u0998\u0003\u01fc\u00fe\u0000\u0998\u0999\u0005\u0090\u0000"+ + "\u0000\u0999\u01f5\u0001\u0000\u0000\u0000\u099a\u099b\u0004\u00fb\u0005"+ + "\u0000\u099b\u099c\u0005\u0097\u0000\u0000\u099c\u01f7\u0001\u0000\u0000"+ + "\u0000\u099d\u099e\u0004\u00fc\u0006\u0000\u099e\u099f\u0005\u0098\u0000"+ + "\u0000\u099f\u01f9\u0001\u0000\u0000\u0000\u09a0\u09a2\u0005\u008c\u0000"+ + "\u0000\u09a1\u09a3\u0003\u01fc\u00fe\u0000\u09a2\u09a1\u0001\u0000\u0000"+ + "\u0000\u09a2\u09a3\u0001\u0000\u0000\u0000\u09a3\u09a4\u0001\u0000\u0000"+ + "\u0000\u09a4\u09a5\u0005\u008f\u0000\u0000\u09a5\u01fb\u0001\u0000\u0000"+ + "\u0000\u09a6\u09ab\u0003\u01fe\u00ff\u0000\u09a7\u09a8\u0005\u0091\u0000"+ + "\u0000\u09a8\u09aa\u0003\u01fe\u00ff\u0000\u09a9\u09a7\u0001\u0000\u0000"+ + "\u0000\u09aa\u09ad\u0001\u0000\u0000\u0000\u09ab\u09a9\u0001\u0000\u0000"+ + "\u0000\u09ab\u09ac\u0001\u0000\u0000\u0000\u09ac\u01fd\u0001\u0000\u0000"+ + "\u0000\u09ad\u09ab\u0001\u0000\u0000\u0000\u09ae\u09b0\u0003\u0208\u0104"+ + "\u0000\u09af\u09ae\u0001\u0000\u0000\u0000\u09af\u09b0\u0001\u0000\u0000"+ + "\u0000\u09b0\u09b4\u0001\u0000\u0000\u0000\u09b1\u09b5\u0003\u0236\u011b"+ + "\u0000\u09b2\u09b5\u0003\u0192\u00c9\u0000\u09b3\u09b5\u0003\u0254\u012a"+ + "\u0000\u09b4\u09b1\u0001\u0000\u0000\u0000\u09b4\u09b2\u0001\u0000\u0000"+ + "\u0000\u09b4\u09b3\u0001\u0000\u0000\u0000\u09b5\u01ff\u0001\u0000\u0000"+ + "\u0000\u09b6\u09b8\u0003\u01bc\u00de\u0000\u09b7\u09b9\u0003\u0202\u0101"+ + "\u0000\u09b8\u09b7\u0001\u0000\u0000\u0000\u09b8\u09b9\u0001\u0000\u0000"+ + "\u0000\u09b9\u0201\u0001\u0000\u0000\u0000\u09ba\u09bc\u0003\u0204\u0102"+ + "\u0000\u09bb\u09ba\u0001\u0000\u0000\u0000\u09bc\u09bd\u0001\u0000\u0000"+ + "\u0000\u09bd\u09bb\u0001\u0000\u0000\u0000\u09bd\u09be\u0001\u0000\u0000"+ + "\u0000\u09be\u0203\u0001\u0000\u0000\u0000\u09bf\u09c0\u0003\u0236\u011b"+ + "\u0000\u09c0\u09c1\u0005\u0092\u0000\u0000\u09c1\u09c2\u0003\u01bc\u00de"+ + "\u0000\u09c2\u0205\u0001\u0000\u0000\u0000\u09c3\u09c5\u0003\u0208\u0104"+ + "\u0000\u09c4\u09c3\u0001\u0000\u0000\u0000\u09c5\u09c6\u0001\u0000\u0000"+ + "\u0000\u09c6\u09c4\u0001\u0000\u0000\u0000\u09c6\u09c7\u0001\u0000\u0000"+ + "\u0000\u09c7\u0207\u0001\u0000\u0000\u0000\u09c8\u09c9\u0003\u0236\u011b"+ + "\u0000\u09c9\u09ca\u0005\u0092\u0000\u0000\u09ca\u0209\u0001\u0000\u0000"+ + "\u0000\u09cb\u09cc\u0006\u0105\uffff\uffff\u0000\u09cc\u09da\u0003\u021a"+ + "\u010d\u0000\u09cd\u09da\u0003\u0224\u0112\u0000\u09ce\u09da\u0003\u0226"+ + "\u0113\u0000\u09cf\u09da\u0003\u0228\u0114\u0000\u09d0\u09da\u0003\u020e"+ + "\u0107\u0000\u09d1\u09da\u0003\u0212\u0109\u0000\u09d2\u09da\u0003\u022c"+ + "\u0116\u0000\u09d3\u09da\u0003\u022e\u0117\u0000\u09d4\u09da\u0003\u0230"+ + "\u0118\u0000\u09d5\u09d6\u0005\u008c\u0000\u0000\u09d6\u09d7\u0003\u020a"+ + "\u0105\u0000\u09d7\u09d8\u0005\u008f\u0000\u0000\u09d8\u09da\u0001\u0000"+ + "\u0000\u0000\u09d9\u09cb\u0001\u0000\u0000\u0000\u09d9\u09cd\u0001\u0000"+ + "\u0000\u0000\u09d9\u09ce\u0001\u0000\u0000\u0000\u09d9\u09cf\u0001\u0000"+ + "\u0000\u0000\u09d9\u09d0\u0001\u0000\u0000\u0000\u09d9\u09d1\u0001\u0000"+ + "\u0000\u0000\u09d9\u09d2\u0001\u0000\u0000\u0000\u09d9\u09d3\u0001\u0000"+ + "\u0000\u0000\u09d9\u09d4\u0001\u0000\u0000\u0000\u09d9\u09d5\u0001\u0000"+ + "\u0000\u0000\u09da\u09e8\u0001\u0000\u0000\u0000\u09db\u09e4\n\u0004\u0000"+ + "\u0000\u09dc\u09dd\u0004\u0105\b\u0000\u09dd\u09e5\u0005\u0098\u0000\u0000"+ + "\u09de\u09df\u0004\u0105\t\u0000\u09df\u09e5\u0005\u0097\u0000\u0000\u09e0"+ + "\u09e1\u0005\u008a\u0000\u0000\u09e1\u09e5\u0005]\u0000\u0000\u09e2\u09e3"+ + "\u0005\u008a\u0000\u0000\u09e3\u09e5\u0005\u001d\u0000\u0000\u09e4\u09dc"+ + "\u0001\u0000\u0000\u0000\u09e4\u09de\u0001\u0000\u0000\u0000\u09e4\u09e0"+ + "\u0001\u0000\u0000\u0000\u09e4\u09e2\u0001\u0000\u0000\u0000\u09e5\u09e7"+ + "\u0001\u0000\u0000\u0000\u09e6\u09db\u0001\u0000\u0000\u0000\u09e7\u09ea"+ + "\u0001\u0000\u0000\u0000\u09e8\u09e6\u0001\u0000\u0000\u0000\u09e8\u09e9"+ + "\u0001\u0000\u0000\u0000\u09e9\u020b\u0001\u0000\u0000\u0000\u09ea\u09e8"+ + "\u0001\u0000\u0000\u0000\u09eb\u09ed\u0005\u0092\u0000\u0000\u09ec\u09ee"+ + "\u0003\u018a\u00c5\u0000\u09ed\u09ec\u0001\u0000\u0000\u0000\u09ed\u09ee"+ + "\u0001\u0000\u0000\u0000\u09ee\u09f0\u0001\u0000\u0000\u0000\u09ef\u09f1"+ + "\u0005[\u0000\u0000\u09f0\u09ef\u0001\u0000\u0000\u0000\u09f0\u09f1\u0001"+ + "\u0000\u0000\u0000\u09f1\u09f2\u0001\u0000\u0000\u0000\u09f2\u09f3\u0003"+ + "\u020a\u0105\u0000\u09f3\u020d\u0001\u0000\u0000\u0000\u09f4\u09f6\u0003"+ + "\u0210\u0108\u0000\u09f5\u09f7\u0003\u0096K\u0000\u09f6\u09f5\u0001\u0000"+ + "\u0000\u0000\u09f6\u09f7\u0001\u0000\u0000\u0000\u09f7\u09fa\u0001\u0000"+ + "\u0000\u0000\u09f8\u09f9\u0005\u008a\u0000\u0000\u09f9\u09fb\u0003\u020e"+ + "\u0107\u0000\u09fa\u09f8\u0001\u0000\u0000\u0000\u09fa\u09fb\u0001\u0000"+ + "\u0000\u0000\u09fb\u020f\u0001\u0000\u0000\u0000\u09fc\u09fd\u0003\u0236"+ + "\u011b\u0000\u09fd\u0211\u0001\u0000\u0000\u0000\u09fe\u0a00\u0005\u008c"+ + "\u0000\u0000\u09ff\u0a01\u0003\u0214\u010a\u0000\u0a00\u09ff\u0001\u0000"+ + "\u0000\u0000\u0a00\u0a01\u0001\u0000\u0000\u0000\u0a01\u0a02\u0001\u0000"+ + "\u0000\u0000\u0a02\u0a03\u0005\u008f\u0000\u0000\u0a03\u0213\u0001\u0000"+ + "\u0000\u0000\u0a04\u0a09\u0003\u0216\u010b\u0000\u0a05\u0a06\u0005\u0091"+ + "\u0000\u0000\u0a06\u0a08\u0003\u0216\u010b\u0000\u0a07\u0a05\u0001\u0000"+ + "\u0000\u0000\u0a08\u0a0b\u0001\u0000\u0000\u0000\u0a09\u0a07\u0001\u0000"+ + "\u0000\u0000\u0a09\u0a0a\u0001\u0000\u0000\u0000\u0a0a\u0215\u0001\u0000"+ + "\u0000\u0000\u0a0b\u0a09\u0001\u0000\u0000\u0000\u0a0c\u0a0d\u0003\u0218"+ + "\u010c\u0000\u0a0d\u0a0e\u0003\u020c\u0106\u0000\u0a0e\u0a11\u0001\u0000"+ + "\u0000\u0000\u0a0f\u0a11\u0003\u020a\u0105\u0000\u0a10\u0a0c\u0001\u0000"+ + "\u0000\u0000\u0a10\u0a0f\u0001\u0000\u0000\u0000\u0a11\u0a14\u0001\u0000"+ + "\u0000\u0000\u0a12\u0a13\u0005\u009c\u0000\u0000\u0a13\u0a15\u0003\u0192"+ + "\u00c9\u0000\u0a14\u0a12\u0001\u0000\u0000\u0000\u0a14\u0a15\u0001\u0000"+ + "\u0000\u0000\u0a15\u0217\u0001\u0000\u0000\u0000\u0a16\u0a18\u0003\u0236"+ + "\u011b\u0000\u0a17\u0a16\u0001\u0000\u0000\u0000\u0a18\u0a19\u0001\u0000"+ + "\u0000\u0000\u0a19\u0a17\u0001\u0000\u0000\u0000\u0a19\u0a1a\u0001\u0000"+ + "\u0000\u0000\u0a1a\u0219\u0001\u0000\u0000\u0000\u0a1b\u0a1d\u0003\u018a"+ + "\u00c5\u0000\u0a1c\u0a1b\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0001\u0000"+ + "\u0000\u0000\u0a1d\u0a1e\u0001\u0000\u0000\u0000\u0a1e\u0a20\u0003\u021c"+ + "\u010e\u0000\u0a1f\u0a21\u0005\'\u0000\u0000\u0a20\u0a1f\u0001\u0000\u0000"+ + "\u0000\u0a20\u0a21\u0001\u0000\u0000\u0000\u0a21\u0a22\u0001\u0000\u0000"+ + "\u0000\u0a22\u0a23\u0003\u0248\u0124\u0000\u0a23\u0a24\u0003\u020a\u0105"+ + "\u0000\u0a24\u021b\u0001\u0000\u0000\u0000\u0a25\u0a2a\u0005\u008c\u0000"+ + "\u0000\u0a26\u0a28\u0003\u021e\u010f\u0000\u0a27\u0a29\u0003\u024a\u0125"+ + "\u0000\u0a28\u0a27\u0001\u0000\u0000\u0000\u0a28\u0a29\u0001\u0000\u0000"+ + "\u0000\u0a29\u0a2b\u0001\u0000\u0000\u0000\u0a2a\u0a26\u0001\u0000\u0000"+ + "\u0000\u0a2a\u0a2b\u0001\u0000\u0000\u0000\u0a2b\u0a2c\u0001\u0000\u0000"+ + "\u0000\u0a2c\u0a2d\u0005\u008f\u0000\u0000\u0a2d\u021d\u0001\u0000\u0000"+ + "\u0000\u0a2e\u0a33\u0003\u0220\u0110\u0000\u0a2f\u0a30\u0005\u0091\u0000"+ + "\u0000\u0a30\u0a32\u0003\u0220\u0110\u0000\u0a31\u0a2f\u0001\u0000\u0000"+ + "\u0000\u0a32\u0a35\u0001\u0000\u0000\u0000\u0a33\u0a31\u0001\u0000\u0000"+ + "\u0000\u0a33\u0a34\u0001\u0000\u0000\u0000\u0a34\u021f\u0001\u0000\u0000"+ + "\u0000\u0a35\u0a33\u0001\u0000\u0000\u0000\u0a36\u0a38\u0003\u018a\u00c5"+ + "\u0000\u0a37\u0a36\u0001\u0000\u0000\u0000\u0a37\u0a38\u0001\u0000\u0000"+ + "\u0000\u0a38\u0a3a\u0001\u0000\u0000\u0000\u0a39\u0a3b\u0005[\u0000\u0000"+ + "\u0a3a\u0a39\u0001\u0000\u0000\u0000\u0a3a\u0a3b\u0001\u0000\u0000\u0000"+ + "\u0a3b\u0a3c\u0001\u0000\u0000\u0000\u0a3c\u0a41\u0003\u020a\u0105\u0000"+ + "\u0a3d\u0a3e\u0003\u0222\u0111\u0000\u0a3e\u0a3f\u0003\u020c\u0106\u0000"+ + "\u0a3f\u0a41\u0001\u0000\u0000\u0000\u0a40\u0a37\u0001\u0000\u0000\u0000"+ + "\u0a40\u0a3d\u0001\u0000\u0000\u0000\u0a41\u0221\u0001\u0000\u0000\u0000"+ + "\u0a42\u0a44\u0003\u0236\u011b\u0000\u0a43\u0a42\u0001\u0000\u0000\u0000"+ + "\u0a44\u0a45\u0001\u0000\u0000\u0000\u0a45\u0a43\u0001\u0000\u0000\u0000"+ + "\u0a45\u0a46\u0001\u0000\u0000\u0000\u0a46\u0223\u0001\u0000\u0000\u0000"+ + "\u0a47\u0a48\u0005\u008d\u0000\u0000\u0a48\u0a49\u0003\u020a\u0105\u0000"+ + "\u0a49\u0a4a\u0005\u0090\u0000\u0000\u0a4a\u0225\u0001\u0000\u0000\u0000"+ + "\u0a4b\u0a4c\u0005\u008d\u0000\u0000\u0a4c\u0a4d\u0003\u020a\u0105\u0000"+ + "\u0a4d\u0a4e\u0005\u0092\u0000\u0000\u0a4e\u0a4f\u0003\u020a\u0105\u0000"+ + "\u0a4f\u0a50\u0005\u0090\u0000\u0000\u0a50\u0227\u0001\u0000\u0000\u0000"+ + "\u0a51\u0a56\u0003\u020e\u0107\u0000\u0a52\u0a53\u0005\u009a\u0000\u0000"+ + "\u0a53\u0a55\u0003\u020e\u0107\u0000\u0a54\u0a52\u0001\u0000\u0000\u0000"+ + "\u0a55\u0a58\u0001\u0000\u0000\u0000\u0a56\u0a54\u0001\u0000\u0000\u0000"+ + "\u0a56\u0a57\u0001\u0000\u0000\u0000\u0a57\u0a5a\u0001\u0000\u0000\u0000"+ + "\u0a58\u0a56\u0001\u0000\u0000\u0000\u0a59\u0a5b\u0003\u022a\u0115\u0000"+ + "\u0a5a\u0a59\u0001\u0000\u0000\u0000\u0a5a\u0a5b\u0001\u0000\u0000\u0000"+ + "\u0a5b\u0229\u0001\u0000\u0000\u0000\u0a5c\u0a5d\u0004\u0115\n\u0000\u0a5d"+ + "\u0a5e\u0005\u009a\u0000\u0000\u0a5e\u022b\u0001\u0000\u0000\u0000\u0a5f"+ + "\u0a60\u0005\\\u0000\u0000\u0a60\u0a61\u0003\u020a\u0105\u0000\u0a61\u022d"+ + "\u0001\u0000\u0000\u0000\u0a62\u0a63\u0005S\u0000\u0000\u0a63\u022f\u0001"+ + "\u0000\u0000\u0000\u0a64\u0a65\u0005`\u0000\u0000\u0a65\u0231\u0001\u0000"+ + "\u0000\u0000\u0a66\u0a67\u0005\u0092\u0000\u0000\u0a67\u0a68\u0003\u0234"+ + "\u011a\u0000\u0a68\u0233\u0001\u0000\u0000\u0000\u0a69\u0a6e\u0003\u020e"+ + "\u0107\u0000\u0a6a\u0a6b\u0005\u0091\u0000\u0000\u0a6b\u0a6d\u0003\u020e"+ + "\u0107\u0000\u0a6c\u0a6a\u0001\u0000\u0000\u0000\u0a6d\u0a70\u0001\u0000"+ + "\u0000\u0000\u0a6e\u0a6c\u0001\u0000\u0000\u0000\u0a6e\u0a6f\u0001\u0000"+ + "\u0000\u0000\u0a6f\u0235\u0001\u0000\u0000\u0000\u0a70\u0a6e\u0001\u0000"+ + "\u0000\u0000\u0a71\u0a7b\u0007\u0011\u0000\u0000\u0a72\u0a7b\u0005\u0089"+ + "\u0000\u0000\u0a73\u0a77\u0005\u00a5\u0000\u0000\u0a74\u0a78\u0003\u023a"+ + "\u011d\u0000\u0a75\u0a78\u0005\u0089\u0000\u0000\u0a76\u0a78\u0005\u00a6"+ + "\u0000\u0000\u0a77\u0a74\u0001\u0000\u0000\u0000\u0a77\u0a75\u0001\u0000"+ + "\u0000\u0000\u0a77\u0a76\u0001\u0000\u0000\u0000\u0a78\u0a79\u0001\u0000"+ + "\u0000\u0000\u0a79\u0a7b\u0005\u00a5\u0000\u0000\u0a7a\u0a71\u0001\u0000"+ + "\u0000\u0000\u0a7a\u0a72\u0001\u0000\u0000\u0000\u0a7a\u0a73\u0001\u0000"+ + "\u0000\u0000\u0a7b\u0237\u0001\u0000\u0000\u0000\u0a7c\u0a81\u0003\u0236"+ + "\u011b\u0000\u0a7d\u0a7e\u0005\u0091\u0000\u0000\u0a7e\u0a80\u0003\u0236"+ + "\u011b\u0000\u0a7f\u0a7d\u0001\u0000\u0000\u0000\u0a80\u0a83\u0001\u0000"+ + "\u0000\u0000\u0a81\u0a7f\u0001\u0000\u0000\u0000\u0a81\u0a82\u0001\u0000"+ + "\u0000\u0000\u0a82\u0239\u0001\u0000\u0000\u0000\u0a83\u0a81\u0001\u0000"+ + "\u0000\u0000\u0a84\u0a85\u0007\u0012\u0000\u0000\u0a85\u023b\u0001\u0000"+ + "\u0000\u0000\u0a86\u0a87\u0004\u011e\u000b\u0000\u0a87\u0a88\u0005\u009c"+ + "\u0000\u0000\u0a88\u023d\u0001\u0000\u0000\u0000\u0a89\u0a8a\u0004\u011f"+ + "\f\u0000\u0a8a\u0a8b\u0005\u009b\u0000\u0000\u0a8b\u023f\u0001\u0000\u0000"+ + "\u0000\u0a8c\u0a8d\u0004\u0120\r\u0000\u0a8d\u0a8e\u0005\u009a\u0000\u0000"+ + "\u0a8e\u0a8f\u0005\u009a\u0000\u0000\u0a8f\u0241\u0001\u0000\u0000\u0000"+ + "\u0a90\u0a91\u0004\u0121\u000e\u0000\u0a91\u0a92\u0005\u009d\u0000\u0000"+ + "\u0a92\u0a93\u0005\u009d\u0000\u0000\u0a93\u0243\u0001\u0000\u0000\u0000"+ + "\u0a94\u0a95\u0004\u0122\u000f\u0000\u0a95\u0a96\u0005\u0095\u0000\u0000"+ + "\u0a96\u0a97\u0005\u009c\u0000\u0000\u0a97\u0245\u0001\u0000\u0000\u0000"+ + "\u0a98\u0a99\u0004\u0123\u0010\u0000\u0a99\u0a9a\u0005\u0094\u0000\u0000"+ + "\u0a9a\u0247\u0001\u0000\u0000\u0000\u0a9b\u0a9c\u0004\u0124\u0011\u0000"+ + "\u0a9c\u0a9d\u0005\u009b\u0000\u0000\u0a9d\u0a9e\u0005\u0095\u0000\u0000"+ + "\u0a9e\u0249\u0001\u0000\u0000\u0000\u0a9f\u0aa0\u0004\u0125\u0012\u0000"+ + "\u0aa0\u0aa1\u0005\u008a\u0000\u0000\u0aa1\u0aa2\u0005\u008a\u0000\u0000"+ + "\u0aa2\u0aa3\u0005\u008a\u0000\u0000\u0aa3\u024b\u0001\u0000\u0000\u0000"+ + "\u0aa4\u0aa5\u0004\u0126\u0013\u0000\u0aa5\u0aa6\u0005\u009c\u0000\u0000"+ + "\u0aa6\u0aa7\u0005\u009c\u0000\u0000\u0aa7\u024d\u0001\u0000\u0000\u0000"+ + "\u0aa8\u0aa9\u0004\u0127\u0014\u0000\u0aa9\u0aaa\u0003\u0254\u012a\u0000"+ + "\u0aaa\u024f\u0001\u0000\u0000\u0000\u0aab\u0aac\u0004\u0128\u0015\u0000"+ + "\u0aac\u0aad\u0003\u0254\u012a\u0000\u0aad\u0251\u0001\u0000\u0000\u0000"+ + "\u0aae\u0aaf\u0004\u0129\u0016\u0000\u0aaf\u0ab0\u0003\u0254\u012a\u0000"+ + "\u0ab0\u0253\u0001\u0000\u0000\u0000\u0ab1\u0ab3\u0003\u0256\u012b\u0000"+ + "\u0ab2\u0ab4\u0003\u025a\u012d\u0000\u0ab3\u0ab2\u0001\u0000\u0000\u0000"+ + "\u0ab3\u0ab4\u0001\u0000\u0000\u0000\u0ab4\u0ab9\u0001\u0000\u0000\u0000"+ + "\u0ab5\u0ab6\u0003\u025c\u012e\u0000\u0ab6\u0ab7\u0003\u0260\u0130\u0000"+ + "\u0ab7\u0ab9\u0001\u0000\u0000\u0000\u0ab8\u0ab1\u0001\u0000\u0000\u0000"+ + "\u0ab8\u0ab5\u0001\u0000\u0000\u0000\u0ab9\u0255\u0001\u0000\u0000\u0000"+ + "\u0aba\u0abd\u0007\u0013\u0000\u0000\u0abb\u0abd\u0005\u00a8\u0000\u0000"+ + "\u0abc\u0aba\u0001\u0000\u0000\u0000\u0abc\u0abb\u0001\u0000\u0000\u0000"+ + "\u0abd\u0257\u0001\u0000\u0000\u0000\u0abe\u0ac1\u0003\u0256\u012b\u0000"+ + "\u0abf\u0ac1\u0005\u00a9\u0000\u0000\u0ac0\u0abe\u0001\u0000\u0000\u0000"+ + "\u0ac0\u0abf\u0001\u0000\u0000\u0000\u0ac1\u0259\u0001\u0000\u0000\u0000"+ + "\u0ac2\u0ac3\u0004\u012d\u0017\u0000\u0ac3\u0ac5\u0003\u0258\u012c\u0000"+ + "\u0ac4\u0ac2\u0001\u0000\u0000\u0000\u0ac5\u0ac6\u0001\u0000\u0000\u0000"+ + "\u0ac6\u0ac4\u0001\u0000\u0000\u0000\u0ac6\u0ac7\u0001\u0000\u0000\u0000"+ + "\u0ac7\u025b\u0001\u0000\u0000\u0000\u0ac8\u0ac9\u0005\u008a\u0000\u0000"+ + "\u0ac9\u025d\u0001\u0000\u0000\u0000\u0aca\u0acd\u0005\u008a\u0000\u0000"+ + "\u0acb\u0acd\u0003\u0258\u012c\u0000\u0acc\u0aca\u0001\u0000\u0000\u0000"+ + "\u0acc\u0acb\u0001\u0000\u0000\u0000\u0acd\u025f\u0001\u0000\u0000\u0000"+ + "\u0ace\u0acf\u0004\u0130\u0018\u0000\u0acf\u0ad1\u0003\u025e\u012f\u0000"+ + "\u0ad0\u0ace\u0001\u0000\u0000\u0000\u0ad1\u0ad2\u0001\u0000\u0000\u0000"+ + "\u0ad2\u0ad0\u0001\u0000\u0000\u0000\u0ad2\u0ad3\u0001\u0000\u0000\u0000"+ + "\u0ad3\u0261\u0001\u0000\u0000\u0000\u0ad4\u0ad9\u0003\u0264\u0132\u0000"+ + "\u0ad5\u0ad9\u0003\u026c\u0136\u0000\u0ad6\u0ad9\u0003\u0266\u0133\u0000"+ + "\u0ad7\u0ad9\u0003\u0268\u0134\u0000\u0ad8\u0ad4\u0001\u0000\u0000\u0000"+ + "\u0ad8\u0ad5\u0001\u0000\u0000\u0000\u0ad8\u0ad6\u0001\u0000\u0000\u0000"+ + "\u0ad8\u0ad7\u0001\u0000\u0000\u0000\u0ad9\u0263\u0001\u0000\u0000\u0000"+ + "\u0ada\u0adc\u0003\u023e\u011f\u0000\u0adb\u0ada\u0001\u0000\u0000\u0000"+ + "\u0adb\u0adc\u0001\u0000\u0000\u0000\u0adc\u0add\u0001\u0000\u0000\u0000"+ + "\u0add\u0ae3\u0003\u026a\u0135\u0000\u0ade\u0ae0\u0003\u023e\u011f\u0000"+ + "\u0adf\u0ade\u0001\u0000\u0000\u0000\u0adf\u0ae0\u0001\u0000\u0000\u0000"+ + "\u0ae0\u0ae1\u0001\u0000\u0000\u0000\u0ae1\u0ae3\u0005\u00af\u0000\u0000"+ + "\u0ae2\u0adb\u0001\u0000\u0000\u0000\u0ae2\u0adf\u0001\u0000\u0000\u0000"+ + "\u0ae3\u0265\u0001\u0000\u0000\u0000\u0ae4\u0ae5\u0007\u0014\u0000\u0000"+ + "\u0ae5\u0267\u0001\u0000\u0000\u0000\u0ae6\u0ae7\u0005Z\u0000\u0000\u0ae7"+ + "\u0269\u0001\u0000\u0000\u0000\u0ae8\u0ae9\u0007\u0015\u0000\u0000\u0ae9"+ + "\u026b\u0001\u0000\u0000\u0000\u0aea\u0aee\u0003\u026e\u0137\u0000\u0aeb"+ + "\u0aee\u0003\u0272\u0139\u0000\u0aec\u0aee\u0003\u0270\u0138\u0000\u0aed"+ + "\u0aea\u0001\u0000\u0000\u0000\u0aed\u0aeb\u0001\u0000\u0000\u0000\u0aed"+ + "\u0aec\u0001\u0000\u0000\u0000\u0aee\u026d\u0001\u0000\u0000\u0000\u0aef"+ + "\u0af1\u0005\u00b4\u0000\u0000\u0af0\u0af2\u0005\u00c1\u0000\u0000\u0af1"+ + "\u0af0\u0001\u0000\u0000\u0000\u0af2\u0af3\u0001\u0000\u0000\u0000\u0af3"+ + "\u0af1\u0001\u0000\u0000\u0000\u0af3\u0af4\u0001\u0000\u0000\u0000\u0af4"+ + "\u0af5\u0001\u0000\u0000\u0000\u0af5\u0afe\u0005\u00c0\u0000\u0000\u0af6"+ + "\u0af8\u0005\u00b5\u0000\u0000\u0af7\u0af9\u0005\u00bf\u0000\u0000\u0af8"+ + "\u0af7\u0001\u0000\u0000\u0000\u0af9\u0afa\u0001\u0000\u0000\u0000\u0afa"+ + "\u0af8\u0001\u0000\u0000\u0000\u0afa\u0afb\u0001\u0000\u0000\u0000\u0afb"+ + "\u0afc\u0001\u0000\u0000\u0000\u0afc\u0afe\u0005\u00be\u0000\u0000\u0afd"+ + "\u0aef\u0001\u0000\u0000\u0000\u0afd\u0af6\u0001\u0000\u0000\u0000\u0afe"+ + "\u026f\u0001\u0000\u0000\u0000\u0aff\u0b03\u0005\u00b7\u0000\u0000\u0b00"+ + "\u0b02\u0005\u00ba\u0000\u0000\u0b01\u0b00\u0001\u0000\u0000\u0000\u0b02"+ + "\u0b05\u0001\u0000\u0000\u0000\u0b03\u0b01\u0001\u0000\u0000\u0000\u0b03"+ + "\u0b04\u0001\u0000\u0000\u0000\u0b04\u0b06\u0001\u0000\u0000\u0000\u0b05"+ + "\u0b03\u0001\u0000\u0000\u0000\u0b06\u0b10\u0005\u00b9\u0000\u0000\u0b07"+ + "\u0b0b\u0005\u00b6\u0000\u0000\u0b08\u0b0a\u0005\u00bd\u0000\u0000\u0b09"+ + "\u0b08\u0001\u0000\u0000\u0000\u0b0a\u0b0d\u0001\u0000\u0000\u0000\u0b0b"+ + "\u0b09\u0001\u0000\u0000\u0000\u0b0b\u0b0c\u0001\u0000\u0000\u0000\u0b0c"+ + "\u0b0e\u0001\u0000\u0000\u0000\u0b0d\u0b0b\u0001\u0000\u0000\u0000\u0b0e"+ + "\u0b10\u0005\u00bc\u0000\u0000\u0b0f\u0aff\u0001\u0000\u0000\u0000\u0b0f"+ + "\u0b07\u0001\u0000\u0000\u0000\u0b10\u0271\u0001\u0000\u0000\u0000\u0b11"+ + "\u0b1f\u0005\u00b7\u0000\u0000\u0b12\u0b1e\u0005\u00ba\u0000\u0000\u0b13"+ + "\u0b19\u0005\u00b8\u0000\u0000\u0b14\u0b1a\u0003\u0192\u00c9\u0000\u0b15"+ + "\u0b16\u0003\u01d8\u00ec\u0000\u0b16\u0b17\u0005\u0091\u0000\u0000\u0b17"+ + "\u0b18\u0003\u01d6\u00eb\u0000\u0b18\u0b1a\u0001\u0000\u0000\u0000\u0b19"+ + "\u0b14\u0001\u0000\u0000\u0000\u0b19\u0b15\u0001\u0000\u0000\u0000\u0b1a"+ + "\u0b1b\u0001\u0000\u0000\u0000\u0b1b\u0b1c\u0005\u008f\u0000\u0000\u0b1c"+ + "\u0b1e\u0001\u0000\u0000\u0000\u0b1d\u0b12\u0001\u0000\u0000\u0000\u0b1d"+ + "\u0b13\u0001\u0000\u0000\u0000\u0b1e\u0b21\u0001\u0000\u0000\u0000\u0b1f"+ + "\u0b1d\u0001\u0000\u0000\u0000\u0b1f\u0b20\u0001\u0000\u0000\u0000\u0b20"+ + "\u0b22\u0001\u0000\u0000\u0000\u0b21\u0b1f\u0001\u0000\u0000\u0000\u0b22"+ + "\u0b36\u0005\u00b9\u0000\u0000\u0b23\u0b31\u0005\u00b6\u0000\u0000\u0b24"+ + "\u0b30\u0005\u00bd\u0000\u0000\u0b25\u0b2b\u0005\u00bb\u0000\u0000\u0b26"+ + "\u0b2c\u0003\u0192\u00c9\u0000\u0b27\u0b28\u0003\u01d8\u00ec\u0000\u0b28"+ + "\u0b29\u0005\u0091\u0000\u0000\u0b29\u0b2a\u0003\u01d6\u00eb\u0000\u0b2a"+ + "\u0b2c\u0001\u0000\u0000\u0000\u0b2b\u0b26\u0001\u0000\u0000\u0000\u0b2b"+ + "\u0b27\u0001\u0000\u0000\u0000\u0b2c\u0b2d\u0001\u0000\u0000\u0000\u0b2d"+ + "\u0b2e\u0005\u008f\u0000\u0000\u0b2e\u0b30\u0001\u0000\u0000\u0000\u0b2f"+ + "\u0b24\u0001\u0000\u0000\u0000\u0b2f\u0b25\u0001\u0000\u0000\u0000\u0b30"+ + "\u0b33\u0001\u0000\u0000\u0000\u0b31\u0b2f\u0001\u0000\u0000\u0000\u0b31"+ + "\u0b32\u0001\u0000\u0000\u0000\u0b32\u0b34\u0001\u0000\u0000\u0000\u0b33"+ + "\u0b31\u0001\u0000\u0000\u0000\u0b34\u0b36\u0005\u00bc\u0000\u0000\u0b35"+ + "\u0b11\u0001\u0000\u0000\u0000\u0b35\u0b23\u0001\u0000\u0000\u0000\u0b36"+ + "\u0273\u0001\u0000\u0000\u0000\u0165\u0275\u0281\u0284\u0287\u028f\u0294"+ + "\u0298\u029e\u02ab\u02b2\u02c4\u02ca\u02d0\u02db\u02e1\u02e5\u02ea\u02ed"+ + "\u02f5\u02fa\u02fe\u0302\u030e\u0311\u0318\u031c\u0321\u0325\u032c\u0338"+ + "\u033c\u0340\u0346\u0351\u0356\u035a\u0365\u036a\u036f\u0373\u0376\u037d"+ + "\u0382\u0387\u038b\u0397\u039c\u03a2\u03b3\u03c2\u03c6\u03cb\u03d6\u03e5"+ + "\u03fe\u0405\u040e\u0410\u041b\u0422\u0424\u042e\u0433\u0439\u043f\u044a"+ + "\u045e\u0461\u0466\u0469\u046d\u0472\u0476\u0481\u0486\u0489\u048c\u0496"+ + "\u049b\u04a9\u04ac\u04ae\u04b1\u04b4\u04b7\u04c0\u04c5\u04ca\u04cd\u04d0"+ + "\u04d4\u04d7\u04da\u04de\u04e1\u04ea\u04ef\u04f4\u04f7\u04fc\u04ff\u0506"+ + "\u050a\u050c\u0511\u0515\u051a\u051e\u0523\u0526\u052b\u0537\u053b\u053e"+ + "\u0541\u0544\u054a\u054e\u0551\u0554\u0558\u0560\u0569\u056d\u0570\u0575"+ + "\u0578\u0582\u0585\u0589\u058c\u0591\u0594\u0597\u059b\u05a2\u05a7\u05aa"+ + "\u05ad\u05b7\u05c1\u05c3\u05cc\u05d0\u05d9\u05de\u05e1\u05eb\u05f0\u05f8"+ + "\u05fb\u05fe\u0603\u0606\u0609\u0616\u061b\u061e\u0621\u0624\u0628\u062a"+ + "\u062f\u0632\u0635\u0642\u0647\u064a\u064d\u0654\u0657\u0664\u0669\u0671"+ + "\u067b\u067f\u0683\u0687\u068a\u068d\u0692\u0697\u069a\u069f\u06a2\u06a5"+ + "\u06a9\u06ad\u06b0\u06b5\u06b8\u06bc\u06c1\u06c7\u06ca\u06cf\u06d2\u06dd"+ + "\u06e2\u06e7\u06ec\u06ef\u06f2\u06f6\u06fc\u0703\u0711\u071a\u0721\u0726"+ + "\u0739\u0741\u0754\u0759\u075e\u0764\u076c\u076f\u0777\u077e\u0789\u078d"+ + "\u0796\u079c\u07a1\u07a6\u07b0\u07b7\u07bc\u07c3\u07c8\u07cc\u07d1\u07d6"+ + "\u07de\u07e6\u07e9\u07ed\u07f4\u07f8\u07fc\u0803\u080a\u080d\u0812\u0817"+ + "\u0820\u0822\u0828\u0838\u083f\u084c\u0850\u0859\u085d\u0864\u086d\u0871"+ + "\u0898\u08a6\u08b3\u08b7\u08ba\u08bf\u08c3\u08c6\u08cd\u08d1\u08d5\u08dc"+ + "\u08e2\u08e4\u08ef\u08f3\u08f7\u08fc\u0903\u0905\u090a\u090e\u0920\u0927"+ + "\u092d\u0935\u093f\u0944\u0947\u094c\u0955\u095b\u096d\u096f\u0975\u0979"+ + "\u097d\u0985\u098f\u0991\u09a2\u09ab\u09af\u09b4\u09b8\u09bd\u09c6\u09d9"+ + "\u09e4\u09e8\u09ed\u09f0\u09f6\u09fa\u0a00\u0a09\u0a10\u0a14\u0a19\u0a1c"+ + "\u0a20\u0a28\u0a2a\u0a33\u0a37\u0a3a\u0a40\u0a45\u0a56\u0a5a\u0a6e\u0a77"+ + "\u0a7a\u0a81\u0ab3\u0ab8\u0abc\u0ac0\u0ac6\u0acc\u0ad2\u0ad8\u0adb\u0adf"+ + "\u0ae2\u0aed\u0af3\u0afa\u0afd\u0b03\u0b0b\u0b0f\u0b19\u0b1d\u0b1f\u0b2b"+ + "\u0b2f\u0b31\u0b35"; + public static final String _serializedATN = Utils.join( + new String[] { + _serializedATNSegment0, + _serializedATNSegment1 + }, + "" + ); + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Parser.tokens b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Parser.tokens new file mode 100644 index 00000000..a104ca5b --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5Parser.tokens @@ -0,0 +1,359 @@ +AS=1 +ALPHA=2 +BREAK=3 +CASE=4 +CATCH=5 +CLASS=6 +CONTINUE=7 +DEFAULT=8 +DEFER=9 +DO=10 +GUARD=11 +ELSE=12 +ENUM=13 +FOR=14 +FALLTHROUGH=15 +FUNC=16 +IN=17 +IF=18 +IMPORT=19 +INTERNAL=20 +FINAL=21 +OPEN=22 +PRIVATE=23 +PUBLIC=24 +WHERE=25 +WHILE=26 +LET=27 +VAR=28 +PROTOCOL=29 +GET=30 +SET=31 +WILL_SET=32 +DID_SET=33 +REPEAT=34 +SWITCH=35 +STRUCT=36 +RETURN=37 +THROW=38 +THROWS=39 +RETHROWS=40 +INDIRECT=41 +INIT=42 +DEINIT=43 +ASSOCIATED_TYPE=44 +EXTENSION=45 +SUBSCRIPT=46 +PREFIX=47 +INFIX=48 +LEFT=49 +RIGHT=50 +NONE=51 +PRECEDENCE_GROUP=52 +HIGHER_THAN=53 +LOWER_THAN=54 +ASSIGNMENT=55 +ASSOCIATIVITY=56 +POSTFIX=57 +OPERATOR=58 +TYPEALIAS=59 +OS=60 +ARCH=61 +SWIFT=62 +COMPILER=63 +CAN_IMPORT=64 +TARGET_ENVIRONMENT=65 +CONVENIENCE=66 +DYNAMIC=67 +LAZY=68 +OPTIONAL=69 +OVERRIDE=70 +REQUIRED=71 +STATIC=72 +WEAK=73 +UNOWNED=74 +SAFE=75 +UNSAFE=76 +MUTATING=77 +NONMUTATING=78 +FILE_PRIVATE=79 +IS=80 +TRY=81 +SUPER=82 +ANY=83 +FALSE=84 +RED=85 +BLUE=86 +GREEN=87 +RESOURCE_NAME=88 +TRUE=89 +NIL=90 +INOUT=91 +SOME=92 +TYPE=93 +PRECEDENCE=94 +SELF=95 +SELF_BIG=96 +MAC_OS=97 +I_OS=98 +OSX=99 +WATCH_OS=100 +TV_OS=101 +LINUX=102 +WINDOWS=103 +I386=104 +X86_64=105 +ARM=106 +ARM64=107 +SIMULATOR=108 +MAC_CATALYST=109 +I_OS_APPLICATION_EXTENSION=110 +MAC_CATALYST_APPLICATION_EXTENSION=111 +MAC_OS_APPLICATION_EXTENSION=112 +SOURCE_LOCATION=113 +FILE=114 +LINE=115 +ERROR=116 +WARNING=117 +AVAILABLE=118 +HASH_IF=119 +HASH_ELSEIF=120 +HASH_ELSE=121 +HASH_ENDIF=122 +HASH_FILE=123 +HASH_FILE_ID=124 +HASH_FILE_PATH=125 +HASH_LINE=126 +HASH_COLUMN=127 +HASH_FUNCTION=128 +HASH_DSO_HANDLE=129 +HASH_SELECTOR=130 +HASH_KEYPATH=131 +HASH_COLOR_LITERAL=132 +HASH_FILE_LITERAL=133 +HASH_IMAGE_LITERAL=134 +GETTER=135 +SETTER=136 +Identifier=137 +DOT=138 +LCURLY=139 +LPAREN=140 +LBRACK=141 +RCURLY=142 +RPAREN=143 +RBRACK=144 +COMMA=145 +COLON=146 +SEMI=147 +LT=148 +GT=149 +UNDERSCORE=150 +BANG=151 +QUESTION=152 +AT=153 +AND=154 +SUB=155 +EQUAL=156 +OR=157 +DIV=158 +ADD=159 +MUL=160 +MOD=161 +CARET=162 +TILDE=163 +HASH=164 +BACKTICK=165 +DOLLAR=166 +BACKSLASH=167 +Operator_head_other=168 +Operator_following_character=169 +Binary_literal=170 +Octal_literal=171 +Decimal_digits=172 +Decimal_literal=173 +Hexadecimal_literal=174 +Floating_point_literal=175 +WS=176 +HASHBANG=177 +Block_comment=178 +Line_comment=179 +Multi_line_extended_string_open=180 +Single_line_extended_string_open=181 +Multi_line_string_open=182 +Single_line_string_open=183 +Interpolataion_single_line=184 +Single_line_string_close=185 +Quoted_single_line_text=186 +Interpolataion_multi_line=187 +Multi_line_string_close=188 +Quoted_multi_line_text=189 +Single_line_extended_string_close=190 +Quoted_single_line_extended_text=191 +Multi_line_extended_string_close=192 +Quoted_multi_line_extended_text=193 +'as'=1 +'alpha'=2 +'break'=3 +'case'=4 +'catch'=5 +'class'=6 +'continue'=7 +'default'=8 +'defer'=9 +'do'=10 +'guard'=11 +'else'=12 +'enum'=13 +'for'=14 +'fallthrough'=15 +'func'=16 +'in'=17 +'if'=18 +'import'=19 +'internal'=20 +'final'=21 +'open'=22 +'private'=23 +'public'=24 +'where'=25 +'while'=26 +'let'=27 +'var'=28 +'protocol'=29 +'get'=30 +'set'=31 +'willSet'=32 +'didSet'=33 +'repeat'=34 +'switch'=35 +'struct'=36 +'return'=37 +'throw'=38 +'throws'=39 +'rethrows'=40 +'indirect'=41 +'init'=42 +'deinit'=43 +'associatedtype'=44 +'extension'=45 +'subscript'=46 +'prefix'=47 +'infix'=48 +'left'=49 +'right'=50 +'none'=51 +'precedencegroup'=52 +'higherThan'=53 +'lowerThan'=54 +'assignment'=55 +'associativity'=56 +'postfix'=57 +'operator'=58 +'typealias'=59 +'os'=60 +'arch'=61 +'swift'=62 +'compiler'=63 +'canImport'=64 +'targetEnvironment'=65 +'convenience'=66 +'dynamic'=67 +'lazy'=68 +'optional'=69 +'override'=70 +'required'=71 +'static'=72 +'weak'=73 +'unowned'=74 +'safe'=75 +'unsafe'=76 +'mutating'=77 +'nonmutating'=78 +'fileprivate'=79 +'is'=80 +'try'=81 +'super'=82 +'Any'=83 +'false'=84 +'red'=85 +'blue'=86 +'green'=87 +'resourceName'=88 +'true'=89 +'nil'=90 +'inout'=91 +'some'=92 +'Type'=93 +'precedence'=94 +'self'=95 +'Self'=96 +'macOS'=97 +'iOS'=98 +'OSX'=99 +'watchOS'=100 +'tvOS'=101 +'Linux'=102 +'Windows'=103 +'i386'=104 +'x86_64'=105 +'arm'=106 +'arm64'=107 +'simulator'=108 +'macCatalyst'=109 +'iOSApplicationExtension'=110 +'macCatalystApplicationExtension'=111 +'macOSApplicationExtension'=112 +'#sourceLocation'=113 +'file'=114 +'line'=115 +'#error'=116 +'#warning'=117 +'#available'=118 +'#if'=119 +'#elseif'=120 +'#else'=121 +'#endif'=122 +'#file'=123 +'#fileID'=124 +'#filePath'=125 +'#line'=126 +'#column'=127 +'#function'=128 +'#dsohandle'=129 +'#selector'=130 +'#keyPath'=131 +'#colorLiteral'=132 +'#fileLiteral'=133 +'#imageLiteral'=134 +'getter'=135 +'setter'=136 +'.'=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 diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserBaseListener.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserBaseListener.java new file mode 100644 index 00000000..d188770c --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserBaseListener.java @@ -0,0 +1,3884 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +// Generated from Swift5Parser.g4 by ANTLR 4.10 +package io.ecocode.ios.swift.antlr.generated; + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link Swift5ParserListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +public class Swift5ParserBaseListener implements Swift5ParserListener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTop_level(Swift5Parser.Top_levelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTop_level(Swift5Parser.Top_levelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatement(Swift5Parser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatement(Swift5Parser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatements(Swift5Parser.StatementsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatements(Swift5Parser.StatementsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLoop_statement(Swift5Parser.Loop_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLoop_statement(Swift5Parser.Loop_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFor_in_statement(Swift5Parser.For_in_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFor_in_statement(Swift5Parser.For_in_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhile_statement(Swift5Parser.While_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhile_statement(Swift5Parser.While_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCondition_list(Swift5Parser.Condition_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCondition_list(Swift5Parser.Condition_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCondition(Swift5Parser.ConditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCondition(Swift5Parser.ConditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCase_condition(Swift5Parser.Case_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCase_condition(Swift5Parser.Case_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOptional_binding_condition(Swift5Parser.Optional_binding_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOptional_binding_condition(Swift5Parser.Optional_binding_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRepeat_while_statement(Swift5Parser.Repeat_while_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRepeat_while_statement(Swift5Parser.Repeat_while_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBranch_statement(Swift5Parser.Branch_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBranch_statement(Swift5Parser.Branch_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIf_statement(Swift5Parser.If_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIf_statement(Swift5Parser.If_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElse_clause(Swift5Parser.Else_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElse_clause(Swift5Parser.Else_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGuard_statement(Swift5Parser.Guard_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGuard_statement(Swift5Parser.Guard_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitch_statement(Swift5Parser.Switch_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitch_statement(Swift5Parser.Switch_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitch_cases(Swift5Parser.Switch_casesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitch_cases(Swift5Parser.Switch_casesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitch_case(Swift5Parser.Switch_caseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitch_case(Swift5Parser.Switch_caseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCase_label(Swift5Parser.Case_labelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCase_label(Swift5Parser.Case_labelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCase_item_list(Swift5Parser.Case_item_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCase_item_list(Swift5Parser.Case_item_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDefault_label(Swift5Parser.Default_labelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDefault_label(Swift5Parser.Default_labelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhere_clause(Swift5Parser.Where_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhere_clause(Swift5Parser.Where_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhere_expression(Swift5Parser.Where_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhere_expression(Swift5Parser.Where_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConditional_switch_case(Swift5Parser.Conditional_switch_caseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConditional_switch_case(Swift5Parser.Conditional_switch_caseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitch_if_directive_clause(Swift5Parser.Switch_if_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitch_if_directive_clause(Swift5Parser.Switch_if_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitch_elseif_directive_clauses(Swift5Parser.Switch_elseif_directive_clausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitch_elseif_directive_clauses(Swift5Parser.Switch_elseif_directive_clausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitch_elseif_directive_clause(Swift5Parser.Switch_elseif_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitch_elseif_directive_clause(Swift5Parser.Switch_elseif_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitch_else_directive_clause(Swift5Parser.Switch_else_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitch_else_directive_clause(Swift5Parser.Switch_else_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLabeled_statement(Swift5Parser.Labeled_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLabeled_statement(Swift5Parser.Labeled_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatement_label(Swift5Parser.Statement_labelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatement_label(Swift5Parser.Statement_labelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLabel_name(Swift5Parser.Label_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLabel_name(Swift5Parser.Label_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterControl_transfer_statement(Swift5Parser.Control_transfer_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitControl_transfer_statement(Swift5Parser.Control_transfer_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBreak_statement(Swift5Parser.Break_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBreak_statement(Swift5Parser.Break_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterContinue_statement(Swift5Parser.Continue_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitContinue_statement(Swift5Parser.Continue_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFallthrough_statement(Swift5Parser.Fallthrough_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFallthrough_statement(Swift5Parser.Fallthrough_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReturn_statement(Swift5Parser.Return_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReturn_statement(Swift5Parser.Return_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterThrow_statement(Swift5Parser.Throw_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitThrow_statement(Swift5Parser.Throw_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDefer_statement(Swift5Parser.Defer_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDefer_statement(Swift5Parser.Defer_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDo_statement(Swift5Parser.Do_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDo_statement(Swift5Parser.Do_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCatch_clauses(Swift5Parser.Catch_clausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCatch_clauses(Swift5Parser.Catch_clausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCatch_clause(Swift5Parser.Catch_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCatch_clause(Swift5Parser.Catch_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCatch_pattern_list(Swift5Parser.Catch_pattern_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCatch_pattern_list(Swift5Parser.Catch_pattern_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCatch_pattern(Swift5Parser.Catch_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCatch_pattern(Swift5Parser.Catch_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCompiler_control_statement(Swift5Parser.Compiler_control_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCompiler_control_statement(Swift5Parser.Compiler_control_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConditional_compilation_block(Swift5Parser.Conditional_compilation_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConditional_compilation_block(Swift5Parser.Conditional_compilation_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIf_directive_clause(Swift5Parser.If_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIf_directive_clause(Swift5Parser.If_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElseif_directive_clauses(Swift5Parser.Elseif_directive_clausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElseif_directive_clauses(Swift5Parser.Elseif_directive_clausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElseif_directive_clause(Swift5Parser.Elseif_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElseif_directive_clause(Swift5Parser.Elseif_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElse_directive_clause(Swift5Parser.Else_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElse_directive_clause(Swift5Parser.Else_directive_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCompilation_condition(Swift5Parser.Compilation_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCompilation_condition(Swift5Parser.Compilation_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPlatform_condition(Swift5Parser.Platform_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPlatform_condition(Swift5Parser.Platform_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwift_version(Swift5Parser.Swift_versionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwift_version(Swift5Parser.Swift_versionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwift_version_continuation(Swift5Parser.Swift_version_continuationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwift_version_continuation(Swift5Parser.Swift_version_continuationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOperating_system(Swift5Parser.Operating_systemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOperating_system(Swift5Parser.Operating_systemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArchitecture(Swift5Parser.ArchitectureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArchitecture(Swift5Parser.ArchitectureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModule_name(Swift5Parser.Module_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModule_name(Swift5Parser.Module_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnvironment(Swift5Parser.EnvironmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnvironment(Swift5Parser.EnvironmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLine_control_statement(Swift5Parser.Line_control_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLine_control_statement(Swift5Parser.Line_control_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLine_number(Swift5Parser.Line_numberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLine_number(Swift5Parser.Line_numberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFile_name(Swift5Parser.File_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFile_name(Swift5Parser.File_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDiagnostic_statement(Swift5Parser.Diagnostic_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDiagnostic_statement(Swift5Parser.Diagnostic_statementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDiagnostic_message(Swift5Parser.Diagnostic_messageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDiagnostic_message(Swift5Parser.Diagnostic_messageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAvailability_condition(Swift5Parser.Availability_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAvailability_condition(Swift5Parser.Availability_conditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAvailability_arguments(Swift5Parser.Availability_argumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAvailability_arguments(Swift5Parser.Availability_argumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAvailability_argument(Swift5Parser.Availability_argumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAvailability_argument(Swift5Parser.Availability_argumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPlatform_name(Swift5Parser.Platform_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPlatform_name(Swift5Parser.Platform_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPlatform_version(Swift5Parser.Platform_versionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPlatform_version(Swift5Parser.Platform_versionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneric_parameter_clause(Swift5Parser.Generic_parameter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneric_parameter_clause(Swift5Parser.Generic_parameter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneric_parameter_list(Swift5Parser.Generic_parameter_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneric_parameter_list(Swift5Parser.Generic_parameter_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneric_parameter(Swift5Parser.Generic_parameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneric_parameter(Swift5Parser.Generic_parameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneric_where_clause(Swift5Parser.Generic_where_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneric_where_clause(Swift5Parser.Generic_where_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRequirement_list(Swift5Parser.Requirement_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRequirement_list(Swift5Parser.Requirement_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRequirement(Swift5Parser.RequirementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRequirement(Swift5Parser.RequirementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConformance_requirement(Swift5Parser.Conformance_requirementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConformance_requirement(Swift5Parser.Conformance_requirementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSame_type_requirement(Swift5Parser.Same_type_requirementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSame_type_requirement(Swift5Parser.Same_type_requirementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneric_argument_clause(Swift5Parser.Generic_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneric_argument_clause(Swift5Parser.Generic_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneric_argument_list(Swift5Parser.Generic_argument_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneric_argument_list(Swift5Parser.Generic_argument_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneric_argument(Swift5Parser.Generic_argumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneric_argument(Swift5Parser.Generic_argumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeclaration(Swift5Parser.DeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeclaration(Swift5Parser.DeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeclarations(Swift5Parser.DeclarationsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeclarations(Swift5Parser.DeclarationsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTop_level_declaration(Swift5Parser.Top_level_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTop_level_declaration(Swift5Parser.Top_level_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCode_block(Swift5Parser.Code_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCode_block(Swift5Parser.Code_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImport_declaration(Swift5Parser.Import_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImport_declaration(Swift5Parser.Import_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImport_kind(Swift5Parser.Import_kindContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImport_kind(Swift5Parser.Import_kindContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImport_path(Swift5Parser.Import_pathContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImport_path(Swift5Parser.Import_pathContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImport_path_identifier(Swift5Parser.Import_path_identifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImport_path_identifier(Swift5Parser.Import_path_identifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstant_declaration(Swift5Parser.Constant_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstant_declaration(Swift5Parser.Constant_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPattern_initializer_list(Swift5Parser.Pattern_initializer_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPattern_initializer_list(Swift5Parser.Pattern_initializer_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPattern_initializer(Swift5Parser.Pattern_initializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPattern_initializer(Swift5Parser.Pattern_initializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInitializer(Swift5Parser.InitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInitializer(Swift5Parser.InitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariable_declaration(Swift5Parser.Variable_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariable_declaration(Swift5Parser.Variable_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariable_declaration_head(Swift5Parser.Variable_declaration_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariable_declaration_head(Swift5Parser.Variable_declaration_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariable_name(Swift5Parser.Variable_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariable_name(Swift5Parser.Variable_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGetter_setter_block(Swift5Parser.Getter_setter_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGetter_setter_block(Swift5Parser.Getter_setter_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGetter_clause(Swift5Parser.Getter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGetter_clause(Swift5Parser.Getter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetter_clause(Swift5Parser.Setter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetter_clause(Swift5Parser.Setter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetter_name(Swift5Parser.Setter_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetter_name(Swift5Parser.Setter_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGetter_setter_keyword_block(Swift5Parser.Getter_setter_keyword_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGetter_setter_keyword_block(Swift5Parser.Getter_setter_keyword_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGetter_keyword_clause(Swift5Parser.Getter_keyword_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGetter_keyword_clause(Swift5Parser.Getter_keyword_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetter_keyword_clause(Swift5Parser.Setter_keyword_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetter_keyword_clause(Swift5Parser.Setter_keyword_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWillSet_didSet_block(Swift5Parser.WillSet_didSet_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWillSet_didSet_block(Swift5Parser.WillSet_didSet_blockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWillSet_clause(Swift5Parser.WillSet_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWillSet_clause(Swift5Parser.WillSet_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDidSet_clause(Swift5Parser.DidSet_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDidSet_clause(Swift5Parser.DidSet_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypealias_declaration(Swift5Parser.Typealias_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypealias_declaration(Swift5Parser.Typealias_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypealias_name(Swift5Parser.Typealias_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypealias_name(Swift5Parser.Typealias_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypealias_assignment(Swift5Parser.Typealias_assignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypealias_assignment(Swift5Parser.Typealias_assignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_declaration(Swift5Parser.Function_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_declaration(Swift5Parser.Function_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_head(Swift5Parser.Function_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_head(Swift5Parser.Function_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_name(Swift5Parser.Function_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_name(Swift5Parser.Function_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_signature(Swift5Parser.Function_signatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_signature(Swift5Parser.Function_signatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_result(Swift5Parser.Function_resultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_result(Swift5Parser.Function_resultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_body(Swift5Parser.Function_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_body(Swift5Parser.Function_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParameter_clause(Swift5Parser.Parameter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParameter_clause(Swift5Parser.Parameter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParameter_list(Swift5Parser.Parameter_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParameter_list(Swift5Parser.Parameter_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParameter(Swift5Parser.ParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParameter(Swift5Parser.ParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExternal_parameter_name(Swift5Parser.External_parameter_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExternal_parameter_name(Swift5Parser.External_parameter_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLocal_parameter_name(Swift5Parser.Local_parameter_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLocal_parameter_name(Swift5Parser.Local_parameter_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDefault_argument_clause(Swift5Parser.Default_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDefault_argument_clause(Swift5Parser.Default_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnum_declaration(Swift5Parser.Enum_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnum_declaration(Swift5Parser.Enum_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnion_style_enum(Swift5Parser.Union_style_enumContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnion_style_enum(Swift5Parser.Union_style_enumContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnion_style_enum_members(Swift5Parser.Union_style_enum_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnion_style_enum_members(Swift5Parser.Union_style_enum_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnion_style_enum_member(Swift5Parser.Union_style_enum_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnion_style_enum_member(Swift5Parser.Union_style_enum_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnion_style_enum_case_clause(Swift5Parser.Union_style_enum_case_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnion_style_enum_case_clause(Swift5Parser.Union_style_enum_case_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnion_style_enum_case_list(Swift5Parser.Union_style_enum_case_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnion_style_enum_case_list(Swift5Parser.Union_style_enum_case_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnion_style_enum_case(Swift5Parser.Union_style_enum_caseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnion_style_enum_case(Swift5Parser.Union_style_enum_caseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnum_name(Swift5Parser.Enum_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnum_name(Swift5Parser.Enum_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnum_case_name(Swift5Parser.Enum_case_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnum_case_name(Swift5Parser.Enum_case_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRaw_value_style_enum(Swift5Parser.Raw_value_style_enumContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRaw_value_style_enum(Swift5Parser.Raw_value_style_enumContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRaw_value_style_enum_members(Swift5Parser.Raw_value_style_enum_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRaw_value_style_enum_members(Swift5Parser.Raw_value_style_enum_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRaw_value_style_enum_member(Swift5Parser.Raw_value_style_enum_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRaw_value_style_enum_member(Swift5Parser.Raw_value_style_enum_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRaw_value_style_enum_case_clause(Swift5Parser.Raw_value_style_enum_case_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRaw_value_style_enum_case_clause(Swift5Parser.Raw_value_style_enum_case_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRaw_value_style_enum_case_list(Swift5Parser.Raw_value_style_enum_case_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRaw_value_style_enum_case_list(Swift5Parser.Raw_value_style_enum_case_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRaw_value_style_enum_case(Swift5Parser.Raw_value_style_enum_caseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRaw_value_style_enum_case(Swift5Parser.Raw_value_style_enum_caseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRaw_value_assignment(Swift5Parser.Raw_value_assignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRaw_value_assignment(Swift5Parser.Raw_value_assignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRaw_value_literal(Swift5Parser.Raw_value_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRaw_value_literal(Swift5Parser.Raw_value_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStruct_declaration(Swift5Parser.Struct_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStruct_declaration(Swift5Parser.Struct_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStruct_name(Swift5Parser.Struct_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStruct_name(Swift5Parser.Struct_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStruct_body(Swift5Parser.Struct_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStruct_body(Swift5Parser.Struct_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStruct_members(Swift5Parser.Struct_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStruct_members(Swift5Parser.Struct_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStruct_member(Swift5Parser.Struct_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStruct_member(Swift5Parser.Struct_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClass_declaration(Swift5Parser.Class_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClass_declaration(Swift5Parser.Class_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClass_name(Swift5Parser.Class_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClass_name(Swift5Parser.Class_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClass_body(Swift5Parser.Class_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClass_body(Swift5Parser.Class_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClass_members(Swift5Parser.Class_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClass_members(Swift5Parser.Class_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClass_member(Swift5Parser.Class_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClass_member(Swift5Parser.Class_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_declaration(Swift5Parser.Protocol_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_declaration(Swift5Parser.Protocol_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_name(Swift5Parser.Protocol_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_name(Swift5Parser.Protocol_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_body(Swift5Parser.Protocol_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_body(Swift5Parser.Protocol_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_members(Swift5Parser.Protocol_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_members(Swift5Parser.Protocol_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_member(Swift5Parser.Protocol_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_member(Swift5Parser.Protocol_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_member_declaration(Swift5Parser.Protocol_member_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_member_declaration(Swift5Parser.Protocol_member_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_property_declaration(Swift5Parser.Protocol_property_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_property_declaration(Swift5Parser.Protocol_property_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_method_declaration(Swift5Parser.Protocol_method_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_method_declaration(Swift5Parser.Protocol_method_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_initializer_declaration(Swift5Parser.Protocol_initializer_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_initializer_declaration(Swift5Parser.Protocol_initializer_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_subscript_declaration(Swift5Parser.Protocol_subscript_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_subscript_declaration(Swift5Parser.Protocol_subscript_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_associated_type_declaration(Swift5Parser.Protocol_associated_type_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_associated_type_declaration(Swift5Parser.Protocol_associated_type_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInitializer_declaration(Swift5Parser.Initializer_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInitializer_declaration(Swift5Parser.Initializer_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInitializer_head(Swift5Parser.Initializer_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInitializer_head(Swift5Parser.Initializer_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInitializer_body(Swift5Parser.Initializer_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInitializer_body(Swift5Parser.Initializer_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeinitializer_declaration(Swift5Parser.Deinitializer_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeinitializer_declaration(Swift5Parser.Deinitializer_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExtension_declaration(Swift5Parser.Extension_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExtension_declaration(Swift5Parser.Extension_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExtension_body(Swift5Parser.Extension_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExtension_body(Swift5Parser.Extension_bodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExtension_members(Swift5Parser.Extension_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExtension_members(Swift5Parser.Extension_membersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExtension_member(Swift5Parser.Extension_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExtension_member(Swift5Parser.Extension_memberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubscript_declaration(Swift5Parser.Subscript_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubscript_declaration(Swift5Parser.Subscript_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubscript_head(Swift5Parser.Subscript_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubscript_head(Swift5Parser.Subscript_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubscript_result(Swift5Parser.Subscript_resultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubscript_result(Swift5Parser.Subscript_resultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOperator_declaration(Swift5Parser.Operator_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOperator_declaration(Swift5Parser.Operator_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrefix_operator_declaration(Swift5Parser.Prefix_operator_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrefix_operator_declaration(Swift5Parser.Prefix_operator_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostfix_operator_declaration(Swift5Parser.Postfix_operator_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostfix_operator_declaration(Swift5Parser.Postfix_operator_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInfix_operator_declaration(Swift5Parser.Infix_operator_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInfix_operator_declaration(Swift5Parser.Infix_operator_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInfix_operator_group(Swift5Parser.Infix_operator_groupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInfix_operator_group(Swift5Parser.Infix_operator_groupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrecedence_group_declaration(Swift5Parser.Precedence_group_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrecedence_group_declaration(Swift5Parser.Precedence_group_declarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrecedence_group_attributes(Swift5Parser.Precedence_group_attributesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrecedence_group_attributes(Swift5Parser.Precedence_group_attributesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrecedence_group_attribute(Swift5Parser.Precedence_group_attributeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrecedence_group_attribute(Swift5Parser.Precedence_group_attributeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrecedence_group_relation(Swift5Parser.Precedence_group_relationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrecedence_group_relation(Swift5Parser.Precedence_group_relationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrecedence_group_assignment(Swift5Parser.Precedence_group_assignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrecedence_group_assignment(Swift5Parser.Precedence_group_assignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrecedence_group_associativity(Swift5Parser.Precedence_group_associativityContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrecedence_group_associativity(Swift5Parser.Precedence_group_associativityContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrecedence_group_names(Swift5Parser.Precedence_group_namesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrecedence_group_names(Swift5Parser.Precedence_group_namesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrecedence_group_name(Swift5Parser.Precedence_group_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrecedence_group_name(Swift5Parser.Precedence_group_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeclaration_modifier(Swift5Parser.Declaration_modifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeclaration_modifier(Swift5Parser.Declaration_modifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeclaration_modifiers(Swift5Parser.Declaration_modifiersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeclaration_modifiers(Swift5Parser.Declaration_modifiersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAccess_level_modifier(Swift5Parser.Access_level_modifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAccess_level_modifier(Swift5Parser.Access_level_modifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMutation_modifier(Swift5Parser.Mutation_modifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMutation_modifier(Swift5Parser.Mutation_modifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPattern(Swift5Parser.PatternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPattern(Swift5Parser.PatternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWildcard_pattern(Swift5Parser.Wildcard_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWildcard_pattern(Swift5Parser.Wildcard_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifier_pattern(Swift5Parser.Identifier_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifier_pattern(Swift5Parser.Identifier_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterValue_binding_pattern(Swift5Parser.Value_binding_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitValue_binding_pattern(Swift5Parser.Value_binding_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuple_pattern(Swift5Parser.Tuple_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuple_pattern(Swift5Parser.Tuple_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuple_pattern_element_list(Swift5Parser.Tuple_pattern_element_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuple_pattern_element_list(Swift5Parser.Tuple_pattern_element_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuple_pattern_element(Swift5Parser.Tuple_pattern_elementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuple_pattern_element(Swift5Parser.Tuple_pattern_elementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnum_case_pattern(Swift5Parser.Enum_case_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnum_case_pattern(Swift5Parser.Enum_case_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOptional_pattern(Swift5Parser.Optional_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOptional_pattern(Swift5Parser.Optional_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpression_pattern(Swift5Parser.Expression_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpression_pattern(Swift5Parser.Expression_patternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAttribute(Swift5Parser.AttributeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAttribute(Swift5Parser.AttributeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAttribute_name(Swift5Parser.Attribute_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAttribute_name(Swift5Parser.Attribute_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAttribute_argument_clause(Swift5Parser.Attribute_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAttribute_argument_clause(Swift5Parser.Attribute_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAttributes(Swift5Parser.AttributesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAttributes(Swift5Parser.AttributesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBalanced_tokens(Swift5Parser.Balanced_tokensContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBalanced_tokens(Swift5Parser.Balanced_tokensContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBalanced_token(Swift5Parser.Balanced_tokenContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBalanced_token(Swift5Parser.Balanced_tokenContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBalanced_token_punctuation(Swift5Parser.Balanced_token_punctuationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBalanced_token_punctuation(Swift5Parser.Balanced_token_punctuationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpression(Swift5Parser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpression(Swift5Parser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpression_list(Swift5Parser.Expression_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpression_list(Swift5Parser.Expression_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrefix_expression(Swift5Parser.Prefix_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrefix_expression(Swift5Parser.Prefix_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIn_out_expression(Swift5Parser.In_out_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIn_out_expression(Swift5Parser.In_out_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTry_operator(Swift5Parser.Try_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTry_operator(Swift5Parser.Try_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinary_expression(Swift5Parser.Binary_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinary_expression(Swift5Parser.Binary_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinary_expressions(Swift5Parser.Binary_expressionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinary_expressions(Swift5Parser.Binary_expressionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConditional_operator(Swift5Parser.Conditional_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConditional_operator(Swift5Parser.Conditional_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType_casting_operator(Swift5Parser.Type_casting_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType_casting_operator(Swift5Parser.Type_casting_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimary_expression(Swift5Parser.Primary_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimary_expression(Swift5Parser.Primary_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnqualified_name(Swift5Parser.Unqualified_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnqualified_name(Swift5Parser.Unqualified_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLiteral_expression(Swift5Parser.Literal_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLiteral_expression(Swift5Parser.Literal_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArray_literal(Swift5Parser.Array_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArray_literal(Swift5Parser.Array_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArray_literal_items(Swift5Parser.Array_literal_itemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArray_literal_items(Swift5Parser.Array_literal_itemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArray_literal_item(Swift5Parser.Array_literal_itemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArray_literal_item(Swift5Parser.Array_literal_itemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDictionary_literal(Swift5Parser.Dictionary_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDictionary_literal(Swift5Parser.Dictionary_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDictionary_literal_items(Swift5Parser.Dictionary_literal_itemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDictionary_literal_items(Swift5Parser.Dictionary_literal_itemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDictionary_literal_item(Swift5Parser.Dictionary_literal_itemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDictionary_literal_item(Swift5Parser.Dictionary_literal_itemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPlayground_literal(Swift5Parser.Playground_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPlayground_literal(Swift5Parser.Playground_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelf_pure_expression(Swift5Parser.Self_pure_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelf_pure_expression(Swift5Parser.Self_pure_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelf_method_expression(Swift5Parser.Self_method_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelf_method_expression(Swift5Parser.Self_method_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelf_subscript_expression(Swift5Parser.Self_subscript_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelf_subscript_expression(Swift5Parser.Self_subscript_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelf_initializer_expression(Swift5Parser.Self_initializer_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelf_initializer_expression(Swift5Parser.Self_initializer_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSuperclass_method_expression(Swift5Parser.Superclass_method_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSuperclass_method_expression(Swift5Parser.Superclass_method_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSuperclass_subscript_expression(Swift5Parser.Superclass_subscript_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSuperclass_subscript_expression(Swift5Parser.Superclass_subscript_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSuperclass_initializer_expression(Swift5Parser.Superclass_initializer_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSuperclass_initializer_expression(Swift5Parser.Superclass_initializer_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClosure_expression(Swift5Parser.Closure_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClosure_expression(Swift5Parser.Closure_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClosure_signature(Swift5Parser.Closure_signatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClosure_signature(Swift5Parser.Closure_signatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClosure_parameter_clause(Swift5Parser.Closure_parameter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClosure_parameter_clause(Swift5Parser.Closure_parameter_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClosure_parameter_list(Swift5Parser.Closure_parameter_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClosure_parameter_list(Swift5Parser.Closure_parameter_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClosure_parameter(Swift5Parser.Closure_parameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClosure_parameter(Swift5Parser.Closure_parameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCapture_list(Swift5Parser.Capture_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCapture_list(Swift5Parser.Capture_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCapture_list_items(Swift5Parser.Capture_list_itemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCapture_list_items(Swift5Parser.Capture_list_itemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCapture_list_item(Swift5Parser.Capture_list_itemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCapture_list_item(Swift5Parser.Capture_list_itemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCapture_specifier(Swift5Parser.Capture_specifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCapture_specifier(Swift5Parser.Capture_specifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImplicit_member_expression(Swift5Parser.Implicit_member_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImplicit_member_expression(Swift5Parser.Implicit_member_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParenthesized_operator(Swift5Parser.Parenthesized_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParenthesized_operator(Swift5Parser.Parenthesized_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParenthesized_expression(Swift5Parser.Parenthesized_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParenthesized_expression(Swift5Parser.Parenthesized_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuple_expression(Swift5Parser.Tuple_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuple_expression(Swift5Parser.Tuple_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuple_element_list(Swift5Parser.Tuple_element_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuple_element_list(Swift5Parser.Tuple_element_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuple_element(Swift5Parser.Tuple_elementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuple_element(Swift5Parser.Tuple_elementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWildcard_expression(Swift5Parser.Wildcard_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWildcard_expression(Swift5Parser.Wildcard_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKey_path_expression(Swift5Parser.Key_path_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKey_path_expression(Swift5Parser.Key_path_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKey_path_components(Swift5Parser.Key_path_componentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKey_path_components(Swift5Parser.Key_path_componentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKey_path_component(Swift5Parser.Key_path_componentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKey_path_component(Swift5Parser.Key_path_componentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKey_path_postfixes(Swift5Parser.Key_path_postfixesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKey_path_postfixes(Swift5Parser.Key_path_postfixesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKey_path_postfix(Swift5Parser.Key_path_postfixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKey_path_postfix(Swift5Parser.Key_path_postfixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelector_expression(Swift5Parser.Selector_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelector_expression(Swift5Parser.Selector_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKey_path_string_expression(Swift5Parser.Key_path_string_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKey_path_string_expression(Swift5Parser.Key_path_string_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostfix_expression(Swift5Parser.Postfix_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostfix_expression(Swift5Parser.Postfix_expressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_call_suffix(Swift5Parser.Function_call_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_call_suffix(Swift5Parser.Function_call_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInitializer_suffix(Swift5Parser.Initializer_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInitializer_suffix(Swift5Parser.Initializer_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExplicit_member_suffix(Swift5Parser.Explicit_member_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExplicit_member_suffix(Swift5Parser.Explicit_member_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostfix_self_suffix(Swift5Parser.Postfix_self_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostfix_self_suffix(Swift5Parser.Postfix_self_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubscript_suffix(Swift5Parser.Subscript_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubscript_suffix(Swift5Parser.Subscript_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForced_value_suffix(Swift5Parser.Forced_value_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForced_value_suffix(Swift5Parser.Forced_value_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOptional_chaining_suffix(Swift5Parser.Optional_chaining_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOptional_chaining_suffix(Swift5Parser.Optional_chaining_suffixContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_call_argument_clause(Swift5Parser.Function_call_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_call_argument_clause(Swift5Parser.Function_call_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_call_argument_list(Swift5Parser.Function_call_argument_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_call_argument_list(Swift5Parser.Function_call_argument_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_call_argument(Swift5Parser.Function_call_argumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_call_argument(Swift5Parser.Function_call_argumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTrailing_closures(Swift5Parser.Trailing_closuresContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTrailing_closures(Swift5Parser.Trailing_closuresContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLabeled_trailing_closures(Swift5Parser.Labeled_trailing_closuresContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLabeled_trailing_closures(Swift5Parser.Labeled_trailing_closuresContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLabeled_trailing_closure(Swift5Parser.Labeled_trailing_closureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLabeled_trailing_closure(Swift5Parser.Labeled_trailing_closureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArgument_names(Swift5Parser.Argument_namesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArgument_names(Swift5Parser.Argument_namesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArgument_name(Swift5Parser.Argument_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArgument_name(Swift5Parser.Argument_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType(Swift5Parser.TypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType(Swift5Parser.TypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType_annotation(Swift5Parser.Type_annotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType_annotation(Swift5Parser.Type_annotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType_identifier(Swift5Parser.Type_identifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType_identifier(Swift5Parser.Type_identifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType_name(Swift5Parser.Type_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType_name(Swift5Parser.Type_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuple_type(Swift5Parser.Tuple_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuple_type(Swift5Parser.Tuple_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuple_type_element_list(Swift5Parser.Tuple_type_element_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuple_type_element_list(Swift5Parser.Tuple_type_element_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuple_type_element(Swift5Parser.Tuple_type_elementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuple_type_element(Swift5Parser.Tuple_type_elementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElement_name(Swift5Parser.Element_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElement_name(Swift5Parser.Element_nameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_type(Swift5Parser.Function_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_type(Swift5Parser.Function_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_type_argument_clause(Swift5Parser.Function_type_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_type_argument_clause(Swift5Parser.Function_type_argument_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_type_argument_list(Swift5Parser.Function_type_argument_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_type_argument_list(Swift5Parser.Function_type_argument_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunction_type_argument(Swift5Parser.Function_type_argumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunction_type_argument(Swift5Parser.Function_type_argumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArgument_label(Swift5Parser.Argument_labelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArgument_label(Swift5Parser.Argument_labelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArray_type(Swift5Parser.Array_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArray_type(Swift5Parser.Array_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDictionary_type(Swift5Parser.Dictionary_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDictionary_type(Swift5Parser.Dictionary_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProtocol_composition_type(Swift5Parser.Protocol_composition_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProtocol_composition_type(Swift5Parser.Protocol_composition_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTrailing_composition_and(Swift5Parser.Trailing_composition_andContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTrailing_composition_and(Swift5Parser.Trailing_composition_andContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOpaque_type(Swift5Parser.Opaque_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOpaque_type(Swift5Parser.Opaque_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAny_type(Swift5Parser.Any_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAny_type(Swift5Parser.Any_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelf_type(Swift5Parser.Self_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelf_type(Swift5Parser.Self_typeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType_inheritance_clause(Swift5Parser.Type_inheritance_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType_inheritance_clause(Swift5Parser.Type_inheritance_clauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType_inheritance_list(Swift5Parser.Type_inheritance_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType_inheritance_list(Swift5Parser.Type_inheritance_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifier(Swift5Parser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifier(Swift5Parser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifier_list(Swift5Parser.Identifier_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifier_list(Swift5Parser.Identifier_listContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKeyword(Swift5Parser.KeywordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKeyword(Swift5Parser.KeywordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignment_operator(Swift5Parser.Assignment_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignment_operator(Swift5Parser.Assignment_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNegate_prefix_operator(Swift5Parser.Negate_prefix_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNegate_prefix_operator(Swift5Parser.Negate_prefix_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCompilation_condition_AND(Swift5Parser.Compilation_condition_ANDContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCompilation_condition_AND(Swift5Parser.Compilation_condition_ANDContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCompilation_condition_OR(Swift5Parser.Compilation_condition_ORContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCompilation_condition_OR(Swift5Parser.Compilation_condition_ORContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCompilation_condition_GE(Swift5Parser.Compilation_condition_GEContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCompilation_condition_GE(Swift5Parser.Compilation_condition_GEContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCompilation_condition_L(Swift5Parser.Compilation_condition_LContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCompilation_condition_L(Swift5Parser.Compilation_condition_LContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrow_operator(Swift5Parser.Arrow_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrow_operator(Swift5Parser.Arrow_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRange_operator(Swift5Parser.Range_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRange_operator(Swift5Parser.Range_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSame_type_equals(Swift5Parser.Same_type_equalsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSame_type_equals(Swift5Parser.Same_type_equalsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBinary_operator(Swift5Parser.Binary_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBinary_operator(Swift5Parser.Binary_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrefix_operator(Swift5Parser.Prefix_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrefix_operator(Swift5Parser.Prefix_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostfix_operator(Swift5Parser.Postfix_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostfix_operator(Swift5Parser.Postfix_operatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOperator(Swift5Parser.OperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOperator(Swift5Parser.OperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOperator_head(Swift5Parser.Operator_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOperator_head(Swift5Parser.Operator_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOperator_character(Swift5Parser.Operator_characterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOperator_character(Swift5Parser.Operator_characterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOperator_characters(Swift5Parser.Operator_charactersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOperator_characters(Swift5Parser.Operator_charactersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDot_operator_head(Swift5Parser.Dot_operator_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDot_operator_head(Swift5Parser.Dot_operator_headContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDot_operator_character(Swift5Parser.Dot_operator_characterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDot_operator_character(Swift5Parser.Dot_operator_characterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDot_operator_characters(Swift5Parser.Dot_operator_charactersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDot_operator_characters(Swift5Parser.Dot_operator_charactersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLiteral(Swift5Parser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLiteral(Swift5Parser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNumeric_literal(Swift5Parser.Numeric_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNumeric_literal(Swift5Parser.Numeric_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBoolean_literal(Swift5Parser.Boolean_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBoolean_literal(Swift5Parser.Boolean_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNil_literal(Swift5Parser.Nil_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNil_literal(Swift5Parser.Nil_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInteger_literal(Swift5Parser.Integer_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInteger_literal(Swift5Parser.Integer_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterString_literal(Swift5Parser.String_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitString_literal(Swift5Parser.String_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExtended_string_literal(Swift5Parser.Extended_string_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExtended_string_literal(Swift5Parser.Extended_string_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatic_string_literal(Swift5Parser.Static_string_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatic_string_literal(Swift5Parser.Static_string_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterpolated_string_literal(Swift5Parser.Interpolated_string_literalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterpolated_string_literal(Swift5Parser.Interpolated_string_literalContext ctx) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitTerminal(TerminalNode node) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitErrorNode(ErrorNode node) { } +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserBaseVisitor.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserBaseVisitor.java new file mode 100644 index 00000000..06a5c77d --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserBaseVisitor.java @@ -0,0 +1,2265 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +// Generated from Swift5Parser.g4 by ANTLR 4.10 +package io.ecocode.ios.swift.antlr.generated; + +import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor; + +/** + * This class provides an empty implementation of {@link Swift5ParserVisitor}, + * which can be extended to create a visitor which only needs to handle a subset + * of the available methods. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public class Swift5ParserBaseVisitor extends AbstractParseTreeVisitor implements Swift5ParserVisitor { + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTop_level(Swift5Parser.Top_levelContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStatement(Swift5Parser.StatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStatements(Swift5Parser.StatementsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLoop_statement(Swift5Parser.Loop_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFor_in_statement(Swift5Parser.For_in_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWhile_statement(Swift5Parser.While_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCondition_list(Swift5Parser.Condition_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCondition(Swift5Parser.ConditionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCase_condition(Swift5Parser.Case_conditionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOptional_binding_condition(Swift5Parser.Optional_binding_conditionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRepeat_while_statement(Swift5Parser.Repeat_while_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBranch_statement(Swift5Parser.Branch_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIf_statement(Swift5Parser.If_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitElse_clause(Swift5Parser.Else_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGuard_statement(Swift5Parser.Guard_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwitch_statement(Swift5Parser.Switch_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwitch_cases(Swift5Parser.Switch_casesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwitch_case(Swift5Parser.Switch_caseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCase_label(Swift5Parser.Case_labelContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCase_item_list(Swift5Parser.Case_item_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDefault_label(Swift5Parser.Default_labelContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWhere_clause(Swift5Parser.Where_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWhere_expression(Swift5Parser.Where_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConditional_switch_case(Swift5Parser.Conditional_switch_caseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwitch_if_directive_clause(Swift5Parser.Switch_if_directive_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwitch_elseif_directive_clauses(Swift5Parser.Switch_elseif_directive_clausesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwitch_elseif_directive_clause(Swift5Parser.Switch_elseif_directive_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwitch_else_directive_clause(Swift5Parser.Switch_else_directive_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLabeled_statement(Swift5Parser.Labeled_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStatement_label(Swift5Parser.Statement_labelContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLabel_name(Swift5Parser.Label_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitControl_transfer_statement(Swift5Parser.Control_transfer_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBreak_statement(Swift5Parser.Break_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitContinue_statement(Swift5Parser.Continue_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFallthrough_statement(Swift5Parser.Fallthrough_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitReturn_statement(Swift5Parser.Return_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitThrow_statement(Swift5Parser.Throw_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDefer_statement(Swift5Parser.Defer_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDo_statement(Swift5Parser.Do_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCatch_clauses(Swift5Parser.Catch_clausesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCatch_clause(Swift5Parser.Catch_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCatch_pattern_list(Swift5Parser.Catch_pattern_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCatch_pattern(Swift5Parser.Catch_patternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCompiler_control_statement(Swift5Parser.Compiler_control_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConditional_compilation_block(Swift5Parser.Conditional_compilation_blockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIf_directive_clause(Swift5Parser.If_directive_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitElseif_directive_clauses(Swift5Parser.Elseif_directive_clausesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitElseif_directive_clause(Swift5Parser.Elseif_directive_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitElse_directive_clause(Swift5Parser.Else_directive_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCompilation_condition(Swift5Parser.Compilation_conditionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPlatform_condition(Swift5Parser.Platform_conditionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwift_version(Swift5Parser.Swift_versionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwift_version_continuation(Swift5Parser.Swift_version_continuationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOperating_system(Swift5Parser.Operating_systemContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArchitecture(Swift5Parser.ArchitectureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitModule_name(Swift5Parser.Module_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEnvironment(Swift5Parser.EnvironmentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLine_control_statement(Swift5Parser.Line_control_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLine_number(Swift5Parser.Line_numberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFile_name(Swift5Parser.File_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDiagnostic_statement(Swift5Parser.Diagnostic_statementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDiagnostic_message(Swift5Parser.Diagnostic_messageContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAvailability_condition(Swift5Parser.Availability_conditionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAvailability_arguments(Swift5Parser.Availability_argumentsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAvailability_argument(Swift5Parser.Availability_argumentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPlatform_name(Swift5Parser.Platform_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPlatform_version(Swift5Parser.Platform_versionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneric_parameter_clause(Swift5Parser.Generic_parameter_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneric_parameter_list(Swift5Parser.Generic_parameter_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneric_parameter(Swift5Parser.Generic_parameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneric_where_clause(Swift5Parser.Generic_where_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRequirement_list(Swift5Parser.Requirement_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRequirement(Swift5Parser.RequirementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConformance_requirement(Swift5Parser.Conformance_requirementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSame_type_requirement(Swift5Parser.Same_type_requirementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneric_argument_clause(Swift5Parser.Generic_argument_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneric_argument_list(Swift5Parser.Generic_argument_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneric_argument(Swift5Parser.Generic_argumentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDeclaration(Swift5Parser.DeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDeclarations(Swift5Parser.DeclarationsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTop_level_declaration(Swift5Parser.Top_level_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCode_block(Swift5Parser.Code_blockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImport_declaration(Swift5Parser.Import_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImport_kind(Swift5Parser.Import_kindContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImport_path(Swift5Parser.Import_pathContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImport_path_identifier(Swift5Parser.Import_path_identifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConstant_declaration(Swift5Parser.Constant_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPattern_initializer_list(Swift5Parser.Pattern_initializer_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPattern_initializer(Swift5Parser.Pattern_initializerContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInitializer(Swift5Parser.InitializerContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitVariable_declaration(Swift5Parser.Variable_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitVariable_declaration_head(Swift5Parser.Variable_declaration_headContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitVariable_name(Swift5Parser.Variable_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGetter_setter_block(Swift5Parser.Getter_setter_blockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGetter_clause(Swift5Parser.Getter_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSetter_clause(Swift5Parser.Setter_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSetter_name(Swift5Parser.Setter_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGetter_setter_keyword_block(Swift5Parser.Getter_setter_keyword_blockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGetter_keyword_clause(Swift5Parser.Getter_keyword_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSetter_keyword_clause(Swift5Parser.Setter_keyword_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWillSet_didSet_block(Swift5Parser.WillSet_didSet_blockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWillSet_clause(Swift5Parser.WillSet_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDidSet_clause(Swift5Parser.DidSet_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypealias_declaration(Swift5Parser.Typealias_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypealias_name(Swift5Parser.Typealias_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypealias_assignment(Swift5Parser.Typealias_assignmentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_declaration(Swift5Parser.Function_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_head(Swift5Parser.Function_headContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_name(Swift5Parser.Function_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_signature(Swift5Parser.Function_signatureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_result(Swift5Parser.Function_resultContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_body(Swift5Parser.Function_bodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParameter_clause(Swift5Parser.Parameter_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParameter_list(Swift5Parser.Parameter_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParameter(Swift5Parser.ParameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExternal_parameter_name(Swift5Parser.External_parameter_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLocal_parameter_name(Swift5Parser.Local_parameter_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDefault_argument_clause(Swift5Parser.Default_argument_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEnum_declaration(Swift5Parser.Enum_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnion_style_enum(Swift5Parser.Union_style_enumContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnion_style_enum_members(Swift5Parser.Union_style_enum_membersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnion_style_enum_member(Swift5Parser.Union_style_enum_memberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnion_style_enum_case_clause(Swift5Parser.Union_style_enum_case_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnion_style_enum_case_list(Swift5Parser.Union_style_enum_case_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnion_style_enum_case(Swift5Parser.Union_style_enum_caseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEnum_name(Swift5Parser.Enum_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEnum_case_name(Swift5Parser.Enum_case_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRaw_value_style_enum(Swift5Parser.Raw_value_style_enumContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRaw_value_style_enum_members(Swift5Parser.Raw_value_style_enum_membersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRaw_value_style_enum_member(Swift5Parser.Raw_value_style_enum_memberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRaw_value_style_enum_case_clause(Swift5Parser.Raw_value_style_enum_case_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRaw_value_style_enum_case_list(Swift5Parser.Raw_value_style_enum_case_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRaw_value_style_enum_case(Swift5Parser.Raw_value_style_enum_caseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRaw_value_assignment(Swift5Parser.Raw_value_assignmentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRaw_value_literal(Swift5Parser.Raw_value_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStruct_declaration(Swift5Parser.Struct_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStruct_name(Swift5Parser.Struct_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStruct_body(Swift5Parser.Struct_bodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStruct_members(Swift5Parser.Struct_membersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStruct_member(Swift5Parser.Struct_memberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClass_declaration(Swift5Parser.Class_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClass_name(Swift5Parser.Class_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClass_body(Swift5Parser.Class_bodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClass_members(Swift5Parser.Class_membersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClass_member(Swift5Parser.Class_memberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_declaration(Swift5Parser.Protocol_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_name(Swift5Parser.Protocol_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_body(Swift5Parser.Protocol_bodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_members(Swift5Parser.Protocol_membersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_member(Swift5Parser.Protocol_memberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_member_declaration(Swift5Parser.Protocol_member_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_property_declaration(Swift5Parser.Protocol_property_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_method_declaration(Swift5Parser.Protocol_method_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_initializer_declaration(Swift5Parser.Protocol_initializer_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_subscript_declaration(Swift5Parser.Protocol_subscript_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_associated_type_declaration(Swift5Parser.Protocol_associated_type_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInitializer_declaration(Swift5Parser.Initializer_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInitializer_head(Swift5Parser.Initializer_headContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInitializer_body(Swift5Parser.Initializer_bodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDeinitializer_declaration(Swift5Parser.Deinitializer_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExtension_declaration(Swift5Parser.Extension_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExtension_body(Swift5Parser.Extension_bodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExtension_members(Swift5Parser.Extension_membersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExtension_member(Swift5Parser.Extension_memberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubscript_declaration(Swift5Parser.Subscript_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubscript_head(Swift5Parser.Subscript_headContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubscript_result(Swift5Parser.Subscript_resultContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOperator_declaration(Swift5Parser.Operator_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrefix_operator_declaration(Swift5Parser.Prefix_operator_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPostfix_operator_declaration(Swift5Parser.Postfix_operator_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInfix_operator_declaration(Swift5Parser.Infix_operator_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInfix_operator_group(Swift5Parser.Infix_operator_groupContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrecedence_group_declaration(Swift5Parser.Precedence_group_declarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrecedence_group_attributes(Swift5Parser.Precedence_group_attributesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrecedence_group_attribute(Swift5Parser.Precedence_group_attributeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrecedence_group_relation(Swift5Parser.Precedence_group_relationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrecedence_group_assignment(Swift5Parser.Precedence_group_assignmentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrecedence_group_associativity(Swift5Parser.Precedence_group_associativityContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrecedence_group_names(Swift5Parser.Precedence_group_namesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrecedence_group_name(Swift5Parser.Precedence_group_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDeclaration_modifier(Swift5Parser.Declaration_modifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDeclaration_modifiers(Swift5Parser.Declaration_modifiersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAccess_level_modifier(Swift5Parser.Access_level_modifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitMutation_modifier(Swift5Parser.Mutation_modifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPattern(Swift5Parser.PatternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWildcard_pattern(Swift5Parser.Wildcard_patternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIdentifier_pattern(Swift5Parser.Identifier_patternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitValue_binding_pattern(Swift5Parser.Value_binding_patternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuple_pattern(Swift5Parser.Tuple_patternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuple_pattern_element_list(Swift5Parser.Tuple_pattern_element_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuple_pattern_element(Swift5Parser.Tuple_pattern_elementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEnum_case_pattern(Swift5Parser.Enum_case_patternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOptional_pattern(Swift5Parser.Optional_patternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExpression_pattern(Swift5Parser.Expression_patternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAttribute(Swift5Parser.AttributeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAttribute_name(Swift5Parser.Attribute_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAttribute_argument_clause(Swift5Parser.Attribute_argument_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAttributes(Swift5Parser.AttributesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBalanced_tokens(Swift5Parser.Balanced_tokensContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBalanced_token(Swift5Parser.Balanced_tokenContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBalanced_token_punctuation(Swift5Parser.Balanced_token_punctuationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExpression(Swift5Parser.ExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExpression_list(Swift5Parser.Expression_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrefix_expression(Swift5Parser.Prefix_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIn_out_expression(Swift5Parser.In_out_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTry_operator(Swift5Parser.Try_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBinary_expression(Swift5Parser.Binary_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBinary_expressions(Swift5Parser.Binary_expressionsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConditional_operator(Swift5Parser.Conditional_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType_casting_operator(Swift5Parser.Type_casting_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrimary_expression(Swift5Parser.Primary_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnqualified_name(Swift5Parser.Unqualified_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLiteral_expression(Swift5Parser.Literal_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArray_literal(Swift5Parser.Array_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArray_literal_items(Swift5Parser.Array_literal_itemsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArray_literal_item(Swift5Parser.Array_literal_itemContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDictionary_literal(Swift5Parser.Dictionary_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDictionary_literal_items(Swift5Parser.Dictionary_literal_itemsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDictionary_literal_item(Swift5Parser.Dictionary_literal_itemContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPlayground_literal(Swift5Parser.Playground_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSelf_pure_expression(Swift5Parser.Self_pure_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSelf_method_expression(Swift5Parser.Self_method_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSelf_subscript_expression(Swift5Parser.Self_subscript_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSelf_initializer_expression(Swift5Parser.Self_initializer_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSuperclass_method_expression(Swift5Parser.Superclass_method_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSuperclass_subscript_expression(Swift5Parser.Superclass_subscript_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSuperclass_initializer_expression(Swift5Parser.Superclass_initializer_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClosure_expression(Swift5Parser.Closure_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClosure_signature(Swift5Parser.Closure_signatureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClosure_parameter_clause(Swift5Parser.Closure_parameter_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClosure_parameter_list(Swift5Parser.Closure_parameter_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClosure_parameter(Swift5Parser.Closure_parameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCapture_list(Swift5Parser.Capture_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCapture_list_items(Swift5Parser.Capture_list_itemsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCapture_list_item(Swift5Parser.Capture_list_itemContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCapture_specifier(Swift5Parser.Capture_specifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImplicit_member_expression(Swift5Parser.Implicit_member_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParenthesized_operator(Swift5Parser.Parenthesized_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParenthesized_expression(Swift5Parser.Parenthesized_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuple_expression(Swift5Parser.Tuple_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuple_element_list(Swift5Parser.Tuple_element_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuple_element(Swift5Parser.Tuple_elementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWildcard_expression(Swift5Parser.Wildcard_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitKey_path_expression(Swift5Parser.Key_path_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitKey_path_components(Swift5Parser.Key_path_componentsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitKey_path_component(Swift5Parser.Key_path_componentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitKey_path_postfixes(Swift5Parser.Key_path_postfixesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitKey_path_postfix(Swift5Parser.Key_path_postfixContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSelector_expression(Swift5Parser.Selector_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitKey_path_string_expression(Swift5Parser.Key_path_string_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPostfix_expression(Swift5Parser.Postfix_expressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_call_suffix(Swift5Parser.Function_call_suffixContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInitializer_suffix(Swift5Parser.Initializer_suffixContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExplicit_member_suffix(Swift5Parser.Explicit_member_suffixContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPostfix_self_suffix(Swift5Parser.Postfix_self_suffixContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSubscript_suffix(Swift5Parser.Subscript_suffixContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitForced_value_suffix(Swift5Parser.Forced_value_suffixContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOptional_chaining_suffix(Swift5Parser.Optional_chaining_suffixContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_call_argument_clause(Swift5Parser.Function_call_argument_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_call_argument_list(Swift5Parser.Function_call_argument_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_call_argument(Swift5Parser.Function_call_argumentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTrailing_closures(Swift5Parser.Trailing_closuresContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLabeled_trailing_closures(Swift5Parser.Labeled_trailing_closuresContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLabeled_trailing_closure(Swift5Parser.Labeled_trailing_closureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArgument_names(Swift5Parser.Argument_namesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArgument_name(Swift5Parser.Argument_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType(Swift5Parser.TypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType_annotation(Swift5Parser.Type_annotationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType_identifier(Swift5Parser.Type_identifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType_name(Swift5Parser.Type_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuple_type(Swift5Parser.Tuple_typeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuple_type_element_list(Swift5Parser.Tuple_type_element_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuple_type_element(Swift5Parser.Tuple_type_elementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitElement_name(Swift5Parser.Element_nameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_type(Swift5Parser.Function_typeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_type_argument_clause(Swift5Parser.Function_type_argument_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_type_argument_list(Swift5Parser.Function_type_argument_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunction_type_argument(Swift5Parser.Function_type_argumentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArgument_label(Swift5Parser.Argument_labelContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArray_type(Swift5Parser.Array_typeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDictionary_type(Swift5Parser.Dictionary_typeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProtocol_composition_type(Swift5Parser.Protocol_composition_typeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTrailing_composition_and(Swift5Parser.Trailing_composition_andContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOpaque_type(Swift5Parser.Opaque_typeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAny_type(Swift5Parser.Any_typeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSelf_type(Swift5Parser.Self_typeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType_inheritance_clause(Swift5Parser.Type_inheritance_clauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType_inheritance_list(Swift5Parser.Type_inheritance_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIdentifier(Swift5Parser.IdentifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIdentifier_list(Swift5Parser.Identifier_listContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitKeyword(Swift5Parser.KeywordContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAssignment_operator(Swift5Parser.Assignment_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNegate_prefix_operator(Swift5Parser.Negate_prefix_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCompilation_condition_AND(Swift5Parser.Compilation_condition_ANDContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCompilation_condition_OR(Swift5Parser.Compilation_condition_ORContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCompilation_condition_GE(Swift5Parser.Compilation_condition_GEContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCompilation_condition_L(Swift5Parser.Compilation_condition_LContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrow_operator(Swift5Parser.Arrow_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRange_operator(Swift5Parser.Range_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSame_type_equals(Swift5Parser.Same_type_equalsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBinary_operator(Swift5Parser.Binary_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrefix_operator(Swift5Parser.Prefix_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPostfix_operator(Swift5Parser.Postfix_operatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOperator(Swift5Parser.OperatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOperator_head(Swift5Parser.Operator_headContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOperator_character(Swift5Parser.Operator_characterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOperator_characters(Swift5Parser.Operator_charactersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDot_operator_head(Swift5Parser.Dot_operator_headContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDot_operator_character(Swift5Parser.Dot_operator_characterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDot_operator_characters(Swift5Parser.Dot_operator_charactersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLiteral(Swift5Parser.LiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNumeric_literal(Swift5Parser.Numeric_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBoolean_literal(Swift5Parser.Boolean_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNil_literal(Swift5Parser.Nil_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInteger_literal(Swift5Parser.Integer_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitString_literal(Swift5Parser.String_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExtended_string_literal(Swift5Parser.Extended_string_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStatic_string_literal(Swift5Parser.Static_string_literalContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInterpolated_string_literal(Swift5Parser.Interpolated_string_literalContext ctx) { return visitChildren(ctx); } +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserListener.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserListener.java new file mode 100644 index 00000000..998b63a4 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserListener.java @@ -0,0 +1,3232 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +// Generated from Swift5Parser.g4 by ANTLR 4.10 +package io.ecocode.ios.swift.antlr.generated; + +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link Swift5Parser}. + */ +public interface Swift5ParserListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link Swift5Parser#top_level}. + * @param ctx the parse tree + */ + void enterTop_level(Swift5Parser.Top_levelContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#top_level}. + * @param ctx the parse tree + */ + void exitTop_level(Swift5Parser.Top_levelContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#statement}. + * @param ctx the parse tree + */ + void enterStatement(Swift5Parser.StatementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#statement}. + * @param ctx the parse tree + */ + void exitStatement(Swift5Parser.StatementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#statements}. + * @param ctx the parse tree + */ + void enterStatements(Swift5Parser.StatementsContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#statements}. + * @param ctx the parse tree + */ + void exitStatements(Swift5Parser.StatementsContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#loop_statement}. + * @param ctx the parse tree + */ + void enterLoop_statement(Swift5Parser.Loop_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#loop_statement}. + * @param ctx the parse tree + */ + void exitLoop_statement(Swift5Parser.Loop_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#for_in_statement}. + * @param ctx the parse tree + */ + void enterFor_in_statement(Swift5Parser.For_in_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#for_in_statement}. + * @param ctx the parse tree + */ + void exitFor_in_statement(Swift5Parser.For_in_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#while_statement}. + * @param ctx the parse tree + */ + void enterWhile_statement(Swift5Parser.While_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#while_statement}. + * @param ctx the parse tree + */ + void exitWhile_statement(Swift5Parser.While_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#condition_list}. + * @param ctx the parse tree + */ + void enterCondition_list(Swift5Parser.Condition_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#condition_list}. + * @param ctx the parse tree + */ + void exitCondition_list(Swift5Parser.Condition_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#condition}. + * @param ctx the parse tree + */ + void enterCondition(Swift5Parser.ConditionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#condition}. + * @param ctx the parse tree + */ + void exitCondition(Swift5Parser.ConditionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#case_condition}. + * @param ctx the parse tree + */ + void enterCase_condition(Swift5Parser.Case_conditionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#case_condition}. + * @param ctx the parse tree + */ + void exitCase_condition(Swift5Parser.Case_conditionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#optional_binding_condition}. + * @param ctx the parse tree + */ + void enterOptional_binding_condition(Swift5Parser.Optional_binding_conditionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#optional_binding_condition}. + * @param ctx the parse tree + */ + void exitOptional_binding_condition(Swift5Parser.Optional_binding_conditionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#repeat_while_statement}. + * @param ctx the parse tree + */ + void enterRepeat_while_statement(Swift5Parser.Repeat_while_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#repeat_while_statement}. + * @param ctx the parse tree + */ + void exitRepeat_while_statement(Swift5Parser.Repeat_while_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#branch_statement}. + * @param ctx the parse tree + */ + void enterBranch_statement(Swift5Parser.Branch_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#branch_statement}. + * @param ctx the parse tree + */ + void exitBranch_statement(Swift5Parser.Branch_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#if_statement}. + * @param ctx the parse tree + */ + void enterIf_statement(Swift5Parser.If_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#if_statement}. + * @param ctx the parse tree + */ + void exitIf_statement(Swift5Parser.If_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#else_clause}. + * @param ctx the parse tree + */ + void enterElse_clause(Swift5Parser.Else_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#else_clause}. + * @param ctx the parse tree + */ + void exitElse_clause(Swift5Parser.Else_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#guard_statement}. + * @param ctx the parse tree + */ + void enterGuard_statement(Swift5Parser.Guard_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#guard_statement}. + * @param ctx the parse tree + */ + void exitGuard_statement(Swift5Parser.Guard_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#switch_statement}. + * @param ctx the parse tree + */ + void enterSwitch_statement(Swift5Parser.Switch_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#switch_statement}. + * @param ctx the parse tree + */ + void exitSwitch_statement(Swift5Parser.Switch_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#switch_cases}. + * @param ctx the parse tree + */ + void enterSwitch_cases(Swift5Parser.Switch_casesContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#switch_cases}. + * @param ctx the parse tree + */ + void exitSwitch_cases(Swift5Parser.Switch_casesContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#switch_case}. + * @param ctx the parse tree + */ + void enterSwitch_case(Swift5Parser.Switch_caseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#switch_case}. + * @param ctx the parse tree + */ + void exitSwitch_case(Swift5Parser.Switch_caseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#case_label}. + * @param ctx the parse tree + */ + void enterCase_label(Swift5Parser.Case_labelContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#case_label}. + * @param ctx the parse tree + */ + void exitCase_label(Swift5Parser.Case_labelContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#case_item_list}. + * @param ctx the parse tree + */ + void enterCase_item_list(Swift5Parser.Case_item_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#case_item_list}. + * @param ctx the parse tree + */ + void exitCase_item_list(Swift5Parser.Case_item_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#default_label}. + * @param ctx the parse tree + */ + void enterDefault_label(Swift5Parser.Default_labelContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#default_label}. + * @param ctx the parse tree + */ + void exitDefault_label(Swift5Parser.Default_labelContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#where_clause}. + * @param ctx the parse tree + */ + void enterWhere_clause(Swift5Parser.Where_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#where_clause}. + * @param ctx the parse tree + */ + void exitWhere_clause(Swift5Parser.Where_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#where_expression}. + * @param ctx the parse tree + */ + void enterWhere_expression(Swift5Parser.Where_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#where_expression}. + * @param ctx the parse tree + */ + void exitWhere_expression(Swift5Parser.Where_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#conditional_switch_case}. + * @param ctx the parse tree + */ + void enterConditional_switch_case(Swift5Parser.Conditional_switch_caseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#conditional_switch_case}. + * @param ctx the parse tree + */ + void exitConditional_switch_case(Swift5Parser.Conditional_switch_caseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#switch_if_directive_clause}. + * @param ctx the parse tree + */ + void enterSwitch_if_directive_clause(Swift5Parser.Switch_if_directive_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#switch_if_directive_clause}. + * @param ctx the parse tree + */ + void exitSwitch_if_directive_clause(Swift5Parser.Switch_if_directive_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#switch_elseif_directive_clauses}. + * @param ctx the parse tree + */ + void enterSwitch_elseif_directive_clauses(Swift5Parser.Switch_elseif_directive_clausesContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#switch_elseif_directive_clauses}. + * @param ctx the parse tree + */ + void exitSwitch_elseif_directive_clauses(Swift5Parser.Switch_elseif_directive_clausesContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#switch_elseif_directive_clause}. + * @param ctx the parse tree + */ + void enterSwitch_elseif_directive_clause(Swift5Parser.Switch_elseif_directive_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#switch_elseif_directive_clause}. + * @param ctx the parse tree + */ + void exitSwitch_elseif_directive_clause(Swift5Parser.Switch_elseif_directive_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#switch_else_directive_clause}. + * @param ctx the parse tree + */ + void enterSwitch_else_directive_clause(Swift5Parser.Switch_else_directive_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#switch_else_directive_clause}. + * @param ctx the parse tree + */ + void exitSwitch_else_directive_clause(Swift5Parser.Switch_else_directive_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#labeled_statement}. + * @param ctx the parse tree + */ + void enterLabeled_statement(Swift5Parser.Labeled_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#labeled_statement}. + * @param ctx the parse tree + */ + void exitLabeled_statement(Swift5Parser.Labeled_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#statement_label}. + * @param ctx the parse tree + */ + void enterStatement_label(Swift5Parser.Statement_labelContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#statement_label}. + * @param ctx the parse tree + */ + void exitStatement_label(Swift5Parser.Statement_labelContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#label_name}. + * @param ctx the parse tree + */ + void enterLabel_name(Swift5Parser.Label_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#label_name}. + * @param ctx the parse tree + */ + void exitLabel_name(Swift5Parser.Label_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#control_transfer_statement}. + * @param ctx the parse tree + */ + void enterControl_transfer_statement(Swift5Parser.Control_transfer_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#control_transfer_statement}. + * @param ctx the parse tree + */ + void exitControl_transfer_statement(Swift5Parser.Control_transfer_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#break_statement}. + * @param ctx the parse tree + */ + void enterBreak_statement(Swift5Parser.Break_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#break_statement}. + * @param ctx the parse tree + */ + void exitBreak_statement(Swift5Parser.Break_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#continue_statement}. + * @param ctx the parse tree + */ + void enterContinue_statement(Swift5Parser.Continue_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#continue_statement}. + * @param ctx the parse tree + */ + void exitContinue_statement(Swift5Parser.Continue_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#fallthrough_statement}. + * @param ctx the parse tree + */ + void enterFallthrough_statement(Swift5Parser.Fallthrough_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#fallthrough_statement}. + * @param ctx the parse tree + */ + void exitFallthrough_statement(Swift5Parser.Fallthrough_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#return_statement}. + * @param ctx the parse tree + */ + void enterReturn_statement(Swift5Parser.Return_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#return_statement}. + * @param ctx the parse tree + */ + void exitReturn_statement(Swift5Parser.Return_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#throw_statement}. + * @param ctx the parse tree + */ + void enterThrow_statement(Swift5Parser.Throw_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#throw_statement}. + * @param ctx the parse tree + */ + void exitThrow_statement(Swift5Parser.Throw_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#defer_statement}. + * @param ctx the parse tree + */ + void enterDefer_statement(Swift5Parser.Defer_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#defer_statement}. + * @param ctx the parse tree + */ + void exitDefer_statement(Swift5Parser.Defer_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#do_statement}. + * @param ctx the parse tree + */ + void enterDo_statement(Swift5Parser.Do_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#do_statement}. + * @param ctx the parse tree + */ + void exitDo_statement(Swift5Parser.Do_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#catch_clauses}. + * @param ctx the parse tree + */ + void enterCatch_clauses(Swift5Parser.Catch_clausesContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#catch_clauses}. + * @param ctx the parse tree + */ + void exitCatch_clauses(Swift5Parser.Catch_clausesContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#catch_clause}. + * @param ctx the parse tree + */ + void enterCatch_clause(Swift5Parser.Catch_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#catch_clause}. + * @param ctx the parse tree + */ + void exitCatch_clause(Swift5Parser.Catch_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#catch_pattern_list}. + * @param ctx the parse tree + */ + void enterCatch_pattern_list(Swift5Parser.Catch_pattern_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#catch_pattern_list}. + * @param ctx the parse tree + */ + void exitCatch_pattern_list(Swift5Parser.Catch_pattern_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#catch_pattern}. + * @param ctx the parse tree + */ + void enterCatch_pattern(Swift5Parser.Catch_patternContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#catch_pattern}. + * @param ctx the parse tree + */ + void exitCatch_pattern(Swift5Parser.Catch_patternContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#compiler_control_statement}. + * @param ctx the parse tree + */ + void enterCompiler_control_statement(Swift5Parser.Compiler_control_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#compiler_control_statement}. + * @param ctx the parse tree + */ + void exitCompiler_control_statement(Swift5Parser.Compiler_control_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#conditional_compilation_block}. + * @param ctx the parse tree + */ + void enterConditional_compilation_block(Swift5Parser.Conditional_compilation_blockContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#conditional_compilation_block}. + * @param ctx the parse tree + */ + void exitConditional_compilation_block(Swift5Parser.Conditional_compilation_blockContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#if_directive_clause}. + * @param ctx the parse tree + */ + void enterIf_directive_clause(Swift5Parser.If_directive_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#if_directive_clause}. + * @param ctx the parse tree + */ + void exitIf_directive_clause(Swift5Parser.If_directive_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#elseif_directive_clauses}. + * @param ctx the parse tree + */ + void enterElseif_directive_clauses(Swift5Parser.Elseif_directive_clausesContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#elseif_directive_clauses}. + * @param ctx the parse tree + */ + void exitElseif_directive_clauses(Swift5Parser.Elseif_directive_clausesContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#elseif_directive_clause}. + * @param ctx the parse tree + */ + void enterElseif_directive_clause(Swift5Parser.Elseif_directive_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#elseif_directive_clause}. + * @param ctx the parse tree + */ + void exitElseif_directive_clause(Swift5Parser.Elseif_directive_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#else_directive_clause}. + * @param ctx the parse tree + */ + void enterElse_directive_clause(Swift5Parser.Else_directive_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#else_directive_clause}. + * @param ctx the parse tree + */ + void exitElse_directive_clause(Swift5Parser.Else_directive_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#compilation_condition}. + * @param ctx the parse tree + */ + void enterCompilation_condition(Swift5Parser.Compilation_conditionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#compilation_condition}. + * @param ctx the parse tree + */ + void exitCompilation_condition(Swift5Parser.Compilation_conditionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#platform_condition}. + * @param ctx the parse tree + */ + void enterPlatform_condition(Swift5Parser.Platform_conditionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#platform_condition}. + * @param ctx the parse tree + */ + void exitPlatform_condition(Swift5Parser.Platform_conditionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#swift_version}. + * @param ctx the parse tree + */ + void enterSwift_version(Swift5Parser.Swift_versionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#swift_version}. + * @param ctx the parse tree + */ + void exitSwift_version(Swift5Parser.Swift_versionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#swift_version_continuation}. + * @param ctx the parse tree + */ + void enterSwift_version_continuation(Swift5Parser.Swift_version_continuationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#swift_version_continuation}. + * @param ctx the parse tree + */ + void exitSwift_version_continuation(Swift5Parser.Swift_version_continuationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#operating_system}. + * @param ctx the parse tree + */ + void enterOperating_system(Swift5Parser.Operating_systemContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#operating_system}. + * @param ctx the parse tree + */ + void exitOperating_system(Swift5Parser.Operating_systemContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#architecture}. + * @param ctx the parse tree + */ + void enterArchitecture(Swift5Parser.ArchitectureContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#architecture}. + * @param ctx the parse tree + */ + void exitArchitecture(Swift5Parser.ArchitectureContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#module_name}. + * @param ctx the parse tree + */ + void enterModule_name(Swift5Parser.Module_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#module_name}. + * @param ctx the parse tree + */ + void exitModule_name(Swift5Parser.Module_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#environment}. + * @param ctx the parse tree + */ + void enterEnvironment(Swift5Parser.EnvironmentContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#environment}. + * @param ctx the parse tree + */ + void exitEnvironment(Swift5Parser.EnvironmentContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#line_control_statement}. + * @param ctx the parse tree + */ + void enterLine_control_statement(Swift5Parser.Line_control_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#line_control_statement}. + * @param ctx the parse tree + */ + void exitLine_control_statement(Swift5Parser.Line_control_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#line_number}. + * @param ctx the parse tree + */ + void enterLine_number(Swift5Parser.Line_numberContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#line_number}. + * @param ctx the parse tree + */ + void exitLine_number(Swift5Parser.Line_numberContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#file_name}. + * @param ctx the parse tree + */ + void enterFile_name(Swift5Parser.File_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#file_name}. + * @param ctx the parse tree + */ + void exitFile_name(Swift5Parser.File_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#diagnostic_statement}. + * @param ctx the parse tree + */ + void enterDiagnostic_statement(Swift5Parser.Diagnostic_statementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#diagnostic_statement}. + * @param ctx the parse tree + */ + void exitDiagnostic_statement(Swift5Parser.Diagnostic_statementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#diagnostic_message}. + * @param ctx the parse tree + */ + void enterDiagnostic_message(Swift5Parser.Diagnostic_messageContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#diagnostic_message}. + * @param ctx the parse tree + */ + void exitDiagnostic_message(Swift5Parser.Diagnostic_messageContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#availability_condition}. + * @param ctx the parse tree + */ + void enterAvailability_condition(Swift5Parser.Availability_conditionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#availability_condition}. + * @param ctx the parse tree + */ + void exitAvailability_condition(Swift5Parser.Availability_conditionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#availability_arguments}. + * @param ctx the parse tree + */ + void enterAvailability_arguments(Swift5Parser.Availability_argumentsContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#availability_arguments}. + * @param ctx the parse tree + */ + void exitAvailability_arguments(Swift5Parser.Availability_argumentsContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#availability_argument}. + * @param ctx the parse tree + */ + void enterAvailability_argument(Swift5Parser.Availability_argumentContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#availability_argument}. + * @param ctx the parse tree + */ + void exitAvailability_argument(Swift5Parser.Availability_argumentContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#platform_name}. + * @param ctx the parse tree + */ + void enterPlatform_name(Swift5Parser.Platform_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#platform_name}. + * @param ctx the parse tree + */ + void exitPlatform_name(Swift5Parser.Platform_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#platform_version}. + * @param ctx the parse tree + */ + void enterPlatform_version(Swift5Parser.Platform_versionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#platform_version}. + * @param ctx the parse tree + */ + void exitPlatform_version(Swift5Parser.Platform_versionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#generic_parameter_clause}. + * @param ctx the parse tree + */ + void enterGeneric_parameter_clause(Swift5Parser.Generic_parameter_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#generic_parameter_clause}. + * @param ctx the parse tree + */ + void exitGeneric_parameter_clause(Swift5Parser.Generic_parameter_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#generic_parameter_list}. + * @param ctx the parse tree + */ + void enterGeneric_parameter_list(Swift5Parser.Generic_parameter_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#generic_parameter_list}. + * @param ctx the parse tree + */ + void exitGeneric_parameter_list(Swift5Parser.Generic_parameter_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#generic_parameter}. + * @param ctx the parse tree + */ + void enterGeneric_parameter(Swift5Parser.Generic_parameterContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#generic_parameter}. + * @param ctx the parse tree + */ + void exitGeneric_parameter(Swift5Parser.Generic_parameterContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#generic_where_clause}. + * @param ctx the parse tree + */ + void enterGeneric_where_clause(Swift5Parser.Generic_where_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#generic_where_clause}. + * @param ctx the parse tree + */ + void exitGeneric_where_clause(Swift5Parser.Generic_where_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#requirement_list}. + * @param ctx the parse tree + */ + void enterRequirement_list(Swift5Parser.Requirement_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#requirement_list}. + * @param ctx the parse tree + */ + void exitRequirement_list(Swift5Parser.Requirement_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#requirement}. + * @param ctx the parse tree + */ + void enterRequirement(Swift5Parser.RequirementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#requirement}. + * @param ctx the parse tree + */ + void exitRequirement(Swift5Parser.RequirementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#conformance_requirement}. + * @param ctx the parse tree + */ + void enterConformance_requirement(Swift5Parser.Conformance_requirementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#conformance_requirement}. + * @param ctx the parse tree + */ + void exitConformance_requirement(Swift5Parser.Conformance_requirementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#same_type_requirement}. + * @param ctx the parse tree + */ + void enterSame_type_requirement(Swift5Parser.Same_type_requirementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#same_type_requirement}. + * @param ctx the parse tree + */ + void exitSame_type_requirement(Swift5Parser.Same_type_requirementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#generic_argument_clause}. + * @param ctx the parse tree + */ + void enterGeneric_argument_clause(Swift5Parser.Generic_argument_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#generic_argument_clause}. + * @param ctx the parse tree + */ + void exitGeneric_argument_clause(Swift5Parser.Generic_argument_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#generic_argument_list}. + * @param ctx the parse tree + */ + void enterGeneric_argument_list(Swift5Parser.Generic_argument_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#generic_argument_list}. + * @param ctx the parse tree + */ + void exitGeneric_argument_list(Swift5Parser.Generic_argument_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#generic_argument}. + * @param ctx the parse tree + */ + void enterGeneric_argument(Swift5Parser.Generic_argumentContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#generic_argument}. + * @param ctx the parse tree + */ + void exitGeneric_argument(Swift5Parser.Generic_argumentContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#declaration}. + * @param ctx the parse tree + */ + void enterDeclaration(Swift5Parser.DeclarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#declaration}. + * @param ctx the parse tree + */ + void exitDeclaration(Swift5Parser.DeclarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#declarations}. + * @param ctx the parse tree + */ + void enterDeclarations(Swift5Parser.DeclarationsContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#declarations}. + * @param ctx the parse tree + */ + void exitDeclarations(Swift5Parser.DeclarationsContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#top_level_declaration}. + * @param ctx the parse tree + */ + void enterTop_level_declaration(Swift5Parser.Top_level_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#top_level_declaration}. + * @param ctx the parse tree + */ + void exitTop_level_declaration(Swift5Parser.Top_level_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#code_block}. + * @param ctx the parse tree + */ + void enterCode_block(Swift5Parser.Code_blockContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#code_block}. + * @param ctx the parse tree + */ + void exitCode_block(Swift5Parser.Code_blockContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#import_declaration}. + * @param ctx the parse tree + */ + void enterImport_declaration(Swift5Parser.Import_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#import_declaration}. + * @param ctx the parse tree + */ + void exitImport_declaration(Swift5Parser.Import_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#import_kind}. + * @param ctx the parse tree + */ + void enterImport_kind(Swift5Parser.Import_kindContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#import_kind}. + * @param ctx the parse tree + */ + void exitImport_kind(Swift5Parser.Import_kindContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#import_path}. + * @param ctx the parse tree + */ + void enterImport_path(Swift5Parser.Import_pathContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#import_path}. + * @param ctx the parse tree + */ + void exitImport_path(Swift5Parser.Import_pathContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#import_path_identifier}. + * @param ctx the parse tree + */ + void enterImport_path_identifier(Swift5Parser.Import_path_identifierContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#import_path_identifier}. + * @param ctx the parse tree + */ + void exitImport_path_identifier(Swift5Parser.Import_path_identifierContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#constant_declaration}. + * @param ctx the parse tree + */ + void enterConstant_declaration(Swift5Parser.Constant_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#constant_declaration}. + * @param ctx the parse tree + */ + void exitConstant_declaration(Swift5Parser.Constant_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#pattern_initializer_list}. + * @param ctx the parse tree + */ + void enterPattern_initializer_list(Swift5Parser.Pattern_initializer_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#pattern_initializer_list}. + * @param ctx the parse tree + */ + void exitPattern_initializer_list(Swift5Parser.Pattern_initializer_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#pattern_initializer}. + * @param ctx the parse tree + */ + void enterPattern_initializer(Swift5Parser.Pattern_initializerContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#pattern_initializer}. + * @param ctx the parse tree + */ + void exitPattern_initializer(Swift5Parser.Pattern_initializerContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#initializer}. + * @param ctx the parse tree + */ + void enterInitializer(Swift5Parser.InitializerContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#initializer}. + * @param ctx the parse tree + */ + void exitInitializer(Swift5Parser.InitializerContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#variable_declaration}. + * @param ctx the parse tree + */ + void enterVariable_declaration(Swift5Parser.Variable_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#variable_declaration}. + * @param ctx the parse tree + */ + void exitVariable_declaration(Swift5Parser.Variable_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#variable_declaration_head}. + * @param ctx the parse tree + */ + void enterVariable_declaration_head(Swift5Parser.Variable_declaration_headContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#variable_declaration_head}. + * @param ctx the parse tree + */ + void exitVariable_declaration_head(Swift5Parser.Variable_declaration_headContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#variable_name}. + * @param ctx the parse tree + */ + void enterVariable_name(Swift5Parser.Variable_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#variable_name}. + * @param ctx the parse tree + */ + void exitVariable_name(Swift5Parser.Variable_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#getter_setter_block}. + * @param ctx the parse tree + */ + void enterGetter_setter_block(Swift5Parser.Getter_setter_blockContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#getter_setter_block}. + * @param ctx the parse tree + */ + void exitGetter_setter_block(Swift5Parser.Getter_setter_blockContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#getter_clause}. + * @param ctx the parse tree + */ + void enterGetter_clause(Swift5Parser.Getter_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#getter_clause}. + * @param ctx the parse tree + */ + void exitGetter_clause(Swift5Parser.Getter_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#setter_clause}. + * @param ctx the parse tree + */ + void enterSetter_clause(Swift5Parser.Setter_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#setter_clause}. + * @param ctx the parse tree + */ + void exitSetter_clause(Swift5Parser.Setter_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#setter_name}. + * @param ctx the parse tree + */ + void enterSetter_name(Swift5Parser.Setter_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#setter_name}. + * @param ctx the parse tree + */ + void exitSetter_name(Swift5Parser.Setter_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#getter_setter_keyword_block}. + * @param ctx the parse tree + */ + void enterGetter_setter_keyword_block(Swift5Parser.Getter_setter_keyword_blockContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#getter_setter_keyword_block}. + * @param ctx the parse tree + */ + void exitGetter_setter_keyword_block(Swift5Parser.Getter_setter_keyword_blockContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#getter_keyword_clause}. + * @param ctx the parse tree + */ + void enterGetter_keyword_clause(Swift5Parser.Getter_keyword_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#getter_keyword_clause}. + * @param ctx the parse tree + */ + void exitGetter_keyword_clause(Swift5Parser.Getter_keyword_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#setter_keyword_clause}. + * @param ctx the parse tree + */ + void enterSetter_keyword_clause(Swift5Parser.Setter_keyword_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#setter_keyword_clause}. + * @param ctx the parse tree + */ + void exitSetter_keyword_clause(Swift5Parser.Setter_keyword_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#willSet_didSet_block}. + * @param ctx the parse tree + */ + void enterWillSet_didSet_block(Swift5Parser.WillSet_didSet_blockContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#willSet_didSet_block}. + * @param ctx the parse tree + */ + void exitWillSet_didSet_block(Swift5Parser.WillSet_didSet_blockContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#willSet_clause}. + * @param ctx the parse tree + */ + void enterWillSet_clause(Swift5Parser.WillSet_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#willSet_clause}. + * @param ctx the parse tree + */ + void exitWillSet_clause(Swift5Parser.WillSet_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#didSet_clause}. + * @param ctx the parse tree + */ + void enterDidSet_clause(Swift5Parser.DidSet_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#didSet_clause}. + * @param ctx the parse tree + */ + void exitDidSet_clause(Swift5Parser.DidSet_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#typealias_declaration}. + * @param ctx the parse tree + */ + void enterTypealias_declaration(Swift5Parser.Typealias_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#typealias_declaration}. + * @param ctx the parse tree + */ + void exitTypealias_declaration(Swift5Parser.Typealias_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#typealias_name}. + * @param ctx the parse tree + */ + void enterTypealias_name(Swift5Parser.Typealias_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#typealias_name}. + * @param ctx the parse tree + */ + void exitTypealias_name(Swift5Parser.Typealias_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#typealias_assignment}. + * @param ctx the parse tree + */ + void enterTypealias_assignment(Swift5Parser.Typealias_assignmentContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#typealias_assignment}. + * @param ctx the parse tree + */ + void exitTypealias_assignment(Swift5Parser.Typealias_assignmentContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_declaration}. + * @param ctx the parse tree + */ + void enterFunction_declaration(Swift5Parser.Function_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_declaration}. + * @param ctx the parse tree + */ + void exitFunction_declaration(Swift5Parser.Function_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_head}. + * @param ctx the parse tree + */ + void enterFunction_head(Swift5Parser.Function_headContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_head}. + * @param ctx the parse tree + */ + void exitFunction_head(Swift5Parser.Function_headContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_name}. + * @param ctx the parse tree + */ + void enterFunction_name(Swift5Parser.Function_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_name}. + * @param ctx the parse tree + */ + void exitFunction_name(Swift5Parser.Function_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_signature}. + * @param ctx the parse tree + */ + void enterFunction_signature(Swift5Parser.Function_signatureContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_signature}. + * @param ctx the parse tree + */ + void exitFunction_signature(Swift5Parser.Function_signatureContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_result}. + * @param ctx the parse tree + */ + void enterFunction_result(Swift5Parser.Function_resultContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_result}. + * @param ctx the parse tree + */ + void exitFunction_result(Swift5Parser.Function_resultContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_body}. + * @param ctx the parse tree + */ + void enterFunction_body(Swift5Parser.Function_bodyContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_body}. + * @param ctx the parse tree + */ + void exitFunction_body(Swift5Parser.Function_bodyContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#parameter_clause}. + * @param ctx the parse tree + */ + void enterParameter_clause(Swift5Parser.Parameter_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#parameter_clause}. + * @param ctx the parse tree + */ + void exitParameter_clause(Swift5Parser.Parameter_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#parameter_list}. + * @param ctx the parse tree + */ + void enterParameter_list(Swift5Parser.Parameter_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#parameter_list}. + * @param ctx the parse tree + */ + void exitParameter_list(Swift5Parser.Parameter_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#parameter}. + * @param ctx the parse tree + */ + void enterParameter(Swift5Parser.ParameterContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#parameter}. + * @param ctx the parse tree + */ + void exitParameter(Swift5Parser.ParameterContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#external_parameter_name}. + * @param ctx the parse tree + */ + void enterExternal_parameter_name(Swift5Parser.External_parameter_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#external_parameter_name}. + * @param ctx the parse tree + */ + void exitExternal_parameter_name(Swift5Parser.External_parameter_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#local_parameter_name}. + * @param ctx the parse tree + */ + void enterLocal_parameter_name(Swift5Parser.Local_parameter_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#local_parameter_name}. + * @param ctx the parse tree + */ + void exitLocal_parameter_name(Swift5Parser.Local_parameter_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#default_argument_clause}. + * @param ctx the parse tree + */ + void enterDefault_argument_clause(Swift5Parser.Default_argument_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#default_argument_clause}. + * @param ctx the parse tree + */ + void exitDefault_argument_clause(Swift5Parser.Default_argument_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#enum_declaration}. + * @param ctx the parse tree + */ + void enterEnum_declaration(Swift5Parser.Enum_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#enum_declaration}. + * @param ctx the parse tree + */ + void exitEnum_declaration(Swift5Parser.Enum_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#union_style_enum}. + * @param ctx the parse tree + */ + void enterUnion_style_enum(Swift5Parser.Union_style_enumContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#union_style_enum}. + * @param ctx the parse tree + */ + void exitUnion_style_enum(Swift5Parser.Union_style_enumContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#union_style_enum_members}. + * @param ctx the parse tree + */ + void enterUnion_style_enum_members(Swift5Parser.Union_style_enum_membersContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#union_style_enum_members}. + * @param ctx the parse tree + */ + void exitUnion_style_enum_members(Swift5Parser.Union_style_enum_membersContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#union_style_enum_member}. + * @param ctx the parse tree + */ + void enterUnion_style_enum_member(Swift5Parser.Union_style_enum_memberContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#union_style_enum_member}. + * @param ctx the parse tree + */ + void exitUnion_style_enum_member(Swift5Parser.Union_style_enum_memberContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#union_style_enum_case_clause}. + * @param ctx the parse tree + */ + void enterUnion_style_enum_case_clause(Swift5Parser.Union_style_enum_case_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#union_style_enum_case_clause}. + * @param ctx the parse tree + */ + void exitUnion_style_enum_case_clause(Swift5Parser.Union_style_enum_case_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#union_style_enum_case_list}. + * @param ctx the parse tree + */ + void enterUnion_style_enum_case_list(Swift5Parser.Union_style_enum_case_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#union_style_enum_case_list}. + * @param ctx the parse tree + */ + void exitUnion_style_enum_case_list(Swift5Parser.Union_style_enum_case_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#union_style_enum_case}. + * @param ctx the parse tree + */ + void enterUnion_style_enum_case(Swift5Parser.Union_style_enum_caseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#union_style_enum_case}. + * @param ctx the parse tree + */ + void exitUnion_style_enum_case(Swift5Parser.Union_style_enum_caseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#enum_name}. + * @param ctx the parse tree + */ + void enterEnum_name(Swift5Parser.Enum_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#enum_name}. + * @param ctx the parse tree + */ + void exitEnum_name(Swift5Parser.Enum_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#enum_case_name}. + * @param ctx the parse tree + */ + void enterEnum_case_name(Swift5Parser.Enum_case_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#enum_case_name}. + * @param ctx the parse tree + */ + void exitEnum_case_name(Swift5Parser.Enum_case_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#raw_value_style_enum}. + * @param ctx the parse tree + */ + void enterRaw_value_style_enum(Swift5Parser.Raw_value_style_enumContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#raw_value_style_enum}. + * @param ctx the parse tree + */ + void exitRaw_value_style_enum(Swift5Parser.Raw_value_style_enumContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#raw_value_style_enum_members}. + * @param ctx the parse tree + */ + void enterRaw_value_style_enum_members(Swift5Parser.Raw_value_style_enum_membersContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_members}. + * @param ctx the parse tree + */ + void exitRaw_value_style_enum_members(Swift5Parser.Raw_value_style_enum_membersContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#raw_value_style_enum_member}. + * @param ctx the parse tree + */ + void enterRaw_value_style_enum_member(Swift5Parser.Raw_value_style_enum_memberContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_member}. + * @param ctx the parse tree + */ + void exitRaw_value_style_enum_member(Swift5Parser.Raw_value_style_enum_memberContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#raw_value_style_enum_case_clause}. + * @param ctx the parse tree + */ + void enterRaw_value_style_enum_case_clause(Swift5Parser.Raw_value_style_enum_case_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_case_clause}. + * @param ctx the parse tree + */ + void exitRaw_value_style_enum_case_clause(Swift5Parser.Raw_value_style_enum_case_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#raw_value_style_enum_case_list}. + * @param ctx the parse tree + */ + void enterRaw_value_style_enum_case_list(Swift5Parser.Raw_value_style_enum_case_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_case_list}. + * @param ctx the parse tree + */ + void exitRaw_value_style_enum_case_list(Swift5Parser.Raw_value_style_enum_case_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#raw_value_style_enum_case}. + * @param ctx the parse tree + */ + void enterRaw_value_style_enum_case(Swift5Parser.Raw_value_style_enum_caseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_case}. + * @param ctx the parse tree + */ + void exitRaw_value_style_enum_case(Swift5Parser.Raw_value_style_enum_caseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#raw_value_assignment}. + * @param ctx the parse tree + */ + void enterRaw_value_assignment(Swift5Parser.Raw_value_assignmentContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#raw_value_assignment}. + * @param ctx the parse tree + */ + void exitRaw_value_assignment(Swift5Parser.Raw_value_assignmentContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#raw_value_literal}. + * @param ctx the parse tree + */ + void enterRaw_value_literal(Swift5Parser.Raw_value_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#raw_value_literal}. + * @param ctx the parse tree + */ + void exitRaw_value_literal(Swift5Parser.Raw_value_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#struct_declaration}. + * @param ctx the parse tree + */ + void enterStruct_declaration(Swift5Parser.Struct_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#struct_declaration}. + * @param ctx the parse tree + */ + void exitStruct_declaration(Swift5Parser.Struct_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#struct_name}. + * @param ctx the parse tree + */ + void enterStruct_name(Swift5Parser.Struct_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#struct_name}. + * @param ctx the parse tree + */ + void exitStruct_name(Swift5Parser.Struct_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#struct_body}. + * @param ctx the parse tree + */ + void enterStruct_body(Swift5Parser.Struct_bodyContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#struct_body}. + * @param ctx the parse tree + */ + void exitStruct_body(Swift5Parser.Struct_bodyContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#struct_members}. + * @param ctx the parse tree + */ + void enterStruct_members(Swift5Parser.Struct_membersContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#struct_members}. + * @param ctx the parse tree + */ + void exitStruct_members(Swift5Parser.Struct_membersContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#struct_member}. + * @param ctx the parse tree + */ + void enterStruct_member(Swift5Parser.Struct_memberContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#struct_member}. + * @param ctx the parse tree + */ + void exitStruct_member(Swift5Parser.Struct_memberContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#class_declaration}. + * @param ctx the parse tree + */ + void enterClass_declaration(Swift5Parser.Class_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#class_declaration}. + * @param ctx the parse tree + */ + void exitClass_declaration(Swift5Parser.Class_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#class_name}. + * @param ctx the parse tree + */ + void enterClass_name(Swift5Parser.Class_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#class_name}. + * @param ctx the parse tree + */ + void exitClass_name(Swift5Parser.Class_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#class_body}. + * @param ctx the parse tree + */ + void enterClass_body(Swift5Parser.Class_bodyContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#class_body}. + * @param ctx the parse tree + */ + void exitClass_body(Swift5Parser.Class_bodyContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#class_members}. + * @param ctx the parse tree + */ + void enterClass_members(Swift5Parser.Class_membersContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#class_members}. + * @param ctx the parse tree + */ + void exitClass_members(Swift5Parser.Class_membersContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#class_member}. + * @param ctx the parse tree + */ + void enterClass_member(Swift5Parser.Class_memberContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#class_member}. + * @param ctx the parse tree + */ + void exitClass_member(Swift5Parser.Class_memberContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_declaration}. + * @param ctx the parse tree + */ + void enterProtocol_declaration(Swift5Parser.Protocol_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_declaration}. + * @param ctx the parse tree + */ + void exitProtocol_declaration(Swift5Parser.Protocol_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_name}. + * @param ctx the parse tree + */ + void enterProtocol_name(Swift5Parser.Protocol_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_name}. + * @param ctx the parse tree + */ + void exitProtocol_name(Swift5Parser.Protocol_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_body}. + * @param ctx the parse tree + */ + void enterProtocol_body(Swift5Parser.Protocol_bodyContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_body}. + * @param ctx the parse tree + */ + void exitProtocol_body(Swift5Parser.Protocol_bodyContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_members}. + * @param ctx the parse tree + */ + void enterProtocol_members(Swift5Parser.Protocol_membersContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_members}. + * @param ctx the parse tree + */ + void exitProtocol_members(Swift5Parser.Protocol_membersContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_member}. + * @param ctx the parse tree + */ + void enterProtocol_member(Swift5Parser.Protocol_memberContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_member}. + * @param ctx the parse tree + */ + void exitProtocol_member(Swift5Parser.Protocol_memberContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_member_declaration}. + * @param ctx the parse tree + */ + void enterProtocol_member_declaration(Swift5Parser.Protocol_member_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_member_declaration}. + * @param ctx the parse tree + */ + void exitProtocol_member_declaration(Swift5Parser.Protocol_member_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_property_declaration}. + * @param ctx the parse tree + */ + void enterProtocol_property_declaration(Swift5Parser.Protocol_property_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_property_declaration}. + * @param ctx the parse tree + */ + void exitProtocol_property_declaration(Swift5Parser.Protocol_property_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_method_declaration}. + * @param ctx the parse tree + */ + void enterProtocol_method_declaration(Swift5Parser.Protocol_method_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_method_declaration}. + * @param ctx the parse tree + */ + void exitProtocol_method_declaration(Swift5Parser.Protocol_method_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_initializer_declaration}. + * @param ctx the parse tree + */ + void enterProtocol_initializer_declaration(Swift5Parser.Protocol_initializer_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_initializer_declaration}. + * @param ctx the parse tree + */ + void exitProtocol_initializer_declaration(Swift5Parser.Protocol_initializer_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_subscript_declaration}. + * @param ctx the parse tree + */ + void enterProtocol_subscript_declaration(Swift5Parser.Protocol_subscript_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_subscript_declaration}. + * @param ctx the parse tree + */ + void exitProtocol_subscript_declaration(Swift5Parser.Protocol_subscript_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_associated_type_declaration}. + * @param ctx the parse tree + */ + void enterProtocol_associated_type_declaration(Swift5Parser.Protocol_associated_type_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_associated_type_declaration}. + * @param ctx the parse tree + */ + void exitProtocol_associated_type_declaration(Swift5Parser.Protocol_associated_type_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#initializer_declaration}. + * @param ctx the parse tree + */ + void enterInitializer_declaration(Swift5Parser.Initializer_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#initializer_declaration}. + * @param ctx the parse tree + */ + void exitInitializer_declaration(Swift5Parser.Initializer_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#initializer_head}. + * @param ctx the parse tree + */ + void enterInitializer_head(Swift5Parser.Initializer_headContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#initializer_head}. + * @param ctx the parse tree + */ + void exitInitializer_head(Swift5Parser.Initializer_headContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#initializer_body}. + * @param ctx the parse tree + */ + void enterInitializer_body(Swift5Parser.Initializer_bodyContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#initializer_body}. + * @param ctx the parse tree + */ + void exitInitializer_body(Swift5Parser.Initializer_bodyContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#deinitializer_declaration}. + * @param ctx the parse tree + */ + void enterDeinitializer_declaration(Swift5Parser.Deinitializer_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#deinitializer_declaration}. + * @param ctx the parse tree + */ + void exitDeinitializer_declaration(Swift5Parser.Deinitializer_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#extension_declaration}. + * @param ctx the parse tree + */ + void enterExtension_declaration(Swift5Parser.Extension_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#extension_declaration}. + * @param ctx the parse tree + */ + void exitExtension_declaration(Swift5Parser.Extension_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#extension_body}. + * @param ctx the parse tree + */ + void enterExtension_body(Swift5Parser.Extension_bodyContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#extension_body}. + * @param ctx the parse tree + */ + void exitExtension_body(Swift5Parser.Extension_bodyContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#extension_members}. + * @param ctx the parse tree + */ + void enterExtension_members(Swift5Parser.Extension_membersContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#extension_members}. + * @param ctx the parse tree + */ + void exitExtension_members(Swift5Parser.Extension_membersContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#extension_member}. + * @param ctx the parse tree + */ + void enterExtension_member(Swift5Parser.Extension_memberContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#extension_member}. + * @param ctx the parse tree + */ + void exitExtension_member(Swift5Parser.Extension_memberContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#subscript_declaration}. + * @param ctx the parse tree + */ + void enterSubscript_declaration(Swift5Parser.Subscript_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#subscript_declaration}. + * @param ctx the parse tree + */ + void exitSubscript_declaration(Swift5Parser.Subscript_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#subscript_head}. + * @param ctx the parse tree + */ + void enterSubscript_head(Swift5Parser.Subscript_headContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#subscript_head}. + * @param ctx the parse tree + */ + void exitSubscript_head(Swift5Parser.Subscript_headContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#subscript_result}. + * @param ctx the parse tree + */ + void enterSubscript_result(Swift5Parser.Subscript_resultContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#subscript_result}. + * @param ctx the parse tree + */ + void exitSubscript_result(Swift5Parser.Subscript_resultContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#operator_declaration}. + * @param ctx the parse tree + */ + void enterOperator_declaration(Swift5Parser.Operator_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#operator_declaration}. + * @param ctx the parse tree + */ + void exitOperator_declaration(Swift5Parser.Operator_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#prefix_operator_declaration}. + * @param ctx the parse tree + */ + void enterPrefix_operator_declaration(Swift5Parser.Prefix_operator_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#prefix_operator_declaration}. + * @param ctx the parse tree + */ + void exitPrefix_operator_declaration(Swift5Parser.Prefix_operator_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#postfix_operator_declaration}. + * @param ctx the parse tree + */ + void enterPostfix_operator_declaration(Swift5Parser.Postfix_operator_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#postfix_operator_declaration}. + * @param ctx the parse tree + */ + void exitPostfix_operator_declaration(Swift5Parser.Postfix_operator_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#infix_operator_declaration}. + * @param ctx the parse tree + */ + void enterInfix_operator_declaration(Swift5Parser.Infix_operator_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#infix_operator_declaration}. + * @param ctx the parse tree + */ + void exitInfix_operator_declaration(Swift5Parser.Infix_operator_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#infix_operator_group}. + * @param ctx the parse tree + */ + void enterInfix_operator_group(Swift5Parser.Infix_operator_groupContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#infix_operator_group}. + * @param ctx the parse tree + */ + void exitInfix_operator_group(Swift5Parser.Infix_operator_groupContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#precedence_group_declaration}. + * @param ctx the parse tree + */ + void enterPrecedence_group_declaration(Swift5Parser.Precedence_group_declarationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#precedence_group_declaration}. + * @param ctx the parse tree + */ + void exitPrecedence_group_declaration(Swift5Parser.Precedence_group_declarationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#precedence_group_attributes}. + * @param ctx the parse tree + */ + void enterPrecedence_group_attributes(Swift5Parser.Precedence_group_attributesContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#precedence_group_attributes}. + * @param ctx the parse tree + */ + void exitPrecedence_group_attributes(Swift5Parser.Precedence_group_attributesContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#precedence_group_attribute}. + * @param ctx the parse tree + */ + void enterPrecedence_group_attribute(Swift5Parser.Precedence_group_attributeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#precedence_group_attribute}. + * @param ctx the parse tree + */ + void exitPrecedence_group_attribute(Swift5Parser.Precedence_group_attributeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#precedence_group_relation}. + * @param ctx the parse tree + */ + void enterPrecedence_group_relation(Swift5Parser.Precedence_group_relationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#precedence_group_relation}. + * @param ctx the parse tree + */ + void exitPrecedence_group_relation(Swift5Parser.Precedence_group_relationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#precedence_group_assignment}. + * @param ctx the parse tree + */ + void enterPrecedence_group_assignment(Swift5Parser.Precedence_group_assignmentContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#precedence_group_assignment}. + * @param ctx the parse tree + */ + void exitPrecedence_group_assignment(Swift5Parser.Precedence_group_assignmentContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#precedence_group_associativity}. + * @param ctx the parse tree + */ + void enterPrecedence_group_associativity(Swift5Parser.Precedence_group_associativityContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#precedence_group_associativity}. + * @param ctx the parse tree + */ + void exitPrecedence_group_associativity(Swift5Parser.Precedence_group_associativityContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#precedence_group_names}. + * @param ctx the parse tree + */ + void enterPrecedence_group_names(Swift5Parser.Precedence_group_namesContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#precedence_group_names}. + * @param ctx the parse tree + */ + void exitPrecedence_group_names(Swift5Parser.Precedence_group_namesContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#precedence_group_name}. + * @param ctx the parse tree + */ + void enterPrecedence_group_name(Swift5Parser.Precedence_group_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#precedence_group_name}. + * @param ctx the parse tree + */ + void exitPrecedence_group_name(Swift5Parser.Precedence_group_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#declaration_modifier}. + * @param ctx the parse tree + */ + void enterDeclaration_modifier(Swift5Parser.Declaration_modifierContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#declaration_modifier}. + * @param ctx the parse tree + */ + void exitDeclaration_modifier(Swift5Parser.Declaration_modifierContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#declaration_modifiers}. + * @param ctx the parse tree + */ + void enterDeclaration_modifiers(Swift5Parser.Declaration_modifiersContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#declaration_modifiers}. + * @param ctx the parse tree + */ + void exitDeclaration_modifiers(Swift5Parser.Declaration_modifiersContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#access_level_modifier}. + * @param ctx the parse tree + */ + void enterAccess_level_modifier(Swift5Parser.Access_level_modifierContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#access_level_modifier}. + * @param ctx the parse tree + */ + void exitAccess_level_modifier(Swift5Parser.Access_level_modifierContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#mutation_modifier}. + * @param ctx the parse tree + */ + void enterMutation_modifier(Swift5Parser.Mutation_modifierContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#mutation_modifier}. + * @param ctx the parse tree + */ + void exitMutation_modifier(Swift5Parser.Mutation_modifierContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#pattern}. + * @param ctx the parse tree + */ + void enterPattern(Swift5Parser.PatternContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#pattern}. + * @param ctx the parse tree + */ + void exitPattern(Swift5Parser.PatternContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#wildcard_pattern}. + * @param ctx the parse tree + */ + void enterWildcard_pattern(Swift5Parser.Wildcard_patternContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#wildcard_pattern}. + * @param ctx the parse tree + */ + void exitWildcard_pattern(Swift5Parser.Wildcard_patternContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#identifier_pattern}. + * @param ctx the parse tree + */ + void enterIdentifier_pattern(Swift5Parser.Identifier_patternContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#identifier_pattern}. + * @param ctx the parse tree + */ + void exitIdentifier_pattern(Swift5Parser.Identifier_patternContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#value_binding_pattern}. + * @param ctx the parse tree + */ + void enterValue_binding_pattern(Swift5Parser.Value_binding_patternContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#value_binding_pattern}. + * @param ctx the parse tree + */ + void exitValue_binding_pattern(Swift5Parser.Value_binding_patternContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#tuple_pattern}. + * @param ctx the parse tree + */ + void enterTuple_pattern(Swift5Parser.Tuple_patternContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#tuple_pattern}. + * @param ctx the parse tree + */ + void exitTuple_pattern(Swift5Parser.Tuple_patternContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#tuple_pattern_element_list}. + * @param ctx the parse tree + */ + void enterTuple_pattern_element_list(Swift5Parser.Tuple_pattern_element_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#tuple_pattern_element_list}. + * @param ctx the parse tree + */ + void exitTuple_pattern_element_list(Swift5Parser.Tuple_pattern_element_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#tuple_pattern_element}. + * @param ctx the parse tree + */ + void enterTuple_pattern_element(Swift5Parser.Tuple_pattern_elementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#tuple_pattern_element}. + * @param ctx the parse tree + */ + void exitTuple_pattern_element(Swift5Parser.Tuple_pattern_elementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#enum_case_pattern}. + * @param ctx the parse tree + */ + void enterEnum_case_pattern(Swift5Parser.Enum_case_patternContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#enum_case_pattern}. + * @param ctx the parse tree + */ + void exitEnum_case_pattern(Swift5Parser.Enum_case_patternContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#optional_pattern}. + * @param ctx the parse tree + */ + void enterOptional_pattern(Swift5Parser.Optional_patternContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#optional_pattern}. + * @param ctx the parse tree + */ + void exitOptional_pattern(Swift5Parser.Optional_patternContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#expression_pattern}. + * @param ctx the parse tree + */ + void enterExpression_pattern(Swift5Parser.Expression_patternContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#expression_pattern}. + * @param ctx the parse tree + */ + void exitExpression_pattern(Swift5Parser.Expression_patternContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#attribute}. + * @param ctx the parse tree + */ + void enterAttribute(Swift5Parser.AttributeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#attribute}. + * @param ctx the parse tree + */ + void exitAttribute(Swift5Parser.AttributeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#attribute_name}. + * @param ctx the parse tree + */ + void enterAttribute_name(Swift5Parser.Attribute_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#attribute_name}. + * @param ctx the parse tree + */ + void exitAttribute_name(Swift5Parser.Attribute_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#attribute_argument_clause}. + * @param ctx the parse tree + */ + void enterAttribute_argument_clause(Swift5Parser.Attribute_argument_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#attribute_argument_clause}. + * @param ctx the parse tree + */ + void exitAttribute_argument_clause(Swift5Parser.Attribute_argument_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#attributes}. + * @param ctx the parse tree + */ + void enterAttributes(Swift5Parser.AttributesContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#attributes}. + * @param ctx the parse tree + */ + void exitAttributes(Swift5Parser.AttributesContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#balanced_tokens}. + * @param ctx the parse tree + */ + void enterBalanced_tokens(Swift5Parser.Balanced_tokensContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#balanced_tokens}. + * @param ctx the parse tree + */ + void exitBalanced_tokens(Swift5Parser.Balanced_tokensContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#balanced_token}. + * @param ctx the parse tree + */ + void enterBalanced_token(Swift5Parser.Balanced_tokenContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#balanced_token}. + * @param ctx the parse tree + */ + void exitBalanced_token(Swift5Parser.Balanced_tokenContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#balanced_token_punctuation}. + * @param ctx the parse tree + */ + void enterBalanced_token_punctuation(Swift5Parser.Balanced_token_punctuationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#balanced_token_punctuation}. + * @param ctx the parse tree + */ + void exitBalanced_token_punctuation(Swift5Parser.Balanced_token_punctuationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#expression}. + * @param ctx the parse tree + */ + void enterExpression(Swift5Parser.ExpressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#expression}. + * @param ctx the parse tree + */ + void exitExpression(Swift5Parser.ExpressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#expression_list}. + * @param ctx the parse tree + */ + void enterExpression_list(Swift5Parser.Expression_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#expression_list}. + * @param ctx the parse tree + */ + void exitExpression_list(Swift5Parser.Expression_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#prefix_expression}. + * @param ctx the parse tree + */ + void enterPrefix_expression(Swift5Parser.Prefix_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#prefix_expression}. + * @param ctx the parse tree + */ + void exitPrefix_expression(Swift5Parser.Prefix_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#in_out_expression}. + * @param ctx the parse tree + */ + void enterIn_out_expression(Swift5Parser.In_out_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#in_out_expression}. + * @param ctx the parse tree + */ + void exitIn_out_expression(Swift5Parser.In_out_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#try_operator}. + * @param ctx the parse tree + */ + void enterTry_operator(Swift5Parser.Try_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#try_operator}. + * @param ctx the parse tree + */ + void exitTry_operator(Swift5Parser.Try_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#binary_expression}. + * @param ctx the parse tree + */ + void enterBinary_expression(Swift5Parser.Binary_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#binary_expression}. + * @param ctx the parse tree + */ + void exitBinary_expression(Swift5Parser.Binary_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#binary_expressions}. + * @param ctx the parse tree + */ + void enterBinary_expressions(Swift5Parser.Binary_expressionsContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#binary_expressions}. + * @param ctx the parse tree + */ + void exitBinary_expressions(Swift5Parser.Binary_expressionsContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#conditional_operator}. + * @param ctx the parse tree + */ + void enterConditional_operator(Swift5Parser.Conditional_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#conditional_operator}. + * @param ctx the parse tree + */ + void exitConditional_operator(Swift5Parser.Conditional_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#type_casting_operator}. + * @param ctx the parse tree + */ + void enterType_casting_operator(Swift5Parser.Type_casting_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#type_casting_operator}. + * @param ctx the parse tree + */ + void exitType_casting_operator(Swift5Parser.Type_casting_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#primary_expression}. + * @param ctx the parse tree + */ + void enterPrimary_expression(Swift5Parser.Primary_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#primary_expression}. + * @param ctx the parse tree + */ + void exitPrimary_expression(Swift5Parser.Primary_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#unqualified_name}. + * @param ctx the parse tree + */ + void enterUnqualified_name(Swift5Parser.Unqualified_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#unqualified_name}. + * @param ctx the parse tree + */ + void exitUnqualified_name(Swift5Parser.Unqualified_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#literal_expression}. + * @param ctx the parse tree + */ + void enterLiteral_expression(Swift5Parser.Literal_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#literal_expression}. + * @param ctx the parse tree + */ + void exitLiteral_expression(Swift5Parser.Literal_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#array_literal}. + * @param ctx the parse tree + */ + void enterArray_literal(Swift5Parser.Array_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#array_literal}. + * @param ctx the parse tree + */ + void exitArray_literal(Swift5Parser.Array_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#array_literal_items}. + * @param ctx the parse tree + */ + void enterArray_literal_items(Swift5Parser.Array_literal_itemsContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#array_literal_items}. + * @param ctx the parse tree + */ + void exitArray_literal_items(Swift5Parser.Array_literal_itemsContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#array_literal_item}. + * @param ctx the parse tree + */ + void enterArray_literal_item(Swift5Parser.Array_literal_itemContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#array_literal_item}. + * @param ctx the parse tree + */ + void exitArray_literal_item(Swift5Parser.Array_literal_itemContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#dictionary_literal}. + * @param ctx the parse tree + */ + void enterDictionary_literal(Swift5Parser.Dictionary_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#dictionary_literal}. + * @param ctx the parse tree + */ + void exitDictionary_literal(Swift5Parser.Dictionary_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#dictionary_literal_items}. + * @param ctx the parse tree + */ + void enterDictionary_literal_items(Swift5Parser.Dictionary_literal_itemsContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#dictionary_literal_items}. + * @param ctx the parse tree + */ + void exitDictionary_literal_items(Swift5Parser.Dictionary_literal_itemsContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#dictionary_literal_item}. + * @param ctx the parse tree + */ + void enterDictionary_literal_item(Swift5Parser.Dictionary_literal_itemContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#dictionary_literal_item}. + * @param ctx the parse tree + */ + void exitDictionary_literal_item(Swift5Parser.Dictionary_literal_itemContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#playground_literal}. + * @param ctx the parse tree + */ + void enterPlayground_literal(Swift5Parser.Playground_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#playground_literal}. + * @param ctx the parse tree + */ + void exitPlayground_literal(Swift5Parser.Playground_literalContext ctx); + /** + * Enter a parse tree produced by the {@code self_pure_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + */ + void enterSelf_pure_expression(Swift5Parser.Self_pure_expressionContext ctx); + /** + * Exit a parse tree produced by the {@code self_pure_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + */ + void exitSelf_pure_expression(Swift5Parser.Self_pure_expressionContext ctx); + /** + * Enter a parse tree produced by the {@code self_method_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + */ + void enterSelf_method_expression(Swift5Parser.Self_method_expressionContext ctx); + /** + * Exit a parse tree produced by the {@code self_method_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + */ + void exitSelf_method_expression(Swift5Parser.Self_method_expressionContext ctx); + /** + * Enter a parse tree produced by the {@code self_subscript_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + */ + void enterSelf_subscript_expression(Swift5Parser.Self_subscript_expressionContext ctx); + /** + * Exit a parse tree produced by the {@code self_subscript_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + */ + void exitSelf_subscript_expression(Swift5Parser.Self_subscript_expressionContext ctx); + /** + * Enter a parse tree produced by the {@code self_initializer_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + */ + void enterSelf_initializer_expression(Swift5Parser.Self_initializer_expressionContext ctx); + /** + * Exit a parse tree produced by the {@code self_initializer_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + */ + void exitSelf_initializer_expression(Swift5Parser.Self_initializer_expressionContext ctx); + /** + * Enter a parse tree produced by the {@code superclass_method_expression} + * labeled alternative in {@link Swift5Parser#superclass_expression}. + * @param ctx the parse tree + */ + void enterSuperclass_method_expression(Swift5Parser.Superclass_method_expressionContext ctx); + /** + * Exit a parse tree produced by the {@code superclass_method_expression} + * labeled alternative in {@link Swift5Parser#superclass_expression}. + * @param ctx the parse tree + */ + void exitSuperclass_method_expression(Swift5Parser.Superclass_method_expressionContext ctx); + /** + * Enter a parse tree produced by the {@code superclass_subscript_expression} + * labeled alternative in {@link Swift5Parser#superclass_expression}. + * @param ctx the parse tree + */ + void enterSuperclass_subscript_expression(Swift5Parser.Superclass_subscript_expressionContext ctx); + /** + * Exit a parse tree produced by the {@code superclass_subscript_expression} + * labeled alternative in {@link Swift5Parser#superclass_expression}. + * @param ctx the parse tree + */ + void exitSuperclass_subscript_expression(Swift5Parser.Superclass_subscript_expressionContext ctx); + /** + * Enter a parse tree produced by the {@code superclass_initializer_expression} + * labeled alternative in {@link Swift5Parser#superclass_expression}. + * @param ctx the parse tree + */ + void enterSuperclass_initializer_expression(Swift5Parser.Superclass_initializer_expressionContext ctx); + /** + * Exit a parse tree produced by the {@code superclass_initializer_expression} + * labeled alternative in {@link Swift5Parser#superclass_expression}. + * @param ctx the parse tree + */ + void exitSuperclass_initializer_expression(Swift5Parser.Superclass_initializer_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#closure_expression}. + * @param ctx the parse tree + */ + void enterClosure_expression(Swift5Parser.Closure_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#closure_expression}. + * @param ctx the parse tree + */ + void exitClosure_expression(Swift5Parser.Closure_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#closure_signature}. + * @param ctx the parse tree + */ + void enterClosure_signature(Swift5Parser.Closure_signatureContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#closure_signature}. + * @param ctx the parse tree + */ + void exitClosure_signature(Swift5Parser.Closure_signatureContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#closure_parameter_clause}. + * @param ctx the parse tree + */ + void enterClosure_parameter_clause(Swift5Parser.Closure_parameter_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#closure_parameter_clause}. + * @param ctx the parse tree + */ + void exitClosure_parameter_clause(Swift5Parser.Closure_parameter_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#closure_parameter_list}. + * @param ctx the parse tree + */ + void enterClosure_parameter_list(Swift5Parser.Closure_parameter_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#closure_parameter_list}. + * @param ctx the parse tree + */ + void exitClosure_parameter_list(Swift5Parser.Closure_parameter_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#closure_parameter}. + * @param ctx the parse tree + */ + void enterClosure_parameter(Swift5Parser.Closure_parameterContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#closure_parameter}. + * @param ctx the parse tree + */ + void exitClosure_parameter(Swift5Parser.Closure_parameterContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#capture_list}. + * @param ctx the parse tree + */ + void enterCapture_list(Swift5Parser.Capture_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#capture_list}. + * @param ctx the parse tree + */ + void exitCapture_list(Swift5Parser.Capture_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#capture_list_items}. + * @param ctx the parse tree + */ + void enterCapture_list_items(Swift5Parser.Capture_list_itemsContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#capture_list_items}. + * @param ctx the parse tree + */ + void exitCapture_list_items(Swift5Parser.Capture_list_itemsContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#capture_list_item}. + * @param ctx the parse tree + */ + void enterCapture_list_item(Swift5Parser.Capture_list_itemContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#capture_list_item}. + * @param ctx the parse tree + */ + void exitCapture_list_item(Swift5Parser.Capture_list_itemContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#capture_specifier}. + * @param ctx the parse tree + */ + void enterCapture_specifier(Swift5Parser.Capture_specifierContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#capture_specifier}. + * @param ctx the parse tree + */ + void exitCapture_specifier(Swift5Parser.Capture_specifierContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#implicit_member_expression}. + * @param ctx the parse tree + */ + void enterImplicit_member_expression(Swift5Parser.Implicit_member_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#implicit_member_expression}. + * @param ctx the parse tree + */ + void exitImplicit_member_expression(Swift5Parser.Implicit_member_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#parenthesized_operator}. + * @param ctx the parse tree + */ + void enterParenthesized_operator(Swift5Parser.Parenthesized_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#parenthesized_operator}. + * @param ctx the parse tree + */ + void exitParenthesized_operator(Swift5Parser.Parenthesized_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#parenthesized_expression}. + * @param ctx the parse tree + */ + void enterParenthesized_expression(Swift5Parser.Parenthesized_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#parenthesized_expression}. + * @param ctx the parse tree + */ + void exitParenthesized_expression(Swift5Parser.Parenthesized_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#tuple_expression}. + * @param ctx the parse tree + */ + void enterTuple_expression(Swift5Parser.Tuple_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#tuple_expression}. + * @param ctx the parse tree + */ + void exitTuple_expression(Swift5Parser.Tuple_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#tuple_element_list}. + * @param ctx the parse tree + */ + void enterTuple_element_list(Swift5Parser.Tuple_element_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#tuple_element_list}. + * @param ctx the parse tree + */ + void exitTuple_element_list(Swift5Parser.Tuple_element_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#tuple_element}. + * @param ctx the parse tree + */ + void enterTuple_element(Swift5Parser.Tuple_elementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#tuple_element}. + * @param ctx the parse tree + */ + void exitTuple_element(Swift5Parser.Tuple_elementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#wildcard_expression}. + * @param ctx the parse tree + */ + void enterWildcard_expression(Swift5Parser.Wildcard_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#wildcard_expression}. + * @param ctx the parse tree + */ + void exitWildcard_expression(Swift5Parser.Wildcard_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#key_path_expression}. + * @param ctx the parse tree + */ + void enterKey_path_expression(Swift5Parser.Key_path_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#key_path_expression}. + * @param ctx the parse tree + */ + void exitKey_path_expression(Swift5Parser.Key_path_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#key_path_components}. + * @param ctx the parse tree + */ + void enterKey_path_components(Swift5Parser.Key_path_componentsContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#key_path_components}. + * @param ctx the parse tree + */ + void exitKey_path_components(Swift5Parser.Key_path_componentsContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#key_path_component}. + * @param ctx the parse tree + */ + void enterKey_path_component(Swift5Parser.Key_path_componentContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#key_path_component}. + * @param ctx the parse tree + */ + void exitKey_path_component(Swift5Parser.Key_path_componentContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#key_path_postfixes}. + * @param ctx the parse tree + */ + void enterKey_path_postfixes(Swift5Parser.Key_path_postfixesContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#key_path_postfixes}. + * @param ctx the parse tree + */ + void exitKey_path_postfixes(Swift5Parser.Key_path_postfixesContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#key_path_postfix}. + * @param ctx the parse tree + */ + void enterKey_path_postfix(Swift5Parser.Key_path_postfixContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#key_path_postfix}. + * @param ctx the parse tree + */ + void exitKey_path_postfix(Swift5Parser.Key_path_postfixContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#selector_expression}. + * @param ctx the parse tree + */ + void enterSelector_expression(Swift5Parser.Selector_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#selector_expression}. + * @param ctx the parse tree + */ + void exitSelector_expression(Swift5Parser.Selector_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#key_path_string_expression}. + * @param ctx the parse tree + */ + void enterKey_path_string_expression(Swift5Parser.Key_path_string_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#key_path_string_expression}. + * @param ctx the parse tree + */ + void exitKey_path_string_expression(Swift5Parser.Key_path_string_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#postfix_expression}. + * @param ctx the parse tree + */ + void enterPostfix_expression(Swift5Parser.Postfix_expressionContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#postfix_expression}. + * @param ctx the parse tree + */ + void exitPostfix_expression(Swift5Parser.Postfix_expressionContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_call_suffix}. + * @param ctx the parse tree + */ + void enterFunction_call_suffix(Swift5Parser.Function_call_suffixContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_call_suffix}. + * @param ctx the parse tree + */ + void exitFunction_call_suffix(Swift5Parser.Function_call_suffixContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#initializer_suffix}. + * @param ctx the parse tree + */ + void enterInitializer_suffix(Swift5Parser.Initializer_suffixContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#initializer_suffix}. + * @param ctx the parse tree + */ + void exitInitializer_suffix(Swift5Parser.Initializer_suffixContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#explicit_member_suffix}. + * @param ctx the parse tree + */ + void enterExplicit_member_suffix(Swift5Parser.Explicit_member_suffixContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#explicit_member_suffix}. + * @param ctx the parse tree + */ + void exitExplicit_member_suffix(Swift5Parser.Explicit_member_suffixContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#postfix_self_suffix}. + * @param ctx the parse tree + */ + void enterPostfix_self_suffix(Swift5Parser.Postfix_self_suffixContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#postfix_self_suffix}. + * @param ctx the parse tree + */ + void exitPostfix_self_suffix(Swift5Parser.Postfix_self_suffixContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#subscript_suffix}. + * @param ctx the parse tree + */ + void enterSubscript_suffix(Swift5Parser.Subscript_suffixContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#subscript_suffix}. + * @param ctx the parse tree + */ + void exitSubscript_suffix(Swift5Parser.Subscript_suffixContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#forced_value_suffix}. + * @param ctx the parse tree + */ + void enterForced_value_suffix(Swift5Parser.Forced_value_suffixContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#forced_value_suffix}. + * @param ctx the parse tree + */ + void exitForced_value_suffix(Swift5Parser.Forced_value_suffixContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#optional_chaining_suffix}. + * @param ctx the parse tree + */ + void enterOptional_chaining_suffix(Swift5Parser.Optional_chaining_suffixContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#optional_chaining_suffix}. + * @param ctx the parse tree + */ + void exitOptional_chaining_suffix(Swift5Parser.Optional_chaining_suffixContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_call_argument_clause}. + * @param ctx the parse tree + */ + void enterFunction_call_argument_clause(Swift5Parser.Function_call_argument_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_call_argument_clause}. + * @param ctx the parse tree + */ + void exitFunction_call_argument_clause(Swift5Parser.Function_call_argument_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_call_argument_list}. + * @param ctx the parse tree + */ + void enterFunction_call_argument_list(Swift5Parser.Function_call_argument_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_call_argument_list}. + * @param ctx the parse tree + */ + void exitFunction_call_argument_list(Swift5Parser.Function_call_argument_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_call_argument}. + * @param ctx the parse tree + */ + void enterFunction_call_argument(Swift5Parser.Function_call_argumentContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_call_argument}. + * @param ctx the parse tree + */ + void exitFunction_call_argument(Swift5Parser.Function_call_argumentContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#trailing_closures}. + * @param ctx the parse tree + */ + void enterTrailing_closures(Swift5Parser.Trailing_closuresContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#trailing_closures}. + * @param ctx the parse tree + */ + void exitTrailing_closures(Swift5Parser.Trailing_closuresContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#labeled_trailing_closures}. + * @param ctx the parse tree + */ + void enterLabeled_trailing_closures(Swift5Parser.Labeled_trailing_closuresContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#labeled_trailing_closures}. + * @param ctx the parse tree + */ + void exitLabeled_trailing_closures(Swift5Parser.Labeled_trailing_closuresContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#labeled_trailing_closure}. + * @param ctx the parse tree + */ + void enterLabeled_trailing_closure(Swift5Parser.Labeled_trailing_closureContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#labeled_trailing_closure}. + * @param ctx the parse tree + */ + void exitLabeled_trailing_closure(Swift5Parser.Labeled_trailing_closureContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#argument_names}. + * @param ctx the parse tree + */ + void enterArgument_names(Swift5Parser.Argument_namesContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#argument_names}. + * @param ctx the parse tree + */ + void exitArgument_names(Swift5Parser.Argument_namesContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#argument_name}. + * @param ctx the parse tree + */ + void enterArgument_name(Swift5Parser.Argument_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#argument_name}. + * @param ctx the parse tree + */ + void exitArgument_name(Swift5Parser.Argument_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#type}. + * @param ctx the parse tree + */ + void enterType(Swift5Parser.TypeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#type}. + * @param ctx the parse tree + */ + void exitType(Swift5Parser.TypeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#type_annotation}. + * @param ctx the parse tree + */ + void enterType_annotation(Swift5Parser.Type_annotationContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#type_annotation}. + * @param ctx the parse tree + */ + void exitType_annotation(Swift5Parser.Type_annotationContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#type_identifier}. + * @param ctx the parse tree + */ + void enterType_identifier(Swift5Parser.Type_identifierContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#type_identifier}. + * @param ctx the parse tree + */ + void exitType_identifier(Swift5Parser.Type_identifierContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#type_name}. + * @param ctx the parse tree + */ + void enterType_name(Swift5Parser.Type_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#type_name}. + * @param ctx the parse tree + */ + void exitType_name(Swift5Parser.Type_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#tuple_type}. + * @param ctx the parse tree + */ + void enterTuple_type(Swift5Parser.Tuple_typeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#tuple_type}. + * @param ctx the parse tree + */ + void exitTuple_type(Swift5Parser.Tuple_typeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#tuple_type_element_list}. + * @param ctx the parse tree + */ + void enterTuple_type_element_list(Swift5Parser.Tuple_type_element_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#tuple_type_element_list}. + * @param ctx the parse tree + */ + void exitTuple_type_element_list(Swift5Parser.Tuple_type_element_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#tuple_type_element}. + * @param ctx the parse tree + */ + void enterTuple_type_element(Swift5Parser.Tuple_type_elementContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#tuple_type_element}. + * @param ctx the parse tree + */ + void exitTuple_type_element(Swift5Parser.Tuple_type_elementContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#element_name}. + * @param ctx the parse tree + */ + void enterElement_name(Swift5Parser.Element_nameContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#element_name}. + * @param ctx the parse tree + */ + void exitElement_name(Swift5Parser.Element_nameContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_type}. + * @param ctx the parse tree + */ + void enterFunction_type(Swift5Parser.Function_typeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_type}. + * @param ctx the parse tree + */ + void exitFunction_type(Swift5Parser.Function_typeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_type_argument_clause}. + * @param ctx the parse tree + */ + void enterFunction_type_argument_clause(Swift5Parser.Function_type_argument_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_type_argument_clause}. + * @param ctx the parse tree + */ + void exitFunction_type_argument_clause(Swift5Parser.Function_type_argument_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_type_argument_list}. + * @param ctx the parse tree + */ + void enterFunction_type_argument_list(Swift5Parser.Function_type_argument_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_type_argument_list}. + * @param ctx the parse tree + */ + void exitFunction_type_argument_list(Swift5Parser.Function_type_argument_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#function_type_argument}. + * @param ctx the parse tree + */ + void enterFunction_type_argument(Swift5Parser.Function_type_argumentContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#function_type_argument}. + * @param ctx the parse tree + */ + void exitFunction_type_argument(Swift5Parser.Function_type_argumentContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#argument_label}. + * @param ctx the parse tree + */ + void enterArgument_label(Swift5Parser.Argument_labelContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#argument_label}. + * @param ctx the parse tree + */ + void exitArgument_label(Swift5Parser.Argument_labelContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#array_type}. + * @param ctx the parse tree + */ + void enterArray_type(Swift5Parser.Array_typeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#array_type}. + * @param ctx the parse tree + */ + void exitArray_type(Swift5Parser.Array_typeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#dictionary_type}. + * @param ctx the parse tree + */ + void enterDictionary_type(Swift5Parser.Dictionary_typeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#dictionary_type}. + * @param ctx the parse tree + */ + void exitDictionary_type(Swift5Parser.Dictionary_typeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#protocol_composition_type}. + * @param ctx the parse tree + */ + void enterProtocol_composition_type(Swift5Parser.Protocol_composition_typeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#protocol_composition_type}. + * @param ctx the parse tree + */ + void exitProtocol_composition_type(Swift5Parser.Protocol_composition_typeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#trailing_composition_and}. + * @param ctx the parse tree + */ + void enterTrailing_composition_and(Swift5Parser.Trailing_composition_andContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#trailing_composition_and}. + * @param ctx the parse tree + */ + void exitTrailing_composition_and(Swift5Parser.Trailing_composition_andContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#opaque_type}. + * @param ctx the parse tree + */ + void enterOpaque_type(Swift5Parser.Opaque_typeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#opaque_type}. + * @param ctx the parse tree + */ + void exitOpaque_type(Swift5Parser.Opaque_typeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#any_type}. + * @param ctx the parse tree + */ + void enterAny_type(Swift5Parser.Any_typeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#any_type}. + * @param ctx the parse tree + */ + void exitAny_type(Swift5Parser.Any_typeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#self_type}. + * @param ctx the parse tree + */ + void enterSelf_type(Swift5Parser.Self_typeContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#self_type}. + * @param ctx the parse tree + */ + void exitSelf_type(Swift5Parser.Self_typeContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#type_inheritance_clause}. + * @param ctx the parse tree + */ + void enterType_inheritance_clause(Swift5Parser.Type_inheritance_clauseContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#type_inheritance_clause}. + * @param ctx the parse tree + */ + void exitType_inheritance_clause(Swift5Parser.Type_inheritance_clauseContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#type_inheritance_list}. + * @param ctx the parse tree + */ + void enterType_inheritance_list(Swift5Parser.Type_inheritance_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#type_inheritance_list}. + * @param ctx the parse tree + */ + void exitType_inheritance_list(Swift5Parser.Type_inheritance_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#identifier}. + * @param ctx the parse tree + */ + void enterIdentifier(Swift5Parser.IdentifierContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#identifier}. + * @param ctx the parse tree + */ + void exitIdentifier(Swift5Parser.IdentifierContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#identifier_list}. + * @param ctx the parse tree + */ + void enterIdentifier_list(Swift5Parser.Identifier_listContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#identifier_list}. + * @param ctx the parse tree + */ + void exitIdentifier_list(Swift5Parser.Identifier_listContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#keyword}. + * @param ctx the parse tree + */ + void enterKeyword(Swift5Parser.KeywordContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#keyword}. + * @param ctx the parse tree + */ + void exitKeyword(Swift5Parser.KeywordContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#assignment_operator}. + * @param ctx the parse tree + */ + void enterAssignment_operator(Swift5Parser.Assignment_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#assignment_operator}. + * @param ctx the parse tree + */ + void exitAssignment_operator(Swift5Parser.Assignment_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#negate_prefix_operator}. + * @param ctx the parse tree + */ + void enterNegate_prefix_operator(Swift5Parser.Negate_prefix_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#negate_prefix_operator}. + * @param ctx the parse tree + */ + void exitNegate_prefix_operator(Swift5Parser.Negate_prefix_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#compilation_condition_AND}. + * @param ctx the parse tree + */ + void enterCompilation_condition_AND(Swift5Parser.Compilation_condition_ANDContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#compilation_condition_AND}. + * @param ctx the parse tree + */ + void exitCompilation_condition_AND(Swift5Parser.Compilation_condition_ANDContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#compilation_condition_OR}. + * @param ctx the parse tree + */ + void enterCompilation_condition_OR(Swift5Parser.Compilation_condition_ORContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#compilation_condition_OR}. + * @param ctx the parse tree + */ + void exitCompilation_condition_OR(Swift5Parser.Compilation_condition_ORContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#compilation_condition_GE}. + * @param ctx the parse tree + */ + void enterCompilation_condition_GE(Swift5Parser.Compilation_condition_GEContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#compilation_condition_GE}. + * @param ctx the parse tree + */ + void exitCompilation_condition_GE(Swift5Parser.Compilation_condition_GEContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#compilation_condition_L}. + * @param ctx the parse tree + */ + void enterCompilation_condition_L(Swift5Parser.Compilation_condition_LContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#compilation_condition_L}. + * @param ctx the parse tree + */ + void exitCompilation_condition_L(Swift5Parser.Compilation_condition_LContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#arrow_operator}. + * @param ctx the parse tree + */ + void enterArrow_operator(Swift5Parser.Arrow_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#arrow_operator}. + * @param ctx the parse tree + */ + void exitArrow_operator(Swift5Parser.Arrow_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#range_operator}. + * @param ctx the parse tree + */ + void enterRange_operator(Swift5Parser.Range_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#range_operator}. + * @param ctx the parse tree + */ + void exitRange_operator(Swift5Parser.Range_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#same_type_equals}. + * @param ctx the parse tree + */ + void enterSame_type_equals(Swift5Parser.Same_type_equalsContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#same_type_equals}. + * @param ctx the parse tree + */ + void exitSame_type_equals(Swift5Parser.Same_type_equalsContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#binary_operator}. + * @param ctx the parse tree + */ + void enterBinary_operator(Swift5Parser.Binary_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#binary_operator}. + * @param ctx the parse tree + */ + void exitBinary_operator(Swift5Parser.Binary_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#prefix_operator}. + * @param ctx the parse tree + */ + void enterPrefix_operator(Swift5Parser.Prefix_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#prefix_operator}. + * @param ctx the parse tree + */ + void exitPrefix_operator(Swift5Parser.Prefix_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#postfix_operator}. + * @param ctx the parse tree + */ + void enterPostfix_operator(Swift5Parser.Postfix_operatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#postfix_operator}. + * @param ctx the parse tree + */ + void exitPostfix_operator(Swift5Parser.Postfix_operatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#operator}. + * @param ctx the parse tree + */ + void enterOperator(Swift5Parser.OperatorContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#operator}. + * @param ctx the parse tree + */ + void exitOperator(Swift5Parser.OperatorContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#operator_head}. + * @param ctx the parse tree + */ + void enterOperator_head(Swift5Parser.Operator_headContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#operator_head}. + * @param ctx the parse tree + */ + void exitOperator_head(Swift5Parser.Operator_headContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#operator_character}. + * @param ctx the parse tree + */ + void enterOperator_character(Swift5Parser.Operator_characterContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#operator_character}. + * @param ctx the parse tree + */ + void exitOperator_character(Swift5Parser.Operator_characterContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#operator_characters}. + * @param ctx the parse tree + */ + void enterOperator_characters(Swift5Parser.Operator_charactersContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#operator_characters}. + * @param ctx the parse tree + */ + void exitOperator_characters(Swift5Parser.Operator_charactersContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#dot_operator_head}. + * @param ctx the parse tree + */ + void enterDot_operator_head(Swift5Parser.Dot_operator_headContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#dot_operator_head}. + * @param ctx the parse tree + */ + void exitDot_operator_head(Swift5Parser.Dot_operator_headContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#dot_operator_character}. + * @param ctx the parse tree + */ + void enterDot_operator_character(Swift5Parser.Dot_operator_characterContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#dot_operator_character}. + * @param ctx the parse tree + */ + void exitDot_operator_character(Swift5Parser.Dot_operator_characterContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#dot_operator_characters}. + * @param ctx the parse tree + */ + void enterDot_operator_characters(Swift5Parser.Dot_operator_charactersContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#dot_operator_characters}. + * @param ctx the parse tree + */ + void exitDot_operator_characters(Swift5Parser.Dot_operator_charactersContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#literal}. + * @param ctx the parse tree + */ + void enterLiteral(Swift5Parser.LiteralContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#literal}. + * @param ctx the parse tree + */ + void exitLiteral(Swift5Parser.LiteralContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#numeric_literal}. + * @param ctx the parse tree + */ + void enterNumeric_literal(Swift5Parser.Numeric_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#numeric_literal}. + * @param ctx the parse tree + */ + void exitNumeric_literal(Swift5Parser.Numeric_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#boolean_literal}. + * @param ctx the parse tree + */ + void enterBoolean_literal(Swift5Parser.Boolean_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#boolean_literal}. + * @param ctx the parse tree + */ + void exitBoolean_literal(Swift5Parser.Boolean_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#nil_literal}. + * @param ctx the parse tree + */ + void enterNil_literal(Swift5Parser.Nil_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#nil_literal}. + * @param ctx the parse tree + */ + void exitNil_literal(Swift5Parser.Nil_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#integer_literal}. + * @param ctx the parse tree + */ + void enterInteger_literal(Swift5Parser.Integer_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#integer_literal}. + * @param ctx the parse tree + */ + void exitInteger_literal(Swift5Parser.Integer_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#string_literal}. + * @param ctx the parse tree + */ + void enterString_literal(Swift5Parser.String_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#string_literal}. + * @param ctx the parse tree + */ + void exitString_literal(Swift5Parser.String_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#extended_string_literal}. + * @param ctx the parse tree + */ + void enterExtended_string_literal(Swift5Parser.Extended_string_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#extended_string_literal}. + * @param ctx the parse tree + */ + void exitExtended_string_literal(Swift5Parser.Extended_string_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#static_string_literal}. + * @param ctx the parse tree + */ + void enterStatic_string_literal(Swift5Parser.Static_string_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#static_string_literal}. + * @param ctx the parse tree + */ + void exitStatic_string_literal(Swift5Parser.Static_string_literalContext ctx); + /** + * Enter a parse tree produced by {@link Swift5Parser#interpolated_string_literal}. + * @param ctx the parse tree + */ + void enterInterpolated_string_literal(Swift5Parser.Interpolated_string_literalContext ctx); + /** + * Exit a parse tree produced by {@link Swift5Parser#interpolated_string_literal}. + * @param ctx the parse tree + */ + void exitInterpolated_string_literal(Swift5Parser.Interpolated_string_literalContext ctx); +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserVisitor.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserVisitor.java new file mode 100644 index 00000000..21041df1 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/Swift5ParserVisitor.java @@ -0,0 +1,1952 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +// Generated from Swift5Parser.g4 by ANTLR 4.10 +package io.ecocode.ios.swift.antlr.generated; + +import org.antlr.v4.runtime.tree.ParseTreeVisitor; + +/** + * This interface defines a complete generic visitor for a parse tree produced + * by {@link Swift5Parser}. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public interface Swift5ParserVisitor extends ParseTreeVisitor { + /** + * Visit a parse tree produced by {@link Swift5Parser#top_level}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTop_level(Swift5Parser.Top_levelContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStatement(Swift5Parser.StatementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#statements}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStatements(Swift5Parser.StatementsContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#loop_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLoop_statement(Swift5Parser.Loop_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#for_in_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFor_in_statement(Swift5Parser.For_in_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#while_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWhile_statement(Swift5Parser.While_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#condition_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCondition_list(Swift5Parser.Condition_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#condition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCondition(Swift5Parser.ConditionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#case_condition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCase_condition(Swift5Parser.Case_conditionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#optional_binding_condition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOptional_binding_condition(Swift5Parser.Optional_binding_conditionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#repeat_while_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRepeat_while_statement(Swift5Parser.Repeat_while_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#branch_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBranch_statement(Swift5Parser.Branch_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#if_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIf_statement(Swift5Parser.If_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#else_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitElse_clause(Swift5Parser.Else_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#guard_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGuard_statement(Swift5Parser.Guard_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#switch_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwitch_statement(Swift5Parser.Switch_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#switch_cases}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwitch_cases(Swift5Parser.Switch_casesContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#switch_case}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwitch_case(Swift5Parser.Switch_caseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#case_label}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCase_label(Swift5Parser.Case_labelContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#case_item_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCase_item_list(Swift5Parser.Case_item_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#default_label}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDefault_label(Swift5Parser.Default_labelContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#where_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWhere_clause(Swift5Parser.Where_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#where_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWhere_expression(Swift5Parser.Where_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#conditional_switch_case}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConditional_switch_case(Swift5Parser.Conditional_switch_caseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#switch_if_directive_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwitch_if_directive_clause(Swift5Parser.Switch_if_directive_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#switch_elseif_directive_clauses}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwitch_elseif_directive_clauses(Swift5Parser.Switch_elseif_directive_clausesContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#switch_elseif_directive_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwitch_elseif_directive_clause(Swift5Parser.Switch_elseif_directive_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#switch_else_directive_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwitch_else_directive_clause(Swift5Parser.Switch_else_directive_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#labeled_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLabeled_statement(Swift5Parser.Labeled_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#statement_label}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStatement_label(Swift5Parser.Statement_labelContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#label_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLabel_name(Swift5Parser.Label_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#control_transfer_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitControl_transfer_statement(Swift5Parser.Control_transfer_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#break_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBreak_statement(Swift5Parser.Break_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#continue_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitContinue_statement(Swift5Parser.Continue_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#fallthrough_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFallthrough_statement(Swift5Parser.Fallthrough_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#return_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitReturn_statement(Swift5Parser.Return_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#throw_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitThrow_statement(Swift5Parser.Throw_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#defer_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDefer_statement(Swift5Parser.Defer_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#do_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDo_statement(Swift5Parser.Do_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#catch_clauses}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCatch_clauses(Swift5Parser.Catch_clausesContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#catch_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCatch_clause(Swift5Parser.Catch_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#catch_pattern_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCatch_pattern_list(Swift5Parser.Catch_pattern_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#catch_pattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCatch_pattern(Swift5Parser.Catch_patternContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#compiler_control_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCompiler_control_statement(Swift5Parser.Compiler_control_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#conditional_compilation_block}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConditional_compilation_block(Swift5Parser.Conditional_compilation_blockContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#if_directive_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIf_directive_clause(Swift5Parser.If_directive_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#elseif_directive_clauses}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitElseif_directive_clauses(Swift5Parser.Elseif_directive_clausesContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#elseif_directive_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitElseif_directive_clause(Swift5Parser.Elseif_directive_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#else_directive_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitElse_directive_clause(Swift5Parser.Else_directive_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#compilation_condition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCompilation_condition(Swift5Parser.Compilation_conditionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#platform_condition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPlatform_condition(Swift5Parser.Platform_conditionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#swift_version}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwift_version(Swift5Parser.Swift_versionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#swift_version_continuation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwift_version_continuation(Swift5Parser.Swift_version_continuationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#operating_system}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOperating_system(Swift5Parser.Operating_systemContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#architecture}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArchitecture(Swift5Parser.ArchitectureContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#module_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitModule_name(Swift5Parser.Module_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#environment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEnvironment(Swift5Parser.EnvironmentContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#line_control_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLine_control_statement(Swift5Parser.Line_control_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#line_number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLine_number(Swift5Parser.Line_numberContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#file_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFile_name(Swift5Parser.File_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#diagnostic_statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDiagnostic_statement(Swift5Parser.Diagnostic_statementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#diagnostic_message}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDiagnostic_message(Swift5Parser.Diagnostic_messageContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#availability_condition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAvailability_condition(Swift5Parser.Availability_conditionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#availability_arguments}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAvailability_arguments(Swift5Parser.Availability_argumentsContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#availability_argument}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAvailability_argument(Swift5Parser.Availability_argumentContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#platform_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPlatform_name(Swift5Parser.Platform_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#platform_version}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPlatform_version(Swift5Parser.Platform_versionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#generic_parameter_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneric_parameter_clause(Swift5Parser.Generic_parameter_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#generic_parameter_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneric_parameter_list(Swift5Parser.Generic_parameter_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#generic_parameter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneric_parameter(Swift5Parser.Generic_parameterContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#generic_where_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneric_where_clause(Swift5Parser.Generic_where_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#requirement_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRequirement_list(Swift5Parser.Requirement_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#requirement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRequirement(Swift5Parser.RequirementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#conformance_requirement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConformance_requirement(Swift5Parser.Conformance_requirementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#same_type_requirement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSame_type_requirement(Swift5Parser.Same_type_requirementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#generic_argument_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneric_argument_clause(Swift5Parser.Generic_argument_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#generic_argument_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneric_argument_list(Swift5Parser.Generic_argument_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#generic_argument}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneric_argument(Swift5Parser.Generic_argumentContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDeclaration(Swift5Parser.DeclarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#declarations}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDeclarations(Swift5Parser.DeclarationsContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#top_level_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTop_level_declaration(Swift5Parser.Top_level_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#code_block}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCode_block(Swift5Parser.Code_blockContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#import_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImport_declaration(Swift5Parser.Import_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#import_kind}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImport_kind(Swift5Parser.Import_kindContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#import_path}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImport_path(Swift5Parser.Import_pathContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#import_path_identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImport_path_identifier(Swift5Parser.Import_path_identifierContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#constant_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConstant_declaration(Swift5Parser.Constant_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#pattern_initializer_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPattern_initializer_list(Swift5Parser.Pattern_initializer_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#pattern_initializer}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPattern_initializer(Swift5Parser.Pattern_initializerContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#initializer}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInitializer(Swift5Parser.InitializerContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#variable_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitVariable_declaration(Swift5Parser.Variable_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#variable_declaration_head}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitVariable_declaration_head(Swift5Parser.Variable_declaration_headContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#variable_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitVariable_name(Swift5Parser.Variable_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#getter_setter_block}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGetter_setter_block(Swift5Parser.Getter_setter_blockContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#getter_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGetter_clause(Swift5Parser.Getter_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#setter_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSetter_clause(Swift5Parser.Setter_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#setter_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSetter_name(Swift5Parser.Setter_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#getter_setter_keyword_block}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGetter_setter_keyword_block(Swift5Parser.Getter_setter_keyword_blockContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#getter_keyword_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGetter_keyword_clause(Swift5Parser.Getter_keyword_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#setter_keyword_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSetter_keyword_clause(Swift5Parser.Setter_keyword_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#willSet_didSet_block}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWillSet_didSet_block(Swift5Parser.WillSet_didSet_blockContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#willSet_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWillSet_clause(Swift5Parser.WillSet_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#didSet_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDidSet_clause(Swift5Parser.DidSet_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#typealias_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypealias_declaration(Swift5Parser.Typealias_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#typealias_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypealias_name(Swift5Parser.Typealias_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#typealias_assignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypealias_assignment(Swift5Parser.Typealias_assignmentContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_declaration(Swift5Parser.Function_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_head}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_head(Swift5Parser.Function_headContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_name(Swift5Parser.Function_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_signature}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_signature(Swift5Parser.Function_signatureContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_result}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_result(Swift5Parser.Function_resultContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_body}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_body(Swift5Parser.Function_bodyContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#parameter_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParameter_clause(Swift5Parser.Parameter_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#parameter_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParameter_list(Swift5Parser.Parameter_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#parameter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParameter(Swift5Parser.ParameterContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#external_parameter_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExternal_parameter_name(Swift5Parser.External_parameter_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#local_parameter_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLocal_parameter_name(Swift5Parser.Local_parameter_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#default_argument_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDefault_argument_clause(Swift5Parser.Default_argument_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#enum_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEnum_declaration(Swift5Parser.Enum_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#union_style_enum}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnion_style_enum(Swift5Parser.Union_style_enumContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#union_style_enum_members}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnion_style_enum_members(Swift5Parser.Union_style_enum_membersContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#union_style_enum_member}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnion_style_enum_member(Swift5Parser.Union_style_enum_memberContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#union_style_enum_case_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnion_style_enum_case_clause(Swift5Parser.Union_style_enum_case_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#union_style_enum_case_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnion_style_enum_case_list(Swift5Parser.Union_style_enum_case_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#union_style_enum_case}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnion_style_enum_case(Swift5Parser.Union_style_enum_caseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#enum_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEnum_name(Swift5Parser.Enum_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#enum_case_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEnum_case_name(Swift5Parser.Enum_case_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#raw_value_style_enum}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRaw_value_style_enum(Swift5Parser.Raw_value_style_enumContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_members}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRaw_value_style_enum_members(Swift5Parser.Raw_value_style_enum_membersContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_member}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRaw_value_style_enum_member(Swift5Parser.Raw_value_style_enum_memberContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_case_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRaw_value_style_enum_case_clause(Swift5Parser.Raw_value_style_enum_case_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_case_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRaw_value_style_enum_case_list(Swift5Parser.Raw_value_style_enum_case_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#raw_value_style_enum_case}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRaw_value_style_enum_case(Swift5Parser.Raw_value_style_enum_caseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#raw_value_assignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRaw_value_assignment(Swift5Parser.Raw_value_assignmentContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#raw_value_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRaw_value_literal(Swift5Parser.Raw_value_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#struct_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStruct_declaration(Swift5Parser.Struct_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#struct_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStruct_name(Swift5Parser.Struct_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#struct_body}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStruct_body(Swift5Parser.Struct_bodyContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#struct_members}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStruct_members(Swift5Parser.Struct_membersContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#struct_member}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStruct_member(Swift5Parser.Struct_memberContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#class_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClass_declaration(Swift5Parser.Class_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#class_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClass_name(Swift5Parser.Class_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#class_body}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClass_body(Swift5Parser.Class_bodyContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#class_members}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClass_members(Swift5Parser.Class_membersContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#class_member}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClass_member(Swift5Parser.Class_memberContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_declaration(Swift5Parser.Protocol_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_name(Swift5Parser.Protocol_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_body}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_body(Swift5Parser.Protocol_bodyContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_members}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_members(Swift5Parser.Protocol_membersContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_member}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_member(Swift5Parser.Protocol_memberContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_member_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_member_declaration(Swift5Parser.Protocol_member_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_property_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_property_declaration(Swift5Parser.Protocol_property_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_method_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_method_declaration(Swift5Parser.Protocol_method_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_initializer_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_initializer_declaration(Swift5Parser.Protocol_initializer_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_subscript_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_subscript_declaration(Swift5Parser.Protocol_subscript_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_associated_type_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_associated_type_declaration(Swift5Parser.Protocol_associated_type_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#initializer_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInitializer_declaration(Swift5Parser.Initializer_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#initializer_head}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInitializer_head(Swift5Parser.Initializer_headContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#initializer_body}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInitializer_body(Swift5Parser.Initializer_bodyContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#deinitializer_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDeinitializer_declaration(Swift5Parser.Deinitializer_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#extension_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExtension_declaration(Swift5Parser.Extension_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#extension_body}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExtension_body(Swift5Parser.Extension_bodyContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#extension_members}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExtension_members(Swift5Parser.Extension_membersContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#extension_member}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExtension_member(Swift5Parser.Extension_memberContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#subscript_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubscript_declaration(Swift5Parser.Subscript_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#subscript_head}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubscript_head(Swift5Parser.Subscript_headContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#subscript_result}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubscript_result(Swift5Parser.Subscript_resultContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#operator_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOperator_declaration(Swift5Parser.Operator_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#prefix_operator_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrefix_operator_declaration(Swift5Parser.Prefix_operator_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#postfix_operator_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPostfix_operator_declaration(Swift5Parser.Postfix_operator_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#infix_operator_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInfix_operator_declaration(Swift5Parser.Infix_operator_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#infix_operator_group}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInfix_operator_group(Swift5Parser.Infix_operator_groupContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#precedence_group_declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrecedence_group_declaration(Swift5Parser.Precedence_group_declarationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#precedence_group_attributes}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrecedence_group_attributes(Swift5Parser.Precedence_group_attributesContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#precedence_group_attribute}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrecedence_group_attribute(Swift5Parser.Precedence_group_attributeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#precedence_group_relation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrecedence_group_relation(Swift5Parser.Precedence_group_relationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#precedence_group_assignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrecedence_group_assignment(Swift5Parser.Precedence_group_assignmentContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#precedence_group_associativity}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrecedence_group_associativity(Swift5Parser.Precedence_group_associativityContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#precedence_group_names}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrecedence_group_names(Swift5Parser.Precedence_group_namesContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#precedence_group_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrecedence_group_name(Swift5Parser.Precedence_group_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#declaration_modifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDeclaration_modifier(Swift5Parser.Declaration_modifierContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#declaration_modifiers}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDeclaration_modifiers(Swift5Parser.Declaration_modifiersContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#access_level_modifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAccess_level_modifier(Swift5Parser.Access_level_modifierContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#mutation_modifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitMutation_modifier(Swift5Parser.Mutation_modifierContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#pattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPattern(Swift5Parser.PatternContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#wildcard_pattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWildcard_pattern(Swift5Parser.Wildcard_patternContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#identifier_pattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIdentifier_pattern(Swift5Parser.Identifier_patternContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#value_binding_pattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitValue_binding_pattern(Swift5Parser.Value_binding_patternContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#tuple_pattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuple_pattern(Swift5Parser.Tuple_patternContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#tuple_pattern_element_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuple_pattern_element_list(Swift5Parser.Tuple_pattern_element_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#tuple_pattern_element}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuple_pattern_element(Swift5Parser.Tuple_pattern_elementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#enum_case_pattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEnum_case_pattern(Swift5Parser.Enum_case_patternContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#optional_pattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOptional_pattern(Swift5Parser.Optional_patternContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#expression_pattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExpression_pattern(Swift5Parser.Expression_patternContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#attribute}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAttribute(Swift5Parser.AttributeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#attribute_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAttribute_name(Swift5Parser.Attribute_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#attribute_argument_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAttribute_argument_clause(Swift5Parser.Attribute_argument_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#attributes}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAttributes(Swift5Parser.AttributesContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#balanced_tokens}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBalanced_tokens(Swift5Parser.Balanced_tokensContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#balanced_token}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBalanced_token(Swift5Parser.Balanced_tokenContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#balanced_token_punctuation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBalanced_token_punctuation(Swift5Parser.Balanced_token_punctuationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExpression(Swift5Parser.ExpressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#expression_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExpression_list(Swift5Parser.Expression_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#prefix_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrefix_expression(Swift5Parser.Prefix_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#in_out_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIn_out_expression(Swift5Parser.In_out_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#try_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTry_operator(Swift5Parser.Try_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#binary_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBinary_expression(Swift5Parser.Binary_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#binary_expressions}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBinary_expressions(Swift5Parser.Binary_expressionsContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#conditional_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConditional_operator(Swift5Parser.Conditional_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#type_casting_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType_casting_operator(Swift5Parser.Type_casting_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#primary_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrimary_expression(Swift5Parser.Primary_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#unqualified_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnqualified_name(Swift5Parser.Unqualified_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#literal_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLiteral_expression(Swift5Parser.Literal_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#array_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArray_literal(Swift5Parser.Array_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#array_literal_items}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArray_literal_items(Swift5Parser.Array_literal_itemsContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#array_literal_item}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArray_literal_item(Swift5Parser.Array_literal_itemContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#dictionary_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDictionary_literal(Swift5Parser.Dictionary_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#dictionary_literal_items}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDictionary_literal_items(Swift5Parser.Dictionary_literal_itemsContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#dictionary_literal_item}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDictionary_literal_item(Swift5Parser.Dictionary_literal_itemContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#playground_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPlayground_literal(Swift5Parser.Playground_literalContext ctx); + /** + * Visit a parse tree produced by the {@code self_pure_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSelf_pure_expression(Swift5Parser.Self_pure_expressionContext ctx); + /** + * Visit a parse tree produced by the {@code self_method_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSelf_method_expression(Swift5Parser.Self_method_expressionContext ctx); + /** + * Visit a parse tree produced by the {@code self_subscript_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSelf_subscript_expression(Swift5Parser.Self_subscript_expressionContext ctx); + /** + * Visit a parse tree produced by the {@code self_initializer_expression} + * labeled alternative in {@link Swift5Parser#self_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSelf_initializer_expression(Swift5Parser.Self_initializer_expressionContext ctx); + /** + * Visit a parse tree produced by the {@code superclass_method_expression} + * labeled alternative in {@link Swift5Parser#superclass_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSuperclass_method_expression(Swift5Parser.Superclass_method_expressionContext ctx); + /** + * Visit a parse tree produced by the {@code superclass_subscript_expression} + * labeled alternative in {@link Swift5Parser#superclass_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSuperclass_subscript_expression(Swift5Parser.Superclass_subscript_expressionContext ctx); + /** + * Visit a parse tree produced by the {@code superclass_initializer_expression} + * labeled alternative in {@link Swift5Parser#superclass_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSuperclass_initializer_expression(Swift5Parser.Superclass_initializer_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#closure_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClosure_expression(Swift5Parser.Closure_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#closure_signature}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClosure_signature(Swift5Parser.Closure_signatureContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#closure_parameter_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClosure_parameter_clause(Swift5Parser.Closure_parameter_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#closure_parameter_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClosure_parameter_list(Swift5Parser.Closure_parameter_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#closure_parameter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClosure_parameter(Swift5Parser.Closure_parameterContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#capture_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCapture_list(Swift5Parser.Capture_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#capture_list_items}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCapture_list_items(Swift5Parser.Capture_list_itemsContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#capture_list_item}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCapture_list_item(Swift5Parser.Capture_list_itemContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#capture_specifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCapture_specifier(Swift5Parser.Capture_specifierContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#implicit_member_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImplicit_member_expression(Swift5Parser.Implicit_member_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#parenthesized_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParenthesized_operator(Swift5Parser.Parenthesized_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#parenthesized_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParenthesized_expression(Swift5Parser.Parenthesized_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#tuple_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuple_expression(Swift5Parser.Tuple_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#tuple_element_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuple_element_list(Swift5Parser.Tuple_element_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#tuple_element}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuple_element(Swift5Parser.Tuple_elementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#wildcard_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWildcard_expression(Swift5Parser.Wildcard_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#key_path_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitKey_path_expression(Swift5Parser.Key_path_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#key_path_components}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitKey_path_components(Swift5Parser.Key_path_componentsContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#key_path_component}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitKey_path_component(Swift5Parser.Key_path_componentContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#key_path_postfixes}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitKey_path_postfixes(Swift5Parser.Key_path_postfixesContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#key_path_postfix}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitKey_path_postfix(Swift5Parser.Key_path_postfixContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#selector_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSelector_expression(Swift5Parser.Selector_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#key_path_string_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitKey_path_string_expression(Swift5Parser.Key_path_string_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#postfix_expression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPostfix_expression(Swift5Parser.Postfix_expressionContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_call_suffix}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_call_suffix(Swift5Parser.Function_call_suffixContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#initializer_suffix}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInitializer_suffix(Swift5Parser.Initializer_suffixContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#explicit_member_suffix}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExplicit_member_suffix(Swift5Parser.Explicit_member_suffixContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#postfix_self_suffix}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPostfix_self_suffix(Swift5Parser.Postfix_self_suffixContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#subscript_suffix}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSubscript_suffix(Swift5Parser.Subscript_suffixContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#forced_value_suffix}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitForced_value_suffix(Swift5Parser.Forced_value_suffixContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#optional_chaining_suffix}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOptional_chaining_suffix(Swift5Parser.Optional_chaining_suffixContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_call_argument_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_call_argument_clause(Swift5Parser.Function_call_argument_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_call_argument_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_call_argument_list(Swift5Parser.Function_call_argument_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_call_argument}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_call_argument(Swift5Parser.Function_call_argumentContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#trailing_closures}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTrailing_closures(Swift5Parser.Trailing_closuresContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#labeled_trailing_closures}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLabeled_trailing_closures(Swift5Parser.Labeled_trailing_closuresContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#labeled_trailing_closure}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLabeled_trailing_closure(Swift5Parser.Labeled_trailing_closureContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#argument_names}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArgument_names(Swift5Parser.Argument_namesContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#argument_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArgument_name(Swift5Parser.Argument_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType(Swift5Parser.TypeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#type_annotation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType_annotation(Swift5Parser.Type_annotationContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#type_identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType_identifier(Swift5Parser.Type_identifierContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#type_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType_name(Swift5Parser.Type_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#tuple_type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuple_type(Swift5Parser.Tuple_typeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#tuple_type_element_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuple_type_element_list(Swift5Parser.Tuple_type_element_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#tuple_type_element}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuple_type_element(Swift5Parser.Tuple_type_elementContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#element_name}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitElement_name(Swift5Parser.Element_nameContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_type(Swift5Parser.Function_typeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_type_argument_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_type_argument_clause(Swift5Parser.Function_type_argument_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_type_argument_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_type_argument_list(Swift5Parser.Function_type_argument_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#function_type_argument}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunction_type_argument(Swift5Parser.Function_type_argumentContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#argument_label}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArgument_label(Swift5Parser.Argument_labelContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#array_type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArray_type(Swift5Parser.Array_typeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#dictionary_type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDictionary_type(Swift5Parser.Dictionary_typeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#protocol_composition_type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProtocol_composition_type(Swift5Parser.Protocol_composition_typeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#trailing_composition_and}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTrailing_composition_and(Swift5Parser.Trailing_composition_andContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#opaque_type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOpaque_type(Swift5Parser.Opaque_typeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#any_type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAny_type(Swift5Parser.Any_typeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#self_type}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSelf_type(Swift5Parser.Self_typeContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#type_inheritance_clause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType_inheritance_clause(Swift5Parser.Type_inheritance_clauseContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#type_inheritance_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType_inheritance_list(Swift5Parser.Type_inheritance_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIdentifier(Swift5Parser.IdentifierContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#identifier_list}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIdentifier_list(Swift5Parser.Identifier_listContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#keyword}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitKeyword(Swift5Parser.KeywordContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#assignment_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAssignment_operator(Swift5Parser.Assignment_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#negate_prefix_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNegate_prefix_operator(Swift5Parser.Negate_prefix_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#compilation_condition_AND}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCompilation_condition_AND(Swift5Parser.Compilation_condition_ANDContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#compilation_condition_OR}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCompilation_condition_OR(Swift5Parser.Compilation_condition_ORContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#compilation_condition_GE}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCompilation_condition_GE(Swift5Parser.Compilation_condition_GEContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#compilation_condition_L}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCompilation_condition_L(Swift5Parser.Compilation_condition_LContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#arrow_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrow_operator(Swift5Parser.Arrow_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#range_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRange_operator(Swift5Parser.Range_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#same_type_equals}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSame_type_equals(Swift5Parser.Same_type_equalsContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#binary_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBinary_operator(Swift5Parser.Binary_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#prefix_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrefix_operator(Swift5Parser.Prefix_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#postfix_operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPostfix_operator(Swift5Parser.Postfix_operatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#operator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOperator(Swift5Parser.OperatorContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#operator_head}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOperator_head(Swift5Parser.Operator_headContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#operator_character}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOperator_character(Swift5Parser.Operator_characterContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#operator_characters}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOperator_characters(Swift5Parser.Operator_charactersContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#dot_operator_head}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDot_operator_head(Swift5Parser.Dot_operator_headContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#dot_operator_character}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDot_operator_character(Swift5Parser.Dot_operator_characterContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#dot_operator_characters}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDot_operator_characters(Swift5Parser.Dot_operator_charactersContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLiteral(Swift5Parser.LiteralContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#numeric_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNumeric_literal(Swift5Parser.Numeric_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#boolean_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBoolean_literal(Swift5Parser.Boolean_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#nil_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNil_literal(Swift5Parser.Nil_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#integer_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInteger_literal(Swift5Parser.Integer_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#string_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitString_literal(Swift5Parser.String_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#extended_string_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExtended_string_literal(Swift5Parser.Extended_string_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#static_string_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStatic_string_literal(Swift5Parser.Static_string_literalContext ctx); + /** + * Visit a parse tree produced by {@link Swift5Parser#interpolated_string_literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInterpolated_string_literal(Swift5Parser.Interpolated_string_literalContext ctx); +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/SwiftSupport.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/SwiftSupport.java new file mode 100644 index 00000000..71a60dc9 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/antlr/generated/SwiftSupport.java @@ -0,0 +1,378 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.antlr.generated; + +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.misc.Interval; + +import java.util.BitSet; + +public class SwiftSupport { + /* TODO + There is one caveat to the rules above. If the ! or ? predefined operator + has no whitespace on the left, it is treated as a postfix operator, + regardless of whether it has whitespace on the right. To use the ? as + the optional-chaining operator, it must not have whitespace on the left. + To use it in the ternary conditional (? :) operator, it must have + whitespace around both sides. + */ + + /* + operator-head : / = - + ! * % < > & | ^ ~ ? + | [\u00A1-\u00A7] + | [\u00A9\u00AB] + | [\u00AC\u00AE] + | [\u00B0-\u00B1\u00B6\u00BB\u00BF\u00D7\u00F7] + | [\u2016-\u2017\u2020-\u2027] + | [\u2030-\u203E] + | [\u2041-\u2053] + | [\u2055-\u205E] + | [\u2190-\u23FF] + | [\u2500-\u2775] + | [\u2794-\u2BFF] + | [\u2E00-\u2E7F] + | [\u3001-\u3003] + | [\u3008-\u3030] + ; + */ + public static final BitSet operatorHead = new BitSet(0x10000); + public static final BitSet operatorCharacter; + + public static final BitSet leftWS = new BitSet(255); + public static final BitSet rightWS = new BitSet(255); + + static { + // operator-head → / =­ -­ +­ !­ *­ %­ <­ >­ &­ |­ ^­ ~­ ?­ + operatorHead.set('/'); + operatorHead.set('='); + operatorHead.set('-'); + operatorHead.set('+'); + operatorHead.set('!'); + operatorHead.set('*'); + operatorHead.set('%'); + operatorHead.set('&'); + operatorHead.set('|'); + operatorHead.set('<'); + operatorHead.set('>'); + operatorHead.set('^'); + operatorHead.set('~'); + operatorHead.set('?'); + + // operator-head → U+00A1–U+00A7 + operatorHead.set(0x00A1, 0x00A7 + 1); + + // operator-head → U+00A9 or U+00AB + operatorHead.set(0x00A9); + operatorHead.set(0x00AB); + + // operator-head → U+00AC or U+00AE + operatorHead.set(0x00AC); + operatorHead.set(0x00AE); + + // operator-head → U+00B0–U+00B1, U+00B6, U+00BB, U+00BF, U+00D7, or U+00F7 + operatorHead.set(0x00B0, 0x00B1 + 1); + operatorHead.set(0x00B6); + operatorHead.set(0x00BB); + operatorHead.set(0x00BF); + operatorHead.set(0x00D7); + operatorHead.set(0x00F7); + + // operator-head → U+2016–U+2017 or U+2020–U+2027 + operatorHead.set(0x2016, 0x2017 + 1); + operatorHead.set(0x2020, 0x2027 + 1); + + // operator-head → U+2030–U+203E + operatorHead.set(0x2030, 0x203E + 1); + + // operator-head → U+2041–U+2053 + operatorHead.set(0x2041, 0x2053 + 1); + + // operator-head → U+2055–U+205E + operatorHead.set(0x2055, 0x205E + 1); + + // operator-head → U+2190–U+23FF + operatorHead.set(0x2190, 0x23FF + 1); + + // operator-head → U+2500–U+2775 + operatorHead.set(0x2500, 0x2775 + 1); + + // operator-head → U+2794–U+2BFF + operatorHead.set(0x2794, 0x2BFF + 1); + + // operator-head → U+2E00–U+2E7F + operatorHead.set(0x2E00, 0x2E7F + 1); + + // operator-head → U+3001–U+3003 + operatorHead.set(0x3001, 0x3003 + 1); + + // operator-head → U+3008–U+3030 + operatorHead.set(0x3008, 0x3020 + 1); + + operatorHead.set(0x3030); + + // operator-character → operator-head­ + operatorCharacter = (BitSet) operatorHead.clone(); + + // operator-character → U+0300–U+036F + operatorCharacter.set(0x0300, 0x036F + 1); + // operator-character → U+1DC0–U+1DFF + operatorCharacter.set(0x1DC0, 0x1DFF + 1); + // operator-character → U+20D0–U+20FF + operatorCharacter.set(0x20D0, 0x20FF + 1); + // operator-character → U+FE00–U+FE0F + operatorCharacter.set(0xFE00, 0xFE0F + 1); + // operator-character → U+FE20–U+FE2F + operatorCharacter.set(0xFE20, 0xFE2F + 1); + operatorCharacter.set(0xE0100, 0xE01EF + 1); + + // operator-character → U+E0100–U+E01EF + // Java works with 16-bit unicode chars. However, it can work for targets in other languages, e.g. in Swift + // operatorCharacter.set(0xE0100,0xE01EF+1); + + leftWS.set(Swift5Parser.WS); + leftWS.set(Swift5Parser.LPAREN); + leftWS.set(Swift5Parser.Interpolataion_multi_line); + leftWS.set(Swift5Parser.Interpolataion_single_line); + leftWS.set(Swift5Parser.LBRACK); + leftWS.set(Swift5Parser.LCURLY); + leftWS.set(Swift5Parser.COMMA); + leftWS.set(Swift5Parser.COLON); + leftWS.set(Swift5Parser.SEMI); + + rightWS.set(Swift5Parser.WS); + rightWS.set(Swift5Parser.RPAREN); + rightWS.set(Swift5Parser.RBRACK); + rightWS.set(Swift5Parser.RCURLY); + rightWS.set(Swift5Parser.COMMA); + rightWS.set(Swift5Parser.COLON); + rightWS.set(Swift5Parser.SEMI); + rightWS.set(Swift5Parser.Line_comment); + rightWS.set(Swift5Parser.Block_comment); + } + + private static boolean isCharacterFromSet(Token token, BitSet bitSet) { + if (token.getType() == Token.EOF) { + return false; + } else { + String text = token.getText(); + int codepoint = text.codePointAt(0); + if (Character.charCount(codepoint) != text.length()) { + // not a single character + return false; + } else { + return bitSet.get(codepoint); + } + } + } + + public static boolean isOperatorHead(Token token) { + return isCharacterFromSet(token, operatorHead); + } + + public static boolean isOperatorCharacter(Token token) { + return isCharacterFromSet(token, operatorCharacter); + } + + public static boolean isOpNext(TokenStream tokens) { + int start = tokens.index(); + Token lt = tokens.get(start); + int stop = getLastOpTokenIndex(tokens); + return stop != -1; + // System.out.printf("isOpNext: i=%d t='%s'", start, lt.getText()); + // System.out.printf(", op='%s'\n", tokens.getText(Interval.of(start,stop))); + } + + /** + * Find stop token index of next operator; return -1 if not operator. + */ + public static int getLastOpTokenIndex(TokenStream tokens) { + int currentTokenIndex = tokens.index(); // current on-channel lookahead token index + Token currentToken = tokens.get(currentTokenIndex); + + //System.out.println("getLastOpTokenIndex: "+currentToken.getText()); + + + tokens.getText(); // Ensures that tokens can be read + // operator → dot-operator-head­ dot-operator-characters + if (currentToken.getType() == Swift5Parser.DOT && tokens.get(currentTokenIndex + 1).getType() == Swift5Parser.DOT) { + //System.out.println("DOT"); + + + // dot-operator + currentTokenIndex += 2; // point at token after ".." + currentToken = tokens.get(currentTokenIndex); + + // dot-operator-character → .­ | operator-character­ + while (currentToken.getType() == Swift5Parser.DOT || isOperatorCharacter(currentToken)) { + //System.out.println("DOT"); + currentTokenIndex++; + currentToken = tokens.get(currentTokenIndex); + } + + //System.out.println("result: "+(currentTokenIndex - 1)); + return currentTokenIndex - 1; + } + + // operator → operator-head­ operator-characters­? + + if (isOperatorHead(currentToken)) { + //System.out.println("isOperatorHead"); + + currentToken = tokens.get(currentTokenIndex); + while (isOperatorCharacter(currentToken)) { + //System.out.println("isOperatorCharacter"); + currentTokenIndex++; + currentToken = tokens.get(currentTokenIndex); + } + //System.out.println("result: "+(currentTokenIndex - 1)); + return currentTokenIndex - 1; + } else { + //System.out.println("result: "+(-1)); + return -1; + } + } + + /** + * "If an operator has whitespace around both sides or around neither side, + * it is treated as a binary operator. As an example, the + operator in a+b + * and a + b is treated as a binary operator." + */ + public static boolean isBinaryOp(TokenStream tokens) { + int stop = getLastOpTokenIndex(tokens); + if (stop == -1) return false; + + int start = tokens.index(); + Token currentToken = tokens.get(start); + Token prevToken = tokens.get(start - 1); // includes hidden-channel tokens + Token nextToken = tokens.get(stop + 1); + boolean prevIsWS = isLeftOperatorWS(prevToken); + boolean nextIsWS = isRightOperatorWS(nextToken); + //String text = tokens.getText(Interval.of(start, stop)); + //System.out.println("isBinaryOp: '"+prevToken+"','"+text+"','"+nextToken+"' is "+result); + if (prevIsWS) { + return nextIsWS; + } else { + if (currentToken.getType() == Swift5Lexer.BANG || currentToken.getType() == Swift5Lexer.QUESTION) { + return false; + } else { + if (!nextIsWS) return nextToken.getType() != Swift5Lexer.DOT; + } + } + return false; + } + + /** + * "If an operator has whitespace on the left side only, it is treated as a + * prefix unary operator. As an example, the ++ operator in a ++b is treated + * as a prefix unary operator." + */ + public static boolean isPrefixOp(TokenStream tokens) { + int stop = getLastOpTokenIndex(tokens); + if (stop == -1) return false; + + int start = tokens.index(); + Token prevToken = tokens.get(start - 1); // includes hidden-channel tokens + Token nextToken = tokens.get(stop + 1); + boolean prevIsWS = isLeftOperatorWS(prevToken); + boolean nextIsWS = isRightOperatorWS(nextToken); + //String text = tokens.getText(Interval.of(start, stop)); + // System.out.println("isPrefixOp: '"+prevToken+"','"+text+"','"+nextToken+"' is "+result); + return prevIsWS && !nextIsWS; + } + + /** + * "If an operator has whitespace on the right side only, it is treated as a + * postfix unary operator. As an example, the ++ operator in a++ b is treated + * as a postfix unary operator." + *

+ * "If an operator has no whitespace on the left but is followed immediately + * by a dot (.), it is treated as a postfix unary operator. As an example, + * the ++ operator in a++.b is treated as a postfix unary operator (a++ .b + * rather than a ++ .b)." + */ + public static boolean isPostfixOp(TokenStream tokens) { + int stop = getLastOpTokenIndex(tokens); + if (stop == -1) return false; + + int start = tokens.index(); + Token prevToken = tokens.get(start - 1); // includes hidden-channel tokens + Token nextToken = tokens.get(stop + 1); + boolean prevIsWS = isLeftOperatorWS(prevToken); + boolean nextIsWS = isRightOperatorWS(nextToken); + //String text = tokens.getText(Interval.of(start, stop)); + // System.out.println("isPostfixOp: '"+prevToken+"','"+text+"','"+nextToken+"' is "+result); + return !prevIsWS && nextIsWS || + !prevIsWS && nextToken.getType() == Swift5Parser.DOT; + } + + public static boolean isOperator(TokenStream tokens, String op) { + int stop = getLastOpTokenIndex(tokens); + if (stop == -1) return false; + + int start = tokens.index(); + String text = tokens.getText(Interval.of(start, stop)); + // System.out.println("text: '"+text+"', op: '"+op+"', text.equals(op): '"+text.equals(op)+"'"); + + // for (int i = 0; i <= stop; i++) { + // System.out.println("token["+i+"] = '"+tokens.getText(Interval.of(i, i))+"'"); + // } + + return text.equals(op); + } + + public static boolean isLeftOperatorWS(Token t) { + return leftWS.get(t.getType()); + } + + public static boolean isRightOperatorWS(Token t) { + return rightWS.get(t.getType()) || t.getType() == Token.EOF; + } + + public static boolean isSeparatedStatement(TokenStream tokens, int indexOfPreviousStatement) { + //System.out.println("------"); + //System.out.println("indexOfPreviousStatement: " + indexOfPreviousStatement); + + int indexFrom = indexOfPreviousStatement - 1; + int indexTo = tokens.index() - 1; + + if (indexFrom >= 0) { + // Stupid check for new line and semicolon, can be optimized + while (indexFrom >= 0 && tokens.get(indexFrom).getChannel() == Token.HIDDEN_CHANNEL) { + indexFrom--; + } + + //System.out.println("from: '" + tokens.getText(Interval.of(indexFrom, indexFrom))+"', "+tokens.get(indexFrom)); + //System.out.println("to: '" + tokens.getText(Interval.of(indexTo, indexTo))+"', "+tokens.get(indexTo)); + //System.out.println("in_between: '" + tokens.getText(Interval.of(indexFrom, indexTo))); + + //for (int i = previousIndex; i < currentIndex; i++) + for(int i =indexTo;i>= indexFrom;i--){ + String t = tokens.get(i).getText(); + if(t.contains("\n") || t.contains(";")){ + return true; + } + } + return false; + //String text = tokens.getText(Interval.of(indexFrom, indexTo)); + //return text.contains("\n") || text.contains(";"); + } else { + return true; + } + } +} diff --git a/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/checks/idleness/IdleTimerDisabledCheck.java b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/checks/idleness/IdleTimerDisabledCheck.java new file mode 100644 index 00000000..f563a0f0 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/java/io/ecocode/ios/swift/checks/idleness/IdleTimerDisabledCheck.java @@ -0,0 +1,44 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.checks.idleness; + +import io.ecocode.ios.swift.Swift; +import io.ecocode.ios.swift.antlr.generated.Swift5Parser; +import io.ecocode.ios.checks.RuleCheck; +import org.antlr.v4.runtime.tree.ParseTree; + +/** + * Check the use of "UIApplication.shared.isIdleTimerDisabled" and triggers when set to true. + */ +public class IdleTimerDisabledCheck extends RuleCheck { + + public IdleTimerDisabledCheck() { + super("EIDL001", Swift.RULES_PATH, Swift.REPOSITORY_KEY); + } + + @Override + public void apply(ParseTree tree) { + + if (tree instanceof Swift5Parser.ExpressionContext) { + Swift5Parser.ExpressionContext id = (Swift5Parser.ExpressionContext) tree; + if (id.getText().equals("UIApplication.shared.isIdleTimerDisabled=true")) { + this.recordIssue(ruleId, id.getStart().getStartIndex()); + } + } + } +} diff --git a/ios-plugin/swift-lang/src/main/resources/EIDL001.html b/ios-plugin/swift-lang/src/main/resources/EIDL001.html new file mode 100644 index 00000000..bce45601 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/resources/EIDL001.html @@ -0,0 +1,9 @@ + +

To avoid draining the battery, an iOS device that is left idle quickly falls asleep.
+ Hence, keeping the screen on should be avoided, unless it is absolutely necessary. If so, developers typically + disable the idle timer with UIApplication.shared.isIdleTimerDisabled = true.

+

Noncompliant Code Example

+
+    UIApplication.shared.isIdleTimerDisabled = true
+
+ diff --git a/ios-plugin/swift-lang/src/main/resources/ecocode-swift-rules.json b/ios-plugin/swift-lang/src/main/resources/ecocode-swift-rules.json new file mode 100644 index 00000000..905e2b49 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/resources/ecocode-swift-rules.json @@ -0,0 +1,18 @@ +[ + { + "key": "EIDL001", + "name": "Idle timer disabled", + "severity": "MAJOR", + "description": "Do not disable idle timer, unless absolutely necessary.", + "debt": { + "function": "CONSTANT_ISSUE", + "offset": "5min" + }, + "tags": [ + "ecocode", + "environment", + "idleness" + ], + "type": "CODE_SMELL" + } +] \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/main/resources/ecocode_swift_profile.json b/ios-plugin/swift-lang/src/main/resources/ecocode_swift_profile.json new file mode 100644 index 00000000..8a18d495 --- /dev/null +++ b/ios-plugin/swift-lang/src/main/resources/ecocode_swift_profile.json @@ -0,0 +1,6 @@ +{ + "name": "ecoCode", + "ruleKeys": [ + "EIDL001" + ] +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/SwiftSensorTest.java b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/SwiftSensorTest.java new file mode 100644 index 00000000..a5580360 --- /dev/null +++ b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/SwiftSensorTest.java @@ -0,0 +1,35 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift; + +import org.junit.Test; +import org.sonar.api.batch.sensor.internal.SensorContextTester; + +import static org.assertj.core.api.Assertions.assertThat; + +public class SwiftSensorTest { + + @Test + public void execute() { + SensorContextTester sensorContext = TestHelper.testFile("checks/IdleTimerDisabled_trigger.swift"); + SwiftSensor sensor = new SwiftSensor(); + sensor.execute(sensorContext); + + assertThat(sensorContext.allIssues()).hasSize(1); + } +} diff --git a/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/TestHelper.java b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/TestHelper.java new file mode 100644 index 00000000..57dc0018 --- /dev/null +++ b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/TestHelper.java @@ -0,0 +1,46 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift; + +import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.fs.internal.DefaultInputFile; +import org.sonar.api.batch.fs.internal.TestInputFileBuilder; +import org.sonar.api.batch.sensor.internal.SensorContextTester; + +import java.io.File; +import java.nio.file.Paths; + +public class TestHelper { + + private static final String TEST_ROOT = "src/test/resources"; + private static final int LINE_COUNT = 100; + + public static SensorContextTester testFile(String relativePath) { + SensorContextTester context = SensorContextTester.create(new File(TEST_ROOT)); + DefaultInputFile testFile = new TestInputFileBuilder("", relativePath) + .setType(InputFile.Type.MAIN) + .setLines(LINE_COUNT) + .setOriginalLineEndOffsets(new int[LINE_COUNT]) + .setOriginalLineStartOffsets(new int[LINE_COUNT]) + .setModuleBaseDir(Paths.get(TEST_ROOT)) + .setLanguage(Swift.KEY).build(); + context.fileSystem().add(testFile); + + return context; + } +} diff --git a/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/antlr/CustomTreeVisitorTest.java b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/antlr/CustomTreeVisitorTest.java new file mode 100644 index 00000000..d415bd66 --- /dev/null +++ b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/antlr/CustomTreeVisitorTest.java @@ -0,0 +1,84 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.antlr; + +import io.ecocode.ios.antlr.AntlrContext; +import io.ecocode.ios.antlr.ParseTreeItemVisitor; +import io.ecocode.ios.swift.antlr.CustomTreeVisitor; +import io.ecocode.ios.swift.antlr.SwiftAntlrContext; +import io.ecocode.ios.swift.antlr.generated.Swift5Lexer; +import io.ecocode.ios.swift.antlr.generated.Swift5Parser; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CharStreams; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.tree.ParseTree; +import org.apache.commons.io.IOUtils; +import org.junit.Test; +import org.mockito.Mock; +import org.sonar.api.batch.sensor.SensorContext; + +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.Objects; + +import static org.assertj.core.api.Assertions.assertThat; + +public class CustomTreeVisitorTest { + + private static final String MAIN_SRC = "/main.swift"; + + @Mock + private SensorContext sensorContext; + + @Test + public void visit() throws IOException { + + final CharStream charStream = CharStreams.fromStream(Objects.requireNonNull(this.getClass().getResourceAsStream(MAIN_SRC))); + final Swift5Lexer lexer = new Swift5Lexer(charStream); + lexer.removeErrorListeners(); + final CommonTokenStream stream = new CommonTokenStream(lexer); + stream.fill(); + final Swift5Parser parser = new Swift5Parser(stream); + parser.removeErrorListeners(); + final ParseTree root = parser.top_level(); + + CustomTreeVisitor customTreeVisitor = new CustomTreeVisitor(new ParseTreeItemVisitor() { + @Override + public void apply(ParseTree tree) { + + } + + @Override + public void fillContext(SensorContext context, AntlrContext antlrContext) { + assertThat(antlrContext.getTokens()).hasSize(30); + } + + + }); + + SwiftAntlrContext antlrContext = new SwiftAntlrContext(); + String text = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream(MAIN_SRC)), StandardCharsets.UTF_8); + antlrContext.loadFromStreams(null, IOUtils.toInputStream(text, Charset.defaultCharset()), + IOUtils.toInputStream(text, Charset.defaultCharset()), Charset.defaultCharset()); + + customTreeVisitor.visit(root); + customTreeVisitor.fillContext(sensorContext, antlrContext); + } + +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/antlr/ParseTreeAnalyzerTest.java b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/antlr/ParseTreeAnalyzerTest.java new file mode 100644 index 00000000..68a9ad4d --- /dev/null +++ b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/antlr/ParseTreeAnalyzerTest.java @@ -0,0 +1,40 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.antlr; + +import io.ecocode.ios.swift.EcoCodeSwiftVisitor; +import io.ecocode.ios.swift.Swift; +import io.ecocode.ios.swift.TestHelper; +import org.junit.Test; +import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.sensor.internal.SensorContextTester; + +import static org.assertj.core.api.Assertions.assertThat; +public class ParseTreeAnalyzerTest { + + @Test + public void analyze() throws Throwable { + final SwiftAntlrContext antlrContext = new SwiftAntlrContext(); + SensorContextTester sensorContext = TestHelper.testFile("checks/IdleTimerDisabled_trigger.swift"); + ParseTreeAnalyzer analyzer = new ParseTreeAnalyzer(Swift.KEY, InputFile.Type.MAIN, antlrContext, sensorContext); + analyzer.analyze(new EcoCodeSwiftVisitor()); + + assertThat(sensorContext.allIssues()).hasSize(1); + } + +} diff --git a/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/antlr/SwiftAntlrContextTest.java b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/antlr/SwiftAntlrContextTest.java new file mode 100644 index 00000000..358e51ab --- /dev/null +++ b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/antlr/SwiftAntlrContextTest.java @@ -0,0 +1,50 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.antlr; + +import org.antlr.v4.runtime.Token; +import org.apache.commons.io.IOUtils; +import org.junit.Test; + +import java.nio.charset.Charset; + +import static org.assertj.core.api.Assertions.assertThat; + +public class SwiftAntlrContextTest { + @Test + public void linesDetection() throws Throwable { + String s = "let test = \"test\""; + + SwiftAntlrContext result = new SwiftAntlrContext(); + result.loadFromStreams(null, IOUtils.toInputStream(s, Charset.defaultCharset()), + IOUtils.toInputStream(s, Charset.defaultCharset()), Charset.defaultCharset()); + + for (Token t : result.getStream().getTokens()) { + if (t.getType() == Token.EOF) { + continue; + } + int[] start = result.getLineAndColumn(t.getStartIndex()); + int[] end = result.getLineAndColumn(t.getStopIndex()); + assertThat(start).isNotNull(); + assertThat(end).isNotNull(); + assertThat(t.getLine()).isEqualTo(start[0]); + assertThat(t.getCharPositionInLine()).isEqualTo(start[1]); + } + } + +} diff --git a/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/checks/CheckTestHelper.java b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/checks/CheckTestHelper.java new file mode 100644 index 00000000..c0fcfe6b --- /dev/null +++ b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/checks/CheckTestHelper.java @@ -0,0 +1,40 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.checks; + +import io.ecocode.ios.swift.EcoCodeSwiftVisitor; +import io.ecocode.ios.swift.Swift; +import io.ecocode.ios.swift.TestHelper; +import io.ecocode.ios.swift.antlr.ParseTreeAnalyzer; +import io.ecocode.ios.swift.antlr.SwiftAntlrContext; +import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.sensor.internal.SensorContextTester; + +public class CheckTestHelper { + + + public static SensorContextTester analyzeTestFile(String relativePath) { + SensorContextTester context = TestHelper.testFile(relativePath); + + final SwiftAntlrContext antlrContext = new SwiftAntlrContext(); + new ParseTreeAnalyzer(Swift.KEY, InputFile.Type.MAIN, antlrContext, context) + .analyze(new EcoCodeSwiftVisitor()); + + return context; + } +} diff --git a/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/checks/idleness/CheckTests.java b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/checks/idleness/CheckTests.java new file mode 100644 index 00000000..ed90945b --- /dev/null +++ b/ios-plugin/swift-lang/src/test/java/io/ecocode/ios/swift/checks/idleness/CheckTests.java @@ -0,0 +1,50 @@ +/* + * ecoCode iOS plugin - Help the earth, adopt this green plugin for your applications + * Copyright © 2022 Green code Initiative (https://www.ecocode.io/) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package io.ecocode.ios.swift.checks.idleness; + +import io.ecocode.ios.swift.checks.CheckTestHelper; +import org.junit.Test; +import org.sonar.api.batch.sensor.internal.SensorContextTester; +import org.sonar.api.batch.sensor.issue.Issue; +import org.sonar.api.batch.sensor.issue.IssueLocation; + +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; + +public class CheckTests { + + @Test + public void idleTimerDisabled_trigger() { + SensorContextTester context = CheckTestHelper.analyzeTestFile("checks/IdleTimerDisabled_trigger.swift"); + assertThat(context.allIssues()).hasSize(1); + Optional issue = context.allIssues().stream().findFirst(); + issue.ifPresent(i -> { + assertThat(i.ruleKey().rule()).isEqualTo("EIDL001"); + assertThat(i.ruleKey().repository()).isEqualTo("ecoCode-swift"); + IssueLocation location = i.primaryLocation(); + assertThat(location.textRange().start().line()).isEqualTo(11); + }); + } + + @Test + public void idleTimerDisabled_no_trigger() { + SensorContextTester context = CheckTestHelper.analyzeTestFile("checks/IdleTimerDisabled_no_trigger.swift"); + assertThat(context.allIssues()).isEmpty(); + } +} diff --git a/ios-plugin/swift-lang/src/test/resources/checks/IdleTimerDisabled_no_trigger.swift b/ios-plugin/swift-lang/src/test/resources/checks/IdleTimerDisabled_no_trigger.swift new file mode 100644 index 00000000..dbf371cc --- /dev/null +++ b/ios-plugin/swift-lang/src/test/resources/checks/IdleTimerDisabled_no_trigger.swift @@ -0,0 +1,15 @@ +import Foundation +import SwiftUI + +final class AppDelegate: NSObject, UIApplicationDelegate { + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil + ) -> Bool { + + // Should not trigger + UIApplication.shared.isIdleTimerDisabled = false + + return true + } +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/test/resources/checks/IdleTimerDisabled_trigger.swift b/ios-plugin/swift-lang/src/test/resources/checks/IdleTimerDisabled_trigger.swift new file mode 100644 index 00000000..e44d38e8 --- /dev/null +++ b/ios-plugin/swift-lang/src/test/resources/checks/IdleTimerDisabled_trigger.swift @@ -0,0 +1,15 @@ +import Foundation +import SwiftUI + +final class AppDelegate: NSObject, UIApplicationDelegate { + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil + ) -> Bool { + + // Should trigger + UIApplication.shared.isIdleTimerDisabled = true + + return true + } +} \ No newline at end of file diff --git a/ios-plugin/swift-lang/src/test/resources/main.swift b/ios-plugin/swift-lang/src/test/resources/main.swift new file mode 100644 index 00000000..d1b6be4c --- /dev/null +++ b/ios-plugin/swift-lang/src/test/resources/main.swift @@ -0,0 +1,6 @@ +@main +struct App { + static func main() { + print("Starting.") + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 36b85564..34c4a734 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ ecoCode Mobile Sonar Plugins Project Les règles s'appuient sur l'édition 3 du livre "Ecoconception Web / Les 115 bonnes pratiques" => https://collectif.greenit.fr/ecoconception-web/115-bonnes-pratiques-eco-conception_web.html - CNumR + Green code Initiative https://collectif.greenit.fr @@ -59,6 +59,9 @@ 5.9.1 3.23.1 + **/codenarc-converter/**,**/*.groovy,**/android-plugin/src/test/**,**/*.dummy,**/generated/**/*.* + **/generated/**/*.* + @@ -165,6 +168,7 @@ codenarc-converter android-plugin + ios-plugin