[jboss-svn-commits] JBL Code SVN: r9163 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/lang and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 30 14:54:48 EST 2007


Author: tirelli
Date: 2007-01-30 14:54:48 -0500 (Tue, 30 Jan 2007)
New Revision: 9163

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/eol_funny_business.drl
Log:
JBRULES-214: resolving keyword conflicts

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-01-30 17:42:20 UTC (rev 9162)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-01-30 19:54:48 UTC (rev 9163)
@@ -269,7 +269,7 @@
             pkg.addFunctionImport( ((FunctionImportDescr) it.next()).getTarget() );
         }
 
-        final TypeResolver typeResolver = new ClassTypeResolver( imports,
+        final TypeResolver typeResolver = new ClassTypeResolver( pkg.getImports(),
                                                                  pkg.getPackageCompilationData().getClassLoader() );
 
         final Map globals = packageDescr.getGlobals();

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2007-01-30 17:42:20 UTC (rev 9162)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2007-01-30 19:54:48 UTC (rev 9163)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2007-01-25 15:52:58
+// $ANTLR 3.0b5 D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2007-01-30 17:02:05
 
 	package org.drools.lang;
 
@@ -10,94 +10,93 @@
 import java.util.Map;
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
-    public static final int T29=29;
-    public static final int END=17;
-    public static final int HexDigit=22;
-    public static final int T36=36;
-    public static final int T58=58;
+    public static final int EXISTS=46;
+    public static final int AUTO_FOCUS=22;
+    public static final int END=9;
+    public static final int HexDigit=54;
+    public static final int FORALL=49;
+    public static final int TEMPLATE=10;
     public static final int T70=70;
-    public static final int MISC=28;
-    public static final int FLOAT=12;
+    public static final int MISC=60;
+    public static final int FLOAT=38;
     public static final int T74=74;
-    public static final int THEN=18;
-    public static final int RULE=5;
-    public static final int T35=35;
+    public static final int QUERY=8;
+    public static final int THEN=50;
+    public static final int RULE=11;
+    public static final int INIT=27;
     public static final int T61=61;
-    public static final int T45=45;
-    public static final int T34=34;
+    public static final int IMPORT=5;
+    public static final int OR=32;
+    public static final int PACKAGE=4;
+    public static final int DATE_EFFECTIVE=14;
     public static final int T64=64;
-    public static final int T37=37;
-    public static final int EscapeSequence=21;
-    public static final int INT=9;
-    public static final int T32=32;
-    public static final int T51=51;
-    public static final int LEFT_SQUARE=15;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=25;
-    public static final int T46=46;
-    public static final int T77=77;
-    public static final int T38=38;
-    public static final int T41=41;
-    public static final int LEFT_CURLY=13;
+    public static final int AND=44;
+    public static final int FUNCTION=6;
+    public static final int GLOBAL=7;
+    public static final int EscapeSequence=53;
+    public static final int INT=20;
+    public static final int DATE_EXPIRES=16;
+    public static final int LEFT_SQUARE=42;
+    public static final int CONTAINS=35;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=57;
+    public static final int ATTRIBUTES=13;
+    public static final int RESULT=29;
+    public static final int LEFT_CURLY=40;
     public static final int T69=69;
-    public static final int T39=39;
-    public static final int ID=4;
+    public static final int FROM=45;
+    public static final int ID=31;
     public static final int T62=62;
-    public static final int T44=44;
-    public static final int T55=55;
-    public static final int LEFT_PAREN=10;
-    public static final int RIGHT_CURLY=14;
-    public static final int BOOL=8;
+    public static final int ACTIVATION_GROUP=23;
+    public static final int LEFT_PAREN=33;
+    public static final int RIGHT_CURLY=41;
+    public static final int BOOL=18;
+    public static final int EXCLUDES=37;
     public static final int T73=73;
     public static final int T68=68;
-    public static final int T33=33;
-    public static final int T50=50;
-    public static final int WHEN=6;
-    public static final int WS=20;
-    public static final int STRING=7;
-    public static final int T43=43;
-    public static final int T42=42;
+    public static final int WHEN=12;
+    public static final int WS=52;
+    public static final int STRING=15;
     public static final int T66=66;
-    public static final int T40=40;
+    public static final int ACTION=28;
     public static final int T71=71;
     public static final int T63=63;
-    public static final int T57=57;
     public static final int T72=72;
     public static final int T65=65;
-    public static final int T56=56;
+    public static final int COLLECT=30;
     public static final int T76=76;
-    public static final int UnicodeEscape=23;
+    public static final int ACCUMULATE=26;
+    public static final int NO_LOOP=21;
+    public static final int UnicodeEscape=55;
     public static final int T75=75;
-    public static final int T59=59;
-    public static final int T48=48;
-    public static final int T54=54;
+    public static final int DURATION=25;
+    public static final int EVAL=48;
+    public static final int MATCHES=36;
     public static final int EOF=-1;
     public static final int T67=67;
-    public static final int T47=47;
-    public static final int EOL=19;
-    public static final int Tokens=78;
-    public static final int T53=53;
-    public static final int T60=60;
-    public static final int T31=31;
-    public static final int OctalEscape=24;
-    public static final int MULTI_LINE_COMMENT=27;
-    public static final int T49=49;
-    public static final int T52=52;
-    public static final int RIGHT_PAREN=11;
-    public static final int T30=30;
-    public static final int RIGHT_SQUARE=16;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=26;
+    public static final int NULL=39;
+    public static final int AGENDA_GROUP=24;
+    public static final int EOL=51;
+    public static final int Tokens=77;
+    public static final int SALIENCE=19;
+    public static final int OctalEscape=56;
+    public static final int MULTI_LINE_COMMENT=59;
+    public static final int RIGHT_PAREN=34;
+    public static final int NOT=47;
+    public static final int ENABLED=17;
+    public static final int RIGHT_SQUARE=43;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=58;
     public DRLLexer() {;} 
     public DRLLexer(CharStream input) {
         super(input);
-        ruleMemo = new HashMap[76+1];
+        ruleMemo = new HashMap[75+1];
      }
     public String getGrammarFileName() { return "D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g"; }
 
-    // $ANTLR start T29
-    public void mT29() throws RecognitionException {
+    // $ANTLR start T61
+    public void mT61() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T29;
+            int _type = T61;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
@@ -122,23 +121,22 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T29
+    // $ANTLR end T61
 
-    // $ANTLR start T30
-    public void mT30() throws RecognitionException {
+    // $ANTLR start T62
+    public void mT62() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T30;
+            int _type = T62;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:7:7: ( 'package' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:7:7: 'package'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:7:7: ( '.' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:7:7: '.'
             {
-            match("package"); if (failed) return ;
+            match('.'); if (failed) return ;
 
-
             }
 
 
@@ -154,21 +152,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T30
+    // $ANTLR end T62
 
-    // $ANTLR start T31
-    public void mT31() throws RecognitionException {
+    // $ANTLR start T63
+    public void mT63() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T31;
+            int _type = T63;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: ( 'import' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: 'import'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: ( '.*' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:8:7: '.*'
             {
-            match("import"); if (failed) return ;
+            match(".*"); if (failed) return ;
 
 
             }
@@ -186,23 +184,22 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T31
+    // $ANTLR end T63
 
-    // $ANTLR start T32
-    public void mT32() throws RecognitionException {
+    // $ANTLR start T64
+    public void mT64() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T32;
+            int _type = T64;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: ( 'function' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: 'function'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: ( ',' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:9:7: ','
             {
-            match("function"); if (failed) return ;
+            match(','); if (failed) return ;
 
-
             }
 
 
@@ -218,21 +215,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T32
+    // $ANTLR end T64
 
-    // $ANTLR start T33
-    public void mT33() throws RecognitionException {
+    // $ANTLR start T65
+    public void mT65() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T33;
+            int _type = T65;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10:7: ( '.' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10:7: '.'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10:7: ( ':' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:10:7: ':'
             {
-            match('.'); if (failed) return ;
+            match(':'); if (failed) return ;
 
             }
 
@@ -249,21 +246,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T33
+    // $ANTLR end T65
 
-    // $ANTLR start T34
-    public void mT34() throws RecognitionException {
+    // $ANTLR start T66
+    public void mT66() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T34;
+            int _type = T66;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: ( '.*' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: '.*'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: ( '||' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:11:7: '||'
             {
-            match(".*"); if (failed) return ;
+            match("||"); if (failed) return ;
 
 
             }
@@ -281,23 +278,22 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T34
+    // $ANTLR end T66
 
-    // $ANTLR start T35
-    public void mT35() throws RecognitionException {
+    // $ANTLR start T67
+    public void mT67() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T35;
+            int _type = T67;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: ( 'global' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: 'global'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: ( '&' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:12:7: '&'
             {
-            match("global"); if (failed) return ;
+            match('&'); if (failed) return ;
 
-
             }
 
 
@@ -313,21 +309,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T35
+    // $ANTLR end T67
 
-    // $ANTLR start T36
-    public void mT36() throws RecognitionException {
+    // $ANTLR start T68
+    public void mT68() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T36;
+            int _type = T68;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: ( ',' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: ','
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: ( '|' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:13:7: '|'
             {
-            match(','); if (failed) return ;
+            match('|'); if (failed) return ;
 
             }
 
@@ -344,21 +340,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T36
+    // $ANTLR end T68
 
-    // $ANTLR start T37
-    public void mT37() throws RecognitionException {
+    // $ANTLR start T69
+    public void mT69() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T37;
+            int _type = T69;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: ( 'query' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: 'query'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: ( '->' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:14:7: '->'
             {
-            match("query"); if (failed) return ;
+            match("->"); if (failed) return ;
 
 
             }
@@ -376,21 +372,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T37
+    // $ANTLR end T69
 
-    // $ANTLR start T38
-    public void mT38() throws RecognitionException {
+    // $ANTLR start T70
+    public void mT70() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T38;
+            int _type = T70;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: ( 'template' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: 'template'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: ( '==' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:15:7: '=='
             {
-            match("template"); if (failed) return ;
+            match("=="); if (failed) return ;
 
 
             }
@@ -408,21 +404,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T38
+    // $ANTLR end T70
 
-    // $ANTLR start T39
-    public void mT39() throws RecognitionException {
+    // $ANTLR start T71
+    public void mT71() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T39;
+            int _type = T71;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: ( ':' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: ':'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: ( '>' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:16:7: '>'
             {
-            match(':'); if (failed) return ;
+            match('>'); if (failed) return ;
 
             }
 
@@ -439,21 +435,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T39
+    // $ANTLR end T71
 
-    // $ANTLR start T40
-    public void mT40() throws RecognitionException {
+    // $ANTLR start T72
+    public void mT72() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T40;
+            int _type = T72;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: ( 'attributes' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: 'attributes'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: ( '>=' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:17:7: '>='
             {
-            match("attributes"); if (failed) return ;
+            match(">="); if (failed) return ;
 
 
             }
@@ -471,23 +467,22 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T40
+    // $ANTLR end T72
 
-    // $ANTLR start T41
-    public void mT41() throws RecognitionException {
+    // $ANTLR start T73
+    public void mT73() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T41;
+            int _type = T73;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: ( 'date-effective' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: 'date-effective'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: ( '<' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:18:7: '<'
             {
-            match("date-effective"); if (failed) return ;
+            match('<'); if (failed) return ;
 
-
             }
 
 
@@ -503,21 +498,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T41
+    // $ANTLR end T73
 
-    // $ANTLR start T42
-    public void mT42() throws RecognitionException {
+    // $ANTLR start T74
+    public void mT74() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T42;
+            int _type = T74;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: ( 'date-expires' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: 'date-expires'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: ( '<=' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:19:7: '<='
             {
-            match("date-expires"); if (failed) return ;
+            match("<="); if (failed) return ;
 
 
             }
@@ -535,21 +530,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T42
+    // $ANTLR end T74
 
-    // $ANTLR start T43
-    public void mT43() throws RecognitionException {
+    // $ANTLR start T75
+    public void mT75() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T43;
+            int _type = T75;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: ( 'enabled' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: 'enabled'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: ( '!=' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:20:7: '!='
             {
-            match("enabled"); if (failed) return ;
+            match("!="); if (failed) return ;
 
 
             }
@@ -567,21 +562,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T43
+    // $ANTLR end T75
 
-    // $ANTLR start T44
-    public void mT44() throws RecognitionException {
+    // $ANTLR start T76
+    public void mT76() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T44;
+            int _type = T76;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: ( 'salience' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: 'salience'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: ( '&&' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:21:7: '&&'
             {
-            match("salience"); if (failed) return ;
+            match("&&"); if (failed) return ;
 
 
             }
@@ -599,26 +594,83 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T44
+    // $ANTLR end T76
 
-    // $ANTLR start T45
-    public void mT45() throws RecognitionException {
+    // $ANTLR start WS
+    public void mWS() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T45;
+            int _type = WS;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:22:7: ( 'no-loop' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:22:7: 'no-loop'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1316:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1316:17: ( ' ' | '\\t' | '\\f' | EOL )
             {
-            match("no-loop"); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1316:17: ( ' ' | '\\t' | '\\f' | EOL )
+            int alt1=4;
+            switch ( input.LA(1) ) {
+            case ' ':
+                alt1=1;
+                break;
+            case '\t':
+                alt1=2;
+                break;
+            case '\f':
+                alt1=3;
+                break;
+            case '\n':
+            case '\r':
+                alt1=4;
+                break;
+            default:
+                if (backtracking>0) {failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("1316:17: ( ' ' | '\\t' | '\\f' | EOL )", 1, 0, input);
 
+                throw nvae;
+            }
 
+            switch (alt1) {
+                case 1 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1316:19: ' '
+                    {
+                    match(' '); if (failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1317:19: '\\t'
+                    {
+                    match('\t'); if (failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1318:19: '\\f'
+                    {
+                    match('\f'); if (failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1319:19: EOL
+                    {
+                    mEOL(); if (failed) return ;
+
+                    }
+                    break;
+
             }
 
+            if ( backtracking==0 ) {
+               _channel=HIDDEN; 
+            }
 
+            }
+
+
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -631,58 +683,135 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T45
+    // $ANTLR end WS
 
-    // $ANTLR start T46
-    public void mT46() throws RecognitionException {
+    // $ANTLR start EOL
+    public void mEOL() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T46;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:23:7: ( 'auto-focus' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:23:7: 'auto-focus'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1326:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1326:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            match("auto-focus"); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1326:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            int alt2=3;
+            int LA2_0 = input.LA(1);
+            if ( (LA2_0=='\r') ) {
+                int LA2_1 = input.LA(2);
+                if ( (LA2_1=='\n') ) {
+                    alt2=1;
+                }
+                else {
+                    alt2=2;}
+            }
+            else if ( (LA2_0=='\n') ) {
+                alt2=3;
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("1326:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
 
-
+                throw nvae;
             }
+            switch (alt2) {
+                case 1 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1326:14: ( '\\r\\n' )=> '\\r\\n'
+                    {
+                    match("\r\n"); if (failed) return ;
 
 
-            if ( backtracking==0 ) {
+                    }
+                    break;
+                case 2 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1327:25: '\\r'
+                    {
+                    match('\r'); if (failed) return ;
 
-                      if ( token==null && ruleNestingLevel==1 ) {
-                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                      }
+                    }
+                    break;
+                case 3 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1328:25: '\\n'
+                    {
+                    match('\n'); if (failed) return ;
 
-                      
-            }    }
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
         finally {
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T46
+    // $ANTLR end EOL
 
-    // $ANTLR start T47
-    public void mT47() throws RecognitionException {
+    // $ANTLR start INT
+    public void mINT() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T47;
+            int _type = INT;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:24:7: ( 'activation-group' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:24:7: 'activation-group'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:4: ( ( '-' )? ( '0' .. '9' )+ )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:4: ( '-' )? ( '0' .. '9' )+
             {
-            match("activation-group"); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:4: ( '-' )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+            if ( (LA3_0=='-') ) {
+                alt3=1;
+            }
+            switch (alt3) {
+                case 1 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:5: '-'
+                    {
+                    match('-'); if (failed) return ;
 
+                    }
+                    break;
 
             }
 
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:10: ( '0' .. '9' )+
+            int cnt4=0;
+            loop4:
+            do {
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+                if ( ((LA4_0>='0' && LA4_0<='9')) ) {
+                    alt4=1;
+                }
 
+
+                switch (alt4) {
+            	case 1 :
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1333:11: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); if (failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt4 >= 1 ) break loop4;
+            	    if (backtracking>0) {failed=true; return ;}
+                        EarlyExitException eee =
+                            new EarlyExitException(4, input);
+                        throw eee;
+                }
+                cnt4++;
+            } while (true);
+
+
+            }
+
+
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -695,26 +824,102 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T47
+    // $ANTLR end INT
 
-    // $ANTLR start T48
-    public void mT48() throws RecognitionException {
+    // $ANTLR start FLOAT
+    public void mFLOAT() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T48;
+            int _type = FLOAT;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:25:7: ( 'agenda-group' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:25:7: 'agenda-group'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            match("agenda-group"); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:4: ( '-' )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+            if ( (LA5_0=='-') ) {
+                alt5=1;
+            }
+            switch (alt5) {
+                case 1 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:5: '-'
+                    {
+                    match('-'); if (failed) return ;
 
+                    }
+                    break;
 
             }
 
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:10: ( '0' .. '9' )+
+            int cnt6=0;
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+                if ( ((LA6_0>='0' && LA6_0<='9')) ) {
+                    alt6=1;
+                }
 
+
+                switch (alt6) {
+            	case 1 :
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:11: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); if (failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt6 >= 1 ) break loop6;
+            	    if (backtracking>0) {failed=true; return ;}
+                        EarlyExitException eee =
+                            new EarlyExitException(6, input);
+                        throw eee;
+                }
+                cnt6++;
+            } while (true);
+
+            match('.'); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:26: ( '0' .. '9' )+
+            int cnt7=0;
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+                if ( ((LA7_0>='0' && LA7_0<='9')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1337:27: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); if (failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt7 >= 1 ) break loop7;
+            	    if (backtracking>0) {failed=true; return ;}
+                        EarlyExitException eee =
+                            new EarlyExitException(7, input);
+                        throw eee;
+                }
+                cnt7++;
+            } while (true);
+
+
+            }
+
+
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -727,26 +932,153 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T48
+    // $ANTLR end FLOAT
 
-    // $ANTLR start T49
-    public void mT49() throws RecognitionException {
+    // $ANTLR start STRING
+    public void mSTRING() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T49;
+            int _type = STRING;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:26:7: ( 'duration' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:26:7: 'duration'
-            {
-            match("duration"); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:8: ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+            if ( (LA10_0=='\"') ) {
+                alt10=1;
+            }
+            else if ( (LA10_0=='\'') ) {
+                alt10=2;
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("1340:1: STRING : ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) );", 10, 0, input);
 
-
+                throw nvae;
             }
+            switch (alt10) {
+                case 1 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
+                    {
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:9: '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"'
+                    {
+                    match('\"'); if (failed) return ;
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:13: ( EscapeSequence | ~ ('\\\\'|'\"'))*
+                    loop8:
+                    do {
+                        int alt8=3;
+                        int LA8_0 = input.LA(1);
+                        if ( (LA8_0=='\\') ) {
+                            alt8=1;
+                        }
+                        else if ( ((LA8_0>='\u0000' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='[')||(LA8_0>=']' && LA8_0<='\uFFFE')) ) {
+                            alt8=2;
+                        }
 
 
+                        switch (alt8) {
+                    	case 1 :
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:15: EscapeSequence
+                    	    {
+                    	    mEscapeSequence(); if (failed) return ;
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1341:32: ~ ('\\\\'|'\"')
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+                    	        input.consume();
+                    	    failed=false;
+                    	    }
+                    	    else {
+                    	        if (backtracking>0) {failed=true; return ;}
+                    	        MismatchedSetException mse =
+                    	            new MismatchedSetException(null,input);
+                    	        recover(mse);    throw mse;
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop8;
+                        }
+                    } while (true);
+
+                    match('\"'); if (failed) return ;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
+                    {
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:9: '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\''
+                    {
+                    match('\''); if (failed) return ;
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:14: ( EscapeSequence | ~ ('\\\\'|'\\''))*
+                    loop9:
+                    do {
+                        int alt9=3;
+                        int LA9_0 = input.LA(1);
+                        if ( (LA9_0=='\\') ) {
+                            alt9=1;
+                        }
+                        else if ( ((LA9_0>='\u0000' && LA9_0<='&')||(LA9_0>='(' && LA9_0<='[')||(LA9_0>=']' && LA9_0<='\uFFFE')) ) {
+                            alt9=2;
+                        }
+
+
+                        switch (alt9) {
+                    	case 1 :
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:16: EscapeSequence
+                    	    {
+                    	    mEscapeSequence(); if (failed) return ;
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1342:33: ~ ('\\\\'|'\\'')
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
+                    	        input.consume();
+                    	    failed=false;
+                    	    }
+                    	    else {
+                    	        if (backtracking>0) {failed=true; return ;}
+                    	        MismatchedSetException mse =
+                    	            new MismatchedSetException(null,input);
+                    	        recover(mse);    throw mse;
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop9;
+                        }
+                    } while (true);
+
+                    match('\''); if (failed) return ;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -759,90 +1091,319 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T49
+    // $ANTLR end STRING
 
-    // $ANTLR start T50
-    public void mT50() throws RecognitionException {
+    // $ANTLR start HexDigit
+    public void mHexDigit() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T50;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:27:7: ( 'from' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:27:7: 'from'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:12: ( ('0'..'9'|'a'..'f'|'A'..'F'))
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:12: ('0'..'9'|'a'..'f'|'A'..'F')
             {
-            match("from"); if (failed) return ;
+            if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
+                input.consume();
+            failed=false;
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
 
 
             }
 
+        }
+        finally {
+            ruleNestingLevel--;
+        }
+    }
+    // $ANTLR end HexDigit
 
-            if ( backtracking==0 ) {
+    // $ANTLR start EscapeSequence
+    public void mEscapeSequence() throws RecognitionException {
+        try {
+            ruleNestingLevel++;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1350:9: ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape )
+            int alt11=3;
+            int LA11_0 = input.LA(1);
+            if ( (LA11_0=='\\') ) {
+                switch ( input.LA(2) ) {
+                case '\"':
+                case '\'':
+                case '\\':
+                case 'b':
+                case 'f':
+                case 'n':
+                case 'r':
+                case 't':
+                    alt11=1;
+                    break;
+                case 'u':
+                    alt11=2;
+                    break;
+                case '0':
+                case '1':
+                case '2':
+                case '3':
+                case '4':
+                case '5':
+                case '6':
+                case '7':
+                    alt11=3;
+                    break;
+                default:
+                    if (backtracking>0) {failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("1348:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 11, 1, input);
 
-                      if ( token==null && ruleNestingLevel==1 ) {
-                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                      }
+                    throw nvae;
+                }
 
-                      
-            }    }
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("1348:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 11, 0, input);
+
+                throw nvae;
+            }
+            switch (alt11) {
+                case 1 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1350:9: '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\')
+                    {
+                    match('\\'); if (failed) return ;
+                    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
+                        input.consume();
+                    failed=false;
+                    }
+                    else {
+                        if (backtracking>0) {failed=true; return ;}
+                        MismatchedSetException mse =
+                            new MismatchedSetException(null,input);
+                        recover(mse);    throw mse;
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1351:9: UnicodeEscape
+                    {
+                    mUnicodeEscape(); if (failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1352:9: OctalEscape
+                    {
+                    mOctalEscape(); if (failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
         finally {
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T50
+    // $ANTLR end EscapeSequence
 
-    // $ANTLR start T51
-    public void mT51() throws RecognitionException {
+    // $ANTLR start OctalEscape
+    public void mOctalEscape() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T51;
-            int _start = getCharIndex();
-            int _line = getLine();
-            int _charPosition = getCharPositionInLine();
-            int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:28:7: ( 'accumulate' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:28:7: 'accumulate'
-            {
-            match("accumulate"); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1357:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            int alt12=3;
+            int LA12_0 = input.LA(1);
+            if ( (LA12_0=='\\') ) {
+                int LA12_1 = input.LA(2);
+                if ( ((LA12_1>='0' && LA12_1<='3')) ) {
+                    int LA12_2 = input.LA(3);
+                    if ( ((LA12_2>='0' && LA12_2<='7')) ) {
+                        int LA12_4 = input.LA(4);
+                        if ( ((LA12_4>='0' && LA12_4<='7')) ) {
+                            alt12=1;
+                        }
+                        else {
+                            alt12=2;}
+                    }
+                    else {
+                        alt12=3;}
+                }
+                else if ( ((LA12_1>='4' && LA12_1<='7')) ) {
+                    int LA12_3 = input.LA(3);
+                    if ( ((LA12_3>='0' && LA12_3<='7')) ) {
+                        alt12=2;
+                    }
+                    else {
+                        alt12=3;}
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("1355:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
 
+                    throw nvae;
+                }
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("1355:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
 
+                throw nvae;
             }
+            switch (alt12) {
+                case 1 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1357:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    {
+                    match('\\'); if (failed) return ;
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1357:14: ( '0' .. '3' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1357:15: '0' .. '3'
+                    {
+                    matchRange('0','3'); if (failed) return ;
 
+                    }
 
-            if ( backtracking==0 ) {
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1357:25: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1357:26: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
 
-                      if ( token==null && ruleNestingLevel==1 ) {
-                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
-                      }
+                    }
 
-                      
-            }    }
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1357:36: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1357:37: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1358:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    {
+                    match('\\'); if (failed) return ;
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1358:14: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1358:15: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
+
+                    }
+
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1358:25: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1358:26: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1359:9: '\\\\' ( '0' .. '7' )
+                    {
+                    match('\\'); if (failed) return ;
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1359:14: ( '0' .. '7' )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1359:15: '0' .. '7'
+                    {
+                    matchRange('0','7'); if (failed) return ;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
         finally {
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T51
+    // $ANTLR end OctalEscape
 
-    // $ANTLR start T52
-    public void mT52() throws RecognitionException {
+    // $ANTLR start UnicodeEscape
+    public void mUnicodeEscape() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T52;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1364:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1364:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            {
+            match('\\'); if (failed) return ;
+            match('u'); if (failed) return ;
+            mHexDigit(); if (failed) return ;
+            mHexDigit(); if (failed) return ;
+            mHexDigit(); if (failed) return ;
+            mHexDigit(); if (failed) return ;
+
+            }
+
+        }
+        finally {
+            ruleNestingLevel--;
+        }
+    }
+    // $ANTLR end UnicodeEscape
+
+    // $ANTLR start BOOL
+    public void mBOOL() throws RecognitionException {
+        try {
+            ruleNestingLevel++;
+            int _type = BOOL;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:29:7: ( 'init' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:29:7: 'init'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:4: ( ( 'true' | 'false' ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:4: ( 'true' | 'false' )
             {
-            match("init"); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:4: ( 'true' | 'false' )
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+            if ( (LA13_0=='t') ) {
+                alt13=1;
+            }
+            else if ( (LA13_0=='f') ) {
+                alt13=2;
+            }
+            else {
+                if (backtracking>0) {failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("1368:4: ( 'true' | 'false' )", 13, 0, input);
 
+                throw nvae;
+            }
+            switch (alt13) {
+                case 1 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:5: 'true'
+                    {
+                    match("true"); if (failed) return ;
 
+
+                    }
+                    break;
+                case 2 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:12: 'false'
+                    {
+                    match("false"); if (failed) return ;
+
+
+                    }
+                    break;
+
             }
 
 
+            }
+
+
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -855,21 +1416,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T52
+    // $ANTLR end BOOL
 
-    // $ANTLR start T53
-    public void mT53() throws RecognitionException {
+    // $ANTLR start PACKAGE
+    public void mPACKAGE() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T53;
+            int _type = PACKAGE;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:30:7: ( 'action' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:30:7: 'action'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1371:11: ( 'package' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1371:11: 'package'
             {
-            match("action"); if (failed) return ;
+            match("package"); if (failed) return ;
 
 
             }
@@ -887,21 +1448,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T53
+    // $ANTLR end PACKAGE
 
-    // $ANTLR start T54
-    public void mT54() throws RecognitionException {
+    // $ANTLR start IMPORT
+    public void mIMPORT() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T54;
+            int _type = IMPORT;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:31:7: ( 'result' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:31:7: 'result'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1373:10: ( 'import' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1373:10: 'import'
             {
-            match("result"); if (failed) return ;
+            match("import"); if (failed) return ;
 
 
             }
@@ -919,21 +1480,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T54
+    // $ANTLR end IMPORT
 
-    // $ANTLR start T55
-    public void mT55() throws RecognitionException {
+    // $ANTLR start FUNCTION
+    public void mFUNCTION() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T55;
+            int _type = FUNCTION;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:32:7: ( 'collect' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:32:7: 'collect'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1375:12: ( 'function' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1375:12: 'function'
             {
-            match("collect"); if (failed) return ;
+            match("function"); if (failed) return ;
 
 
             }
@@ -951,21 +1512,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T55
+    // $ANTLR end FUNCTION
 
-    // $ANTLR start T56
-    public void mT56() throws RecognitionException {
+    // $ANTLR start GLOBAL
+    public void mGLOBAL() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T56;
+            int _type = GLOBAL;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:33:7: ( 'or' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:33:7: 'or'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1377:10: ( 'global' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1377:10: 'global'
             {
-            match("or"); if (failed) return ;
+            match("global"); if (failed) return ;
 
 
             }
@@ -983,21 +1544,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T56
+    // $ANTLR end GLOBAL
 
-    // $ANTLR start T57
-    public void mT57() throws RecognitionException {
+    // $ANTLR start RULE
+    public void mRULE() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T57;
+            int _type = RULE;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:34:7: ( '||' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:34:7: '||'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1379:11: ( 'rule' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1379:11: 'rule'
             {
-            match("||"); if (failed) return ;
+            match("rule"); if (failed) return ;
 
 
             }
@@ -1015,22 +1576,23 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T57
+    // $ANTLR end RULE
 
-    // $ANTLR start T58
-    public void mT58() throws RecognitionException {
+    // $ANTLR start QUERY
+    public void mQUERY() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T58;
+            int _type = QUERY;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:35:7: ( '&' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:35:7: '&'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1381:9: ( 'query' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1381:9: 'query'
             {
-            match('&'); if (failed) return ;
+            match("query"); if (failed) return ;
 
+
             }
 
 
@@ -1046,22 +1608,23 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T58
+    // $ANTLR end QUERY
 
-    // $ANTLR start T59
-    public void mT59() throws RecognitionException {
+    // $ANTLR start TEMPLATE
+    public void mTEMPLATE() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T59;
+            int _type = TEMPLATE;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:36:7: ( '|' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:36:7: '|'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1383:12: ( 'template' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1383:12: 'template'
             {
-            match('|'); if (failed) return ;
+            match("template"); if (failed) return ;
 
+
             }
 
 
@@ -1077,21 +1640,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T59
+    // $ANTLR end TEMPLATE
 
-    // $ANTLR start T60
-    public void mT60() throws RecognitionException {
+    // $ANTLR start ATTRIBUTES
+    public void mATTRIBUTES() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T60;
+            int _type = ATTRIBUTES;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:37:7: ( '->' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:37:7: '->'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1385:14: ( 'attributes' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1385:14: 'attributes'
             {
-            match("->"); if (failed) return ;
+            match("attributes"); if (failed) return ;
 
 
             }
@@ -1109,21 +1672,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T60
+    // $ANTLR end ATTRIBUTES
 
-    // $ANTLR start T61
-    public void mT61() throws RecognitionException {
+    // $ANTLR start DATE_EFFECTIVE
+    public void mDATE_EFFECTIVE() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T61;
+            int _type = DATE_EFFECTIVE;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:38:7: ( '==' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:38:7: '=='
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1388:4: ( 'date-effective' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1388:4: 'date-effective'
             {
-            match("=="); if (failed) return ;
+            match("date-effective"); if (failed) return ;
 
 
             }
@@ -1141,22 +1704,23 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T61
+    // $ANTLR end DATE_EFFECTIVE
 
-    // $ANTLR start T62
-    public void mT62() throws RecognitionException {
+    // $ANTLR start DATE_EXPIRES
+    public void mDATE_EXPIRES() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T62;
+            int _type = DATE_EXPIRES;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:39:7: ( '>' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:39:7: '>'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1391:4: ( 'date-expires' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1391:4: 'date-expires'
             {
-            match('>'); if (failed) return ;
+            match("date-expires"); if (failed) return ;
 
+
             }
 
 
@@ -1172,21 +1736,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T62
+    // $ANTLR end DATE_EXPIRES
 
-    // $ANTLR start T63
-    public void mT63() throws RecognitionException {
+    // $ANTLR start ENABLED
+    public void mENABLED() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T63;
+            int _type = ENABLED;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:40:7: ( '>=' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:40:7: '>='
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1393:11: ( 'enabled' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1393:11: 'enabled'
             {
-            match(">="); if (failed) return ;
+            match("enabled"); if (failed) return ;
 
 
             }
@@ -1204,22 +1768,23 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T63
+    // $ANTLR end ENABLED
 
-    // $ANTLR start T64
-    public void mT64() throws RecognitionException {
+    // $ANTLR start SALIENCE
+    public void mSALIENCE() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T64;
+            int _type = SALIENCE;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:41:7: ( '<' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:41:7: '<'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1396:4: ( 'salience' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1396:4: 'salience'
             {
-            match('<'); if (failed) return ;
+            match("salience"); if (failed) return ;
 
+
             }
 
 
@@ -1235,21 +1800,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T64
+    // $ANTLR end SALIENCE
 
-    // $ANTLR start T65
-    public void mT65() throws RecognitionException {
+    // $ANTLR start NO_LOOP
+    public void mNO_LOOP() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T65;
+            int _type = NO_LOOP;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:42:7: ( '<=' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:42:7: '<='
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1398:11: ( 'no-loop' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1398:11: 'no-loop'
             {
-            match("<="); if (failed) return ;
+            match("no-loop"); if (failed) return ;
 
 
             }
@@ -1267,21 +1832,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T65
+    // $ANTLR end NO_LOOP
 
-    // $ANTLR start T66
-    public void mT66() throws RecognitionException {
+    // $ANTLR start AUTO_FOCUS
+    public void mAUTO_FOCUS() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T66;
+            int _type = AUTO_FOCUS;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:43:7: ( '!=' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:43:7: '!='
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1401:4: ( 'auto-focus' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1401:4: 'auto-focus'
             {
-            match("!="); if (failed) return ;
+            match("auto-focus"); if (failed) return ;
 
 
             }
@@ -1299,21 +1864,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T66
+    // $ANTLR end AUTO_FOCUS
 
-    // $ANTLR start T67
-    public void mT67() throws RecognitionException {
+    // $ANTLR start ACTIVATION_GROUP
+    public void mACTIVATION_GROUP() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T67;
+            int _type = ACTIVATION_GROUP;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:44:7: ( 'contains' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:44:7: 'contains'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1404:4: ( 'activation-group' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1404:4: 'activation-group'
             {
-            match("contains"); if (failed) return ;
+            match("activation-group"); if (failed) return ;
 
 
             }
@@ -1331,21 +1896,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T67
+    // $ANTLR end ACTIVATION_GROUP
 
-    // $ANTLR start T68
-    public void mT68() throws RecognitionException {
+    // $ANTLR start AGENDA_GROUP
+    public void mAGENDA_GROUP() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T68;
+            int _type = AGENDA_GROUP;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:45:7: ( 'matches' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:45:7: 'matches'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1407:4: ( 'agenda-group' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1407:4: 'agenda-group'
             {
-            match("matches"); if (failed) return ;
+            match("agenda-group"); if (failed) return ;
 
 
             }
@@ -1363,21 +1928,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T68
+    // $ANTLR end AGENDA_GROUP
 
-    // $ANTLR start T69
-    public void mT69() throws RecognitionException {
+    // $ANTLR start DURATION
+    public void mDURATION() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T69;
+            int _type = DURATION;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:46:7: ( 'excludes' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:46:7: 'excludes'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1410:4: ( 'duration' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1410:4: 'duration'
             {
-            match("excludes"); if (failed) return ;
+            match("duration"); if (failed) return ;
 
 
             }
@@ -1395,21 +1960,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T69
+    // $ANTLR end DURATION
 
-    // $ANTLR start T70
-    public void mT70() throws RecognitionException {
+    // $ANTLR start FROM
+    public void mFROM() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T70;
+            int _type = FROM;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:47:7: ( 'null' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:47:7: 'null'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1412:8: ( 'from' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1412:8: 'from'
             {
-            match("null"); if (failed) return ;
+            match("from"); if (failed) return ;
 
 
             }
@@ -1427,21 +1992,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T70
+    // $ANTLR end FROM
 
-    // $ANTLR start T71
-    public void mT71() throws RecognitionException {
+    // $ANTLR start ACCUMULATE
+    public void mACCUMULATE() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T71;
+            int _type = ACCUMULATE;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:48:7: ( 'and' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:48:7: 'and'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1415:4: ( 'accumulate' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1415:4: 'accumulate'
             {
-            match("and"); if (failed) return ;
+            match("accumulate"); if (failed) return ;
 
 
             }
@@ -1459,21 +2024,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T71
+    // $ANTLR end ACCUMULATE
 
-    // $ANTLR start T72
-    public void mT72() throws RecognitionException {
+    // $ANTLR start INIT
+    public void mINIT() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T72;
+            int _type = INIT;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:49:7: ( '&&' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:49:7: '&&'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1417:8: ( 'init' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1417:8: 'init'
             {
-            match("&&"); if (failed) return ;
+            match("init"); if (failed) return ;
 
 
             }
@@ -1491,21 +2056,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T72
+    // $ANTLR end INIT
 
-    // $ANTLR start T73
-    public void mT73() throws RecognitionException {
+    // $ANTLR start ACTION
+    public void mACTION() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T73;
+            int _type = ACTION;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:50:7: ( 'exists' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:50:7: 'exists'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1419:10: ( 'action' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1419:10: 'action'
             {
-            match("exists"); if (failed) return ;
+            match("action"); if (failed) return ;
 
 
             }
@@ -1523,21 +2088,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T73
+    // $ANTLR end ACTION
 
-    // $ANTLR start T74
-    public void mT74() throws RecognitionException {
+    // $ANTLR start RESULT
+    public void mRESULT() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T74;
+            int _type = RESULT;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:51:7: ( 'not' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:51:7: 'not'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1421:10: ( 'result' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1421:10: 'result'
             {
-            match("not"); if (failed) return ;
+            match("result"); if (failed) return ;
 
 
             }
@@ -1555,21 +2120,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T74
+    // $ANTLR end RESULT
 
-    // $ANTLR start T75
-    public void mT75() throws RecognitionException {
+    // $ANTLR start COLLECT
+    public void mCOLLECT() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T75;
+            int _type = COLLECT;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:52:7: ( 'eval' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:52:7: 'eval'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1423:11: ( 'collect' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1423:11: 'collect'
             {
-            match("eval"); if (failed) return ;
+            match("collect"); if (failed) return ;
 
 
             }
@@ -1587,21 +2152,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T75
+    // $ANTLR end COLLECT
 
-    // $ANTLR start T76
-    public void mT76() throws RecognitionException {
+    // $ANTLR start OR
+    public void mOR() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T76;
+            int _type = OR;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:53:7: ( 'forall' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:53:7: 'forall'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1425:6: ( 'or' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1425:6: 'or'
             {
-            match("forall"); if (failed) return ;
+            match("or"); if (failed) return ;
 
 
             }
@@ -1619,21 +2184,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T76
+    // $ANTLR end OR
 
-    // $ANTLR start T77
-    public void mT77() throws RecognitionException {
+    // $ANTLR start AND
+    public void mAND() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = T77;
+            int _type = AND;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:54:7: ( 'use' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:54:7: 'use'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1427:7: ( 'and' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1427:7: 'and'
             {
-            match("use"); if (failed) return ;
+            match("and"); if (failed) return ;
 
 
             }
@@ -1651,83 +2216,26 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end T77
+    // $ANTLR end AND
 
-    // $ANTLR start WS
-    public void mWS() throws RecognitionException {
+    // $ANTLR start CONTAINS
+    public void mCONTAINS() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = WS;
+            int _type = CONTAINS;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1271:17: ( ( ' ' | '\\t' | '\\f' | EOL ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1271:17: ( ' ' | '\\t' | '\\f' | EOL )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1430:4: ( 'contains' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1430:4: 'contains'
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1271:17: ( ' ' | '\\t' | '\\f' | EOL )
-            int alt1=4;
-            switch ( input.LA(1) ) {
-            case ' ':
-                alt1=1;
-                break;
-            case '\t':
-                alt1=2;
-                break;
-            case '\f':
-                alt1=3;
-                break;
-            case '\n':
-            case '\r':
-                alt1=4;
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("1271:17: ( ' ' | '\\t' | '\\f' | EOL )", 1, 0, input);
+            match("contains"); if (failed) return ;
 
-                throw nvae;
-            }
 
-            switch (alt1) {
-                case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1271:19: ' '
-                    {
-                    match(' '); if (failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1272:19: '\\t'
-                    {
-                    match('\t'); if (failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1273:19: '\\f'
-                    {
-                    match('\f'); if (failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1274:19: EOL
-                    {
-                    mEOL(); if (failed) return ;
-
-                    }
-                    break;
-
             }
 
-            if ( backtracking==0 ) {
-               _channel=HIDDEN; 
-            }
 
-            }
-
-
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -1740,135 +2248,58 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end WS
+    // $ANTLR end CONTAINS
 
-    // $ANTLR start EOL
-    public void mEOL() throws RecognitionException {
+    // $ANTLR start EXCLUDES
+    public void mEXCLUDES() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1281:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1281:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            int _type = EXCLUDES;
+            int _start = getCharIndex();
+            int _line = getLine();
+            int _charPosition = getCharPositionInLine();
+            int _channel = Token.DEFAULT_CHANNEL;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1433:4: ( 'excludes' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1433:4: 'excludes'
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1281:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
-            int alt2=3;
-            int LA2_0 = input.LA(1);
-            if ( (LA2_0=='\r') ) {
-                int LA2_1 = input.LA(2);
-                if ( (LA2_1=='\n') ) {
-                    alt2=1;
-                }
-                else {
-                    alt2=2;}
-            }
-            else if ( (LA2_0=='\n') ) {
-                alt2=3;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("1281:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+            match("excludes"); if (failed) return ;
 
-                throw nvae;
-            }
-            switch (alt2) {
-                case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1281:14: ( '\\r\\n' )=> '\\r\\n'
-                    {
-                    match("\r\n"); if (failed) return ;
 
-
-                    }
-                    break;
-                case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1282:25: '\\r'
-                    {
-                    match('\r'); if (failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1283:25: '\\n'
-                    {
-                    match('\n'); if (failed) return ;
-
-                    }
-                    break;
-
             }
 
 
-            }
+            if ( backtracking==0 ) {
 
-        }
+                      if ( token==null && ruleNestingLevel==1 ) {
+                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
+                      }
+
+                      
+            }    }
         finally {
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end EOL
+    // $ANTLR end EXCLUDES
 
-    // $ANTLR start INT
-    public void mINT() throws RecognitionException {
+    // $ANTLR start MATCHES
+    public void mMATCHES() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = INT;
+            int _type = MATCHES;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1288:4: ( ( '-' )? ( '0' .. '9' )+ )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1288:4: ( '-' )? ( '0' .. '9' )+
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1435:11: ( 'matches' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1435:11: 'matches'
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1288:4: ( '-' )?
-            int alt3=2;
-            int LA3_0 = input.LA(1);
-            if ( (LA3_0=='-') ) {
-                alt3=1;
-            }
-            switch (alt3) {
-                case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1288:5: '-'
-                    {
-                    match('-'); if (failed) return ;
+            match("matches"); if (failed) return ;
 
-                    }
-                    break;
 
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1288:10: ( '0' .. '9' )+
-            int cnt4=0;
-            loop4:
-            do {
-                int alt4=2;
-                int LA4_0 = input.LA(1);
-                if ( ((LA4_0>='0' && LA4_0<='9')) ) {
-                    alt4=1;
-                }
 
-
-                switch (alt4) {
-            	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1288:11: '0' .. '9'
-            	    {
-            	    matchRange('0','9'); if (failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt4 >= 1 ) break loop4;
-            	    if (backtracking>0) {failed=true; return ;}
-                        EarlyExitException eee =
-                            new EarlyExitException(4, input);
-                        throw eee;
-                }
-                cnt4++;
-            } while (true);
-
-
-            }
-
-
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -1881,102 +2312,26 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end INT
+    // $ANTLR end MATCHES
 
-    // $ANTLR start FLOAT
-    public void mFLOAT() throws RecognitionException {
+    // $ANTLR start NULL
+    public void mNULL() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = FLOAT;
+            int _type = NULL;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:4: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1437:8: ( 'null' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1437:8: 'null'
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:4: ( '-' )?
-            int alt5=2;
-            int LA5_0 = input.LA(1);
-            if ( (LA5_0=='-') ) {
-                alt5=1;
-            }
-            switch (alt5) {
-                case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:5: '-'
-                    {
-                    match('-'); if (failed) return ;
+            match("null"); if (failed) return ;
 
-                    }
-                    break;
 
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:10: ( '0' .. '9' )+
-            int cnt6=0;
-            loop6:
-            do {
-                int alt6=2;
-                int LA6_0 = input.LA(1);
-                if ( ((LA6_0>='0' && LA6_0<='9')) ) {
-                    alt6=1;
-                }
 
-
-                switch (alt6) {
-            	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:11: '0' .. '9'
-            	    {
-            	    matchRange('0','9'); if (failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt6 >= 1 ) break loop6;
-            	    if (backtracking>0) {failed=true; return ;}
-                        EarlyExitException eee =
-                            new EarlyExitException(6, input);
-                        throw eee;
-                }
-                cnt6++;
-            } while (true);
-
-            match('.'); if (failed) return ;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:26: ( '0' .. '9' )+
-            int cnt7=0;
-            loop7:
-            do {
-                int alt7=2;
-                int LA7_0 = input.LA(1);
-                if ( ((LA7_0>='0' && LA7_0<='9')) ) {
-                    alt7=1;
-                }
-
-
-                switch (alt7) {
-            	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:27: '0' .. '9'
-            	    {
-            	    matchRange('0','9'); if (failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt7 >= 1 ) break loop7;
-            	    if (backtracking>0) {failed=true; return ;}
-                        EarlyExitException eee =
-                            new EarlyExitException(7, input);
-                        throw eee;
-                }
-                cnt7++;
-            } while (true);
-
-
-            }
-
-
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -1989,153 +2344,26 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end FLOAT
+    // $ANTLR end NULL
 
-    // $ANTLR start STRING
-    public void mSTRING() throws RecognitionException {
+    // $ANTLR start EXISTS
+    public void mEXISTS() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = STRING;
+            int _type = EXISTS;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1296:8: ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) )
-            int alt10=2;
-            int LA10_0 = input.LA(1);
-            if ( (LA10_0=='\"') ) {
-                alt10=1;
-            }
-            else if ( (LA10_0=='\'') ) {
-                alt10=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("1295:1: STRING : ( ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' ) | ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' ) );", 10, 0, input);
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1439:10: ( 'exists' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1439:10: 'exists'
+            {
+            match("exists"); if (failed) return ;
 
-                throw nvae;
-            }
-            switch (alt10) {
-                case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1296:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
-                    {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1296:8: ( '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1296:9: '\"' ( EscapeSequence | ~ ('\\\\'|'\"'))* '\"'
-                    {
-                    match('\"'); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1296:13: ( EscapeSequence | ~ ('\\\\'|'\"'))*
-                    loop8:
-                    do {
-                        int alt8=3;
-                        int LA8_0 = input.LA(1);
-                        if ( (LA8_0=='\\') ) {
-                            alt8=1;
-                        }
-                        else if ( ((LA8_0>='\u0000' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='[')||(LA8_0>=']' && LA8_0<='\uFFFE')) ) {
-                            alt8=2;
-                        }
 
-
-                        switch (alt8) {
-                    	case 1 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1296:15: EscapeSequence
-                    	    {
-                    	    mEscapeSequence(); if (failed) return ;
-
-                    	    }
-                    	    break;
-                    	case 2 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1296:32: ~ ('\\\\'|'\"')
-                    	    {
-                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
-                    	        input.consume();
-                    	    failed=false;
-                    	    }
-                    	    else {
-                    	        if (backtracking>0) {failed=true; return ;}
-                    	        MismatchedSetException mse =
-                    	            new MismatchedSetException(null,input);
-                    	        recover(mse);    throw mse;
-                    	    }
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop8;
-                        }
-                    } while (true);
-
-                    match('\"'); if (failed) return ;
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1297:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
-                    {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1297:8: ( '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\'' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1297:9: '\\'' ( EscapeSequence | ~ ('\\\\'|'\\''))* '\\''
-                    {
-                    match('\''); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1297:14: ( EscapeSequence | ~ ('\\\\'|'\\''))*
-                    loop9:
-                    do {
-                        int alt9=3;
-                        int LA9_0 = input.LA(1);
-                        if ( (LA9_0=='\\') ) {
-                            alt9=1;
-                        }
-                        else if ( ((LA9_0>='\u0000' && LA9_0<='&')||(LA9_0>='(' && LA9_0<='[')||(LA9_0>=']' && LA9_0<='\uFFFE')) ) {
-                            alt9=2;
-                        }
-
-
-                        switch (alt9) {
-                    	case 1 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1297:16: EscapeSequence
-                    	    {
-                    	    mEscapeSequence(); if (failed) return ;
-
-                    	    }
-                    	    break;
-                    	case 2 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1297:33: ~ ('\\\\'|'\\'')
-                    	    {
-                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
-                    	        input.consume();
-                    	    failed=false;
-                    	    }
-                    	    else {
-                    	        if (backtracking>0) {failed=true; return ;}
-                    	        MismatchedSetException mse =
-                    	            new MismatchedSetException(null,input);
-                    	        recover(mse);    throw mse;
-                    	    }
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop9;
-                        }
-                    } while (true);
-
-                    match('\''); if (failed) return ;
-
-                    }
-
-
-                    }
-                    break;
-
             }
 
+
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -2148,319 +2376,58 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end STRING
+    // $ANTLR end EXISTS
 
-    // $ANTLR start HexDigit
-    public void mHexDigit() throws RecognitionException {
+    // $ANTLR start NOT
+    public void mNOT() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1301:12: ( ('0'..'9'|'a'..'f'|'A'..'F'))
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1301:12: ('0'..'9'|'a'..'f'|'A'..'F')
+            int _type = NOT;
+            int _start = getCharIndex();
+            int _line = getLine();
+            int _charPosition = getCharPositionInLine();
+            int _channel = Token.DEFAULT_CHANNEL;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1441:7: ( 'not' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1441:7: 'not'
             {
-            if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
-                input.consume();
-            failed=false;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                MismatchedSetException mse =
-                    new MismatchedSetException(null,input);
-                recover(mse);    throw mse;
-            }
+            match("not"); if (failed) return ;
 
 
             }
 
-        }
-        finally {
-            ruleNestingLevel--;
-        }
-    }
-    // $ANTLR end HexDigit
 
-    // $ANTLR start EscapeSequence
-    public void mEscapeSequence() throws RecognitionException {
-        try {
-            ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1305:9: ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape )
-            int alt11=3;
-            int LA11_0 = input.LA(1);
-            if ( (LA11_0=='\\') ) {
-                switch ( input.LA(2) ) {
-                case '\"':
-                case '\'':
-                case '\\':
-                case 'b':
-                case 'f':
-                case 'n':
-                case 'r':
-                case 't':
-                    alt11=1;
-                    break;
-                case 'u':
-                    alt11=2;
-                    break;
-                case '0':
-                case '1':
-                case '2':
-                case '3':
-                case '4':
-                case '5':
-                case '6':
-                case '7':
-                    alt11=3;
-                    break;
-                default:
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("1303:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 11, 1, input);
+            if ( backtracking==0 ) {
 
-                    throw nvae;
-                }
+                      if ( token==null && ruleNestingLevel==1 ) {
+                          emit(_type,_line,_charPosition,_channel,_start,getCharIndex()-1);
+                      }
 
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("1303:1: fragment EscapeSequence : ( '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\') | UnicodeEscape | OctalEscape );", 11, 0, input);
-
-                throw nvae;
-            }
-            switch (alt11) {
-                case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1305:9: '\\\\' ('b'|'t'|'n'|'f'|'r'|'\\\"'|'\\''|'\\\\')
-                    {
-                    match('\\'); if (failed) return ;
-                    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
-                        input.consume();
-                    failed=false;
-                    }
-                    else {
-                        if (backtracking>0) {failed=true; return ;}
-                        MismatchedSetException mse =
-                            new MismatchedSetException(null,input);
-                        recover(mse);    throw mse;
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1306:9: UnicodeEscape
-                    {
-                    mUnicodeEscape(); if (failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1307:9: OctalEscape
-                    {
-                    mOctalEscape(); if (failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
+                      
+            }    }
         finally {
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end EscapeSequence
+    // $ANTLR end NOT
 
-    // $ANTLR start OctalEscape
-    public void mOctalEscape() throws RecognitionException {
+    // $ANTLR start EVAL
+    public void mEVAL() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
-            int alt12=3;
-            int LA12_0 = input.LA(1);
-            if ( (LA12_0=='\\') ) {
-                int LA12_1 = input.LA(2);
-                if ( ((LA12_1>='0' && LA12_1<='3')) ) {
-                    int LA12_2 = input.LA(3);
-                    if ( ((LA12_2>='0' && LA12_2<='7')) ) {
-                        int LA12_4 = input.LA(4);
-                        if ( ((LA12_4>='0' && LA12_4<='7')) ) {
-                            alt12=1;
-                        }
-                        else {
-                            alt12=2;}
-                    }
-                    else {
-                        alt12=3;}
-                }
-                else if ( ((LA12_1>='4' && LA12_1<='7')) ) {
-                    int LA12_3 = input.LA(3);
-                    if ( ((LA12_3>='0' && LA12_3<='7')) ) {
-                        alt12=2;
-                    }
-                    else {
-                        alt12=3;}
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("1310:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("1310:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
-
-                throw nvae;
-            }
-            switch (alt12) {
-                case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
-                    {
-                    match('\\'); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:14: ( '0' .. '3' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:15: '0' .. '3'
-                    {
-                    matchRange('0','3'); if (failed) return ;
-
-                    }
-
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:25: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:26: '0' .. '7'
-                    {
-                    matchRange('0','7'); if (failed) return ;
-
-                    }
-
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:36: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1312:37: '0' .. '7'
-                    {
-                    matchRange('0','7'); if (failed) return ;
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1313:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
-                    {
-                    match('\\'); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1313:14: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1313:15: '0' .. '7'
-                    {
-                    matchRange('0','7'); if (failed) return ;
-
-                    }
-
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1313:25: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1313:26: '0' .. '7'
-                    {
-                    matchRange('0','7'); if (failed) return ;
-
-                    }
-
-
-                    }
-                    break;
-                case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1314:9: '\\\\' ( '0' .. '7' )
-                    {
-                    match('\\'); if (failed) return ;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1314:14: ( '0' .. '7' )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1314:15: '0' .. '7'
-                    {
-                    matchRange('0','7'); if (failed) return ;
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-        }
-        finally {
-            ruleNestingLevel--;
-        }
-    }
-    // $ANTLR end OctalEscape
-
-    // $ANTLR start UnicodeEscape
-    public void mUnicodeEscape() throws RecognitionException {
-        try {
-            ruleNestingLevel++;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1319:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1319:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
-            {
-            match('\\'); if (failed) return ;
-            match('u'); if (failed) return ;
-            mHexDigit(); if (failed) return ;
-            mHexDigit(); if (failed) return ;
-            mHexDigit(); if (failed) return ;
-            mHexDigit(); if (failed) return ;
-
-            }
-
-        }
-        finally {
-            ruleNestingLevel--;
-        }
-    }
-    // $ANTLR end UnicodeEscape
-
-    // $ANTLR start BOOL
-    public void mBOOL() throws RecognitionException {
-        try {
-            ruleNestingLevel++;
-            int _type = BOOL;
+            int _type = EVAL;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1323:4: ( ( 'true' | 'false' ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1323:4: ( 'true' | 'false' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1443:8: ( 'eval' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1443:8: 'eval'
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1323:4: ( 'true' | 'false' )
-            int alt13=2;
-            int LA13_0 = input.LA(1);
-            if ( (LA13_0=='t') ) {
-                alt13=1;
-            }
-            else if ( (LA13_0=='f') ) {
-                alt13=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("1323:4: ( 'true' | 'false' )", 13, 0, input);
+            match("eval"); if (failed) return ;
 
-                throw nvae;
-            }
-            switch (alt13) {
-                case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1323:5: 'true'
-                    {
-                    match("true"); if (failed) return ;
 
-
-                    }
-                    break;
-                case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1323:12: 'false'
-                    {
-                    match("false"); if (failed) return ;
-
-
-                    }
-                    break;
-
             }
 
 
-            }
-
-
             if ( backtracking==0 ) {
 
                       if ( token==null && ruleNestingLevel==1 ) {
@@ -2473,21 +2440,21 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end BOOL
+    // $ANTLR end EVAL
 
-    // $ANTLR start RULE
-    public void mRULE() throws RecognitionException {
+    // $ANTLR start FORALL
+    public void mFORALL() throws RecognitionException {
         try {
             ruleNestingLevel++;
-            int _type = RULE;
+            int _type = FORALL;
             int _start = getCharIndex();
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1326:11: ( 'rule' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1326:11: 'rule'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1445:10: ( 'forall' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1445:10: 'forall'
             {
-            match("rule"); if (failed) return ;
+            match("forall"); if (failed) return ;
 
 
             }
@@ -2505,7 +2472,7 @@
             ruleNestingLevel--;
         }
     }
-    // $ANTLR end RULE
+    // $ANTLR end FORALL
 
     // $ANTLR start WHEN
     public void mWHEN() throws RecognitionException {
@@ -2516,8 +2483,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1328:11: ( 'when' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1328:11: 'when'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1447:11: ( 'when' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1447:11: 'when'
             {
             match("when"); if (failed) return ;
 
@@ -2548,8 +2515,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1330:12: ( 'then' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1330:12: 'then'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1449:12: ( 'then' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1449:12: 'then'
             {
             match("then"); if (failed) return ;
 
@@ -2580,8 +2547,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1332:11: ( 'end' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1332:11: 'end'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1451:11: ( 'end' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1451:11: 'end'
             {
             match("end"); if (failed) return ;
 
@@ -2612,8 +2579,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1335:4: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1335:4: ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1454:4: ( ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1454:4: ('a'..'z'|'A'..'Z'|'_'|'$'|'\\u00c0'..'\\u00ff') ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
             {
             if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
                 input.consume();
@@ -2626,7 +2593,7 @@
                 recover(mse);    throw mse;
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1335:50: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1454:50: ( ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff'))*
             loop14:
             do {
                 int alt14=2;
@@ -2638,7 +2605,7 @@
 
                 switch (alt14) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1335:51: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff')
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1454:51: ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\\u00c0'..'\\u00ff')
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
             	        input.consume();
@@ -2687,11 +2654,11 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1340:4: ( '#' ( options {greedy=false; } : . )* EOL )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1340:4: '#' ( options {greedy=false; } : . )* EOL
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1459:4: ( '#' ( options {greedy=false; } : . )* EOL )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1459:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1340:8: ( options {greedy=false; } : . )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1459:8: ( options {greedy=false; } : . )*
             loop15:
             do {
                 int alt15=2;
@@ -2709,7 +2676,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1340:35: .
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1459:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2752,12 +2719,12 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:4: ( '//' ( options {greedy=false; } : . )* EOL )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:4: '//' ( options {greedy=false; } : . )* EOL
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1465:4: ( '//' ( options {greedy=false; } : . )* EOL )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1465:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:9: ( options {greedy=false; } : . )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1465:9: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2775,7 +2742,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1346:36: .
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1465:36: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -2818,8 +2785,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1352:11: ( '(' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1352:11: '('
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1471:11: ( '(' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1471:11: '('
             {
             match('('); if (failed) return ;
 
@@ -2849,8 +2816,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1356:11: ( ')' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1356:11: ')'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1475:11: ( ')' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1475:11: ')'
             {
             match(')'); if (failed) return ;
 
@@ -2880,8 +2847,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1360:11: ( '[' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1360:11: '['
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1479:11: ( '[' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1479:11: '['
             {
             match('['); if (failed) return ;
 
@@ -2911,8 +2878,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1364:11: ( ']' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1364:11: ']'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1483:11: ( ']' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1483:11: ']'
             {
             match(']'); if (failed) return ;
 
@@ -2942,8 +2909,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:11: ( '{' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1368:11: '{'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1487:11: ( '{' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1487:11: '{'
             {
             match('{'); if (failed) return ;
 
@@ -2973,8 +2940,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1372:11: ( '}' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1372:11: '}'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1491:11: ( '}' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1491:11: '}'
             {
             match('}'); if (failed) return ;
 
@@ -3004,12 +2971,12 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1376:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1376:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1495:4: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1495:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1376:9: ( options {greedy=false; } : . )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1495:9: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -3032,7 +2999,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1376:35: .
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1495:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -3076,8 +3043,8 @@
             int _line = getLine();
             int _charPosition = getCharPositionInLine();
             int _channel = Token.DEFAULT_CHANNEL;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1380:7: ( ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\'))
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1381:3: ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\')
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1499:7: ( ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\'))
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1500:3: ('!'|'@'|'$'|'%'|'^'|'&'|'*'|'_'|'-'|'+'|'?'|'|'|','|'='|'/'|'\\''|'\\\\')
             {
             if ( input.LA(1)=='!'||(input.LA(1)>='$' && input.LA(1)<='\'')||(input.LA(1)>='*' && input.LA(1)<='-')||input.LA(1)=='/'||input.LA(1)=='='||(input.LA(1)>='?' && input.LA(1)<='@')||input.LA(1)=='\\'||(input.LA(1)>='^' && input.LA(1)<='_')||input.LA(1)=='|' ) {
                 input.consume();
@@ -3109,489 +3076,482 @@
     // $ANTLR end MISC
 
     public void mTokens() throws RecognitionException {
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: ( T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | WS | INT | FLOAT | STRING | BOOL | RULE | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC )
-        int alt18=69;
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: ( T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | DURATION | FROM | ACCUMULATE | INIT | ACTION | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC )
+        int alt18=68;
         alt18 = dfa18.predict(input);
         switch (alt18) {
             case 1 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: T29
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:10: T61
                 {
-                mT29(); if (failed) return ;
+                mT61(); if (failed) return ;
 
                 }
                 break;
             case 2 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:14: T30
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:14: T62
                 {
-                mT30(); if (failed) return ;
+                mT62(); if (failed) return ;
 
                 }
                 break;
             case 3 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:18: T31
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:18: T63
                 {
-                mT31(); if (failed) return ;
+                mT63(); if (failed) return ;
 
                 }
                 break;
             case 4 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:22: T32
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:22: T64
                 {
-                mT32(); if (failed) return ;
+                mT64(); if (failed) return ;
 
                 }
                 break;
             case 5 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:26: T33
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:26: T65
                 {
-                mT33(); if (failed) return ;
+                mT65(); if (failed) return ;
 
                 }
                 break;
             case 6 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:30: T34
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:30: T66
                 {
-                mT34(); if (failed) return ;
+                mT66(); if (failed) return ;
 
                 }
                 break;
             case 7 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:34: T35
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:34: T67
                 {
-                mT35(); if (failed) return ;
+                mT67(); if (failed) return ;
 
                 }
                 break;
             case 8 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:38: T36
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:38: T68
                 {
-                mT36(); if (failed) return ;
+                mT68(); if (failed) return ;
 
                 }
                 break;
             case 9 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:42: T37
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:42: T69
                 {
-                mT37(); if (failed) return ;
+                mT69(); if (failed) return ;
 
                 }
                 break;
             case 10 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:46: T38
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:46: T70
                 {
-                mT38(); if (failed) return ;
+                mT70(); if (failed) return ;
 
                 }
                 break;
             case 11 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:50: T39
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:50: T71
                 {
-                mT39(); if (failed) return ;
+                mT71(); if (failed) return ;
 
                 }
                 break;
             case 12 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:54: T40
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:54: T72
                 {
-                mT40(); if (failed) return ;
+                mT72(); if (failed) return ;
 
                 }
                 break;
             case 13 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:58: T41
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:58: T73
                 {
-                mT41(); if (failed) return ;
+                mT73(); if (failed) return ;
 
                 }
                 break;
             case 14 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:62: T42
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:62: T74
                 {
-                mT42(); if (failed) return ;
+                mT74(); if (failed) return ;
 
                 }
                 break;
             case 15 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:66: T43
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:66: T75
                 {
-                mT43(); if (failed) return ;
+                mT75(); if (failed) return ;
 
                 }
                 break;
             case 16 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:70: T44
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:70: T76
                 {
-                mT44(); if (failed) return ;
+                mT76(); if (failed) return ;
 
                 }
                 break;
             case 17 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:74: T45
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:74: WS
                 {
-                mT45(); if (failed) return ;
+                mWS(); if (failed) return ;
 
                 }
                 break;
             case 18 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:78: T46
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:77: INT
                 {
-                mT46(); if (failed) return ;
+                mINT(); if (failed) return ;
 
                 }
                 break;
             case 19 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:82: T47
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:81: FLOAT
                 {
-                mT47(); if (failed) return ;
+                mFLOAT(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:86: T48
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:87: STRING
                 {
-                mT48(); if (failed) return ;
+                mSTRING(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:90: T49
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:94: BOOL
                 {
-                mT49(); if (failed) return ;
+                mBOOL(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:94: T50
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:99: PACKAGE
                 {
-                mT50(); if (failed) return ;
+                mPACKAGE(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:98: T51
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:107: IMPORT
                 {
-                mT51(); if (failed) return ;
+                mIMPORT(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:102: T52
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:114: FUNCTION
                 {
-                mT52(); if (failed) return ;
+                mFUNCTION(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:106: T53
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:123: GLOBAL
                 {
-                mT53(); if (failed) return ;
+                mGLOBAL(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:110: T54
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:130: RULE
                 {
-                mT54(); if (failed) return ;
+                mRULE(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:114: T55
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:135: QUERY
                 {
-                mT55(); if (failed) return ;
+                mQUERY(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:118: T56
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:141: TEMPLATE
                 {
-                mT56(); if (failed) return ;
+                mTEMPLATE(); if (failed) return ;
 
                 }
                 break;
             case 29 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:122: T57
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:150: ATTRIBUTES
                 {
-                mT57(); if (failed) return ;
+                mATTRIBUTES(); if (failed) return ;
 
                 }
                 break;
             case 30 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:126: T58
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:161: DATE_EFFECTIVE
                 {
-                mT58(); if (failed) return ;
+                mDATE_EFFECTIVE(); if (failed) return ;
 
                 }
                 break;
             case 31 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:130: T59
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:176: DATE_EXPIRES
                 {
-                mT59(); if (failed) return ;
+                mDATE_EXPIRES(); if (failed) return ;
 
                 }
                 break;
             case 32 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:134: T60
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:189: ENABLED
                 {
-                mT60(); if (failed) return ;
+                mENABLED(); if (failed) return ;
 
                 }
                 break;
             case 33 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:138: T61
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:197: SALIENCE
                 {
-                mT61(); if (failed) return ;
+                mSALIENCE(); if (failed) return ;
 
                 }
                 break;
             case 34 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:142: T62
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:206: NO_LOOP
                 {
-                mT62(); if (failed) return ;
+                mNO_LOOP(); if (failed) return ;
 
                 }
                 break;
             case 35 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:146: T63
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:214: AUTO_FOCUS
                 {
-                mT63(); if (failed) return ;
+                mAUTO_FOCUS(); if (failed) return ;
 
                 }
                 break;
             case 36 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:150: T64
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:225: ACTIVATION_GROUP
                 {
-                mT64(); if (failed) return ;
+                mACTIVATION_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 37 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:154: T65
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:242: AGENDA_GROUP
                 {
-                mT65(); if (failed) return ;
+                mAGENDA_GROUP(); if (failed) return ;
 
                 }
                 break;
             case 38 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:158: T66
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:255: DURATION
                 {
-                mT66(); if (failed) return ;
+                mDURATION(); if (failed) return ;
 
                 }
                 break;
             case 39 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:162: T67
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:264: FROM
                 {
-                mT67(); if (failed) return ;
+                mFROM(); if (failed) return ;
 
                 }
                 break;
             case 40 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:166: T68
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:269: ACCUMULATE
                 {
-                mT68(); if (failed) return ;
+                mACCUMULATE(); if (failed) return ;
 
                 }
                 break;
             case 41 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:170: T69
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:280: INIT
                 {
-                mT69(); if (failed) return ;
+                mINIT(); if (failed) return ;
 
                 }
                 break;
             case 42 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:174: T70
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:285: ACTION
                 {
-                mT70(); if (failed) return ;
+                mACTION(); if (failed) return ;
 
                 }
                 break;
             case 43 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:178: T71
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:292: RESULT
                 {
-                mT71(); if (failed) return ;
+                mRESULT(); if (failed) return ;
 
                 }
                 break;
             case 44 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:182: T72
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:299: COLLECT
                 {
-                mT72(); if (failed) return ;
+                mCOLLECT(); if (failed) return ;
 
                 }
                 break;
             case 45 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:186: T73
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:307: OR
                 {
-                mT73(); if (failed) return ;
+                mOR(); if (failed) return ;
 
                 }
                 break;
             case 46 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:190: T74
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:310: AND
                 {
-                mT74(); if (failed) return ;
+                mAND(); if (failed) return ;
 
                 }
                 break;
             case 47 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:194: T75
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:314: CONTAINS
                 {
-                mT75(); if (failed) return ;
+                mCONTAINS(); if (failed) return ;
 
                 }
                 break;
             case 48 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:198: T76
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:323: EXCLUDES
                 {
-                mT76(); if (failed) return ;
+                mEXCLUDES(); if (failed) return ;
 
                 }
                 break;
             case 49 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:202: T77
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:332: MATCHES
                 {
-                mT77(); if (failed) return ;
+                mMATCHES(); if (failed) return ;
 
                 }
                 break;
             case 50 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:206: WS
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:340: NULL
                 {
-                mWS(); if (failed) return ;
+                mNULL(); if (failed) return ;
 
                 }
                 break;
             case 51 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:209: INT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:345: EXISTS
                 {
-                mINT(); if (failed) return ;
+                mEXISTS(); if (failed) return ;
 
                 }
                 break;
             case 52 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:213: FLOAT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:352: NOT
                 {
-                mFLOAT(); if (failed) return ;
+                mNOT(); if (failed) return ;
 
                 }
                 break;
             case 53 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:219: STRING
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:356: EVAL
                 {
-                mSTRING(); if (failed) return ;
+                mEVAL(); if (failed) return ;
 
                 }
                 break;
             case 54 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:226: BOOL
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:361: FORALL
                 {
-                mBOOL(); if (failed) return ;
+                mFORALL(); if (failed) return ;
 
                 }
                 break;
             case 55 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:231: RULE
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:368: WHEN
                 {
-                mRULE(); if (failed) return ;
+                mWHEN(); if (failed) return ;
 
                 }
                 break;
             case 56 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:236: WHEN
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:373: THEN
                 {
-                mWHEN(); if (failed) return ;
+                mTHEN(); if (failed) return ;
 
                 }
                 break;
             case 57 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:241: THEN
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:378: END
                 {
-                mTHEN(); if (failed) return ;
+                mEND(); if (failed) return ;
 
                 }
                 break;
             case 58 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:246: END
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:382: ID
                 {
-                mEND(); if (failed) return ;
+                mID(); if (failed) return ;
 
                 }
                 break;
             case 59 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:250: ID
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:385: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mID(); if (failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 60 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:253: SH_STYLE_SINGLE_LINE_COMMENT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:414: C_STYLE_SINGLE_LINE_COMMENT
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 61 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:282: C_STYLE_SINGLE_LINE_COMMENT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:442: LEFT_PAREN
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mLEFT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 62 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:310: LEFT_PAREN
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:453: RIGHT_PAREN
                 {
-                mLEFT_PAREN(); if (failed) return ;
+                mRIGHT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 63 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:321: RIGHT_PAREN
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:465: LEFT_SQUARE
                 {
-                mRIGHT_PAREN(); if (failed) return ;
+                mLEFT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 64 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:333: LEFT_SQUARE
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:477: RIGHT_SQUARE
                 {
-                mLEFT_SQUARE(); if (failed) return ;
+                mRIGHT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 65 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:345: RIGHT_SQUARE
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:490: LEFT_CURLY
                 {
-                mRIGHT_SQUARE(); if (failed) return ;
+                mLEFT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 66 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:358: LEFT_CURLY
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:501: RIGHT_CURLY
                 {
-                mLEFT_CURLY(); if (failed) return ;
+                mRIGHT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 67 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:369: RIGHT_CURLY
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:513: MULTI_LINE_COMMENT
                 {
-                mRIGHT_CURLY(); if (failed) return ;
+                mMULTI_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 68 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:381: MULTI_LINE_COMMENT
+                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:532: MISC
                 {
-                mMULTI_LINE_COMMENT(); if (failed) return ;
-
-                }
-                break;
-            case 69 :
-                // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1:400: MISC
-                {
                 mMISC(); if (failed) return ;
 
                 }
@@ -3604,124 +3564,120 @@
 
     protected DFA18 dfa18 = new DFA18(this);
     public static final String DFA18_eotS =
-        "\2\uffff\3\52\1\64\1\52\1\uffff\2\52\1\uffff\10\52\1\115\1\117\2"+
-        "\53\1\123\1\125\1\53\2\52\1\uffff\1\131\1\uffff\1\53\1\52\2\uffff"+
-        "\1\53\10\uffff\7\52\2\uffff\1\52\1\uffff\24\52\1\177\13\uffff\2"+
-        "\52\2\uffff\1\52\2\uffff\21\52\1\u0094\3\52\1\u0098\4\52\1\u009d"+
-        "\1\uffff\5\52\1\uffff\1\52\1\u00a4\3\52\1\u00a8\2\52\1\u00ab\3\52"+
-        "\1\u00af\1\u00b0\6\52\1\uffff\3\52\1\uffff\2\52\1\u00bd\1\52\1\uffff"+
-        "\1\u00bf\1\u00c0\4\52\1\uffff\1\u00c5\2\52\1\uffff\1\52\1\u00b0"+
-        "\1\uffff\2\52\1\u00cb\2\uffff\1\52\1\uffff\5\52\1\uffff\4\52\1\uffff"+
-        "\1\52\2\uffff\4\52\1\uffff\1\52\1\u00dd\1\52\1\u00df\1\u00e0\1\uffff"+
-        "\2\52\1\u00e3\3\52\1\uffff\2\52\1\u00eb\2\52\1\u00ee\3\52\1\u00f2"+
-        "\1\uffff\1\52\2\uffff\2\52\1\uffff\2\52\3\uffff\1\52\1\u00f9\1\uffff"+
-        "\2\52\1\uffff\1\u00fc\1\52\1\u00fe\1\uffff\1\u00ff\1\u0100\3\52"+
-        "\1\u0104\1\uffff\1\u0105\1\u0106\1\uffff\1\u0107\3\uffff\3\52\4"+
-        "\uffff\1\u010b\1\52\1\u010d\3\uffff";
+        "\2\uffff\1\54\2\uffff\1\57\1\61\2\52\1\65\1\67\1\52\1\uffff\1\72"+
+        "\1\uffff\1\52\20\51\2\uffff\1\52\30\uffff\34\51\1\175\2\51\2\uffff"+
+        "\22\51\1\u0092\6\51\1\u0099\2\51\1\u009c\1\uffff\3\51\1\uffff\2"+
+        "\51\1\u00a2\1\51\1\u00a4\3\51\1\u00a8\1\51\1\u00aa\2\51\1\u00ad"+
+        "\6\51\1\uffff\5\51\1\u00ba\1\uffff\2\51\1\uffff\1\u00bd\3\51\1\u00c1"+
+        "\1\uffff\1\51\1\uffff\1\u00a2\2\51\1\uffff\1\51\1\uffff\2\51\1\uffff"+
+        "\1\51\1\u00c9\5\51\2\uffff\3\51\1\uffff\2\51\1\uffff\3\51\1\uffff"+
+        "\1\51\1\u00d9\2\51\1\u00dc\1\u00dd\1\u00de\1\uffff\1\u00df\4\51"+
+        "\1\uffff\2\51\1\u00e8\6\51\1\uffff\1\51\1\u00f0\4\uffff\2\51\1\uffff"+
+        "\1\51\2\uffff\2\51\1\uffff\1\u00f6\1\51\1\u00f8\1\51\1\u00fa\1\u00fb"+
+        "\1\u00fc\1\uffff\3\51\1\u0100\1\u0101\1\uffff\1\u0102\1\uffff\1"+
+        "\u0103\3\uffff\3\51\4\uffff\1\51\1\u0108\1\u0109\3\uffff";
     public static final String DFA18_eofS =
-        "\u010e\uffff";
+        "\u010a\uffff";
     public static final String DFA18_minS =
-        "\1\11\1\uffff\1\141\1\155\1\141\1\52\1\154\1\uffff\1\165\1\145\1"+
-        "\uffff\1\143\1\141\1\156\1\141\1\157\1\145\1\157\1\162\1\174\1\46"+
-        "\1\60\4\75\1\141\1\163\1\uffff\1\56\1\uffff\1\0\1\150\2\uffff\1"+
-        "\52\10\uffff\1\143\1\160\1\151\1\156\1\154\1\157\1\162\2\uffff\1"+
-        "\157\1\uffff\2\145\1\165\1\155\1\164\1\143\1\164\1\145\1\144\1\164"+
-        "\1\162\1\141\1\143\1\141\1\154\1\55\2\154\1\163\1\154\1\60\13\uffff"+
-        "\1\164\1\145\2\uffff\1\145\2\uffff\1\153\1\157\1\164\1\143\1\163"+
-        "\1\155\1\141\1\142\1\162\1\156\1\145\1\160\1\157\1\165\1\151\1\162"+
-        "\1\156\1\60\1\145\1\141\1\142\1\60\1\163\2\154\1\151\1\60\1\uffff"+
-        "\1\154\1\145\1\165\1\154\1\164\1\uffff\1\143\1\60\1\156\1\141\1"+
-        "\162\1\60\1\164\1\145\1\60\1\154\1\141\1\171\2\60\1\154\1\55\1\155"+
-        "\1\157\1\151\1\144\1\uffff\1\55\1\164\1\154\1\uffff\1\164\1\165"+
-        "\1\60\1\145\1\uffff\2\60\1\154\1\145\1\141\1\150\1\uffff\1\60\1"+
-        "\147\1\164\1\uffff\1\151\1\60\1\uffff\2\154\1\60\2\uffff\1\141\1"+
-        "\uffff\1\165\1\156\1\141\1\142\1\141\1\145\1\151\1\145\1\163\1\144"+
-        "\1\uffff\1\156\2\uffff\1\164\1\143\1\151\1\145\1\uffff\1\145\1\60"+
-        "\1\157\2\60\1\uffff\1\164\1\154\1\60\1\164\1\165\1\55\1\146\1\157"+
-        "\1\144\1\60\1\145\1\143\1\60\1\164\1\156\1\163\1\60\1\uffff\1\156"+
-        "\2\uffff\1\145\1\141\1\uffff\1\151\1\164\3\uffff\1\156\1\60\1\uffff"+
-        "\1\163\1\145\1\uffff\1\60\1\163\1\60\1\uffff\2\60\1\164\1\157\1"+
-        "\145\1\60\1\uffff\2\60\1\uffff\1\60\3\uffff\1\145\1\156\1\163\4"+
-        "\uffff\1\60\1\55\1\60\3\uffff";
+        "\1\11\1\uffff\1\52\2\uffff\1\174\1\46\1\60\4\75\1\uffff\1\56\1\uffff"+
+        "\1\0\1\145\2\141\1\155\1\154\1\145\1\165\1\143\1\141\1\156\1\141"+
+        "\2\157\1\162\1\141\1\150\2\uffff\1\52\30\uffff\1\165\1\155\1\145"+
+        "\1\154\1\162\1\156\1\157\1\143\1\151\1\160\1\157\1\154\1\163\1\145"+
+        "\1\143\1\145\1\164\1\144\2\164\1\162\1\143\2\141\1\154\1\55\2\154"+
+        "\1\60\1\164\1\145\2\uffff\1\145\1\160\1\156\1\163\1\141\1\143\1"+
+        "\155\1\153\1\164\1\157\1\142\1\145\1\165\1\162\1\151\1\165\1\156"+
+        "\1\162\1\60\1\157\1\145\1\141\1\154\1\163\1\154\1\60\1\142\1\151"+
+        "\1\60\1\uffff\2\154\1\164\1\uffff\1\143\1\156\1\60\1\154\1\60\1"+
+        "\145\1\154\1\164\1\60\1\141\1\60\1\162\1\141\1\60\1\154\1\171\1"+
+        "\157\1\155\1\144\1\151\1\uffff\2\55\1\164\1\165\1\164\1\60\1\uffff"+
+        "\1\154\1\145\1\uffff\1\60\1\145\1\141\1\150\1\60\1\uffff\1\141\1"+
+        "\uffff\1\60\1\154\1\151\1\uffff\1\147\1\uffff\1\164\1\154\1\uffff"+
+        "\1\164\1\60\1\156\1\141\1\165\1\141\1\142\1\uffff\1\145\1\151\1"+
+        "\144\1\163\1\uffff\1\145\1\156\1\uffff\1\143\1\151\1\145\1\uffff"+
+        "\1\164\1\60\1\157\1\145\3\60\1\uffff\1\60\1\164\1\154\1\55\1\165"+
+        "\1\146\1\157\1\145\1\60\1\144\1\143\1\164\1\156\1\163\1\145\1\uffff"+
+        "\1\156\1\60\4\uffff\1\151\1\141\1\uffff\1\164\2\uffff\1\156\1\163"+
+        "\1\uffff\1\60\1\145\1\60\1\163\3\60\1\uffff\1\157\1\164\1\145\2"+
+        "\60\1\uffff\1\60\1\uffff\1\60\3\uffff\1\156\1\145\1\163\4\uffff"+
+        "\1\55\2\60\3\uffff";
     public static final String DFA18_maxS =
-        "\1\u00ff\1\uffff\1\141\1\156\1\165\1\52\1\154\1\uffff\1\165\1\162"+
-        "\1\uffff\2\165\1\170\1\141\2\165\1\157\1\162\1\174\1\46\1\76\4\75"+
-        "\1\141\1\163\1\uffff\1\71\1\uffff\1\ufffe\1\150\2\uffff\1\57\10"+
-        "\uffff\1\143\1\160\1\151\1\156\1\154\1\157\1\162\2\uffff\1\157\1"+
-        "\uffff\2\145\1\165\1\155\3\164\1\145\1\144\1\164\1\162\1\144\1\151"+
-        "\1\141\1\154\1\164\2\154\1\163\1\156\1\u00ff\13\uffff\1\164\1\145"+
-        "\2\uffff\1\145\2\uffff\1\153\1\157\1\164\1\143\1\163\1\155\1\141"+
-        "\1\142\1\162\1\156\1\145\1\160\1\157\1\165\1\151\1\162\1\156\1\u00ff"+
-        "\1\145\1\141\1\142\1\u00ff\1\163\2\154\1\151\1\u00ff\1\uffff\1\154"+
-        "\1\145\1\165\1\154\1\164\1\uffff\1\143\1\u00ff\1\156\1\141\1\162"+
-        "\1\u00ff\1\164\1\145\1\u00ff\1\154\1\141\1\171\2\u00ff\1\154\1\55"+
-        "\1\155\1\166\1\151\1\144\1\uffff\1\55\1\164\1\154\1\uffff\1\164"+
-        "\1\165\1\u00ff\1\145\1\uffff\2\u00ff\1\154\1\145\1\141\1\150\1\uffff"+
-        "\1\u00ff\1\147\1\164\1\uffff\1\151\1\u00ff\1\uffff\2\154\1\u00ff"+
-        "\2\uffff\1\141\1\uffff\1\165\1\156\1\141\1\142\1\141\1\145\1\151"+
-        "\1\145\1\163\1\144\1\uffff\1\156\2\uffff\1\164\1\143\1\151\1\145"+
-        "\1\uffff\1\145\1\u00ff\1\157\2\u00ff\1\uffff\1\164\1\154\1\u00ff"+
-        "\1\164\1\165\1\55\1\170\1\157\1\144\1\u00ff\1\145\1\143\1\u00ff"+
-        "\1\164\1\156\1\163\1\u00ff\1\uffff\1\156\2\uffff\1\145\1\141\1\uffff"+
-        "\1\151\1\164\3\uffff\1\156\1\u00ff\1\uffff\1\163\1\145\1\uffff\1"+
-        "\u00ff\1\163\1\u00ff\1\uffff\2\u00ff\1\164\1\157\1\145\1\u00ff\1"+
-        "\uffff\2\u00ff\1\uffff\1\u00ff\3\uffff\1\145\1\156\1\163\4\uffff"+
-        "\1\u00ff\1\55\1\u00ff\3\uffff";
+        "\1\u00ff\1\uffff\1\52\2\uffff\1\174\1\46\1\76\4\75\1\uffff\1\71"+
+        "\1\uffff\1\ufffe\1\162\1\165\1\141\1\156\1\154\4\165\1\170\1\141"+
+        "\1\165\1\157\1\162\1\141\1\150\2\uffff\1\57\30\uffff\1\165\1\155"+
+        "\1\145\1\154\1\162\1\156\1\157\1\143\1\151\1\160\1\157\1\154\1\163"+
+        "\1\145\1\164\1\145\1\164\1\144\2\164\1\162\1\151\1\141\1\144\1\154"+
+        "\1\164\1\154\1\156\1\u00ff\1\164\1\145\2\uffff\1\145\1\160\1\156"+
+        "\1\163\1\141\1\143\1\155\1\153\1\164\1\157\1\142\1\145\1\165\1\162"+
+        "\1\151\1\165\1\156\1\162\1\u00ff\1\157\1\145\1\141\1\154\1\163\1"+
+        "\154\1\u00ff\1\142\1\151\1\u00ff\1\uffff\2\154\1\164\1\uffff\1\143"+
+        "\1\156\1\u00ff\1\154\1\u00ff\1\145\1\154\1\164\1\u00ff\1\141\1\u00ff"+
+        "\1\162\1\141\1\u00ff\1\154\1\171\1\166\1\155\1\144\1\151\1\uffff"+
+        "\2\55\1\164\1\165\1\164\1\u00ff\1\uffff\1\154\1\145\1\uffff\1\u00ff"+
+        "\1\145\1\141\1\150\1\u00ff\1\uffff\1\141\1\uffff\1\u00ff\1\154\1"+
+        "\151\1\uffff\1\147\1\uffff\1\164\1\154\1\uffff\1\164\1\u00ff\1\156"+
+        "\1\141\1\165\1\141\1\142\1\uffff\1\145\1\151\1\144\1\163\1\uffff"+
+        "\1\145\1\156\1\uffff\1\143\1\151\1\145\1\uffff\1\164\1\u00ff\1\157"+
+        "\1\145\3\u00ff\1\uffff\1\u00ff\1\164\1\154\1\55\1\165\1\170\1\157"+
+        "\1\145\1\u00ff\1\144\1\143\1\164\1\156\1\163\1\145\1\uffff\1\156"+
+        "\1\u00ff\4\uffff\1\151\1\141\1\uffff\1\164\2\uffff\1\156\1\163\1"+
+        "\uffff\1\u00ff\1\145\1\u00ff\1\163\3\u00ff\1\uffff\1\157\1\164\1"+
+        "\145\2\u00ff\1\uffff\1\u00ff\1\uffff\1\u00ff\3\uffff\1\156\1\145"+
+        "\1\163\4\uffff\1\55\2\u00ff\3\uffff";
     public static final String DFA18_acceptS =
-        "\1\uffff\1\1\5\uffff\1\10\2\uffff\1\13\21\uffff\1\62\1\uffff\1\65"+
-        "\2\uffff\1\73\1\74\1\uffff\1\76\1\77\1\100\1\101\1\102\1\103\1\73"+
-        "\1\105\7\uffff\1\6\1\5\1\uffff\1\10\25\uffff\1\35\1\37\1\54\1\36"+
-        "\1\40\1\41\1\43\1\42\1\45\1\44\1\46\2\uffff\1\63\1\64\1\uffff\1"+
-        "\75\1\104\33\uffff\1\21\5\uffff\1\34\24\uffff\1\53\3\uffff\1\72"+
-        "\4\uffff\1\56\6\uffff\1\61\3\uffff\1\30\2\uffff\1\26\3\uffff\1\71"+
-        "\1\66\1\uffff\1\22\12\uffff\1\57\1\uffff\1\52\1\67\4\uffff\1\70"+
-        "\5\uffff\1\11\21\uffff\1\3\1\uffff\1\60\1\7\2\uffff\1\31\2\uffff"+
-        "\1\24\1\15\1\16\2\uffff\1\55\2\uffff\1\32\3\uffff\1\2\6\uffff\1"+
-        "\17\2\uffff\1\33\1\uffff\1\50\1\4\1\12\3\uffff\1\25\1\51\1\20\1"+
-        "\47\3\uffff\1\27\1\23\1\14";
+        "\1\uffff\1\1\1\uffff\1\4\1\5\7\uffff\1\21\1\uffff\1\24\21\uffff"+
+        "\1\72\1\73\1\uffff\1\75\1\76\1\77\1\100\1\101\1\102\1\72\1\104\1"+
+        "\3\1\2\1\4\1\6\1\10\1\20\1\7\1\11\1\12\1\14\1\13\1\16\1\15\1\17"+
+        "\1\23\1\22\37\uffff\1\103\1\74\35\uffff\1\42\3\uffff\1\55\24\uffff"+
+        "\1\56\6\uffff\1\71\2\uffff\1\64\5\uffff\1\25\1\uffff\1\70\3\uffff"+
+        "\1\47\1\uffff\1\51\2\uffff\1\32\7\uffff\1\43\4\uffff\1\65\2\uffff"+
+        "\1\62\3\uffff\1\67\7\uffff\1\33\17\uffff\1\66\2\uffff\1\27\1\31"+
+        "\1\53\1\52\2\uffff\1\45\1\uffff\1\37\1\36\2\uffff\1\63\7\uffff\1"+
+        "\26\5\uffff\1\40\1\uffff\1\54\1\uffff\1\61\1\34\1\30\3\uffff\1\46"+
+        "\1\60\1\41\1\57\3\uffff\1\44\1\50\1\35";
     public static final String DFA18_specialS =
-        "\u010e\uffff}>";
+        "\u010a\uffff}>";
     public static final String[] DFA18_transition = {
-        "\2\34\1\uffff\2\34\22\uffff\1\34\1\31\1\36\1\42\1\41\1\53\1\24\1"+
-        "\37\1\44\1\45\2\53\1\7\1\25\1\5\1\43\12\35\1\12\1\1\1\30\1\26\1"+
-        "\27\2\53\32\52\1\46\1\53\1\47\1\53\1\41\1\uffff\1\13\1\52\1\21\1"+
-        "\14\1\15\1\4\1\6\1\52\1\3\3\52\1\32\1\17\1\22\1\2\1\10\1\20\1\16"+
-        "\1\11\1\33\1\52\1\40\3\52\1\50\1\23\1\51\102\uffff\100\52",
+        "\2\14\1\uffff\2\14\22\uffff\1\14\1\13\1\16\1\41\1\40\1\52\1\6\1"+
+        "\17\1\43\1\44\2\52\1\3\1\7\1\2\1\42\12\15\1\4\1\1\1\12\1\10\1\11"+
+        "\2\52\32\51\1\45\1\52\1\46\1\52\1\40\1\uffff\1\27\1\51\1\34\1\30"+
+        "\1\31\1\21\1\24\1\51\1\23\3\51\1\36\1\33\1\35\1\22\1\26\1\25\1\32"+
+        "\1\20\2\51\1\37\3\51\1\47\1\5\1\50\102\uffff\100\51",
         "",
-        "\1\54",
-        "\1\55\1\56",
-        "\1\60\15\uffff\1\62\2\uffff\1\61\2\uffff\1\57",
+        "\1\53",
+        "",
+        "",
+        "\1\56",
+        "\1\60",
+        "\12\15\4\uffff\1\62",
         "\1\63",
-        "\1\65",
+        "\1\64",
+        "\1\66",
+        "\1\70",
         "",
-        "\1\67",
-        "\1\72\2\uffff\1\70\11\uffff\1\71",
+        "\1\71\1\uffff\12\15",
         "",
-        "\1\74\3\uffff\1\76\6\uffff\1\77\5\uffff\1\75\1\73",
-        "\1\100\23\uffff\1\101",
-        "\1\102\7\uffff\1\104\1\uffff\1\103",
+        "\uffff\16",
+        "\1\74\2\uffff\1\75\11\uffff\1\73",
+        "\1\76\15\uffff\1\77\2\uffff\1\101\2\uffff\1\100",
+        "\1\102",
+        "\1\104\1\103",
         "\1\105",
-        "\1\106\5\uffff\1\107",
-        "\1\111\17\uffff\1\110",
-        "\1\112",
-        "\1\113",
-        "\1\114",
-        "\1\116",
-        "\12\35\4\uffff\1\120",
-        "\1\121",
-        "\1\122",
-        "\1\124",
+        "\1\107\17\uffff\1\106",
+        "\1\110",
+        "\1\111\3\uffff\1\112\6\uffff\1\114\5\uffff\1\113\1\115",
+        "\1\116\23\uffff\1\117",
+        "\1\122\7\uffff\1\121\1\uffff\1\120",
+        "\1\123",
+        "\1\124\5\uffff\1\125",
         "\1\126",
         "\1\127",
         "\1\130",
+        "\1\131",
         "",
-        "\1\132\1\uffff\12\35",
         "",
-        "\uffff\36",
-        "\1\133",
+        "\1\132\4\uffff\1\133",
         "",
         "",
-        "\1\135\4\uffff\1\134",
         "",
         "",
         "",
@@ -3730,6 +3686,22 @@
         "",
         "",
         "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "\1\134",
+        "\1\135",
         "\1\136",
         "\1\137",
         "\1\140",
@@ -3737,49 +3709,33 @@
         "\1\142",
         "\1\143",
         "\1\144",
-        "",
-        "",
         "\1\145",
-        "",
         "\1\146",
         "\1\147",
         "\1\150",
         "\1\151",
-        "\1\152",
-        "\1\153\20\uffff\1\154",
+        "\1\153\20\uffff\1\152",
+        "\1\154",
         "\1\155",
         "\1\156",
         "\1\157",
         "\1\160",
         "\1\161",
-        "\1\162\2\uffff\1\163",
-        "\1\165\5\uffff\1\164",
-        "\1\166",
+        "\1\162\5\uffff\1\163",
+        "\1\164",
+        "\1\166\2\uffff\1\165",
         "\1\167",
         "\1\171\106\uffff\1\170",
         "\1\172",
-        "\1\173",
-        "\1\174",
-        "\1\175\1\uffff\1\176",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\1\173\1\uffff\1\174",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\176",
+        "\1\177",
         "",
         "",
-        "",
-        "",
-        "",
-        "",
-        "",
-        "",
-        "",
-        "",
-        "",
         "\1\u0080",
         "\1\u0081",
-        "",
-        "",
         "\1\u0082",
-        "",
-        "",
         "\1\u0083",
         "\1\u0084",
         "\1\u0085",
@@ -3795,118 +3751,122 @@
         "\1\u008f",
         "\1\u0090",
         "\1\u0091",
-        "\1\u0092",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u0093",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\1\u0094",
         "\1\u0095",
         "\1\u0096",
         "\1\u0097",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\1\u0099",
+        "\1\u0098",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u009a",
         "\1\u009b",
-        "\1\u009c",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
+        "\1\u009d",
         "\1\u009e",
         "\1\u009f",
+        "",
         "\1\u00a0",
         "\1\u00a1",
-        "\1\u00a2",
-        "",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00a3",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00a5",
         "\1\u00a6",
         "\1\u00a7",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00a9",
-        "\1\u00aa",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u00ab",
         "\1\u00ac",
-        "\1\u00ad",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00ae",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\1\u00b1",
+        "\1\u00af",
+        "\1\u00b0\6\uffff\1\u00b1",
         "\1\u00b2",
         "\1\u00b3",
-        "\1\u00b4\6\uffff\1\u00b5",
+        "\1\u00b4",
+        "",
+        "\1\u00b5",
         "\1\u00b6",
         "\1\u00b7",
-        "",
         "\1\u00b8",
         "\1\u00b9",
-        "\1\u00ba",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
         "\1\u00bb",
         "\1\u00bc",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00be",
+        "\1\u00bf",
+        "\1\u00c0",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\1\u00c1",
         "\1\u00c2",
+        "",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00c3",
         "\1\u00c4",
         "",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\1\u00c5",
+        "",
         "\1\u00c6",
         "\1\u00c7",
         "",
         "\1\u00c8",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "",
-        "\1\u00c9",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00ca",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "",
-        "",
+        "\1\u00cb",
         "\1\u00cc",
-        "",
         "\1\u00cd",
         "\1\u00ce",
+        "",
         "\1\u00cf",
         "\1\u00d0",
         "\1\u00d1",
         "\1\u00d2",
+        "",
         "\1\u00d3",
         "\1\u00d4",
+        "",
         "\1\u00d5",
         "\1\u00d6",
-        "",
         "\1\u00d7",
         "",
-        "",
         "\1\u00d8",
-        "\1\u00d9",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00da",
         "\1\u00db",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
-        "\1\u00dc",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\1\u00de",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u00e0",
         "\1\u00e1",
         "\1\u00e2",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\1\u00e4",
-        "\1\u00e5",
+        "\1\u00e3",
+        "\1\u00e5\21\uffff\1\u00e4",
         "\1\u00e6",
-        "\1\u00e7\21\uffff\1\u00e8",
+        "\1\u00e7",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00e9",
         "\1\u00ea",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\1\u00eb",
         "\1\u00ec",
         "\1\u00ed",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\1\u00ee",
+        "",
         "\1\u00ef",
-        "\1\u00f0",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "",
+        "",
+        "",
+        "",
         "\1\u00f1",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\1\u00f2",
         "",
         "\1\u00f3",
         "",
@@ -3914,47 +3874,38 @@
         "\1\u00f4",
         "\1\u00f5",
         "",
-        "\1\u00f6",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "\1\u00f7",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\1\u00f9",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
-        "",
-        "",
-        "\1\u00f8",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "",
-        "\1\u00fa",
-        "\1\u00fb",
-        "",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
         "\1\u00fd",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\1\u00fe",
+        "\1\u00ff",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\1\u0101",
-        "\1\u0102",
-        "\1\u0103",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
         "",
         "",
+        "\1\u0104",
+        "\1\u0105",
+        "\1\u0106",
         "",
-        "\1\u0108",
-        "\1\u0109",
-        "\1\u010a",
         "",
         "",
         "",
+        "\1\u0107",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
+        "\12\51\7\uffff\32\51\4\uffff\1\51\1\uffff\32\51\105\uffff\100\51",
         "",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
-        "\1\u010c",
-        "\12\52\7\uffff\32\52\4\uffff\1\52\1\uffff\32\52\105\uffff\100\52",
         "",
-        "",
         ""
     };
 
@@ -3975,7 +3926,7 @@
             }
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | WS | INT | FLOAT | STRING | BOOL | RULE | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC );";
+            return "1:1: Tokens : ( T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | WS | INT | FLOAT | STRING | BOOL | PACKAGE | IMPORT | FUNCTION | GLOBAL | RULE | QUERY | TEMPLATE | ATTRIBUTES | DATE_EFFECTIVE | DATE_EXPIRES | ENABLED | SALIENCE | NO_LOOP | AUTO_FOCUS | ACTIVATION_GROUP | AGENDA_GROUP | DURATION | FROM | ACCUMULATE | INIT | ACTION | RESULT | COLLECT | OR | AND | CONTAINS | EXCLUDES | MATCHES | NULL | EXISTS | NOT | EVAL | FORALL | WHEN | THEN | END | ID | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | MULTI_LINE_COMMENT | MISC );";
         }
     }
  

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-01-30 17:42:20 UTC (rev 9162)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2007-01-30 19:54:48 UTC (rev 9163)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b5 D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2007-01-25 15:52:58
+// $ANTLR 3.0b5 D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g 2007-01-30 17:02:04
 
 	package org.drools.lang;
 	import java.util.List;
@@ -18,38 +18,70 @@
 import java.util.HashMap;
 public class DRLParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ID", "RULE", "WHEN", "STRING", "BOOL", "INT", "LEFT_PAREN", "RIGHT_PAREN", "FLOAT", "LEFT_CURLY", "RIGHT_CURLY", "LEFT_SQUARE", "RIGHT_SQUARE", "END", "THEN", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", "MISC", "';'", "'package'", "'import'", "'function'", "'.'", "'.*'", "'global'", "','", "'query'", "'template'", "':'", "'attributes'", "'date-effective'", "'date-expires'", "'enabled'", "'salience'", "'no-loop'", "'auto-focus'", "'activation-group'", "'agenda-group'", "'duration'", "'from'", "'accumulate'", "'init'", "'action'", "'result'", "'collect'", "'or'", "'||'", "'&'", "'|'", "'->'", "'=='", "'>'", "'>='", "'<'", "'<='", "'!='", "'contains'", "'matches'", "'excludes'", "'null'", "'and'", "'&&'", "'exists'", "'not'", "'eval'", "'forall'", "'use'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "PACKAGE", "IMPORT", "FUNCTION", "GLOBAL", "QUERY", "END", "TEMPLATE", "RULE", "WHEN", "ATTRIBUTES", "DATE_EFFECTIVE", "STRING", "DATE_EXPIRES", "ENABLED", "BOOL", "SALIENCE", "INT", "NO_LOOP", "AUTO_FOCUS", "ACTIVATION_GROUP", "AGENDA_GROUP", "DURATION", "ACCUMULATE", "INIT", "ACTION", "RESULT", "COLLECT", "ID", "OR", "LEFT_PAREN", "RIGHT_PAREN", "CONTAINS", "MATCHES", "EXCLUDES", "FLOAT", "NULL", "LEFT_CURLY", "RIGHT_CURLY", "LEFT_SQUARE", "RIGHT_SQUARE", "AND", "FROM", "EXISTS", "NOT", "EVAL", "FORALL", "THEN", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT", "MISC", "';'", "'.'", "'.*'", "','", "':'", "'||'", "'&'", "'|'", "'->'", "'=='", "'>'", "'>='", "'<'", "'<='", "'!='", "'&&'"
     };
-    public static final int LEFT_PAREN=10;
-    public static final int RIGHT_CURLY=14;
-    public static final int BOOL=8;
-    public static final int END=17;
-    public static final int HexDigit=22;
-    public static final int WHEN=6;
-    public static final int WS=20;
-    public static final int MISC=28;
-    public static final int STRING=7;
-    public static final int FLOAT=12;
-    public static final int THEN=18;
-    public static final int RULE=5;
-    public static final int UnicodeEscape=23;
-    public static final int EscapeSequence=21;
-    public static final int INT=9;
+    public static final int EXISTS=46;
+    public static final int AUTO_FOCUS=22;
+    public static final int END=9;
+    public static final int HexDigit=54;
+    public static final int FORALL=49;
+    public static final int TEMPLATE=10;
+    public static final int MISC=60;
+    public static final int FLOAT=38;
+    public static final int QUERY=8;
+    public static final int THEN=50;
+    public static final int RULE=11;
+    public static final int INIT=27;
+    public static final int IMPORT=5;
+    public static final int DATE_EFFECTIVE=14;
+    public static final int PACKAGE=4;
+    public static final int OR=32;
+    public static final int AND=44;
+    public static final int FUNCTION=6;
+    public static final int GLOBAL=7;
+    public static final int EscapeSequence=53;
+    public static final int INT=20;
+    public static final int DATE_EXPIRES=16;
+    public static final int LEFT_SQUARE=42;
+    public static final int CONTAINS=35;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=57;
+    public static final int ATTRIBUTES=13;
+    public static final int RESULT=29;
+    public static final int LEFT_CURLY=40;
+    public static final int FROM=45;
+    public static final int ID=31;
+    public static final int ACTIVATION_GROUP=23;
+    public static final int LEFT_PAREN=33;
+    public static final int RIGHT_CURLY=41;
+    public static final int BOOL=18;
+    public static final int EXCLUDES=37;
+    public static final int WHEN=12;
+    public static final int WS=52;
+    public static final int STRING=15;
+    public static final int ACTION=28;
+    public static final int COLLECT=30;
+    public static final int NO_LOOP=21;
+    public static final int ACCUMULATE=26;
+    public static final int UnicodeEscape=55;
+    public static final int DURATION=25;
+    public static final int EVAL=48;
+    public static final int MATCHES=36;
     public static final int EOF=-1;
-    public static final int EOL=19;
-    public static final int LEFT_SQUARE=15;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=25;
-    public static final int OctalEscape=24;
-    public static final int MULTI_LINE_COMMENT=27;
-    public static final int RIGHT_PAREN=11;
-    public static final int LEFT_CURLY=13;
-    public static final int RIGHT_SQUARE=16;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=26;
-    public static final int ID=4;
+    public static final int EOL=51;
+    public static final int AGENDA_GROUP=24;
+    public static final int NULL=39;
+    public static final int OctalEscape=56;
+    public static final int SALIENCE=19;
+    public static final int MULTI_LINE_COMMENT=59;
+    public static final int NOT=47;
+    public static final int RIGHT_PAREN=34;
+    public static final int ENABLED=17;
+    public static final int RIGHT_SQUARE=43;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=58;
 
         public DRLParser(TokenStream input) {
             super(input);
-            ruleMemo = new HashMap[149+1];
+            ruleMemo = new HashMap[172+1];
          }
         
 
@@ -231,14 +263,14 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:184:4: ( ( ';' )=> ';' )?
             int alt1=2;
             int LA1_0 = input.LA(1);
-            if ( (LA1_0==29) ) {
+            if ( (LA1_0==61) ) {
                 alt1=1;
             }
             switch (alt1) {
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( ';' )=> ';'
                     {
-                    match(input,29,FOLLOW_29_in_opt_semicolon46); if (failed) return ;
+                    match(input,61,FOLLOW_61_in_opt_semicolon46); if (failed) return ;
 
                     }
                     break;
@@ -277,7 +309,7 @@
             do {
                 int alt2=2;
                 int LA2_0 = input.LA(1);
-                if ( (LA2_0==RULE||(LA2_0>=31 && LA2_0<=32)||LA2_0==35||(LA2_0>=37 && LA2_0<=38)) ) {
+                if ( ((LA2_0>=IMPORT && LA2_0<=QUERY)||(LA2_0>=TEMPLATE && LA2_0<=RULE)) ) {
                     alt2=1;
                 }
 
@@ -320,34 +352,34 @@
 
 
     // $ANTLR start prolog
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:192:1: prolog : ( ( package_statement )=>name= package_statement )? ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:192:1: prolog : ( ( package_statement )=>n= package_statement )? ;
     public void prolog() throws RecognitionException {   
-        String name = null;
+        String n = null;
 
 
         
         		String packageName = "";
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:196:4: ( ( ( package_statement )=>name= package_statement )? )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:196:4: ( ( package_statement )=>name= package_statement )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:196:4: ( ( ( package_statement )=>n= package_statement )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:196:4: ( ( package_statement )=>n= package_statement )?
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:196:4: ( ( package_statement )=>name= package_statement )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:196:4: ( ( package_statement )=>n= package_statement )?
             int alt3=2;
             int LA3_0 = input.LA(1);
-            if ( (LA3_0==30) ) {
+            if ( (LA3_0==PACKAGE) ) {
                 alt3=1;
             }
             switch (alt3) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:196:6: ( package_statement )=>name= package_statement
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:196:6: ( package_statement )=>n= package_statement
                     {
                     pushFollow(FOLLOW_package_statement_in_prolog90);
-                    name=package_statement();
+                    n=package_statement();
                     _fsp--;
                     if (failed) return ;
                     if ( backtracking==0 ) {
-                       packageName = name; 
+                       packageName = n; 
                     }
 
                     }
@@ -357,7 +389,7 @@
 
             if ( backtracking==0 ) {
                
-              			this.packageDescr = new PackageDescr( packageName ); 
+              			this.packageDescr = factory.createPackage( packageName ); 
               		
             }
 
@@ -391,46 +423,7 @@
             {
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:204:2: ( ( import_statement )=> import_statement | ( function_import_statement )=> function_import_statement | ( global )=> global | ( function )=> function | ( template )=>t= template | ( rule )=>r= rule | q= query )
             int alt4=7;
-            switch ( input.LA(1) ) {
-            case 31:
-                int LA4_1 = input.LA(2);
-                if ( (LA4_1==32) ) {
-                    alt4=2;
-                }
-                else if ( (LA4_1==ID) ) {
-                    alt4=1;
-                }
-                else {
-                    if (backtracking>0) {failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("204:2: ( ( import_statement )=> import_statement | ( function_import_statement )=> function_import_statement | ( global )=> global | ( function )=> function | ( template )=>t= template | ( rule )=>r= rule | q= query )", 4, 1, input);
-
-                    throw nvae;
-                }
-                break;
-            case 35:
-                alt4=3;
-                break;
-            case 32:
-                alt4=4;
-                break;
-            case 38:
-                alt4=5;
-                break;
-            case RULE:
-                alt4=6;
-                break;
-            case 37:
-                alt4=7;
-                break;
-            default:
-                if (backtracking>0) {failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("204:2: ( ( import_statement )=> import_statement | ( function_import_statement )=> function_import_statement | ( global )=> global | ( function )=> function | ( template )=>t= template | ( rule )=>r= rule | q= query )", 4, 0, input);
-
-                throw nvae;
-            }
-
+            alt4 = dfa4.predict(input);
             switch (alt4) {
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:204:4: ( import_statement )=> import_statement
@@ -506,7 +499,7 @@
                     _fsp--;
                     if (failed) return ;
                     if ( backtracking==0 ) {
-                      this.packageDescr.addRule( q ); 
+                       if( q != null ) this.packageDescr.addRule( q ); 
                     }
 
                     }
@@ -530,23 +523,23 @@
 
 
     // $ANTLR start package_statement
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:214:1: package_statement returns [String packageName] : 'package' name= dotted_name opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:214:1: package_statement returns [String packageName] : PACKAGE n= dotted_name opt_semicolon ;
     public String package_statement() throws RecognitionException {   
         String packageName = null;
 
-        String name = null;
+        String n = null;
 
 
         
         		packageName = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:219:3: ( 'package' name= dotted_name opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:219:3: 'package' name= dotted_name opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:219:3: ( PACKAGE n= dotted_name opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:219:3: PACKAGE n= dotted_name opt_semicolon
             {
-            match(input,30,FOLLOW_30_in_package_statement202); if (failed) return packageName;
+            match(input,PACKAGE,FOLLOW_PACKAGE_in_package_statement202); if (failed) return packageName;
             pushFollow(FOLLOW_dotted_name_in_package_statement206);
-            name=dotted_name();
+            n=dotted_name();
             _fsp--;
             if (failed) return packageName;
             pushFollow(FOLLOW_opt_semicolon_in_package_statement208);
@@ -555,7 +548,7 @@
             if (failed) return packageName;
             if ( backtracking==0 ) {
               
-              			packageName = name;
+              			packageName = n;
               		
             }
 
@@ -574,7 +567,7 @@
 
 
     // $ANTLR start import_statement
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:226:1: import_statement : imp= 'import' import_name[importDecl] opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:226:1: import_statement : imp= IMPORT import_name[importDecl] opt_semicolon ;
     public void import_statement() throws RecognitionException {   
         Token imp=null;
 
@@ -582,11 +575,11 @@
                 	ImportDescr importDecl = null;
                 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:230:4: (imp= 'import' import_name[importDecl] opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:230:4: imp= 'import' import_name[importDecl] opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:230:4: (imp= IMPORT import_name[importDecl] opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:230:4: imp= IMPORT import_name[importDecl] opt_semicolon
             {
             imp=(Token)input.LT(1);
-            match(input,31,FOLLOW_31_in_import_statement240); if (failed) return ;
+            match(input,IMPORT,FOLLOW_IMPORT_in_import_statement240); if (failed) return ;
             if ( backtracking==0 ) {
               
               	            importDecl = factory.createImport( );
@@ -620,7 +613,7 @@
 
 
     // $ANTLR start function_import_statement
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:241:1: function_import_statement : imp= 'import' 'function' import_name[importDecl] opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:241:1: function_import_statement : imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon ;
     public void function_import_statement() throws RecognitionException {   
         Token imp=null;
 
@@ -628,12 +621,12 @@
                 	FunctionImportDescr importDecl = null;
                 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:245:4: (imp= 'import' 'function' import_name[importDecl] opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:245:4: imp= 'import' 'function' import_name[importDecl] opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:245:4: (imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:245:4: imp= IMPORT FUNCTION import_name[importDecl] opt_semicolon
             {
             imp=(Token)input.LT(1);
-            match(input,31,FOLLOW_31_in_function_import_statement292); if (failed) return ;
-            match(input,32,FOLLOW_32_in_function_import_statement294); if (failed) return ;
+            match(input,IMPORT,FOLLOW_IMPORT_in_function_import_statement292); if (failed) return ;
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_function_import_statement294); if (failed) return ;
             if ( backtracking==0 ) {
               
               	            importDecl = factory.createFunctionImport();
@@ -667,22 +660,25 @@
 
 
     // $ANTLR start import_name
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:257:1: import_name[ImportDescr importDecl] returns [String name] : id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '.*' )=>star= '.*' )? ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:257:1: import_name[ImportDescr importDecl] returns [String name] : id= identifier ( ( '.' identifier )=> '.' id= identifier )* ( ( '.*' )=>star= '.*' )? ;
     public String import_name(ImportDescr importDecl) throws RecognitionException {   
         String name = null;
 
-        Token id=null;
         Token star=null;
+        Token id = null;
 
+
         
         		name = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:262:3: (id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '.*' )=>star= '.*' )? )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:262:3: id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '.*' )=>star= '.*' )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:262:3: (id= identifier ( ( '.' identifier )=> '.' id= identifier )* ( ( '.*' )=>star= '.*' )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:262:3: id= identifier ( ( '.' identifier )=> '.' id= identifier )* ( ( '.*' )=>star= '.*' )?
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_import_name348); if (failed) return name;
+            pushFollow(FOLLOW_identifier_in_import_name348);
+            id=identifier();
+            _fsp--;
+            if (failed) return name;
             if ( backtracking==0 ) {
                
               		    name=id.getText(); 
@@ -690,23 +686,25 @@
               		    importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
               		
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:268:3: ( ( '.' ID )=> '.' id= ID )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:268:3: ( ( '.' identifier )=> '.' id= identifier )*
             loop5:
             do {
                 int alt5=2;
                 int LA5_0 = input.LA(1);
-                if ( (LA5_0==33) ) {
+                if ( (LA5_0==62) ) {
                     alt5=1;
                 }
 
 
                 switch (alt5) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:268:5: ( '.' ID )=> '.' id= ID
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:268:5: ( '.' identifier )=> '.' id= identifier
             	    {
-            	    match(input,33,FOLLOW_33_in_import_name360); if (failed) return name;
-            	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_import_name364); if (failed) return name;
+            	    match(input,62,FOLLOW_62_in_import_name360); if (failed) return name;
+            	    pushFollow(FOLLOW_identifier_in_import_name364);
+            	    id=identifier();
+            	    _fsp--;
+            	    if (failed) return name;
             	    if ( backtracking==0 ) {
             	       
             	      		        name = name + "." + id.getText(); 
@@ -726,7 +724,7 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:275:3: ( ( '.*' )=>star= '.*' )?
             int alt6=2;
             int LA6_0 = input.LA(1);
-            if ( (LA6_0==34) ) {
+            if ( (LA6_0==63) ) {
                 alt6=1;
             }
             switch (alt6) {
@@ -734,7 +732,7 @@
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:275:5: ( '.*' )=>star= '.*'
                     {
                     star=(Token)input.LT(1);
-                    match(input,34,FOLLOW_34_in_import_name388); if (failed) return name;
+                    match(input,63,FOLLOW_63_in_import_name388); if (failed) return name;
                     if ( backtracking==0 ) {
                        
                       		        name = name + star.getText(); 
@@ -764,25 +762,28 @@
 
 
     // $ANTLR start global
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:285:1: global : 'global' type= dotted_name id= ID opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:285:1: global : GLOBAL type= dotted_name id= identifier opt_semicolon ;
     public void global() throws RecognitionException {   
-        Token id=null;
         String type = null;
 
+        Token id = null;
 
+
         
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:289:3: ( 'global' type= dotted_name id= ID opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:289:3: 'global' type= dotted_name id= ID opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:289:3: ( GLOBAL type= dotted_name id= identifier opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:289:3: GLOBAL type= dotted_name id= identifier opt_semicolon
             {
-            match(input,35,FOLLOW_35_in_global422); if (failed) return ;
+            match(input,GLOBAL,FOLLOW_GLOBAL_in_global422); if (failed) return ;
             pushFollow(FOLLOW_dotted_name_in_global426);
             type=dotted_name();
             _fsp--;
             if (failed) return ;
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_global430); if (failed) return ;
+            pushFollow(FOLLOW_identifier_in_global430);
+            id=identifier();
+            _fsp--;
+            if (failed) return ;
             pushFollow(FOLLOW_opt_semicolon_in_global432);
             opt_semicolon();
             _fsp--;
@@ -808,12 +809,13 @@
 
 
     // $ANTLR start function
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:296:1: function : loc= 'function' ( ( dotted_name )=>retType= dotted_name )? name= ID '(' ( ( ( ( dotted_name )=> dotted_name )? argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=> dotted_name )? argument )* )=> ( ( dotted_name )=>paramType= dotted_name )? paramName= argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument )* )? ')' body= curly_chunk ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:296:1: function : loc= FUNCTION ( ( dotted_name )=>retType= dotted_name )? n= identifier '(' ( ( ( ( dotted_name )=> dotted_name )? argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=> dotted_name )? argument )* )=> ( ( dotted_name )=>paramType= dotted_name )? paramName= argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument )* )? ')' body= curly_chunk ;
     public void function() throws RecognitionException {   
         Token loc=null;
-        Token name=null;
         String retType = null;
 
+        Token n = null;
+
         String paramType = null;
 
         String paramName = null;
@@ -825,23 +827,23 @@
         		FunctionDescr f = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:301:3: (loc= 'function' ( ( dotted_name )=>retType= dotted_name )? name= ID '(' ( ( ( ( dotted_name )=> dotted_name )? argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=> dotted_name )? argument )* )=> ( ( dotted_name )=>paramType= dotted_name )? paramName= argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument )* )? ')' body= curly_chunk )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:301:3: loc= 'function' ( ( dotted_name )=>retType= dotted_name )? name= ID '(' ( ( ( ( dotted_name )=> dotted_name )? argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=> dotted_name )? argument )* )=> ( ( dotted_name )=>paramType= dotted_name )? paramName= argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument )* )? ')' body= curly_chunk
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:301:3: (loc= FUNCTION ( ( dotted_name )=>retType= dotted_name )? n= identifier '(' ( ( ( ( dotted_name )=> dotted_name )? argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=> dotted_name )? argument )* )=> ( ( dotted_name )=>paramType= dotted_name )? paramName= argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument )* )? ')' body= curly_chunk )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:301:3: loc= FUNCTION ( ( dotted_name )=>retType= dotted_name )? n= identifier '(' ( ( ( ( dotted_name )=> dotted_name )? argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=> dotted_name )? argument )* )=> ( ( dotted_name )=>paramType= dotted_name )? paramName= argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument )* )? ')' body= curly_chunk
             {
             loc=(Token)input.LT(1);
-            match(input,32,FOLLOW_32_in_function459); if (failed) return ;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:301:18: ( ( dotted_name )=>retType= dotted_name )?
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_function459); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:301:16: ( ( dotted_name )=>retType= dotted_name )?
             int alt7=2;
             int LA7_0 = input.LA(1);
             if ( (LA7_0==ID) ) {
                 int LA7_1 = input.LA(2);
-                if ( (LA7_1==ID||LA7_1==LEFT_SQUARE||LA7_1==33) ) {
+                if ( ((LA7_1>=PACKAGE && LA7_1<=ATTRIBUTES)||LA7_1==ENABLED||LA7_1==SALIENCE||(LA7_1>=DURATION && LA7_1<=OR)||(LA7_1>=CONTAINS && LA7_1<=EXCLUDES)||LA7_1==NULL||LA7_1==LEFT_SQUARE||(LA7_1>=AND && LA7_1<=THEN)||LA7_1==62) ) {
                     alt7=1;
                 }
             }
             switch (alt7) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:301:19: ( dotted_name )=>retType= dotted_name
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:301:17: ( dotted_name )=>retType= dotted_name
                     {
                     pushFollow(FOLLOW_dotted_name_in_function464);
                     retType=dotted_name();
@@ -853,12 +855,14 @@
 
             }
 
-            name=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_function470); if (failed) return ;
+            pushFollow(FOLLOW_identifier_in_function470);
+            n=identifier();
+            _fsp--;
+            if (failed) return ;
             if ( backtracking==0 ) {
               
-              			//System.err.println( "function :: " + name.getText() );
-              			f = new FunctionDescr( name.getText(), retType );
+              			//System.err.println( "function :: " + n.getText() );
+              			f = new FunctionDescr( n.getText(), retType );
               			f.setLocation(offset(loc.getLine()), loc.getCharPositionInLine());
               		
             }
@@ -866,7 +870,7 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:308:4: ( ( ( ( dotted_name )=> dotted_name )? argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=> dotted_name )? argument )* )=> ( ( dotted_name )=>paramType= dotted_name )? paramName= argument ( ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument )* )?
             int alt11=2;
             int LA11_0 = input.LA(1);
-            if ( (LA11_0==ID) ) {
+            if ( ((LA11_0>=PACKAGE && LA11_0<=ATTRIBUTES)||LA11_0==ENABLED||LA11_0==SALIENCE||(LA11_0>=DURATION && LA11_0<=OR)||(LA11_0>=CONTAINS && LA11_0<=EXCLUDES)||LA11_0==NULL||(LA11_0>=AND && LA11_0<=THEN)) ) {
                 alt11=1;
             }
             switch (alt11) {
@@ -904,7 +908,7 @@
                     do {
                         int alt10=2;
                         int LA10_0 = input.LA(1);
-                        if ( (LA10_0==36) ) {
+                        if ( (LA10_0==64) ) {
                             alt10=1;
                         }
 
@@ -913,7 +917,7 @@
                     	case 1 :
                     	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:312:7: ( ',' ( ( dotted_name )=> dotted_name )? argument )=> ',' ( ( dotted_name )=>paramType= dotted_name )? paramName= argument
                     	    {
-                    	    match(input,36,FOLLOW_36_in_function509); if (failed) return ;
+                    	    match(input,64,FOLLOW_64_in_function509); if (failed) return ;
                     	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:312:11: ( ( dotted_name )=>paramType= dotted_name )?
                     	    int alt9=2;
                     	    alt9 = dfa9.predict(input);
@@ -984,7 +988,7 @@
 
 
     // $ANTLR start query
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:330:1: query returns [QueryDescr query] : loc= 'query' queryName= word ( normal_lhs_block[lhs] ) 'end' ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:330:1: query returns [QueryDescr query] : loc= QUERY queryName= name ( normal_lhs_block[lhs] ) END ;
     public QueryDescr query() throws RecognitionException {   
         QueryDescr query = null;
 
@@ -997,13 +1001,13 @@
         		AndDescr lhs = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:336:3: (loc= 'query' queryName= word ( normal_lhs_block[lhs] ) 'end' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:336:3: loc= 'query' queryName= word ( normal_lhs_block[lhs] ) 'end'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:336:3: (loc= QUERY queryName= name ( normal_lhs_block[lhs] ) END )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:336:3: loc= QUERY queryName= name ( normal_lhs_block[lhs] ) END
             {
             loc=(Token)input.LT(1);
-            match(input,37,FOLLOW_37_in_query581); if (failed) return query;
-            pushFollow(FOLLOW_word_in_query585);
-            queryName=word();
+            match(input,QUERY,FOLLOW_QUERY_in_query581); if (failed) return query;
+            pushFollow(FOLLOW_name_in_query585);
+            queryName=name();
             _fsp--;
             if (failed) return query;
             if ( backtracking==0 ) {
@@ -1041,12 +1045,13 @@
 
 
     // $ANTLR start template
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:352:1: template returns [FactTemplateDescr template] : loc= 'template' templateName= ID opt_semicolon ( ( template_slot )=>slot= template_slot )+ 'end' opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:352:1: template returns [FactTemplateDescr template] : loc= TEMPLATE templateName= identifier opt_semicolon ( ( template_slot )=>slot= template_slot )+ END opt_semicolon ;
     public FactTemplateDescr template() throws RecognitionException {   
         FactTemplateDescr template = null;
 
         Token loc=null;
-        Token templateName=null;
+        Token templateName = null;
+
         FieldTemplateDescr slot = null;
 
 
@@ -1054,13 +1059,15 @@
         		template = null;		
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:357:3: (loc= 'template' templateName= ID opt_semicolon ( ( template_slot )=>slot= template_slot )+ 'end' opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:357:3: loc= 'template' templateName= ID opt_semicolon ( ( template_slot )=>slot= template_slot )+ 'end' opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:357:3: (loc= TEMPLATE templateName= identifier opt_semicolon ( ( template_slot )=>slot= template_slot )+ END opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:357:3: loc= TEMPLATE templateName= identifier opt_semicolon ( ( template_slot )=>slot= template_slot )+ END opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,38,FOLLOW_38_in_template640); if (failed) return template;
-            templateName=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_template644); if (failed) return template;
+            match(input,TEMPLATE,FOLLOW_TEMPLATE_in_template640); if (failed) return template;
+            pushFollow(FOLLOW_identifier_in_template644);
+            templateName=identifier();
+            _fsp--;
+            if (failed) return template;
             pushFollow(FOLLOW_opt_semicolon_in_template646);
             opt_semicolon();
             _fsp--;
@@ -1130,27 +1137,30 @@
 
 
     // $ANTLR start template_slot
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:371:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name name= ID opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:371:1: template_slot returns [FieldTemplateDescr field] : fieldType= dotted_name n= identifier opt_semicolon ;
     public FieldTemplateDescr template_slot() throws RecognitionException {   
         FieldTemplateDescr field = null;
 
-        Token name=null;
         String fieldType = null;
 
+        Token n = null;
 
+
         
         		field = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:377:4: (fieldType= dotted_name name= ID opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:377:4: fieldType= dotted_name name= ID opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:377:4: (fieldType= dotted_name n= identifier opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:377:4: fieldType= dotted_name n= identifier opt_semicolon
             {
             pushFollow(FOLLOW_dotted_name_in_template_slot710);
             fieldType=dotted_name();
             _fsp--;
             if (failed) return field;
-            name=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_template_slot714); if (failed) return field;
+            pushFollow(FOLLOW_identifier_in_template_slot714);
+            n=identifier();
+            _fsp--;
+            if (failed) return field;
             pushFollow(FOLLOW_opt_semicolon_in_template_slot716);
             opt_semicolon();
             _fsp--;
@@ -1159,8 +1169,8 @@
               
               			
               			
-              			field = new FieldTemplateDescr(name.getText(), fieldType);
-              			field.setLocation( offset(name.getLine()), name.getCharPositionInLine() );
+              			field = new FieldTemplateDescr(n.getText(), fieldType);
+              			field.setLocation( offset(n.getLine()), n.getCharPositionInLine() );
               		
             }
 
@@ -1179,7 +1189,7 @@
 
 
     // $ANTLR start rule
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:386:1: rule returns [RuleDescr rule] : loc= RULE ruleName= word rule_attributes[rule] ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:386:1: rule returns [RuleDescr rule] : loc= RULE ruleName= name rule_attributes[rule] ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] ;
     public RuleDescr rule() throws RecognitionException {   
         RuleDescr rule = null;
 
@@ -1193,13 +1203,13 @@
         		AndDescr lhs = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:393:3: (loc= RULE ruleName= word rule_attributes[rule] ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:393:3: loc= RULE ruleName= word rule_attributes[rule] ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule]
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:393:3: (loc= RULE ruleName= name rule_attributes[rule] ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule] )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:393:3: loc= RULE ruleName= name rule_attributes[rule] ( ( WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )=>loc= WHEN ( ( ':' )=> ':' )? ( normal_lhs_block[lhs] ) )? rhs_chunk[rule]
             {
             loc=(Token)input.LT(1);
             match(input,RULE,FOLLOW_RULE_in_rule747); if (failed) return rule;
-            pushFollow(FOLLOW_word_in_rule751);
-            ruleName=word();
+            pushFollow(FOLLOW_name_in_rule751);
+            ruleName=name();
             _fsp--;
             if (failed) return rule;
             if ( backtracking==0 ) {
@@ -1229,14 +1239,14 @@
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:401:14: ( ( ':' )=> ':' )?
                     int alt13=2;
                     int LA13_0 = input.LA(1);
-                    if ( (LA13_0==39) ) {
+                    if ( (LA13_0==65) ) {
                         alt13=1;
                     }
                     switch (alt13) {
                         case 1 :
                             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( ':' )=> ':'
                             {
-                            match(input,39,FOLLOW_39_in_rule771); if (failed) return rule;
+                            match(input,65,FOLLOW_65_in_rule771); if (failed) return rule;
 
                             }
                             break;
@@ -1285,27 +1295,27 @@
 
 
     // $ANTLR start rule_attributes
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:417:1: rule_attributes[RuleDescr rule] : ( ( 'attributes' ':' )=> 'attributes' ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:417:1: rule_attributes[RuleDescr rule] : ( ( ATTRIBUTES ':' )=> ATTRIBUTES ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )* ;
     public void rule_attributes(RuleDescr rule) throws RecognitionException {   
         AttributeDescr a = null;
 
 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:419:4: ( ( ( 'attributes' ':' )=> 'attributes' ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:419:4: ( ( 'attributes' ':' )=> 'attributes' ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:419:4: ( ( ( ATTRIBUTES ':' )=> ATTRIBUTES ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:419:4: ( ( ATTRIBUTES ':' )=> ATTRIBUTES ':' )? ( ( ( ( ',' )=> ',' )? rule_attribute )=> ( ( ',' )=> ',' )? a= rule_attribute )*
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:419:4: ( ( 'attributes' ':' )=> 'attributes' ':' )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:419:4: ( ( ATTRIBUTES ':' )=> ATTRIBUTES ':' )?
             int alt15=2;
             int LA15_0 = input.LA(1);
-            if ( (LA15_0==40) ) {
+            if ( (LA15_0==ATTRIBUTES) ) {
                 alt15=1;
             }
             switch (alt15) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:419:5: ( 'attributes' ':' )=> 'attributes' ':'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:419:5: ( ATTRIBUTES ':' )=> ATTRIBUTES ':'
                     {
-                    match(input,40,FOLLOW_40_in_rule_attributes831); if (failed) return ;
-                    match(input,39,FOLLOW_39_in_rule_attributes833); if (failed) return ;
+                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_rule_attributes831); if (failed) return ;
+                    match(input,65,FOLLOW_65_in_rule_attributes833); if (failed) return ;
 
                     }
                     break;
@@ -1317,7 +1327,7 @@
             do {
                 int alt17=2;
                 int LA17_0 = input.LA(1);
-                if ( (LA17_0==36||(LA17_0>=41 && LA17_0<=49)) ) {
+                if ( (LA17_0==DATE_EFFECTIVE||(LA17_0>=DATE_EXPIRES && LA17_0<=ENABLED)||LA17_0==SALIENCE||(LA17_0>=NO_LOOP && LA17_0<=DURATION)||LA17_0==64) ) {
                     alt17=1;
                 }
 
@@ -1329,14 +1339,14 @@
             	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:420:6: ( ( ',' )=> ',' )?
             	    int alt16=2;
             	    int LA16_0 = input.LA(1);
-            	    if ( (LA16_0==36) ) {
+            	    if ( (LA16_0==64) ) {
             	        alt16=1;
             	    }
             	    switch (alt16) {
             	        case 1 :
             	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( ',' )=> ','
             	            {
-            	            match(input,36,FOLLOW_36_in_rule_attributes842); if (failed) return ;
+            	            match(input,64,FOLLOW_64_in_rule_attributes842); if (failed) return ;
 
             	            }
             	            break;
@@ -1391,31 +1401,31 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:434:4: ( ( salience )=>a= salience | ( no_loop )=>a= no_loop | ( agenda_group )=>a= agenda_group | ( duration )=>a= duration | ( activation_group )=>a= activation_group | ( auto_focus )=>a= auto_focus | ( date_effective )=>a= date_effective | ( date_expires )=>a= date_expires | a= enabled )
             int alt18=9;
             switch ( input.LA(1) ) {
-            case 44:
+            case SALIENCE:
                 alt18=1;
                 break;
-            case 45:
+            case NO_LOOP:
                 alt18=2;
                 break;
-            case 48:
+            case AGENDA_GROUP:
                 alt18=3;
                 break;
-            case 49:
+            case DURATION:
                 alt18=4;
                 break;
-            case 47:
+            case ACTIVATION_GROUP:
                 alt18=5;
                 break;
-            case 46:
+            case AUTO_FOCUS:
                 alt18=6;
                 break;
-            case 41:
+            case DATE_EFFECTIVE:
                 alt18=7;
                 break;
-            case 42:
+            case DATE_EXPIRES:
                 alt18=8;
                 break;
-            case 43:
+            case ENABLED:
                 alt18=9;
                 break;
             default:
@@ -1506,9 +1516,9 @@
                     }
                     break;
                 case 7 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:440:29: ( date_effective )=>a= date_effective
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:440:11: ( date_effective )=>a= date_effective
                     {
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute982);
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute964);
                     a=date_effective();
                     _fsp--;
                     if (failed) return d;
@@ -1521,7 +1531,7 @@
                 case 8 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:441:5: ( date_expires )=>a= date_expires
                     {
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute992);
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute974);
                     a=date_expires();
                     _fsp--;
                     if (failed) return d;
@@ -1532,9 +1542,9 @@
                     }
                     break;
                 case 9 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:442:29: a= enabled
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:442:11: a= enabled
                     {
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1026);
+                    pushFollow(FOLLOW_enabled_in_rule_attribute990);
                     a=enabled();
                     _fsp--;
                     if (failed) return d;
@@ -1559,7 +1569,7 @@
 
 
     // $ANTLR start date_effective
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:446:1: date_effective returns [AttributeDescr d] : loc= 'date-effective' val= STRING ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:446:1: date_effective returns [AttributeDescr d] : loc= DATE_EFFECTIVE val= STRING ;
     public AttributeDescr date_effective() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1570,13 +1580,13 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:451:3: (loc= 'date-effective' val= STRING )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:451:3: loc= 'date-effective' val= STRING
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:451:3: (loc= DATE_EFFECTIVE val= STRING )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:451:3: loc= DATE_EFFECTIVE val= STRING
             {
             loc=(Token)input.LT(1);
-            match(input,41,FOLLOW_41_in_date_effective1058); if (failed) return d;
+            match(input,DATE_EFFECTIVE,FOLLOW_DATE_EFFECTIVE_in_date_effective1022); if (failed) return d;
             val=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_effective1062); if (failed) return d;
+            match(input,STRING,FOLLOW_STRING_in_date_effective1026); if (failed) return d;
             if ( backtracking==0 ) {
               
               			d = new AttributeDescr( "date-effective", getString( val ) );
@@ -1599,7 +1609,7 @@
 
 
     // $ANTLR start date_expires
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:459:1: date_expires returns [AttributeDescr d] : loc= 'date-expires' val= STRING ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:459:1: date_expires returns [AttributeDescr d] : loc= DATE_EXPIRES val= STRING ;
     public AttributeDescr date_expires() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1610,13 +1620,13 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:464:3: (loc= 'date-expires' val= STRING )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:464:3: loc= 'date-expires' val= STRING
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:464:3: (loc= DATE_EXPIRES val= STRING )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:464:3: loc= DATE_EXPIRES val= STRING
             {
             loc=(Token)input.LT(1);
-            match(input,42,FOLLOW_42_in_date_expires1093); if (failed) return d;
+            match(input,DATE_EXPIRES,FOLLOW_DATE_EXPIRES_in_date_expires1057); if (failed) return d;
             val=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_date_expires1097); if (failed) return d;
+            match(input,STRING,FOLLOW_STRING_in_date_expires1061); if (failed) return d;
             if ( backtracking==0 ) {
               
               			d = new AttributeDescr( "date-expires", getString( val ) );
@@ -1639,7 +1649,7 @@
 
 
     // $ANTLR start enabled
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:473:1: enabled returns [AttributeDescr d] : loc= 'enabled' t= BOOL opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:473:1: enabled returns [AttributeDescr d] : loc= ENABLED t= BOOL opt_semicolon ;
     public AttributeDescr enabled() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1650,14 +1660,14 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:478:4: (loc= 'enabled' t= BOOL opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:478:4: loc= 'enabled' t= BOOL opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:478:4: (loc= ENABLED t= BOOL opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:478:4: loc= ENABLED t= BOOL opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,43,FOLLOW_43_in_enabled1130); if (failed) return d;
+            match(input,ENABLED,FOLLOW_ENABLED_in_enabled1094); if (failed) return d;
             t=(Token)input.LT(1);
-            match(input,BOOL,FOLLOW_BOOL_in_enabled1134); if (failed) return d;
-            pushFollow(FOLLOW_opt_semicolon_in_enabled1136);
+            match(input,BOOL,FOLLOW_BOOL_in_enabled1098); if (failed) return d;
+            pushFollow(FOLLOW_opt_semicolon_in_enabled1100);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -1683,7 +1693,7 @@
 
 
     // $ANTLR start salience
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:489:1: salience returns [AttributeDescr d ] : loc= 'salience' i= INT opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:489:1: salience returns [AttributeDescr d ] : loc= SALIENCE i= INT opt_semicolon ;
     public AttributeDescr salience() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1694,14 +1704,14 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:494:3: (loc= 'salience' i= INT opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:494:3: loc= 'salience' i= INT opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:494:3: (loc= SALIENCE i= INT opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:494:3: loc= SALIENCE i= INT opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,44,FOLLOW_44_in_salience1178); if (failed) return d;
+            match(input,SALIENCE,FOLLOW_SALIENCE_in_salience1142); if (failed) return d;
             i=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_salience1182); if (failed) return d;
-            pushFollow(FOLLOW_opt_semicolon_in_salience1184);
+            match(input,INT,FOLLOW_INT_in_salience1146); if (failed) return d;
+            pushFollow(FOLLOW_opt_semicolon_in_salience1148);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -1727,7 +1737,7 @@
 
 
     // $ANTLR start no_loop
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:501:1: no_loop returns [AttributeDescr d] : ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:501:1: no_loop returns [AttributeDescr d] : ( ( ( NO_LOOP opt_semicolon ) )=> (loc= NO_LOOP opt_semicolon ) | (loc= NO_LOOP t= BOOL opt_semicolon ) );
     public AttributeDescr no_loop() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1738,21 +1748,21 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:506:3: ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:506:3: ( ( ( NO_LOOP opt_semicolon ) )=> (loc= NO_LOOP opt_semicolon ) | (loc= NO_LOOP t= BOOL opt_semicolon ) )
             int alt19=2;
             int LA19_0 = input.LA(1);
-            if ( (LA19_0==45) ) {
+            if ( (LA19_0==NO_LOOP) ) {
                 int LA19_1 = input.LA(2);
                 if ( (LA19_1==BOOL) ) {
                     alt19=2;
                 }
-                else if ( (LA19_1==EOF||LA19_1==WHEN||LA19_1==THEN||LA19_1==29||LA19_1==36||(LA19_1>=41 && LA19_1<=49)) ) {
+                else if ( (LA19_1==EOF||LA19_1==WHEN||LA19_1==DATE_EFFECTIVE||(LA19_1>=DATE_EXPIRES && LA19_1<=ENABLED)||LA19_1==SALIENCE||(LA19_1>=NO_LOOP && LA19_1<=DURATION)||LA19_1==THEN||LA19_1==61||LA19_1==64) ) {
                     alt19=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("501:1: no_loop returns [AttributeDescr d] : ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) );", 19, 1, input);
+                        new NoViableAltException("501:1: no_loop returns [AttributeDescr d] : ( ( ( NO_LOOP opt_semicolon ) )=> (loc= NO_LOOP opt_semicolon ) | (loc= NO_LOOP t= BOOL opt_semicolon ) );", 19, 1, input);
 
                     throw nvae;
                 }
@@ -1760,20 +1770,20 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("501:1: no_loop returns [AttributeDescr d] : ( ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon ) | (loc= 'no-loop' t= BOOL opt_semicolon ) );", 19, 0, input);
+                    new NoViableAltException("501:1: no_loop returns [AttributeDescr d] : ( ( ( NO_LOOP opt_semicolon ) )=> (loc= NO_LOOP opt_semicolon ) | (loc= NO_LOOP t= BOOL opt_semicolon ) );", 19, 0, input);
 
                 throw nvae;
             }
             switch (alt19) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:506:3: ( ( 'no-loop' opt_semicolon ) )=> (loc= 'no-loop' opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:506:3: ( ( NO_LOOP opt_semicolon ) )=> (loc= NO_LOOP opt_semicolon )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:506:3: (loc= 'no-loop' opt_semicolon )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:507:4: loc= 'no-loop' opt_semicolon
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:506:3: (loc= NO_LOOP opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:507:4: loc= NO_LOOP opt_semicolon
                     {
                     loc=(Token)input.LT(1);
-                    match(input,45,FOLLOW_45_in_no_loop1219); if (failed) return d;
-                    pushFollow(FOLLOW_opt_semicolon_in_no_loop1221);
+                    match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1183); if (failed) return d;
+                    pushFollow(FOLLOW_opt_semicolon_in_no_loop1185);
                     opt_semicolon();
                     _fsp--;
                     if (failed) return d;
@@ -1790,16 +1800,16 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:514:3: (loc= 'no-loop' t= BOOL opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:514:3: (loc= NO_LOOP t= BOOL opt_semicolon )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:514:3: (loc= 'no-loop' t= BOOL opt_semicolon )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:515:4: loc= 'no-loop' t= BOOL opt_semicolon
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:514:3: (loc= NO_LOOP t= BOOL opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:515:4: loc= NO_LOOP t= BOOL opt_semicolon
                     {
                     loc=(Token)input.LT(1);
-                    match(input,45,FOLLOW_45_in_no_loop1246); if (failed) return d;
+                    match(input,NO_LOOP,FOLLOW_NO_LOOP_in_no_loop1210); if (failed) return d;
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1250); if (failed) return d;
-                    pushFollow(FOLLOW_opt_semicolon_in_no_loop1252);
+                    match(input,BOOL,FOLLOW_BOOL_in_no_loop1214); if (failed) return d;
+                    pushFollow(FOLLOW_opt_semicolon_in_no_loop1216);
                     opt_semicolon();
                     _fsp--;
                     if (failed) return d;
@@ -1830,7 +1840,7 @@
 
 
     // $ANTLR start auto_focus
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:525:1: auto_focus returns [AttributeDescr d] : ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:525:1: auto_focus returns [AttributeDescr d] : ( ( ( AUTO_FOCUS opt_semicolon ) )=> (loc= AUTO_FOCUS opt_semicolon ) | (loc= AUTO_FOCUS t= BOOL opt_semicolon ) );
     public AttributeDescr auto_focus() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -1841,21 +1851,21 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:530:3: ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:530:3: ( ( ( AUTO_FOCUS opt_semicolon ) )=> (loc= AUTO_FOCUS opt_semicolon ) | (loc= AUTO_FOCUS t= BOOL opt_semicolon ) )
             int alt20=2;
             int LA20_0 = input.LA(1);
-            if ( (LA20_0==46) ) {
+            if ( (LA20_0==AUTO_FOCUS) ) {
                 int LA20_1 = input.LA(2);
                 if ( (LA20_1==BOOL) ) {
                     alt20=2;
                 }
-                else if ( (LA20_1==EOF||LA20_1==WHEN||LA20_1==THEN||LA20_1==29||LA20_1==36||(LA20_1>=41 && LA20_1<=49)) ) {
+                else if ( (LA20_1==EOF||LA20_1==WHEN||LA20_1==DATE_EFFECTIVE||(LA20_1>=DATE_EXPIRES && LA20_1<=ENABLED)||LA20_1==SALIENCE||(LA20_1>=NO_LOOP && LA20_1<=DURATION)||LA20_1==THEN||LA20_1==61||LA20_1==64) ) {
                     alt20=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return d;}
                     NoViableAltException nvae =
-                        new NoViableAltException("525:1: auto_focus returns [AttributeDescr d] : ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) );", 20, 1, input);
+                        new NoViableAltException("525:1: auto_focus returns [AttributeDescr d] : ( ( ( AUTO_FOCUS opt_semicolon ) )=> (loc= AUTO_FOCUS opt_semicolon ) | (loc= AUTO_FOCUS t= BOOL opt_semicolon ) );", 20, 1, input);
 
                     throw nvae;
                 }
@@ -1863,20 +1873,20 @@
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("525:1: auto_focus returns [AttributeDescr d] : ( ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon ) | (loc= 'auto-focus' t= BOOL opt_semicolon ) );", 20, 0, input);
+                    new NoViableAltException("525:1: auto_focus returns [AttributeDescr d] : ( ( ( AUTO_FOCUS opt_semicolon ) )=> (loc= AUTO_FOCUS opt_semicolon ) | (loc= AUTO_FOCUS t= BOOL opt_semicolon ) );", 20, 0, input);
 
                 throw nvae;
             }
             switch (alt20) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:530:3: ( ( 'auto-focus' opt_semicolon ) )=> (loc= 'auto-focus' opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:530:3: ( ( AUTO_FOCUS opt_semicolon ) )=> (loc= AUTO_FOCUS opt_semicolon )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:530:3: (loc= 'auto-focus' opt_semicolon )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:531:4: loc= 'auto-focus' opt_semicolon
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:530:3: (loc= AUTO_FOCUS opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:531:4: loc= AUTO_FOCUS opt_semicolon
                     {
                     loc=(Token)input.LT(1);
-                    match(input,46,FOLLOW_46_in_auto_focus1298); if (failed) return d;
-                    pushFollow(FOLLOW_opt_semicolon_in_auto_focus1300);
+                    match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1262); if (failed) return d;
+                    pushFollow(FOLLOW_opt_semicolon_in_auto_focus1264);
                     opt_semicolon();
                     _fsp--;
                     if (failed) return d;
@@ -1893,16 +1903,16 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:538:3: (loc= 'auto-focus' t= BOOL opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:538:3: (loc= AUTO_FOCUS t= BOOL opt_semicolon )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:538:3: (loc= 'auto-focus' t= BOOL opt_semicolon )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:539:4: loc= 'auto-focus' t= BOOL opt_semicolon
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:538:3: (loc= AUTO_FOCUS t= BOOL opt_semicolon )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:539:4: loc= AUTO_FOCUS t= BOOL opt_semicolon
                     {
                     loc=(Token)input.LT(1);
-                    match(input,46,FOLLOW_46_in_auto_focus1325); if (failed) return d;
+                    match(input,AUTO_FOCUS,FOLLOW_AUTO_FOCUS_in_auto_focus1289); if (failed) return d;
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1329); if (failed) return d;
-                    pushFollow(FOLLOW_opt_semicolon_in_auto_focus1331);
+                    match(input,BOOL,FOLLOW_BOOL_in_auto_focus1293); if (failed) return d;
+                    pushFollow(FOLLOW_opt_semicolon_in_auto_focus1295);
                     opt_semicolon();
                     _fsp--;
                     if (failed) return d;
@@ -1933,31 +1943,31 @@
 
 
     // $ANTLR start activation_group
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:549:1: activation_group returns [AttributeDescr d] : loc= 'activation-group' name= STRING opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:549:1: activation_group returns [AttributeDescr d] : loc= ACTIVATION_GROUP n= STRING opt_semicolon ;
     public AttributeDescr activation_group() throws RecognitionException {   
         AttributeDescr d = null;
 
         Token loc=null;
-        Token name=null;
+        Token n=null;
 
         
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:554:3: (loc= 'activation-group' name= STRING opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:554:3: loc= 'activation-group' name= STRING opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:554:3: (loc= ACTIVATION_GROUP n= STRING opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:554:3: loc= ACTIVATION_GROUP n= STRING opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,47,FOLLOW_47_in_activation_group1373); if (failed) return d;
-            name=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_activation_group1377); if (failed) return d;
-            pushFollow(FOLLOW_opt_semicolon_in_activation_group1379);
+            match(input,ACTIVATION_GROUP,FOLLOW_ACTIVATION_GROUP_in_activation_group1337); if (failed) return d;
+            n=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_activation_group1341); if (failed) return d;
+            pushFollow(FOLLOW_opt_semicolon_in_activation_group1343);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
               
-              			d = new AttributeDescr( "activation-group", getString( name ) );
+              			d = new AttributeDescr( "activation-group", getString( n ) );
               			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
@@ -1977,31 +1987,31 @@
 
 
     // $ANTLR start agenda_group
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:561:1: agenda_group returns [AttributeDescr d] : loc= 'agenda-group' name= STRING opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:561:1: agenda_group returns [AttributeDescr d] : loc= AGENDA_GROUP n= STRING opt_semicolon ;
     public AttributeDescr agenda_group() throws RecognitionException {   
         AttributeDescr d = null;
 
         Token loc=null;
-        Token name=null;
+        Token n=null;
 
         
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:566:3: (loc= 'agenda-group' name= STRING opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:566:3: loc= 'agenda-group' name= STRING opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:566:3: (loc= AGENDA_GROUP n= STRING opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:566:3: loc= AGENDA_GROUP n= STRING opt_semicolon
             {
             loc=(Token)input.LT(1);
-            match(input,48,FOLLOW_48_in_agenda_group1408); if (failed) return d;
-            name=(Token)input.LT(1);
-            match(input,STRING,FOLLOW_STRING_in_agenda_group1412); if (failed) return d;
-            pushFollow(FOLLOW_opt_semicolon_in_agenda_group1414);
+            match(input,AGENDA_GROUP,FOLLOW_AGENDA_GROUP_in_agenda_group1372); if (failed) return d;
+            n=(Token)input.LT(1);
+            match(input,STRING,FOLLOW_STRING_in_agenda_group1376); if (failed) return d;
+            pushFollow(FOLLOW_opt_semicolon_in_agenda_group1378);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
               
-              			d = new AttributeDescr( "agenda-group", getString( name ) );
+              			d = new AttributeDescr( "agenda-group", getString( n ) );
               			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
@@ -2021,7 +2031,7 @@
 
 
     // $ANTLR start duration
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:574:1: duration returns [AttributeDescr d] : loc= 'duration' i= INT ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:574:1: duration returns [AttributeDescr d] : loc= DURATION i= INT ;
     public AttributeDescr duration() throws RecognitionException {   
         AttributeDescr d = null;
 
@@ -2032,13 +2042,13 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:579:3: (loc= 'duration' i= INT )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:579:3: loc= 'duration' i= INT
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:579:3: (loc= DURATION i= INT )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:579:3: loc= DURATION i= INT
             {
             loc=(Token)input.LT(1);
-            match(input,49,FOLLOW_49_in_duration1446); if (failed) return d;
+            match(input,DURATION,FOLLOW_DURATION_in_duration1410); if (failed) return d;
             i=(Token)input.LT(1);
-            match(input,INT,FOLLOW_INT_in_duration1450); if (failed) return d;
+            match(input,INT,FOLLOW_INT_in_duration1414); if (failed) return d;
             if ( backtracking==0 ) {
               
               			d = new AttributeDescr( "duration", i.getText() );
@@ -2075,7 +2085,7 @@
             do {
                 int alt21=2;
                 int LA21_0 = input.LA(1);
-                if ( (LA21_0==ID||LA21_0==LEFT_PAREN||(LA21_0>=73 && LA21_0<=76)) ) {
+                if ( (LA21_0==ID||LA21_0==LEFT_PAREN||(LA21_0>=EXISTS && LA21_0<=FORALL)) ) {
                     alt21=1;
                 }
 
@@ -2084,7 +2094,7 @@
             	case 1 :
             	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:589:5: ( lhs )=>d= lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1476);
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block1440);
             	    d=lhs();
             	    _fsp--;
             	    if (failed) return ;
@@ -2130,7 +2140,7 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:599:4: (l= lhs_or )
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:599:4: l= lhs_or
             {
-            pushFollow(FOLLOW_lhs_or_in_lhs1511);
+            pushFollow(FOLLOW_lhs_or_in_lhs1475);
             l=lhs_or();
             _fsp--;
             if (failed) return d;
@@ -2169,10 +2179,10 @@
             int LA22_0 = input.LA(1);
             if ( (LA22_0==ID) ) {
                 int LA22_1 = input.LA(2);
-                if ( (LA22_1==39) ) {
+                if ( (LA22_1==65) ) {
                     alt22=1;
                 }
-                else if ( (LA22_1==LEFT_PAREN||LA22_1==LEFT_SQUARE||LA22_1==33) ) {
+                else if ( (LA22_1==LEFT_PAREN||LA22_1==LEFT_SQUARE||LA22_1==62) ) {
                     alt22=2;
                 }
                 else {
@@ -2194,7 +2204,7 @@
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:607:4: ( fact_binding )=>f= fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_column1539);
+                    pushFollow(FOLLOW_fact_binding_in_lhs_column1503);
                     f=fact_binding();
                     _fsp--;
                     if (failed) return d;
@@ -2207,7 +2217,7 @@
                 case 2 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:608:4: f= fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_column1548);
+                    pushFollow(FOLLOW_fact_in_lhs_column1512);
                     f=fact();
                     _fsp--;
                     if (failed) return d;
@@ -2232,7 +2242,7 @@
 
 
     // $ANTLR start from_statement
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:611:1: from_statement returns [FromDescr d] : 'from' ds= from_source ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:611:1: from_statement returns [FromDescr d] : ds= from_source ;
     public FromDescr from_statement() throws RecognitionException {   
         FromDescr d = null;
 
@@ -2243,11 +2253,10 @@
         		d=factory.createFrom();
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:616:2: ( 'from' ds= from_source )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:616:2: 'from' ds= from_source
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:616:2: (ds= from_source )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:616:2: ds= from_source
             {
-            match(input,50,FOLLOW_50_in_from_statement1573); if (failed) return d;
-            pushFollow(FOLLOW_from_source_in_from_statement1577);
+            pushFollow(FOLLOW_from_source_in_from_statement1539);
             ds=from_source();
             _fsp--;
             if (failed) return d;
@@ -2273,58 +2282,513 @@
 
 
     // $ANTLR start from_source
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:626:1: from_source returns [DeclarativeInvokerDescr ds] : ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )? ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:626:1: from_source returns [DeclarativeInvokerDescr ds] : ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )? ;
     public DeclarativeInvokerDescr from_source() throws RecognitionException {   
         DeclarativeInvokerDescr ds = null;
 
-        Token functionName=null;
-        Token var=null;
+        Token functionName = null;
+
         String args = null;
 
+        Token var = null;
 
+
         
         		ds = null;
         		AccessorDescr ad = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:3: ( ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )? )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:3: ( ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) ) ( ( expression_chain[ad] )=> expression_chain[ad] )?
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )
             int alt23=2;
-            int LA23_0 = input.LA(1);
-            if ( (LA23_0==ID) ) {
-                if ( (synpred35()) ) {
+            switch ( input.LA(1) ) {
+            case ID:
+                if ( (synpred36()) ) {
                     alt23=1;
                 }
-                else if ( (true) ) {
+                else if ( (synpred37()) ) {
                     alt23=2;
                 }
                 else {
                     if (backtracking>0) {failed=true; return ds;}
                     NoViableAltException nvae =
-                        new NoViableAltException("632:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) )", 23, 1, input);
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 1, input);
 
                     throw nvae;
                 }
-            }
-            else {
+                break;
+            case PACKAGE:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 2, input);
+
+                    throw nvae;
+                }
+                break;
+            case FUNCTION:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 3, input);
+
+                    throw nvae;
+                }
+                break;
+            case GLOBAL:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 4, input);
+
+                    throw nvae;
+                }
+                break;
+            case IMPORT:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 5, input);
+
+                    throw nvae;
+                }
+                break;
+            case RULE:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 6, input);
+
+                    throw nvae;
+                }
+                break;
+            case QUERY:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 7, input);
+
+                    throw nvae;
+                }
+                break;
+            case TEMPLATE:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 8, input);
+
+                    throw nvae;
+                }
+                break;
+            case ATTRIBUTES:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 9, input);
+
+                    throw nvae;
+                }
+                break;
+            case ENABLED:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 10, input);
+
+                    throw nvae;
+                }
+                break;
+            case SALIENCE:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 11, input);
+
+                    throw nvae;
+                }
+                break;
+            case DURATION:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 12, input);
+
+                    throw nvae;
+                }
+                break;
+            case FROM:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 13, input);
+
+                    throw nvae;
+                }
+                break;
+            case ACCUMULATE:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 14, input);
+
+                    throw nvae;
+                }
+                break;
+            case INIT:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 15, input);
+
+                    throw nvae;
+                }
+                break;
+            case ACTION:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 16, input);
+
+                    throw nvae;
+                }
+                break;
+            case RESULT:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 17, input);
+
+                    throw nvae;
+                }
+                break;
+            case COLLECT:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 18, input);
+
+                    throw nvae;
+                }
+                break;
+            case OR:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 19, input);
+
+                    throw nvae;
+                }
+                break;
+            case AND:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 20, input);
+
+                    throw nvae;
+                }
+                break;
+            case CONTAINS:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 21, input);
+
+                    throw nvae;
+                }
+                break;
+            case EXCLUDES:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 22, input);
+
+                    throw nvae;
+                }
+                break;
+            case MATCHES:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 23, input);
+
+                    throw nvae;
+                }
+                break;
+            case NULL:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 24, input);
+
+                    throw nvae;
+                }
+                break;
+            case EXISTS:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 25, input);
+
+                    throw nvae;
+                }
+                break;
+            case NOT:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 26, input);
+
+                    throw nvae;
+                }
+                break;
+            case EVAL:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 27, input);
+
+                    throw nvae;
+                }
+                break;
+            case FORALL:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 28, input);
+
+                    throw nvae;
+                }
+                break;
+            case WHEN:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 29, input);
+
+                    throw nvae;
+                }
+                break;
+            case THEN:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 30, input);
+
+                    throw nvae;
+                }
+                break;
+            case END:
+                if ( (synpred36()) ) {
+                    alt23=1;
+                }
+                else if ( (synpred37()) ) {
+                    alt23=2;
+                }
+                else {
+                    if (backtracking>0) {failed=true; return ds;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 31, input);
+
+                    throw nvae;
+                }
+                break;
+            default:
                 if (backtracking>0) {failed=true; return ds;}
                 NoViableAltException nvae =
-                    new NoViableAltException("632:3: ( ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk ) | (var= ID ) )", 23, 0, input);
+                    new NoViableAltException("632:3: ( ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk ) | ( ( identifier ~ LEFT_PAREN )=>var= identifier ) )", 23, 0, input);
 
                 throw nvae;
             }
+
             switch (alt23) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: ( ( ID paren_chunk ) )=> (functionName= ID args= paren_chunk )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )=> ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: (functionName= ID args= paren_chunk )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:6: functionName= ID args= paren_chunk
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: ( ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:6: ( identifier LEFT_PAREN )=>functionName= identifier args= paren_chunk
                     {
-                    functionName=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_from_source1620); if (failed) return ds;
-                    pushFollow(FOLLOW_paren_chunk_in_from_source1624);
+                    pushFollow(FOLLOW_identifier_in_from_source1591);
+                    functionName=identifier();
+                    _fsp--;
+                    if (failed) return ds;
+                    pushFollow(FOLLOW_paren_chunk_in_from_source1595);
                     args=paren_chunk();
                     _fsp--;
                     if (failed) return ds;
@@ -2346,13 +2810,15 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:644:3: (var= ID )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:644:3: ( ( identifier ~ LEFT_PAREN )=>var= identifier )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:644:3: (var= ID )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:644:7: var= ID
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:644:3: ( ( identifier ~ LEFT_PAREN )=>var= identifier )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:644:6: ( identifier ~ LEFT_PAREN )=>var= identifier
                     {
-                    var=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_from_source1657); if (failed) return ds;
+                    pushFollow(FOLLOW_identifier_in_from_source1638);
+                    var=identifier();
+                    _fsp--;
+                    if (failed) return ds;
                     if ( backtracking==0 ) {
                       
                       			ad = new AccessorDescr(var.getText());	
@@ -2372,14 +2838,14 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:652:3: ( ( expression_chain[ad] )=> expression_chain[ad] )?
             int alt24=2;
             int LA24_0 = input.LA(1);
-            if ( (LA24_0==33) ) {
+            if ( (LA24_0==62) ) {
                 alt24=1;
             }
             switch (alt24) {
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( expression_chain[ad] )=> expression_chain[ad]
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source1680);
+                    pushFollow(FOLLOW_expression_chain_in_from_source1660);
                     expression_chain(ad);
                     _fsp--;
                     if (failed) return ds;
@@ -2405,9 +2871,10 @@
 
 
     // $ANTLR start expression_chain
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:655:1: expression_chain[AccessorDescr as] : ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:655:1: expression_chain[AccessorDescr as] : ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? ) ;
     public void expression_chain(AccessorDescr as) throws RecognitionException {   
-        Token field=null;
+        Token field = null;
+
         String sqarg = null;
 
         String paarg = null;
@@ -2418,15 +2885,17 @@
         	    	MethodAccessDescr ma = null;	
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:661:2: ( ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:661:2: ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:661:2: ( ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:661:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? )
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:661:2: ( '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:661:4: '.' field= ID ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:661:2: ( '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:661:4: '.' field= identifier ( ( LEFT_SQUARE )=>sqarg= square_chunk | ( LEFT_PAREN )=>paarg= paren_chunk )? ( ( expression_chain[as] )=> expression_chain[as] )?
             {
-            match(input,33,FOLLOW_33_in_expression_chain1705); if (failed) return ;
-            field=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_expression_chain1709); if (failed) return ;
+            match(input,62,FOLLOW_62_in_expression_chain1685); if (failed) return ;
+            pushFollow(FOLLOW_identifier_in_expression_chain1689);
+            field=identifier();
+            _fsp--;
+            if (failed) return ;
             if ( backtracking==0 ) {
               
               	        fa = new FieldAccessDescr(field.getText());	
@@ -2440,7 +2909,7 @@
                 alt25=1;
             }
             else if ( (LA25_0==LEFT_PAREN) ) {
-                if ( (synpred38()) ) {
+                if ( (synpred40()) ) {
                     alt25=2;
                 }
             }
@@ -2448,7 +2917,7 @@
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:667:6: ( LEFT_SQUARE )=>sqarg= square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain1740);
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain1720);
                     sqarg=square_chunk();
                     _fsp--;
                     if (failed) return ;
@@ -2463,7 +2932,7 @@
                 case 2 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:672:6: ( LEFT_PAREN )=>paarg= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_chain1773);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain1753);
                     paarg=paren_chunk();
                     _fsp--;
                     if (failed) return ;
@@ -2491,14 +2960,14 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:685:4: ( ( expression_chain[as] )=> expression_chain[as] )?
             int alt26=2;
             int LA26_0 = input.LA(1);
-            if ( (LA26_0==33) ) {
+            if ( (LA26_0==62) ) {
                 alt26=1;
             }
             switch (alt26) {
                 case 1 :
                     // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:0:0: ( expression_chain[as] )=> expression_chain[as]
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain1793);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain1773);
                     expression_chain(as);
                     _fsp--;
                     if (failed) return ;
@@ -2527,7 +2996,7 @@
 
 
     // $ANTLR start accumulate_statement
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:689:1: accumulate_statement returns [AccumulateDescr d] : loc= 'from' 'accumulate' '(' column= lhs_column ',' 'init' text= paren_chunk ',' 'action' text= paren_chunk ',' 'result' text= paren_chunk ')' ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:689:1: accumulate_statement returns [AccumulateDescr d] : loc= ACCUMULATE '(' column= lhs_column ',' INIT text= paren_chunk ',' ACTION text= paren_chunk ',' RESULT text= paren_chunk ')' ;
     public AccumulateDescr accumulate_statement() throws RecognitionException {   
         AccumulateDescr d = null;
 
@@ -2541,56 +3010,55 @@
         		d = factory.createAccumulate();
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:694:10: (loc= 'from' 'accumulate' '(' column= lhs_column ',' 'init' text= paren_chunk ',' 'action' text= paren_chunk ',' 'result' text= paren_chunk ')' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:694:10: loc= 'from' 'accumulate' '(' column= lhs_column ',' 'init' text= paren_chunk ',' 'action' text= paren_chunk ',' 'result' text= paren_chunk ')'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:694:10: (loc= ACCUMULATE '(' column= lhs_column ',' INIT text= paren_chunk ',' ACTION text= paren_chunk ',' RESULT text= paren_chunk ')' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:694:10: loc= ACCUMULATE '(' column= lhs_column ',' INIT text= paren_chunk ',' ACTION text= paren_chunk ',' RESULT text= paren_chunk ')'
             {
             loc=(Token)input.LT(1);
-            match(input,50,FOLLOW_50_in_accumulate_statement1834); if (failed) return d;
-            match(input,51,FOLLOW_51_in_accumulate_statement1836); if (failed) return d;
+            match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement1814); if (failed) return d;
             if ( backtracking==0 ) {
                
               			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement1846); if (failed) return d;
-            pushFollow(FOLLOW_lhs_column_in_accumulate_statement1850);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement1824); if (failed) return d;
+            pushFollow(FOLLOW_lhs_column_in_accumulate_statement1828);
             column=lhs_column();
             _fsp--;
             if (failed) return d;
-            match(input,36,FOLLOW_36_in_accumulate_statement1852); if (failed) return d;
+            match(input,64,FOLLOW_64_in_accumulate_statement1830); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setSourceColumn( (ColumnDescr)column );
               		
             }
-            match(input,52,FOLLOW_52_in_accumulate_statement1861); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1865);
+            match(input,INIT,FOLLOW_INIT_in_accumulate_statement1839); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1843);
             text=paren_chunk();
             _fsp--;
             if (failed) return d;
-            match(input,36,FOLLOW_36_in_accumulate_statement1867); if (failed) return d;
+            match(input,64,FOLLOW_64_in_accumulate_statement1845); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setInitCode( text.substring(1, text.length()-1) );
               		
             }
-            match(input,53,FOLLOW_53_in_accumulate_statement1876); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1880);
+            match(input,ACTION,FOLLOW_ACTION_in_accumulate_statement1854); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1858);
             text=paren_chunk();
             _fsp--;
             if (failed) return d;
-            match(input,36,FOLLOW_36_in_accumulate_statement1882); if (failed) return d;
+            match(input,64,FOLLOW_64_in_accumulate_statement1860); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setActionCode( text.substring(1, text.length()-1) );
               		
             }
-            match(input,54,FOLLOW_54_in_accumulate_statement1891); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1895);
+            match(input,RESULT,FOLLOW_RESULT_in_accumulate_statement1869); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_statement1873);
             text=paren_chunk();
             _fsp--;
             if (failed) return d;
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement1897); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement1875); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setResultCode( text.substring(1, text.length()-1) );
@@ -2612,7 +3080,7 @@
 
 
     // $ANTLR start collect_statement
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:1: collect_statement returns [CollectDescr d] : loc= 'from' 'collect' '(' column= lhs_column ')' ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:716:1: collect_statement returns [CollectDescr d] : loc= COLLECT '(' column= lhs_column ')' ;
     public CollectDescr collect_statement() throws RecognitionException {   
         CollectDescr d = null;
 
@@ -2624,23 +3092,22 @@
         		d = factory.createCollect();
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:721:10: (loc= 'from' 'collect' '(' column= lhs_column ')' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:721:10: loc= 'from' 'collect' '(' column= lhs_column ')'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:721:10: (loc= COLLECT '(' column= lhs_column ')' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:721:10: loc= COLLECT '(' column= lhs_column ')'
             {
             loc=(Token)input.LT(1);
-            match(input,50,FOLLOW_50_in_collect_statement1940); if (failed) return d;
-            match(input,55,FOLLOW_55_in_collect_statement1942); if (failed) return d;
+            match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement1918); if (failed) return d;
             if ( backtracking==0 ) {
                
               			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement1952); if (failed) return d;
-            pushFollow(FOLLOW_lhs_column_in_collect_statement1956);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement1928); if (failed) return d;
+            pushFollow(FOLLOW_lhs_column_in_collect_statement1932);
             column=lhs_column();
             _fsp--;
             if (failed) return d;
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement1958); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement1934); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        d.setSourceColumn( (ColumnDescr)column );
@@ -2679,15 +3146,15 @@
             // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:737:4: id= ID ':' fe= fact_expression[id.getText()]
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_fact_binding1992); if (failed) return d;
-            match(input,39,FOLLOW_39_in_fact_binding1994); if (failed) return d;
+            match(input,ID,FOLLOW_ID_in_fact_binding1968); if (failed) return d;
+            match(input,65,FOLLOW_65_in_fact_binding1970); if (failed) return d;
             if ( backtracking==0 ) {
               
                		        // handling incomplete parsing
                		        d = new ColumnDescr( id.getText() );
                		
             }
-            pushFollow(FOLLOW_fact_expression_in_fact_binding2007);
+            pushFollow(FOLLOW_fact_expression_in_fact_binding1983);
             fe=fact_expression(id.getText());
             _fsp--;
             if (failed) return d;
@@ -2716,7 +3183,7 @@
 
 
     // $ANTLR start fact_expression
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:752:2: fact_expression[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact );
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:752:2: fact_expression[String id] returns [BaseDescr pd] : ( ( '(' fact_expression[id] ')' )=> '(' fe= fact_expression[id] ')' | f= fact ( ( (OR|'||') fact )=> (OR|'||')f= fact )* );
     public BaseDescr fact_expression(String id) throws RecognitionException {   
         BaseDescr pd = null;
 
@@ -2730,32 +3197,32 @@
          		boolean multi = false;
          	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:757:5: ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact )
-            int alt27=2;
-            int LA27_0 = input.LA(1);
-            if ( (LA27_0==LEFT_PAREN) ) {
-                alt27=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:757:5: ( ( '(' fact_expression[id] ')' )=> '(' fe= fact_expression[id] ')' | f= fact ( ( (OR|'||') fact )=> (OR|'||')f= fact )* )
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+            if ( (LA28_0==LEFT_PAREN) ) {
+                alt28=1;
             }
-            else if ( (LA27_0==ID) ) {
-                alt27=2;
+            else if ( (LA28_0==ID) ) {
+                alt28=2;
             }
             else {
                 if (backtracking>0) {failed=true; return pd;}
                 NoViableAltException nvae =
-                    new NoViableAltException("752:2: fact_expression[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact );", 27, 0, input);
+                    new NoViableAltException("752:2: fact_expression[String id] returns [BaseDescr pd] : ( ( '(' fact_expression[id] ')' )=> '(' fe= fact_expression[id] ')' | f= fact ( ( (OR|'||') fact )=> (OR|'||')f= fact )* );", 28, 0, input);
 
                 throw nvae;
             }
-            switch (alt27) {
+            switch (alt28) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:757:5: ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:757:5: ( '(' fact_expression[id] ')' )=> '(' fe= fact_expression[id] ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression2039); if (failed) return pd;
-                    pushFollow(FOLLOW_fact_expression_in_paren_in_fact_expression2043);
-                    fe=fact_expression_in_paren(id);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression2015); if (failed) return pd;
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2019);
+                    fe=fact_expression(id);
                     _fsp--;
                     if (failed) return pd;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_expression2046); if (failed) return pd;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_expression2022); if (failed) return pd;
                     if ( backtracking==0 ) {
                        pd=fe; 
                     }
@@ -2763,9 +3230,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:758:6: f= fact
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:758:6: f= fact ( ( (OR|'||') fact )=> (OR|'||')f= fact )*
                     {
-                    pushFollow(FOLLOW_fact_in_fact_expression2057);
+                    pushFollow(FOLLOW_fact_in_fact_expression2033);
                     f=fact();
                     _fsp--;
                     if (failed) return pd;
@@ -2775,98 +3242,25 @@
                        			pd = f;
                        		
                     }
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:763:4: ( ( (OR|'||') fact )=> (OR|'||')f= fact )*
+                    loop27:
+                    do {
+                        int alt27=2;
+                        int LA27_0 = input.LA(1);
+                        if ( (LA27_0==OR||LA27_0==66) ) {
+                            if ( (synpred43()) ) {
+                                alt27=1;
+                            }
 
-                    }
-                    break;
 
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-       }
-        return pd;
-    }
-    // $ANTLR end fact_expression
-
-
-    // $ANTLR start fact_expression_in_paren
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:766:2: fact_expression_in_paren[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )* );
-    public BaseDescr fact_expression_in_paren(String id) throws RecognitionException {   
-        BaseDescr pd = null;
-
-        BaseDescr fe = null;
-
-        BaseDescr f = null;
-
-
-        
-         		pd = null;
-         		boolean multi = false;
-         	
-        try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:771:5: ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )* )
-            int alt29=2;
-            int LA29_0 = input.LA(1);
-            if ( (LA29_0==LEFT_PAREN) ) {
-                alt29=1;
-            }
-            else if ( (LA29_0==ID) ) {
-                alt29=2;
-            }
-            else {
-                if (backtracking>0) {failed=true; return pd;}
-                NoViableAltException nvae =
-                    new NoViableAltException("766:2: fact_expression_in_paren[String id] returns [BaseDescr pd] : ( ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')' | f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )* );", 29, 0, input);
-
-                throw nvae;
-            }
-            switch (alt29) {
-                case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:771:5: ( '(' fact_expression_in_paren[id] ')' )=> '(' fe= fact_expression_in_paren[id] ')'
-                    {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_expression_in_paren2088); if (failed) return pd;
-                    pushFollow(FOLLOW_fact_expression_in_paren_in_fact_expression_in_paren2092);
-                    fe=fact_expression_in_paren(id);
-                    _fsp--;
-                    if (failed) return pd;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_expression_in_paren2094); if (failed) return pd;
-                    if ( backtracking==0 ) {
-                       pd=fe; 
-                    }
-
-                    }
-                    break;
-                case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:772:6: f= fact ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )*
-                    {
-                    pushFollow(FOLLOW_fact_in_fact_expression_in_paren2105);
-                    f=fact();
-                    _fsp--;
-                    if (failed) return pd;
-                    if ( backtracking==0 ) {
-                      
-                       			((ColumnDescr)f).setIdentifier( id );
-                       			pd = f;
-                       		
-                    }
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:777:4: ( ( ('or'|'||') fact )=> ('or'|'||')f= fact )*
-                    loop28:
-                    do {
-                        int alt28=2;
-                        int LA28_0 = input.LA(1);
-                        if ( ((LA28_0>=56 && LA28_0<=57)) ) {
-                            alt28=1;
                         }
 
 
-                        switch (alt28) {
+                        switch (alt27) {
                     	case 1 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:777:6: ( ('or'|'||') fact )=> ('or'|'||')f= fact
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:763:6: ( (OR|'||') fact )=> (OR|'||')f= fact
                     	    {
-                    	    if ( (input.LA(1)>=56 && input.LA(1)<=57) ) {
+                    	    if ( input.LA(1)==OR||input.LA(1)==66 ) {
                     	        input.consume();
                     	        errorRecovery=false;failed=false;
                     	    }
@@ -2874,7 +3268,7 @@
                     	        if (backtracking>0) {failed=true; return pd;}
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression_in_paren2118);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_fact_expression2046);    throw mse;
                     	    }
 
                     	    if ( backtracking==0 ) {
@@ -2886,7 +3280,7 @@
                     	       				}
                     	       			
                     	    }
-                    	    pushFollow(FOLLOW_fact_in_fact_expression_in_paren2135);
+                    	    pushFollow(FOLLOW_fact_in_fact_expression2063);
                     	    f=fact();
                     	    _fsp--;
                     	    if (failed) return pd;
@@ -2901,7 +3295,7 @@
                     	    break;
 
                     	default :
-                    	    break loop28;
+                    	    break loop27;
                         }
                     } while (true);
 
@@ -2919,11 +3313,11 @@
        }
         return pd;
     }
-    // $ANTLR end fact_expression_in_paren
+    // $ANTLR end fact_expression
 
 
     // $ANTLR start fact
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:793:1: fact returns [BaseDescr d] : id= dotted_name loc= LEFT_PAREN ( ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d] )? endLoc= RIGHT_PAREN ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:807:1: fact returns [BaseDescr d] : id= dotted_name loc= LEFT_PAREN ( ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d] )? endLoc= RIGHT_PAREN ;
     public BaseDescr fact() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -2936,10 +3330,10 @@
         		d=null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:797:5: (id= dotted_name loc= LEFT_PAREN ( ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d] )? endLoc= RIGHT_PAREN )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:797:5: id= dotted_name loc= LEFT_PAREN ( ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d] )? endLoc= RIGHT_PAREN
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:811:5: (id= dotted_name loc= LEFT_PAREN ( ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d] )? endLoc= RIGHT_PAREN )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:811:5: id= dotted_name loc= LEFT_PAREN ( ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d] )? endLoc= RIGHT_PAREN
             {
-            pushFollow(FOLLOW_dotted_name_in_fact2174);
+            pushFollow(FOLLOW_dotted_name_in_fact2105);
             id=dotted_name();
             _fsp--;
             if (failed) return d;
@@ -2949,24 +3343,24 @@
                		
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact2187); if (failed) return d;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact2118); if (failed) return d;
             if ( backtracking==0 ) {
               
                				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
                			        d.setStartCharacter( ((CommonToken)loc).getStartIndex() );
                			
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:805:4: ( ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d] )?
-            int alt30=2;
-            int LA30_0 = input.LA(1);
-            if ( (LA30_0==ID||LA30_0==LEFT_PAREN) ) {
-                alt30=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:819:4: ( ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d] )?
+            int alt29=2;
+            int LA29_0 = input.LA(1);
+            if ( ((LA29_0>=PACKAGE && LA29_0<=ATTRIBUTES)||LA29_0==ENABLED||LA29_0==SALIENCE||(LA29_0>=DURATION && LA29_0<=LEFT_PAREN)||(LA29_0>=CONTAINS && LA29_0<=EXCLUDES)||LA29_0==NULL||(LA29_0>=AND && LA29_0<=THEN)) ) {
+                alt29=1;
             }
-            switch (alt30) {
+            switch (alt29) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:805:6: ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d]
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:819:6: ( constraints[(ColumnDescr) d] )=> constraints[(ColumnDescr) d]
                     {
-                    pushFollow(FOLLOW_constraints_in_fact2197);
+                    pushFollow(FOLLOW_constraints_in_fact2128);
                     constraints((ColumnDescr) d);
                     _fsp--;
                     if (failed) return d;
@@ -2977,7 +3371,7 @@
             }
 
             endLoc=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact2210); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact2141); if (failed) return d;
             if ( backtracking==0 ) {
               
               		        if( endLoc.getType() == RIGHT_PAREN ) {
@@ -3002,33 +3396,33 @@
 
 
     // $ANTLR start constraints
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:816:1: constraints[ColumnDescr column] : ( ( constraint[column] )=> constraint[column] | predicate[column] ) ( ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:830:1: constraints[ColumnDescr column] : ( ( constraint[column] )=> constraint[column] | predicate[column] ) ( ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )* ;
     public void constraints(ColumnDescr column) throws RecognitionException {   
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:817:4: ( ( ( constraint[column] )=> constraint[column] | predicate[column] ) ( ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:817:4: ( ( constraint[column] )=> constraint[column] | predicate[column] ) ( ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:831:4: ( ( ( constraint[column] )=> constraint[column] | predicate[column] ) ( ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:831:4: ( ( constraint[column] )=> constraint[column] | predicate[column] ) ( ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )*
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:817:4: ( ( constraint[column] )=> constraint[column] | predicate[column] )
-            int alt31=2;
-            int LA31_0 = input.LA(1);
-            if ( (LA31_0==ID) ) {
-                alt31=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:831:4: ( ( constraint[column] )=> constraint[column] | predicate[column] )
+            int alt30=2;
+            int LA30_0 = input.LA(1);
+            if ( ((LA30_0>=PACKAGE && LA30_0<=ATTRIBUTES)||LA30_0==ENABLED||LA30_0==SALIENCE||(LA30_0>=DURATION && LA30_0<=OR)||(LA30_0>=CONTAINS && LA30_0<=EXCLUDES)||LA30_0==NULL||(LA30_0>=AND && LA30_0<=THEN)) ) {
+                alt30=1;
             }
-            else if ( (LA31_0==LEFT_PAREN) ) {
-                alt31=2;
+            else if ( (LA30_0==LEFT_PAREN) ) {
+                alt30=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("817:4: ( ( constraint[column] )=> constraint[column] | predicate[column] )", 31, 0, input);
+                    new NoViableAltException("831:4: ( ( constraint[column] )=> constraint[column] | predicate[column] )", 30, 0, input);
 
                 throw nvae;
             }
-            switch (alt31) {
+            switch (alt30) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:817:5: ( constraint[column] )=> constraint[column]
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:831:5: ( constraint[column] )=> constraint[column]
                     {
-                    pushFollow(FOLLOW_constraint_in_constraints2231);
+                    pushFollow(FOLLOW_constraint_in_constraints2162);
                     constraint(column);
                     _fsp--;
                     if (failed) return ;
@@ -3036,9 +3430,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:817:24: predicate[column]
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:831:24: predicate[column]
                     {
-                    pushFollow(FOLLOW_predicate_in_constraints2234);
+                    pushFollow(FOLLOW_predicate_in_constraints2165);
                     predicate(column);
                     _fsp--;
                     if (failed) return ;
@@ -3048,42 +3442,42 @@
 
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:818:3: ( ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )*
-            loop33:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:832:3: ( ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )*
+            loop32:
             do {
-                int alt33=2;
-                int LA33_0 = input.LA(1);
-                if ( (LA33_0==36) ) {
-                    alt33=1;
+                int alt32=2;
+                int LA32_0 = input.LA(1);
+                if ( (LA32_0==64) ) {
+                    alt32=1;
                 }
 
 
-                switch (alt33) {
+                switch (alt32) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:818:5: ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] )
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:832:5: ( ',' ( ( constraint[column] )=> constraint[column] | predicate[column] ) )=> ',' ( ( constraint[column] )=> constraint[column] | predicate[column] )
             	    {
-            	    match(input,36,FOLLOW_36_in_constraints2242); if (failed) return ;
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:818:9: ( ( constraint[column] )=> constraint[column] | predicate[column] )
-            	    int alt32=2;
-            	    int LA32_0 = input.LA(1);
-            	    if ( (LA32_0==ID) ) {
-            	        alt32=1;
+            	    match(input,64,FOLLOW_64_in_constraints2173); if (failed) return ;
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:832:9: ( ( constraint[column] )=> constraint[column] | predicate[column] )
+            	    int alt31=2;
+            	    int LA31_0 = input.LA(1);
+            	    if ( ((LA31_0>=PACKAGE && LA31_0<=ATTRIBUTES)||LA31_0==ENABLED||LA31_0==SALIENCE||(LA31_0>=DURATION && LA31_0<=OR)||(LA31_0>=CONTAINS && LA31_0<=EXCLUDES)||LA31_0==NULL||(LA31_0>=AND && LA31_0<=THEN)) ) {
+            	        alt31=1;
             	    }
-            	    else if ( (LA32_0==LEFT_PAREN) ) {
-            	        alt32=2;
+            	    else if ( (LA31_0==LEFT_PAREN) ) {
+            	        alt31=2;
             	    }
             	    else {
             	        if (backtracking>0) {failed=true; return ;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("818:9: ( ( constraint[column] )=> constraint[column] | predicate[column] )", 32, 0, input);
+            	            new NoViableAltException("832:9: ( ( constraint[column] )=> constraint[column] | predicate[column] )", 31, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt32) {
+            	    switch (alt31) {
             	        case 1 :
-            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:818:10: ( constraint[column] )=> constraint[column]
+            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:832:10: ( constraint[column] )=> constraint[column]
             	            {
-            	            pushFollow(FOLLOW_constraint_in_constraints2245);
+            	            pushFollow(FOLLOW_constraint_in_constraints2176);
             	            constraint(column);
             	            _fsp--;
             	            if (failed) return ;
@@ -3091,9 +3485,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:818:29: predicate[column]
+            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:832:29: predicate[column]
             	            {
-            	            pushFollow(FOLLOW_predicate_in_constraints2248);
+            	            pushFollow(FOLLOW_predicate_in_constraints2179);
             	            predicate(column);
             	            _fsp--;
             	            if (failed) return ;
@@ -3108,7 +3502,7 @@
             	    break;
 
             	default :
-            	    break loop33;
+            	    break loop32;
                 }
             } while (true);
 
@@ -3128,11 +3522,12 @@
 
 
     // $ANTLR start constraint
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:821:1: constraint[ColumnDescr column] : ( ( ID ':' )=>fb= ID ':' )? f= ID ( ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* ) | ( '->' predicate[column] )=> '->' predicate[column] )? ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:835:1: constraint[ColumnDescr column] : ( ( ID ':' )=>fb= ID ':' )? f= identifier ( ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* ) | ( '->' predicate[column] )=> '->' predicate[column] )? ;
     public void constraint(ColumnDescr column) throws RecognitionException {   
         Token fb=null;
-        Token f=null;
         Token con=null;
+        Token f = null;
+
         RestrictionDescr rd = null;
 
 
@@ -3141,25 +3536,25 @@
         		FieldConstraintDescr fc = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:827:3: ( ( ( ID ':' )=>fb= ID ':' )? f= ID ( ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* ) | ( '->' predicate[column] )=> '->' predicate[column] )? )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:827:3: ( ( ID ':' )=>fb= ID ':' )? f= ID ( ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* ) | ( '->' predicate[column] )=> '->' predicate[column] )?
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:841:3: ( ( ( ID ':' )=>fb= ID ':' )? f= identifier ( ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* ) | ( '->' predicate[column] )=> '->' predicate[column] )? )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:841:3: ( ( ID ':' )=>fb= ID ':' )? f= identifier ( ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* ) | ( '->' predicate[column] )=> '->' predicate[column] )?
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:827:3: ( ( ID ':' )=>fb= ID ':' )?
-            int alt34=2;
-            int LA34_0 = input.LA(1);
-            if ( (LA34_0==ID) ) {
-                int LA34_1 = input.LA(2);
-                if ( (LA34_1==39) ) {
-                    alt34=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:841:3: ( ( ID ':' )=>fb= ID ':' )?
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+            if ( (LA33_0==ID) ) {
+                int LA33_1 = input.LA(2);
+                if ( (LA33_1==65) ) {
+                    alt33=1;
                 }
             }
-            switch (alt34) {
+            switch (alt33) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:827:5: ( ID ':' )=>fb= ID ':'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:841:5: ( ID ':' )=>fb= ID ':'
                     {
                     fb=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_constraint2277); if (failed) return ;
-                    match(input,39,FOLLOW_39_in_constraint2279); if (failed) return ;
+                    match(input,ID,FOLLOW_ID_in_constraint2208); if (failed) return ;
+                    match(input,65,FOLLOW_65_in_constraint2210); if (failed) return ;
                     if ( backtracking==0 ) {
                        
                       			fbd = new FieldBindingDescr();
@@ -3176,8 +3571,10 @@
 
             }
 
-            f=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_constraint2300); if (failed) return ;
+            pushFollow(FOLLOW_identifier_in_constraint2231);
+            f=identifier();
+            _fsp--;
+            if (failed) return ;
             if ( backtracking==0 ) {
               
               			if ( fb != null ) {
@@ -3194,23 +3591,23 @@
               			}
               		
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:852:3: ( ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* ) | ( '->' predicate[column] )=> '->' predicate[column] )?
-            int alt36=3;
-            int LA36_0 = input.LA(1);
-            if ( ((LA36_0>=61 && LA36_0<=69)) ) {
-                alt36=1;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:866:3: ( ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* ) | ( '->' predicate[column] )=> '->' predicate[column] )?
+            int alt35=3;
+            int LA35_0 = input.LA(1);
+            if ( ((LA35_0>=CONTAINS && LA35_0<=EXCLUDES)||(LA35_0>=70 && LA35_0<=75)) ) {
+                alt35=1;
             }
-            else if ( (LA36_0==60) ) {
-                alt36=2;
+            else if ( (LA35_0==69) ) {
+                alt35=2;
             }
-            switch (alt36) {
+            switch (alt35) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:853:4: ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:867:4: ( ( constraint_expression ( ( ('&'|'|') constraint_expression )=> ('&'|'|') constraint_expression )* ) )=> (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )
                     {
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:853:4: (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:853:6: rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )*
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:867:4: (rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )* )
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:867:6: rd= constraint_expression ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )*
                     {
-                    pushFollow(FOLLOW_constraint_expression_in_constraint2318);
+                    pushFollow(FOLLOW_constraint_expression_in_constraint2249);
                     rd=constraint_expression();
                     _fsp--;
                     if (failed) return ;
@@ -3223,22 +3620,22 @@
                       					}
                       				
                     }
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:861:5: ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )*
-                    loop35:
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:875:5: ( ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression )*
+                    loop34:
                     do {
-                        int alt35=2;
-                        int LA35_0 = input.LA(1);
-                        if ( ((LA35_0>=58 && LA35_0<=59)) ) {
-                            alt35=1;
+                        int alt34=2;
+                        int LA34_0 = input.LA(1);
+                        if ( ((LA34_0>=67 && LA34_0<=68)) ) {
+                            alt34=1;
                         }
 
 
-                        switch (alt35) {
+                        switch (alt34) {
                     	case 1 :
-                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:862:6: ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression
+                    	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:876:6: ( ('&'|'|') constraint_expression )=>con= ('&'|'|')rd= constraint_expression
                     	    {
                     	    con=(Token)input.LT(1);
-                    	    if ( (input.LA(1)>=58 && input.LA(1)<=59) ) {
+                    	    if ( (input.LA(1)>=67 && input.LA(1)<=68) ) {
                     	        input.consume();
                     	        errorRecovery=false;failed=false;
                     	    }
@@ -3246,7 +3643,7 @@
                     	        if (backtracking>0) {failed=true; return ;}
                     	        MismatchedSetException mse =
                     	            new MismatchedSetException(null,input);
-                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2340);    throw mse;
+                    	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint2271);    throw mse;
                     	    }
 
                     	    if ( backtracking==0 ) {
@@ -3258,7 +3655,7 @@
                     	      						}							
                     	      					
                     	    }
-                    	    pushFollow(FOLLOW_constraint_expression_in_constraint2359);
+                    	    pushFollow(FOLLOW_constraint_expression_in_constraint2290);
                     	    rd=constraint_expression();
                     	    _fsp--;
                     	    if (failed) return ;
@@ -3272,7 +3669,7 @@
                     	    break;
 
                     	default :
-                    	    break loop35;
+                    	    break loop34;
                         }
                     } while (true);
 
@@ -3283,10 +3680,10 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:877:4: ( '->' predicate[column] )=> '->' predicate[column]
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:891:4: ( '->' predicate[column] )=> '->' predicate[column]
                     {
-                    match(input,60,FOLLOW_60_in_constraint2387); if (failed) return ;
-                    pushFollow(FOLLOW_predicate_in_constraint2389);
+                    match(input,69,FOLLOW_69_in_constraint2318); if (failed) return ;
+                    pushFollow(FOLLOW_predicate_in_constraint2320);
                     predicate(column);
                     _fsp--;
                     if (failed) return ;
@@ -3312,7 +3709,7 @@
 
 
     // $ANTLR start constraint_expression
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:881:1: constraint_expression returns [RestrictionDescr rd] : op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:895:1: constraint_expression returns [RestrictionDescr rd] : op= ('=='|'>'|'>='|'<'|'<='|'!='|CONTAINS|MATCHES|EXCLUDES) ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint ) ;
     public RestrictionDescr constraint_expression() throws RecognitionException {   
         RestrictionDescr rd = null;
 
@@ -3324,11 +3721,11 @@
 
 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:883:3: (op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:883:3: op= ('=='|'>'|'>='|'<'|'<='|'!='|'contains'|'matches'|'excludes') ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:897:3: (op= ('=='|'>'|'>='|'<'|'<='|'!='|CONTAINS|MATCHES|EXCLUDES) ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:897:3: op= ('=='|'>'|'>='|'<'|'<='|'!='|CONTAINS|MATCHES|EXCLUDES) ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )
             {
             op=(Token)input.LT(1);
-            if ( (input.LA(1)>=61 && input.LA(1)<=69) ) {
+            if ( (input.LA(1)>=CONTAINS && input.LA(1)<=EXCLUDES)||(input.LA(1)>=70 && input.LA(1)<=75) ) {
                 input.consume();
                 errorRecovery=false;failed=false;
             }
@@ -3336,24 +3733,24 @@
                 if (backtracking>0) {failed=true; return rd;}
                 MismatchedSetException mse =
                     new MismatchedSetException(null,input);
-                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint_expression2426);    throw mse;
+                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_constraint_expression2357);    throw mse;
             }
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:893:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )
-            int alt37=4;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:907:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )
+            int alt36=4;
             switch ( input.LA(1) ) {
             case ID:
-                int LA37_1 = input.LA(2);
-                if ( (LA37_1==33) ) {
-                    alt37=2;
+                int LA36_1 = input.LA(2);
+                if ( (LA36_1==62) ) {
+                    alt36=2;
                 }
-                else if ( (LA37_1==EOF||LA37_1==RIGHT_PAREN||LA37_1==36||(LA37_1>=58 && LA37_1<=59)) ) {
-                    alt37=1;
+                else if ( (LA36_1==EOF||LA36_1==RIGHT_PAREN||LA36_1==64||(LA36_1>=67 && LA36_1<=68)) ) {
+                    alt36=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return rd;}
                     NoViableAltException nvae =
-                        new NoViableAltException("893:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )", 37, 1, input);
+                        new NoViableAltException("907:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )", 36, 1, input);
 
                     throw nvae;
                 }
@@ -3362,26 +3759,26 @@
             case BOOL:
             case INT:
             case FLOAT:
-            case 70:
-                alt37=3;
+            case NULL:
+                alt36=3;
                 break;
             case LEFT_PAREN:
-                alt37=4;
+                alt36=4;
                 break;
             default:
                 if (backtracking>0) {failed=true; return rd;}
                 NoViableAltException nvae =
-                    new NoViableAltException("893:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )", 37, 0, input);
+                    new NoViableAltException("907:3: ( ( ID )=>bvc= ID | ( enum_constraint )=>lc= enum_constraint | ( literal_constraint )=>lc= literal_constraint | rvc= retval_constraint )", 36, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt37) {
+            switch (alt36) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:893:5: ( ID )=>bvc= ID
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:907:5: ( ID )=>bvc= ID
                     {
                     bvc=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_constraint_expression2493); if (failed) return rd;
+                    match(input,ID,FOLLOW_ID_in_constraint_expression2424); if (failed) return rd;
                     if ( backtracking==0 ) {
                       
                       				rd = new VariableRestrictionDescr(op.getText(), bvc.getText());
@@ -3391,9 +3788,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:898:4: ( enum_constraint )=>lc= enum_constraint
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:912:4: ( enum_constraint )=>lc= enum_constraint
                     {
-                    pushFollow(FOLLOW_enum_constraint_in_constraint_expression2509);
+                    pushFollow(FOLLOW_enum_constraint_in_constraint_expression2440);
                     lc=enum_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -3406,9 +3803,9 @@
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:903:4: ( literal_constraint )=>lc= literal_constraint
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:917:4: ( literal_constraint )=>lc= literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_constraint_expression2532);
+                    pushFollow(FOLLOW_literal_constraint_in_constraint_expression2463);
                     lc=literal_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -3421,9 +3818,9 @@
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:907:5: rvc= retval_constraint
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:921:5: rvc= retval_constraint
                     {
-                    pushFollow(FOLLOW_retval_constraint_in_constraint_expression2546);
+                    pushFollow(FOLLOW_retval_constraint_in_constraint_expression2477);
                     rvc=retval_constraint();
                     _fsp--;
                     if (failed) return rd;
@@ -3454,7 +3851,7 @@
 
 
     // $ANTLR start literal_constraint
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:914:1: literal_constraint returns [String text] : ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:928:1: literal_constraint returns [String text] : ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= NULL ) ;
     public String literal_constraint() throws RecognitionException {   
         String text = null;
 
@@ -3464,41 +3861,41 @@
         		text = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:918:4: ( ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:918:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:932:4: ( ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= NULL ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:932:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= NULL )
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:918:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' )
-            int alt38=5;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:932:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= NULL )
+            int alt37=5;
             switch ( input.LA(1) ) {
             case STRING:
-                alt38=1;
+                alt37=1;
                 break;
             case INT:
-                alt38=2;
+                alt37=2;
                 break;
             case FLOAT:
-                alt38=3;
+                alt37=3;
                 break;
             case BOOL:
-                alt38=4;
+                alt37=4;
                 break;
-            case 70:
-                alt38=5;
+            case NULL:
+                alt37=5;
                 break;
             default:
                 if (backtracking>0) {failed=true; return text;}
                 NoViableAltException nvae =
-                    new NoViableAltException("918:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= 'null' )", 38, 0, input);
+                    new NoViableAltException("932:4: ( ( STRING )=>t= STRING | ( INT )=>t= INT | ( FLOAT )=>t= FLOAT | ( BOOL )=>t= BOOL | t= NULL )", 37, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt38) {
+            switch (alt37) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:918:6: ( STRING )=>t= STRING
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:932:6: ( STRING )=>t= STRING
                     {
                     t=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2585); if (failed) return text;
+                    match(input,STRING,FOLLOW_STRING_in_literal_constraint2516); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = getString( t ); 
                     }
@@ -3506,10 +3903,10 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:919:5: ( INT )=>t= INT
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:933:5: ( INT )=>t= INT
                     {
                     t=(Token)input.LT(1);
-                    match(input,INT,FOLLOW_INT_in_literal_constraint2596); if (failed) return text;
+                    match(input,INT,FOLLOW_INT_in_literal_constraint2527); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3517,10 +3914,10 @@
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:920:5: ( FLOAT )=>t= FLOAT
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:934:5: ( FLOAT )=>t= FLOAT
                     {
                     t=(Token)input.LT(1);
-                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2609); if (failed) return text;
+                    match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint2540); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3528,10 +3925,10 @@
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:921:5: ( BOOL )=>t= BOOL
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:935:5: ( BOOL )=>t= BOOL
                     {
                     t=(Token)input.LT(1);
-                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2620); if (failed) return text;
+                    match(input,BOOL,FOLLOW_BOOL_in_literal_constraint2551); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = t.getText(); 
                     }
@@ -3539,10 +3936,10 @@
                     }
                     break;
                 case 5 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:922:5: t= 'null'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:936:5: t= NULL
                     {
                     t=(Token)input.LT(1);
-                    match(input,70,FOLLOW_70_in_literal_constraint2632); if (failed) return text;
+                    match(input,NULL,FOLLOW_NULL_in_literal_constraint2563); if (failed) return text;
                     if ( backtracking==0 ) {
                        text = null; 
                     }
@@ -3568,35 +3965,64 @@
 
 
     // $ANTLR start enum_constraint
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:926:1: enum_constraint returns [String text] : (cls= ID '.' en= ID ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:940:1: enum_constraint returns [String text] : id= ID ( ( '.' identifier )=> '.' ident= identifier )+ ;
     public String enum_constraint() throws RecognitionException {   
         String text = null;
 
-        Token cls=null;
-        Token en=null;
+        Token id=null;
+        Token ident = null;
 
+
         
         		text = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:930:4: ( (cls= ID '.' en= ID ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:930:4: (cls= ID '.' en= ID )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:945:3: (id= ID ( ( '.' identifier )=> '.' ident= identifier )+ )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:945:3: id= ID ( ( '.' identifier )=> '.' ident= identifier )+
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:930:4: (cls= ID '.' en= ID )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:930:5: cls= ID '.' en= ID
-            {
-            cls=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint2663); if (failed) return text;
-            match(input,33,FOLLOW_33_in_enum_constraint2665); if (failed) return text;
-            en=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enum_constraint2669); if (failed) return text;
-
-            }
-
+            id=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_enum_constraint2598); if (failed) return text;
             if ( backtracking==0 ) {
-               text = cls.getText() + "." + en.getText(); 
+               text=id.getText(); 
             }
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:945:32: ( ( '.' identifier )=> '.' ident= identifier )+
+            int cnt38=0;
+            loop38:
+            do {
+                int alt38=2;
+                int LA38_0 = input.LA(1);
+                if ( (LA38_0==62) ) {
+                    alt38=1;
+                }
 
+
+                switch (alt38) {
+            	case 1 :
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:945:34: ( '.' identifier )=> '.' ident= identifier
+            	    {
+            	    match(input,62,FOLLOW_62_in_enum_constraint2604); if (failed) return text;
+            	    pushFollow(FOLLOW_identifier_in_enum_constraint2608);
+            	    ident=identifier();
+            	    _fsp--;
+            	    if (failed) return text;
+            	    if ( backtracking==0 ) {
+            	       text += "." + ident.getText(); 
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt38 >= 1 ) break loop38;
+            	    if (backtracking>0) {failed=true; return text;}
+                        EarlyExitException eee =
+                            new EarlyExitException(38, input);
+                        throw eee;
+                }
+                cnt38++;
+            } while (true);
+
+
             }
 
         }
@@ -3612,16 +4038,16 @@
 
 
     // $ANTLR start predicate
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:934:1: predicate[ColumnDescr column] : text= paren_chunk ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:949:1: predicate[ColumnDescr column] : text= paren_chunk ;
     public void predicate(ColumnDescr column) throws RecognitionException {   
         String text = null;
 
 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:936:3: (text= paren_chunk )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:936:3: text= paren_chunk
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:951:3: (text= paren_chunk )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:951:3: text= paren_chunk
             {
-            pushFollow(FOLLOW_paren_chunk_in_predicate2691);
+            pushFollow(FOLLOW_paren_chunk_in_predicate2633);
             text=paren_chunk();
             _fsp--;
             if (failed) return ;
@@ -3648,7 +4074,7 @@
 
 
     // $ANTLR start paren_chunk
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:944:1: paren_chunk returns [String text] : loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:959:1: paren_chunk returns [String text] : loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN ;
     public String paren_chunk() throws RecognitionException {   
         String text = null;
 
@@ -3661,8 +4087,8 @@
                    Integer channel = null;
                 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:950:10: (loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:950:10: loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:965:10: (loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:965:10: loc= LEFT_PAREN ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )* loc= RIGHT_PAREN
             {
             if ( backtracking==0 ) {
               
@@ -3672,19 +4098,19 @@
               	        
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk2738); if (failed) return text;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk2680); if (failed) return text;
             if ( backtracking==0 ) {
               
               		    buf.append( loc.getText());
                
               		
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:960:3: ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:975:3: ( (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN) | ( paren_chunk )=>chunk= paren_chunk )*
             loop39:
             do {
                 int alt39=3;
                 int LA39_0 = input.LA(1);
-                if ( ((LA39_0>=ID && LA39_0<=INT)||(LA39_0>=FLOAT && LA39_0<=77)) ) {
+                if ( ((LA39_0>=PACKAGE && LA39_0<=OR)||(LA39_0>=CONTAINS && LA39_0<=76)) ) {
                     alt39=1;
                 }
                 else if ( (LA39_0==LEFT_PAREN) ) {
@@ -3694,9 +4120,9 @@
 
                 switch (alt39) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:961:4: (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN)
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:976:4: (~ (LEFT_PAREN|RIGHT_PAREN))=>~ (LEFT_PAREN|RIGHT_PAREN)
             	    {
-            	    if ( (input.LA(1)>=ID && input.LA(1)<=INT)||(input.LA(1)>=FLOAT && input.LA(1)<=77) ) {
+            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=OR)||(input.LA(1)>=CONTAINS && input.LA(1)<=76) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -3704,7 +4130,7 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk2754);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk2696);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -3716,9 +4142,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:966:4: ( paren_chunk )=>chunk= paren_chunk
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:981:4: ( paren_chunk )=>chunk= paren_chunk
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk2778);
+            	    pushFollow(FOLLOW_paren_chunk_in_paren_chunk2720);
             	    chunk=paren_chunk();
             	    _fsp--;
             	    if (failed) return text;
@@ -3746,7 +4172,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk2814); if (failed) return text;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk2756); if (failed) return text;
             if ( backtracking==0 ) {
               
                                   buf.append( loc.getText() );
@@ -3769,7 +4195,7 @@
 
 
     // $ANTLR start curly_chunk
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:985:1: curly_chunk returns [String text] : loc= LEFT_CURLY ( (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY) | ( curly_chunk )=>chunk= curly_chunk )* loc= RIGHT_CURLY ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1000:1: curly_chunk returns [String text] : loc= LEFT_CURLY ( (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY) | ( curly_chunk )=>chunk= curly_chunk )* loc= RIGHT_CURLY ;
     public String curly_chunk() throws RecognitionException {   
         String text = null;
 
@@ -3782,11 +4208,11 @@
                    Integer channel = null;
                 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:991:3: (loc= LEFT_CURLY ( (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY) | ( curly_chunk )=>chunk= curly_chunk )* loc= RIGHT_CURLY )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:991:3: loc= LEFT_CURLY ( (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY) | ( curly_chunk )=>chunk= curly_chunk )* loc= RIGHT_CURLY
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1006:3: (loc= LEFT_CURLY ( (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY) | ( curly_chunk )=>chunk= curly_chunk )* loc= RIGHT_CURLY )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1006:3: loc= LEFT_CURLY ( (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY) | ( curly_chunk )=>chunk= curly_chunk )* loc= RIGHT_CURLY
             {
             loc=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk2864); if (failed) return text;
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk2806); if (failed) return text;
             if ( backtracking==0 ) {
               
               	            channel = ((SwitchingCommonTokenStream)input).getTokenTypeChannel( WS ); 
@@ -3796,12 +4222,12 @@
               		    buf.append( loc.getText() );
               		
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:999:3: ( (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY) | ( curly_chunk )=>chunk= curly_chunk )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1014:3: ( (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY) | ( curly_chunk )=>chunk= curly_chunk )*
             loop40:
             do {
                 int alt40=3;
                 int LA40_0 = input.LA(1);
-                if ( ((LA40_0>=ID && LA40_0<=FLOAT)||(LA40_0>=LEFT_SQUARE && LA40_0<=77)) ) {
+                if ( ((LA40_0>=PACKAGE && LA40_0<=NULL)||(LA40_0>=LEFT_SQUARE && LA40_0<=76)) ) {
                     alt40=1;
                 }
                 else if ( (LA40_0==LEFT_CURLY) ) {
@@ -3811,9 +4237,9 @@
 
                 switch (alt40) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1000:4: (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY)
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1015:4: (~ (LEFT_CURLY|RIGHT_CURLY))=>~ (LEFT_CURLY|RIGHT_CURLY)
             	    {
-            	    if ( (input.LA(1)>=ID && input.LA(1)<=FLOAT)||(input.LA(1)>=LEFT_SQUARE && input.LA(1)<=77) ) {
+            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=NULL)||(input.LA(1)>=LEFT_SQUARE && input.LA(1)<=76) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -3821,7 +4247,7 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk2880);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk2822);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -3833,9 +4259,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1005:4: ( curly_chunk )=>chunk= curly_chunk
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1020:4: ( curly_chunk )=>chunk= curly_chunk
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_in_curly_chunk2904);
+            	    pushFollow(FOLLOW_curly_chunk_in_curly_chunk2846);
             	    chunk=curly_chunk();
             	    _fsp--;
             	    if (failed) return text;
@@ -3863,7 +4289,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk2940); if (failed) return text;
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk2882); if (failed) return text;
             if ( backtracking==0 ) {
               
                                   buf.append( loc.getText() );
@@ -3886,7 +4312,7 @@
 
 
     // $ANTLR start square_chunk
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1024:1: square_chunk returns [String text] : loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1039:1: square_chunk returns [String text] : loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE ;
     public String square_chunk() throws RecognitionException {   
         String text = null;
 
@@ -3899,8 +4325,8 @@
                    Integer channel = null;
                 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1030:10: (loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1030:10: loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1045:10: (loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1045:10: loc= LEFT_SQUARE ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )* loc= RIGHT_SQUARE
             {
             if ( backtracking==0 ) {
               
@@ -3910,19 +4336,19 @@
               	        
             }
             loc=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk3001); if (failed) return text;
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk2943); if (failed) return text;
             if ( backtracking==0 ) {
               
               		    buf.append( loc.getText());
                
               		
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1040:3: ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1055:3: ( (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE) | ( square_chunk )=>chunk= square_chunk )*
             loop41:
             do {
                 int alt41=3;
                 int LA41_0 = input.LA(1);
-                if ( ((LA41_0>=ID && LA41_0<=RIGHT_CURLY)||(LA41_0>=END && LA41_0<=77)) ) {
+                if ( ((LA41_0>=PACKAGE && LA41_0<=RIGHT_CURLY)||(LA41_0>=AND && LA41_0<=76)) ) {
                     alt41=1;
                 }
                 else if ( (LA41_0==LEFT_SQUARE) ) {
@@ -3932,9 +4358,9 @@
 
                 switch (alt41) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1041:4: (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE)
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1056:4: (~ (LEFT_SQUARE|RIGHT_SQUARE))=>~ (LEFT_SQUARE|RIGHT_SQUARE)
             	    {
-            	    if ( (input.LA(1)>=ID && input.LA(1)<=RIGHT_CURLY)||(input.LA(1)>=END && input.LA(1)<=77) ) {
+            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=RIGHT_CURLY)||(input.LA(1)>=AND && input.LA(1)<=76) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -3942,7 +4368,7 @@
             	        if (backtracking>0) {failed=true; return text;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk3017);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk2959);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -3954,9 +4380,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1046:4: ( square_chunk )=>chunk= square_chunk
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1061:4: ( square_chunk )=>chunk= square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_square_chunk3041);
+            	    pushFollow(FOLLOW_square_chunk_in_square_chunk2983);
             	    chunk=square_chunk();
             	    _fsp--;
             	    if (failed) return text;
@@ -3984,7 +4410,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk3077); if (failed) return text;
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk3019); if (failed) return text;
             if ( backtracking==0 ) {
               
                                   buf.append( loc.getText() );
@@ -4007,7 +4433,7 @@
 
 
     // $ANTLR start retval_constraint
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1065:1: retval_constraint returns [String text] : c= paren_chunk ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1080:1: retval_constraint returns [String text] : c= paren_chunk ;
     public String retval_constraint() throws RecognitionException {   
         String text = null;
 
@@ -4018,10 +4444,10 @@
         		text = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1070:3: (c= paren_chunk )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1070:3: c= paren_chunk
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1085:3: (c= paren_chunk )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1085:3: c= paren_chunk
             {
-            pushFollow(FOLLOW_paren_chunk_in_retval_constraint3122);
+            pushFollow(FOLLOW_paren_chunk_in_retval_constraint3064);
             c=paren_chunk();
             _fsp--;
             if (failed) return text;
@@ -4044,7 +4470,7 @@
 
 
     // $ANTLR start lhs_or
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1078:1: lhs_or returns [BaseDescr d] : left= lhs_and ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1088:1: lhs_or returns [BaseDescr d] : left= lhs_and ( ( (OR|'||') lhs_and )=> (OR|'||')right= lhs_and )* ;
     public BaseDescr lhs_or() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -4058,31 +4484,31 @@
         		OrDescr or = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1084:3: (left= lhs_and ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1084:3: left= lhs_and ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1094:3: (left= lhs_and ( ( (OR|'||') lhs_and )=> (OR|'||')right= lhs_and )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1094:3: left= lhs_and ( ( (OR|'||') lhs_and )=> (OR|'||')right= lhs_and )*
             {
-            pushFollow(FOLLOW_lhs_and_in_lhs_or3155);
+            pushFollow(FOLLOW_lhs_and_in_lhs_or3091);
             left=lhs_and();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
               d = left; 
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1085:3: ( ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1095:3: ( ( (OR|'||') lhs_and )=> (OR|'||')right= lhs_and )*
             loop42:
             do {
                 int alt42=2;
                 int LA42_0 = input.LA(1);
-                if ( ((LA42_0>=56 && LA42_0<=57)) ) {
+                if ( (LA42_0==OR||LA42_0==66) ) {
                     alt42=1;
                 }
 
 
                 switch (alt42) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1085:5: ( ('or'|'||') lhs_and )=> ('or'|'||')right= lhs_and
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1095:5: ( (OR|'||') lhs_and )=> (OR|'||')right= lhs_and
             	    {
-            	    if ( (input.LA(1)>=56 && input.LA(1)<=57) ) {
+            	    if ( input.LA(1)==OR||input.LA(1)==66 ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4090,10 +4516,10 @@
             	        if (backtracking>0) {failed=true; return d;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3164);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_or3100);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_lhs_and_in_lhs_or3174);
+            	    pushFollow(FOLLOW_lhs_and_in_lhs_or3110);
             	    right=lhs_and();
             	    _fsp--;
             	    if (failed) return d;
@@ -4133,7 +4559,7 @@
 
 
     // $ANTLR start lhs_and
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1099:1: lhs_and returns [BaseDescr d] : left= lhs_unary ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1109:1: lhs_and returns [BaseDescr d] : left= lhs_unary ( ( (AND|'&&') lhs_unary )=> (AND|'&&')right= lhs_unary )* ;
     public BaseDescr lhs_and() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -4147,31 +4573,31 @@
         		AndDescr and = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1105:3: (left= lhs_unary ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1105:3: left= lhs_unary ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1115:3: (left= lhs_unary ( ( (AND|'&&') lhs_unary )=> (AND|'&&')right= lhs_unary )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1115:3: left= lhs_unary ( ( (AND|'&&') lhs_unary )=> (AND|'&&')right= lhs_unary )*
             {
-            pushFollow(FOLLOW_lhs_unary_in_lhs_and3210);
+            pushFollow(FOLLOW_lhs_unary_in_lhs_and3146);
             left=lhs_unary();
             _fsp--;
             if (failed) return d;
             if ( backtracking==0 ) {
                d = left; 
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1106:3: ( ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1116:3: ( ( (AND|'&&') lhs_unary )=> (AND|'&&')right= lhs_unary )*
             loop43:
             do {
                 int alt43=2;
                 int LA43_0 = input.LA(1);
-                if ( ((LA43_0>=71 && LA43_0<=72)) ) {
+                if ( (LA43_0==AND||LA43_0==76) ) {
                     alt43=1;
                 }
 
 
                 switch (alt43) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1106:5: ( ('and'|'&&') lhs_unary )=> ('and'|'&&')right= lhs_unary
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1116:5: ( (AND|'&&') lhs_unary )=> (AND|'&&')right= lhs_unary
             	    {
-            	    if ( (input.LA(1)>=71 && input.LA(1)<=72) ) {
+            	    if ( input.LA(1)==AND||input.LA(1)==76 ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4179,10 +4605,10 @@
             	        if (backtracking>0) {failed=true; return d;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3219);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_lhs_and3155);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_lhs_unary_in_lhs_and3229);
+            	    pushFollow(FOLLOW_lhs_unary_in_lhs_and3165);
             	    right=lhs_unary();
             	    _fsp--;
             	    if (failed) return d;
@@ -4222,60 +4648,60 @@
 
 
     // $ANTLR start lhs_unary
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1120:1: lhs_unary returns [BaseDescr d] : ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' ) opt_semicolon ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1130:1: lhs_unary returns [BaseDescr d] : ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )? )=>u= lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' ) opt_semicolon ;
     public BaseDescr lhs_unary() throws RecognitionException {   
         BaseDescr d = null;
 
         BaseDescr u = null;
 
-        FromDescr fm = null;
-
         AccumulateDescr ac = null;
 
         CollectDescr cs = null;
 
+        FromDescr fm = null;
 
+
         
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1124:4: ( ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' ) opt_semicolon )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1124:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' ) opt_semicolon
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1134:4: ( ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )? )=>u= lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' ) opt_semicolon )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1134:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )? )=>u= lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' ) opt_semicolon
             {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1124:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' )
-            int alt45=6;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1134:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )? )=>u= lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' )
+            int alt46=6;
             switch ( input.LA(1) ) {
-            case 73:
-                alt45=1;
+            case EXISTS:
+                alt46=1;
                 break;
-            case 74:
-                alt45=2;
+            case NOT:
+                alt46=2;
                 break;
-            case 75:
-                alt45=3;
+            case EVAL:
+                alt46=3;
                 break;
             case ID:
-                alt45=4;
+                alt46=4;
                 break;
-            case 76:
-                alt45=5;
+            case FORALL:
+                alt46=5;
                 break;
             case LEFT_PAREN:
-                alt45=6;
+                alt46=6;
                 break;
             default:
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1124:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' )", 45, 0, input);
+                    new NoViableAltException("1134:4: ( ( lhs_exist )=>u= lhs_exist | ( lhs_not )=>u= lhs_not | ( lhs_eval )=>u= lhs_eval | ( lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )? )=>u= lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) ) )? | ( lhs_forall )=>u= lhs_forall | '(' u= lhs ')' )", 46, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt45) {
+            switch (alt46) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1124:6: ( lhs_exist )=>u= lhs_exist
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1134:6: ( lhs_exist )=>u= lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary3266);
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary3202);
                     u=lhs_exist();
                     _fsp--;
                     if (failed) return d;
@@ -4283,9 +4709,9 @@
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1125:5: ( lhs_not )=>u= lhs_not
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1135:5: ( lhs_not )=>u= lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary3274);
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary3210);
                     u=lhs_not();
                     _fsp--;
                     if (failed) return d;
@@ -4293,9 +4719,9 @@
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1126:5: ( lhs_eval )=>u= lhs_eval
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1136:5: ( lhs_eval )=>u= lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary3282);
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary3218);
                     u=lhs_eval();
                     _fsp--;
                     if (failed) return d;
@@ -4303,82 +4729,154 @@
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1127:5: ( lhs_column ( ( ( from_statement ) )=> ( from_statement ) | ( ( accumulate_statement ) )=> ( accumulate_statement ) | ( ( collect_statement ) )=> ( collect_statement ) )? )=>u= lhs_column ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )?
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1137:5: ( lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )? )=>u= lhs_column ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) ) )?
                     {
-                    pushFollow(FOLLOW_lhs_column_in_lhs_unary3290);
+                    pushFollow(FOLLOW_lhs_column_in_lhs_unary3226);
                     u=lhs_column();
                     _fsp--;
                     if (failed) return d;
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1127:18: ( ( ( from_statement ) )=> (fm= from_statement ) | ( ( accumulate_statement ) )=> (ac= accumulate_statement ) | ( ( collect_statement ) )=> (cs= collect_statement ) )?
-                    int alt44=4;
-                    int LA44_0 = input.LA(1);
-                    if ( (LA44_0==50) ) {
-                        switch ( input.LA(2) ) {
-                            case 51:
-                                alt44=2;
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1137:18: ( ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) ) )?
+                    int alt45=2;
+                    int LA45_0 = input.LA(1);
+                    if ( (LA45_0==FROM) ) {
+                        alt45=1;
+                    }
+                    switch (alt45) {
+                        case 1 :
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1138:13: ( FROM ( ( ACCUMULATE )=> ( accumulate_statement ) | ( COLLECT )=> ( collect_statement ) | ( from_statement ) ) )=> FROM ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) )
+                            {
+                            match(input,FROM,FOLLOW_FROM_in_lhs_unary3242); if (failed) return d;
+                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1138:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) )
+                            int alt44=3;
+                            switch ( input.LA(1) ) {
+                            case ACCUMULATE:
+                                if ( (synpred71()) ) {
+                                    alt44=1;
+                                }
+                                else if ( (true) ) {
+                                    alt44=3;
+                                }
+                                else {
+                                    if (backtracking>0) {failed=true; return d;}
+                                    NoViableAltException nvae =
+                                        new NoViableAltException("1138:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) )", 44, 1, input);
+
+                                    throw nvae;
+                                }
                                 break;
-                            case 55:
-                                alt44=3;
+                            case COLLECT:
+                                if ( (synpred72()) ) {
+                                    alt44=2;
+                                }
+                                else if ( (true) ) {
+                                    alt44=3;
+                                }
+                                else {
+                                    if (backtracking>0) {failed=true; return d;}
+                                    NoViableAltException nvae =
+                                        new NoViableAltException("1138:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) )", 44, 2, input);
+
+                                    throw nvae;
+                                }
                                 break;
+                            case PACKAGE:
+                            case IMPORT:
+                            case FUNCTION:
+                            case GLOBAL:
+                            case QUERY:
+                            case END:
+                            case TEMPLATE:
+                            case RULE:
+                            case WHEN:
+                            case ATTRIBUTES:
+                            case ENABLED:
+                            case SALIENCE:
+                            case DURATION:
+                            case INIT:
+                            case ACTION:
+                            case RESULT:
                             case ID:
-                                alt44=1;
+                            case OR:
+                            case CONTAINS:
+                            case MATCHES:
+                            case EXCLUDES:
+                            case NULL:
+                            case AND:
+                            case FROM:
+                            case EXISTS:
+                            case NOT:
+                            case EVAL:
+                            case FORALL:
+                            case THEN:
+                                alt44=3;
                                 break;
-                        }
+                            default:
+                                if (backtracking>0) {failed=true; return d;}
+                                NoViableAltException nvae =
+                                    new NoViableAltException("1138:18: ( ( ACCUMULATE )=> (ac= accumulate_statement ) | ( COLLECT )=> (cs= collect_statement ) | (fm= from_statement ) )", 44, 0, input);
 
-                    }
-                    switch (alt44) {
-                        case 1 :
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1128:14: ( ( from_statement ) )=> (fm= from_statement )
-                            {
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1128:14: (fm= from_statement )
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1128:15: fm= from_statement
-                            {
-                            pushFollow(FOLLOW_from_statement_in_lhs_unary3310);
-                            fm=from_statement();
-                            _fsp--;
-                            if (failed) return d;
-                            if ( backtracking==0 ) {
-                              fm.setColumn((ColumnDescr) u); u=fm;
+                                throw nvae;
                             }
 
-                            }
+                            switch (alt44) {
+                                case 1 :
+                                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1139:14: ( ACCUMULATE )=> (ac= accumulate_statement )
+                                    {
+                                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1139:32: (ac= accumulate_statement )
+                                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1139:33: ac= accumulate_statement
+                                    {
+                                    pushFollow(FOLLOW_accumulate_statement_in_lhs_unary3270);
+                                    ac=accumulate_statement();
+                                    _fsp--;
+                                    if (failed) return d;
+                                    if ( backtracking==0 ) {
+                                      ac.setResultColumn((ColumnDescr) u); u=ac;
+                                    }
 
+                                    }
 
-                            }
-                            break;
-                        case 2 :
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1129:14: ( ( accumulate_statement ) )=> (ac= accumulate_statement )
-                            {
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1129:14: (ac= accumulate_statement )
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1129:15: ac= accumulate_statement
-                            {
-                            pushFollow(FOLLOW_accumulate_statement_in_lhs_unary3332);
-                            ac=accumulate_statement();
-                            _fsp--;
-                            if (failed) return d;
-                            if ( backtracking==0 ) {
-                              ac.setResultColumn((ColumnDescr) u); u=ac;
-                            }
 
-                            }
+                                    }
+                                    break;
+                                case 2 :
+                                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1140:14: ( COLLECT )=> (cs= collect_statement )
+                                    {
+                                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1140:29: (cs= collect_statement )
+                                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1140:30: cs= collect_statement
+                                    {
+                                    pushFollow(FOLLOW_collect_statement_in_lhs_unary3299);
+                                    cs=collect_statement();
+                                    _fsp--;
+                                    if (failed) return d;
+                                    if ( backtracking==0 ) {
+                                      cs.setResultColumn((ColumnDescr) u); u=cs;
+                                    }
 
+                                    }
 
-                            }
-                            break;
-                        case 3 :
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1130:14: ( ( collect_statement ) )=> (cs= collect_statement )
-                            {
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1130:14: (cs= collect_statement )
-                            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1130:15: cs= collect_statement
-                            {
-                            pushFollow(FOLLOW_collect_statement_in_lhs_unary3353);
-                            cs=collect_statement();
-                            _fsp--;
-                            if (failed) return d;
-                            if ( backtracking==0 ) {
-                              cs.setResultColumn((ColumnDescr) u); u=cs;
-                            }
 
+                                    }
+                                    break;
+                                case 3 :
+                                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1141:14: (fm= from_statement )
+                                    {
+                                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1141:14: (fm= from_statement )
+                                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1141:15: fm= from_statement
+                                    {
+                                    pushFollow(FOLLOW_from_statement_in_lhs_unary3321);
+                                    fm=from_statement();
+                                    _fsp--;
+                                    if (failed) return d;
+                                    if ( backtracking==0 ) {
+                                      fm.setColumn((ColumnDescr) u); u=fm;
+                                    }
+
+                                    }
+
+
+                                    }
+                                    break;
+
                             }
 
 
@@ -4391,9 +4889,9 @@
                     }
                     break;
                 case 5 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1132:5: ( lhs_forall )=>u= lhs_forall
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1144:5: ( lhs_forall )=>u= lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary3378);
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary3360);
                     u=lhs_forall();
                     _fsp--;
                     if (failed) return d;
@@ -4401,14 +4899,14 @@
                     }
                     break;
                 case 6 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1133:5: '(' u= lhs ')'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1145:5: '(' u= lhs ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary3386); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_in_lhs_unary3390);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary3368); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_in_lhs_unary3372);
                     u=lhs();
                     _fsp--;
                     if (failed) return d;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary3392); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary3374); if (failed) return d;
 
                     }
                     break;
@@ -4418,7 +4916,7 @@
             if ( backtracking==0 ) {
                d = u; 
             }
-            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary3402);
+            pushFollow(FOLLOW_opt_semicolon_in_lhs_unary3384);
             opt_semicolon();
             _fsp--;
             if (failed) return d;
@@ -4438,7 +4936,7 @@
 
 
     // $ANTLR start lhs_exist
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1138:1: lhs_exist returns [BaseDescr d] : loc= 'exists' ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1150:1: lhs_exist returns [BaseDescr d] : loc= EXISTS ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column ) ;
     public BaseDescr lhs_exist() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -4450,44 +4948,44 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1142:4: (loc= 'exists' ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1142:4: loc= 'exists' ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1154:4: (loc= EXISTS ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1154:4: loc= EXISTS ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,73,FOLLOW_73_in_lhs_exist3426); if (failed) return d;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1142:17: ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )
-            int alt46=2;
-            int LA46_0 = input.LA(1);
-            if ( (LA46_0==LEFT_PAREN) ) {
-                alt46=1;
+            match(input,EXISTS,FOLLOW_EXISTS_in_lhs_exist3408); if (failed) return d;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1154:15: ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
+            if ( (LA47_0==LEFT_PAREN) ) {
+                alt47=1;
             }
-            else if ( (LA46_0==ID) ) {
-                alt46=2;
+            else if ( (LA47_0==ID) ) {
+                alt47=2;
             }
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1142:17: ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )", 46, 0, input);
+                    new NoViableAltException("1154:15: ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )", 47, 0, input);
 
                 throw nvae;
             }
-            switch (alt46) {
+            switch (alt47) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1142:18: ( '(' lhs_or ')' )=> '(' column= lhs_or ')'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1154:16: ( '(' lhs_or ')' )=> '(' column= lhs_or ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3429); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3433);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3411); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3415);
                     column=lhs_or();
                     _fsp--;
                     if (failed) return d;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3435); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3417); if (failed) return d;
 
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1142:42: column= lhs_column
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1154:40: column= lhs_column
                     {
-                    pushFollow(FOLLOW_lhs_column_in_lhs_exist3441);
+                    pushFollow(FOLLOW_lhs_column_in_lhs_exist3423);
                     column=lhs_column();
                     _fsp--;
                     if (failed) return d;
@@ -4519,7 +5017,7 @@
 
 
     // $ANTLR start lhs_not
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1149:1: lhs_not returns [NotDescr d] : loc= 'not' ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column ) ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1161:1: lhs_not returns [NotDescr d] : loc= NOT ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column ) ;
     public NotDescr lhs_not() throws RecognitionException {   
         NotDescr d = null;
 
@@ -4531,44 +5029,44 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1153:4: (loc= 'not' ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column ) )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1153:4: loc= 'not' ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1165:4: (loc= NOT ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1165:4: loc= NOT ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )
             {
             loc=(Token)input.LT(1);
-            match(input,74,FOLLOW_74_in_lhs_not3471); if (failed) return d;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1153:14: ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )
-            int alt47=2;
-            int LA47_0 = input.LA(1);
-            if ( (LA47_0==LEFT_PAREN) ) {
-                alt47=1;
+            match(input,NOT,FOLLOW_NOT_in_lhs_not3453); if (failed) return d;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1165:12: ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )
+            int alt48=2;
+            int LA48_0 = input.LA(1);
+            if ( (LA48_0==LEFT_PAREN) ) {
+                alt48=1;
             }
-            else if ( (LA47_0==ID) ) {
-                alt47=2;
+            else if ( (LA48_0==ID) ) {
+                alt48=2;
             }
             else {
                 if (backtracking>0) {failed=true; return d;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1153:14: ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )", 47, 0, input);
+                    new NoViableAltException("1165:12: ( ( '(' lhs_or ')' )=> '(' column= lhs_or ')' | column= lhs_column )", 48, 0, input);
 
                 throw nvae;
             }
-            switch (alt47) {
+            switch (alt48) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1153:15: ( '(' lhs_or ')' )=> '(' column= lhs_or ')'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1165:13: ( '(' lhs_or ')' )=> '(' column= lhs_or ')'
                     {
-                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3474); if (failed) return d;
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not3478);
+                    match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3456); if (failed) return d;
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3460);
                     column=lhs_or();
                     _fsp--;
                     if (failed) return d;
-                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3481); if (failed) return d;
+                    match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3463); if (failed) return d;
 
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1153:40: column= lhs_column
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1165:38: column= lhs_column
                     {
-                    pushFollow(FOLLOW_lhs_column_in_lhs_not3487);
+                    pushFollow(FOLLOW_lhs_column_in_lhs_not3469);
                     column=lhs_column();
                     _fsp--;
                     if (failed) return d;
@@ -4600,7 +5098,7 @@
 
 
     // $ANTLR start lhs_eval
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1160:1: lhs_eval returns [BaseDescr d] : loc= 'eval' c= paren_chunk ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1172:1: lhs_eval returns [BaseDescr d] : loc= EVAL c= paren_chunk ;
     public BaseDescr lhs_eval() throws RecognitionException {   
         BaseDescr d = null;
 
@@ -4612,12 +5110,12 @@
         		d = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1164:4: (loc= 'eval' c= paren_chunk )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1164:4: loc= 'eval' c= paren_chunk
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1176:4: (loc= EVAL c= paren_chunk )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1176:4: loc= EVAL c= paren_chunk
             {
             loc=(Token)input.LT(1);
-            match(input,75,FOLLOW_75_in_lhs_eval3515); if (failed) return d;
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3519);
+            match(input,EVAL,FOLLOW_EVAL_in_lhs_eval3497); if (failed) return d;
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3501);
             c=paren_chunk();
             _fsp--;
             if (failed) return d;
@@ -4644,7 +5142,7 @@
 
 
     // $ANTLR start lhs_forall
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1172:1: lhs_forall returns [ForallDescr d] : loc= 'forall' '(' base= lhs_column ( ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column )+ ')' ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1184:1: lhs_forall returns [ForallDescr d] : loc= FORALL '(' base= lhs_column ( ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column )+ ')' ;
     public ForallDescr lhs_forall() throws RecognitionException {   
         ForallDescr d = null;
 
@@ -4658,13 +5156,13 @@
         		d = factory.createForall();
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1176:4: (loc= 'forall' '(' base= lhs_column ( ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column )+ ')' )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1176:4: loc= 'forall' '(' base= lhs_column ( ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column )+ ')'
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1188:4: (loc= FORALL '(' base= lhs_column ( ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column )+ ')' )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1188:4: loc= FORALL '(' base= lhs_column ( ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column )+ ')'
             {
             loc=(Token)input.LT(1);
-            match(input,76,FOLLOW_76_in_lhs_forall3547); if (failed) return d;
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall3549); if (failed) return d;
-            pushFollow(FOLLOW_lhs_column_in_lhs_forall3553);
+            match(input,FORALL,FOLLOW_FORALL_in_lhs_forall3529); if (failed) return d;
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall3531); if (failed) return d;
+            pushFollow(FOLLOW_lhs_column_in_lhs_forall3535);
             base=lhs_column();
             _fsp--;
             if (failed) return d;
@@ -4675,39 +5173,39 @@
               			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
               		
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1182:3: ( ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column )+
-            int cnt49=0;
-            loop49:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1194:3: ( ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column )+
+            int cnt50=0;
+            loop50:
             do {
-                int alt49=2;
-                int LA49_0 = input.LA(1);
-                if ( (LA49_0==ID||LA49_0==36) ) {
-                    alt49=1;
+                int alt50=2;
+                int LA50_0 = input.LA(1);
+                if ( (LA50_0==ID||LA50_0==64) ) {
+                    alt50=1;
                 }
 
 
-                switch (alt49) {
+                switch (alt50) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1182:5: ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1194:5: ( ( ( ',' )=> ',' )? lhs_column )=> ( ( ',' )=> ',' )? column= lhs_column
             	    {
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1182:5: ( ( ',' )=> ',' )?
-            	    int alt48=2;
-            	    int LA48_0 = input.LA(1);
-            	    if ( (LA48_0==36) ) {
-            	        alt48=1;
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1194:5: ( ( ',' )=> ',' )?
+            	    int alt49=2;
+            	    int LA49_0 = input.LA(1);
+            	    if ( (LA49_0==64) ) {
+            	        alt49=1;
             	    }
-            	    switch (alt48) {
+            	    switch (alt49) {
             	        case 1 :
-            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1182:6: ( ',' )=> ','
+            	            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1194:6: ( ',' )=> ','
             	            {
-            	            match(input,36,FOLLOW_36_in_lhs_forall3567); if (failed) return d;
+            	            match(input,64,FOLLOW_64_in_lhs_forall3549); if (failed) return d;
 
             	            }
             	            break;
 
             	    }
 
-            	    pushFollow(FOLLOW_lhs_column_in_lhs_forall3573);
+            	    pushFollow(FOLLOW_lhs_column_in_lhs_forall3555);
             	    column=lhs_column();
             	    _fsp--;
             	    if (failed) return d;
@@ -4722,16 +5220,16 @@
             	    break;
 
             	default :
-            	    if ( cnt49 >= 1 ) break loop49;
+            	    if ( cnt50 >= 1 ) break loop50;
             	    if (backtracking>0) {failed=true; return d;}
                         EarlyExitException eee =
-                            new EarlyExitException(49, input);
+                            new EarlyExitException(50, input);
                         throw eee;
                 }
-                cnt49++;
+                cnt50++;
             } while (true);
 
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall3586); if (failed) return d;
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall3568); if (failed) return d;
 
             }
 
@@ -4748,69 +5246,73 @@
 
 
     // $ANTLR start dotted_name
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1191:1: dotted_name returns [String name] : id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '[' ']' )=> '[' ']' )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1203:1: dotted_name returns [String name] : id= ID ( ( '.' identifier )=> '.' ident= identifier )* ( ( '[' ']' )=> '[' ']' )* ;
     public String dotted_name() throws RecognitionException {   
         String name = null;
 
         Token id=null;
+        Token ident = null;
 
+
         
         		name = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1196:3: (id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '[' ']' )=> '[' ']' )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1196:3: id= ID ( ( '.' ID )=> '.' id= ID )* ( ( '[' ']' )=> '[' ']' )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1208:3: (id= ID ( ( '.' identifier )=> '.' ident= identifier )* ( ( '[' ']' )=> '[' ']' )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1208:3: id= ID ( ( '.' identifier )=> '.' ident= identifier )* ( ( '[' ']' )=> '[' ']' )*
             {
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_dotted_name3612); if (failed) return name;
+            match(input,ID,FOLLOW_ID_in_dotted_name3594); if (failed) return name;
             if ( backtracking==0 ) {
                name=id.getText(); 
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1196:32: ( ( '.' ID )=> '.' id= ID )*
-            loop50:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1208:32: ( ( '.' identifier )=> '.' ident= identifier )*
+            loop51:
             do {
-                int alt50=2;
-                int LA50_0 = input.LA(1);
-                if ( (LA50_0==33) ) {
-                    alt50=1;
+                int alt51=2;
+                int LA51_0 = input.LA(1);
+                if ( (LA51_0==62) ) {
+                    alt51=1;
                 }
 
 
-                switch (alt50) {
+                switch (alt51) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1196:34: ( '.' ID )=> '.' id= ID
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1208:34: ( '.' identifier )=> '.' ident= identifier
             	    {
-            	    match(input,33,FOLLOW_33_in_dotted_name3618); if (failed) return name;
-            	    id=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_dotted_name3622); if (failed) return name;
+            	    match(input,62,FOLLOW_62_in_dotted_name3600); if (failed) return name;
+            	    pushFollow(FOLLOW_identifier_in_dotted_name3604);
+            	    ident=identifier();
+            	    _fsp--;
+            	    if (failed) return name;
             	    if ( backtracking==0 ) {
-            	       name = name + "." + id.getText(); 
+            	       name = name + "." + ident.getText(); 
             	    }
 
             	    }
             	    break;
 
             	default :
-            	    break loop50;
+            	    break loop51;
                 }
             } while (true);
 
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1196:85: ( ( '[' ']' )=> '[' ']' )*
-            loop51:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1208:99: ( ( '[' ']' )=> '[' ']' )*
+            loop52:
             do {
-                int alt51=2;
-                int LA51_0 = input.LA(1);
-                if ( (LA51_0==LEFT_SQUARE) ) {
-                    alt51=1;
+                int alt52=2;
+                int LA52_0 = input.LA(1);
+                if ( (LA52_0==LEFT_SQUARE) ) {
+                    alt52=1;
                 }
 
 
-                switch (alt51) {
+                switch (alt52) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1196:87: ( '[' ']' )=> '[' ']'
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1208:101: ( '[' ']' )=> '[' ']'
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name3631); if (failed) return name;
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name3633); if (failed) return name;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dotted_name3613); if (failed) return name;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dotted_name3615); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       name = name + "[]";
             	    }
@@ -4819,7 +5321,7 @@
             	    break;
 
             	default :
-            	    break loop51;
+            	    break loop52;
                 }
             } while (true);
 
@@ -4839,40 +5341,43 @@
 
 
     // $ANTLR start argument
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1199:1: argument returns [String name] : id= ID ( ( '[' ']' )=> '[' ']' )* ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1211:1: argument returns [String name] : id= identifier ( ( '[' ']' )=> '[' ']' )* ;
     public String argument() throws RecognitionException {   
         String name = null;
 
-        Token id=null;
+        Token id = null;
 
+
         
         		name = null;
         	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:3: (id= ID ( ( '[' ']' )=> '[' ']' )* )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:3: id= ID ( ( '[' ']' )=> '[' ']' )*
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1216:3: (id= identifier ( ( '[' ']' )=> '[' ']' )* )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1216:3: id= identifier ( ( '[' ']' )=> '[' ']' )*
             {
-            id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_argument3663); if (failed) return name;
+            pushFollow(FOLLOW_identifier_in_argument3645);
+            id=identifier();
+            _fsp--;
+            if (failed) return name;
             if ( backtracking==0 ) {
                name=id.getText(); 
             }
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:32: ( ( '[' ']' )=> '[' ']' )*
-            loop52:
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1216:40: ( ( '[' ']' )=> '[' ']' )*
+            loop53:
             do {
-                int alt52=2;
-                int LA52_0 = input.LA(1);
-                if ( (LA52_0==LEFT_SQUARE) ) {
-                    alt52=1;
+                int alt53=2;
+                int LA53_0 = input.LA(1);
+                if ( (LA53_0==LEFT_SQUARE) ) {
+                    alt53=1;
                 }
 
 
-                switch (alt52) {
+                switch (alt53) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1204:34: ( '[' ']' )=> '[' ']'
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1216:42: ( '[' ']' )=> '[' ']'
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument3669); if (failed) return name;
-            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument3671); if (failed) return name;
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument3651); if (failed) return name;
+            	    match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument3653); if (failed) return name;
             	    if ( backtracking==0 ) {
             	       name = name + "[]";
             	    }
@@ -4881,7 +5386,7 @@
             	    break;
 
             	default :
-            	    break loop52;
+            	    break loop53;
                 }
             } while (true);
 
@@ -4901,7 +5406,7 @@
 
 
     // $ANTLR start rhs_chunk
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1207:1: rhs_chunk[RuleDescr rule] : start= 'then' ( (~ END )=>~ END )* loc= END ;
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1219:1: rhs_chunk[RuleDescr rule] : start= THEN ( (~ END )=>~ END )* loc= END ;
     public void rhs_chunk(RuleDescr rule) throws RecognitionException {   
         Token start=null;
         Token loc=null;
@@ -4911,8 +5416,8 @@
                    Integer channel = null;
                 
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1213:10: (start= 'then' ( (~ END )=>~ END )* loc= END )
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1213:10: start= 'then' ( (~ END )=>~ END )* loc= END
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1225:10: (start= THEN ( (~ END )=>~ END )* loc= END )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1225:10: start= THEN ( (~ END )=>~ END )* loc= END
             {
             if ( backtracking==0 ) {
               
@@ -4922,22 +5427,22 @@
               	        
             }
             start=(Token)input.LT(1);
-            match(input,THEN,FOLLOW_THEN_in_rhs_chunk3715); if (failed) return ;
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1219:3: ( (~ END )=>~ END )*
-            loop53:
+            match(input,THEN,FOLLOW_THEN_in_rhs_chunk3697); if (failed) return ;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1231:3: ( (~ END )=>~ END )*
+            loop54:
             do {
-                int alt53=2;
-                int LA53_0 = input.LA(1);
-                if ( ((LA53_0>=ID && LA53_0<=RIGHT_SQUARE)||(LA53_0>=THEN && LA53_0<=77)) ) {
-                    alt53=1;
+                int alt54=2;
+                int LA54_0 = input.LA(1);
+                if ( ((LA54_0>=PACKAGE && LA54_0<=QUERY)||(LA54_0>=TEMPLATE && LA54_0<=76)) ) {
+                    alt54=1;
                 }
 
 
-                switch (alt53) {
+                switch (alt54) {
             	case 1 :
-            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1220:6: (~ END )=>~ END
+            	    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1232:6: (~ END )=>~ END
             	    {
-            	    if ( (input.LA(1)>=ID && input.LA(1)<=RIGHT_SQUARE)||(input.LA(1)>=THEN && input.LA(1)<=77) ) {
+            	    if ( (input.LA(1)>=PACKAGE && input.LA(1)<=QUERY)||(input.LA(1)>=TEMPLATE && input.LA(1)<=76) ) {
             	        input.consume();
             	        errorRecovery=false;failed=false;
             	    }
@@ -4945,7 +5450,7 @@
             	        if (backtracking>0) {failed=true; return ;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk3727);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk3709);    throw mse;
             	    }
 
             	    if ( backtracking==0 ) {
@@ -4958,7 +5463,7 @@
             	    break;
 
             	default :
-            	    break loop53;
+            	    break loop54;
                 }
             } while (true);
 
@@ -4972,7 +5477,7 @@
               		
             }
             loc=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_rhs_chunk3764); if (failed) return ;
+            match(input,END,FOLLOW_END_in_rhs_chunk3746); if (failed) return ;
             if ( backtracking==0 ) {
               
                                   // ignoring first line in the consequence
@@ -5005,177 +5510,454 @@
     // $ANTLR end rhs_chunk
 
 
-    // $ANTLR start word
-    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1251:1: word returns [String word] : ( ( ID )=>id= ID | ( 'import' )=> 'import' | ( 'use' )=> 'use' | ( RULE )=> RULE | ( 'query' )=> 'query' | ( 'salience' )=> 'salience' | ( 'no-loop' )=> 'no-loop' | ( WHEN )=> WHEN | ( THEN )=> THEN | ( END )=> END | str= STRING );
-    public String word() throws RecognitionException {   
-        String word = null;
+    // $ANTLR start name
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1262:1: name returns [String s] : ( ( ID )=>tok= ID | str= STRING ) ;
+    public String name() throws RecognitionException {   
+        String s = null;
 
-        Token id=null;
+        Token tok=null;
         Token str=null;
 
-        
-        		word = null;
-        	
         try {
-            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1255:4: ( ( ID )=>id= ID | ( 'import' )=> 'import' | ( 'use' )=> 'use' | ( RULE )=> RULE | ( 'query' )=> 'query' | ( 'salience' )=> 'salience' | ( 'no-loop' )=> 'no-loop' | ( WHEN )=> WHEN | ( THEN )=> THEN | ( END )=> END | str= STRING )
-            int alt54=11;
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1264:2: ( ( ( ID )=>tok= ID | str= STRING ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1264:2: ( ( ID )=>tok= ID | str= STRING )
+            {
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1264:2: ( ( ID )=>tok= ID | str= STRING )
+            int alt55=2;
+            int LA55_0 = input.LA(1);
+            if ( (LA55_0==ID) ) {
+                alt55=1;
+            }
+            else if ( (LA55_0==STRING) ) {
+                alt55=2;
+            }
+            else {
+                if (backtracking>0) {failed=true; return s;}
+                NoViableAltException nvae =
+                    new NoViableAltException("1264:2: ( ( ID )=>tok= ID | str= STRING )", 55, 0, input);
+
+                throw nvae;
+            }
+            switch (alt55) {
+                case 1 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1265:6: ( ID )=>tok= ID
+                    {
+                    tok=(Token)input.LT(1);
+                    match(input,ID,FOLLOW_ID_in_name3790); if (failed) return s;
+                    if ( backtracking==0 ) {
+                      
+                      	        s = tok.getText();
+                      	    
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1270:6: str= STRING
+                    {
+                    str=(Token)input.LT(1);
+                    match(input,STRING,FOLLOW_STRING_in_name3809); if (failed) return s;
+                    if ( backtracking==0 ) {
+                      
+                      	       s = getString( str );
+                      	    
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+       }
+        return s;
+    }
+    // $ANTLR end name
+
+
+    // $ANTLR start identifier
+    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1277:1: identifier returns [Token tok] : ( ( ID )=>t= ID | ( PACKAGE )=>t= PACKAGE | ( FUNCTION )=>t= FUNCTION | ( GLOBAL )=>t= GLOBAL | ( IMPORT )=>t= IMPORT | ( RULE )=>t= RULE | ( QUERY )=>t= QUERY | ( TEMPLATE )=>t= TEMPLATE | ( ATTRIBUTES )=>t= ATTRIBUTES | ( ENABLED )=>t= ENABLED | ( SALIENCE )=>t= SALIENCE | ( DURATION )=>t= DURATION | ( FROM )=>t= FROM | ( ACCUMULATE )=>t= ACCUMULATE | ( INIT )=>t= INIT | ( ACTION )=>t= ACTION | ( RESULT )=>t= RESULT | ( COLLECT )=>t= COLLECT | ( OR )=>t= OR | ( AND )=>t= AND | ( CONTAINS )=>t= CONTAINS | ( EXCLUDES )=>t= EXCLUDES | ( MATCHES )=>t= MATCHES | ( NULL )=>t= NULL | ( EXISTS )=>t= EXISTS | ( NOT )=>t= NOT | ( EVAL )=>t= EVAL | ( FORALL )=>t= FORALL | ( WHEN )=>t= WHEN | ( THEN )=>t= THEN | t= END ) ;
+    public Token identifier() throws RecognitionException {   
+        Token tok = null;
+
+        Token t=null;
+
+        try {
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1279:2: ( ( ( ID )=>t= ID | ( PACKAGE )=>t= PACKAGE | ( FUNCTION )=>t= FUNCTION | ( GLOBAL )=>t= GLOBAL | ( IMPORT )=>t= IMPORT | ( RULE )=>t= RULE | ( QUERY )=>t= QUERY | ( TEMPLATE )=>t= TEMPLATE | ( ATTRIBUTES )=>t= ATTRIBUTES | ( ENABLED )=>t= ENABLED | ( SALIENCE )=>t= SALIENCE | ( DURATION )=>t= DURATION | ( FROM )=>t= FROM | ( ACCUMULATE )=>t= ACCUMULATE | ( INIT )=>t= INIT | ( ACTION )=>t= ACTION | ( RESULT )=>t= RESULT | ( COLLECT )=>t= COLLECT | ( OR )=>t= OR | ( AND )=>t= AND | ( CONTAINS )=>t= CONTAINS | ( EXCLUDES )=>t= EXCLUDES | ( MATCHES )=>t= MATCHES | ( NULL )=>t= NULL | ( EXISTS )=>t= EXISTS | ( NOT )=>t= NOT | ( EVAL )=>t= EVAL | ( FORALL )=>t= FORALL | ( WHEN )=>t= WHEN | ( THEN )=>t= THEN | t= END ) )
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1279:2: ( ( ID )=>t= ID | ( PACKAGE )=>t= PACKAGE | ( FUNCTION )=>t= FUNCTION | ( GLOBAL )=>t= GLOBAL | ( IMPORT )=>t= IMPORT | ( RULE )=>t= RULE | ( QUERY )=>t= QUERY | ( TEMPLATE )=>t= TEMPLATE | ( ATTRIBUTES )=>t= ATTRIBUTES | ( ENABLED )=>t= ENABLED | ( SALIENCE )=>t= SALIENCE | ( DURATION )=>t= DURATION | ( FROM )=>t= FROM | ( ACCUMULATE )=>t= ACCUMULATE | ( INIT )=>t= INIT | ( ACTION )=>t= ACTION | ( RESULT )=>t= RESULT | ( COLLECT )=>t= COLLECT | ( OR )=>t= OR | ( AND )=>t= AND | ( CONTAINS )=>t= CONTAINS | ( EXCLUDES )=>t= EXCLUDES | ( MATCHES )=>t= MATCHES | ( NULL )=>t= NULL | ( EXISTS )=>t= EXISTS | ( NOT )=>t= NOT | ( EVAL )=>t= EVAL | ( FORALL )=>t= FORALL | ( WHEN )=>t= WHEN | ( THEN )=>t= THEN | t= END )
+            {
+            // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1279:2: ( ( ID )=>t= ID | ( PACKAGE )=>t= PACKAGE | ( FUNCTION )=>t= FUNCTION | ( GLOBAL )=>t= GLOBAL | ( IMPORT )=>t= IMPORT | ( RULE )=>t= RULE | ( QUERY )=>t= QUERY | ( TEMPLATE )=>t= TEMPLATE | ( ATTRIBUTES )=>t= ATTRIBUTES | ( ENABLED )=>t= ENABLED | ( SALIENCE )=>t= SALIENCE | ( DURATION )=>t= DURATION | ( FROM )=>t= FROM | ( ACCUMULATE )=>t= ACCUMULATE | ( INIT )=>t= INIT | ( ACTION )=>t= ACTION | ( RESULT )=>t= RESULT | ( COLLECT )=>t= COLLECT | ( OR )=>t= OR | ( AND )=>t= AND | ( CONTAINS )=>t= CONTAINS | ( EXCLUDES )=>t= EXCLUDES | ( MATCHES )=>t= MATCHES | ( NULL )=>t= NULL | ( EXISTS )=>t= EXISTS | ( NOT )=>t= NOT | ( EVAL )=>t= EVAL | ( FORALL )=>t= FORALL | ( WHEN )=>t= WHEN | ( THEN )=>t= THEN | t= END )
+            int alt56=31;
             switch ( input.LA(1) ) {
             case ID:
-                alt54=1;
+                alt56=1;
                 break;
-            case 31:
-                alt54=2;
+            case PACKAGE:
+                alt56=2;
                 break;
-            case 77:
-                alt54=3;
+            case FUNCTION:
+                alt56=3;
                 break;
+            case GLOBAL:
+                alt56=4;
+                break;
+            case IMPORT:
+                alt56=5;
+                break;
             case RULE:
-                alt54=4;
+                alt56=6;
                 break;
-            case 37:
-                alt54=5;
+            case QUERY:
+                alt56=7;
                 break;
-            case 44:
-                alt54=6;
+            case TEMPLATE:
+                alt56=8;
                 break;
-            case 45:
-                alt54=7;
+            case ATTRIBUTES:
+                alt56=9;
                 break;
+            case ENABLED:
+                alt56=10;
+                break;
+            case SALIENCE:
+                alt56=11;
+                break;
+            case DURATION:
+                alt56=12;
+                break;
+            case FROM:
+                alt56=13;
+                break;
+            case ACCUMULATE:
+                alt56=14;
+                break;
+            case INIT:
+                alt56=15;
+                break;
+            case ACTION:
+                alt56=16;
+                break;
+            case RESULT:
+                alt56=17;
+                break;
+            case COLLECT:
+                alt56=18;
+                break;
+            case OR:
+                alt56=19;
+                break;
+            case AND:
+                alt56=20;
+                break;
+            case CONTAINS:
+                alt56=21;
+                break;
+            case EXCLUDES:
+                alt56=22;
+                break;
+            case MATCHES:
+                alt56=23;
+                break;
+            case NULL:
+                alt56=24;
+                break;
+            case EXISTS:
+                alt56=25;
+                break;
+            case NOT:
+                alt56=26;
+                break;
+            case EVAL:
+                alt56=27;
+                break;
+            case FORALL:
+                alt56=28;
+                break;
             case WHEN:
-                alt54=8;
+                alt56=29;
                 break;
             case THEN:
-                alt54=9;
+                alt56=30;
                 break;
             case END:
-                alt54=10;
+                alt56=31;
                 break;
-            case STRING:
-                alt54=11;
-                break;
             default:
-                if (backtracking>0) {failed=true; return word;}
+                if (backtracking>0) {failed=true; return tok;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1251:1: word returns [String word] : ( ( ID )=>id= ID | ( 'import' )=> 'import' | ( 'use' )=> 'use' | ( RULE )=> RULE | ( 'query' )=> 'query' | ( 'salience' )=> 'salience' | ( 'no-loop' )=> 'no-loop' | ( WHEN )=> WHEN | ( THEN )=> THEN | ( END )=> END | str= STRING );", 54, 0, input);
+                    new NoViableAltException("1279:2: ( ( ID )=>t= ID | ( PACKAGE )=>t= PACKAGE | ( FUNCTION )=>t= FUNCTION | ( GLOBAL )=>t= GLOBAL | ( IMPORT )=>t= IMPORT | ( RULE )=>t= RULE | ( QUERY )=>t= QUERY | ( TEMPLATE )=>t= TEMPLATE | ( ATTRIBUTES )=>t= ATTRIBUTES | ( ENABLED )=>t= ENABLED | ( SALIENCE )=>t= SALIENCE | ( DURATION )=>t= DURATION | ( FROM )=>t= FROM | ( ACCUMULATE )=>t= ACCUMULATE | ( INIT )=>t= INIT | ( ACTION )=>t= ACTION | ( RESULT )=>t= RESULT | ( COLLECT )=>t= COLLECT | ( OR )=>t= OR | ( AND )=>t= AND | ( CONTAINS )=>t= CONTAINS | ( EXCLUDES )=>t= EXCLUDES | ( MATCHES )=>t= MATCHES | ( NULL )=>t= NULL | ( EXISTS )=>t= EXISTS | ( NOT )=>t= NOT | ( EVAL )=>t= EVAL | ( FORALL )=>t= FORALL | ( WHEN )=>t= WHEN | ( THEN )=>t= THEN | t= END )", 56, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt54) {
+            switch (alt56) {
                 case 1 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1255:4: ( ID )=>id= ID
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1279:10: ( ID )=>t= ID
                     {
-                    id=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_word3806); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word=id.getText(); 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,ID,FOLLOW_ID_in_identifier3847); if (failed) return tok;
 
                     }
                     break;
                 case 2 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1256:4: ( 'import' )=> 'import'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1280:4: ( PACKAGE )=>t= PACKAGE
                     {
-                    match(input,31,FOLLOW_31_in_word3818); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word="import"; 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,PACKAGE,FOLLOW_PACKAGE_in_identifier3860); if (failed) return tok;
 
                     }
                     break;
                 case 3 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1257:4: ( 'use' )=> 'use'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1281:4: ( FUNCTION )=>t= FUNCTION
                     {
-                    match(input,77,FOLLOW_77_in_word3827); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word="use"; 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,FUNCTION,FOLLOW_FUNCTION_in_identifier3867); if (failed) return tok;
 
                     }
                     break;
                 case 4 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1258:4: ( RULE )=> RULE
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1282:4: ( GLOBAL )=>t= GLOBAL
                     {
-                    match(input,RULE,FOLLOW_RULE_in_word3839); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word="rule"; 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,GLOBAL,FOLLOW_GLOBAL_in_identifier3874); if (failed) return tok;
 
                     }
                     break;
                 case 5 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1259:4: ( 'query' )=> 'query'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1283:4: ( IMPORT )=>t= IMPORT
                     {
-                    match(input,37,FOLLOW_37_in_word3852); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word="query"; 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,IMPORT,FOLLOW_IMPORT_in_identifier3881); if (failed) return tok;
 
                     }
                     break;
                 case 6 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1260:4: ( 'salience' )=> 'salience'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1284:4: ( RULE )=>t= RULE
                     {
-                    match(input,44,FOLLOW_44_in_word3862); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word="salience"; 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,RULE,FOLLOW_RULE_in_identifier3890); if (failed) return tok;
 
                     }
                     break;
                 case 7 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1261:5: ( 'no-loop' )=> 'no-loop'
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1285:4: ( QUERY )=>t= QUERY
                     {
-                    match(input,45,FOLLOW_45_in_word3870); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word="no-loop"; 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,QUERY,FOLLOW_QUERY_in_identifier3897); if (failed) return tok;
 
                     }
                     break;
                 case 8 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1262:4: ( WHEN )=> WHEN
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1286:17: ( TEMPLATE )=>t= TEMPLATE
                     {
-                    match(input,WHEN,FOLLOW_WHEN_in_word3878); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word="when"; 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,TEMPLATE,FOLLOW_TEMPLATE_in_identifier3918); if (failed) return tok;
 
                     }
                     break;
                 case 9 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1263:4: ( THEN )=> THEN
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1287:17: ( ATTRIBUTES )=>t= ATTRIBUTES
                     {
-                    match(input,THEN,FOLLOW_THEN_in_word3891); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word="then"; 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,ATTRIBUTES,FOLLOW_ATTRIBUTES_in_identifier3946); if (failed) return tok;
 
                     }
                     break;
                 case 10 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1264:4: ( END )=> END
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1288:17: ( ENABLED )=>t= ENABLED
                     {
-                    match(input,END,FOLLOW_END_in_word3904); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word="end"; 
-                    }
+                    t=(Token)input.LT(1);
+                    match(input,ENABLED,FOLLOW_ENABLED_in_identifier3972); if (failed) return tok;
 
                     }
                     break;
                 case 11 :
-                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1265:4: str= STRING
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1289:17: ( SALIENCE )=>t= SALIENCE
                     {
-                    str=(Token)input.LT(1);
-                    match(input,STRING,FOLLOW_STRING_in_word3920); if (failed) return word;
-                    if ( backtracking==0 ) {
-                       word=getString(str);
+                    t=(Token)input.LT(1);
+                    match(input,SALIENCE,FOLLOW_SALIENCE_in_identifier4001); if (failed) return tok;
+
                     }
+                    break;
+                case 12 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1290:17: ( DURATION )=>t= DURATION
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,DURATION,FOLLOW_DURATION_in_identifier4023); if (failed) return tok;
 
                     }
                     break;
+                case 13 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1291:17: ( FROM )=>t= FROM
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,FROM,FOLLOW_FROM_in_identifier4045); if (failed) return tok;
 
+                    }
+                    break;
+                case 14 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1292:17: ( ACCUMULATE )=>t= ACCUMULATE
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_identifier4074); if (failed) return tok;
+
+                    }
+                    break;
+                case 15 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1293:17: ( INIT )=>t= INIT
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,INIT,FOLLOW_INIT_in_identifier4096); if (failed) return tok;
+
+                    }
+                    break;
+                case 16 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1294:17: ( ACTION )=>t= ACTION
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,ACTION,FOLLOW_ACTION_in_identifier4125); if (failed) return tok;
+
+                    }
+                    break;
+                case 17 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1295:17: ( RESULT )=>t= RESULT
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,RESULT,FOLLOW_RESULT_in_identifier4154); if (failed) return tok;
+
+                    }
+                    break;
+                case 18 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1296:17: ( COLLECT )=>t= COLLECT
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,COLLECT,FOLLOW_COLLECT_in_identifier4183); if (failed) return tok;
+
+                    }
+                    break;
+                case 19 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1297:17: ( OR )=>t= OR
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,OR,FOLLOW_OR_in_identifier4212); if (failed) return tok;
+
+                    }
+                    break;
+                case 20 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1298:17: ( AND )=>t= AND
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,AND,FOLLOW_AND_in_identifier4241); if (failed) return tok;
+
+                    }
+                    break;
+                case 21 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1299:17: ( CONTAINS )=>t= CONTAINS
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,CONTAINS,FOLLOW_CONTAINS_in_identifier4270); if (failed) return tok;
+
+                    }
+                    break;
+                case 22 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1300:17: ( EXCLUDES )=>t= EXCLUDES
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,EXCLUDES,FOLLOW_EXCLUDES_in_identifier4292); if (failed) return tok;
+
+                    }
+                    break;
+                case 23 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1301:17: ( MATCHES )=>t= MATCHES
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,MATCHES,FOLLOW_MATCHES_in_identifier4314); if (failed) return tok;
+
+                    }
+                    break;
+                case 24 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1302:17: ( NULL )=>t= NULL
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,NULL,FOLLOW_NULL_in_identifier4343); if (failed) return tok;
+
+                    }
+                    break;
+                case 25 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1303:17: ( EXISTS )=>t= EXISTS
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,EXISTS,FOLLOW_EXISTS_in_identifier4372); if (failed) return tok;
+
+                    }
+                    break;
+                case 26 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1304:17: ( NOT )=>t= NOT
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,NOT,FOLLOW_NOT_in_identifier4401); if (failed) return tok;
+
+                    }
+                    break;
+                case 27 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1305:17: ( EVAL )=>t= EVAL
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,EVAL,FOLLOW_EVAL_in_identifier4430); if (failed) return tok;
+
+                    }
+                    break;
+                case 28 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1306:17: ( FORALL )=>t= FORALL
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,FORALL,FOLLOW_FORALL_in_identifier4459); if (failed) return tok;
+
+                    }
+                    break;
+                case 29 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1307:17: ( WHEN )=>t= WHEN
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,WHEN,FOLLOW_WHEN_in_identifier4497); if (failed) return tok;
+
+                    }
+                    break;
+                case 30 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1308:17: ( THEN )=>t= THEN
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,THEN,FOLLOW_THEN_in_identifier4529); if (failed) return tok;
+
+                    }
+                    break;
+                case 31 :
+                    // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1309:17: t= END
+                    {
+                    t=(Token)input.LT(1);
+                    match(input,END,FOLLOW_END_in_identifier4558); if (failed) return tok;
+
+                    }
+                    break;
+
             }
+
+            if ( backtracking==0 ) {
+              
+              	    tok = t;
+              	
+            }
+
+            }
+
         }
         catch (RecognitionException re) {
             reportError(re);
@@ -5183,20 +5965,51 @@
         }
         finally {
        }
-        return word;
+        return tok;
     }
-    // $ANTLR end word
+    // $ANTLR end identifier
 
-    // $ANTLR start synpred35
-    public void synpred35_fragment() throws RecognitionException {   
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: ( ( ID paren_chunk ) )
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: ( ID paren_chunk )
+    // $ANTLR start synpred4
+    public void synpred4_fragment() throws RecognitionException {   
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:204:4: ( import_statement )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:204:4: import_statement
         {
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: ( ID paren_chunk )
-        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:6: ID paren_chunk
+        pushFollow(FOLLOW_import_statement_in_synpred4114);
+        import_statement();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred4
+
+    // $ANTLR start synpred5
+    public void synpred5_fragment() throws RecognitionException {   
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:205:10: ( function_import_statement )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:205:10: function_import_statement
         {
-        match(input,ID,FOLLOW_ID_in_synpred351620); if (failed) return ;
-        pushFollow(FOLLOW_paren_chunk_in_synpred351624);
+        pushFollow(FOLLOW_function_import_statement_in_synpred5126);
+        function_import_statement();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred5
+
+    // $ANTLR start synpred36
+    public void synpred36_fragment() throws RecognitionException {   
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: ( ( ( identifier LEFT_PAREN )=> identifier paren_chunk ) )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: ( ( identifier LEFT_PAREN )=> identifier paren_chunk )
+        {
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:4: ( ( identifier LEFT_PAREN )=> identifier paren_chunk )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:632:6: ( identifier LEFT_PAREN )=> identifier paren_chunk
+        {
+        pushFollow(FOLLOW_identifier_in_synpred361591);
+        identifier();
+        _fsp--;
+        if (failed) return ;
+        pushFollow(FOLLOW_paren_chunk_in_synpred361595);
         paren_chunk();
         _fsp--;
         if (failed) return ;
@@ -5206,24 +6019,96 @@
 
         }
     }
-    // $ANTLR end synpred35
+    // $ANTLR end synpred36
 
-    // $ANTLR start synpred38
-    public void synpred38_fragment() throws RecognitionException {   
+    // $ANTLR start synpred37
+    public void synpred37_fragment() throws RecognitionException {   
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:644:6: ( identifier ~ LEFT_PAREN )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:644:8: identifier ~ LEFT_PAREN
+        {
+        pushFollow(FOLLOW_identifier_in_synpred371627);
+        identifier();
+        _fsp--;
+        if (failed) return ;
+        if ( (input.LA(1)>=PACKAGE && input.LA(1)<=OR)||(input.LA(1)>=RIGHT_PAREN && input.LA(1)<=76) ) {
+            input.consume();
+            errorRecovery=false;failed=false;
+        }
+        else {
+            if (backtracking>0) {failed=true; return ;}
+            MismatchedSetException mse =
+                new MismatchedSetException(null,input);
+            recoverFromMismatchedSet(input,mse,FOLLOW_set_in_synpred371629);    throw mse;
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred37
+
+    // $ANTLR start synpred40
+    public void synpred40_fragment() throws RecognitionException {   
         // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:672:6: ( LEFT_PAREN )
         // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:672:8: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred381765); if (failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred401745); if (failed) return ;
 
         }
     }
-    // $ANTLR end synpred38
+    // $ANTLR end synpred40
 
-    public boolean synpred35() {
+    // $ANTLR start synpred43
+    public void synpred43_fragment() throws RecognitionException {   
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:763:6: ( (OR|'||') fact )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:763:6: (OR|'||') fact
+        {
+        if ( input.LA(1)==OR||input.LA(1)==66 ) {
+            input.consume();
+            errorRecovery=false;failed=false;
+        }
+        else {
+            if (backtracking>0) {failed=true; return ;}
+            MismatchedSetException mse =
+                new MismatchedSetException(null,input);
+            recoverFromMismatchedSet(input,mse,FOLLOW_set_in_synpred432046);    throw mse;
+        }
+
+        pushFollow(FOLLOW_fact_in_synpred432063);
+        fact();
+        _fsp--;
+        if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred43
+
+    // $ANTLR start synpred71
+    public void synpred71_fragment() throws RecognitionException {   
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1139:14: ( ACCUMULATE )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1139:16: ACCUMULATE
+        {
+        match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_synpred713261); if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred71
+
+    // $ANTLR start synpred72
+    public void synpred72_fragment() throws RecognitionException {   
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1140:14: ( COLLECT )
+        // D:\\workspace\\jboss\\jbossrules\\drools-compiler\\src\\main\\resources\\org\\drools\\lang\\DRL.g:1140:16: COLLECT
+        {
+        match(input,COLLECT,FOLLOW_COLLECT_in_synpred723290); if (failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred72
+
+    public boolean synpred4() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred35_fragment(); // can never throw exception
+            synpred4_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -5233,11 +6118,11 @@
         failed=false;
         return success;
     }
-    public boolean synpred38() {
+    public boolean synpred72() {
         backtracking++;
         int start = input.mark();
         try {
-            synpred38_fragment(); // can never throw exception
+            synpred72_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -5247,29 +6132,2641 @@
         failed=false;
         return success;
     }
+    public boolean synpred37() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred37_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public boolean synpred43() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred43_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public boolean synpred5() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred5_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public boolean synpred36() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred36_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public boolean synpred71() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred71_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
+    public boolean synpred40() {
+        backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !failed;
+        input.rewind(start);
+        backtracking--;
+        failed=false;
+        return success;
+    }
 
 
+    protected DFA4 dfa4 = new DFA4(this);
     protected DFA8 dfa8 = new DFA8(this);
     protected DFA9 dfa9 = new DFA9(this);
+    public static final String DFA4_eotS =
+        "\u0390\uffff";
+    public static final String DFA4_eofS =
+        "\7\uffff\1\10\2\uffff\6\11\6\uffff\6\10\6\uffff\37\10\6\11\10\uffff"+
+        "\1\11\12\uffff\37\11\2\uffff\1\10\46\uffff\37\11\22\uffff\1\11\1"+
+        "\uffff\37\10\44\uffff\37\10\22\uffff\1\10\101\uffff\40\11\1\uffff"+
+        "\2\10\6\uffff\1\10\37\11\100\uffff\40\10\1\uffff\2\11\6\uffff\1"+
+        "\11\1\10\2\uffff\1\11\44\uffff\1\10\1\11\42\uffff\1\10\4\uffff\1"+
+        "\11\40\uffff\1\11\u009d\uffff\1\10\101\uffff";
+    public static final String DFA4_minS =
+        "\1\5\1\4\5\uffff\1\4\2\uffff\1\4\1\5\1\4\2\5\2\4\1\37\1\4\2\17\2"+
+        "\4\1\5\1\4\2\5\2\4\1\37\1\4\2\17\2\4\1\5\2\4\2\5\1\4\30\5\1\4\1"+
+        "\5\1\4\2\5\2\4\1\37\1\4\2\17\11\4\1\37\1\4\2\17\2\4\1\5\1\4\1\5"+
+        "\1\4\2\5\1\4\27\5\7\4\1\53\37\11\1\4\1\53\37\5\2\4\1\11\2\4\7\11"+
+        "\1\4\5\11\1\5\42\4\1\53\37\11\1\4\1\53\37\5\2\4\1\11\2\4\7\11\1"+
+        "\4\5\11\1\5\101\4\1\5\37\4\1\0\2\5\2\4\1\0\3\4\1\5\137\4\1\5\37"+
+        "\4\1\0\2\5\2\4\1\0\3\4\2\5\1\4\1\53\1\5\41\4\1\53\1\4\1\53\2\5\1"+
+        "\4\1\53\40\4\1\5\1\4\1\53\1\4\1\53\1\5\u0100\4";
+    public static final String DFA4_maxS =
+        "\1\13\1\62\5\uffff\1\77\2\uffff\6\77\1\62\1\41\1\62\2\41\1\62\6"+
+        "\77\6\75\45\77\6\75\2\76\1\77\1\100\2\76\2\62\1\41\1\62\2\41\1\62"+
+        "\37\77\2\76\1\77\1\100\2\76\1\62\1\53\37\75\1\62\1\53\37\75\1\62"+
+        "\6\75\1\101\3\75\1\101\1\114\1\101\5\75\1\76\37\77\2\62\1\53\37"+
+        "\75\1\62\1\53\37\75\1\62\6\75\1\101\3\75\1\101\1\114\1\101\5\75"+
+        "\40\76\1\62\37\76\1\62\1\37\37\77\1\0\2\75\1\101\1\114\1\0\1\114"+
+        "\2\101\1\75\37\77\37\76\1\62\37\76\1\62\1\37\37\77\1\0\2\75\1\101"+
+        "\1\114\1\0\1\114\2\101\1\75\1\37\1\62\1\53\1\75\40\114\1\62\1\53"+
+        "\1\62\1\53\2\37\1\62\1\53\40\114\1\75\1\62\1\53\1\62\1\53\1\37\37"+
+        "\76\1\62\1\76\37\114\37\76\1\62\37\76\1\62\37\76\1\62\36\114\1\76"+
+        "\1\114\37\76\1\62\37\76\1\62";
+    public static final String DFA4_acceptS =
+        "\2\uffff\1\3\1\4\1\5\1\6\1\7\1\uffff\1\1\1\2\u0386\uffff";
+    public static final String DFA4_specialS =
+        "\u01ab\uffff\1\2\4\uffff\1\0\u0083\uffff\1\3\4\uffff\1\1\u0156\uffff}>";
+    public static final String[] DFA4_transition = {
+        "\1\1\1\3\1\2\1\6\1\uffff\1\4\1\5",
+        "\2\10\1\7\7\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3"+
+        "\10\1\uffff\1\10\4\uffff\7\10",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "\1\11\1\14\1\12\1\13\1\16\1\11\1\17\1\15\2\11\3\uffff\1\11\1\uffff"+
+        "\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\4\uffff\7\11\12\uffff"+
+        "\3\10",
+        "",
+        "",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff"+
+        "\3\11",
+        "\4\11\1\uffff\2\11\23\uffff\1\10\35\uffff\3\11",
+        "\1\10\1\30\1\26\1\27\1\32\1\10\1\33\1\31\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff"+
+        "\3\11",
+        "\4\11\1\uffff\2\11\3\uffff\1\10\17\uffff\1\10\35\uffff\3\11",
+        "\4\11\1\uffff\2\11\3\uffff\1\10\17\uffff\1\10\35\uffff\3\11",
+        "\1\10\1\36\1\34\1\35\1\40\1\10\1\41\1\37\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff"+
+        "\3\11",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\4\uffff\7\11",
+        "\1\11\1\uffff\1\10",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\4\uffff\7\11",
+        "\1\11\17\uffff\1\11\1\uffff\1\10",
+        "\1\11\17\uffff\1\11\1\uffff\1\10",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\4\uffff\7\11",
+        "\1\51\1\42\1\44\1\43\1\47\1\100\1\45\1\46\1\76\1\52\3\uffff\1\53"+
+        "\1\uffff\1\54\5\uffff\1\55\1\57\1\60\1\61\1\62\1\63\1\50\1\64\2"+
+        "\uffff\1\66\1\70\1\67\1\uffff\1\71\4\uffff\1\65\1\56\1\72\1\73\1"+
+        "\74\1\75\1\77\12\uffff\3\10",
+        "\4\10\1\uffff\2\10\23\uffff\1\11\35\uffff\3\10",
+        "\1\11\1\103\1\101\1\102\1\105\1\11\1\106\1\104\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\4\uffff\7"+
+        "\11\12\uffff\3\10",
+        "\4\10\1\uffff\2\10\3\uffff\1\11\17\uffff\1\11\35\uffff\3\10",
+        "\4\10\1\uffff\2\10\3\uffff\1\11\17\uffff\1\11\35\uffff\3\10",
+        "\1\11\1\111\1\107\1\110\1\113\1\11\1\114\1\112\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\4\uffff\7"+
+        "\11\12\uffff\3\10",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\6\11\1\115\1\11\2\uffff"+
+        "\3\11\1\uffff\1\11\4\uffff\7\11\12\uffff\1\10",
+        "\1\116\35\uffff\1\10",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\6\11\1\117\1\11\2\uffff"+
+        "\3\11\1\uffff\1\11\4\uffff\7\11\12\uffff\1\10",
+        "\1\11\17\uffff\1\120\35\uffff\1\10",
+        "\1\11\17\uffff\1\121\35\uffff\1\10",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\6\11\1\122\1\11\2\uffff"+
+        "\3\11\1\uffff\1\11\4\uffff\7\11\12\uffff\1\10",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\4\uffff\7\10\12\uffff\3\10",
+        "\4\10\1\uffff\2\10\23\uffff\1\10\1\uffff\1\11\33\uffff\3\10",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\4\uffff\7\10\12\uffff\3\10",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\4\uffff\7\10\12\uffff\3\10",
+        "\4\10\1\uffff\2\10\3\uffff\1\10\17\uffff\1\10\1\uffff\1\11\33\uffff"+
+        "\3\10",
+        "\4\10\1\uffff\2\10\3\uffff\1\10\17\uffff\1\10\1\uffff\1\11\33\uffff"+
+        "\3\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\11\11\1\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\3\10",
+        "\1\133\1\136\1\134\1\135\1\140\1\170\1\141\1\137\1\166\1\142\3\uffff"+
+        "\1\143\1\uffff\1\144\5\uffff\1\145\1\147\1\150\1\151\1\152\1\153"+
+        "\1\132\1\154\2\uffff\1\156\1\160\1\157\1\uffff\1\161\4\uffff\1\155"+
+        "\1\146\1\162\1\163\1\164\1\165\1\167\12\uffff\3\11",
+        "\4\11\1\uffff\2\11\23\uffff\1\10\35\uffff\3\11",
+        "\1\10\1\30\1\26\1\27\1\32\1\10\1\33\1\31\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff"+
+        "\3\11",
+        "\4\11\1\uffff\2\11\3\uffff\1\10\17\uffff\1\10\35\uffff\3\11",
+        "\4\11\1\uffff\2\11\3\uffff\1\10\17\uffff\1\10\35\uffff\3\11",
+        "\1\10\1\36\1\34\1\35\1\40\1\10\1\41\1\37\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff"+
+        "\3\11",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\6\10\1\171\1\10\2\uffff"+
+        "\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff\1\11",
+        "\1\172\35\uffff\1\11",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\6\10\1\173\1\10\2\uffff"+
+        "\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff\1\11",
+        "\1\10\17\uffff\1\174\35\uffff\1\11",
+        "\1\10\17\uffff\1\175\35\uffff\1\11",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\6\10\1\176\1\10\2\uffff"+
+        "\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff\1\11",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\1\11\1"+
+        "\uffff\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1"+
+        "\uffff\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13"+
+        "\uffff\1\177",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\10\10\1\u00cc\1\u00c8\1\11\1\uffff\1\11\1\u00cb\1\uffff\1\u00c9"+
+        "\1\uffff\4\11\1\u00ca\7\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10"+
+        "\1\uffff\6\10\1\u00cd\13\uffff\1\10\1\uffff\1\11",
+        "\5\10\1\u00d3\4\10\3\uffff\1\10\1\uffff\1\10\5\uffff\6\10\1\u00ce"+
+        "\1\10\1\11\1\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff\2\10\1"+
+        "\u00cf\1\u00d0\1\u00d1\1\u00d2\1\10\13\uffff\1\10",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\6\10\1\u00d4\1\10\2\uffff"+
+        "\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\10",
+        "\1\u00d6\1\u00d9\1\u00d7\1\u00d8\1\u00db\1\u00f3\1\u00dc\1\u00da"+
+        "\1\u00f1\1\u00dd\3\uffff\1\u00de\1\uffff\1\u00df\5\uffff\1\u00e0"+
+        "\1\u00e2\1\u00e3\1\u00e4\1\u00e5\1\u00e6\1\u00d5\1\u00e7\2\uffff"+
+        "\1\u00e9\1\u00eb\1\u00ea\1\uffff\1\u00ec\4\uffff\1\u00e8\1\u00e1"+
+        "\1\u00ed\1\u00ee\1\u00ef\1\u00f0\1\u00f2",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\4\uffff\7\10",
+        "\1\10\1\uffff\1\11",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\4\uffff\7\10",
+        "\1\10\17\uffff\1\10\1\uffff\1\11",
+        "\1\10\17\uffff\1\10\1\uffff\1\11",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\4\uffff\7\10",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\11\10\1\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\4\uffff\7\11\12\uffff\3\11",
+        "\4\11\1\uffff\2\11\23\uffff\1\11\1\uffff\1\10\33\uffff\3\11",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\4\uffff\7\11\12\uffff\3\11",
+        "\4\11\1\uffff\2\11\3\uffff\1\11\17\uffff\1\11\1\uffff\1\10\33\uffff"+
+        "\3\11",
+        "\4\11\1\uffff\2\11\3\uffff\1\11\17\uffff\1\11\1\uffff\1\10\33\uffff"+
+        "\3\11",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\4\uffff\7\11\12\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\3\11",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\1\10\1"+
+        "\uffff\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1"+
+        "\uffff\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13"+
+        "\uffff\1\u00f5",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\10\11\1\u0142\1\u013e\1\10\1\uffff\1\10\1\u013f\1\uffff\1\u0140"+
+        "\1\uffff\4\10\1\u0141\7\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1\11"+
+        "\1\uffff\6\11\1\u0143\13\uffff\1\11\1\uffff\1\10",
+        "\5\11\1\u0149\4\11\3\uffff\1\11\1\uffff\1\11\5\uffff\6\11\1\u0144"+
+        "\1\11\1\10\1\uffff\3\11\1\uffff\1\11\2\uffff\1\11\1\uffff\2\11\1"+
+        "\u0145\1\u0146\1\u0147\1\u0148\1\11\13\uffff\1\11",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\6\11\1\u014a\1\11\2\uffff"+
+        "\3\11\1\uffff\1\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\11",
+        "\1\u014c\1\u014f\1\u014d\1\u014e\1\u0151\1\u0169\1\u0152\1\u0150"+
+        "\1\u0167\1\u0153\3\uffff\1\u0154\1\uffff\1\u0155\5\uffff\1\u0156"+
+        "\1\u0158\1\u0159\1\u015a\1\u015b\1\u015c\1\u014b\1\u015d\2\uffff"+
+        "\1\u015f\1\u0161\1\u0160\1\uffff\1\u0162\4\uffff\1\u015e\1\u0157"+
+        "\1\u0163\1\u0164\1\u0165\1\u0166\1\u0168",
+        "\1\u016a",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\u016c\1\u016f\1\u016d\1\u016e\1\u0171\1\u0189\1\u0172\1\u0170"+
+        "\1\u0187\1\u0173\3\uffff\1\u0174\1\uffff\1\u0175\5\uffff\1\u0176"+
+        "\1\u0178\1\u0179\1\u017a\1\u017b\1\u017c\1\u016b\1\u017d\2\uffff"+
+        "\1\u017f\1\u0181\1\u0180\1\uffff\1\u0182\4\uffff\1\u017e\1\u0177"+
+        "\1\u0183\1\u0184\1\u0185\1\u0186\1\u0188",
+        "\1\u018a",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u018b",
+        "\1\u018d\1\u0190\1\u018e\1\u018f\1\u0192\1\u01aa\1\u0193\1\u0191"+
+        "\1\u01a8\1\u0194\3\uffff\1\u0195\1\uffff\1\u0196\5\uffff\1\u0197"+
+        "\1\u0199\1\u019a\1\u019b\1\u019c\1\u019d\1\u018c\1\u019e\2\uffff"+
+        "\1\u01a0\1\u01a2\1\u01a1\1\uffff\1\u01a3\4\uffff\1\u019f\1\u0198"+
+        "\1\u01a4\1\u01a5\1\u01a6\1\u01a7\1\u01a9",
+        "\5\11\1\u01ab\4\11\3\uffff\1\11\1\uffff\1\11\5\uffff\6\11\1\117"+
+        "\1\11\2\uffff\3\11\1\uffff\1\11\4\uffff\7\11\12\uffff\1\10",
+        "\1\10\25\uffff\1\116\35\uffff\1\10",
+        "\5\11\1\u01ac\4\11\3\uffff\1\11\1\uffff\1\11\5\uffff\6\11\1\115"+
+        "\1\11\2\uffff\3\11\1\uffff\1\11\4\uffff\7\11\12\uffff\1\10",
+        "\5\11\1\u01ad\4\11\3\uffff\1\11\1\uffff\1\11\5\uffff\6\11\1\122"+
+        "\1\11\2\uffff\3\11\1\uffff\1\11\4\uffff\7\11\12\uffff\1\10",
+        "\1\10\5\uffff\1\11\17\uffff\1\120\35\uffff\1\10",
+        "\1\10\5\uffff\1\11\17\uffff\1\121\35\uffff\1\10",
+        "\1\10\25\uffff\1\10\35\uffff\1\10\3\uffff\1\11",
+        "\1\10\12\uffff\1\11\12\uffff\1\10\35\uffff\1\10",
+        "\1\10\12\uffff\1\11\12\uffff\1\10\35\uffff\1\10",
+        "\1\10\10\uffff\1\11\14\uffff\1\10\35\uffff\1\10",
+        "\1\10\25\uffff\1\u01ae\1\uffff\1\11\14\uffff\5\11\12\uffff\1\10"+
+        "\3\uffff\1\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\10\uffff\1\11\22\uffff\1\10\1\11"+
+        "\2\uffff\1\11",
+        "\1\10\25\uffff\1\u01b2\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\u01b3\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\1\10\25\uffff\1\10\1\uffff\1\11\33\uffff\1\10",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\10",
+        "\5\11\1\u01b4\4\11\3\uffff\1\11\1\uffff\1\11\5\uffff\6\11\1\u014a"+
+        "\1\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1\11\1\uffff\7\11\12\uffff"+
+        "\1\10\1\11",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\11\1\126\1\124\1\125\1\130\1\11\1\131\1\127\2\11\3\uffff\1\11"+
+        "\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1\11\2\uffff\1"+
+        "\11\1\uffff\7\11\12\uffff\1\10\1\123\1\10",
+        "\1\u01b6\1\u01b9\1\u01b7\1\u01b8\1\u01bb\1\u01d3\1\u01bc\1\u01ba"+
+        "\1\u01d1\1\u01bd\3\uffff\1\u01be\1\uffff\1\u01bf\5\uffff\1\u01c0"+
+        "\1\u01c2\1\u01c3\1\u01c4\1\u01c5\1\u01c6\1\u01b5\1\u01c7\2\uffff"+
+        "\1\u01c9\1\u01cb\1\u01ca\1\uffff\1\u01cc\4\uffff\1\u01c8\1\u01c1"+
+        "\1\u01cd\1\u01ce\1\u01cf\1\u01d0\1\u01d2",
+        "\1\u01d5\1\u01d8\1\u01d6\1\u01d7\1\u01da\1\u01f2\1\u01db\1\u01d9"+
+        "\1\u01f0\1\u01dc\3\uffff\1\u01dd\1\uffff\1\u01de\5\uffff\1\u01df"+
+        "\1\u01e1\1\u01e2\1\u01e3\1\u01e4\1\u01e5\1\u01d4\1\u01e6\2\uffff"+
+        "\1\u01e8\1\u01ea\1\u01e9\1\uffff\1\u01eb\4\uffff\1\u01e7\1\u01e0"+
+        "\1\u01ec\1\u01ed\1\u01ee\1\u01ef\1\u01f1",
+        "\1\u01f3",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\u01f5\1\u01f8\1\u01f6\1\u01f7\1\u01fa\1\u0212\1\u01fb\1\u01f9"+
+        "\1\u0210\1\u01fc\3\uffff\1\u01fd\1\uffff\1\u01fe\5\uffff\1\u01ff"+
+        "\1\u0201\1\u0202\1\u0203\1\u0204\1\u0205\1\u01f4\1\u0206\2\uffff"+
+        "\1\u0208\1\u020a\1\u0209\1\uffff\1\u020b\4\uffff\1\u0207\1\u0200"+
+        "\1\u020c\1\u020d\1\u020e\1\u020f\1\u0211",
+        "\1\u0213",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0214",
+        "\1\u0216\1\u0219\1\u0217\1\u0218\1\u021b\1\u0233\1\u021c\1\u021a"+
+        "\1\u0231\1\u021d\3\uffff\1\u021e\1\uffff\1\u021f\5\uffff\1\u0220"+
+        "\1\u0222\1\u0223\1\u0224\1\u0225\1\u0226\1\u0215\1\u0227\2\uffff"+
+        "\1\u0229\1\u022b\1\u022a\1\uffff\1\u022c\4\uffff\1\u0228\1\u0221"+
+        "\1\u022d\1\u022e\1\u022f\1\u0230\1\u0232",
+        "\5\10\1\u0234\4\10\3\uffff\1\10\1\uffff\1\10\5\uffff\6\10\1\173"+
+        "\1\10\2\uffff\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff\1\11",
+        "\1\11\25\uffff\1\172\35\uffff\1\11",
+        "\5\10\1\u0235\4\10\3\uffff\1\10\1\uffff\1\10\5\uffff\6\10\1\171"+
+        "\1\10\2\uffff\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff\1\11",
+        "\5\10\1\u0236\4\10\3\uffff\1\10\1\uffff\1\10\5\uffff\6\10\1\176"+
+        "\1\10\2\uffff\3\10\1\uffff\1\10\4\uffff\7\10\12\uffff\1\11",
+        "\1\11\5\uffff\1\10\17\uffff\1\174\35\uffff\1\11",
+        "\1\11\5\uffff\1\10\17\uffff\1\175\35\uffff\1\11",
+        "\1\11\25\uffff\1\11\35\uffff\1\11\3\uffff\1\10",
+        "\1\11\10\uffff\1\10\14\uffff\1\11\35\uffff\1\11",
+        "\1\11\12\uffff\1\10\12\uffff\1\11\35\uffff\1\11",
+        "\1\11\12\uffff\1\10\12\uffff\1\11\35\uffff\1\11",
+        "\1\11\25\uffff\1\u0237\1\uffff\1\10\14\uffff\5\10\12\uffff\1\11"+
+        "\3\uffff\1\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\10\uffff\1\10\22\uffff\1\11\1\10"+
+        "\2\uffff\1\10",
+        "\1\11\25\uffff\1\u023b\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\u023c\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\1\11\25\uffff\1\11\1\uffff\1\10\33\uffff\1\11",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\11",
+        "\5\10\1\u023d\4\10\3\uffff\1\10\1\uffff\1\10\5\uffff\6\10\1\u00d4"+
+        "\1\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff\7\10\12\uffff"+
+        "\1\11\1\10",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e\13\uffff"+
+        "\1\177",
+        "\1\u0082\1\u0085\1\u0083\1\u0084\1\u0087\1\u009f\1\u0088\1\u0086"+
+        "\1\u009d\1\u0089\3\uffff\1\u008a\1\uffff\1\u008b\5\uffff\1\u008c"+
+        "\1\u008e\1\u008f\1\u0090\1\u0091\1\u0092\1\u0081\1\u0093\2\uffff"+
+        "\1\u0095\1\u0097\1\u0096\1\uffff\1\u0098\2\uffff\1\u0080\1\uffff"+
+        "\1\u0094\1\u008d\1\u0099\1\u009a\1\u009b\1\u009c\1\u009e",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf\13\uffff"+
+        "\1\u00a0",
+        "\1\u00a3\1\u00a6\1\u00a4\1\u00a5\1\u00a8\1\u00c0\1\u00a9\1\u00a7"+
+        "\1\u00be\1\u00aa\3\uffff\1\u00ab\1\uffff\1\u00ac\5\uffff\1\u00ad"+
+        "\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00a2\1\u00b4\2\uffff"+
+        "\1\u00b6\1\u00b8\1\u00b7\1\uffff\1\u00b9\2\uffff\1\u00a1\1\uffff"+
+        "\1\u00b5\1\u00ae\1\u00ba\1\u00bb\1\u00bc\1\u00bd\1\u00bf",
+        "\4\11\1\10\2\11\23\uffff\1\10",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\12\uffff\1\11\1\u00c1\1\11",
+        "\1\uffff",
+        "\4\10\1\uffff\2\10\25\uffff\1\11\33\uffff\1\10",
+        "\4\10\1\uffff\2\10\23\uffff\1\11\35\uffff\1\u023e",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f\2\uffff"+
+        "\1\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\55\11",
+        "\1\uffff",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262\2\uffff"+
+        "\1\11",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264\2\uffff"+
+        "\1\11",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\u0266",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\10\1\22\1\20\1\21\1\24\1\10\1\25\1\23\2\10\3\uffff\1\10\1\uffff"+
+        "\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1\10\2\uffff\1\10\1\uffff"+
+        "\7\10\12\uffff\1\11\1\u00f4\1\11",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114\13\uffff"+
+        "\1\u00f5",
+        "\1\u00f8\1\u00fb\1\u00f9\1\u00fa\1\u00fd\1\u0115\1\u00fe\1\u00fc"+
+        "\1\u0113\1\u00ff\3\uffff\1\u0100\1\uffff\1\u0101\5\uffff\1\u0102"+
+        "\1\u0104\1\u0105\1\u0106\1\u0107\1\u0108\1\u00f7\1\u0109\2\uffff"+
+        "\1\u010b\1\u010d\1\u010c\1\uffff\1\u010e\2\uffff\1\u00f6\1\uffff"+
+        "\1\u010a\1\u0103\1\u010f\1\u0110\1\u0111\1\u0112\1\u0114",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135\13\uffff"+
+        "\1\u0116",
+        "\1\u0119\1\u011c\1\u011a\1\u011b\1\u011e\1\u0136\1\u011f\1\u011d"+
+        "\1\u0134\1\u0120\3\uffff\1\u0121\1\uffff\1\u0122\5\uffff\1\u0123"+
+        "\1\u0125\1\u0126\1\u0127\1\u0128\1\u0129\1\u0118\1\u012a\2\uffff"+
+        "\1\u012c\1\u012e\1\u012d\1\uffff\1\u012f\2\uffff\1\u0117\1\uffff"+
+        "\1\u012b\1\u0124\1\u0130\1\u0131\1\u0132\1\u0133\1\u0135",
+        "\4\10\1\11\2\10\23\uffff\1\11",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\12\uffff\1\10\1\u0137\1\10",
+        "\1\uffff",
+        "\4\11\1\uffff\2\11\25\uffff\1\10\33\uffff\1\11",
+        "\4\11\1\uffff\2\11\23\uffff\1\10\35\uffff\1\u0267",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268\2\uffff"+
+        "\1\10",
+        "\5\10\1\u0239\25\10\1\u023a\55\10",
+        "\1\uffff",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b\2\uffff"+
+        "\1\10",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d\2\uffff"+
+        "\1\10",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\u028f",
+        "\4\10\1\uffff\2\10\23\uffff\1\11",
+        "\1\u0291\1\u0294\1\u0292\1\u0293\1\u0296\1\u02ae\1\u0297\1\u0295"+
+        "\1\u02ac\1\u0298\3\uffff\1\u0299\1\uffff\1\u029a\5\uffff\1\u029b"+
+        "\1\u029d\1\u029e\1\u029f\1\u02a0\1\u02a1\1\u0290\1\u02a2\2\uffff"+
+        "\1\u02a4\1\u02a6\1\u02a5\1\uffff\1\u02a7\4\uffff\1\u02a3\1\u029c"+
+        "\1\u02a8\1\u02a9\1\u02aa\1\u02ab\1\u02ad",
+        "\1\u02af",
+        "\4\11\1\10\2\11\23\uffff\1\10\35\uffff\1\10",
+        "\1\u02b2\1\u02b5\1\u02b3\1\u02b4\1\u02b7\1\u02b0\1\u02b8\1\u02b6"+
+        "\1\u02cd\1\u02b9\3\11\1\u02ba\1\11\1\u02bb\5\11\1\u02bc\1\u02be"+
+        "\1\u02bf\1\u02c0\1\u02c1\1\u02c2\1\u02b1\1\u02c3\2\11\1\u02c5\1"+
+        "\u02c7\1\u02c6\1\11\1\u02c8\4\11\1\u02c4\1\u02bd\1\u02c9\1\u02ca"+
+        "\1\u02cb\1\u02cc\1\u02ce\32\11",
+        "\47\11\1\u02cf\41\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\5\11\1\u01b0\25\11\1\u01b1\35\11\1\u01af\17\11",
+        "\1\u02d1\1\u02d4\1\u02d2\1\u02d3\1\u02d6\1\u02ee\1\u02d7\1\u02d5"+
+        "\1\u02ec\1\u02d8\3\uffff\1\u02d9\1\uffff\1\u02da\5\uffff\1\u02db"+
+        "\1\u02dd\1\u02de\1\u02df\1\u02e0\1\u02e1\1\u02d0\1\u02e2\2\uffff"+
+        "\1\u02e4\1\u02e6\1\u02e5\1\uffff\1\u02e7\4\uffff\1\u02e3\1\u02dc"+
+        "\1\u02e8\1\u02e9\1\u02ea\1\u02eb\1\u02ed",
+        "\1\u02ef",
+        "\1\u02f1\1\u02f4\1\u02f2\1\u02f3\1\u02f6\1\u030e\1\u02f7\1\u02f5"+
+        "\1\u030c\1\u02f8\3\uffff\1\u02f9\1\uffff\1\u02fa\5\uffff\1\u02fb"+
+        "\1\u02fd\1\u02fe\1\u02ff\1\u0300\1\u0301\1\u02f0\1\u0302\2\uffff"+
+        "\1\u0304\1\u0306\1\u0305\1\uffff\1\u0307\4\uffff\1\u0303\1\u02fc"+
+        "\1\u0308\1\u0309\1\u030a\1\u030b\1\u030d",
+        "\1\u030f",
+        "\4\10\1\11\2\10\23\uffff\1\11",
+        "\4\11\1\uffff\2\11\23\uffff\1\10",
+        "\1\u0311\1\u0314\1\u0312\1\u0313\1\u0316\1\u032e\1\u0317\1\u0315"+
+        "\1\u032c\1\u0318\3\uffff\1\u0319\1\uffff\1\u031a\5\uffff\1\u031b"+
+        "\1\u031d\1\u031e\1\u031f\1\u0320\1\u0321\1\u0310\1\u0322\2\uffff"+
+        "\1\u0324\1\u0326\1\u0325\1\uffff\1\u0327\4\uffff\1\u0323\1\u031c"+
+        "\1\u0328\1\u0329\1\u032a\1\u032b\1\u032d",
+        "\1\u032f",
+        "\1\u0331\1\u0334\1\u0332\1\u0333\1\u0336\1\u034e\1\u0337\1\u0335"+
+        "\1\u034c\1\u0338\3\10\1\u0339\1\10\1\u033a\5\10\1\u033b\1\u033d"+
+        "\1\u033e\1\u033f\1\u0340\1\u0341\1\u0330\1\u0342\2\10\1\u0344\1"+
+        "\u0346\1\u0345\1\10\1\u0347\4\10\1\u0343\1\u033c\1\u0348\1\u0349"+
+        "\1\u034a\1\u034b\1\u034d\32\10",
+        "\47\10\1\u034f\41\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\5\10\1\u0239\25\10\1\u023a\35\10\1\u0238\17\10",
+        "\4\10\1\11\2\10\23\uffff\1\11\35\uffff\1\11",
+        "\1\u0351\1\u0354\1\u0352\1\u0353\1\u0356\1\u036e\1\u0357\1\u0355"+
+        "\1\u036c\1\u0358\3\uffff\1\u0359\1\uffff\1\u035a\5\uffff\1\u035b"+
+        "\1\u035d\1\u035e\1\u035f\1\u0360\1\u0361\1\u0350\1\u0362\2\uffff"+
+        "\1\u0364\1\u0366\1\u0365\1\uffff\1\u0367\4\uffff\1\u0363\1\u035c"+
+        "\1\u0368\1\u0369\1\u036a\1\u036b\1\u036d",
+        "\1\u036f",
+        "\1\u0371\1\u0374\1\u0372\1\u0373\1\u0376\1\u038e\1\u0377\1\u0375"+
+        "\1\u038c\1\u0378\3\uffff\1\u0379\1\uffff\1\u037a\5\uffff\1\u037b"+
+        "\1\u037d\1\u037e\1\u037f\1\u0380\1\u0381\1\u0370\1\u0382\2\uffff"+
+        "\1\u0384\1\u0386\1\u0385\1\uffff\1\u0387\4\uffff\1\u0383\1\u037c"+
+        "\1\u0388\1\u0389\1\u038a\1\u038b\1\u038d",
+        "\1\u038f",
+        "\4\11\1\10\2\11\23\uffff\1\10",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10\13\uffff\1\u023f",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0240\1\uffff\7\10",
+        "\1\10\1\u00c2\1\u00c4\1\u00c3\1\u00c7\1\10\1\u00c5\1\u00c6\2\10"+
+        "\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\2\uffff\3\10\1\uffff\1"+
+        "\10\2\uffff\1\10\1\uffff\7\10\13\uffff\1\10",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\13\11\1\u0242\16\11",
+        "\1\u0245\1\u0248\1\u0246\1\u0247\1\u024a\1\u0241\1\u024b\1\u0249"+
+        "\1\u0260\1\u024c\3\11\1\u024d\1\11\1\u024e\5\11\1\u024f\1\u0251"+
+        "\1\u0252\1\u0253\1\u0254\1\u0255\1\u0244\1\u0256\2\11\1\u0258\1"+
+        "\u025a\1\u0259\1\11\1\u025b\2\11\1\u0243\1\11\1\u0257\1\u0250\1"+
+        "\u025c\1\u025d\1\u025e\1\u025f\1\u0261\32\11",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10\13\uffff\1\u0262",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0263\1\uffff\7\10",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10\13\uffff\1\u0264",
+        "\12\10\3\uffff\1\10\1\uffff\1\10\5\uffff\10\10\1\11\1\uffff\3\10"+
+        "\1\uffff\1\10\2\uffff\1\u0265\1\uffff\7\10",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11\13\uffff\1\u0268",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u0269\1\uffff\7\11",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\13\10\1\u026a\16\10",
+        "\1\11\1\u0138\1\u013a\1\u0139\1\u013d\1\11\1\u013b\1\u013c\2\11"+
+        "\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\2\uffff\3\11\1\uffff\1"+
+        "\11\2\uffff\1\11\1\uffff\7\11\13\uffff\1\11",
+        "\1\u026d\1\u0270\1\u026e\1\u026f\1\u0272\1\u028a\1\u0273\1\u0271"+
+        "\1\u0288\1\u0274\3\10\1\u0275\1\10\1\u0276\5\10\1\u0277\1\u0279"+
+        "\1\u027a\1\u027b\1\u027c\1\u027d\1\u026c\1\u027e\2\10\1\u0280\1"+
+        "\u0282\1\u0281\1\10\1\u0283\2\10\1\u026b\1\10\1\u027f\1\u0278\1"+
+        "\u0284\1\u0285\1\u0286\1\u0287\1\u0289\32\10",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11\13\uffff\1\u028b",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028c\1\uffff\7\11",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11\13\uffff\1\u028d",
+        "\12\11\3\uffff\1\11\1\uffff\1\11\5\uffff\10\11\1\10\1\uffff\3\11"+
+        "\1\uffff\1\11\2\uffff\1\u028e\1\uffff\7\11"
+    };
+
+    class DFA4 extends DFA {
+        public DFA4(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 4;
+            this.eot = DFA.unpackEncodedString(DFA4_eotS);
+            this.eof = DFA.unpackEncodedString(DFA4_eofS);
+            this.min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS);
+            this.max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS);
+            this.accept = DFA.unpackEncodedString(DFA4_acceptS);
+            this.special = DFA.unpackEncodedString(DFA4_specialS);
+            int numStates = DFA4_transition.length;
+            this.transition = new short[numStates][];
+            for (int i=0; i<numStates; i++) {
+                transition[i] = DFA.unpackEncodedString(DFA4_transition[i]);
+            }
+        }
+        public String getDescription() {
+            return "204:2: ( ( import_statement )=> import_statement | ( function_import_statement )=> function_import_statement | ( global )=> global | ( function )=> function | ( template )=>t= template | ( rule )=>r= rule | q= query )";
+        }
+        public int specialStateTransition(int s) throws NoViableAltException {
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred4()) ) {s = 8;}
+
+                        else if ( (synpred5()) ) {s = 9;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred4()) ) {s = 8;}
+
+                        else if ( (synpred5()) ) {s = 9;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred4()) ) {s = 8;}
+
+                        else if ( (synpred5()) ) {s = 9;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred4()) ) {s = 8;}
+
+                        else if ( (synpred5()) ) {s = 9;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (backtracking>0) {failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 4, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
     public static final String DFA8_eotS =
         "\6\uffff";
     public static final String DFA8_eofS =
         "\6\uffff";
     public static final String DFA8_minS =
-        "\2\4\1\uffff\1\20\1\uffff\1\4";
+        "\2\4\2\uffff\1\53\1\4";
     public static final String DFA8_maxS =
-        "\1\4\1\44\1\uffff\1\20\1\uffff\1\44";
+        "\1\62\1\100\2\uffff\1\53\1\100";
     public static final String DFA8_acceptS =
-        "\2\uffff\1\1\1\uffff\1\2\1\uffff";
+        "\2\uffff\1\2\1\1\2\uffff";
     public static final String DFA8_specialS =
         "\6\uffff}>";
     public static final String[] DFA8_transition = {
-        "\1\1",
-        "\1\2\6\uffff\1\4\3\uffff\1\3\21\uffff\1\2\2\uffff\1\4",
+        "\12\2\3\uffff\1\2\1\uffff\1\2\5\uffff\6\2\1\1\1\2\2\uffff\3\2\1"+
+        "\uffff\1\2\4\uffff\7\2",
+        "\12\3\3\uffff\1\3\1\uffff\1\3\5\uffff\10\3\1\uffff\1\2\3\3\1\uffff"+
+        "\1\3\2\uffff\1\4\1\uffff\7\3\13\uffff\1\3\1\uffff\1\2",
         "",
+        "",
         "\1\5",
-        "",
-        "\1\2\6\uffff\1\4\3\uffff\1\3\24\uffff\1\4"
+        "\12\3\3\uffff\1\3\1\uffff\1\3\5\uffff\10\3\1\uffff\1\2\3\3\1\uffff"+
+        "\1\3\2\uffff\1\4\1\uffff\7\3\15\uffff\1\2"
     };
 
     class DFA8 extends DFA {
@@ -5297,20 +8794,23 @@
     public static final String DFA9_eofS =
         "\6\uffff";
     public static final String DFA9_minS =
-        "\2\4\1\20\2\uffff\1\4";
+        "\2\4\1\uffff\1\53\1\uffff\1\4";
     public static final String DFA9_maxS =
-        "\1\4\1\44\1\20\2\uffff\1\44";
+        "\1\62\1\100\1\uffff\1\53\1\uffff\1\100";
     public static final String DFA9_acceptS =
-        "\3\uffff\1\2\1\1\1\uffff";
+        "\2\uffff\1\2\1\uffff\1\1\1\uffff";
     public static final String DFA9_specialS =
         "\6\uffff}>";
     public static final String[] DFA9_transition = {
-        "\1\1",
-        "\1\4\6\uffff\1\3\3\uffff\1\2\21\uffff\1\4\2\uffff\1\3",
+        "\12\2\3\uffff\1\2\1\uffff\1\2\5\uffff\6\2\1\1\1\2\2\uffff\3\2\1"+
+        "\uffff\1\2\4\uffff\7\2",
+        "\12\4\3\uffff\1\4\1\uffff\1\4\5\uffff\10\4\1\uffff\1\2\3\4\1\uffff"+
+        "\1\4\2\uffff\1\3\1\uffff\7\4\13\uffff\1\4\1\uffff\1\2",
+        "",
         "\1\5",
         "",
-        "",
-        "\1\4\6\uffff\1\3\3\uffff\1\2\24\uffff\1\3"
+        "\12\4\3\uffff\1\4\1\uffff\1\4\5\uffff\10\4\1\uffff\1\2\3\4\1\uffff"+
+        "\1\4\2\uffff\1\3\1\uffff\7\4\15\uffff\1\2"
     };
 
     class DFA9 extends DFA {
@@ -5335,9 +8835,9 @@
     }
  
 
-    public static final BitSet FOLLOW_29_in_opt_semicolon46 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prolog_in_compilation_unit58 = new BitSet(new long[]{0x0000006980000020L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit65 = new BitSet(new long[]{0x0000006980000022L});
+    public static final BitSet FOLLOW_61_in_opt_semicolon46 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prolog_in_compilation_unit58 = new BitSet(new long[]{0x0000000000000DE0L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit65 = new BitSet(new long[]{0x0000000000000DE2L});
     public static final BitSet FOLLOW_package_statement_in_prolog90 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_statement114 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_function_import_statement_in_statement126 = new BitSet(new long[]{0x0000000000000002L});
@@ -5346,247 +8846,271 @@
     public static final BitSet FOLLOW_template_in_statement152 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_rule_in_statement161 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_query_in_statement173 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_30_in_package_statement202 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_dotted_name_in_package_statement206 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_PACKAGE_in_package_statement202 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_dotted_name_in_package_statement206 = new BitSet(new long[]{0x2000000000000002L});
     public static final BitSet FOLLOW_opt_semicolon_in_package_statement208 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_31_in_import_statement240 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_import_name_in_import_statement263 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_IMPORT_in_import_statement240 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_import_name_in_import_statement263 = new BitSet(new long[]{0x2000000000000002L});
     public static final BitSet FOLLOW_opt_semicolon_in_import_statement266 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_31_in_function_import_statement292 = new BitSet(new long[]{0x0000000100000000L});
-    public static final BitSet FOLLOW_32_in_function_import_statement294 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement317 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_IMPORT_in_function_import_statement292 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_FUNCTION_in_function_import_statement294 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement317 = new BitSet(new long[]{0x2000000000000002L});
     public static final BitSet FOLLOW_opt_semicolon_in_function_import_statement320 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name348 = new BitSet(new long[]{0x0000000600000002L});
-    public static final BitSet FOLLOW_33_in_import_name360 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_import_name364 = new BitSet(new long[]{0x0000000600000002L});
-    public static final BitSet FOLLOW_34_in_import_name388 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_global422 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_dotted_name_in_global426 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_global430 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_identifier_in_import_name348 = new BitSet(new long[]{0xC000000000000002L});
+    public static final BitSet FOLLOW_62_in_import_name360 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_import_name364 = new BitSet(new long[]{0xC000000000000002L});
+    public static final BitSet FOLLOW_63_in_import_name388 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GLOBAL_in_global422 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_dotted_name_in_global426 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_global430 = new BitSet(new long[]{0x2000000000000002L});
     public static final BitSet FOLLOW_opt_semicolon_in_global432 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_32_in_function459 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_dotted_name_in_function464 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_function470 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_function479 = new BitSet(new long[]{0x0000000000000810L});
-    public static final BitSet FOLLOW_dotted_name_in_function489 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_argument_in_function495 = new BitSet(new long[]{0x0000001000000800L});
-    public static final BitSet FOLLOW_36_in_function509 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_dotted_name_in_function514 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_argument_in_function520 = new BitSet(new long[]{0x0000001000000800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_function544 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_FUNCTION_in_function459 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_dotted_name_in_function464 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_function470 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_function479 = new BitSet(new long[]{0x0007F0BDFE0A3FF0L});
+    public static final BitSet FOLLOW_dotted_name_in_function489 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_argument_in_function495 = new BitSet(new long[]{0x0000000400000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_function509 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_dotted_name_in_function514 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_argument_in_function520 = new BitSet(new long[]{0x0000000400000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_function544 = new BitSet(new long[]{0x0000010000000000L});
     public static final BitSet FOLLOW_curly_chunk_in_function550 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_query581 = new BitSet(new long[]{0x00003020800600F0L,0x0000000000002000L});
-    public static final BitSet FOLLOW_word_in_query585 = new BitSet(new long[]{0x0000000000020410L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query599 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_QUERY_in_query581 = new BitSet(new long[]{0x0000000080008000L});
+    public static final BitSet FOLLOW_name_in_query585 = new BitSet(new long[]{0x0003C00280000200L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query599 = new BitSet(new long[]{0x0000000000000200L});
     public static final BitSet FOLLOW_END_in_query614 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_38_in_template640 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_template644 = new BitSet(new long[]{0x0000000020000010L});
-    public static final BitSet FOLLOW_opt_semicolon_in_template646 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_template_slot_in_template661 = new BitSet(new long[]{0x0000000000020010L});
-    public static final BitSet FOLLOW_END_in_template676 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_TEMPLATE_in_template640 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_template644 = new BitSet(new long[]{0x2000000080000000L});
+    public static final BitSet FOLLOW_opt_semicolon_in_template646 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_template_slot_in_template661 = new BitSet(new long[]{0x0000000080000200L});
+    public static final BitSet FOLLOW_END_in_template676 = new BitSet(new long[]{0x2000000000000002L});
     public static final BitSet FOLLOW_opt_semicolon_in_template678 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dotted_name_in_template_slot710 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_template_slot714 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_dotted_name_in_template_slot710 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_template_slot714 = new BitSet(new long[]{0x2000000000000002L});
     public static final BitSet FOLLOW_opt_semicolon_in_template_slot716 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RULE_in_rule747 = new BitSet(new long[]{0x00003020800600F0L,0x0000000000002000L});
-    public static final BitSet FOLLOW_word_in_rule751 = new BitSet(new long[]{0x0003FF1000040040L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule760 = new BitSet(new long[]{0x0000000000040040L});
-    public static final BitSet FOLLOW_WHEN_in_rule769 = new BitSet(new long[]{0x0000008000040410L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_39_in_rule771 = new BitSet(new long[]{0x0000000000040410L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_rule789 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_RULE_in_rule747 = new BitSet(new long[]{0x0000000080008000L});
+    public static final BitSet FOLLOW_name_in_rule751 = new BitSet(new long[]{0x0004000003EB7000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule760 = new BitSet(new long[]{0x0004000000001000L});
+    public static final BitSet FOLLOW_WHEN_in_rule769 = new BitSet(new long[]{0x0007C00280000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_rule771 = new BitSet(new long[]{0x0007C00280000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_rule789 = new BitSet(new long[]{0x0004000000000000L});
     public static final BitSet FOLLOW_rhs_chunk_in_rule810 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_40_in_rule_attributes831 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_39_in_rule_attributes833 = new BitSet(new long[]{0x0003FE1000000002L});
-    public static final BitSet FOLLOW_36_in_rule_attributes842 = new BitSet(new long[]{0x0003FE0000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes847 = new BitSet(new long[]{0x0003FE1000000002L});
+    public static final BitSet FOLLOW_ATTRIBUTES_in_rule_attributes831 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_rule_attributes833 = new BitSet(new long[]{0x0000000003EB4002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_rule_attributes842 = new BitSet(new long[]{0x0000000003EB4000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes847 = new BitSet(new long[]{0x0000000003EB4002L,0x0000000000000001L});
     public static final BitSet FOLLOW_salience_in_rule_attribute888 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_no_loop_in_rule_attribute898 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_agenda_group_in_rule_attribute909 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_duration_in_rule_attribute922 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_activation_group_in_rule_attribute936 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_auto_focus_in_rule_attribute947 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute982 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute992 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1026 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_date_effective1058 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1062 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_42_in_date_expires1093 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1097 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_43_in_enabled1130 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1134 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_enabled1136 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_44_in_salience1178 = new BitSet(new long[]{0x0000000000000200L});
-    public static final BitSet FOLLOW_INT_in_salience1182 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_salience1184 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_45_in_no_loop1219 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_no_loop1221 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_45_in_no_loop1246 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1250 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_no_loop1252 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_46_in_auto_focus1298 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_auto_focus1300 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_46_in_auto_focus1325 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1329 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_auto_focus1331 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_47_in_activation_group1373 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1377 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_activation_group1379 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_48_in_agenda_group1408 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1412 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_agenda_group1414 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_49_in_duration1446 = new BitSet(new long[]{0x0000000000000200L});
-    public static final BitSet FOLLOW_INT_in_duration1450 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1476 = new BitSet(new long[]{0x0000000000000412L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs1511 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_column1539 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_column1548 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_50_in_from_statement1573 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_from_source_in_from_statement1577 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source1620 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source1624 = new BitSet(new long[]{0x0000000200000002L});
-    public static final BitSet FOLLOW_ID_in_from_source1657 = new BitSet(new long[]{0x0000000200000002L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source1680 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_33_in_expression_chain1705 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_expression_chain1709 = new BitSet(new long[]{0x0000000200008402L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain1740 = new BitSet(new long[]{0x0000000200000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain1773 = new BitSet(new long[]{0x0000000200000002L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain1793 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_50_in_accumulate_statement1834 = new BitSet(new long[]{0x0008000000000000L});
-    public static final BitSet FOLLOW_51_in_accumulate_statement1836 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement1846 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_lhs_column_in_accumulate_statement1850 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_36_in_accumulate_statement1852 = new BitSet(new long[]{0x0010000000000000L});
-    public static final BitSet FOLLOW_52_in_accumulate_statement1861 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1865 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_36_in_accumulate_statement1867 = new BitSet(new long[]{0x0020000000000000L});
-    public static final BitSet FOLLOW_53_in_accumulate_statement1876 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1880 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_36_in_accumulate_statement1882 = new BitSet(new long[]{0x0040000000000000L});
-    public static final BitSet FOLLOW_54_in_accumulate_statement1891 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1895 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement1897 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_50_in_collect_statement1940 = new BitSet(new long[]{0x0080000000000000L});
-    public static final BitSet FOLLOW_55_in_collect_statement1942 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement1952 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_lhs_column_in_collect_statement1956 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement1958 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_fact_binding1992 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_39_in_fact_binding1994 = new BitSet(new long[]{0x0000000000000410L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_binding2007 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression2039 = new BitSet(new long[]{0x0000000000000410L});
-    public static final BitSet FOLLOW_fact_expression_in_paren_in_fact_expression2043 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression2046 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_expression2057 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression_in_paren2088 = new BitSet(new long[]{0x0000000000000410L});
-    public static final BitSet FOLLOW_fact_expression_in_paren_in_fact_expression_in_paren2092 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression_in_paren2094 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_expression_in_paren2105 = new BitSet(new long[]{0x0300000000000002L});
-    public static final BitSet FOLLOW_set_in_fact_expression_in_paren2118 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_fact_in_fact_expression_in_paren2135 = new BitSet(new long[]{0x0300000000000002L});
-    public static final BitSet FOLLOW_dotted_name_in_fact2174 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact2187 = new BitSet(new long[]{0x0000000000000C10L});
-    public static final BitSet FOLLOW_constraints_in_fact2197 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact2210 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints2231 = new BitSet(new long[]{0x0000001000000002L});
-    public static final BitSet FOLLOW_predicate_in_constraints2234 = new BitSet(new long[]{0x0000001000000002L});
-    public static final BitSet FOLLOW_36_in_constraints2242 = new BitSet(new long[]{0x0000000000000410L});
-    public static final BitSet FOLLOW_constraint_in_constraints2245 = new BitSet(new long[]{0x0000001000000002L});
-    public static final BitSet FOLLOW_predicate_in_constraints2248 = new BitSet(new long[]{0x0000001000000002L});
-    public static final BitSet FOLLOW_ID_in_constraint2277 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_39_in_constraint2279 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_constraint2300 = new BitSet(new long[]{0xF000000000000002L,0x000000000000003FL});
-    public static final BitSet FOLLOW_constraint_expression_in_constraint2318 = new BitSet(new long[]{0x0C00000000000002L});
-    public static final BitSet FOLLOW_set_in_constraint2340 = new BitSet(new long[]{0xE000000000000000L,0x000000000000003FL});
-    public static final BitSet FOLLOW_constraint_expression_in_constraint2359 = new BitSet(new long[]{0x0C00000000000002L});
-    public static final BitSet FOLLOW_60_in_constraint2387 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_predicate_in_constraint2389 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_set_in_constraint_expression2426 = new BitSet(new long[]{0x0000000000001790L,0x0000000000000040L});
-    public static final BitSet FOLLOW_ID_in_constraint_expression2493 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enum_constraint_in_constraint_expression2509 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_constraint_expression2532 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_retval_constraint_in_constraint_expression2546 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint2585 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint2596 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2609 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint2620 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_70_in_literal_constraint2632 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint2663 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_enum_constraint2665 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_enum_constraint2669 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_predicate2691 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk2738 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk2754 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2778 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk2814 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk2864 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk2880 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk2904 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk2940 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk3001 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk3017 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_square_chunk_in_square_chunk3041 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk3077 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint3122 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3155 = new BitSet(new long[]{0x0300000000000002L});
-    public static final BitSet FOLLOW_set_in_lhs_or3164 = new BitSet(new long[]{0x0000000000000410L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or3174 = new BitSet(new long[]{0x0300000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3210 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000180L});
-    public static final BitSet FOLLOW_set_in_lhs_and3219 = new BitSet(new long[]{0x0000000000000410L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3229 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000180L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3266 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3274 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3282 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_unary3290 = new BitSet(new long[]{0x0004000020000002L});
-    public static final BitSet FOLLOW_from_statement_in_lhs_unary3310 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_accumulate_statement_in_lhs_unary3332 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_collect_statement_in_lhs_unary3353 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary3378 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary3386 = new BitSet(new long[]{0x0000000000000410L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_lhs_in_lhs_unary3390 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary3392 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary3402 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_73_in_lhs_exist3426 = new BitSet(new long[]{0x0000000000000410L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3429 = new BitSet(new long[]{0x0000000000000410L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3433 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3435 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3441 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_74_in_lhs_not3471 = new BitSet(new long[]{0x0000000000000410L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3474 = new BitSet(new long[]{0x0000000000000410L,0x0000000000001E00L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not3478 = new BitSet(new long[]{0x0000000000000800L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3481 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_not3487 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_75_in_lhs_eval3515 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3519 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_76_in_lhs_forall3547 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall3549 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_forall3553 = new BitSet(new long[]{0x0000001000000010L});
-    public static final BitSet FOLLOW_36_in_lhs_forall3567 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_lhs_column_in_lhs_forall3573 = new BitSet(new long[]{0x0000001000000810L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall3586 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dotted_name3612 = new BitSet(new long[]{0x0000000200008002L});
-    public static final BitSet FOLLOW_33_in_dotted_name3618 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_ID_in_dotted_name3622 = new BitSet(new long[]{0x0000000200008002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name3631 = new BitSet(new long[]{0x0000000000010000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name3633 = new BitSet(new long[]{0x0000000000008002L});
-    public static final BitSet FOLLOW_ID_in_argument3663 = new BitSet(new long[]{0x0000000000008002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument3669 = new BitSet(new long[]{0x0000000000010000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument3671 = new BitSet(new long[]{0x0000000000008002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk3715 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_set_in_rhs_chunk3727 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000003FFFL});
-    public static final BitSet FOLLOW_END_in_rhs_chunk3764 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_word3806 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_31_in_word3818 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_77_in_word3827 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RULE_in_word3839 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_word3852 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_44_in_word3862 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_45_in_word3870 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_word3878 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_word3891 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_END_in_word3904 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_word3920 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_synpred351620 = new BitSet(new long[]{0x0000000000000400L});
-    public static final BitSet FOLLOW_paren_chunk_in_synpred351624 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred381765 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute964 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute974 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute990 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DATE_EFFECTIVE_in_date_effective1022 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1026 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DATE_EXPIRES_in_date_expires1057 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1061 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ENABLED_in_enabled1094 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1098 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_enabled1100 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SALIENCE_in_salience1142 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_INT_in_salience1146 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_salience1148 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NO_LOOP_in_no_loop1183 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_no_loop1185 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NO_LOOP_in_no_loop1210 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1214 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_no_loop1216 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AUTO_FOCUS_in_auto_focus1262 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_auto_focus1264 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AUTO_FOCUS_in_auto_focus1289 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1293 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_auto_focus1295 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACTIVATION_GROUP_in_activation_group1337 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1341 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_activation_group1343 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AGENDA_GROUP_in_agenda_group1372 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1376 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_agenda_group1378 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DURATION_in_duration1410 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_INT_in_duration1414 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block1440 = new BitSet(new long[]{0x0003C00280000002L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs1475 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_column1503 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_column1512 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_from_statement1539 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_from_source1591 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source1595 = new BitSet(new long[]{0x4000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_from_source1638 = new BitSet(new long[]{0x4000000000000002L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source1660 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_62_in_expression_chain1685 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_expression_chain1689 = new BitSet(new long[]{0x4000040200000002L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain1720 = new BitSet(new long[]{0x4000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain1753 = new BitSet(new long[]{0x4000000000000002L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain1773 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement1814 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement1824 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_lhs_column_in_accumulate_statement1828 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_accumulate_statement1830 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_INIT_in_accumulate_statement1839 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1843 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_accumulate_statement1845 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_ACTION_in_accumulate_statement1854 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1858 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_accumulate_statement1860 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_RESULT_in_accumulate_statement1869 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_statement1873 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement1875 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement1918 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement1928 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_lhs_column_in_collect_statement1932 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement1934 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_fact_binding1968 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_fact_binding1970 = new BitSet(new long[]{0x0000000280000000L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_binding1983 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_expression2015 = new BitSet(new long[]{0x0000000280000000L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2019 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_expression2022 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2033 = new BitSet(new long[]{0x0000000100000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_set_in_fact_expression2046 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_fact_in_fact_expression2063 = new BitSet(new long[]{0x0000000100000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_dotted_name_in_fact2105 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact2118 = new BitSet(new long[]{0x0007F0BFFE0A3FF0L});
+    public static final BitSet FOLLOW_constraints_in_fact2128 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact2141 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints2162 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_predicate_in_constraints2165 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_constraints2173 = new BitSet(new long[]{0x0007F0BBFE0A3FF0L});
+    public static final BitSet FOLLOW_constraint_in_constraints2176 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_predicate_in_constraints2179 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_ID_in_constraint2208 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_constraint2210 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_constraint2231 = new BitSet(new long[]{0x0000003800000002L,0x0000000000000FE0L});
+    public static final BitSet FOLLOW_constraint_expression_in_constraint2249 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000018L});
+    public static final BitSet FOLLOW_set_in_constraint2271 = new BitSet(new long[]{0x0000003800000000L,0x0000000000000FC0L});
+    public static final BitSet FOLLOW_constraint_expression_in_constraint2290 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000018L});
+    public static final BitSet FOLLOW_69_in_constraint2318 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_predicate_in_constraint2320 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_set_in_constraint_expression2357 = new BitSet(new long[]{0x000000C280148000L});
+    public static final BitSet FOLLOW_ID_in_constraint_expression2424 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enum_constraint_in_constraint_expression2440 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_constraint_expression2463 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_retval_constraint_in_constraint_expression2477 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint2516 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint2527 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint2540 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint2551 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint2563 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enum_constraint2598 = new BitSet(new long[]{0x4000000000000000L});
+    public static final BitSet FOLLOW_62_in_enum_constraint2604 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_enum_constraint2608 = new BitSet(new long[]{0x4000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_predicate2633 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk2680 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk2696 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_paren_chunk_in_paren_chunk2720 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk2756 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk2806 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk2822 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_curly_chunk_in_curly_chunk2846 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk2882 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk2943 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk2959 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_square_chunk_in_square_chunk2983 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk3019 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_retval_constraint3064 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3091 = new BitSet(new long[]{0x0000000100000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_set_in_lhs_or3100 = new BitSet(new long[]{0x0003C00280000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or3110 = new BitSet(new long[]{0x0000000100000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3146 = new BitSet(new long[]{0x0000100000000002L,0x0000000000001000L});
+    public static final BitSet FOLLOW_set_in_lhs_and3155 = new BitSet(new long[]{0x0003C00280000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3165 = new BitSet(new long[]{0x0000100000000002L,0x0000000000001000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3202 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3210 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3218 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_unary3226 = new BitSet(new long[]{0x2000200000000002L});
+    public static final BitSet FOLLOW_FROM_in_lhs_unary3242 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_accumulate_statement_in_lhs_unary3270 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_lhs_unary3299 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_from_statement_in_lhs_unary3321 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary3360 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary3368 = new BitSet(new long[]{0x0003C00280000000L});
+    public static final BitSet FOLLOW_lhs_in_lhs_unary3372 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary3374 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_opt_semicolon_in_lhs_unary3384 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXISTS_in_lhs_exist3408 = new BitSet(new long[]{0x0000000280000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3411 = new BitSet(new long[]{0x0003C00280000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3415 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3417 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_exist3423 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_lhs_not3453 = new BitSet(new long[]{0x0000000280000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3456 = new BitSet(new long[]{0x0003C00280000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3460 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3463 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_not3469 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EVAL_in_lhs_eval3497 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3501 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FORALL_in_lhs_forall3529 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall3531 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_forall3535 = new BitSet(new long[]{0x0000000080000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_lhs_forall3549 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_lhs_column_in_lhs_forall3555 = new BitSet(new long[]{0x0000000480000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall3568 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dotted_name3594 = new BitSet(new long[]{0x4000040000000002L});
+    public static final BitSet FOLLOW_62_in_dotted_name3600 = new BitSet(new long[]{0x0007F0B9FE0A3FF0L});
+    public static final BitSet FOLLOW_identifier_in_dotted_name3604 = new BitSet(new long[]{0x4000040000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dotted_name3613 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dotted_name3615 = new BitSet(new long[]{0x0000040000000002L});
+    public static final BitSet FOLLOW_identifier_in_argument3645 = new BitSet(new long[]{0x0000040000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument3651 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument3653 = new BitSet(new long[]{0x0000040000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk3697 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_set_in_rhs_chunk3709 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_END_in_rhs_chunk3746 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_name3790 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_name3809 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_identifier3847 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_PACKAGE_in_identifier3860 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FUNCTION_in_identifier3867 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GLOBAL_in_identifier3874 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IMPORT_in_identifier3881 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_in_identifier3890 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_QUERY_in_identifier3897 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_TEMPLATE_in_identifier3918 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ATTRIBUTES_in_identifier3946 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ENABLED_in_identifier3972 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SALIENCE_in_identifier4001 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DURATION_in_identifier4023 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FROM_in_identifier4045 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_identifier4074 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INIT_in_identifier4096 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACTION_in_identifier4125 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RESULT_in_identifier4154 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_identifier4183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OR_in_identifier4212 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AND_in_identifier4241 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CONTAINS_in_identifier4270 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXCLUDES_in_identifier4292 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_MATCHES_in_identifier4314 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_identifier4343 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXISTS_in_identifier4372 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_identifier4401 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EVAL_in_identifier4430 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FORALL_in_identifier4459 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_identifier4497 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_identifier4529 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_END_in_identifier4558 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_synpred4114 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_synpred5126 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_synpred361591 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_synpred361595 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_synpred371627 = new BitSet(new long[]{0xFFFFFFFDFFFFFFF0L,0x0000000000001FFFL});
+    public static final BitSet FOLLOW_set_in_synpred371629 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred401745 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_set_in_synpred432046 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_fact_in_synpred432063 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_synpred713261 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_synpred723290 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2007-01-30 17:42:20 UTC (rev 9162)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2007-01-30 19:54:48 UTC (rev 9163)
@@ -9,6 +9,10 @@
  *
  */
 public class DescrFactory {
+    
+    public PackageDescr createPackage( String packageName ) {
+        return new PackageDescr( packageName );
+    }
 
     public FromDescr createFrom() {
         return new FromDescr();

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java	2007-01-30 17:42:20 UTC (rev 9162)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/PackageHandler.java	2007-01-30 19:54:48 UTC (rev 9163)
@@ -18,6 +18,7 @@
 
 import java.util.HashSet;
 
+import org.drools.lang.descr.ImportDescr;
 import org.drools.lang.descr.PackageDescr;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -79,7 +80,7 @@
                 throw new SAXParseException( "<import> cannot be blank",
                                              this.xmlPackageReader.getLocator() );
             }
-            packageDescr.addImport( importEntry );
+            packageDescr.addImport( new ImportDescr( importEntry ) );
         }
 
         final Configuration[] globals = config.getChildren( "global" );

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2007-01-30 17:42:20 UTC (rev 9162)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2007-01-30 19:54:48 UTC (rev 9163)
@@ -193,9 +193,9 @@
 	@init {
 		String packageName = "";
 	}
-	:	( name=package_statement { packageName = name; } )?
+	:	( n=package_statement { packageName = n; } )?
 		{ 
-			this.packageDescr = new PackageDescr( packageName ); 
+			this.packageDescr = factory.createPackage( packageName ); 
 		}
 	;
 	
@@ -207,7 +207,7 @@
 	|	function 
 	|       t=template {this.packageDescr.addFactTemplate( t ); }
 	|	r=rule { if( r != null ) this.packageDescr.addRule( r ); }			
-	|	q=query	{this.packageDescr.addRule( q ); }
+	|	q=query	{ if( q != null ) this.packageDescr.addRule( q ); }
 	) 
 	;
 
@@ -216,9 +216,9 @@
 		packageName = null;
 	}
 	:	
-		'package' name=dotted_name opt_semicolon
+		PACKAGE n=dotted_name opt_semicolon
 		{
-			packageName = name;
+			packageName = n;
 		}
 	;
 	
@@ -227,7 +227,7 @@
         @init {
         	ImportDescr importDecl = null;
         }
-	:	imp='import' 
+	:	imp=IMPORT 
 	        {
 	            importDecl = factory.createImport( );
 	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
@@ -242,7 +242,7 @@
         @init {
         	FunctionImportDescr importDecl = null;
         }
-	:	imp='import' 'function' 
+	:	imp=IMPORT FUNCTION 
 	        {
 	            importDecl = factory.createFunctionImport();
 	            importDecl.setStartCharacter( ((CommonToken)imp).getStartIndex() );
@@ -259,13 +259,13 @@
 		name = null;
 	}
 	:	
-		id=ID 
+		id=identifier 
 		{ 
 		    name=id.getText(); 
 		    importDecl.setTarget( name );
 		    importDecl.setEndCharacter( ((CommonToken)id).getStopIndex() );
 		} 
-		( '.' id=ID 
+		( '.' id=identifier 
 		    { 
 		        name = name + "." + id.getText(); 
 			importDecl.setTarget( name );
@@ -286,7 +286,7 @@
 	@init {
 	}
 	:
-		'global' type=dotted_name id=ID opt_semicolon
+		GLOBAL type=dotted_name id=identifier opt_semicolon
 		{
 			packageDescr.addGlobal( id.getText(), type );
 		}
@@ -298,10 +298,10 @@
 		FunctionDescr f = null;
 	}
 	:
-		loc='function' (retType=dotted_name)? name=ID
+		loc=FUNCTION (retType=dotted_name)? n=identifier
 		{
-			//System.err.println( "function :: " + name.getText() );
-			f = new FunctionDescr( name.getText(), retType );
+			//System.err.println( "function :: " + n.getText() );
+			f = new FunctionDescr( n.getText(), retType );
 			f.setLocation(offset(loc.getLine()), loc.getCharPositionInLine());
 		} 
 		'('
@@ -333,7 +333,7 @@
 		AndDescr lhs = null;
 	}
 	:
-		loc='query' queryName=word
+		loc=QUERY queryName=name
 		{ 
 			query = new QueryDescr( queryName, null ); 
 			query.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -345,7 +345,7 @@
 			normal_lhs_block[lhs]
 		)
 					
-		'end'
+		END
 	;
 
 
@@ -354,7 +354,7 @@
 		template = null;		
 	}
 	:
-		loc='template' templateName=ID opt_semicolon
+		loc=TEMPLATE templateName=identifier opt_semicolon
 		{
 			template = new FactTemplateDescr(templateName.getText());
 			template.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );			
@@ -365,7 +365,7 @@
 				template.addFieldTemplate(slot);
 			}
 		)+
-		'end' opt_semicolon		
+		END opt_semicolon		
 	;
 	
 template_slot returns [FieldTemplateDescr field]
@@ -373,13 +373,13 @@
 		field = null;
 	}
 	:
-		//name=ID ':' fieldType=dotted_name ( EOL | ';' )
-		 fieldType=dotted_name name=ID opt_semicolon
+		//n=ID ':' fieldType=dotted_name ( EOL | ';' )
+		 fieldType=dotted_name n=identifier opt_semicolon
 		{
 			
 			
-			field = new FieldTemplateDescr(name.getText(), fieldType);
-			field.setLocation( offset(name.getLine()), name.getCharPositionInLine() );
+			field = new FieldTemplateDescr(n.getText(), fieldType);
+			field.setLocation( offset(n.getLine()), n.getCharPositionInLine() );
 		}
 	;	
 	
@@ -390,7 +390,7 @@
 		AndDescr lhs = null;
 	}
 	:
-		loc=RULE ruleName=word 
+		loc=RULE ruleName=name 
 		{ 
 			debug( "start rule: " + ruleName );
 			rule = new RuleDescr( ruleName, null ); 
@@ -416,7 +416,7 @@
 
 rule_attributes[RuleDescr rule]
 	: 
-			('attributes' ':')?
+			(ATTRIBUTES ':')?
 			(	','? a=rule_attribute
 				{
 					rule.addAttribute( a );
@@ -437,9 +437,9 @@
 		|	a=duration  { d = a; }			
 		|	a=activation_group { d = a; }	
 		|	a=auto_focus { d = a; }	
-		|                         a=date_effective {d = a; }
+		|       a=date_effective {d = a; }
 		|	a=date_expires {d = a; }
-		|                         a=enabled {d=a;}
+		|       a=enabled {d=a;}
 		
 	;
 	
@@ -448,7 +448,7 @@
 		d = null;
 	}	
 	:
-		loc='date-effective' val=STRING
+		loc=DATE_EFFECTIVE val=STRING
 		{
 			d = new AttributeDescr( "date-effective", getString( val ) );
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -461,7 +461,7 @@
 		d = null;
 	}	
 	:
-		loc='date-expires' val=STRING
+		loc=DATE_EXPIRES val=STRING
 		{
 			d = new AttributeDescr( "date-expires", getString( val ) );
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -475,7 +475,7 @@
 		d = null;
 	}
 	:
-			loc='enabled' t=BOOL opt_semicolon
+			loc=ENABLED t=BOOL opt_semicolon
 			{
 				d = new AttributeDescr( "enabled", t.getText() );
 				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -491,7 +491,7 @@
 		d = null;
 	}
 	:	
-		loc='salience' i=INT opt_semicolon
+		loc=SALIENCE i=INT opt_semicolon
 		{
 			d = new AttributeDescr( "salience", i.getText() );
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -504,7 +504,7 @@
 	}
 	:
 		(
-			loc='no-loop' opt_semicolon
+			loc=NO_LOOP opt_semicolon
 			{
 				d = new AttributeDescr( "no-loop", "true" );
 				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -512,7 +512,7 @@
 		) 
 		|
 		(
-			loc='no-loop' t=BOOL opt_semicolon
+			loc=NO_LOOP t=BOOL opt_semicolon
 			{
 				d = new AttributeDescr( "no-loop", t.getText() );
 				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -528,7 +528,7 @@
 	}
 	:
 		(
-			loc='auto-focus' opt_semicolon
+			loc=AUTO_FOCUS opt_semicolon
 			{
 				d = new AttributeDescr( "auto-focus", "true" );
 				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -536,7 +536,7 @@
 		) 
 		|
 		(
-			loc='auto-focus' t=BOOL opt_semicolon
+			loc=AUTO_FOCUS t=BOOL opt_semicolon
 			{
 				d = new AttributeDescr( "auto-focus", t.getText() );
 				d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -551,9 +551,9 @@
 		d = null;
 	}
 	:
-		loc='activation-group' name=STRING opt_semicolon
+		loc=ACTIVATION_GROUP n=STRING opt_semicolon
 		{
-			d = new AttributeDescr( "activation-group", getString( name ) );
+			d = new AttributeDescr( "activation-group", getString( n ) );
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
 		}
 	;
@@ -563,9 +563,9 @@
 		d = null;
 	}
 	:
-		loc='agenda-group' name=STRING opt_semicolon
+		loc=AGENDA_GROUP n=STRING opt_semicolon
 		{
-			d = new AttributeDescr( "agenda-group", getString( name ) );
+			d = new AttributeDescr( "agenda-group", getString( n ) );
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
 		}
 	;		
@@ -576,7 +576,7 @@
 		d = null;
 	}
 	:
-		loc='duration' i=INT
+		loc=DURATION i=INT
 		{
 			d = new AttributeDescr( "duration", i.getText() );
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -613,7 +613,7 @@
 		d=factory.createFrom();
 	}
 	:
-	'from' ds=from_source
+	ds=from_source
 		{
 			d.setDataSource(ds);
 		
@@ -629,7 +629,7 @@
 		AccessorDescr ad = null;
 	}
 	:	
-		(( functionName=ID args=paren_chunk			
+		(( ( identifier LEFT_PAREN) => functionName=identifier args=paren_chunk			
 		        {
  				ad = new AccessorDescr();	
 				ad.setLocation( offset(functionName.getLine()), functionName.getCharPositionInLine() );
@@ -641,7 +641,7 @@
 			}
 		)
 		|
-		(   var=ID 
+		(  ( identifier ~LEFT_PAREN ) => var=identifier
 		    {
 			ad = new AccessorDescr(var.getText());	
 			ad.setLocation( offset(var.getLine()), var.getCharPositionInLine() );
@@ -658,7 +658,7 @@
 	    	MethodAccessDescr ma = null;	
 	}
 	:
-	( '.' field=ID  
+	( '.' field=identifier  
 	    {
 	        fa = new FieldAccessDescr(field.getText());	
 		fa.setLocation( offset(field.getLine()), field.getCharPositionInLine() );
@@ -691,7 +691,7 @@
 		d = factory.createAccumulate();
 	}
 	:
-	        loc='from' 'accumulate' 
+	        loc=ACCUMULATE 
 		{ 
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
 		}	
@@ -699,15 +699,15 @@
 		{
 		        d.setSourceColumn( (ColumnDescr)column );
 		}
-		'init' text=paren_chunk ',' 
+		INIT text=paren_chunk ',' 
 		{
 		        d.setInitCode( text.substring(1, text.length()-1) );
 		}
-		'action' text=paren_chunk ',' 
+		ACTION text=paren_chunk ',' 
 		{
 		        d.setActionCode( text.substring(1, text.length()-1) );
 		}
-		'result' text=paren_chunk ')'
+		RESULT text=paren_chunk ')'
 		{
 		        d.setResultCode( text.substring(1, text.length()-1) );
 		} 
@@ -718,7 +718,7 @@
 		d = factory.createCollect();
 	}
 	:
-	        loc='from' 'collect' 
+	        loc=COLLECT 
 		{ 
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
 		}	
@@ -754,27 +754,41 @@
  		pd = null;
  		boolean multi = false;
  	}
- 	:	'(' fe=fact_expression_in_paren[id] ')' { pd=fe; }
+ 	:	'(' fe=fact_expression[id] ')' { pd=fe; }
  	| 	f=fact
  		{
  			((ColumnDescr)f).setIdentifier( id );
  			pd = f;
  		}
+ 		( (OR|'||')
+ 			{	if ( ! multi ) {
+ 					BaseDescr first = pd;
+ 					pd = new OrDescr();
+ 					((OrDescr)pd).addDescr( first );
+ 					multi=true;
+ 				}
+ 			}
+ 			f=fact
+ 			{
+ 				((ColumnDescr)f).setIdentifier( id );
+ 				((OrDescr)pd).addDescr( f );
+ 			}
+ 		)*	
 	;
 
 // in parenthesis alternative is allowed
- fact_expression_in_paren[String id] returns [BaseDescr pd]
+/* fact_expression_in_paren[String id] returns [BaseDescr pd]
  	@init {
  		pd = null;
  		boolean multi = false;
  	}
- 	:	'(' fe=fact_expression_in_paren[id]')' { pd=fe; }
+ 	:	'(' fe=fact_expression[id] ')' { pd=fe; }
  	| 	f=fact
  		{
  			((ColumnDescr)f).setIdentifier( id );
  			pd = f;
  		}
- 		( ('or'|'||')
+ 		( (OR|'||')
  			{	if ( ! multi ) {
  					BaseDescr first = pd;
  					pd = new OrDescr();
@@ -789,7 +803,7 @@
  			}
  		)*	
 	;
- 
+*/ 
 fact returns [BaseDescr d] 
 	@init {
 		d=null;
@@ -834,7 +848,7 @@
 
 		    }
 		)? 
-		f=ID	
+		f=identifier	
 		{
 			if ( fb != null ) {
 			    fbd.setFieldName( f.getText() );
@@ -886,9 +900,9 @@
 		|	'<'
 		|	'<='
 		|	'!='
-		|	'contains'
-		|	'matches'
-		|       'excludes'
+		|	CONTAINS
+		|	MATCHES
+		|       EXCLUDES
 		)	
 		(	bvc=ID
 			{
@@ -915,11 +929,11 @@
 	@init {
 		text = null;
 	}
-	:	(	t=STRING { text = getString( t ); } //t.getText(); text=text.substring( 1, text.length() - 1 ); }
+	:	(	t=STRING { text = getString( t ); } 
 		|	t=INT    { text = t.getText(); }
 		|	t=FLOAT	 { text = t.getText(); }
 		|	t=BOOL 	 { text = t.getText(); }
-		|	t='null' { text = null; }
+		|	t=NULL   { text = null; }
 		)
 	;
 	
@@ -927,7 +941,8 @@
 	@init {
 		text = null;
 	}
-	:	(cls=ID '.' en=ID) { text = cls.getText() + "." + en.getText(); }
+	:	
+		id=ID { text=id.getText(); } ( '.' ident=identifier { text += "." + ident.getText(); } )+ 
 	;	
 	
 
@@ -1070,11 +1085,6 @@
 		c=paren_chunk { text = c.substring(1, c.length()-1); }
 	;
 
-
-
-
-	
-
 lhs_or returns [BaseDescr d]
 	@init{
 		d = null;
@@ -1082,7 +1092,7 @@
 	}
 	:	
 		left=lhs_and {d = left; }
-		( ('or'|'||')
+		( (OR|'||')
 			right=lhs_and 
 			{
 				if ( or == null ) {
@@ -1103,7 +1113,7 @@
 	}
 	:
 		left=lhs_unary { d = left; }
-		( ('and'|'&&')
+		( (AND|'&&')
 			right=lhs_unary
 			{
 				if ( and == null ) {
@@ -1125,9 +1135,11 @@
 		|	u=lhs_not
 		|	u=lhs_eval
 		|	u=lhs_column (
-		           (fm=from_statement {fm.setColumn((ColumnDescr) u); u=fm;}) 
-		          |(ac=accumulate_statement {ac.setResultColumn((ColumnDescr) u); u=ac;})
-		          |(cs=collect_statement {cs.setResultColumn((ColumnDescr) u); u=cs;}) 
+		          FROM (
+		           ( ACCUMULATE ) => (ac=accumulate_statement {ac.setResultColumn((ColumnDescr) u); u=ac;})
+		          |( COLLECT ) => (cs=collect_statement {cs.setResultColumn((ColumnDescr) u); u=cs;}) 
+		          |(fm=from_statement {fm.setColumn((ColumnDescr) u); u=fm;}) 
+		          )
 		        )?
 		|	u=lhs_forall  
 		|	'(' u=lhs ')'
@@ -1139,7 +1151,7 @@
 	@init {
 		d = null;
 	}
-	:	loc='exists' ('(' column=lhs_or ')' | column=lhs_column)
+	:	loc=EXISTS ('(' column=lhs_or ')' | column=lhs_column)
 		{ 
 			d = new ExistsDescr( (ColumnDescr) column ); 
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -1150,7 +1162,7 @@
 	@init {
 		d = null;
 	}
-	:	loc='not' ('(' column=lhs_or  ')' | column=lhs_column)
+	:	loc=NOT ('(' column=lhs_or  ')' | column=lhs_column)
 		{
 			d = new NotDescr( column ); 
 			d.setLocation( offset(loc.getLine()), loc.getCharPositionInLine() );
@@ -1161,7 +1173,7 @@
 	@init {
 		d = null;
 	}
-	:	loc='eval' c=paren_chunk
+	:	loc=EVAL c=paren_chunk
 		{ 
 		        String body = c.substring(1, c.length()-1);
 			checkTrailingSemicolon( body, offset(loc.getLine()) );
@@ -1173,7 +1185,7 @@
 	@init {
 		d = factory.createForall();
 	}
-	:	loc='forall' '(' base=lhs_column   
+	:	loc=FORALL '(' base=lhs_column   
 		{
 		        // adding the base column
 		        d.addDescr( base );
@@ -1193,7 +1205,7 @@
 		name = null;
 	}
 	:	
-		id=ID { name=id.getText(); } ( '.' id=ID { name = name + "." + id.getText(); } )* ( '[' ']' { name = name + "[]";})*
+		id=ID { name=id.getText(); } ( '.' ident=identifier { name = name + "." + ident.getText(); } )* ( '[' ']' { name = name + "[]";})*
 	;
 	
 argument returns [String name]
@@ -1201,7 +1213,7 @@
 		name = null;
 	}
 	:
-		id=ID { name=id.getText(); } ( '[' ']' { name = name + "[]";})*
+		id=identifier { name=id.getText(); } ( '[' ']' { name = name + "[]";})*
 	;
 
 rhs_chunk[RuleDescr rule]
@@ -1215,7 +1227,7 @@
 		    ((SwitchingCommonTokenStream)input).setTokenTypeChannel( WS, Token.DEFAULT_CHANNEL );
 		    buf = new StringBuffer();
 	        }
-		start='then'
+		start=THEN
 		( 
 			  ~END
 			  {
@@ -1247,27 +1259,60 @@
                 }
 	;
 
+name returns [String s]
+	:
+	( 
+	    tok=ID
+	    {
+	        s = tok.getText();
+	    }
+	|
+	    str=STRING
+	    {
+	       s = getString( str );
+	    }
+	)
+	;
 	
-word returns [String word]
-	@init{
-		word = null;
+identifier returns [Token tok]
+	:	
+	(       t=ID      
+	|	t=PACKAGE
+	|	t=FUNCTION
+	|	t=GLOBAL
+	|	t=IMPORT  
+	|	t=RULE
+	|	t=QUERY 
+        |       t=TEMPLATE        
+        |       t=ATTRIBUTES      
+        |       t=ENABLED         
+        |       t=SALIENCE 	
+        |       t=DURATION 	
+        |       t=FROM	        
+        |       t=ACCUMULATE 	
+        |       t=INIT	        
+        |       t=ACTION	        
+        |       t=RESULT	        
+        |       t=COLLECT         
+        |       t=OR	        
+        |       t=AND	        
+        |       t=CONTAINS 	
+        |       t=EXCLUDES 	
+        |       t=MATCHES         
+        |       t=NULL	        
+        |       t=EXISTS	        
+        |       t=NOT	        
+        |       t=EVAL	        
+        |       t=FORALL	            					
+        |       t=WHEN            
+        |       t=THEN	        
+        |       t=END             
+	) 
+	{
+	    tok = t;
 	}
-	:	id=ID      { word=id.getText(); }
-	|	'import'   { word="import"; }
-	|	'use'      { word="use"; }
-	|	RULE       { word="rule"; }
-	|	'query'    { word="query"; }
-	|	'salience' { word="salience"; }
- 	|	'no-loop'  { word="no-loop"; }
-	|	WHEN       { word="when"; }
-	|	THEN       { word="then"; }
-	|	END        { word="end"; }
-	|	str=STRING { word=getString(str);} //str.getText(); word=word.substring( 1, word.length()-1 ); }
 	;
-
-//RHS	:'then' (options{greedy=false;} : .)* ('\n'|'\r') (' '|'\t'|'\f')* 'end'
-//	;
-
+	
 WS      :       (	' '
                 |	'\t'
                 |	'\f'
@@ -1322,11 +1367,85 @@
 BOOL
 	:	('true'|'false') 
 	;	
+
+PACKAGE	:	'package';
+
+IMPORT	:	'import';
+
+FUNCTION :	'function';
+
+GLOBAL	:	'global';
 	
 RULE    :	'rule';
 
-WHEN    :	'when';
+QUERY	:	'query';
 
+TEMPLATE :	'template';
+
+ATTRIBUTES :	'attributes';
+	
+DATE_EFFECTIVE 
+	:	'date-effective';
+
+DATE_EXPIRES 
+	:	'date-expires';	
+	
+ENABLED :	'enabled';
+
+SALIENCE 
+	:	'salience';
+	
+NO_LOOP :	'no-loop';
+
+AUTO_FOCUS 
+	:	'auto-focus';
+	
+ACTIVATION_GROUP 
+	:	'activation-group';
+	
+AGENDA_GROUP 
+	:	'agenda-group';
+	
+DURATION 
+	:	'duration';
+	
+FROM	:	'from';
+
+ACCUMULATE 
+	:	'accumulate';
+	
+INIT	:	'init';
+
+ACTION	:	'action';
+
+RESULT	:	'result';
+
+COLLECT :	'collect';
+
+OR	:	'or';
+
+AND	:	'and';
+
+CONTAINS 
+	:	'contains';
+	
+EXCLUDES 
+	:	'excludes';
+	
+MATCHES :	'matches';
+
+NULL	:	'null';
+
+EXISTS	:	'exists';
+
+NOT	:	'not';
+
+EVAL	:	'eval';
+
+FORALL	:	'forall';							
+
+WHEN    :	'when'; 
+
 THEN	:    	'then';
 
 END     :	'end';

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/eol_funny_business.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/eol_funny_business.drl	2007-01-30 17:42:20 UTC (rev 9162)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/eol_funny_business.drl	2007-01-30 19:54:48 UTC (rev 9163)
@@ -1,8 +1,14 @@
-package test
+package test.rule.when.end.package.mine;
 
+global java.lang.String accumulate;
+
+function boolean eval() {
+    return true;
+}
+
 rule type1
   when
-	$id : Something(xyz == "foo")
+	$id : Something( duration == "foo")
   then
   	The.end();
   	end;




More information about the jboss-svn-commits mailing list