[Scummvm-git-logs] scummvm master -> d9d1c95ce04223640a2f51a69678f783bd7a9014

sev- sev at scummvm.org
Sat May 30 21:25:34 UTC 2020


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
87c8826e83 DIRECTOR: LINGO: Simplified 'repeat while' grammar a bit
ee9d03e158 DIRECTOR: LINGO: Reworked 'repeat with...in list' to non-recursive
d9d1c95ce0 DIRECTOR: LINGO: Removed old c_repeatwith code


Commit: 87c8826e83ad06bdbe8f44c2be1f2af49a637ace
    https://github.com/scummvm/scummvm/commit/87c8826e83ad06bdbe8f44c2be1f2af49a637ace
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-30T22:54:20+02:00

Commit Message:
DIRECTOR: LINGO: Simplified 'repeat while' grammar a bit

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 10182206a5..ec0de2da4e 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -421,48 +421,47 @@ enum yysymbol_kind_t
   YYSYMBOL_elseifstmtlist = 119,           /* elseifstmtlist  */
   YYSYMBOL_elseifstmt = 120,               /* elseifstmt  */
   YYSYMBOL_ifoneliner = 121,               /* ifoneliner  */
-  YYSYMBOL_repeatwhile = 122,              /* repeatwhile  */
-  YYSYMBOL_repeatwith = 123,               /* repeatwith  */
-  YYSYMBOL_jumpifz = 124,                  /* jumpifz  */
-  YYSYMBOL_jump = 125,                     /* jump  */
-  YYSYMBOL_varassign = 126,                /* varassign  */
-  YYSYMBOL_if = 127,                       /* if  */
-  YYSYMBOL_begin = 128,                    /* begin  */
-  YYSYMBOL_end = 129,                      /* end  */
-  YYSYMBOL_stmtlist = 130,                 /* stmtlist  */
-  YYSYMBOL_when = 131,                     /* when  */
-  YYSYMBOL_simpleexpr = 132,               /* simpleexpr  */
-  YYSYMBOL_expr = 133,                     /* expr  */
-  YYSYMBOL_chunkexpr = 134,                /* chunkexpr  */
-  YYSYMBOL_reference = 135,                /* reference  */
-  YYSYMBOL_proc = 136,                     /* proc  */
-  YYSYMBOL_137_7 = 137,                    /* $@7  */
-  YYSYMBOL_138_8 = 138,                    /* $@8  */
-  YYSYMBOL_139_9 = 139,                    /* $@9  */
-  YYSYMBOL_globallist = 140,               /* globallist  */
-  YYSYMBOL_propertylist = 141,             /* propertylist  */
-  YYSYMBOL_instancelist = 142,             /* instancelist  */
-  YYSYMBOL_gotofunc = 143,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 144,                /* gotomovie  */
-  YYSYMBOL_playfunc = 145,                 /* playfunc  */
-  YYSYMBOL_146_10 = 146,                   /* $@10  */
-  YYSYMBOL_defn = 147,                     /* defn  */
-  YYSYMBOL_148_11 = 148,                   /* $@11  */
-  YYSYMBOL_149_12 = 149,                   /* $@12  */
-  YYSYMBOL_150_13 = 150,                   /* $@13  */
-  YYSYMBOL_on = 151,                       /* on  */
-  YYSYMBOL_152_14 = 152,                   /* $@14  */
-  YYSYMBOL_argdef = 153,                   /* argdef  */
-  YYSYMBOL_endargdef = 154,                /* endargdef  */
-  YYSYMBOL_argstore = 155,                 /* argstore  */
-  YYSYMBOL_macro = 156,                    /* macro  */
-  YYSYMBOL_arglist = 157,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 158,          /* nonemptyarglist  */
-  YYSYMBOL_list = 159,                     /* list  */
-  YYSYMBOL_valuelist = 160,                /* valuelist  */
-  YYSYMBOL_linearlist = 161,               /* linearlist  */
-  YYSYMBOL_proplist = 162,                 /* proplist  */
-  YYSYMBOL_proppair = 163                  /* proppair  */
+  YYSYMBOL_repeatwith = 122,               /* repeatwith  */
+  YYSYMBOL_jumpifz = 123,                  /* jumpifz  */
+  YYSYMBOL_jump = 124,                     /* jump  */
+  YYSYMBOL_varassign = 125,                /* varassign  */
+  YYSYMBOL_if = 126,                       /* if  */
+  YYSYMBOL_begin = 127,                    /* begin  */
+  YYSYMBOL_end = 128,                      /* end  */
+  YYSYMBOL_stmtlist = 129,                 /* stmtlist  */
+  YYSYMBOL_when = 130,                     /* when  */
+  YYSYMBOL_simpleexpr = 131,               /* simpleexpr  */
+  YYSYMBOL_expr = 132,                     /* expr  */
+  YYSYMBOL_chunkexpr = 133,                /* chunkexpr  */
+  YYSYMBOL_reference = 134,                /* reference  */
+  YYSYMBOL_proc = 135,                     /* proc  */
+  YYSYMBOL_136_7 = 136,                    /* $@7  */
+  YYSYMBOL_137_8 = 137,                    /* $@8  */
+  YYSYMBOL_138_9 = 138,                    /* $@9  */
+  YYSYMBOL_globallist = 139,               /* globallist  */
+  YYSYMBOL_propertylist = 140,             /* propertylist  */
+  YYSYMBOL_instancelist = 141,             /* instancelist  */
+  YYSYMBOL_gotofunc = 142,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 143,                /* gotomovie  */
+  YYSYMBOL_playfunc = 144,                 /* playfunc  */
+  YYSYMBOL_145_10 = 145,                   /* $@10  */
+  YYSYMBOL_defn = 146,                     /* defn  */
+  YYSYMBOL_147_11 = 147,                   /* $@11  */
+  YYSYMBOL_148_12 = 148,                   /* $@12  */
+  YYSYMBOL_149_13 = 149,                   /* $@13  */
+  YYSYMBOL_on = 150,                       /* on  */
+  YYSYMBOL_151_14 = 151,                   /* $@14  */
+  YYSYMBOL_argdef = 152,                   /* argdef  */
+  YYSYMBOL_endargdef = 153,                /* endargdef  */
+  YYSYMBOL_argstore = 154,                 /* argstore  */
+  YYSYMBOL_macro = 155,                    /* macro  */
+  YYSYMBOL_arglist = 156,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 157,          /* nonemptyarglist  */
+  YYSYMBOL_list = 158,                     /* list  */
+  YYSYMBOL_valuelist = 159,                /* valuelist  */
+  YYSYMBOL_linearlist = 160,               /* linearlist  */
+  YYSYMBOL_proplist = 161,                 /* proplist  */
+  YYSYMBOL_proppair = 162                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -770,16 +769,16 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  128
+#define YYFINAL  127
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2657
+#define YYLAST   2607
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  104
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  60
+#define YYNNTS  59
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  181
+#define YYNRULES  180
 /* YYNSTATES -- Number of states.  */
 #define YYNSTATES  382
 
@@ -843,20 +842,20 @@ static const yytype_int16 yyrline[] =
      253,   254,   255,   257,   258,   259,   260,   262,   263,   268,
      280,   283,   286,   279,   310,   313,   316,   309,   340,   351,
      353,   358,   362,   367,   371,   378,   386,   387,   389,   395,
-     401,   407,   409,   415,   419,   423,   427,   430,   432,   434,
-     435,   436,   438,   444,   447,   450,   454,   458,   462,   470,
-     471,   472,   483,   484,   485,   488,   491,   494,   497,   503,
-     508,   514,   515,   516,   517,   518,   519,   520,   521,   522,
-     523,   524,   525,   526,   527,   528,   529,   530,   531,   532,
-     533,   534,   535,   536,   538,   539,   540,   541,   542,   543,
-     544,   545,   547,   550,   552,   553,   554,   555,   556,   557,
-     557,   558,   558,   559,   559,   560,   563,   566,   567,   569,
-     574,   580,   585,   591,   596,   609,   610,   611,   612,   616,
-     620,   625,   626,   628,   632,   636,   640,   640,   670,   670,
-     670,   676,   677,   677,   683,   691,   697,   697,   700,   701,
-     702,   704,   705,   706,   708,   710,   718,   719,   720,   722,
-     723,   725,   727,   728,   729,   730,   732,   733,   735,   736,
-     738,   742
+     401,   407,   413,   417,   421,   425,   428,   430,   432,   433,
+     434,   436,   442,   445,   448,   452,   456,   460,   468,   469,
+     470,   481,   482,   483,   486,   489,   492,   495,   501,   506,
+     512,   513,   514,   515,   516,   517,   518,   519,   520,   521,
+     522,   523,   524,   525,   526,   527,   528,   529,   530,   531,
+     532,   533,   534,   536,   537,   538,   539,   540,   541,   542,
+     543,   545,   548,   550,   551,   552,   553,   554,   555,   555,
+     556,   556,   557,   557,   558,   561,   564,   565,   567,   572,
+     578,   583,   589,   594,   607,   608,   609,   610,   614,   618,
+     623,   624,   626,   630,   634,   638,   638,   668,   668,   668,
+     674,   675,   675,   681,   689,   695,   695,   698,   699,   700,
+     702,   703,   704,   706,   708,   716,   717,   718,   720,   721,
+     723,   725,   726,   727,   728,   730,   731,   733,   734,   736,
+     740
 };
 #endif
 
@@ -891,9 +890,9 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "$accept", "program", "programline", "asgn", "stmtoneliner",
   "stmtonelinerwithif", "stmt", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6",
   "tellstart", "ifstmt", "elseifstmtlist", "elseifstmt", "ifoneliner",
-  "repeatwhile", "repeatwith", "jumpifz", "jump", "varassign", "if",
-  "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "chunkexpr",
-  "reference", "proc", "$@7", "$@8", "$@9", "globallist", "propertylist",
+  "repeatwith", "jumpifz", "jump", "varassign", "if", "begin", "end",
+  "stmtlist", "when", "simpleexpr", "expr", "chunkexpr", "reference",
+  "proc", "$@7", "$@8", "$@9", "globallist", "propertylist",
   "instancelist", "gotofunc", "gotomovie", "playfunc", "$@10", "defn",
   "$@11", "$@12", "$@13", "on", "$@14", "argdef", "endargdef", "argstore",
   "macro", "arglist", "nonemptyarglist", "list", "valuelist", "linearlist",
@@ -922,12 +921,12 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-286)
+#define YYPACT_NINF (-303)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-173)
+#define YYTABLE_NINF (-172)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -936,45 +935,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     789,   -78,  -286,  -286,    59,  -286,   611,   327,    59,    -9,
-     512,  -286,  -286,  -286,  -286,  -286,  -286,    -8,  -286,  1891,
-    -286,  -286,  -286,    -2,  2047,    38,    37,    -1,    35,  2129,
-    1928,  -286,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  -286,
-    -286,  2129,  2129,  2129,   422,    67,    -7,  -286,  -286,  -286,
-    -286,  2129,    64,  2129,  1727,  -286,  2549,  -286,  -286,  -286,
-    -286,  -286,  -286,  -286,  -286,  -286,  -286,  -286,  -286,    22,
-    2047,  2010,  2549,    19,  2010,    19,  -286,    59,  2010,  2549,
-      26,   700,  -286,  -286,   102,  2129,  -286,    84,  -286,  2121,
-    -286,   105,  -286,   106,   394,   126,  -286,   -45,    59,    59,
-     -14,    99,   101,  -286,  2446,  2121,  -286,   130,  -286,  2169,
-    2202,  2235,  2268,  2516,  2433,   132,   135,  -286,  -286,  2479,
-      60,    61,  -286,  2549,    65,    68,    69,  -286,  -286,   789,
-    2549,  -286,  2549,  -286,  -286,  2129,  2549,  -286,  -286,  2129,
-    2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,
-    2129,  2129,  2129,  2129,  2129,  2129,   149,  2010,   394,  2479,
-     -88,  2129,     2,  -286,    12,  2129,    19,   149,  -286,    76,
-    2549,  2129,  -286,  -286,    59,    20,  2129,  2129,   117,  2129,
-    2129,     4,   136,  2129,  2129,  2129,  -286,  2129,  -286,  -286,
-      83,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,  2129,
-    2129,  -286,  -286,  -286,    96,  -286,  -286,    59,    59,  -286,
-    2129,    81,  -286,  -286,  2129,   144,  -286,  2549,    30,    30,
-      30,    30,  2562,  2562,  -286,    23,    30,    30,    30,    30,
-      23,   -17,   -17,  -286,  -286,  -286,   -38,  -286,  2549,  -286,
-    -286,  2549,   -26,   173,  2549,  -286,   157,  -286,  -286,  2549,
-    2549,  2129,  2549,    30,  2129,  2129,   176,  2549,    30,  2549,
-    2549,   177,  2549,  2301,  2549,  2334,  2549,  2367,  2549,  2400,
-    2549,  2549,  1809,  -286,   179,  -286,  -286,  2549,    60,    61,
-    -286,  1216,  2549,  -286,   153,  -286,   181,  -286,  -286,   149,
-    2129,   240,  2549,    30,    59,  -286,  2129,  2129,  2129,  2129,
-    -286,  1301,  -286,  -286,  -286,   122,  -286,  1130,  1809,  -286,
-    -286,  -286,     9,  2549,  -286,  -286,   156,  2549,  2549,  2549,
-    2549,  -286,   123,  -286,  1386,  -286,   129,   875,   960,  -286,
-    -286,  -286,  2129,  -286,   125,    77,   180,   131,   192,  -286,
-     165,   185,  2549,  -286,  -286,  2129,  -286,   137,  -286,  -286,
-    -286,   121,  1045,  2129,   168,  -286,  2549,  -286,  1809,   198,
-    2549,  2129,  1471,   172,  -286,  -286,  -286,  2549,   141,  -286,
-     143,  -286,  -286,  -286,  1130,  -286,  1557,  -286,  -286,  -286,
-    1642,  -286
+     707,   -92,  -303,  -303,    69,  -303,   529,   327,    69,   -33,
+     430,  -303,  -303,  -303,  -303,  -303,  -303,   -30,  -303,  1809,
+    -303,  -303,  -303,   -18,  1965,    46,   223,    22,    27,  2047,
+    1846,  -303,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  -303,
+    -303,  2047,  2047,  2047,   201,    73,   -20,  -303,  -303,  -303,
+    -303,    38,  2047,  1645,  -303,  2499,  -303,  -303,  -303,  -303,
+    -303,  -303,  -303,  -303,  -303,  -303,  -303,  -303,   -11,  1965,
+    1928,  2499,    -8,  1928,    -8,  -303,    69,  1928,  2499,    -1,
+     618,  -303,  -303,    63,  2047,  -303,    67,  -303,  2086,  -303,
+      97,  -303,   100,   242,   128,  -303,   -40,    69,    69,    -9,
+     101,   103,  -303,  2396,  2086,  -303,   132,  -303,  2119,  2152,
+    2185,  2218,  2466,  2383,   133,   135,  -303,  -303,  2429,    59,
+      62,  -303,  2499,    77,    81,    82,  -303,  -303,   707,  -303,
+    2499,  -303,  -303,  2047,  2499,  -303,  -303,  2047,  2047,  2047,
+    2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,
+    2047,  2047,  2047,  2047,   157,  1928,   242,  2429,     6,  2047,
+      21,  -303,    29,  2047,    -8,   157,  -303,    94,  2499,  2047,
+    -303,  -303,    69,    33,  2047,  2047,   130,  2047,  2047,  2047,
+      15,   152,  2047,  2047,  2047,  -303,  2047,  -303,  -303,   105,
+    2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,
+    -303,  -303,  -303,   107,  -303,  -303,    69,    69,  -303,  2047,
+     -10,  -303,  2047,   148,  -303,  2499,    24,    24,    24,    24,
+    2512,  2512,  -303,   104,    24,    24,    24,    24,   104,   -19,
+     -19,  -303,  -303,  -303,   -48,  -303,  2499,  -303,  -303,  2499,
+     -32,   178,  2499,  -303,   164,  -303,  -303,  2499,  2499,  2047,
+    2499,  2499,    24,  2047,  2047,   185,  2499,    24,  2499,  2499,
+     186,  2499,  2251,  2499,  2284,  2499,  2317,  2499,  2350,  2499,
+    2499,  1727,  -303,   187,  -303,  -303,  2499,    59,    62,  -303,
+    2499,  -303,   161,  -303,   190,  -303,  -303,   157,  2047,  2019,
+    -303,  2499,    24,    69,  -303,  2047,  2047,  2047,  2047,  -303,
+    1134,  -303,  -303,  1048,  1727,  -303,  -303,  -303,   -12,  2499,
+    -303,  -303,  1219,   163,  2499,  2499,  2499,  2499,  -303,  -303,
+    -303,   141,  1304,  -303,   134,   793,   878,  -303,  -303,  -303,
+     136,  2047,  -303,   144,   115,   196,   147,   195,  -303,   182,
+     202,  -303,  2499,  -303,  -303,  2047,  -303,   153,  -303,  -303,
+    -303,   138,   963,  2047,   192,  -303,  2499,  -303,  1727,   218,
+    2499,  2047,  1389,   197,  -303,  -303,  -303,  2499,   166,  -303,
+     168,  -303,  -303,  -303,  1048,  -303,  1475,  -303,  -303,  -303,
+    1560,  -303
 };
 
   /* YYDEFACTSTATE-NUM -- Default reduction number in state STATE-NUM.
@@ -982,67 +981,67 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    63,    68,     0,    64,     0,     0,     0,     0,
-       0,    66,    65,   146,   152,    79,    80,   118,   119,     0,
-     135,    56,   148,     0,     0,     0,     0,     0,     0,     0,
-       0,   123,     0,     0,     0,     0,     0,     0,     0,   121,
-     156,     0,     0,     0,     0,     0,     2,    81,    27,     6,
-      28,     0,     0,     0,     0,    72,    21,   113,    73,    22,
-     115,   116,     5,    57,    20,    70,    71,    67,    78,    67,
-       0,     0,   167,   126,     0,    75,   112,     0,     0,   169,
-     165,     0,    57,   117,     0,     0,   136,     0,   137,   138,
-     140,     0,    39,     0,   114,     0,    51,     0,     0,     0,
-       0,     0,     0,   151,   128,   143,   145,     0,    95,     0,
-       0,     0,     0,     0,     0,     0,     0,   100,   101,     0,
-      66,    65,   173,   176,     0,   174,   175,   178,     1,     0,
-      53,    57,    53,    58,    26,     0,    24,    25,    23,     0,
+       0,     0,    62,    67,     0,    63,     0,     0,     0,     0,
+       0,    65,    64,   145,   151,    78,    79,   117,   118,     0,
+     134,    55,   147,     0,     0,     0,     0,     0,     0,     0,
+       0,   122,     0,     0,     0,     0,     0,     0,     0,   120,
+     155,     0,     0,     0,     0,     0,     2,    80,    27,     6,
+      28,     0,     0,     0,    71,    21,   112,    72,    22,   114,
+     115,     5,    56,    20,    69,    70,    66,    77,    66,     0,
+       0,   166,   125,     0,    74,   111,     0,     0,   168,   164,
+       0,    56,   116,     0,     0,   135,     0,   136,   137,   139,
+       0,    39,     0,   113,     0,    56,     0,     0,     0,     0,
+       0,     0,   150,   127,   142,   144,     0,    94,     0,     0,
+       0,     0,     0,     0,     0,     0,    99,   100,     0,    65,
+      64,   172,   175,     0,   173,   174,   177,     1,     0,    56,
+      52,    57,    26,     0,    24,    25,    23,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   158,     0,     0,   167,
-       0,     0,     0,    77,     0,     0,   147,   158,   129,   120,
-     142,     0,   139,   149,     0,     0,     0,     0,    52,     0,
-       0,     0,     0,     0,     0,     0,    62,     0,   144,   133,
-     124,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    43,    43,   131,   122,   157,    69,     0,     0,   171,
-       0,     0,     3,    59,     0,     0,    40,    53,    91,    92,
-      89,    90,    93,    94,    86,    97,    98,    99,    88,    87,
-      96,    82,    83,    84,    85,   159,     0,   125,   168,    74,
-      76,   170,     0,     0,   141,    57,     0,     7,     8,    10,
-      11,     0,    15,    13,     0,     0,     0,    14,    12,    19,
-     127,     0,   104,     0,   106,     0,   108,     0,   110,     0,
-     102,   103,     0,    59,     0,   181,   180,   177,     0,     0,
-     179,     0,    58,    59,     0,   164,     0,   164,   130,   158,
-       0,    30,    16,    17,     0,   134,     0,     0,     0,     0,
-      58,     0,   132,    60,    61,     0,    59,     0,     0,    59,
-     160,    59,     0,     9,    55,    55,     0,   105,   107,   109,
-     111,    42,     0,    29,     0,    46,    54,     0,     0,   164,
-      31,    35,     0,    41,     0,    57,     0,     0,   161,    59,
-       0,     0,    18,    38,    57,     0,    47,     0,    57,    50,
-     162,   154,     0,     0,     0,    59,    53,    44,     0,     0,
-      32,     0,     0,     0,    57,   163,    53,    36,     0,    59,
-       0,    59,    53,    45,     0,    49,     0,    59,    48,    33,
+       0,     0,     0,     0,   157,     0,     0,   166,     0,     0,
+       0,    76,     0,     0,   146,   157,   128,   119,   141,     0,
+     138,   148,     0,     0,     0,     0,    51,     0,     0,     0,
+       0,     0,     0,     0,     0,    61,     0,   143,   132,   123,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      43,    43,   130,   121,   156,    68,     0,     0,   170,     0,
+       0,     3,     0,     0,    40,    52,    90,    91,    88,    89,
+      92,    93,    85,    96,    97,    98,    87,    86,    95,    81,
+      82,    83,    84,   158,     0,   124,   167,    73,    75,   169,
+       0,     0,   140,    56,     0,     7,     8,    10,    11,     0,
+      52,    15,    13,     0,     0,     0,    14,    12,    19,   126,
+       0,   103,     0,   105,     0,   107,     0,   109,     0,   101,
+     102,     0,    58,     0,   180,   179,   176,     0,     0,   178,
+      57,    58,     0,   163,     0,   163,   129,   157,     0,    30,
+      58,    16,    17,     0,   133,     0,     0,     0,     0,    57,
+       0,   131,    58,     0,     0,    58,   159,    58,     0,     9,
+      54,    54,     0,     0,   104,   106,   108,   110,    42,    59,
+      60,     0,     0,    46,    53,     0,     0,   163,    31,    35,
+       0,     0,    41,     0,    56,     0,     0,   160,    58,     0,
+       0,    29,    18,    38,    56,     0,    47,     0,    56,    50,
+     161,   153,     0,     0,     0,    58,    52,    44,     0,     0,
+      32,     0,     0,     0,    56,   162,    52,    36,     0,    58,
+       0,    58,    52,    45,     0,    49,     0,    58,    48,    33,
        0,    37
 };
 
   /* YYPGOTONTERM-NUM.  */
 static const yytype_int16 yypgoto[] =
 {
-    -286,   103,  -286,  -286,  -266,  -286,    21,  -286,  -286,  -286,
-    -286,  -286,  -286,    28,  -286,  -286,  -286,  -286,  -286,  -286,
-    -130,  -285,   -84,   183,   -79,  -267,  -111,  -286,     6,    -6,
-    -286,    58,   184,  -286,  -286,  -286,  -286,  -286,  -286,  -286,
-     -23,  -286,  -286,  -286,  -286,  -286,  -286,  -286,  -286,  -162,
-    -286,  -279,   186,    10,  -286,  -286,  -286,  -286,  -286,    24
+    -303,   129,  -303,  -303,  -265,  -303,    20,  -303,  -303,  -303,
+    -303,  -303,  -303,    57,  -303,  -303,  -303,  -303,  -303,  -206,
+    -302,   -52,   207,   -79,  -238,  -247,  -303,     3,    -6,  -303,
+      88,   209,  -303,  -303,  -303,  -303,  -303,  -303,  -303,   -22,
+    -303,  -303,  -303,  -303,  -303,  -303,  -303,  -303,  -162,  -303,
+    -273,   210,    34,  -303,  -303,  -303,  -303,  -303,    54
 };
 
   /* YYDEFGOTONTERM-NUM.  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    45,    46,    47,    48,   133,   304,   314,   340,   366,
-     315,   341,   372,   272,    50,   335,   346,   134,    51,    52,
-     213,   305,   330,    53,   156,   216,   281,    54,    55,    56,
-      57,    58,    59,    84,   115,   107,   169,   204,   190,    60,
-      90,    61,    81,    62,    91,   245,    82,    63,   116,   236,
-     351,   309,    64,   164,    80,    65,   124,   125,   126,   127
+      -1,    45,    46,    47,    48,   131,   320,   310,   339,   366,
+     311,   340,   372,   271,    50,   334,   346,   132,    51,   213,
+     323,   328,    52,   154,   214,   300,    53,    54,    55,    56,
+      57,    58,    83,   114,   106,   167,   203,   189,    59,    89,
+      60,    80,    61,    90,   243,    81,    62,   115,   234,   351,
+     305,    63,   162,    79,    64,   123,   124,   125,   126
 };
 
   /* YYTABLEYYPACT[STATE-NUM] -- What to do in state STATE-NUM.  If
@@ -1050,310 +1049,305 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      72,    72,   215,   167,    79,   242,   300,   106,   311,   179,
-      68,   237,   161,    89,    76,   306,    73,    75,    94,    66,
-     180,    49,   325,   104,   105,   102,   108,   109,   110,   111,
-     112,   113,   114,   321,   322,   117,   118,   119,   123,    77,
-     183,   336,   326,    83,     8,   130,   247,   132,   136,    92,
-     339,   184,   214,   145,    97,    98,    99,   334,   254,   285,
-       1,   103,   286,   100,   158,   159,   172,   128,   159,   255,
-     101,   287,   159,     2,   286,    72,     3,   154,   155,   170,
-       5,   160,   188,   163,   162,    67,    11,   284,    12,   378,
-     129,   166,   364,   145,    95,    96,    33,    34,    35,    36,
-     145,   239,   161,   146,   181,   182,   329,   131,   278,   286,
-     279,   240,   161,   344,   345,   152,   153,   154,   155,   161,
-     157,   151,   152,   153,   154,   155,   165,   312,   168,   217,
-     171,   173,   174,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-      49,    72,   178,   185,   186,   238,   189,    43,   203,   241,
-      44,   205,   301,   207,   208,   244,   289,   209,   210,   211,
-     249,   250,   307,   252,   253,   235,   243,   257,   258,   259,
-     246,   260,   251,   261,   256,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   324,   274,   283,   327,   288,
-     328,   290,   294,   295,   277,   302,   308,   310,   282,   323,
-     332,   333,   343,   275,   276,   -57,   348,   349,   350,   353,
-     354,   359,   361,   357,   365,   369,   363,   373,   352,   375,
-     273,   331,   212,   248,     0,   280,   371,   135,   137,     0,
-     138,     0,   377,     0,   362,   291,     0,   337,   292,   293,
-       0,     0,     0,     0,     0,     0,   347,     0,   374,     0,
-     376,     0,     0,     0,     0,   355,   380,     0,     0,   358,
-       0,     0,     0,     0,     0,   -34,     0,     0,     0,     0,
-       0,     0,     0,   368,   313,   370,     0,     0,     0,     0,
-     317,   318,   319,   320,     0,     0,     0,     0,     0,     0,
-     316,     0,     0,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   342,  -166,     1,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,     0,   356,
-       0,     2,     0,     0,     3,     4,     0,   360,     5,  -166,
-       7,     8,     9,    69,    11,   367,    12,  -166,  -166,     0,
-      15,    16,  -166,  -166,  -166,  -166,  -166,  -166,  -166,  -166,
-       0,  -166,     0,  -166,  -166,  -166,     0,    70,  -166,    26,
-    -166,  -166,  -166,  -166,     0,     0,     0,  -166,  -166,  -166,
-    -166,  -166,  -166,  -166,  -166,  -166,    32,  -166,  -166,  -166,
-    -166,  -166,  -166,    33,    34,    35,    36,    37,  -166,  -166,
-    -166,  -166,     0,  -166,  -166,  -166,  -166,  -166,  -166,    41,
-      42,  -166,  -166,     1,  -166,    74,  -166,  -166,    44,  -166,
-       0,     0,     0,     0,     0,     0,     2,     0,   175,     3,
-       4,     0,     0,     5,     0,     7,     8,     9,    69,   120,
-       0,   121,     0,     0,     0,    15,    16,   139,   140,   141,
-     142,   143,   144,     0,   145,   176,   177,   146,   147,   148,
-       0,     0,    70,     0,    26,     0,     0,     0,     0,     0,
-       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
-       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
-      35,    36,    37,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   -67,     1,    41,    42,     0,     0,     0,     0,
-      43,     0,     0,    44,  -172,   122,     2,     0,     0,     3,
-       4,     0,     0,     5,   -67,     7,     8,     9,    69,    11,
-       0,    12,   -67,   -67,     0,    15,    16,     0,   -67,   -67,
-     -67,   -67,   -67,   -67,   -67,     0,     0,     0,     0,   -67,
-       0,     0,    70,   -67,    26,     0,     0,   -67,     0,     0,
-       0,     0,   -67,   -67,   -67,   -67,   -67,   -67,   -67,   -67,
-     -67,    32,   -67,     0,     0,   -67,   -67,   -67,    33,    34,
-      35,    36,    37,     0,     0,   -67,   -67,     0,   -67,   -67,
-     -67,   -67,   -67,   -67,    41,    42,   -67,   -67,     0,   -67,
-      78,  -166,     1,    44,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     2,     0,     0,     3,     4,
-       0,     0,     5,  -166,     7,     8,     9,    69,    11,     0,
-      12,  -166,  -166,     0,    15,    16,     0,  -166,  -166,  -166,
-    -166,  -166,  -166,  -166,     0,     0,     0,     0,  -166,     0,
-       0,    70,  -166,    26,     0,     0,  -166,     0,     0,     0,
-       0,  -166,  -166,  -166,     0,     0,     0,     0,     0,     0,
+      71,    71,   165,   240,    78,    65,   299,    67,   105,   282,
+     330,    75,   307,    88,   178,    76,   177,   277,    93,   278,
+      49,    82,   335,   103,   104,   179,   107,   108,   109,   110,
+     111,   112,   113,    91,   303,   116,   117,   118,   122,   324,
+      72,    74,   302,   312,   290,   182,   130,   134,   101,   283,
+     212,   143,   284,   102,   338,   322,   183,     8,   325,   245,
+     326,   318,   321,   156,   157,   285,   170,   157,   284,   253,
+       1,   157,   378,   127,    71,   152,   153,   128,   168,   161,
+     254,   129,   187,     2,   333,   327,     3,   155,   284,   166,
+       5,   352,   159,   364,   143,    66,    11,   144,    12,   163,
+     180,   181,    94,    95,   158,   235,   159,   160,   362,    33,
+      34,    35,    36,   169,   164,   149,   150,   151,   152,   153,
+     237,   159,   374,   171,   376,   308,   172,   215,   238,   159,
+     380,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,    49,    71,
+     363,   344,   345,   236,   176,   184,   185,   239,   188,   202,
+     371,   204,   206,   242,   287,   207,   377,    43,   247,   248,
+      44,   250,   251,   252,   143,   244,   256,   257,   258,   208,
+     259,   209,   210,   233,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   241,   249,   150,   151,   152,   153,
+     255,   281,     1,   276,   286,   260,   280,   273,   288,   274,
+     275,   293,   294,   301,   304,     2,   306,   331,     3,     4,
+     -56,   350,     5,   341,     7,     8,     9,    68,   119,   332,
+     120,   343,   348,   349,    15,    16,   353,   354,   359,   357,
+      96,    97,    98,   289,   365,   336,   361,   291,   292,    99,
+     369,    69,   373,    26,   375,   347,   100,   211,   272,   329,
+     133,   246,   135,   136,   279,   355,     0,     0,     0,   358,
       32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,  -166,  -166,     0,  -166,  -166,  -166,
-    -166,     1,     0,    41,    42,     0,     0,     0,  -166,    71,
-       0,  -166,    44,     0,     2,     0,     0,     3,     4,     0,
-       0,     5,  -166,     7,     8,     9,    69,    11,     0,    12,
-    -166,  -166,     0,    15,    16,     0,  -166,  -166,  -166,  -166,
-    -166,  -166,  -166,     0,     0,     0,     0,  -166,     0,     0,
-      70,  -166,    26,     0,     0,  -166,     0,     0,     0,     0,
-    -166,  -166,  -166,     0,     0,     0,     0,     0,     0,    32,
-       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,  -166,  -166,     0,  -166,  -166,  -166,    -4,
-       1,     0,    41,    42,     0,     0,     0,  -166,    43,     0,
-    -166,    44,     0,     2,     0,     0,     3,     4,     0,     0,
+      36,    37,   309,   368,     0,   370,   173,     0,     0,   314,
+     315,   316,   317,    41,    42,     0,   313,     0,     0,    43,
+       0,     0,    44,  -171,   121,   137,   138,   139,   140,   141,
+     142,     0,   143,   174,   175,   144,   145,   146,     0,     0,
+       0,     0,     0,     0,     0,   342,     0,  -165,     1,     0,
+       0,   147,   148,   149,   150,   151,   152,   153,     0,   356,
+       0,     2,     0,     0,     3,     4,     0,   360,     5,  -165,
+       7,     8,     9,    68,    11,   367,    12,  -165,  -165,     0,
+      15,    16,  -165,  -165,  -165,  -165,  -165,  -165,  -165,  -165,
+       0,  -165,     0,  -165,  -165,  -165,     0,    69,  -165,    26,
+    -165,  -165,  -165,  -165,     0,     0,     0,  -165,  -165,  -165,
+    -165,  -165,  -165,  -165,  -165,  -165,    32,  -165,  -165,  -165,
+    -165,  -165,  -165,    33,    34,    35,    36,    37,  -165,  -165,
+    -165,  -165,     0,  -165,  -165,  -165,  -165,  -165,  -165,    41,
+      42,  -165,  -165,     0,  -165,    73,  -165,  -165,    44,  -165,
+     -66,     1,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     2,     0,     0,     3,     4,     0,
+       0,     5,   -66,     7,     8,     9,    68,    11,     0,    12,
+     -66,   -66,     0,    15,    16,     0,   -66,   -66,   -66,   -66,
+     -66,   -66,   -66,     0,     0,     0,     0,   -66,     0,     0,
+      69,   -66,    26,     0,     0,   -66,     0,     0,     0,     0,
+     -66,   -66,   -66,   -66,   -66,   -66,   -66,   -66,   -66,    32,
+     -66,     0,     0,   -66,   -66,   -66,    33,    34,    35,    36,
+      37,     0,     0,   -66,   -66,     0,   -66,   -66,   -66,   -66,
+     -66,   -66,    41,    42,   -66,   -66,     0,   -66,    77,  -165,
+       1,    44,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     2,     0,     0,     3,     4,     0,     0,
+       5,  -165,     7,     8,     9,    68,    11,     0,    12,  -165,
+    -165,     0,    15,    16,     0,  -165,  -165,  -165,  -165,  -165,
+    -165,  -165,     0,     0,     0,     0,  -165,     0,     0,    69,
+    -165,    26,     0,     0,  -165,     0,     0,     0,     0,  -165,
+    -165,  -165,     0,     0,     0,     0,     0,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+       0,     0,  -165,  -165,     0,  -165,  -165,  -165,  -165,     1,
+       0,    41,    42,     0,     0,     0,  -165,    70,     0,  -165,
+      44,     0,     2,     0,     0,     3,     4,     0,     0,     5,
+    -165,     7,     8,     9,    68,    11,     0,    12,  -165,  -165,
+       0,    15,    16,     0,  -165,  -165,  -165,  -165,  -165,  -165,
+    -165,     0,     0,     0,     0,  -165,     0,     0,    69,  -165,
+      26,     0,     0,  -165,     0,     0,     0,     0,  -165,  -165,
+    -165,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,  -165,  -165,     0,  -165,  -165,  -165,    -4,     1,     0,
+      41,    42,     0,     0,     0,  -165,    43,     0,  -165,    44,
+       0,     2,     0,     0,     3,     4,     0,     0,     5,     6,
+       7,     8,     9,    10,    11,     0,    12,     0,    13,    14,
+      15,    16,     0,     0,     0,    17,    18,    19,    20,    21,
+       0,     0,    22,     0,    23,     0,     0,    24,    25,    26,
+       0,     0,    27,     0,     0,     0,    28,    29,    30,    31,
+       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
+       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
+      38,    39,    40,  -154,     1,     0,     0,     0,     0,    41,
+      42,     0,     0,     0,    -4,    43,     0,     2,    44,     0,
+       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
+      11,     0,    12,   337,    13,     0,    15,    16,     0,     0,
+       0,    17,    18,    19,    20,    21,     0,     0,     0,     0,
+      23,     0,     0,    24,    25,    26,     0,     0,    27,     0,
+       0,     0,     0,    29,    30,    31,     0,     0,     0,     0,
+       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
+      34,    35,    36,    37,     0,     0,    38,    39,  -152,     1,
+       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+     319,    43,     2,     0,    44,     3,     4,     0,     0,     5,
+       6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
+       0,    15,    16,     0,     0,     0,    17,    18,    19,    20,
+      21,     0,     0,     0,     0,    23,     0,     0,    24,    25,
+      26,     0,     0,    27,     0,     0,     0,     0,    29,    30,
+      31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,    38,    39,  -149,     1,     0,     0,     0,     0,     0,
+      41,    42,     0,     0,     0,   319,    43,     2,     0,    44,
+       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
+      11,     0,    12,     0,    13,     0,    15,    16,     0,     0,
+       0,    17,    18,    19,    20,    21,     0,     0,     0,     0,
+      23,     0,     0,    24,    25,    26,     0,     0,    27,     0,
+       0,     0,     0,    29,    30,    31,     0,     0,     0,     0,
+       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
+      34,    35,    36,    37,     0,     0,    38,    39,     0,     1,
+       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+     319,    43,     2,     0,    44,     3,     4,     0,     0,     5,
+       6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
+       0,    15,    16,     0,   -53,   -53,    17,    18,    19,    20,
+      21,     0,     0,     0,     0,    23,     0,     0,    24,    25,
+      26,     0,     0,    27,     0,     0,     0,     0,    29,    30,
+      31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,    38,    39,     0,   -53,     1,     0,     0,     0,     0,
+      41,    42,     0,     0,     0,   319,    43,     0,     2,    44,
+       0,     3,     4,     0,     0,     5,     6,     7,     8,     9,
+      10,    11,     0,    12,     0,    13,     0,    15,    16,     0,
+       0,     0,    17,    18,    19,    20,    21,     0,     0,     0,
+       0,    23,     0,     0,    24,    25,    26,     0,     0,    27,
+       0,     0,     0,     0,    29,    30,    31,     0,     0,     0,
+       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
+      33,    34,    35,    36,    37,     0,     0,    38,    39,     0,
+       1,     0,   -57,     0,     0,     0,    41,    42,     0,     0,
+       0,   319,    43,     2,     0,    44,     3,     4,     0,     0,
        5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,    14,    15,    16,     0,     0,     0,    17,    18,    19,
-      20,    21,     0,     0,    22,     0,    23,     0,     0,    24,
-      25,    26,     0,     0,    27,     0,     0,     0,    28,    29,
+      13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
+      20,    21,     0,     0,     0,     0,    23,     0,     0,    24,
+      25,    26,     0,     0,    27,     0,     0,     0,     0,    29,
+      30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+       0,     0,    38,    39,     0,     1,   -53,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,   319,    43,     2,     0,
+      44,     3,     4,     0,     0,     5,     6,     7,     8,     9,
+      10,    11,     0,    12,     0,    13,     0,    15,    16,     0,
+       0,     0,    17,    18,    19,    20,    21,     0,     0,     0,
+       0,    23,     0,     0,    24,    25,    26,     0,     0,    27,
+       0,     0,     0,     0,    29,    30,    31,     0,     0,     0,
+       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
+      33,    34,    35,    36,    37,     0,     0,    38,    39,     0,
+       1,   -57,     0,     0,     0,     0,    41,    42,     0,     0,
+       0,   319,    43,     2,     0,    44,     3,     4,     0,     0,
+       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
+      13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
+      20,    21,     0,     0,     0,     0,    23,     0,     0,    24,
+      25,    26,     0,     0,    27,     0,     0,     0,     0,    29,
       30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    38,    39,    40,  -155,     1,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,    -4,    43,     0,     2,
+       0,     0,    38,    39,     0,   -56,     1,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,   319,    43,     0,     2,
       44,     0,     3,     4,     0,     0,     5,     6,     7,     8,
-       9,    10,    11,     0,    12,   338,    13,     0,    15,    16,
+       9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
        0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
        0,     0,    23,     0,     0,    24,    25,    26,     0,     0,
       27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
        0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
        0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-    -153,     1,     0,     0,     0,     0,     0,    41,    42,     0,
-       0,     0,   303,    43,     2,     0,    44,     3,     4,     0,
+       0,     1,   379,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,   319,    43,     2,     0,    44,     3,     4,     0,
        0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
        0,    13,     0,    15,    16,     0,     0,     0,    17,    18,
       19,    20,    21,     0,     0,     0,     0,    23,     0,     0,
       24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
       29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
        0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,    38,    39,  -150,     1,     0,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,   303,    43,     2,
+      37,     0,     0,    38,    39,     0,     1,   381,     0,     0,
+       0,     0,    41,    42,     0,     0,     0,   319,    43,     2,
        0,    44,     3,     4,     0,     0,     5,     6,     7,     8,
        9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
        0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
-       0,     0,    23,     0,     0,    24,    25,    26,     0,     0,
-      27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
+       0,     0,     0,     0,     0,    24,     0,    26,     0,     0,
+       0,     0,     0,     0,     0,    29,    30,    31,     0,     0,
        0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-       0,     1,     0,     0,     0,     0,     0,    41,    42,     0,
-       0,     0,   303,    43,     2,     0,    44,     3,     4,     0,
-       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
-       0,    13,     0,    15,    16,     0,   -54,   -54,    17,    18,
-      19,    20,    21,     0,     0,     0,     0,    23,     0,     0,
-      24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
-      29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
-       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,    38,    39,     0,   -54,     1,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,   303,    43,     0,
-       2,    44,     0,     3,     4,     0,     0,     5,     6,     7,
-       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
-      16,     0,     0,     0,    17,    18,    19,    20,    21,     0,
-       0,     0,     0,    23,     0,     0,    24,    25,    26,     0,
-       0,    27,     0,     0,     0,     0,    29,    30,    31,     0,
-       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
-      39,     0,     1,   -54,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,   303,    43,     2,     0,    44,     3,     4,
-       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,     0,    13,     0,    15,    16,     0,     0,     0,    17,
-      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
-       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
-       0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,    38,    39,     0,     1,     0,   -58,
-       0,     0,     0,    41,    42,     0,     0,     0,   303,    43,
-       2,     0,    44,     3,     4,     0,     0,     5,     6,     7,
-       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
-      16,     0,     0,     0,    17,    18,    19,    20,    21,     0,
-       0,     0,     0,    23,     0,     0,    24,    25,    26,     0,
-       0,    27,     0,     0,     0,     0,    29,    30,    31,     0,
-       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
-      39,     0,     1,   -58,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,   303,    43,     2,     0,    44,     3,     4,
-       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,     0,    13,     0,    15,    16,     0,     0,     0,    17,
-      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
-       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
-       0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,    38,    39,     0,   -57,     1,     0,
-       0,     0,     0,    41,    42,     0,     0,     0,   303,    43,
-       0,     2,    44,     0,     3,     4,     0,     0,     5,     6,
-       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
-      15,    16,     0,     0,     0,    17,    18,    19,    20,    21,
-       0,     0,     0,     0,    23,     0,     0,    24,    25,    26,
-       0,     0,    27,     0,     0,     0,     0,    29,    30,    31,
-       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-      38,    39,     0,     1,   379,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,   303,    43,     2,     0,    44,     3,
-       4,     0,     0,     5,     6,     7,     8,     9,    10,    11,
-       0,    12,     0,    13,     0,    15,    16,     0,     0,     0,
-      17,    18,    19,    20,    21,     0,     0,     0,     0,    23,
-       0,     0,    24,    25,    26,     0,     0,    27,     0,     0,
-       0,     0,    29,    30,    31,     0,     0,     0,     0,     0,
-       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
-      35,    36,    37,     0,     0,    38,    39,     0,     1,   381,
-       0,     0,     0,     0,    41,    42,     0,     0,     0,   303,
-      43,     2,     0,    44,     3,     4,     0,     0,     5,     6,
+       0,    33,    34,    35,    36,    37,     0,     0,     1,    39,
+       0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
+       0,     2,     0,    43,     3,     4,    44,     0,     5,     6,
        7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
-      15,    16,     0,     0,     0,    17,    18,    19,    20,    21,
+      15,    16,     0,     0,     0,    17,    18,    19,    20,     0,
        0,     0,     0,     0,     0,     0,     0,    24,     0,    26,
        0,     0,     0,     0,     0,     0,     0,    29,    30,    31,
        0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
        0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
        1,    39,     0,     0,     0,     0,     0,     0,     0,    41,
       42,     0,     0,     2,     0,    43,     3,     4,    44,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
-      20,     0,     0,     0,     0,     0,     0,     0,     0,    24,
-       0,    26,     0,     0,     0,     0,     0,     0,     0,    29,
-      30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
-       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,     1,    39,     0,     0,     0,     0,     0,     0,
-       0,    41,    42,     0,     0,     2,     0,    43,     3,     4,
-      44,     0,     5,     0,     7,     8,     9,    69,    11,     0,
-      12,     0,     0,     0,    15,    16,     0,     0,     0,     1,
-       0,     0,     0,     0,     0,     0,     0,    85,    86,    87,
-      88,    70,     2,    26,     0,     3,     4,     0,     0,     5,
-       0,     7,     8,     9,    69,    11,     0,    12,     0,     0,
-      32,    15,    16,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,    85,     0,    87,     0,    70,     0,
-      26,     0,     0,    41,    42,     0,     0,     0,     0,    43,
-       0,     0,    44,     0,     0,     0,     0,    32,     0,     0,
+       5,     0,     7,     8,     9,    68,    11,     0,    12,     0,
+       0,     0,    15,    16,     0,     0,     0,     1,     0,     0,
+       0,     0,     0,     0,     0,    84,    85,    86,    87,    69,
+       2,    26,     0,     3,     4,     0,     0,     5,     0,     7,
+       8,     9,    68,    11,     0,    12,     0,     0,    32,    15,
+      16,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+       0,     0,    84,     0,    86,     0,    69,     0,    26,     0,
+       0,    41,    42,     0,     0,     0,     0,    43,     0,     0,
+      44,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,    34,    35,    36,    37,     0,     0,     1,
+       0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
+       0,     0,     2,     0,    43,     3,     4,    44,     0,     5,
+       0,     7,     8,     9,    68,    11,     0,    12,     0,     0,
+       0,    15,    16,     0,     0,     0,     1,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    69,     2,
+      26,     0,     3,     4,     0,    92,     5,     0,     7,     8,
+       9,    68,    11,     0,    12,     0,     0,    32,    15,    16,
        0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,     1,     0,     0,     0,     0,     0,     0,     0,     0,
-      41,    42,     0,     0,     2,     0,    43,     3,     4,    44,
-       0,     5,     0,     7,     8,     9,    69,    11,     0,    12,
-       0,     0,     0,    15,    16,     0,     0,     0,     1,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      70,     2,    26,     0,     3,     4,     0,    93,     5,     0,
-       7,     8,     9,    69,    11,     0,    12,     0,     0,    32,
-      15,    16,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,     0,     0,     0,     0,    70,     0,    26,
-       0,     0,    41,    42,     0,     0,     0,     0,    43,  -166,
-    -166,    44,     0,     0,     0,     0,    32,     0,     0,     0,
+       0,     0,     0,     0,     0,    69,     0,    26,     0,     0,
+      41,    42,     0,     0,     0,     0,    43,  -165,  -165,    44,
+       0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
+       0,    33,    34,    35,    36,    37,     0,     0,     1,     0,
+       0,     0,     0,     0,   -34,     0,     0,    41,    42,     0,
+       0,     2,     0,    43,     3,     4,    44,     0,     5,     0,
+       7,     8,     9,    68,    11,     0,    12,     0,     0,     0,
+      15,    16,   137,   138,   139,   140,   141,   142,     0,   143,
+       0,     0,   144,   145,   146,     0,     0,    69,     0,    26,
+       0,     0,     0,     0,     0,     0,     0,     0,   147,   148,
+     149,   150,   151,   152,   153,     0,    32,     0,     0,     0,
        0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-       1,     0,     0,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,     0,     2,     0,    43,     3,     4,    44,     0,
-       5,     0,     7,     8,     9,    69,    11,     0,    12,     0,
-       0,     0,    15,    16,     0,     0,     0,    85,     0,    87,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    70,
-       0,    26,     0,     0,   139,   140,   141,   142,   143,   144,
-       0,   145,     0,     0,   146,   147,   148,     0,    32,     0,
-       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-     149,   150,   151,   152,   153,   154,   155,   191,     0,     0,
-       0,    41,    42,   192,     0,     0,     0,    43,     0,     0,
-      44,     0,   139,   140,   141,   142,   143,   144,     0,   145,
-       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
-     193,     0,     0,     0,     0,     0,   194,     0,   149,   150,
-     151,   152,   153,   154,   155,   139,   140,   141,   142,   143,
-     144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
-       0,     0,     0,   195,     0,     0,     0,     0,     0,   196,
-       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
-     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,   197,     0,     0,     0,
-       0,     0,   198,     0,   149,   150,   151,   152,   153,   154,
-     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
-       0,   146,   147,   148,     0,     0,     0,     0,     0,   296,
-       0,     0,     0,     0,     0,     0,     0,   149,   150,   151,
-     152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
-       0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
-       0,     0,   297,     0,     0,     0,     0,     0,     0,     0,
-     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
-     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
-       0,     0,     0,     0,     0,   298,     0,     0,     0,     0,
-       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
-     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
-     146,   147,   148,     0,     0,     0,     0,     0,   299,     0,
-       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
-     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   201,     0,   149,
-     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
-     143,   144,   187,   145,     0,     0,   146,   147,   148,   139,
-     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   155,     0,
-     202,     0,     0,     0,     0,   149,   150,   151,   152,   153,
-     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
-       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   149,   150,
-     151,   152,   153,   154,   155,     0,     0,     0,   206,   139,
-     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,     0,     0,     0,     0,     0,   199,   200,     0,
-       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
-     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
-       0,     0,   146,   147,   148,   139,   140,   141,   142,     0,
-       0,     0,   145,     0,     0,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,     0,     0,     0,     0,     0,
-       0,   149,   150,   151,   152,   153,   154,   155
+       0,     0,    84,     0,    86,     0,     0,     0,     0,    41,
+      42,     0,     0,     0,     0,    43,     0,     0,    44,   137,
+     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
+     145,   146,     0,     0,     0,     0,     0,   190,     0,     0,
+       0,     0,     0,   191,     0,   147,   148,   149,   150,   151,
+     152,   153,   137,   138,   139,   140,   141,   142,     0,   143,
+       0,     0,   144,   145,   146,     0,     0,     0,     0,     0,
+     192,     0,     0,     0,     0,     0,   193,     0,   147,   148,
+     149,   150,   151,   152,   153,   137,   138,   139,   140,   141,
+     142,     0,   143,     0,     0,   144,   145,   146,     0,     0,
+       0,     0,     0,   194,     0,     0,     0,     0,     0,   195,
+       0,   147,   148,   149,   150,   151,   152,   153,   137,   138,
+     139,   140,   141,   142,     0,   143,     0,     0,   144,   145,
+     146,     0,     0,     0,     0,     0,   196,     0,     0,     0,
+       0,     0,   197,     0,   147,   148,   149,   150,   151,   152,
+     153,   137,   138,   139,   140,   141,   142,     0,   143,     0,
+       0,   144,   145,   146,     0,     0,     0,     0,     0,   295,
+       0,     0,     0,     0,     0,     0,     0,   147,   148,   149,
+     150,   151,   152,   153,   137,   138,   139,   140,   141,   142,
+       0,   143,     0,     0,   144,   145,   146,     0,     0,     0,
+       0,     0,   296,     0,     0,     0,     0,     0,     0,     0,
+     147,   148,   149,   150,   151,   152,   153,   137,   138,   139,
+     140,   141,   142,     0,   143,     0,     0,   144,   145,   146,
+       0,     0,     0,     0,     0,   297,     0,     0,     0,     0,
+       0,     0,     0,   147,   148,   149,   150,   151,   152,   153,
+     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
+     144,   145,   146,     0,     0,     0,     0,     0,   298,     0,
+       0,     0,     0,     0,     0,     0,   147,   148,   149,   150,
+     151,   152,   153,   137,   138,   139,   140,   141,   142,     0,
+     143,     0,     0,   144,   145,   146,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   200,     0,   147,
+     148,   149,   150,   151,   152,   153,   137,   138,   139,   140,
+     141,   142,   186,   143,     0,     0,   144,   145,   146,   137,
+     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,     0,
+     201,     0,     0,     0,     0,   147,   148,   149,   150,   151,
+     152,   153,   137,   138,   139,   140,   141,   142,     0,   143,
+       0,     0,   144,   145,   146,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   147,   148,
+     149,   150,   151,   152,   153,     0,     0,     0,   205,   137,
+     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
+     145,   146,     0,     0,     0,     0,     0,   198,   199,     0,
+       0,     0,     0,     0,     0,   147,   148,   149,   150,   151,
+     152,   153,   137,   138,   139,   140,   141,   142,     0,   143,
+       0,     0,   144,   145,   146,   137,   138,   139,   140,     0,
+       0,     0,   143,     0,     0,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,     0,     0,     0,     0,     0,
+       0,   147,   148,   149,   150,   151,   152,   153
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,   132,    82,    10,   167,   272,    30,   287,    54,
-       4,    99,   100,    19,     8,   282,     6,     7,    24,    97,
-      65,     0,   307,    29,    30,    26,    32,    33,    34,    35,
-      36,    37,    38,   300,   301,    41,    42,    43,    44,    48,
-      54,   326,   308,    51,    24,    51,    26,    53,    54,    51,
-     329,    65,   131,    70,    17,    18,    19,   324,    54,    97,
-       1,    26,   100,    26,    70,    71,    89,     0,    74,    65,
-      33,    97,    78,    14,   100,    81,    17,    94,    95,    85,
-      21,    71,   105,    77,    74,    26,    27,   217,    29,   374,
-      97,    81,   358,    70,    56,    57,    76,    77,    78,    79,
-      70,    99,   100,    73,    98,    99,    97,    43,    27,   100,
-      29,    99,   100,    36,    37,    92,    93,    94,    95,   100,
-      98,    91,    92,    93,    94,    95,   100,   289,    26,   135,
-      46,    26,    26,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     129,   157,    26,    54,    53,   161,    26,    98,    26,   165,
-     101,    26,   273,   103,   103,   171,   245,   102,   100,   100,
-     176,   177,   283,   179,   180,    26,   100,   183,   184,   185,
-     174,   187,    65,   100,    48,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   306,   100,    53,   309,    26,
-     311,    44,    26,    26,   210,    26,    53,    26,   214,    87,
-      54,    88,    87,   207,   208,    86,    36,    86,    26,    54,
-      35,   100,    54,    86,    26,    53,   356,    86,   339,    86,
-     202,   315,   129,   175,    -1,   211,   366,    54,    54,    -1,
-      54,    -1,   372,    -1,   355,   251,    -1,   326,   254,   255,
-      -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,   369,    -1,
-     371,    -1,    -1,    -1,    -1,   344,   377,    -1,    -1,   348,
-      -1,    -1,    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   362,   290,   364,    -1,    -1,    -1,    -1,
-     296,   297,   298,   299,    -1,    -1,    -1,    -1,    -1,    -1,
-     294,    -1,    -1,    63,    64,    65,    66,    67,    68,    -1,
-      70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   332,     0,     1,    89,
-      90,    91,    92,    93,    94,    95,    -1,    -1,    -1,   345,
+       6,     7,    81,   165,    10,    97,   271,     4,    30,   215,
+     312,     8,   285,    19,    54,    48,    95,    27,    24,    29,
+       0,    51,   324,    29,    30,    65,    32,    33,    34,    35,
+      36,    37,    38,    51,   281,    41,    42,    43,    44,   304,
+       6,     7,   280,   290,   250,    54,    52,    53,    26,    97,
+     129,    70,   100,    26,   327,   302,    65,    24,   305,    26,
+     307,   299,   300,    69,    70,    97,    88,    73,   100,    54,
+       1,    77,   374,     0,    80,    94,    95,    97,    84,    76,
+      65,    43,   104,    14,   322,    97,    17,    98,   100,    26,
+      21,   338,   100,   358,    70,    26,    27,    73,    29,   100,
+      97,    98,    56,    57,    70,    99,   100,    73,   355,    76,
+      77,    78,    79,    46,    80,    91,    92,    93,    94,    95,
+      99,   100,   369,    26,   371,   287,    26,   133,    99,   100,
+     377,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   128,   155,
+     356,    36,    37,   159,    26,    54,    53,   163,    26,    26,
+     366,    26,   103,   169,   243,   103,   372,    98,   174,   175,
+     101,   177,   178,   179,    70,   172,   182,   183,   184,   102,
+     186,   100,   100,    26,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   100,    65,    92,    93,    94,    95,
+      48,    53,     1,   209,    26,   100,   212,   100,    44,   206,
+     207,    26,    26,    26,    53,    14,    26,    54,    17,    18,
+      86,    26,    21,    87,    23,    24,    25,    26,    27,    88,
+      29,    87,    36,    86,    33,    34,    54,    35,   100,    86,
+      17,    18,    19,   249,    26,   324,    54,   253,   254,    26,
+      53,    50,    86,    52,    86,   334,    33,   128,   201,   311,
+      53,   173,    53,    53,   210,   344,    -1,    -1,    -1,   348,
+      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,   288,   362,    -1,   364,    44,    -1,    -1,   295,
+     296,   297,   298,    92,    93,    -1,   293,    -1,    -1,    98,
+      -1,    -1,   101,   102,   103,    63,    64,    65,    66,    67,
+      68,    -1,    70,    71,    72,    73,    74,    75,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   331,    -1,     0,     1,    -1,
+      -1,    89,    90,    91,    92,    93,    94,    95,    -1,   345,
       -1,    14,    -1,    -1,    17,    18,    -1,   353,    21,    22,
       23,    24,    25,    26,    27,   361,    29,    30,    31,    -1,
       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
@@ -1362,61 +1356,121 @@ static const yytype_int16 yycheck[] =
       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
       83,    84,    -1,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,     1,    97,    98,    99,   100,   101,   102,
-      -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,    44,    17,
-      18,    -1,    -1,    21,    -1,    23,    24,    25,    26,    27,
-      -1,    29,    -1,    -1,    -1,    33,    34,    63,    64,    65,
-      66,    67,    68,    -1,    70,    71,    72,    73,    74,    75,
-      -1,    -1,    50,    -1,    52,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    89,    90,    91,    92,    93,    94,    95,
-      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
-      78,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     0,     1,    92,    93,    -1,    -1,    -1,    -1,
-      98,    -1,    -1,   101,   102,   103,    14,    -1,    -1,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
-      -1,    29,    30,    31,    -1,    33,    34,    -1,    36,    37,
-      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,
-      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
-      -1,    -1,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    -1,    -1,    73,    74,    75,    76,    77,
-      78,    79,    80,    -1,    -1,    83,    84,    -1,    86,    87,
-      88,    89,    90,    91,    92,    93,    94,    95,    -1,    97,
-      98,     0,     1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    30,    31,    -1,    33,    34,    -1,    36,    37,    38,
-      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
-      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
-      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    83,    84,    -1,    86,    87,    88,
-       0,     1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
-      -1,   100,   101,    -1,    14,    -1,    -1,    17,    18,    -1,
+      93,    94,    95,    -1,    97,    98,    99,   100,   101,   102,
+       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
       30,    31,    -1,    33,    34,    -1,    36,    37,    38,    39,
       40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,
       50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
-      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    -1,    83,    84,    -1,    86,    87,    88,     0,
-       1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,
-     100,   101,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    -1,    -1,    73,    74,    75,    76,    77,    78,    79,
+      80,    -1,    -1,    83,    84,    -1,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    -1,    97,    98,     0,
+       1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
+      31,    -1,    33,    34,    -1,    36,    37,    38,    39,    40,
+      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
+      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
+      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      -1,    -1,    83,    84,    -1,    86,    87,    88,     0,     1,
+      -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,   100,
+     101,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
+      -1,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
+      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
+      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,    83,    84,    -1,    86,    87,    88,     0,     1,    -1,
+      92,    93,    -1,    -1,    -1,    97,    98,    -1,   100,   101,
+      -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    32,
+      33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    42,
+      -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,    52,
+      -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,    62,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
+      83,    84,    85,     0,     1,    -1,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    -1,    97,    98,    -1,    14,   101,    -1,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    30,    31,    -1,    33,    34,    -1,    -1,
+      -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
+      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
+      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      77,    78,    79,    80,    -1,    -1,    83,    84,     0,     1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      97,    98,    14,    -1,   101,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
+      -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
+      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
+      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,    83,    84,     0,     1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    97,    98,    14,    -1,   101,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
+      -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
+      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
+      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      77,    78,    79,    80,    -1,    -1,    83,    84,    -1,     1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      97,    98,    14,    -1,   101,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
+      -1,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
+      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
+      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,    83,    84,    -1,    86,     1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    97,    98,    -1,    14,   101,
+      -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
+      -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,
+      -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
+      -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
+      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    78,    79,    80,    -1,    -1,    83,    84,    -1,
+       1,    -1,    88,    -1,    -1,    -1,    92,    93,    -1,    -1,
+      -1,    97,    98,    14,    -1,   101,    17,    18,    -1,    -1,
       21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    32,    33,    34,    -1,    -1,    -1,    38,    39,    40,
-      41,    42,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,
-      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,
+      31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
+      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
+      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
       61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
       -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    83,    84,    85,     0,     1,    -1,    -1,    -1,
+      -1,    -1,    83,    84,    -1,     1,    87,    -1,    -1,    -1,
+      -1,    92,    93,    -1,    -1,    -1,    97,    98,    14,    -1,
+     101,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
+      -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,
+      -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
+      -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
+      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    78,    79,    80,    -1,    -1,    83,    84,    -1,
+       1,    87,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
+      -1,    97,    98,    14,    -1,   101,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
+      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
+      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
+      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      -1,    -1,    83,    84,    -1,    86,     1,    -1,    -1,    -1,
       -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,    14,
      101,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    34,
+      25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
       -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
       -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
       55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
       -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
       -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
-       0,     1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,    -1,
       -1,    -1,    97,    98,    14,    -1,   101,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
       -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,
@@ -1424,126 +1478,61 @@ static const yytype_int16 yycheck[] =
       50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
       60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
       -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    -1,    83,    84,     0,     1,    -1,    -1,    -1,
+      80,    -1,    -1,    83,    84,    -1,     1,    87,    -1,    -1,
       -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    14,
       -1,   101,    17,    18,    -1,    -1,    21,    22,    23,    24,
       25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
       -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
       -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
-      -1,     1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
-      -1,    -1,    97,    98,    14,    -1,   101,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    31,    -1,    33,    34,    -1,    36,    37,    38,    39,
-      40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,
-      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
-      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    -1,    83,    84,    -1,    86,     1,    -1,    -1,
-      -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,
-      14,   101,    -1,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
-      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
-      84,    -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
-      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
-      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
-      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    83,    84,    -1,     1,    -1,    88,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
-      14,    -1,   101,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
-      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
-      84,    -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
-      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
-      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
-      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    83,    84,    -1,    86,     1,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
-      -1,    14,   101,    -1,    17,    18,    -1,    -1,    21,    22,
+      -1,    76,    77,    78,    79,    80,    -1,    -1,     1,    84,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    14,    -1,    98,    17,    18,   101,    -1,    21,    22,
       23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
-      33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,
-      -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,
-      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-      83,    84,    -1,     1,    87,    -1,    -1,    -1,    -1,    92,
-      93,    -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
-      -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
-      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,
-      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
-      -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,
-      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
-      78,    79,    80,    -1,    -1,    83,    84,    -1,     1,    87,
-      -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,
-      98,    14,    -1,   101,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
-      33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    42,
+      33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    62,
       -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
       -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
        1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
       93,    -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
-      41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
-      -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
-      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,     1,    84,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,    18,
-     101,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,     1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,
-      49,    50,    14,    52,    -1,    17,    18,    -1,    -1,    21,
+      21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      -1,    -1,    33,    34,    -1,    -1,    -1,     1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,
+      14,    52,    -1,    17,    18,    -1,    -1,    21,    -1,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    -1,    69,    33,
+      34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      -1,    -1,    46,    -1,    48,    -1,    50,    -1,    52,    -1,
+      -1,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,
+     101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,     1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,    21,
       -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
-      69,    33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    46,    -1,    48,    -1,    50,    -1,
-      52,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
-      -1,    -1,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    33,    34,    -1,    -1,    -1,     1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    14,
+      52,    -1,    17,    18,    -1,    20,    21,    -1,    23,    24,
+      25,    26,    27,    -1,    29,    -1,    -1,    69,    33,    34,
       -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    -1,    -1,    14,    -1,    98,    17,    18,   101,
-      -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    -1,    -1,    33,    34,    -1,    -1,    -1,     1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      50,    14,    52,    -1,    17,    18,    -1,    20,    21,    -1,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    69,
-      33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
-      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,    99,
-     100,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    -1,    98,    99,   100,   101,
+      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    77,    78,    79,    80,    -1,    -1,     1,    -1,
+      -1,    -1,    -1,    -1,    35,    -1,    -1,    92,    93,    -1,
+      -1,    14,    -1,    98,    17,    18,   101,    -1,    21,    -1,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,
+      33,    34,    63,    64,    65,    66,    67,    68,    -1,    70,
+      -1,    -1,    73,    74,    75,    -1,    -1,    50,    -1,    52,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
+      91,    92,    93,    94,    95,    -1,    69,    -1,    -1,    -1,
       -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-       1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,
-      21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      -1,    -1,    33,    34,    -1,    -1,    -1,    46,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
-      -1,    52,    -1,    -1,    63,    64,    65,    66,    67,    68,
-      -1,    70,    -1,    -1,    73,    74,    75,    -1,    69,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      89,    90,    91,    92,    93,    94,    95,    48,    -1,    -1,
-      -1,    92,    93,    54,    -1,    -1,    -1,    98,    -1,    -1,
-     101,    -1,    63,    64,    65,    66,    67,    68,    -1,    70,
+      -1,    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,    63,
+      64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
+      74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
+      -1,    -1,    -1,    54,    -1,    89,    90,    91,    92,    93,
+      94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
       -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
       48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,
       91,    92,    93,    94,    95,    63,    64,    65,    66,    67,
@@ -1597,40 +1586,40 @@ static const yytype_uint8 yystos[] =
       41,    42,    45,    47,    50,    51,    52,    55,    59,    60,
       61,    62,    69,    76,    77,    78,    79,    80,    83,    84,
       85,    92,    93,    98,   101,   105,   106,   107,   108,   110,
-     118,   122,   123,   127,   131,   132,   133,   134,   135,   136,
-     143,   145,   147,   151,   156,   159,    97,    26,   132,    26,
-      50,    98,   133,   157,    98,   157,   132,    48,    98,   133,
-     158,   146,   150,    51,   137,    46,    47,    48,    49,   133,
-     144,   148,    51,    20,   133,    56,    57,    17,    18,    19,
-      26,    33,    26,    26,   133,   133,   144,   139,   133,   133,
-     133,   133,   133,   133,   133,   138,   152,   133,   133,   133,
-      27,    29,   103,   133,   160,   161,   162,   163,     0,    97,
-     133,    43,   133,   109,   121,   127,   133,   136,   156,    63,
-      64,    65,    66,    67,    68,    70,    73,    74,    75,    89,
-      90,    91,    92,    93,    94,    95,   128,    98,   133,   133,
-     157,   100,   157,   132,   157,   100,   157,   128,    26,   140,
-     133,    46,   144,    26,    26,    44,    71,    72,    26,    54,
-      65,   132,   132,    54,    65,    54,    53,    56,   144,    26,
-     142,    48,    54,    48,    54,    48,    54,    48,    54,    81,
-      82,    54,    97,    26,   141,    26,    99,   103,   103,   102,
-     100,   100,   105,   124,   128,   124,   129,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,    26,   153,    99,   133,    99,
-      99,   133,   153,   100,   133,   149,   132,    26,   135,   133,
-     133,    65,   133,   133,    54,    65,    48,   133,   133,   133,
-     133,   100,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   117,   117,   100,   132,   132,   133,    27,    29,
-     163,   130,   133,    53,   124,    97,   100,    97,    26,   128,
-      44,   133,   133,   133,    26,    26,    48,    48,    48,    48,
-     108,   130,    26,    97,   110,   125,   129,   130,    53,   155,
-      26,   155,   153,   133,   111,   114,   132,   133,   133,   133,
-     133,   129,   129,    87,   130,   125,   108,   130,   130,    97,
-     126,   126,    54,    88,   129,   119,   125,   128,    30,   155,
-     112,   115,   133,    87,    36,    37,   120,   128,    36,    86,
-      26,   154,   130,    54,    35,   128,   133,    86,   128,   100,
-     133,    54,   130,   124,   108,    26,   113,   133,   128,    53,
-     128,   124,   116,    86,   130,    86,   130,   124,   125,    87,
-     130,    87
+     118,   122,   126,   130,   131,   132,   133,   134,   135,   142,
+     144,   146,   150,   155,   158,    97,    26,   131,    26,    50,
+      98,   132,   156,    98,   156,   131,    48,    98,   132,   157,
+     145,   149,    51,   136,    46,    47,    48,    49,   132,   143,
+     147,    51,    20,   132,    56,    57,    17,    18,    19,    26,
+      33,    26,    26,   132,   132,   143,   138,   132,   132,   132,
+     132,   132,   132,   132,   137,   151,   132,   132,   132,    27,
+      29,   103,   132,   159,   160,   161,   162,     0,    97,    43,
+     132,   109,   121,   126,   132,   135,   155,    63,    64,    65,
+      66,    67,    68,    70,    73,    74,    75,    89,    90,    91,
+      92,    93,    94,    95,   127,    98,   132,   132,   156,   100,
+     156,   131,   156,   100,   156,   127,    26,   139,   132,    46,
+     143,    26,    26,    44,    71,    72,    26,   127,    54,    65,
+     131,   131,    54,    65,    54,    53,    56,   143,    26,   141,
+      48,    54,    48,    54,    48,    54,    48,    54,    81,    82,
+      54,    97,    26,   140,    26,    99,   103,   103,   102,   100,
+     100,   105,   127,   123,   128,   132,   132,   132,   132,   132,
+     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     132,   132,   132,    26,   152,    99,   132,    99,    99,   132,
+     152,   100,   132,   148,   131,    26,   134,   132,   132,    65,
+     132,   132,   132,    54,    65,    48,   132,   132,   132,   132,
+     100,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     132,   117,   117,   100,   131,   131,   132,    27,    29,   162,
+     132,    53,   123,    97,   100,    97,    26,   127,    44,   132,
+     123,   132,   132,    26,    26,    48,    48,    48,    48,   108,
+     129,    26,   128,   129,    53,   154,    26,   154,   152,   132,
+     111,   114,   129,   131,   132,   132,   132,   132,   128,    97,
+     110,   128,   129,   124,   108,   129,   129,    97,   125,   125,
+     124,    54,    88,   128,   119,   124,   127,    30,   154,   112,
+     115,    87,   132,    87,    36,    37,   120,   127,    36,    86,
+      26,   153,   129,    54,    35,   127,   132,    86,   127,   100,
+     132,    54,   129,   123,   108,    26,   113,   132,   127,    53,
+     127,   123,   116,    86,   129,    86,   129,   123,   124,    87,
+     129,    87
 };
 
   /* YYR1YYN -- Symbol number of symbol that rule YYN derives.  */
@@ -1641,20 +1630,20 @@ static const yytype_uint8 yyr1[] =
      108,   108,   108,   109,   109,   109,   109,   110,   110,   110,
      111,   112,   113,   110,   114,   115,   116,   110,   110,   110,
      110,   110,   110,   117,   118,   118,   119,   119,   120,   121,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     130,   130,   131,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   134,   134,   134,   134,   134,   134,
-     134,   134,   135,   135,   136,   136,   136,   136,   136,   137,
-     136,   138,   136,   139,   136,   136,   136,   136,   136,   140,
-     140,   141,   141,   142,   142,   143,   143,   143,   143,   143,
-     143,   144,   144,   145,   145,   145,   146,   145,   148,   149,
-     147,   147,   150,   147,   147,   147,   152,   151,   153,   153,
-     153,   154,   154,   154,   155,   156,   157,   157,   157,   158,
-     158,   159,   160,   160,   160,   160,   161,   161,   162,   162,
-     163,   163
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   129,
+     129,   130,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     132,   132,   132,   133,   133,   133,   133,   133,   133,   133,
+     133,   134,   134,   135,   135,   135,   135,   135,   136,   135,
+     137,   135,   138,   135,   135,   135,   135,   135,   139,   139,
+     140,   140,   141,   141,   142,   142,   142,   142,   142,   142,
+     143,   143,   144,   144,   144,   145,   144,   147,   148,   146,
+     146,   149,   146,   146,   146,   151,   150,   152,   152,   152,
+     153,   153,   153,   154,   155,   156,   156,   156,   157,   157,
+     158,   159,   159,   159,   159,   160,   160,   161,   161,   162,
+     162
 };
 
   /* YYR2YYN -- Number of symbols on the right hand side of rule YYN.  */
@@ -1662,23 +1651,23 @@ static const yytype_int8 yyr2[] =
 {
        0,     2,     1,     3,     0,     1,     1,     4,     4,     6,
        4,     4,     4,     4,     4,     4,     5,     5,     8,     4,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     8,
        0,     0,     0,    14,     0,     0,     0,    15,     8,     2,
        3,     7,     6,     0,     9,    12,     0,     2,     6,    11,
-       7,     2,     3,     0,     0,     0,     1,     0,     0,     0,
-       2,     2,     3,     1,     1,     1,     1,     1,     1,     3,
-       1,     2,     1,     1,     4,     2,     4,     3,     2,     1,
-       1,     1,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     2,     3,     3,     3,     3,
-       2,     2,     4,     4,     4,     6,     4,     6,     4,     6,
-       4,     6,     2,     1,     2,     1,     1,     2,     1,     0,
-       3,     0,     3,     0,     3,     4,     2,     4,     2,     1,
-       3,     1,     3,     1,     3,     1,     2,     2,     2,     3,
-       2,     3,     2,     2,     3,     2,     0,     3,     0,     0,
-       9,     2,     0,     7,     8,     6,     0,     3,     0,     1,
-       3,     0,     1,     3,     0,     2,     0,     1,     3,     1,
-       3,     3,     0,     1,     1,     1,     1,     3,     1,     3,
-       3,     3
+       7,     3,     0,     0,     0,     1,     0,     0,     0,     2,
+       2,     3,     1,     1,     1,     1,     1,     1,     3,     1,
+       2,     1,     1,     4,     2,     4,     3,     2,     1,     1,
+       1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     2,     3,     3,     3,     3,     2,
+       2,     4,     4,     4,     6,     4,     6,     4,     6,     4,
+       6,     2,     1,     2,     1,     1,     2,     1,     0,     3,
+       0,     3,     0,     3,     4,     2,     4,     2,     1,     3,
+       1,     3,     1,     3,     1,     2,     2,     2,     3,     2,
+       3,     2,     2,     3,     2,     0,     3,     0,     0,     9,
+       2,     0,     7,     8,     6,     0,     3,     0,     1,     3,
+       0,     1,     3,     0,     2,     0,     1,     3,     1,     3,
+       3,     0,     1,     1,     1,     1,     3,     1,     3,     3,
+       3
 };
 
 
@@ -1952,79 +1941,79 @@ yydestruct (const char *yymsg,
     case 22: /* BLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1956 "engines/director/lingo/lingo-gr.cpp"
+#line 1945 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1962 "engines/director/lingo/lingo-gr.cpp"
+#line 1951 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1968 "engines/director/lingo/lingo-gr.cpp"
+#line 1957 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* THEFBLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1974 "engines/director/lingo/lingo-gr.cpp"
+#line 1963 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ID  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1980 "engines/director/lingo/lingo-gr.cpp"
+#line 1969 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* STRING  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1986 "engines/director/lingo/lingo-gr.cpp"
+#line 1975 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* HANDLER  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1992 "engines/director/lingo/lingo-gr.cpp"
+#line 1981 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* SYMBOL  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1998 "engines/director/lingo/lingo-gr.cpp"
+#line 1987 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* ENDCLAUSE  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2004 "engines/director/lingo/lingo-gr.cpp"
+#line 1993 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tPLAYACCEL  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2010 "engines/director/lingo/lingo-gr.cpp"
+#line 1999 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* tMETHOD  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2016 "engines/director/lingo/lingo-gr.cpp"
+#line 2005 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 33: /* THEOBJECTFIELD  */
 #line 162 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 2022 "engines/director/lingo/lingo-gr.cpp"
+#line 2011 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 151: /* on  */
+    case 150: /* on  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2028 "engines/director/lingo/lingo-gr.cpp"
+#line 2017 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2310,7 +2299,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2314 "engines/director/lingo/lingo-gr.cpp"
+#line 2303 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2318,7 +2307,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2322 "engines/director/lingo/lingo-gr.cpp"
+#line 2311 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2334,19 +2323,19 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2338 "engines/director/lingo/lingo-gr.cpp"
+#line 2327 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 194 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2344 "engines/director/lingo/lingo-gr.cpp"
+#line 2333 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 195 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2350 "engines/director/lingo/lingo-gr.cpp"
+#line 2339 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2357,7 +2346,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2361 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2369,7 +2358,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2373 "engines/director/lingo/lingo-gr.cpp"
+#line 2362 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2380,7 +2369,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2384 "engines/director/lingo/lingo-gr.cpp"
+#line 2373 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2392,7 +2381,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2396 "engines/director/lingo/lingo-gr.cpp"
+#line 2385 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2403,7 +2392,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2407 "engines/director/lingo/lingo-gr.cpp"
+#line 2396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2414,7 +2403,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2418 "engines/director/lingo/lingo-gr.cpp"
+#line 2407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2430,7 +2419,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2434 "engines/director/lingo/lingo-gr.cpp"
+#line 2423 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2441,38 +2430,38 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2445 "engines/director/lingo/lingo-gr.cpp"
+#line 2434 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
 #line 268 "engines/director/lingo/lingo-gr.y"
-                                                                        {
+                                                                                        {
 		inst start = 0, end = 0;
-		WRITE_UINT32(&start, (yyvsp[-5].code) - (yyvsp[-1].code) + 2);
+		WRITE_UINT32(&start, (yyvsp[-5].code) - (yyvsp[-1].code) + 1);
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code) + 2);
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentScript)[(yyvsp[-1].code)] = start; }
-#line 2456 "engines/director/lingo/lingo-gr.cpp"
+#line 2445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
 #line 280 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->code1(LC::c_varpush);
 			  g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2463 "engines/director/lingo/lingo-gr.cpp"
+#line 2452 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
 #line 283 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->code1(LC::c_eval);
 			  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2470 "engines/director/lingo/lingo-gr.cpp"
+#line 2459 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
 #line 286 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->code1(LC::c_le); }
-#line 2476 "engines/director/lingo/lingo-gr.cpp"
+#line 2465 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2495,27 +2484,27 @@ yyreduce:
 		WRITE_UINT32(&end, pos - (yyvsp[-2].code) + 2);
 		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentScript)[(yyvsp[-2].code)] = end;	}
-#line 2499 "engines/director/lingo/lingo-gr.cpp"
+#line 2488 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
 #line 310 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->code1(LC::c_varpush);
 			  g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2506 "engines/director/lingo/lingo-gr.cpp"
+#line 2495 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
 #line 313 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->code1(LC::c_eval);
 			  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2513 "engines/director/lingo/lingo-gr.cpp"
+#line 2502 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
 #line 316 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->code1(LC::c_ge); }
-#line 2519 "engines/director/lingo/lingo-gr.cpp"
+#line 2508 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2538,7 +2527,7 @@ yyreduce:
 		WRITE_UINT32(&end, pos - (yyvsp[-2].code) + 2);
 		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentScript)[(yyvsp[-2].code)] = end;	}
-#line 2542 "engines/director/lingo/lingo-gr.cpp"
+#line 2531 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2553,14 +2542,14 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 4] = 0;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 5] = end; }
-#line 2557 "engines/director/lingo/lingo-gr.cpp"
+#line 2546 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
 #line 351 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2564 "engines/director/lingo/lingo-gr.cpp"
+#line 2553 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
@@ -2570,7 +2559,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2574 "engines/director/lingo/lingo-gr.cpp"
+#line 2563 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2579,7 +2568,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2583 "engines/director/lingo/lingo-gr.cpp"
+#line 2572 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
@@ -2588,7 +2577,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2592 "engines/director/lingo/lingo-gr.cpp"
+#line 2581 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2596,7 +2585,7 @@ yyreduce:
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2600 "engines/director/lingo/lingo-gr.cpp"
+#line 2589 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
@@ -2608,7 +2597,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2612 "engines/director/lingo/lingo-gr.cpp"
+#line 2601 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2620,7 +2609,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code)); }
-#line 2624 "engines/director/lingo/lingo-gr.cpp"
+#line 2613 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
@@ -2630,7 +2619,7 @@ yyreduce:
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2634 "engines/director/lingo/lingo-gr.cpp"
+#line 2623 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
@@ -2641,7 +2630,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code) + 1);
 		(*g_lingo->_currentScript)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code)] = end;	}
-#line 2645 "engines/director/lingo/lingo-gr.cpp"
+#line 2634 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
@@ -2651,129 +2640,123 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-4].code) + 1);
 
 		(*g_lingo->_currentScript)[(yyvsp[-4].code)] = end; }
-#line 2655 "engines/director/lingo/lingo-gr.cpp"
+#line 2644 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
 #line 407 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2661 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 52:
-#line 409 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2671 "engines/director/lingo/lingo-gr.cpp"
+#line 2654 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 415 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 413 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2679 "engines/director/lingo/lingo-gr.cpp"
+#line 2662 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 54:
-#line 419 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 417 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2687 "engines/director/lingo/lingo-gr.cpp"
+#line 2670 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 423 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 421 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2695 "engines/director/lingo/lingo-gr.cpp"
+#line 2678 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 427 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 425 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2702 "engines/director/lingo/lingo-gr.cpp"
+#line 2685 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 57:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 428 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2708 "engines/director/lingo/lingo-gr.cpp"
+#line 2691 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 58:
-#line 432 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 430 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2714 "engines/director/lingo/lingo-gr.cpp"
+#line 2697 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 59:
-#line 434 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 432 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2720 "engines/director/lingo/lingo-gr.cpp"
+#line 2703 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 438 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 436 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_whencode);
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2730 "engines/director/lingo/lingo-gr.cpp"
+#line 2713 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 444 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 442 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2738 "engines/director/lingo/lingo-gr.cpp"
+#line 2721 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 447 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 445 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2746 "engines/director/lingo/lingo-gr.cpp"
+#line 2729 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 450 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 448 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2755 "engines/director/lingo/lingo-gr.cpp"
+#line 2738 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 452 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2764 "engines/director/lingo/lingo-gr.cpp"
+#line 2747 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 458 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 456 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2773 "engines/director/lingo/lingo-gr.cpp"
+#line 2756 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 462 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 460 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2782,17 +2765,17 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2786 "engines/director/lingo/lingo-gr.cpp"
+#line 2769 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 470 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 468 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 2775 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 472 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 470 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2803,542 +2786,542 @@ yyreduce:
 			yyerrok;
 		}
 	}
-#line 2807 "engines/director/lingo/lingo-gr.cpp"
+#line 2790 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 483 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 481 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2813 "engines/director/lingo/lingo-gr.cpp"
+#line 2796 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 483 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2821 "engines/director/lingo/lingo-gr.cpp"
+#line 2804 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 488 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 486 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2829 "engines/director/lingo/lingo-gr.cpp"
+#line 2812 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 489 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2837 "engines/director/lingo/lingo-gr.cpp"
+#line 2820 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 492 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2845 "engines/director/lingo/lingo-gr.cpp"
+#line 2828 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 497 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 495 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2856 "engines/director/lingo/lingo-gr.cpp"
+#line 2839 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 501 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2866 "engines/director/lingo/lingo-gr.cpp"
+#line 2849 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 506 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectref).field->c_str());
 		delete (yyvsp[0].objectref).obj;
 		delete (yyvsp[0].objectref).field; }
-#line 2877 "engines/director/lingo/lingo-gr.cpp"
+#line 2860 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 513 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2883 "engines/director/lingo/lingo-gr.cpp"
+#line 2866 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 514 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2889 "engines/director/lingo/lingo-gr.cpp"
+#line 2872 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 515 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2895 "engines/director/lingo/lingo-gr.cpp"
+#line 2878 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 518 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 516 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2901 "engines/director/lingo/lingo-gr.cpp"
+#line 2884 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 517 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2907 "engines/director/lingo/lingo-gr.cpp"
+#line 2890 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 518 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2913 "engines/director/lingo/lingo-gr.cpp"
+#line 2896 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 519 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2919 "engines/director/lingo/lingo-gr.cpp"
+#line 2902 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 520 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2925 "engines/director/lingo/lingo-gr.cpp"
+#line 2908 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 521 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2931 "engines/director/lingo/lingo-gr.cpp"
+#line 2914 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 522 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2937 "engines/director/lingo/lingo-gr.cpp"
+#line 2920 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 523 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2943 "engines/director/lingo/lingo-gr.cpp"
+#line 2926 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 526 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 524 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2949 "engines/director/lingo/lingo-gr.cpp"
+#line 2932 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 527 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 525 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2955 "engines/director/lingo/lingo-gr.cpp"
+#line 2938 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 526 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2961 "engines/director/lingo/lingo-gr.cpp"
+#line 2944 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 527 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2967 "engines/director/lingo/lingo-gr.cpp"
+#line 2950 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 528 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2973 "engines/director/lingo/lingo-gr.cpp"
+#line 2956 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 529 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2979 "engines/director/lingo/lingo-gr.cpp"
+#line 2962 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 532 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 530 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2985 "engines/director/lingo/lingo-gr.cpp"
+#line 2968 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 533 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 531 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 2991 "engines/director/lingo/lingo-gr.cpp"
+#line 2974 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
-#line 534 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 532 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2997 "engines/director/lingo/lingo-gr.cpp"
+#line 2980 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 535 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 533 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 3003 "engines/director/lingo/lingo-gr.cpp"
+#line 2986 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 534 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 3009 "engines/director/lingo/lingo-gr.cpp"
+#line 2992 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 538 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 536 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
-#line 3015 "engines/director/lingo/lingo-gr.cpp"
+#line 2998 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 539 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 537 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 3021 "engines/director/lingo/lingo-gr.cpp"
+#line 3004 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 540 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 538 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3027 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 541 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 539 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 3033 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 542 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 540 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3039 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 541 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 3045 "engines/director/lingo/lingo-gr.cpp"
+#line 3028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 542 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3051 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 545 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 543 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 3057 "engines/director/lingo/lingo-gr.cpp"
+#line 3040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 547 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 545 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 3065 "engines/director/lingo/lingo-gr.cpp"
+#line 3048 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 552 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 550 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3071 "engines/director/lingo/lingo-gr.cpp"
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 553 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_exitRepeat); }
-#line 3077 "engines/director/lingo/lingo-gr.cpp"
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 556 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 554 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3083 "engines/director/lingo/lingo-gr.cpp"
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 555 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3089 "engines/director/lingo/lingo-gr.cpp"
+#line 3072 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 555 "engines/director/lingo/lingo-gr.y"
                                                                                  { inNone(); }
-#line 3095 "engines/director/lingo/lingo-gr.cpp"
+#line 3078 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 558 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 556 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3101 "engines/director/lingo/lingo-gr.cpp"
+#line 3084 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 558 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 556 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 3107 "engines/director/lingo/lingo-gr.cpp"
+#line 3090 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 559 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 557 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3113 "engines/director/lingo/lingo-gr.cpp"
+#line 3096 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 559 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 557 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 3119 "engines/director/lingo/lingo-gr.cpp"
+#line 3102 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 558 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 3110 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 563 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 561 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3135 "engines/director/lingo/lingo-gr.cpp"
+#line 3118 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 564 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
-#line 3141 "engines/director/lingo/lingo-gr.cpp"
+#line 3124 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 567 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 565 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3147 "engines/director/lingo/lingo-gr.cpp"
+#line 3130 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 569 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 567 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3157 "engines/director/lingo/lingo-gr.cpp"
+#line 3140 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 572 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3167 "engines/director/lingo/lingo-gr.cpp"
+#line 3150 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 580 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 578 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3177 "engines/director/lingo/lingo-gr.cpp"
+#line 3160 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 585 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 583 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3187 "engines/director/lingo/lingo-gr.cpp"
+#line 3170 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 591 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 589 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3197 "engines/director/lingo/lingo-gr.cpp"
+#line 3180 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 594 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3207 "engines/director/lingo/lingo-gr.cpp"
+#line 3190 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 609 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 607 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3213 "engines/director/lingo/lingo-gr.cpp"
+#line 3196 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 610 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 608 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3219 "engines/director/lingo/lingo-gr.cpp"
+#line 3202 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 611 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 609 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3225 "engines/director/lingo/lingo-gr.cpp"
+#line 3208 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 612 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 610 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3234 "engines/director/lingo/lingo-gr.cpp"
+#line 3217 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 614 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3243 "engines/director/lingo/lingo-gr.cpp"
+#line 3226 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 620 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3252 "engines/director/lingo/lingo-gr.cpp"
+#line 3235 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 628 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 626 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3261 "engines/director/lingo/lingo-gr.cpp"
+#line 3244 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 632 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 630 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3270 "engines/director/lingo/lingo-gr.cpp"
+#line 3253 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 636 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 634 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3279 "engines/director/lingo/lingo-gr.cpp"
+#line 3262 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 640 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 638 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3285 "engines/director/lingo/lingo-gr.cpp"
+#line 3268 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 640 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 638 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3294 "engines/director/lingo/lingo-gr.cpp"
+#line 3277 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 670 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 668 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3300 "engines/director/lingo/lingo-gr.cpp"
+#line 3283 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 670 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 668 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory.clear(); }
-#line 3306 "engines/director/lingo/lingo-gr.cpp"
+#line 3289 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 669 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3316 "engines/director/lingo/lingo-gr.cpp"
+#line 3299 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 676 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 674 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3322 "engines/director/lingo/lingo-gr.cpp"
+#line 3305 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 677 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 675 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
-#line 3328 "engines/director/lingo/lingo-gr.cpp"
+#line 3311 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 678 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 676 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3338 "engines/director/lingo/lingo-gr.cpp"
+#line 3321 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 683 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 681 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3347,70 +3330,70 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3351 "engines/director/lingo/lingo-gr.cpp"
+#line 3334 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 691 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 689 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3361 "engines/director/lingo/lingo-gr.cpp"
+#line 3344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 697 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 695 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3367 "engines/director/lingo/lingo-gr.cpp"
+#line 3350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 697 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 695 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3374 "engines/director/lingo/lingo-gr.cpp"
+#line 3357 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 700 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 698 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3380 "engines/director/lingo/lingo-gr.cpp"
+#line 3363 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 701 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 699 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3386 "engines/director/lingo/lingo-gr.cpp"
+#line 3369 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 702 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 700 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3392 "engines/director/lingo/lingo-gr.cpp"
+#line 3375 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 705 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 703 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3398 "engines/director/lingo/lingo-gr.cpp"
+#line 3381 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 706 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 704 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3404 "engines/director/lingo/lingo-gr.cpp"
+#line 3387 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 708 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 706 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); inDef(); }
-#line 3410 "engines/director/lingo/lingo-gr.cpp"
+#line 3393 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 710 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 708 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3418,113 +3401,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3422 "engines/director/lingo/lingo-gr.cpp"
+#line 3405 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 718 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 716 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3428 "engines/director/lingo/lingo-gr.cpp"
+#line 3411 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 719 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 717 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3434 "engines/director/lingo/lingo-gr.cpp"
+#line 3417 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 167:
+#line 718 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3423 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
 #line 720 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3440 "engines/director/lingo/lingo-gr.cpp"
+                                        { (yyval.narg) = 1; }
+#line 3429 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
-#line 722 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = 1; }
-#line 3446 "engines/director/lingo/lingo-gr.cpp"
+#line 721 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3435 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170:
 #line 723 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3452 "engines/director/lingo/lingo-gr.cpp"
+                                        { (yyval.code) = (yyvsp[-1].code); }
+#line 3441 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
 #line 725 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.code) = (yyvsp[-1].code); }
-#line 3458 "engines/director/lingo/lingo-gr.cpp"
+                                        { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
+#line 3447 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
-#line 727 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3464 "engines/director/lingo/lingo-gr.cpp"
+#line 726 "engines/director/lingo/lingo-gr.y"
+                                                        { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
+#line 3453 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173:
-#line 728 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3470 "engines/director/lingo/lingo-gr.cpp"
+#line 727 "engines/director/lingo/lingo-gr.y"
+                     { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
+#line 3459 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174:
-#line 729 "engines/director/lingo/lingo-gr.y"
-                     { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3476 "engines/director/lingo/lingo-gr.cpp"
+#line 728 "engines/director/lingo/lingo-gr.y"
+                         { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
+#line 3465 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175:
 #line 730 "engines/director/lingo/lingo-gr.y"
-                         { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3482 "engines/director/lingo/lingo-gr.cpp"
+                                                { (yyval.narg) = 1; }
+#line 3471 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176:
-#line 732 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.narg) = 1; }
-#line 3488 "engines/director/lingo/lingo-gr.cpp"
+#line 731 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3477 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 177:
 #line 733 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3494 "engines/director/lingo/lingo-gr.cpp"
+                                                { (yyval.narg) = 1; }
+#line 3483 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 178:
-#line 735 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.narg) = 1; }
-#line 3500 "engines/director/lingo/lingo-gr.cpp"
+#line 734 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3489 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 179:
 #line 736 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3506 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 180:
-#line 738 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3515 "engines/director/lingo/lingo-gr.cpp"
+#line 3498 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 181:
-#line 742 "engines/director/lingo/lingo-gr.y"
+  case 180:
+#line 740 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3524 "engines/director/lingo/lingo-gr.cpp"
+#line 3507 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3528 "engines/director/lingo/lingo-gr.cpp"
+#line 3511 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3723,7 +3706,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 748 "engines/director/lingo/lingo-gr.y"
+#line 746 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index cdc55bb295..261953771c 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -145,7 +145,7 @@ static void mArg(Common::String *s) {
 %token tSPRITE tINTERSECTS tWITHIN tTELL tPROPERTY
 %token tON tENDIF tENDREPEAT tENDTELL
 
-%type<code> asgn begin end expr if when repeatwhile chunkexpr
+%type<code> asgn begin end expr if when chunkexpr
 %type<code> repeatwith stmtlist tellstart reference simpleexpr list valuelist
 %type<code> jump jumpifz varassign
 %type<narg> argdef arglist nonemptyarglist linearlist proplist
@@ -265,9 +265,9 @@ stmt: stmtoneliner
 	//   statements
 	// end repeat
 	//
-	| repeatwhile expr jumpifz[body] stmtlist jump[end2] tENDREPEAT	{
+	| tREPEAT tWHILE begin expr jumpifz[body] stmtlist jump[end2] tENDREPEAT	{
 		inst start = 0, end = 0;
-		WRITE_UINT32(&start, $repeatwhile - $end2 + 2);
+		WRITE_UINT32(&start, $begin - $end2 + 1);
 		WRITE_UINT32(&end, $end2 - $body + 2);
 		(*g_lingo->_currentScript)[$body] = end;		/* end, if cond fails */
 		(*g_lingo->_currentScript)[$end2] = start; }	/* looping back */
@@ -404,8 +404,6 @@ ifoneliner: if expr jumpifz[then] tTHEN stmtoneliner jump[else1] tELSE begin stm
 
 		(*g_lingo->_currentScript)[$then] = end; }		/* end, if cond fails */
 
-repeatwhile:	tREPEAT tWHILE		{ $$ = g_lingo->_currentScript->size() - 1; }
-
 repeatwith:		tREPEAT tWITH ID	{
 		$$ = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);


Commit: ee9d03e158fd44ec103abc09b877a65691f975fb
    https://github.com/scummvm/scummvm/commit/ee9d03e158fd44ec103abc09b877a65691f975fb
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-30T23:23:03+02:00

Commit Message:
DIRECTOR: LINGO: Reworked 'repeat with...in list' to non-recursive

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index ec0de2da4e..905a54ffe2 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -416,52 +416,54 @@ enum yysymbol_kind_t
   YYSYMBOL_114_4 = 114,                    /* $@4  */
   YYSYMBOL_115_5 = 115,                    /* $@5  */
   YYSYMBOL_116_6 = 116,                    /* $@6  */
-  YYSYMBOL_tellstart = 117,                /* tellstart  */
-  YYSYMBOL_ifstmt = 118,                   /* ifstmt  */
-  YYSYMBOL_elseifstmtlist = 119,           /* elseifstmtlist  */
-  YYSYMBOL_elseifstmt = 120,               /* elseifstmt  */
-  YYSYMBOL_ifoneliner = 121,               /* ifoneliner  */
-  YYSYMBOL_repeatwith = 122,               /* repeatwith  */
-  YYSYMBOL_jumpifz = 123,                  /* jumpifz  */
-  YYSYMBOL_jump = 124,                     /* jump  */
-  YYSYMBOL_varassign = 125,                /* varassign  */
-  YYSYMBOL_if = 126,                       /* if  */
-  YYSYMBOL_begin = 127,                    /* begin  */
-  YYSYMBOL_end = 128,                      /* end  */
-  YYSYMBOL_stmtlist = 129,                 /* stmtlist  */
-  YYSYMBOL_when = 130,                     /* when  */
-  YYSYMBOL_simpleexpr = 131,               /* simpleexpr  */
-  YYSYMBOL_expr = 132,                     /* expr  */
-  YYSYMBOL_chunkexpr = 133,                /* chunkexpr  */
-  YYSYMBOL_reference = 134,                /* reference  */
-  YYSYMBOL_proc = 135,                     /* proc  */
-  YYSYMBOL_136_7 = 136,                    /* $@7  */
-  YYSYMBOL_137_8 = 137,                    /* $@8  */
-  YYSYMBOL_138_9 = 138,                    /* $@9  */
-  YYSYMBOL_globallist = 139,               /* globallist  */
-  YYSYMBOL_propertylist = 140,             /* propertylist  */
-  YYSYMBOL_instancelist = 141,             /* instancelist  */
-  YYSYMBOL_gotofunc = 142,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 143,                /* gotomovie  */
-  YYSYMBOL_playfunc = 144,                 /* playfunc  */
-  YYSYMBOL_145_10 = 145,                   /* $@10  */
-  YYSYMBOL_defn = 146,                     /* defn  */
-  YYSYMBOL_147_11 = 147,                   /* $@11  */
-  YYSYMBOL_148_12 = 148,                   /* $@12  */
-  YYSYMBOL_149_13 = 149,                   /* $@13  */
-  YYSYMBOL_on = 150,                       /* on  */
-  YYSYMBOL_151_14 = 151,                   /* $@14  */
-  YYSYMBOL_argdef = 152,                   /* argdef  */
-  YYSYMBOL_endargdef = 153,                /* endargdef  */
-  YYSYMBOL_argstore = 154,                 /* argstore  */
-  YYSYMBOL_macro = 155,                    /* macro  */
-  YYSYMBOL_arglist = 156,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 157,          /* nonemptyarglist  */
-  YYSYMBOL_list = 158,                     /* list  */
-  YYSYMBOL_valuelist = 159,                /* valuelist  */
-  YYSYMBOL_linearlist = 160,               /* linearlist  */
-  YYSYMBOL_proplist = 161,                 /* proplist  */
-  YYSYMBOL_proppair = 162                  /* proppair  */
+  YYSYMBOL_117_7 = 117,                    /* $@7  */
+  YYSYMBOL_118_8 = 118,                    /* $@8  */
+  YYSYMBOL_119_9 = 119,                    /* $@9  */
+  YYSYMBOL_tellstart = 120,                /* tellstart  */
+  YYSYMBOL_ifstmt = 121,                   /* ifstmt  */
+  YYSYMBOL_elseifstmtlist = 122,           /* elseifstmtlist  */
+  YYSYMBOL_elseifstmt = 123,               /* elseifstmt  */
+  YYSYMBOL_ifoneliner = 124,               /* ifoneliner  */
+  YYSYMBOL_jumpifz = 125,                  /* jumpifz  */
+  YYSYMBOL_jump = 126,                     /* jump  */
+  YYSYMBOL_varassign = 127,                /* varassign  */
+  YYSYMBOL_if = 128,                       /* if  */
+  YYSYMBOL_begin = 129,                    /* begin  */
+  YYSYMBOL_end = 130,                      /* end  */
+  YYSYMBOL_stmtlist = 131,                 /* stmtlist  */
+  YYSYMBOL_when = 132,                     /* when  */
+  YYSYMBOL_simpleexpr = 133,               /* simpleexpr  */
+  YYSYMBOL_expr = 134,                     /* expr  */
+  YYSYMBOL_chunkexpr = 135,                /* chunkexpr  */
+  YYSYMBOL_reference = 136,                /* reference  */
+  YYSYMBOL_proc = 137,                     /* proc  */
+  YYSYMBOL_138_10 = 138,                   /* $@10  */
+  YYSYMBOL_139_11 = 139,                   /* $@11  */
+  YYSYMBOL_140_12 = 140,                   /* $@12  */
+  YYSYMBOL_globallist = 141,               /* globallist  */
+  YYSYMBOL_propertylist = 142,             /* propertylist  */
+  YYSYMBOL_instancelist = 143,             /* instancelist  */
+  YYSYMBOL_gotofunc = 144,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 145,                /* gotomovie  */
+  YYSYMBOL_playfunc = 146,                 /* playfunc  */
+  YYSYMBOL_147_13 = 147,                   /* $@13  */
+  YYSYMBOL_defn = 148,                     /* defn  */
+  YYSYMBOL_149_14 = 149,                   /* $@14  */
+  YYSYMBOL_150_15 = 150,                   /* $@15  */
+  YYSYMBOL_151_16 = 151,                   /* $@16  */
+  YYSYMBOL_on = 152,                       /* on  */
+  YYSYMBOL_153_17 = 153,                   /* $@17  */
+  YYSYMBOL_argdef = 154,                   /* argdef  */
+  YYSYMBOL_endargdef = 155,                /* endargdef  */
+  YYSYMBOL_argstore = 156,                 /* argstore  */
+  YYSYMBOL_macro = 157,                    /* macro  */
+  YYSYMBOL_arglist = 158,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 159,          /* nonemptyarglist  */
+  YYSYMBOL_list = 160,                     /* list  */
+  YYSYMBOL_valuelist = 161,                /* valuelist  */
+  YYSYMBOL_linearlist = 162,               /* linearlist  */
+  YYSYMBOL_proplist = 163,                 /* proplist  */
+  YYSYMBOL_proppair = 164                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -769,18 +771,18 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  127
+#define YYFINAL  126
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2607
+#define YYLAST   2656
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  104
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  59
+#define YYNNTS  61
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  180
+#define YYNRULES  182
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  382
+#define YYNSTATES  383
 
 #define YYMAXUTOK   343
 
@@ -840,22 +842,22 @@ static const yytype_int16 yyrline[] =
        0,   166,   166,   167,   169,   170,   171,   173,   179,   183,
      194,   195,   196,   202,   209,   215,   222,   228,   235,   246,
      253,   254,   255,   257,   258,   259,   260,   262,   263,   268,
-     280,   283,   286,   279,   310,   313,   316,   309,   340,   351,
-     353,   358,   362,   367,   371,   378,   386,   387,   389,   395,
-     401,   407,   413,   417,   421,   425,   428,   430,   432,   433,
-     434,   436,   442,   445,   448,   452,   456,   460,   468,   469,
-     470,   481,   482,   483,   486,   489,   492,   495,   501,   506,
-     512,   513,   514,   515,   516,   517,   518,   519,   520,   521,
-     522,   523,   524,   525,   526,   527,   528,   529,   530,   531,
-     532,   533,   534,   536,   537,   538,   539,   540,   541,   542,
-     543,   545,   548,   550,   551,   552,   553,   554,   555,   555,
-     556,   556,   557,   557,   558,   561,   564,   565,   567,   572,
-     578,   583,   589,   594,   607,   608,   609,   610,   614,   618,
-     623,   624,   626,   630,   634,   638,   638,   668,   668,   668,
-     674,   675,   675,   681,   689,   695,   695,   698,   699,   700,
-     702,   703,   704,   706,   708,   716,   717,   718,   720,   721,
-     723,   725,   726,   727,   728,   730,   731,   733,   734,   736,
-     740
+     280,   283,   286,   279,   310,   313,   316,   309,   342,   348,
+     354,   341,   380,   382,   387,   391,   396,   400,   407,   415,
+     416,   418,   424,   430,   442,   446,   450,   454,   457,   459,
+     461,   462,   463,   465,   471,   474,   477,   481,   485,   489,
+     497,   498,   499,   510,   511,   512,   515,   518,   521,   524,
+     530,   535,   541,   542,   543,   544,   545,   546,   547,   548,
+     549,   550,   551,   552,   553,   554,   555,   556,   557,   558,
+     559,   560,   561,   562,   563,   565,   566,   567,   568,   569,
+     570,   571,   572,   574,   577,   579,   580,   581,   582,   583,
+     584,   584,   585,   585,   586,   586,   587,   590,   593,   594,
+     596,   601,   607,   612,   618,   623,   636,   637,   638,   639,
+     643,   647,   652,   653,   655,   659,   663,   667,   667,   697,
+     697,   697,   703,   704,   704,   710,   718,   724,   724,   727,
+     728,   729,   731,   732,   733,   735,   737,   745,   746,   747,
+     749,   750,   752,   754,   755,   756,   757,   759,   760,   762,
+     763,   765,   769
 };
 #endif
 
@@ -889,14 +891,14 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
   "$accept", "program", "programline", "asgn", "stmtoneliner",
   "stmtonelinerwithif", "stmt", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6",
-  "tellstart", "ifstmt", "elseifstmtlist", "elseifstmt", "ifoneliner",
-  "repeatwith", "jumpifz", "jump", "varassign", "if", "begin", "end",
-  "stmtlist", "when", "simpleexpr", "expr", "chunkexpr", "reference",
-  "proc", "$@7", "$@8", "$@9", "globallist", "propertylist",
-  "instancelist", "gotofunc", "gotomovie", "playfunc", "$@10", "defn",
-  "$@11", "$@12", "$@13", "on", "$@14", "argdef", "endargdef", "argstore",
-  "macro", "arglist", "nonemptyarglist", "list", "valuelist", "linearlist",
-  "proplist", "proppair", YY_NULLPTR
+  "$@7", "$@8", "$@9", "tellstart", "ifstmt", "elseifstmtlist",
+  "elseifstmt", "ifoneliner", "jumpifz", "jump", "varassign", "if",
+  "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "chunkexpr",
+  "reference", "proc", "$@10", "$@11", "$@12", "globallist",
+  "propertylist", "instancelist", "gotofunc", "gotomovie", "playfunc",
+  "$@13", "defn", "$@14", "$@15", "$@16", "on", "$@17", "argdef",
+  "endargdef", "argstore", "macro", "arglist", "nonemptyarglist", "list",
+  "valuelist", "linearlist", "proplist", "proppair", YY_NULLPTR
   };
   return yy_sname[yysymbol];
 }
@@ -921,12 +923,12 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-303)
+#define YYPACT_NINF (-278)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-172)
+#define YYTABLE_NINF (-174)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -935,45 +937,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     707,   -92,  -303,  -303,    69,  -303,   529,   327,    69,   -33,
-     430,  -303,  -303,  -303,  -303,  -303,  -303,   -30,  -303,  1809,
-    -303,  -303,  -303,   -18,  1965,    46,   223,    22,    27,  2047,
-    1846,  -303,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  -303,
-    -303,  2047,  2047,  2047,   201,    73,   -20,  -303,  -303,  -303,
-    -303,    38,  2047,  1645,  -303,  2499,  -303,  -303,  -303,  -303,
-    -303,  -303,  -303,  -303,  -303,  -303,  -303,  -303,   -11,  1965,
-    1928,  2499,    -8,  1928,    -8,  -303,    69,  1928,  2499,    -1,
-     618,  -303,  -303,    63,  2047,  -303,    67,  -303,  2086,  -303,
-      97,  -303,   100,   242,   128,  -303,   -40,    69,    69,    -9,
-     101,   103,  -303,  2396,  2086,  -303,   132,  -303,  2119,  2152,
-    2185,  2218,  2466,  2383,   133,   135,  -303,  -303,  2429,    59,
-      62,  -303,  2499,    77,    81,    82,  -303,  -303,   707,  -303,
-    2499,  -303,  -303,  2047,  2499,  -303,  -303,  2047,  2047,  2047,
-    2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,
-    2047,  2047,  2047,  2047,   157,  1928,   242,  2429,     6,  2047,
-      21,  -303,    29,  2047,    -8,   157,  -303,    94,  2499,  2047,
-    -303,  -303,    69,    33,  2047,  2047,   130,  2047,  2047,  2047,
-      15,   152,  2047,  2047,  2047,  -303,  2047,  -303,  -303,   105,
-    2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,  2047,
-    -303,  -303,  -303,   107,  -303,  -303,    69,    69,  -303,  2047,
-     -10,  -303,  2047,   148,  -303,  2499,    24,    24,    24,    24,
-    2512,  2512,  -303,   104,    24,    24,    24,    24,   104,   -19,
-     -19,  -303,  -303,  -303,   -48,  -303,  2499,  -303,  -303,  2499,
-     -32,   178,  2499,  -303,   164,  -303,  -303,  2499,  2499,  2047,
-    2499,  2499,    24,  2047,  2047,   185,  2499,    24,  2499,  2499,
-     186,  2499,  2251,  2499,  2284,  2499,  2317,  2499,  2350,  2499,
-    2499,  1727,  -303,   187,  -303,  -303,  2499,    59,    62,  -303,
-    2499,  -303,   161,  -303,   190,  -303,  -303,   157,  2047,  2019,
-    -303,  2499,    24,    69,  -303,  2047,  2047,  2047,  2047,  -303,
-    1134,  -303,  -303,  1048,  1727,  -303,  -303,  -303,   -12,  2499,
-    -303,  -303,  1219,   163,  2499,  2499,  2499,  2499,  -303,  -303,
-    -303,   141,  1304,  -303,   134,   793,   878,  -303,  -303,  -303,
-     136,  2047,  -303,   144,   115,   196,   147,   195,  -303,   182,
-     202,  -303,  2499,  -303,  -303,  2047,  -303,   153,  -303,  -303,
-    -303,   138,   963,  2047,   192,  -303,  2499,  -303,  1727,   218,
-    2499,  2047,  1389,   197,  -303,  -303,  -303,  2499,   166,  -303,
-     168,  -303,  -303,  -303,  1048,  -303,  1475,  -303,  -303,  -303,
-    1560,  -303
+     788,   -92,  -278,  -278,    55,  -278,   610,   326,    55,   -33,
+     511,  -278,  -278,  -278,  -278,  -278,  -278,    -8,  -278,  1890,
+    -278,  -278,  -278,    -1,  2046,   -47,    35,    29,    33,  2128,
+    1927,  -278,  2128,  2128,  2128,  2128,  2128,  2128,  2128,  -278,
+    -278,  2128,  2128,  2128,   421,    74,    24,  -278,  -278,  -278,
+    -278,  2128,  1726,  -278,  2548,  -278,  -278,  -278,  -278,  -278,
+    -278,  -278,  -278,  -278,  -278,  -278,  -278,    17,  2046,  2009,
+    2548,    23,  2009,    23,  -278,    55,  2009,  2548,    26,   699,
+    -278,  -278,   101,  2128,  -278,    82,  -278,  2120,  -278,   122,
+    -278,   123,   393,   124,  -278,    -7,    55,    55,    40,    98,
+     104,  -278,  2445,  2120,  -278,   128,  -278,  2168,  2201,  2234,
+    2267,  2515,  2432,   132,   133,  -278,  -278,  2478,    61,    62,
+    -278,  2548,    58,    68,    72,  -278,  -278,   788,  2548,  -278,
+    -278,  2128,  2548,  -278,  -278,  2128,  2128,  2128,  2128,  2128,
+    2128,  2128,  2128,  2128,  2128,  2128,  2128,  2128,  2128,  2128,
+    2128,  2128,   151,  2009,   393,  2478,   -35,  2128,   -20,  -278,
+      18,  2128,    23,   151,  -278,    79,  2548,  2128,  -278,  -278,
+      55,    25,  2128,  2128,   -31,  2128,  2128,  2128,    57,   144,
+    2128,  2128,  2128,  -278,  2128,  -278,  -278,    80,  2128,  2128,
+    2128,  2128,  2128,  2128,  2128,  2128,  2128,  2128,  -278,  -278,
+    -278,    94,  -278,  -278,    55,    55,  -278,  2128,    85,  -278,
+     142,  -278,  2548,    15,    15,    15,    15,  2561,  2561,  -278,
+      -3,    15,    15,    15,    15,    -3,   -53,   -53,  -278,  -278,
+    -278,   -75,  -278,  2548,  -278,  -278,  2548,   -40,   170,  2548,
+    -278,   153,  -278,  -278,  2548,  2548,  2128,  2128,  2548,  2548,
+      15,  2128,  2128,   172,  2548,    15,  2548,  2548,   173,  2548,
+    2300,  2548,  2333,  2548,  2366,  2548,  2399,  2548,  2548,  1808,
+    -278,   177,  -278,  -278,  2548,    61,    62,  -278,  -278,   152,
+    -278,   178,  -278,  -278,   151,  2128,  2548,   240,  -278,  2548,
+      15,    55,  -278,  2128,  2128,  2128,  2128,  -278,  1215,  -278,
+    1129,  1808,  -278,  -278,  -278,    16,  2548,  -278,  -278,  -278,
+    1300,   155,  2548,  2548,  2548,  2548,  -278,  -278,  -278,   118,
+    -278,   125,   874,   959,  -278,  -278,  -278,  -278,   126,  2128,
+    -278,    60,   174,   129,   188,  -278,  -278,   162,   182,  -278,
+    2548,  -278,  2128,  -278,   134,  -278,  -278,  -278,   119,  1044,
+    -278,  2128,   164,  -278,  2548,  -278,  1808,   195,  -278,  2548,
+    2128,  1385,   169,  -278,  -278,  1471,  -278,  2548,   137,  -278,
+     138,  -278,  -278,  -278,  -278,  1129,  -278,  1556,  -278,  -278,
+    -278,  1641,  -278
 };
 
   /* YYDEFACTSTATE-NUM -- Default reduction number in state STATE-NUM.
@@ -981,67 +983,69 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    62,    67,     0,    63,     0,     0,     0,     0,
-       0,    65,    64,   145,   151,    78,    79,   117,   118,     0,
-     134,    55,   147,     0,     0,     0,     0,     0,     0,     0,
-       0,   122,     0,     0,     0,     0,     0,     0,     0,   120,
-     155,     0,     0,     0,     0,     0,     2,    80,    27,     6,
-      28,     0,     0,     0,    71,    21,   112,    72,    22,   114,
-     115,     5,    56,    20,    69,    70,    66,    77,    66,     0,
-       0,   166,   125,     0,    74,   111,     0,     0,   168,   164,
-       0,    56,   116,     0,     0,   135,     0,   136,   137,   139,
-       0,    39,     0,   113,     0,    56,     0,     0,     0,     0,
-       0,     0,   150,   127,   142,   144,     0,    94,     0,     0,
-       0,     0,     0,     0,     0,     0,    99,   100,     0,    65,
-      64,   172,   175,     0,   173,   174,   177,     1,     0,    56,
-      52,    57,    26,     0,    24,    25,    23,     0,     0,     0,
+       0,     0,    64,    69,     0,    65,     0,     0,     0,     0,
+       0,    67,    66,   147,   153,    80,    81,   119,   120,     0,
+     136,    57,   149,     0,     0,     0,     0,     0,     0,     0,
+       0,   124,     0,     0,     0,     0,     0,     0,     0,   122,
+     157,     0,     0,     0,     0,     0,     2,    82,    27,     6,
+      28,     0,     0,    73,    21,   114,    74,    22,   116,   117,
+       5,    58,    20,    71,    72,    68,    79,    68,     0,     0,
+     168,   127,     0,    76,   113,     0,     0,   170,   166,     0,
+      58,   118,     0,     0,   137,     0,   138,   139,   141,     0,
+      42,     0,   115,     0,    58,     0,     0,     0,     0,     0,
+       0,   152,   129,   144,   146,     0,    96,     0,     0,     0,
+       0,     0,     0,     0,     0,   101,   102,     0,    67,    66,
+     174,   177,     0,   175,   176,   179,     1,     0,    54,    59,
+      26,     0,    24,    25,    23,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   157,     0,     0,   166,     0,     0,
-       0,    76,     0,     0,   146,   157,   128,   119,   141,     0,
-     138,   148,     0,     0,     0,     0,    51,     0,     0,     0,
-       0,     0,     0,     0,     0,    61,     0,   143,   132,   123,
+       0,     0,   159,     0,     0,   168,     0,     0,     0,    78,
+       0,     0,   148,   159,   130,   121,   143,     0,   140,   150,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      43,    43,   130,   121,   156,    68,     0,     0,   170,     0,
-       0,     3,     0,     0,    40,    52,    90,    91,    88,    89,
-      92,    93,    85,    96,    97,    98,    87,    86,    95,    81,
-      82,    83,    84,   158,     0,   124,   167,    73,    75,   169,
-       0,     0,   140,    56,     0,     7,     8,    10,    11,     0,
-      52,    15,    13,     0,     0,     0,    14,    12,    19,   126,
-       0,   103,     0,   105,     0,   107,     0,   109,     0,   101,
-     102,     0,    58,     0,   180,   179,   176,     0,     0,   178,
-      57,    58,     0,   163,     0,   163,   129,   157,     0,    30,
-      58,    16,    17,     0,   133,     0,     0,     0,     0,    57,
-       0,   131,    58,     0,     0,    58,   159,    58,     0,     9,
-      54,    54,     0,     0,   104,   106,   108,   110,    42,    59,
-      60,     0,     0,    46,    53,     0,     0,   163,    31,    35,
-       0,     0,    41,     0,    56,     0,     0,   160,    58,     0,
-       0,    29,    18,    38,    56,     0,    47,     0,    56,    50,
-     161,   153,     0,     0,     0,    58,    52,    44,     0,     0,
-      32,     0,     0,     0,    56,   162,    52,    36,     0,    58,
-       0,    58,    52,    45,     0,    49,     0,    58,    48,    33,
-       0,    37
+       0,     0,     0,    63,     0,   145,   134,   125,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    46,    46,
+     132,   123,   158,    70,     0,     0,   172,     0,     0,     3,
+       0,    43,    54,    92,    93,    90,    91,    94,    95,    87,
+      98,    99,   100,    89,    88,    97,    83,    84,    85,    86,
+     160,     0,   126,   169,    75,    77,   171,     0,     0,   142,
+      58,     0,     7,     8,    10,    11,     0,     0,    54,    15,
+      13,     0,     0,     0,    14,    12,    19,   128,     0,   105,
+       0,   107,     0,   109,     0,   111,     0,   103,   104,     0,
+      60,     0,   182,   181,   178,     0,     0,   180,    60,     0,
+     165,     0,   165,   131,   159,     0,    38,    30,    60,    16,
+      17,     0,   135,     0,     0,     0,     0,    59,     0,   133,
+       0,     0,    60,   161,    60,     0,     9,    58,    56,    56,
+       0,     0,   106,   108,   110,   112,    45,    61,    62,     0,
+      49,    55,     0,     0,   165,    39,    31,    35,     0,     0,
+      44,    58,     0,     0,   162,    60,    54,     0,     0,    29,
+      18,    58,     0,    50,     0,    58,    53,   163,   155,     0,
+      40,     0,     0,    60,    54,    47,     0,     0,    60,    32,
+       0,     0,     0,    58,   164,     0,    54,    36,     0,    60,
+       0,    41,    60,    54,    48,     0,    52,     0,    60,    51,
+      33,     0,    37
 };
 
   /* YYPGOTONTERM-NUM.  */
 static const yytype_int16 yypgoto[] =
 {
-    -303,   129,  -303,  -303,  -265,  -303,    20,  -303,  -303,  -303,
-    -303,  -303,  -303,    57,  -303,  -303,  -303,  -303,  -303,  -206,
-    -302,   -52,   207,   -79,  -238,  -247,  -303,     3,    -6,  -303,
-      88,   209,  -303,  -303,  -303,  -303,  -303,  -303,  -303,   -22,
-    -303,  -303,  -303,  -303,  -303,  -303,  -303,  -303,  -162,  -303,
-    -273,   210,    34,  -303,  -303,  -303,  -303,  -303,    54
+    -278,   100,  -278,  -278,  -261,  -278,    19,  -278,  -278,  -278,
+    -278,  -278,  -278,  -278,  -278,  -278,    31,  -278,  -278,  -278,
+    -278,  -173,  -277,   -84,   179,   -78,  -178,   -76,  -278,     3,
+      -6,  -278,    63,   180,  -278,  -278,  -278,  -278,  -278,  -278,
+    -278,   -16,  -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,
+    -160,  -278,  -276,   181,    14,  -278,  -278,  -278,  -278,  -278,
+      27
 };
 
   /* YYDEFGOTONTERM-NUM.  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    45,    46,    47,    48,   131,   320,   310,   339,   366,
-     311,   340,   372,   271,    50,   334,   346,   132,    51,   213,
-     323,   328,    52,   154,   214,   300,    53,    54,    55,    56,
-      57,    58,    83,   114,   106,   167,   203,   189,    59,    89,
-      60,    80,    61,    90,   243,    81,    62,   115,   234,   351,
-     305,    63,   162,    79,    64,   123,   124,   125,   126
+      -1,    45,    46,    47,    48,   129,   318,   308,   337,   366,
+     309,   338,   373,   307,   336,   358,   269,    50,   331,   343,
+     130,   210,   320,   326,    51,   152,   211,   298,    52,    53,
+      54,    55,    56,    57,    82,   113,   105,   165,   201,   187,
+      58,    88,    59,    79,    60,    89,   240,    80,    61,   114,
+     231,   348,   302,    62,   160,    78,    63,   122,   123,   124,
+     125
 };
 
   /* YYTABLEYYPACT[STATE-NUM] -- What to do in state STATE-NUM.  If
@@ -1049,138 +1053,112 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      71,    71,   165,   240,    78,    65,   299,    67,   105,   282,
-     330,    75,   307,    88,   178,    76,   177,   277,    93,   278,
-      49,    82,   335,   103,   104,   179,   107,   108,   109,   110,
-     111,   112,   113,    91,   303,   116,   117,   118,   122,   324,
-      72,    74,   302,   312,   290,   182,   130,   134,   101,   283,
-     212,   143,   284,   102,   338,   322,   183,     8,   325,   245,
-     326,   318,   321,   156,   157,   285,   170,   157,   284,   253,
-       1,   157,   378,   127,    71,   152,   153,   128,   168,   161,
-     254,   129,   187,     2,   333,   327,     3,   155,   284,   166,
-       5,   352,   159,   364,   143,    66,    11,   144,    12,   163,
-     180,   181,    94,    95,   158,   235,   159,   160,   362,    33,
-      34,    35,    36,   169,   164,   149,   150,   151,   152,   153,
-     237,   159,   374,   171,   376,   308,   172,   215,   238,   159,
-     380,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,    49,    71,
-     363,   344,   345,   236,   176,   184,   185,   239,   188,   202,
-     371,   204,   206,   242,   287,   207,   377,    43,   247,   248,
-      44,   250,   251,   252,   143,   244,   256,   257,   258,   208,
-     259,   209,   210,   233,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   241,   249,   150,   151,   152,   153,
-     255,   281,     1,   276,   286,   260,   280,   273,   288,   274,
-     275,   293,   294,   301,   304,     2,   306,   331,     3,     4,
-     -56,   350,     5,   341,     7,     8,     9,    68,   119,   332,
-     120,   343,   348,   349,    15,    16,   353,   354,   359,   357,
-      96,    97,    98,   289,   365,   336,   361,   291,   292,    99,
-     369,    69,   373,    26,   375,   347,   100,   211,   272,   329,
-     133,   246,   135,   136,   279,   355,     0,     0,     0,   358,
+      70,    70,   163,   237,    77,    64,   304,    66,   297,    93,
+      94,    74,   246,    87,   104,    75,   175,   141,    92,    49,
+      71,    73,   280,   102,   103,   281,   106,   107,   108,   109,
+     110,   111,   112,   328,   247,   115,   116,   117,   121,   279,
+     321,   150,   151,    81,   332,   128,   132,   176,   335,     8,
+      90,   242,    95,    96,    97,   100,     1,   282,   177,   101,
+     281,    98,   154,   155,   232,   157,   155,   141,    99,     2,
+     155,   168,     3,    70,   126,   288,     5,   166,   159,   234,
+     157,    65,    11,   156,    12,   141,   158,   185,   142,   148,
+     149,   150,   151,   162,   180,   363,   341,   342,   379,   178,
+     179,    33,    34,    35,    36,   181,   147,   148,   149,   150,
+     151,   251,   275,   324,   276,   153,   281,   235,   157,   316,
+     319,   127,   252,   157,   305,   212,   161,   164,   167,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,    49,    70,   169,   170,
+     174,   233,   182,    43,   186,   236,    44,   183,   200,   202,
+     206,   239,   284,   350,   204,   205,   244,   245,   207,   248,
+     249,   250,   208,   241,   254,   255,   256,   230,   257,   238,
+     258,   362,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   253,   372,   271,   278,   283,   285,   291,   292,
+     378,   274,   300,   299,   303,   301,   330,   272,   273,   329,
+     345,   -58,   310,   339,   347,   346,   351,   352,   360,   357,
+     355,   364,   369,   374,   376,   327,   322,   209,   323,   325,
+     270,   131,   133,   134,   243,   277,     0,     0,     0,     0,
+     286,   287,     0,   333,     0,   289,   290,     0,     0,     0,
+       0,     0,     0,   344,     0,     0,     0,     0,     0,   349,
+       0,     0,     0,   353,     0,     0,     0,   356,     0,     0,
+       0,     0,     0,     0,     0,   -34,     0,   361,     0,   306,
+       0,     0,   365,   368,     0,   370,     0,   312,   313,   314,
+     315,     0,     0,   375,   311,     0,   377,     0,     0,     0,
+       0,     0,   381,   135,   136,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
+       0,     0,     0,   340,     0,     0,  -167,     1,     0,   145,
+     146,   147,   148,   149,   150,   151,   354,     0,     0,     0,
+       2,     0,     0,     3,     4,   359,     0,     5,  -167,     7,
+       8,     9,    67,    11,   367,    12,  -167,  -167,     0,    15,
+      16,  -167,  -167,  -167,  -167,  -167,  -167,  -167,  -167,     0,
+    -167,     0,  -167,  -167,  -167,     0,    68,  -167,    26,  -167,
+    -167,  -167,  -167,     0,     0,     0,  -167,  -167,  -167,  -167,
+    -167,  -167,  -167,  -167,  -167,    32,  -167,  -167,  -167,  -167,
+    -167,  -167,    33,    34,    35,    36,    37,  -167,  -167,  -167,
+    -167,     0,  -167,  -167,  -167,  -167,  -167,  -167,    41,    42,
+    -167,  -167,     1,  -167,    72,  -167,  -167,    44,  -167,     0,
+       0,     0,     0,     0,     0,     2,     0,   171,     3,     4,
+       0,     0,     5,     0,     7,     8,     9,    67,   118,     0,
+     119,     0,     0,     0,    15,    16,   135,   136,   137,   138,
+     139,   140,     0,   141,   172,   173,   142,   143,   144,     0,
+       0,    68,     0,    26,     0,     0,     0,     0,     0,     0,
+       0,     0,   145,   146,   147,   148,   149,   150,   151,     0,
       32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,   309,   368,     0,   370,   173,     0,     0,   314,
-     315,   316,   317,    41,    42,     0,   313,     0,     0,    43,
-       0,     0,    44,  -171,   121,   137,   138,   139,   140,   141,
-     142,     0,   143,   174,   175,   144,   145,   146,     0,     0,
-       0,     0,     0,     0,     0,   342,     0,  -165,     1,     0,
-       0,   147,   148,   149,   150,   151,   152,   153,     0,   356,
-       0,     2,     0,     0,     3,     4,     0,   360,     5,  -165,
-       7,     8,     9,    68,    11,   367,    12,  -165,  -165,     0,
-      15,    16,  -165,  -165,  -165,  -165,  -165,  -165,  -165,  -165,
-       0,  -165,     0,  -165,  -165,  -165,     0,    69,  -165,    26,
-    -165,  -165,  -165,  -165,     0,     0,     0,  -165,  -165,  -165,
-    -165,  -165,  -165,  -165,  -165,  -165,    32,  -165,  -165,  -165,
-    -165,  -165,  -165,    33,    34,    35,    36,    37,  -165,  -165,
-    -165,  -165,     0,  -165,  -165,  -165,  -165,  -165,  -165,    41,
-      42,  -165,  -165,     0,  -165,    73,  -165,  -165,    44,  -165,
-     -66,     1,     0,     0,     0,     0,     0,     0,     0,     0,
+      36,    37,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   -68,     1,    41,    42,     0,     0,     0,     0,    43,
+       0,     0,    44,  -173,   120,     2,     0,     0,     3,     4,
+       0,     0,     5,   -68,     7,     8,     9,    67,    11,     0,
+      12,   -68,   -68,     0,    15,    16,     0,   -68,   -68,   -68,
+     -68,   -68,   -68,   -68,     0,     0,     0,     0,   -68,     0,
+       0,    68,   -68,    26,     0,     0,   -68,     0,     0,     0,
+       0,   -68,   -68,   -68,   -68,   -68,   -68,   -68,   -68,   -68,
+      32,   -68,     0,     0,   -68,   -68,   -68,    33,    34,    35,
+      36,    37,     0,     0,   -68,   -68,     0,   -68,   -68,   -68,
+     -68,   -68,   -68,    41,    42,   -68,   -68,     0,   -68,    76,
+    -167,     1,    44,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     2,     0,     0,     3,     4,     0,
-       0,     5,   -66,     7,     8,     9,    68,    11,     0,    12,
-     -66,   -66,     0,    15,    16,     0,   -66,   -66,   -66,   -66,
-     -66,   -66,   -66,     0,     0,     0,     0,   -66,     0,     0,
-      69,   -66,    26,     0,     0,   -66,     0,     0,     0,     0,
-     -66,   -66,   -66,   -66,   -66,   -66,   -66,   -66,   -66,    32,
-     -66,     0,     0,   -66,   -66,   -66,    33,    34,    35,    36,
-      37,     0,     0,   -66,   -66,     0,   -66,   -66,   -66,   -66,
-     -66,   -66,    41,    42,   -66,   -66,     0,   -66,    77,  -165,
-       1,    44,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     2,     0,     0,     3,     4,     0,     0,
-       5,  -165,     7,     8,     9,    68,    11,     0,    12,  -165,
-    -165,     0,    15,    16,     0,  -165,  -165,  -165,  -165,  -165,
-    -165,  -165,     0,     0,     0,     0,  -165,     0,     0,    69,
-    -165,    26,     0,     0,  -165,     0,     0,     0,     0,  -165,
-    -165,  -165,     0,     0,     0,     0,     0,     0,    32,     0,
+       0,     5,  -167,     7,     8,     9,    67,    11,     0,    12,
+    -167,  -167,     0,    15,    16,     0,  -167,  -167,  -167,  -167,
+    -167,  -167,  -167,     0,     0,     0,     0,  -167,     0,     0,
+      68,  -167,    26,     0,     0,  -167,     0,     0,     0,     0,
+    -167,  -167,  -167,     0,     0,     0,     0,     0,     0,    32,
+       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,  -167,  -167,     0,  -167,  -167,  -167,  -167,
+       1,     0,    41,    42,     0,     0,     0,  -167,    69,     0,
+    -167,    44,     0,     2,     0,     0,     3,     4,     0,     0,
+       5,  -167,     7,     8,     9,    67,    11,     0,    12,  -167,
+    -167,     0,    15,    16,     0,  -167,  -167,  -167,  -167,  -167,
+    -167,  -167,     0,     0,     0,     0,  -167,     0,     0,    68,
+    -167,    26,     0,     0,  -167,     0,     0,     0,     0,  -167,
+    -167,  -167,     0,     0,     0,     0,     0,     0,    32,     0,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,  -165,  -165,     0,  -165,  -165,  -165,  -165,     1,
-       0,    41,    42,     0,     0,     0,  -165,    70,     0,  -165,
+       0,     0,  -167,  -167,     0,  -167,  -167,  -167,    -4,     1,
+       0,    41,    42,     0,     0,     0,  -167,    43,     0,  -167,
       44,     0,     2,     0,     0,     3,     4,     0,     0,     5,
-    -165,     7,     8,     9,    68,    11,     0,    12,  -165,  -165,
-       0,    15,    16,     0,  -165,  -165,  -165,  -165,  -165,  -165,
-    -165,     0,     0,     0,     0,  -165,     0,     0,    69,  -165,
-      26,     0,     0,  -165,     0,     0,     0,     0,  -165,  -165,
-    -165,     0,     0,     0,     0,     0,     0,    32,     0,     0,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,  -165,  -165,     0,  -165,  -165,  -165,    -4,     1,     0,
-      41,    42,     0,     0,     0,  -165,    43,     0,  -165,    44,
-       0,     2,     0,     0,     3,     4,     0,     0,     5,     6,
-       7,     8,     9,    10,    11,     0,    12,     0,    13,    14,
-      15,    16,     0,     0,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,     0,    23,     0,     0,    24,    25,    26,
-       0,     0,    27,     0,     0,     0,    28,    29,    30,    31,
-       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-      38,    39,    40,  -154,     1,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,    -4,    43,     0,     2,    44,     0,
-       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,    12,   337,    13,     0,    15,    16,     0,     0,
-       0,    17,    18,    19,    20,    21,     0,     0,     0,     0,
-      23,     0,     0,    24,    25,    26,     0,     0,    27,     0,
-       0,     0,     0,    29,    30,    31,     0,     0,     0,     0,
-       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     0,     0,    38,    39,  -152,     1,
-       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
-     319,    43,     2,     0,    44,     3,     4,     0,     0,     5,
-       6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
-       0,    15,    16,     0,     0,     0,    17,    18,    19,    20,
-      21,     0,     0,     0,     0,    23,     0,     0,    24,    25,
-      26,     0,     0,    27,     0,     0,     0,     0,    29,    30,
-      31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,    38,    39,  -149,     1,     0,     0,     0,     0,     0,
-      41,    42,     0,     0,     0,   319,    43,     2,     0,    44,
-       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,    12,     0,    13,     0,    15,    16,     0,     0,
-       0,    17,    18,    19,    20,    21,     0,     0,     0,     0,
-      23,     0,     0,    24,    25,    26,     0,     0,    27,     0,
-       0,     0,     0,    29,    30,    31,     0,     0,     0,     0,
-       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     0,     0,    38,    39,     0,     1,
-       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
-     319,    43,     2,     0,    44,     3,     4,     0,     0,     5,
        6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
-       0,    15,    16,     0,   -53,   -53,    17,    18,    19,    20,
-      21,     0,     0,     0,     0,    23,     0,     0,    24,    25,
-      26,     0,     0,    27,     0,     0,     0,     0,    29,    30,
+      14,    15,    16,     0,     0,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,     0,    23,     0,     0,    24,    25,
+      26,     0,     0,    27,     0,     0,     0,    28,    29,    30,
       31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
        0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,    38,    39,     0,   -53,     1,     0,     0,     0,     0,
-      41,    42,     0,     0,     0,   319,    43,     0,     2,    44,
+       0,    38,    39,    40,  -156,     1,     0,     0,     0,     0,
+      41,    42,     0,     0,     0,    -4,    43,     0,     2,    44,
        0,     3,     4,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,     0,    12,     0,    13,     0,    15,    16,     0,
+      10,    11,     0,    12,   334,    13,     0,    15,    16,     0,
        0,     0,    17,    18,    19,    20,    21,     0,     0,     0,
        0,    23,     0,     0,    24,    25,    26,     0,     0,    27,
        0,     0,     0,     0,    29,    30,    31,     0,     0,     0,
        0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,     0,     0,    38,    39,     0,
-       1,     0,   -57,     0,     0,     0,    41,    42,     0,     0,
-       0,   319,    43,     2,     0,    44,     3,     4,     0,     0,
+      33,    34,    35,    36,    37,     0,     0,    38,    39,  -154,
+       1,     0,     0,     0,     0,     0,    41,    42,     0,     0,
+       0,   317,    43,     2,     0,    44,     3,     4,     0,     0,
        5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
       13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
       20,    21,     0,     0,     0,     0,    23,     0,     0,    24,
       25,    26,     0,     0,    27,     0,     0,     0,     0,    29,
       30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    38,    39,     0,     1,   -53,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,   319,    43,     2,     0,
+       0,     0,    38,    39,  -151,     1,     0,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,   317,    43,     2,     0,
       44,     3,     4,     0,     0,     5,     6,     7,     8,     9,
       10,    11,     0,    12,     0,    13,     0,    15,    16,     0,
        0,     0,    17,    18,    19,    20,    21,     0,     0,     0,
@@ -1188,16 +1166,16 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,    29,    30,    31,     0,     0,     0,
        0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
       33,    34,    35,    36,    37,     0,     0,    38,    39,     0,
-       1,   -57,     0,     0,     0,     0,    41,    42,     0,     0,
-       0,   319,    43,     2,     0,    44,     3,     4,     0,     0,
+       1,     0,     0,     0,     0,     0,    41,    42,     0,     0,
+       0,   317,    43,     2,     0,    44,     3,     4,     0,     0,
        5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
+      13,     0,    15,    16,     0,   -55,   -55,    17,    18,    19,
       20,    21,     0,     0,     0,     0,    23,     0,     0,    24,
       25,    26,     0,     0,    27,     0,     0,     0,     0,    29,
       30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    38,    39,     0,   -56,     1,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,   319,    43,     0,     2,
+       0,     0,    38,    39,     0,   -55,     1,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,   317,    43,     0,     2,
       44,     0,     3,     4,     0,     0,     5,     6,     7,     8,
        9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
        0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
@@ -1205,170 +1183,218 @@ static const yytype_int16 yytable[] =
       27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
        0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
        0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-       0,     1,   379,     0,     0,     0,     0,    41,    42,     0,
-       0,     0,   319,    43,     2,     0,    44,     3,     4,     0,
+       0,     1,     0,   -59,     0,     0,     0,    41,    42,     0,
+       0,     0,   317,    43,     2,     0,    44,     3,     4,     0,
        0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
        0,    13,     0,    15,    16,     0,     0,     0,    17,    18,
       19,    20,    21,     0,     0,     0,     0,    23,     0,     0,
       24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
       29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
        0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,    38,    39,     0,     1,   381,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,   319,    43,     2,
+      37,     0,     0,    38,    39,     0,     1,   -55,     0,     0,
+       0,     0,    41,    42,     0,     0,     0,   317,    43,     2,
        0,    44,     3,     4,     0,     0,     5,     6,     7,     8,
        9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
        0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
-       0,     0,     0,     0,     0,    24,     0,    26,     0,     0,
-       0,     0,     0,     0,     0,    29,    30,    31,     0,     0,
+       0,     0,    23,     0,     0,    24,    25,    26,     0,     0,
+      27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
        0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     0,     0,     1,    39,
-       0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
-       0,     2,     0,    43,     3,     4,    44,     0,     5,     6,
-       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
-      15,    16,     0,     0,     0,    17,    18,    19,    20,     0,
-       0,     0,     0,     0,     0,     0,     0,    24,     0,    26,
-       0,     0,     0,     0,     0,     0,     0,    29,    30,    31,
-       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
+       0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
+       0,   -58,     1,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,   317,    43,     0,     2,    44,     0,     3,     4,
+       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,     0,    13,     0,    15,    16,     0,     0,     0,    17,
+      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
+       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
+       0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
+      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
+      36,    37,     0,     0,    38,    39,     0,     1,   371,     0,
+       0,     0,     0,    41,    42,     0,     0,     0,   317,    43,
+       2,     0,    44,     3,     4,     0,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
+      16,     0,     0,     0,    17,    18,    19,    20,    21,     0,
+       0,     0,     0,    23,     0,     0,    24,    25,    26,     0,
+       0,    27,     0,     0,     0,     0,    29,    30,    31,     0,
+       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
+      39,     0,     1,   380,     0,     0,     0,     0,    41,    42,
+       0,     0,     0,   317,    43,     2,     0,    44,     3,     4,
+       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,     0,    13,     0,    15,    16,     0,     0,     0,    17,
+      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
+       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
+       0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
+      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
+      36,    37,     0,     0,    38,    39,     0,     1,   382,     0,
+       0,     0,     0,    41,    42,     0,     0,     0,   317,    43,
+       2,     0,    44,     3,     4,     0,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
+      16,     0,     0,     0,    17,    18,    19,    20,    21,     0,
+       0,     0,     0,     0,     0,     0,    24,     0,    26,     0,
+       0,     0,     0,     0,     0,     0,    29,    30,    31,     0,
+       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,    34,    35,    36,    37,     0,     0,     1,
+      39,     0,     0,     0,     0,     0,     0,     0,    41,    42,
+       0,     0,     2,     0,    43,     3,     4,    44,     0,     5,
+       6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
+       0,    15,    16,     0,     0,     0,    17,    18,    19,    20,
+       0,     0,     0,     0,     0,     0,     0,     0,    24,     0,
+      26,     0,     0,     0,     0,     0,     0,     0,    29,    30,
+      31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,     1,    39,     0,     0,     0,     0,     0,     0,     0,
+      41,    42,     0,     0,     2,     0,    43,     3,     4,    44,
+       0,     5,     0,     7,     8,     9,    67,    11,     0,    12,
+       0,     0,     0,    15,    16,     0,     0,     0,     1,     0,
+       0,     0,     0,     0,     0,     0,    83,    84,    85,    86,
+      68,     2,    26,     0,     3,     4,     0,     0,     5,     0,
+       7,     8,     9,    67,    11,     0,    12,     0,     0,    32,
+      15,    16,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,    83,     0,    85,     0,    68,     0,    26,
+       0,     0,    41,    42,     0,     0,     0,     0,    43,     0,
+       0,    44,     0,     0,     0,     0,    32,     0,     0,     0,
        0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-       1,    39,     0,     0,     0,     0,     0,     0,     0,    41,
+       1,     0,     0,     0,     0,     0,     0,     0,     0,    41,
       42,     0,     0,     2,     0,    43,     3,     4,    44,     0,
-       5,     0,     7,     8,     9,    68,    11,     0,    12,     0,
+       5,     0,     7,     8,     9,    67,    11,     0,    12,     0,
        0,     0,    15,    16,     0,     0,     0,     1,     0,     0,
-       0,     0,     0,     0,     0,    84,    85,    86,    87,    69,
-       2,    26,     0,     3,     4,     0,     0,     5,     0,     7,
-       8,     9,    68,    11,     0,    12,     0,     0,    32,    15,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    68,
+       2,    26,     0,     3,     4,     0,    91,     5,     0,     7,
+       8,     9,    67,    11,     0,    12,     0,     0,    32,    15,
       16,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    84,     0,    86,     0,    69,     0,    26,     0,
-       0,    41,    42,     0,     0,     0,     0,    43,     0,     0,
+       0,     0,     0,     0,     0,     0,    68,     0,    26,     0,
+       0,    41,    42,     0,     0,     0,     0,    43,  -167,  -167,
       44,     0,     0,     0,     0,    32,     0,     0,     0,     0,
        0,     0,    33,    34,    35,    36,    37,     0,     0,     1,
        0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
        0,     0,     2,     0,    43,     3,     4,    44,     0,     5,
-       0,     7,     8,     9,    68,    11,     0,    12,     0,     0,
-       0,    15,    16,     0,     0,     0,     1,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    69,     2,
-      26,     0,     3,     4,     0,    92,     5,     0,     7,     8,
-       9,    68,    11,     0,    12,     0,     0,    32,    15,    16,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,     0,     0,     0,     0,    69,     0,    26,     0,     0,
-      41,    42,     0,     0,     0,     0,    43,  -165,  -165,    44,
-       0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     0,     0,     1,     0,
-       0,     0,     0,     0,   -34,     0,     0,    41,    42,     0,
-       0,     2,     0,    43,     3,     4,    44,     0,     5,     0,
-       7,     8,     9,    68,    11,     0,    12,     0,     0,     0,
-      15,    16,   137,   138,   139,   140,   141,   142,     0,   143,
-       0,     0,   144,   145,   146,     0,     0,    69,     0,    26,
-       0,     0,     0,     0,     0,     0,     0,     0,   147,   148,
-     149,   150,   151,   152,   153,     0,    32,     0,     0,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-       0,     0,    84,     0,    86,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,     0,    43,     0,     0,    44,   137,
-     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
-     145,   146,     0,     0,     0,     0,     0,   190,     0,     0,
-       0,     0,     0,   191,     0,   147,   148,   149,   150,   151,
-     152,   153,   137,   138,   139,   140,   141,   142,     0,   143,
-       0,     0,   144,   145,   146,     0,     0,     0,     0,     0,
-     192,     0,     0,     0,     0,     0,   193,     0,   147,   148,
-     149,   150,   151,   152,   153,   137,   138,   139,   140,   141,
-     142,     0,   143,     0,     0,   144,   145,   146,     0,     0,
-       0,     0,     0,   194,     0,     0,     0,     0,     0,   195,
-       0,   147,   148,   149,   150,   151,   152,   153,   137,   138,
-     139,   140,   141,   142,     0,   143,     0,     0,   144,   145,
-     146,     0,     0,     0,     0,     0,   196,     0,     0,     0,
-       0,     0,   197,     0,   147,   148,   149,   150,   151,   152,
-     153,   137,   138,   139,   140,   141,   142,     0,   143,     0,
-       0,   144,   145,   146,     0,     0,     0,     0,     0,   295,
-       0,     0,     0,     0,     0,     0,     0,   147,   148,   149,
-     150,   151,   152,   153,   137,   138,   139,   140,   141,   142,
-       0,   143,     0,     0,   144,   145,   146,     0,     0,     0,
-       0,     0,   296,     0,     0,     0,     0,     0,     0,     0,
-     147,   148,   149,   150,   151,   152,   153,   137,   138,   139,
-     140,   141,   142,     0,   143,     0,     0,   144,   145,   146,
-       0,     0,     0,     0,     0,   297,     0,     0,     0,     0,
-       0,     0,     0,   147,   148,   149,   150,   151,   152,   153,
-     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
-     144,   145,   146,     0,     0,     0,     0,     0,   298,     0,
-       0,     0,     0,     0,     0,     0,   147,   148,   149,   150,
-     151,   152,   153,   137,   138,   139,   140,   141,   142,     0,
-     143,     0,     0,   144,   145,   146,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   200,     0,   147,
-     148,   149,   150,   151,   152,   153,   137,   138,   139,   140,
-     141,   142,   186,   143,     0,     0,   144,   145,   146,   137,
-     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,     0,
-     201,     0,     0,     0,     0,   147,   148,   149,   150,   151,
-     152,   153,   137,   138,   139,   140,   141,   142,     0,   143,
-       0,     0,   144,   145,   146,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   147,   148,
-     149,   150,   151,   152,   153,     0,     0,     0,   205,   137,
-     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
-     145,   146,     0,     0,     0,     0,     0,   198,   199,     0,
-       0,     0,     0,     0,     0,   147,   148,   149,   150,   151,
-     152,   153,   137,   138,   139,   140,   141,   142,     0,   143,
-       0,     0,   144,   145,   146,   137,   138,   139,   140,     0,
-       0,     0,   143,     0,     0,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,     0,     0,     0,     0,     0,
-       0,   147,   148,   149,   150,   151,   152,   153
+       0,     7,     8,     9,    67,    11,     0,    12,     0,     0,
+       0,    15,    16,     0,     0,     0,    83,     0,    85,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    68,     0,
+      26,     0,     0,   135,   136,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,   145,
+     146,   147,   148,   149,   150,   151,   188,     0,     0,     0,
+      41,    42,   189,     0,     0,     0,    43,     0,     0,    44,
+       0,   135,   136,   137,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,     0,     0,     0,     0,     0,   190,
+       0,     0,     0,     0,     0,   191,     0,   145,   146,   147,
+     148,   149,   150,   151,   135,   136,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
+       0,     0,   192,     0,     0,     0,     0,     0,   193,     0,
+     145,   146,   147,   148,   149,   150,   151,   135,   136,   137,
+     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+       0,     0,     0,     0,     0,   194,     0,     0,     0,     0,
+       0,   195,     0,   145,   146,   147,   148,   149,   150,   151,
+     135,   136,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,     0,     0,     0,     0,     0,   293,     0,
+       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
+     149,   150,   151,   135,   136,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
+       0,   294,     0,     0,     0,     0,     0,     0,     0,   145,
+     146,   147,   148,   149,   150,   151,   135,   136,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
+       0,     0,     0,     0,   295,     0,     0,     0,     0,     0,
+       0,     0,   145,   146,   147,   148,   149,   150,   151,   135,
+     136,   137,   138,   139,   140,     0,   141,     0,     0,   142,
+     143,   144,     0,     0,     0,     0,     0,   296,     0,     0,
+       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
+     150,   151,   135,   136,   137,   138,   139,   140,     0,   141,
+       0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   198,     0,   145,   146,
+     147,   148,   149,   150,   151,   135,   136,   137,   138,   139,
+     140,   184,   141,     0,     0,   142,   143,   144,   135,   136,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,     0,   199,
+       0,     0,     0,     0,   145,   146,   147,   148,   149,   150,
+     151,   135,   136,   137,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
+     148,   149,   150,   151,     0,     0,     0,   203,   135,   136,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,     0,     0,     0,     0,   196,   197,     0,     0,
+       0,     0,     0,     0,   145,   146,   147,   148,   149,   150,
+     151,   135,   136,   137,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,   135,   136,   137,   138,     0,     0,
+       0,   141,     0,     0,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,     0,     0,     0,     0,     0,     0,
+     145,   146,   147,   148,   149,   150,   151
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,    81,   165,    10,    97,   271,     4,    30,   215,
-     312,     8,   285,    19,    54,    48,    95,    27,    24,    29,
-       0,    51,   324,    29,    30,    65,    32,    33,    34,    35,
-      36,    37,    38,    51,   281,    41,    42,    43,    44,   304,
-       6,     7,   280,   290,   250,    54,    52,    53,    26,    97,
-     129,    70,   100,    26,   327,   302,    65,    24,   305,    26,
-     307,   299,   300,    69,    70,    97,    88,    73,   100,    54,
-       1,    77,   374,     0,    80,    94,    95,    97,    84,    76,
-      65,    43,   104,    14,   322,    97,    17,    98,   100,    26,
-      21,   338,   100,   358,    70,    26,    27,    73,    29,   100,
-      97,    98,    56,    57,    70,    99,   100,    73,   355,    76,
-      77,    78,    79,    46,    80,    91,    92,    93,    94,    95,
-      99,   100,   369,    26,   371,   287,    26,   133,    99,   100,
-     377,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   128,   155,
-     356,    36,    37,   159,    26,    54,    53,   163,    26,    26,
-     366,    26,   103,   169,   243,   103,   372,    98,   174,   175,
-     101,   177,   178,   179,    70,   172,   182,   183,   184,   102,
-     186,   100,   100,    26,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   100,    65,    92,    93,    94,    95,
-      48,    53,     1,   209,    26,   100,   212,   100,    44,   206,
-     207,    26,    26,    26,    53,    14,    26,    54,    17,    18,
-      86,    26,    21,    87,    23,    24,    25,    26,    27,    88,
-      29,    87,    36,    86,    33,    34,    54,    35,   100,    86,
-      17,    18,    19,   249,    26,   324,    54,   253,   254,    26,
-      53,    50,    86,    52,    86,   334,    33,   128,   201,   311,
-      53,   173,    53,    53,   210,   344,    -1,    -1,    -1,   348,
+       6,     7,    80,   163,    10,    97,   282,     4,   269,    56,
+      57,     8,    43,    19,    30,    48,    94,    70,    24,     0,
+       6,     7,    97,    29,    30,   100,    32,    33,    34,    35,
+      36,    37,    38,   310,    65,    41,    42,    43,    44,   212,
+     301,    94,    95,    51,   321,    51,    52,    54,   324,    24,
+      51,    26,    17,    18,    19,    26,     1,    97,    65,    26,
+     100,    26,    68,    69,    99,   100,    72,    70,    33,    14,
+      76,    87,    17,    79,     0,   248,    21,    83,    75,    99,
+     100,    26,    27,    69,    29,    70,    72,   103,    73,    92,
+      93,    94,    95,    79,    54,   356,    36,    37,   375,    96,
+      97,    76,    77,    78,    79,    65,    91,    92,    93,    94,
+      95,    54,    27,    97,    29,    98,   100,    99,   100,   297,
+     298,    97,    65,   100,   284,   131,   100,    26,    46,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   127,   153,    26,    26,
+      26,   157,    54,    98,    26,   161,   101,    53,    26,    26,
+     102,   167,   240,   336,   103,   103,   172,   173,   100,   175,
+     176,   177,   100,   170,   180,   181,   182,    26,   184,   100,
+     100,   354,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,    48,   366,   100,    53,    26,    44,    26,    26,
+     373,   207,   278,    26,    26,    53,    88,   204,   205,    54,
+      36,    86,   288,    87,    26,    86,    54,    35,    54,   100,
+      86,    26,    53,    86,    86,   309,   302,   127,   304,   307,
+     199,    52,    52,    52,   171,   208,    -1,    -1,    -1,    -1,
+     246,   247,    -1,   321,    -1,   251,   252,    -1,    -1,    -1,
+      -1,    -1,    -1,   331,    -1,    -1,    -1,    -1,    -1,   335,
+      -1,    -1,    -1,   341,    -1,    -1,    -1,   345,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    35,    -1,   353,    -1,   285,
+      -1,    -1,   358,   361,    -1,   363,    -1,   293,   294,   295,
+     296,    -1,    -1,   369,   291,    -1,   372,    -1,    -1,    -1,
+      -1,    -1,   378,    63,    64,    65,    66,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   329,    -1,    -1,     0,     1,    -1,    89,
+      90,    91,    92,    93,    94,    95,   342,    -1,    -1,    -1,
+      14,    -1,    -1,    17,    18,   351,    -1,    21,    22,    23,
+      24,    25,    26,    27,   360,    29,    30,    31,    -1,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
+      44,    -1,    46,    47,    48,    -1,    50,    51,    52,    53,
+      54,    55,    56,    -1,    -1,    -1,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    -1,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,     1,    97,    98,    99,   100,   101,   102,    -1,
+      -1,    -1,    -1,    -1,    -1,    14,    -1,    44,    17,    18,
+      -1,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    -1,    -1,    33,    34,    63,    64,    65,    66,
+      67,    68,    -1,    70,    71,    72,    73,    74,    75,    -1,
+      -1,    50,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    -1,
       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,   288,   362,    -1,   364,    44,    -1,    -1,   295,
-     296,   297,   298,    92,    93,    -1,   293,    -1,    -1,    98,
-      -1,    -1,   101,   102,   103,    63,    64,    65,    66,    67,
-      68,    -1,    70,    71,    72,    73,    74,    75,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   331,    -1,     0,     1,    -1,
-      -1,    89,    90,    91,    92,    93,    94,    95,    -1,   345,
-      -1,    14,    -1,    -1,    17,    18,    -1,   353,    21,    22,
-      23,    24,    25,    26,    27,   361,    29,    30,    31,    -1,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      -1,    44,    -1,    46,    47,    48,    -1,    50,    51,    52,
-      53,    54,    55,    56,    -1,    -1,    -1,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    -1,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    -1,    97,    98,    99,   100,   101,   102,
-       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     0,     1,    92,    93,    -1,    -1,    -1,    -1,    98,
+      -1,    -1,   101,   102,   103,    14,    -1,    -1,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    30,    31,    -1,    33,    34,    -1,    36,    37,    38,
+      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
+      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
+      -1,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    -1,    -1,    73,    74,    75,    76,    77,    78,
+      79,    80,    -1,    -1,    83,    84,    -1,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    -1,    97,    98,
+       0,     1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
       30,    31,    -1,    33,    34,    -1,    36,    37,    38,    39,
       40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,
       50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    -1,    -1,    73,    74,    75,    76,    77,    78,    79,
-      80,    -1,    -1,    83,    84,    -1,    86,    87,    88,    89,
-      90,    91,    92,    93,    94,    95,    -1,    97,    98,     0,
-       1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
+      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,    83,    84,    -1,    86,    87,    88,     0,
+       1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,
+     100,   101,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
       21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
       31,    -1,    33,    34,    -1,    36,    37,    38,    39,    40,
       41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
@@ -1378,65 +1404,22 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    83,    84,    -1,    86,    87,    88,     0,     1,
       -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,   100,
      101,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
-      -1,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
-      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
-      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
-      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,    83,    84,    -1,    86,    87,    88,     0,     1,    -1,
-      92,    93,    -1,    -1,    -1,    97,    98,    -1,   100,   101,
-      -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    32,
-      33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    42,
-      -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,    52,
-      -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,    62,
-      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-      83,    84,    85,     0,     1,    -1,    -1,    -1,    -1,    92,
-      93,    -1,    -1,    -1,    97,    98,    -1,    14,   101,    -1,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    30,    31,    -1,    33,    34,    -1,    -1,
-      -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
-      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
-      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      77,    78,    79,    80,    -1,    -1,    83,    84,     0,     1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
-      97,    98,    14,    -1,   101,    17,    18,    -1,    -1,    21,
       22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
-      -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
-      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
-      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
+      32,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
+      42,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,
+      52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
       62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
       -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,    83,    84,     0,     1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    -1,    -1,    -1,    97,    98,    14,    -1,   101,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
-      -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
-      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
-      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      77,    78,    79,    80,    -1,    -1,    83,    84,    -1,     1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
-      97,    98,    14,    -1,   101,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
-      -1,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
-      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
-      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
-      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,    83,    84,    -1,    86,     1,    -1,    -1,    -1,    -1,
+      -1,    83,    84,    85,     0,     1,    -1,    -1,    -1,    -1,
       92,    93,    -1,    -1,    -1,    97,    98,    -1,    14,   101,
       -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
+      26,    27,    -1,    29,    30,    31,    -1,    33,    34,    -1,
       -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,
       -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
       -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
       -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    77,    78,    79,    80,    -1,    -1,    83,    84,    -1,
-       1,    -1,    88,    -1,    -1,    -1,    92,    93,    -1,    -1,
+      76,    77,    78,    79,    80,    -1,    -1,    83,    84,     0,
+       1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
       -1,    97,    98,    14,    -1,   101,    17,    18,    -1,    -1,
       21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
       31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
@@ -1444,7 +1427,7 @@ static const yytype_int16 yycheck[] =
       51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
       61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
       -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    83,    84,    -1,     1,    87,    -1,    -1,    -1,
+      -1,    -1,    83,    84,     0,     1,    -1,    -1,    -1,    -1,
       -1,    92,    93,    -1,    -1,    -1,    97,    98,    14,    -1,
      101,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
       26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
@@ -1453,10 +1436,10 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
       -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
       76,    77,    78,    79,    80,    -1,    -1,    83,    84,    -1,
-       1,    87,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
+       1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
       -1,    97,    98,    14,    -1,   101,    17,    18,    -1,    -1,
       21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
+      31,    -1,    33,    34,    -1,    36,    37,    38,    39,    40,
       41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
       51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
       61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
@@ -1470,7 +1453,7 @@ static const yytype_int16 yycheck[] =
       55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
       -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
       -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
-      -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,     1,    -1,    88,    -1,    -1,    -1,    92,    93,    -1,
       -1,    -1,    97,    98,    14,    -1,   101,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
       -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,
@@ -1483,98 +1466,129 @@ static const yytype_int16 yycheck[] =
       -1,   101,    17,    18,    -1,    -1,    21,    22,    23,    24,
       25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
       -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
+      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
       -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,    -1,    -1,     1,    84,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
-      -1,    14,    -1,    98,    17,    18,   101,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
-      33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    62,
-      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
+      -1,    86,     1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    97,    98,    -1,    14,   101,    -1,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
+      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
+      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
+      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
+      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,    -1,    -1,    83,    84,    -1,     1,    87,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
+      14,    -1,   101,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
+      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
+      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
+      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
+      84,    -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
+      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
+      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
+      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
+      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,    -1,    -1,    83,    84,    -1,     1,    87,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
+      14,    -1,   101,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
+      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,     1,
+      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
+      -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,
+      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,     1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    14,    -1,    98,    17,    18,   101,
+      -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    -1,    -1,    33,    34,    -1,    -1,    -1,     1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
+      50,    14,    52,    -1,    17,    18,    -1,    -1,    21,    -1,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    69,
+      33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,    46,    -1,    48,    -1,    50,    -1,    52,
+      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,
+      -1,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
       -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-       1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+       1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
       93,    -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,
       21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
       -1,    -1,    33,    34,    -1,    -1,    -1,     1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,
-      14,    52,    -1,    17,    18,    -1,    -1,    21,    -1,    23,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
+      14,    52,    -1,    17,    18,    -1,    20,    21,    -1,    23,
       24,    25,    26,    27,    -1,    29,    -1,    -1,    69,    33,
       34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    46,    -1,    48,    -1,    50,    -1,    52,    -1,
-      -1,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,
+      -1,    92,    93,    -1,    -1,    -1,    -1,    98,    99,   100,
      101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
       -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,     1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
       -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,    21,
       -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
-      -1,    33,    34,    -1,    -1,    -1,     1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    14,
-      52,    -1,    17,    18,    -1,    20,    21,    -1,    23,    24,
-      25,    26,    27,    -1,    29,    -1,    -1,    69,    33,    34,
-      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,
-      92,    93,    -1,    -1,    -1,    -1,    98,    99,   100,   101,
-      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,    -1,    -1,     1,    -1,
-      -1,    -1,    -1,    -1,    35,    -1,    -1,    92,    93,    -1,
-      -1,    14,    -1,    98,    17,    18,   101,    -1,    21,    -1,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,
-      33,    34,    63,    64,    65,    66,    67,    68,    -1,    70,
-      -1,    -1,    73,    74,    75,    -1,    -1,    50,    -1,    52,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
-      91,    92,    93,    94,    95,    -1,    69,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-      -1,    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    92,
-      93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,    63,
-      64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
-      74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    54,    -1,    89,    90,    91,    92,    93,
-      94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
-      -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,
-      91,    92,    93,    94,    95,    63,    64,    65,    66,    67,
-      68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,
-      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
-      -1,    89,    90,    91,    92,    93,    94,    95,    63,    64,
-      65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
-      75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    54,    -1,    89,    90,    91,    92,    93,    94,
-      95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
+      -1,    33,    34,    -1,    -1,    -1,    46,    -1,    48,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      52,    -1,    -1,    63,    64,    65,    66,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    89,
+      90,    91,    92,    93,    94,    95,    48,    -1,    -1,    -1,
+      92,    93,    54,    -1,    -1,    -1,    98,    -1,    -1,   101,
+      -1,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
       -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,    91,
       92,    93,    94,    95,    63,    64,    65,    66,    67,    68,
       -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    -1,
       89,    90,    91,    92,    93,    94,    95,    63,    64,    65,
       66,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
       -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    89,    90,    91,    92,    93,    94,    95,
+      -1,    54,    -1,    89,    90,    91,    92,    93,    94,    95,
       63,    64,    65,    66,    67,    68,    -1,    70,    -1,    -1,
       73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,
       93,    94,    95,    63,    64,    65,    66,    67,    68,    -1,
       70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
       90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
-      67,    68,    56,    70,    -1,    -1,    73,    74,    75,    63,
-      64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
-      74,    75,    89,    90,    91,    92,    93,    94,    95,    -1,
-      97,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
-      94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
-      -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
-      91,    92,    93,    94,    95,    -1,    -1,    -1,    99,    63,
+      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,
+      -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    63,
       64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
-      74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,
+      74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
       94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
-      -1,    -1,    73,    74,    75,    63,    64,    65,    66,    -1,
-      -1,    -1,    70,    -1,    -1,    73,    74,    75,    89,    90,
-      91,    92,    93,    94,    95,    -1,    -1,    -1,    -1,    -1,
-      -1,    89,    90,    91,    92,    93,    94,    95
+      -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,
+      91,    92,    93,    94,    95,    63,    64,    65,    66,    67,
+      68,    56,    70,    -1,    -1,    73,    74,    75,    63,    64,
+      65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
+      75,    89,    90,    91,    92,    93,    94,    95,    -1,    97,
+      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
+      95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
+      -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,
+      92,    93,    94,    95,    -1,    -1,    -1,    99,    63,    64,
+      65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
+      75,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,
+      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
+      95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
+      -1,    73,    74,    75,    63,    64,    65,    66,    -1,    -1,
+      -1,    70,    -1,    -1,    73,    74,    75,    89,    90,    91,
+      92,    93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,
+      89,    90,    91,    92,    93,    94,    95
 };
 
   /* YYSTOSSTATE-NUM -- The (internal number of the) accessing
@@ -1586,40 +1600,40 @@ static const yytype_uint8 yystos[] =
       41,    42,    45,    47,    50,    51,    52,    55,    59,    60,
       61,    62,    69,    76,    77,    78,    79,    80,    83,    84,
       85,    92,    93,    98,   101,   105,   106,   107,   108,   110,
-     118,   122,   126,   130,   131,   132,   133,   134,   135,   142,
-     144,   146,   150,   155,   158,    97,    26,   131,    26,    50,
-      98,   132,   156,    98,   156,   131,    48,    98,   132,   157,
-     145,   149,    51,   136,    46,    47,    48,    49,   132,   143,
-     147,    51,    20,   132,    56,    57,    17,    18,    19,    26,
-      33,    26,    26,   132,   132,   143,   138,   132,   132,   132,
-     132,   132,   132,   132,   137,   151,   132,   132,   132,    27,
-      29,   103,   132,   159,   160,   161,   162,     0,    97,    43,
-     132,   109,   121,   126,   132,   135,   155,    63,    64,    65,
-      66,    67,    68,    70,    73,    74,    75,    89,    90,    91,
-      92,    93,    94,    95,   127,    98,   132,   132,   156,   100,
-     156,   131,   156,   100,   156,   127,    26,   139,   132,    46,
-     143,    26,    26,    44,    71,    72,    26,   127,    54,    65,
-     131,   131,    54,    65,    54,    53,    56,   143,    26,   141,
-      48,    54,    48,    54,    48,    54,    48,    54,    81,    82,
-      54,    97,    26,   140,    26,    99,   103,   103,   102,   100,
-     100,   105,   127,   123,   128,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,    26,   152,    99,   132,    99,    99,   132,
-     152,   100,   132,   148,   131,    26,   134,   132,   132,    65,
-     132,   132,   132,    54,    65,    48,   132,   132,   132,   132,
-     100,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   117,   117,   100,   131,   131,   132,    27,    29,   162,
-     132,    53,   123,    97,   100,    97,    26,   127,    44,   132,
-     123,   132,   132,    26,    26,    48,    48,    48,    48,   108,
-     129,    26,   128,   129,    53,   154,    26,   154,   152,   132,
-     111,   114,   129,   131,   132,   132,   132,   132,   128,    97,
-     110,   128,   129,   124,   108,   129,   129,    97,   125,   125,
-     124,    54,    88,   128,   119,   124,   127,    30,   154,   112,
-     115,    87,   132,    87,    36,    37,   120,   127,    36,    86,
-      26,   153,   129,    54,    35,   127,   132,    86,   127,   100,
-     132,    54,   129,   123,   108,    26,   113,   132,   127,    53,
-     127,   123,   116,    86,   129,    86,   129,   123,   124,    87,
-     129,    87
+     121,   128,   132,   133,   134,   135,   136,   137,   144,   146,
+     148,   152,   157,   160,    97,    26,   133,    26,    50,    98,
+     134,   158,    98,   158,   133,    48,    98,   134,   159,   147,
+     151,    51,   138,    46,    47,    48,    49,   134,   145,   149,
+      51,    20,   134,    56,    57,    17,    18,    19,    26,    33,
+      26,    26,   134,   134,   145,   140,   134,   134,   134,   134,
+     134,   134,   134,   139,   153,   134,   134,   134,    27,    29,
+     103,   134,   161,   162,   163,   164,     0,    97,   134,   109,
+     124,   128,   134,   137,   157,    63,    64,    65,    66,    67,
+      68,    70,    73,    74,    75,    89,    90,    91,    92,    93,
+      94,    95,   129,    98,   134,   134,   158,   100,   158,   133,
+     158,   100,   158,   129,    26,   141,   134,    46,   145,    26,
+      26,    44,    71,    72,    26,   129,    54,    65,   133,   133,
+      54,    65,    54,    53,    56,   145,    26,   143,    48,    54,
+      48,    54,    48,    54,    48,    54,    81,    82,    54,    97,
+      26,   142,    26,    99,   103,   103,   102,   100,   100,   105,
+     125,   130,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+      26,   154,    99,   134,    99,    99,   134,   154,   100,   134,
+     150,   133,    26,   136,   134,   134,    43,    65,   134,   134,
+     134,    54,    65,    48,   134,   134,   134,   134,   100,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   120,
+     120,   100,   133,   133,   134,    27,    29,   164,    53,   125,
+      97,   100,    97,    26,   129,    44,   134,   134,   125,   134,
+     134,    26,    26,    48,    48,    48,    48,   108,   131,    26,
+     131,    53,   156,    26,   156,   154,   134,   117,   111,   114,
+     131,   133,   134,   134,   134,   134,   130,    97,   110,   130,
+     126,   108,   131,   131,    97,   129,   127,   127,   126,    54,
+      88,   122,   126,   129,    30,   156,   118,   112,   115,    87,
+     134,    36,    37,   123,   129,    36,    86,    26,   155,   131,
+     125,    54,    35,   129,   134,    86,   129,   100,   119,   134,
+      54,   131,   125,   108,    26,   131,   113,   134,   129,    53,
+     129,    87,   125,   116,    86,   131,    86,   131,   125,   126,
+      87,   131,    87
 };
 
   /* YYR1YYN -- Symbol number of symbol that rule YYN derives.  */
@@ -1628,22 +1642,22 @@ static const yytype_uint8 yyr1[] =
        0,   104,   105,   105,   106,   106,   106,   107,   107,   107,
      107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
      108,   108,   108,   109,   109,   109,   109,   110,   110,   110,
-     111,   112,   113,   110,   114,   115,   116,   110,   110,   110,
-     110,   110,   110,   117,   118,   118,   119,   119,   120,   121,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   129,
-     129,   130,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   133,   133,   133,   133,   133,   133,   133,
-     133,   134,   134,   135,   135,   135,   135,   135,   136,   135,
-     137,   135,   138,   135,   135,   135,   135,   135,   139,   139,
-     140,   140,   141,   141,   142,   142,   142,   142,   142,   142,
-     143,   143,   144,   144,   144,   145,   144,   147,   148,   146,
-     146,   149,   146,   146,   146,   151,   150,   152,   152,   152,
-     153,   153,   153,   154,   155,   156,   156,   156,   157,   157,
-     158,   159,   159,   159,   159,   160,   160,   161,   161,   162,
-     162
+     111,   112,   113,   110,   114,   115,   116,   110,   117,   118,
+     119,   110,   110,   110,   110,   110,   120,   121,   121,   122,
+     122,   123,   124,   124,   125,   126,   127,   128,   129,   130,
+     131,   131,   131,   132,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   135,   135,   135,   135,   135,
+     135,   135,   135,   136,   136,   137,   137,   137,   137,   137,
+     138,   137,   139,   137,   140,   137,   137,   137,   137,   137,
+     141,   141,   142,   142,   143,   143,   144,   144,   144,   144,
+     144,   144,   145,   145,   146,   146,   146,   147,   146,   149,
+     150,   148,   148,   151,   148,   148,   148,   153,   152,   154,
+     154,   154,   155,   155,   155,   156,   157,   158,   158,   158,
+     159,   159,   160,   161,   161,   161,   161,   162,   162,   163,
+     163,   164,   164
 };
 
   /* YYR2YYN -- Number of symbols on the right hand side of rule YYN.  */
@@ -1652,22 +1666,22 @@ static const yytype_int8 yyr2[] =
        0,     2,     1,     3,     0,     1,     1,     4,     4,     6,
        4,     4,     4,     4,     4,     4,     5,     5,     8,     4,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     8,
-       0,     0,     0,    14,     0,     0,     0,    15,     8,     2,
-       3,     7,     6,     0,     9,    12,     0,     2,     6,    11,
-       7,     3,     0,     0,     0,     1,     0,     0,     0,     2,
-       2,     3,     1,     1,     1,     1,     1,     1,     3,     1,
-       2,     1,     1,     4,     2,     4,     3,     2,     1,     1,
-       1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     2,     3,     3,     3,     3,     2,
-       2,     4,     4,     4,     6,     4,     6,     4,     6,     4,
-       6,     2,     1,     2,     1,     1,     2,     1,     0,     3,
-       0,     3,     0,     3,     4,     2,     4,     2,     1,     3,
-       1,     3,     1,     3,     1,     2,     2,     2,     3,     2,
-       3,     2,     2,     3,     2,     0,     3,     0,     0,     9,
-       2,     0,     7,     8,     6,     0,     3,     0,     1,     3,
-       0,     1,     3,     0,     2,     0,     1,     3,     1,     3,
-       3,     0,     1,     1,     1,     1,     3,     1,     3,     3,
-       3
+       0,     0,     0,    14,     0,     0,     0,    15,     0,     0,
+       0,    12,     2,     3,     7,     6,     0,     9,    12,     0,
+       2,     6,    11,     7,     0,     0,     0,     1,     0,     0,
+       0,     2,     2,     3,     1,     1,     1,     1,     1,     1,
+       3,     1,     2,     1,     1,     4,     2,     4,     3,     2,
+       1,     1,     1,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     2,     3,     3,     3,
+       3,     2,     2,     4,     4,     4,     6,     4,     6,     4,
+       6,     4,     6,     2,     1,     2,     1,     1,     2,     1,
+       0,     3,     0,     3,     0,     3,     4,     2,     4,     2,
+       1,     3,     1,     3,     1,     3,     1,     2,     2,     2,
+       3,     2,     3,     2,     2,     3,     2,     0,     3,     0,
+       0,     9,     2,     0,     7,     8,     6,     0,     3,     0,
+       1,     3,     0,     1,     3,     0,     2,     0,     1,     3,
+       1,     3,     3,     0,     1,     1,     1,     1,     3,     1,
+       3,     3,     3
 };
 
 
@@ -1941,79 +1955,79 @@ yydestruct (const char *yymsg,
     case 22: /* BLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1945 "engines/director/lingo/lingo-gr.cpp"
+#line 1959 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1951 "engines/director/lingo/lingo-gr.cpp"
+#line 1965 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1957 "engines/director/lingo/lingo-gr.cpp"
+#line 1971 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* THEFBLTIN  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1963 "engines/director/lingo/lingo-gr.cpp"
+#line 1977 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ID  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1969 "engines/director/lingo/lingo-gr.cpp"
+#line 1983 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* STRING  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1975 "engines/director/lingo/lingo-gr.cpp"
+#line 1989 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* HANDLER  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1981 "engines/director/lingo/lingo-gr.cpp"
+#line 1995 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* SYMBOL  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1987 "engines/director/lingo/lingo-gr.cpp"
+#line 2001 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* ENDCLAUSE  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1993 "engines/director/lingo/lingo-gr.cpp"
+#line 2007 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tPLAYACCEL  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1999 "engines/director/lingo/lingo-gr.cpp"
+#line 2013 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* tMETHOD  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2005 "engines/director/lingo/lingo-gr.cpp"
+#line 2019 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 33: /* THEOBJECTFIELD  */
 #line 162 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 2011 "engines/director/lingo/lingo-gr.cpp"
+#line 2025 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 150: /* on  */
+    case 152: /* on  */
 #line 161 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2017 "engines/director/lingo/lingo-gr.cpp"
+#line 2031 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2299,7 +2313,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2303 "engines/director/lingo/lingo-gr.cpp"
+#line 2317 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2307,7 +2321,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2311 "engines/director/lingo/lingo-gr.cpp"
+#line 2325 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2323,19 +2337,19 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2327 "engines/director/lingo/lingo-gr.cpp"
+#line 2341 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 194 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2333 "engines/director/lingo/lingo-gr.cpp"
+#line 2347 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 195 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2339 "engines/director/lingo/lingo-gr.cpp"
+#line 2353 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2346,7 +2360,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2350 "engines/director/lingo/lingo-gr.cpp"
+#line 2364 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2358,7 +2372,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2362 "engines/director/lingo/lingo-gr.cpp"
+#line 2376 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2369,7 +2383,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2373 "engines/director/lingo/lingo-gr.cpp"
+#line 2387 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2381,7 +2395,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2385 "engines/director/lingo/lingo-gr.cpp"
+#line 2399 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2392,7 +2406,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2396 "engines/director/lingo/lingo-gr.cpp"
+#line 2410 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2403,7 +2417,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2407 "engines/director/lingo/lingo-gr.cpp"
+#line 2421 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2419,7 +2433,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2423 "engines/director/lingo/lingo-gr.cpp"
+#line 2437 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2430,7 +2444,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2434 "engines/director/lingo/lingo-gr.cpp"
+#line 2448 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
@@ -2441,32 +2455,32 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code) + 2);
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentScript)[(yyvsp[-1].code)] = start; }
-#line 2445 "engines/director/lingo/lingo-gr.cpp"
+#line 2459 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
 #line 280 "engines/director/lingo/lingo-gr.y"
-                        { g_lingo->code1(LC::c_varpush);
-			  g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2452 "engines/director/lingo/lingo-gr.cpp"
+                                { g_lingo->code1(LC::c_varpush);
+				  g_lingo->codeString((yyvsp[-2].s)->c_str()); }
+#line 2466 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
 #line 283 "engines/director/lingo/lingo-gr.y"
-                        { g_lingo->code1(LC::c_eval);
-			  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2459 "engines/director/lingo/lingo-gr.cpp"
+                                { g_lingo->code1(LC::c_eval);
+				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
+#line 2473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
 #line 286 "engines/director/lingo/lingo-gr.y"
-                        { g_lingo->code1(LC::c_le); }
-#line 2465 "engines/director/lingo/lingo-gr.cpp"
+                                { g_lingo->code1(LC::c_le); }
+#line 2479 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
 #line 286 "engines/director/lingo/lingo-gr.y"
-                                                                                  {
+                                                                                          {
 
 		g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[-11].s)->c_str());
@@ -2484,32 +2498,32 @@ yyreduce:
 		WRITE_UINT32(&end, pos - (yyvsp[-2].code) + 2);
 		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentScript)[(yyvsp[-2].code)] = end;	}
-#line 2488 "engines/director/lingo/lingo-gr.cpp"
+#line 2502 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
 #line 310 "engines/director/lingo/lingo-gr.y"
-                        { g_lingo->code1(LC::c_varpush);
-			  g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2495 "engines/director/lingo/lingo-gr.cpp"
+                                { g_lingo->code1(LC::c_varpush);
+				  g_lingo->codeString((yyvsp[-2].s)->c_str()); }
+#line 2509 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
 #line 313 "engines/director/lingo/lingo-gr.y"
-                        { g_lingo->code1(LC::c_eval);
-			  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2502 "engines/director/lingo/lingo-gr.cpp"
+                                { g_lingo->code1(LC::c_eval);
+				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
+#line 2516 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
 #line 316 "engines/director/lingo/lingo-gr.y"
-                        { g_lingo->code1(LC::c_ge); }
-#line 2508 "engines/director/lingo/lingo-gr.cpp"
+                                { g_lingo->code1(LC::c_ge); }
+#line 2522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
-#line 316 "engines/director/lingo/lingo-gr.y"
-                                                                                  {
+#line 317 "engines/director/lingo/lingo-gr.y"
+                                                    {
 
 		g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[-12].s)->c_str());
@@ -2527,69 +2541,109 @@ yyreduce:
 		WRITE_UINT32(&end, pos - (yyvsp[-2].code) + 2);
 		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentScript)[(yyvsp[-2].code)] = end;	}
-#line 2531 "engines/director/lingo/lingo-gr.cpp"
+#line 2545 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
-#line 340 "engines/director/lingo/lingo-gr.y"
-                                                                            {
-		inst list = 0, body = 0, end = 0;
-		WRITE_UINT32(&list, (yyvsp[-5].code) - (yyvsp[-7].code));
-		WRITE_UINT32(&body, (yyvsp[-2].code) - (yyvsp[-7].code));
-		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-7].code));
-		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 1] = list;		/* initial count value */
-		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 2] = 0;		/* final count value */
-		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 3] = body;		/* body of loop */
-		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 4] = 0;		/* increment */
-		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 5] = end; }
-#line 2546 "engines/director/lingo/lingo-gr.cpp"
+#line 342 "engines/director/lingo/lingo-gr.y"
+                                { g_lingo->code1(LC::cb_stackpeek);
+				  g_lingo->codeInt(0);
+				  g_lingo->codeFunc(new Common::String("count"), 1);
+				  g_lingo->code1(LC::c_intpush);	// start counter
+				  g_lingo->codeInt(1); }
+#line 2555 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
-#line 351 "engines/director/lingo/lingo-gr.y"
+#line 348 "engines/director/lingo/lingo-gr.y"
+                                { g_lingo->code1(LC::cb_stackpeek);	// get counter
+				  g_lingo->codeInt(0);
+				  g_lingo->code1(LC::cb_stackpeek);	// get array size
+				  g_lingo->codeInt(2);
+				  g_lingo->code1(LC::c_le); }
+#line 2565 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 40:
+#line 354 "engines/director/lingo/lingo-gr.y"
+                                { g_lingo->code1(LC::cb_stackpeek);	// get list
+				  g_lingo->codeInt(2);
+				  g_lingo->code1(LC::cb_stackpeek);	// get counter
+				  g_lingo->codeInt(1);
+				  g_lingo->codeFunc(new Common::String("getAt"), 2);
+				  g_lingo->code1(LC::c_varpush);
+				  g_lingo->codeString((yyvsp[-6].s)->c_str());
+				  g_lingo->code1(LC::c_assign); }
+#line 2578 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 41:
+#line 362 "engines/director/lingo/lingo-gr.y"
+                                            {
+
+		g_lingo->code1(LC::c_intpush);
+		g_lingo->codeInt(1);
+		g_lingo->code1(LC::c_add);			// Increment counter
+
+		int jump = g_lingo->code2(LC::c_jump, STOP);
+
+		int end2 = g_lingo->code1(LC::cb_stackdrop);	// remove list, size, counter
+		g_lingo->codeInt(3);
+
+		inst loop = 0, end = 0;
+		WRITE_UINT32(&loop, (yyvsp[-5].code) - jump);
+		WRITE_UINT32(&end, end2 - (yyvsp[-3].code) + 1);
+
+		(*g_lingo->_currentScript)[jump + 1] = loop;		/* final count value */
+		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end;	}
+#line 2600 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 42:
+#line 380 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2553 "engines/director/lingo/lingo-gr.cpp"
+#line 2607 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 40:
-#line 353 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 382 "engines/director/lingo/lingo-gr.y"
                                       {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2563 "engines/director/lingo/lingo-gr.cpp"
+#line 2617 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 41:
-#line 358 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 387 "engines/director/lingo/lingo-gr.y"
                                                           {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2572 "engines/director/lingo/lingo-gr.cpp"
+#line 2626 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
-#line 362 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 391 "engines/director/lingo/lingo-gr.y"
                                                     {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2581 "engines/director/lingo/lingo-gr.cpp"
+#line 2635 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 43:
-#line 367 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 396 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2589 "engines/director/lingo/lingo-gr.cpp"
+#line 2643 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 44:
-#line 371 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 400 "engines/director/lingo/lingo-gr.y"
                                                                                            {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2597,11 +2651,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2601 "engines/director/lingo/lingo-gr.cpp"
+#line 2655 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 378 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 407 "engines/director/lingo/lingo-gr.y"
                                                                                                                   {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-6].code) + 1 - (yyvsp[-9].code) + 1);
@@ -2609,154 +2663,144 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code)); }
-#line 2613 "engines/director/lingo/lingo-gr.cpp"
+#line 2667 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 48:
-#line 389 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 418 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2623 "engines/director/lingo/lingo-gr.cpp"
+#line 2677 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 49:
-#line 395 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 424 "engines/director/lingo/lingo-gr.y"
                                                                                                              {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code) + 1);
 		(*g_lingo->_currentScript)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code)] = end;	}
-#line 2634 "engines/director/lingo/lingo-gr.cpp"
+#line 2688 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 50:
-#line 401 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 430 "engines/director/lingo/lingo-gr.y"
                                                                       {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-4].code) + 1);
 
 		(*g_lingo->_currentScript)[(yyvsp[-4].code)] = end; }
-#line 2644 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 51:
-#line 407 "engines/director/lingo/lingo-gr.y"
-                                                {
-		(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
-		g_lingo->code3(STOP, STOP, STOP);
-		g_lingo->codeString((yyvsp[0].s)->c_str());
-		delete (yyvsp[0].s); }
-#line 2654 "engines/director/lingo/lingo-gr.cpp"
+#line 2698 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 52:
-#line 413 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 442 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2662 "engines/director/lingo/lingo-gr.cpp"
+#line 2706 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 446 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2670 "engines/director/lingo/lingo-gr.cpp"
+#line 2714 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 54:
-#line 421 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 450 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2678 "engines/director/lingo/lingo-gr.cpp"
+#line 2722 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 425 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 454 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2685 "engines/director/lingo/lingo-gr.cpp"
+#line 2729 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 428 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 457 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2691 "engines/director/lingo/lingo-gr.cpp"
+#line 2735 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 57:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 459 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2697 "engines/director/lingo/lingo-gr.cpp"
+#line 2741 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 58:
-#line 432 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 461 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2703 "engines/director/lingo/lingo-gr.cpp"
+#line 2747 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 61:
-#line 436 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 465 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_whencode);
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2713 "engines/director/lingo/lingo-gr.cpp"
+#line 2757 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 442 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 471 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2721 "engines/director/lingo/lingo-gr.cpp"
+#line 2765 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 445 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 474 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2729 "engines/director/lingo/lingo-gr.cpp"
+#line 2773 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 448 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 477 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2738 "engines/director/lingo/lingo-gr.cpp"
+#line 2782 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 452 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 481 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2747 "engines/director/lingo/lingo-gr.cpp"
+#line 2791 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 456 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 485 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2756 "engines/director/lingo/lingo-gr.cpp"
+#line 2800 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 460 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 489 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2765,17 +2809,17 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2769 "engines/director/lingo/lingo-gr.cpp"
+#line 2813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 468 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 497 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2775 "engines/director/lingo/lingo-gr.cpp"
+#line 2819 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 470 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 499 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2786,542 +2830,542 @@ yyreduce:
 			yyerrok;
 		}
 	}
-#line 2790 "engines/director/lingo/lingo-gr.cpp"
+#line 2834 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 481 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 510 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2796 "engines/director/lingo/lingo-gr.cpp"
+#line 2840 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 483 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 512 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2804 "engines/director/lingo/lingo-gr.cpp"
+#line 2848 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 486 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 515 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2812 "engines/director/lingo/lingo-gr.cpp"
+#line 2856 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 518 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2820 "engines/director/lingo/lingo-gr.cpp"
+#line 2864 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 521 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2828 "engines/director/lingo/lingo-gr.cpp"
+#line 2872 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 495 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 524 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2839 "engines/director/lingo/lingo-gr.cpp"
+#line 2883 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 530 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2849 "engines/director/lingo/lingo-gr.cpp"
+#line 2893 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 506 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 535 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectref).field->c_str());
 		delete (yyvsp[0].objectref).obj;
 		delete (yyvsp[0].objectref).field; }
-#line 2860 "engines/director/lingo/lingo-gr.cpp"
+#line 2904 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 513 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 542 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2866 "engines/director/lingo/lingo-gr.cpp"
+#line 2910 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 543 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2872 "engines/director/lingo/lingo-gr.cpp"
+#line 2916 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 544 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2878 "engines/director/lingo/lingo-gr.cpp"
+#line 2922 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 545 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2884 "engines/director/lingo/lingo-gr.cpp"
+#line 2928 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 546 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2890 "engines/director/lingo/lingo-gr.cpp"
+#line 2934 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 518 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 547 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2896 "engines/director/lingo/lingo-gr.cpp"
+#line 2940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 548 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2902 "engines/director/lingo/lingo-gr.cpp"
+#line 2946 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 549 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2908 "engines/director/lingo/lingo-gr.cpp"
+#line 2952 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 550 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2914 "engines/director/lingo/lingo-gr.cpp"
+#line 2958 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 551 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2920 "engines/director/lingo/lingo-gr.cpp"
+#line 2964 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 552 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2926 "engines/director/lingo/lingo-gr.cpp"
+#line 2970 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 553 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2932 "engines/director/lingo/lingo-gr.cpp"
+#line 2976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 554 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2938 "engines/director/lingo/lingo-gr.cpp"
+#line 2982 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 526 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 555 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2944 "engines/director/lingo/lingo-gr.cpp"
+#line 2988 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 527 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 556 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2950 "engines/director/lingo/lingo-gr.cpp"
+#line 2994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 557 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2956 "engines/director/lingo/lingo-gr.cpp"
+#line 3000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 558 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2962 "engines/director/lingo/lingo-gr.cpp"
+#line 3006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 559 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2968 "engines/director/lingo/lingo-gr.cpp"
+#line 3012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 560 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 2974 "engines/director/lingo/lingo-gr.cpp"
+#line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 532 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 561 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2980 "engines/director/lingo/lingo-gr.cpp"
+#line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
-#line 533 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 562 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 2986 "engines/director/lingo/lingo-gr.cpp"
+#line 3030 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 534 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 563 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 2992 "engines/director/lingo/lingo-gr.cpp"
+#line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 565 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
-#line 2998 "engines/director/lingo/lingo-gr.cpp"
+#line 3042 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 537 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 566 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 3004 "engines/director/lingo/lingo-gr.cpp"
+#line 3048 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 538 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 567 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3010 "engines/director/lingo/lingo-gr.cpp"
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 539 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 568 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 3016 "engines/director/lingo/lingo-gr.cpp"
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 540 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 569 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3022 "engines/director/lingo/lingo-gr.cpp"
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 541 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 570 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+#line 3072 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 542 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 571 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3034 "engines/director/lingo/lingo-gr.cpp"
+#line 3078 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 572 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 3040 "engines/director/lingo/lingo-gr.cpp"
+#line 3084 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 545 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 574 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 3048 "engines/director/lingo/lingo-gr.cpp"
+#line 3092 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 579 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3054 "engines/director/lingo/lingo-gr.cpp"
+#line 3098 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 553 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 582 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_exitRepeat); }
-#line 3060 "engines/director/lingo/lingo-gr.cpp"
+#line 3104 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 554 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 583 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3066 "engines/director/lingo/lingo-gr.cpp"
+#line 3110 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 584 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3072 "engines/director/lingo/lingo-gr.cpp"
+#line 3116 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 584 "engines/director/lingo/lingo-gr.y"
                                                                                  { inNone(); }
-#line 3078 "engines/director/lingo/lingo-gr.cpp"
+#line 3122 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 556 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 585 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3084 "engines/director/lingo/lingo-gr.cpp"
+#line 3128 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 556 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 585 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 3090 "engines/director/lingo/lingo-gr.cpp"
+#line 3134 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 586 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3096 "engines/director/lingo/lingo-gr.cpp"
+#line 3140 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 586 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 3102 "engines/director/lingo/lingo-gr.cpp"
+#line 3146 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 558 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 587 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3110 "engines/director/lingo/lingo-gr.cpp"
+#line 3154 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 561 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 590 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3118 "engines/director/lingo/lingo-gr.cpp"
+#line 3162 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 564 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 593 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
-#line 3124 "engines/director/lingo/lingo-gr.cpp"
+#line 3168 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 565 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 594 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3130 "engines/director/lingo/lingo-gr.cpp"
+#line 3174 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 567 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 596 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3140 "engines/director/lingo/lingo-gr.cpp"
+#line 3184 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 572 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 601 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3150 "engines/director/lingo/lingo-gr.cpp"
+#line 3194 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 607 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3160 "engines/director/lingo/lingo-gr.cpp"
+#line 3204 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 612 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3170 "engines/director/lingo/lingo-gr.cpp"
+#line 3214 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3180 "engines/director/lingo/lingo-gr.cpp"
+#line 3224 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 594 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 623 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mArg((yyvsp[0].s));
 		delete (yyvsp[0].s); }
-#line 3190 "engines/director/lingo/lingo-gr.cpp"
+#line 3234 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 607 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 636 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3196 "engines/director/lingo/lingo-gr.cpp"
+#line 3240 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 608 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 637 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3202 "engines/director/lingo/lingo-gr.cpp"
+#line 3246 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 609 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 638 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3208 "engines/director/lingo/lingo-gr.cpp"
+#line 3252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 610 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 639 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3217 "engines/director/lingo/lingo-gr.cpp"
+#line 3261 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 643 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3226 "engines/director/lingo/lingo-gr.cpp"
+#line 3270 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 647 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3235 "engines/director/lingo/lingo-gr.cpp"
+#line 3279 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 626 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 655 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3244 "engines/director/lingo/lingo-gr.cpp"
+#line 3288 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 630 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 659 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3253 "engines/director/lingo/lingo-gr.cpp"
+#line 3297 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 634 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 663 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3262 "engines/director/lingo/lingo-gr.cpp"
+#line 3306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 638 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 667 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3268 "engines/director/lingo/lingo-gr.cpp"
+#line 3312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 638 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 667 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3277 "engines/director/lingo/lingo-gr.cpp"
+#line 3321 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 668 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 697 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3283 "engines/director/lingo/lingo-gr.cpp"
+#line 3327 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 668 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 697 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory.clear(); }
-#line 3289 "engines/director/lingo/lingo-gr.cpp"
+#line 3333 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 669 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 698 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3299 "engines/director/lingo/lingo-gr.cpp"
+#line 3343 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 674 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 703 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3305 "engines/director/lingo/lingo-gr.cpp"
+#line 3349 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 675 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 704 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
-#line 3311 "engines/director/lingo/lingo-gr.cpp"
+#line 3355 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 676 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 705 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3321 "engines/director/lingo/lingo-gr.cpp"
+#line 3365 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 681 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 710 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3330,70 +3374,70 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3334 "engines/director/lingo/lingo-gr.cpp"
+#line 3378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 689 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 718 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3344 "engines/director/lingo/lingo-gr.cpp"
+#line 3388 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 695 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 724 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3350 "engines/director/lingo/lingo-gr.cpp"
+#line 3394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 695 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 724 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3357 "engines/director/lingo/lingo-gr.cpp"
+#line 3401 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 698 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 727 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3363 "engines/director/lingo/lingo-gr.cpp"
+#line 3407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 699 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 728 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3369 "engines/director/lingo/lingo-gr.cpp"
+#line 3413 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 700 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 729 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3375 "engines/director/lingo/lingo-gr.cpp"
+#line 3419 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 703 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 732 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3381 "engines/director/lingo/lingo-gr.cpp"
+#line 3425 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 704 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 733 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3387 "engines/director/lingo/lingo-gr.cpp"
+#line 3431 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 706 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 735 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); inDef(); }
-#line 3393 "engines/director/lingo/lingo-gr.cpp"
+#line 3437 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 708 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 737 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3401,113 +3445,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3405 "engines/director/lingo/lingo-gr.cpp"
+#line 3449 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 716 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 745 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3411 "engines/director/lingo/lingo-gr.cpp"
+#line 3455 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 717 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 746 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3417 "engines/director/lingo/lingo-gr.cpp"
+#line 3461 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 718 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 747 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3423 "engines/director/lingo/lingo-gr.cpp"
+#line 3467 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 720 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 749 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3429 "engines/director/lingo/lingo-gr.cpp"
+#line 3473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 721 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 750 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3435 "engines/director/lingo/lingo-gr.cpp"
+#line 3479 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 723 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 752 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3441 "engines/director/lingo/lingo-gr.cpp"
+#line 3485 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 725 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 754 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3447 "engines/director/lingo/lingo-gr.cpp"
+#line 3491 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 726 "engines/director/lingo/lingo-gr.y"
+  case 174:
+#line 755 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3453 "engines/director/lingo/lingo-gr.cpp"
+#line 3497 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173:
-#line 727 "engines/director/lingo/lingo-gr.y"
+  case 175:
+#line 756 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3459 "engines/director/lingo/lingo-gr.cpp"
+#line 3503 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 174:
-#line 728 "engines/director/lingo/lingo-gr.y"
+  case 176:
+#line 757 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3465 "engines/director/lingo/lingo-gr.cpp"
+#line 3509 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 175:
-#line 730 "engines/director/lingo/lingo-gr.y"
+  case 177:
+#line 759 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3471 "engines/director/lingo/lingo-gr.cpp"
+#line 3515 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 176:
-#line 731 "engines/director/lingo/lingo-gr.y"
+  case 178:
+#line 760 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3477 "engines/director/lingo/lingo-gr.cpp"
+#line 3521 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 177:
-#line 733 "engines/director/lingo/lingo-gr.y"
+  case 179:
+#line 762 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3483 "engines/director/lingo/lingo-gr.cpp"
+#line 3527 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 178:
-#line 734 "engines/director/lingo/lingo-gr.y"
+  case 180:
+#line 763 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3489 "engines/director/lingo/lingo-gr.cpp"
+#line 3533 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 179:
-#line 736 "engines/director/lingo/lingo-gr.y"
+  case 181:
+#line 765 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3498 "engines/director/lingo/lingo-gr.cpp"
+#line 3542 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 180:
-#line 740 "engines/director/lingo/lingo-gr.y"
+  case 182:
+#line 769 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3507 "engines/director/lingo/lingo-gr.cpp"
+#line 3551 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3511 "engines/director/lingo/lingo-gr.cpp"
+#line 3555 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3706,7 +3750,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 746 "engines/director/lingo/lingo-gr.y"
+#line 775 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 261953771c..7b7d5ff4d3 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -277,13 +277,13 @@ stmt: stmtoneliner
 	// end repeat
 	//
 	| tREPEAT tWITH ID tEQ expr[init]
-			{ g_lingo->code1(LC::c_varpush);
-			  g_lingo->codeString($ID->c_str()); }
-		varassign
-			{ g_lingo->code1(LC::c_eval);
-			  g_lingo->codeString($ID->c_str()); }
+				{ g_lingo->code1(LC::c_varpush);
+				  g_lingo->codeString($ID->c_str()); }
+			varassign
+				{ g_lingo->code1(LC::c_eval);
+				  g_lingo->codeString($ID->c_str()); }
 			tTO expr[finish]
-			{ g_lingo->code1(LC::c_le); } jumpifz stmtlist tENDREPEAT {
+				{ g_lingo->code1(LC::c_le); } jumpifz stmtlist tENDREPEAT {
 
 		g_lingo->code1(LC::c_eval);
 		g_lingo->codeString($ID->c_str());
@@ -307,13 +307,14 @@ stmt: stmtoneliner
 	// end repeat
 	//
 	| tREPEAT tWITH ID tEQ expr[init]
-			{ g_lingo->code1(LC::c_varpush);
-			  g_lingo->codeString($ID->c_str()); }
-		varassign
-			{ g_lingo->code1(LC::c_eval);
-			  g_lingo->codeString($ID->c_str()); }
+				{ g_lingo->code1(LC::c_varpush);
+				  g_lingo->codeString($ID->c_str()); }
+			varassign
+				{ g_lingo->code1(LC::c_eval);
+				  g_lingo->codeString($ID->c_str()); }
 			tDOWN tTO expr[finish]
-			{ g_lingo->code1(LC::c_ge); } jumpifz stmtlist tENDREPEAT {
+				{ g_lingo->code1(LC::c_ge); }
+			jumpifz stmtlist tENDREPEAT {
 
 		g_lingo->code1(LC::c_eval);
 		g_lingo->codeString($ID->c_str());
@@ -337,16 +338,44 @@ stmt: stmtoneliner
 	//   statements
 	// end repeat
 	//
-	| repeatwith tIN begin[list] expr end stmtlist end[end3] tENDREPEAT {
-		inst list = 0, body = 0, end = 0;
-		WRITE_UINT32(&list, $list - $repeatwith);
-		WRITE_UINT32(&body, $stmtlist - $repeatwith);
-		WRITE_UINT32(&end, $end3 - $repeatwith);
-		(*g_lingo->_currentScript)[$repeatwith + 1] = list;		/* initial count value */
-		(*g_lingo->_currentScript)[$repeatwith + 2] = 0;		/* final count value */
-		(*g_lingo->_currentScript)[$repeatwith + 3] = body;		/* body of loop */
-		(*g_lingo->_currentScript)[$repeatwith + 4] = 0;		/* increment */
-		(*g_lingo->_currentScript)[$repeatwith + 5] = end; }	/* end, if cond fails */
+	| tREPEAT tWITH ID tIN expr
+				{ g_lingo->code1(LC::cb_stackpeek);
+				  g_lingo->codeInt(0);
+				  g_lingo->codeFunc(new Common::String("count"), 1);
+				  g_lingo->code1(LC::c_intpush);	// start counter
+				  g_lingo->codeInt(1); }
+			begin
+				{ g_lingo->code1(LC::cb_stackpeek);	// get counter
+				  g_lingo->codeInt(0);
+				  g_lingo->code1(LC::cb_stackpeek);	// get array size
+				  g_lingo->codeInt(2);
+				  g_lingo->code1(LC::c_le); }
+			jumpifz
+				{ g_lingo->code1(LC::cb_stackpeek);	// get list
+				  g_lingo->codeInt(2);
+				  g_lingo->code1(LC::cb_stackpeek);	// get counter
+				  g_lingo->codeInt(1);
+				  g_lingo->codeFunc(new Common::String("getAt"), 2);
+				  g_lingo->code1(LC::c_varpush);
+				  g_lingo->codeString($ID->c_str());
+				  g_lingo->code1(LC::c_assign); }
+			stmtlist tENDREPEAT {
+
+		g_lingo->code1(LC::c_intpush);
+		g_lingo->codeInt(1);
+		g_lingo->code1(LC::c_add);			// Increment counter
+
+		int jump = g_lingo->code2(LC::c_jump, STOP);
+
+		int end2 = g_lingo->code1(LC::cb_stackdrop);	// remove list, size, counter
+		g_lingo->codeInt(3);
+
+		inst loop = 0, end = 0;
+		WRITE_UINT32(&loop, $begin - jump);
+		WRITE_UINT32(&end, end2 - $jumpifz + 1);
+
+		(*g_lingo->_currentScript)[jump + 1] = loop;		/* final count value */
+		(*g_lingo->_currentScript)[$jumpifz] = end;	}	/* end, if cond fails */
 
 	| tNEXT tREPEAT {
 		g_lingo->code1(LC::c_nextRepeat); }


Commit: d9d1c95ce04223640a2f51a69678f783bd7a9014
    https://github.com/scummvm/scummvm/commit/d9d1c95ce04223640a2f51a69678f783bd7a9014
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-30T23:25:04+02:00

Commit Message:
DIRECTOR: LINGO: Removed old c_repeatwith code

Changed paths:
    engines/director/lingo/lingo-code.cpp
    engines/director/lingo/lingo-code.h
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index bbf34eea47..d15682094d 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -116,7 +116,6 @@ static struct FuncDescr {
 	{ LC::c_procret,		"c_procret",		"" },
 	{ LC::c_proparraypush,	"c_proparraypush",	"i" },
 	{ LC::c_property,		"c_property",		"s" },
-	{ LC::c_repeatwithcode,	"c_repeatwithcode",	"ooooos" },
 	{ LC::c_setImmediate,	"c_setImmediate",	"i" },
 	{ LC::c_starts,			"c_starts",			"" },
 	{ LC::c_stringpush,		"c_stringpush",		"s" },
@@ -1161,73 +1160,6 @@ void LC::c_jumpifz() {
 	}
 }
 
-void LC::c_repeatwithcode(void) {
-	int savepc = g_lingo->_pc;
-
-	uint init = g_lingo->getInt(savepc);
-	uint finish =  g_lingo->getInt(savepc + 1);
-	uint body = g_lingo->getInt(savepc + 2);
-	int inc = (int32)g_lingo->getInt(savepc + 3);
-	uint end = g_lingo->getInt(savepc + 4);
-	Common::String countername((char *)&(*g_lingo->_currentScript)[savepc + 5]);
-	Symbol *counter = g_lingo->lookupVar(countername.c_str());
-
-	if (finish == 0 && inc == 0) {
-		// Handle repeat with  X in ARRAY
-		g_lingo->execute(init + savepc -1); // eval the list
-		Datum array = g_lingo->pop(); // get the list from the stack
-
-		Datum loop_var;
-		loop_var.type = VAR;
-		loop_var.u.sym = g_lingo->lookupVar(countername.c_str());
-
-		uint arraySize = array.u.farr->size();
-		for (uint i = 0; i < arraySize; i++) {
-			g_lingo->varAssign(loop_var, array.u.farr->operator[](i));
-			g_lingo->execute(body + savepc -1);
-			if (g_lingo->_returning) // handle return within the repeat with loop
-				return;
-			if (g_lingo->_exitRepeat) { // handle `exit repeat`
-				g_lingo->_exitRepeat = false;
-				break;
-			}
-		}
-		g_lingo->_pc = end + savepc - 1; /* next stmt */
-		return;
-	}
-
-	if (counter->type == CASTREF) {
-		error("Cast ref used as index: %s", countername.c_str());
-	}
-
-	g_lingo->execute(init + savepc - 1);	/* condition */
-	counter->u.i = g_lingo->pop().asInt();
-	counter->type = INT;
-
-	while (true) {
-		g_lingo->execute(body + savepc - 1);	/* body */
-		g_lingo->_nextRepeat = false;
-
-		if (g_lingo->_returning)
-			break;
-
-		if (g_lingo->_exitRepeat) {
-			g_lingo->_exitRepeat = false;
-			break;
-		}
-
-		counter->u.i += inc;
-		g_lingo->execute(finish + savepc - 1);	/* condition */
-		int base = g_lingo->pop().asInt();
-
-		if (counter->u.i == base + inc)
-			break;
-	}
-
-	if (!g_lingo->_returning)
-		g_lingo->_pc = end + savepc - 1; /* next stmt */
-}
-
 void LC::c_nextRepeat(void) {
 	// loop body is a single instruction chunk which ends with
 	// STOP. Now we simulate end of execution of this chunk
diff --git a/engines/director/lingo/lingo-code.h b/engines/director/lingo/lingo-code.h
index 1b95f30129..2e954211b9 100644
--- a/engines/director/lingo/lingo-code.h
+++ b/engines/director/lingo/lingo-code.h
@@ -92,7 +92,6 @@ namespace LC {
 	void c_objectfieldassign();
 	void c_objectrefpush();
 
-	void c_repeatwithcode();
 	void c_nextRepeat();
 	void c_whencode();
 	void c_tellcode();
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 905a54ffe2..ff8d471966 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -844,20 +844,20 @@ static const yytype_int16 yyrline[] =
      253,   254,   255,   257,   258,   259,   260,   262,   263,   268,
      280,   283,   286,   279,   310,   313,   316,   309,   342,   348,
      354,   341,   380,   382,   387,   391,   396,   400,   407,   415,
-     416,   418,   424,   430,   442,   446,   450,   454,   457,   459,
-     461,   462,   463,   465,   471,   474,   477,   481,   485,   489,
-     497,   498,   499,   510,   511,   512,   515,   518,   521,   524,
-     530,   535,   541,   542,   543,   544,   545,   546,   547,   548,
-     549,   550,   551,   552,   553,   554,   555,   556,   557,   558,
-     559,   560,   561,   562,   563,   565,   566,   567,   568,   569,
-     570,   571,   572,   574,   577,   579,   580,   581,   582,   583,
-     584,   584,   585,   585,   586,   586,   587,   590,   593,   594,
-     596,   601,   607,   612,   618,   623,   636,   637,   638,   639,
-     643,   647,   652,   653,   655,   659,   663,   667,   667,   697,
-     697,   697,   703,   704,   704,   710,   718,   724,   724,   727,
-     728,   729,   731,   732,   733,   735,   737,   745,   746,   747,
-     749,   750,   752,   754,   755,   756,   757,   759,   760,   762,
-     763,   765,   769
+     416,   418,   424,   430,   436,   440,   444,   448,   451,   453,
+     455,   456,   457,   459,   465,   468,   471,   475,   479,   483,
+     491,   492,   493,   504,   505,   506,   509,   512,   515,   518,
+     524,   529,   535,   536,   537,   538,   539,   540,   541,   542,
+     543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
+     553,   554,   555,   556,   557,   559,   560,   561,   562,   563,
+     564,   565,   566,   568,   571,   573,   574,   575,   576,   577,
+     578,   578,   579,   579,   580,   580,   581,   584,   587,   588,
+     590,   595,   601,   606,   612,   617,   630,   631,   632,   633,
+     637,   641,   646,   647,   649,   653,   657,   661,   661,   691,
+     691,   691,   697,   698,   698,   704,   712,   718,   718,   721,
+     722,   723,   725,   726,   727,   729,   731,   739,   740,   741,
+     743,   744,   746,   748,   749,   750,   751,   753,   754,   756,
+     757,   759,   763
 };
 #endif
 
@@ -2698,7 +2698,7 @@ yyreduce:
     break;
 
   case 54:
-#line 442 "engines/director/lingo/lingo-gr.y"
+#line 436 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
@@ -2706,7 +2706,7 @@ yyreduce:
     break;
 
   case 55:
-#line 446 "engines/director/lingo/lingo-gr.y"
+#line 440 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
@@ -2714,7 +2714,7 @@ yyreduce:
     break;
 
   case 56:
-#line 450 "engines/director/lingo/lingo-gr.y"
+#line 444 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
@@ -2722,32 +2722,32 @@ yyreduce:
     break;
 
   case 57:
-#line 454 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
 #line 2729 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
-#line 457 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
 #line 2735 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
-#line 459 "engines/director/lingo/lingo-gr.y"
+#line 453 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
 #line 2741 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
-#line 461 "engines/director/lingo/lingo-gr.y"
+#line 455 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
 #line 2747 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63:
-#line 465 "engines/director/lingo/lingo-gr.y"
+#line 459 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_whencode);
 		g_lingo->code1(STOP);
@@ -2757,7 +2757,7 @@ yyreduce:
     break;
 
   case 64:
-#line 471 "engines/director/lingo/lingo-gr.y"
+#line 465 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
@@ -2765,7 +2765,7 @@ yyreduce:
     break;
 
   case 65:
-#line 474 "engines/director/lingo/lingo-gr.y"
+#line 468 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
@@ -2773,7 +2773,7 @@ yyreduce:
     break;
 
   case 66:
-#line 477 "engines/director/lingo/lingo-gr.y"
+#line 471 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2782,7 +2782,7 @@ yyreduce:
     break;
 
   case 67:
-#line 481 "engines/director/lingo/lingo-gr.y"
+#line 475 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2791,7 +2791,7 @@ yyreduce:
     break;
 
   case 68:
-#line 485 "engines/director/lingo/lingo-gr.y"
+#line 479 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2800,7 +2800,7 @@ yyreduce:
     break;
 
   case 69:
-#line 489 "engines/director/lingo/lingo-gr.y"
+#line 483 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2813,13 +2813,13 @@ yyreduce:
     break;
 
   case 70:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 491 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
 #line 2819 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
-#line 499 "engines/director/lingo/lingo-gr.y"
+#line 493 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2834,13 +2834,13 @@ yyreduce:
     break;
 
   case 73:
-#line 510 "engines/director/lingo/lingo-gr.y"
+#line 504 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
 #line 2840 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
-#line 512 "engines/director/lingo/lingo-gr.y"
+#line 506 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
@@ -2848,7 +2848,7 @@ yyreduce:
     break;
 
   case 76:
-#line 515 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
@@ -2856,7 +2856,7 @@ yyreduce:
     break;
 
   case 77:
-#line 518 "engines/director/lingo/lingo-gr.y"
+#line 512 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
@@ -2864,7 +2864,7 @@ yyreduce:
     break;
 
   case 78:
-#line 521 "engines/director/lingo/lingo-gr.y"
+#line 515 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
@@ -2872,7 +2872,7 @@ yyreduce:
     break;
 
   case 79:
-#line 524 "engines/director/lingo/lingo-gr.y"
+#line 518 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
@@ -2883,7 +2883,7 @@ yyreduce:
     break;
 
   case 80:
-#line 530 "engines/director/lingo/lingo-gr.y"
+#line 524 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
@@ -2893,7 +2893,7 @@ yyreduce:
     break;
 
   case 81:
-#line 535 "engines/director/lingo/lingo-gr.y"
+#line 529 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
@@ -2904,187 +2904,187 @@ yyreduce:
     break;
 
   case 83:
-#line 542 "engines/director/lingo/lingo-gr.y"
+#line 536 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
 #line 2910 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
-#line 543 "engines/director/lingo/lingo-gr.y"
+#line 537 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
 #line 2916 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
-#line 544 "engines/director/lingo/lingo-gr.y"
+#line 538 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
 #line 2922 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
-#line 545 "engines/director/lingo/lingo-gr.y"
+#line 539 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
 #line 2928 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
-#line 546 "engines/director/lingo/lingo-gr.y"
+#line 540 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
 #line 2934 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
-#line 547 "engines/director/lingo/lingo-gr.y"
+#line 541 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
 #line 2940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
-#line 548 "engines/director/lingo/lingo-gr.y"
+#line 542 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
 #line 2946 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
-#line 549 "engines/director/lingo/lingo-gr.y"
+#line 543 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
 #line 2952 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
-#line 550 "engines/director/lingo/lingo-gr.y"
+#line 544 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
 #line 2958 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
-#line 551 "engines/director/lingo/lingo-gr.y"
+#line 545 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
 #line 2964 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
-#line 552 "engines/director/lingo/lingo-gr.y"
+#line 546 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
 #line 2970 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
-#line 553 "engines/director/lingo/lingo-gr.y"
+#line 547 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
 #line 2976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
-#line 554 "engines/director/lingo/lingo-gr.y"
+#line 548 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
 #line 2982 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
-#line 555 "engines/director/lingo/lingo-gr.y"
+#line 549 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
 #line 2988 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
-#line 556 "engines/director/lingo/lingo-gr.y"
+#line 550 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
 #line 2994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
-#line 557 "engines/director/lingo/lingo-gr.y"
+#line 551 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
 #line 3000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
-#line 558 "engines/director/lingo/lingo-gr.y"
+#line 552 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
 #line 3006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
-#line 559 "engines/director/lingo/lingo-gr.y"
+#line 553 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
 #line 3012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
-#line 560 "engines/director/lingo/lingo-gr.y"
+#line 554 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
 #line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
-#line 561 "engines/director/lingo/lingo-gr.y"
+#line 555 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
 #line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
-#line 562 "engines/director/lingo/lingo-gr.y"
+#line 556 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
 #line 3030 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
-#line 563 "engines/director/lingo/lingo-gr.y"
+#line 557 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
 #line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
-#line 565 "engines/director/lingo/lingo-gr.y"
+#line 559 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
 #line 3042 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
-#line 566 "engines/director/lingo/lingo-gr.y"
+#line 560 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
 #line 3048 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
-#line 567 "engines/director/lingo/lingo-gr.y"
+#line 561 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
 #line 3054 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
-#line 568 "engines/director/lingo/lingo-gr.y"
+#line 562 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
 #line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
-#line 569 "engines/director/lingo/lingo-gr.y"
+#line 563 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
 #line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
-#line 570 "engines/director/lingo/lingo-gr.y"
+#line 564 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
 #line 3072 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111:
-#line 571 "engines/director/lingo/lingo-gr.y"
+#line 565 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
 #line 3078 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
-#line 572 "engines/director/lingo/lingo-gr.y"
+#line 566 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
 #line 3084 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
-#line 574 "engines/director/lingo/lingo-gr.y"
+#line 568 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
@@ -3092,61 +3092,61 @@ yyreduce:
     break;
 
   case 115:
-#line 579 "engines/director/lingo/lingo-gr.y"
+#line 573 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
 #line 3098 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
-#line 582 "engines/director/lingo/lingo-gr.y"
+#line 576 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_exitRepeat); }
 #line 3104 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
-#line 583 "engines/director/lingo/lingo-gr.y"
+#line 577 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
 #line 3110 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
-#line 584 "engines/director/lingo/lingo-gr.y"
+#line 578 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
 #line 3116 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
-#line 584 "engines/director/lingo/lingo-gr.y"
+#line 578 "engines/director/lingo/lingo-gr.y"
                                                                                  { inNone(); }
 #line 3122 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
-#line 585 "engines/director/lingo/lingo-gr.y"
+#line 579 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
 #line 3128 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
-#line 585 "engines/director/lingo/lingo-gr.y"
+#line 579 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
 #line 3134 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
-#line 586 "engines/director/lingo/lingo-gr.y"
+#line 580 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
 #line 3140 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
-#line 586 "engines/director/lingo/lingo-gr.y"
+#line 580 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
 #line 3146 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
-#line 587 "engines/director/lingo/lingo-gr.y"
+#line 581 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
@@ -3154,7 +3154,7 @@ yyreduce:
     break;
 
   case 127:
-#line 590 "engines/director/lingo/lingo-gr.y"
+#line 584 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
@@ -3162,19 +3162,19 @@ yyreduce:
     break;
 
   case 128:
-#line 593 "engines/director/lingo/lingo-gr.y"
+#line 587 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
 #line 3168 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129:
-#line 594 "engines/director/lingo/lingo-gr.y"
+#line 588 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
 #line 3174 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
-#line 596 "engines/director/lingo/lingo-gr.y"
+#line 590 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3184,7 +3184,7 @@ yyreduce:
     break;
 
   case 131:
-#line 601 "engines/director/lingo/lingo-gr.y"
+#line 595 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3194,7 +3194,7 @@ yyreduce:
     break;
 
   case 132:
-#line 607 "engines/director/lingo/lingo-gr.y"
+#line 601 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3204,7 +3204,7 @@ yyreduce:
     break;
 
   case 133:
-#line 612 "engines/director/lingo/lingo-gr.y"
+#line 606 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3214,7 +3214,7 @@ yyreduce:
     break;
 
   case 134:
-#line 618 "engines/director/lingo/lingo-gr.y"
+#line 612 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3224,7 +3224,7 @@ yyreduce:
     break;
 
   case 135:
-#line 623 "engines/director/lingo/lingo-gr.y"
+#line 617 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3234,25 +3234,25 @@ yyreduce:
     break;
 
   case 136:
-#line 636 "engines/director/lingo/lingo-gr.y"
+#line 630 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
 #line 3240 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
-#line 637 "engines/director/lingo/lingo-gr.y"
+#line 631 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
 #line 3246 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
-#line 638 "engines/director/lingo/lingo-gr.y"
+#line 632 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
 #line 3252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
-#line 639 "engines/director/lingo/lingo-gr.y"
+#line 633 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
@@ -3261,7 +3261,7 @@ yyreduce:
     break;
 
   case 140:
-#line 643 "engines/director/lingo/lingo-gr.y"
+#line 637 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
@@ -3270,7 +3270,7 @@ yyreduce:
     break;
 
   case 141:
-#line 647 "engines/director/lingo/lingo-gr.y"
+#line 641 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
@@ -3279,7 +3279,7 @@ yyreduce:
     break;
 
   case 144:
-#line 655 "engines/director/lingo/lingo-gr.y"
+#line 649 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
@@ -3288,7 +3288,7 @@ yyreduce:
     break;
 
   case 145:
-#line 659 "engines/director/lingo/lingo-gr.y"
+#line 653 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
@@ -3297,7 +3297,7 @@ yyreduce:
     break;
 
   case 146:
-#line 663 "engines/director/lingo/lingo-gr.y"
+#line 657 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
@@ -3306,13 +3306,13 @@ yyreduce:
     break;
 
   case 147:
-#line 667 "engines/director/lingo/lingo-gr.y"
+#line 661 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
 #line 3312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
-#line 667 "engines/director/lingo/lingo-gr.y"
+#line 661 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
@@ -3321,19 +3321,19 @@ yyreduce:
     break;
 
   case 149:
-#line 697 "engines/director/lingo/lingo-gr.y"
+#line 691 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
 #line 3327 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
-#line 697 "engines/director/lingo/lingo-gr.y"
+#line 691 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory.clear(); }
 #line 3333 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
-#line 698 "engines/director/lingo/lingo-gr.y"
+#line 692 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -3343,19 +3343,19 @@ yyreduce:
     break;
 
   case 152:
-#line 703 "engines/director/lingo/lingo-gr.y"
+#line 697 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
 #line 3349 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
-#line 704 "engines/director/lingo/lingo-gr.y"
+#line 698 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
 #line 3355 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
-#line 705 "engines/director/lingo/lingo-gr.y"
+#line 699 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
@@ -3365,7 +3365,7 @@ yyreduce:
     break;
 
   case 155:
-#line 710 "engines/director/lingo/lingo-gr.y"
+#line 704 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3378,7 +3378,7 @@ yyreduce:
     break;
 
   case 156:
-#line 718 "engines/director/lingo/lingo-gr.y"
+#line 712 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -3388,56 +3388,56 @@ yyreduce:
     break;
 
   case 157:
-#line 724 "engines/director/lingo/lingo-gr.y"
+#line 718 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
 #line 3394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
-#line 724 "engines/director/lingo/lingo-gr.y"
+#line 718 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
 #line 3401 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
-#line 727 "engines/director/lingo/lingo-gr.y"
+#line 721 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
 #line 3407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
-#line 728 "engines/director/lingo/lingo-gr.y"
+#line 722 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
 #line 3413 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
-#line 729 "engines/director/lingo/lingo-gr.y"
+#line 723 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
 #line 3419 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
-#line 732 "engines/director/lingo/lingo-gr.y"
+#line 726 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
 #line 3425 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
-#line 733 "engines/director/lingo/lingo-gr.y"
+#line 727 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
 #line 3431 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
-#line 735 "engines/director/lingo/lingo-gr.y"
+#line 729 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); inDef(); }
 #line 3437 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
-#line 737 "engines/director/lingo/lingo-gr.y"
+#line 731 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3449,91 +3449,91 @@ yyreduce:
     break;
 
   case 167:
-#line 745 "engines/director/lingo/lingo-gr.y"
+#line 739 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
 #line 3455 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
-#line 746 "engines/director/lingo/lingo-gr.y"
+#line 740 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
 #line 3461 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
-#line 747 "engines/director/lingo/lingo-gr.y"
+#line 741 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
 #line 3467 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170:
-#line 749 "engines/director/lingo/lingo-gr.y"
+#line 743 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
 #line 3473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
-#line 750 "engines/director/lingo/lingo-gr.y"
+#line 744 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
 #line 3479 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
-#line 752 "engines/director/lingo/lingo-gr.y"
+#line 746 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
 #line 3485 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173:
-#line 754 "engines/director/lingo/lingo-gr.y"
+#line 748 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
 #line 3491 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174:
-#line 755 "engines/director/lingo/lingo-gr.y"
+#line 749 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
 #line 3497 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175:
-#line 756 "engines/director/lingo/lingo-gr.y"
+#line 750 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
 #line 3503 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176:
-#line 757 "engines/director/lingo/lingo-gr.y"
+#line 751 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
 #line 3509 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 177:
-#line 759 "engines/director/lingo/lingo-gr.y"
+#line 753 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
 #line 3515 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 178:
-#line 760 "engines/director/lingo/lingo-gr.y"
+#line 754 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
 #line 3521 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 179:
-#line 762 "engines/director/lingo/lingo-gr.y"
+#line 756 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
 #line 3527 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 180:
-#line 763 "engines/director/lingo/lingo-gr.y"
+#line 757 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
 #line 3533 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 181:
-#line 765 "engines/director/lingo/lingo-gr.y"
+#line 759 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -3542,7 +3542,7 @@ yyreduce:
     break;
 
   case 182:
-#line 769 "engines/director/lingo/lingo-gr.y"
+#line 763 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -3750,7 +3750,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 775 "engines/director/lingo/lingo-gr.y"
+#line 769 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 7b7d5ff4d3..89a21ae93b 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -146,7 +146,7 @@ static void mArg(Common::String *s) {
 %token tON tENDIF tENDREPEAT tENDTELL
 
 %type<code> asgn begin end expr if when chunkexpr
-%type<code> repeatwith stmtlist tellstart reference simpleexpr list valuelist
+%type<code> stmtlist tellstart reference simpleexpr list valuelist
 %type<code> jump jumpifz varassign
 %type<narg> argdef arglist nonemptyarglist linearlist proplist
 %type<s> on
@@ -433,12 +433,6 @@ ifoneliner: if expr jumpifz[then] tTHEN stmtoneliner jump[else1] tELSE begin stm
 
 		(*g_lingo->_currentScript)[$then] = end; }		/* end, if cond fails */
 
-repeatwith:		tREPEAT tWITH ID	{
-		$$ = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
-		g_lingo->code3(STOP, STOP, STOP);
-		g_lingo->codeString($ID->c_str());
-		delete $ID; }
-
 jumpifz:	/* nothing */	{
 		g_lingo->code2(LC::c_jumpifz, STOP);
 		$$ = g_lingo->_currentScript->size() - 1; }




More information about the Scummvm-git-logs mailing list