All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eolang.parser.EoParser Maven / Gradle / Ivy

The newest version!
// Generated from org/eolang/parser/Eo.g4 by ANTLR 4.13.1
package org.eolang.parser;
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", "CheckReturnValue"})
public class EoParser extends Parser {
	static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		COMMENTARY=1, META=2, ROOT=3, HOME=4, STAR=5, CONST=6, SLASH=7, COLON=8, 
		ARROW=9, XI=10, PLUS=11, MINUS=12, QUESTION=13, SPACE=14, DOT=15, LSQ=16, 
		RSQ=17, LB=18, RB=19, PHI=20, RHO=21, HASH=22, BAR=23, EOL=24, BYTES=25, 
		STRING=26, INT=27, FLOAT=28, HEX=29, NAME=30, TEXT=31, TAB=32, UNTAB=33;
	public static final int
		RULE_program = 0, RULE_eop = 1, RULE_license = 2, RULE_metas = 3, RULE_objects = 4, 
		RULE_comment = 5, RULE_commentOptional = 6, RULE_commentMandatory = 7, 
		RULE_object = 8, RULE_slave = 9, RULE_master = 10, RULE_subMaster = 11, 
		RULE_masterBody = 12, RULE_just = 13, RULE_justNamed = 14, RULE_atom = 15, 
		RULE_formation = 16, RULE_innersOrEol = 17, RULE_inners = 18, RULE_voids = 19, 
		RULE_void = 20, RULE_type = 21, RULE_typeFqn = 22, RULE_application = 23, 
		RULE_happlication = 24, RULE_happlicationExtended = 25, RULE_happlicationReversed = 26, 
		RULE_happlicationHead = 27, RULE_happlicationHeadExtended = 28, RULE_applicable = 29, 
		RULE_happlicationTail = 30, RULE_happlicationTailReversed = 31, RULE_happlicationTailReversedFirst = 32, 
		RULE_happlicationArg = 33, RULE_vapplication = 34, RULE_vapplicationHead = 35, 
		RULE_vapplicationHeadNamed = 36, RULE_vapplicationHeadAs = 37, RULE_vapplicationArgs = 38, 
		RULE_vapplicationArgsReversed = 39, RULE_vapplicationArgsSpecific = 40, 
		RULE_vapplicationArgBound = 41, RULE_vapplicationArgBoundCurrent = 42, 
		RULE_vapplicationArgBoundNext = 43, RULE_vapplicationArgUnbound = 44, 
		RULE_vapplicationArgUnboundCurrent = 45, RULE_vapplicationArgUnboundNext = 46, 
		RULE_vapplicationArgHapplicationBound = 47, RULE_vapplicationArgHapplicationUnbound = 48, 
		RULE_formationNameless = 49, RULE_formationNamedOrNameless = 50, RULE_vapplicationArgVanonymBound = 51, 
		RULE_attributesAs = 52, RULE_vapplicationArgHanonymBoundBody = 53, RULE_vapplicationArgHanonymBound = 54, 
		RULE_vapplicationArgHanonymUnbound = 55, RULE_hformation = 56, RULE_hanonym = 57, 
		RULE_onlyphi = 58, RULE_onlyphiTail = 59, RULE_hanonymInner = 60, RULE_method = 61, 
		RULE_methodNamed = 62, RULE_hmethod = 63, RULE_hmethodHead = 64, RULE_vmethod = 65, 
		RULE_vmethodHead = 66, RULE_methodTailOptional = 67, RULE_vmethodHeadApplicationTail = 68, 
		RULE_vmethodHeadVapplication = 69, RULE_methodTail = 70, RULE_beginner = 71, 
		RULE_finisher = 72, RULE_reversed = 73, RULE_oname = 74, RULE_aname = 75, 
		RULE_suffix = 76, RULE_spacedArrow = 77, RULE_scope = 78, RULE_as = 79, 
		RULE_data = 80;
	private static String[] makeRuleNames() {
		return new String[] {
			"program", "eop", "license", "metas", "objects", "comment", "commentOptional", 
			"commentMandatory", "object", "slave", "master", "subMaster", "masterBody", 
			"just", "justNamed", "atom", "formation", "innersOrEol", "inners", "voids", 
			"void", "type", "typeFqn", "application", "happlication", "happlicationExtended", 
			"happlicationReversed", "happlicationHead", "happlicationHeadExtended", 
			"applicable", "happlicationTail", "happlicationTailReversed", "happlicationTailReversedFirst", 
			"happlicationArg", "vapplication", "vapplicationHead", "vapplicationHeadNamed", 
			"vapplicationHeadAs", "vapplicationArgs", "vapplicationArgsReversed", 
			"vapplicationArgsSpecific", "vapplicationArgBound", "vapplicationArgBoundCurrent", 
			"vapplicationArgBoundNext", "vapplicationArgUnbound", "vapplicationArgUnboundCurrent", 
			"vapplicationArgUnboundNext", "vapplicationArgHapplicationBound", "vapplicationArgHapplicationUnbound", 
			"formationNameless", "formationNamedOrNameless", "vapplicationArgVanonymBound", 
			"attributesAs", "vapplicationArgHanonymBoundBody", "vapplicationArgHanonymBound", 
			"vapplicationArgHanonymUnbound", "hformation", "hanonym", "onlyphi", 
			"onlyphiTail", "hanonymInner", "method", "methodNamed", "hmethod", "hmethodHead", 
			"vmethod", "vmethodHead", "methodTailOptional", "vmethodHeadApplicationTail", 
			"vmethodHeadVapplication", "methodTail", "beginner", "finisher", "reversed", 
			"oname", "aname", "suffix", "spacedArrow", "scope", "as", "data"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, null, null, "'Q'", "'QQ'", "'*'", "'!'", "'/'", "':'", "'>'", "'$'", 
			"'+'", "'-'", "'?'", "' '", "'.'", "'['", "']'", "'('", "')'", "'@'", 
			"'^'", "'#'", "'|'"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, "COMMENTARY", "META", "ROOT", "HOME", "STAR", "CONST", "SLASH", 
			"COLON", "ARROW", "XI", "PLUS", "MINUS", "QUESTION", "SPACE", "DOT", 
			"LSQ", "RSQ", "LB", "RB", "PHI", "RHO", "HASH", "BAR", "EOL", "BYTES", 
			"STRING", "INT", "FLOAT", "HEX", "NAME", "TEXT", "TAB", "UNTAB"
		};
	}
	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);

	/**
	 * @deprecated Use {@link #VOCABULARY} instead.
	 */
	@Deprecated
	public static final String[] tokenNames;
	static {
		tokenNames = new String[_SYMBOLIC_NAMES.length];
		for (int i = 0; i < tokenNames.length; i++) {
			tokenNames[i] = VOCABULARY.getLiteralName(i);
			if (tokenNames[i] == null) {
				tokenNames[i] = VOCABULARY.getSymbolicName(i);
			}

			if (tokenNames[i] == null) {
				tokenNames[i] = "";
			}
		}
	}

	@Override
	@Deprecated
	public String[] getTokenNames() {
		return tokenNames;
	}

	@Override

	public Vocabulary getVocabulary() {
		return VOCABULARY;
	}

	@Override
	public String getGrammarFileName() { return "Eo.g4"; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String getSerializedATN() { return _serializedATN; }

	@Override
	public ATN getATN() { return _ATN; }

	public EoParser(TokenStream input) {
		super(input);
		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ProgramContext extends ParserRuleContext {
		public ObjectsContext objects() {
			return getRuleContext(ObjectsContext.class,0);
		}
		public TerminalNode EOF() { return getToken(EoParser.EOF, 0); }
		public LicenseContext license() {
			return getRuleContext(LicenseContext.class,0);
		}
		public MetasContext metas() {
			return getRuleContext(MetasContext.class,0);
		}
		public ProgramContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_program; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterProgram(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitProgram(this);
		}
	}

	public final ProgramContext program() throws RecognitionException {
		ProgramContext _localctx = new ProgramContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_program);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(163);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
			case 1:
				{
				setState(162);
				license();
				}
				break;
			}
			setState(166);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==META) {
				{
				setState(165);
				metas();
				}
			}

			setState(168);
			objects();
			setState(169);
			match(EOF);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class EopContext extends ParserRuleContext {
		public List EOL() { return getTokens(EoParser.EOL); }
		public TerminalNode EOL(int i) {
			return getToken(EoParser.EOL, i);
		}
		public EopContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_eop; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterEop(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitEop(this);
		}
	}

	public final EopContext eop() throws RecognitionException {
		EopContext _localctx = new EopContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_eop);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(171);
			match(EOL);
			setState(172);
			match(EOL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class LicenseContext extends ParserRuleContext {
		public List COMMENTARY() { return getTokens(EoParser.COMMENTARY); }
		public TerminalNode COMMENTARY(int i) {
			return getToken(EoParser.COMMENTARY, i);
		}
		public EopContext eop() {
			return getRuleContext(EopContext.class,0);
		}
		public List EOL() { return getTokens(EoParser.EOL); }
		public TerminalNode EOL(int i) {
			return getToken(EoParser.EOL, i);
		}
		public LicenseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_license; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterLicense(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitLicense(this);
		}
	}

	public final LicenseContext license() throws RecognitionException {
		LicenseContext _localctx = new LicenseContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_license);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(178);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,2,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(174);
					match(COMMENTARY);
					setState(175);
					match(EOL);
					}
					} 
				}
				setState(180);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,2,_ctx);
			}
			setState(181);
			match(COMMENTARY);
			setState(182);
			eop();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MetasContext extends ParserRuleContext {
		public List META() { return getTokens(EoParser.META); }
		public TerminalNode META(int i) {
			return getToken(EoParser.META, i);
		}
		public EopContext eop() {
			return getRuleContext(EopContext.class,0);
		}
		public List EOL() { return getTokens(EoParser.EOL); }
		public TerminalNode EOL(int i) {
			return getToken(EoParser.EOL, i);
		}
		public MetasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_metas; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterMetas(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitMetas(this);
		}
	}

	public final MetasContext metas() throws RecognitionException {
		MetasContext _localctx = new MetasContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_metas);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(188);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(184);
					match(META);
					setState(185);
					match(EOL);
					}
					} 
				}
				setState(190);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
			}
			setState(191);
			match(META);
			setState(192);
			eop();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ObjectsContext extends ParserRuleContext {
		public List object() {
			return getRuleContexts(ObjectContext.class);
		}
		public ObjectContext object(int i) {
			return getRuleContext(ObjectContext.class,i);
		}
		public List EOL() { return getTokens(EoParser.EOL); }
		public TerminalNode EOL(int i) {
			return getToken(EoParser.EOL, i);
		}
		public ObjectsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_objects; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterObjects(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitObjects(this);
		}
	}

	public final ObjectsContext objects() throws RecognitionException {
		ObjectsContext _localctx = new ObjectsContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_objects);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(200);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,5,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(194);
					object();
					setState(196);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==EOL) {
						{
						setState(195);
						match(EOL);
						}
					}

					}
					} 
				}
				setState(202);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,5,_ctx);
			}
			setState(203);
			object();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class CommentContext extends ParserRuleContext {
		public TerminalNode COMMENTARY() { return getToken(EoParser.COMMENTARY, 0); }
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public CommentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_comment; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterComment(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitComment(this);
		}
	}

	public final CommentContext comment() throws RecognitionException {
		CommentContext _localctx = new CommentContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_comment);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(205);
			match(COMMENTARY);
			setState(206);
			match(EOL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class CommentOptionalContext extends ParserRuleContext {
		public List comment() {
			return getRuleContexts(CommentContext.class);
		}
		public CommentContext comment(int i) {
			return getRuleContext(CommentContext.class,i);
		}
		public CommentOptionalContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commentOptional; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterCommentOptional(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitCommentOptional(this);
		}
	}

	public final CommentOptionalContext commentOptional() throws RecognitionException {
		CommentOptionalContext _localctx = new CommentOptionalContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_commentOptional);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(211);
			_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(208);
					comment();
					}
					} 
				}
				setState(213);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,6,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class CommentMandatoryContext extends ParserRuleContext {
		public List comment() {
			return getRuleContexts(CommentContext.class);
		}
		public CommentContext comment(int i) {
			return getRuleContext(CommentContext.class,i);
		}
		public CommentMandatoryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commentMandatory; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterCommentMandatory(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitCommentMandatory(this);
		}
	}

	public final CommentMandatoryContext commentMandatory() throws RecognitionException {
		CommentMandatoryContext _localctx = new CommentMandatoryContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_commentMandatory);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(215); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(214);
				comment();
				}
				}
				setState(217); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==COMMENTARY );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ObjectContext extends ParserRuleContext {
		public MasterContext master() {
			return getRuleContext(MasterContext.class,0);
		}
		public SlaveContext slave() {
			return getRuleContext(SlaveContext.class,0);
		}
		public ObjectContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_object; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterObject(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitObject(this);
		}
	}

	public final ObjectContext object() throws RecognitionException {
		ObjectContext _localctx = new ObjectContext(_ctx, getState());
		enterRule(_localctx, 16, RULE_object);
		try {
			setState(221);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(219);
				master();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(220);
				slave();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class SlaveContext extends ParserRuleContext {
		public CommentOptionalContext commentOptional() {
			return getRuleContext(CommentOptionalContext.class,0);
		}
		public ApplicationContext application() {
			return getRuleContext(ApplicationContext.class,0);
		}
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public MethodNamedContext methodNamed() {
			return getRuleContext(MethodNamedContext.class,0);
		}
		public JustNamedContext justNamed() {
			return getRuleContext(JustNamedContext.class,0);
		}
		public SlaveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_slave; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterSlave(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitSlave(this);
		}
	}

	public final SlaveContext slave() throws RecognitionException {
		SlaveContext _localctx = new SlaveContext(_ctx, getState());
		enterRule(_localctx, 18, RULE_slave);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(223);
			commentOptional();
			setState(231);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
			case 1:
				{
				setState(224);
				application();
				}
				break;
			case 2:
				{
				setState(227);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
				case 1:
					{
					setState(225);
					methodNamed();
					}
					break;
				case 2:
					{
					setState(226);
					justNamed();
					}
					break;
				}
				setState(229);
				match(EOL);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MasterContext extends ParserRuleContext {
		public CommentMandatoryContext commentMandatory() {
			return getRuleContext(CommentMandatoryContext.class,0);
		}
		public MasterBodyContext masterBody() {
			return getRuleContext(MasterBodyContext.class,0);
		}
		public MasterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_master; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterMaster(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitMaster(this);
		}
	}

	public final MasterContext master() throws RecognitionException {
		MasterContext _localctx = new MasterContext(_ctx, getState());
		enterRule(_localctx, 20, RULE_master);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(233);
			commentMandatory();
			setState(234);
			masterBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class SubMasterContext extends ParserRuleContext {
		public CommentOptionalContext commentOptional() {
			return getRuleContext(CommentOptionalContext.class,0);
		}
		public MasterBodyContext masterBody() {
			return getRuleContext(MasterBodyContext.class,0);
		}
		public SubMasterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subMaster; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterSubMaster(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitSubMaster(this);
		}
	}

	public final SubMasterContext subMaster() throws RecognitionException {
		SubMasterContext _localctx = new SubMasterContext(_ctx, getState());
		enterRule(_localctx, 22, RULE_subMaster);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(236);
			commentOptional();
			setState(237);
			masterBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MasterBodyContext extends ParserRuleContext {
		public FormationContext formation() {
			return getRuleContext(FormationContext.class,0);
		}
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public AtomContext atom() {
			return getRuleContext(AtomContext.class,0);
		}
		public HanonymContext hanonym() {
			return getRuleContext(HanonymContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public MasterBodyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_masterBody; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterMasterBody(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitMasterBody(this);
		}
	}

	public final MasterBodyContext masterBody() throws RecognitionException {
		MasterBodyContext _localctx = new MasterBodyContext(_ctx, getState());
		enterRule(_localctx, 24, RULE_masterBody);
		try {
			setState(248);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(239);
				formation();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(244);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
				case 1:
					{
					setState(240);
					atom();
					}
					break;
				case 2:
					{
					setState(241);
					hanonym();
					setState(242);
					oname();
					}
					break;
				}
				setState(246);
				match(EOL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class JustContext extends ParserRuleContext {
		public BeginnerContext beginner() {
			return getRuleContext(BeginnerContext.class,0);
		}
		public FinisherContext finisher() {
			return getRuleContext(FinisherContext.class,0);
		}
		public JustContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_just; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterJust(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitJust(this);
		}
	}

	public final JustContext just() throws RecognitionException {
		JustContext _localctx = new JustContext(_ctx, getState());
		enterRule(_localctx, 26, RULE_just);
		try {
			setState(252);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ROOT:
			case HOME:
			case STAR:
			case XI:
			case BYTES:
			case STRING:
			case INT:
			case FLOAT:
			case HEX:
			case TEXT:
				enterOuterAlt(_localctx, 1);
				{
				setState(250);
				beginner();
				}
				break;
			case PHI:
			case RHO:
			case NAME:
				enterOuterAlt(_localctx, 2);
				{
				setState(251);
				finisher();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class JustNamedContext extends ParserRuleContext {
		public JustContext just() {
			return getRuleContext(JustContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public JustNamedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_justNamed; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterJustNamed(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitJustNamed(this);
		}
	}

	public final JustNamedContext justNamed() throws RecognitionException {
		JustNamedContext _localctx = new JustNamedContext(_ctx, getState());
		enterRule(_localctx, 28, RULE_justNamed);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(254);
			just();
			setState(256);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SPACE) {
				{
				setState(255);
				oname();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class AtomContext extends ParserRuleContext {
		public VoidsContext voids() {
			return getRuleContext(VoidsContext.class,0);
		}
		public SuffixContext suffix() {
			return getRuleContext(SuffixContext.class,0);
		}
		public TypeContext type() {
			return getRuleContext(TypeContext.class,0);
		}
		public AtomContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_atom; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitAtom(this);
		}
	}

	public final AtomContext atom() throws RecognitionException {
		AtomContext _localctx = new AtomContext(_ctx, getState());
		enterRule(_localctx, 30, RULE_atom);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(258);
			voids();
			setState(259);
			suffix();
			setState(260);
			type();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class FormationContext extends ParserRuleContext {
		public VoidsContext voids() {
			return getRuleContext(VoidsContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public InnersOrEolContext innersOrEol() {
			return getRuleContext(InnersOrEolContext.class,0);
		}
		public FormationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_formation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterFormation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitFormation(this);
		}
	}

	public final FormationContext formation() throws RecognitionException {
		FormationContext _localctx = new FormationContext(_ctx, getState());
		enterRule(_localctx, 32, RULE_formation);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(262);
			voids();
			setState(263);
			oname();
			setState(264);
			innersOrEol();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class InnersOrEolContext extends ParserRuleContext {
		public InnersContext inners() {
			return getRuleContext(InnersContext.class,0);
		}
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public InnersOrEolContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_innersOrEol; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterInnersOrEol(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitInnersOrEol(this);
		}
	}

	public final InnersOrEolContext innersOrEol() throws RecognitionException {
		InnersOrEolContext _localctx = new InnersOrEolContext(_ctx, getState());
		enterRule(_localctx, 34, RULE_innersOrEol);
		try {
			setState(268);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(266);
				inners();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(267);
				match(EOL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class InnersContext extends ParserRuleContext {
		public List EOL() { return getTokens(EoParser.EOL); }
		public TerminalNode EOL(int i) {
			return getToken(EoParser.EOL, i);
		}
		public TerminalNode TAB() { return getToken(EoParser.TAB, 0); }
		public TerminalNode UNTAB() { return getToken(EoParser.UNTAB, 0); }
		public List slave() {
			return getRuleContexts(SlaveContext.class);
		}
		public SlaveContext slave(int i) {
			return getRuleContext(SlaveContext.class,i);
		}
		public List subMaster() {
			return getRuleContexts(SubMasterContext.class);
		}
		public SubMasterContext subMaster(int i) {
			return getRuleContext(SubMasterContext.class,i);
		}
		public InnersContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_inners; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterInners(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitInners(this);
		}
	}

	public final InnersContext inners() throws RecognitionException {
		InnersContext _localctx = new InnersContext(_ctx, getState());
		enterRule(_localctx, 36, RULE_inners);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(270);
			match(EOL);
			setState(271);
			match(TAB);
			setState(274);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
			case 1:
				{
				setState(272);
				slave();
				}
				break;
			case 2:
				{
				setState(273);
				subMaster();
				}
				break;
			}
			setState(283);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4281664570L) != 0)) {
				{
				setState(281);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) {
				case 1:
					{
					setState(276);
					slave();
					}
					break;
				case 2:
					{
					setState(278);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==EOL) {
						{
						setState(277);
						match(EOL);
						}
					}

					setState(280);
					subMaster();
					}
					break;
				}
				}
				setState(285);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(286);
			match(UNTAB);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VoidsContext extends ParserRuleContext {
		public TerminalNode LSQ() { return getToken(EoParser.LSQ, 0); }
		public TerminalNode RSQ() { return getToken(EoParser.RSQ, 0); }
		public List void_() {
			return getRuleContexts(VoidContext.class);
		}
		public VoidContext void_(int i) {
			return getRuleContext(VoidContext.class,i);
		}
		public List SPACE() { return getTokens(EoParser.SPACE); }
		public TerminalNode SPACE(int i) {
			return getToken(EoParser.SPACE, i);
		}
		public VoidsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_voids; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVoids(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVoids(this);
		}
	}

	public final VoidsContext voids() throws RecognitionException {
		VoidsContext _localctx = new VoidsContext(_ctx, getState());
		enterRule(_localctx, 38, RULE_voids);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(288);
			match(LSQ);
			setState(297);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NAME) {
				{
				setState(289);
				void_();
				setState(294);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==SPACE) {
					{
					{
					setState(290);
					match(SPACE);
					setState(291);
					void_();
					}
					}
					setState(296);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(299);
			match(RSQ);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VoidContext extends ParserRuleContext {
		public TerminalNode NAME() { return getToken(EoParser.NAME, 0); }
		public VoidContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_void; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVoid(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVoid(this);
		}
	}

	public final VoidContext void_() throws RecognitionException {
		VoidContext _localctx = new VoidContext(_ctx, getState());
		enterRule(_localctx, 40, RULE_void);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(301);
			match(NAME);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class TypeContext extends ParserRuleContext {
		public TerminalNode SPACE() { return getToken(EoParser.SPACE, 0); }
		public TerminalNode SLASH() { return getToken(EoParser.SLASH, 0); }
		public TypeFqnContext typeFqn() {
			return getRuleContext(TypeFqnContext.class,0);
		}
		public TypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_type; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitType(this);
		}
	}

	public final TypeContext type() throws RecognitionException {
		TypeContext _localctx = new TypeContext(_ctx, getState());
		enterRule(_localctx, 42, RULE_type);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(303);
			match(SPACE);
			setState(304);
			match(SLASH);
			setState(305);
			typeFqn();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class TypeFqnContext extends ParserRuleContext {
		public List NAME() { return getTokens(EoParser.NAME); }
		public TerminalNode NAME(int i) {
			return getToken(EoParser.NAME, i);
		}
		public List DOT() { return getTokens(EoParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(EoParser.DOT, i);
		}
		public TypeFqnContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typeFqn; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterTypeFqn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitTypeFqn(this);
		}
	}

	public final TypeFqnContext typeFqn() throws RecognitionException {
		TypeFqnContext _localctx = new TypeFqnContext(_ctx, getState());
		enterRule(_localctx, 44, RULE_typeFqn);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(307);
			match(NAME);
			setState(312);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==DOT) {
				{
				{
				setState(308);
				match(DOT);
				setState(309);
				match(NAME);
				}
				}
				setState(314);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ApplicationContext extends ParserRuleContext {
		public HapplicationExtendedContext happlicationExtended() {
			return getRuleContext(HapplicationExtendedContext.class,0);
		}
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public VapplicationContext vapplication() {
			return getRuleContext(VapplicationContext.class,0);
		}
		public ApplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_application; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterApplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitApplication(this);
		}
	}

	public final ApplicationContext application() throws RecognitionException {
		ApplicationContext _localctx = new ApplicationContext(_ctx, getState());
		enterRule(_localctx, 46, RULE_application);
		int _la;
		try {
			setState(322);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(315);
				happlicationExtended();
				setState(317);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(316);
					oname();
					}
				}

				setState(319);
				match(EOL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(321);
				vapplication();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HapplicationContext extends ParserRuleContext {
		public HapplicationHeadContext happlicationHead() {
			return getRuleContext(HapplicationHeadContext.class,0);
		}
		public HapplicationTailContext happlicationTail() {
			return getRuleContext(HapplicationTailContext.class,0);
		}
		public HapplicationReversedContext happlicationReversed() {
			return getRuleContext(HapplicationReversedContext.class,0);
		}
		public HapplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_happlication; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHapplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHapplication(this);
		}
	}

	public final HapplicationContext happlication() throws RecognitionException {
		HapplicationContext _localctx = new HapplicationContext(_ctx, getState());
		enterRule(_localctx, 48, RULE_happlication);
		try {
			setState(328);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(324);
				happlicationHead();
				setState(325);
				happlicationTail();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(327);
				happlicationReversed();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HapplicationExtendedContext extends ParserRuleContext {
		public HapplicationHeadExtendedContext happlicationHeadExtended() {
			return getRuleContext(HapplicationHeadExtendedContext.class,0);
		}
		public HapplicationTailContext happlicationTail() {
			return getRuleContext(HapplicationTailContext.class,0);
		}
		public HapplicationReversedContext happlicationReversed() {
			return getRuleContext(HapplicationReversedContext.class,0);
		}
		public HapplicationExtendedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_happlicationExtended; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHapplicationExtended(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHapplicationExtended(this);
		}
	}

	public final HapplicationExtendedContext happlicationExtended() throws RecognitionException {
		HapplicationExtendedContext _localctx = new HapplicationExtendedContext(_ctx, getState());
		enterRule(_localctx, 50, RULE_happlicationExtended);
		try {
			setState(334);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(330);
				happlicationHeadExtended();
				setState(331);
				happlicationTail();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(333);
				happlicationReversed();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HapplicationReversedContext extends ParserRuleContext {
		public ReversedContext reversed() {
			return getRuleContext(ReversedContext.class,0);
		}
		public HapplicationTailReversedContext happlicationTailReversed() {
			return getRuleContext(HapplicationTailReversedContext.class,0);
		}
		public HapplicationReversedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_happlicationReversed; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHapplicationReversed(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHapplicationReversed(this);
		}
	}

	public final HapplicationReversedContext happlicationReversed() throws RecognitionException {
		HapplicationReversedContext _localctx = new HapplicationReversedContext(_ctx, getState());
		enterRule(_localctx, 52, RULE_happlicationReversed);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(336);
			reversed();
			setState(337);
			happlicationTailReversed();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HapplicationHeadContext extends ParserRuleContext {
		public HmethodContext hmethod() {
			return getRuleContext(HmethodContext.class,0);
		}
		public ApplicableContext applicable() {
			return getRuleContext(ApplicableContext.class,0);
		}
		public HapplicationHeadContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_happlicationHead; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHapplicationHead(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHapplicationHead(this);
		}
	}

	public final HapplicationHeadContext happlicationHead() throws RecognitionException {
		HapplicationHeadContext _localctx = new HapplicationHeadContext(_ctx, getState());
		enterRule(_localctx, 54, RULE_happlicationHead);
		try {
			setState(341);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(339);
				hmethod();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(340);
				applicable();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HapplicationHeadExtendedContext extends ParserRuleContext {
		public VmethodContext vmethod() {
			return getRuleContext(VmethodContext.class,0);
		}
		public HapplicationHeadContext happlicationHead() {
			return getRuleContext(HapplicationHeadContext.class,0);
		}
		public HapplicationHeadExtendedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_happlicationHeadExtended; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHapplicationHeadExtended(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHapplicationHeadExtended(this);
		}
	}

	public final HapplicationHeadExtendedContext happlicationHeadExtended() throws RecognitionException {
		HapplicationHeadExtendedContext _localctx = new HapplicationHeadExtendedContext(_ctx, getState());
		enterRule(_localctx, 56, RULE_happlicationHeadExtended);
		try {
			setState(345);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(343);
				vmethod();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(344);
				happlicationHead();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ApplicableContext extends ParserRuleContext {
		public TerminalNode STAR() { return getToken(EoParser.STAR, 0); }
		public TerminalNode NAME() { return getToken(EoParser.NAME, 0); }
		public TerminalNode PHI() { return getToken(EoParser.PHI, 0); }
		public ApplicableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_applicable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterApplicable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitApplicable(this);
		}
	}

	public final ApplicableContext applicable() throws RecognitionException {
		ApplicableContext _localctx = new ApplicableContext(_ctx, getState());
		enterRule(_localctx, 58, RULE_applicable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(347);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1074790432L) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HapplicationTailContext extends ParserRuleContext {
		public List SPACE() { return getTokens(EoParser.SPACE); }
		public TerminalNode SPACE(int i) {
			return getToken(EoParser.SPACE, i);
		}
		public List happlicationArg() {
			return getRuleContexts(HapplicationArgContext.class);
		}
		public HapplicationArgContext happlicationArg(int i) {
			return getRuleContext(HapplicationArgContext.class,i);
		}
		public List as() {
			return getRuleContexts(AsContext.class);
		}
		public AsContext as(int i) {
			return getRuleContext(AsContext.class,i);
		}
		public HapplicationTailContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_happlicationTail; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHapplicationTail(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHapplicationTail(this);
		}
	}

	public final HapplicationTailContext happlicationTail() throws RecognitionException {
		HapplicationTailContext _localctx = new HapplicationTailContext(_ctx, getState());
		enterRule(_localctx, 60, RULE_happlicationTail);
		try {
			int _alt;
			setState(363);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(353); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(349);
						match(SPACE);
						setState(350);
						happlicationArg();
						setState(351);
						as();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(355); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,29,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(359); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(357);
						match(SPACE);
						setState(358);
						happlicationArg();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(361); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,30,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HapplicationTailReversedContext extends ParserRuleContext {
		public TerminalNode SPACE() { return getToken(EoParser.SPACE, 0); }
		public HapplicationTailReversedFirstContext happlicationTailReversedFirst() {
			return getRuleContext(HapplicationTailReversedFirstContext.class,0);
		}
		public HapplicationTailContext happlicationTail() {
			return getRuleContext(HapplicationTailContext.class,0);
		}
		public HapplicationTailReversedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_happlicationTailReversed; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHapplicationTailReversed(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHapplicationTailReversed(this);
		}
	}

	public final HapplicationTailReversedContext happlicationTailReversed() throws RecognitionException {
		HapplicationTailReversedContext _localctx = new HapplicationTailReversedContext(_ctx, getState());
		enterRule(_localctx, 62, RULE_happlicationTailReversed);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(365);
			match(SPACE);
			setState(366);
			happlicationTailReversedFirst();
			setState(368);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) {
			case 1:
				{
				setState(367);
				happlicationTail();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HapplicationTailReversedFirstContext extends ParserRuleContext {
		public HapplicationArgContext happlicationArg() {
			return getRuleContext(HapplicationArgContext.class,0);
		}
		public HapplicationTailReversedFirstContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_happlicationTailReversedFirst; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHapplicationTailReversedFirst(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHapplicationTailReversedFirst(this);
		}
	}

	public final HapplicationTailReversedFirstContext happlicationTailReversedFirst() throws RecognitionException {
		HapplicationTailReversedFirstContext _localctx = new HapplicationTailReversedFirstContext(_ctx, getState());
		enterRule(_localctx, 64, RULE_happlicationTailReversedFirst);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(370);
			happlicationArg();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HapplicationArgContext extends ParserRuleContext {
		public JustContext just() {
			return getRuleContext(JustContext.class,0);
		}
		public HmethodContext hmethod() {
			return getRuleContext(HmethodContext.class,0);
		}
		public ScopeContext scope() {
			return getRuleContext(ScopeContext.class,0);
		}
		public HapplicationArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_happlicationArg; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHapplicationArg(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHapplicationArg(this);
		}
	}

	public final HapplicationArgContext happlicationArg() throws RecognitionException {
		HapplicationArgContext _localctx = new HapplicationArgContext(_ctx, getState());
		enterRule(_localctx, 66, RULE_happlicationArg);
		try {
			setState(375);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(372);
				just();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(373);
				hmethod();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(374);
				scope();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationContext extends ParserRuleContext {
		public VapplicationHeadNamedContext vapplicationHeadNamed() {
			return getRuleContext(VapplicationHeadNamedContext.class,0);
		}
		public VapplicationArgsContext vapplicationArgs() {
			return getRuleContext(VapplicationArgsContext.class,0);
		}
		public ReversedContext reversed() {
			return getRuleContext(ReversedContext.class,0);
		}
		public VapplicationArgsReversedContext vapplicationArgsReversed() {
			return getRuleContext(VapplicationArgsReversedContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public VapplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplication; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplication(this);
		}
	}

	public final VapplicationContext vapplication() throws RecognitionException {
		VapplicationContext _localctx = new VapplicationContext(_ctx, getState());
		enterRule(_localctx, 68, RULE_vapplication);
		int _la;
		try {
			setState(386);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(377);
				vapplicationHeadNamed();
				setState(378);
				vapplicationArgs();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(380);
				reversed();
				setState(382);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(381);
					oname();
					}
				}

				setState(384);
				vapplicationArgsReversed();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationHeadContext extends ParserRuleContext {
		public ApplicableContext applicable() {
			return getRuleContext(ApplicableContext.class,0);
		}
		public HmethodContext hmethod() {
			return getRuleContext(HmethodContext.class,0);
		}
		public VmethodContext vmethod() {
			return getRuleContext(VmethodContext.class,0);
		}
		public VapplicationHeadContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationHead; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationHead(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationHead(this);
		}
	}

	public final VapplicationHeadContext vapplicationHead() throws RecognitionException {
		VapplicationHeadContext _localctx = new VapplicationHeadContext(_ctx, getState());
		enterRule(_localctx, 70, RULE_vapplicationHead);
		try {
			setState(391);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(388);
				applicable();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(389);
				hmethod();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(390);
				vmethod();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationHeadNamedContext extends ParserRuleContext {
		public VapplicationHeadContext vapplicationHead() {
			return getRuleContext(VapplicationHeadContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public VapplicationHeadNamedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationHeadNamed; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationHeadNamed(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationHeadNamed(this);
		}
	}

	public final VapplicationHeadNamedContext vapplicationHeadNamed() throws RecognitionException {
		VapplicationHeadNamedContext _localctx = new VapplicationHeadNamedContext(_ctx, getState());
		enterRule(_localctx, 72, RULE_vapplicationHeadNamed);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(393);
			vapplicationHead();
			setState(395);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SPACE) {
				{
				setState(394);
				oname();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationHeadAsContext extends ParserRuleContext {
		public VapplicationHeadContext vapplicationHead() {
			return getRuleContext(VapplicationHeadContext.class,0);
		}
		public AsContext as() {
			return getRuleContext(AsContext.class,0);
		}
		public VapplicationHeadAsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationHeadAs; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationHeadAs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationHeadAs(this);
		}
	}

	public final VapplicationHeadAsContext vapplicationHeadAs() throws RecognitionException {
		VapplicationHeadAsContext _localctx = new VapplicationHeadAsContext(_ctx, getState());
		enterRule(_localctx, 74, RULE_vapplicationHeadAs);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(397);
			vapplicationHead();
			setState(398);
			as();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgsContext extends ParserRuleContext {
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public TerminalNode TAB() { return getToken(EoParser.TAB, 0); }
		public VapplicationArgsSpecificContext vapplicationArgsSpecific() {
			return getRuleContext(VapplicationArgsSpecificContext.class,0);
		}
		public TerminalNode UNTAB() { return getToken(EoParser.UNTAB, 0); }
		public VapplicationArgsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgs; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgs(this);
		}
	}

	public final VapplicationArgsContext vapplicationArgs() throws RecognitionException {
		VapplicationArgsContext _localctx = new VapplicationArgsContext(_ctx, getState());
		enterRule(_localctx, 76, RULE_vapplicationArgs);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(400);
			match(EOL);
			setState(401);
			match(TAB);
			setState(402);
			vapplicationArgsSpecific();
			setState(403);
			match(UNTAB);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgsReversedContext extends ParserRuleContext {
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public TerminalNode TAB() { return getToken(EoParser.TAB, 0); }
		public VapplicationArgUnboundContext vapplicationArgUnbound() {
			return getRuleContext(VapplicationArgUnboundContext.class,0);
		}
		public TerminalNode UNTAB() { return getToken(EoParser.UNTAB, 0); }
		public VapplicationArgsSpecificContext vapplicationArgsSpecific() {
			return getRuleContext(VapplicationArgsSpecificContext.class,0);
		}
		public VapplicationArgsReversedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgsReversed; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgsReversed(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgsReversed(this);
		}
	}

	public final VapplicationArgsReversedContext vapplicationArgsReversed() throws RecognitionException {
		VapplicationArgsReversedContext _localctx = new VapplicationArgsReversedContext(_ctx, getState());
		enterRule(_localctx, 78, RULE_vapplicationArgsReversed);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(405);
			match(EOL);
			setState(406);
			match(TAB);
			setState(407);
			vapplicationArgUnbound();
			setState(409);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4264887354L) != 0)) {
				{
				setState(408);
				vapplicationArgsSpecific();
				}
			}

			setState(411);
			match(UNTAB);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgsSpecificContext extends ParserRuleContext {
		public List vapplicationArgBound() {
			return getRuleContexts(VapplicationArgBoundContext.class);
		}
		public VapplicationArgBoundContext vapplicationArgBound(int i) {
			return getRuleContext(VapplicationArgBoundContext.class,i);
		}
		public List vapplicationArgUnbound() {
			return getRuleContexts(VapplicationArgUnboundContext.class);
		}
		public VapplicationArgUnboundContext vapplicationArgUnbound(int i) {
			return getRuleContext(VapplicationArgUnboundContext.class,i);
		}
		public VapplicationArgsSpecificContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgsSpecific; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgsSpecific(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgsSpecific(this);
		}
	}

	public final VapplicationArgsSpecificContext vapplicationArgsSpecific() throws RecognitionException {
		VapplicationArgsSpecificContext _localctx = new VapplicationArgsSpecificContext(_ctx, getState());
		enterRule(_localctx, 80, RULE_vapplicationArgsSpecific);
		int _la;
		try {
			setState(423);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(414); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(413);
					vapplicationArgBound();
					}
					}
					setState(416); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 4264887354L) != 0) );
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(419); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(418);
					vapplicationArgUnbound();
					}
					}
					setState(421); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 4264887354L) != 0) );
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgBoundContext extends ParserRuleContext {
		public VapplicationArgBoundCurrentContext vapplicationArgBoundCurrent() {
			return getRuleContext(VapplicationArgBoundCurrentContext.class,0);
		}
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public VapplicationArgBoundNextContext vapplicationArgBoundNext() {
			return getRuleContext(VapplicationArgBoundNextContext.class,0);
		}
		public VapplicationArgBoundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgBound; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgBound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgBound(this);
		}
	}

	public final VapplicationArgBoundContext vapplicationArgBound() throws RecognitionException {
		VapplicationArgBoundContext _localctx = new VapplicationArgBoundContext(_ctx, getState());
		enterRule(_localctx, 82, RULE_vapplicationArgBound);
		try {
			setState(429);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(425);
				vapplicationArgBoundCurrent();
				setState(426);
				match(EOL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(428);
				vapplicationArgBoundNext();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgBoundCurrentContext extends ParserRuleContext {
		public VapplicationArgHapplicationBoundContext vapplicationArgHapplicationBound() {
			return getRuleContext(VapplicationArgHapplicationBoundContext.class,0);
		}
		public VapplicationArgHanonymBoundContext vapplicationArgHanonymBound() {
			return getRuleContext(VapplicationArgHanonymBoundContext.class,0);
		}
		public AsContext as() {
			return getRuleContext(AsContext.class,0);
		}
		public JustContext just() {
			return getRuleContext(JustContext.class,0);
		}
		public MethodContext method() {
			return getRuleContext(MethodContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public VapplicationArgBoundCurrentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgBoundCurrent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgBoundCurrent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgBoundCurrent(this);
		}
	}

	public final VapplicationArgBoundCurrentContext vapplicationArgBoundCurrent() throws RecognitionException {
		VapplicationArgBoundCurrentContext _localctx = new VapplicationArgBoundCurrentContext(_ctx, getState());
		enterRule(_localctx, 84, RULE_vapplicationArgBoundCurrent);
		int _la;
		try {
			setState(441);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(431);
				vapplicationArgHapplicationBound();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(432);
				vapplicationArgHanonymBound();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(435);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
				case 1:
					{
					setState(433);
					just();
					}
					break;
				case 2:
					{
					setState(434);
					method();
					}
					break;
				}
				setState(437);
				as();
				setState(439);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(438);
					oname();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgBoundNextContext extends ParserRuleContext {
		public VapplicationArgVanonymBoundContext vapplicationArgVanonymBound() {
			return getRuleContext(VapplicationArgVanonymBoundContext.class,0);
		}
		public VapplicationHeadAsContext vapplicationHeadAs() {
			return getRuleContext(VapplicationHeadAsContext.class,0);
		}
		public VapplicationArgsContext vapplicationArgs() {
			return getRuleContext(VapplicationArgsContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public ReversedContext reversed() {
			return getRuleContext(ReversedContext.class,0);
		}
		public AsContext as() {
			return getRuleContext(AsContext.class,0);
		}
		public VapplicationArgsReversedContext vapplicationArgsReversed() {
			return getRuleContext(VapplicationArgsReversedContext.class,0);
		}
		public VapplicationArgBoundNextContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgBoundNext; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgBoundNext(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgBoundNext(this);
		}
	}

	public final VapplicationArgBoundNextContext vapplicationArgBoundNext() throws RecognitionException {
		VapplicationArgBoundNextContext _localctx = new VapplicationArgBoundNextContext(_ctx, getState());
		enterRule(_localctx, 86, RULE_vapplicationArgBoundNext);
		int _la;
		try {
			setState(457);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(443);
				vapplicationArgVanonymBound();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(444);
				vapplicationHeadAs();
				setState(446);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(445);
					oname();
					}
				}

				setState(448);
				vapplicationArgs();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(450);
				reversed();
				setState(451);
				as();
				setState(453);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(452);
					oname();
					}
				}

				setState(455);
				vapplicationArgsReversed();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgUnboundContext extends ParserRuleContext {
		public VapplicationArgUnboundCurrentContext vapplicationArgUnboundCurrent() {
			return getRuleContext(VapplicationArgUnboundCurrentContext.class,0);
		}
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public VapplicationArgUnboundNextContext vapplicationArgUnboundNext() {
			return getRuleContext(VapplicationArgUnboundNextContext.class,0);
		}
		public VapplicationArgUnboundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgUnbound; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgUnbound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgUnbound(this);
		}
	}

	public final VapplicationArgUnboundContext vapplicationArgUnbound() throws RecognitionException {
		VapplicationArgUnboundContext _localctx = new VapplicationArgUnboundContext(_ctx, getState());
		enterRule(_localctx, 88, RULE_vapplicationArgUnbound);
		try {
			setState(463);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(459);
				vapplicationArgUnboundCurrent();
				setState(460);
				match(EOL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(462);
				vapplicationArgUnboundNext();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgUnboundCurrentContext extends ParserRuleContext {
		public VapplicationArgHapplicationUnboundContext vapplicationArgHapplicationUnbound() {
			return getRuleContext(VapplicationArgHapplicationUnboundContext.class,0);
		}
		public VapplicationArgHanonymUnboundContext vapplicationArgHanonymUnbound() {
			return getRuleContext(VapplicationArgHanonymUnboundContext.class,0);
		}
		public JustNamedContext justNamed() {
			return getRuleContext(JustNamedContext.class,0);
		}
		public MethodNamedContext methodNamed() {
			return getRuleContext(MethodNamedContext.class,0);
		}
		public VapplicationArgUnboundCurrentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgUnboundCurrent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgUnboundCurrent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgUnboundCurrent(this);
		}
	}

	public final VapplicationArgUnboundCurrentContext vapplicationArgUnboundCurrent() throws RecognitionException {
		VapplicationArgUnboundCurrentContext _localctx = new VapplicationArgUnboundCurrentContext(_ctx, getState());
		enterRule(_localctx, 90, RULE_vapplicationArgUnboundCurrent);
		try {
			setState(469);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(465);
				vapplicationArgHapplicationUnbound();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(466);
				vapplicationArgHanonymUnbound();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(467);
				justNamed();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(468);
				methodNamed();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgUnboundNextContext extends ParserRuleContext {
		public FormationNamedOrNamelessContext formationNamedOrNameless() {
			return getRuleContext(FormationNamedOrNamelessContext.class,0);
		}
		public VapplicationHeadNamedContext vapplicationHeadNamed() {
			return getRuleContext(VapplicationHeadNamedContext.class,0);
		}
		public VapplicationArgsContext vapplicationArgs() {
			return getRuleContext(VapplicationArgsContext.class,0);
		}
		public ReversedContext reversed() {
			return getRuleContext(ReversedContext.class,0);
		}
		public VapplicationArgsReversedContext vapplicationArgsReversed() {
			return getRuleContext(VapplicationArgsReversedContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public VapplicationArgUnboundNextContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgUnboundNext; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgUnboundNext(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgUnboundNext(this);
		}
	}

	public final VapplicationArgUnboundNextContext vapplicationArgUnboundNext() throws RecognitionException {
		VapplicationArgUnboundNextContext _localctx = new VapplicationArgUnboundNextContext(_ctx, getState());
		enterRule(_localctx, 92, RULE_vapplicationArgUnboundNext);
		int _la;
		try {
			setState(481);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,52,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(471);
				formationNamedOrNameless();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(472);
				vapplicationHeadNamed();
				setState(473);
				vapplicationArgs();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(475);
				reversed();
				setState(477);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(476);
					oname();
					}
				}

				setState(479);
				vapplicationArgsReversed();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgHapplicationBoundContext extends ParserRuleContext {
		public TerminalNode LB() { return getToken(EoParser.LB, 0); }
		public HapplicationExtendedContext happlicationExtended() {
			return getRuleContext(HapplicationExtendedContext.class,0);
		}
		public TerminalNode RB() { return getToken(EoParser.RB, 0); }
		public AsContext as() {
			return getRuleContext(AsContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public VapplicationArgHapplicationBoundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgHapplicationBound; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgHapplicationBound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgHapplicationBound(this);
		}
	}

	public final VapplicationArgHapplicationBoundContext vapplicationArgHapplicationBound() throws RecognitionException {
		VapplicationArgHapplicationBoundContext _localctx = new VapplicationArgHapplicationBoundContext(_ctx, getState());
		enterRule(_localctx, 94, RULE_vapplicationArgHapplicationBound);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(483);
			match(LB);
			setState(484);
			happlicationExtended();
			setState(485);
			match(RB);
			setState(486);
			as();
			setState(488);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SPACE) {
				{
				setState(487);
				oname();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgHapplicationUnboundContext extends ParserRuleContext {
		public HapplicationExtendedContext happlicationExtended() {
			return getRuleContext(HapplicationExtendedContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public VapplicationArgHapplicationUnboundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgHapplicationUnbound; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgHapplicationUnbound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgHapplicationUnbound(this);
		}
	}

	public final VapplicationArgHapplicationUnboundContext vapplicationArgHapplicationUnbound() throws RecognitionException {
		VapplicationArgHapplicationUnboundContext _localctx = new VapplicationArgHapplicationUnboundContext(_ctx, getState());
		enterRule(_localctx, 96, RULE_vapplicationArgHapplicationUnbound);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(490);
			happlicationExtended();
			setState(492);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SPACE) {
				{
				setState(491);
				oname();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class FormationNamelessContext extends ParserRuleContext {
		public VoidsContext voids() {
			return getRuleContext(VoidsContext.class,0);
		}
		public InnersOrEolContext innersOrEol() {
			return getRuleContext(InnersOrEolContext.class,0);
		}
		public AnameContext aname() {
			return getRuleContext(AnameContext.class,0);
		}
		public FormationNamelessContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_formationNameless; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterFormationNameless(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitFormationNameless(this);
		}
	}

	public final FormationNamelessContext formationNameless() throws RecognitionException {
		FormationNamelessContext _localctx = new FormationNamelessContext(_ctx, getState());
		enterRule(_localctx, 98, RULE_formationNameless);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(494);
			voids();
			setState(496);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SPACE) {
				{
				setState(495);
				aname();
				}
			}

			setState(498);
			innersOrEol();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class FormationNamedOrNamelessContext extends ParserRuleContext {
		public CommentOptionalContext commentOptional() {
			return getRuleContext(CommentOptionalContext.class,0);
		}
		public FormationContext formation() {
			return getRuleContext(FormationContext.class,0);
		}
		public FormationNamelessContext formationNameless() {
			return getRuleContext(FormationNamelessContext.class,0);
		}
		public FormationNamedOrNamelessContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_formationNamedOrNameless; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterFormationNamedOrNameless(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitFormationNamedOrNameless(this);
		}
	}

	public final FormationNamedOrNamelessContext formationNamedOrNameless() throws RecognitionException {
		FormationNamedOrNamelessContext _localctx = new FormationNamedOrNamelessContext(_ctx, getState());
		enterRule(_localctx, 100, RULE_formationNamedOrNameless);
		try {
			setState(504);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(500);
				commentOptional();
				setState(501);
				formation();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(503);
				formationNameless();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgVanonymBoundContext extends ParserRuleContext {
		public CommentOptionalContext commentOptional() {
			return getRuleContext(CommentOptionalContext.class,0);
		}
		public AttributesAsContext attributesAs() {
			return getRuleContext(AttributesAsContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public InnersOrEolContext innersOrEol() {
			return getRuleContext(InnersOrEolContext.class,0);
		}
		public AnameContext aname() {
			return getRuleContext(AnameContext.class,0);
		}
		public VapplicationArgVanonymBoundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgVanonymBound; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgVanonymBound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgVanonymBound(this);
		}
	}

	public final VapplicationArgVanonymBoundContext vapplicationArgVanonymBound() throws RecognitionException {
		VapplicationArgVanonymBoundContext _localctx = new VapplicationArgVanonymBoundContext(_ctx, getState());
		enterRule(_localctx, 102, RULE_vapplicationArgVanonymBound);
		int _la;
		try {
			setState(517);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,58,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(506);
				commentOptional();
				setState(507);
				attributesAs();
				setState(508);
				oname();
				setState(509);
				innersOrEol();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(511);
				attributesAs();
				setState(513);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(512);
					aname();
					}
				}

				setState(515);
				innersOrEol();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class AttributesAsContext extends ParserRuleContext {
		public VoidsContext voids() {
			return getRuleContext(VoidsContext.class,0);
		}
		public AsContext as() {
			return getRuleContext(AsContext.class,0);
		}
		public AttributesAsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_attributesAs; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterAttributesAs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitAttributesAs(this);
		}
	}

	public final AttributesAsContext attributesAs() throws RecognitionException {
		AttributesAsContext _localctx = new AttributesAsContext(_ctx, getState());
		enterRule(_localctx, 104, RULE_attributesAs);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(519);
			voids();
			setState(520);
			as();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgHanonymBoundBodyContext extends ParserRuleContext {
		public TerminalNode LB() { return getToken(EoParser.LB, 0); }
		public HanonymContext hanonym() {
			return getRuleContext(HanonymContext.class,0);
		}
		public TerminalNode RB() { return getToken(EoParser.RB, 0); }
		public AsContext as() {
			return getRuleContext(AsContext.class,0);
		}
		public VapplicationArgHanonymBoundBodyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgHanonymBoundBody; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgHanonymBoundBody(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgHanonymBoundBody(this);
		}
	}

	public final VapplicationArgHanonymBoundBodyContext vapplicationArgHanonymBoundBody() throws RecognitionException {
		VapplicationArgHanonymBoundBodyContext _localctx = new VapplicationArgHanonymBoundBodyContext(_ctx, getState());
		enterRule(_localctx, 106, RULE_vapplicationArgHanonymBoundBody);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(522);
			match(LB);
			setState(523);
			hanonym();
			setState(524);
			match(RB);
			setState(525);
			as();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgHanonymBoundContext extends ParserRuleContext {
		public CommentOptionalContext commentOptional() {
			return getRuleContext(CommentOptionalContext.class,0);
		}
		public VapplicationArgHanonymBoundBodyContext vapplicationArgHanonymBoundBody() {
			return getRuleContext(VapplicationArgHanonymBoundBodyContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public AnameContext aname() {
			return getRuleContext(AnameContext.class,0);
		}
		public VapplicationArgHanonymBoundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgHanonymBound; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgHanonymBound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgHanonymBound(this);
		}
	}

	public final VapplicationArgHanonymBoundContext vapplicationArgHanonymBound() throws RecognitionException {
		VapplicationArgHanonymBoundContext _localctx = new VapplicationArgHanonymBoundContext(_ctx, getState());
		enterRule(_localctx, 108, RULE_vapplicationArgHanonymBound);
		int _la;
		try {
			setState(535);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(527);
				commentOptional();
				setState(528);
				vapplicationArgHanonymBoundBody();
				setState(529);
				oname();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(531);
				vapplicationArgHanonymBoundBody();
				setState(533);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(532);
					aname();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VapplicationArgHanonymUnboundContext extends ParserRuleContext {
		public CommentOptionalContext commentOptional() {
			return getRuleContext(CommentOptionalContext.class,0);
		}
		public HanonymContext hanonym() {
			return getRuleContext(HanonymContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public AnameContext aname() {
			return getRuleContext(AnameContext.class,0);
		}
		public VapplicationArgHanonymUnboundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vapplicationArgHanonymUnbound; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVapplicationArgHanonymUnbound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVapplicationArgHanonymUnbound(this);
		}
	}

	public final VapplicationArgHanonymUnboundContext vapplicationArgHanonymUnbound() throws RecognitionException {
		VapplicationArgHanonymUnboundContext _localctx = new VapplicationArgHanonymUnboundContext(_ctx, getState());
		enterRule(_localctx, 110, RULE_vapplicationArgHanonymUnbound);
		int _la;
		try {
			setState(545);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(537);
				commentOptional();
				setState(538);
				hanonym();
				setState(539);
				oname();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(541);
				hanonym();
				setState(543);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(542);
					aname();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HformationContext extends ParserRuleContext {
		public VoidsContext voids() {
			return getRuleContext(VoidsContext.class,0);
		}
		public List hanonymInner() {
			return getRuleContexts(HanonymInnerContext.class);
		}
		public HanonymInnerContext hanonymInner(int i) {
			return getRuleContext(HanonymInnerContext.class,i);
		}
		public HformationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hformation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHformation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHformation(this);
		}
	}

	public final HformationContext hformation() throws RecognitionException {
		HformationContext _localctx = new HformationContext(_ctx, getState());
		enterRule(_localctx, 112, RULE_hformation);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(547);
			voids();
			setState(549); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(548);
					hanonymInner();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(551); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,63,_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;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HanonymContext extends ParserRuleContext {
		public HformationContext hformation() {
			return getRuleContext(HformationContext.class,0);
		}
		public OnlyphiContext onlyphi() {
			return getRuleContext(OnlyphiContext.class,0);
		}
		public HanonymContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hanonym; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHanonym(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHanonym(this);
		}
	}

	public final HanonymContext hanonym() throws RecognitionException {
		HanonymContext _localctx = new HanonymContext(_ctx, getState());
		enterRule(_localctx, 114, RULE_hanonym);
		try {
			setState(555);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(553);
				hformation();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(554);
				onlyphi(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class OnlyphiContext extends ParserRuleContext {
		public OnlyphiTailContext onlyphiTail() {
			return getRuleContext(OnlyphiTailContext.class,0);
		}
		public HmethodContext hmethod() {
			return getRuleContext(HmethodContext.class,0);
		}
		public HapplicationContext happlication() {
			return getRuleContext(HapplicationContext.class,0);
		}
		public HformationContext hformation() {
			return getRuleContext(HformationContext.class,0);
		}
		public JustContext just() {
			return getRuleContext(JustContext.class,0);
		}
		public OnlyphiContext onlyphi() {
			return getRuleContext(OnlyphiContext.class,0);
		}
		public OnlyphiContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_onlyphi; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterOnlyphi(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitOnlyphi(this);
		}
	}

	public final OnlyphiContext onlyphi() throws RecognitionException {
		return onlyphi(0);
	}

	private OnlyphiContext onlyphi(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		OnlyphiContext _localctx = new OnlyphiContext(_ctx, _parentState);
		OnlyphiContext _prevctx = _localctx;
		int _startState = 116;
		enterRecursionRule(_localctx, 116, RULE_onlyphi, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(562);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) {
			case 1:
				{
				setState(558);
				hmethod();
				}
				break;
			case 2:
				{
				setState(559);
				happlication();
				}
				break;
			case 3:
				{
				setState(560);
				hformation();
				}
				break;
			case 4:
				{
				setState(561);
				just();
				}
				break;
			}
			setState(564);
			onlyphiTail();
			}
			_ctx.stop = _input.LT(-1);
			setState(570);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,66,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new OnlyphiContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_onlyphi);
					setState(566);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(567);
					onlyphiTail();
					}
					} 
				}
				setState(572);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,66,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class OnlyphiTailContext extends ParserRuleContext {
		public SpacedArrowContext spacedArrow() {
			return getRuleContext(SpacedArrowContext.class,0);
		}
		public VoidsContext voids() {
			return getRuleContext(VoidsContext.class,0);
		}
		public OnlyphiTailContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_onlyphiTail; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterOnlyphiTail(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitOnlyphiTail(this);
		}
	}

	public final OnlyphiTailContext onlyphiTail() throws RecognitionException {
		OnlyphiTailContext _localctx = new OnlyphiTailContext(_ctx, getState());
		enterRule(_localctx, 118, RULE_onlyphiTail);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(573);
			spacedArrow();
			setState(574);
			voids();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HanonymInnerContext extends ParserRuleContext {
		public TerminalNode SPACE() { return getToken(EoParser.SPACE, 0); }
		public TerminalNode LB() { return getToken(EoParser.LB, 0); }
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public TerminalNode RB() { return getToken(EoParser.RB, 0); }
		public HmethodContext hmethod() {
			return getRuleContext(HmethodContext.class,0);
		}
		public HapplicationContext happlication() {
			return getRuleContext(HapplicationContext.class,0);
		}
		public HanonymContext hanonym() {
			return getRuleContext(HanonymContext.class,0);
		}
		public JustContext just() {
			return getRuleContext(JustContext.class,0);
		}
		public HanonymInnerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hanonymInner; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHanonymInner(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHanonymInner(this);
		}
	}

	public final HanonymInnerContext hanonymInner() throws RecognitionException {
		HanonymInnerContext _localctx = new HanonymInnerContext(_ctx, getState());
		enterRule(_localctx, 120, RULE_hanonymInner);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(576);
			match(SPACE);
			setState(577);
			match(LB);
			setState(582);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) {
			case 1:
				{
				setState(578);
				hmethod();
				}
				break;
			case 2:
				{
				setState(579);
				happlication();
				}
				break;
			case 3:
				{
				setState(580);
				hanonym();
				}
				break;
			case 4:
				{
				setState(581);
				just();
				}
				break;
			}
			setState(584);
			oname();
			setState(585);
			match(RB);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MethodContext extends ParserRuleContext {
		public HmethodContext hmethod() {
			return getRuleContext(HmethodContext.class,0);
		}
		public VmethodContext vmethod() {
			return getRuleContext(VmethodContext.class,0);
		}
		public MethodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_method; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterMethod(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitMethod(this);
		}
	}

	public final MethodContext method() throws RecognitionException {
		MethodContext _localctx = new MethodContext(_ctx, getState());
		enterRule(_localctx, 122, RULE_method);
		try {
			setState(589);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,68,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(587);
				hmethod();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(588);
				vmethod();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MethodNamedContext extends ParserRuleContext {
		public MethodContext method() {
			return getRuleContext(MethodContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public MethodNamedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_methodNamed; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterMethodNamed(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitMethodNamed(this);
		}
	}

	public final MethodNamedContext methodNamed() throws RecognitionException {
		MethodNamedContext _localctx = new MethodNamedContext(_ctx, getState());
		enterRule(_localctx, 124, RULE_methodNamed);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(591);
			method();
			setState(593);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SPACE) {
				{
				setState(592);
				oname();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HmethodContext extends ParserRuleContext {
		public HmethodHeadContext hmethodHead() {
			return getRuleContext(HmethodHeadContext.class,0);
		}
		public List methodTail() {
			return getRuleContexts(MethodTailContext.class);
		}
		public MethodTailContext methodTail(int i) {
			return getRuleContext(MethodTailContext.class,i);
		}
		public HmethodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hmethod; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHmethod(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHmethod(this);
		}
	}

	public final HmethodContext hmethod() throws RecognitionException {
		HmethodContext _localctx = new HmethodContext(_ctx, getState());
		enterRule(_localctx, 126, RULE_hmethod);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(595);
			hmethodHead();
			setState(597); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(596);
				methodTail();
				}
				}
				setState(599); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==DOT );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class HmethodHeadContext extends ParserRuleContext {
		public JustContext just() {
			return getRuleContext(JustContext.class,0);
		}
		public ScopeContext scope() {
			return getRuleContext(ScopeContext.class,0);
		}
		public HmethodHeadContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hmethodHead; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterHmethodHead(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitHmethodHead(this);
		}
	}

	public final HmethodHeadContext hmethodHead() throws RecognitionException {
		HmethodHeadContext _localctx = new HmethodHeadContext(_ctx, getState());
		enterRule(_localctx, 128, RULE_hmethodHead);
		try {
			setState(603);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ROOT:
			case HOME:
			case STAR:
			case XI:
			case PHI:
			case RHO:
			case BYTES:
			case STRING:
			case INT:
			case FLOAT:
			case HEX:
			case NAME:
			case TEXT:
				enterOuterAlt(_localctx, 1);
				{
				setState(601);
				just();
				}
				break;
			case LB:
				enterOuterAlt(_localctx, 2);
				{
				setState(602);
				scope();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VmethodContext extends ParserRuleContext {
		public VmethodHeadContext vmethodHead() {
			return getRuleContext(VmethodHeadContext.class,0);
		}
		public MethodTailContext methodTail() {
			return getRuleContext(MethodTailContext.class,0);
		}
		public VmethodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vmethod; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVmethod(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVmethod(this);
		}
	}

	public final VmethodContext vmethod() throws RecognitionException {
		VmethodContext _localctx = new VmethodContext(_ctx, getState());
		enterRule(_localctx, 130, RULE_vmethod);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(605);
			vmethodHead(0);
			setState(606);
			methodTail();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VmethodHeadContext extends ParserRuleContext {
		public VmethodHeadVapplicationContext vmethodHeadVapplication() {
			return getRuleContext(VmethodHeadVapplicationContext.class,0);
		}
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public JustNamedContext justNamed() {
			return getRuleContext(JustNamedContext.class,0);
		}
		public HanonymContext hanonym() {
			return getRuleContext(HanonymContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public FormationNamedOrNamelessContext formationNamedOrNameless() {
			return getRuleContext(FormationNamedOrNamelessContext.class,0);
		}
		public VmethodHeadContext vmethodHead() {
			return getRuleContext(VmethodHeadContext.class,0);
		}
		public MethodTailOptionalContext methodTailOptional() {
			return getRuleContext(MethodTailOptionalContext.class,0);
		}
		public VmethodHeadApplicationTailContext vmethodHeadApplicationTail() {
			return getRuleContext(VmethodHeadApplicationTailContext.class,0);
		}
		public VmethodHeadContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vmethodHead; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVmethodHead(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVmethodHead(this);
		}
	}

	public final VmethodHeadContext vmethodHead() throws RecognitionException {
		return vmethodHead(0);
	}

	private VmethodHeadContext vmethodHead(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		VmethodHeadContext _localctx = new VmethodHeadContext(_ctx, _parentState);
		VmethodHeadContext _prevctx = _localctx;
		int _startState = 132;
		enterRecursionRule(_localctx, 132, RULE_vmethodHead, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(620);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,74,_ctx) ) {
			case 1:
				{
				setState(609);
				vmethodHeadVapplication();
				}
				break;
			case 2:
				{
				setState(615);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) {
				case 1:
					{
					setState(610);
					justNamed();
					}
					break;
				case 2:
					{
					setState(611);
					hanonym();
					setState(613);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==SPACE) {
						{
						setState(612);
						oname();
						}
					}

					}
					break;
				}
				setState(617);
				match(EOL);
				}
				break;
			case 3:
				{
				setState(619);
				formationNamedOrNameless();
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(628);
			_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 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new VmethodHeadContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_vmethodHead);
					setState(622);
					if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
					setState(623);
					methodTailOptional();
					setState(624);
					vmethodHeadApplicationTail();
					}
					} 
				}
				setState(630);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,75,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MethodTailOptionalContext extends ParserRuleContext {
		public MethodTailContext methodTail() {
			return getRuleContext(MethodTailContext.class,0);
		}
		public MethodTailOptionalContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_methodTailOptional; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterMethodTailOptional(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitMethodTailOptional(this);
		}
	}

	public final MethodTailOptionalContext methodTailOptional() throws RecognitionException {
		MethodTailOptionalContext _localctx = new MethodTailOptionalContext(_ctx, getState());
		enterRule(_localctx, 134, RULE_methodTailOptional);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(631);
			methodTail();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VmethodHeadApplicationTailContext extends ParserRuleContext {
		public VapplicationArgsContext vapplicationArgs() {
			return getRuleContext(VapplicationArgsContext.class,0);
		}
		public TerminalNode EOL() { return getToken(EoParser.EOL, 0); }
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public HapplicationTailContext happlicationTail() {
			return getRuleContext(HapplicationTailContext.class,0);
		}
		public VmethodHeadApplicationTailContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vmethodHeadApplicationTail; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVmethodHeadApplicationTail(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVmethodHeadApplicationTail(this);
		}
	}

	public final VmethodHeadApplicationTailContext vmethodHeadApplicationTail() throws RecognitionException {
		VmethodHeadApplicationTailContext _localctx = new VmethodHeadApplicationTailContext(_ctx, getState());
		enterRule(_localctx, 136, RULE_vmethodHeadApplicationTail);
		int _la;
		try {
			setState(646);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,79,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(634);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(633);
					oname();
					}
				}

				setState(638);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,77,_ctx) ) {
				case 1:
					{
					setState(636);
					vapplicationArgs();
					}
					break;
				case 2:
					{
					setState(637);
					match(EOL);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(640);
				happlicationTail();
				setState(642);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(641);
					oname();
					}
				}

				setState(644);
				match(EOL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VmethodHeadVapplicationContext extends ParserRuleContext {
		public VapplicationArgsContext vapplicationArgs() {
			return getRuleContext(VapplicationArgsContext.class,0);
		}
		public ApplicableContext applicable() {
			return getRuleContext(ApplicableContext.class,0);
		}
		public HmethodContext hmethod() {
			return getRuleContext(HmethodContext.class,0);
		}
		public OnameContext oname() {
			return getRuleContext(OnameContext.class,0);
		}
		public ReversedContext reversed() {
			return getRuleContext(ReversedContext.class,0);
		}
		public VapplicationArgsReversedContext vapplicationArgsReversed() {
			return getRuleContext(VapplicationArgsReversedContext.class,0);
		}
		public VmethodHeadVapplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vmethodHeadVapplication; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterVmethodHeadVapplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitVmethodHeadVapplication(this);
		}
	}

	public final VmethodHeadVapplicationContext vmethodHeadVapplication() throws RecognitionException {
		VmethodHeadVapplicationContext _localctx = new VmethodHeadVapplicationContext(_ctx, getState());
		enterRule(_localctx, 138, RULE_vmethodHeadVapplication);
		int _la;
		try {
			setState(663);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(650);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
				case 1:
					{
					setState(648);
					applicable();
					}
					break;
				case 2:
					{
					setState(649);
					hmethod();
					}
					break;
				}
				setState(653);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(652);
					oname();
					}
				}

				setState(655);
				vapplicationArgs();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(657);
				reversed();
				setState(659);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SPACE) {
					{
					setState(658);
					oname();
					}
				}

				setState(661);
				vapplicationArgsReversed();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MethodTailContext extends ParserRuleContext {
		public TerminalNode DOT() { return getToken(EoParser.DOT, 0); }
		public FinisherContext finisher() {
			return getRuleContext(FinisherContext.class,0);
		}
		public MethodTailContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_methodTail; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterMethodTail(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitMethodTail(this);
		}
	}

	public final MethodTailContext methodTail() throws RecognitionException {
		MethodTailContext _localctx = new MethodTailContext(_ctx, getState());
		enterRule(_localctx, 140, RULE_methodTail);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(665);
			match(DOT);
			setState(666);
			finisher();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class BeginnerContext extends ParserRuleContext {
		public TerminalNode STAR() { return getToken(EoParser.STAR, 0); }
		public TerminalNode ROOT() { return getToken(EoParser.ROOT, 0); }
		public TerminalNode HOME() { return getToken(EoParser.HOME, 0); }
		public TerminalNode XI() { return getToken(EoParser.XI, 0); }
		public DataContext data() {
			return getRuleContext(DataContext.class,0);
		}
		public BeginnerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_beginner; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterBeginner(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitBeginner(this);
		}
	}

	public final BeginnerContext beginner() throws RecognitionException {
		BeginnerContext _localctx = new BeginnerContext(_ctx, getState());
		enterRule(_localctx, 142, RULE_beginner);
		try {
			setState(673);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STAR:
				enterOuterAlt(_localctx, 1);
				{
				setState(668);
				match(STAR);
				}
				break;
			case ROOT:
				enterOuterAlt(_localctx, 2);
				{
				setState(669);
				match(ROOT);
				}
				break;
			case HOME:
				enterOuterAlt(_localctx, 3);
				{
				setState(670);
				match(HOME);
				}
				break;
			case XI:
				enterOuterAlt(_localctx, 4);
				{
				setState(671);
				match(XI);
				}
				break;
			case BYTES:
			case STRING:
			case INT:
			case FLOAT:
			case HEX:
			case TEXT:
				enterOuterAlt(_localctx, 5);
				{
				setState(672);
				data();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class FinisherContext extends ParserRuleContext {
		public TerminalNode NAME() { return getToken(EoParser.NAME, 0); }
		public TerminalNode PHI() { return getToken(EoParser.PHI, 0); }
		public TerminalNode RHO() { return getToken(EoParser.RHO, 0); }
		public FinisherContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_finisher; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterFinisher(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitFinisher(this);
		}
	}

	public final FinisherContext finisher() throws RecognitionException {
		FinisherContext _localctx = new FinisherContext(_ctx, getState());
		enterRule(_localctx, 144, RULE_finisher);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(675);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1076887552L) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ReversedContext extends ParserRuleContext {
		public FinisherContext finisher() {
			return getRuleContext(FinisherContext.class,0);
		}
		public TerminalNode DOT() { return getToken(EoParser.DOT, 0); }
		public ReversedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reversed; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterReversed(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitReversed(this);
		}
	}

	public final ReversedContext reversed() throws RecognitionException {
		ReversedContext _localctx = new ReversedContext(_ctx, getState());
		enterRule(_localctx, 146, RULE_reversed);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(677);
			finisher();
			setState(678);
			match(DOT);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class OnameContext extends ParserRuleContext {
		public SuffixContext suffix() {
			return getRuleContext(SuffixContext.class,0);
		}
		public TerminalNode CONST() { return getToken(EoParser.CONST, 0); }
		public OnameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_oname; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterOname(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitOname(this);
		}
	}

	public final OnameContext oname() throws RecognitionException {
		OnameContext _localctx = new OnameContext(_ctx, getState());
		enterRule(_localctx, 148, RULE_oname);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(680);
			suffix();
			setState(682);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONST) {
				{
				setState(681);
				match(CONST);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class AnameContext extends ParserRuleContext {
		public TerminalNode SPACE() { return getToken(EoParser.SPACE, 0); }
		public List ARROW() { return getTokens(EoParser.ARROW); }
		public TerminalNode ARROW(int i) {
			return getToken(EoParser.ARROW, i);
		}
		public AnameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aname; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterAname(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitAname(this);
		}
	}

	public final AnameContext aname() throws RecognitionException {
		AnameContext _localctx = new AnameContext(_ctx, getState());
		enterRule(_localctx, 150, RULE_aname);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(684);
			match(SPACE);
			setState(685);
			match(ARROW);
			setState(686);
			match(ARROW);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class SuffixContext extends ParserRuleContext {
		public SpacedArrowContext spacedArrow() {
			return getRuleContext(SpacedArrowContext.class,0);
		}
		public TerminalNode PHI() { return getToken(EoParser.PHI, 0); }
		public TerminalNode NAME() { return getToken(EoParser.NAME, 0); }
		public SuffixContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_suffix; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterSuffix(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitSuffix(this);
		}
	}

	public final SuffixContext suffix() throws RecognitionException {
		SuffixContext _localctx = new SuffixContext(_ctx, getState());
		enterRule(_localctx, 152, RULE_suffix);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(688);
			spacedArrow();
			setState(689);
			_la = _input.LA(1);
			if ( !(_la==PHI || _la==NAME) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class SpacedArrowContext extends ParserRuleContext {
		public List SPACE() { return getTokens(EoParser.SPACE); }
		public TerminalNode SPACE(int i) {
			return getToken(EoParser.SPACE, i);
		}
		public TerminalNode ARROW() { return getToken(EoParser.ARROW, 0); }
		public SpacedArrowContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_spacedArrow; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterSpacedArrow(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitSpacedArrow(this);
		}
	}

	public final SpacedArrowContext spacedArrow() throws RecognitionException {
		SpacedArrowContext _localctx = new SpacedArrowContext(_ctx, getState());
		enterRule(_localctx, 154, RULE_spacedArrow);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(691);
			match(SPACE);
			setState(692);
			match(ARROW);
			setState(693);
			match(SPACE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ScopeContext extends ParserRuleContext {
		public TerminalNode LB() { return getToken(EoParser.LB, 0); }
		public TerminalNode RB() { return getToken(EoParser.RB, 0); }
		public HapplicationContext happlication() {
			return getRuleContext(HapplicationContext.class,0);
		}
		public HanonymContext hanonym() {
			return getRuleContext(HanonymContext.class,0);
		}
		public ScopeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_scope; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterScope(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitScope(this);
		}
	}

	public final ScopeContext scope() throws RecognitionException {
		ScopeContext _localctx = new ScopeContext(_ctx, getState());
		enterRule(_localctx, 156, RULE_scope);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(695);
			match(LB);
			setState(698);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) {
			case 1:
				{
				setState(696);
				happlication();
				}
				break;
			case 2:
				{
				setState(697);
				hanonym();
				}
				break;
			}
			setState(700);
			match(RB);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class AsContext extends ParserRuleContext {
		public TerminalNode COLON() { return getToken(EoParser.COLON, 0); }
		public TerminalNode NAME() { return getToken(EoParser.NAME, 0); }
		public TerminalNode INT() { return getToken(EoParser.INT, 0); }
		public AsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_as; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterAs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitAs(this);
		}
	}

	public final AsContext as() throws RecognitionException {
		AsContext _localctx = new AsContext(_ctx, getState());
		enterRule(_localctx, 158, RULE_as);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(702);
			match(COLON);
			setState(703);
			_la = _input.LA(1);
			if ( !(_la==INT || _la==NAME) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class DataContext extends ParserRuleContext {
		public TerminalNode BYTES() { return getToken(EoParser.BYTES, 0); }
		public TerminalNode TEXT() { return getToken(EoParser.TEXT, 0); }
		public TerminalNode STRING() { return getToken(EoParser.STRING, 0); }
		public TerminalNode INT() { return getToken(EoParser.INT, 0); }
		public TerminalNode FLOAT() { return getToken(EoParser.FLOAT, 0); }
		public TerminalNode HEX() { return getToken(EoParser.HEX, 0); }
		public DataContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_data; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).enterData(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof EoListener ) ((EoListener)listener).exitData(this);
		}
	}

	public final DataContext data() throws RecognitionException {
		DataContext _localctx = new DataContext(_ctx, getState());
		enterRule(_localctx, 160, RULE_data);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(705);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 3187671040L) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
		switch (ruleIndex) {
		case 58:
			return onlyphi_sempred((OnlyphiContext)_localctx, predIndex);
		case 66:
			return vmethodHead_sempred((VmethodHeadContext)_localctx, predIndex);
		}
		return true;
	}
	private boolean onlyphi_sempred(OnlyphiContext _localctx, int predIndex) {
		switch (predIndex) {
		case 0:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean vmethodHead_sempred(VmethodHeadContext _localctx, int predIndex) {
		switch (predIndex) {
		case 1:
			return precpred(_ctx, 4);
		}
		return true;
	}

	public static final String _serializedATN =
		"\u0004\u0001!\u02c4\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
		"\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
		"\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+
		"\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+
		"\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+
		"\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"+
		"\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"+
		"\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"+
		"\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b"+
		"\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e"+
		"\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002"+
		"#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+
		"(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+
		"-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u00071\u0002"+
		"2\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u00076\u0002"+
		"7\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007;\u0002"+
		"<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007@\u0002"+
		"A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002"+
		"F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002"+
		"K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002"+
		"P\u0007P\u0001\u0000\u0003\u0000\u00a4\b\u0000\u0001\u0000\u0003\u0000"+
		"\u00a7\b\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001"+
		"\u0001\u0001\u0001\u0002\u0001\u0002\u0005\u0002\u00b1\b\u0002\n\u0002"+
		"\f\u0002\u00b4\t\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0003"+
		"\u0001\u0003\u0005\u0003\u00bb\b\u0003\n\u0003\f\u0003\u00be\t\u0003\u0001"+
		"\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0003\u0004\u00c5"+
		"\b\u0004\u0005\u0004\u00c7\b\u0004\n\u0004\f\u0004\u00ca\t\u0004\u0001"+
		"\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0005"+
		"\u0006\u00d2\b\u0006\n\u0006\f\u0006\u00d5\t\u0006\u0001\u0007\u0004\u0007"+
		"\u00d8\b\u0007\u000b\u0007\f\u0007\u00d9\u0001\b\u0001\b\u0003\b\u00de"+
		"\b\b\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u00e4\b\t\u0001\t\u0001\t"+
		"\u0003\t\u00e8\b\t\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001"+
		"\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u00f5\b\f\u0001"+
		"\f\u0001\f\u0003\f\u00f9\b\f\u0001\r\u0001\r\u0003\r\u00fd\b\r\u0001\u000e"+
		"\u0001\u000e\u0003\u000e\u0101\b\u000e\u0001\u000f\u0001\u000f\u0001\u000f"+
		"\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011"+
		"\u0001\u0011\u0003\u0011\u010d\b\u0011\u0001\u0012\u0001\u0012\u0001\u0012"+
		"\u0001\u0012\u0003\u0012\u0113\b\u0012\u0001\u0012\u0001\u0012\u0003\u0012"+
		"\u0117\b\u0012\u0001\u0012\u0005\u0012\u011a\b\u0012\n\u0012\f\u0012\u011d"+
		"\t\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001"+
		"\u0013\u0005\u0013\u0125\b\u0013\n\u0013\f\u0013\u0128\t\u0013\u0003\u0013"+
		"\u012a\b\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0015"+
		"\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016"+
		"\u0005\u0016\u0137\b\u0016\n\u0016\f\u0016\u013a\t\u0016\u0001\u0017\u0001"+
		"\u0017\u0003\u0017\u013e\b\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0003"+
		"\u0017\u0143\b\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0003"+
		"\u0018\u0149\b\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0003"+
		"\u0019\u014f\b\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001"+
		"\u001b\u0003\u001b\u0156\b\u001b\u0001\u001c\u0001\u001c\u0003\u001c\u015a"+
		"\b\u001c\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001"+
		"\u001e\u0004\u001e\u0162\b\u001e\u000b\u001e\f\u001e\u0163\u0001\u001e"+
		"\u0001\u001e\u0004\u001e\u0168\b\u001e\u000b\u001e\f\u001e\u0169\u0003"+
		"\u001e\u016c\b\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u0171"+
		"\b\u001f\u0001 \u0001 \u0001!\u0001!\u0001!\u0003!\u0178\b!\u0001\"\u0001"+
		"\"\u0001\"\u0001\"\u0001\"\u0003\"\u017f\b\"\u0001\"\u0001\"\u0003\"\u0183"+
		"\b\"\u0001#\u0001#\u0001#\u0003#\u0188\b#\u0001$\u0001$\u0003$\u018c\b"+
		"$\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001"+
		"\'\u0001\'\u0001\'\u0003\'\u019a\b\'\u0001\'\u0001\'\u0001(\u0004(\u019f"+
		"\b(\u000b(\f(\u01a0\u0001(\u0004(\u01a4\b(\u000b(\f(\u01a5\u0003(\u01a8"+
		"\b(\u0001)\u0001)\u0001)\u0001)\u0003)\u01ae\b)\u0001*\u0001*\u0001*\u0001"+
		"*\u0003*\u01b4\b*\u0001*\u0001*\u0003*\u01b8\b*\u0003*\u01ba\b*\u0001"+
		"+\u0001+\u0001+\u0003+\u01bf\b+\u0001+\u0001+\u0001+\u0001+\u0001+\u0003"+
		"+\u01c6\b+\u0001+\u0001+\u0003+\u01ca\b+\u0001,\u0001,\u0001,\u0001,\u0003"+
		",\u01d0\b,\u0001-\u0001-\u0001-\u0001-\u0003-\u01d6\b-\u0001.\u0001.\u0001"+
		".\u0001.\u0001.\u0001.\u0003.\u01de\b.\u0001.\u0001.\u0003.\u01e2\b.\u0001"+
		"/\u0001/\u0001/\u0001/\u0001/\u0003/\u01e9\b/\u00010\u00010\u00030\u01ed"+
		"\b0\u00011\u00011\u00031\u01f1\b1\u00011\u00011\u00012\u00012\u00012\u0001"+
		"2\u00032\u01f9\b2\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u0003"+
		"3\u0202\b3\u00013\u00013\u00033\u0206\b3\u00014\u00014\u00014\u00015\u0001"+
		"5\u00015\u00015\u00015\u00016\u00016\u00016\u00016\u00016\u00016\u0003"+
		"6\u0216\b6\u00036\u0218\b6\u00017\u00017\u00017\u00017\u00017\u00017\u0003"+
		"7\u0220\b7\u00037\u0222\b7\u00018\u00018\u00048\u0226\b8\u000b8\f8\u0227"+
		"\u00019\u00019\u00039\u022c\b9\u0001:\u0001:\u0001:\u0001:\u0001:\u0003"+
		":\u0233\b:\u0001:\u0001:\u0001:\u0001:\u0005:\u0239\b:\n:\f:\u023c\t:"+
		"\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001<\u0001<\u0001<\u0003"+
		"<\u0247\b<\u0001<\u0001<\u0001<\u0001=\u0001=\u0003=\u024e\b=\u0001>\u0001"+
		">\u0003>\u0252\b>\u0001?\u0001?\u0004?\u0256\b?\u000b?\f?\u0257\u0001"+
		"@\u0001@\u0003@\u025c\b@\u0001A\u0001A\u0001A\u0001B\u0001B\u0001B\u0001"+
		"B\u0001B\u0003B\u0266\bB\u0003B\u0268\bB\u0001B\u0001B\u0001B\u0003B\u026d"+
		"\bB\u0001B\u0001B\u0001B\u0001B\u0005B\u0273\bB\nB\fB\u0276\tB\u0001C"+
		"\u0001C\u0001D\u0003D\u027b\bD\u0001D\u0001D\u0003D\u027f\bD\u0001D\u0001"+
		"D\u0003D\u0283\bD\u0001D\u0001D\u0003D\u0287\bD\u0001E\u0001E\u0003E\u028b"+
		"\bE\u0001E\u0003E\u028e\bE\u0001E\u0001E\u0001E\u0001E\u0003E\u0294\b"+
		"E\u0001E\u0001E\u0003E\u0298\bE\u0001F\u0001F\u0001F\u0001G\u0001G\u0001"+
		"G\u0001G\u0001G\u0003G\u02a2\bG\u0001H\u0001H\u0001I\u0001I\u0001I\u0001"+
		"J\u0001J\u0003J\u02ab\bJ\u0001K\u0001K\u0001K\u0001K\u0001L\u0001L\u0001"+
		"L\u0001M\u0001M\u0001M\u0001M\u0001N\u0001N\u0001N\u0003N\u02bb\bN\u0001"+
		"N\u0001N\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0000\u0002t\u0084"+
		"Q\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a"+
		"\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082"+
		"\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a"+
		"\u009c\u009e\u00a0\u0000\u0005\u0003\u0000\u0005\u0005\u0014\u0014\u001e"+
		"\u001e\u0002\u0000\u0014\u0015\u001e\u001e\u0002\u0000\u0014\u0014\u001e"+
		"\u001e\u0002\u0000\u001b\u001b\u001e\u001e\u0002\u0000\u0019\u001d\u001f"+
		"\u001f\u02d8\u0000\u00a3\u0001\u0000\u0000\u0000\u0002\u00ab\u0001\u0000"+
		"\u0000\u0000\u0004\u00b2\u0001\u0000\u0000\u0000\u0006\u00bc\u0001\u0000"+
		"\u0000\u0000\b\u00c8\u0001\u0000\u0000\u0000\n\u00cd\u0001\u0000\u0000"+
		"\u0000\f\u00d3\u0001\u0000\u0000\u0000\u000e\u00d7\u0001\u0000\u0000\u0000"+
		"\u0010\u00dd\u0001\u0000\u0000\u0000\u0012\u00df\u0001\u0000\u0000\u0000"+
		"\u0014\u00e9\u0001\u0000\u0000\u0000\u0016\u00ec\u0001\u0000\u0000\u0000"+
		"\u0018\u00f8\u0001\u0000\u0000\u0000\u001a\u00fc\u0001\u0000\u0000\u0000"+
		"\u001c\u00fe\u0001\u0000\u0000\u0000\u001e\u0102\u0001\u0000\u0000\u0000"+
		" \u0106\u0001\u0000\u0000\u0000\"\u010c\u0001\u0000\u0000\u0000$\u010e"+
		"\u0001\u0000\u0000\u0000&\u0120\u0001\u0000\u0000\u0000(\u012d\u0001\u0000"+
		"\u0000\u0000*\u012f\u0001\u0000\u0000\u0000,\u0133\u0001\u0000\u0000\u0000"+
		".\u0142\u0001\u0000\u0000\u00000\u0148\u0001\u0000\u0000\u00002\u014e"+
		"\u0001\u0000\u0000\u00004\u0150\u0001\u0000\u0000\u00006\u0155\u0001\u0000"+
		"\u0000\u00008\u0159\u0001\u0000\u0000\u0000:\u015b\u0001\u0000\u0000\u0000"+
		"<\u016b\u0001\u0000\u0000\u0000>\u016d\u0001\u0000\u0000\u0000@\u0172"+
		"\u0001\u0000\u0000\u0000B\u0177\u0001\u0000\u0000\u0000D\u0182\u0001\u0000"+
		"\u0000\u0000F\u0187\u0001\u0000\u0000\u0000H\u0189\u0001\u0000\u0000\u0000"+
		"J\u018d\u0001\u0000\u0000\u0000L\u0190\u0001\u0000\u0000\u0000N\u0195"+
		"\u0001\u0000\u0000\u0000P\u01a7\u0001\u0000\u0000\u0000R\u01ad\u0001\u0000"+
		"\u0000\u0000T\u01b9\u0001\u0000\u0000\u0000V\u01c9\u0001\u0000\u0000\u0000"+
		"X\u01cf\u0001\u0000\u0000\u0000Z\u01d5\u0001\u0000\u0000\u0000\\\u01e1"+
		"\u0001\u0000\u0000\u0000^\u01e3\u0001\u0000\u0000\u0000`\u01ea\u0001\u0000"+
		"\u0000\u0000b\u01ee\u0001\u0000\u0000\u0000d\u01f8\u0001\u0000\u0000\u0000"+
		"f\u0205\u0001\u0000\u0000\u0000h\u0207\u0001\u0000\u0000\u0000j\u020a"+
		"\u0001\u0000\u0000\u0000l\u0217\u0001\u0000\u0000\u0000n\u0221\u0001\u0000"+
		"\u0000\u0000p\u0223\u0001\u0000\u0000\u0000r\u022b\u0001\u0000\u0000\u0000"+
		"t\u022d\u0001\u0000\u0000\u0000v\u023d\u0001\u0000\u0000\u0000x\u0240"+
		"\u0001\u0000\u0000\u0000z\u024d\u0001\u0000\u0000\u0000|\u024f\u0001\u0000"+
		"\u0000\u0000~\u0253\u0001\u0000\u0000\u0000\u0080\u025b\u0001\u0000\u0000"+
		"\u0000\u0082\u025d\u0001\u0000\u0000\u0000\u0084\u026c\u0001\u0000\u0000"+
		"\u0000\u0086\u0277\u0001\u0000\u0000\u0000\u0088\u0286\u0001\u0000\u0000"+
		"\u0000\u008a\u0297\u0001\u0000\u0000\u0000\u008c\u0299\u0001\u0000\u0000"+
		"\u0000\u008e\u02a1\u0001\u0000\u0000\u0000\u0090\u02a3\u0001\u0000\u0000"+
		"\u0000\u0092\u02a5\u0001\u0000\u0000\u0000\u0094\u02a8\u0001\u0000\u0000"+
		"\u0000\u0096\u02ac\u0001\u0000\u0000\u0000\u0098\u02b0\u0001\u0000\u0000"+
		"\u0000\u009a\u02b3\u0001\u0000\u0000\u0000\u009c\u02b7\u0001\u0000\u0000"+
		"\u0000\u009e\u02be\u0001\u0000\u0000\u0000\u00a0\u02c1\u0001\u0000\u0000"+
		"\u0000\u00a2\u00a4\u0003\u0004\u0002\u0000\u00a3\u00a2\u0001\u0000\u0000"+
		"\u0000\u00a3\u00a4\u0001\u0000\u0000\u0000\u00a4\u00a6\u0001\u0000\u0000"+
		"\u0000\u00a5\u00a7\u0003\u0006\u0003\u0000\u00a6\u00a5\u0001\u0000\u0000"+
		"\u0000\u00a6\u00a7\u0001\u0000\u0000\u0000\u00a7\u00a8\u0001\u0000\u0000"+
		"\u0000\u00a8\u00a9\u0003\b\u0004\u0000\u00a9\u00aa\u0005\u0000\u0000\u0001"+
		"\u00aa\u0001\u0001\u0000\u0000\u0000\u00ab\u00ac\u0005\u0018\u0000\u0000"+
		"\u00ac\u00ad\u0005\u0018\u0000\u0000\u00ad\u0003\u0001\u0000\u0000\u0000"+
		"\u00ae\u00af\u0005\u0001\u0000\u0000\u00af\u00b1\u0005\u0018\u0000\u0000"+
		"\u00b0\u00ae\u0001\u0000\u0000\u0000\u00b1\u00b4\u0001\u0000\u0000\u0000"+
		"\u00b2\u00b0\u0001\u0000\u0000\u0000\u00b2\u00b3\u0001\u0000\u0000\u0000"+
		"\u00b3\u00b5\u0001\u0000\u0000\u0000\u00b4\u00b2\u0001\u0000\u0000\u0000"+
		"\u00b5\u00b6\u0005\u0001\u0000\u0000\u00b6\u00b7\u0003\u0002\u0001\u0000"+
		"\u00b7\u0005\u0001\u0000\u0000\u0000\u00b8\u00b9\u0005\u0002\u0000\u0000"+
		"\u00b9\u00bb\u0005\u0018\u0000\u0000\u00ba\u00b8\u0001\u0000\u0000\u0000"+
		"\u00bb\u00be\u0001\u0000\u0000\u0000\u00bc\u00ba\u0001\u0000\u0000\u0000"+
		"\u00bc\u00bd\u0001\u0000\u0000\u0000\u00bd\u00bf\u0001\u0000\u0000\u0000"+
		"\u00be\u00bc\u0001\u0000\u0000\u0000\u00bf\u00c0\u0005\u0002\u0000\u0000"+
		"\u00c0\u00c1\u0003\u0002\u0001\u0000\u00c1\u0007\u0001\u0000\u0000\u0000"+
		"\u00c2\u00c4\u0003\u0010\b\u0000\u00c3\u00c5\u0005\u0018\u0000\u0000\u00c4"+
		"\u00c3\u0001\u0000\u0000\u0000\u00c4\u00c5\u0001\u0000\u0000\u0000\u00c5"+
		"\u00c7\u0001\u0000\u0000\u0000\u00c6\u00c2\u0001\u0000\u0000\u0000\u00c7"+
		"\u00ca\u0001\u0000\u0000\u0000\u00c8\u00c6\u0001\u0000\u0000\u0000\u00c8"+
		"\u00c9\u0001\u0000\u0000\u0000\u00c9\u00cb\u0001\u0000\u0000\u0000\u00ca"+
		"\u00c8\u0001\u0000\u0000\u0000\u00cb\u00cc\u0003\u0010\b\u0000\u00cc\t"+
		"\u0001\u0000\u0000\u0000\u00cd\u00ce\u0005\u0001\u0000\u0000\u00ce\u00cf"+
		"\u0005\u0018\u0000\u0000\u00cf\u000b\u0001\u0000\u0000\u0000\u00d0\u00d2"+
		"\u0003\n\u0005\u0000\u00d1\u00d0\u0001\u0000\u0000\u0000\u00d2\u00d5\u0001"+
		"\u0000\u0000\u0000\u00d3\u00d1\u0001\u0000\u0000\u0000\u00d3\u00d4\u0001"+
		"\u0000\u0000\u0000\u00d4\r\u0001\u0000\u0000\u0000\u00d5\u00d3\u0001\u0000"+
		"\u0000\u0000\u00d6\u00d8\u0003\n\u0005\u0000\u00d7\u00d6\u0001\u0000\u0000"+
		"\u0000\u00d8\u00d9\u0001\u0000\u0000\u0000\u00d9\u00d7\u0001\u0000\u0000"+
		"\u0000\u00d9\u00da\u0001\u0000\u0000\u0000\u00da\u000f\u0001\u0000\u0000"+
		"\u0000\u00db\u00de\u0003\u0014\n\u0000\u00dc\u00de\u0003\u0012\t\u0000"+
		"\u00dd\u00db\u0001\u0000\u0000\u0000\u00dd\u00dc\u0001\u0000\u0000\u0000"+
		"\u00de\u0011\u0001\u0000\u0000\u0000\u00df\u00e7\u0003\f\u0006\u0000\u00e0"+
		"\u00e8\u0003.\u0017\u0000\u00e1\u00e4\u0003|>\u0000\u00e2\u00e4\u0003"+
		"\u001c\u000e\u0000\u00e3\u00e1\u0001\u0000\u0000\u0000\u00e3\u00e2\u0001"+
		"\u0000\u0000\u0000\u00e4\u00e5\u0001\u0000\u0000\u0000\u00e5\u00e6\u0005"+
		"\u0018\u0000\u0000\u00e6\u00e8\u0001\u0000\u0000\u0000\u00e7\u00e0\u0001"+
		"\u0000\u0000\u0000\u00e7\u00e3\u0001\u0000\u0000\u0000\u00e8\u0013\u0001"+
		"\u0000\u0000\u0000\u00e9\u00ea\u0003\u000e\u0007\u0000\u00ea\u00eb\u0003"+
		"\u0018\f\u0000\u00eb\u0015\u0001\u0000\u0000\u0000\u00ec\u00ed\u0003\f"+
		"\u0006\u0000\u00ed\u00ee\u0003\u0018\f\u0000\u00ee\u0017\u0001\u0000\u0000"+
		"\u0000\u00ef\u00f9\u0003 \u0010\u0000\u00f0\u00f5\u0003\u001e\u000f\u0000"+
		"\u00f1\u00f2\u0003r9\u0000\u00f2\u00f3\u0003\u0094J\u0000\u00f3\u00f5"+
		"\u0001\u0000\u0000\u0000\u00f4\u00f0\u0001\u0000\u0000\u0000\u00f4\u00f1"+
		"\u0001\u0000\u0000\u0000\u00f5\u00f6\u0001\u0000\u0000\u0000\u00f6\u00f7"+
		"\u0005\u0018\u0000\u0000\u00f7\u00f9\u0001\u0000\u0000\u0000\u00f8\u00ef"+
		"\u0001\u0000\u0000\u0000\u00f8\u00f4\u0001\u0000\u0000\u0000\u00f9\u0019"+
		"\u0001\u0000\u0000\u0000\u00fa\u00fd\u0003\u008eG\u0000\u00fb\u00fd\u0003"+
		"\u0090H\u0000\u00fc\u00fa\u0001\u0000\u0000\u0000\u00fc\u00fb\u0001\u0000"+
		"\u0000\u0000\u00fd\u001b\u0001\u0000\u0000\u0000\u00fe\u0100\u0003\u001a"+
		"\r\u0000\u00ff\u0101\u0003\u0094J\u0000\u0100\u00ff\u0001\u0000\u0000"+
		"\u0000\u0100\u0101\u0001\u0000\u0000\u0000\u0101\u001d\u0001\u0000\u0000"+
		"\u0000\u0102\u0103\u0003&\u0013\u0000\u0103\u0104\u0003\u0098L\u0000\u0104"+
		"\u0105\u0003*\u0015\u0000\u0105\u001f\u0001\u0000\u0000\u0000\u0106\u0107"+
		"\u0003&\u0013\u0000\u0107\u0108\u0003\u0094J\u0000\u0108\u0109\u0003\""+
		"\u0011\u0000\u0109!\u0001\u0000\u0000\u0000\u010a\u010d\u0003$\u0012\u0000"+
		"\u010b\u010d\u0005\u0018\u0000\u0000\u010c\u010a\u0001\u0000\u0000\u0000"+
		"\u010c\u010b\u0001\u0000\u0000\u0000\u010d#\u0001\u0000\u0000\u0000\u010e"+
		"\u010f\u0005\u0018\u0000\u0000\u010f\u0112\u0005 \u0000\u0000\u0110\u0113"+
		"\u0003\u0012\t\u0000\u0111\u0113\u0003\u0016\u000b\u0000\u0112\u0110\u0001"+
		"\u0000\u0000\u0000\u0112\u0111\u0001\u0000\u0000\u0000\u0113\u011b\u0001"+
		"\u0000\u0000\u0000\u0114\u011a\u0003\u0012\t\u0000\u0115\u0117\u0005\u0018"+
		"\u0000\u0000\u0116\u0115\u0001\u0000\u0000\u0000\u0116\u0117\u0001\u0000"+
		"\u0000\u0000\u0117\u0118\u0001\u0000\u0000\u0000\u0118\u011a\u0003\u0016"+
		"\u000b\u0000\u0119\u0114\u0001\u0000\u0000\u0000\u0119\u0116\u0001\u0000"+
		"\u0000\u0000\u011a\u011d\u0001\u0000\u0000\u0000\u011b\u0119\u0001\u0000"+
		"\u0000\u0000\u011b\u011c\u0001\u0000\u0000\u0000\u011c\u011e\u0001\u0000"+
		"\u0000\u0000\u011d\u011b\u0001\u0000\u0000\u0000\u011e\u011f\u0005!\u0000"+
		"\u0000\u011f%\u0001\u0000\u0000\u0000\u0120\u0129\u0005\u0010\u0000\u0000"+
		"\u0121\u0126\u0003(\u0014\u0000\u0122\u0123\u0005\u000e\u0000\u0000\u0123"+
		"\u0125\u0003(\u0014\u0000\u0124\u0122\u0001\u0000\u0000\u0000\u0125\u0128"+
		"\u0001\u0000\u0000\u0000\u0126\u0124\u0001\u0000\u0000\u0000\u0126\u0127"+
		"\u0001\u0000\u0000\u0000\u0127\u012a\u0001\u0000\u0000\u0000\u0128\u0126"+
		"\u0001\u0000\u0000\u0000\u0129\u0121\u0001\u0000\u0000\u0000\u0129\u012a"+
		"\u0001\u0000\u0000\u0000\u012a\u012b\u0001\u0000\u0000\u0000\u012b\u012c"+
		"\u0005\u0011\u0000\u0000\u012c\'\u0001\u0000\u0000\u0000\u012d\u012e\u0005"+
		"\u001e\u0000\u0000\u012e)\u0001\u0000\u0000\u0000\u012f\u0130\u0005\u000e"+
		"\u0000\u0000\u0130\u0131\u0005\u0007\u0000\u0000\u0131\u0132\u0003,\u0016"+
		"\u0000\u0132+\u0001\u0000\u0000\u0000\u0133\u0138\u0005\u001e\u0000\u0000"+
		"\u0134\u0135\u0005\u000f\u0000\u0000\u0135\u0137\u0005\u001e\u0000\u0000"+
		"\u0136\u0134\u0001\u0000\u0000\u0000\u0137\u013a\u0001\u0000\u0000\u0000"+
		"\u0138\u0136\u0001\u0000\u0000\u0000\u0138\u0139\u0001\u0000\u0000\u0000"+
		"\u0139-\u0001\u0000\u0000\u0000\u013a\u0138\u0001\u0000\u0000\u0000\u013b"+
		"\u013d\u00032\u0019\u0000\u013c\u013e\u0003\u0094J\u0000\u013d\u013c\u0001"+
		"\u0000\u0000\u0000\u013d\u013e\u0001\u0000\u0000\u0000\u013e\u013f\u0001"+
		"\u0000\u0000\u0000\u013f\u0140\u0005\u0018\u0000\u0000\u0140\u0143\u0001"+
		"\u0000\u0000\u0000\u0141\u0143\u0003D\"\u0000\u0142\u013b\u0001\u0000"+
		"\u0000\u0000\u0142\u0141\u0001\u0000\u0000\u0000\u0143/\u0001\u0000\u0000"+
		"\u0000\u0144\u0145\u00036\u001b\u0000\u0145\u0146\u0003<\u001e\u0000\u0146"+
		"\u0149\u0001\u0000\u0000\u0000\u0147\u0149\u00034\u001a\u0000\u0148\u0144"+
		"\u0001\u0000\u0000\u0000\u0148\u0147\u0001\u0000\u0000\u0000\u01491\u0001"+
		"\u0000\u0000\u0000\u014a\u014b\u00038\u001c\u0000\u014b\u014c\u0003<\u001e"+
		"\u0000\u014c\u014f\u0001\u0000\u0000\u0000\u014d\u014f\u00034\u001a\u0000"+
		"\u014e\u014a\u0001\u0000\u0000\u0000\u014e\u014d\u0001\u0000\u0000\u0000"+
		"\u014f3\u0001\u0000\u0000\u0000\u0150\u0151\u0003\u0092I\u0000\u0151\u0152"+
		"\u0003>\u001f\u0000\u01525\u0001\u0000\u0000\u0000\u0153\u0156\u0003~"+
		"?\u0000\u0154\u0156\u0003:\u001d\u0000\u0155\u0153\u0001\u0000\u0000\u0000"+
		"\u0155\u0154\u0001\u0000\u0000\u0000\u01567\u0001\u0000\u0000\u0000\u0157"+
		"\u015a\u0003\u0082A\u0000\u0158\u015a\u00036\u001b\u0000\u0159\u0157\u0001"+
		"\u0000\u0000\u0000\u0159\u0158\u0001\u0000\u0000\u0000\u015a9\u0001\u0000"+
		"\u0000\u0000\u015b\u015c\u0007\u0000\u0000\u0000\u015c;\u0001\u0000\u0000"+
		"\u0000\u015d\u015e\u0005\u000e\u0000\u0000\u015e\u015f\u0003B!\u0000\u015f"+
		"\u0160\u0003\u009eO\u0000\u0160\u0162\u0001\u0000\u0000\u0000\u0161\u015d"+
		"\u0001\u0000\u0000\u0000\u0162\u0163\u0001\u0000\u0000\u0000\u0163\u0161"+
		"\u0001\u0000\u0000\u0000\u0163\u0164\u0001\u0000\u0000\u0000\u0164\u016c"+
		"\u0001\u0000\u0000\u0000\u0165\u0166\u0005\u000e\u0000\u0000\u0166\u0168"+
		"\u0003B!\u0000\u0167\u0165\u0001\u0000\u0000\u0000\u0168\u0169\u0001\u0000"+
		"\u0000\u0000\u0169\u0167\u0001\u0000\u0000\u0000\u0169\u016a\u0001\u0000"+
		"\u0000\u0000\u016a\u016c\u0001\u0000\u0000\u0000\u016b\u0161\u0001\u0000"+
		"\u0000\u0000\u016b\u0167\u0001\u0000\u0000\u0000\u016c=\u0001\u0000\u0000"+
		"\u0000\u016d\u016e\u0005\u000e\u0000\u0000\u016e\u0170\u0003@ \u0000\u016f"+
		"\u0171\u0003<\u001e\u0000\u0170\u016f\u0001\u0000\u0000\u0000\u0170\u0171"+
		"\u0001\u0000\u0000\u0000\u0171?\u0001\u0000\u0000\u0000\u0172\u0173\u0003"+
		"B!\u0000\u0173A\u0001\u0000\u0000\u0000\u0174\u0178\u0003\u001a\r\u0000"+
		"\u0175\u0178\u0003~?\u0000\u0176\u0178\u0003\u009cN\u0000\u0177\u0174"+
		"\u0001\u0000\u0000\u0000\u0177\u0175\u0001\u0000\u0000\u0000\u0177\u0176"+
		"\u0001\u0000\u0000\u0000\u0178C\u0001\u0000\u0000\u0000\u0179\u017a\u0003"+
		"H$\u0000\u017a\u017b\u0003L&\u0000\u017b\u0183\u0001\u0000\u0000\u0000"+
		"\u017c\u017e\u0003\u0092I\u0000\u017d\u017f\u0003\u0094J\u0000\u017e\u017d"+
		"\u0001\u0000\u0000\u0000\u017e\u017f\u0001\u0000\u0000\u0000\u017f\u0180"+
		"\u0001\u0000\u0000\u0000\u0180\u0181\u0003N\'\u0000\u0181\u0183\u0001"+
		"\u0000\u0000\u0000\u0182\u0179\u0001\u0000\u0000\u0000\u0182\u017c\u0001"+
		"\u0000\u0000\u0000\u0183E\u0001\u0000\u0000\u0000\u0184\u0188\u0003:\u001d"+
		"\u0000\u0185\u0188\u0003~?\u0000\u0186\u0188\u0003\u0082A\u0000\u0187"+
		"\u0184\u0001\u0000\u0000\u0000\u0187\u0185\u0001\u0000\u0000\u0000\u0187"+
		"\u0186\u0001\u0000\u0000\u0000\u0188G\u0001\u0000\u0000\u0000\u0189\u018b"+
		"\u0003F#\u0000\u018a\u018c\u0003\u0094J\u0000\u018b\u018a\u0001\u0000"+
		"\u0000\u0000\u018b\u018c\u0001\u0000\u0000\u0000\u018cI\u0001\u0000\u0000"+
		"\u0000\u018d\u018e\u0003F#\u0000\u018e\u018f\u0003\u009eO\u0000\u018f"+
		"K\u0001\u0000\u0000\u0000\u0190\u0191\u0005\u0018\u0000\u0000\u0191\u0192"+
		"\u0005 \u0000\u0000\u0192\u0193\u0003P(\u0000\u0193\u0194\u0005!\u0000"+
		"\u0000\u0194M\u0001\u0000\u0000\u0000\u0195\u0196\u0005\u0018\u0000\u0000"+
		"\u0196\u0197\u0005 \u0000\u0000\u0197\u0199\u0003X,\u0000\u0198\u019a"+
		"\u0003P(\u0000\u0199\u0198\u0001\u0000\u0000\u0000\u0199\u019a\u0001\u0000"+
		"\u0000\u0000\u019a\u019b\u0001\u0000\u0000\u0000\u019b\u019c\u0005!\u0000"+
		"\u0000\u019cO\u0001\u0000\u0000\u0000\u019d\u019f\u0003R)\u0000\u019e"+
		"\u019d\u0001\u0000\u0000\u0000\u019f\u01a0\u0001\u0000\u0000\u0000\u01a0"+
		"\u019e\u0001\u0000\u0000\u0000\u01a0\u01a1\u0001\u0000\u0000\u0000\u01a1"+
		"\u01a8\u0001\u0000\u0000\u0000\u01a2\u01a4\u0003X,\u0000\u01a3\u01a2\u0001"+
		"\u0000\u0000\u0000\u01a4\u01a5\u0001\u0000\u0000\u0000\u01a5\u01a3\u0001"+
		"\u0000\u0000\u0000\u01a5\u01a6\u0001\u0000\u0000\u0000\u01a6\u01a8\u0001"+
		"\u0000\u0000\u0000\u01a7\u019e\u0001\u0000\u0000\u0000\u01a7\u01a3\u0001"+
		"\u0000\u0000\u0000\u01a8Q\u0001\u0000\u0000\u0000\u01a9\u01aa\u0003T*"+
		"\u0000\u01aa\u01ab\u0005\u0018\u0000\u0000\u01ab\u01ae\u0001\u0000\u0000"+
		"\u0000\u01ac\u01ae\u0003V+\u0000\u01ad\u01a9\u0001\u0000\u0000\u0000\u01ad"+
		"\u01ac\u0001\u0000\u0000\u0000\u01aeS\u0001\u0000\u0000\u0000\u01af\u01ba"+
		"\u0003^/\u0000\u01b0\u01ba\u0003l6\u0000\u01b1\u01b4\u0003\u001a\r\u0000"+
		"\u01b2\u01b4\u0003z=\u0000\u01b3\u01b1\u0001\u0000\u0000\u0000\u01b3\u01b2"+
		"\u0001\u0000\u0000\u0000\u01b4\u01b5\u0001\u0000\u0000\u0000\u01b5\u01b7"+
		"\u0003\u009eO\u0000\u01b6\u01b8\u0003\u0094J\u0000\u01b7\u01b6\u0001\u0000"+
		"\u0000\u0000\u01b7\u01b8\u0001\u0000\u0000\u0000\u01b8\u01ba\u0001\u0000"+
		"\u0000\u0000\u01b9\u01af\u0001\u0000\u0000\u0000\u01b9\u01b0\u0001\u0000"+
		"\u0000\u0000\u01b9\u01b3\u0001\u0000\u0000\u0000\u01baU\u0001\u0000\u0000"+
		"\u0000\u01bb\u01ca\u0003f3\u0000\u01bc\u01be\u0003J%\u0000\u01bd\u01bf"+
		"\u0003\u0094J\u0000\u01be\u01bd\u0001\u0000\u0000\u0000\u01be\u01bf\u0001"+
		"\u0000\u0000\u0000\u01bf\u01c0\u0001\u0000\u0000\u0000\u01c0\u01c1\u0003"+
		"L&\u0000\u01c1\u01ca\u0001\u0000\u0000\u0000\u01c2\u01c3\u0003\u0092I"+
		"\u0000\u01c3\u01c5\u0003\u009eO\u0000\u01c4\u01c6\u0003\u0094J\u0000\u01c5"+
		"\u01c4\u0001\u0000\u0000\u0000\u01c5\u01c6\u0001\u0000\u0000\u0000\u01c6"+
		"\u01c7\u0001\u0000\u0000\u0000\u01c7\u01c8\u0003N\'\u0000\u01c8\u01ca"+
		"\u0001\u0000\u0000\u0000\u01c9\u01bb\u0001\u0000\u0000\u0000\u01c9\u01bc"+
		"\u0001\u0000\u0000\u0000\u01c9\u01c2\u0001\u0000\u0000\u0000\u01caW\u0001"+
		"\u0000\u0000\u0000\u01cb\u01cc\u0003Z-\u0000\u01cc\u01cd\u0005\u0018\u0000"+
		"\u0000\u01cd\u01d0\u0001\u0000\u0000\u0000\u01ce\u01d0\u0003\\.\u0000"+
		"\u01cf\u01cb\u0001\u0000\u0000\u0000\u01cf\u01ce\u0001\u0000\u0000\u0000"+
		"\u01d0Y\u0001\u0000\u0000\u0000\u01d1\u01d6\u0003`0\u0000\u01d2\u01d6"+
		"\u0003n7\u0000\u01d3\u01d6\u0003\u001c\u000e\u0000\u01d4\u01d6\u0003|"+
		">\u0000\u01d5\u01d1\u0001\u0000\u0000\u0000\u01d5\u01d2\u0001\u0000\u0000"+
		"\u0000\u01d5\u01d3\u0001\u0000\u0000\u0000\u01d5\u01d4\u0001\u0000\u0000"+
		"\u0000\u01d6[\u0001\u0000\u0000\u0000\u01d7\u01e2\u0003d2\u0000\u01d8"+
		"\u01d9\u0003H$\u0000\u01d9\u01da\u0003L&\u0000\u01da\u01e2\u0001\u0000"+
		"\u0000\u0000\u01db\u01dd\u0003\u0092I\u0000\u01dc\u01de\u0003\u0094J\u0000"+
		"\u01dd\u01dc\u0001\u0000\u0000\u0000\u01dd\u01de\u0001\u0000\u0000\u0000"+
		"\u01de\u01df\u0001\u0000\u0000\u0000\u01df\u01e0\u0003N\'\u0000\u01e0"+
		"\u01e2\u0001\u0000\u0000\u0000\u01e1\u01d7\u0001\u0000\u0000\u0000\u01e1"+
		"\u01d8\u0001\u0000\u0000\u0000\u01e1\u01db\u0001\u0000\u0000\u0000\u01e2"+
		"]\u0001\u0000\u0000\u0000\u01e3\u01e4\u0005\u0012\u0000\u0000\u01e4\u01e5"+
		"\u00032\u0019\u0000\u01e5\u01e6\u0005\u0013\u0000\u0000\u01e6\u01e8\u0003"+
		"\u009eO\u0000\u01e7\u01e9\u0003\u0094J\u0000\u01e8\u01e7\u0001\u0000\u0000"+
		"\u0000\u01e8\u01e9\u0001\u0000\u0000\u0000\u01e9_\u0001\u0000\u0000\u0000"+
		"\u01ea\u01ec\u00032\u0019\u0000\u01eb\u01ed\u0003\u0094J\u0000\u01ec\u01eb"+
		"\u0001\u0000\u0000\u0000\u01ec\u01ed\u0001\u0000\u0000\u0000\u01eda\u0001"+
		"\u0000\u0000\u0000\u01ee\u01f0\u0003&\u0013\u0000\u01ef\u01f1\u0003\u0096"+
		"K\u0000\u01f0\u01ef\u0001\u0000\u0000\u0000\u01f0\u01f1\u0001\u0000\u0000"+
		"\u0000\u01f1\u01f2\u0001\u0000\u0000\u0000\u01f2\u01f3\u0003\"\u0011\u0000"+
		"\u01f3c\u0001\u0000\u0000\u0000\u01f4\u01f5\u0003\f\u0006\u0000\u01f5"+
		"\u01f6\u0003 \u0010\u0000\u01f6\u01f9\u0001\u0000\u0000\u0000\u01f7\u01f9"+
		"\u0003b1\u0000\u01f8\u01f4\u0001\u0000\u0000\u0000\u01f8\u01f7\u0001\u0000"+
		"\u0000\u0000\u01f9e\u0001\u0000\u0000\u0000\u01fa\u01fb\u0003\f\u0006"+
		"\u0000\u01fb\u01fc\u0003h4\u0000\u01fc\u01fd\u0003\u0094J\u0000\u01fd"+
		"\u01fe\u0003\"\u0011\u0000\u01fe\u0206\u0001\u0000\u0000\u0000\u01ff\u0201"+
		"\u0003h4\u0000\u0200\u0202\u0003\u0096K\u0000\u0201\u0200\u0001\u0000"+
		"\u0000\u0000\u0201\u0202\u0001\u0000\u0000\u0000\u0202\u0203\u0001\u0000"+
		"\u0000\u0000\u0203\u0204\u0003\"\u0011\u0000\u0204\u0206\u0001\u0000\u0000"+
		"\u0000\u0205\u01fa\u0001\u0000\u0000\u0000\u0205\u01ff\u0001\u0000\u0000"+
		"\u0000\u0206g\u0001\u0000\u0000\u0000\u0207\u0208\u0003&\u0013\u0000\u0208"+
		"\u0209\u0003\u009eO\u0000\u0209i\u0001\u0000\u0000\u0000\u020a\u020b\u0005"+
		"\u0012\u0000\u0000\u020b\u020c\u0003r9\u0000\u020c\u020d\u0005\u0013\u0000"+
		"\u0000\u020d\u020e\u0003\u009eO\u0000\u020ek\u0001\u0000\u0000\u0000\u020f"+
		"\u0210\u0003\f\u0006\u0000\u0210\u0211\u0003j5\u0000\u0211\u0212\u0003"+
		"\u0094J\u0000\u0212\u0218\u0001\u0000\u0000\u0000\u0213\u0215\u0003j5"+
		"\u0000\u0214\u0216\u0003\u0096K\u0000\u0215\u0214\u0001\u0000\u0000\u0000"+
		"\u0215\u0216\u0001\u0000\u0000\u0000\u0216\u0218\u0001\u0000\u0000\u0000"+
		"\u0217\u020f\u0001\u0000\u0000\u0000\u0217\u0213\u0001\u0000\u0000\u0000"+
		"\u0218m\u0001\u0000\u0000\u0000\u0219\u021a\u0003\f\u0006\u0000\u021a"+
		"\u021b\u0003r9\u0000\u021b\u021c\u0003\u0094J\u0000\u021c\u0222\u0001"+
		"\u0000\u0000\u0000\u021d\u021f\u0003r9\u0000\u021e\u0220\u0003\u0096K"+
		"\u0000\u021f\u021e\u0001\u0000\u0000\u0000\u021f\u0220\u0001\u0000\u0000"+
		"\u0000\u0220\u0222\u0001\u0000\u0000\u0000\u0221\u0219\u0001\u0000\u0000"+
		"\u0000\u0221\u021d\u0001\u0000\u0000\u0000\u0222o\u0001\u0000\u0000\u0000"+
		"\u0223\u0225\u0003&\u0013\u0000\u0224\u0226\u0003x<\u0000\u0225\u0224"+
		"\u0001\u0000\u0000\u0000\u0226\u0227\u0001\u0000\u0000\u0000\u0227\u0225"+
		"\u0001\u0000\u0000\u0000\u0227\u0228\u0001\u0000\u0000\u0000\u0228q\u0001"+
		"\u0000\u0000\u0000\u0229\u022c\u0003p8\u0000\u022a\u022c\u0003t:\u0000"+
		"\u022b\u0229\u0001\u0000\u0000\u0000\u022b\u022a\u0001\u0000\u0000\u0000"+
		"\u022cs\u0001\u0000\u0000\u0000\u022d\u0232\u0006:\uffff\uffff\u0000\u022e"+
		"\u0233\u0003~?\u0000\u022f\u0233\u00030\u0018\u0000\u0230\u0233\u0003"+
		"p8\u0000\u0231\u0233\u0003\u001a\r\u0000\u0232\u022e\u0001\u0000\u0000"+
		"\u0000\u0232\u022f\u0001\u0000\u0000\u0000\u0232\u0230\u0001\u0000\u0000"+
		"\u0000\u0232\u0231\u0001\u0000\u0000\u0000\u0233\u0234\u0001\u0000\u0000"+
		"\u0000\u0234\u0235\u0003v;\u0000\u0235\u023a\u0001\u0000\u0000\u0000\u0236"+
		"\u0237\n\u0001\u0000\u0000\u0237\u0239\u0003v;\u0000\u0238\u0236\u0001"+
		"\u0000\u0000\u0000\u0239\u023c\u0001\u0000\u0000\u0000\u023a\u0238\u0001"+
		"\u0000\u0000\u0000\u023a\u023b\u0001\u0000\u0000\u0000\u023bu\u0001\u0000"+
		"\u0000\u0000\u023c\u023a\u0001\u0000\u0000\u0000\u023d\u023e\u0003\u009a"+
		"M\u0000\u023e\u023f\u0003&\u0013\u0000\u023fw\u0001\u0000\u0000\u0000"+
		"\u0240\u0241\u0005\u000e\u0000\u0000\u0241\u0246\u0005\u0012\u0000\u0000"+
		"\u0242\u0247\u0003~?\u0000\u0243\u0247\u00030\u0018\u0000\u0244\u0247"+
		"\u0003r9\u0000\u0245\u0247\u0003\u001a\r\u0000\u0246\u0242\u0001\u0000"+
		"\u0000\u0000\u0246\u0243\u0001\u0000\u0000\u0000\u0246\u0244\u0001\u0000"+
		"\u0000\u0000\u0246\u0245\u0001\u0000\u0000\u0000\u0247\u0248\u0001\u0000"+
		"\u0000\u0000\u0248\u0249\u0003\u0094J\u0000\u0249\u024a\u0005\u0013\u0000"+
		"\u0000\u024ay\u0001\u0000\u0000\u0000\u024b\u024e\u0003~?\u0000\u024c"+
		"\u024e\u0003\u0082A\u0000\u024d\u024b\u0001\u0000\u0000\u0000\u024d\u024c"+
		"\u0001\u0000\u0000\u0000\u024e{\u0001\u0000\u0000\u0000\u024f\u0251\u0003"+
		"z=\u0000\u0250\u0252\u0003\u0094J\u0000\u0251\u0250\u0001\u0000\u0000"+
		"\u0000\u0251\u0252\u0001\u0000\u0000\u0000\u0252}\u0001\u0000\u0000\u0000"+
		"\u0253\u0255\u0003\u0080@\u0000\u0254\u0256\u0003\u008cF\u0000\u0255\u0254"+
		"\u0001\u0000\u0000\u0000\u0256\u0257\u0001\u0000\u0000\u0000\u0257\u0255"+
		"\u0001\u0000\u0000\u0000\u0257\u0258\u0001\u0000\u0000\u0000\u0258\u007f"+
		"\u0001\u0000\u0000\u0000\u0259\u025c\u0003\u001a\r\u0000\u025a\u025c\u0003"+
		"\u009cN\u0000\u025b\u0259\u0001\u0000\u0000\u0000\u025b\u025a\u0001\u0000"+
		"\u0000\u0000\u025c\u0081\u0001\u0000\u0000\u0000\u025d\u025e\u0003\u0084"+
		"B\u0000\u025e\u025f\u0003\u008cF\u0000\u025f\u0083\u0001\u0000\u0000\u0000"+
		"\u0260\u0261\u0006B\uffff\uffff\u0000\u0261\u026d\u0003\u008aE\u0000\u0262"+
		"\u0268\u0003\u001c\u000e\u0000\u0263\u0265\u0003r9\u0000\u0264\u0266\u0003"+
		"\u0094J\u0000\u0265\u0264\u0001\u0000\u0000\u0000\u0265\u0266\u0001\u0000"+
		"\u0000\u0000\u0266\u0268\u0001\u0000\u0000\u0000\u0267\u0262\u0001\u0000"+
		"\u0000\u0000\u0267\u0263\u0001\u0000\u0000\u0000\u0268\u0269\u0001\u0000"+
		"\u0000\u0000\u0269\u026a\u0005\u0018\u0000\u0000\u026a\u026d\u0001\u0000"+
		"\u0000\u0000\u026b\u026d\u0003d2\u0000\u026c\u0260\u0001\u0000\u0000\u0000"+
		"\u026c\u0267\u0001\u0000\u0000\u0000\u026c\u026b\u0001\u0000\u0000\u0000"+
		"\u026d\u0274\u0001\u0000\u0000\u0000\u026e\u026f\n\u0004\u0000\u0000\u026f"+
		"\u0270\u0003\u0086C\u0000\u0270\u0271\u0003\u0088D\u0000\u0271\u0273\u0001"+
		"\u0000\u0000\u0000\u0272\u026e\u0001\u0000\u0000\u0000\u0273\u0276\u0001"+
		"\u0000\u0000\u0000\u0274\u0272\u0001\u0000\u0000\u0000\u0274\u0275\u0001"+
		"\u0000\u0000\u0000\u0275\u0085\u0001\u0000\u0000\u0000\u0276\u0274\u0001"+
		"\u0000\u0000\u0000\u0277\u0278\u0003\u008cF\u0000\u0278\u0087\u0001\u0000"+
		"\u0000\u0000\u0279\u027b\u0003\u0094J\u0000\u027a\u0279\u0001\u0000\u0000"+
		"\u0000\u027a\u027b\u0001\u0000\u0000\u0000\u027b\u027e\u0001\u0000\u0000"+
		"\u0000\u027c\u027f\u0003L&\u0000\u027d\u027f\u0005\u0018\u0000\u0000\u027e"+
		"\u027c\u0001\u0000\u0000\u0000\u027e\u027d\u0001\u0000\u0000\u0000\u027f"+
		"\u0287\u0001\u0000\u0000\u0000\u0280\u0282\u0003<\u001e\u0000\u0281\u0283"+
		"\u0003\u0094J\u0000\u0282\u0281\u0001\u0000\u0000\u0000\u0282\u0283\u0001"+
		"\u0000\u0000\u0000\u0283\u0284\u0001\u0000\u0000\u0000\u0284\u0285\u0005"+
		"\u0018\u0000\u0000\u0285\u0287\u0001\u0000\u0000\u0000\u0286\u027a\u0001"+
		"\u0000\u0000\u0000\u0286\u0280\u0001\u0000\u0000\u0000\u0287\u0089\u0001"+
		"\u0000\u0000\u0000\u0288\u028b\u0003:\u001d\u0000\u0289\u028b\u0003~?"+
		"\u0000\u028a\u0288\u0001\u0000\u0000\u0000\u028a\u0289\u0001\u0000\u0000"+
		"\u0000\u028b\u028d\u0001\u0000\u0000\u0000\u028c\u028e\u0003\u0094J\u0000"+
		"\u028d\u028c\u0001\u0000\u0000\u0000\u028d\u028e\u0001\u0000\u0000\u0000"+
		"\u028e\u028f\u0001\u0000\u0000\u0000\u028f\u0290\u0003L&\u0000\u0290\u0298"+
		"\u0001\u0000\u0000\u0000\u0291\u0293\u0003\u0092I\u0000\u0292\u0294\u0003"+
		"\u0094J\u0000\u0293\u0292\u0001\u0000\u0000\u0000\u0293\u0294\u0001\u0000"+
		"\u0000\u0000\u0294\u0295\u0001\u0000\u0000\u0000\u0295\u0296\u0003N\'"+
		"\u0000\u0296\u0298\u0001\u0000\u0000\u0000\u0297\u028a\u0001\u0000\u0000"+
		"\u0000\u0297\u0291\u0001\u0000\u0000\u0000\u0298\u008b\u0001\u0000\u0000"+
		"\u0000\u0299\u029a\u0005\u000f\u0000\u0000\u029a\u029b\u0003\u0090H\u0000"+
		"\u029b\u008d\u0001\u0000\u0000\u0000\u029c\u02a2\u0005\u0005\u0000\u0000"+
		"\u029d\u02a2\u0005\u0003\u0000\u0000\u029e\u02a2\u0005\u0004\u0000\u0000"+
		"\u029f\u02a2\u0005\n\u0000\u0000\u02a0\u02a2\u0003\u00a0P\u0000\u02a1"+
		"\u029c\u0001\u0000\u0000\u0000\u02a1\u029d\u0001\u0000\u0000\u0000\u02a1"+
		"\u029e\u0001\u0000\u0000\u0000\u02a1\u029f\u0001\u0000\u0000\u0000\u02a1"+
		"\u02a0\u0001\u0000\u0000\u0000\u02a2\u008f\u0001\u0000\u0000\u0000\u02a3"+
		"\u02a4\u0007\u0001\u0000\u0000\u02a4\u0091\u0001\u0000\u0000\u0000\u02a5"+
		"\u02a6\u0003\u0090H\u0000\u02a6\u02a7\u0005\u000f\u0000\u0000\u02a7\u0093"+
		"\u0001\u0000\u0000\u0000\u02a8\u02aa\u0003\u0098L\u0000\u02a9\u02ab\u0005"+
		"\u0006\u0000\u0000\u02aa\u02a9\u0001\u0000\u0000\u0000\u02aa\u02ab\u0001"+
		"\u0000\u0000\u0000\u02ab\u0095\u0001\u0000\u0000\u0000\u02ac\u02ad\u0005"+
		"\u000e\u0000\u0000\u02ad\u02ae\u0005\t\u0000\u0000\u02ae\u02af\u0005\t"+
		"\u0000\u0000\u02af\u0097\u0001\u0000\u0000\u0000\u02b0\u02b1\u0003\u009a"+
		"M\u0000\u02b1\u02b2\u0007\u0002\u0000\u0000\u02b2\u0099\u0001\u0000\u0000"+
		"\u0000\u02b3\u02b4\u0005\u000e\u0000\u0000\u02b4\u02b5\u0005\t\u0000\u0000"+
		"\u02b5\u02b6\u0005\u000e\u0000\u0000\u02b6\u009b\u0001\u0000\u0000\u0000"+
		"\u02b7\u02ba\u0005\u0012\u0000\u0000\u02b8\u02bb\u00030\u0018\u0000\u02b9"+
		"\u02bb\u0003r9\u0000\u02ba\u02b8\u0001\u0000\u0000\u0000\u02ba\u02b9\u0001"+
		"\u0000\u0000\u0000\u02bb\u02bc\u0001\u0000\u0000\u0000\u02bc\u02bd\u0005"+
		"\u0013\u0000\u0000\u02bd\u009d\u0001\u0000\u0000\u0000\u02be\u02bf\u0005"+
		"\b\u0000\u0000\u02bf\u02c0\u0007\u0003\u0000\u0000\u02c0\u009f\u0001\u0000"+
		"\u0000\u0000\u02c1\u02c2\u0007\u0004\u0000\u0000\u02c2\u00a1\u0001\u0000"+
		"\u0000\u0000W\u00a3\u00a6\u00b2\u00bc\u00c4\u00c8\u00d3\u00d9\u00dd\u00e3"+
		"\u00e7\u00f4\u00f8\u00fc\u0100\u010c\u0112\u0116\u0119\u011b\u0126\u0129"+
		"\u0138\u013d\u0142\u0148\u014e\u0155\u0159\u0163\u0169\u016b\u0170\u0177"+
		"\u017e\u0182\u0187\u018b\u0199\u01a0\u01a5\u01a7\u01ad\u01b3\u01b7\u01b9"+
		"\u01be\u01c5\u01c9\u01cf\u01d5\u01dd\u01e1\u01e8\u01ec\u01f0\u01f8\u0201"+
		"\u0205\u0215\u0217\u021f\u0221\u0227\u022b\u0232\u023a\u0246\u024d\u0251"+
		"\u0257\u025b\u0265\u0267\u026c\u0274\u027a\u027e\u0282\u0286\u028a\u028d"+
		"\u0293\u0297\u02a1\u02aa\u02ba";
	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);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy