typeArgument() {
+ return getRuleContexts(TypeArgumentContext.class);
+ }
+ public TypeArgumentContext typeArgument(int i) {
+ return getRuleContext(TypeArgumentContext.class,i);
+ }
+ public TypeArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeArguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof JavaParserListener ) ((JavaParserListener)listener).enterTypeArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof JavaParserListener ) ((JavaParserListener)listener).exitTypeArguments(this);
+ }
+ }
+
+ public final TypeArgumentsContext typeArguments() throws RecognitionException {
+ TypeArgumentsContext _localctx = new TypeArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 244, RULE_typeArguments);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1719);
+ match(LT);
+ setState(1720);
+ typeArgument();
+ setState(1725);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(1721);
+ match(COMMA);
+ setState(1722);
+ typeArgument();
+ }
+ }
+ setState(1727);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1728);
+ match(GT);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class SuperSuffixContext extends ParserRuleContext {
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public SuperSuffixContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_superSuffix; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof JavaParserListener ) ((JavaParserListener)listener).enterSuperSuffix(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof JavaParserListener ) ((JavaParserListener)listener).exitSuperSuffix(this);
+ }
+ }
+
+ public final SuperSuffixContext superSuffix() throws RecognitionException {
+ SuperSuffixContext _localctx = new SuperSuffixContext(_ctx, getState());
+ enterRule(_localctx, 246, RULE_superSuffix);
+ int _la;
+ try {
+ setState(1739);
+ switch (_input.LA(1)) {
+ case LPAREN:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1730);
+ arguments();
+ }
+ break;
+ case DOT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1731);
+ match(DOT);
+ setState(1733);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1732);
+ typeArguments();
+ }
+ }
+
+ setState(1735);
+ identifier();
+ setState(1737);
+ switch ( getInterpreter().adaptivePredict(_input,215,_ctx) ) {
+ case 1:
+ {
+ setState(1736);
+ arguments();
+ }
+ 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 ExplicitGenericInvocationSuffixContext extends ParserRuleContext {
+ public TerminalNode SUPER() { return getToken(JavaParser.SUPER, 0); }
+ public SuperSuffixContext superSuffix() {
+ return getRuleContext(SuperSuffixContext.class,0);
+ }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public ExplicitGenericInvocationSuffixContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_explicitGenericInvocationSuffix; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof JavaParserListener ) ((JavaParserListener)listener).enterExplicitGenericInvocationSuffix(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof JavaParserListener ) ((JavaParserListener)listener).exitExplicitGenericInvocationSuffix(this);
+ }
+ }
+
+ public final ExplicitGenericInvocationSuffixContext explicitGenericInvocationSuffix() throws RecognitionException {
+ ExplicitGenericInvocationSuffixContext _localctx = new ExplicitGenericInvocationSuffixContext(_ctx, getState());
+ enterRule(_localctx, 248, RULE_explicitGenericInvocationSuffix);
+ try {
+ setState(1746);
+ switch (_input.LA(1)) {
+ case SUPER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1741);
+ match(SUPER);
+ setState(1742);
+ superSuffix();
+ }
+ break;
+ case MODULE:
+ case OPEN:
+ case REQUIRES:
+ case EXPORTS:
+ case OPENS:
+ case TO:
+ case USES:
+ case PROVIDES:
+ case WITH:
+ case TRANSITIVE:
+ case VAR:
+ case YIELD:
+ case RECORD:
+ case SEALED:
+ case PERMITS:
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1743);
+ identifier();
+ setState(1744);
+ arguments();
+ }
+ 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 ArgumentsContext extends ParserRuleContext {
+ public ExpressionListContext expressionList() {
+ return getRuleContext(ExpressionListContext.class,0);
+ }
+ public ArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof JavaParserListener ) ((JavaParserListener)listener).enterArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof JavaParserListener ) ((JavaParserListener)listener).exitArguments(this);
+ }
+ }
+
+ public final ArgumentsContext arguments() throws RecognitionException {
+ ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 250, RULE_arguments);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1748);
+ match(LPAREN);
+ setState(1750);
+ _la = _input.LA(1);
+ if (((((_la - 3)) & ~0x3f) == 0 && ((1L << (_la - 3)) & ((1L << (BOOLEAN - 3)) | (1L << (BYTE - 3)) | (1L << (CHAR - 3)) | (1L << (DOUBLE - 3)) | (1L << (FLOAT - 3)) | (1L << (INT - 3)) | (1L << (LONG - 3)) | (1L << (NEW - 3)) | (1L << (SHORT - 3)) | (1L << (SUPER - 3)) | (1L << (SWITCH - 3)) | (1L << (THIS - 3)) | (1L << (VOID - 3)) | (1L << (MODULE - 3)) | (1L << (OPEN - 3)) | (1L << (REQUIRES - 3)) | (1L << (EXPORTS - 3)) | (1L << (OPENS - 3)) | (1L << (TO - 3)) | (1L << (USES - 3)) | (1L << (PROVIDES - 3)) | (1L << (WITH - 3)) | (1L << (TRANSITIVE - 3)) | (1L << (VAR - 3)) | (1L << (YIELD - 3)) | (1L << (RECORD - 3)) | (1L << (SEALED - 3)) | (1L << (PERMITS - 3)))) != 0) || ((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & ((1L << (DECIMAL_LITERAL - 67)) | (1L << (HEX_LITERAL - 67)) | (1L << (OCT_LITERAL - 67)) | (1L << (BINARY_LITERAL - 67)) | (1L << (FLOAT_LITERAL - 67)) | (1L << (HEX_FLOAT_LITERAL - 67)) | (1L << (BOOL_LITERAL - 67)) | (1L << (CHAR_LITERAL - 67)) | (1L << (STRING_LITERAL - 67)) | (1L << (TEXT_BLOCK - 67)) | (1L << (NULL_LITERAL - 67)) | (1L << (LPAREN - 67)) | (1L << (LT - 67)) | (1L << (BANG - 67)) | (1L << (TILDE - 67)) | (1L << (INC - 67)) | (1L << (DEC - 67)) | (1L << (ADD - 67)) | (1L << (SUB - 67)) | (1L << (AT - 67)) | (1L << (IDENTIFIER - 67)))) != 0)) {
+ {
+ setState(1749);
+ expressionList();
+ }
+ }
+
+ setState(1752);
+ match(RPAREN);
+ }
+ }
+ 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 99:
+ return expression_sempred((ExpressionContext)_localctx, predIndex);
+ case 107:
+ return guardedPattern_sempred((GuardedPatternContext)_localctx, predIndex);
+ }
+ return true;
+ }
+ private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 0:
+ return precpred(_ctx, 14);
+ case 1:
+ return precpred(_ctx, 13);
+ case 2:
+ return precpred(_ctx, 12);
+ case 3:
+ return precpred(_ctx, 11);
+ case 4:
+ return precpred(_ctx, 9);
+ case 5:
+ return precpred(_ctx, 8);
+ case 6:
+ return precpred(_ctx, 7);
+ case 7:
+ return precpred(_ctx, 6);
+ case 8:
+ return precpred(_ctx, 5);
+ case 9:
+ return precpred(_ctx, 4);
+ case 10:
+ return precpred(_ctx, 3);
+ case 11:
+ return precpred(_ctx, 2);
+ case 12:
+ return precpred(_ctx, 25);
+ case 13:
+ return precpred(_ctx, 24);
+ case 14:
+ return precpred(_ctx, 22);
+ case 15:
+ return precpred(_ctx, 18);
+ case 16:
+ return precpred(_ctx, 10);
+ }
+ return true;
+ }
+ private boolean guardedPattern_sempred(GuardedPatternContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 17:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+
+ public static final String _serializedATN =
+ "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3\u0082\u06dd\4\2\t"+
+ "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
+ "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
+ "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
+ "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
+ ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+
+ "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
+ "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
+ "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
+ "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+
+ "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+
+ "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+
+ "w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\3\2\5\2\u0100"+
+ "\n\2\3\2\3\2\7\2\u0104\n\2\f\2\16\2\u0107\13\2\3\2\3\2\7\2\u010b\n\2\f"+
+ "\2\16\2\u010e\13\2\3\2\3\2\3\2\5\2\u0113\n\2\3\3\7\3\u0116\n\3\f\3\16"+
+ "\3\u0119\13\3\3\3\3\3\3\3\3\3\3\4\3\4\5\4\u0121\n\4\3\4\3\4\3\4\5\4\u0126"+
+ "\n\4\3\4\3\4\3\5\7\5\u012b\n\5\f\5\16\5\u012e\13\5\3\5\3\5\3\5\3\5\3\5"+
+ "\5\5\u0135\n\5\3\6\3\6\3\6\3\6\3\6\5\6\u013c\n\6\3\7\3\7\3\7\3\7\3\7\3"+
+ "\7\3\7\3\7\3\7\3\7\5\7\u0148\n\7\3\b\3\b\5\b\u014c\n\b\3\t\3\t\3\t\5\t"+
+ "\u0151\n\t\3\t\3\t\5\t\u0155\n\t\3\t\3\t\5\t\u0159\n\t\3\t\3\t\5\t\u015d"+
+ "\n\t\3\t\3\t\3\n\3\n\3\n\3\n\7\n\u0165\n\n\f\n\16\n\u0168\13\n\3\n\3\n"+
+ "\3\13\7\13\u016d\n\13\f\13\16\13\u0170\13\13\3\13\3\13\3\13\7\13\u0175"+
+ "\n\13\f\13\16\13\u0178\13\13\3\13\5\13\u017b\n\13\3\f\3\f\3\f\7\f\u0180"+
+ "\n\f\f\f\16\f\u0183\13\f\3\r\3\r\3\r\3\r\5\r\u0189\n\r\3\r\3\r\5\r\u018d"+
+ "\n\r\3\r\5\r\u0190\n\r\3\r\5\r\u0193\n\r\3\r\3\r\3\16\3\16\3\16\7\16\u019a"+
+ "\n\16\f\16\16\16\u019d\13\16\3\17\7\17\u01a0\n\17\f\17\16\17\u01a3\13"+
+ "\17\3\17\3\17\5\17\u01a7\n\17\3\17\5\17\u01aa\n\17\3\20\3\20\7\20\u01ae"+
+ "\n\20\f\20\16\20\u01b1\13\20\3\21\3\21\3\21\5\21\u01b6\n\21\3\21\3\21"+
+ "\5\21\u01ba\n\21\3\21\3\21\5\21\u01be\n\21\3\21\3\21\3\22\3\22\7\22\u01c4"+
+ "\n\22\f\22\16\22\u01c7\13\22\3\22\3\22\3\23\3\23\7\23\u01cd\n\23\f\23"+
+ "\16\23\u01d0\13\23\3\23\3\23\3\24\3\24\5\24\u01d6\n\24\3\24\3\24\7\24"+
+ "\u01da\n\24\f\24\16\24\u01dd\13\24\3\24\5\24\u01e0\n\24\3\25\3\25\3\25"+
+ "\3\25\3\25\3\25\3\25\3\25\3\25\3\25\5\25\u01ec\n\25\3\26\3\26\3\26\3\26"+
+ "\3\26\7\26\u01f3\n\26\f\26\16\26\u01f6\13\26\3\26\3\26\5\26\u01fa\n\26"+
+ "\3\26\3\26\3\27\3\27\5\27\u0200\n\27\3\30\3\30\5\30\u0204\n\30\3\31\3"+
+ "\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33\3\33\5\33\u0210\n\33\3\33\3\33"+
+ "\3\34\7\34\u0215\n\34\f\34\16\34\u0218\13\34\3\34\3\34\3\34\3\35\3\35"+
+ "\3\35\3\35\3\36\7\36\u0222\n\36\f\36\16\36\u0225\13\36\3\36\3\36\5\36"+
+ "\u0229\n\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\5\37\u0233\n\37\3"+
+ " \3 \3 \3 \7 \u0239\n \f \16 \u023c\13 \3 \3 \3!\3!\3!\7!\u0243\n!\f!"+
+ "\16!\u0246\13!\3!\3!\3!\3\"\7\"\u024c\n\"\f\"\16\"\u024f\13\"\3\"\3\""+
+ "\3#\3#\3#\3#\3#\3#\5#\u0259\n#\3$\7$\u025c\n$\f$\16$\u025f\13$\3$\3$\3"+
+ "$\3%\7%\u0265\n%\f%\16%\u0268\13%\3%\3%\3%\3%\3%\7%\u026f\n%\f%\16%\u0272"+
+ "\13%\3%\3%\5%\u0276\n%\3%\3%\3&\3&\3&\7&\u027d\n&\f&\16&\u0280\13&\3\'"+
+ "\3\'\3\'\5\'\u0285\n\'\3(\3(\3(\7(\u028a\n(\f(\16(\u028d\13(\3)\3)\5)"+
+ "\u0291\n)\3*\3*\3*\3*\7*\u0297\n*\f*\16*\u029a\13*\3*\5*\u029d\n*\5*\u029f"+
+ "\n*\3*\3*\3+\3+\5+\u02a5\n+\3+\3+\7+\u02a9\n+\f+\16+\u02ac\13+\3+\3+\5"+
+ "+\u02b0\n+\3,\3,\7,\u02b4\n,\f,\16,\u02b7\13,\3,\3,\3,\5,\u02bc\n,\5,"+
+ "\u02be\n,\3-\3-\3-\7-\u02c3\n-\f-\16-\u02c6\13-\3.\3.\5.\u02ca\n.\3.\3"+
+ ".\3.\5.\u02cf\n.\3.\5.\u02d2\n.\5.\u02d4\n.\3.\3.\3/\3/\3/\3/\7/\u02dc"+
+ "\n/\f/\16/\u02df\13/\3/\3/\3\60\3\60\3\60\7\60\u02e6\n\60\f\60\16\60\u02e9"+
+ "\13\60\3\60\3\60\5\60\u02ed\n\60\3\60\5\60\u02f0\n\60\3\61\7\61\u02f3"+
+ "\n\61\f\61\16\61\u02f6\13\61\3\61\3\61\3\61\3\62\7\62\u02fc\n\62\f\62"+
+ "\16\62\u02ff\13\62\3\62\3\62\7\62\u0303\n\62\f\62\16\62\u0306\13\62\3"+
+ "\62\3\62\3\62\3\63\3\63\3\63\7\63\u030e\n\63\f\63\16\63\u0311\13\63\3"+
+ "\64\7\64\u0314\n\64\f\64\16\64\u0317\13\64\3\64\3\64\3\64\3\65\3\65\3"+
+ "\65\7\65\u031f\n\65\f\65\16\65\u0322\13\65\3\66\3\66\3\66\3\66\3\66\3"+
+ "\66\3\66\5\66\u032b\n\66\3\67\3\67\38\38\39\39\39\79\u0334\n9\f9\169\u0337"+
+ "\139\39\39\39\3:\3:\3:\5:\u033f\n:\3:\3:\3:\5:\u0344\n:\3:\5:\u0347\n"+
+ ":\3;\3;\3;\7;\u034c\n;\f;\16;\u034f\13;\3<\3<\3<\3<\3=\3=\3=\5=\u0358"+
+ "\n=\3>\3>\3>\3>\7>\u035e\n>\f>\16>\u0361\13>\5>\u0363\n>\3>\5>\u0366\n"+
+ ">\3>\3>\3?\3?\3?\3?\3?\3@\3@\7@\u0371\n@\f@\16@\u0374\13@\3@\3@\3A\7A"+
+ "\u0379\nA\fA\16A\u037c\13A\3A\3A\5A\u0380\nA\3B\3B\3B\3B\3B\3B\5B\u0388"+
+ "\nB\3B\3B\5B\u038c\nB\3B\3B\5B\u0390\nB\3B\3B\5B\u0394\nB\3B\3B\5B\u0398"+
+ "\nB\5B\u039a\nB\3C\3C\5C\u039e\nC\3D\3D\3D\3D\5D\u03a4\nD\3E\3E\3F\3F"+
+ "\3F\3G\5G\u03ac\nG\3G\3G\3G\3G\3H\3H\7H\u03b4\nH\fH\16H\u03b7\13H\3H\3"+
+ "H\3I\3I\7I\u03bd\nI\fI\16I\u03c0\13I\3I\3I\3I\3I\3I\3I\3I\5I\u03c9\nI"+
+ "\3I\3I\3I\3I\3I\3I\5I\u03d1\nI\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\5I"+
+ "\u03df\nI\3J\3J\3K\3K\3K\5K\u03e6\nK\3K\3K\3K\5K\u03eb\nK\3K\3K\3L\3L"+
+ "\5L\u03f1\nL\3L\3L\3M\3M\3M\7M\u03f8\nM\fM\16M\u03fb\13M\3N\3N\3N\3O\3"+
+ "O\3O\7O\u0403\nO\fO\16O\u0406\13O\3O\3O\3P\3P\7P\u040c\nP\fP\16P\u040f"+
+ "\13P\3P\3P\3Q\3Q\3Q\3Q\3Q\5Q\u0418\nQ\3R\7R\u041b\nR\fR\16R\u041e\13R"+
+ "\3R\3R\3R\3R\3R\3R\3R\3R\5R\u0428\nR\3S\3S\3T\3T\3U\7U\u042f\nU\fU\16"+
+ "U\u0432\13U\3U\3U\3U\5U\u0437\nU\3V\3V\3V\3V\3V\5V\u043e\nV\3V\3V\3V\3"+
+ "V\3V\3V\3V\5V\u0447\nV\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3"+
+ "V\3V\3V\3V\6V\u045c\nV\rV\16V\u045d\3V\5V\u0461\nV\3V\5V\u0464\nV\3V\3"+
+ "V\3V\3V\7V\u046a\nV\fV\16V\u046d\13V\3V\5V\u0470\nV\3V\3V\3V\3V\7V\u0476"+
+ "\nV\fV\16V\u0479\13V\3V\7V\u047c\nV\fV\16V\u047f\13V\3V\3V\3V\3V\3V\3"+
+ "V\3V\3V\5V\u0489\nV\3V\3V\3V\3V\3V\3V\3V\5V\u0492\nV\3V\3V\3V\5V\u0497"+
+ "\nV\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\5V\u04a4\nV\3V\3V\3V\3V\5V\u04aa"+
+ "\nV\3W\3W\3W\7W\u04af\nW\fW\16W\u04b2\13W\3W\3W\3W\3W\3W\3X\3X\3X\7X\u04bc"+
+ "\nX\fX\16X\u04bf\13X\3Y\3Y\3Y\3Z\3Z\3Z\5Z\u04c7\nZ\3Z\3Z\3[\3[\3[\7[\u04ce"+
+ "\n[\f[\16[\u04d1\13[\3\\\7\\\u04d4\n\\\f\\\16\\\u04d7\13\\\3\\\3\\\3\\"+
+ "\3\\\3\\\5\\\u04de\n\\\3\\\3\\\3\\\3\\\5\\\u04e4\n\\\3]\6]\u04e7\n]\r"+
+ "]\16]\u04e8\3]\6]\u04ec\n]\r]\16]\u04ed\3^\3^\3^\3^\3^\3^\5^\u04f6\n^"+
+ "\3^\3^\3^\5^\u04fb\n^\3_\3_\5_\u04ff\n_\3_\3_\5_\u0503\n_\3_\3_\5_\u0507"+
+ "\n_\5_\u0509\n_\3`\3`\5`\u050d\n`\3a\7a\u0510\na\fa\16a\u0513\13a\3a\3"+
+ "a\5a\u0517\na\3a\3a\3a\3a\3b\3b\3b\3b\3c\3c\3c\7c\u0524\nc\fc\16c\u0527"+
+ "\13c\3d\3d\3d\5d\u052c\nd\3d\3d\3e\3e\3e\3e\3e\7e\u0535\ne\fe\16e\u0538"+
+ "\13e\3e\3e\3e\7e\u053d\ne\fe\16e\u0540\13e\3e\3e\3e\3e\3e\3e\3e\3e\5e"+
+ "\u054a\ne\3e\3e\5e\u054e\ne\3e\3e\3e\5e\u0553\ne\3e\3e\3e\3e\3e\3e\5e"+
+ "\u055b\ne\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\5e\u056b\ne\3e\3e"+
+ "\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e"+
+ "\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\3e\5e\u0598\ne\3e"+
+ "\3e\3e\3e\5e\u059e\ne\3e\3e\3e\5e\u05a3\ne\3e\3e\3e\3e\3e\3e\3e\5e\u05ac"+
+ "\ne\7e\u05ae\ne\fe\16e\u05b1\13e\3f\7f\u05b4\nf\ff\16f\u05b7\13f\3f\3"+
+ "f\7f\u05bb\nf\ff\16f\u05be\13f\3f\3f\3g\3g\3g\3g\3h\3h\3h\5h\u05c9\nh"+
+ "\3h\3h\3h\3h\3h\7h\u05d0\nh\fh\16h\u05d3\13h\3h\3h\3h\3h\5h\u05d9\nh\3"+
+ "h\5h\u05dc\nh\3i\3i\5i\u05e0\ni\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3"+
+ "j\3j\3j\3j\5j\u05f2\nj\5j\u05f4\nj\3k\3k\3k\3k\7k\u05fa\nk\fk\16k\u05fd"+
+ "\13k\3k\3k\3l\3l\3l\3l\5l\u0605\nl\3l\3l\3l\3l\3l\5l\u060c\nl\3m\3m\3"+
+ "m\3m\3m\3m\7m\u0614\nm\fm\16m\u0617\13m\3m\3m\7m\u061b\nm\fm\16m\u061e"+
+ "\13m\3m\3m\3m\7m\u0623\nm\fm\16m\u0626\13m\5m\u0628\nm\3m\3m\3m\7m\u062d"+
+ "\nm\fm\16m\u0630\13m\3n\3n\7n\u0634\nn\fn\16n\u0637\13n\5n\u0639\nn\3"+
+ "o\3o\3o\5o\u063e\no\3o\7o\u0641\no\fo\16o\u0644\13o\3o\3o\5o\u0648\no"+
+ "\3p\5p\u064b\np\3p\3p\3p\3p\3p\3p\5p\u0653\np\3q\3q\5q\u0657\nq\3q\3q"+
+ "\3q\5q\u065c\nq\7q\u065e\nq\fq\16q\u0661\13q\3q\5q\u0664\nq\3r\3r\5r\u0668"+
+ "\nr\3r\3r\3s\3s\6s\u066e\ns\rs\16s\u066f\3s\3s\3s\3s\3s\6s\u0677\ns\r"+
+ "s\16s\u0678\3s\3s\7s\u067d\ns\fs\16s\u0680\13s\5s\u0682\ns\3t\3t\5t\u0686"+
+ "\nt\3u\3u\3u\3v\3v\3v\5v\u068e\nv\3w\3w\3w\5w\u0693\nw\3x\3x\3x\3x\3y"+
+ "\3y\3y\7y\u069c\ny\fy\16y\u069f\13y\3z\7z\u06a2\nz\fz\16z\u06a5\13z\3"+
+ "z\3z\5z\u06a9\nz\3z\7z\u06ac\nz\fz\16z\u06af\13z\3z\3z\7z\u06b3\nz\fz"+
+ "\16z\u06b6\13z\3{\3{\3|\3|\3|\3|\7|\u06be\n|\f|\16|\u06c1\13|\3|\3|\3"+
+ "}\3}\3}\5}\u06c8\n}\3}\3}\5}\u06cc\n}\5}\u06ce\n}\3~\3~\3~\3~\3~\5~\u06d5"+
+ "\n~\3\177\3\177\5\177\u06d9\n\177\3\177\3\177\3\177\2\4\u00c8\u00d8\u0080"+
+ "\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFH"+
+ "JLNPRTVXZ\\^`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\2\21\4\2\23\23**\3\2"+
+ "EH\3\2IJ\4\2((>>\4\2\65C\u0082\u0082\5\2\65>AC\u0082\u0082\4\2\\]fi\4"+
+ "\2jkoo\3\2hi\4\2Z[ab\4\2``cc\4\2YYpz\3\2fg\4\2__{{\n\2\5\5\7\7\n\n\20"+
+ "\20\26\26\35\35\37\37\'\'\u07a1\2\u0112\3\2\2\2\4\u0117\3\2\2\2\6\u011e"+
+ "\3\2\2\2\b\u012c\3\2\2\2\n\u013b\3\2\2\2\f\u0147\3\2\2\2\16\u014b\3\2"+
+ "\2\2\20\u014d\3\2\2\2\22\u0160\3\2\2\2\24\u016e\3\2\2\2\26\u017c\3\2\2"+
+ "\2\30\u0184\3\2\2\2\32\u0196\3\2\2\2\34\u01a1\3\2\2\2\36\u01ab\3\2\2\2"+
+ " \u01b2\3\2\2\2\"\u01c1\3\2\2\2$\u01ca\3\2\2\2&\u01df\3\2\2\2(\u01eb\3"+
+ "\2\2\2*\u01ed\3\2\2\2,\u01ff\3\2\2\2.\u0203\3\2\2\2\60\u0205\3\2\2\2\62"+
+ "\u0208\3\2\2\2\64\u020b\3\2\2\2\66\u0216\3\2\2\28\u021c\3\2\2\2:\u0228"+
+ "\3\2\2\2<\u0232\3\2\2\2>\u0234\3\2\2\2@\u023f\3\2\2\2B\u024d\3\2\2\2D"+
+ "\u0258\3\2\2\2F\u025d\3\2\2\2H\u0266\3\2\2\2J\u0279\3\2\2\2L\u0281\3\2"+
+ "\2\2N\u0286\3\2\2\2P\u0290\3\2\2\2R\u0292\3\2\2\2T\u02aa\3\2\2\2V\u02bd"+
+ "\3\2\2\2X\u02bf\3\2\2\2Z\u02c7\3\2\2\2\\\u02d7\3\2\2\2^\u02ef\3\2\2\2"+
+ "`\u02f4\3\2\2\2b\u02fd\3\2\2\2d\u030a\3\2\2\2f\u0315\3\2\2\2h\u031b\3"+
+ "\2\2\2j\u032a\3\2\2\2l\u032c\3\2\2\2n\u032e\3\2\2\2p\u0335\3\2\2\2r\u033e"+
+ "\3\2\2\2t\u0348\3\2\2\2v\u0350\3\2\2\2x\u0357\3\2\2\2z\u0359\3\2\2\2|"+
+ "\u0369\3\2\2\2~\u036e\3\2\2\2\u0080\u037f\3\2\2\2\u0082\u0399\3\2\2\2"+
+ "\u0084\u039d\3\2\2\2\u0086\u039f\3\2\2\2\u0088\u03a5\3\2\2\2\u008a\u03a7"+
+ "\3\2\2\2\u008c\u03ab\3\2\2\2\u008e\u03b1\3\2\2\2\u0090\u03de\3\2\2\2\u0092"+
+ "\u03e0\3\2\2\2\u0094\u03e2\3\2\2\2\u0096\u03ee\3\2\2\2\u0098\u03f4\3\2"+
+ "\2\2\u009a\u03fc\3\2\2\2\u009c\u03ff\3\2\2\2\u009e\u0409\3\2\2\2\u00a0"+
+ "\u0417\3\2\2\2\u00a2\u041c\3\2\2\2\u00a4\u0429\3\2\2\2\u00a6\u042b\3\2"+
+ "\2\2\u00a8\u0430\3\2\2\2\u00aa\u04a9\3\2\2\2\u00ac\u04ab\3\2\2\2\u00ae"+
+ "\u04b8\3\2\2\2\u00b0\u04c0\3\2\2\2\u00b2\u04c3\3\2\2\2\u00b4\u04ca\3\2"+
+ "\2\2\u00b6\u04e3\3\2\2\2\u00b8\u04e6\3\2\2\2\u00ba\u04fa\3\2\2\2\u00bc"+
+ "\u0508\3\2\2\2\u00be\u050c\3\2\2\2\u00c0\u0511\3\2\2\2\u00c2\u051c\3\2"+
+ "\2\2\u00c4\u0520\3\2\2\2\u00c6\u052b\3\2\2\2\u00c8\u055a\3\2\2\2\u00ca"+
+ "\u05b5\3\2\2\2\u00cc\u05c1\3\2\2\2\u00ce\u05db\3\2\2\2\u00d0\u05df\3\2"+
+ "\2\2\u00d2\u05f3\3\2\2\2\u00d4\u05f5\3\2\2\2\u00d6\u060b\3\2\2\2\u00d8"+
+ "\u0627\3\2\2\2\u00da\u0638\3\2\2\2\u00dc\u063d\3\2\2\2\u00de\u0652\3\2"+
+ "\2\2\u00e0\u0663\3\2\2\2\u00e2\u0665\3\2\2\2\u00e4\u0681\3\2\2\2\u00e6"+
+ "\u0683\3\2\2\2\u00e8\u0687\3\2\2\2\u00ea\u068d\3\2\2\2\u00ec\u0692\3\2"+
+ "\2\2\u00ee\u0694\3\2\2\2\u00f0\u0698\3\2\2\2\u00f2\u06a3\3\2\2\2\u00f4"+
+ "\u06b7\3\2\2\2\u00f6\u06b9\3\2\2\2\u00f8\u06cd\3\2\2\2\u00fa\u06d4\3\2"+
+ "\2\2\u00fc\u06d6\3\2\2\2\u00fe\u0100\5\4\3\2\u00ff\u00fe\3\2\2\2\u00ff"+
+ "\u0100\3\2\2\2\u0100\u0105\3\2\2\2\u0101\u0104\5\6\4\2\u0102\u0104\7V"+
+ "\2\2\u0103\u0101\3\2\2\2\u0103\u0102\3\2\2\2\u0104\u0107\3\2\2\2\u0105"+
+ "\u0103\3\2\2\2\u0105\u0106\3\2\2\2\u0106\u010c\3\2\2\2\u0107\u0105\3\2"+
+ "\2\2\u0108\u010b\5\b\5\2\u0109\u010b\7V\2\2\u010a\u0108\3\2\2\2\u010a"+
+ "\u0109\3\2\2\2\u010b\u010e\3\2\2\2\u010c\u010a\3\2\2\2\u010c\u010d\3\2"+
+ "\2\2\u010d\u0113\3\2\2\2\u010e\u010c\3\2\2\2\u010f\u0110\5\u008cG\2\u0110"+
+ "\u0111\7\2\2\3\u0111\u0113\3\2\2\2\u0112\u00ff\3\2\2\2\u0112\u010f\3\2"+
+ "\2\2\u0113\3\3\2\2\2\u0114\u0116\5r:\2\u0115\u0114\3\2\2\2\u0116\u0119"+
+ "\3\2\2\2\u0117\u0115\3\2\2\2\u0117\u0118\3\2\2\2\u0118\u011a\3\2\2\2\u0119"+
+ "\u0117\3\2\2\2\u011a\u011b\7\"\2\2\u011b\u011c\5h\65\2\u011c\u011d\7V"+
+ "\2\2\u011d\5\3\2\2\2\u011e\u0120\7\33\2\2\u011f\u0121\7(\2\2\u0120\u011f"+
+ "\3\2\2\2\u0120\u0121\3\2\2\2\u0121\u0122\3\2\2\2\u0122\u0125\5h\65\2\u0123"+
+ "\u0124\7X\2\2\u0124\u0126\7j\2\2\u0125\u0123\3\2\2\2\u0125\u0126\3\2\2"+
+ "\2\u0126\u0127\3\2\2\2\u0127\u0128\7V\2\2\u0128\7\3\2\2\2\u0129\u012b"+
+ "\5\f\7\2\u012a\u0129\3\2\2\2\u012b\u012e\3\2\2\2\u012c\u012a\3\2\2\2\u012c"+
+ "\u012d\3\2\2\2\u012d\u0134\3\2\2\2\u012e\u012c\3\2\2\2\u012f\u0135\5\20"+
+ "\t\2\u0130\u0135\5\30\r\2\u0131\u0135\5 \21\2\u0132\u0135\5|?\2\u0133"+
+ "\u0135\5\u0094K\2\u0134\u012f\3\2\2\2\u0134\u0130\3\2\2\2\u0134\u0131"+
+ "\3\2\2\2\u0134\u0132\3\2\2\2\u0134\u0133\3\2\2\2\u0135\t\3\2\2\2\u0136"+
+ "\u013c\5\f\7\2\u0137\u013c\7 \2\2\u0138\u013c\7,\2\2\u0139\u013c\7\60"+
+ "\2\2\u013a\u013c\7\63\2\2\u013b\u0136\3\2\2\2\u013b\u0137\3\2\2\2\u013b"+
+ "\u0138\3\2\2\2\u013b\u0139\3\2\2\2\u013b\u013a\3\2\2\2\u013c\13\3\2\2"+
+ "\2\u013d\u0148\5r:\2\u013e\u0148\7%\2\2\u013f\u0148\7$\2\2\u0140\u0148"+
+ "\7#\2\2\u0141\u0148\7(\2\2\u0142\u0148\7\3\2\2\u0143\u0148\7\24\2\2\u0144"+
+ "\u0148\7)\2\2\u0145\u0148\7B\2\2\u0146\u0148\7D\2\2\u0147\u013d\3\2\2"+
+ "\2\u0147\u013e\3\2\2\2\u0147\u013f\3\2\2\2\u0147\u0140\3\2\2\2\u0147\u0141"+
+ "\3\2\2\2\u0147\u0142\3\2\2\2\u0147\u0143\3\2\2\2\u0147\u0144\3\2\2\2\u0147"+
+ "\u0145\3\2\2\2\u0147\u0146\3\2\2\2\u0148\r\3\2\2\2\u0149\u014c\7\24\2"+
+ "\2\u014a\u014c\5r:\2\u014b\u0149\3\2\2\2\u014b\u014a\3\2\2\2\u014c\17"+
+ "\3\2\2\2\u014d\u014e\7\13\2\2\u014e\u0150\5\u00a4S\2\u014f\u0151\5\22"+
+ "\n\2\u0150\u014f\3\2\2\2\u0150\u0151\3\2\2\2\u0151\u0154\3\2\2\2\u0152"+
+ "\u0153\7\23\2\2\u0153\u0155\5\u00f2z\2\u0154\u0152\3\2\2\2\u0154\u0155"+
+ "\3\2\2\2\u0155\u0158\3\2\2\2\u0156\u0157\7\32\2\2\u0157\u0159\5\u00f0"+
+ "y\2\u0158\u0156\3\2\2\2\u0158\u0159\3\2\2\2\u0159\u015c\3\2\2\2\u015a"+
+ "\u015b\7C\2\2\u015b\u015d\5\u00f0y\2\u015c\u015a\3\2\2\2\u015c\u015d\3"+
+ "\2\2\2\u015d\u015e\3\2\2\2\u015e\u015f\5\"\22\2\u015f\21\3\2\2\2\u0160"+
+ "\u0161\7[\2\2\u0161\u0166\5\24\13\2\u0162\u0163\7W\2\2\u0163\u0165\5\24"+
+ "\13\2\u0164\u0162\3\2\2\2\u0165\u0168\3\2\2\2\u0166\u0164\3\2\2\2\u0166"+
+ "\u0167\3\2\2\2\u0167\u0169\3\2\2\2\u0168\u0166\3\2\2\2\u0169\u016a\7Z"+
+ "\2\2\u016a\23\3\2\2\2\u016b\u016d\5r:\2\u016c\u016b\3\2\2\2\u016d\u0170"+
+ "\3\2\2\2\u016e\u016c\3\2\2\2\u016e\u016f\3\2\2\2\u016f\u0171\3\2\2\2\u0170"+
+ "\u016e\3\2\2\2\u0171\u017a\5\u00a4S\2\u0172\u0176\7\23\2\2\u0173\u0175"+
+ "\5r:\2\u0174\u0173\3\2\2\2\u0175\u0178\3\2\2\2\u0176\u0174\3\2\2\2\u0176"+
+ "\u0177\3\2\2\2\u0177\u0179\3\2\2\2\u0178\u0176\3\2\2\2\u0179\u017b\5\26"+
+ "\f\2\u017a\u0172\3\2\2\2\u017a\u017b\3\2\2\2\u017b\25\3\2\2\2\u017c\u0181"+
+ "\5\u00f2z\2\u017d\u017e\7l\2\2\u017e\u0180\5\u00f2z\2\u017f\u017d\3\2"+
+ "\2\2\u0180\u0183\3\2\2\2\u0181\u017f\3\2\2\2\u0181\u0182\3\2\2\2\u0182"+
+ "\27\3\2\2\2\u0183\u0181\3\2\2\2\u0184\u0185\7\22\2\2\u0185\u0188\5\u00a4"+
+ "S\2\u0186\u0187\7\32\2\2\u0187\u0189\5\u00f0y\2\u0188\u0186\3\2\2\2\u0188"+
+ "\u0189\3\2\2\2\u0189\u018a\3\2\2\2\u018a\u018c\7R\2\2\u018b\u018d\5\32"+
+ "\16\2\u018c\u018b\3\2\2\2\u018c\u018d\3\2\2\2\u018d\u018f\3\2\2\2\u018e"+
+ "\u0190\7W\2\2\u018f\u018e\3\2\2\2\u018f\u0190\3\2\2\2\u0190\u0192\3\2"+
+ "\2\2\u0191\u0193\5\36\20\2\u0192\u0191\3\2\2\2\u0192\u0193\3\2\2\2\u0193"+
+ "\u0194\3\2\2\2\u0194\u0195\7S\2\2\u0195\31\3\2\2\2\u0196\u019b\5\34\17"+
+ "\2\u0197\u0198\7W\2\2\u0198\u019a\5\34\17\2\u0199\u0197\3\2\2\2\u019a"+
+ "\u019d\3\2\2\2\u019b\u0199\3\2\2\2\u019b\u019c\3\2\2\2\u019c\33\3\2\2"+
+ "\2\u019d\u019b\3\2\2\2\u019e\u01a0\5r:\2\u019f\u019e\3\2\2\2\u01a0\u01a3"+
+ "\3\2\2\2\u01a1\u019f\3\2\2\2\u01a1\u01a2\3\2\2\2\u01a2\u01a4\3\2\2\2\u01a3"+
+ "\u01a1\3\2\2\2\u01a4\u01a6\5\u00a4S\2\u01a5\u01a7\5\u00fc\177\2\u01a6"+
+ "\u01a5\3\2\2\2\u01a6\u01a7\3\2\2\2\u01a7\u01a9\3\2\2\2\u01a8\u01aa\5\""+
+ "\22\2\u01a9\u01a8\3\2\2\2\u01a9\u01aa\3\2\2\2\u01aa\35\3\2\2\2\u01ab\u01af"+
+ "\7V\2\2\u01ac\u01ae\5&\24\2\u01ad\u01ac\3\2\2\2\u01ae\u01b1\3\2\2\2\u01af"+
+ "\u01ad\3\2\2\2\u01af\u01b0\3\2\2\2\u01b0\37\3\2\2\2\u01b1\u01af\3\2\2"+
+ "\2\u01b2\u01b3\7\36\2\2\u01b3\u01b5\5\u00a4S\2\u01b4\u01b6\5\22\n\2\u01b5"+
+ "\u01b4\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\u01b9\3\2\2\2\u01b7\u01b8\7\23"+
+ "\2\2\u01b8\u01ba\5\u00f0y\2\u01b9\u01b7\3\2\2\2\u01b9\u01ba\3\2\2\2\u01ba"+
+ "\u01bd\3\2\2\2\u01bb\u01bc\7C\2\2\u01bc\u01be\5\u00f0y\2\u01bd\u01bb\3"+
+ "\2\2\2\u01bd\u01be\3\2\2\2\u01be\u01bf\3\2\2\2\u01bf\u01c0\5$\23\2\u01c0"+
+ "!\3\2\2\2\u01c1\u01c5\7R\2\2\u01c2\u01c4\5&\24\2\u01c3\u01c2\3\2\2\2\u01c4"+
+ "\u01c7\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c5\u01c6\3\2\2\2\u01c6\u01c8\3\2"+
+ "\2\2\u01c7\u01c5\3\2\2\2\u01c8\u01c9\7S\2\2\u01c9#\3\2\2\2\u01ca\u01ce"+
+ "\7R\2\2\u01cb\u01cd\5:\36\2\u01cc\u01cb\3\2\2\2\u01cd\u01d0\3\2\2\2\u01ce"+
+ "\u01cc\3\2\2\2\u01ce\u01cf\3\2\2\2\u01cf\u01d1\3\2\2\2\u01d0\u01ce\3\2"+
+ "\2\2\u01d1\u01d2\7S\2\2\u01d2%\3\2\2\2\u01d3\u01e0\7V\2\2\u01d4\u01d6"+
+ "\7(\2\2\u01d5\u01d4\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6\u01d7\3\2\2\2\u01d7"+
+ "\u01e0\5\u009eP\2\u01d8\u01da\5\n\6\2\u01d9\u01d8\3\2\2\2\u01da\u01dd"+
+ "\3\2\2\2\u01db\u01d9\3\2\2\2\u01db\u01dc\3\2\2\2\u01dc\u01de\3\2\2\2\u01dd"+
+ "\u01db\3\2\2\2\u01de\u01e0\5(\25\2\u01df\u01d3\3\2\2\2\u01df\u01d5\3\2"+
+ "\2\2\u01df\u01db\3\2\2\2\u01e0\'\3\2\2\2\u01e1\u01ec\5\u0094K\2\u01e2"+
+ "\u01ec\5*\26\2\u01e3\u01ec\5\60\31\2\u01e4\u01ec\58\35\2\u01e5\u01ec\5"+
+ "\64\33\2\u01e6\u01ec\5\62\32\2\u01e7\u01ec\5 \21\2\u01e8\u01ec\5|?\2\u01e9"+
+ "\u01ec\5\20\t\2\u01ea\u01ec\5\30\r\2\u01eb\u01e1\3\2\2\2\u01eb\u01e2\3"+
+ "\2\2\2\u01eb\u01e3\3\2\2\2\u01eb\u01e4\3\2\2\2\u01eb\u01e5\3\2\2\2\u01eb"+
+ "\u01e6\3\2\2\2\u01eb\u01e7\3\2\2\2\u01eb\u01e8\3\2\2\2\u01eb\u01e9\3\2"+
+ "\2\2\u01eb\u01ea\3\2\2\2\u01ec)\3\2\2\2\u01ed\u01ee\5.\30\2\u01ee\u01ef"+
+ "\5\u00a4S\2\u01ef\u01f4\5Z.\2\u01f0\u01f1\7T\2\2\u01f1\u01f3\7U\2\2\u01f2"+
+ "\u01f0\3\2\2\2\u01f3\u01f6\3\2\2\2\u01f4\u01f2\3\2\2\2\u01f4\u01f5\3\2"+
+ "\2\2\u01f5\u01f9\3\2\2\2\u01f6\u01f4\3\2\2\2\u01f7\u01f8\7/\2\2\u01f8"+
+ "\u01fa\5X-\2\u01f9\u01f7\3\2\2\2\u01f9\u01fa\3\2\2\2\u01fa\u01fb\3\2\2"+
+ "\2\u01fb\u01fc\5,\27\2\u01fc+\3\2\2\2\u01fd\u0200\5\u009eP\2\u01fe\u0200"+
+ "\7V\2\2\u01ff\u01fd\3\2\2\2\u01ff\u01fe\3\2\2\2\u0200-\3\2\2\2\u0201\u0204"+
+ "\5\u00f2z\2\u0202\u0204\7\62\2\2\u0203\u0201\3\2\2\2\u0203\u0202\3\2\2"+
+ "\2\u0204/\3\2\2\2\u0205\u0206\5\22\n\2\u0206\u0207\5*\26\2\u0207\61\3"+
+ "\2\2\2\u0208\u0209\5\22\n\2\u0209\u020a\5\64\33\2\u020a\63\3\2\2\2\u020b"+
+ "\u020c\5\u00a4S\2\u020c\u020f\5Z.\2\u020d\u020e\7/\2\2\u020e\u0210\5X"+
+ "-\2\u020f\u020d\3\2\2\2\u020f\u0210\3\2\2\2\u0210\u0211\3\2\2\2\u0211"+
+ "\u0212\5\u009eP\2\u0212\65\3\2\2\2\u0213\u0215\5\n\6\2\u0214\u0213\3\2"+
+ "\2\2\u0215\u0218\3\2\2\2\u0216\u0214\3\2\2\2\u0216\u0217\3\2\2\2\u0217"+
+ "\u0219\3\2\2\2\u0218\u0216\3\2\2\2\u0219\u021a\5\u00a4S\2\u021a\u021b"+
+ "\5\u009eP\2\u021b\67\3\2\2\2\u021c\u021d\5\u00f2z\2\u021d\u021e\5J&\2"+
+ "\u021e\u021f\7V\2\2\u021f9\3\2\2\2\u0220\u0222\5\n\6\2\u0221\u0220\3\2"+
+ "\2\2\u0222\u0225\3\2\2\2\u0223\u0221\3\2\2\2\u0223\u0224\3\2\2\2\u0224"+
+ "\u0226\3\2\2\2\u0225\u0223\3\2\2\2\u0226\u0229\5<\37\2\u0227\u0229\7V"+
+ "\2\2\u0228\u0223\3\2\2\2\u0228\u0227\3\2\2\2\u0229;\3\2\2\2\u022a\u0233"+
+ "\5\u0094K\2\u022b\u0233\5> \2\u022c\u0233\5B\"\2\u022d\u0233\5F$\2\u022e"+
+ "\u0233\5 \21\2\u022f\u0233\5|?\2\u0230\u0233\5\20\t\2\u0231\u0233\5\30"+
+ "\r\2\u0232\u022a\3\2\2\2\u0232\u022b\3\2\2\2\u0232\u022c\3\2\2\2\u0232"+
+ "\u022d\3\2\2\2\u0232\u022e\3\2\2\2\u0232\u022f\3\2\2\2\u0232\u0230\3\2"+
+ "\2\2\u0232\u0231\3\2\2\2\u0233=\3\2\2\2\u0234\u0235\5\u00f2z\2\u0235\u023a"+
+ "\5@!\2\u0236\u0237\7W\2\2\u0237\u0239\5@!\2\u0238\u0236\3\2\2\2\u0239"+
+ "\u023c\3\2\2\2\u023a\u0238\3\2\2\2\u023a\u023b\3\2\2\2\u023b\u023d\3\2"+
+ "\2\2\u023c\u023a\3\2\2\2\u023d\u023e\7V\2\2\u023e?\3\2\2\2\u023f\u0244"+
+ "\5\u00a4S\2\u0240\u0241\7T\2\2\u0241\u0243\7U\2\2\u0242\u0240\3\2\2\2"+
+ "\u0243\u0246\3\2\2\2\u0244\u0242\3\2\2\2\u0244\u0245\3\2\2\2\u0245\u0247"+
+ "\3\2\2\2\u0246\u0244\3\2\2\2\u0247\u0248\7Y\2\2\u0248\u0249\5P)\2\u0249"+
+ "A\3\2\2\2\u024a\u024c\5D#\2\u024b\u024a\3\2\2\2\u024c\u024f\3\2\2\2\u024d"+
+ "\u024b\3\2\2\2\u024d\u024e\3\2\2\2\u024e\u0250\3\2\2\2\u024f\u024d\3\2"+
+ "\2\2\u0250\u0251\5H%\2\u0251C\3\2\2\2\u0252\u0259\5r:\2\u0253\u0259\7"+
+ "%\2\2\u0254\u0259\7\3\2\2\u0255\u0259\7\16\2\2\u0256\u0259\7(\2\2\u0257"+
+ "\u0259\7)\2\2\u0258\u0252\3\2\2\2\u0258\u0253\3\2\2\2\u0258\u0254\3\2"+
+ "\2\2\u0258\u0255\3\2\2\2\u0258\u0256\3\2\2\2\u0258\u0257\3\2\2\2\u0259"+
+ "E\3\2\2\2\u025a\u025c\5D#\2\u025b\u025a\3\2\2\2\u025c\u025f\3\2\2\2\u025d"+
+ "\u025b\3\2\2\2\u025d\u025e\3\2\2\2\u025e\u0260\3\2\2\2\u025f\u025d\3\2"+
+ "\2\2\u0260\u0261\5\22\n\2\u0261\u0262\5H%\2\u0262G\3\2\2\2\u0263\u0265"+
+ "\5r:\2\u0264\u0263\3\2\2\2\u0265\u0268\3\2\2\2\u0266\u0264\3\2\2\2\u0266"+
+ "\u0267\3\2\2\2\u0267\u0269\3\2\2\2\u0268\u0266\3\2\2\2\u0269\u026a\5."+
+ "\30\2\u026a\u026b\5\u00a4S\2\u026b\u0270\5Z.\2\u026c\u026d\7T\2\2\u026d"+
+ "\u026f\7U\2\2\u026e\u026c\3\2\2\2\u026f\u0272\3\2\2\2\u0270\u026e\3\2"+
+ "\2\2\u0270\u0271\3\2\2\2\u0271\u0275\3\2\2\2\u0272\u0270\3\2\2\2\u0273"+
+ "\u0274\7/\2\2\u0274\u0276\5X-\2\u0275\u0273\3\2\2\2\u0275\u0276\3\2\2"+
+ "\2\u0276\u0277\3\2\2\2\u0277\u0278\5,\27\2\u0278I\3\2\2\2\u0279\u027e"+
+ "\5L\'\2\u027a\u027b\7W\2\2\u027b\u027d\5L\'\2\u027c\u027a\3\2\2\2\u027d"+
+ "\u0280\3\2\2\2\u027e\u027c\3\2\2\2\u027e\u027f\3\2\2\2\u027fK\3\2\2\2"+
+ "\u0280\u027e\3\2\2\2\u0281\u0284\5N(\2\u0282\u0283\7Y\2\2\u0283\u0285"+
+ "\5P)\2\u0284\u0282\3\2\2\2\u0284\u0285\3\2\2\2\u0285M\3\2\2\2\u0286\u028b"+
+ "\5\u00a4S\2\u0287\u0288\7T\2\2\u0288\u028a\7U\2\2\u0289\u0287\3\2\2\2"+
+ "\u028a\u028d\3\2\2\2\u028b\u0289\3\2\2\2\u028b\u028c\3\2\2\2\u028cO\3"+
+ "\2\2\2\u028d\u028b\3\2\2\2\u028e\u0291\5R*\2\u028f\u0291\5\u00c8e\2\u0290"+
+ "\u028e\3\2\2\2\u0290\u028f\3\2\2\2\u0291Q\3\2\2\2\u0292\u029e\7R\2\2\u0293"+
+ "\u0298\5P)\2\u0294\u0295\7W\2\2\u0295\u0297\5P)\2\u0296\u0294\3\2\2\2"+
+ "\u0297\u029a\3\2\2\2\u0298\u0296\3\2\2\2\u0298\u0299\3\2\2\2\u0299\u029c"+
+ "\3\2\2\2\u029a\u0298\3\2\2\2\u029b\u029d\7W\2\2\u029c\u029b\3\2\2\2\u029c"+
+ "\u029d\3\2\2\2\u029d\u029f\3\2\2\2\u029e\u0293\3\2\2\2\u029e\u029f\3\2"+
+ "\2\2\u029f\u02a0\3\2\2\2\u02a0\u02a1\7S\2\2\u02a1S\3\2\2\2\u02a2\u02a4"+
+ "\5\u00a4S\2\u02a3\u02a5\5\u00f6|\2\u02a4\u02a3\3\2\2\2\u02a4\u02a5\3\2"+
+ "\2\2\u02a5\u02a6\3\2\2\2\u02a6\u02a7\7X\2\2\u02a7\u02a9\3\2\2\2\u02a8"+
+ "\u02a2\3\2\2\2\u02a9\u02ac\3\2\2\2\u02aa\u02a8\3\2\2\2\u02aa\u02ab\3\2"+
+ "\2\2\u02ab\u02ad\3\2\2\2\u02ac\u02aa\3\2\2\2\u02ad\u02af\5\u00a6T\2\u02ae"+
+ "\u02b0\5\u00f6|\2\u02af\u02ae\3\2\2\2\u02af\u02b0\3\2\2\2\u02b0U\3\2\2"+
+ "\2\u02b1\u02be\5\u00f2z\2\u02b2\u02b4\5r:\2\u02b3\u02b2\3\2\2\2\u02b4"+
+ "\u02b7\3\2\2\2\u02b5\u02b3\3\2\2\2\u02b5\u02b6\3\2\2\2\u02b6\u02b8\3\2"+
+ "\2\2\u02b7\u02b5\3\2\2\2\u02b8\u02bb\7^\2\2\u02b9\u02ba\t\2\2\2\u02ba"+
+ "\u02bc\5\u00f2z\2\u02bb\u02b9\3\2\2\2\u02bb\u02bc\3\2\2\2\u02bc\u02be"+
+ "\3\2\2\2\u02bd\u02b1\3\2\2\2\u02bd\u02b5\3\2\2\2\u02beW\3\2\2\2\u02bf"+
+ "\u02c4\5h\65\2\u02c0\u02c1\7W\2\2\u02c1\u02c3\5h\65\2\u02c2\u02c0\3\2"+
+ "\2\2\u02c3\u02c6\3\2\2\2\u02c4\u02c2\3\2\2\2\u02c4\u02c5\3\2\2\2\u02c5"+
+ "Y\3\2\2\2\u02c6\u02c4\3\2\2\2\u02c7\u02d3\7P\2\2\u02c8\u02ca\5\\/\2\u02c9"+
+ "\u02c8\3\2\2\2\u02c9\u02ca\3\2\2\2\u02ca\u02d4\3\2\2\2\u02cb\u02ce\5\\"+
+ "/\2\u02cc\u02cd\7W\2\2\u02cd\u02cf\5^\60\2\u02ce\u02cc\3\2\2\2\u02ce\u02cf"+
+ "\3\2\2\2\u02cf\u02d4\3\2\2\2\u02d0\u02d2\5^\60\2\u02d1\u02d0\3\2\2\2\u02d1"+
+ "\u02d2\3\2\2\2\u02d2\u02d4\3\2\2\2\u02d3\u02c9\3\2\2\2\u02d3\u02cb\3\2"+
+ "\2\2\u02d3\u02d1\3\2\2\2\u02d4\u02d5\3\2\2\2\u02d5\u02d6\7Q\2\2\u02d6"+
+ "[\3\2\2\2\u02d7\u02dd\5\u00f2z\2\u02d8\u02d9\5\u00a4S\2\u02d9\u02da\7"+
+ "X\2\2\u02da\u02dc\3\2\2\2\u02db\u02d8\3\2\2\2\u02dc\u02df\3\2\2\2\u02dd"+
+ "\u02db\3\2\2\2\u02dd\u02de\3\2\2\2\u02de\u02e0\3\2\2\2\u02df\u02dd\3\2"+
+ "\2\2\u02e0\u02e1\7-\2\2\u02e1]\3\2\2\2\u02e2\u02e7\5`\61\2\u02e3\u02e4"+
+ "\7W\2\2\u02e4\u02e6\5`\61\2\u02e5\u02e3\3\2\2\2\u02e6\u02e9\3\2\2\2\u02e7"+
+ "\u02e5\3\2\2\2\u02e7\u02e8\3\2\2\2\u02e8\u02ec\3\2\2\2\u02e9\u02e7\3\2"+
+ "\2\2\u02ea\u02eb\7W\2\2\u02eb\u02ed\5b\62\2\u02ec\u02ea\3\2\2\2\u02ec"+
+ "\u02ed\3\2\2\2\u02ed\u02f0\3\2\2\2\u02ee\u02f0\5b\62\2\u02ef\u02e2\3\2"+
+ "\2\2\u02ef\u02ee\3\2\2\2\u02f0_\3\2\2\2\u02f1\u02f3\5\16\b\2\u02f2\u02f1"+
+ "\3\2\2\2\u02f3\u02f6\3\2\2\2\u02f4\u02f2\3\2\2\2\u02f4\u02f5\3\2\2\2\u02f5"+
+ "\u02f7\3\2\2\2\u02f6\u02f4\3\2\2\2\u02f7\u02f8\5\u00f2z\2\u02f8\u02f9"+
+ "\5N(\2\u02f9a\3\2\2\2\u02fa\u02fc\5\16\b\2\u02fb\u02fa\3\2\2\2\u02fc\u02ff"+
+ "\3\2\2\2\u02fd\u02fb\3\2\2\2\u02fd\u02fe\3\2\2\2\u02fe\u0300\3\2\2\2\u02ff"+
+ "\u02fd\3\2\2\2\u0300\u0304\5\u00f2z\2\u0301\u0303\5r:\2\u0302\u0301\3"+
+ "\2\2\2\u0303\u0306\3\2\2\2\u0304\u0302\3\2\2\2\u0304\u0305\3\2\2\2\u0305"+
+ "\u0307\3\2\2\2\u0306\u0304\3\2\2\2\u0307\u0308\7~\2\2\u0308\u0309\5N("+
+ "\2\u0309c\3\2\2\2\u030a\u030f\5f\64\2\u030b\u030c\7W\2\2\u030c\u030e\5"+
+ "f\64\2\u030d\u030b\3\2\2\2\u030e\u0311\3\2\2\2\u030f\u030d\3\2\2\2\u030f"+
+ "\u0310\3\2\2\2\u0310e\3\2\2\2\u0311\u030f\3\2\2\2\u0312\u0314\5\16\b\2"+
+ "\u0313\u0312\3\2\2\2\u0314\u0317\3\2\2\2\u0315\u0313\3\2\2\2\u0315\u0316"+
+ "\3\2\2\2\u0316\u0318\3\2\2\2\u0317\u0315\3\2\2\2\u0318\u0319\7?\2\2\u0319"+
+ "\u031a\5\u00a4S\2\u031ag\3\2\2\2\u031b\u0320\5\u00a4S\2\u031c\u031d\7"+
+ "X\2\2\u031d\u031f\5\u00a4S\2\u031e\u031c\3\2\2\2\u031f\u0322\3\2\2\2\u0320"+
+ "\u031e\3\2\2\2\u0320\u0321\3\2\2\2\u0321i\3\2\2\2\u0322\u0320\3\2\2\2"+
+ "\u0323\u032b\5l\67\2\u0324\u032b\5n8\2\u0325\u032b\7L\2\2\u0326\u032b"+
+ "\7M\2\2\u0327\u032b\7K\2\2\u0328\u032b\7O\2\2\u0329\u032b\7N\2\2\u032a"+
+ "\u0323\3\2\2\2\u032a\u0324\3\2\2\2\u032a\u0325\3\2\2\2\u032a\u0326\3\2"+
+ "\2\2\u032a\u0327\3\2\2\2\u032a\u0328\3\2\2\2\u032a\u0329\3\2\2\2\u032b"+
+ "k\3\2\2\2\u032c\u032d\t\3\2\2\u032dm\3\2\2\2\u032e\u032f\t\4\2\2\u032f"+
+ "o\3\2\2\2\u0330\u0331\5\u00a4S\2\u0331\u0332\7X\2\2\u0332\u0334\3\2\2"+
+ "\2\u0333\u0330\3\2\2\2\u0334\u0337\3\2\2\2\u0335\u0333\3\2\2\2\u0335\u0336"+
+ "\3\2\2\2\u0336\u0338\3\2\2\2\u0337\u0335\3\2\2\2\u0338\u0339\7}\2\2\u0339"+
+ "\u033a\5\u00a4S\2\u033aq\3\2\2\2\u033b\u033c\7}\2\2\u033c\u033f\5h\65"+
+ "\2\u033d\u033f\5p9\2\u033e\u033b\3\2\2\2\u033e\u033d\3\2\2\2\u033f\u0346"+
+ "\3\2\2\2\u0340\u0343\7P\2\2\u0341\u0344\5t;\2\u0342\u0344\5x=\2\u0343"+
+ "\u0341\3\2\2\2\u0343\u0342\3\2\2\2\u0343\u0344\3\2\2\2\u0344\u0345\3\2"+
+ "\2\2\u0345\u0347\7Q\2\2\u0346\u0340\3\2\2\2\u0346\u0347\3\2\2\2\u0347"+
+ "s\3\2\2\2\u0348\u034d\5v<\2\u0349\u034a\7W\2\2\u034a\u034c\5v<\2\u034b"+
+ "\u0349\3\2\2\2\u034c\u034f\3\2\2\2\u034d\u034b\3\2\2\2\u034d\u034e\3\2"+
+ "\2\2\u034eu\3\2\2\2\u034f\u034d\3\2\2\2\u0350\u0351\5\u00a4S\2\u0351\u0352"+
+ "\7Y\2\2\u0352\u0353\5x=\2\u0353w\3\2\2\2\u0354\u0358\5\u00c8e\2\u0355"+
+ "\u0358\5r:\2\u0356\u0358\5z>\2\u0357\u0354\3\2\2\2\u0357\u0355\3\2\2\2"+
+ "\u0357\u0356\3\2\2\2\u0358y\3\2\2\2\u0359\u0362\7R\2\2\u035a\u035f\5x"+
+ "=\2\u035b\u035c\7W\2\2\u035c\u035e\5x=\2\u035d\u035b\3\2\2\2\u035e\u0361"+
+ "\3\2\2\2\u035f\u035d\3\2\2\2\u035f\u0360\3\2\2\2\u0360\u0363\3\2\2\2\u0361"+
+ "\u035f\3\2\2\2\u0362\u035a\3\2\2\2\u0362\u0363\3\2\2\2\u0363\u0365\3\2"+
+ "\2\2\u0364\u0366\7W\2\2\u0365\u0364\3\2\2\2\u0365\u0366\3\2\2\2\u0366"+
+ "\u0367\3\2\2\2\u0367\u0368\7S\2\2\u0368{\3\2\2\2\u0369\u036a\7}\2\2\u036a"+
+ "\u036b\7\36\2\2\u036b\u036c\5\u00a4S\2\u036c\u036d\5~@\2\u036d}\3\2\2"+
+ "\2\u036e\u0372\7R\2\2\u036f\u0371\5\u0080A\2\u0370\u036f\3\2\2\2\u0371"+
+ "\u0374\3\2\2\2\u0372\u0370\3\2\2\2\u0372\u0373\3\2\2\2\u0373\u0375\3\2"+
+ "\2\2\u0374\u0372\3\2\2\2\u0375\u0376\7S\2\2\u0376\177\3\2\2\2\u0377\u0379"+
+ "\5\n\6\2\u0378\u0377\3\2\2\2\u0379\u037c\3\2\2\2\u037a\u0378\3\2\2\2\u037a"+
+ "\u037b\3\2\2\2\u037b\u037d\3\2\2\2\u037c\u037a\3\2\2\2\u037d\u0380\5\u0082"+
+ "B\2\u037e\u0380\7V\2\2\u037f\u037a\3\2\2\2\u037f\u037e\3\2\2\2\u0380\u0081"+
+ "\3\2\2\2\u0381\u0382\5\u00f2z\2\u0382\u0383\5\u0084C\2\u0383\u0384\7V"+
+ "\2\2\u0384\u039a\3\2\2\2\u0385\u0387\5\20\t\2\u0386\u0388\7V\2\2\u0387"+
+ "\u0386\3\2\2\2\u0387\u0388\3\2\2\2\u0388\u039a\3\2\2\2\u0389\u038b\5 "+
+ "\21\2\u038a\u038c\7V\2\2\u038b\u038a\3\2\2\2\u038b\u038c\3\2\2\2\u038c"+
+ "\u039a\3\2\2\2\u038d\u038f\5\30\r\2\u038e\u0390\7V\2\2\u038f\u038e\3\2"+
+ "\2\2\u038f\u0390\3\2\2\2\u0390\u039a\3\2\2\2\u0391\u0393\5|?\2\u0392\u0394"+
+ "\7V\2\2\u0393\u0392\3\2\2\2\u0393\u0394\3\2\2\2\u0394\u039a\3\2\2\2\u0395"+
+ "\u0397\5\u0094K\2\u0396\u0398\7V\2\2\u0397\u0396\3\2\2\2\u0397\u0398\3"+
+ "\2\2\2\u0398\u039a\3\2\2\2\u0399\u0381\3\2\2\2\u0399\u0385\3\2\2\2\u0399"+
+ "\u0389\3\2\2\2\u0399\u038d\3\2\2\2\u0399\u0391\3\2\2\2\u0399\u0395\3\2"+
+ "\2\2\u039a\u0083\3\2\2\2\u039b\u039e\5\u0086D\2\u039c\u039e\5\u0088E\2"+
+ "\u039d\u039b\3\2\2\2\u039d\u039c\3\2\2\2\u039e\u0085\3\2\2\2\u039f\u03a0"+
+ "\5\u00a4S\2\u03a0\u03a1\7P\2\2\u03a1\u03a3\7Q\2\2\u03a2\u03a4\5\u008a"+
+ "F\2\u03a3\u03a2\3\2\2\2\u03a3\u03a4\3\2\2\2\u03a4\u0087\3\2\2\2\u03a5"+
+ "\u03a6\5J&\2\u03a6\u0089\3\2\2\2\u03a7\u03a8\7\16\2\2\u03a8\u03a9\5x="+
+ "\2\u03a9\u008b\3\2\2\2\u03aa\u03ac\7\66\2\2\u03ab\u03aa\3\2\2\2\u03ab"+
+ "\u03ac\3\2\2\2\u03ac\u03ad\3\2\2\2\u03ad\u03ae\7\65\2\2\u03ae\u03af\5"+
+ "h\65\2\u03af\u03b0\5\u008eH\2\u03b0\u008d\3\2\2\2\u03b1\u03b5\7R\2\2\u03b2"+
+ "\u03b4\5\u0090I\2\u03b3\u03b2\3\2\2\2\u03b4\u03b7\3\2\2\2\u03b5\u03b3"+
+ "\3\2\2\2\u03b5\u03b6\3\2\2\2\u03b6\u03b8\3\2\2\2\u03b7\u03b5\3\2\2\2\u03b8"+
+ "\u03b9\7S\2\2\u03b9\u008f\3\2\2\2\u03ba\u03be\7\67\2\2\u03bb\u03bd\5\u0092"+
+ "J\2\u03bc\u03bb\3\2\2\2\u03bd\u03c0\3\2\2\2\u03be\u03bc\3\2\2\2\u03be"+
+ "\u03bf\3\2\2\2\u03bf\u03c1\3\2\2\2\u03c0\u03be\3\2\2\2\u03c1\u03c2\5h"+
+ "\65\2\u03c2\u03c3\7V\2\2\u03c3\u03df\3\2\2\2\u03c4\u03c5\78\2\2\u03c5"+
+ "\u03c8\5h\65\2\u03c6\u03c7\7:\2\2\u03c7\u03c9\5h\65\2\u03c8\u03c6\3\2"+
+ "\2\2\u03c8\u03c9\3\2\2\2\u03c9\u03ca\3\2\2\2\u03ca\u03cb\7V\2\2\u03cb"+
+ "\u03df\3\2\2\2\u03cc\u03cd\79\2\2\u03cd\u03d0\5h\65\2\u03ce\u03cf\7:\2"+
+ "\2\u03cf\u03d1\5h\65\2\u03d0\u03ce\3\2\2\2\u03d0\u03d1\3\2\2\2\u03d1\u03d2"+
+ "\3\2\2\2\u03d2\u03d3\7V\2\2\u03d3\u03df\3\2\2\2\u03d4\u03d5\7;\2\2\u03d5"+
+ "\u03d6\5h\65\2\u03d6\u03d7\7V\2\2\u03d7\u03df\3\2\2\2\u03d8\u03d9\7<\2"+
+ "\2\u03d9\u03da\5h\65\2\u03da\u03db\7=\2\2\u03db\u03dc\5h\65\2\u03dc\u03dd"+
+ "\7V\2\2\u03dd\u03df\3\2\2\2\u03de\u03ba\3\2\2\2\u03de\u03c4\3\2\2\2\u03de"+
+ "\u03cc\3\2\2\2\u03de\u03d4\3\2\2\2\u03de\u03d8\3\2\2\2\u03df\u0091\3\2"+
+ "\2\2\u03e0\u03e1\t\5\2\2\u03e1\u0093\3\2\2\2\u03e2\u03e3\7A\2\2\u03e3"+
+ "\u03e5\5\u00a4S\2\u03e4\u03e6\5\22\n\2\u03e5\u03e4\3\2\2\2\u03e5\u03e6"+
+ "\3\2\2\2\u03e6\u03e7\3\2\2\2\u03e7\u03ea\5\u0096L\2\u03e8\u03e9\7\32\2"+
+ "\2\u03e9\u03eb\5\u00f0y\2\u03ea\u03e8\3\2\2\2\u03ea\u03eb\3\2\2\2\u03eb"+
+ "\u03ec\3\2\2\2\u03ec\u03ed\5\u009cO\2\u03ed\u0095\3\2\2\2\u03ee\u03f0"+
+ "\7P\2\2\u03ef\u03f1\5\u0098M\2\u03f0\u03ef\3\2\2\2\u03f0\u03f1\3\2\2\2"+
+ "\u03f1\u03f2\3\2\2\2\u03f2\u03f3\7Q\2\2\u03f3\u0097\3\2\2\2\u03f4\u03f9"+
+ "\5\u009aN\2\u03f5\u03f6\7W\2\2\u03f6\u03f8\5\u009aN\2\u03f7\u03f5\3\2"+
+ "\2\2\u03f8\u03fb\3\2\2\2\u03f9\u03f7\3\2\2\2\u03f9\u03fa\3\2\2\2\u03fa"+
+ "\u0099\3\2\2\2\u03fb\u03f9\3\2\2\2\u03fc\u03fd\5\u00f2z\2\u03fd\u03fe"+
+ "\5\u00a4S\2\u03fe\u009b\3\2\2\2\u03ff\u0404\7R\2\2\u0400\u0403\5&\24\2"+
+ "\u0401\u0403\5\66\34\2\u0402\u0400\3\2\2\2\u0402\u0401\3\2\2\2\u0403\u0406"+
+ "\3\2\2\2\u0404\u0402\3\2\2\2\u0404\u0405\3\2\2\2\u0405\u0407\3\2\2\2\u0406"+
+ "\u0404\3\2\2\2\u0407\u0408\7S\2\2\u0408\u009d\3\2\2\2\u0409\u040d\7R\2"+
+ "\2\u040a\u040c\5\u00a0Q\2\u040b\u040a\3\2\2\2\u040c\u040f\3\2\2\2\u040d"+
+ "\u040b\3\2\2\2\u040d\u040e\3\2\2\2\u040e\u0410\3\2\2\2\u040f\u040d\3\2"+
+ "\2\2\u0410\u0411\7S\2\2\u0411\u009f\3\2\2\2\u0412\u0413\5\u00a2R\2\u0413"+
+ "\u0414\7V\2\2\u0414\u0418\3\2\2\2\u0415\u0418\5\u00a8U\2\u0416\u0418\5"+
+ "\u00aaV\2\u0417\u0412\3\2\2\2\u0417\u0415\3\2\2\2\u0417\u0416\3\2\2\2"+
+ "\u0418\u00a1\3\2\2\2\u0419\u041b\5\16\b\2\u041a\u0419\3\2\2\2\u041b\u041e"+
+ "\3\2\2\2\u041c\u041a\3\2\2\2\u041c\u041d\3\2\2\2\u041d\u0427\3\2\2\2\u041e"+
+ "\u041c\3\2\2\2\u041f\u0420\7?\2\2\u0420\u0421\5\u00a4S\2\u0421\u0422\7"+
+ "Y\2\2\u0422\u0423\5\u00c8e\2\u0423\u0428\3\2\2\2\u0424\u0425\5\u00f2z"+
+ "\2\u0425\u0426\5J&\2\u0426\u0428\3\2\2\2\u0427\u041f\3\2\2\2\u0427\u0424"+
+ "\3\2\2\2\u0428\u00a3\3\2\2\2\u0429\u042a\t\6\2\2\u042a\u00a5\3\2\2\2\u042b"+
+ "\u042c\t\7\2\2\u042c\u00a7\3\2\2\2\u042d\u042f\5\f\7\2\u042e\u042d\3\2"+
+ "\2\2\u042f\u0432\3\2\2\2\u0430\u042e\3\2\2\2\u0430\u0431\3\2\2\2\u0431"+
+ "\u0436\3\2\2\2\u0432\u0430\3\2\2\2\u0433\u0437\5\20\t\2\u0434\u0437\5"+
+ " \21\2\u0435\u0437\5\u0094K\2\u0436\u0433\3\2\2\2\u0436\u0434\3\2\2\2"+
+ "\u0436\u0435\3\2\2\2\u0437\u00a9\3\2\2\2\u0438\u04aa\5\u009eP\2\u0439"+
+ "\u043a\7\4\2\2\u043a\u043d\5\u00c8e\2\u043b\u043c\7_\2\2\u043c\u043e\5"+
+ "\u00c8e\2\u043d\u043b\3\2\2\2\u043d\u043e\3\2\2\2\u043e\u043f\3\2\2\2"+
+ "\u043f\u0440\7V\2\2\u0440\u04aa\3\2\2\2\u0441\u0442\7\30\2\2\u0442\u0443"+
+ "\5\u00c2b\2\u0443\u0446\5\u00aaV\2\u0444\u0445\7\21\2\2\u0445\u0447\5"+
+ "\u00aaV\2\u0446\u0444\3\2\2\2\u0446\u0447\3\2\2\2\u0447\u04aa\3\2\2\2"+
+ "\u0448\u0449\7\27\2\2\u0449\u044a\7P\2\2\u044a\u044b\5\u00bc_\2\u044b"+
+ "\u044c\7Q\2\2\u044c\u044d\5\u00aaV\2\u044d\u04aa\3\2\2\2\u044e\u044f\7"+
+ "\64\2\2\u044f\u0450\5\u00c2b\2\u0450\u0451\5\u00aaV\2\u0451\u04aa\3\2"+
+ "\2\2\u0452\u0453\7\17\2\2\u0453\u0454\5\u00aaV\2\u0454\u0455\7\64\2\2"+
+ "\u0455\u0456\5\u00c2b\2\u0456\u0457\7V\2\2\u0457\u04aa\3\2\2\2\u0458\u0459"+
+ "\7\61\2\2\u0459\u0463\5\u009eP\2\u045a\u045c\5\u00acW\2\u045b\u045a\3"+
+ "\2\2\2\u045c\u045d\3\2\2\2\u045d\u045b\3\2\2\2\u045d\u045e\3\2\2\2\u045e"+
+ "\u0460\3\2\2\2\u045f\u0461\5\u00b0Y\2\u0460\u045f\3\2\2\2\u0460\u0461"+
+ "\3\2\2\2\u0461\u0464\3\2\2\2\u0462\u0464\5\u00b0Y\2\u0463\u045b\3\2\2"+
+ "\2\u0463\u0462\3\2\2\2\u0464\u04aa\3\2\2\2\u0465\u0466\7\61\2\2\u0466"+
+ "\u0467\5\u00b2Z\2\u0467\u046b\5\u009eP\2\u0468\u046a\5\u00acW\2\u0469"+
+ "\u0468\3\2\2\2\u046a\u046d\3\2\2\2\u046b\u0469\3\2\2\2\u046b\u046c\3\2"+
+ "\2\2\u046c\u046f\3\2\2\2\u046d\u046b\3\2\2\2\u046e\u0470\5\u00b0Y\2\u046f"+
+ "\u046e\3\2\2\2\u046f\u0470\3\2\2\2\u0470\u04aa\3\2\2\2\u0471\u0472\7+"+
+ "\2\2\u0472\u0473\5\u00c2b\2\u0473\u0477\7R\2\2\u0474\u0476\5\u00b8]\2"+
+ "\u0475\u0474\3\2\2\2\u0476\u0479\3\2\2\2\u0477\u0475\3\2\2\2\u0477\u0478"+
+ "\3\2\2\2\u0478\u047d\3\2\2\2\u0479\u0477\3\2\2\2\u047a\u047c\5\u00ba^"+
+ "\2\u047b\u047a\3\2\2\2\u047c\u047f\3\2\2\2\u047d\u047b\3\2\2\2\u047d\u047e"+
+ "\3\2\2\2\u047e\u0480\3\2\2\2\u047f\u047d\3\2\2\2\u0480\u0481\7S\2\2\u0481"+
+ "\u04aa\3\2\2\2\u0482\u0483\7,\2\2\u0483\u0484\5\u00c2b\2\u0484\u0485\5"+
+ "\u009eP\2\u0485\u04aa\3\2\2\2\u0486\u0488\7&\2\2\u0487\u0489\5\u00c8e"+
+ "\2\u0488\u0487\3\2\2\2\u0488\u0489\3\2\2\2\u0489\u048a\3\2\2\2\u048a\u04aa"+
+ "\7V\2\2\u048b\u048c\7.\2\2\u048c\u048d\5\u00c8e\2\u048d\u048e\7V\2\2\u048e"+
+ "\u04aa\3\2\2\2\u048f\u0491\7\6\2\2\u0490\u0492\5\u00a4S\2\u0491\u0490"+
+ "\3\2\2\2\u0491\u0492\3\2\2\2\u0492\u0493\3\2\2\2\u0493\u04aa\7V\2\2\u0494"+
+ "\u0496\7\r\2\2\u0495\u0497\5\u00a4S\2\u0496\u0495\3\2\2\2\u0496\u0497"+
+ "\3\2\2\2\u0497\u0498\3\2\2\2\u0498\u04aa\7V\2\2\u0499\u049a\7@\2\2\u049a"+
+ "\u049b\5\u00c8e\2\u049b\u049c\7V\2\2\u049c\u04aa\3\2\2\2\u049d\u04aa\7"+
+ "V\2\2\u049e\u049f\5\u00c8e\2\u049f\u04a0\7V\2\2\u04a0\u04aa\3\2\2\2\u04a1"+
+ "\u04a3\5\u00d4k\2\u04a2\u04a4\7V\2\2\u04a3\u04a2\3\2\2\2\u04a3\u04a4\3"+
+ "\2\2\2\u04a4\u04aa\3\2\2\2\u04a5\u04a6\5\u00a4S\2\u04a6\u04a7\7_\2\2\u04a7"+
+ "\u04a8\5\u00aaV\2\u04a8\u04aa\3\2\2\2\u04a9\u0438\3\2\2\2\u04a9\u0439"+
+ "\3\2\2\2\u04a9\u0441\3\2\2\2\u04a9\u0448\3\2\2\2\u04a9\u044e\3\2\2\2\u04a9"+
+ "\u0452\3\2\2\2\u04a9\u0458\3\2\2\2\u04a9\u0465\3\2\2\2\u04a9\u0471\3\2"+
+ "\2\2\u04a9\u0482\3\2\2\2\u04a9\u0486\3\2\2\2\u04a9\u048b\3\2\2\2\u04a9"+
+ "\u048f\3\2\2\2\u04a9\u0494\3\2\2\2\u04a9\u0499\3\2\2\2\u04a9\u049d\3\2"+
+ "\2\2\u04a9\u049e\3\2\2\2\u04a9\u04a1\3\2\2\2\u04a9\u04a5\3\2\2\2\u04aa"+
+ "\u00ab\3\2\2\2\u04ab\u04ac\7\t\2\2\u04ac\u04b0\7P\2\2\u04ad\u04af\5\16"+
+ "\b\2\u04ae\u04ad\3\2\2\2\u04af\u04b2\3\2\2\2\u04b0\u04ae\3\2\2\2\u04b0"+
+ "\u04b1\3\2\2\2\u04b1\u04b3\3\2\2\2\u04b2\u04b0\3\2\2\2\u04b3\u04b4\5\u00ae"+
+ "X\2\u04b4\u04b5\5\u00a4S\2\u04b5\u04b6\7Q\2\2\u04b6\u04b7\5\u009eP\2\u04b7"+
+ "\u00ad\3\2\2\2\u04b8\u04bd\5h\65\2\u04b9\u04ba\7m\2\2\u04ba\u04bc\5h\65"+
+ "\2\u04bb\u04b9\3\2\2\2\u04bc\u04bf\3\2\2\2\u04bd\u04bb\3\2\2\2\u04bd\u04be"+
+ "\3\2\2\2\u04be\u00af\3\2\2\2\u04bf\u04bd\3\2\2\2\u04c0\u04c1\7\25\2\2"+
+ "\u04c1\u04c2\5\u009eP\2\u04c2\u00b1\3\2\2\2\u04c3\u04c4\7P\2\2\u04c4\u04c6"+
+ "\5\u00b4[\2\u04c5\u04c7\7V\2\2\u04c6\u04c5\3\2\2\2\u04c6\u04c7\3\2\2\2"+
+ "\u04c7\u04c8\3\2\2\2\u04c8\u04c9\7Q\2\2\u04c9\u00b3\3\2\2\2\u04ca\u04cf"+
+ "\5\u00b6\\\2\u04cb\u04cc\7V\2\2\u04cc\u04ce\5\u00b6\\\2\u04cd\u04cb\3"+
+ "\2\2\2\u04ce\u04d1\3\2\2\2\u04cf\u04cd\3\2\2\2\u04cf\u04d0\3\2\2\2\u04d0"+
+ "\u00b5\3\2\2\2\u04d1\u04cf\3\2\2\2\u04d2\u04d4\5\16\b\2\u04d3\u04d2\3"+
+ "\2\2\2\u04d4\u04d7\3\2\2\2\u04d5\u04d3\3\2\2\2\u04d5\u04d6\3\2\2\2\u04d6"+
+ "\u04dd\3\2\2\2\u04d7\u04d5\3\2\2\2\u04d8\u04d9\5T+\2\u04d9\u04da\5N(\2"+
+ "\u04da\u04de\3\2\2\2\u04db\u04dc\7?\2\2\u04dc\u04de\5\u00a4S\2\u04dd\u04d8"+
+ "\3\2\2\2\u04dd\u04db\3\2\2\2\u04de\u04df\3\2\2\2\u04df\u04e0\7Y\2\2\u04e0"+
+ "\u04e1\5\u00c8e\2\u04e1\u04e4\3\2\2\2\u04e2\u04e4\5h\65\2\u04e3\u04d5"+
+ "\3\2\2\2\u04e3\u04e2\3\2\2\2\u04e4\u00b7\3\2\2\2\u04e5\u04e7\5\u00ba^"+
+ "\2\u04e6\u04e5\3\2\2\2\u04e7\u04e8\3\2\2\2\u04e8\u04e6\3\2\2\2\u04e8\u04e9"+
+ "\3\2\2\2\u04e9\u04eb\3\2\2\2\u04ea\u04ec\5\u00a0Q\2\u04eb\u04ea\3\2\2"+
+ "\2\u04ec\u04ed\3\2\2\2\u04ed\u04eb\3\2\2\2\u04ed\u04ee\3\2\2\2\u04ee\u00b9"+
+ "\3\2\2\2\u04ef\u04f5\7\b\2\2\u04f0\u04f6\5\u00c8e\2\u04f1\u04f6\7\u0082"+
+ "\2\2\u04f2\u04f3\5\u00f2z\2\u04f3\u04f4\5\u00a4S\2\u04f4\u04f6\3\2\2\2"+
+ "\u04f5\u04f0\3\2\2\2\u04f5\u04f1\3\2\2\2\u04f5\u04f2\3\2\2\2\u04f6\u04f7"+
+ "\3\2\2\2\u04f7\u04fb\7_\2\2\u04f8\u04f9\7\16\2\2\u04f9\u04fb\7_\2\2\u04fa"+
+ "\u04ef\3\2\2\2\u04fa\u04f8\3\2\2\2\u04fb\u00bb\3\2\2\2\u04fc\u0509\5\u00c0"+
+ "a\2\u04fd\u04ff\5\u00be`\2\u04fe\u04fd\3\2\2\2\u04fe\u04ff\3\2\2\2\u04ff"+
+ "\u0500\3\2\2\2\u0500\u0502\7V\2\2\u0501\u0503\5\u00c8e\2\u0502\u0501\3"+
+ "\2\2\2\u0502\u0503\3\2\2\2\u0503\u0504\3\2\2\2\u0504\u0506\7V\2\2\u0505"+
+ "\u0507\5\u00c4c\2\u0506\u0505\3\2\2\2\u0506\u0507\3\2\2\2\u0507\u0509"+
+ "\3\2\2\2\u0508\u04fc\3\2\2\2\u0508\u04fe\3\2\2\2\u0509\u00bd\3\2\2\2\u050a"+
+ "\u050d\5\u00a2R\2\u050b\u050d\5\u00c4c\2\u050c\u050a\3\2\2\2\u050c\u050b"+
+ "\3\2\2\2\u050d\u00bf\3\2\2\2\u050e\u0510\5\16\b\2\u050f\u050e\3\2\2\2"+
+ "\u0510\u0513\3\2\2\2\u0511\u050f\3\2\2\2\u0511\u0512\3\2\2\2\u0512\u0516"+
+ "\3\2\2\2\u0513\u0511\3\2\2\2\u0514\u0517\5\u00f2z\2\u0515\u0517\7?\2\2"+
+ "\u0516\u0514\3\2\2\2\u0516\u0515\3\2\2\2\u0517\u0518\3\2\2\2\u0518\u0519"+
+ "\5N(\2\u0519\u051a\7_\2\2\u051a\u051b\5\u00c8e\2\u051b\u00c1\3\2\2\2\u051c"+
+ "\u051d\7P\2\2\u051d\u051e\5\u00c8e\2\u051e\u051f\7Q\2\2\u051f\u00c3\3"+
+ "\2\2\2\u0520\u0525\5\u00c8e\2\u0521\u0522\7W\2\2\u0522\u0524\5\u00c8e"+
+ "\2\u0523\u0521\3\2\2\2\u0524\u0527\3\2\2\2\u0525\u0523\3\2\2\2\u0525\u0526"+
+ "\3\2\2\2\u0526\u00c5\3\2\2\2\u0527\u0525\3\2\2\2\u0528\u052c\5\u00a4S"+
+ "\2\u0529\u052c\7-\2\2\u052a\u052c\7*\2\2\u052b\u0528\3\2\2\2\u052b\u0529"+
+ "\3\2\2\2\u052b\u052a\3\2\2\2\u052c\u052d\3\2\2\2\u052d\u052e\5\u00fc\177"+
+ "\2\u052e\u00c7\3\2\2\2\u052f\u0530\be\1\2\u0530\u0531\t\b\2\2\u0531\u055b"+
+ "\5\u00c8e\23\u0532\u0536\7P\2\2\u0533\u0535\5r:\2\u0534\u0533\3\2\2\2"+
+ "\u0535\u0538\3\2\2\2\u0536\u0534\3\2\2\2\u0536\u0537\3\2\2\2\u0537\u0539"+
+ "\3\2\2\2\u0538\u0536\3\2\2\2\u0539\u053e\5\u00f2z\2\u053a\u053b\7l\2\2"+
+ "\u053b\u053d\5\u00f2z\2\u053c\u053a\3\2\2\2\u053d\u0540\3\2\2\2\u053e"+
+ "\u053c\3\2\2\2\u053e\u053f\3\2\2\2\u053f\u0541\3\2\2\2\u0540\u053e\3\2"+
+ "\2\2\u0541\u0542\7Q\2\2\u0542\u0543\5\u00c8e\22\u0543\u055b\3\2\2\2\u0544"+
+ "\u055b\5\u00d2j\2\u0545\u055b\5\u00c6d\2\u0546\u0547\5\u00f2z\2\u0547"+
+ "\u054d\7|\2\2\u0548\u054a\5\u00f6|\2\u0549\u0548\3\2\2\2\u0549\u054a\3"+
+ "\2\2\2\u054a\u054b\3\2\2\2\u054b\u054e\5\u00a4S\2\u054c\u054e\7!\2\2\u054d"+
+ "\u0549\3\2\2\2\u054d\u054c\3\2\2\2\u054e\u055b\3\2\2\2\u054f\u0550\5\u00dc"+
+ "o\2\u0550\u0552\7|\2\2\u0551\u0553\5\u00f6|\2\u0552\u0551\3\2\2\2\u0552"+
+ "\u0553\3\2\2\2\u0553\u0554\3\2\2\2\u0554\u0555\7!\2\2\u0555\u055b\3\2"+
+ "\2\2\u0556\u055b\5\u00d4k\2\u0557\u0558\7!\2\2\u0558\u055b\5\u00dep\2"+
+ "\u0559\u055b\5\u00ccg\2\u055a\u052f\3\2\2\2\u055a\u0532\3\2\2\2\u055a"+
+ "\u0544\3\2\2\2\u055a\u0545\3\2\2\2\u055a\u0546\3\2\2\2\u055a\u054f\3\2"+
+ "\2\2\u055a\u0556\3\2\2\2\u055a\u0557\3\2\2\2\u055a\u0559\3\2\2\2\u055b"+
+ "\u05af\3\2\2\2\u055c\u055d\f\20\2\2\u055d\u055e\t\t\2\2\u055e\u05ae\5"+
+ "\u00c8e\21\u055f\u0560\f\17\2\2\u0560\u0561\t\n\2\2\u0561\u05ae\5\u00c8"+
+ "e\20\u0562\u056a\f\16\2\2\u0563\u0564\7[\2\2\u0564\u056b\7[\2\2\u0565"+
+ "\u0566\7Z\2\2\u0566\u0567\7Z\2\2\u0567\u056b\7Z\2\2\u0568\u0569\7Z\2\2"+
+ "\u0569\u056b\7Z\2\2\u056a\u0563\3\2\2\2\u056a\u0565\3\2\2\2\u056a\u0568"+
+ "\3\2\2\2\u056b\u056c\3\2\2\2\u056c\u05ae\5\u00c8e\17\u056d\u056e\f\r\2"+
+ "\2\u056e\u056f\t\13\2\2\u056f\u05ae\5\u00c8e\16\u0570\u0571\f\13\2\2\u0571"+
+ "\u0572\t\f\2\2\u0572\u05ae\5\u00c8e\f\u0573\u0574\f\n\2\2\u0574\u0575"+
+ "\7l\2\2\u0575\u05ae\5\u00c8e\13\u0576\u0577\f\t\2\2\u0577\u0578\7n\2\2"+
+ "\u0578\u05ae\5\u00c8e\n\u0579\u057a\f\b\2\2\u057a\u057b\7m\2\2\u057b\u05ae"+
+ "\5\u00c8e\t\u057c\u057d\f\7\2\2\u057d\u057e\7d\2\2\u057e\u05ae\5\u00c8"+
+ "e\b\u057f\u0580\f\6\2\2\u0580\u0581\7e\2\2\u0581\u05ae\5\u00c8e\7\u0582"+
+ "\u0583\f\5\2\2\u0583\u0584\7^\2\2\u0584\u0585\5\u00c8e\2\u0585\u0586\7"+
+ "_\2\2\u0586\u0587\5\u00c8e\5\u0587\u05ae\3\2\2\2\u0588\u0589\f\4\2\2\u0589"+
+ "\u058a\t\r\2\2\u058a\u05ae\5\u00c8e\4\u058b\u058c\f\33\2\2\u058c\u058d"+
+ "\7T\2\2\u058d\u058e\5\u00c8e\2\u058e\u058f\7U\2\2\u058f\u05ae\3\2\2\2"+
+ "\u0590\u0591\f\32\2\2\u0591\u059d\7X\2\2\u0592\u059e\5\u00a4S\2\u0593"+
+ "\u059e\5\u00c6d\2\u0594\u059e\7-\2\2\u0595\u0597\7!\2\2\u0596\u0598\5"+
+ "\u00eex\2\u0597\u0596\3\2\2\2\u0597\u0598\3\2\2\2\u0598\u0599\3\2\2\2"+
+ "\u0599\u059e\5\u00e2r\2\u059a\u059b\7*\2\2\u059b\u059e\5\u00f8}\2\u059c"+
+ "\u059e\5\u00e8u\2\u059d\u0592\3\2\2\2\u059d\u0593\3\2\2\2\u059d\u0594"+
+ "\3\2\2\2\u059d\u0595\3\2\2\2\u059d\u059a\3\2\2\2\u059d\u059c\3\2\2\2\u059e"+
+ "\u05ae\3\2\2\2\u059f\u05a0\f\30\2\2\u05a0\u05a2\7|\2\2\u05a1\u05a3\5\u00f6"+
+ "|\2\u05a2\u05a1\3\2\2\2\u05a2\u05a3\3\2\2\2\u05a3\u05a4\3\2\2\2\u05a4"+
+ "\u05ae\5\u00a4S\2\u05a5\u05a6\f\24\2\2\u05a6\u05ae\t\16\2\2\u05a7\u05a8"+
+ "\f\f\2\2\u05a8\u05ab\7\34\2\2\u05a9\u05ac\5\u00f2z\2\u05aa\u05ac\5\u00ca"+
+ "f\2\u05ab\u05a9\3\2\2\2\u05ab\u05aa\3\2\2\2\u05ac\u05ae\3\2\2\2\u05ad"+
+ "\u055c\3\2\2\2\u05ad\u055f\3\2\2\2\u05ad\u0562\3\2\2\2\u05ad\u056d\3\2"+
+ "\2\2\u05ad\u0570\3\2\2\2\u05ad\u0573\3\2\2\2\u05ad\u0576\3\2\2\2\u05ad"+
+ "\u0579\3\2\2\2\u05ad\u057c\3\2\2\2\u05ad\u057f\3\2\2\2\u05ad\u0582\3\2"+
+ "\2\2\u05ad\u0588\3\2\2\2\u05ad\u058b\3\2\2\2\u05ad\u0590\3\2\2\2\u05ad"+
+ "\u059f\3\2\2\2\u05ad\u05a5\3\2\2\2\u05ad\u05a7\3\2\2\2\u05ae\u05b1\3\2"+
+ "\2\2\u05af\u05ad\3\2\2\2\u05af\u05b0\3\2\2\2\u05b0\u00c9\3\2\2\2\u05b1"+
+ "\u05af\3\2\2\2\u05b2\u05b4\5\16\b\2\u05b3\u05b2\3\2\2\2\u05b4\u05b7\3"+
+ "\2\2\2\u05b5\u05b3\3\2\2\2\u05b5\u05b6\3\2\2\2\u05b6\u05b8\3\2\2\2\u05b7"+
+ "\u05b5\3\2\2\2\u05b8\u05bc\5\u00f2z\2\u05b9\u05bb\5r:\2\u05ba\u05b9\3"+
+ "\2\2\2\u05bb\u05be\3\2\2\2\u05bc\u05ba\3\2\2\2\u05bc\u05bd\3\2\2\2\u05bd"+
+ "\u05bf\3\2\2\2\u05be\u05bc\3\2\2\2\u05bf\u05c0\5\u00a4S\2\u05c0\u00cb"+
+ "\3\2\2\2\u05c1\u05c2\5\u00ceh\2\u05c2\u05c3\7{\2\2\u05c3\u05c4\5\u00d0"+
+ "i\2\u05c4\u00cd\3\2\2\2\u05c5\u05dc\5\u00a4S\2\u05c6\u05c8\7P\2\2\u05c7"+
+ "\u05c9\5^\60\2\u05c8\u05c7\3\2\2\2\u05c8\u05c9\3\2\2\2\u05c9\u05ca\3\2"+
+ "\2\2\u05ca\u05dc\7Q\2\2\u05cb\u05cc\7P\2\2\u05cc\u05d1\5\u00a4S\2\u05cd"+
+ "\u05ce\7W\2\2\u05ce\u05d0\5\u00a4S\2\u05cf\u05cd\3\2\2\2\u05d0\u05d3\3"+
+ "\2\2\2\u05d1\u05cf\3\2\2\2\u05d1\u05d2\3\2\2\2\u05d2\u05d4\3\2\2\2\u05d3"+
+ "\u05d1\3\2\2\2\u05d4\u05d5\7Q\2\2\u05d5\u05dc\3\2\2\2\u05d6\u05d8\7P\2"+
+ "\2\u05d7\u05d9\5d\63\2\u05d8\u05d7\3\2\2\2\u05d8\u05d9\3\2\2\2\u05d9\u05da"+
+ "\3\2\2\2\u05da\u05dc\7Q\2\2\u05db\u05c5\3\2\2\2\u05db\u05c6\3\2\2\2\u05db"+
+ "\u05cb\3\2\2\2\u05db\u05d6\3\2\2\2\u05dc\u00cf\3\2\2\2\u05dd\u05e0\5\u00c8"+
+ "e\2\u05de\u05e0\5\u009eP\2\u05df\u05dd\3\2\2\2\u05df\u05de\3\2\2\2\u05e0"+
+ "\u00d1\3\2\2\2\u05e1\u05e2\7P\2\2\u05e2\u05e3\5\u00c8e\2\u05e3\u05e4\7"+
+ "Q\2\2\u05e4\u05f4\3\2\2\2\u05e5\u05f4\7-\2\2\u05e6\u05f4\7*\2\2\u05e7"+
+ "\u05f4\5j\66\2\u05e8\u05f4\5\u00a4S\2\u05e9\u05ea\5.\30\2\u05ea\u05eb"+
+ "\7X\2\2\u05eb\u05ec\7\13\2\2\u05ec\u05f4\3\2\2\2\u05ed\u05f1\5\u00eex"+
+ "\2\u05ee\u05f2\5\u00fa~\2\u05ef\u05f0\7-\2\2\u05f0\u05f2\5\u00fc\177\2"+
+ "\u05f1\u05ee\3\2\2\2\u05f1\u05ef\3\2\2\2\u05f2\u05f4\3\2\2\2\u05f3\u05e1"+
+ "\3\2\2\2\u05f3\u05e5\3\2\2\2\u05f3\u05e6\3\2\2\2\u05f3\u05e7\3\2\2\2\u05f3"+
+ "\u05e8\3\2\2\2\u05f3\u05e9\3\2\2\2\u05f3\u05ed\3\2\2\2\u05f4\u00d3\3\2"+
+ "\2\2\u05f5\u05f6\7+\2\2\u05f6\u05f7\5\u00c2b\2\u05f7\u05fb\7R\2\2\u05f8"+
+ "\u05fa\5\u00d6l\2\u05f9\u05f8\3\2\2\2\u05fa\u05fd\3\2\2\2\u05fb\u05f9"+
+ "\3\2\2\2\u05fb\u05fc\3\2\2\2\u05fc\u05fe\3\2\2\2\u05fd\u05fb\3\2\2\2\u05fe"+
+ "\u05ff\7S\2\2\u05ff\u00d5\3\2\2\2\u0600\u0604\7\b\2\2\u0601\u0605\5\u00c4"+
+ "c\2\u0602\u0605\7O\2\2\u0603\u0605\5\u00d8m\2\u0604\u0601\3\2\2\2\u0604"+
+ "\u0602\3\2\2\2\u0604\u0603\3\2\2\2\u0605\u0606\3\2\2\2\u0606\u0607\t\17"+
+ "\2\2\u0607\u060c\5\u00dan\2\u0608\u0609\7\16\2\2\u0609\u060a\t\17\2\2"+
+ "\u060a\u060c\5\u00dan\2\u060b\u0600\3\2\2\2\u060b\u0608\3\2\2\2\u060c"+
+ "\u00d7\3\2\2\2\u060d\u060e\bm\1\2\u060e\u060f\7P\2\2\u060f\u0610\5\u00d8"+
+ "m\2\u0610\u0611\7Q\2\2\u0611\u0628\3\2\2\2\u0612\u0614\5\16\b\2\u0613"+
+ "\u0612\3\2\2\2\u0614\u0617\3\2\2\2\u0615\u0613\3\2\2\2\u0615\u0616\3\2"+
+ "\2\2\u0616\u0618\3\2\2\2\u0617\u0615\3\2\2\2\u0618\u061c\5\u00f2z\2\u0619"+
+ "\u061b\5r:\2\u061a\u0619\3\2\2\2\u061b\u061e\3\2\2\2\u061c\u061a\3\2\2"+
+ "\2\u061c\u061d\3\2\2\2\u061d\u061f\3\2\2\2\u061e\u061c\3\2\2\2\u061f\u0624"+
+ "\5\u00a4S\2\u0620\u0621\7d\2\2\u0621\u0623\5\u00c8e\2\u0622\u0620\3\2"+
+ "\2\2\u0623\u0626\3\2\2\2\u0624\u0622\3\2\2\2\u0624\u0625\3\2\2\2\u0625"+
+ "\u0628\3\2\2\2\u0626\u0624\3\2\2\2\u0627\u060d\3\2\2\2\u0627\u0615\3\2"+
+ "\2\2\u0628\u062e\3\2\2\2\u0629\u062a\f\3\2\2\u062a\u062b\7d\2\2\u062b"+
+ "\u062d\5\u00c8e\2\u062c\u0629\3\2\2\2\u062d\u0630\3\2\2\2\u062e\u062c"+
+ "\3\2\2\2\u062e\u062f\3\2\2\2\u062f\u00d9\3\2\2\2\u0630\u062e\3\2\2\2\u0631"+
+ "\u0639\5\u009eP\2\u0632\u0634\5\u00a0Q\2\u0633\u0632\3\2\2\2\u0634\u0637"+
+ "\3\2\2\2\u0635\u0633\3\2\2\2\u0635\u0636\3\2\2\2\u0636\u0639\3\2\2\2\u0637"+
+ "\u0635\3\2\2\2\u0638\u0631\3\2\2\2\u0638\u0635\3\2\2\2\u0639\u00db\3\2"+
+ "\2\2\u063a\u063b\5T+\2\u063b\u063c\7X\2\2\u063c\u063e\3\2\2\2\u063d\u063a"+
+ "\3\2\2\2\u063d\u063e\3\2\2\2\u063e\u0642\3\2\2\2\u063f\u0641\5r:\2\u0640"+
+ "\u063f\3\2\2\2\u0641\u0644\3\2\2\2\u0642\u0640\3\2\2\2\u0642\u0643\3\2"+
+ "\2\2\u0643\u0645\3\2\2\2\u0644\u0642\3\2\2\2\u0645\u0647\5\u00a4S\2\u0646"+
+ "\u0648\5\u00f6|\2\u0647\u0646\3\2\2\2\u0647\u0648\3\2\2\2\u0648\u00dd"+
+ "\3\2\2\2\u0649\u064b\5\u00eex\2\u064a\u0649\3\2\2\2\u064a\u064b\3\2\2"+
+ "\2\u064b\u064c\3\2\2\2\u064c\u064d\5\u00e0q\2\u064d\u064e\5\u00e6t\2\u064e"+
+ "\u0653\3\2\2\2\u064f\u0650\5\u00e0q\2\u0650\u0651\5\u00e4s\2\u0651\u0653"+
+ "\3\2\2\2\u0652\u064a\3\2\2\2\u0652\u064f\3\2\2\2\u0653\u00df\3\2\2\2\u0654"+
+ "\u0656\5\u00a4S\2\u0655\u0657\5\u00eav\2\u0656\u0655\3\2\2\2\u0656\u0657"+
+ "\3\2\2\2\u0657\u065f\3\2\2\2\u0658\u0659\7X\2\2\u0659\u065b\5\u00a4S\2"+
+ "\u065a\u065c\5\u00eav\2\u065b\u065a\3\2\2\2\u065b\u065c\3\2\2\2\u065c"+
+ "\u065e\3\2\2\2\u065d\u0658\3\2\2\2\u065e\u0661\3\2\2\2\u065f\u065d\3\2"+
+ "\2\2\u065f\u0660\3\2\2\2\u0660\u0664\3\2\2\2\u0661\u065f\3\2\2\2\u0662"+
+ "\u0664\5\u00f4{\2\u0663\u0654\3\2\2\2\u0663\u0662\3\2\2\2\u0664\u00e1"+
+ "\3\2\2\2\u0665\u0667\5\u00a4S\2\u0666\u0668\5\u00ecw\2\u0667\u0666\3\2"+
+ "\2\2\u0667\u0668\3\2\2\2\u0668\u0669\3\2\2\2\u0669\u066a\5\u00e6t\2\u066a"+
+ "\u00e3\3\2\2\2\u066b\u066c\7T\2\2\u066c\u066e\7U\2\2\u066d\u066b\3\2\2"+
+ "\2\u066e\u066f\3\2\2\2\u066f\u066d\3\2\2\2\u066f\u0670\3\2\2\2\u0670\u0671"+
+ "\3\2\2\2\u0671\u0682\5R*\2\u0672\u0673\7T\2\2\u0673\u0674\5\u00c8e\2\u0674"+
+ "\u0675\7U\2\2\u0675\u0677\3\2\2\2\u0676\u0672\3\2\2\2\u0677\u0678\3\2"+
+ "\2\2\u0678\u0676\3\2\2\2\u0678\u0679\3\2\2\2\u0679\u067e\3\2\2\2\u067a"+
+ "\u067b\7T\2\2\u067b\u067d\7U\2\2\u067c\u067a\3\2\2\2\u067d\u0680\3\2\2"+
+ "\2\u067e\u067c\3\2\2\2\u067e\u067f\3\2\2\2\u067f\u0682\3\2\2\2\u0680\u067e"+
+ "\3\2\2\2\u0681\u066d\3\2\2\2\u0681\u0676\3\2\2\2\u0682\u00e5\3\2\2\2\u0683"+
+ "\u0685\5\u00fc\177\2\u0684\u0686\5\"\22\2\u0685\u0684\3\2\2\2\u0685\u0686"+
+ "\3\2\2\2\u0686\u00e7\3\2\2\2\u0687\u0688\5\u00eex\2\u0688\u0689\5\u00fa"+
+ "~\2\u0689\u00e9\3\2\2\2\u068a\u068b\7[\2\2\u068b\u068e\7Z\2\2\u068c\u068e"+
+ "\5\u00f6|\2\u068d\u068a\3\2\2\2\u068d\u068c\3\2\2\2\u068e\u00eb\3\2\2"+
+ "\2\u068f\u0690\7[\2\2\u0690\u0693\7Z\2\2\u0691\u0693\5\u00eex\2\u0692"+
+ "\u068f\3\2\2\2\u0692\u0691\3\2\2\2\u0693\u00ed\3\2\2\2\u0694\u0695\7["+
+ "\2\2\u0695\u0696\5\u00f0y\2\u0696\u0697\7Z\2\2\u0697\u00ef\3\2\2\2\u0698"+
+ "\u069d\5\u00f2z\2\u0699\u069a\7W\2\2\u069a\u069c\5\u00f2z\2\u069b\u0699"+
+ "\3\2\2\2\u069c\u069f\3\2\2\2\u069d\u069b\3\2\2\2\u069d\u069e\3\2\2\2\u069e"+
+ "\u00f1\3\2\2\2\u069f\u069d\3\2\2\2\u06a0\u06a2\5r:\2\u06a1\u06a0\3\2\2"+
+ "\2\u06a2\u06a5\3\2\2\2\u06a3\u06a1\3\2\2\2\u06a3\u06a4\3\2\2\2\u06a4\u06a8"+
+ "\3\2\2\2\u06a5\u06a3\3\2\2\2\u06a6\u06a9\5T+\2\u06a7\u06a9\5\u00f4{\2"+
+ "\u06a8\u06a6\3\2\2\2\u06a8\u06a7\3\2\2\2\u06a9\u06b4\3\2\2\2\u06aa\u06ac"+
+ "\5r:\2\u06ab\u06aa\3\2\2\2\u06ac\u06af\3\2\2\2\u06ad\u06ab\3\2\2\2\u06ad"+
+ "\u06ae\3\2\2\2\u06ae\u06b0\3\2\2\2\u06af\u06ad\3\2\2\2\u06b0\u06b1\7T"+
+ "\2\2\u06b1\u06b3\7U\2\2\u06b2\u06ad\3\2\2\2\u06b3\u06b6\3\2\2\2\u06b4"+
+ "\u06b2\3\2\2\2\u06b4\u06b5\3\2\2\2\u06b5\u00f3\3\2\2\2\u06b6\u06b4\3\2"+
+ "\2\2\u06b7\u06b8\t\20\2\2\u06b8\u00f5\3\2\2\2\u06b9\u06ba\7[\2\2\u06ba"+
+ "\u06bf\5V,\2\u06bb\u06bc\7W\2\2\u06bc\u06be\5V,\2\u06bd\u06bb\3\2\2\2"+
+ "\u06be\u06c1\3\2\2\2\u06bf\u06bd\3\2\2\2\u06bf\u06c0\3\2\2\2\u06c0\u06c2"+
+ "\3\2\2\2\u06c1\u06bf\3\2\2\2\u06c2\u06c3\7Z\2\2\u06c3\u00f7\3\2\2\2\u06c4"+
+ "\u06ce\5\u00fc\177\2\u06c5\u06c7\7X\2\2\u06c6\u06c8\5\u00f6|\2\u06c7\u06c6"+
+ "\3\2\2\2\u06c7\u06c8\3\2\2\2\u06c8\u06c9\3\2\2\2\u06c9\u06cb\5\u00a4S"+
+ "\2\u06ca\u06cc\5\u00fc\177\2\u06cb\u06ca\3\2\2\2\u06cb\u06cc\3\2\2\2\u06cc"+
+ "\u06ce\3\2\2\2\u06cd\u06c4\3\2\2\2\u06cd\u06c5\3\2\2\2\u06ce\u00f9\3\2"+
+ "\2\2\u06cf\u06d0\7*\2\2\u06d0\u06d5\5\u00f8}\2\u06d1\u06d2\5\u00a4S\2"+
+ "\u06d2\u06d3\5\u00fc\177\2\u06d3\u06d5\3\2\2\2\u06d4\u06cf\3\2\2\2\u06d4"+
+ "\u06d1\3\2\2\2\u06d5\u00fb\3\2\2\2\u06d6\u06d8\7P\2\2\u06d7\u06d9\5\u00c4"+
+ "c\2\u06d8\u06d7\3\2\2\2\u06d8\u06d9\3\2\2\2\u06d9\u06da\3\2\2\2\u06da"+
+ "\u06db\7Q\2\2\u06db\u00fd\3\2\2\2\u00dd\u00ff\u0103\u0105\u010a\u010c"+
+ "\u0112\u0117\u0120\u0125\u012c\u0134\u013b\u0147\u014b\u0150\u0154\u0158"+
+ "\u015c\u0166\u016e\u0176\u017a\u0181\u0188\u018c\u018f\u0192\u019b\u01a1"+
+ "\u01a6\u01a9\u01af\u01b5\u01b9\u01bd\u01c5\u01ce\u01d5\u01db\u01df\u01eb"+
+ "\u01f4\u01f9\u01ff\u0203\u020f\u0216\u0223\u0228\u0232\u023a\u0244\u024d"+
+ "\u0258\u025d\u0266\u0270\u0275\u027e\u0284\u028b\u0290\u0298\u029c\u029e"+
+ "\u02a4\u02aa\u02af\u02b5\u02bb\u02bd\u02c4\u02c9\u02ce\u02d1\u02d3\u02dd"+
+ "\u02e7\u02ec\u02ef\u02f4\u02fd\u0304\u030f\u0315\u0320\u032a\u0335\u033e"+
+ "\u0343\u0346\u034d\u0357\u035f\u0362\u0365\u0372\u037a\u037f\u0387\u038b"+
+ "\u038f\u0393\u0397\u0399\u039d\u03a3\u03ab\u03b5\u03be\u03c8\u03d0\u03de"+
+ "\u03e5\u03ea\u03f0\u03f9\u0402\u0404\u040d\u0417\u041c\u0427\u0430\u0436"+
+ "\u043d\u0446\u045d\u0460\u0463\u046b\u046f\u0477\u047d\u0488\u0491\u0496"+
+ "\u04a3\u04a9\u04b0\u04bd\u04c6\u04cf\u04d5\u04dd\u04e3\u04e8\u04ed\u04f5"+
+ "\u04fa\u04fe\u0502\u0506\u0508\u050c\u0511\u0516\u0525\u052b\u0536\u053e"+
+ "\u0549\u054d\u0552\u055a\u056a\u0597\u059d\u05a2\u05ab\u05ad\u05af\u05b5"+
+ "\u05bc\u05c8\u05d1\u05d8\u05db\u05df\u05f1\u05f3\u05fb\u0604\u060b\u0615"+
+ "\u061c\u0624\u0627\u062e\u0635\u0638\u063d\u0642\u0647\u064a\u0652\u0656"+
+ "\u065b\u065f\u0663\u0667\u066f\u0678\u067e\u0681\u0685\u068d\u0692\u069d"+
+ "\u06a3\u06a8\u06ad\u06b4\u06bf\u06c7\u06cb\u06cd\u06d4\u06d8";
+ 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/src/main/java/grammar/JavaParser.tokens b/src/main/java/grammar/JavaParser.tokens
new file mode 100644
index 00000000..f811013a
--- /dev/null
+++ b/src/main/java/grammar/JavaParser.tokens
@@ -0,0 +1,242 @@
+ABSTRACT=1
+ASSERT=2
+BOOLEAN=3
+BREAK=4
+BYTE=5
+CASE=6
+CATCH=7
+CHAR=8
+CLASS=9
+CONST=10
+CONTINUE=11
+DEFAULT=12
+DO=13
+DOUBLE=14
+ELSE=15
+ENUM=16
+EXTENDS=17
+FINAL=18
+FINALLY=19
+FLOAT=20
+FOR=21
+IF=22
+GOTO=23
+IMPLEMENTS=24
+IMPORT=25
+INSTANCEOF=26
+INT=27
+INTERFACE=28
+LONG=29
+NATIVE=30
+NEW=31
+PACKAGE=32
+PRIVATE=33
+PROTECTED=34
+PUBLIC=35
+RETURN=36
+SHORT=37
+STATIC=38
+STRICTFP=39
+SUPER=40
+SWITCH=41
+SYNCHRONIZED=42
+THIS=43
+THROW=44
+THROWS=45
+TRANSIENT=46
+TRY=47
+VOID=48
+VOLATILE=49
+WHILE=50
+MODULE=51
+OPEN=52
+REQUIRES=53
+EXPORTS=54
+OPENS=55
+TO=56
+USES=57
+PROVIDES=58
+WITH=59
+TRANSITIVE=60
+VAR=61
+YIELD=62
+RECORD=63
+SEALED=64
+PERMITS=65
+NON_SEALED=66
+DECIMAL_LITERAL=67
+HEX_LITERAL=68
+OCT_LITERAL=69
+BINARY_LITERAL=70
+FLOAT_LITERAL=71
+HEX_FLOAT_LITERAL=72
+BOOL_LITERAL=73
+CHAR_LITERAL=74
+STRING_LITERAL=75
+TEXT_BLOCK=76
+NULL_LITERAL=77
+LPAREN=78
+RPAREN=79
+LBRACE=80
+RBRACE=81
+LBRACK=82
+RBRACK=83
+SEMI=84
+COMMA=85
+DOT=86
+ASSIGN=87
+GT=88
+LT=89
+BANG=90
+TILDE=91
+QUESTION=92
+COLON=93
+EQUAL=94
+LE=95
+GE=96
+NOTEQUAL=97
+AND=98
+OR=99
+INC=100
+DEC=101
+ADD=102
+SUB=103
+MUL=104
+DIV=105
+BITAND=106
+BITOR=107
+CARET=108
+MOD=109
+ADD_ASSIGN=110
+SUB_ASSIGN=111
+MUL_ASSIGN=112
+DIV_ASSIGN=113
+AND_ASSIGN=114
+OR_ASSIGN=115
+XOR_ASSIGN=116
+MOD_ASSIGN=117
+LSHIFT_ASSIGN=118
+RSHIFT_ASSIGN=119
+URSHIFT_ASSIGN=120
+ARROW=121
+COLONCOLON=122
+AT=123
+ELLIPSIS=124
+WS=125
+COMMENT=126
+LINE_COMMENT=127
+IDENTIFIER=128
+'abstract'=1
+'assert'=2
+'boolean'=3
+'break'=4
+'byte'=5
+'case'=6
+'catch'=7
+'char'=8
+'class'=9
+'const'=10
+'continue'=11
+'default'=12
+'do'=13
+'double'=14
+'else'=15
+'enum'=16
+'extends'=17
+'final'=18
+'finally'=19
+'float'=20
+'for'=21
+'if'=22
+'goto'=23
+'implements'=24
+'import'=25
+'instanceof'=26
+'int'=27
+'interface'=28
+'long'=29
+'native'=30
+'new'=31
+'package'=32
+'private'=33
+'protected'=34
+'public'=35
+'return'=36
+'short'=37
+'static'=38
+'strictfp'=39
+'super'=40
+'switch'=41
+'synchronized'=42
+'this'=43
+'throw'=44
+'throws'=45
+'transient'=46
+'try'=47
+'void'=48
+'volatile'=49
+'while'=50
+'module'=51
+'open'=52
+'requires'=53
+'exports'=54
+'opens'=55
+'to'=56
+'uses'=57
+'provides'=58
+'with'=59
+'transitive'=60
+'var'=61
+'yield'=62
+'record'=63
+'sealed'=64
+'permits'=65
+'non-sealed'=66
+'null'=77
+'('=78
+')'=79
+'{'=80
+'}'=81
+'['=82
+']'=83
+';'=84
+','=85
+'.'=86
+'='=87
+'>'=88
+'<'=89
+'!'=90
+'~'=91
+'?'=92
+':'=93
+'=='=94
+'<='=95
+'>='=96
+'!='=97
+'&&'=98
+'||'=99
+'++'=100
+'--'=101
+'+'=102
+'-'=103
+'*'=104
+'/'=105
+'&'=106
+'|'=107
+'^'=108
+'%'=109
+'+='=110
+'-='=111
+'*='=112
+'/='=113
+'&='=114
+'|='=115
+'^='=116
+'%='=117
+'<<='=118
+'>>='=119
+'>>>='=120
+'->'=121
+'::'=122
+'@'=123
+'...'=124
diff --git a/src/main/java/grammar/JavaParserBaseListener.java b/src/main/java/grammar/JavaParserBaseListener.java
new file mode 100644
index 00000000..4b95b3bc
--- /dev/null
+++ b/src/main/java/grammar/JavaParserBaseListener.java
@@ -0,0 +1,1552 @@
+// Generated from JavaParser.g4 by ANTLR 4.5
+package grammar;
+
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.misc.NotNull;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+
+/**
+ * This class provides an empty implementation of {@link JavaParserListener},
+ * which can be extended to create a listener which only needs to handle a subset
+ * of the available methods.
+ */
+public class JavaParserBaseListener implements JavaParserListener {
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCompilationUnit(JavaParser.CompilationUnitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCompilationUnit(JavaParser.CompilationUnitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPackageDeclaration(JavaParser.PackageDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPackageDeclaration(JavaParser.PackageDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterImportDeclaration(JavaParser.ImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitImportDeclaration(JavaParser.ImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeDeclaration(JavaParser.TypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeDeclaration(JavaParser.TypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterModifier(JavaParser.ModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitModifier(JavaParser.ModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassOrInterfaceModifier(JavaParser.ClassOrInterfaceModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassOrInterfaceModifier(JavaParser.ClassOrInterfaceModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableModifier(JavaParser.VariableModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableModifier(JavaParser.VariableModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassDeclaration(JavaParser.ClassDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassDeclaration(JavaParser.ClassDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeParameters(JavaParser.TypeParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeParameters(JavaParser.TypeParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeParameter(JavaParser.TypeParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeParameter(JavaParser.TypeParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeBound(JavaParser.TypeBoundContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeBound(JavaParser.TypeBoundContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumDeclaration(JavaParser.EnumDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumDeclaration(JavaParser.EnumDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumConstants(JavaParser.EnumConstantsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumConstants(JavaParser.EnumConstantsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumConstant(JavaParser.EnumConstantContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumConstant(JavaParser.EnumConstantContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumBodyDeclarations(JavaParser.EnumBodyDeclarationsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumBodyDeclarations(JavaParser.EnumBodyDeclarationsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceDeclaration(JavaParser.InterfaceDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceDeclaration(JavaParser.InterfaceDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassBody(JavaParser.ClassBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassBody(JavaParser.ClassBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceBody(JavaParser.InterfaceBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceBody(JavaParser.InterfaceBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassBodyDeclaration(JavaParser.ClassBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassBodyDeclaration(JavaParser.ClassBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMemberDeclaration(JavaParser.MemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMemberDeclaration(JavaParser.MemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodDeclaration(JavaParser.MethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodDeclaration(JavaParser.MethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodBody(JavaParser.MethodBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodBody(JavaParser.MethodBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeTypeOrVoid(JavaParser.TypeTypeOrVoidContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeTypeOrVoid(JavaParser.TypeTypeOrVoidContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGenericMethodDeclaration(JavaParser.GenericMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGenericMethodDeclaration(JavaParser.GenericMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGenericConstructorDeclaration(JavaParser.GenericConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGenericConstructorDeclaration(JavaParser.GenericConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstructorDeclaration(JavaParser.ConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstructorDeclaration(JavaParser.ConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCompactConstructorDeclaration(JavaParser.CompactConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCompactConstructorDeclaration(JavaParser.CompactConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFieldDeclaration(JavaParser.FieldDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFieldDeclaration(JavaParser.FieldDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceBodyDeclaration(JavaParser.InterfaceBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceBodyDeclaration(JavaParser.InterfaceBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceMemberDeclaration(JavaParser.InterfaceMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceMemberDeclaration(JavaParser.InterfaceMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstDeclaration(JavaParser.ConstDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstDeclaration(JavaParser.ConstDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstantDeclarator(JavaParser.ConstantDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstantDeclarator(JavaParser.ConstantDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceMethodDeclaration(JavaParser.InterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceMethodDeclaration(JavaParser.InterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceMethodModifier(JavaParser.InterfaceMethodModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceMethodModifier(JavaParser.InterfaceMethodModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGenericInterfaceMethodDeclaration(JavaParser.GenericInterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGenericInterfaceMethodDeclaration(JavaParser.GenericInterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceCommonBodyDeclaration(JavaParser.InterfaceCommonBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceCommonBodyDeclaration(JavaParser.InterfaceCommonBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDeclarators(JavaParser.VariableDeclaratorsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDeclarators(JavaParser.VariableDeclaratorsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDeclarator(JavaParser.VariableDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDeclarator(JavaParser.VariableDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDeclaratorId(JavaParser.VariableDeclaratorIdContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDeclaratorId(JavaParser.VariableDeclaratorIdContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableInitializer(JavaParser.VariableInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableInitializer(JavaParser.VariableInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayInitializer(JavaParser.ArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayInitializer(JavaParser.ArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassOrInterfaceType(JavaParser.ClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassOrInterfaceType(JavaParser.ClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArgument(JavaParser.TypeArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArgument(JavaParser.TypeArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQualifiedNameList(JavaParser.QualifiedNameListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQualifiedNameList(JavaParser.QualifiedNameListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFormalParameters(JavaParser.FormalParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFormalParameters(JavaParser.FormalParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterReceiverParameter(JavaParser.ReceiverParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitReceiverParameter(JavaParser.ReceiverParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFormalParameterList(JavaParser.FormalParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFormalParameterList(JavaParser.FormalParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFormalParameter(JavaParser.FormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFormalParameter(JavaParser.FormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLastFormalParameter(JavaParser.LastFormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLastFormalParameter(JavaParser.LastFormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaLVTIList(JavaParser.LambdaLVTIListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaLVTIList(JavaParser.LambdaLVTIListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaLVTIParameter(JavaParser.LambdaLVTIParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaLVTIParameter(JavaParser.LambdaLVTIParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQualifiedName(JavaParser.QualifiedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQualifiedName(JavaParser.QualifiedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLiteral(JavaParser.LiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLiteral(JavaParser.LiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIntegerLiteral(JavaParser.IntegerLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIntegerLiteral(JavaParser.IntegerLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFloatLiteral(JavaParser.FloatLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFloatLiteral(JavaParser.FloatLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAltAnnotationQualifiedName(JavaParser.AltAnnotationQualifiedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAltAnnotationQualifiedName(JavaParser.AltAnnotationQualifiedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotation(JavaParser.AnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotation(JavaParser.AnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValuePairs(JavaParser.ElementValuePairsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValuePairs(JavaParser.ElementValuePairsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValuePair(JavaParser.ElementValuePairContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValuePair(JavaParser.ElementValuePairContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValue(JavaParser.ElementValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValue(JavaParser.ElementValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValueArrayInitializer(JavaParser.ElementValueArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValueArrayInitializer(JavaParser.ElementValueArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeDeclaration(JavaParser.AnnotationTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeDeclaration(JavaParser.AnnotationTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeBody(JavaParser.AnnotationTypeBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeBody(JavaParser.AnnotationTypeBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeElementDeclaration(JavaParser.AnnotationTypeElementDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeElementDeclaration(JavaParser.AnnotationTypeElementDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeElementRest(JavaParser.AnnotationTypeElementRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeElementRest(JavaParser.AnnotationTypeElementRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationMethodOrConstantRest(JavaParser.AnnotationMethodOrConstantRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationMethodOrConstantRest(JavaParser.AnnotationMethodOrConstantRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationMethodRest(JavaParser.AnnotationMethodRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationMethodRest(JavaParser.AnnotationMethodRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationConstantRest(JavaParser.AnnotationConstantRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationConstantRest(JavaParser.AnnotationConstantRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDefaultValue(JavaParser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDefaultValue(JavaParser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterModuleDeclaration(JavaParser.ModuleDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitModuleDeclaration(JavaParser.ModuleDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterModuleBody(JavaParser.ModuleBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitModuleBody(JavaParser.ModuleBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterModuleDirective(JavaParser.ModuleDirectiveContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitModuleDirective(JavaParser.ModuleDirectiveContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRequiresModifier(JavaParser.RequiresModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRequiresModifier(JavaParser.RequiresModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRecordDeclaration(JavaParser.RecordDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRecordDeclaration(JavaParser.RecordDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRecordHeader(JavaParser.RecordHeaderContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRecordHeader(JavaParser.RecordHeaderContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRecordComponentList(JavaParser.RecordComponentListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRecordComponentList(JavaParser.RecordComponentListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRecordComponent(JavaParser.RecordComponentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRecordComponent(JavaParser.RecordComponentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRecordBody(JavaParser.RecordBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRecordBody(JavaParser.RecordBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlock(JavaParser.BlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlock(JavaParser.BlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlockStatement(JavaParser.BlockStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlockStatement(JavaParser.BlockStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLocalVariableDeclaration(JavaParser.LocalVariableDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLocalVariableDeclaration(JavaParser.LocalVariableDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIdentifier(JavaParser.IdentifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIdentifier(JavaParser.IdentifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeIdentifier(JavaParser.TypeIdentifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeIdentifier(JavaParser.TypeIdentifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLocalTypeDeclaration(JavaParser.LocalTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLocalTypeDeclaration(JavaParser.LocalTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStatement(JavaParser.StatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStatement(JavaParser.StatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCatchClause(JavaParser.CatchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCatchClause(JavaParser.CatchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCatchType(JavaParser.CatchTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCatchType(JavaParser.CatchTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFinallyBlock(JavaParser.FinallyBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFinallyBlock(JavaParser.FinallyBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResourceSpecification(JavaParser.ResourceSpecificationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResourceSpecification(JavaParser.ResourceSpecificationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResources(JavaParser.ResourcesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResources(JavaParser.ResourcesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResource(JavaParser.ResourceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResource(JavaParser.ResourceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchBlockStatementGroup(JavaParser.SwitchBlockStatementGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchBlockStatementGroup(JavaParser.SwitchBlockStatementGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchLabel(JavaParser.SwitchLabelContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchLabel(JavaParser.SwitchLabelContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForControl(JavaParser.ForControlContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForControl(JavaParser.ForControlContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForInit(JavaParser.ForInitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForInit(JavaParser.ForInitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnhancedForControl(JavaParser.EnhancedForControlContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnhancedForControl(JavaParser.EnhancedForControlContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterParExpression(JavaParser.ParExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitParExpression(JavaParser.ParExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionList(JavaParser.ExpressionListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionList(JavaParser.ExpressionListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodCall(JavaParser.MethodCallContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodCall(JavaParser.MethodCallContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpression(JavaParser.ExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpression(JavaParser.ExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPattern(JavaParser.PatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPattern(JavaParser.PatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaExpression(JavaParser.LambdaExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaExpression(JavaParser.LambdaExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaParameters(JavaParser.LambdaParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaParameters(JavaParser.LambdaParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaBody(JavaParser.LambdaBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaBody(JavaParser.LambdaBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimary(JavaParser.PrimaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimary(JavaParser.PrimaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchExpression(JavaParser.SwitchExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchExpression(JavaParser.SwitchExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchLabeledRule(JavaParser.SwitchLabeledRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchLabeledRule(JavaParser.SwitchLabeledRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGuardedPattern(JavaParser.GuardedPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGuardedPattern(JavaParser.GuardedPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchRuleOutcome(JavaParser.SwitchRuleOutcomeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchRuleOutcome(JavaParser.SwitchRuleOutcomeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassType(JavaParser.ClassTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassType(JavaParser.ClassTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCreator(JavaParser.CreatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCreator(JavaParser.CreatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCreatedName(JavaParser.CreatedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCreatedName(JavaParser.CreatedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInnerCreator(JavaParser.InnerCreatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInnerCreator(JavaParser.InnerCreatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayCreatorRest(JavaParser.ArrayCreatorRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayCreatorRest(JavaParser.ArrayCreatorRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassCreatorRest(JavaParser.ClassCreatorRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassCreatorRest(JavaParser.ClassCreatorRestContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExplicitGenericInvocation(JavaParser.ExplicitGenericInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExplicitGenericInvocation(JavaParser.ExplicitGenericInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArgumentsOrDiamond(JavaParser.TypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArgumentsOrDiamond(JavaParser.TypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNonWildcardTypeArgumentsOrDiamond(JavaParser.NonWildcardTypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNonWildcardTypeArgumentsOrDiamond(JavaParser.NonWildcardTypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNonWildcardTypeArguments(JavaParser.NonWildcardTypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNonWildcardTypeArguments(JavaParser.NonWildcardTypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeList(JavaParser.TypeListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeList(JavaParser.TypeListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeType(JavaParser.TypeTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeType(JavaParser.TypeTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimitiveType(JavaParser.PrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimitiveType(JavaParser.PrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArguments(JavaParser.TypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArguments(JavaParser.TypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSuperSuffix(JavaParser.SuperSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSuperSuffix(JavaParser.SuperSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExplicitGenericInvocationSuffix(JavaParser.ExplicitGenericInvocationSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExplicitGenericInvocationSuffix(JavaParser.ExplicitGenericInvocationSuffixContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArguments(JavaParser.ArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArguments(JavaParser.ArgumentsContext 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/src/main/java/grammar/JavaParserListener.java b/src/main/java/grammar/JavaParserListener.java
new file mode 100644
index 00000000..1c58e5b0
--- /dev/null
+++ b/src/main/java/grammar/JavaParserListener.java
@@ -0,0 +1,1271 @@
+// Generated from JavaParser.g4 by ANTLR 4.5
+package grammar;
+import org.antlr.v4.runtime.misc.NotNull;
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link JavaParser}.
+ */
+public interface JavaParserListener extends ParseTreeListener {
+ /**
+ * Enter a parse tree produced by {@link JavaParser#compilationUnit}.
+ * @param ctx the parse tree
+ */
+ void enterCompilationUnit(JavaParser.CompilationUnitContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#compilationUnit}.
+ * @param ctx the parse tree
+ */
+ void exitCompilationUnit(JavaParser.CompilationUnitContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#packageDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterPackageDeclaration(JavaParser.PackageDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#packageDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitPackageDeclaration(JavaParser.PackageDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#importDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterImportDeclaration(JavaParser.ImportDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#importDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitImportDeclaration(JavaParser.ImportDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterTypeDeclaration(JavaParser.TypeDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitTypeDeclaration(JavaParser.TypeDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#modifier}.
+ * @param ctx the parse tree
+ */
+ void enterModifier(JavaParser.ModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#modifier}.
+ * @param ctx the parse tree
+ */
+ void exitModifier(JavaParser.ModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#classOrInterfaceModifier}.
+ * @param ctx the parse tree
+ */
+ void enterClassOrInterfaceModifier(JavaParser.ClassOrInterfaceModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#classOrInterfaceModifier}.
+ * @param ctx the parse tree
+ */
+ void exitClassOrInterfaceModifier(JavaParser.ClassOrInterfaceModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#variableModifier}.
+ * @param ctx the parse tree
+ */
+ void enterVariableModifier(JavaParser.VariableModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#variableModifier}.
+ * @param ctx the parse tree
+ */
+ void exitVariableModifier(JavaParser.VariableModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#classDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterClassDeclaration(JavaParser.ClassDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#classDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitClassDeclaration(JavaParser.ClassDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeParameters}.
+ * @param ctx the parse tree
+ */
+ void enterTypeParameters(JavaParser.TypeParametersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeParameters}.
+ * @param ctx the parse tree
+ */
+ void exitTypeParameters(JavaParser.TypeParametersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeParameter}.
+ * @param ctx the parse tree
+ */
+ void enterTypeParameter(JavaParser.TypeParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeParameter}.
+ * @param ctx the parse tree
+ */
+ void exitTypeParameter(JavaParser.TypeParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeBound}.
+ * @param ctx the parse tree
+ */
+ void enterTypeBound(JavaParser.TypeBoundContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeBound}.
+ * @param ctx the parse tree
+ */
+ void exitTypeBound(JavaParser.TypeBoundContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#enumDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterEnumDeclaration(JavaParser.EnumDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#enumDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitEnumDeclaration(JavaParser.EnumDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#enumConstants}.
+ * @param ctx the parse tree
+ */
+ void enterEnumConstants(JavaParser.EnumConstantsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#enumConstants}.
+ * @param ctx the parse tree
+ */
+ void exitEnumConstants(JavaParser.EnumConstantsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#enumConstant}.
+ * @param ctx the parse tree
+ */
+ void enterEnumConstant(JavaParser.EnumConstantContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#enumConstant}.
+ * @param ctx the parse tree
+ */
+ void exitEnumConstant(JavaParser.EnumConstantContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#enumBodyDeclarations}.
+ * @param ctx the parse tree
+ */
+ void enterEnumBodyDeclarations(JavaParser.EnumBodyDeclarationsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#enumBodyDeclarations}.
+ * @param ctx the parse tree
+ */
+ void exitEnumBodyDeclarations(JavaParser.EnumBodyDeclarationsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#interfaceDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceDeclaration(JavaParser.InterfaceDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#interfaceDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceDeclaration(JavaParser.InterfaceDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#classBody}.
+ * @param ctx the parse tree
+ */
+ void enterClassBody(JavaParser.ClassBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#classBody}.
+ * @param ctx the parse tree
+ */
+ void exitClassBody(JavaParser.ClassBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#interfaceBody}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceBody(JavaParser.InterfaceBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#interfaceBody}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceBody(JavaParser.InterfaceBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#classBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterClassBodyDeclaration(JavaParser.ClassBodyDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#classBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitClassBodyDeclaration(JavaParser.ClassBodyDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#memberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterMemberDeclaration(JavaParser.MemberDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#memberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitMemberDeclaration(JavaParser.MemberDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#methodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterMethodDeclaration(JavaParser.MethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#methodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitMethodDeclaration(JavaParser.MethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#methodBody}.
+ * @param ctx the parse tree
+ */
+ void enterMethodBody(JavaParser.MethodBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#methodBody}.
+ * @param ctx the parse tree
+ */
+ void exitMethodBody(JavaParser.MethodBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeTypeOrVoid}.
+ * @param ctx the parse tree
+ */
+ void enterTypeTypeOrVoid(JavaParser.TypeTypeOrVoidContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeTypeOrVoid}.
+ * @param ctx the parse tree
+ */
+ void exitTypeTypeOrVoid(JavaParser.TypeTypeOrVoidContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#genericMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterGenericMethodDeclaration(JavaParser.GenericMethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#genericMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitGenericMethodDeclaration(JavaParser.GenericMethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#genericConstructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterGenericConstructorDeclaration(JavaParser.GenericConstructorDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#genericConstructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitGenericConstructorDeclaration(JavaParser.GenericConstructorDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#constructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterConstructorDeclaration(JavaParser.ConstructorDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#constructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitConstructorDeclaration(JavaParser.ConstructorDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#compactConstructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterCompactConstructorDeclaration(JavaParser.CompactConstructorDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#compactConstructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitCompactConstructorDeclaration(JavaParser.CompactConstructorDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#fieldDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterFieldDeclaration(JavaParser.FieldDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#fieldDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitFieldDeclaration(JavaParser.FieldDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#interfaceBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceBodyDeclaration(JavaParser.InterfaceBodyDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#interfaceBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceBodyDeclaration(JavaParser.InterfaceBodyDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#interfaceMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceMemberDeclaration(JavaParser.InterfaceMemberDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#interfaceMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceMemberDeclaration(JavaParser.InterfaceMemberDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#constDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterConstDeclaration(JavaParser.ConstDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#constDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitConstDeclaration(JavaParser.ConstDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#constantDeclarator}.
+ * @param ctx the parse tree
+ */
+ void enterConstantDeclarator(JavaParser.ConstantDeclaratorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#constantDeclarator}.
+ * @param ctx the parse tree
+ */
+ void exitConstantDeclarator(JavaParser.ConstantDeclaratorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#interfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceMethodDeclaration(JavaParser.InterfaceMethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#interfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceMethodDeclaration(JavaParser.InterfaceMethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#interfaceMethodModifier}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceMethodModifier(JavaParser.InterfaceMethodModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#interfaceMethodModifier}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceMethodModifier(JavaParser.InterfaceMethodModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#genericInterfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterGenericInterfaceMethodDeclaration(JavaParser.GenericInterfaceMethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#genericInterfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitGenericInterfaceMethodDeclaration(JavaParser.GenericInterfaceMethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#interfaceCommonBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceCommonBodyDeclaration(JavaParser.InterfaceCommonBodyDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#interfaceCommonBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceCommonBodyDeclaration(JavaParser.InterfaceCommonBodyDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#variableDeclarators}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDeclarators(JavaParser.VariableDeclaratorsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#variableDeclarators}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDeclarators(JavaParser.VariableDeclaratorsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#variableDeclarator}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDeclarator(JavaParser.VariableDeclaratorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#variableDeclarator}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDeclarator(JavaParser.VariableDeclaratorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#variableDeclaratorId}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDeclaratorId(JavaParser.VariableDeclaratorIdContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#variableDeclaratorId}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDeclaratorId(JavaParser.VariableDeclaratorIdContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#variableInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterVariableInitializer(JavaParser.VariableInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#variableInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitVariableInitializer(JavaParser.VariableInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#arrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterArrayInitializer(JavaParser.ArrayInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#arrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitArrayInitializer(JavaParser.ArrayInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterClassOrInterfaceType(JavaParser.ClassOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitClassOrInterfaceType(JavaParser.ClassOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeArgument}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArgument(JavaParser.TypeArgumentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeArgument}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArgument(JavaParser.TypeArgumentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#qualifiedNameList}.
+ * @param ctx the parse tree
+ */
+ void enterQualifiedNameList(JavaParser.QualifiedNameListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#qualifiedNameList}.
+ * @param ctx the parse tree
+ */
+ void exitQualifiedNameList(JavaParser.QualifiedNameListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#formalParameters}.
+ * @param ctx the parse tree
+ */
+ void enterFormalParameters(JavaParser.FormalParametersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#formalParameters}.
+ * @param ctx the parse tree
+ */
+ void exitFormalParameters(JavaParser.FormalParametersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#receiverParameter}.
+ * @param ctx the parse tree
+ */
+ void enterReceiverParameter(JavaParser.ReceiverParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#receiverParameter}.
+ * @param ctx the parse tree
+ */
+ void exitReceiverParameter(JavaParser.ReceiverParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#formalParameterList}.
+ * @param ctx the parse tree
+ */
+ void enterFormalParameterList(JavaParser.FormalParameterListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#formalParameterList}.
+ * @param ctx the parse tree
+ */
+ void exitFormalParameterList(JavaParser.FormalParameterListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#formalParameter}.
+ * @param ctx the parse tree
+ */
+ void enterFormalParameter(JavaParser.FormalParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#formalParameter}.
+ * @param ctx the parse tree
+ */
+ void exitFormalParameter(JavaParser.FormalParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#lastFormalParameter}.
+ * @param ctx the parse tree
+ */
+ void enterLastFormalParameter(JavaParser.LastFormalParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#lastFormalParameter}.
+ * @param ctx the parse tree
+ */
+ void exitLastFormalParameter(JavaParser.LastFormalParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#lambdaLVTIList}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaLVTIList(JavaParser.LambdaLVTIListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#lambdaLVTIList}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaLVTIList(JavaParser.LambdaLVTIListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#lambdaLVTIParameter}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaLVTIParameter(JavaParser.LambdaLVTIParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#lambdaLVTIParameter}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaLVTIParameter(JavaParser.LambdaLVTIParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#qualifiedName}.
+ * @param ctx the parse tree
+ */
+ void enterQualifiedName(JavaParser.QualifiedNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#qualifiedName}.
+ * @param ctx the parse tree
+ */
+ void exitQualifiedName(JavaParser.QualifiedNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#literal}.
+ * @param ctx the parse tree
+ */
+ void enterLiteral(JavaParser.LiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#literal}.
+ * @param ctx the parse tree
+ */
+ void exitLiteral(JavaParser.LiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#integerLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterIntegerLiteral(JavaParser.IntegerLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#integerLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitIntegerLiteral(JavaParser.IntegerLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#floatLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterFloatLiteral(JavaParser.FloatLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#floatLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitFloatLiteral(JavaParser.FloatLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#altAnnotationQualifiedName}.
+ * @param ctx the parse tree
+ */
+ void enterAltAnnotationQualifiedName(JavaParser.AltAnnotationQualifiedNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#altAnnotationQualifiedName}.
+ * @param ctx the parse tree
+ */
+ void exitAltAnnotationQualifiedName(JavaParser.AltAnnotationQualifiedNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#annotation}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotation(JavaParser.AnnotationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#annotation}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotation(JavaParser.AnnotationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#elementValuePairs}.
+ * @param ctx the parse tree
+ */
+ void enterElementValuePairs(JavaParser.ElementValuePairsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#elementValuePairs}.
+ * @param ctx the parse tree
+ */
+ void exitElementValuePairs(JavaParser.ElementValuePairsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#elementValuePair}.
+ * @param ctx the parse tree
+ */
+ void enterElementValuePair(JavaParser.ElementValuePairContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#elementValuePair}.
+ * @param ctx the parse tree
+ */
+ void exitElementValuePair(JavaParser.ElementValuePairContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#elementValue}.
+ * @param ctx the parse tree
+ */
+ void enterElementValue(JavaParser.ElementValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#elementValue}.
+ * @param ctx the parse tree
+ */
+ void exitElementValue(JavaParser.ElementValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#elementValueArrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterElementValueArrayInitializer(JavaParser.ElementValueArrayInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#elementValueArrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitElementValueArrayInitializer(JavaParser.ElementValueArrayInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#annotationTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeDeclaration(JavaParser.AnnotationTypeDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#annotationTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeDeclaration(JavaParser.AnnotationTypeDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#annotationTypeBody}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeBody(JavaParser.AnnotationTypeBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#annotationTypeBody}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeBody(JavaParser.AnnotationTypeBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#annotationTypeElementDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeElementDeclaration(JavaParser.AnnotationTypeElementDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#annotationTypeElementDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeElementDeclaration(JavaParser.AnnotationTypeElementDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#annotationTypeElementRest}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeElementRest(JavaParser.AnnotationTypeElementRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#annotationTypeElementRest}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeElementRest(JavaParser.AnnotationTypeElementRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#annotationMethodOrConstantRest}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationMethodOrConstantRest(JavaParser.AnnotationMethodOrConstantRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#annotationMethodOrConstantRest}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationMethodOrConstantRest(JavaParser.AnnotationMethodOrConstantRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#annotationMethodRest}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationMethodRest(JavaParser.AnnotationMethodRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#annotationMethodRest}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationMethodRest(JavaParser.AnnotationMethodRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#annotationConstantRest}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationConstantRest(JavaParser.AnnotationConstantRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#annotationConstantRest}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationConstantRest(JavaParser.AnnotationConstantRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void enterDefaultValue(JavaParser.DefaultValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void exitDefaultValue(JavaParser.DefaultValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#moduleDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterModuleDeclaration(JavaParser.ModuleDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#moduleDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitModuleDeclaration(JavaParser.ModuleDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#moduleBody}.
+ * @param ctx the parse tree
+ */
+ void enterModuleBody(JavaParser.ModuleBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#moduleBody}.
+ * @param ctx the parse tree
+ */
+ void exitModuleBody(JavaParser.ModuleBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#moduleDirective}.
+ * @param ctx the parse tree
+ */
+ void enterModuleDirective(JavaParser.ModuleDirectiveContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#moduleDirective}.
+ * @param ctx the parse tree
+ */
+ void exitModuleDirective(JavaParser.ModuleDirectiveContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#requiresModifier}.
+ * @param ctx the parse tree
+ */
+ void enterRequiresModifier(JavaParser.RequiresModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#requiresModifier}.
+ * @param ctx the parse tree
+ */
+ void exitRequiresModifier(JavaParser.RequiresModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#recordDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterRecordDeclaration(JavaParser.RecordDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#recordDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitRecordDeclaration(JavaParser.RecordDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#recordHeader}.
+ * @param ctx the parse tree
+ */
+ void enterRecordHeader(JavaParser.RecordHeaderContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#recordHeader}.
+ * @param ctx the parse tree
+ */
+ void exitRecordHeader(JavaParser.RecordHeaderContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#recordComponentList}.
+ * @param ctx the parse tree
+ */
+ void enterRecordComponentList(JavaParser.RecordComponentListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#recordComponentList}.
+ * @param ctx the parse tree
+ */
+ void exitRecordComponentList(JavaParser.RecordComponentListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#recordComponent}.
+ * @param ctx the parse tree
+ */
+ void enterRecordComponent(JavaParser.RecordComponentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#recordComponent}.
+ * @param ctx the parse tree
+ */
+ void exitRecordComponent(JavaParser.RecordComponentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#recordBody}.
+ * @param ctx the parse tree
+ */
+ void enterRecordBody(JavaParser.RecordBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#recordBody}.
+ * @param ctx the parse tree
+ */
+ void exitRecordBody(JavaParser.RecordBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#block}.
+ * @param ctx the parse tree
+ */
+ void enterBlock(JavaParser.BlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#block}.
+ * @param ctx the parse tree
+ */
+ void exitBlock(JavaParser.BlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#blockStatement}.
+ * @param ctx the parse tree
+ */
+ void enterBlockStatement(JavaParser.BlockStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#blockStatement}.
+ * @param ctx the parse tree
+ */
+ void exitBlockStatement(JavaParser.BlockStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#localVariableDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterLocalVariableDeclaration(JavaParser.LocalVariableDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#localVariableDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitLocalVariableDeclaration(JavaParser.LocalVariableDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#identifier}.
+ * @param ctx the parse tree
+ */
+ void enterIdentifier(JavaParser.IdentifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#identifier}.
+ * @param ctx the parse tree
+ */
+ void exitIdentifier(JavaParser.IdentifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeIdentifier}.
+ * @param ctx the parse tree
+ */
+ void enterTypeIdentifier(JavaParser.TypeIdentifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeIdentifier}.
+ * @param ctx the parse tree
+ */
+ void exitTypeIdentifier(JavaParser.TypeIdentifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#localTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterLocalTypeDeclaration(JavaParser.LocalTypeDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#localTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitLocalTypeDeclaration(JavaParser.LocalTypeDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#statement}.
+ * @param ctx the parse tree
+ */
+ void enterStatement(JavaParser.StatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#statement}.
+ * @param ctx the parse tree
+ */
+ void exitStatement(JavaParser.StatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#catchClause}.
+ * @param ctx the parse tree
+ */
+ void enterCatchClause(JavaParser.CatchClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#catchClause}.
+ * @param ctx the parse tree
+ */
+ void exitCatchClause(JavaParser.CatchClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#catchType}.
+ * @param ctx the parse tree
+ */
+ void enterCatchType(JavaParser.CatchTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#catchType}.
+ * @param ctx the parse tree
+ */
+ void exitCatchType(JavaParser.CatchTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#finallyBlock}.
+ * @param ctx the parse tree
+ */
+ void enterFinallyBlock(JavaParser.FinallyBlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#finallyBlock}.
+ * @param ctx the parse tree
+ */
+ void exitFinallyBlock(JavaParser.FinallyBlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#resourceSpecification}.
+ * @param ctx the parse tree
+ */
+ void enterResourceSpecification(JavaParser.ResourceSpecificationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#resourceSpecification}.
+ * @param ctx the parse tree
+ */
+ void exitResourceSpecification(JavaParser.ResourceSpecificationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#resources}.
+ * @param ctx the parse tree
+ */
+ void enterResources(JavaParser.ResourcesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#resources}.
+ * @param ctx the parse tree
+ */
+ void exitResources(JavaParser.ResourcesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#resource}.
+ * @param ctx the parse tree
+ */
+ void enterResource(JavaParser.ResourceContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#resource}.
+ * @param ctx the parse tree
+ */
+ void exitResource(JavaParser.ResourceContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#switchBlockStatementGroup}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchBlockStatementGroup(JavaParser.SwitchBlockStatementGroupContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#switchBlockStatementGroup}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchBlockStatementGroup(JavaParser.SwitchBlockStatementGroupContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#switchLabel}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchLabel(JavaParser.SwitchLabelContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#switchLabel}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchLabel(JavaParser.SwitchLabelContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#forControl}.
+ * @param ctx the parse tree
+ */
+ void enterForControl(JavaParser.ForControlContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#forControl}.
+ * @param ctx the parse tree
+ */
+ void exitForControl(JavaParser.ForControlContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#forInit}.
+ * @param ctx the parse tree
+ */
+ void enterForInit(JavaParser.ForInitContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#forInit}.
+ * @param ctx the parse tree
+ */
+ void exitForInit(JavaParser.ForInitContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#enhancedForControl}.
+ * @param ctx the parse tree
+ */
+ void enterEnhancedForControl(JavaParser.EnhancedForControlContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#enhancedForControl}.
+ * @param ctx the parse tree
+ */
+ void exitEnhancedForControl(JavaParser.EnhancedForControlContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#parExpression}.
+ * @param ctx the parse tree
+ */
+ void enterParExpression(JavaParser.ParExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#parExpression}.
+ * @param ctx the parse tree
+ */
+ void exitParExpression(JavaParser.ParExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#expressionList}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionList(JavaParser.ExpressionListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#expressionList}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionList(JavaParser.ExpressionListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#methodCall}.
+ * @param ctx the parse tree
+ */
+ void enterMethodCall(JavaParser.MethodCallContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#methodCall}.
+ * @param ctx the parse tree
+ */
+ void exitMethodCall(JavaParser.MethodCallContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterExpression(JavaParser.ExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitExpression(JavaParser.ExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#pattern}.
+ * @param ctx the parse tree
+ */
+ void enterPattern(JavaParser.PatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#pattern}.
+ * @param ctx the parse tree
+ */
+ void exitPattern(JavaParser.PatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#lambdaExpression}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaExpression(JavaParser.LambdaExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#lambdaExpression}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaExpression(JavaParser.LambdaExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#lambdaParameters}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaParameters(JavaParser.LambdaParametersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#lambdaParameters}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaParameters(JavaParser.LambdaParametersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#lambdaBody}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaBody(JavaParser.LambdaBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#lambdaBody}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaBody(JavaParser.LambdaBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#primary}.
+ * @param ctx the parse tree
+ */
+ void enterPrimary(JavaParser.PrimaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#primary}.
+ * @param ctx the parse tree
+ */
+ void exitPrimary(JavaParser.PrimaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#switchExpression}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchExpression(JavaParser.SwitchExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#switchExpression}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchExpression(JavaParser.SwitchExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#switchLabeledRule}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchLabeledRule(JavaParser.SwitchLabeledRuleContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#switchLabeledRule}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchLabeledRule(JavaParser.SwitchLabeledRuleContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#guardedPattern}.
+ * @param ctx the parse tree
+ */
+ void enterGuardedPattern(JavaParser.GuardedPatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#guardedPattern}.
+ * @param ctx the parse tree
+ */
+ void exitGuardedPattern(JavaParser.GuardedPatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#switchRuleOutcome}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchRuleOutcome(JavaParser.SwitchRuleOutcomeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#switchRuleOutcome}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchRuleOutcome(JavaParser.SwitchRuleOutcomeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#classType}.
+ * @param ctx the parse tree
+ */
+ void enterClassType(JavaParser.ClassTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#classType}.
+ * @param ctx the parse tree
+ */
+ void exitClassType(JavaParser.ClassTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#creator}.
+ * @param ctx the parse tree
+ */
+ void enterCreator(JavaParser.CreatorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#creator}.
+ * @param ctx the parse tree
+ */
+ void exitCreator(JavaParser.CreatorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#createdName}.
+ * @param ctx the parse tree
+ */
+ void enterCreatedName(JavaParser.CreatedNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#createdName}.
+ * @param ctx the parse tree
+ */
+ void exitCreatedName(JavaParser.CreatedNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#innerCreator}.
+ * @param ctx the parse tree
+ */
+ void enterInnerCreator(JavaParser.InnerCreatorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#innerCreator}.
+ * @param ctx the parse tree
+ */
+ void exitInnerCreator(JavaParser.InnerCreatorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#arrayCreatorRest}.
+ * @param ctx the parse tree
+ */
+ void enterArrayCreatorRest(JavaParser.ArrayCreatorRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#arrayCreatorRest}.
+ * @param ctx the parse tree
+ */
+ void exitArrayCreatorRest(JavaParser.ArrayCreatorRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#classCreatorRest}.
+ * @param ctx the parse tree
+ */
+ void enterClassCreatorRest(JavaParser.ClassCreatorRestContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#classCreatorRest}.
+ * @param ctx the parse tree
+ */
+ void exitClassCreatorRest(JavaParser.ClassCreatorRestContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#explicitGenericInvocation}.
+ * @param ctx the parse tree
+ */
+ void enterExplicitGenericInvocation(JavaParser.ExplicitGenericInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#explicitGenericInvocation}.
+ * @param ctx the parse tree
+ */
+ void exitExplicitGenericInvocation(JavaParser.ExplicitGenericInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArgumentsOrDiamond(JavaParser.TypeArgumentsOrDiamondContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArgumentsOrDiamond(JavaParser.TypeArgumentsOrDiamondContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#nonWildcardTypeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void enterNonWildcardTypeArgumentsOrDiamond(JavaParser.NonWildcardTypeArgumentsOrDiamondContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#nonWildcardTypeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void exitNonWildcardTypeArgumentsOrDiamond(JavaParser.NonWildcardTypeArgumentsOrDiamondContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#nonWildcardTypeArguments}.
+ * @param ctx the parse tree
+ */
+ void enterNonWildcardTypeArguments(JavaParser.NonWildcardTypeArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#nonWildcardTypeArguments}.
+ * @param ctx the parse tree
+ */
+ void exitNonWildcardTypeArguments(JavaParser.NonWildcardTypeArgumentsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeList}.
+ * @param ctx the parse tree
+ */
+ void enterTypeList(JavaParser.TypeListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeList}.
+ * @param ctx the parse tree
+ */
+ void exitTypeList(JavaParser.TypeListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeType}.
+ * @param ctx the parse tree
+ */
+ void enterTypeType(JavaParser.TypeTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeType}.
+ * @param ctx the parse tree
+ */
+ void exitTypeType(JavaParser.TypeTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#primitiveType}.
+ * @param ctx the parse tree
+ */
+ void enterPrimitiveType(JavaParser.PrimitiveTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#primitiveType}.
+ * @param ctx the parse tree
+ */
+ void exitPrimitiveType(JavaParser.PrimitiveTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#typeArguments}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArguments(JavaParser.TypeArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#typeArguments}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArguments(JavaParser.TypeArgumentsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#superSuffix}.
+ * @param ctx the parse tree
+ */
+ void enterSuperSuffix(JavaParser.SuperSuffixContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#superSuffix}.
+ * @param ctx the parse tree
+ */
+ void exitSuperSuffix(JavaParser.SuperSuffixContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#explicitGenericInvocationSuffix}.
+ * @param ctx the parse tree
+ */
+ void enterExplicitGenericInvocationSuffix(JavaParser.ExplicitGenericInvocationSuffixContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#explicitGenericInvocationSuffix}.
+ * @param ctx the parse tree
+ */
+ void exitExplicitGenericInvocationSuffix(JavaParser.ExplicitGenericInvocationSuffixContext ctx);
+ /**
+ * Enter a parse tree produced by {@link JavaParser#arguments}.
+ * @param ctx the parse tree
+ */
+ void enterArguments(JavaParser.ArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link JavaParser#arguments}.
+ * @param ctx the parse tree
+ */
+ void exitArguments(JavaParser.ArgumentsContext ctx);
+}
\ No newline at end of file
diff --git a/src/main/java/grammar/KotlinLexer.java b/src/main/java/grammar/KotlinLexer.java
new file mode 100644
index 00000000..b90b483c
--- /dev/null
+++ b/src/main/java/grammar/KotlinLexer.java
@@ -0,0 +1,1569 @@
+// Generated from KotlinLexer.g4 by ANTLR 4.5
+package grammar;
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
+public class KotlinLexer extends Lexer {
+ static { RuntimeMetaData.checkVersion("4.5", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ ShebangLine=1, DelimitedComment=2, LineComment=3, WS=4, NL=5, RESERVED=6,
+ DOT=7, COMMA=8, LPAREN=9, RPAREN=10, LSQUARE=11, RSQUARE=12, LCURL=13,
+ RCURL=14, MULT=15, MOD=16, DIV=17, ADD=18, SUB=19, INCR=20, DECR=21, CONJ=22,
+ DISJ=23, EXCL=24, COLON=25, SEMICOLON=26, ASSIGNMENT=27, ADD_ASSIGNMENT=28,
+ SUB_ASSIGNMENT=29, MULT_ASSIGNMENT=30, DIV_ASSIGNMENT=31, MOD_ASSIGNMENT=32,
+ ARROW=33, DOUBLE_ARROW=34, RANGE=35, COLONCOLON=36, Q_COLONCOLON=37, DOUBLE_SEMICOLON=38,
+ HASH=39, AT=40, QUEST=41, ELVIS=42, LANGLE=43, RANGLE=44, LE=45, GE=46,
+ EXCL_EQ=47, EXCL_EQEQ=48, AS_SAFE=49, EQEQ=50, EQEQEQ=51, SINGLE_QUOTE=52,
+ RETURN_AT=53, CONTINUE_AT=54, BREAK_AT=55, FILE=56, PACKAGE=57, IMPORT=58,
+ CLASS=59, INTERFACE=60, FUN=61, OBJECT=62, VAL=63, VAR=64, TYPE_ALIAS=65,
+ CONSTRUCTOR=66, BY=67, COMPANION=68, INIT=69, THIS=70, SUPER=71, TYPEOF=72,
+ WHERE=73, IF=74, ELSE=75, WHEN=76, TRY=77, CATCH=78, FINALLY=79, FOR=80,
+ DO=81, WHILE=82, THROW=83, RETURN=84, CONTINUE=85, BREAK=86, AS=87, IS=88,
+ IN=89, NOT_IS=90, NOT_IN=91, OUT=92, FIELD=93, PROPERTY=94, GET=95, SET=96,
+ GETTER=97, SETTER=98, RECEIVER=99, PARAM=100, SETPARAM=101, DELEGATE=102,
+ DYNAMIC=103, PUBLIC=104, PRIVATE=105, PROTECTED=106, INTERNAL=107, ENUM=108,
+ SEALED=109, ANNOTATION=110, DATA=111, INNER=112, TAILREC=113, OPERATOR=114,
+ INLINE=115, INFIX=116, EXTERNAL=117, SUSPEND=118, OVERRIDE=119, ABSTRACT=120,
+ FINAL=121, OPEN=122, CONST=123, LATEINIT=124, VARARG=125, NOINLINE=126,
+ CROSSINLINE=127, REIFIED=128, QUOTE_OPEN=129, TRIPLE_QUOTE_OPEN=130, RealLiteral=131,
+ FloatLiteral=132, DoubleLiteral=133, LongLiteral=134, IntegerLiteral=135,
+ HexLiteral=136, BinLiteral=137, BooleanLiteral=138, NullLiteral=139, Identifier=140,
+ LabelReference=141, LabelDefinition=142, FieldIdentifier=143, CharacterLiteral=144,
+ UNICODE_CLASS_LL=145, UNICODE_CLASS_LM=146, UNICODE_CLASS_LO=147, UNICODE_CLASS_LT=148,
+ UNICODE_CLASS_LU=149, UNICODE_CLASS_ND=150, UNICODE_CLASS_NL=151, Inside_Comment=152,
+ Inside_WS=153, Inside_NL=154, QUOTE_CLOSE=155, LineStrRef=156, LineStrText=157,
+ LineStrEscapedChar=158, LineStrExprStart=159, TRIPLE_QUOTE_CLOSE=160,
+ MultiLineStringQuote=161, MultiLineStrRef=162, MultiLineStrText=163, MultiLineStrEscapedChar=164,
+ MultiLineStrExprStart=165, MultiLineNL=166, StrExpr_IN=167, StrExpr_Comment=168,
+ StrExpr_WS=169, StrExpr_NL=170;
+ public static final int Inside = 1;
+ public static final int LineString = 2;
+ public static final int MultiLineString = 3;
+ public static final int StringExpression = 4;
+ public static String[] modeNames = {
+ "DEFAULT_MODE", "Inside", "LineString", "MultiLineString", "StringExpression"
+ };
+
+ public static final String[] ruleNames = {
+ "ShebangLine", "DelimitedComment", "LineComment", "WS", "NL", "RESERVED",
+ "DOT", "COMMA", "LPAREN", "RPAREN", "LSQUARE", "RSQUARE", "LCURL", "RCURL",
+ "MULT", "MOD", "DIV", "ADD", "SUB", "INCR", "DECR", "CONJ", "DISJ", "EXCL",
+ "COLON", "SEMICOLON", "ASSIGNMENT", "ADD_ASSIGNMENT", "SUB_ASSIGNMENT",
+ "MULT_ASSIGNMENT", "DIV_ASSIGNMENT", "MOD_ASSIGNMENT", "ARROW", "DOUBLE_ARROW",
+ "RANGE", "COLONCOLON", "Q_COLONCOLON", "DOUBLE_SEMICOLON", "HASH", "AT",
+ "QUEST", "ELVIS", "LANGLE", "RANGLE", "LE", "GE", "EXCL_EQ", "EXCL_EQEQ",
+ "AS_SAFE", "EQEQ", "EQEQEQ", "SINGLE_QUOTE", "RETURN_AT", "CONTINUE_AT",
+ "BREAK_AT", "FILE", "PACKAGE", "IMPORT", "CLASS", "INTERFACE", "FUN",
+ "OBJECT", "VAL", "VAR", "TYPE_ALIAS", "CONSTRUCTOR", "BY", "COMPANION",
+ "INIT", "THIS", "SUPER", "TYPEOF", "WHERE", "IF", "ELSE", "WHEN", "TRY",
+ "CATCH", "FINALLY", "FOR", "DO", "WHILE", "THROW", "RETURN", "CONTINUE",
+ "BREAK", "AS", "IS", "IN", "NOT_IS", "NOT_IN", "OUT", "FIELD", "PROPERTY",
+ "GET", "SET", "GETTER", "SETTER", "RECEIVER", "PARAM", "SETPARAM", "DELEGATE",
+ "DYNAMIC", "PUBLIC", "PRIVATE", "PROTECTED", "INTERNAL", "ENUM", "SEALED",
+ "ANNOTATION", "DATA", "INNER", "TAILREC", "OPERATOR", "INLINE", "INFIX",
+ "EXTERNAL", "SUSPEND", "OVERRIDE", "ABSTRACT", "FINAL", "OPEN", "CONST",
+ "LATEINIT", "VARARG", "NOINLINE", "CROSSINLINE", "REIFIED", "QUOTE_OPEN",
+ "TRIPLE_QUOTE_OPEN", "RealLiteral", "FloatLiteral", "DoubleLiteral", "LongLiteral",
+ "IntegerLiteral", "DecDigit", "DecDigitNoZero", "UNICODE_CLASS_ND_NoZeros",
+ "HexLiteral", "HexDigit", "BinLiteral", "BinDigit", "BooleanLiteral",
+ "NullLiteral", "Identifier", "LabelReference", "LabelDefinition", "FieldIdentifier",
+ "CharacterLiteral", "EscapeSeq", "UniCharacterLiteral", "EscapedIdentifier",
+ "Letter", "UNICODE_CLASS_LL", "UNICODE_CLASS_LM", "UNICODE_CLASS_LO",
+ "UNICODE_CLASS_LT", "UNICODE_CLASS_LU", "UNICODE_CLASS_ND", "UNICODE_CLASS_NL",
+ "Inside_RPAREN", "Inside_RSQUARE", "Inside_LPAREN", "Inside_LSQUARE",
+ "Inside_LCURL", "Inside_RCURL", "Inside_DOT", "Inside_COMMA", "Inside_MULT",
+ "Inside_MOD", "Inside_DIV", "Inside_ADD", "Inside_SUB", "Inside_INCR",
+ "Inside_DECR", "Inside_CONJ", "Inside_DISJ", "Inside_EXCL", "Inside_COLON",
+ "Inside_SEMICOLON", "Inside_ASSIGNMENT", "Inside_ADD_ASSIGNMENT", "Inside_SUB_ASSIGNMENT",
+ "Inside_MULT_ASSIGNMENT", "Inside_DIV_ASSIGNMENT", "Inside_MOD_ASSIGNMENT",
+ "Inside_ARROW", "Inside_DOUBLE_ARROW", "Inside_RANGE", "Inside_RESERVED",
+ "Inside_COLONCOLON", "Inside_Q_COLONCOLON", "Inside_DOUBLE_SEMICOLON",
+ "Inside_HASH", "Inside_AT", "Inside_QUEST", "Inside_ELVIS", "Inside_LANGLE",
+ "Inside_RANGLE", "Inside_LE", "Inside_GE", "Inside_EXCL_EQ", "Inside_EXCL_EQEQ",
+ "Inside_NOT_IS", "Inside_NOT_IN", "Inside_AS_SAFE", "Inside_EQEQ", "Inside_EQEQEQ",
+ "Inside_SINGLE_QUOTE", "Inside_QUOTE_OPEN", "Inside_TRIPLE_QUOTE_OPEN",
+ "Inside_VAL", "Inside_VAR", "Inside_OBJECT", "Inside_SUPER", "Inside_IN",
+ "Inside_OUT", "Inside_FIELD", "Inside_FILE", "Inside_PROPERTY", "Inside_GET",
+ "Inside_SET", "Inside_RECEIVER", "Inside_PARAM", "Inside_SETPARAM", "Inside_DELEGATE",
+ "Inside_THROW", "Inside_RETURN", "Inside_CONTINUE", "Inside_BREAK", "Inside_RETURN_AT",
+ "Inside_CONTINUE_AT", "Inside_BREAK_AT", "Inside_IF", "Inside_ELSE", "Inside_WHEN",
+ "Inside_TRY", "Inside_CATCH", "Inside_FINALLY", "Inside_FOR", "Inside_DO",
+ "Inside_WHILE", "Inside_PUBLIC", "Inside_PRIVATE", "Inside_PROTECTED",
+ "Inside_INTERNAL", "Inside_ENUM", "Inside_SEALED", "Inside_ANNOTATION",
+ "Inside_DATA", "Inside_INNER", "Inside_TAILREC", "Inside_OPERATOR", "Inside_INLINE",
+ "Inside_INFIX", "Inside_EXTERNAL", "Inside_SUSPEND", "Inside_OVERRIDE",
+ "Inside_ABSTRACT", "Inside_FINAL", "Inside_OPEN", "Inside_CONST", "Inside_LATEINIT",
+ "Inside_VARARG", "Inside_NOINLINE", "Inside_CROSSINLINE", "Inside_REIFIED",
+ "Inside_BooleanLiteral", "Inside_IntegerLiteral", "Inside_HexLiteral",
+ "Inside_BinLiteral", "Inside_CharacterLiteral", "Inside_RealLiteral",
+ "Inside_NullLiteral", "Inside_LongLiteral", "Inside_Identifier", "Inside_LabelReference",
+ "Inside_LabelDefinition", "Inside_Comment", "Inside_WS", "Inside_NL",
+ "QUOTE_CLOSE", "LineStrRef", "LineStrText", "LineStrEscapedChar", "LineStrExprStart",
+ "TRIPLE_QUOTE_CLOSE", "MultiLineStringQuote", "MultiLineStrRef", "MultiLineStrText",
+ "MultiLineStrEscapedChar", "MultiLineStrExprStart", "MultiLineNL", "StrExpr_RCURL",
+ "StrExpr_LPAREN", "StrExpr_LSQUARE", "StrExpr_RPAREN", "StrExpr_RSQUARE",
+ "StrExpr_LCURL", "StrExpr_DOT", "StrExpr_COMMA", "StrExpr_MULT", "StrExpr_MOD",
+ "StrExpr_DIV", "StrExpr_ADD", "StrExpr_SUB", "StrExpr_INCR", "StrExpr_DECR",
+ "StrExpr_CONJ", "StrExpr_DISJ", "StrExpr_EXCL", "StrExpr_COLON", "StrExpr_SEMICOLON",
+ "StrExpr_ASSIGNMENT", "StrExpr_ADD_ASSIGNMENT", "StrExpr_SUB_ASSIGNMENT",
+ "StrExpr_MULT_ASSIGNMENT", "StrExpr_DIV_ASSIGNMENT", "StrExpr_MOD_ASSIGNMENT",
+ "StrExpr_ARROW", "StrExpr_DOUBLE_ARROW", "StrExpr_RANGE", "StrExpr_COLONCOLON",
+ "StrExpr_Q_COLONCOLON", "StrExpr_DOUBLE_SEMICOLON", "StrExpr_HASH", "StrExpr_AT",
+ "StrExpr_QUEST", "StrExpr_ELVIS", "StrExpr_LANGLE", "StrExpr_RANGLE",
+ "StrExpr_LE", "StrExpr_GE", "StrExpr_EXCL_EQ", "StrExpr_EXCL_EQEQ", "StrExpr_AS",
+ "StrExpr_IS", "StrExpr_IN", "StrExpr_NOT_IS", "StrExpr_NOT_IN", "StrExpr_AS_SAFE",
+ "StrExpr_EQEQ", "StrExpr_EQEQEQ", "StrExpr_SINGLE_QUOTE", "StrExpr_QUOTE_OPEN",
+ "StrExpr_TRIPLE_QUOTE_OPEN", "StrExpr_BooleanLiteral", "StrExpr_IntegerLiteral",
+ "StrExpr_HexLiteral", "StrExpr_BinLiteral", "StrExpr_CharacterLiteral",
+ "StrExpr_RealLiteral", "StrExpr_NullLiteral", "StrExpr_LongLiteral", "StrExpr_Identifier",
+ "StrExpr_LabelReference", "StrExpr_LabelDefinition", "StrExpr_Comment",
+ "StrExpr_WS", "StrExpr_NL"
+ };
+
+ private static final String[] _LITERAL_NAMES = {
+ null, null, null, null, null, null, "'...'", "'.'", "','", "'('", null,
+ "'['", null, "'{'", "'}'", "'*'", "'%'", "'/'", "'+'", "'-'", "'++'",
+ "'--'", "'&&'", "'||'", "'!'", "':'", "';'", "'='", "'+='", "'-='", "'*='",
+ "'/='", "'%='", "'->'", "'=>'", "'..'", "'::'", "'?::'", "';;'", "'#'",
+ "'@'", "'?'", "'?:'", "'<'", "'>'", "'<='", "'>='", "'!='", "'!=='", "'as?'",
+ "'=='", "'==='", "'''", null, null, null, "'@file'", "'package'", "'import'",
+ "'class'", "'interface'", "'fun'", "'object'", "'val'", "'var'", "'typealias'",
+ "'constructor'", "'by'", "'companion'", "'init'", "'this'", "'super'",
+ "'typeof'", "'where'", "'if'", "'else'", "'when'", "'try'", "'catch'",
+ "'finally'", "'for'", "'do'", "'while'", "'throw'", "'return'", "'continue'",
+ "'break'", "'as'", "'is'", "'in'", null, null, "'out'", "'@field'", "'@property'",
+ "'@get'", "'@set'", "'get'", "'set'", "'@receiver'", "'@param'", "'@setparam'",
+ "'@delegate'", "'dynamic'", "'public'", "'private'", "'protected'", "'internal'",
+ "'enum'", "'sealed'", "'annotation'", "'data'", "'inner'", "'tailrec'",
+ "'operator'", "'inline'", "'infix'", "'external'", "'suspend'", "'override'",
+ "'abstract'", "'final'", "'open'", "'const'", "'lateinit'", "'vararg'",
+ "'noinline'", "'crossinline'", "'reified'", null, "'\"\"\"'", null, null,
+ null, null, null, null, null, null, "'null'"
+ };
+ private static final String[] _SYMBOLIC_NAMES = {
+ null, "ShebangLine", "DelimitedComment", "LineComment", "WS", "NL", "RESERVED",
+ "DOT", "COMMA", "LPAREN", "RPAREN", "LSQUARE", "RSQUARE", "LCURL", "RCURL",
+ "MULT", "MOD", "DIV", "ADD", "SUB", "INCR", "DECR", "CONJ", "DISJ", "EXCL",
+ "COLON", "SEMICOLON", "ASSIGNMENT", "ADD_ASSIGNMENT", "SUB_ASSIGNMENT",
+ "MULT_ASSIGNMENT", "DIV_ASSIGNMENT", "MOD_ASSIGNMENT", "ARROW", "DOUBLE_ARROW",
+ "RANGE", "COLONCOLON", "Q_COLONCOLON", "DOUBLE_SEMICOLON", "HASH", "AT",
+ "QUEST", "ELVIS", "LANGLE", "RANGLE", "LE", "GE", "EXCL_EQ", "EXCL_EQEQ",
+ "AS_SAFE", "EQEQ", "EQEQEQ", "SINGLE_QUOTE", "RETURN_AT", "CONTINUE_AT",
+ "BREAK_AT", "FILE", "PACKAGE", "IMPORT", "CLASS", "INTERFACE", "FUN",
+ "OBJECT", "VAL", "VAR", "TYPE_ALIAS", "CONSTRUCTOR", "BY", "COMPANION",
+ "INIT", "THIS", "SUPER", "TYPEOF", "WHERE", "IF", "ELSE", "WHEN", "TRY",
+ "CATCH", "FINALLY", "FOR", "DO", "WHILE", "THROW", "RETURN", "CONTINUE",
+ "BREAK", "AS", "IS", "IN", "NOT_IS", "NOT_IN", "OUT", "FIELD", "PROPERTY",
+ "GET", "SET", "GETTER", "SETTER", "RECEIVER", "PARAM", "SETPARAM", "DELEGATE",
+ "DYNAMIC", "PUBLIC", "PRIVATE", "PROTECTED", "INTERNAL", "ENUM", "SEALED",
+ "ANNOTATION", "DATA", "INNER", "TAILREC", "OPERATOR", "INLINE", "INFIX",
+ "EXTERNAL", "SUSPEND", "OVERRIDE", "ABSTRACT", "FINAL", "OPEN", "CONST",
+ "LATEINIT", "VARARG", "NOINLINE", "CROSSINLINE", "REIFIED", "QUOTE_OPEN",
+ "TRIPLE_QUOTE_OPEN", "RealLiteral", "FloatLiteral", "DoubleLiteral", "LongLiteral",
+ "IntegerLiteral", "HexLiteral", "BinLiteral", "BooleanLiteral", "NullLiteral",
+ "Identifier", "LabelReference", "LabelDefinition", "FieldIdentifier",
+ "CharacterLiteral", "UNICODE_CLASS_LL", "UNICODE_CLASS_LM", "UNICODE_CLASS_LO",
+ "UNICODE_CLASS_LT", "UNICODE_CLASS_LU", "UNICODE_CLASS_ND", "UNICODE_CLASS_NL",
+ "Inside_Comment", "Inside_WS", "Inside_NL", "QUOTE_CLOSE", "LineStrRef",
+ "LineStrText", "LineStrEscapedChar", "LineStrExprStart", "TRIPLE_QUOTE_CLOSE",
+ "MultiLineStringQuote", "MultiLineStrRef", "MultiLineStrText", "MultiLineStrEscapedChar",
+ "MultiLineStrExprStart", "MultiLineNL", "StrExpr_IN", "StrExpr_Comment",
+ "StrExpr_WS", "StrExpr_NL"
+ };
+ 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;
+ }
+
+
+ public KotlinLexer(CharStream input) {
+ super(input);
+ _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @Override
+ public String getGrammarFileName() { return "KotlinLexer.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public String[] getModeNames() { return modeNames; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ private static final int _serializedATNSegments = 2;
+ private static final String _serializedATNSegment0 =
+ "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2\u00ac\u0a30\b\1\b"+
+ "\1\b\1\b\1\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b"+
+ "\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t"+
+ "\20\4\21\t\21\4\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t"+
+ "\27\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t"+
+ "\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t"+
+ "(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t"+
+ "\62\4\63\t\63\4\64\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t"+
+ ":\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4"+
+ "F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\t"+
+ "Q\4R\tR\4S\tS\4T\tT\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\"+
+ "\4]\t]\4^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h"+
+ "\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts"+
+ "\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177"+
+ "\t\177\4\u0080\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083"+
+ "\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088"+
+ "\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c"+
+ "\4\u008d\t\u008d\4\u008e\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091"+
+ "\t\u0091\4\u0092\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095"+
+ "\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a"+
+ "\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e"+
+ "\4\u009f\t\u009f\4\u00a0\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3"+
+ "\t\u00a3\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7\t\u00a7"+
+ "\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa\t\u00aa\4\u00ab\t\u00ab\4\u00ac"+
+ "\t\u00ac\4\u00ad\t\u00ad\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0"+
+ "\4\u00b1\t\u00b1\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5"+
+ "\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8\t\u00b8\4\u00b9\t\u00b9"+
+ "\4\u00ba\t\u00ba\4\u00bb\t\u00bb\4\u00bc\t\u00bc\4\u00bd\t\u00bd\4\u00be"+
+ "\t\u00be\4\u00bf\t\u00bf\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2"+
+ "\4\u00c3\t\u00c3\4\u00c4\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6\4\u00c7"+
+ "\t\u00c7\4\u00c8\t\u00c8\4\u00c9\t\u00c9\4\u00ca\t\u00ca\4\u00cb\t\u00cb"+
+ "\4\u00cc\t\u00cc\4\u00cd\t\u00cd\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0"+
+ "\t\u00d0\4\u00d1\t\u00d1\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4\t\u00d4"+
+ "\4\u00d5\t\u00d5\4\u00d6\t\u00d6\4\u00d7\t\u00d7\4\u00d8\t\u00d8\4\u00d9"+
+ "\t\u00d9\4\u00da\t\u00da\4\u00db\t\u00db\4\u00dc\t\u00dc\4\u00dd\t\u00dd"+
+ "\4\u00de\t\u00de\4\u00df\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2"+
+ "\t\u00e2\4\u00e3\t\u00e3\4\u00e4\t\u00e4\4\u00e5\t\u00e5\4\u00e6\t\u00e6"+
+ "\4\u00e7\t\u00e7\4\u00e8\t\u00e8\4\u00e9\t\u00e9\4\u00ea\t\u00ea\4\u00eb"+
+ "\t\u00eb\4\u00ec\t\u00ec\4\u00ed\t\u00ed\4\u00ee\t\u00ee\4\u00ef\t\u00ef"+
+ "\4\u00f0\t\u00f0\4\u00f1\t\u00f1\4\u00f2\t\u00f2\4\u00f3\t\u00f3\4\u00f4"+
+ "\t\u00f4\4\u00f5\t\u00f5\4\u00f6\t\u00f6\4\u00f7\t\u00f7\4\u00f8\t\u00f8"+
+ "\4\u00f9\t\u00f9\4\u00fa\t\u00fa\4\u00fb\t\u00fb\4\u00fc\t\u00fc\4\u00fd"+
+ "\t\u00fd\4\u00fe\t\u00fe\4\u00ff\t\u00ff\4\u0100\t\u0100\4\u0101\t\u0101"+
+ "\4\u0102\t\u0102\4\u0103\t\u0103\4\u0104\t\u0104\4\u0105\t\u0105\4\u0106"+
+ "\t\u0106\4\u0107\t\u0107\4\u0108\t\u0108\4\u0109\t\u0109\4\u010a\t\u010a"+
+ "\4\u010b\t\u010b\4\u010c\t\u010c\4\u010d\t\u010d\4\u010e\t\u010e\4\u010f"+
+ "\t\u010f\4\u0110\t\u0110\4\u0111\t\u0111\4\u0112\t\u0112\4\u0113\t\u0113"+
+ "\4\u0114\t\u0114\4\u0115\t\u0115\4\u0116\t\u0116\4\u0117\t\u0117\4\u0118"+
+ "\t\u0118\4\u0119\t\u0119\4\u011a\t\u011a\4\u011b\t\u011b\4\u011c\t\u011c"+
+ "\4\u011d\t\u011d\4\u011e\t\u011e\4\u011f\t\u011f\4\u0120\t\u0120\4\u0121"+
+ "\t\u0121\4\u0122\t\u0122\4\u0123\t\u0123\4\u0124\t\u0124\4\u0125\t\u0125"+
+ "\4\u0126\t\u0126\4\u0127\t\u0127\4\u0128\t\u0128\4\u0129\t\u0129\4\u012a"+
+ "\t\u012a\4\u012b\t\u012b\4\u012c\t\u012c\4\u012d\t\u012d\4\u012e\t\u012e"+
+ "\4\u012f\t\u012f\4\u0130\t\u0130\4\u0131\t\u0131\4\u0132\t\u0132\4\u0133"+
+ "\t\u0133\4\u0134\t\u0134\4\u0135\t\u0135\4\u0136\t\u0136\4\u0137\t\u0137"+
+ "\4\u0138\t\u0138\4\u0139\t\u0139\4\u013a\t\u013a\4\u013b\t\u013b\4\u013c"+
+ "\t\u013c\4\u013d\t\u013d\4\u013e\t\u013e\4\u013f\t\u013f\4\u0140\t\u0140"+
+ "\4\u0141\t\u0141\4\u0142\t\u0142\4\u0143\t\u0143\4\u0144\t\u0144\4\u0145"+
+ "\t\u0145\4\u0146\t\u0146\4\u0147\t\u0147\4\u0148\t\u0148\4\u0149\t\u0149"+
+ "\4\u014a\t\u014a\4\u014b\t\u014b\4\u014c\t\u014c\4\u014d\t\u014d\4\u014e"+
+ "\t\u014e\4\u014f\t\u014f\4\u0150\t\u0150\4\u0151\t\u0151\4\u0152\t\u0152"+
+ "\4\u0153\t\u0153\4\u0154\t\u0154\4\u0155\t\u0155\4\u0156\t\u0156\4\u0157"+
+ "\t\u0157\4\u0158\t\u0158\4\u0159\t\u0159\4\u015a\t\u015a\4\u015b\t\u015b"+
+ "\4\u015c\t\u015c\4\u015d\t\u015d\4\u015e\t\u015e\4\u015f\t\u015f\4\u0160"+
+ "\t\u0160\4\u0161\t\u0161\4\u0162\t\u0162\4\u0163\t\u0163\4\u0164\t\u0164"+
+ "\4\u0165\t\u0165\4\u0166\t\u0166\4\u0167\t\u0167\4\u0168\t\u0168\4\u0169"+
+ "\t\u0169\3\2\3\2\3\2\3\2\7\2\u02dc\n\2\f\2\16\2\u02df\13\2\3\2\3\2\3\3"+
+ "\3\3\3\3\3\3\3\3\7\3\u02e8\n\3\f\3\16\3\u02eb\13\3\3\3\3\3\3\3\3\3\3\3"+
+ "\3\4\3\4\3\4\3\4\7\4\u02f6\n\4\f\4\16\4\u02f9\13\4\3\4\3\4\3\5\3\5\3\5"+
+ "\3\5\3\6\3\6\3\6\5\6\u0304\n\6\3\7\3\7\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n"+
+ "\3\n\3\n\3\13\3\13\3\f\3\f\3\f\3\f\3\r\3\r\3\16\3\16\3\17\3\17\3\20\3"+
+ "\20\3\21\3\21\3\22\3\22\3\23\3\23\3\24\3\24\3\25\3\25\3\25\3\26\3\26\3"+
+ "\26\3\27\3\27\3\27\3\30\3\30\3\30\3\31\3\31\3\32\3\32\3\33\3\33\3\34\3"+
+ "\34\3\35\3\35\3\35\3\36\3\36\3\36\3\37\3\37\3\37\3 \3 \3 \3!\3!\3!\3\""+
+ "\3\"\3\"\3#\3#\3#\3$\3$\3$\3%\3%\3%\3&\3&\3&\3&\3\'\3\'\3\'\3(\3(\3)\3"+
+ ")\3*\3*\3+\3+\3+\3,\3,\3-\3-\3.\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\61\3\61"+
+ "\3\61\3\61\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\65"+
+ "\3\65\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\67\3\67\3\67"+
+ "\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\38\38\38\38\38\38\38\38"+
+ "\38\39\39\39\39\39\39\3:\3:\3:\3:\3:\3:\3:\3:\3;\3;\3;\3;\3;\3;\3;\3<"+
+ "\3<\3<\3<\3<\3<\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3>\3>\3>\3>\3?\3?\3?\3?"+
+ "\3?\3?\3?\3@\3@\3@\3@\3A\3A\3A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3C\3C"+
+ "\3C\3C\3C\3C\3C\3C\3C\3C\3C\3C\3D\3D\3D\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E"+
+ "\3F\3F\3F\3F\3F\3G\3G\3G\3G\3G\3H\3H\3H\3H\3H\3H\3I\3I\3I\3I\3I\3I\3I"+
+ "\3J\3J\3J\3J\3J\3J\3K\3K\3K\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3N\3N\3N\3N"+
+ "\3O\3O\3O\3O\3O\3O\3P\3P\3P\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3R\3R\3R\3S\3S"+
+ "\3S\3S\3S\3S\3T\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3V\3V\3V\3V\3V\3V"+
+ "\3V\3V\3V\3W\3W\3W\3W\3W\3W\3X\3X\3X\3Y\3Y\3Y\3Z\3Z\3Z\3[\3[\3[\3[\3["+
+ "\3[\6[\u0473\n[\r[\16[\u0474\3\\\3\\\3\\\3\\\3\\\3\\\6\\\u047d\n\\\r\\"+
+ "\16\\\u047e\3]\3]\3]\3]\3^\3^\3^\3^\3^\3^\3^\3_\3_\3_\3_\3_\3_\3_\3_\3"+
+ "_\3_\3`\3`\3`\3`\3`\3a\3a\3a\3a\3a\3b\3b\3b\3b\3c\3c\3c\3c\3d\3d\3d\3"+
+ "d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3e\3e\3f\3f\3f\3f\3f\3f\3f\3f\3f\3"+
+ "f\3g\3g\3g\3g\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3h\3h\3h\3i\3i\3i\3i\3"+
+ "i\3i\3i\3j\3j\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\3k\3k\3k\3k\3k\3k\3l\3l\3"+
+ "l\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3n\3n\3n\3n\3n\3n\3n\3o\3o\3o\3o\3"+
+ "o\3o\3o\3o\3o\3o\3o\3p\3p\3p\3p\3p\3q\3q\3q\3q\3q\3q\3r\3r\3r\3r\3r\3"+
+ "r\3r\3r\3s\3s\3s\3s\3s\3s\3s\3s\3s\3t\3t\3t\3t\3t\3t\3t\3u\3u\3u\3u\3"+
+ "u\3u\3v\3v\3v\3v\3v\3v\3v\3v\3v\3w\3w\3w\3w\3w\3w\3w\3w\3x\3x\3x\3x\3"+
+ "x\3x\3x\3x\3x\3y\3y\3y\3y\3y\3y\3y\3y\3y\3z\3z\3z\3z\3z\3z\3{\3{\3{\3"+
+ "{\3{\3|\3|\3|\3|\3|\3|\3}\3}\3}\3}\3}\3}\3}\3}\3}\3~\3~\3~\3~\3~\3~\3"+
+ "~\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\u0080\3\u0080"+
+ "\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080"+
+ "\3\u0080\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081"+
+ "\3\u0082\3\u0082\3\u0082\3\u0082\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083"+
+ "\3\u0083\3\u0084\3\u0084\5\u0084\u05a4\n\u0084\3\u0085\3\u0085\5\u0085"+
+ "\u05a8\n\u0085\3\u0085\3\u0085\3\u0086\3\u0086\7\u0086\u05ae\n\u0086\f"+
+ "\u0086\16\u0086\u05b1\13\u0086\3\u0086\5\u0086\u05b4\n\u0086\3\u0086\3"+
+ "\u0086\3\u0086\3\u0086\7\u0086\u05ba\n\u0086\f\u0086\16\u0086\u05bd\13"+
+ "\u0086\3\u0086\3\u0086\5\u0086\u05c1\n\u0086\3\u0086\5\u0086\u05c4\n\u0086"+
+ "\3\u0086\6\u0086\u05c7\n\u0086\r\u0086\16\u0086\u05c8\3\u0086\3\u0086"+
+ "\3\u0086\6\u0086\u05ce\n\u0086\r\u0086\16\u0086\u05cf\3\u0086\3\u0086"+
+ "\3\u0086\6\u0086\u05d5\n\u0086\r\u0086\16\u0086\u05d6\3\u0086\3\u0086"+
+ "\5\u0086\u05db\n\u0086\3\u0086\6\u0086\u05de\n\u0086\r\u0086\16\u0086"+
+ "\u05df\3\u0086\6\u0086\u05e3\n\u0086\r\u0086\16\u0086\u05e4\3\u0086\3"+
+ "\u0086\5\u0086\u05e9\n\u0086\3\u0086\3\u0086\3\u0086\6\u0086\u05ee\n\u0086"+
+ "\r\u0086\16\u0086\u05ef\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\6\u0086"+
+ "\u05f7\n\u0086\r\u0086\16\u0086\u05f8\3\u0086\3\u0086\3\u0086\5\u0086"+
+ "\u05fe\n\u0086\3\u0086\6\u0086\u0601\n\u0086\r\u0086\16\u0086\u0602\3"+
+ "\u0086\3\u0086\3\u0086\6\u0086\u0608\n\u0086\r\u0086\16\u0086\u0609\3"+
+ "\u0086\3\u0086\3\u0086\5\u0086\u060f\n\u0086\3\u0086\3\u0086\3\u0086\6"+
+ "\u0086\u0614\n\u0086\r\u0086\16\u0086\u0615\3\u0086\3\u0086\5\u0086\u061a"+
+ "\n\u0086\3\u0087\3\u0087\3\u0087\5\u0087\u061f\n\u0087\3\u0087\3\u0087"+
+ "\3\u0088\3\u0088\3\u0088\7\u0088\u0626\n\u0088\f\u0088\16\u0088\u0629"+
+ "\13\u0088\3\u0088\3\u0088\3\u0088\6\u0088\u062e\n\u0088\r\u0088\16\u0088"+
+ "\u062f\3\u0088\3\u0088\3\u0088\3\u0088\7\u0088\u0636\n\u0088\f\u0088\16"+
+ "\u0088\u0639\13\u0088\3\u0088\3\u0088\5\u0088\u063d\n\u0088\3\u0088\6"+
+ "\u0088\u0640\n\u0088\r\u0088\16\u0088\u0641\3\u0088\3\u0088\7\u0088\u0646"+
+ "\n\u0088\f\u0088\16\u0088\u0649\13\u0088\3\u0088\3\u0088\5\u0088\u064d"+
+ "\n\u0088\3\u0088\3\u0088\3\u0088\6\u0088\u0652\n\u0088\r\u0088\16\u0088"+
+ "\u0653\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\6\u0088\u065b\n\u0088\r"+
+ "\u0088\16\u0088\u065c\3\u0088\3\u0088\3\u0088\5\u0088\u0662\n\u0088\3"+
+ "\u0088\6\u0088\u0665\n\u0088\r\u0088\16\u0088\u0666\3\u0088\3\u0088\3"+
+ "\u0088\6\u0088\u066c\n\u0088\r\u0088\16\u0088\u066d\3\u0088\3\u0088\3"+
+ "\u0088\5\u0088\u0673\n\u0088\3\u0088\3\u0088\3\u0088\6\u0088\u0678\n\u0088"+
+ "\r\u0088\16\u0088\u0679\3\u0088\3\u0088\5\u0088\u067e\n\u0088\3\u0089"+
+ "\3\u0089\3\u008a\3\u008a\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c\3\u008c"+
+ "\3\u008c\7\u008c\u068b\n\u008c\f\u008c\16\u008c\u068e\13\u008c\3\u008d"+
+ "\3\u008d\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\7\u008e\u0697\n\u008e"+
+ "\f\u008e\16\u008e\u069a\13\u008e\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090"+
+ "\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\5\u0090\u06a7\n\u0090"+
+ "\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0092\3\u0092\5\u0092\u06b0"+
+ "\n\u0092\3\u0092\3\u0092\3\u0092\7\u0092\u06b5\n\u0092\f\u0092\16\u0092"+
+ "\u06b8\13\u0092\3\u0092\3\u0092\6\u0092\u06bc\n\u0092\r\u0092\16\u0092"+
+ "\u06bd\3\u0092\5\u0092\u06c1\n\u0092\3\u0093\3\u0093\3\u0093\3\u0094\3"+
+ "\u0094\3\u0094\3\u0095\3\u0095\3\u0095\3\u0096\3\u0096\3\u0096\5\u0096"+
+ "\u06cf\n\u0096\3\u0096\3\u0096\3\u0097\3\u0097\5\u0097\u06d5\n\u0097\3"+
+ "\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0099\3\u0099"+
+ "\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\5\u009a\u06e7"+
+ "\n\u009a\3\u009b\3\u009b\3\u009c\3\u009c\3\u009d\3\u009d\3\u009e\3\u009e"+
+ "\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2"+
+ "\3\u00a2\3\u00a2\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a4\3\u00a4"+
+ "\3\u00a4\3\u00a4\3\u00a4\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a6"+
+ "\3\u00a6\3\u00a6\3\u00a6\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a8\3\u00a8"+
+ "\3\u00a8\3\u00a8\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00aa\3\u00aa\3\u00aa"+
+ "\3\u00aa\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ac"+
+ "\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00af"+
+ "\3\u00af\3\u00af\3\u00af\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b1\3\u00b1"+
+ "\3\u00b1\3\u00b1\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b3\3\u00b3\3\u00b3"+
+ "\3\u00b3\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b5\3\u00b5\3\u00b5\3\u00b5"+
+ "\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b8"+
+ "\3\u00b8\3\u00b8\3\u00b8\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00ba\3\u00ba"+
+ "\3\u00ba\3\u00ba\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bc\3\u00bc\3\u00bc"+
+ "\3\u00bc\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00be\3\u00be\3\u00be\3\u00be"+
+ "\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c1"+
+ "\3\u00c1\3\u00c1\3\u00c1\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c3\3\u00c3"+
+ "\3\u00c3\3\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c5\3\u00c5\3\u00c5"+
+ "\3\u00c5\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c7\3\u00c7\3\u00c7\3\u00c7"+
+ "\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00ca"+
+ "\3\u00ca\3\u00ca\3\u00ca\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cc\3\u00cc"+
+ "\3\u00cc\3\u00cc\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00ce\3\u00ce\3\u00ce"+
+ "\3\u00ce\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00d0\3\u00d0\3\u00d0\3\u00d0"+
+ "\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d3"+
+ "\3\u00d3\3\u00d3\3\u00d3\3\u00d3\3\u00d4\3\u00d4\3\u00d4\3\u00d4\3\u00d4"+
+ "\3\u00d5\3\u00d5\3\u00d5\3\u00d5\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d7"+
+ "\3\u00d7\3\u00d7\3\u00d7\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d9\3\u00d9"+
+ "\3\u00d9\3\u00d9\3\u00da\3\u00da\3\u00da\3\u00da\3\u00db\3\u00db\3\u00db"+
+ "\3\u00db\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dd\3\u00dd\3\u00dd\3\u00dd"+
+ "\3\u00de\3\u00de\3\u00de\3\u00de\3\u00df\3\u00df\3\u00df\3\u00df\3\u00e0"+
+ "\3\u00e0\3\u00e0\3\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e2\3\u00e2"+
+ "\3\u00e2\3\u00e2\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e4\3\u00e4\3\u00e4"+
+ "\3\u00e4\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e6\3\u00e6\3\u00e6\3\u00e6"+
+ "\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e9"+
+ "\3\u00e9\3\u00e9\3\u00e9\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00eb\3\u00eb"+
+ "\3\u00eb\3\u00eb\3\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ed\3\u00ed\3\u00ed"+
+ "\3\u00ed\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ef\3\u00ef\3\u00ef\3\u00ef"+
+ "\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f1\3\u00f1\3\u00f1\3\u00f1\3\u00f2"+
+ "\3\u00f2\3\u00f2\3\u00f2\3\u00f3\3\u00f3\3\u00f3\3\u00f3\3\u00f4\3\u00f4"+
+ "\3\u00f4\3\u00f4\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f6\3\u00f6\3\u00f6"+
+ "\3\u00f6\3\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f8\3\u00f8\3\u00f8\3\u00f8"+
+ "\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fb"+
+ "\3\u00fb\3\u00fb\3\u00fb\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fd\3\u00fd"+
+ "\3\u00fd\3\u00fd\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00ff\3\u00ff\3\u00ff"+
+ "\3\u00ff\3\u0100\3\u0100\3\u0100\3\u0100\3\u0101\3\u0101\3\u0101\3\u0101"+
+ "\3\u0102\3\u0102\3\u0102\3\u0102\3\u0103\3\u0103\3\u0103\3\u0103\3\u0104"+
+ "\3\u0104\3\u0104\3\u0104\3\u0105\3\u0105\3\u0105\3\u0105\3\u0106\3\u0106"+
+ "\3\u0106\3\u0106\3\u0107\3\u0107\3\u0107\3\u0107\3\u0108\3\u0108\3\u0108"+
+ "\3\u0108\3\u0109\3\u0109\3\u0109\3\u0109\3\u010a\3\u010a\3\u010a\3\u010a"+
+ "\3\u010b\3\u010b\3\u010b\3\u010b\3\u010c\3\u010c\3\u010c\3\u010c\3\u010d"+
+ "\3\u010d\3\u010d\3\u010d\3\u010e\3\u010e\3\u010e\3\u010e\3\u010f\3\u010f"+
+ "\3\u010f\3\u010f\3\u0110\3\u0110\3\u0110\3\u0110\3\u0111\3\u0111\3\u0111"+
+ "\3\u0111\3\u0112\3\u0112\3\u0112\3\u0112\3\u0113\3\u0113\3\u0113\3\u0113"+
+ "\3\u0114\3\u0114\3\u0114\3\u0114\3\u0115\3\u0115\3\u0115\3\u0115\3\u0116"+
+ "\3\u0116\3\u0116\3\u0116\3\u0117\3\u0117\3\u0117\3\u0117\3\u0118\3\u0118"+
+ "\5\u0118\u08d7\n\u0118\3\u0118\3\u0118\3\u0119\3\u0119\3\u0119\3\u0119"+
+ "\3\u011a\3\u011a\3\u011a\3\u011a\3\u011b\3\u011b\3\u011b\3\u011b\3\u011c"+
+ "\3\u011c\3\u011d\6\u011d\u08ea\n\u011d\r\u011d\16\u011d\u08eb\3\u011d"+
+ "\5\u011d\u08ef\n\u011d\3\u011e\3\u011e\3\u011e\5\u011e\u08f4\n\u011e\3"+
+ "\u011f\3\u011f\3\u011f\3\u011f\3\u011f\3\u0120\5\u0120\u08fc\n\u0120\3"+
+ "\u0120\3\u0120\3\u0120\3\u0120\3\u0120\3\u0120\3\u0121\6\u0121\u0905\n"+
+ "\u0121\r\u0121\16\u0121\u0906\3\u0122\3\u0122\3\u0123\6\u0123\u090c\n"+
+ "\u0123\r\u0123\16\u0123\u090d\3\u0123\5\u0123\u0911\n\u0123\3\u0124\3"+
+ "\u0124\3\u0124\3\u0125\3\u0125\3\u0125\3\u0125\3\u0125\3\u0126\3\u0126"+
+ "\3\u0126\3\u0126\3\u0127\3\u0127\3\u0127\3\u0127\3\u0127\3\u0128\3\u0128"+
+ "\3\u0128\3\u0128\3\u0128\3\u0129\3\u0129\3\u0129\3\u0129\3\u0129\3\u012a"+
+ "\3\u012a\3\u012a\3\u012a\3\u012b\3\u012b\3\u012b\3\u012b\3\u012c\3\u012c"+
+ "\3\u012c\3\u012c\3\u012c\3\u012d\3\u012d\3\u012d\3\u012d\3\u012e\3\u012e"+
+ "\3\u012e\3\u012e\3\u012f\3\u012f\3\u012f\3\u012f\3\u0130\3\u0130\3\u0130"+
+ "\3\u0130\3\u0131\3\u0131\3\u0131\3\u0131\3\u0132\3\u0132\3\u0132\3\u0132"+
+ "\3\u0133\3\u0133\3\u0133\3\u0133\3\u0134\3\u0134\3\u0134\3\u0134\3\u0135"+
+ "\3\u0135\3\u0135\3\u0135\3\u0136\3\u0136\3\u0136\3\u0136\3\u0137\3\u0137"+
+ "\3\u0137\3\u0137\3\u0138\3\u0138\3\u0138\3\u0138\3\u0139\3\u0139\3\u0139"+
+ "\3\u0139\3\u013a\3\u013a\3\u013a\3\u013a\3\u013b\3\u013b\3\u013b\3\u013b"+
+ "\3\u013c\3\u013c\3\u013c\3\u013c\3\u013d\3\u013d\3\u013d\3\u013d\3\u013e"+
+ "\3\u013e\3\u013e\3\u013e\3\u013f\3\u013f\3\u013f\3\u013f\3\u0140\3\u0140"+
+ "\3\u0140\3\u0140\3\u0141\3\u0141\3\u0141\3\u0141\3\u0142\3\u0142\3\u0142"+
+ "\3\u0142\3\u0143\3\u0143\3\u0143\3\u0143\3\u0144\3\u0144\3\u0144\3\u0144"+
+ "\3\u0145\3\u0145\3\u0145\3\u0145\3\u0146\3\u0146\3\u0146\3\u0146\3\u0147"+
+ "\3\u0147\3\u0147\3\u0147\3\u0148\3\u0148\3\u0148\3\u0148\3\u0149\3\u0149"+
+ "\3\u0149\3\u0149\3\u014a\3\u014a\3\u014a\3\u014a\3\u014b\3\u014b\3\u014b"+
+ "\3\u014b\3\u014c\3\u014c\3\u014c\3\u014c\3\u014d\3\u014d\3\u014d\3\u014d"+
+ "\3\u014e\3\u014e\3\u014e\3\u014e\3\u014f\3\u014f\3\u014f\3\u014f\3\u0150"+
+ "\3\u0150\3\u0150\3\u0150\3\u0151\3\u0151\3\u0151\3\u0151\3\u0152\3\u0152"+
+ "\3\u0152\3\u0152\3\u0153\3\u0153\3\u0154\3\u0154\3\u0154\3\u0154\3\u0155"+
+ "\3\u0155\3\u0155\3\u0155\3\u0156\3\u0156\3\u0156\3\u0156\3\u0157\3\u0157"+
+ "\3\u0157\3\u0157\3\u0158\3\u0158\3\u0158\3\u0158\3\u0159\3\u0159\3\u0159"+
+ "\3\u0159\3\u015a\3\u015a\3\u015a\3\u015a\3\u015a\3\u015b\3\u015b\3\u015b"+
+ "\3\u015b\3\u015b\3\u015c\3\u015c\3\u015c\3\u015c\3\u015d\3\u015d\3\u015d"+
+ "\3\u015d\3\u015e\3\u015e\3\u015e\3\u015e\3\u015f\3\u015f\3\u015f\3\u015f"+
+ "\3\u0160\3\u0160\3\u0160\3\u0160\3\u0161\3\u0161\3\u0161\3\u0161\3\u0162"+
+ "\3\u0162\3\u0162\3\u0162\3\u0163\3\u0163\3\u0163\3\u0163\3\u0164\3\u0164"+
+ "\3\u0164\3\u0164\3\u0165\3\u0165\3\u0165\3\u0165\3\u0166\3\u0166\3\u0166"+
+ "\3\u0166\3\u0167\3\u0167\5\u0167\u0a25\n\u0167\3\u0167\3\u0167\3\u0168"+
+ "\3\u0168\3\u0168\3\u0168\3\u0169\3\u0169\3\u0169\3\u0169\3\u02e9\2\u016a"+
+ "\7\3\t\4\13\5\r\6\17\7\21\b\23\t\25\n\27\13\31\f\33\r\35\16\37\17!\20"+
+ "#\21%\22\'\23)\24+\25-\26/\27\61\30\63\31\65\32\67\339\34;\35=\36?\37"+
+ "A C!E\"G#I$K%M&O\'Q(S)U*W+Y,[-]._/a\60c\61e\62g\63i\64k\65m\66o\67q8s"+
+ "9u:w;y<{=}>\177?\u0081@\u0083A\u0085B\u0087C\u0089D\u008bE\u008dF\u008f"+
+ "G\u0091H\u0093I\u0095J\u0097K\u0099L\u009bM\u009dN\u009fO\u00a1P\u00a3"+
+ "Q\u00a5R\u00a7S\u00a9T\u00abU\u00adV\u00afW\u00b1X\u00b3Y\u00b5Z\u00b7"+
+ "[\u00b9\\\u00bb]\u00bd^\u00bf_\u00c1`\u00c3a\u00c5b\u00c7c\u00c9d\u00cb"+
+ "e\u00cdf\u00cfg\u00d1h\u00d3i\u00d5j\u00d7k\u00d9l\u00dbm\u00ddn\u00df"+
+ "o\u00e1p\u00e3q\u00e5r\u00e7s\u00e9t\u00ebu\u00edv\u00efw\u00f1x\u00f3"+
+ "y\u00f5z\u00f7{\u00f9|\u00fb}\u00fd~\u00ff\177\u0101\u0080\u0103\u0081"+
+ "\u0105\u0082\u0107\u0083\u0109\u0084\u010b\u0085\u010d\u0086\u010f\u0087"+
+ "\u0111\u0088\u0113\u0089\u0115\2\u0117\2\u0119\2\u011b\u008a\u011d\2\u011f"+
+ "\u008b\u0121\2\u0123\u008c\u0125\u008d\u0127\u008e\u0129\u008f\u012b\u0090"+
+ "\u012d\u0091\u012f\u0092\u0131\2\u0133\2\u0135\2\u0137\2\u0139\u0093\u013b"+
+ "\u0094\u013d\u0095\u013f\u0096\u0141\u0097\u0143\u0098\u0145\u0099\u0147"+
+ "\2\u0149\2\u014b\2\u014d\2\u014f\2\u0151\2\u0153\2\u0155\2\u0157\2\u0159"+
+ "\2\u015b\2\u015d\2\u015f\2\u0161\2\u0163\2\u0165\2\u0167\2\u0169\2\u016b"+
+ "\2\u016d\2\u016f\2\u0171\2\u0173\2\u0175\2\u0177\2\u0179\2\u017b\2\u017d"+
+ "\2\u017f\2\u0181\2\u0183\2\u0185\2\u0187\2\u0189\2\u018b\2\u018d\2\u018f"+
+ "\2\u0191\2\u0193\2\u0195\2\u0197\2\u0199\2\u019b\2\u019d\2\u019f\2\u01a1"+
+ "\2\u01a3\2\u01a5\2\u01a7\2\u01a9\2\u01ab\2\u01ad\2\u01af\2\u01b1\2\u01b3"+
+ "\2\u01b5\2\u01b7\2\u01b9\2\u01bb\2\u01bd\2\u01bf\2\u01c1\2\u01c3\2\u01c5"+
+ "\2\u01c7\2\u01c9\2\u01cb\2\u01cd\2\u01cf\2\u01d1\2\u01d3\2\u01d5\2\u01d7"+
+ "\2\u01d9\2\u01db\2\u01dd\2\u01df\2\u01e1\2\u01e3\2\u01e5\2\u01e7\2\u01e9"+
+ "\2\u01eb\2\u01ed\2\u01ef\2\u01f1\2\u01f3\2\u01f5\2\u01f7\2\u01f9\2\u01fb"+
+ "\2\u01fd\2\u01ff\2\u0201\2\u0203\2\u0205\2\u0207\2\u0209\2\u020b\2\u020d"+
+ "\2\u020f\2\u0211\2\u0213\2\u0215\2\u0217\2\u0219\2\u021b\2\u021d\2\u021f"+
+ "\2\u0221\2\u0223\2\u0225\2\u0227\2\u0229\2\u022b\2\u022d\2\u022f\2\u0231"+
+ "\2\u0233\u009a\u0235\u009b\u0237\u009c\u0239\u009d\u023b\u009e\u023d\u009f"+
+ "\u023f\u00a0\u0241\u00a1\u0243\u00a2\u0245\u00a3\u0247\u00a4\u0249\u00a5"+
+ "\u024b\u00a6\u024d\u00a7\u024f\u00a8\u0251\2\u0253\2\u0255\2\u0257\2\u0259"+
+ "\2\u025b\2\u025d\2\u025f\2\u0261\2\u0263\2\u0265\2\u0267\2\u0269\2\u026b"+
+ "\2\u026d\2\u026f\2\u0271\2\u0273\2\u0275\2\u0277\2\u0279\2\u027b\2\u027d"+
+ "\2\u027f\2\u0281\2\u0283\2\u0285\2\u0287\2\u0289\2\u028b\2\u028d\2\u028f"+
+ "\2\u0291\2\u0293\2\u0295\2\u0297\2\u0299\2\u029b\2\u029d\2\u029f\2\u02a1"+
+ "\2\u02a3\2\u02a5\2\u02a7\2\u02a9\u00a9\u02ab\2\u02ad\2\u02af\2\u02b1\2"+
+ "\u02b3\2\u02b5\2\u02b7\2\u02b9\2\u02bb\2\u02bd\2\u02bf\2\u02c1\2\u02c3"+
+ "\2\u02c5\2\u02c7\2\u02c9\2\u02cb\2\u02cd\2\u02cf\2\u02d1\u00aa\u02d3\u00ab"+
+ "\u02d5\u00ac\7\2\3\4\5\6\26\4\2\f\f\17\17\5\2\13\13\16\16\"\"\4\2HHhh"+
+ "\4\2GGgg\4\2--//\'\2\63;\u0663\u066b\u06f3\u06fb\u07c3\u07cb\u0969\u0971"+
+ "\u09e9\u09f1\u0a69\u0a71\u0ae9\u0af1\u0b69\u0b71\u0be9\u0bf1\u0c69\u0c71"+
+ "\u0ce9\u0cf1\u0d69\u0d71\u0de9\u0df1\u0e53\u0e5b\u0ed3\u0edb\u0f23\u0f2b"+
+ "\u1043\u104b\u1093\u109b\u17e3\u17eb\u1813\u181b\u1949\u1951\u19d3\u19db"+
+ "\u1a83\u1a8b\u1a93\u1a9b\u1b53\u1b5b\u1bb3\u1bbb\u1c43\u1c4b\u1c53\u1c5b"+
+ "\ua623\ua62b\ua8d3\ua8db\ua903\ua90b\ua9d3\ua9db\ua9f3\ua9fb\uaa53\uaa5b"+
+ "\uabf3\uabfb\uff13\uff1b\4\2ZZzz\5\2\62;CHch\4\2DDdd\3\2\62\63\3\2bb\n"+
+ "\2$$&&))^^ddppttvv\u0248\2c|\u00b7\u00b7\u00e1\u00f8\u00fa\u0101\u0103"+
+ "\u0103\u0105\u0105\u0107\u0107\u0109\u0109\u010b\u010b\u010d\u010d\u010f"+
+ "\u010f\u0111\u0111\u0113\u0113\u0115\u0115\u0117\u0117\u0119\u0119\u011b"+
+ "\u011b\u011d\u011d\u011f\u011f\u0121\u0121\u0123\u0123\u0125\u0125\u0127"+
+ "\u0127\u0129\u0129\u012b\u012b\u012d\u012d\u012f\u012f\u0131\u0131\u0133"+
+ "\u0133\u0135\u0135\u0137\u0137\u0139\u013a\u013c\u013c\u013e\u013e\u0140"+
+ "\u0140\u0142\u0142\u0144\u0144\u0146\u0146\u0148\u0148\u014a\u014b\u014d"+
+ "\u014d\u014f\u014f\u0151\u0151\u0153\u0153\u0155\u0155\u0157\u0157\u0159"+
+ "\u0159\u015b\u015b\u015d\u015d\u015f\u015f\u0161\u0161\u0163\u0163\u0165"+
+ "\u0165\u0167\u0167\u0169\u0169\u016b\u016b\u016d\u016d\u016f\u016f\u0171"+
+ "\u0171\u0173\u0173\u0175\u0175\u0177\u0177\u0179\u0179\u017c\u017c\u017e"+
+ "\u017e\u0180\u0182\u0185\u0185\u0187\u0187\u018a\u018a\u018e\u018f\u0194"+
+ "\u0194\u0197\u0197\u019b\u019d\u01a0\u01a0\u01a3\u01a3\u01a5\u01a5\u01a7"+
+ "\u01a7\u01aa\u01aa\u01ac\u01ad\u01af\u01af\u01b2\u01b2\u01b6\u01b6\u01b8"+
+ "\u01b8\u01bb\u01bc\u01bf\u01c1\u01c8\u01c8\u01cb\u01cb\u01ce\u01ce\u01d0"+
+ "\u01d0\u01d2\u01d2\u01d4\u01d4\u01d6\u01d6\u01d8\u01d8\u01da\u01da\u01dc"+
+ "\u01dc\u01de\u01df\u01e1\u01e1\u01e3\u01e3\u01e5\u01e5\u01e7\u01e7\u01e9"+
+ "\u01e9\u01eb\u01eb\u01ed\u01ed\u01ef\u01ef\u01f1\u01f2\u01f5\u01f5\u01f7"+
+ "\u01f7\u01fb\u01fb\u01fd\u01fd\u01ff\u01ff\u0201\u0201\u0203\u0203\u0205"+
+ "\u0205\u0207\u0207\u0209\u0209\u020b\u020b\u020d\u020d\u020f\u020f\u0211"+
+ "\u0211\u0213\u0213\u0215\u0215\u0217\u0217\u0219\u0219\u021b\u021b\u021d"+
+ "\u021d\u021f\u021f\u0221\u0221\u0223\u0223\u0225\u0225\u0227\u0227\u0229"+
+ "\u0229\u022b\u022b\u022d\u022d\u022f\u022f\u0231\u0231\u0233\u0233\u0235"+
+ "\u023b\u023e\u023e\u0241\u0242\u0244\u0244\u0249\u0249\u024b\u024b\u024d"+
+ "\u024d\u024f\u024f\u0251\u0295\u0297\u02b1\u0373\u0373\u0375\u0375\u0379"+
+ "\u0379\u037d\u037f\u0392\u0392\u03ae\u03d0\u03d2\u03d3\u03d7\u03d9\u03db"+
+ "\u03db\u03dd\u03dd\u03df\u03df\u03e1\u03e1\u03e3\u03e3\u03e5\u03e5\u03e7"+
+ "\u03e7\u03e9\u03e9\u03eb\u03eb\u03ed\u03ed\u03ef\u03ef\u03f1\u03f5\u03f7"+
+ "\u03f7\u03fa\u03fa\u03fd\u03fe\u0432\u0461\u0463\u0463\u0465\u0465\u0467"+
+ "\u0467\u0469\u0469\u046b\u046b\u046d\u046d\u046f\u046f\u0471\u0471\u0473"+
+ "\u0473\u0475\u0475\u0477\u0477\u0479\u0479\u047b\u047b\u047d\u047d\u047f"+
+ "\u047f\u0481\u0481\u0483\u0483\u048d\u048d\u048f\u048f\u0491\u0491\u0493"+
+ "\u0493\u0495\u0495\u0497\u0497\u0499\u0499\u049b\u049b\u049d\u049d\u049f"+
+ "\u049f\u04a1\u04a1\u04a3\u04a3\u04a5\u04a5\u04a7\u04a7\u04a9\u04a9\u04ab"+
+ "\u04ab\u04ad\u04ad\u04af\u04af\u04b1\u04b1\u04b3\u04b3\u04b5\u04b5\u04b7"+
+ "\u04b7\u04b9\u04b9\u04bb\u04bb\u04bd\u04bd\u04bf\u04bf\u04c1\u04c1\u04c4"+
+ "\u04c4\u04c6\u04c6\u04c8\u04c8\u04ca\u04ca\u04cc\u04cc\u04ce\u04ce\u04d0"+
+ "\u04d1\u04d3\u04d3\u04d5\u04d5\u04d7\u04d7\u04d9\u04d9\u04db\u04db\u04dd"+
+ "\u04dd\u04df\u04df\u04e1\u04e1\u04e3\u04e3\u04e5\u04e5\u04e7\u04e7\u04e9"+
+ "\u04e9\u04eb\u04eb\u04ed\u04ed\u04ef\u04ef\u04f1\u04f1\u04f3\u04f3\u04f5"+
+ "\u04f5\u04f7\u04f7\u04f9\u04f9\u04fb\u04fb\u04fd\u04fd\u04ff\u04ff\u0501"+
+ "\u0501\u0503\u0503\u0505\u0505\u0507\u0507\u0509\u0509\u050b\u050b\u050d"+
+ "\u050d\u050f\u050f\u0511\u0511\u0513\u0513\u0515\u0515\u0517\u0517\u0519"+
+ "\u0519\u051b\u051b\u051d\u051d\u051f\u051f\u0521\u0521\u0523\u0523\u0525"+
+ "\u0525\u0527\u0527\u0529\u0529\u0563\u0589\u1d02\u1d2d\u1d6d\u1d79\u1d7b"+
+ "\u1d9c\u1e03\u1e03\u1e05\u1e05\u1e07\u1e07\u1e09\u1e09\u1e0b\u1e0b\u1e0d"+
+ "\u1e0d\u1e0f\u1e0f\u1e11\u1e11\u1e13\u1e13\u1e15\u1e15\u1e17\u1e17\u1e19"+
+ "\u1e19\u1e1b\u1e1b\u1e1d\u1e1d\u1e1f\u1e1f\u1e21\u1e21\u1e23\u1e23\u1e25"+
+ "\u1e25\u1e27\u1e27\u1e29\u1e29\u1e2b\u1e2b\u1e2d\u1e2d\u1e2f\u1e2f\u1e31"+
+ "\u1e31\u1e33\u1e33\u1e35\u1e35\u1e37\u1e37\u1e39\u1e39\u1e3b\u1e3b\u1e3d"+
+ "\u1e3d\u1e3f\u1e3f\u1e41\u1e41\u1e43\u1e43\u1e45\u1e45\u1e47\u1e47\u1e49"+
+ "\u1e49\u1e4b\u1e4b\u1e4d\u1e4d\u1e4f\u1e4f\u1e51\u1e51\u1e53\u1e53\u1e55"+
+ "\u1e55\u1e57\u1e57\u1e59\u1e59\u1e5b\u1e5b\u1e5d\u1e5d\u1e5f\u1e5f\u1e61"+
+ "\u1e61\u1e63\u1e63\u1e65\u1e65\u1e67\u1e67\u1e69\u1e69\u1e6b\u1e6b\u1e6d"+
+ "\u1e6d\u1e6f\u1e6f\u1e71\u1e71\u1e73\u1e73\u1e75\u1e75\u1e77\u1e77\u1e79"+
+ "\u1e79\u1e7b\u1e7b\u1e7d\u1e7d\u1e7f\u1e7f\u1e81\u1e81\u1e83\u1e83\u1e85"+
+ "\u1e85\u1e87\u1e87\u1e89\u1e89\u1e8b\u1e8b\u1e8d\u1e8d\u1e8f\u1e8f\u1e91"+
+ "\u1e91\u1e93\u1e93\u1e95\u1e95\u1e97\u1e9f\u1ea1\u1ea1\u1ea3\u1ea3\u1ea5"+
+ "\u1ea5\u1ea7\u1ea7\u1ea9\u1ea9\u1eab\u1eab\u1ead\u1ead\u1eaf\u1eaf\u1eb1"+
+ "\u1eb1\u1eb3\u1eb3\u1eb5\u1eb5\u1eb7\u1eb7\u1eb9\u1eb9\u1ebb\u1ebb\u1ebd"+
+ "\u1ebd\u1ebf\u1ebf\u1ec1\u1ec1\u1ec3\u1ec3\u1ec5\u1ec5\u1ec7\u1ec7\u1ec9"+
+ "\u1ec9\u1ecb\u1ecb\u1ecd\u1ecd\u1ecf\u1ecf\u1ed1\u1ed1\u1ed3\u1ed3\u1ed5"+
+ "\u1ed5\u1ed7\u1ed7\u1ed9\u1ed9\u1edb\u1edb\u1edd\u1edd\u1edf\u1edf\u1ee1"+
+ "\u1ee1\u1ee3\u1ee3\u1ee5\u1ee5\u1ee7\u1ee7\u1ee9\u1ee9\u1eeb\u1eeb\u1eed"+
+ "\u1eed\u1eef\u1eef\u1ef1\u1ef1\u1ef3\u1ef3\u1ef5\u1ef5\u1ef7\u1ef7\u1ef9"+
+ "\u1ef9\u1efb\u1efb\u1efd\u1efd\u1eff\u1eff\u1f01\u1f09\u1f12\u1f17\u1f22"+
+ "\u1f29\u1f32\u1f39\u1f42\u1f47\u1f52\u1f59\u1f62\u1f69\u1f72\u1f7f\u1f82"+
+ "\u1f89\u1f92\u1f99\u1fa2\u1fa9\u1fb2\u1fb6\u1fb8\u1fb9\u1fc0\u1fc0\u1fc4"+
+ "\u1fc6\u1fc8\u1fc9\u1fd2\u1fd5\u1fd8\u1fd9\u1fe2\u1fe9\u1ff4\u1ff6\u1ff8"+
+ "\u1ff9\u210c\u210c\u2110\u2111\u2115\u2115\u2131\u2131\u2136\u2136\u213b"+
+ "\u213b\u213e\u213f\u2148\u214b\u2150\u2150\u2186\u2186\u2c32\u2c60\u2c63"+
+ "\u2c63\u2c67\u2c68\u2c6a\u2c6a\u2c6c\u2c6c\u2c6e\u2c6e\u2c73\u2c73\u2c75"+
+ "\u2c76\u2c78\u2c7d\u2c83\u2c83\u2c85\u2c85\u2c87\u2c87\u2c89\u2c89\u2c8b"+
+ "\u2c8b\u2c8d\u2c8d\u2c8f\u2c8f\u2c91\u2c91\u2c93\u2c93\u2c95\u2c95\u2c97"+
+ "\u2c97\u2c99\u2c99\u2c9b\u2c9b\u2c9d\u2c9d\u2c9f\u2c9f\u2ca1\u2ca1\u2ca3"+
+ "\u2ca3\u2ca5\u2ca5\u2ca7\u2ca7\u2ca9\u2ca9\u2cab\u2cab\u2cad\u2cad\u2caf"+
+ "\u2caf\u2cb1\u2cb1\u2cb3\u2cb3\u2cb5\u2cb5\u2cb7\u2cb7\u2cb9\u2cb9\u2cbb"+
+ "\u2cbb\u2cbd\u2cbd\u2cbf\u2cbf\u2cc1\u2cc1\u2cc3\u2cc3\u2cc5\u2cc5\u2cc7"+
+ "\u2cc7\u2cc9\u2cc9\u2ccb\u2ccb\u2ccd\u2ccd\u2ccf\u2ccf\u2cd1\u2cd1\u2cd3"+
+ "\u2cd3\u2cd5\u2cd5\u2cd7\u2cd7\u2cd9\u2cd9\u2cdb\u2cdb\u2cdd\u2cdd\u2cdf"+
+ "\u2cdf\u2ce1\u2ce1\u2ce3\u2ce3\u2ce5\u2ce6\u2cee\u2cee\u2cf0\u2cf0\u2cf5"+
+ "\u2cf5\u2d02\u2d27\u2d29\u2d29\u2d2f\u2d2f\ua643\ua643\ua645\ua645\ua647"+
+ "\ua647\ua649\ua649\ua64b\ua64b\ua64d\ua64d\ua64f\ua64f\ua651\ua651\ua653"+
+ "\ua653\ua655\ua655\ua657\ua657\ua659\ua659\ua65b\ua65b\ua65d\ua65d\ua65f"+
+ "\ua65f\ua661\ua661\ua663\ua663\ua665\ua665\ua667\ua667\ua669\ua669\ua66b"+
+ "\ua66b\ua66d\ua66d\ua66f\ua66f\ua683\ua683\ua685\ua685\ua687\ua687\ua689"+
+ "\ua689\ua68b\ua68b\ua68d\ua68d\ua68f\ua68f\ua691\ua691\ua693\ua693\ua695"+
+ "\ua695\ua697\ua697\ua699\ua699\ua725\ua725\ua727\ua727\ua729\ua729\ua72b"+
+ "\ua72b\ua72d\ua72d\ua72f\ua72f\ua731\ua733\ua735\ua735\ua737\ua737\ua739"+
+ "\ua739\ua73b\ua73b\ua73d\ua73d\ua73f\ua73f\ua741\ua741\ua743\ua743\ua745"+
+ "\ua745\ua747\ua747\ua749\ua749\ua74b\ua74b\ua74d\ua74d\ua74f\ua74f\ua751"+
+ "\ua751\ua753\ua753\ua755\ua755\ua757\ua757\ua759\ua759\ua75b\ua75b\ua75d"+
+ "\ua75d\ua75f\ua75f\ua761\ua761\ua763\ua763\ua765\ua765\ua767\ua767\ua769"+
+ "\ua769\ua76b\ua76b\ua76d\ua76d\ua76f\ua76f\ua771\ua771\ua773\ua77a\ua77c"+
+ "\ua77c\ua77e\ua77e\ua781\ua781\ua783\ua783\ua785\ua785\ua787\ua787\ua789"+
+ "\ua789\ua78e\ua78e\ua790\ua790\ua793\ua793\ua795\ua795\ua7a3\ua7a3\ua7a5"+
+ "\ua7a5\ua7a7\ua7a7\ua7a9\ua7a9\ua7ab\ua7ab\ua7fc\ua7fc\ufb02\ufb08\ufb15"+
+ "\ufb19\uff43\uff5c\65\2\u02b2\u02c3\u02c8\u02d3\u02e2\u02e6\u02ee\u02ee"+
+ "\u02f0\u02f0\u0376\u0376\u037c\u037c\u055b\u055b\u0642\u0642\u06e7\u06e8"+
+ "\u07f6\u07f7\u07fc\u07fc\u081c\u081c\u0826\u0826\u082a\u082a\u0973\u0973"+
+ "\u0e48\u0e48\u0ec8\u0ec8\u10fe\u10fe\u17d9\u17d9\u1845\u1845\u1aa9\u1aa9"+
+ "\u1c7a\u1c7f\u1d2e\u1d6c\u1d7a\u1d7a\u1d9d\u1dc1\u2073\u2073\u2081\u2081"+
+ "\u2092\u209e\u2c7e\u2c7f\u2d71\u2d71\u2e31\u2e31\u3007\u3007\u3033\u3037"+
+ "\u303d\u303d\u309f\u30a0\u30fe\u3100\ua017\ua017\ua4fa\ua4ff\ua60e\ua60e"+
+ "\ua681\ua681\ua719\ua721\ua772\ua772\ua78a\ua78a\ua7fa\ua7fb\ua9d1\ua9d1"+
+ "\uaa72\uaa72\uaadf\uaadf\uaaf5\uaaf6\uff72\uff72\uffa0\uffa1\u0123\2\u00ac"+
+ "\u00ac\u00bc\u00bc\u01bd\u01bd\u01c2\u01c5\u0296\u0296\u05d2\u05ec\u05f2"+
+ "\u05f4\u0622\u0641\u0643\u064c\u0670\u0671\u0673\u06d5\u06d7\u06d7\u06f0"+
+ "\u06f1\u06fc\u06fe\u0701\u0701\u0712\u0712\u0714\u0731\u074f\u07a7\u07b3"+
+ "\u07b3\u07cc\u07ec\u0802\u0817\u0842\u085a\u08a2\u08a2\u08a4\u08ae\u0906"+
+ "\u093b\u093f\u093f\u0952\u0952\u095a\u0963\u0974\u0979\u097b\u0981\u0987"+
+ "\u098e\u0991\u0992\u0995\u09aa\u09ac\u09b2\u09b4\u09b4\u09b8\u09bb\u09bf"+
+ "\u09bf\u09d0\u09d0\u09de\u09df\u09e1\u09e3\u09f2\u09f3\u0a07\u0a0c\u0a11"+
+ "\u0a12\u0a15\u0a2a\u0a2c\u0a32\u0a34\u0a35\u0a37\u0a38\u0a3a\u0a3b\u0a5b"+
+ "\u0a5e\u0a60\u0a60\u0a74\u0a76\u0a87\u0a8f\u0a91\u0a93\u0a95\u0aaa\u0aac"+
+ "\u0ab2\u0ab4\u0ab5\u0ab7\u0abb\u0abf\u0abf\u0ad2\u0ad2\u0ae2\u0ae3\u0b07"+
+ "\u0b0e\u0b11\u0b12\u0b15\u0b2a\u0b2c\u0b32\u0b34\u0b35\u0b37\u0b3b\u0b3f"+
+ "\u0b3f\u0b5e\u0b5f\u0b61\u0b63\u0b73\u0b73\u0b85\u0b85\u0b87\u0b8c\u0b90"+
+ "\u0b92\u0b94\u0b97\u0b9b\u0b9c\u0b9e\u0b9e\u0ba0\u0ba1\u0ba5\u0ba6\u0baa"+
+ "\u0bac\u0bb0\u0bbb\u0bd2\u0bd2\u0c07\u0c0e\u0c10\u0c12\u0c14\u0c2a\u0c2c"+
+ "\u0c35\u0c37\u0c3b\u0c3f\u0c3f\u0c5a\u0c5b\u0c62\u0c63\u0c87\u0c8e\u0c90"+
+ "\u0c92\u0c94\u0caa\u0cac\u0cb5\u0cb7\u0cbb\u0cbf\u0cbf\u0ce0\u0ce0\u0ce2"+
+ "\u0ce3\u0cf3\u0cf4\u0d07\u0d0e\u0d10\u0d12\u0d14\u0d3c\u0d3f\u0d3f\u0d50"+
+ "\u0d50\u0d62\u0d63\u0d7c\u0d81\u0d87\u0d98\u0d9c\u0db3\u0db5\u0dbd\u0dbf"+
+ "\u0dbf\u0dc2\u0dc8\u0e03\u0e32\u0e34\u0e35\u0e42\u0e47\u0e83\u0e84\u0e86"+
+ "\u0e86\u0e89\u0e8a\u0e8c\u0e8c\u0e8f\u0e8f\u0e96\u0e99\u0e9b\u0ea1\u0ea3"+
+ "\u0ea5\u0ea7\u0ea7\u0ea9\u0ea9\u0eac\u0ead\u0eaf\u0eb2\u0eb4\u0eb5\u0ebf"+
+ "\u0ebf\u0ec2\u0ec6\u0ede\u0ee1\u0f02\u0f02\u0f42\u0f49\u0f4b\u0f6e\u0f8a"+
+ "\u0f8e\u1002\u102c\u1041\u1041\u1052\u1057\u105c\u105f\u1063\u1063\u1067"+
+ "\u1068\u1070\u1072\u1077\u1083\u1090\u1090\u10d2\u10fc\u10ff\u124a\u124c"+
+ "\u124f\u1252\u1258\u125a\u125a\u125c\u125f\u1262\u128a\u128c\u128f\u1292"+
+ "\u12b2\u12b4\u12b7\u12ba\u12c0\u12c2\u12c2\u12c4\u12c7\u12ca\u12d8\u12da"+
+ "\u1312\u1314\u1317\u131a\u135c\u1382\u1391\u13a2\u13f6\u1403\u166e\u1671"+
+ "\u1681\u1683\u169c\u16a2\u16ec\u1702\u170e\u1710\u1713\u1722\u1733\u1742"+
+ "\u1753\u1762\u176e\u1770\u1772\u1782\u17b5\u17de\u17de\u1822\u1844\u1846"+
+ "\u1879\u1882\u18aa\u18ac\u18ac\u18b2\u18f7\u1902\u191e\u1952\u196f\u1972"+
+ "\u1976\u1982\u19ad\u19c3\u19c9\u1a02\u1a18\u1a22\u1a56\u1b07\u1b35\u1b47"+
+ "\u1b4d\u1b85\u1ba2\u1bb0\u1bb1\u1bbc\u1be7\u1c02\u1c25\u1c4f\u1c51\u1c5c"+
+ "\u1c79\u1ceb\u1cee\u1cf0\u1cf3\u1cf7\u1cf8\u2137\u213a\u2d32\u2d69\u2d82"+
+ "\u2d98\u2da2\u2da8\u2daa\u2db0\u2db2\u2db8\u2dba\u2dc0\u2dc2\u2dc8\u2dca"+
+ "\u2dd0\u2dd2\u2dd8\u2dda\u2de0\u3008\u3008\u303e\u303e\u3043\u3098\u30a1"+
+ "\u30a1\u30a3\u30fc\u3101\u3101\u3107\u312f\u3133\u3190\u31a2\u31bc\u31f2"+
+ "\u3201\u3402\u3402\u4db7\u4db7\u4e02\u4e02\u9fce\u9fce\ua002\ua016\ua018"+
+ "\ua48e\ua4d2\ua4f9\ua502\ua60d\ua612\ua621\ua62c\ua62d\ua670\ua670\ua6a2"+
+ "\ua6e7\ua7fd\ua803\ua805\ua807\ua809\ua80c\ua80e\ua824\ua842\ua875\ua884"+
+ "\ua8b5\ua8f4\ua8f9\ua8fd\ua8fd\ua90c\ua927\ua932\ua948\ua962\ua97e\ua986"+
+ "\ua9b4\uaa02\uaa2a\uaa42\uaa44\uaa46\uaa4d\uaa62\uaa71\uaa73\uaa78\uaa7c"+
+ "\uaa7c\uaa82\uaab1\uaab3\uaab3\uaab7\uaab8\uaabb\uaabf\uaac2\uaac2\uaac4"+
+ "\uaac4\uaadd\uaade\uaae2\uaaec\uaaf4\uaaf4\uab03\uab08\uab0b\uab10\uab13"+
+ "\uab18\uab22\uab28\uab2a\uab30\uabc2\uabe4\uac02\uac02\ud7a5\ud7a5\ud7b2"+
+ "\ud7c8\ud7cd\ud7fd\uf902\ufa6f\ufa72\ufadb\ufb1f\ufb1f\ufb21\ufb2a\ufb2c"+
+ "\ufb38\ufb3a\ufb3e\ufb40\ufb40\ufb42\ufb43\ufb45\ufb46\ufb48\ufbb3\ufbd5"+
+ "\ufd3f\ufd52\ufd91\ufd94\ufdc9\ufdf2\ufdfd\ufe72\ufe76\ufe78\ufefe\uff68"+
+ "\uff71\uff73\uff9f\uffa2\uffc0\uffc4\uffc9\uffcc\uffd1\uffd4\uffd9\uffdc"+
+ "\uffde\f\2\u01c7\u01c7\u01ca\u01ca\u01cd\u01cd\u01f4\u01f4\u1f8a\u1f91"+
+ "\u1f9a\u1fa1\u1faa\u1fb1\u1fbe\u1fbe\u1fce\u1fce\u1ffe\u1ffe\u0242\2C"+
+ "\\\u00c2\u00d8\u00da\u00e0\u0102\u0102\u0104\u0104\u0106\u0106\u0108\u0108"+
+ "\u010a\u010a\u010c\u010c\u010e\u010e\u0110\u0110\u0112\u0112\u0114\u0114"+
+ "\u0116\u0116\u0118\u0118\u011a\u011a\u011c\u011c\u011e\u011e\u0120\u0120"+
+ "\u0122\u0122\u0124\u0124\u0126\u0126\u0128\u0128\u012a\u012a\u012c\u012c"+
+ "\u012e\u012e\u0130\u0130\u0132\u0132\u0134\u0134\u0136\u0136\u0138\u0138"+
+ "\u013b\u013b\u013d\u013d\u013f\u013f\u0141\u0141\u0143\u0143\u0145\u0145"+
+ "\u0147\u0147\u0149\u0149\u014c\u014c\u014e\u014e\u0150\u0150\u0152\u0152"+
+ "\u0154\u0154\u0156\u0156\u0158\u0158\u015a\u015a\u015c\u015c\u015e\u015e"+
+ "\u0160\u0160\u0162\u0162\u0164\u0164\u0166\u0166\u0168\u0168\u016a\u016a"+
+ "\u016c\u016c\u016e\u016e\u0170\u0170\u0172\u0172\u0174\u0174\u0176\u0176"+
+ "\u0178\u0178\u017a\u017b\u017d\u017d\u017f\u017f\u0183\u0184\u0186\u0186"+
+ "\u0188\u0189\u018b\u018d\u0190\u0193\u0195\u0196\u0198\u019a\u019e\u019f"+
+ "\u01a1\u01a2\u01a4\u01a4\u01a6\u01a6\u01a8\u01a9\u01ab\u01ab\u01ae\u01ae"+
+ "\u01b0\u01b1\u01b3\u01b5\u01b7\u01b7\u01b9\u01ba\u01be\u01be\u01c6\u01c6"+
+ "\u01c9\u01c9\u01cc\u01cc\u01cf\u01cf\u01d1\u01d1\u01d3\u01d3\u01d5\u01d5"+
+ "\u01d7\u01d7\u01d9\u01d9\u01db\u01db\u01dd\u01dd\u01e0\u01e0\u01e2\u01e2"+
+ "\u01e4\u01e4\u01e6\u01e6\u01e8\u01e8\u01ea\u01ea\u01ec\u01ec\u01ee\u01ee"+
+ "\u01f0\u01f0\u01f3\u01f3\u01f6\u01f6\u01f8\u01fa\u01fc\u01fc\u01fe\u01fe"+
+ "\u0200\u0200\u0202\u0202\u0204\u0204\u0206\u0206\u0208\u0208\u020a\u020a"+
+ "\u020c\u020c\u020e\u020e\u0210\u0210\u0212\u0212\u0214\u0214\u0216\u0216"+
+ "\u0218\u0218\u021a\u021a\u021c\u021c\u021e\u021e\u0220\u0220\u0222\u0222"+
+ "\u0224\u0224\u0226\u0226\u0228\u0228\u022a\u022a\u022c\u022c\u022e\u022e"+
+ "\u0230\u0230\u0232\u0232\u0234\u0234\u023c\u023d\u023f\u0240\u0243\u0243"+
+ "\u0245\u0248\u024a\u024a\u024c\u024c\u024e\u024e\u0250\u0250\u0372\u0372"+
+ "\u0374\u0374\u0378\u0378\u0388\u0388\u038a\u038c\u038e\u038e\u0390\u0391"+
+ "\u0393\u03a3\u03a5\u03ad\u03d1\u03d1\u03d4\u03d6\u03da\u03da\u03dc\u03dc"+
+ "\u03de\u03de\u03e0\u03e0\u03e2\u03e2\u03e4\u03e4\u03e6\u03e6\u03e8\u03e8"+
+ "\u03ea\u03ea\u03ec\u03ec\u03ee\u03ee\u03f0\u03f0\u03f6\u03f6\u03f9\u03f9"+
+ "\u03fb\u03fc\u03ff\u0431\u0462\u0462\u0464\u0464\u0466\u0466\u0468\u0468"+
+ "\u046a\u046a\u046c\u046c\u046e\u046e\u0470\u0470\u0472\u0472\u0474\u0474"+
+ "\u0476\u0476\u0478\u0478\u047a\u047a\u047c\u047c\u047e\u047e\u0480\u0480"+
+ "\u0482\u0482\u048c\u048c\u048e\u048e\u0490\u0490\u0492\u0492\u0494\u0494"+
+ "\u0496\u0496\u0498\u0498\u049a\u049a\u049c\u049c\u049e\u049e\u04a0\u04a0"+
+ "\u04a2\u04a2\u04a4\u04a4\u04a6\u04a6\u04a8\u04a8\u04aa\u04aa\u04ac\u04ac"+
+ "\u04ae\u04ae\u04b0\u04b0\u04b2\u04b2\u04b4\u04b4\u04b6\u04b6\u04b8\u04b8"+
+ "\u04ba\u04ba\u04bc\u04bc\u04be\u04be\u04c0\u04c0\u04c2\u04c3\u04c5\u04c5"+
+ "\u04c7\u04c7\u04c9\u04c9\u04cb\u04cb\u04cd\u04cd\u04cf\u04cf\u04d2\u04d2"+
+ "\u04d4\u04d4\u04d6\u04d6\u04d8\u04d8\u04da\u04da\u04dc\u04dc\u04de\u04de"+
+ "\u04e0\u04e0\u04e2\u04e2\u04e4\u04e4\u04e6\u04e6\u04e8\u04e8\u04ea\u04ea"+
+ "\u04ec\u04ec\u04ee\u04ee\u04f0\u04f0\u04f2\u04f2\u04f4\u04f4\u04f6\u04f6"+
+ "\u04f8\u04f8\u04fa\u04fa\u04fc\u04fc\u04fe\u04fe\u0500\u0500\u0502\u0502"+
+ "\u0504\u0504\u0506\u0506\u0508\u0508\u050a\u050a\u050c\u050c\u050e\u050e"+
+ "\u0510\u0510\u0512\u0512\u0514\u0514\u0516\u0516\u0518\u0518\u051a\u051a"+
+ "\u051c\u051c\u051e\u051e\u0520\u0520\u0522\u0522\u0524\u0524\u0526\u0526"+
+ "\u0528\u0528\u0533\u0558\u10a2\u10c7\u10c9\u10c9\u10cf\u10cf\u1e02\u1e02"+
+ "\u1e04\u1e04\u1e06\u1e06\u1e08\u1e08\u1e0a\u1e0a\u1e0c\u1e0c\u1e0e\u1e0e"+
+ "\u1e10\u1e10\u1e12\u1e12\u1e14\u1e14\u1e16\u1e16\u1e18\u1e18\u1e1a\u1e1a"+
+ "\u1e1c\u1e1c\u1e1e\u1e1e\u1e20\u1e20\u1e22\u1e22\u1e24\u1e24\u1e26\u1e26"+
+ "\u1e28\u1e28\u1e2a\u1e2a\u1e2c\u1e2c\u1e2e\u1e2e\u1e30\u1e30\u1e32\u1e32"+
+ "\u1e34\u1e34\u1e36\u1e36\u1e38\u1e38\u1e3a\u1e3a\u1e3c\u1e3c\u1e3e\u1e3e"+
+ "\u1e40\u1e40\u1e42\u1e42\u1e44\u1e44\u1e46\u1e46\u1e48\u1e48\u1e4a\u1e4a"+
+ "\u1e4c\u1e4c\u1e4e\u1e4e\u1e50\u1e50\u1e52\u1e52\u1e54\u1e54\u1e56\u1e56"+
+ "\u1e58\u1e58\u1e5a\u1e5a\u1e5c\u1e5c\u1e5e\u1e5e\u1e60\u1e60\u1e62\u1e62"+
+ "\u1e64\u1e64\u1e66\u1e66\u1e68\u1e68\u1e6a\u1e6a\u1e6c\u1e6c\u1e6e\u1e6e"+
+ "\u1e70\u1e70\u1e72\u1e72\u1e74\u1e74\u1e76\u1e76\u1e78\u1e78\u1e7a\u1e7a"+
+ "\u1e7c\u1e7c\u1e7e\u1e7e\u1e80\u1e80\u1e82\u1e82\u1e84\u1e84\u1e86\u1e86"+
+ "\u1e88\u1e88\u1e8a\u1e8a\u1e8c\u1e8c\u1e8e\u1e8e\u1e90\u1e90\u1e92\u1e92"+
+ "\u1e94\u1e94\u1e96\u1e96\u1ea0\u1ea0\u1ea2\u1ea2\u1ea4\u1ea4\u1ea6\u1ea6"+
+ "\u1ea8\u1ea8\u1eaa\u1eaa\u1eac\u1eac\u1eae\u1eae\u1eb0\u1eb0\u1eb2\u1eb2"+
+ "\u1eb4\u1eb4\u1eb6\u1eb6\u1eb8\u1eb8\u1eba\u1eba\u1ebc\u1ebc\u1ebe\u1ebe"+
+ "\u1ec0\u1ec0\u1ec2\u1ec2\u1ec4\u1ec4\u1ec6\u1ec6\u1ec8\u1ec8\u1eca\u1eca"+
+ "\u1ecc\u1ecc\u1ece\u1ece\u1ed0\u1ed0\u1ed2\u1ed2\u1ed4\u1ed4\u1ed6\u1ed6"+
+ "\u1ed8\u1ed8\u1eda\u1eda\u1edc\u1edc\u1ede\u1ede\u1ee0\u1ee0\u1ee2\u1ee2"+
+ "\u1ee4\u1ee4\u1ee6\u1ee6\u1ee8\u1ee8\u1eea\u1eea\u1eec\u1eec\u1eee\u1eee"+
+ "\u1ef0\u1ef0\u1ef2\u1ef2\u1ef4\u1ef4\u1ef6\u1ef6\u1ef8\u1ef8\u1efa\u1efa"+
+ "\u1efc\u1efc\u1efe\u1efe\u1f00\u1f00\u1f0a\u1f11\u1f1a\u1f1f\u1f2a\u1f31"+
+ "\u1f3a\u1f41\u1f4a\u1f4f\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f5f\u1f61\u1f61"+
+ "\u1f6a\u1f71\u1fba\u1fbd\u1fca\u1fcd\u1fda\u1fdd\u1fea\u1fee\u1ffa\u1ffd"+
+ "\u2104\u2104\u2109\u2109\u210d\u210f\u2112\u2114\u2117\u2117\u211b\u211f"+
+ "\u2126\u2126\u2128\u2128\u212a\u212a\u212c\u212f\u2132\u2135\u2140\u2141"+
+ "\u2147\u2147\u2185\u2185\u2c02\u2c30\u2c62\u2c62\u2c64\u2c66\u2c69\u2c69"+
+ "\u2c6b\u2c6b\u2c6d\u2c6d\u2c6f\u2c72\u2c74\u2c74\u2c77\u2c77\u2c80\u2c82"+
+ "\u2c84\u2c84\u2c86\u2c86\u2c88\u2c88\u2c8a\u2c8a\u2c8c\u2c8c\u2c8e\u2c8e"+
+ "\u2c90\u2c90\u2c92\u2c92\u2c94\u2c94\u2c96\u2c96\u2c98\u2c98\u2c9a\u2c9a"+
+ "\u2c9c\u2c9c\u2c9e\u2c9e\u2ca0\u2ca0\u2ca2\u2ca2\u2ca4\u2ca4\u2ca6\u2ca6"+
+ "\u2ca8\u2ca8\u2caa\u2caa\u2cac\u2cac\u2cae\u2cae\u2cb0\u2cb0\u2cb2\u2cb2"+
+ "\u2cb4\u2cb4\u2cb6\u2cb6\u2cb8\u2cb8\u2cba\u2cba\u2cbc\u2cbc\u2cbe\u2cbe"+
+ "\u2cc0\u2cc0\u2cc2\u2cc2\u2cc4\u2cc4\u2cc6\u2cc6\u2cc8\u2cc8\u2cca\u2cca"+
+ "\u2ccc\u2ccc\u2cce\u2cce\u2cd0\u2cd0\u2cd2\u2cd2\u2cd4\u2cd4\u2cd6\u2cd6"+
+ "\u2cd8\u2cd8\u2cda\u2cda\u2cdc\u2cdc\u2cde\u2cde\u2ce0\u2ce0\u2ce2\u2ce2"+
+ "\u2ce4\u2ce4\u2ced\u2ced\u2cef\u2cef\u2cf4\u2cf4\ua642\ua642\ua644\ua644"+
+ "\ua646\ua646\ua648\ua648\ua64a\ua64a\ua64c\ua64c\ua64e\ua64e\ua650\ua650"+
+ "\ua652\ua652\ua654\ua654\ua656\ua656\ua658\ua658\ua65a\ua65a\ua65c\ua65c"+
+ "\ua65e\ua65e\ua660\ua660\ua662\ua662\ua664\ua664\ua666\ua666\ua668\ua668"+
+ "\ua66a\ua66a\ua66c\ua66c\ua66e\ua66e\ua682\ua682\ua684\ua684\ua686\ua686"+
+ "\ua688\ua688\ua68a\ua68a\ua68c\ua68c\ua68e\ua68e\ua690\ua690\ua692\ua692"+
+ "\ua694\ua694\ua696\ua696\ua698\ua698\ua724\ua724\ua726\ua726\ua728\ua728"+
+ "\ua72a\ua72a\ua72c\ua72c\ua72e\ua72e\ua730\ua730\ua734\ua734\ua736\ua736"+
+ "\ua738\ua738\ua73a\ua73a\ua73c\ua73c\ua73e\ua73e\ua740\ua740\ua742\ua742"+
+ "\ua744\ua744\ua746\ua746\ua748\ua748\ua74a\ua74a\ua74c\ua74c\ua74e\ua74e"+
+ "\ua750\ua750\ua752\ua752\ua754\ua754\ua756\ua756\ua758\ua758\ua75a\ua75a"+
+ "\ua75c\ua75c\ua75e\ua75e\ua760\ua760\ua762\ua762\ua764\ua764\ua766\ua766"+
+ "\ua768\ua768\ua76a\ua76a\ua76c\ua76c\ua76e\ua76e\ua770\ua770\ua77b\ua77b"+
+ "\ua77d\ua77d\ua77f\ua780\ua782\ua782\ua784\ua784\ua786\ua786\ua788\ua788"+
+ "\ua78d\ua78d\ua78f\ua78f\ua792\ua792\ua794\ua794\ua7a2\ua7a2\ua7a4\ua7a4"+
+ "\ua7a6\ua7a6\ua7a8\ua7a8\ua7aa\ua7aa\ua7ac\ua7ac\uff23\uff3c%\2\62;\u0662"+
+ "\u066b\u06f2\u06fb\u07c2\u07cb\u0968\u0971\u09e8\u09f1\u0a68\u0a71\u0ae8"+
+ "\u0af1\u0b68\u0b71\u0be8\u0bf1\u0c68\u0c71\u0ce8\u0cf1\u0d68\u0d71\u0e52"+
+ "\u0e5b\u0ed2\u0edb\u0f22\u0f2b\u1042\u104b\u1092\u109b\u17e2\u17eb\u1812"+
+ "\u181b\u1948\u1951\u19d2\u19db\u1a82\u1a8b\u1a92\u1a9b\u1b52\u1b5b\u1bb2"+
+ "\u1bbb\u1c42\u1c4b\u1c52\u1c5b\ua622\ua62b\ua8d2\ua8db\ua902\ua90b\ua9d2"+
+ "\ua9db\uaa52\uaa5b\uabf2\uabfb\uff12\uff1b\t\2\u16f0\u16f2\u2162\u2184"+
+ "\u2187\u218a\u3009\u3009\u3023\u302b\u303a\u303c\ua6e8\ua6f1\5\2$$&&^"+
+ "^\u0a82\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2"+
+ "\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33"+
+ "\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2"+
+ "\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2"+
+ "\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2"+
+ "\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K"+
+ "\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2"+
+ "\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2"+
+ "\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q"+
+ "\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2"+
+ "\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087"+
+ "\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2"+
+ "\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099"+
+ "\3\2\2\2\2\u009b\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2"+
+ "\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab"+
+ "\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2"+
+ "\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd"+
+ "\3\2\2\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2"+
+ "\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf"+
+ "\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2"+
+ "\2\2\u00d9\3\2\2\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1"+
+ "\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2"+
+ "\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3"+
+ "\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2"+
+ "\2\2\u00fd\3\2\2\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105"+
+ "\3\2\2\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010b\3\2\2\2\2\u010d\3\2\2"+
+ "\2\2\u010f\3\2\2\2\2\u0111\3\2\2\2\2\u0113\3\2\2\2\2\u011b\3\2\2\2\2\u011f"+
+ "\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u0127\3\2\2\2\2\u0129\3\2\2"+
+ "\2\2\u012b\3\2\2\2\2\u012d\3\2\2\2\2\u012f\3\2\2\2\2\u0139\3\2\2\2\2\u013b"+
+ "\3\2\2\2\2\u013d\3\2\2\2\2\u013f\3\2\2\2\2\u0141\3\2\2\2\2\u0143\3\2\2"+
+ "\2\2\u0145\3\2\2\2\3\u0147\3\2\2\2\3\u0149\3\2\2\2\3\u014b\3\2\2\2\3\u014d"+
+ "\3\2\2\2\3\u014f\3\2\2\2\3\u0151\3\2\2\2\3\u0153\3\2\2\2\3\u0155\3\2\2"+
+ "\2\3\u0157\3\2\2\2\3\u0159\3\2\2\2\3\u015b\3\2\2\2\3\u015d\3\2\2\2\3\u015f"+
+ "\3\2\2\2\3\u0161\3\2\2\2\3\u0163\3\2\2\2\3\u0165\3\2\2\2\3\u0167\3\2\2"+
+ "\2\3\u0169\3\2\2\2\3\u016b\3\2\2\2\3\u016d\3\2\2\2\3\u016f\3\2\2\2\3\u0171"+
+ "\3\2\2\2\3\u0173\3\2\2\2\3\u0175\3\2\2\2\3\u0177\3\2\2\2\3\u0179\3\2\2"+
+ "\2\3\u017b\3\2\2\2\3\u017d\3\2\2\2\3\u017f\3\2\2\2\3\u0181\3\2\2\2\3\u0183"+
+ "\3\2\2\2\3\u0185\3\2\2\2\3\u0187\3\2\2\2\3\u0189\3\2\2\2\3\u018b\3\2\2"+
+ "\2\3\u018d\3\2\2\2\3\u018f\3\2\2\2\3\u0191\3\2\2\2\3\u0193\3\2\2\2\3\u0195"+
+ "\3\2\2\2\3\u0197\3\2\2\2\3\u0199\3\2\2\2\3\u019b\3\2\2\2\3\u019d\3\2\2"+
+ "\2\3\u019f\3\2\2\2\3\u01a1\3\2\2\2\3\u01a3\3\2\2\2\3\u01a5\3\2\2\2\3\u01a7"+
+ "\3\2\2\2\3\u01a9\3\2\2\2\3\u01ab\3\2\2\2\3\u01ad\3\2\2\2\3\u01af\3\2\2"+
+ "\2\3\u01b1\3\2\2\2\3\u01b3\3\2\2\2\3\u01b5\3\2\2\2\3\u01b7\3\2\2\2\3\u01b9"+
+ "\3\2\2\2\3\u01bb\3\2\2\2\3\u01bd\3\2\2\2\3\u01bf\3\2\2\2\3\u01c1\3\2\2"+
+ "\2\3\u01c3\3\2\2\2\3\u01c5\3\2\2\2\3\u01c7\3\2\2\2\3\u01c9\3\2\2\2\3\u01cb"+
+ "\3\2\2\2\3\u01cd\3\2\2\2\3\u01cf\3\2\2\2\3\u01d1\3\2\2\2\3\u01d3\3\2\2"+
+ "\2\3\u01d5\3\2\2\2\3\u01d7\3\2\2\2\3\u01d9\3\2\2\2\3\u01db\3\2\2\2\3\u01dd"+
+ "\3\2\2\2\3\u01df\3\2\2\2\3\u01e1\3\2\2\2\3\u01e3\3\2\2\2\3\u01e5\3\2\2"+
+ "\2\3\u01e7\3\2\2\2\3\u01e9\3\2\2\2\3\u01eb\3\2\2\2\3\u01ed\3\2\2\2\3\u01ef"+
+ "\3\2\2\2\3\u01f1\3\2\2\2\3\u01f3\3\2\2\2\3\u01f5\3\2\2\2\3\u01f7\3\2\2"+
+ "\2\3\u01f9\3\2\2\2\3\u01fb\3\2\2\2\3\u01fd\3\2\2\2\3\u01ff\3\2\2\2\3\u0201"+
+ "\3\2\2\2\3\u0203\3\2\2\2\3\u0205\3\2\2\2\3\u0207\3\2\2\2\3\u0209\3\2\2"+
+ "\2\3\u020b\3\2\2\2\3\u020d\3\2\2\2\3\u020f\3\2\2\2\3\u0211\3\2\2\2\3\u0213"+
+ "\3\2\2\2\3\u0215\3\2\2\2\3\u0217\3\2\2\2\3\u0219\3\2\2\2\3\u021b\3\2\2"+
+ "\2\3\u021d\3\2\2\2\3\u021f\3\2\2\2\3\u0221\3\2\2\2\3\u0223\3\2\2\2\3\u0225"+
+ "\3\2\2\2\3\u0227\3\2\2\2\3\u0229\3\2\2\2\3\u022b\3\2\2\2\3\u022d\3\2\2"+
+ "\2\3\u022f\3\2\2\2\3\u0231\3\2\2\2\3\u0233\3\2\2\2\3\u0235\3\2\2\2\3\u0237"+
+ "\3\2\2\2\4\u0239\3\2\2\2\4\u023b\3\2\2\2\4\u023d\3\2\2\2\4\u023f\3\2\2"+
+ "\2\4\u0241\3\2\2\2\5\u0243\3\2\2\2\5\u0245\3\2\2\2\5\u0247\3\2\2\2\5\u0249"+
+ "\3\2\2\2\5\u024b\3\2\2\2\5\u024d\3\2\2\2\5\u024f\3\2\2\2\6\u0251\3\2\2"+
+ "\2\6\u0253\3\2\2\2\6\u0255\3\2\2\2\6\u0257\3\2\2\2\6\u0259\3\2\2\2\6\u025b"+
+ "\3\2\2\2\6\u025d\3\2\2\2\6\u025f\3\2\2\2\6\u0261\3\2\2\2\6\u0263\3\2\2"+
+ "\2\6\u0265\3\2\2\2\6\u0267\3\2\2\2\6\u0269\3\2\2\2\6\u026b\3\2\2\2\6\u026d"+
+ "\3\2\2\2\6\u026f\3\2\2\2\6\u0271\3\2\2\2\6\u0273\3\2\2\2\6\u0275\3\2\2"+
+ "\2\6\u0277\3\2\2\2\6\u0279\3\2\2\2\6\u027b\3\2\2\2\6\u027d\3\2\2\2\6\u027f"+
+ "\3\2\2\2\6\u0281\3\2\2\2\6\u0283\3\2\2\2\6\u0285\3\2\2\2\6\u0287\3\2\2"+
+ "\2\6\u0289\3\2\2\2\6\u028b\3\2\2\2\6\u028d\3\2\2\2\6\u028f\3\2\2\2\6\u0291"+
+ "\3\2\2\2\6\u0293\3\2\2\2\6\u0295\3\2\2\2\6\u0297\3\2\2\2\6\u0299\3\2\2"+
+ "\2\6\u029b\3\2\2\2\6\u029d\3\2\2\2\6\u029f\3\2\2\2\6\u02a1\3\2\2\2\6\u02a3"+
+ "\3\2\2\2\6\u02a5\3\2\2\2\6\u02a7\3\2\2\2\6\u02a9\3\2\2\2\6\u02ab\3\2\2"+
+ "\2\6\u02ad\3\2\2\2\6\u02af\3\2\2\2\6\u02b1\3\2\2\2\6\u02b3\3\2\2\2\6\u02b5"+
+ "\3\2\2\2\6\u02b7\3\2\2\2\6\u02b9\3\2\2\2\6\u02bb\3\2\2\2\6\u02bd\3\2\2"+
+ "\2\6\u02bf\3\2\2\2\6\u02c1\3\2\2\2\6\u02c3\3\2\2\2\6\u02c5\3\2\2\2\6\u02c7"+
+ "\3\2\2\2\6\u02c9\3\2\2\2\6\u02cb\3\2\2\2\6\u02cd\3\2\2\2\6\u02cf\3\2\2"+
+ "\2\6\u02d1\3\2\2\2\6\u02d3\3\2\2\2\6\u02d5\3\2\2\2\7\u02d7\3\2\2\2\t\u02e2"+
+ "\3\2\2\2\13\u02f1\3\2\2\2\r\u02fc\3\2\2\2\17\u0303\3\2\2\2\21\u0305\3"+
+ "\2\2\2\23\u0309\3\2\2\2\25\u030b\3\2\2\2\27\u030d\3\2\2\2\31\u0311\3\2"+
+ "\2\2\33\u0313\3\2\2\2\35\u0317\3\2\2\2\37\u0319\3\2\2\2!\u031b\3\2\2\2"+
+ "#\u031d\3\2\2\2%\u031f\3\2\2\2\'\u0321\3\2\2\2)\u0323\3\2\2\2+\u0325\3"+
+ "\2\2\2-\u0327\3\2\2\2/\u032a\3\2\2\2\61\u032d\3\2\2\2\63\u0330\3\2\2\2"+
+ "\65\u0333\3\2\2\2\67\u0335\3\2\2\29\u0337\3\2\2\2;\u0339\3\2\2\2=\u033b"+
+ "\3\2\2\2?\u033e\3\2\2\2A\u0341\3\2\2\2C\u0344\3\2\2\2E\u0347\3\2\2\2G"+
+ "\u034a\3\2\2\2I\u034d\3\2\2\2K\u0350\3\2\2\2M\u0353\3\2\2\2O\u0356\3\2"+
+ "\2\2Q\u035a\3\2\2\2S\u035d\3\2\2\2U\u035f\3\2\2\2W\u0361\3\2\2\2Y\u0363"+
+ "\3\2\2\2[\u0366\3\2\2\2]\u0368\3\2\2\2_\u036a\3\2\2\2a\u036d\3\2\2\2c"+
+ "\u0370\3\2\2\2e\u0373\3\2\2\2g\u0377\3\2\2\2i\u037b\3\2\2\2k\u037e\3\2"+
+ "\2\2m\u0382\3\2\2\2o\u0384\3\2\2\2q\u038e\3\2\2\2s\u039a\3\2\2\2u\u03a3"+
+ "\3\2\2\2w\u03a9\3\2\2\2y\u03b1\3\2\2\2{\u03b8\3\2\2\2}\u03be\3\2\2\2\177"+
+ "\u03c8\3\2\2\2\u0081\u03cc\3\2\2\2\u0083\u03d3\3\2\2\2\u0085\u03d7\3\2"+
+ "\2\2\u0087\u03db\3\2\2\2\u0089\u03e5\3\2\2\2\u008b\u03f1\3\2\2\2\u008d"+
+ "\u03f4\3\2\2\2\u008f\u03fe\3\2\2\2\u0091\u0403\3\2\2\2\u0093\u0408\3\2"+
+ "\2\2\u0095\u040e\3\2\2\2\u0097\u0415\3\2\2\2\u0099\u041b\3\2\2\2\u009b"+
+ "\u041e\3\2\2\2\u009d\u0423\3\2\2\2\u009f\u0428\3\2\2\2\u00a1\u042c\3\2"+
+ "\2\2\u00a3\u0432\3\2\2\2\u00a5\u043a\3\2\2\2\u00a7\u043e\3\2\2\2\u00a9"+
+ "\u0441\3\2\2\2\u00ab\u0447\3\2\2\2\u00ad\u044d\3\2\2\2\u00af\u0454\3\2"+
+ "\2\2\u00b1\u045d\3\2\2\2\u00b3\u0463\3\2\2\2\u00b5\u0466\3\2\2\2\u00b7"+
+ "\u0469\3\2\2\2\u00b9\u046c\3\2\2\2\u00bb\u0476\3\2\2\2\u00bd\u0480\3\2"+
+ "\2\2\u00bf\u0484\3\2\2\2\u00c1\u048b\3\2\2\2\u00c3\u0495\3\2\2\2\u00c5"+
+ "\u049a\3\2\2\2\u00c7\u049f\3\2\2\2\u00c9\u04a3\3\2\2\2\u00cb\u04a7\3\2"+
+ "\2\2\u00cd\u04b1\3\2\2\2\u00cf\u04b8\3\2\2\2\u00d1\u04c2\3\2\2\2\u00d3"+
+ "\u04cc\3\2\2\2\u00d5\u04d4\3\2\2\2\u00d7\u04db\3\2\2\2\u00d9\u04e3\3\2"+
+ "\2\2\u00db\u04ed\3\2\2\2\u00dd\u04f6\3\2\2\2\u00df\u04fb\3\2\2\2\u00e1"+
+ "\u0502\3\2\2\2\u00e3\u050d\3\2\2\2\u00e5\u0512\3\2\2\2\u00e7\u0518\3\2"+
+ "\2\2\u00e9\u0520\3\2\2\2\u00eb\u0529\3\2\2\2\u00ed\u0530\3\2\2\2\u00ef"+
+ "\u0536\3\2\2\2\u00f1\u053f\3\2\2\2\u00f3\u0547\3\2\2\2\u00f5\u0550\3\2"+
+ "\2\2\u00f7\u0559\3\2\2\2\u00f9\u055f\3\2\2\2\u00fb\u0564\3\2\2\2\u00fd"+
+ "\u056a\3\2\2\2\u00ff\u0573\3\2\2\2\u0101\u057a\3\2\2\2\u0103\u0583\3\2"+
+ "\2\2\u0105\u058f\3\2\2\2\u0107\u0597\3\2\2\2\u0109\u059b\3\2\2\2\u010b"+
+ "\u05a3\3\2\2\2\u010d\u05a7\3\2\2\2\u010f\u05c3\3\2\2\2\u0111\u061e\3\2"+
+ "\2\2\u0113\u067d\3\2\2\2\u0115\u067f\3\2\2\2\u0117\u0681\3\2\2\2\u0119"+
+ "\u0683\3\2\2\2\u011b\u0685\3\2\2\2\u011d\u068f\3\2\2\2\u011f\u0691\3\2"+
+ "\2\2\u0121\u069b\3\2\2\2\u0123\u06a6\3\2\2\2\u0125\u06a8\3\2\2\2\u0127"+
+ "\u06c0\3\2\2\2\u0129\u06c2\3\2\2\2\u012b\u06c5\3\2\2\2\u012d\u06c8\3\2"+
+ "\2\2\u012f\u06cb\3\2\2\2\u0131\u06d4\3\2\2\2\u0133\u06d6\3\2\2\2\u0135"+
+ "\u06dd\3\2\2\2\u0137\u06e6\3\2\2\2\u0139\u06e8\3\2\2\2\u013b\u06ea\3\2"+
+ "\2\2\u013d\u06ec\3\2\2\2\u013f\u06ee\3\2\2\2\u0141\u06f0\3\2\2\2\u0143"+
+ "\u06f2\3\2\2\2\u0145\u06f4\3\2\2\2\u0147\u06f6\3\2\2\2\u0149\u06fb\3\2"+
+ "\2\2\u014b\u0700\3\2\2\2\u014d\u0705\3\2\2\2\u014f\u070a\3\2\2\2\u0151"+
+ "\u070e\3\2\2\2\u0153\u0712\3\2\2\2\u0155\u0716\3\2\2\2\u0157\u071a\3\2"+
+ "\2\2\u0159\u071e\3\2\2\2\u015b\u0722\3\2\2\2\u015d\u0726\3\2\2\2\u015f"+
+ "\u072a\3\2\2\2\u0161\u072e\3\2\2\2\u0163\u0732\3\2\2\2\u0165\u0736\3\2"+
+ "\2\2\u0167\u073a\3\2\2\2\u0169\u073e\3\2\2\2\u016b\u0742\3\2\2\2\u016d"+
+ "\u0746\3\2\2\2\u016f\u074a\3\2\2\2\u0171\u074e\3\2\2\2\u0173\u0752\3\2"+
+ "\2\2\u0175\u0756\3\2\2\2\u0177\u075a\3\2\2\2\u0179\u075e\3\2\2\2\u017b"+
+ "\u0762\3\2\2\2\u017d\u0766\3\2\2\2\u017f\u076a\3\2\2\2\u0181\u076e\3\2"+
+ "\2\2\u0183\u0772\3\2\2\2\u0185\u0776\3\2\2\2\u0187\u077a\3\2\2\2\u0189"+
+ "\u077e\3\2\2\2\u018b\u0782\3\2\2\2\u018d\u0786\3\2\2\2\u018f\u078a\3\2"+
+ "\2\2\u0191\u078e\3\2\2\2\u0193\u0792\3\2\2\2\u0195\u0796\3\2\2\2\u0197"+
+ "\u079a\3\2\2\2\u0199\u079e\3\2\2\2\u019b\u07a2\3\2\2\2\u019d\u07a6\3\2"+
+ "\2\2\u019f\u07aa\3\2\2\2\u01a1\u07ae\3\2\2\2\u01a3\u07b2\3\2\2\2\u01a5"+
+ "\u07b6\3\2\2\2\u01a7\u07ba\3\2\2\2\u01a9\u07be\3\2\2\2\u01ab\u07c3\3\2"+
+ "\2\2\u01ad\u07c8\3\2\2\2\u01af\u07cc\3\2\2\2\u01b1\u07d0\3\2\2\2\u01b3"+
+ "\u07d4\3\2\2\2\u01b5\u07d8\3\2\2\2\u01b7\u07dc\3\2\2\2\u01b9\u07e0\3\2"+
+ "\2\2\u01bb\u07e4\3\2\2\2\u01bd\u07e8\3\2\2\2\u01bf\u07ec\3\2\2\2\u01c1"+
+ "\u07f0\3\2\2\2\u01c3\u07f4\3\2\2\2\u01c5\u07f8\3\2\2\2\u01c7\u07fc\3\2"+
+ "\2\2\u01c9\u0800\3\2\2\2\u01cb\u0804\3\2\2\2\u01cd\u0808\3\2\2\2\u01cf"+
+ "\u080c\3\2\2\2\u01d1\u0810\3\2\2\2\u01d3\u0814\3\2\2\2\u01d5\u0818\3\2"+
+ "\2\2\u01d7\u081c\3\2\2\2\u01d9\u0820\3\2\2\2\u01db\u0824\3\2\2\2\u01dd"+
+ "\u0828\3\2\2\2\u01df\u082c\3\2\2\2\u01e1\u0830\3\2\2\2\u01e3\u0834\3\2"+
+ "\2\2\u01e5\u0838\3\2\2\2\u01e7\u083c\3\2\2\2\u01e9\u0840\3\2\2\2\u01eb"+
+ "\u0844\3\2\2\2\u01ed\u0848\3\2\2\2\u01ef\u084c\3\2\2\2\u01f1\u0850\3\2"+
+ "\2\2\u01f3\u0854\3\2\2\2\u01f5\u0858\3\2\2\2\u01f7\u085c\3\2\2\2\u01f9"+
+ "\u0860\3\2\2\2\u01fb\u0864\3\2\2\2\u01fd\u0868\3\2\2\2\u01ff\u086c\3\2"+
+ "\2\2\u0201\u0870\3\2\2\2\u0203\u0874\3\2\2\2\u0205\u0878\3\2\2\2\u0207"+
+ "\u087c\3\2\2\2\u0209\u0880\3\2\2\2\u020b\u0884\3\2\2\2\u020d\u0888\3\2"+
+ "\2\2\u020f\u088c\3\2\2\2\u0211\u0890\3\2\2\2\u0213\u0894\3\2\2\2\u0215"+
+ "\u0898\3\2\2\2\u0217\u089c\3\2\2\2\u0219\u08a0\3\2\2\2\u021b\u08a4\3\2"+
+ "\2\2\u021d\u08a8\3\2\2\2\u021f\u08ac\3\2\2\2\u0221\u08b0\3\2\2\2\u0223"+
+ "\u08b4\3\2\2\2\u0225\u08b8\3\2\2\2\u0227\u08bc\3\2\2\2\u0229\u08c0\3\2"+
+ "\2\2\u022b\u08c4\3\2\2\2\u022d\u08c8\3\2\2\2\u022f\u08cc\3\2\2\2\u0231"+
+ "\u08d0\3\2\2\2\u0233\u08d6\3\2\2\2\u0235\u08da\3\2\2\2\u0237\u08de\3\2"+
+ "\2\2\u0239\u08e2\3\2\2\2\u023b\u08e6\3\2\2\2\u023d\u08ee\3\2\2\2\u023f"+
+ "\u08f3\3\2\2\2\u0241\u08f5\3\2\2\2\u0243\u08fb\3\2\2\2\u0245\u0904\3\2"+
+ "\2\2\u0247\u0908\3\2\2\2\u0249\u0910\3\2\2\2\u024b\u0912\3\2\2\2\u024d"+
+ "\u0915\3\2\2\2\u024f\u091a\3\2\2\2\u0251\u091e\3\2\2\2\u0253\u0923\3\2"+
+ "\2\2\u0255\u0928\3\2\2\2\u0257\u092d\3\2\2\2\u0259\u0931\3\2\2\2\u025b"+
+ "\u0935\3\2\2\2\u025d\u093a\3\2\2\2\u025f\u093e\3\2\2\2\u0261\u0942\3\2"+
+ "\2\2\u0263\u0946\3\2\2\2\u0265\u094a\3\2\2\2\u0267\u094e\3\2\2\2\u0269"+
+ "\u0952\3\2\2\2\u026b\u0956\3\2\2\2\u026d\u095a\3\2\2\2\u026f\u095e\3\2"+
+ "\2\2\u0271\u0962\3\2\2\2\u0273\u0966\3\2\2\2\u0275\u096a\3\2\2\2\u0277"+
+ "\u096e\3\2\2\2\u0279\u0972\3\2\2\2\u027b\u0976\3\2\2\2\u027d\u097a\3\2"+
+ "\2\2\u027f\u097e\3\2\2\2\u0281\u0982\3\2\2\2\u0283\u0986\3\2\2\2\u0285"+
+ "\u098a\3\2\2\2\u0287\u098e\3\2\2\2\u0289\u0992\3\2\2\2\u028b\u0996\3\2"+
+ "\2\2\u028d\u099a\3\2\2\2\u028f\u099e\3\2\2\2\u0291\u09a2\3\2\2\2\u0293"+
+ "\u09a6\3\2\2\2\u0295\u09aa\3\2\2\2\u0297\u09ae\3\2\2\2\u0299\u09b2\3\2"+
+ "\2\2\u029b\u09b6\3\2\2\2\u029d\u09ba\3\2\2\2\u029f\u09be\3\2\2\2\u02a1"+
+ "\u09c2\3\2\2\2\u02a3\u09c6\3\2\2\2\u02a5\u09ca\3\2\2\2\u02a7\u09ce\3\2"+
+ "\2\2\u02a9\u09d2\3\2\2\2\u02ab\u09d4\3\2\2\2\u02ad\u09d8\3\2\2\2\u02af"+
+ "\u09dc\3\2\2\2\u02b1\u09e0\3\2\2\2\u02b3\u09e4\3\2\2\2\u02b5\u09e8\3\2"+
+ "\2\2\u02b7\u09ec\3\2\2\2\u02b9\u09f1\3\2\2\2\u02bb\u09f6\3\2\2\2\u02bd"+
+ "\u09fa\3\2\2\2\u02bf\u09fe\3\2\2\2\u02c1\u0a02\3\2\2\2\u02c3\u0a06\3\2"+
+ "\2\2\u02c5\u0a0a\3\2\2\2\u02c7\u0a0e\3\2\2\2\u02c9\u0a12\3\2\2\2\u02cb"+
+ "\u0a16\3\2\2\2\u02cd\u0a1a\3\2\2\2\u02cf\u0a1e\3\2\2\2\u02d1\u0a24\3\2"+
+ "\2\2\u02d3\u0a28\3\2\2\2\u02d5\u0a2c\3\2\2\2\u02d7\u02d8\7%\2\2\u02d8"+
+ "\u02d9\7#\2\2\u02d9\u02dd\3\2\2\2\u02da\u02dc\n\2\2\2\u02db\u02da\3\2"+
+ "\2\2\u02dc\u02df\3\2\2\2\u02dd\u02db\3\2\2\2\u02dd\u02de\3\2\2\2\u02de"+
+ "\u02e0\3\2\2\2\u02df\u02dd\3\2\2\2\u02e0\u02e1\b\2\2\2\u02e1\b\3\2\2\2"+
+ "\u02e2\u02e3\7\61\2\2\u02e3\u02e4\7,\2\2\u02e4\u02e9\3\2\2\2\u02e5\u02e8"+
+ "\5\t\3\2\u02e6\u02e8\13\2\2\2\u02e7\u02e5\3\2\2\2\u02e7\u02e6\3\2\2\2"+
+ "\u02e8\u02eb\3\2\2\2\u02e9\u02ea\3\2\2\2\u02e9\u02e7\3\2\2\2\u02ea\u02ec"+
+ "\3\2\2\2\u02eb\u02e9\3\2\2\2\u02ec\u02ed\7,\2\2\u02ed\u02ee\7\61\2\2\u02ee"+
+ "\u02ef\3\2\2\2\u02ef\u02f0\b\3\2\2\u02f0\n\3\2\2\2\u02f1\u02f2\7\61\2"+
+ "\2\u02f2\u02f3\7\61\2\2\u02f3\u02f7\3\2\2\2\u02f4\u02f6\n\2\2\2\u02f5"+
+ "\u02f4\3\2\2\2\u02f6\u02f9\3\2\2\2\u02f7\u02f5\3\2\2\2\u02f7\u02f8\3\2"+
+ "\2\2\u02f8\u02fa\3\2\2\2\u02f9\u02f7\3\2\2\2\u02fa\u02fb\b\4\2\2\u02fb"+
+ "\f\3\2\2\2\u02fc\u02fd\t\3\2\2\u02fd\u02fe\3\2\2\2\u02fe\u02ff\b\5\3\2"+
+ "\u02ff\16\3\2\2\2\u0300\u0304\7\f\2\2\u0301\u0302\7\17\2\2\u0302\u0304"+
+ "\7\f\2\2\u0303\u0300\3\2\2\2\u0303\u0301\3\2\2\2\u0304\20\3\2\2\2\u0305"+
+ "\u0306\7\60\2\2\u0306\u0307\7\60\2\2\u0307\u0308\7\60\2\2\u0308\22\3\2"+
+ "\2\2\u0309\u030a\7\60\2\2\u030a\24\3\2\2\2\u030b\u030c\7.\2\2\u030c\26"+
+ "\3\2\2\2\u030d\u030e\7*\2\2\u030e\u030f\3\2\2\2\u030f\u0310\b\n\4\2\u0310"+
+ "\30\3\2\2\2\u0311\u0312\7+\2\2\u0312\32\3\2\2\2\u0313\u0314\7]\2\2\u0314"+
+ "\u0315\3\2\2\2\u0315\u0316\b\f\4\2\u0316\34\3\2\2\2\u0317\u0318\7_\2\2"+
+ "\u0318\36\3\2\2\2\u0319\u031a\7}\2\2\u031a \3\2\2\2\u031b\u031c\7\177"+
+ "\2\2\u031c\"\3\2\2\2\u031d\u031e\7,\2\2\u031e$\3\2\2\2\u031f\u0320\7\'"+
+ "\2\2\u0320&\3\2\2\2\u0321\u0322\7\61\2\2\u0322(\3\2\2\2\u0323\u0324\7"+
+ "-\2\2\u0324*\3\2\2\2\u0325\u0326\7/\2\2\u0326,\3\2\2\2\u0327\u0328\7-"+
+ "\2\2\u0328\u0329\7-\2\2\u0329.\3\2\2\2\u032a\u032b\7/\2\2\u032b\u032c"+
+ "\7/\2\2\u032c\60\3\2\2\2\u032d\u032e\7(\2\2\u032e\u032f\7(\2\2\u032f\62"+
+ "\3\2\2\2\u0330\u0331\7~\2\2\u0331\u0332\7~\2\2\u0332\64\3\2\2\2\u0333"+
+ "\u0334\7#\2\2\u0334\66\3\2\2\2\u0335\u0336\7<\2\2\u03368\3\2\2\2\u0337"+
+ "\u0338\7=\2\2\u0338:\3\2\2\2\u0339\u033a\7?\2\2\u033a<\3\2\2\2\u033b\u033c"+
+ "\7-\2\2\u033c\u033d\7?\2\2\u033d>\3\2\2\2\u033e\u033f\7/\2\2\u033f\u0340"+
+ "\7?\2\2\u0340@\3\2\2\2\u0341\u0342\7,\2\2\u0342\u0343\7?\2\2\u0343B\3"+
+ "\2\2\2\u0344\u0345\7\61\2\2\u0345\u0346\7?\2\2\u0346D\3\2\2\2\u0347\u0348"+
+ "\7\'\2\2\u0348\u0349\7?\2\2\u0349F\3\2\2\2\u034a\u034b\7/\2\2\u034b\u034c"+
+ "\7@\2\2\u034cH\3\2\2\2\u034d\u034e\7?\2\2\u034e\u034f\7@\2\2\u034fJ\3"+
+ "\2\2\2\u0350\u0351\7\60\2\2\u0351\u0352\7\60\2\2\u0352L\3\2\2\2\u0353"+
+ "\u0354\7<\2\2\u0354\u0355\7<\2\2\u0355N\3\2\2\2\u0356\u0357\7A\2\2\u0357"+
+ "\u0358\7<\2\2\u0358\u0359\7<\2\2\u0359P\3\2\2\2\u035a\u035b\7=\2\2\u035b"+
+ "\u035c\7=\2\2\u035cR\3\2\2\2\u035d\u035e\7%\2\2\u035eT\3\2\2\2\u035f\u0360"+
+ "\7B\2\2\u0360V\3\2\2\2\u0361\u0362\7A\2\2\u0362X\3\2\2\2\u0363\u0364\7"+
+ "A\2\2\u0364\u0365\7<\2\2\u0365Z\3\2\2\2\u0366\u0367\7>\2\2\u0367\\\3\2"+
+ "\2\2\u0368\u0369\7@\2\2\u0369^\3\2\2\2\u036a\u036b\7>\2\2\u036b\u036c"+
+ "\7?\2\2\u036c`\3\2\2\2\u036d\u036e\7@\2\2\u036e\u036f\7?\2\2\u036fb\3"+
+ "\2\2\2\u0370\u0371\7#\2\2\u0371\u0372\7?\2\2\u0372d\3\2\2\2\u0373\u0374"+
+ "\7#\2\2\u0374\u0375\7?\2\2\u0375\u0376\7?\2\2\u0376f\3\2\2\2\u0377\u0378"+
+ "\7c\2\2\u0378\u0379\7u\2\2\u0379\u037a\7A\2\2\u037ah\3\2\2\2\u037b\u037c"+
+ "\7?\2\2\u037c\u037d\7?\2\2\u037dj\3\2\2\2\u037e\u037f\7?\2\2\u037f\u0380"+
+ "\7?\2\2\u0380\u0381\7?\2\2\u0381l\3\2\2\2\u0382\u0383\7)\2\2\u0383n\3"+
+ "\2\2\2\u0384\u0385\7t\2\2\u0385\u0386\7g\2\2\u0386\u0387\7v\2\2\u0387"+
+ "\u0388\7w\2\2\u0388\u0389\7t\2\2\u0389\u038a\7p\2\2\u038a\u038b\7B\2\2"+
+ "\u038b\u038c\3\2\2\2\u038c\u038d\5\u0127\u0092\2\u038dp\3\2\2\2\u038e"+
+ "\u038f\7e\2\2\u038f\u0390\7q\2\2\u0390\u0391\7p\2\2\u0391\u0392\7v\2\2"+
+ "\u0392\u0393\7k\2\2\u0393\u0394\7p\2\2\u0394\u0395\7w\2\2\u0395\u0396"+
+ "\7g\2\2\u0396\u0397\7B\2\2\u0397\u0398\3\2\2\2\u0398\u0399\5\u0127\u0092"+
+ "\2\u0399r\3\2\2\2\u039a\u039b\7d\2\2\u039b\u039c\7t\2\2\u039c\u039d\7"+
+ "g\2\2\u039d\u039e\7c\2\2\u039e\u039f\7m\2\2\u039f\u03a0\7B\2\2\u03a0\u03a1"+
+ "\3\2\2\2\u03a1\u03a2\5\u0127\u0092\2\u03a2t\3\2\2\2\u03a3\u03a4\7B\2\2"+
+ "\u03a4\u03a5\7h\2\2\u03a5\u03a6\7k\2\2\u03a6\u03a7\7n\2\2\u03a7\u03a8"+
+ "\7g\2\2\u03a8v\3\2\2\2\u03a9\u03aa\7r\2\2\u03aa\u03ab\7c\2\2\u03ab\u03ac"+
+ "\7e\2\2\u03ac\u03ad\7m\2\2\u03ad\u03ae\7c\2\2\u03ae\u03af\7i\2\2\u03af"+
+ "\u03b0\7g\2\2\u03b0x\3\2\2\2\u03b1\u03b2\7k\2\2\u03b2\u03b3\7o\2\2\u03b3"+
+ "\u03b4\7r\2\2\u03b4\u03b5\7q\2\2\u03b5\u03b6\7t\2\2\u03b6\u03b7\7v\2\2"+
+ "\u03b7z\3\2\2\2\u03b8\u03b9\7e\2\2\u03b9\u03ba\7n\2\2\u03ba\u03bb\7c\2"+
+ "\2\u03bb\u03bc\7u\2\2\u03bc\u03bd\7u\2\2\u03bd|\3\2\2\2\u03be\u03bf\7"+
+ "k\2\2\u03bf\u03c0\7p\2\2\u03c0\u03c1\7v\2\2\u03c1\u03c2\7g\2\2\u03c2\u03c3"+
+ "\7t\2\2\u03c3\u03c4\7h\2\2\u03c4\u03c5\7c\2\2\u03c5\u03c6\7e\2\2\u03c6"+
+ "\u03c7\7g\2\2\u03c7~\3\2\2\2\u03c8\u03c9\7h\2\2\u03c9\u03ca\7w\2\2\u03ca"+
+ "\u03cb\7p\2\2\u03cb\u0080\3\2\2\2\u03cc\u03cd\7q\2\2\u03cd\u03ce\7d\2"+
+ "\2\u03ce\u03cf\7l\2\2\u03cf\u03d0\7g\2\2\u03d0\u03d1\7e\2\2\u03d1\u03d2"+
+ "\7v\2\2\u03d2\u0082\3\2\2\2\u03d3\u03d4\7x\2\2\u03d4\u03d5\7c\2\2\u03d5"+
+ "\u03d6\7n\2\2\u03d6\u0084\3\2\2\2\u03d7\u03d8\7x\2\2\u03d8\u03d9\7c\2"+
+ "\2\u03d9\u03da\7t\2\2\u03da\u0086\3\2\2\2\u03db\u03dc\7v\2\2\u03dc\u03dd"+
+ "\7{\2\2\u03dd\u03de\7r\2\2\u03de\u03df\7g\2\2\u03df\u03e0\7c\2\2\u03e0"+
+ "\u03e1\7n\2\2\u03e1\u03e2\7k\2\2\u03e2\u03e3\7c\2\2\u03e3\u03e4\7u\2\2"+
+ "\u03e4\u0088\3\2\2\2\u03e5\u03e6\7e\2\2\u03e6\u03e7\7q\2\2\u03e7\u03e8"+
+ "\7p\2\2\u03e8\u03e9\7u\2\2\u03e9\u03ea\7v\2\2\u03ea\u03eb\7t\2\2\u03eb"+
+ "\u03ec\7w\2\2\u03ec\u03ed\7e\2\2\u03ed\u03ee\7v\2\2\u03ee\u03ef\7q\2\2"+
+ "\u03ef\u03f0\7t\2\2\u03f0\u008a\3\2\2\2\u03f1\u03f2\7d\2\2\u03f2\u03f3"+
+ "\7{\2\2\u03f3\u008c\3\2\2\2\u03f4\u03f5\7e\2\2\u03f5\u03f6\7q\2\2\u03f6"+
+ "\u03f7\7o\2\2\u03f7\u03f8\7r\2\2\u03f8\u03f9\7c\2\2\u03f9\u03fa\7p\2\2"+
+ "\u03fa\u03fb\7k\2\2\u03fb\u03fc\7q\2\2\u03fc\u03fd\7p\2\2\u03fd\u008e"+
+ "\3\2\2\2\u03fe\u03ff\7k\2\2\u03ff\u0400\7p\2\2\u0400\u0401\7k\2\2\u0401"+
+ "\u0402\7v\2\2\u0402\u0090\3\2\2\2\u0403\u0404\7v\2\2\u0404\u0405\7j\2"+
+ "\2\u0405\u0406\7k\2\2\u0406\u0407\7u\2\2\u0407\u0092\3\2\2\2\u0408\u0409"+
+ "\7u\2\2\u0409\u040a\7w\2\2\u040a\u040b\7r\2\2\u040b\u040c\7g\2\2\u040c"+
+ "\u040d\7t\2\2\u040d\u0094\3\2\2\2\u040e\u040f\7v\2\2\u040f\u0410\7{\2"+
+ "\2\u0410\u0411\7r\2\2\u0411\u0412\7g\2\2\u0412\u0413\7q\2\2\u0413\u0414"+
+ "\7h\2\2\u0414\u0096\3\2\2\2\u0415\u0416\7y\2\2\u0416\u0417\7j\2\2\u0417"+
+ "\u0418\7g\2\2\u0418\u0419\7t\2\2\u0419\u041a\7g\2\2\u041a\u0098\3\2\2"+
+ "\2\u041b\u041c\7k\2\2\u041c\u041d\7h\2\2\u041d\u009a\3\2\2\2\u041e\u041f"+
+ "\7g\2\2\u041f\u0420\7n\2\2\u0420\u0421\7u\2\2\u0421\u0422\7g\2\2\u0422"+
+ "\u009c\3\2\2\2\u0423\u0424\7y\2\2\u0424\u0425\7j\2\2\u0425\u0426\7g\2"+
+ "\2\u0426\u0427\7p\2\2\u0427\u009e\3\2\2\2\u0428\u0429\7v\2\2\u0429\u042a"+
+ "\7t\2\2\u042a\u042b\7{\2\2\u042b\u00a0\3\2\2\2\u042c\u042d\7e\2\2\u042d"+
+ "\u042e\7c\2\2\u042e\u042f\7v\2\2\u042f\u0430\7e\2\2\u0430\u0431\7j\2\2"+
+ "\u0431\u00a2\3\2\2\2\u0432\u0433\7h\2\2\u0433\u0434\7k\2\2\u0434\u0435"+
+ "\7p\2\2\u0435\u0436\7c\2\2\u0436\u0437\7n\2\2\u0437\u0438\7n\2\2\u0438"+
+ "\u0439\7{\2\2\u0439\u00a4\3\2\2\2\u043a\u043b\7h\2\2\u043b\u043c\7q\2"+
+ "\2\u043c\u043d\7t\2\2\u043d\u00a6\3\2\2\2\u043e\u043f\7f\2\2\u043f\u0440"+
+ "\7q\2\2\u0440\u00a8\3\2\2\2\u0441\u0442\7y\2\2\u0442\u0443\7j\2\2\u0443"+
+ "\u0444\7k\2\2\u0444\u0445\7n\2\2\u0445\u0446\7g\2\2\u0446\u00aa\3\2\2"+
+ "\2\u0447\u0448\7v\2\2\u0448\u0449\7j\2\2\u0449\u044a\7t\2\2\u044a\u044b"+
+ "\7q\2\2\u044b\u044c\7y\2\2\u044c\u00ac\3\2\2\2\u044d\u044e\7t\2\2\u044e"+
+ "\u044f\7g\2\2\u044f\u0450\7v\2\2\u0450\u0451\7w\2\2\u0451\u0452\7t\2\2"+
+ "\u0452\u0453\7p\2\2\u0453\u00ae\3\2\2\2\u0454\u0455\7e\2\2\u0455\u0456"+
+ "\7q\2\2\u0456\u0457\7p\2\2\u0457\u0458\7v\2\2\u0458\u0459\7k\2\2\u0459"+
+ "\u045a\7p\2\2\u045a\u045b\7w\2\2\u045b\u045c\7g\2\2\u045c\u00b0\3\2\2"+
+ "\2\u045d\u045e\7d\2\2\u045e\u045f\7t\2\2\u045f\u0460\7g\2\2\u0460\u0461"+
+ "\7c\2\2\u0461\u0462\7m\2\2\u0462\u00b2\3\2\2\2\u0463\u0464\7c\2\2\u0464"+
+ "\u0465\7u\2\2\u0465\u00b4\3\2\2\2\u0466\u0467\7k\2\2\u0467\u0468\7u\2"+
+ "\2\u0468\u00b6\3\2\2\2\u0469\u046a\7k\2\2\u046a\u046b\7p\2\2\u046b\u00b8"+
+ "\3\2\2\2\u046c\u046d\7#\2\2\u046d\u046e\7k\2\2\u046e\u046f\7u\2\2\u046f"+
+ "\u0472\3\2\2\2\u0470\u0473\5\r\5\2\u0471\u0473\5\17\6\2\u0472\u0470\3"+
+ "\2\2\2\u0472\u0471\3\2\2\2\u0473\u0474\3\2\2\2\u0474\u0472\3\2\2\2\u0474"+
+ "\u0475\3\2\2\2\u0475\u00ba\3\2\2\2\u0476\u0477\7#\2\2\u0477\u0478\7k\2"+
+ "\2\u0478\u0479\7p\2\2\u0479\u047c\3\2\2\2\u047a\u047d\5\r\5\2\u047b\u047d"+
+ "\5\17\6\2\u047c\u047a\3\2\2\2\u047c\u047b\3\2\2\2\u047d\u047e\3\2\2\2"+
+ "\u047e\u047c\3\2\2\2\u047e\u047f\3\2\2\2\u047f\u00bc\3\2\2\2\u0480\u0481"+
+ "\7q\2\2\u0481\u0482\7w\2\2\u0482\u0483\7v\2\2\u0483\u00be\3\2\2\2\u0484"+
+ "\u0485\7B\2\2\u0485\u0486\7h\2\2\u0486\u0487\7k\2\2\u0487\u0488\7g\2\2"+
+ "\u0488\u0489\7n\2\2\u0489\u048a\7f\2\2\u048a\u00c0\3\2\2\2\u048b\u048c"+
+ "\7B\2\2\u048c\u048d\7r\2\2\u048d\u048e\7t\2\2\u048e\u048f\7q\2\2\u048f"+
+ "\u0490\7r\2\2\u0490\u0491\7g\2\2\u0491\u0492\7t\2\2\u0492\u0493\7v\2\2"+
+ "\u0493\u0494\7{\2\2\u0494\u00c2\3\2\2\2\u0495\u0496\7B\2\2\u0496\u0497"+
+ "\7i\2\2\u0497\u0498\7g\2\2\u0498\u0499\7v\2\2\u0499\u00c4\3\2\2\2\u049a"+
+ "\u049b\7B\2\2\u049b\u049c\7u\2\2\u049c\u049d\7g\2\2\u049d\u049e\7v\2\2"+
+ "\u049e\u00c6\3\2\2\2\u049f\u04a0\7i\2\2\u04a0\u04a1\7g\2\2\u04a1\u04a2"+
+ "\7v\2\2\u04a2\u00c8\3\2\2\2\u04a3\u04a4\7u\2\2\u04a4\u04a5\7g\2\2\u04a5"+
+ "\u04a6\7v\2\2\u04a6\u00ca\3\2\2\2\u04a7\u04a8\7B\2\2\u04a8\u04a9\7t\2"+
+ "\2\u04a9\u04aa\7g\2\2\u04aa\u04ab\7e\2\2\u04ab\u04ac\7g\2\2\u04ac\u04ad"+
+ "\7k\2\2\u04ad\u04ae\7x\2\2\u04ae\u04af\7g\2\2\u04af\u04b0\7t\2\2\u04b0"+
+ "\u00cc\3\2\2\2\u04b1\u04b2\7B\2\2\u04b2\u04b3\7r\2\2\u04b3\u04b4\7c\2"+
+ "\2\u04b4\u04b5\7t\2\2\u04b5\u04b6\7c\2\2\u04b6\u04b7\7o\2\2\u04b7\u00ce"+
+ "\3\2\2\2\u04b8\u04b9\7B\2\2\u04b9\u04ba\7u\2\2\u04ba\u04bb\7g\2\2\u04bb"+
+ "\u04bc\7v\2\2\u04bc\u04bd\7r\2\2\u04bd\u04be\7c\2\2\u04be\u04bf\7t\2\2"+
+ "\u04bf\u04c0\7c\2\2\u04c0\u04c1\7o\2\2\u04c1\u00d0\3\2\2\2\u04c2\u04c3"+
+ "\7B\2\2\u04c3\u04c4\7f\2\2\u04c4\u04c5\7g\2\2\u04c5\u04c6\7n\2\2\u04c6"+
+ "\u04c7\7g\2\2\u04c7\u04c8\7i\2\2\u04c8\u04c9\7c\2\2\u04c9\u04ca\7v\2\2"+
+ "\u04ca\u04cb\7g\2\2\u04cb\u00d2\3\2\2\2\u04cc\u04cd\7f\2\2\u04cd\u04ce"+
+ "\7{\2\2\u04ce\u04cf\7p\2\2\u04cf\u04d0\7c\2\2\u04d0\u04d1\7o\2\2\u04d1"+
+ "\u04d2\7k\2\2\u04d2\u04d3\7e\2\2\u04d3\u00d4\3\2\2\2\u04d4\u04d5\7r\2"+
+ "\2\u04d5\u04d6\7w\2\2\u04d6\u04d7\7d\2\2\u04d7\u04d8\7n\2\2\u04d8\u04d9"+
+ "\7k\2\2\u04d9\u04da\7e\2\2\u04da\u00d6\3\2\2\2\u04db\u04dc\7r\2\2\u04dc"+
+ "\u04dd\7t\2\2\u04dd\u04de\7k\2\2\u04de\u04df\7x\2\2\u04df\u04e0\7c\2\2"+
+ "\u04e0\u04e1\7v\2\2\u04e1\u04e2\7g\2\2\u04e2\u00d8\3\2\2\2\u04e3\u04e4"+
+ "\7r\2\2\u04e4\u04e5\7t\2\2\u04e5\u04e6\7q\2\2\u04e6\u04e7\7v\2\2\u04e7"+
+ "\u04e8\7g\2\2\u04e8\u04e9\7e\2\2\u04e9\u04ea\7v\2\2\u04ea\u04eb\7g\2\2"+
+ "\u04eb\u04ec\7f\2\2\u04ec\u00da\3\2\2\2\u04ed\u04ee\7k\2\2\u04ee\u04ef"+
+ "\7p\2\2\u04ef\u04f0\7v\2\2\u04f0\u04f1\7g\2\2\u04f1\u04f2\7t\2\2\u04f2"+
+ "\u04f3\7p\2\2\u04f3\u04f4\7c\2\2\u04f4\u04f5\7n\2\2\u04f5\u00dc\3\2\2"+
+ "\2\u04f6\u04f7\7g\2\2\u04f7\u04f8\7p\2\2\u04f8\u04f9\7w\2\2\u04f9\u04fa"+
+ "\7o\2\2\u04fa\u00de\3\2\2\2\u04fb\u04fc\7u\2\2\u04fc\u04fd\7g\2\2\u04fd"+
+ "\u04fe\7c\2\2\u04fe\u04ff\7n\2\2\u04ff\u0500\7g\2\2\u0500\u0501\7f\2\2"+
+ "\u0501\u00e0\3\2\2\2\u0502\u0503\7c\2\2\u0503\u0504\7p\2\2\u0504\u0505"+
+ "\7p\2\2\u0505\u0506\7q\2\2\u0506\u0507\7v\2\2\u0507\u0508\7c\2\2\u0508"+
+ "\u0509\7v\2\2\u0509\u050a\7k\2\2\u050a\u050b\7q\2\2\u050b\u050c\7p\2\2"+
+ "\u050c\u00e2\3\2\2\2\u050d\u050e\7f\2\2\u050e\u050f\7c\2\2\u050f\u0510"+
+ "\7v\2\2\u0510\u0511\7c\2\2\u0511\u00e4\3\2\2\2\u0512\u0513\7k\2\2\u0513"+
+ "\u0514\7p\2\2\u0514\u0515\7p\2\2\u0515\u0516\7g\2\2\u0516\u0517\7t\2\2"+
+ "\u0517\u00e6\3\2\2\2\u0518\u0519\7v\2\2\u0519\u051a\7c\2\2\u051a\u051b"+
+ "\7k\2\2\u051b\u051c\7n\2\2\u051c\u051d\7t\2\2\u051d\u051e\7g\2\2\u051e"+
+ "\u051f\7e\2\2\u051f\u00e8\3\2\2\2\u0520\u0521\7q\2\2\u0521\u0522\7r\2"+
+ "\2\u0522\u0523\7g\2\2\u0523\u0524\7t\2\2\u0524\u0525\7c\2\2\u0525\u0526"+
+ "\7v\2\2\u0526\u0527\7q\2\2\u0527\u0528\7t\2\2\u0528\u00ea\3\2\2\2\u0529"+
+ "\u052a\7k\2\2\u052a\u052b\7p\2\2\u052b\u052c\7n\2\2\u052c\u052d\7k\2\2"+
+ "\u052d\u052e\7p\2\2\u052e\u052f\7g\2\2\u052f\u00ec\3\2\2\2\u0530\u0531"+
+ "\7k\2\2\u0531\u0532\7p\2\2\u0532\u0533\7h\2\2\u0533\u0534\7k\2\2\u0534"+
+ "\u0535\7z\2\2\u0535\u00ee\3\2\2\2\u0536\u0537\7g\2\2\u0537\u0538\7z\2"+
+ "\2\u0538\u0539\7v\2\2\u0539\u053a\7g\2\2\u053a\u053b\7t\2\2\u053b\u053c"+
+ "\7p\2\2\u053c\u053d\7c\2\2\u053d\u053e\7n\2\2\u053e\u00f0\3\2\2\2\u053f"+
+ "\u0540\7u\2\2\u0540\u0541\7w\2\2\u0541\u0542\7u\2\2\u0542\u0543\7r\2\2"+
+ "\u0543\u0544\7g\2\2\u0544\u0545\7p\2\2\u0545\u0546\7f\2\2\u0546\u00f2"+
+ "\3\2\2\2\u0547\u0548\7q\2\2\u0548\u0549\7x\2\2\u0549\u054a\7g\2\2\u054a"+
+ "\u054b\7t\2\2\u054b\u054c\7t\2\2\u054c\u054d\7k\2\2\u054d\u054e\7f\2\2"+
+ "\u054e\u054f\7g\2\2\u054f\u00f4\3\2\2\2\u0550\u0551\7c\2\2\u0551\u0552"+
+ "\7d\2\2\u0552\u0553\7u\2\2\u0553\u0554\7v\2\2\u0554\u0555\7t\2\2\u0555"+
+ "\u0556\7c\2\2\u0556\u0557\7e\2\2\u0557\u0558\7v\2\2\u0558\u00f6\3\2\2"+
+ "\2\u0559\u055a\7h\2\2\u055a\u055b\7k\2\2\u055b\u055c\7p\2\2\u055c\u055d"+
+ "\7c\2\2\u055d\u055e\7n\2\2\u055e\u00f8\3\2\2\2\u055f\u0560\7q\2\2\u0560"+
+ "\u0561\7r\2\2\u0561\u0562\7g\2\2\u0562\u0563\7p\2\2\u0563\u00fa\3\2\2"+
+ "\2\u0564\u0565\7e\2\2\u0565\u0566\7q\2\2\u0566\u0567\7p\2\2\u0567\u0568"+
+ "\7u\2\2\u0568\u0569\7v\2\2\u0569\u00fc\3\2\2\2\u056a\u056b\7n\2\2\u056b"+
+ "\u056c\7c\2\2\u056c\u056d\7v\2\2\u056d\u056e\7g\2\2\u056e\u056f\7k\2\2"+
+ "\u056f\u0570\7p\2\2\u0570\u0571\7k\2\2\u0571\u0572\7v\2\2\u0572\u00fe"+
+ "\3\2\2\2\u0573\u0574\7x\2\2\u0574\u0575\7c\2\2\u0575\u0576\7t\2\2\u0576"+
+ "\u0577\7c\2\2\u0577\u0578\7t\2\2\u0578\u0579\7i\2\2\u0579\u0100\3\2\2"+
+ "\2\u057a\u057b\7p\2\2\u057b\u057c\7q\2\2\u057c\u057d\7k\2\2\u057d\u057e"+
+ "\7p\2\2\u057e\u057f\7n\2\2\u057f\u0580\7k\2\2\u0580\u0581\7p\2\2\u0581"+
+ "\u0582\7g\2\2\u0582\u0102\3\2\2\2\u0583\u0584\7e\2\2\u0584\u0585\7t\2"+
+ "\2\u0585\u0586\7q\2\2\u0586\u0587\7u\2\2\u0587\u0588\7u\2\2\u0588\u0589"+
+ "\7k\2\2\u0589\u058a\7p\2\2\u058a\u058b\7n\2\2\u058b\u058c\7k\2\2\u058c"+
+ "\u058d\7p\2\2\u058d\u058e\7g\2\2\u058e\u0104\3\2\2\2\u058f\u0590\7t\2"+
+ "\2\u0590\u0591\7g\2\2\u0591\u0592\7k\2\2\u0592\u0593\7h\2\2\u0593\u0594"+
+ "\7k\2\2\u0594\u0595\7g\2\2\u0595\u0596\7f\2\2\u0596\u0106\3\2\2\2\u0597"+
+ "\u0598\7$\2\2\u0598\u0599\3\2\2\2\u0599\u059a\b\u0082\5\2\u059a\u0108"+
+ "\3\2\2\2\u059b\u059c\7$\2\2\u059c\u059d\7$\2\2\u059d\u059e\7$\2\2\u059e"+
+ "\u059f\3\2\2\2\u059f\u05a0\b\u0083\6\2\u05a0\u010a\3\2\2\2\u05a1\u05a4"+
+ "\5\u010d\u0085\2\u05a2\u05a4\5\u010f\u0086\2\u05a3\u05a1\3\2\2\2\u05a3"+
+ "\u05a2\3\2\2\2\u05a4\u010c\3\2\2\2\u05a5\u05a8\5\u010f\u0086\2\u05a6\u05a8"+
+ "\5\u0113\u0088\2\u05a7\u05a5\3\2\2\2\u05a7\u05a6\3\2\2\2\u05a8\u05a9\3"+
+ "\2\2\2\u05a9\u05aa\t\4\2\2\u05aa\u010e\3\2\2\2\u05ab\u05af\5\u0117\u008a"+
+ "\2\u05ac\u05ae\5\u0115\u0089\2\u05ad\u05ac\3\2\2\2\u05ae\u05b1\3\2\2\2"+
+ "\u05af\u05ad\3\2\2\2\u05af\u05b0\3\2\2\2\u05b0\u05b4\3\2\2\2\u05b1\u05af"+
+ "\3\2\2\2\u05b2\u05b4\7\62\2\2\u05b3\u05ab\3\2\2\2\u05b3\u05b2\3\2\2\2"+
+ "\u05b3\u05b4\3\2\2\2\u05b4\u05b5\3\2\2\2\u05b5\u05c4\7\60\2\2\u05b6\u05bb"+
+ "\5\u0117\u008a\2\u05b7\u05ba\5\u0115\u0089\2\u05b8\u05ba\7a\2\2\u05b9"+
+ "\u05b7\3\2\2\2\u05b9\u05b8\3\2\2\2\u05ba\u05bd\3\2\2\2\u05bb\u05b9\3\2"+
+ "\2\2\u05bb\u05bc\3\2\2\2\u05bc\u05be\3\2\2\2\u05bd\u05bb\3\2\2\2\u05be"+
+ "\u05bf\5\u0115\u0089\2\u05bf\u05c1\3\2\2\2\u05c0\u05b6\3\2\2\2\u05c0\u05c1"+
+ "\3\2\2\2\u05c1\u05c2\3\2\2\2\u05c2\u05c4\7\60\2\2\u05c3\u05b3\3\2\2\2"+
+ "\u05c3\u05c0\3\2\2\2\u05c4\u0619\3\2\2\2\u05c5\u05c7\5\u0115\u0089\2\u05c6"+
+ "\u05c5\3\2\2\2\u05c7\u05c8\3\2\2\2\u05c8\u05c6\3\2\2\2\u05c8\u05c9\3\2"+
+ "\2\2\u05c9\u061a\3\2\2\2\u05ca\u05cd\5\u0115\u0089\2\u05cb\u05ce\5\u0115"+
+ "\u0089\2\u05cc\u05ce\7a\2\2\u05cd\u05cb\3\2\2\2\u05cd\u05cc\3\2\2\2\u05ce"+
+ "\u05cf\3\2\2\2\u05cf\u05cd\3\2\2\2\u05cf\u05d0\3\2\2\2\u05d0\u05d1\3\2"+
+ "\2\2\u05d1\u05d2\5\u0115\u0089\2\u05d2\u061a\3\2\2\2\u05d3\u05d5\5\u0115"+
+ "\u0089\2\u05d4\u05d3\3\2\2\2\u05d5\u05d6\3\2\2\2\u05d6\u05d4\3\2\2\2\u05d6"+
+ "\u05d7\3\2\2\2\u05d7\u05d8\3\2\2\2\u05d8\u05da\t\5\2\2\u05d9\u05db\t\6"+
+ "\2\2\u05da\u05d9\3\2\2\2\u05da\u05db\3\2\2\2\u05db\u05dd\3\2\2\2\u05dc"+
+ "\u05de\5\u0115\u0089\2\u05dd\u05dc\3\2\2\2\u05de\u05df\3\2\2\2\u05df\u05dd"+
+ "\3\2\2\2\u05df\u05e0\3\2\2\2\u05e0\u061a\3\2\2\2\u05e1\u05e3\5\u0115\u0089"+
+ "\2\u05e2\u05e1\3\2\2\2\u05e3\u05e4\3\2\2\2\u05e4\u05e2\3\2\2\2\u05e4\u05e5"+
+ "\3\2\2\2\u05e5\u05e6\3\2\2\2\u05e6\u05e8\t\5\2\2\u05e7\u05e9\t\6\2\2\u05e8"+
+ "\u05e7\3\2\2\2\u05e8\u05e9\3\2\2\2\u05e9\u05ea\3\2\2\2\u05ea\u05ed\5\u0115"+
+ "\u0089\2\u05eb\u05ee\5\u0115\u0089\2\u05ec\u05ee\7a\2\2\u05ed\u05eb\3"+
+ "\2\2\2\u05ed\u05ec\3\2\2\2\u05ee\u05ef\3\2\2\2\u05ef\u05ed\3\2\2\2\u05ef"+
+ "\u05f0\3\2\2\2\u05f0\u05f1\3\2\2\2\u05f1\u05f2\5\u0115\u0089\2\u05f2\u061a"+
+ "\3\2\2\2\u05f3\u05f6\5\u0115\u0089\2\u05f4\u05f7\5\u0115\u0089\2\u05f5"+
+ "\u05f7\7a\2\2\u05f6\u05f4\3\2\2\2\u05f6\u05f5\3\2\2\2\u05f7\u05f8\3\2"+
+ "\2\2\u05f8\u05f6\3\2\2\2\u05f8\u05f9\3\2\2\2\u05f9\u05fa\3\2\2\2\u05fa"+
+ "\u05fb\5\u0115\u0089\2\u05fb\u05fd\t\5\2\2\u05fc\u05fe\t\6\2\2\u05fd\u05fc"+
+ "\3\2\2\2\u05fd\u05fe\3\2\2\2\u05fe\u0600\3\2\2\2\u05ff\u0601\5\u0115\u0089"+
+ "\2\u0600\u05ff\3\2\2\2\u0601\u0602\3\2\2\2\u0602\u0600\3\2\2\2\u0602\u0603"+
+ "\3\2\2\2\u0603\u061a\3\2\2\2\u0604\u0607\5\u0115\u0089\2\u0605\u0608\5"+
+ "\u0115\u0089\2\u0606\u0608\7a\2\2\u0607\u0605\3\2\2\2\u0607\u0606\3\2"+
+ "\2\2\u0608\u0609\3\2\2\2\u0609\u0607\3\2\2\2\u0609\u060a\3\2\2\2\u060a"+
+ "\u060b\3\2\2\2\u060b\u060c\5\u0115\u0089\2\u060c\u060e\t\5\2\2\u060d\u060f"+
+ "\t\6\2\2\u060e\u060d\3\2\2\2\u060e\u060f\3\2\2\2\u060f\u0610\3\2\2\2\u0610"+
+ "\u0613\5\u0115\u0089\2\u0611\u0614\5\u0115\u0089\2\u0612\u0614\7a\2\2"+
+ "\u0613\u0611\3\2\2\2\u0613\u0612\3\2\2\2\u0614\u0615\3\2\2\2\u0615\u0613"+
+ "\3\2\2\2\u0615\u0616\3\2\2\2\u0616\u0617\3\2\2\2\u0617\u0618\5\u0115\u0089"+
+ "\2\u0618\u061a\3\2\2\2\u0619\u05c6\3\2\2\2\u0619\u05ca\3\2\2\2\u0619\u05d4"+
+ "\3\2\2\2\u0619\u05e2\3\2\2\2\u0619\u05f3\3\2\2\2\u0619\u0604\3\2\2\2\u061a"+
+ "\u0110\3\2\2\2\u061b\u061f\5\u0113\u0088\2\u061c\u061f\5\u011b\u008c\2"+
+ "\u061d\u061f\5\u011f\u008e\2\u061e\u061b\3\2\2\2\u061e\u061c\3\2\2\2\u061e"+
+ "\u061d\3\2\2\2\u061f\u0620\3\2\2\2\u0620\u0621\7N\2\2\u0621\u0112\3\2"+
+ "\2\2\u0622\u067e\7\62\2\2\u0623\u0627\5\u0117\u008a\2\u0624\u0626\5\u0115"+
+ "\u0089\2\u0625\u0624\3\2\2\2\u0626\u0629\3\2\2\2\u0627\u0625\3\2\2\2\u0627"+
+ "\u0628\3\2\2\2\u0628\u067e\3\2\2\2\u0629\u0627\3\2\2\2\u062a\u062d\5\u0117"+
+ "\u008a\2\u062b\u062e\5\u0115\u0089\2\u062c\u062e\7a\2\2\u062d\u062b\3"+
+ "\2\2\2\u062d\u062c\3\2\2\2\u062e\u062f\3\2\2\2\u062f\u062d\3\2\2\2\u062f"+
+ "\u0630\3\2\2\2\u0630\u0631\3\2\2\2\u0631\u0632\5\u0115\u0089\2\u0632\u067e"+
+ "\3\2\2\2\u0633\u0637\5\u0117\u008a\2\u0634\u0636\5\u0115\u0089\2\u0635"+
+ "\u0634\3\2\2\2\u0636\u0639\3\2\2\2\u0637\u0635\3\2\2\2\u0637\u0638\3\2"+
+ "\2\2\u0638\u063a\3\2\2\2\u0639\u0637\3\2\2\2\u063a\u063c\t\5\2\2\u063b"+
+ "\u063d\t\6\2\2\u063c\u063b\3\2\2\2\u063c\u063d\3\2\2\2\u063d\u063f\3\2"+
+ "\2\2\u063e\u0640\5\u0115\u0089\2\u063f\u063e\3\2\2\2\u0640\u0641\3\2\2"+
+ "\2\u0641\u063f\3\2\2\2\u0641\u0642\3\2\2\2\u0642\u067e\3\2\2\2\u0643\u0647"+
+ "\5\u0117\u008a\2\u0644\u0646\5\u0115\u0089\2\u0645\u0644\3\2\2\2\u0646"+
+ "\u0649\3\2\2\2\u0647\u0645\3\2\2\2\u0647\u0648\3\2\2\2\u0648\u064a\3\2"+
+ "\2\2\u0649\u0647\3\2\2\2\u064a\u064c\t\5\2\2\u064b\u064d\t\6\2\2\u064c"+
+ "\u064b\3\2\2\2\u064c\u064d\3\2\2\2\u064d\u064e\3\2\2\2\u064e\u0651\5\u0115"+
+ "\u0089\2\u064f\u0652\5\u0115\u0089\2\u0650\u0652\7a\2\2\u0651\u064f\3"+
+ "\2\2\2\u0651\u0650\3\2\2\2\u0652\u0653\3\2\2\2\u0653\u0651\3\2\2\2\u0653"+
+ "\u0654\3\2\2\2\u0654\u0655\3\2\2\2\u0655\u0656\5\u0115\u0089\2\u0656\u067e"+
+ "\3\2\2\2\u0657\u065a\5\u0117\u008a\2\u0658\u065b\5\u0115\u0089\2\u0659"+
+ "\u065b\7a\2\2\u065a\u0658\3\2\2\2\u065a\u0659\3\2\2\2\u065b\u065c\3\2"+
+ "\2\2\u065c\u065a\3\2\2\2\u065c\u065d\3\2\2\2\u065d\u065e\3\2\2\2\u065e"+
+ "\u065f\5\u0115\u0089\2\u065f\u0661\t\5\2\2\u0660\u0662\t\6\2\2\u0661\u0660"+
+ "\3\2\2\2\u0661\u0662\3\2\2\2\u0662\u0664\3\2\2\2\u0663\u0665\5\u0115\u0089"+
+ "\2\u0664\u0663\3\2\2\2\u0665\u0666\3\2\2\2\u0666\u0664\3\2\2\2\u0666\u0667"+
+ "\3\2\2\2\u0667\u067e\3\2\2\2\u0668\u066b\5\u0117\u008a\2\u0669\u066c\5"+
+ "\u0115\u0089\2\u066a\u066c\7a\2\2\u066b\u0669\3\2\2\2\u066b\u066a\3\2"+
+ "\2\2\u066c\u066d\3\2\2\2\u066d\u066b\3\2\2\2\u066d\u066e\3\2\2\2\u066e"+
+ "\u066f\3\2\2\2\u066f\u0670\5\u0115\u0089\2\u0670\u0672\t\5\2\2\u0671\u0673"+
+ "\t\6\2\2\u0672\u0671\3\2\2\2\u0672\u0673\3\2\2\2\u0673\u0674\3\2\2\2\u0674"+
+ "\u0677\5\u0115\u0089\2\u0675\u0678\5\u0115\u0089\2\u0676\u0678\7a\2\2"+
+ "\u0677\u0675\3\2\2\2\u0677\u0676\3\2\2\2\u0678\u0679\3\2\2\2\u0679\u0677"+
+ "\3\2\2\2\u0679\u067a\3\2\2\2\u067a\u067b\3\2\2\2\u067b\u067c\5\u0115\u0089"+
+ "\2\u067c\u067e\3\2\2\2\u067d\u0622\3\2\2\2\u067d\u0623\3\2\2\2\u067d\u062a"+
+ "\3\2\2\2\u067d\u0633\3\2\2\2\u067d\u0643\3\2\2\2\u067d\u0657\3\2\2\2\u067d"+
+ "\u0668\3\2\2\2\u067e\u0114\3\2\2\2\u067f\u0680\5\u0143\u00a0\2\u0680\u0116"+
+ "\3\2\2\2\u0681\u0682\5\u0119\u008b\2\u0682\u0118\3\2\2\2\u0683\u0684\t"+
+ "\7\2\2\u0684\u011a\3\2\2\2\u0685\u0686\7\62\2\2\u0686\u0687\t\b\2\2\u0687"+
+ "\u068c\5\u011d\u008d\2\u0688\u068b\5\u011d\u008d\2\u0689\u068b\7a\2\2"+
+ "\u068a\u0688\3\2\2\2\u068a\u0689\3\2\2\2\u068b\u068e\3\2\2\2\u068c\u068a"+
+ "\3\2\2\2\u068c\u068d\3\2\2\2\u068d\u011c\3\2\2\2\u068e\u068c\3\2\2\2\u068f"+
+ "\u0690\t\t\2\2\u0690\u011e\3\2\2\2\u0691\u0692\7\62\2\2\u0692\u0693\t"+
+ "\n\2\2\u0693\u0698\5\u0121\u008f\2\u0694\u0697\5\u0121\u008f\2\u0695\u0697"+
+ "\7a\2\2\u0696\u0694\3\2\2\2\u0696\u0695\3\2\2\2\u0697\u069a\3\2\2\2\u0698"+
+ "\u0696\3\2\2\2\u0698\u0699\3\2\2\2\u0699\u0120\3\2\2\2\u069a\u0698\3\2"+
+ "\2\2\u069b\u069c\t\13\2\2\u069c\u0122\3\2\2\2\u069d\u069e\7v\2\2\u069e"+
+ "\u069f\7t\2\2\u069f\u06a0\7w\2\2\u06a0\u06a7\7g\2\2\u06a1\u06a2\7h\2\2"+
+ "\u06a2\u06a3\7c\2\2\u06a3\u06a4\7n\2\2\u06a4\u06a5\7u\2\2\u06a5\u06a7"+
+ "\7g\2\2\u06a6\u069d\3\2\2\2\u06a6\u06a1\3\2\2\2\u06a7\u0124\3\2\2\2\u06a8"+
+ "\u06a9\7p\2\2\u06a9\u06aa\7w\2\2\u06aa\u06ab\7n\2\2\u06ab\u06ac\7n\2\2"+
+ "\u06ac\u0126\3\2\2\2\u06ad\u06b0\5\u0137\u009a\2\u06ae\u06b0\7a\2\2\u06af"+
+ "\u06ad\3\2\2\2\u06af\u06ae\3\2\2\2\u06b0\u06b6\3\2\2\2\u06b1\u06b5\5\u0137"+
+ "\u009a\2\u06b2\u06b5\7a\2\2\u06b3\u06b5\5\u0115\u0089\2\u06b4\u06b1\3"+
+ "\2\2\2\u06b4\u06b2\3\2\2\2\u06b4\u06b3\3\2\2\2\u06b5\u06b8\3\2\2\2\u06b6"+
+ "\u06b4\3\2\2\2\u06b6\u06b7\3\2\2\2\u06b7\u06c1\3\2\2\2\u06b8\u06b6\3\2"+
+ "\2\2\u06b9\u06bb\7b\2\2\u06ba\u06bc\n\f\2\2\u06bb\u06ba\3\2\2\2\u06bc"+
+ "\u06bd\3\2\2\2\u06bd\u06bb\3\2\2\2\u06bd\u06be\3\2\2\2\u06be\u06bf\3\2"+
+ "\2\2\u06bf\u06c1\7b\2\2\u06c0\u06af\3\2\2\2\u06c0\u06b9\3\2\2\2\u06c1"+
+ "\u0128\3\2\2\2\u06c2\u06c3\7B\2\2\u06c3\u06c4\5\u0127\u0092\2\u06c4\u012a"+
+ "\3\2\2\2\u06c5\u06c6\5\u0127\u0092\2\u06c6\u06c7\7B\2\2\u06c7\u012c\3"+
+ "\2\2\2\u06c8\u06c9\7&\2\2\u06c9\u06ca\5\u0127\u0092\2\u06ca\u012e\3\2"+
+ "\2\2\u06cb\u06ce\7)\2\2\u06cc\u06cf\5\u0131\u0097\2\u06cd\u06cf\13\2\2"+
+ "\2\u06ce\u06cc\3\2\2\2\u06ce\u06cd\3\2\2\2\u06cf\u06d0\3\2\2\2\u06d0\u06d1"+
+ "\7)\2\2\u06d1\u0130\3\2\2\2\u06d2\u06d5\5\u0133\u0098\2\u06d3\u06d5\5"+
+ "\u0135\u0099\2\u06d4\u06d2\3\2\2\2\u06d4\u06d3\3\2\2\2\u06d5\u0132\3\2"+
+ "\2\2\u06d6\u06d7\7^\2\2\u06d7\u06d8\7w\2\2\u06d8\u06d9\5\u011d\u008d\2"+
+ "\u06d9\u06da\5\u011d\u008d\2\u06da\u06db\5\u011d\u008d\2\u06db\u06dc\5"+
+ "\u011d\u008d\2\u06dc\u0134\3\2\2\2\u06dd\u06de\7^\2\2\u06de\u06df\t\r"+
+ "\2\2\u06df\u0136\3\2\2\2\u06e0\u06e7\5\u0139\u009b\2\u06e1\u06e7\5\u013b"+
+ "\u009c\2\u06e2\u06e7\5\u013d\u009d\2\u06e3\u06e7\5\u013f\u009e\2\u06e4"+
+ "\u06e7\5\u0141\u009f\2\u06e5\u06e7\5\u0145\u00a1\2\u06e6\u06e0\3\2\2\2"+
+ "\u06e6\u06e1\3\2\2\2\u06e6\u06e2\3\2\2\2\u06e6\u06e3\3\2\2\2\u06e6\u06e4"+
+ "\3\2\2\2\u06e6\u06e5\3\2\2\2\u06e7\u0138\3\2\2\2\u06e8\u06e9\t\16\2\2"+
+ "\u06e9\u013a\3\2\2\2\u06ea\u06eb\t\17\2\2\u06eb\u013c\3\2\2\2\u06ec\u06ed"+
+ "\t\20\2\2\u06ed\u013e\3\2\2\2\u06ee\u06ef\t\21\2\2\u06ef\u0140\3\2\2\2"+
+ "\u06f0\u06f1\t\22\2\2\u06f1\u0142\3\2\2\2\u06f2\u06f3\t\23\2\2\u06f3\u0144"+
+ "\3\2\2\2\u06f4\u06f5\t\24\2\2\u06f5\u0146\3\2\2\2\u06f6\u06f7\7+\2\2\u06f7"+
+ "\u06f8\3\2\2\2\u06f8\u06f9\b\u00a2\7\2\u06f9\u06fa\b\u00a2\b\2\u06fa\u0148"+
+ "\3\2\2\2\u06fb\u06fc\7_\2\2\u06fc\u06fd\3\2\2\2\u06fd\u06fe\b\u00a3\7"+
+ "\2\u06fe\u06ff\b\u00a3\t\2\u06ff\u014a\3\2\2\2\u0700\u0701\5\27\n\2\u0701"+
+ "\u0702\3\2\2\2\u0702\u0703\b\u00a4\4\2\u0703\u0704\b\u00a4\n\2\u0704\u014c"+
+ "\3\2\2\2\u0705\u0706\5\33\f\2\u0706\u0707\3\2\2\2\u0707\u0708\b\u00a5"+
+ "\4\2\u0708\u0709\b\u00a5\13\2\u0709\u014e\3\2\2\2\u070a\u070b\5\37\16"+
+ "\2\u070b\u070c\3\2\2\2\u070c\u070d\b\u00a6\f\2\u070d\u0150\3\2\2\2\u070e"+
+ "\u070f\5!\17\2\u070f\u0710\3\2\2\2\u0710\u0711\b\u00a7\r\2\u0711\u0152"+
+ "\3\2\2\2\u0712\u0713\5\23\b\2\u0713\u0714\3\2\2\2\u0714\u0715\b\u00a8"+
+ "\16\2\u0715\u0154\3\2\2\2\u0716\u0717\5\25\t\2\u0717\u0718\3\2\2\2\u0718"+
+ "\u0719\b\u00a9\17\2\u0719\u0156\3\2\2\2\u071a\u071b\5#\20\2\u071b\u071c"+
+ "\3\2\2\2\u071c\u071d\b\u00aa\20\2\u071d\u0158\3\2\2\2\u071e\u071f\5%\21"+
+ "\2\u071f\u0720\3\2\2\2\u0720\u0721\b\u00ab\21\2\u0721\u015a\3\2\2\2\u0722"+
+ "\u0723\5\'\22\2\u0723\u0724\3\2\2\2\u0724\u0725\b\u00ac\22\2\u0725\u015c"+
+ "\3\2\2\2\u0726\u0727\5)\23\2\u0727\u0728\3\2\2\2\u0728\u0729\b\u00ad\23"+
+ "\2\u0729\u015e\3\2\2\2\u072a\u072b\5+\24\2\u072b\u072c\3\2\2\2\u072c\u072d"+
+ "\b\u00ae\24\2\u072d\u0160\3\2\2\2\u072e\u072f\5-\25\2\u072f\u0730\3\2"+
+ "\2\2\u0730\u0731\b\u00af\25\2\u0731\u0162\3\2\2\2\u0732\u0733\5/\26\2"+
+ "\u0733\u0734\3\2\2\2\u0734\u0735\b\u00b0\26\2\u0735\u0164\3\2\2\2\u0736"+
+ "\u0737\5\61\27\2\u0737\u0738\3\2\2\2\u0738\u0739\b\u00b1\27\2\u0739\u0166"+
+ "\3\2\2\2\u073a\u073b\5\63\30\2\u073b\u073c\3\2\2\2\u073c\u073d\b\u00b2"+
+ "\30\2\u073d\u0168\3\2\2\2\u073e\u073f\5\65\31\2\u073f\u0740\3\2\2\2\u0740"+
+ "\u0741\b\u00b3\31\2\u0741\u016a\3\2\2\2\u0742\u0743\5\67\32\2\u0743\u0744"+
+ "\3\2\2\2\u0744\u0745\b\u00b4\32\2\u0745\u016c\3\2\2\2\u0746\u0747\59\33"+
+ "\2\u0747\u0748\3\2\2\2\u0748\u0749\b\u00b5\33\2\u0749\u016e\3\2\2\2\u074a"+
+ "\u074b\5;\34\2\u074b\u074c\3\2\2\2\u074c\u074d\b\u00b6\34\2\u074d\u0170"+
+ "\3\2\2\2\u074e\u074f\5=\35\2\u074f\u0750\3\2\2\2\u0750\u0751\b\u00b7\35"+
+ "\2\u0751\u0172\3\2\2\2\u0752\u0753\5?\36\2\u0753\u0754\3\2\2\2\u0754\u0755"+
+ "\b\u00b8\36\2\u0755\u0174\3\2\2\2\u0756\u0757\5A\37\2\u0757\u0758\3\2"+
+ "\2\2\u0758\u0759\b\u00b9\37\2\u0759\u0176\3\2\2\2\u075a\u075b\5C \2\u075b"+
+ "\u075c\3\2\2\2\u075c\u075d\b\u00ba \2\u075d\u0178\3\2\2\2\u075e\u075f"+
+ "\5E!\2\u075f\u0760\3\2\2\2\u0760\u0761\b\u00bb!\2\u0761\u017a\3\2\2\2"+
+ "\u0762\u0763\5G\"\2\u0763\u0764\3\2\2\2\u0764\u0765\b\u00bc\"\2\u0765"+
+ "\u017c\3\2\2\2\u0766\u0767\5I#\2\u0767\u0768\3\2\2\2\u0768\u0769\b\u00bd"+
+ "#\2\u0769\u017e\3\2\2\2\u076a\u076b\5K$\2\u076b\u076c\3\2\2\2\u076c\u076d"+
+ "\b\u00be$\2\u076d\u0180\3\2\2\2\u076e\u076f\5\21\7\2\u076f\u0770\3\2\2"+
+ "\2\u0770\u0771\b\u00bf%\2\u0771\u0182\3\2\2\2\u0772\u0773\5M%\2\u0773"+
+ "\u0774\3\2\2\2\u0774\u0775\b\u00c0&\2\u0775\u0184\3\2\2\2\u0776\u0777"+
+ "\5O&\2\u0777\u0778\3\2\2\2\u0778\u0779\b\u00c1\'\2\u0779\u0186\3\2\2\2"+
+ "\u077a\u077b\5Q\'\2\u077b\u077c\3\2\2\2\u077c\u077d\b\u00c2(\2\u077d\u0188"+
+ "\3\2\2\2\u077e\u077f\5S(\2\u077f\u0780\3\2\2\2\u0780\u0781\b\u00c3)\2"+
+ "\u0781\u018a\3\2\2\2\u0782\u0783\5U)\2\u0783\u0784\3\2\2\2\u0784\u0785"+
+ "\b\u00c4*\2\u0785\u018c\3\2\2\2\u0786\u0787\5W*\2\u0787\u0788\3\2\2\2"+
+ "\u0788\u0789\b\u00c5+\2\u0789\u018e\3\2\2\2\u078a\u078b\5Y+\2\u078b\u078c"+
+ "\3\2\2\2\u078c\u078d\b\u00c6,\2\u078d\u0190\3\2\2\2\u078e\u078f\5[,\2"+
+ "\u078f\u0790\3\2\2\2\u0790\u0791\b\u00c7-\2\u0791\u0192\3\2\2\2\u0792"+
+ "\u0793\5]-\2\u0793\u0794\3\2\2\2\u0794\u0795\b\u00c8.\2\u0795\u0194\3"+
+ "\2\2\2\u0796\u0797\5_.\2\u0797\u0798\3\2\2\2\u0798\u0799\b\u00c9/\2\u0799"+
+ "\u0196\3\2\2\2\u079a\u079b\5a/\2\u079b\u079c\3\2\2\2\u079c\u079d\b\u00ca"+
+ "\60\2\u079d\u0198\3\2\2\2\u079e\u079f\5c\60\2\u079f\u07a0\3\2\2\2\u07a0"+
+ "\u07a1\b\u00cb\61\2\u07a1\u019a\3\2\2\2\u07a2\u07a3\5e\61\2\u07a3\u07a4"+
+ "\3\2\2\2\u07a4\u07a5\b\u00cc\62\2\u07a5\u019c\3\2\2\2\u07a6\u07a7\5\u00b9"+
+ "[\2\u07a7\u07a8\3\2\2\2\u07a8\u07a9\b\u00cd\63\2\u07a9\u019e\3\2\2\2\u07aa"+
+ "\u07ab\5\u00bb\\\2\u07ab\u07ac\3\2\2\2\u07ac\u07ad\b\u00ce\64\2\u07ad"+
+ "\u01a0\3\2\2\2\u07ae\u07af\5g\62\2\u07af\u07b0\3\2\2\2\u07b0\u07b1\b\u00cf"+
+ "\65\2\u07b1\u01a2\3\2\2\2\u07b2\u07b3\5i\63\2\u07b3\u07b4\3\2\2\2\u07b4"+
+ "\u07b5\b\u00d0\66\2\u07b5\u01a4\3\2\2\2\u07b6\u07b7\5k\64\2\u07b7\u07b8"+
+ "\3\2\2\2\u07b8\u07b9\b\u00d1\67\2\u07b9\u01a6\3\2\2\2\u07ba\u07bb\5m\65"+
+ "\2\u07bb\u07bc\3\2\2\2\u07bc\u07bd\b\u00d28\2\u07bd\u01a8\3\2\2\2\u07be"+
+ "\u07bf\5\u0107\u0082\2\u07bf\u07c0\3\2\2\2\u07c0\u07c1\b\u00d3\5\2\u07c1"+
+ "\u07c2\b\u00d39\2\u07c2\u01aa\3\2\2\2\u07c3\u07c4\5\u0109\u0083\2\u07c4"+
+ "\u07c5\3\2\2\2\u07c5\u07c6\b\u00d4\6\2\u07c6\u07c7\b\u00d4:\2\u07c7\u01ac"+
+ "\3\2\2\2\u07c8\u07c9\5\u0083@\2\u07c9\u07ca\3\2\2\2\u07ca\u07cb\b\u00d5"+
+ ";\2\u07cb\u01ae\3\2\2\2\u07cc\u07cd\5\u0085A\2\u07cd\u07ce\3\2\2\2\u07ce"+
+ "\u07cf\b\u00d6<\2\u07cf\u01b0\3\2\2\2\u07d0\u07d1\5\u0081?\2\u07d1\u07d2"+
+ "\3\2\2\2\u07d2\u07d3\b\u00d7=\2\u07d3\u01b2\3\2\2\2\u07d4\u07d5\5\u0093"+
+ "H\2\u07d5\u07d6\3\2\2\2\u07d6\u07d7\b\u00d8>\2\u07d7\u01b4\3\2\2\2\u07d8"+
+ "\u07d9\5\u00b7Z\2\u07d9\u07da\3\2\2\2\u07da\u07db\b\u00d9?\2\u07db\u01b6"+
+ "\3\2\2\2\u07dc\u07dd\5\u00bd]\2\u07dd\u07de\3\2\2\2\u07de\u07df\b\u00da"+
+ "@\2";
+ private static final String _serializedATNSegment1 =
+ "\u07df\u01b8\3\2\2\2\u07e0\u07e1\5\u00bf^\2\u07e1\u07e2\3\2\2\2\u07e2"+
+ "\u07e3\b\u00dbA\2\u07e3\u01ba\3\2\2\2\u07e4\u07e5\5u9\2\u07e5\u07e6\3"+
+ "\2\2\2\u07e6\u07e7\b\u00dcB\2\u07e7\u01bc\3\2\2\2\u07e8\u07e9\5\u00c1"+
+ "_\2\u07e9\u07ea\3\2\2\2\u07ea\u07eb\b\u00ddC\2\u07eb\u01be\3\2\2\2\u07ec"+
+ "\u07ed\5\u00c3`\2\u07ed\u07ee\3\2\2\2\u07ee\u07ef\b\u00deD\2\u07ef\u01c0"+
+ "\3\2\2\2\u07f0\u07f1\5\u00c5a\2\u07f1\u07f2\3\2\2\2\u07f2\u07f3\b\u00df"+
+ "E\2\u07f3\u01c2\3\2\2\2\u07f4\u07f5\5\u00cbd\2\u07f5\u07f6\3\2\2\2\u07f6"+
+ "\u07f7\b\u00e0F\2\u07f7\u01c4\3\2\2\2\u07f8\u07f9\5\u00cde\2\u07f9\u07fa"+
+ "\3\2\2\2\u07fa\u07fb\b\u00e1G\2\u07fb\u01c6\3\2\2\2\u07fc\u07fd\5\u00cf"+
+ "f\2\u07fd\u07fe\3\2\2\2\u07fe\u07ff\b\u00e2H\2\u07ff\u01c8\3\2\2\2\u0800"+
+ "\u0801\5\u00d1g\2\u0801\u0802\3\2\2\2\u0802\u0803\b\u00e3I\2\u0803\u01ca"+
+ "\3\2\2\2\u0804\u0805\5\u00abT\2\u0805\u0806\3\2\2\2\u0806\u0807\b\u00e4"+
+ "J\2\u0807\u01cc\3\2\2\2\u0808\u0809\5\u00adU\2\u0809\u080a\3\2\2\2\u080a"+
+ "\u080b\b\u00e5K\2\u080b\u01ce\3\2\2\2\u080c\u080d\5\u00afV\2\u080d\u080e"+
+ "\3\2\2\2\u080e\u080f\b\u00e6L\2\u080f\u01d0\3\2\2\2\u0810\u0811\5\u00b1"+
+ "W\2\u0811\u0812\3\2\2\2\u0812\u0813\b\u00e7M\2\u0813\u01d2\3\2\2\2\u0814"+
+ "\u0815\5o\66\2\u0815\u0816\3\2\2\2\u0816\u0817\b\u00e8N\2\u0817\u01d4"+
+ "\3\2\2\2\u0818\u0819\5q\67\2\u0819\u081a\3\2\2\2\u081a\u081b\b\u00e9O"+
+ "\2\u081b\u01d6\3\2\2\2\u081c\u081d\5s8\2\u081d\u081e\3\2\2\2\u081e\u081f"+
+ "\b\u00eaP\2\u081f\u01d8\3\2\2\2\u0820\u0821\5\u0099K\2\u0821\u0822\3\2"+
+ "\2\2\u0822\u0823\b\u00ebQ\2\u0823\u01da\3\2\2\2\u0824\u0825\5\u009bL\2"+
+ "\u0825\u0826\3\2\2\2\u0826\u0827\b\u00ecR\2\u0827\u01dc\3\2\2\2\u0828"+
+ "\u0829\5\u009dM\2\u0829\u082a\3\2\2\2\u082a\u082b\b\u00edS\2\u082b\u01de"+
+ "\3\2\2\2\u082c\u082d\5\u009fN\2\u082d\u082e\3\2\2\2\u082e\u082f\b\u00ee"+
+ "T\2\u082f\u01e0\3\2\2\2\u0830\u0831\5\u00a1O\2\u0831\u0832\3\2\2\2\u0832"+
+ "\u0833\b\u00efU\2\u0833\u01e2\3\2\2\2\u0834\u0835\5\u00a3P\2\u0835\u0836"+
+ "\3\2\2\2\u0836\u0837\b\u00f0V\2\u0837\u01e4\3\2\2\2\u0838\u0839\5\u00a5"+
+ "Q\2\u0839\u083a\3\2\2\2\u083a\u083b\b\u00f1W\2\u083b\u01e6\3\2\2\2\u083c"+
+ "\u083d\5\u00a7R\2\u083d\u083e\3\2\2\2\u083e\u083f\b\u00f2X\2\u083f\u01e8"+
+ "\3\2\2\2\u0840\u0841\5\u00a9S\2\u0841\u0842\3\2\2\2\u0842\u0843\b\u00f3"+
+ "Y\2\u0843\u01ea\3\2\2\2\u0844\u0845\5\u00d5i\2\u0845\u0846\3\2\2\2\u0846"+
+ "\u0847\b\u00f4Z\2\u0847\u01ec\3\2\2\2\u0848\u0849\5\u00d7j\2\u0849\u084a"+
+ "\3\2\2\2\u084a\u084b\b\u00f5[\2\u084b\u01ee\3\2\2\2\u084c\u084d\5\u00d9"+
+ "k\2\u084d\u084e\3\2\2\2\u084e\u084f\b\u00f6\\\2\u084f\u01f0\3\2\2\2\u0850"+
+ "\u0851\5\u00dbl\2\u0851\u0852\3\2\2\2\u0852\u0853\b\u00f7]\2\u0853\u01f2"+
+ "\3\2\2\2\u0854\u0855\5\u00ddm\2\u0855\u0856\3\2\2\2\u0856\u0857\b\u00f8"+
+ "^\2\u0857\u01f4\3\2\2\2\u0858\u0859\5\u00dfn\2\u0859\u085a\3\2\2\2\u085a"+
+ "\u085b\b\u00f9_\2\u085b\u01f6\3\2\2\2\u085c\u085d\5\u00e1o\2\u085d\u085e"+
+ "\3\2\2\2\u085e\u085f\b\u00fa`\2\u085f\u01f8\3\2\2\2\u0860\u0861\5\u00e3"+
+ "p\2\u0861\u0862\3\2\2\2\u0862\u0863\b\u00fba\2\u0863\u01fa\3\2\2\2\u0864"+
+ "\u0865\5\u00e5q\2\u0865\u0866\3\2\2\2\u0866\u0867\b\u00fcb\2\u0867\u01fc"+
+ "\3\2\2\2\u0868\u0869\5\u00e7r\2\u0869\u086a\3\2\2\2\u086a\u086b\b\u00fd"+
+ "c\2\u086b\u01fe\3\2\2\2\u086c\u086d\5\u00e9s\2\u086d\u086e\3\2\2\2\u086e"+
+ "\u086f\b\u00fed\2\u086f\u0200\3\2\2\2\u0870\u0871\5\u00ebt\2\u0871\u0872"+
+ "\3\2\2\2\u0872\u0873\b\u00ffe\2\u0873\u0202\3\2\2\2\u0874\u0875\5\u00ed"+
+ "u\2\u0875\u0876\3\2\2\2\u0876\u0877\b\u0100f\2\u0877\u0204\3\2\2\2\u0878"+
+ "\u0879\5\u00efv\2\u0879\u087a\3\2\2\2\u087a\u087b\b\u0101g\2\u087b\u0206"+
+ "\3\2\2\2\u087c\u087d\5\u00f1w\2\u087d\u087e\3\2\2\2\u087e\u087f\b\u0102"+
+ "h\2\u087f\u0208\3\2\2\2\u0880\u0881\5\u00f3x\2\u0881\u0882\3\2\2\2\u0882"+
+ "\u0883\b\u0103i\2\u0883\u020a\3\2\2\2\u0884\u0885\5\u00f5y\2\u0885\u0886"+
+ "\3\2\2\2\u0886\u0887\b\u0104j\2\u0887\u020c\3\2\2\2\u0888\u0889\5\u00f7"+
+ "z\2\u0889\u088a\3\2\2\2\u088a\u088b\b\u0105k\2\u088b\u020e\3\2\2\2\u088c"+
+ "\u088d\5\u00f9{\2\u088d\u088e\3\2\2\2\u088e\u088f\b\u0106l\2\u088f\u0210"+
+ "\3\2\2\2\u0890\u0891\5\u00fb|\2\u0891\u0892\3\2\2\2\u0892\u0893\b\u0107"+
+ "m\2\u0893\u0212\3\2\2\2\u0894\u0895\5\u00fd}\2\u0895\u0896\3\2\2\2\u0896"+
+ "\u0897\b\u0108n\2\u0897\u0214\3\2\2\2\u0898\u0899\5\u00ff~\2\u0899\u089a"+
+ "\3\2\2\2\u089a\u089b\b\u0109o\2\u089b\u0216\3\2\2\2\u089c\u089d\5\u0101"+
+ "\177\2\u089d\u089e\3\2\2\2\u089e\u089f\b\u010ap\2\u089f\u0218\3\2\2\2"+
+ "\u08a0\u08a1\5\u0103\u0080\2\u08a1\u08a2\3\2\2\2\u08a2\u08a3\b\u010bq"+
+ "\2\u08a3\u021a\3\2\2\2\u08a4\u08a5\5\u0105\u0081\2\u08a5\u08a6\3\2\2\2"+
+ "\u08a6\u08a7\b\u010cr\2\u08a7\u021c\3\2\2\2\u08a8\u08a9\5\u0123\u0090"+
+ "\2\u08a9\u08aa\3\2\2\2\u08aa\u08ab\b\u010ds\2\u08ab\u021e\3\2\2\2\u08ac"+
+ "\u08ad\5\u0113\u0088\2\u08ad\u08ae\3\2\2\2\u08ae\u08af\b\u010et\2\u08af"+
+ "\u0220\3\2\2\2\u08b0\u08b1\5\u011b\u008c\2\u08b1\u08b2\3\2\2\2\u08b2\u08b3"+
+ "\b\u010fu\2\u08b3\u0222\3\2\2\2\u08b4\u08b5\5\u011f\u008e\2\u08b5\u08b6"+
+ "\3\2\2\2\u08b6\u08b7\b\u0110v\2\u08b7\u0224\3\2\2\2\u08b8\u08b9\5\u012f"+
+ "\u0096\2\u08b9\u08ba\3\2\2\2\u08ba\u08bb\b\u0111w\2\u08bb\u0226\3\2\2"+
+ "\2\u08bc\u08bd\5\u010b\u0084\2\u08bd\u08be\3\2\2\2\u08be\u08bf\b\u0112"+
+ "x\2\u08bf\u0228\3\2\2\2\u08c0\u08c1\5\u0125\u0091\2\u08c1\u08c2\3\2\2"+
+ "\2\u08c2\u08c3\b\u0113y\2\u08c3\u022a\3\2\2\2\u08c4\u08c5\5\u0111\u0087"+
+ "\2\u08c5\u08c6\3\2\2\2\u08c6\u08c7\b\u0114z\2\u08c7\u022c\3\2\2\2\u08c8"+
+ "\u08c9\5\u0127\u0092\2\u08c9\u08ca\3\2\2\2\u08ca\u08cb\b\u0115{\2\u08cb"+
+ "\u022e\3\2\2\2\u08cc\u08cd\5\u0129\u0093\2\u08cd\u08ce\3\2\2\2\u08ce\u08cf"+
+ "\b\u0116|\2\u08cf\u0230\3\2\2\2\u08d0\u08d1\5\u012b\u0094\2\u08d1\u08d2"+
+ "\3\2\2\2\u08d2\u08d3\b\u0117}\2\u08d3\u0232\3\2\2\2\u08d4\u08d7\5\13\4"+
+ "\2\u08d5\u08d7\5\t\3\2\u08d6\u08d4\3\2\2\2\u08d6\u08d5\3\2\2\2\u08d7\u08d8"+
+ "\3\2\2\2\u08d8\u08d9\b\u0118\2\2\u08d9\u0234\3\2\2\2\u08da\u08db\5\r\5"+
+ "\2\u08db\u08dc\3\2\2\2\u08dc\u08dd\b\u0119\3\2\u08dd\u0236\3\2\2\2\u08de"+
+ "\u08df\5\17\6\2\u08df\u08e0\3\2\2\2\u08e0\u08e1\b\u011a\3\2\u08e1\u0238"+
+ "\3\2\2\2\u08e2\u08e3\7$\2\2\u08e3\u08e4\3\2\2\2\u08e4\u08e5\b\u011b\7"+
+ "\2\u08e5\u023a\3\2\2\2\u08e6\u08e7\5\u012d\u0095\2\u08e7\u023c\3\2\2\2"+
+ "\u08e8\u08ea\n\25\2\2\u08e9\u08e8\3\2\2\2\u08ea\u08eb\3\2\2\2\u08eb\u08e9"+
+ "\3\2\2\2\u08eb\u08ec\3\2\2\2\u08ec\u08ef\3\2\2\2\u08ed\u08ef\7&\2\2\u08ee"+
+ "\u08e9\3\2\2\2\u08ee\u08ed\3\2\2\2\u08ef\u023e\3\2\2\2\u08f0\u08f1\7^"+
+ "\2\2\u08f1\u08f4\13\2\2\2\u08f2\u08f4\5\u0133\u0098\2\u08f3\u08f0\3\2"+
+ "\2\2\u08f3\u08f2\3\2\2\2\u08f4\u0240\3\2\2\2\u08f5\u08f6\7&\2\2\u08f6"+
+ "\u08f7\7}\2\2\u08f7\u08f8\3\2\2\2\u08f8\u08f9\b\u011f~\2\u08f9\u0242\3"+
+ "\2\2\2\u08fa\u08fc\5\u0245\u0121\2\u08fb\u08fa\3\2\2\2\u08fb\u08fc\3\2"+
+ "\2\2\u08fc\u08fd\3\2\2\2\u08fd\u08fe\7$\2\2\u08fe\u08ff\7$\2\2\u08ff\u0900"+
+ "\7$\2\2\u0900\u0901\3\2\2\2\u0901\u0902\b\u0120\7\2\u0902\u0244\3\2\2"+
+ "\2\u0903\u0905\7$\2\2\u0904\u0903\3\2\2\2\u0905\u0906\3\2\2\2\u0906\u0904"+
+ "\3\2\2\2\u0906\u0907\3\2\2\2\u0907\u0246\3\2\2\2\u0908\u0909\5\u012d\u0095"+
+ "\2\u0909\u0248\3\2\2\2\u090a\u090c\n\25\2\2\u090b\u090a\3\2\2\2\u090c"+
+ "\u090d\3\2\2\2\u090d\u090b\3\2\2\2\u090d\u090e\3\2\2\2\u090e\u0911\3\2"+
+ "\2\2\u090f\u0911\7&\2\2\u0910\u090b\3\2\2\2\u0910\u090f\3\2\2\2\u0911"+
+ "\u024a\3\2\2\2\u0912\u0913\7^\2\2\u0913\u0914\13\2\2\2\u0914\u024c\3\2"+
+ "\2\2\u0915\u0916\7&\2\2\u0916\u0917\7}\2\2\u0917\u0918\3\2\2\2\u0918\u0919"+
+ "\b\u0125~\2\u0919\u024e\3\2\2\2\u091a\u091b\5\17\6\2\u091b\u091c\3\2\2"+
+ "\2\u091c\u091d\b\u0126\3\2\u091d\u0250\3\2\2\2\u091e\u091f\5!\17\2\u091f"+
+ "\u0920\3\2\2\2\u0920\u0921\b\u0127\7\2\u0921\u0922\b\u0127\r\2\u0922\u0252"+
+ "\3\2\2\2\u0923\u0924\5\27\n\2\u0924\u0925\3\2\2\2\u0925\u0926\b\u0128"+
+ "\4\2\u0926\u0927\b\u0128\n\2\u0927\u0254\3\2\2\2\u0928\u0929\5\33\f\2"+
+ "\u0929\u092a\3\2\2\2\u092a\u092b\b\u0129\4\2\u092b\u092c\b\u0129\13\2"+
+ "\u092c\u0256\3\2\2\2\u092d\u092e\7+\2\2\u092e\u092f\3\2\2\2\u092f\u0930"+
+ "\b\u012a\b\2\u0930\u0258\3\2\2\2\u0931\u0932\7_\2\2\u0932\u0933\3\2\2"+
+ "\2\u0933\u0934\b\u012b\t\2\u0934\u025a\3\2\2\2\u0935\u0936\5\37\16\2\u0936"+
+ "\u0937\3\2\2\2\u0937\u0938\b\u012c~\2\u0938\u0939\b\u012c\f\2\u0939\u025c"+
+ "\3\2\2\2\u093a\u093b\5\23\b\2\u093b\u093c\3\2\2\2\u093c\u093d\b\u012d"+
+ "\16\2\u093d\u025e\3\2\2\2\u093e\u093f\5\25\t\2\u093f\u0940\3\2\2\2\u0940"+
+ "\u0941\b\u012e\17\2\u0941\u0260\3\2\2\2\u0942\u0943\5#\20\2\u0943\u0944"+
+ "\3\2\2\2\u0944\u0945\b\u012f\20\2\u0945\u0262\3\2\2\2\u0946\u0947\5%\21"+
+ "\2\u0947\u0948\3\2\2\2\u0948\u0949\b\u0130\21\2\u0949\u0264\3\2\2\2\u094a"+
+ "\u094b\5\'\22\2\u094b\u094c\3\2\2\2\u094c\u094d\b\u0131\22\2\u094d\u0266"+
+ "\3\2\2\2\u094e\u094f\5)\23\2\u094f\u0950\3\2\2\2\u0950\u0951\b\u0132\23"+
+ "\2\u0951\u0268\3\2\2\2\u0952\u0953\5+\24\2\u0953\u0954\3\2\2\2\u0954\u0955"+
+ "\b\u0133\24\2\u0955\u026a\3\2\2\2\u0956\u0957\5-\25\2\u0957\u0958\3\2"+
+ "\2\2\u0958\u0959\b\u0134\25\2\u0959\u026c\3\2\2\2\u095a\u095b\5/\26\2"+
+ "\u095b\u095c\3\2\2\2\u095c\u095d\b\u0135\26\2\u095d\u026e\3\2\2\2\u095e"+
+ "\u095f\5\61\27\2\u095f\u0960\3\2\2\2\u0960\u0961\b\u0136\27\2\u0961\u0270"+
+ "\3\2\2\2\u0962\u0963\5\63\30\2\u0963\u0964\3\2\2\2\u0964\u0965\b\u0137"+
+ "\30\2\u0965\u0272\3\2\2\2\u0966\u0967\5\65\31\2\u0967\u0968\3\2\2\2\u0968"+
+ "\u0969\b\u0138\31\2\u0969\u0274\3\2\2\2\u096a\u096b\5\67\32\2\u096b\u096c"+
+ "\3\2\2\2\u096c\u096d\b\u0139\32\2\u096d\u0276\3\2\2\2\u096e\u096f\59\33"+
+ "\2\u096f\u0970\3\2\2\2\u0970\u0971\b\u013a\33\2\u0971\u0278\3\2\2\2\u0972"+
+ "\u0973\5;\34\2\u0973\u0974\3\2\2\2\u0974\u0975\b\u013b\34\2\u0975\u027a"+
+ "\3\2\2\2\u0976\u0977\5=\35\2\u0977\u0978\3\2\2\2\u0978\u0979\b\u013c\35"+
+ "\2\u0979\u027c\3\2\2\2\u097a\u097b\5?\36\2\u097b\u097c\3\2\2\2\u097c\u097d"+
+ "\b\u013d\36\2\u097d\u027e\3\2\2\2\u097e\u097f\5A\37\2\u097f\u0980\3\2"+
+ "\2\2\u0980\u0981\b\u013e\37\2\u0981\u0280\3\2\2\2\u0982\u0983\5C \2\u0983"+
+ "\u0984\3\2\2\2\u0984\u0985\b\u013f \2\u0985\u0282\3\2\2\2\u0986\u0987"+
+ "\5E!\2\u0987\u0988\3\2\2\2\u0988\u0989\b\u0140!\2\u0989\u0284\3\2\2\2"+
+ "\u098a\u098b\5G\"\2\u098b\u098c\3\2\2\2\u098c\u098d\b\u0141\"\2\u098d"+
+ "\u0286\3\2\2\2\u098e\u098f\5I#\2\u098f\u0990\3\2\2\2\u0990\u0991\b\u0142"+
+ "#\2\u0991\u0288\3\2\2\2\u0992\u0993\5K$\2\u0993\u0994\3\2\2\2\u0994\u0995"+
+ "\b\u0143$\2\u0995\u028a\3\2\2\2\u0996\u0997\5M%\2\u0997\u0998\3\2\2\2"+
+ "\u0998\u0999\b\u0144&\2\u0999\u028c\3\2\2\2\u099a\u099b\5O&\2\u099b\u099c"+
+ "\3\2\2\2\u099c\u099d\b\u0145\'\2\u099d\u028e\3\2\2\2\u099e\u099f\5Q\'"+
+ "\2\u099f\u09a0\3\2\2\2\u09a0\u09a1\b\u0146(\2\u09a1\u0290\3\2\2\2\u09a2"+
+ "\u09a3\5S(\2\u09a3\u09a4\3\2\2\2\u09a4\u09a5\b\u0147)\2\u09a5\u0292\3"+
+ "\2\2\2\u09a6\u09a7\5U)\2\u09a7\u09a8\3\2\2\2\u09a8\u09a9\b\u0148*\2\u09a9"+
+ "\u0294\3\2\2\2\u09aa\u09ab\5W*\2\u09ab\u09ac\3\2\2\2\u09ac\u09ad\b\u0149"+
+ "+\2\u09ad\u0296\3\2\2\2\u09ae\u09af\5Y+\2\u09af\u09b0\3\2\2\2\u09b0\u09b1"+
+ "\b\u014a,\2\u09b1\u0298\3\2\2\2\u09b2\u09b3\5[,\2\u09b3\u09b4\3\2\2\2"+
+ "\u09b4\u09b5\b\u014b-\2\u09b5\u029a\3\2\2\2\u09b6\u09b7\5]-\2\u09b7\u09b8"+
+ "\3\2\2\2\u09b8\u09b9\b\u014c.\2\u09b9\u029c\3\2\2\2\u09ba\u09bb\5_.\2"+
+ "\u09bb\u09bc\3\2\2\2\u09bc\u09bd\b\u014d/\2\u09bd\u029e\3\2\2\2\u09be"+
+ "\u09bf\5a/\2\u09bf\u09c0\3\2\2\2\u09c0\u09c1\b\u014e\60\2\u09c1\u02a0"+
+ "\3\2\2\2\u09c2\u09c3\5c\60\2\u09c3\u09c4\3\2\2\2\u09c4\u09c5\b\u014f\61"+
+ "\2\u09c5\u02a2\3\2\2\2\u09c6\u09c7\5e\61\2\u09c7\u09c8\3\2\2\2\u09c8\u09c9"+
+ "\b\u0150\62\2\u09c9\u02a4\3\2\2\2\u09ca\u09cb\5\u00b3X\2\u09cb\u09cc\3"+
+ "\2\2\2\u09cc\u09cd\b\u0151\177\2\u09cd\u02a6\3\2\2\2\u09ce\u09cf\5\u00b5"+
+ "Y\2\u09cf\u09d0\3\2\2\2\u09d0\u09d1\b\u0152?\2\u09d1\u02a8\3\2\2\2\u09d2"+
+ "\u09d3\5\u00b7Z\2\u09d3\u02aa\3\2\2\2\u09d4\u09d5\5\u00b9[\2\u09d5\u09d6"+
+ "\3\2\2\2\u09d6\u09d7\b\u0154\63\2\u09d7\u02ac\3\2\2\2\u09d8\u09d9\5\u00bb"+
+ "\\\2\u09d9\u09da\3\2\2\2\u09da\u09db\b\u0155\64\2\u09db\u02ae\3\2\2\2"+
+ "\u09dc\u09dd\5g\62\2\u09dd\u09de\3\2\2\2\u09de\u09df\b\u0156\65\2\u09df"+
+ "\u02b0\3\2\2\2\u09e0\u09e1\5i\63\2\u09e1\u09e2\3\2\2\2\u09e2\u09e3\b\u0157"+
+ "\66\2\u09e3\u02b2\3\2\2\2\u09e4\u09e5\5k\64\2\u09e5\u09e6\3\2\2\2\u09e6"+
+ "\u09e7\b\u0158\67\2\u09e7\u02b4\3\2\2\2\u09e8\u09e9\5m\65\2\u09e9\u09ea"+
+ "\3\2\2\2\u09ea\u09eb\b\u01598\2\u09eb\u02b6\3\2\2\2\u09ec\u09ed\5\u0107"+
+ "\u0082\2\u09ed\u09ee\3\2\2\2\u09ee\u09ef\b\u015a\5\2\u09ef\u09f0\b\u015a"+
+ "9\2\u09f0\u02b8\3\2\2\2\u09f1\u09f2\5\u0109\u0083\2\u09f2\u09f3\3\2\2"+
+ "\2\u09f3\u09f4\b\u015b\6\2\u09f4\u09f5\b\u015b:\2\u09f5\u02ba\3\2\2\2"+
+ "\u09f6\u09f7\5\u0123\u0090\2\u09f7\u09f8\3\2\2\2\u09f8\u09f9\b\u015cs"+
+ "\2\u09f9\u02bc\3\2\2\2\u09fa\u09fb\5\u0113\u0088\2\u09fb\u09fc\3\2\2\2"+
+ "\u09fc\u09fd\b\u015dt\2\u09fd\u02be\3\2\2\2\u09fe\u09ff\5\u011b\u008c"+
+ "\2\u09ff\u0a00\3\2\2\2\u0a00\u0a01\b\u015eu\2\u0a01\u02c0\3\2\2\2\u0a02"+
+ "\u0a03\5\u011f\u008e\2\u0a03\u0a04\3\2\2\2\u0a04\u0a05\b\u015fv\2\u0a05"+
+ "\u02c2\3\2\2\2\u0a06\u0a07\5\u012f\u0096\2\u0a07\u0a08\3\2\2\2\u0a08\u0a09"+
+ "\b\u0160w\2\u0a09\u02c4\3\2\2\2\u0a0a\u0a0b\5\u010b\u0084\2\u0a0b\u0a0c"+
+ "\3\2\2\2\u0a0c\u0a0d\b\u0161x\2\u0a0d\u02c6\3\2\2\2\u0a0e\u0a0f\5\u0125"+
+ "\u0091\2\u0a0f\u0a10\3\2\2\2\u0a10\u0a11\b\u0162y\2\u0a11\u02c8\3\2\2"+
+ "\2\u0a12\u0a13\5\u0111\u0087\2\u0a13\u0a14\3\2\2\2\u0a14\u0a15\b\u0163"+
+ "z\2\u0a15\u02ca\3\2\2\2\u0a16\u0a17\5\u0127\u0092\2\u0a17\u0a18\3\2\2"+
+ "\2\u0a18\u0a19\b\u0164{\2\u0a19\u02cc\3\2\2\2\u0a1a\u0a1b\5\u0129\u0093"+
+ "\2\u0a1b\u0a1c\3\2\2\2\u0a1c\u0a1d\b\u0165|\2\u0a1d\u02ce\3\2\2\2\u0a1e"+
+ "\u0a1f\5\u012b\u0094\2\u0a1f\u0a20\3\2\2\2\u0a20\u0a21\b\u0166}\2\u0a21"+
+ "\u02d0\3\2\2\2\u0a22\u0a25\5\13\4\2\u0a23\u0a25\5\t\3\2\u0a24\u0a22\3"+
+ "\2\2\2\u0a24\u0a23\3\2\2\2\u0a25\u0a26\3\2\2\2\u0a26\u0a27\b\u0167\2\2"+
+ "\u0a27\u02d2\3\2\2\2\u0a28\u0a29\5\r\5\2\u0a29\u0a2a\3\2\2\2\u0a2a\u0a2b"+
+ "\b\u0168\3\2\u0a2b\u02d4\3\2\2\2\u0a2c\u0a2d\5\17\6\2\u0a2d\u0a2e\3\2"+
+ "\2\2\u0a2e\u0a2f\b\u0169\3\2\u0a2f\u02d6\3\2\2\2W\2\3\4\5\6\u02dd\u02e7"+
+ "\u02e9\u02f7\u0303\u0472\u0474\u047c\u047e\u05a3\u05a7\u05af\u05b3\u05b9"+
+ "\u05bb\u05c0\u05c3\u05c8\u05cd\u05cf\u05d6\u05da\u05df\u05e4\u05e8\u05ed"+
+ "\u05ef\u05f6\u05f8\u05fd\u0602\u0607\u0609\u060e\u0613\u0615\u0619\u061e"+
+ "\u0627\u062d\u062f\u0637\u063c\u0641\u0647\u064c\u0651\u0653\u065a\u065c"+
+ "\u0661\u0666\u066b\u066d\u0672\u0677\u0679\u067d\u068a\u068c\u0696\u0698"+
+ "\u06a6\u06af\u06b4\u06b6\u06bd\u06c0\u06ce\u06d4\u06e6\u08d6\u08eb\u08ee"+
+ "\u08f3\u08fb\u0906\u090d\u0910\u0a24\u0080\2\3\2\b\2\2\7\3\2\7\4\2\7\5"+
+ "\2\6\2\2\t\f\2\t\16\2\t\13\2\t\r\2\t\17\2\t\20\2\t\t\2\t\n\2\t\21\2\t"+
+ "\22\2\t\23\2\t\24\2\t\25\2\t\26\2\t\27\2\t\30\2\t\31\2\t\32\2\t\33\2\t"+
+ "\34\2\t\35\2\t\36\2\t\37\2\t \2\t!\2\t\"\2\t#\2\t$\2\t%\2\t\b\2\t&\2\t"+
+ "\'\2\t(\2\t)\2\t*\2\t+\2\t,\2\t-\2\t.\2\t/\2\t\60\2\t\61\2\t\62\2\t\\"+
+ "\2\t]\2\t\63\2\t\64\2\t\65\2\t\66\2\t\u0083\2\t\u0084\2\tA\2\tB\2\t@\2"+
+ "\tI\2\t[\2\t^\2\t_\2\t:\2\t`\2\ta\2\tb\2\te\2\tf\2\tg\2\th\2\tU\2\tV\2"+
+ "\tW\2\tX\2\t\67\2\t8\2\t9\2\tL\2\tM\2\tN\2\tO\2\tP\2\tQ\2\tR\2\tS\2\t"+
+ "T\2\tj\2\tk\2\tl\2\tm\2\tn\2\to\2\tp\2\tq\2\tr\2\ts\2\tt\2\tu\2\tv\2\t"+
+ "w\2\tx\2\ty\2\tz\2\t{\2\t|\2\t}\2\t~\2\t\177\2\t\u0080\2\t\u0081\2\t\u0082"+
+ "\2\t\u008c\2\t\u0089\2\t\u008a\2\t\u008b\2\t\u0092\2\t\u0085\2\t\u008d"+
+ "\2\t\u0088\2\t\u008e\2\t\u008f\2\t\u0090\2\7\6\2\tZ\2";
+ 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/src/main/java/grammar/KotlinLexer.tokens b/src/main/java/grammar/KotlinLexer.tokens
new file mode 100644
index 00000000..fd7e0648
--- /dev/null
+++ b/src/main/java/grammar/KotlinLexer.tokens
@@ -0,0 +1,288 @@
+ShebangLine=1
+DelimitedComment=2
+LineComment=3
+WS=4
+NL=5
+RESERVED=6
+DOT=7
+COMMA=8
+LPAREN=9
+RPAREN=10
+LSQUARE=11
+RSQUARE=12
+LCURL=13
+RCURL=14
+MULT=15
+MOD=16
+DIV=17
+ADD=18
+SUB=19
+INCR=20
+DECR=21
+CONJ=22
+DISJ=23
+EXCL=24
+COLON=25
+SEMICOLON=26
+ASSIGNMENT=27
+ADD_ASSIGNMENT=28
+SUB_ASSIGNMENT=29
+MULT_ASSIGNMENT=30
+DIV_ASSIGNMENT=31
+MOD_ASSIGNMENT=32
+ARROW=33
+DOUBLE_ARROW=34
+RANGE=35
+COLONCOLON=36
+Q_COLONCOLON=37
+DOUBLE_SEMICOLON=38
+HASH=39
+AT=40
+QUEST=41
+ELVIS=42
+LANGLE=43
+RANGLE=44
+LE=45
+GE=46
+EXCL_EQ=47
+EXCL_EQEQ=48
+AS_SAFE=49
+EQEQ=50
+EQEQEQ=51
+SINGLE_QUOTE=52
+RETURN_AT=53
+CONTINUE_AT=54
+BREAK_AT=55
+FILE=56
+PACKAGE=57
+IMPORT=58
+CLASS=59
+INTERFACE=60
+FUN=61
+OBJECT=62
+VAL=63
+VAR=64
+TYPE_ALIAS=65
+CONSTRUCTOR=66
+BY=67
+COMPANION=68
+INIT=69
+THIS=70
+SUPER=71
+TYPEOF=72
+WHERE=73
+IF=74
+ELSE=75
+WHEN=76
+TRY=77
+CATCH=78
+FINALLY=79
+FOR=80
+DO=81
+WHILE=82
+THROW=83
+RETURN=84
+CONTINUE=85
+BREAK=86
+AS=87
+IS=88
+IN=89
+NOT_IS=90
+NOT_IN=91
+OUT=92
+FIELD=93
+PROPERTY=94
+GET=95
+SET=96
+GETTER=97
+SETTER=98
+RECEIVER=99
+PARAM=100
+SETPARAM=101
+DELEGATE=102
+DYNAMIC=103
+PUBLIC=104
+PRIVATE=105
+PROTECTED=106
+INTERNAL=107
+ENUM=108
+SEALED=109
+ANNOTATION=110
+DATA=111
+INNER=112
+TAILREC=113
+OPERATOR=114
+INLINE=115
+INFIX=116
+EXTERNAL=117
+SUSPEND=118
+OVERRIDE=119
+ABSTRACT=120
+FINAL=121
+OPEN=122
+CONST=123
+LATEINIT=124
+VARARG=125
+NOINLINE=126
+CROSSINLINE=127
+REIFIED=128
+QUOTE_OPEN=129
+TRIPLE_QUOTE_OPEN=130
+RealLiteral=131
+FloatLiteral=132
+DoubleLiteral=133
+LongLiteral=134
+IntegerLiteral=135
+HexLiteral=136
+BinLiteral=137
+BooleanLiteral=138
+NullLiteral=139
+Identifier=140
+LabelReference=141
+LabelDefinition=142
+FieldIdentifier=143
+CharacterLiteral=144
+UNICODE_CLASS_LL=145
+UNICODE_CLASS_LM=146
+UNICODE_CLASS_LO=147
+UNICODE_CLASS_LT=148
+UNICODE_CLASS_LU=149
+UNICODE_CLASS_ND=150
+UNICODE_CLASS_NL=151
+Inside_Comment=152
+Inside_WS=153
+Inside_NL=154
+QUOTE_CLOSE=155
+LineStrRef=156
+LineStrText=157
+LineStrEscapedChar=158
+LineStrExprStart=159
+TRIPLE_QUOTE_CLOSE=160
+MultiLineStringQuote=161
+MultiLineStrRef=162
+MultiLineStrText=163
+MultiLineStrEscapedChar=164
+MultiLineStrExprStart=165
+MultiLineNL=166
+StrExpr_IN=167
+StrExpr_Comment=168
+StrExpr_WS=169
+StrExpr_NL=170
+'...'=6
+'.'=7
+','=8
+'('=9
+'['=11
+'{'=13
+'}'=14
+'*'=15
+'%'=16
+'/'=17
+'+'=18
+'-'=19
+'++'=20
+'--'=21
+'&&'=22
+'||'=23
+'!'=24
+':'=25
+';'=26
+'='=27
+'+='=28
+'-='=29
+'*='=30
+'/='=31
+'%='=32
+'->'=33
+'=>'=34
+'..'=35
+'::'=36
+'?::'=37
+';;'=38
+'#'=39
+'@'=40
+'?'=41
+'?:'=42
+'<'=43
+'>'=44
+'<='=45
+'>='=46
+'!='=47
+'!=='=48
+'as?'=49
+'=='=50
+'==='=51
+'\''=52
+'@file'=56
+'package'=57
+'import'=58
+'class'=59
+'interface'=60
+'fun'=61
+'object'=62
+'val'=63
+'var'=64
+'typealias'=65
+'constructor'=66
+'by'=67
+'companion'=68
+'init'=69
+'this'=70
+'super'=71
+'typeof'=72
+'where'=73
+'if'=74
+'else'=75
+'when'=76
+'try'=77
+'catch'=78
+'finally'=79
+'for'=80
+'do'=81
+'while'=82
+'throw'=83
+'return'=84
+'continue'=85
+'break'=86
+'as'=87
+'is'=88
+'in'=89
+'out'=92
+'@field'=93
+'@property'=94
+'@get'=95
+'@set'=96
+'get'=97
+'set'=98
+'@receiver'=99
+'@param'=100
+'@setparam'=101
+'@delegate'=102
+'dynamic'=103
+'public'=104
+'private'=105
+'protected'=106
+'internal'=107
+'enum'=108
+'sealed'=109
+'annotation'=110
+'data'=111
+'inner'=112
+'tailrec'=113
+'operator'=114
+'inline'=115
+'infix'=116
+'external'=117
+'suspend'=118
+'override'=119
+'abstract'=120
+'final'=121
+'open'=122
+'const'=123
+'lateinit'=124
+'vararg'=125
+'noinline'=126
+'crossinline'=127
+'reified'=128
+'"""'=130
+'null'=139
diff --git a/src/main/java/grammar/KotlinParser.java b/src/main/java/grammar/KotlinParser.java
new file mode 100644
index 00000000..da47744b
--- /dev/null
+++ b/src/main/java/grammar/KotlinParser.java
@@ -0,0 +1,16091 @@
+// Generated from KotlinParser.g4 by ANTLR 4.5
+package grammar;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
+public class KotlinParser extends Parser {
+ static { RuntimeMetaData.checkVersion("4.5", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ ShebangLine=1, DelimitedComment=2, LineComment=3, WS=4, NL=5, RESERVED=6,
+ DOT=7, COMMA=8, LPAREN=9, RPAREN=10, LSQUARE=11, RSQUARE=12, LCURL=13,
+ RCURL=14, MULT=15, MOD=16, DIV=17, ADD=18, SUB=19, INCR=20, DECR=21, CONJ=22,
+ DISJ=23, EXCL=24, COLON=25, SEMICOLON=26, ASSIGNMENT=27, ADD_ASSIGNMENT=28,
+ SUB_ASSIGNMENT=29, MULT_ASSIGNMENT=30, DIV_ASSIGNMENT=31, MOD_ASSIGNMENT=32,
+ ARROW=33, DOUBLE_ARROW=34, RANGE=35, COLONCOLON=36, Q_COLONCOLON=37, DOUBLE_SEMICOLON=38,
+ HASH=39, AT=40, QUEST=41, ELVIS=42, LANGLE=43, RANGLE=44, LE=45, GE=46,
+ EXCL_EQ=47, EXCL_EQEQ=48, AS_SAFE=49, EQEQ=50, EQEQEQ=51, SINGLE_QUOTE=52,
+ RETURN_AT=53, CONTINUE_AT=54, BREAK_AT=55, FILE=56, PACKAGE=57, IMPORT=58,
+ CLASS=59, INTERFACE=60, FUN=61, OBJECT=62, VAL=63, VAR=64, TYPE_ALIAS=65,
+ CONSTRUCTOR=66, BY=67, COMPANION=68, INIT=69, THIS=70, SUPER=71, TYPEOF=72,
+ WHERE=73, IF=74, ELSE=75, WHEN=76, TRY=77, CATCH=78, FINALLY=79, FOR=80,
+ DO=81, WHILE=82, THROW=83, RETURN=84, CONTINUE=85, BREAK=86, AS=87, IS=88,
+ IN=89, NOT_IS=90, NOT_IN=91, OUT=92, FIELD=93, PROPERTY=94, GET=95, SET=96,
+ GETTER=97, SETTER=98, RECEIVER=99, PARAM=100, SETPARAM=101, DELEGATE=102,
+ DYNAMIC=103, PUBLIC=104, PRIVATE=105, PROTECTED=106, INTERNAL=107, ENUM=108,
+ SEALED=109, ANNOTATION=110, DATA=111, INNER=112, TAILREC=113, OPERATOR=114,
+ INLINE=115, INFIX=116, EXTERNAL=117, SUSPEND=118, OVERRIDE=119, ABSTRACT=120,
+ FINAL=121, OPEN=122, CONST=123, LATEINIT=124, VARARG=125, NOINLINE=126,
+ CROSSINLINE=127, REIFIED=128, QUOTE_OPEN=129, TRIPLE_QUOTE_OPEN=130, RealLiteral=131,
+ FloatLiteral=132, DoubleLiteral=133, LongLiteral=134, IntegerLiteral=135,
+ HexLiteral=136, BinLiteral=137, BooleanLiteral=138, NullLiteral=139, Identifier=140,
+ LabelReference=141, LabelDefinition=142, FieldIdentifier=143, CharacterLiteral=144,
+ UNICODE_CLASS_LL=145, UNICODE_CLASS_LM=146, UNICODE_CLASS_LO=147, UNICODE_CLASS_LT=148,
+ UNICODE_CLASS_LU=149, UNICODE_CLASS_ND=150, UNICODE_CLASS_NL=151, Inside_Comment=152,
+ Inside_WS=153, Inside_NL=154, QUOTE_CLOSE=155, LineStrRef=156, LineStrText=157,
+ LineStrEscapedChar=158, LineStrExprStart=159, TRIPLE_QUOTE_CLOSE=160,
+ MultiLineStringQuote=161, MultiLineStrRef=162, MultiLineStrText=163, MultiLineStrEscapedChar=164,
+ MultiLineStrExprStart=165, MultiLineNL=166, StrExpr_IN=167, StrExpr_Comment=168,
+ StrExpr_WS=169, StrExpr_NL=170;
+ public static final int
+ RULE_kotlinFile = 0, RULE_script = 1, RULE_preamble = 2, RULE_fileAnnotations = 3,
+ RULE_fileAnnotation = 4, RULE_packageHeader = 5, RULE_importList = 6,
+ RULE_importHeader = 7, RULE_importAlias = 8, RULE_topLevelObject = 9,
+ RULE_classDeclaration = 10, RULE_primaryConstructor = 11, RULE_classParameters = 12,
+ RULE_classParameter = 13, RULE_delegationSpecifiers = 14, RULE_delegationSpecifier = 15,
+ RULE_constructorInvocation = 16, RULE_explicitDelegation = 17, RULE_classBody = 18,
+ RULE_classMemberDeclaration = 19, RULE_anonymousInitializer = 20, RULE_secondaryConstructor = 21,
+ RULE_constructorDelegationCall = 22, RULE_enumClassBody = 23, RULE_enumEntries = 24,
+ RULE_enumEntry = 25, RULE_functionDeclaration = 26, RULE_functionValueParameters = 27,
+ RULE_functionValueParameter = 28, RULE_parameter = 29, RULE_receiverType = 30,
+ RULE_functionBody = 31, RULE_objectDeclaration = 32, RULE_companionObject = 33,
+ RULE_propertyDeclaration = 34, RULE_multiVariableDeclaration = 35, RULE_variableDeclaration = 36,
+ RULE_getter = 37, RULE_setter = 38, RULE_typeAlias = 39, RULE_typeParameters = 40,
+ RULE_typeParameter = 41, RULE_type = 42, RULE_typeModifierList = 43, RULE_parenthesizedType = 44,
+ RULE_nullableType = 45, RULE_typeReference = 46, RULE_functionType = 47,
+ RULE_functionTypeReceiver = 48, RULE_userType = 49, RULE_simpleUserType = 50,
+ RULE_functionTypeParameters = 51, RULE_typeConstraints = 52, RULE_typeConstraint = 53,
+ RULE_block = 54, RULE_statements = 55, RULE_statement = 56, RULE_blockLevelExpression = 57,
+ RULE_declaration = 58, RULE_expression = 59, RULE_disjunction = 60, RULE_conjunction = 61,
+ RULE_equalityComparison = 62, RULE_comparison = 63, RULE_namedInfix = 64,
+ RULE_elvisExpression = 65, RULE_infixFunctionCall = 66, RULE_rangeExpression = 67,
+ RULE_additiveExpression = 68, RULE_multiplicativeExpression = 69, RULE_typeRHS = 70,
+ RULE_prefixUnaryExpression = 71, RULE_postfixUnaryExpression = 72, RULE_atomicExpression = 73,
+ RULE_parenthesizedExpression = 74, RULE_callSuffix = 75, RULE_annotatedLambda = 76,
+ RULE_arrayAccess = 77, RULE_valueArguments = 78, RULE_typeArguments = 79,
+ RULE_typeProjection = 80, RULE_typeProjectionModifierList = 81, RULE_valueArgument = 82,
+ RULE_literalConstant = 83, RULE_stringLiteral = 84, RULE_lineStringLiteral = 85,
+ RULE_multiLineStringLiteral = 86, RULE_lineStringContent = 87, RULE_lineStringExpression = 88,
+ RULE_multiLineStringContent = 89, RULE_multiLineStringExpression = 90,
+ RULE_functionLiteral = 91, RULE_lambdaParameters = 92, RULE_lambdaParameter = 93,
+ RULE_objectLiteral = 94, RULE_collectionLiteral = 95, RULE_thisExpression = 96,
+ RULE_superExpression = 97, RULE_conditionalExpression = 98, RULE_ifExpression = 99,
+ RULE_controlStructureBody = 100, RULE_whenExpression = 101, RULE_whenEntry = 102,
+ RULE_whenCondition = 103, RULE_rangeTest = 104, RULE_typeTest = 105, RULE_tryExpression = 106,
+ RULE_catchBlock = 107, RULE_finallyBlock = 108, RULE_loopExpression = 109,
+ RULE_forExpression = 110, RULE_whileExpression = 111, RULE_doWhileExpression = 112,
+ RULE_jumpExpression = 113, RULE_callableReference = 114, RULE_assignmentOperator = 115,
+ RULE_equalityOperation = 116, RULE_comparisonOperator = 117, RULE_inOperator = 118,
+ RULE_isOperator = 119, RULE_additiveOperator = 120, RULE_multiplicativeOperation = 121,
+ RULE_typeOperation = 122, RULE_prefixUnaryOperation = 123, RULE_postfixUnaryOperation = 124,
+ RULE_memberAccessOperator = 125, RULE_modifierList = 126, RULE_modifier = 127,
+ RULE_classModifier = 128, RULE_memberModifier = 129, RULE_visibilityModifier = 130,
+ RULE_varianceAnnotation = 131, RULE_functionModifier = 132, RULE_propertyModifier = 133,
+ RULE_inheritanceModifier = 134, RULE_parameterModifier = 135, RULE_typeParameterModifier = 136,
+ RULE_labelDefinition = 137, RULE_annotations = 138, RULE_annotation = 139,
+ RULE_annotationList = 140, RULE_annotationUseSiteTarget = 141, RULE_unescapedAnnotation = 142,
+ RULE_identifier = 143, RULE_simpleIdentifier = 144, RULE_semi = 145, RULE_anysemi = 146;
+ public static final String[] ruleNames = {
+ "kotlinFile", "script", "preamble", "fileAnnotations", "fileAnnotation",
+ "packageHeader", "importList", "importHeader", "importAlias", "topLevelObject",
+ "classDeclaration", "primaryConstructor", "classParameters", "classParameter",
+ "delegationSpecifiers", "delegationSpecifier", "constructorInvocation",
+ "explicitDelegation", "classBody", "classMemberDeclaration", "anonymousInitializer",
+ "secondaryConstructor", "constructorDelegationCall", "enumClassBody",
+ "enumEntries", "enumEntry", "functionDeclaration", "functionValueParameters",
+ "functionValueParameter", "parameter", "receiverType", "functionBody",
+ "objectDeclaration", "companionObject", "propertyDeclaration", "multiVariableDeclaration",
+ "variableDeclaration", "getter", "setter", "typeAlias", "typeParameters",
+ "typeParameter", "type", "typeModifierList", "parenthesizedType", "nullableType",
+ "typeReference", "functionType", "functionTypeReceiver", "userType", "simpleUserType",
+ "functionTypeParameters", "typeConstraints", "typeConstraint", "block",
+ "statements", "statement", "blockLevelExpression", "declaration", "expression",
+ "disjunction", "conjunction", "equalityComparison", "comparison", "namedInfix",
+ "elvisExpression", "infixFunctionCall", "rangeExpression", "additiveExpression",
+ "multiplicativeExpression", "typeRHS", "prefixUnaryExpression", "postfixUnaryExpression",
+ "atomicExpression", "parenthesizedExpression", "callSuffix", "annotatedLambda",
+ "arrayAccess", "valueArguments", "typeArguments", "typeProjection", "typeProjectionModifierList",
+ "valueArgument", "literalConstant", "stringLiteral", "lineStringLiteral",
+ "multiLineStringLiteral", "lineStringContent", "lineStringExpression",
+ "multiLineStringContent", "multiLineStringExpression", "functionLiteral",
+ "lambdaParameters", "lambdaParameter", "objectLiteral", "collectionLiteral",
+ "thisExpression", "superExpression", "conditionalExpression", "ifExpression",
+ "controlStructureBody", "whenExpression", "whenEntry", "whenCondition",
+ "rangeTest", "typeTest", "tryExpression", "catchBlock", "finallyBlock",
+ "loopExpression", "forExpression", "whileExpression", "doWhileExpression",
+ "jumpExpression", "callableReference", "assignmentOperator", "equalityOperation",
+ "comparisonOperator", "inOperator", "isOperator", "additiveOperator",
+ "multiplicativeOperation", "typeOperation", "prefixUnaryOperation", "postfixUnaryOperation",
+ "memberAccessOperator", "modifierList", "modifier", "classModifier", "memberModifier",
+ "visibilityModifier", "varianceAnnotation", "functionModifier", "propertyModifier",
+ "inheritanceModifier", "parameterModifier", "typeParameterModifier", "labelDefinition",
+ "annotations", "annotation", "annotationList", "annotationUseSiteTarget",
+ "unescapedAnnotation", "identifier", "simpleIdentifier", "semi", "anysemi"
+ };
+
+ private static final String[] _LITERAL_NAMES = {
+ null, null, null, null, null, null, "'...'", "'.'", "','", "'('", null,
+ "'['", null, "'{'", "'}'", "'*'", "'%'", "'/'", "'+'", "'-'", "'++'",
+ "'--'", "'&&'", "'||'", "'!'", "':'", "';'", "'='", "'+='", "'-='", "'*='",
+ "'/='", "'%='", "'->'", "'=>'", "'..'", "'::'", "'?::'", "';;'", "'#'",
+ "'@'", "'?'", "'?:'", "'<'", "'>'", "'<='", "'>='", "'!='", "'!=='", "'as?'",
+ "'=='", "'==='", "'''", null, null, null, "'@file'", "'package'", "'import'",
+ "'class'", "'interface'", "'fun'", "'object'", "'val'", "'var'", "'typealias'",
+ "'constructor'", "'by'", "'companion'", "'init'", "'this'", "'super'",
+ "'typeof'", "'where'", "'if'", "'else'", "'when'", "'try'", "'catch'",
+ "'finally'", "'for'", "'do'", "'while'", "'throw'", "'return'", "'continue'",
+ "'break'", "'as'", "'is'", "'in'", null, null, "'out'", "'@field'", "'@property'",
+ "'@get'", "'@set'", "'get'", "'set'", "'@receiver'", "'@param'", "'@setparam'",
+ "'@delegate'", "'dynamic'", "'public'", "'private'", "'protected'", "'internal'",
+ "'enum'", "'sealed'", "'annotation'", "'data'", "'inner'", "'tailrec'",
+ "'operator'", "'inline'", "'infix'", "'external'", "'suspend'", "'override'",
+ "'abstract'", "'final'", "'open'", "'const'", "'lateinit'", "'vararg'",
+ "'noinline'", "'crossinline'", "'reified'", null, "'\"\"\"'", null, null,
+ null, null, null, null, null, null, "'null'"
+ };
+ private static final String[] _SYMBOLIC_NAMES = {
+ null, "ShebangLine", "DelimitedComment", "LineComment", "WS", "NL", "RESERVED",
+ "DOT", "COMMA", "LPAREN", "RPAREN", "LSQUARE", "RSQUARE", "LCURL", "RCURL",
+ "MULT", "MOD", "DIV", "ADD", "SUB", "INCR", "DECR", "CONJ", "DISJ", "EXCL",
+ "COLON", "SEMICOLON", "ASSIGNMENT", "ADD_ASSIGNMENT", "SUB_ASSIGNMENT",
+ "MULT_ASSIGNMENT", "DIV_ASSIGNMENT", "MOD_ASSIGNMENT", "ARROW", "DOUBLE_ARROW",
+ "RANGE", "COLONCOLON", "Q_COLONCOLON", "DOUBLE_SEMICOLON", "HASH", "AT",
+ "QUEST", "ELVIS", "LANGLE", "RANGLE", "LE", "GE", "EXCL_EQ", "EXCL_EQEQ",
+ "AS_SAFE", "EQEQ", "EQEQEQ", "SINGLE_QUOTE", "RETURN_AT", "CONTINUE_AT",
+ "BREAK_AT", "FILE", "PACKAGE", "IMPORT", "CLASS", "INTERFACE", "FUN",
+ "OBJECT", "VAL", "VAR", "TYPE_ALIAS", "CONSTRUCTOR", "BY", "COMPANION",
+ "INIT", "THIS", "SUPER", "TYPEOF", "WHERE", "IF", "ELSE", "WHEN", "TRY",
+ "CATCH", "FINALLY", "FOR", "DO", "WHILE", "THROW", "RETURN", "CONTINUE",
+ "BREAK", "AS", "IS", "IN", "NOT_IS", "NOT_IN", "OUT", "FIELD", "PROPERTY",
+ "GET", "SET", "GETTER", "SETTER", "RECEIVER", "PARAM", "SETPARAM", "DELEGATE",
+ "DYNAMIC", "PUBLIC", "PRIVATE", "PROTECTED", "INTERNAL", "ENUM", "SEALED",
+ "ANNOTATION", "DATA", "INNER", "TAILREC", "OPERATOR", "INLINE", "INFIX",
+ "EXTERNAL", "SUSPEND", "OVERRIDE", "ABSTRACT", "FINAL", "OPEN", "CONST",
+ "LATEINIT", "VARARG", "NOINLINE", "CROSSINLINE", "REIFIED", "QUOTE_OPEN",
+ "TRIPLE_QUOTE_OPEN", "RealLiteral", "FloatLiteral", "DoubleLiteral", "LongLiteral",
+ "IntegerLiteral", "HexLiteral", "BinLiteral", "BooleanLiteral", "NullLiteral",
+ "Identifier", "LabelReference", "LabelDefinition", "FieldIdentifier",
+ "CharacterLiteral", "UNICODE_CLASS_LL", "UNICODE_CLASS_LM", "UNICODE_CLASS_LO",
+ "UNICODE_CLASS_LT", "UNICODE_CLASS_LU", "UNICODE_CLASS_ND", "UNICODE_CLASS_NL",
+ "Inside_Comment", "Inside_WS", "Inside_NL", "QUOTE_CLOSE", "LineStrRef",
+ "LineStrText", "LineStrEscapedChar", "LineStrExprStart", "TRIPLE_QUOTE_CLOSE",
+ "MultiLineStringQuote", "MultiLineStrRef", "MultiLineStrText", "MultiLineStrEscapedChar",
+ "MultiLineStrExprStart", "MultiLineNL", "StrExpr_IN", "StrExpr_Comment",
+ "StrExpr_WS", "StrExpr_NL"
+ };
+ 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 "KotlinParser.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public KotlinParser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+ public static class KotlinFileContext extends ParserRuleContext {
+ public PreambleContext preamble() {
+ return getRuleContext(PreambleContext.class,0);
+ }
+ public TerminalNode EOF() { return getToken(KotlinParser.EOF, 0); }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public List anysemi() {
+ return getRuleContexts(AnysemiContext.class);
+ }
+ public AnysemiContext anysemi(int i) {
+ return getRuleContext(AnysemiContext.class,i);
+ }
+ public List topLevelObject() {
+ return getRuleContexts(TopLevelObjectContext.class);
+ }
+ public TopLevelObjectContext topLevelObject(int i) {
+ return getRuleContext(TopLevelObjectContext.class,i);
+ }
+ public KotlinFileContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_kotlinFile; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterKotlinFile(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitKotlinFile(this);
+ }
+ }
+
+ public final KotlinFileContext kotlinFile() throws RecognitionException {
+ KotlinFileContext _localctx = new KotlinFileContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_kotlinFile);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(297);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,0,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(294);
+ match(NL);
+ }
+ }
+ }
+ setState(299);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,0,_ctx);
+ }
+ setState(300);
+ preamble();
+ setState(304);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL || _la==SEMICOLON) {
+ {
+ {
+ setState(301);
+ anysemi();
+ }
+ }
+ setState(306);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(321);
+ _la = _input.LA(1);
+ if (((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (AT - 40)) | (1L << (FILE - 40)) | (1L << (CLASS - 40)) | (1L << (INTERFACE - 40)) | (1L << (FUN - 40)) | (1L << (OBJECT - 40)) | (1L << (VAL - 40)) | (1L << (VAR - 40)) | (1L << (TYPE_ALIAS - 40)) | (1L << (IN - 40)) | (1L << (OUT - 40)) | (1L << (FIELD - 40)) | (1L << (PROPERTY - 40)) | (1L << (GET - 40)) | (1L << (SET - 40)) | (1L << (RECEIVER - 40)) | (1L << (PARAM - 40)) | (1L << (SETPARAM - 40)) | (1L << (DELEGATE - 40)))) != 0) || ((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (PUBLIC - 104)) | (1L << (PRIVATE - 104)) | (1L << (PROTECTED - 104)) | (1L << (INTERNAL - 104)) | (1L << (ENUM - 104)) | (1L << (SEALED - 104)) | (1L << (ANNOTATION - 104)) | (1L << (DATA - 104)) | (1L << (INNER - 104)) | (1L << (TAILREC - 104)) | (1L << (OPERATOR - 104)) | (1L << (INLINE - 104)) | (1L << (INFIX - 104)) | (1L << (EXTERNAL - 104)) | (1L << (SUSPEND - 104)) | (1L << (OVERRIDE - 104)) | (1L << (ABSTRACT - 104)) | (1L << (FINAL - 104)) | (1L << (OPEN - 104)) | (1L << (CONST - 104)) | (1L << (LATEINIT - 104)) | (1L << (VARARG - 104)) | (1L << (NOINLINE - 104)) | (1L << (CROSSINLINE - 104)) | (1L << (REIFIED - 104)) | (1L << (LabelReference - 104)))) != 0)) {
+ {
+ setState(307);
+ topLevelObject();
+ setState(318);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL || _la==SEMICOLON) {
+ {
+ {
+ setState(309);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(308);
+ anysemi();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(311);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,2,_ctx);
+ } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
+ setState(314);
+ _la = _input.LA(1);
+ if (((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (AT - 40)) | (1L << (FILE - 40)) | (1L << (CLASS - 40)) | (1L << (INTERFACE - 40)) | (1L << (FUN - 40)) | (1L << (OBJECT - 40)) | (1L << (VAL - 40)) | (1L << (VAR - 40)) | (1L << (TYPE_ALIAS - 40)) | (1L << (IN - 40)) | (1L << (OUT - 40)) | (1L << (FIELD - 40)) | (1L << (PROPERTY - 40)) | (1L << (GET - 40)) | (1L << (SET - 40)) | (1L << (RECEIVER - 40)) | (1L << (PARAM - 40)) | (1L << (SETPARAM - 40)) | (1L << (DELEGATE - 40)))) != 0) || ((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (PUBLIC - 104)) | (1L << (PRIVATE - 104)) | (1L << (PROTECTED - 104)) | (1L << (INTERNAL - 104)) | (1L << (ENUM - 104)) | (1L << (SEALED - 104)) | (1L << (ANNOTATION - 104)) | (1L << (DATA - 104)) | (1L << (INNER - 104)) | (1L << (TAILREC - 104)) | (1L << (OPERATOR - 104)) | (1L << (INLINE - 104)) | (1L << (INFIX - 104)) | (1L << (EXTERNAL - 104)) | (1L << (SUSPEND - 104)) | (1L << (OVERRIDE - 104)) | (1L << (ABSTRACT - 104)) | (1L << (FINAL - 104)) | (1L << (OPEN - 104)) | (1L << (CONST - 104)) | (1L << (LATEINIT - 104)) | (1L << (VARARG - 104)) | (1L << (NOINLINE - 104)) | (1L << (CROSSINLINE - 104)) | (1L << (REIFIED - 104)) | (1L << (LabelReference - 104)))) != 0)) {
+ {
+ setState(313);
+ topLevelObject();
+ }
+ }
+
+ }
+ }
+ setState(320);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+
+ setState(323);
+ match(EOF);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ScriptContext extends ParserRuleContext {
+ public PreambleContext preamble() {
+ return getRuleContext(PreambleContext.class,0);
+ }
+ public TerminalNode EOF() { return getToken(KotlinParser.EOF, 0); }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public List anysemi() {
+ return getRuleContexts(AnysemiContext.class);
+ }
+ public AnysemiContext anysemi(int i) {
+ return getRuleContext(AnysemiContext.class,i);
+ }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public ScriptContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_script; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterScript(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitScript(this);
+ }
+ }
+
+ public final ScriptContext script() throws RecognitionException {
+ ScriptContext _localctx = new ScriptContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_script);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(328);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,6,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(325);
+ match(NL);
+ }
+ }
+ }
+ setState(330);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,6,_ctx);
+ }
+ setState(331);
+ preamble();
+ setState(335);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,7,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(332);
+ anysemi();
+ }
+ }
+ }
+ setState(337);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,7,_ctx);
+ }
+ setState(352);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NL) | (1L << LPAREN) | (1L << LSQUARE) | (1L << LCURL) | (1L << ADD) | (1L << SUB) | (1L << INCR) | (1L << DECR) | (1L << EXCL) | (1L << COLONCOLON) | (1L << Q_COLONCOLON) | (1L << AT) | (1L << RETURN_AT) | (1L << CONTINUE_AT) | (1L << BREAK_AT) | (1L << FILE) | (1L << IMPORT) | (1L << OBJECT) | (1L << VAL))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CONSTRUCTOR - 66)) | (1L << (BY - 66)) | (1L << (COMPANION - 66)) | (1L << (INIT - 66)) | (1L << (THIS - 66)) | (1L << (SUPER - 66)) | (1L << (WHERE - 66)) | (1L << (IF - 66)) | (1L << (WHEN - 66)) | (1L << (TRY - 66)) | (1L << (CATCH - 66)) | (1L << (FINALLY - 66)) | (1L << (FOR - 66)) | (1L << (DO - 66)) | (1L << (WHILE - 66)) | (1L << (THROW - 66)) | (1L << (RETURN - 66)) | (1L << (CONTINUE - 66)) | (1L << (BREAK - 66)) | (1L << (OUT - 66)) | (1L << (FIELD - 66)) | (1L << (PROPERTY - 66)) | (1L << (GET - 66)) | (1L << (SET - 66)) | (1L << (GETTER - 66)) | (1L << (SETTER - 66)) | (1L << (RECEIVER - 66)) | (1L << (PARAM - 66)) | (1L << (SETPARAM - 66)) | (1L << (DELEGATE - 66)) | (1L << (DYNAMIC - 66)) | (1L << (PUBLIC - 66)) | (1L << (PRIVATE - 66)) | (1L << (PROTECTED - 66)) | (1L << (INTERNAL - 66)) | (1L << (ENUM - 66)) | (1L << (SEALED - 66)) | (1L << (ANNOTATION - 66)) | (1L << (DATA - 66)) | (1L << (INNER - 66)) | (1L << (TAILREC - 66)) | (1L << (OPERATOR - 66)) | (1L << (INLINE - 66)) | (1L << (INFIX - 66)) | (1L << (EXTERNAL - 66)) | (1L << (SUSPEND - 66)) | (1L << (OVERRIDE - 66)) | (1L << (ABSTRACT - 66)) | (1L << (FINAL - 66)) | (1L << (OPEN - 66)) | (1L << (CONST - 66)) | (1L << (LATEINIT - 66)) | (1L << (VARARG - 66)) | (1L << (NOINLINE - 66)) | (1L << (CROSSINLINE - 66)) | (1L << (REIFIED - 66)) | (1L << (QUOTE_OPEN - 66)))) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & ((1L << (TRIPLE_QUOTE_OPEN - 130)) | (1L << (RealLiteral - 130)) | (1L << (LongLiteral - 130)) | (1L << (IntegerLiteral - 130)) | (1L << (HexLiteral - 130)) | (1L << (BinLiteral - 130)) | (1L << (BooleanLiteral - 130)) | (1L << (NullLiteral - 130)) | (1L << (Identifier - 130)) | (1L << (LabelReference - 130)) | (1L << (LabelDefinition - 130)) | (1L << (CharacterLiteral - 130)))) != 0)) {
+ {
+ setState(338);
+ expression();
+ setState(349);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL || _la==SEMICOLON) {
+ {
+ {
+ setState(340);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(339);
+ anysemi();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(342);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
+ setState(345);
+ switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
+ case 1:
+ {
+ setState(344);
+ expression();
+ }
+ break;
+ }
+ }
+ }
+ setState(351);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+
+ setState(354);
+ match(EOF);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class PreambleContext extends ParserRuleContext {
+ public PackageHeaderContext packageHeader() {
+ return getRuleContext(PackageHeaderContext.class,0);
+ }
+ public ImportListContext importList() {
+ return getRuleContext(ImportListContext.class,0);
+ }
+ public FileAnnotationsContext fileAnnotations() {
+ return getRuleContext(FileAnnotationsContext.class,0);
+ }
+ public PreambleContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_preamble; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterPreamble(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitPreamble(this);
+ }
+ }
+
+ public final PreambleContext preamble() throws RecognitionException {
+ PreambleContext _localctx = new PreambleContext(_ctx, getState());
+ enterRule(_localctx, 4, RULE_preamble);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(357);
+ switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
+ case 1:
+ {
+ setState(356);
+ fileAnnotations();
+ }
+ break;
+ }
+ setState(359);
+ packageHeader();
+ setState(360);
+ importList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FileAnnotationsContext extends ParserRuleContext {
+ public List fileAnnotation() {
+ return getRuleContexts(FileAnnotationContext.class);
+ }
+ public FileAnnotationContext fileAnnotation(int i) {
+ return getRuleContext(FileAnnotationContext.class,i);
+ }
+ public FileAnnotationsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fileAnnotations; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterFileAnnotations(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitFileAnnotations(this);
+ }
+ }
+
+ public final FileAnnotationsContext fileAnnotations() throws RecognitionException {
+ FileAnnotationsContext _localctx = new FileAnnotationsContext(_ctx, getState());
+ enterRule(_localctx, 6, RULE_fileAnnotations);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(363);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(362);
+ fileAnnotation();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(365);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,13,_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 FileAnnotationContext extends ParserRuleContext {
+ public List FILE() { return getTokens(KotlinParser.FILE); }
+ public TerminalNode FILE(int i) {
+ return getToken(KotlinParser.FILE, i);
+ }
+ public List COLON() { return getTokens(KotlinParser.COLON); }
+ public TerminalNode COLON(int i) {
+ return getToken(KotlinParser.COLON, i);
+ }
+ public List LSQUARE() { return getTokens(KotlinParser.LSQUARE); }
+ public TerminalNode LSQUARE(int i) {
+ return getToken(KotlinParser.LSQUARE, i);
+ }
+ public List RSQUARE() { return getTokens(KotlinParser.RSQUARE); }
+ public TerminalNode RSQUARE(int i) {
+ return getToken(KotlinParser.RSQUARE, i);
+ }
+ public List unescapedAnnotation() {
+ return getRuleContexts(UnescapedAnnotationContext.class);
+ }
+ public UnescapedAnnotationContext unescapedAnnotation(int i) {
+ return getRuleContext(UnescapedAnnotationContext.class,i);
+ }
+ public List semi() {
+ return getRuleContexts(SemiContext.class);
+ }
+ public SemiContext semi(int i) {
+ return getRuleContext(SemiContext.class,i);
+ }
+ public FileAnnotationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fileAnnotation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterFileAnnotation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitFileAnnotation(this);
+ }
+ }
+
+ public final FileAnnotationContext fileAnnotation() throws RecognitionException {
+ FileAnnotationContext _localctx = new FileAnnotationContext(_ctx, getState());
+ enterRule(_localctx, 8, RULE_fileAnnotation);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(383);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(367);
+ match(FILE);
+ setState(368);
+ match(COLON);
+ setState(378);
+ switch (_input.LA(1)) {
+ case LSQUARE:
+ {
+ setState(369);
+ match(LSQUARE);
+ setState(371);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(370);
+ unescapedAnnotation();
+ }
+ }
+ setState(373);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( ((((_la - 58)) & ~0x3f) == 0 && ((1L << (_la - 58)) & ((1L << (IMPORT - 58)) | (1L << (CONSTRUCTOR - 58)) | (1L << (BY - 58)) | (1L << (COMPANION - 58)) | (1L << (INIT - 58)) | (1L << (WHERE - 58)) | (1L << (CATCH - 58)) | (1L << (FINALLY - 58)) | (1L << (OUT - 58)) | (1L << (GETTER - 58)) | (1L << (SETTER - 58)) | (1L << (DYNAMIC - 58)) | (1L << (PUBLIC - 58)) | (1L << (PRIVATE - 58)) | (1L << (PROTECTED - 58)) | (1L << (INTERNAL - 58)) | (1L << (ENUM - 58)) | (1L << (SEALED - 58)) | (1L << (ANNOTATION - 58)) | (1L << (DATA - 58)) | (1L << (INNER - 58)) | (1L << (TAILREC - 58)) | (1L << (OPERATOR - 58)) | (1L << (INLINE - 58)) | (1L << (INFIX - 58)) | (1L << (EXTERNAL - 58)) | (1L << (SUSPEND - 58)) | (1L << (OVERRIDE - 58)) | (1L << (ABSTRACT - 58)) | (1L << (FINAL - 58)))) != 0) || ((((_la - 122)) & ~0x3f) == 0 && ((1L << (_la - 122)) & ((1L << (OPEN - 122)) | (1L << (CONST - 122)) | (1L << (LATEINIT - 122)) | (1L << (VARARG - 122)) | (1L << (NOINLINE - 122)) | (1L << (CROSSINLINE - 122)) | (1L << (REIFIED - 122)) | (1L << (Identifier - 122)))) != 0) );
+ setState(375);
+ match(RSQUARE);
+ }
+ break;
+ case IMPORT:
+ case CONSTRUCTOR:
+ case BY:
+ case COMPANION:
+ case INIT:
+ case WHERE:
+ case CATCH:
+ case FINALLY:
+ case OUT:
+ case GETTER:
+ case SETTER:
+ case DYNAMIC:
+ case PUBLIC:
+ case PRIVATE:
+ case PROTECTED:
+ case INTERNAL:
+ case ENUM:
+ case SEALED:
+ case ANNOTATION:
+ case DATA:
+ case INNER:
+ case TAILREC:
+ case OPERATOR:
+ case INLINE:
+ case INFIX:
+ case EXTERNAL:
+ case SUSPEND:
+ case OVERRIDE:
+ case ABSTRACT:
+ case FINAL:
+ case OPEN:
+ case CONST:
+ case LATEINIT:
+ case VARARG:
+ case NOINLINE:
+ case CROSSINLINE:
+ case REIFIED:
+ case Identifier:
+ {
+ setState(377);
+ unescapedAnnotation();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(381);
+ switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
+ case 1:
+ {
+ setState(380);
+ semi();
+ }
+ break;
+ }
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(385);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,17,_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 PackageHeaderContext extends ParserRuleContext {
+ public TerminalNode PACKAGE() { return getToken(KotlinParser.PACKAGE, 0); }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public SemiContext semi() {
+ return getRuleContext(SemiContext.class,0);
+ }
+ public PackageHeaderContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_packageHeader; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterPackageHeader(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitPackageHeader(this);
+ }
+ }
+
+ public final PackageHeaderContext packageHeader() throws RecognitionException {
+ PackageHeaderContext _localctx = new PackageHeaderContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_packageHeader);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(395);
+ switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
+ case 1:
+ {
+ setState(388);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(387);
+ modifierList();
+ }
+ }
+
+ setState(390);
+ match(PACKAGE);
+ setState(391);
+ identifier();
+ setState(393);
+ switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
+ case 1:
+ {
+ setState(392);
+ semi();
+ }
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ImportListContext extends ParserRuleContext {
+ public List importHeader() {
+ return getRuleContexts(ImportHeaderContext.class);
+ }
+ public ImportHeaderContext importHeader(int i) {
+ return getRuleContext(ImportHeaderContext.class,i);
+ }
+ public ImportListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_importList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterImportList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitImportList(this);
+ }
+ }
+
+ public final ImportListContext importList() throws RecognitionException {
+ ImportListContext _localctx = new ImportListContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_importList);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(400);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,21,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(397);
+ importHeader();
+ }
+ }
+ }
+ setState(402);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,21,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ImportHeaderContext extends ParserRuleContext {
+ public TerminalNode IMPORT() { return getToken(KotlinParser.IMPORT, 0); }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(KotlinParser.DOT, 0); }
+ public TerminalNode MULT() { return getToken(KotlinParser.MULT, 0); }
+ public ImportAliasContext importAlias() {
+ return getRuleContext(ImportAliasContext.class,0);
+ }
+ public SemiContext semi() {
+ return getRuleContext(SemiContext.class,0);
+ }
+ public ImportHeaderContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_importHeader; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterImportHeader(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitImportHeader(this);
+ }
+ }
+
+ public final ImportHeaderContext importHeader() throws RecognitionException {
+ ImportHeaderContext _localctx = new ImportHeaderContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_importHeader);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(403);
+ match(IMPORT);
+ setState(404);
+ identifier();
+ setState(408);
+ switch (_input.LA(1)) {
+ case DOT:
+ {
+ setState(405);
+ match(DOT);
+ setState(406);
+ match(MULT);
+ }
+ break;
+ case AS:
+ {
+ setState(407);
+ importAlias();
+ }
+ break;
+ case EOF:
+ case NL:
+ case LPAREN:
+ case LSQUARE:
+ case LCURL:
+ case ADD:
+ case SUB:
+ case INCR:
+ case DECR:
+ case EXCL:
+ case SEMICOLON:
+ case COLONCOLON:
+ case Q_COLONCOLON:
+ case AT:
+ case RETURN_AT:
+ case CONTINUE_AT:
+ case BREAK_AT:
+ case FILE:
+ case IMPORT:
+ case CLASS:
+ case INTERFACE:
+ case FUN:
+ case OBJECT:
+ case VAL:
+ case VAR:
+ case TYPE_ALIAS:
+ case CONSTRUCTOR:
+ case BY:
+ case COMPANION:
+ case INIT:
+ case THIS:
+ case SUPER:
+ case WHERE:
+ case IF:
+ case WHEN:
+ case TRY:
+ case CATCH:
+ case FINALLY:
+ case FOR:
+ case DO:
+ case WHILE:
+ case THROW:
+ case RETURN:
+ case CONTINUE:
+ case BREAK:
+ case IN:
+ case OUT:
+ case FIELD:
+ case PROPERTY:
+ case GET:
+ case SET:
+ case GETTER:
+ case SETTER:
+ case RECEIVER:
+ case PARAM:
+ case SETPARAM:
+ case DELEGATE:
+ case DYNAMIC:
+ case PUBLIC:
+ case PRIVATE:
+ case PROTECTED:
+ case INTERNAL:
+ case ENUM:
+ case SEALED:
+ case ANNOTATION:
+ case DATA:
+ case INNER:
+ case TAILREC:
+ case OPERATOR:
+ case INLINE:
+ case INFIX:
+ case EXTERNAL:
+ case SUSPEND:
+ case OVERRIDE:
+ case ABSTRACT:
+ case FINAL:
+ case OPEN:
+ case CONST:
+ case LATEINIT:
+ case VARARG:
+ case NOINLINE:
+ case CROSSINLINE:
+ case REIFIED:
+ case QUOTE_OPEN:
+ case TRIPLE_QUOTE_OPEN:
+ case RealLiteral:
+ case LongLiteral:
+ case IntegerLiteral:
+ case HexLiteral:
+ case BinLiteral:
+ case BooleanLiteral:
+ case NullLiteral:
+ case Identifier:
+ case LabelReference:
+ case LabelDefinition:
+ case CharacterLiteral:
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(411);
+ switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
+ case 1:
+ {
+ setState(410);
+ semi();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ImportAliasContext extends ParserRuleContext {
+ public TerminalNode AS() { return getToken(KotlinParser.AS, 0); }
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public ImportAliasContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_importAlias; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterImportAlias(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitImportAlias(this);
+ }
+ }
+
+ public final ImportAliasContext importAlias() throws RecognitionException {
+ ImportAliasContext _localctx = new ImportAliasContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_importAlias);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(413);
+ match(AS);
+ setState(414);
+ simpleIdentifier();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TopLevelObjectContext extends ParserRuleContext {
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public ObjectDeclarationContext objectDeclaration() {
+ return getRuleContext(ObjectDeclarationContext.class,0);
+ }
+ public FunctionDeclarationContext functionDeclaration() {
+ return getRuleContext(FunctionDeclarationContext.class,0);
+ }
+ public PropertyDeclarationContext propertyDeclaration() {
+ return getRuleContext(PropertyDeclarationContext.class,0);
+ }
+ public TypeAliasContext typeAlias() {
+ return getRuleContext(TypeAliasContext.class,0);
+ }
+ public TopLevelObjectContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_topLevelObject; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterTopLevelObject(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitTopLevelObject(this);
+ }
+ }
+
+ public final TopLevelObjectContext topLevelObject() throws RecognitionException {
+ TopLevelObjectContext _localctx = new TopLevelObjectContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_topLevelObject);
+ try {
+ setState(421);
+ switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(416);
+ classDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(417);
+ objectDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(418);
+ functionDeclaration();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(419);
+ propertyDeclaration();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(420);
+ typeAlias();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassDeclarationContext extends ParserRuleContext {
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public TerminalNode CLASS() { return getToken(KotlinParser.CLASS, 0); }
+ public TerminalNode INTERFACE() { return getToken(KotlinParser.INTERFACE, 0); }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public PrimaryConstructorContext primaryConstructor() {
+ return getRuleContext(PrimaryConstructorContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(KotlinParser.COLON, 0); }
+ public DelegationSpecifiersContext delegationSpecifiers() {
+ return getRuleContext(DelegationSpecifiersContext.class,0);
+ }
+ public TypeConstraintsContext typeConstraints() {
+ return getRuleContext(TypeConstraintsContext.class,0);
+ }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public EnumClassBodyContext enumClassBody() {
+ return getRuleContext(EnumClassBodyContext.class,0);
+ }
+ public ClassDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterClassDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitClassDeclaration(this);
+ }
+ }
+
+ public final ClassDeclarationContext classDeclaration() throws RecognitionException {
+ ClassDeclarationContext _localctx = new ClassDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_classDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(424);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(423);
+ modifierList();
+ }
+ }
+
+ setState(426);
+ _la = _input.LA(1);
+ if ( !(_la==CLASS || _la==INTERFACE) ) {
+ _errHandler.recoverInline(this);
+ } else {
+ consume();
+ }
+ setState(430);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(427);
+ match(NL);
+ }
+ }
+ setState(432);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(433);
+ simpleIdentifier();
+ setState(441);
+ switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
+ case 1:
+ {
+ setState(437);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(434);
+ match(NL);
+ }
+ }
+ setState(439);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(440);
+ typeParameters();
+ }
+ break;
+ }
+ setState(450);
+ switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
+ case 1:
+ {
+ setState(446);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(443);
+ match(NL);
+ }
+ }
+ setState(448);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(449);
+ primaryConstructor();
+ }
+ break;
+ }
+ setState(466);
+ switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
+ case 1:
+ {
+ setState(455);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(452);
+ match(NL);
+ }
+ }
+ setState(457);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(458);
+ match(COLON);
+ setState(462);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(459);
+ match(NL);
+ }
+ }
+ setState(464);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(465);
+ delegationSpecifiers();
+ }
+ break;
+ }
+ setState(475);
+ switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
+ case 1:
+ {
+ setState(471);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(468);
+ match(NL);
+ }
+ }
+ setState(473);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(474);
+ typeConstraints();
+ }
+ break;
+ }
+ setState(491);
+ switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
+ case 1:
+ {
+ setState(480);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(477);
+ match(NL);
+ }
+ }
+ setState(482);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(483);
+ classBody();
+ }
+ break;
+ case 2:
+ {
+ setState(487);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(484);
+ match(NL);
+ }
+ }
+ setState(489);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(490);
+ enumClassBody();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class PrimaryConstructorContext extends ParserRuleContext {
+ public ClassParametersContext classParameters() {
+ return getRuleContext(ClassParametersContext.class,0);
+ }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public TerminalNode CONSTRUCTOR() { return getToken(KotlinParser.CONSTRUCTOR, 0); }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public PrimaryConstructorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryConstructor; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterPrimaryConstructor(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitPrimaryConstructor(this);
+ }
+ }
+
+ public final PrimaryConstructorContext primaryConstructor() throws RecognitionException {
+ PrimaryConstructorContext _localctx = new PrimaryConstructorContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_primaryConstructor);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(494);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(493);
+ modifierList();
+ }
+ }
+
+ setState(503);
+ _la = _input.LA(1);
+ if (_la==CONSTRUCTOR) {
+ {
+ setState(496);
+ match(CONSTRUCTOR);
+ setState(500);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(497);
+ match(NL);
+ }
+ }
+ setState(502);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+
+ setState(505);
+ classParameters();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassParametersContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(KotlinParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(KotlinParser.RPAREN, 0); }
+ public List classParameter() {
+ return getRuleContexts(ClassParameterContext.class);
+ }
+ public ClassParameterContext classParameter(int i) {
+ return getRuleContext(ClassParameterContext.class,i);
+ }
+ public List COMMA() { return getTokens(KotlinParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(KotlinParser.COMMA, i);
+ }
+ public ClassParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classParameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterClassParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitClassParameters(this);
+ }
+ }
+
+ public final ClassParametersContext classParameters() throws RecognitionException {
+ ClassParametersContext _localctx = new ClassParametersContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_classParameters);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(507);
+ match(LPAREN);
+ setState(519);
+ _la = _input.LA(1);
+ if (((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (AT - 40)) | (1L << (FILE - 40)) | (1L << (IMPORT - 40)) | (1L << (VAL - 40)) | (1L << (VAR - 40)) | (1L << (CONSTRUCTOR - 40)) | (1L << (BY - 40)) | (1L << (COMPANION - 40)) | (1L << (INIT - 40)) | (1L << (WHERE - 40)) | (1L << (CATCH - 40)) | (1L << (FINALLY - 40)) | (1L << (IN - 40)) | (1L << (OUT - 40)) | (1L << (FIELD - 40)) | (1L << (PROPERTY - 40)) | (1L << (GET - 40)) | (1L << (SET - 40)) | (1L << (GETTER - 40)) | (1L << (SETTER - 40)) | (1L << (RECEIVER - 40)) | (1L << (PARAM - 40)) | (1L << (SETPARAM - 40)) | (1L << (DELEGATE - 40)) | (1L << (DYNAMIC - 40)))) != 0) || ((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (PUBLIC - 104)) | (1L << (PRIVATE - 104)) | (1L << (PROTECTED - 104)) | (1L << (INTERNAL - 104)) | (1L << (ENUM - 104)) | (1L << (SEALED - 104)) | (1L << (ANNOTATION - 104)) | (1L << (DATA - 104)) | (1L << (INNER - 104)) | (1L << (TAILREC - 104)) | (1L << (OPERATOR - 104)) | (1L << (INLINE - 104)) | (1L << (INFIX - 104)) | (1L << (EXTERNAL - 104)) | (1L << (SUSPEND - 104)) | (1L << (OVERRIDE - 104)) | (1L << (ABSTRACT - 104)) | (1L << (FINAL - 104)) | (1L << (OPEN - 104)) | (1L << (CONST - 104)) | (1L << (LATEINIT - 104)) | (1L << (VARARG - 104)) | (1L << (NOINLINE - 104)) | (1L << (CROSSINLINE - 104)) | (1L << (REIFIED - 104)) | (1L << (Identifier - 104)) | (1L << (LabelReference - 104)))) != 0)) {
+ {
+ setState(508);
+ classParameter();
+ setState(513);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,42,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(509);
+ match(COMMA);
+ setState(510);
+ classParameter();
+ }
+ }
+ }
+ setState(515);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,42,_ctx);
+ }
+ setState(517);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(516);
+ match(COMMA);
+ }
+ }
+
+ }
+ }
+
+ setState(521);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassParameterContext extends ParserRuleContext {
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(KotlinParser.COLON, 0); }
+ public TypeContext type() {
+ return getRuleContext(TypeContext.class,0);
+ }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public TerminalNode ASSIGNMENT() { return getToken(KotlinParser.ASSIGNMENT, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode VAL() { return getToken(KotlinParser.VAL, 0); }
+ public TerminalNode VAR() { return getToken(KotlinParser.VAR, 0); }
+ public ClassParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterClassParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitClassParameter(this);
+ }
+ }
+
+ public final ClassParameterContext classParameter() throws RecognitionException {
+ ClassParameterContext _localctx = new ClassParameterContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_classParameter);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(524);
+ switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
+ case 1:
+ {
+ setState(523);
+ modifierList();
+ }
+ break;
+ }
+ setState(527);
+ _la = _input.LA(1);
+ if (_la==VAL || _la==VAR) {
+ {
+ setState(526);
+ _la = _input.LA(1);
+ if ( !(_la==VAL || _la==VAR) ) {
+ _errHandler.recoverInline(this);
+ } else {
+ consume();
+ }
+ }
+ }
+
+ setState(529);
+ simpleIdentifier();
+ setState(530);
+ match(COLON);
+ setState(531);
+ type();
+ setState(534);
+ _la = _input.LA(1);
+ if (_la==ASSIGNMENT) {
+ {
+ setState(532);
+ match(ASSIGNMENT);
+ setState(533);
+ expression();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class DelegationSpecifiersContext extends ParserRuleContext {
+ public List delegationSpecifier() {
+ return getRuleContexts(DelegationSpecifierContext.class);
+ }
+ public DelegationSpecifierContext delegationSpecifier(int i) {
+ return getRuleContext(DelegationSpecifierContext.class,i);
+ }
+ public List annotations() {
+ return getRuleContexts(AnnotationsContext.class);
+ }
+ public AnnotationsContext annotations(int i) {
+ return getRuleContext(AnnotationsContext.class,i);
+ }
+ public List COMMA() { return getTokens(KotlinParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(KotlinParser.COMMA, i);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public DelegationSpecifiersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_delegationSpecifiers; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterDelegationSpecifiers(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitDelegationSpecifiers(this);
+ }
+ }
+
+ public final DelegationSpecifiersContext delegationSpecifiers() throws RecognitionException {
+ DelegationSpecifiersContext _localctx = new DelegationSpecifiersContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_delegationSpecifiers);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(539);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT || _la==FILE || ((((_la - 93)) & ~0x3f) == 0 && ((1L << (_la - 93)) & ((1L << (FIELD - 93)) | (1L << (PROPERTY - 93)) | (1L << (GET - 93)) | (1L << (SET - 93)) | (1L << (RECEIVER - 93)) | (1L << (PARAM - 93)) | (1L << (SETPARAM - 93)) | (1L << (DELEGATE - 93)) | (1L << (LabelReference - 93)))) != 0)) {
+ {
+ {
+ setState(536);
+ annotations();
+ }
+ }
+ setState(541);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(542);
+ delegationSpecifier();
+ setState(565);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,52,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(546);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(543);
+ match(NL);
+ }
+ }
+ setState(548);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(549);
+ match(COMMA);
+ setState(553);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(550);
+ match(NL);
+ }
+ }
+ setState(555);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(559);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT || _la==FILE || ((((_la - 93)) & ~0x3f) == 0 && ((1L << (_la - 93)) & ((1L << (FIELD - 93)) | (1L << (PROPERTY - 93)) | (1L << (GET - 93)) | (1L << (SET - 93)) | (1L << (RECEIVER - 93)) | (1L << (PARAM - 93)) | (1L << (SETPARAM - 93)) | (1L << (DELEGATE - 93)) | (1L << (LabelReference - 93)))) != 0)) {
+ {
+ {
+ setState(556);
+ annotations();
+ }
+ }
+ setState(561);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(562);
+ delegationSpecifier();
+ }
+ }
+ }
+ setState(567);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,52,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class DelegationSpecifierContext extends ParserRuleContext {
+ public ConstructorInvocationContext constructorInvocation() {
+ return getRuleContext(ConstructorInvocationContext.class,0);
+ }
+ public UserTypeContext userType() {
+ return getRuleContext(UserTypeContext.class,0);
+ }
+ public ExplicitDelegationContext explicitDelegation() {
+ return getRuleContext(ExplicitDelegationContext.class,0);
+ }
+ public DelegationSpecifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_delegationSpecifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterDelegationSpecifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitDelegationSpecifier(this);
+ }
+ }
+
+ public final DelegationSpecifierContext delegationSpecifier() throws RecognitionException {
+ DelegationSpecifierContext _localctx = new DelegationSpecifierContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_delegationSpecifier);
+ try {
+ setState(571);
+ switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(568);
+ constructorInvocation();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(569);
+ userType();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(570);
+ explicitDelegation();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ConstructorInvocationContext extends ParserRuleContext {
+ public UserTypeContext userType() {
+ return getRuleContext(UserTypeContext.class,0);
+ }
+ public CallSuffixContext callSuffix() {
+ return getRuleContext(CallSuffixContext.class,0);
+ }
+ public ConstructorInvocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constructorInvocation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterConstructorInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitConstructorInvocation(this);
+ }
+ }
+
+ public final ConstructorInvocationContext constructorInvocation() throws RecognitionException {
+ ConstructorInvocationContext _localctx = new ConstructorInvocationContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_constructorInvocation);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(573);
+ userType();
+ setState(574);
+ callSuffix();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ExplicitDelegationContext extends ParserRuleContext {
+ public UserTypeContext userType() {
+ return getRuleContext(UserTypeContext.class,0);
+ }
+ public TerminalNode BY() { return getToken(KotlinParser.BY, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public ExplicitDelegationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_explicitDelegation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterExplicitDelegation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitExplicitDelegation(this);
+ }
+ }
+
+ public final ExplicitDelegationContext explicitDelegation() throws RecognitionException {
+ ExplicitDelegationContext _localctx = new ExplicitDelegationContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_explicitDelegation);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(576);
+ userType();
+ setState(580);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(577);
+ match(NL);
+ }
+ }
+ setState(582);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(583);
+ match(BY);
+ setState(587);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,55,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(584);
+ match(NL);
+ }
+ }
+ }
+ setState(589);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,55,_ctx);
+ }
+ setState(590);
+ expression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassBodyContext extends ParserRuleContext {
+ public TerminalNode LCURL() { return getToken(KotlinParser.LCURL, 0); }
+ public TerminalNode RCURL() { return getToken(KotlinParser.RCURL, 0); }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public List classMemberDeclaration() {
+ return getRuleContexts(ClassMemberDeclarationContext.class);
+ }
+ public ClassMemberDeclarationContext classMemberDeclaration(int i) {
+ return getRuleContext(ClassMemberDeclarationContext.class,i);
+ }
+ public ClassBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterClassBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitClassBody(this);
+ }
+ }
+
+ public final ClassBodyContext classBody() throws RecognitionException {
+ ClassBodyContext _localctx = new ClassBodyContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_classBody);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(592);
+ match(LCURL);
+ setState(596);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,56,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(593);
+ match(NL);
+ }
+ }
+ }
+ setState(598);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,56,_ctx);
+ }
+ setState(602);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (AT - 40)) | (1L << (FILE - 40)) | (1L << (CLASS - 40)) | (1L << (INTERFACE - 40)) | (1L << (FUN - 40)) | (1L << (OBJECT - 40)) | (1L << (VAL - 40)) | (1L << (VAR - 40)) | (1L << (TYPE_ALIAS - 40)) | (1L << (CONSTRUCTOR - 40)) | (1L << (COMPANION - 40)) | (1L << (INIT - 40)) | (1L << (IN - 40)) | (1L << (OUT - 40)) | (1L << (FIELD - 40)) | (1L << (PROPERTY - 40)) | (1L << (GET - 40)) | (1L << (SET - 40)) | (1L << (RECEIVER - 40)) | (1L << (PARAM - 40)) | (1L << (SETPARAM - 40)) | (1L << (DELEGATE - 40)))) != 0) || ((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (PUBLIC - 104)) | (1L << (PRIVATE - 104)) | (1L << (PROTECTED - 104)) | (1L << (INTERNAL - 104)) | (1L << (ENUM - 104)) | (1L << (SEALED - 104)) | (1L << (ANNOTATION - 104)) | (1L << (DATA - 104)) | (1L << (INNER - 104)) | (1L << (TAILREC - 104)) | (1L << (OPERATOR - 104)) | (1L << (INLINE - 104)) | (1L << (INFIX - 104)) | (1L << (EXTERNAL - 104)) | (1L << (SUSPEND - 104)) | (1L << (OVERRIDE - 104)) | (1L << (ABSTRACT - 104)) | (1L << (FINAL - 104)) | (1L << (OPEN - 104)) | (1L << (CONST - 104)) | (1L << (LATEINIT - 104)) | (1L << (VARARG - 104)) | (1L << (NOINLINE - 104)) | (1L << (CROSSINLINE - 104)) | (1L << (REIFIED - 104)) | (1L << (LabelReference - 104)))) != 0)) {
+ {
+ {
+ setState(599);
+ classMemberDeclaration();
+ }
+ }
+ setState(604);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(608);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(605);
+ match(NL);
+ }
+ }
+ setState(610);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(611);
+ match(RCURL);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ClassMemberDeclarationContext extends ParserRuleContext {
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public FunctionDeclarationContext functionDeclaration() {
+ return getRuleContext(FunctionDeclarationContext.class,0);
+ }
+ public ObjectDeclarationContext objectDeclaration() {
+ return getRuleContext(ObjectDeclarationContext.class,0);
+ }
+ public CompanionObjectContext companionObject() {
+ return getRuleContext(CompanionObjectContext.class,0);
+ }
+ public PropertyDeclarationContext propertyDeclaration() {
+ return getRuleContext(PropertyDeclarationContext.class,0);
+ }
+ public AnonymousInitializerContext anonymousInitializer() {
+ return getRuleContext(AnonymousInitializerContext.class,0);
+ }
+ public SecondaryConstructorContext secondaryConstructor() {
+ return getRuleContext(SecondaryConstructorContext.class,0);
+ }
+ public TypeAliasContext typeAlias() {
+ return getRuleContext(TypeAliasContext.class,0);
+ }
+ public List anysemi() {
+ return getRuleContexts(AnysemiContext.class);
+ }
+ public AnysemiContext anysemi(int i) {
+ return getRuleContext(AnysemiContext.class,i);
+ }
+ public ClassMemberDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classMemberDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterClassMemberDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitClassMemberDeclaration(this);
+ }
+ }
+
+ public final ClassMemberDeclarationContext classMemberDeclaration() throws RecognitionException {
+ ClassMemberDeclarationContext _localctx = new ClassMemberDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_classMemberDeclaration);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(621);
+ switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
+ case 1:
+ {
+ setState(613);
+ classDeclaration();
+ }
+ break;
+ case 2:
+ {
+ setState(614);
+ functionDeclaration();
+ }
+ break;
+ case 3:
+ {
+ setState(615);
+ objectDeclaration();
+ }
+ break;
+ case 4:
+ {
+ setState(616);
+ companionObject();
+ }
+ break;
+ case 5:
+ {
+ setState(617);
+ propertyDeclaration();
+ }
+ break;
+ case 6:
+ {
+ setState(618);
+ anonymousInitializer();
+ }
+ break;
+ case 7:
+ {
+ setState(619);
+ secondaryConstructor();
+ }
+ break;
+ case 8:
+ {
+ setState(620);
+ typeAlias();
+ }
+ break;
+ }
+ setState(624);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(623);
+ anysemi();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(626);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,60,_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 AnonymousInitializerContext extends ParserRuleContext {
+ public TerminalNode INIT() { return getToken(KotlinParser.INIT, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public AnonymousInitializerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_anonymousInitializer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterAnonymousInitializer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitAnonymousInitializer(this);
+ }
+ }
+
+ public final AnonymousInitializerContext anonymousInitializer() throws RecognitionException {
+ AnonymousInitializerContext _localctx = new AnonymousInitializerContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_anonymousInitializer);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(628);
+ match(INIT);
+ setState(632);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(629);
+ match(NL);
+ }
+ }
+ setState(634);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(635);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class SecondaryConstructorContext extends ParserRuleContext {
+ public TerminalNode CONSTRUCTOR() { return getToken(KotlinParser.CONSTRUCTOR, 0); }
+ public FunctionValueParametersContext functionValueParameters() {
+ return getRuleContext(FunctionValueParametersContext.class,0);
+ }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public TerminalNode COLON() { return getToken(KotlinParser.COLON, 0); }
+ public ConstructorDelegationCallContext constructorDelegationCall() {
+ return getRuleContext(ConstructorDelegationCallContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public SecondaryConstructorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_secondaryConstructor; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterSecondaryConstructor(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitSecondaryConstructor(this);
+ }
+ }
+
+ public final SecondaryConstructorContext secondaryConstructor() throws RecognitionException {
+ SecondaryConstructorContext _localctx = new SecondaryConstructorContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_secondaryConstructor);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(638);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(637);
+ modifierList();
+ }
+ }
+
+ setState(640);
+ match(CONSTRUCTOR);
+ setState(644);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(641);
+ match(NL);
+ }
+ }
+ setState(646);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(647);
+ functionValueParameters();
+ setState(662);
+ switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) {
+ case 1:
+ {
+ setState(651);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(648);
+ match(NL);
+ }
+ }
+ setState(653);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(654);
+ match(COLON);
+ setState(658);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(655);
+ match(NL);
+ }
+ }
+ setState(660);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(661);
+ constructorDelegationCall();
+ }
+ break;
+ }
+ setState(667);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,67,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(664);
+ match(NL);
+ }
+ }
+ }
+ setState(669);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,67,_ctx);
+ }
+ setState(671);
+ _la = _input.LA(1);
+ if (_la==LCURL) {
+ {
+ setState(670);
+ block();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ConstructorDelegationCallContext extends ParserRuleContext {
+ public TerminalNode THIS() { return getToken(KotlinParser.THIS, 0); }
+ public ValueArgumentsContext valueArguments() {
+ return getRuleContext(ValueArgumentsContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public TerminalNode SUPER() { return getToken(KotlinParser.SUPER, 0); }
+ public ConstructorDelegationCallContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constructorDelegationCall; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterConstructorDelegationCall(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitConstructorDelegationCall(this);
+ }
+ }
+
+ public final ConstructorDelegationCallContext constructorDelegationCall() throws RecognitionException {
+ ConstructorDelegationCallContext _localctx = new ConstructorDelegationCallContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_constructorDelegationCall);
+ int _la;
+ try {
+ setState(689);
+ switch (_input.LA(1)) {
+ case THIS:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(673);
+ match(THIS);
+ setState(677);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(674);
+ match(NL);
+ }
+ }
+ setState(679);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(680);
+ valueArguments();
+ }
+ break;
+ case SUPER:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(681);
+ match(SUPER);
+ setState(685);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(682);
+ match(NL);
+ }
+ }
+ setState(687);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(688);
+ valueArguments();
+ }
+ 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 EnumClassBodyContext extends ParserRuleContext {
+ public TerminalNode LCURL() { return getToken(KotlinParser.LCURL, 0); }
+ public TerminalNode RCURL() { return getToken(KotlinParser.RCURL, 0); }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public EnumEntriesContext enumEntries() {
+ return getRuleContext(EnumEntriesContext.class,0);
+ }
+ public TerminalNode SEMICOLON() { return getToken(KotlinParser.SEMICOLON, 0); }
+ public List classMemberDeclaration() {
+ return getRuleContexts(ClassMemberDeclarationContext.class);
+ }
+ public ClassMemberDeclarationContext classMemberDeclaration(int i) {
+ return getRuleContext(ClassMemberDeclarationContext.class,i);
+ }
+ public EnumClassBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumClassBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterEnumClassBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitEnumClassBody(this);
+ }
+ }
+
+ public final EnumClassBodyContext enumClassBody() throws RecognitionException {
+ EnumClassBodyContext _localctx = new EnumClassBodyContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_enumClassBody);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(691);
+ match(LCURL);
+ setState(695);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,72,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(692);
+ match(NL);
+ }
+ }
+ }
+ setState(697);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,72,_ctx);
+ }
+ setState(699);
+ _la = _input.LA(1);
+ if (((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (AT - 40)) | (1L << (FILE - 40)) | (1L << (IMPORT - 40)) | (1L << (CONSTRUCTOR - 40)) | (1L << (BY - 40)) | (1L << (COMPANION - 40)) | (1L << (INIT - 40)) | (1L << (WHERE - 40)) | (1L << (CATCH - 40)) | (1L << (FINALLY - 40)) | (1L << (OUT - 40)) | (1L << (FIELD - 40)) | (1L << (PROPERTY - 40)) | (1L << (GET - 40)) | (1L << (SET - 40)) | (1L << (GETTER - 40)) | (1L << (SETTER - 40)) | (1L << (RECEIVER - 40)) | (1L << (PARAM - 40)) | (1L << (SETPARAM - 40)) | (1L << (DELEGATE - 40)) | (1L << (DYNAMIC - 40)))) != 0) || ((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (PUBLIC - 104)) | (1L << (PRIVATE - 104)) | (1L << (PROTECTED - 104)) | (1L << (INTERNAL - 104)) | (1L << (ENUM - 104)) | (1L << (SEALED - 104)) | (1L << (ANNOTATION - 104)) | (1L << (DATA - 104)) | (1L << (INNER - 104)) | (1L << (TAILREC - 104)) | (1L << (OPERATOR - 104)) | (1L << (INLINE - 104)) | (1L << (INFIX - 104)) | (1L << (EXTERNAL - 104)) | (1L << (SUSPEND - 104)) | (1L << (OVERRIDE - 104)) | (1L << (ABSTRACT - 104)) | (1L << (FINAL - 104)) | (1L << (OPEN - 104)) | (1L << (CONST - 104)) | (1L << (LATEINIT - 104)) | (1L << (VARARG - 104)) | (1L << (NOINLINE - 104)) | (1L << (CROSSINLINE - 104)) | (1L << (REIFIED - 104)) | (1L << (Identifier - 104)) | (1L << (LabelReference - 104)))) != 0)) {
+ {
+ setState(698);
+ enumEntries();
+ }
+ }
+
+ setState(720);
+ switch ( getInterpreter().adaptivePredict(_input,77,_ctx) ) {
+ case 1:
+ {
+ setState(704);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(701);
+ match(NL);
+ }
+ }
+ setState(706);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(707);
+ match(SEMICOLON);
+ setState(711);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,75,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(708);
+ match(NL);
+ }
+ }
+ }
+ setState(713);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,75,_ctx);
+ }
+ setState(717);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (AT - 40)) | (1L << (FILE - 40)) | (1L << (CLASS - 40)) | (1L << (INTERFACE - 40)) | (1L << (FUN - 40)) | (1L << (OBJECT - 40)) | (1L << (VAL - 40)) | (1L << (VAR - 40)) | (1L << (TYPE_ALIAS - 40)) | (1L << (CONSTRUCTOR - 40)) | (1L << (COMPANION - 40)) | (1L << (INIT - 40)) | (1L << (IN - 40)) | (1L << (OUT - 40)) | (1L << (FIELD - 40)) | (1L << (PROPERTY - 40)) | (1L << (GET - 40)) | (1L << (SET - 40)) | (1L << (RECEIVER - 40)) | (1L << (PARAM - 40)) | (1L << (SETPARAM - 40)) | (1L << (DELEGATE - 40)))) != 0) || ((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (PUBLIC - 104)) | (1L << (PRIVATE - 104)) | (1L << (PROTECTED - 104)) | (1L << (INTERNAL - 104)) | (1L << (ENUM - 104)) | (1L << (SEALED - 104)) | (1L << (ANNOTATION - 104)) | (1L << (DATA - 104)) | (1L << (INNER - 104)) | (1L << (TAILREC - 104)) | (1L << (OPERATOR - 104)) | (1L << (INLINE - 104)) | (1L << (INFIX - 104)) | (1L << (EXTERNAL - 104)) | (1L << (SUSPEND - 104)) | (1L << (OVERRIDE - 104)) | (1L << (ABSTRACT - 104)) | (1L << (FINAL - 104)) | (1L << (OPEN - 104)) | (1L << (CONST - 104)) | (1L << (LATEINIT - 104)) | (1L << (VARARG - 104)) | (1L << (NOINLINE - 104)) | (1L << (CROSSINLINE - 104)) | (1L << (REIFIED - 104)) | (1L << (LabelReference - 104)))) != 0)) {
+ {
+ {
+ setState(714);
+ classMemberDeclaration();
+ }
+ }
+ setState(719);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ break;
+ }
+ setState(725);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(722);
+ match(NL);
+ }
+ }
+ setState(727);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(728);
+ match(RCURL);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class EnumEntriesContext extends ParserRuleContext {
+ public List enumEntry() {
+ return getRuleContexts(EnumEntryContext.class);
+ }
+ public EnumEntryContext enumEntry(int i) {
+ return getRuleContext(EnumEntryContext.class,i);
+ }
+ public TerminalNode SEMICOLON() { return getToken(KotlinParser.SEMICOLON, 0); }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public EnumEntriesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumEntries; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterEnumEntries(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitEnumEntries(this);
+ }
+ }
+
+ public final EnumEntriesContext enumEntries() throws RecognitionException {
+ EnumEntriesContext _localctx = new EnumEntriesContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_enumEntries);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(737);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(730);
+ enumEntry();
+ setState(734);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,79,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(731);
+ match(NL);
+ }
+ }
+ }
+ setState(736);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,79,_ctx);
+ }
+ }
+ }
+ setState(739);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( ((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (AT - 40)) | (1L << (FILE - 40)) | (1L << (IMPORT - 40)) | (1L << (CONSTRUCTOR - 40)) | (1L << (BY - 40)) | (1L << (COMPANION - 40)) | (1L << (INIT - 40)) | (1L << (WHERE - 40)) | (1L << (CATCH - 40)) | (1L << (FINALLY - 40)) | (1L << (OUT - 40)) | (1L << (FIELD - 40)) | (1L << (PROPERTY - 40)) | (1L << (GET - 40)) | (1L << (SET - 40)) | (1L << (GETTER - 40)) | (1L << (SETTER - 40)) | (1L << (RECEIVER - 40)) | (1L << (PARAM - 40)) | (1L << (SETPARAM - 40)) | (1L << (DELEGATE - 40)) | (1L << (DYNAMIC - 40)))) != 0) || ((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (PUBLIC - 104)) | (1L << (PRIVATE - 104)) | (1L << (PROTECTED - 104)) | (1L << (INTERNAL - 104)) | (1L << (ENUM - 104)) | (1L << (SEALED - 104)) | (1L << (ANNOTATION - 104)) | (1L << (DATA - 104)) | (1L << (INNER - 104)) | (1L << (TAILREC - 104)) | (1L << (OPERATOR - 104)) | (1L << (INLINE - 104)) | (1L << (INFIX - 104)) | (1L << (EXTERNAL - 104)) | (1L << (SUSPEND - 104)) | (1L << (OVERRIDE - 104)) | (1L << (ABSTRACT - 104)) | (1L << (FINAL - 104)) | (1L << (OPEN - 104)) | (1L << (CONST - 104)) | (1L << (LATEINIT - 104)) | (1L << (VARARG - 104)) | (1L << (NOINLINE - 104)) | (1L << (CROSSINLINE - 104)) | (1L << (REIFIED - 104)) | (1L << (Identifier - 104)) | (1L << (LabelReference - 104)))) != 0) );
+ setState(742);
+ switch ( getInterpreter().adaptivePredict(_input,81,_ctx) ) {
+ case 1:
+ {
+ setState(741);
+ match(SEMICOLON);
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class EnumEntryContext extends ParserRuleContext {
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public List annotations() {
+ return getRuleContexts(AnnotationsContext.class);
+ }
+ public AnnotationsContext annotations(int i) {
+ return getRuleContext(AnnotationsContext.class,i);
+ }
+ public ValueArgumentsContext valueArguments() {
+ return getRuleContext(ValueArgumentsContext.class,0);
+ }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public TerminalNode COMMA() { return getToken(KotlinParser.COMMA, 0); }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public EnumEntryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumEntry; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterEnumEntry(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitEnumEntry(this);
+ }
+ }
+
+ public final EnumEntryContext enumEntry() throws RecognitionException {
+ EnumEntryContext _localctx = new EnumEntryContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_enumEntry);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(747);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT || _la==FILE || ((((_la - 93)) & ~0x3f) == 0 && ((1L << (_la - 93)) & ((1L << (FIELD - 93)) | (1L << (PROPERTY - 93)) | (1L << (GET - 93)) | (1L << (SET - 93)) | (1L << (RECEIVER - 93)) | (1L << (PARAM - 93)) | (1L << (SETPARAM - 93)) | (1L << (DELEGATE - 93)) | (1L << (LabelReference - 93)))) != 0)) {
+ {
+ {
+ setState(744);
+ annotations();
+ }
+ }
+ setState(749);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(750);
+ simpleIdentifier();
+ setState(758);
+ switch ( getInterpreter().adaptivePredict(_input,84,_ctx) ) {
+ case 1:
+ {
+ setState(754);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(751);
+ match(NL);
+ }
+ }
+ setState(756);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(757);
+ valueArguments();
+ }
+ break;
+ }
+ setState(767);
+ switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) {
+ case 1:
+ {
+ setState(763);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(760);
+ match(NL);
+ }
+ }
+ setState(765);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(766);
+ classBody();
+ }
+ break;
+ }
+ setState(776);
+ switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) {
+ case 1:
+ {
+ setState(772);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(769);
+ match(NL);
+ }
+ }
+ setState(774);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(775);
+ match(COMMA);
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FunctionDeclarationContext extends ParserRuleContext {
+ public TerminalNode FUN() { return getToken(KotlinParser.FUN, 0); }
+ public FunctionValueParametersContext functionValueParameters() {
+ return getRuleContext(FunctionValueParametersContext.class,0);
+ }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public List type() {
+ return getRuleContexts(TypeContext.class);
+ }
+ public TypeContext type(int i) {
+ return getRuleContext(TypeContext.class,i);
+ }
+ public List DOT() { return getTokens(KotlinParser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(KotlinParser.DOT, i);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public ReceiverTypeContext receiverType() {
+ return getRuleContext(ReceiverTypeContext.class,0);
+ }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public TerminalNode COLON() { return getToken(KotlinParser.COLON, 0); }
+ public TypeConstraintsContext typeConstraints() {
+ return getRuleContext(TypeConstraintsContext.class,0);
+ }
+ public FunctionBodyContext functionBody() {
+ return getRuleContext(FunctionBodyContext.class,0);
+ }
+ public FunctionDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterFunctionDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitFunctionDeclaration(this);
+ }
+ }
+
+ public final FunctionDeclarationContext functionDeclaration() throws RecognitionException {
+ FunctionDeclarationContext _localctx = new FunctionDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 52, RULE_functionDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(779);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(778);
+ modifierList();
+ }
+ }
+
+ setState(781);
+ match(FUN);
+ setState(797);
+ switch ( getInterpreter().adaptivePredict(_input,92,_ctx) ) {
+ case 1:
+ {
+ setState(785);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(782);
+ match(NL);
+ }
+ }
+ setState(787);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(788);
+ type();
+ setState(792);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(789);
+ match(NL);
+ }
+ }
+ setState(794);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(795);
+ match(DOT);
+ }
+ break;
+ }
+ setState(806);
+ switch ( getInterpreter().adaptivePredict(_input,94,_ctx) ) {
+ case 1:
+ {
+ setState(802);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(799);
+ match(NL);
+ }
+ }
+ setState(804);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(805);
+ typeParameters();
+ }
+ break;
+ }
+ setState(823);
+ switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) {
+ case 1:
+ {
+ setState(811);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(808);
+ match(NL);
+ }
+ }
+ setState(813);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(814);
+ receiverType();
+ setState(818);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(815);
+ match(NL);
+ }
+ }
+ setState(820);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(821);
+ match(DOT);
+ }
+ break;
+ }
+ setState(832);
+ switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) {
+ case 1:
+ {
+ setState(828);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(825);
+ match(NL);
+ }
+ }
+ setState(830);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(831);
+ identifier();
+ }
+ break;
+ }
+ setState(837);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(834);
+ match(NL);
+ }
+ }
+ setState(839);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(840);
+ functionValueParameters();
+ setState(855);
+ switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) {
+ case 1:
+ {
+ setState(844);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(841);
+ match(NL);
+ }
+ }
+ setState(846);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(847);
+ match(COLON);
+ setState(851);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(848);
+ match(NL);
+ }
+ }
+ setState(853);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(854);
+ type();
+ }
+ break;
+ }
+ setState(864);
+ switch ( getInterpreter().adaptivePredict(_input,105,_ctx) ) {
+ case 1:
+ {
+ setState(860);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(857);
+ match(NL);
+ }
+ }
+ setState(862);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(863);
+ typeConstraints();
+ }
+ break;
+ }
+ setState(873);
+ switch ( getInterpreter().adaptivePredict(_input,107,_ctx) ) {
+ case 1:
+ {
+ setState(869);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(866);
+ match(NL);
+ }
+ }
+ setState(871);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(872);
+ functionBody();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FunctionValueParametersContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(KotlinParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(KotlinParser.RPAREN, 0); }
+ public List functionValueParameter() {
+ return getRuleContexts(FunctionValueParameterContext.class);
+ }
+ public FunctionValueParameterContext functionValueParameter(int i) {
+ return getRuleContext(FunctionValueParameterContext.class,i);
+ }
+ public List COMMA() { return getTokens(KotlinParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(KotlinParser.COMMA, i);
+ }
+ public FunctionValueParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionValueParameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterFunctionValueParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitFunctionValueParameters(this);
+ }
+ }
+
+ public final FunctionValueParametersContext functionValueParameters() throws RecognitionException {
+ FunctionValueParametersContext _localctx = new FunctionValueParametersContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_functionValueParameters);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(875);
+ match(LPAREN);
+ setState(887);
+ _la = _input.LA(1);
+ if (((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (AT - 40)) | (1L << (FILE - 40)) | (1L << (IMPORT - 40)) | (1L << (CONSTRUCTOR - 40)) | (1L << (BY - 40)) | (1L << (COMPANION - 40)) | (1L << (INIT - 40)) | (1L << (WHERE - 40)) | (1L << (CATCH - 40)) | (1L << (FINALLY - 40)) | (1L << (IN - 40)) | (1L << (OUT - 40)) | (1L << (FIELD - 40)) | (1L << (PROPERTY - 40)) | (1L << (GET - 40)) | (1L << (SET - 40)) | (1L << (GETTER - 40)) | (1L << (SETTER - 40)) | (1L << (RECEIVER - 40)) | (1L << (PARAM - 40)) | (1L << (SETPARAM - 40)) | (1L << (DELEGATE - 40)) | (1L << (DYNAMIC - 40)))) != 0) || ((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (PUBLIC - 104)) | (1L << (PRIVATE - 104)) | (1L << (PROTECTED - 104)) | (1L << (INTERNAL - 104)) | (1L << (ENUM - 104)) | (1L << (SEALED - 104)) | (1L << (ANNOTATION - 104)) | (1L << (DATA - 104)) | (1L << (INNER - 104)) | (1L << (TAILREC - 104)) | (1L << (OPERATOR - 104)) | (1L << (INLINE - 104)) | (1L << (INFIX - 104)) | (1L << (EXTERNAL - 104)) | (1L << (SUSPEND - 104)) | (1L << (OVERRIDE - 104)) | (1L << (ABSTRACT - 104)) | (1L << (FINAL - 104)) | (1L << (OPEN - 104)) | (1L << (CONST - 104)) | (1L << (LATEINIT - 104)) | (1L << (VARARG - 104)) | (1L << (NOINLINE - 104)) | (1L << (CROSSINLINE - 104)) | (1L << (REIFIED - 104)) | (1L << (Identifier - 104)) | (1L << (LabelReference - 104)))) != 0)) {
+ {
+ setState(876);
+ functionValueParameter();
+ setState(881);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,108,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(877);
+ match(COMMA);
+ setState(878);
+ functionValueParameter();
+ }
+ }
+ }
+ setState(883);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,108,_ctx);
+ }
+ setState(885);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(884);
+ match(COMMA);
+ }
+ }
+
+ }
+ }
+
+ setState(889);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FunctionValueParameterContext extends ParserRuleContext {
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public TerminalNode ASSIGNMENT() { return getToken(KotlinParser.ASSIGNMENT, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public FunctionValueParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionValueParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterFunctionValueParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitFunctionValueParameter(this);
+ }
+ }
+
+ public final FunctionValueParameterContext functionValueParameter() throws RecognitionException {
+ FunctionValueParameterContext _localctx = new FunctionValueParameterContext(_ctx, getState());
+ enterRule(_localctx, 56, RULE_functionValueParameter);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(892);
+ switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) {
+ case 1:
+ {
+ setState(891);
+ modifierList();
+ }
+ break;
+ }
+ setState(894);
+ parameter();
+ setState(897);
+ _la = _input.LA(1);
+ if (_la==ASSIGNMENT) {
+ {
+ setState(895);
+ match(ASSIGNMENT);
+ setState(896);
+ expression();
+ }
+ }
+
+ }
+ }
+ 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 SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(KotlinParser.COLON, 0); }
+ public TypeContext type() {
+ return getRuleContext(TypeContext.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 KotlinParserListener ) ((KotlinParserListener)listener).enterParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitParameter(this);
+ }
+ }
+
+ public final ParameterContext parameter() throws RecognitionException {
+ ParameterContext _localctx = new ParameterContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_parameter);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(899);
+ simpleIdentifier();
+ setState(900);
+ match(COLON);
+ setState(901);
+ type();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ReceiverTypeContext extends ParserRuleContext {
+ public ParenthesizedTypeContext parenthesizedType() {
+ return getRuleContext(ParenthesizedTypeContext.class,0);
+ }
+ public NullableTypeContext nullableType() {
+ return getRuleContext(NullableTypeContext.class,0);
+ }
+ public TypeReferenceContext typeReference() {
+ return getRuleContext(TypeReferenceContext.class,0);
+ }
+ public TypeModifierListContext typeModifierList() {
+ return getRuleContext(TypeModifierListContext.class,0);
+ }
+ public ReceiverTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_receiverType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterReceiverType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitReceiverType(this);
+ }
+ }
+
+ public final ReceiverTypeContext receiverType() throws RecognitionException {
+ ReceiverTypeContext _localctx = new ReceiverTypeContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_receiverType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(904);
+ switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) {
+ case 1:
+ {
+ setState(903);
+ typeModifierList();
+ }
+ break;
+ }
+ setState(909);
+ switch ( getInterpreter().adaptivePredict(_input,114,_ctx) ) {
+ case 1:
+ {
+ setState(906);
+ parenthesizedType();
+ }
+ break;
+ case 2:
+ {
+ setState(907);
+ nullableType();
+ }
+ break;
+ case 3:
+ {
+ setState(908);
+ typeReference();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class FunctionBodyContext extends ParserRuleContext {
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public TerminalNode ASSIGNMENT() { return getToken(KotlinParser.ASSIGNMENT, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public FunctionBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_functionBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterFunctionBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitFunctionBody(this);
+ }
+ }
+
+ public final FunctionBodyContext functionBody() throws RecognitionException {
+ FunctionBodyContext _localctx = new FunctionBodyContext(_ctx, getState());
+ enterRule(_localctx, 62, RULE_functionBody);
+ try {
+ int _alt;
+ setState(920);
+ switch (_input.LA(1)) {
+ case LCURL:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(911);
+ block();
+ }
+ break;
+ case ASSIGNMENT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(912);
+ match(ASSIGNMENT);
+ setState(916);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,115,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(913);
+ match(NL);
+ }
+ }
+ }
+ setState(918);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,115,_ctx);
+ }
+ setState(919);
+ expression();
+ }
+ 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 ObjectDeclarationContext extends ParserRuleContext {
+ public TerminalNode OBJECT() { return getToken(KotlinParser.OBJECT, 0); }
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public PrimaryConstructorContext primaryConstructor() {
+ return getRuleContext(PrimaryConstructorContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(KotlinParser.COLON, 0); }
+ public DelegationSpecifiersContext delegationSpecifiers() {
+ return getRuleContext(DelegationSpecifiersContext.class,0);
+ }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public ObjectDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_objectDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterObjectDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitObjectDeclaration(this);
+ }
+ }
+
+ public final ObjectDeclarationContext objectDeclaration() throws RecognitionException {
+ ObjectDeclarationContext _localctx = new ObjectDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 64, RULE_objectDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(923);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(922);
+ modifierList();
+ }
+ }
+
+ setState(925);
+ match(OBJECT);
+ setState(929);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(926);
+ match(NL);
+ }
+ }
+ setState(931);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(932);
+ simpleIdentifier();
+ setState(940);
+ switch ( getInterpreter().adaptivePredict(_input,120,_ctx) ) {
+ case 1:
+ {
+ setState(936);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(933);
+ match(NL);
+ }
+ }
+ setState(938);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(939);
+ primaryConstructor();
+ }
+ break;
+ }
+ setState(956);
+ switch ( getInterpreter().adaptivePredict(_input,123,_ctx) ) {
+ case 1:
+ {
+ setState(945);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(942);
+ match(NL);
+ }
+ }
+ setState(947);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(948);
+ match(COLON);
+ setState(952);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(949);
+ match(NL);
+ }
+ }
+ setState(954);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(955);
+ delegationSpecifiers();
+ }
+ break;
+ }
+ setState(965);
+ switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) {
+ case 1:
+ {
+ setState(961);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(958);
+ match(NL);
+ }
+ }
+ setState(963);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(964);
+ classBody();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class CompanionObjectContext extends ParserRuleContext {
+ public TerminalNode COMPANION() { return getToken(KotlinParser.COMPANION, 0); }
+ public TerminalNode OBJECT() { return getToken(KotlinParser.OBJECT, 0); }
+ public List modifierList() {
+ return getRuleContexts(ModifierListContext.class);
+ }
+ public ModifierListContext modifierList(int i) {
+ return getRuleContext(ModifierListContext.class,i);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(KotlinParser.COLON, 0); }
+ public DelegationSpecifiersContext delegationSpecifiers() {
+ return getRuleContext(DelegationSpecifiersContext.class,0);
+ }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public CompanionObjectContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_companionObject; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterCompanionObject(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitCompanionObject(this);
+ }
+ }
+
+ public final CompanionObjectContext companionObject() throws RecognitionException {
+ CompanionObjectContext _localctx = new CompanionObjectContext(_ctx, getState());
+ enterRule(_localctx, 66, RULE_companionObject);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(968);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(967);
+ modifierList();
+ }
+ }
+
+ setState(970);
+ match(COMPANION);
+ setState(974);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(971);
+ match(NL);
+ }
+ }
+ setState(976);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(978);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(977);
+ modifierList();
+ }
+ }
+
+ setState(980);
+ match(OBJECT);
+ setState(988);
+ switch ( getInterpreter().adaptivePredict(_input,130,_ctx) ) {
+ case 1:
+ {
+ setState(984);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(981);
+ match(NL);
+ }
+ }
+ setState(986);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(987);
+ simpleIdentifier();
+ }
+ break;
+ }
+ setState(1004);
+ switch ( getInterpreter().adaptivePredict(_input,133,_ctx) ) {
+ case 1:
+ {
+ setState(993);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(990);
+ match(NL);
+ }
+ }
+ setState(995);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(996);
+ match(COLON);
+ setState(1000);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(997);
+ match(NL);
+ }
+ }
+ setState(1002);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1003);
+ delegationSpecifiers();
+ }
+ break;
+ }
+ setState(1013);
+ switch ( getInterpreter().adaptivePredict(_input,135,_ctx) ) {
+ case 1:
+ {
+ setState(1009);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1006);
+ match(NL);
+ }
+ }
+ setState(1011);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1012);
+ classBody();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class PropertyDeclarationContext extends ParserRuleContext {
+ public TerminalNode VAL() { return getToken(KotlinParser.VAL, 0); }
+ public TerminalNode VAR() { return getToken(KotlinParser.VAR, 0); }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public TypeContext type() {
+ return getRuleContext(TypeContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(KotlinParser.DOT, 0); }
+ public TypeConstraintsContext typeConstraints() {
+ return getRuleContext(TypeConstraintsContext.class,0);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public GetterContext getter() {
+ return getRuleContext(GetterContext.class,0);
+ }
+ public SetterContext setter() {
+ return getRuleContext(SetterContext.class,0);
+ }
+ public MultiVariableDeclarationContext multiVariableDeclaration() {
+ return getRuleContext(MultiVariableDeclarationContext.class,0);
+ }
+ public VariableDeclarationContext variableDeclaration() {
+ return getRuleContext(VariableDeclarationContext.class,0);
+ }
+ public TerminalNode BY() { return getToken(KotlinParser.BY, 0); }
+ public TerminalNode ASSIGNMENT() { return getToken(KotlinParser.ASSIGNMENT, 0); }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public SemiContext semi() {
+ return getRuleContext(SemiContext.class,0);
+ }
+ public PropertyDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_propertyDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterPropertyDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitPropertyDeclaration(this);
+ }
+ }
+
+ public final PropertyDeclarationContext propertyDeclaration() throws RecognitionException {
+ PropertyDeclarationContext _localctx = new PropertyDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 68, RULE_propertyDeclaration);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1016);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(1015);
+ modifierList();
+ }
+ }
+
+ setState(1018);
+ _la = _input.LA(1);
+ if ( !(_la==VAL || _la==VAR) ) {
+ _errHandler.recoverInline(this);
+ } else {
+ consume();
+ }
+ setState(1026);
+ switch ( getInterpreter().adaptivePredict(_input,138,_ctx) ) {
+ case 1:
+ {
+ setState(1022);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1019);
+ match(NL);
+ }
+ }
+ setState(1024);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1025);
+ typeParameters();
+ }
+ break;
+ }
+ setState(1043);
+ switch ( getInterpreter().adaptivePredict(_input,141,_ctx) ) {
+ case 1:
+ {
+ setState(1031);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1028);
+ match(NL);
+ }
+ }
+ setState(1033);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1034);
+ type();
+ setState(1038);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1035);
+ match(NL);
+ }
+ }
+ setState(1040);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1041);
+ match(DOT);
+ }
+ break;
+ }
+ {
+ setState(1048);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1045);
+ match(NL);
+ }
+ }
+ setState(1050);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1053);
+ switch (_input.LA(1)) {
+ case LPAREN:
+ {
+ setState(1051);
+ multiVariableDeclaration();
+ }
+ break;
+ case IMPORT:
+ case CONSTRUCTOR:
+ case BY:
+ case COMPANION:
+ case INIT:
+ case WHERE:
+ case CATCH:
+ case FINALLY:
+ case OUT:
+ case GETTER:
+ case SETTER:
+ case DYNAMIC:
+ case PUBLIC:
+ case PRIVATE:
+ case PROTECTED:
+ case INTERNAL:
+ case ENUM:
+ case SEALED:
+ case ANNOTATION:
+ case DATA:
+ case INNER:
+ case TAILREC:
+ case OPERATOR:
+ case INLINE:
+ case INFIX:
+ case EXTERNAL:
+ case SUSPEND:
+ case OVERRIDE:
+ case ABSTRACT:
+ case FINAL:
+ case OPEN:
+ case CONST:
+ case LATEINIT:
+ case VARARG:
+ case NOINLINE:
+ case CROSSINLINE:
+ case REIFIED:
+ case Identifier:
+ {
+ setState(1052);
+ variableDeclaration();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ setState(1062);
+ switch ( getInterpreter().adaptivePredict(_input,145,_ctx) ) {
+ case 1:
+ {
+ setState(1058);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1055);
+ match(NL);
+ }
+ }
+ setState(1060);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1061);
+ typeConstraints();
+ }
+ break;
+ }
+ setState(1078);
+ switch ( getInterpreter().adaptivePredict(_input,148,_ctx) ) {
+ case 1:
+ {
+ setState(1067);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1064);
+ match(NL);
+ }
+ }
+ setState(1069);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1070);
+ _la = _input.LA(1);
+ if ( !(_la==ASSIGNMENT || _la==BY) ) {
+ _errHandler.recoverInline(this);
+ } else {
+ consume();
+ }
+ setState(1074);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,147,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1071);
+ match(NL);
+ }
+ }
+ }
+ setState(1076);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,147,_ctx);
+ }
+ setState(1077);
+ expression();
+ }
+ break;
+ }
+ setState(1104);
+ switch ( getInterpreter().adaptivePredict(_input,153,_ctx) ) {
+ case 1:
+ {
+ setState(1083);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1080);
+ match(NL);
+ }
+ }
+ setState(1085);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1086);
+ getter();
+ setState(1090);
+ switch ( getInterpreter().adaptivePredict(_input,150,_ctx) ) {
+ case 1:
+ {
+ setState(1087);
+ semi();
+ setState(1088);
+ setter();
+ }
+ break;
+ }
+ }
+ break;
+ case 2:
+ {
+ setState(1095);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1092);
+ match(NL);
+ }
+ }
+ setState(1097);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1098);
+ setter();
+ setState(1102);
+ switch ( getInterpreter().adaptivePredict(_input,152,_ctx) ) {
+ case 1:
+ {
+ setState(1099);
+ semi();
+ setState(1100);
+ getter();
+ }
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class MultiVariableDeclarationContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(KotlinParser.LPAREN, 0); }
+ public List variableDeclaration() {
+ return getRuleContexts(VariableDeclarationContext.class);
+ }
+ public VariableDeclarationContext variableDeclaration(int i) {
+ return getRuleContext(VariableDeclarationContext.class,i);
+ }
+ public TerminalNode RPAREN() { return getToken(KotlinParser.RPAREN, 0); }
+ public List COMMA() { return getTokens(KotlinParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(KotlinParser.COMMA, i);
+ }
+ public MultiVariableDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_multiVariableDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterMultiVariableDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitMultiVariableDeclaration(this);
+ }
+ }
+
+ public final MultiVariableDeclarationContext multiVariableDeclaration() throws RecognitionException {
+ MultiVariableDeclarationContext _localctx = new MultiVariableDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 70, RULE_multiVariableDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1106);
+ match(LPAREN);
+ setState(1107);
+ variableDeclaration();
+ setState(1112);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(1108);
+ match(COMMA);
+ setState(1109);
+ variableDeclaration();
+ }
+ }
+ setState(1114);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1115);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class VariableDeclarationContext extends ParserRuleContext {
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(KotlinParser.COLON, 0); }
+ public TypeContext type() {
+ return getRuleContext(TypeContext.class,0);
+ }
+ public VariableDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterVariableDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitVariableDeclaration(this);
+ }
+ }
+
+ public final VariableDeclarationContext variableDeclaration() throws RecognitionException {
+ VariableDeclarationContext _localctx = new VariableDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 72, RULE_variableDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1117);
+ simpleIdentifier();
+ setState(1120);
+ _la = _input.LA(1);
+ if (_la==COLON) {
+ {
+ setState(1118);
+ match(COLON);
+ setState(1119);
+ type();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class GetterContext extends ParserRuleContext {
+ public TerminalNode GETTER() { return getToken(KotlinParser.GETTER, 0); }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public TerminalNode LPAREN() { return getToken(KotlinParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(KotlinParser.RPAREN, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public TerminalNode ASSIGNMENT() { return getToken(KotlinParser.ASSIGNMENT, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public TerminalNode COLON() { return getToken(KotlinParser.COLON, 0); }
+ public TypeContext type() {
+ return getRuleContext(TypeContext.class,0);
+ }
+ public GetterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_getter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterGetter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitGetter(this);
+ }
+ }
+
+ public final GetterContext getter() throws RecognitionException {
+ GetterContext _localctx = new GetterContext(_ctx, getState());
+ enterRule(_localctx, 74, RULE_getter);
+ int _la;
+ try {
+ int _alt;
+ setState(1171);
+ switch ( getInterpreter().adaptivePredict(_input,165,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1123);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(1122);
+ modifierList();
+ }
+ }
+
+ setState(1125);
+ match(GETTER);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1127);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(1126);
+ modifierList();
+ }
+ }
+
+ setState(1129);
+ match(GETTER);
+ setState(1133);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1130);
+ match(NL);
+ }
+ }
+ setState(1135);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1136);
+ match(LPAREN);
+ setState(1137);
+ match(RPAREN);
+ setState(1152);
+ switch ( getInterpreter().adaptivePredict(_input,161,_ctx) ) {
+ case 1:
+ {
+ setState(1141);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1138);
+ match(NL);
+ }
+ }
+ setState(1143);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1144);
+ match(COLON);
+ setState(1148);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1145);
+ match(NL);
+ }
+ }
+ setState(1150);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1151);
+ type();
+ }
+ break;
+ }
+ setState(1157);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1154);
+ match(NL);
+ }
+ }
+ setState(1159);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1169);
+ switch (_input.LA(1)) {
+ case LCURL:
+ {
+ setState(1160);
+ block();
+ }
+ break;
+ case ASSIGNMENT:
+ {
+ setState(1161);
+ match(ASSIGNMENT);
+ setState(1165);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,163,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1162);
+ match(NL);
+ }
+ }
+ }
+ setState(1167);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,163,_ctx);
+ }
+ setState(1168);
+ expression();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class SetterContext extends ParserRuleContext {
+ public TerminalNode SETTER() { return getToken(KotlinParser.SETTER, 0); }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public TerminalNode LPAREN() { return getToken(KotlinParser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(KotlinParser.RPAREN, 0); }
+ public FunctionBodyContext functionBody() {
+ return getRuleContext(FunctionBodyContext.class,0);
+ }
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public List annotations() {
+ return getRuleContexts(AnnotationsContext.class);
+ }
+ public AnnotationsContext annotations(int i) {
+ return getRuleContext(AnnotationsContext.class,i);
+ }
+ public List parameterModifier() {
+ return getRuleContexts(ParameterModifierContext.class);
+ }
+ public ParameterModifierContext parameterModifier(int i) {
+ return getRuleContext(ParameterModifierContext.class,i);
+ }
+ public SetterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_setter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterSetter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitSetter(this);
+ }
+ }
+
+ public final SetterContext setter() throws RecognitionException {
+ SetterContext _localctx = new SetterContext(_ctx, getState());
+ enterRule(_localctx, 76, RULE_setter);
+ int _la;
+ try {
+ int _alt;
+ setState(1208);
+ switch ( getInterpreter().adaptivePredict(_input,173,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1174);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(1173);
+ modifierList();
+ }
+ }
+
+ setState(1176);
+ match(SETTER);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1178);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(1177);
+ modifierList();
+ }
+ }
+
+ setState(1180);
+ match(SETTER);
+ setState(1184);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1181);
+ match(NL);
+ }
+ }
+ setState(1186);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1187);
+ match(LPAREN);
+ setState(1192);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,170,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ setState(1190);
+ switch (_input.LA(1)) {
+ case AT:
+ case FILE:
+ case FIELD:
+ case PROPERTY:
+ case GET:
+ case SET:
+ case RECEIVER:
+ case PARAM:
+ case SETPARAM:
+ case DELEGATE:
+ case LabelReference:
+ {
+ setState(1188);
+ annotations();
+ }
+ break;
+ case VARARG:
+ case NOINLINE:
+ case CROSSINLINE:
+ {
+ setState(1189);
+ parameterModifier();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ setState(1194);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,170,_ctx);
+ }
+ setState(1197);
+ switch ( getInterpreter().adaptivePredict(_input,171,_ctx) ) {
+ case 1:
+ {
+ setState(1195);
+ simpleIdentifier();
+ }
+ break;
+ case 2:
+ {
+ setState(1196);
+ parameter();
+ }
+ break;
+ }
+ setState(1199);
+ match(RPAREN);
+ setState(1203);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1200);
+ match(NL);
+ }
+ }
+ setState(1205);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1206);
+ functionBody();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeAliasContext extends ParserRuleContext {
+ public TerminalNode TYPE_ALIAS() { return getToken(KotlinParser.TYPE_ALIAS, 0); }
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public TerminalNode ASSIGNMENT() { return getToken(KotlinParser.ASSIGNMENT, 0); }
+ public TypeContext type() {
+ return getRuleContext(TypeContext.class,0);
+ }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public TypeAliasContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeAlias; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterTypeAlias(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitTypeAlias(this);
+ }
+ }
+
+ public final TypeAliasContext typeAlias() throws RecognitionException {
+ TypeAliasContext _localctx = new TypeAliasContext(_ctx, getState());
+ enterRule(_localctx, 78, RULE_typeAlias);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1211);
+ _la = _input.LA(1);
+ if (_la==AT || _la==FILE || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (IN - 89)) | (1L << (OUT - 89)) | (1L << (FIELD - 89)) | (1L << (PROPERTY - 89)) | (1L << (GET - 89)) | (1L << (SET - 89)) | (1L << (RECEIVER - 89)) | (1L << (PARAM - 89)) | (1L << (SETPARAM - 89)) | (1L << (DELEGATE - 89)) | (1L << (PUBLIC - 89)) | (1L << (PRIVATE - 89)) | (1L << (PROTECTED - 89)) | (1L << (INTERNAL - 89)) | (1L << (ENUM - 89)) | (1L << (SEALED - 89)) | (1L << (ANNOTATION - 89)) | (1L << (DATA - 89)) | (1L << (INNER - 89)) | (1L << (TAILREC - 89)) | (1L << (OPERATOR - 89)) | (1L << (INLINE - 89)) | (1L << (INFIX - 89)) | (1L << (EXTERNAL - 89)) | (1L << (SUSPEND - 89)) | (1L << (OVERRIDE - 89)) | (1L << (ABSTRACT - 89)) | (1L << (FINAL - 89)) | (1L << (OPEN - 89)) | (1L << (CONST - 89)) | (1L << (LATEINIT - 89)) | (1L << (VARARG - 89)) | (1L << (NOINLINE - 89)) | (1L << (CROSSINLINE - 89)) | (1L << (REIFIED - 89)) | (1L << (LabelReference - 89)))) != 0)) {
+ {
+ setState(1210);
+ modifierList();
+ }
+ }
+
+ setState(1213);
+ match(TYPE_ALIAS);
+ setState(1217);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1214);
+ match(NL);
+ }
+ }
+ setState(1219);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1220);
+ simpleIdentifier();
+ setState(1228);
+ switch ( getInterpreter().adaptivePredict(_input,177,_ctx) ) {
+ case 1:
+ {
+ setState(1224);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1221);
+ match(NL);
+ }
+ }
+ setState(1226);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1227);
+ typeParameters();
+ }
+ break;
+ }
+ setState(1233);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1230);
+ match(NL);
+ }
+ }
+ setState(1235);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1236);
+ match(ASSIGNMENT);
+ setState(1240);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1237);
+ match(NL);
+ }
+ }
+ setState(1242);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1243);
+ type();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeParametersContext extends ParserRuleContext {
+ public TerminalNode LANGLE() { return getToken(KotlinParser.LANGLE, 0); }
+ public List typeParameter() {
+ return getRuleContexts(TypeParameterContext.class);
+ }
+ public TypeParameterContext typeParameter(int i) {
+ return getRuleContext(TypeParameterContext.class,i);
+ }
+ public TerminalNode RANGLE() { return getToken(KotlinParser.RANGLE, 0); }
+ public List NL() { return getTokens(KotlinParser.NL); }
+ public TerminalNode NL(int i) {
+ return getToken(KotlinParser.NL, i);
+ }
+ public List COMMA() { return getTokens(KotlinParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(KotlinParser.COMMA, i);
+ }
+ public TypeParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeParameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).enterTypeParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KotlinParserListener ) ((KotlinParserListener)listener).exitTypeParameters(this);
+ }
+ }
+
+ public final TypeParametersContext typeParameters() throws RecognitionException {
+ TypeParametersContext _localctx = new TypeParametersContext(_ctx, getState());
+ enterRule(_localctx, 80, RULE_typeParameters);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1245);
+ match(LANGLE);
+ setState(1249);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,180,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1246);
+ match(NL);
+ }
+ }
+ }
+ setState(1251);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,180,_ctx);
+ }
+ setState(1252);
+ typeParameter();
+ setState(1269);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,183,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1256);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1253);
+ match(NL);
+ }
+ }
+ setState(1258);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1259);
+ match(COMMA);
+ setState(1263);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,182,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1260);
+ match(NL);
+ }
+ }
+ }
+ setState(1265);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,182,_ctx);
+ }
+ setState(1266);
+ typeParameter();
+ }
+ }
+ }
+ setState(1271);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,183,_ctx);
+ }
+ setState(1279);
+ switch ( getInterpreter().adaptivePredict(_input,185,_ctx) ) {
+ case 1:
+ {
+ setState(1275);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1272);
+ match(NL);
+ }
+ }
+ setState(1277);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1278);
+ match(COMMA);
+ }
+ break;
+ }
+ setState(1284);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==NL) {
+ {
+ {
+ setState(1281);
+ match(NL);
+ }
+ }
+ setState(1286);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1287);
+ match(RANGLE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeParameterContext extends ParserRuleContext {
+ public SimpleIdentifierContext simpleIdentifier() {
+ return getRuleContext(SimpleIdentifierContext.class,0);
+ }
+ public TerminalNode MULT() { return getToken(KotlinParser.MULT, 0); }
+ public ModifierListContext modifierList() {
+ return getRuleContext(ModifierListContext.class,0);
+ }
+ public List