[Scummvm-git-logs] scummvm master -> 4554b2f3e036496c2d38221ad72b5a3985dabdf8

djsrv dservilla at gmail.com
Fri Jun 19 03:08:14 UTC 2020


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

Summary:
4554b2f3e0 DIRECTOR: LINGO: Stub variants of c_after/c_before


Commit: 4554b2f3e036496c2d38221ad72b5a3985dabdf8
    https://github.com/scummvm/scummvm/commit/4554b2f3e036496c2d38221ad72b5a3985dabdf8
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-18T23:07:54-04:00

Commit Message:
DIRECTOR: LINGO: Stub variants of c_after/c_before

Changed paths:
    engines/director/lingo/lingo-code.cpp
    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 e4b785ae7d..86c461baa3 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -736,18 +736,30 @@ void LC::c_ampersand() {
 
 void LC::c_before() {
 	Datum var = g_lingo->pop();
-	Datum b = g_lingo->varFetch(var);
 	Datum a = g_lingo->pop();
 
+	if (var.type != VAR) {
+		warning("STUB: c_before(%s, %s)", a.asString(true).c_str(), var.asString(true).c_str());
+		return;
+	}
+
+	Datum b = g_lingo->varFetch(var);
+
 	Datum res(a.asString() + b.asString());
 	g_lingo->varAssign(var, res);
 }
 
 void LC::c_after() {
 	Datum var = g_lingo->pop();
-	Datum b = g_lingo->varFetch(var);
 	Datum a = g_lingo->pop();
 
+	if (var.type != VAR) {
+		warning("STUB: c_after(%s, %s)", a.asString(true).c_str(), var.asString(true).c_str());
+		return;
+	}
+
+	Datum b = g_lingo->varFetch(var);
+
 	Datum res(b.asString() + a.asString());
 	g_lingo->varAssign(var, res);
 }
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index ac5e16f9b3..4e6756c6ad 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -818,16 +818,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  125
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2638
+#define YYLAST   2602
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  102
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  59
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  180
+#define YYNRULES  182
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  380
+#define YYNSTATES  382
 
 #define YYMAXUTOK   341
 
@@ -885,24 +885,24 @@ static const yytype_int8 yytranslate[] =
 static const yytype_int16 yyrline[] =
 {
        0,   218,   218,   219,   221,   222,   223,   225,   232,   236,
-     247,   254,   261,   268,   275,   282,   289,   295,   302,   313,
-     324,   331,   339,   340,   341,   343,   344,   349,   362,   366,
-     369,   361,   396,   400,   403,   395,   430,   437,   443,   429,
-     473,   481,   484,   485,   487,   489,   491,   498,   506,   507,
-     509,   515,   519,   523,   527,   530,   532,   533,   534,   536,
-     539,   542,   546,   550,   554,   562,   568,   569,   570,   581,
-     582,   583,   586,   589,   595,   595,   600,   603,   606,   612,
-     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
-     623,   624,   625,   626,   627,   628,   629,   630,   631,   632,
-     633,   634,   636,   637,   638,   639,   640,   641,   642,   643,
-     645,   648,   650,   651,   652,   653,   661,   662,   662,   663,
-     663,   664,   664,   665,   668,   671,   672,   674,   677,   681,
-     684,   688,   691,   702,   703,   704,   705,   709,   713,   718,
-     719,   721,   725,   729,   733,   733,   763,   763,   763,   769,
-     770,   770,   776,   784,   790,   790,   793,   794,   795,   797,
-     798,   799,   801,   803,   811,   812,   813,   815,   816,   818,
-     820,   821,   822,   823,   825,   826,   828,   829,   831,   835,
-     839
+     247,   254,   257,   264,   267,   274,   281,   288,   295,   301,
+     308,   319,   330,   337,   345,   346,   347,   349,   350,   355,
+     368,   372,   375,   367,   402,   406,   409,   401,   436,   443,
+     449,   435,   479,   487,   490,   491,   493,   495,   497,   504,
+     512,   513,   515,   521,   525,   529,   533,   536,   538,   539,
+     540,   542,   545,   548,   552,   556,   560,   568,   574,   575,
+     576,   587,   588,   589,   592,   595,   601,   601,   606,   609,
+     612,   618,   619,   620,   621,   622,   623,   624,   625,   626,
+     627,   628,   629,   630,   631,   632,   633,   634,   635,   636,
+     637,   638,   639,   640,   642,   643,   644,   645,   646,   647,
+     648,   649,   651,   654,   656,   657,   658,   659,   667,   668,
+     668,   669,   669,   670,   670,   671,   674,   677,   678,   680,
+     683,   687,   690,   694,   697,   708,   709,   710,   711,   715,
+     719,   724,   725,   727,   731,   735,   739,   739,   769,   769,
+     769,   775,   776,   776,   782,   790,   796,   796,   799,   800,
+     801,   803,   804,   805,   807,   809,   817,   818,   819,   821,
+     822,   824,   826,   827,   828,   829,   831,   832,   834,   835,
+     837,   841,   845
 };
 #endif
 
@@ -967,12 +967,12 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-326)
+#define YYPACT_NINF (-328)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-171)
+#define YYTABLE_NINF (-173)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -981,44 +981,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     784,   -85,  -326,  -326,    52,  -326,   610,   332,    52,     7,
-     513,  -326,  -326,  -326,  -326,  -326,    30,  -326,  1780,  -326,
-    -326,  -326,    36,  2018,   -13,   128,    37,    39,  2054,  1816,
-    -326,  2054,  2054,  2054,  2054,  2054,  2054,  2054,  -326,  -326,
-    2054,  2054,  2054,   425,    67,    -3,  -326,  -326,  -326,  -326,
-    2054,  -326,  2545,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
-    -326,  -326,  -326,  -326,  -326,    18,  2018,  1896,  2545,    23,
-    1896,    23,  -326,    52,  1932,  2545,    60,   697,  -326,  -326,
-      85,  2054,  -326,   105,  -326,  2126,  -326,   133,  -326,   136,
-     398,   140,  -326,   -44,    52,    52,    -1,    19,   123,  -326,
-    2462,  2126,  -326,   150,  -326,  2159,  2192,  2225,  2258,  2512,
-    2423,   161,   162,  -326,  -326,  2475,   -50,    88,    89,  -326,
-    2545,    91,    98,   100,  -326,  -326,   784,  2545,  2054,  2054,
-    2054,  2054,  2054,  2054,  2054,  2054,  2054,  2054,  2054,  2054,
-    2054,  2054,  2054,  2054,  2054,   173,  1932,   398,  2475,   -49,
-    2054,    22,  -326,    20,    45,  2054,    23,   173,  -326,   102,
-    2545,  2054,  -326,  -326,    52,   -18,   175,   177,   -22,  2054,
-    2054,  2054,    32,   157,  2054,  2054,  2054,  2054,  2054,  2054,
-    -326,  -326,   107,  2054,  2054,  2054,  2054,  2054,  2054,  2054,
-    2054,  2054,  2054,  -326,  -326,  -326,   108,  -326,  -326,  2054,
-    2054,  2054,  -326,  2054,    62,  -326,   158,    16,    16,    16,
-      16,   156,   156,  -326,     9,    16,    16,    16,    16,     9,
-     -53,   -53,  -326,  -326,  -326,   -74,  -326,  2545,  -326,  -326,
-    -326,  -326,  2545,    15,   183,  2545,  -326,   168,  -326,  -326,
-    -326,  -326,  2054,  2054,  2545,  2545,    16,  2054,  2054,   186,
-    2545,    16,  2545,    16,  2545,  2545,   187,  2545,  2291,  2545,
-    2324,  2545,  2357,  2545,  2390,  2545,  2545,  1700,  -326,   188,
-    2545,  2545,  2545,  2545,   114,    88,    89,  -326,  -326,  -326,
-     190,  2054,  -326,  -326,   173,  2054,  2545,  2093,  -326,  2545,
-      16,    52,  -326,  2054,  2054,  2054,  2054,  -326,  1201,  -326,
-    1117,  -326,  -326,    55,  -326,    17,  2545,  -326,  -326,  -326,
-    -326,    41,  2545,  2545,  2545,  2545,  -326,  -326,  -326,   137,
-    -326,   868,  -326,   951,  -326,  -326,  -326,  -326,  1284,  2054,
-    2054,  -326,   121,   199,  -326,  -326,   179,   192,   149,  2545,
-      16,  -326,  2054,  -326,   151,  -326,   142,  1034,  -326,  2054,
-     185,  -326,  1367,  2545,  -326,   224,  -326,  2545,  2054,   167,
-     200,  -326,  -326,  -326,  2545,  -326,  -326,  1451,  -326,  -326,
-    1117,  -326,  -326,  -326,  -326,  1534,  -326,  -326,  1617,  -326
+     786,   -86,  -328,  -328,    52,  -328,   612,   334,    52,   -34,
+     515,  -328,  -328,  -328,  -328,  -328,   -30,  -328,  1782,  -328,
+    -328,  -328,    -2,  2020,   -13,   128,    28,    51,  2056,  1818,
+    -328,  2056,  2056,  2056,  2056,  2056,  2056,  2056,  -328,  -328,
+    2056,  2056,  2056,   427,    80,    17,  -328,  -328,  -328,  -328,
+    2056,  -328,  2496,  -328,  -328,  -328,  -328,  -328,  -328,  -328,
+    -328,  -328,  -328,  -328,  -328,    -7,  2020,  1898,  2496,    12,
+    1898,    12,  -328,    52,  1934,  2496,    64,   699,  -328,  -328,
+     124,  2056,  -328,   121,  -328,  2077,  -328,   170,  -328,   172,
+     400,   180,  -328,    19,    52,    52,    41,    58,   155,  -328,
+    2413,  2077,  -328,   183,  -328,  2110,  2143,  2176,  2209,  2463,
+    2374,   184,   185,  -328,  -328,  2426,   -55,   111,   112,  -328,
+    2496,   114,   117,   118,  -328,  -328,   786,  2496,  2056,  2056,
+    2056,  2056,  2056,  2056,  2056,  2056,  2056,  2056,  2056,  2056,
+    2056,  2056,  2056,  2056,  2056,   191,  1934,   400,  2426,    60,
+    2056,    78,  -328,    91,    93,  2056,    12,   191,  -328,   120,
+    2496,  2056,  -328,  -328,    52,   -18,    25,    39,   -23,  2056,
+    2056,  2056,    89,   173,  2056,  2056,  2056,  2056,  2056,  2056,
+    -328,  -328,   123,  2056,  2056,  2056,  2056,  2056,  2056,  2056,
+    2056,  2056,  2056,  -328,  -328,  -328,   129,  -328,  -328,  2056,
+    2056,  2056,  -328,  2056,    59,  -328,   167,    16,    16,    16,
+      16,  2509,  2509,  -328,    27,    16,    16,    16,    16,    27,
+     -54,   -54,  -328,  -328,  -328,   -74,  -328,  2496,  -328,  -328,
+    -328,  -328,  2496,   -43,   200,  2496,  -328,   186,  -328,  -328,
+    -328,  -328,  -328,  -328,  2056,  2056,  2496,  2496,    16,  2056,
+    2056,   202,  2496,    16,  2496,    16,  2496,  2496,   204,  2496,
+    2242,  2496,  2275,  2496,  2308,  2496,  2341,  2496,  2496,  1702,
+    -328,   206,  2496,  2496,  2496,  2496,   133,   111,   112,  -328,
+    -328,  -328,   209,  2056,  -328,  -328,   191,  2056,  2496,   240,
+    -328,  2496,    16,    52,  -328,  2056,  2056,  2056,  2056,  -328,
+    1203,  -328,  1119,  -328,  -328,   103,  -328,    61,  2496,  -328,
+    -328,  -328,  -328,    90,  2496,  2496,  2496,  2496,  -328,  -328,
+    -328,   150,  -328,   870,  -328,   953,  -328,  -328,  -328,  -328,
+    1286,  2056,  2056,  -328,    56,   211,  -328,  -328,   187,   207,
+     157,  2496,    16,  -328,  2056,  -328,   161,  -328,   148,  1036,
+    -328,  2056,   194,  -328,  1369,  2496,  -328,   222,  -328,  2496,
+    2056,   165,   198,  -328,  -328,  -328,  2496,  -328,  -328,  1453,
+    -328,  -328,  1119,  -328,  -328,  -328,  -328,  1536,  -328,  -328,
+    1619,  -328
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1026,66 +1027,67 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    59,    64,     0,    60,     0,     0,     0,     0,
-       0,    62,    61,   144,   150,    78,   116,   117,     0,   133,
-      54,   146,     0,     0,     0,     0,     0,     0,     0,     0,
-     121,     0,     0,     0,     0,     0,     0,     0,   119,   154,
-       0,     0,     0,     0,     0,     2,    79,    25,     6,    26,
-       0,    69,    23,   111,    70,    24,   113,   114,     5,    55,
-      22,    67,    68,    63,    65,    63,     0,     0,   165,   124,
-       0,    72,   110,     0,     0,   167,   163,     0,    55,   115,
-       0,     0,   134,     0,   135,   136,   138,     0,    40,     0,
-     112,     0,    55,     0,     0,     0,     0,     0,     0,   149,
-     126,   141,   143,     0,    93,     0,     0,     0,     0,     0,
-       0,     0,     0,    98,    99,     0,    63,    62,    61,   171,
-     174,     0,   173,   172,   176,     1,     0,    51,     0,     0,
+       0,     0,    61,    66,     0,    62,     0,     0,     0,     0,
+       0,    64,    63,   146,   152,    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,    71,    25,   113,    72,    26,   115,   116,     5,    57,
+      24,    69,    70,    65,    67,    65,     0,     0,   167,   126,
+       0,    74,   112,     0,     0,   169,   165,     0,    57,   117,
+       0,     0,   136,     0,   137,   138,   140,     0,    42,     0,
+     114,     0,    57,     0,     0,     0,     0,     0,     0,   151,
+     128,   143,   145,     0,    95,     0,     0,     0,     0,     0,
+       0,     0,     0,   100,   101,     0,    65,    64,    63,   173,
+     176,     0,   175,   174,   178,     1,     0,    53,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   156,     0,     0,   165,     0,
-       0,     0,    77,    63,     0,     0,   145,   156,   127,   118,
-     140,     0,   137,   147,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   158,     0,     0,   167,     0,
+       0,     0,    79,    65,     0,     0,   147,   158,   129,   120,
+     142,     0,   139,   149,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     142,   131,   122,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    45,    45,   129,   120,   155,    66,     0,
-       0,     0,   169,     0,     0,     3,     0,    89,    90,    87,
-      88,    91,    92,    84,    95,    96,    97,    86,    85,    94,
-      80,    81,    82,    83,   157,     0,   123,   166,    71,    73,
-      74,    76,   168,     0,     0,   139,    55,     0,     7,     8,
-      10,    11,     0,     0,    51,    15,    13,     0,     0,     0,
-      14,    12,    20,    21,    41,   125,     0,   102,     0,   104,
-       0,   106,     0,   108,     0,   100,   101,     0,    56,     0,
-     180,   179,   178,   175,     0,     0,     0,   177,    56,   162,
-       0,     0,   162,   128,   156,     0,    36,    28,    44,    16,
-      17,     0,   132,     0,     0,     0,     0,    55,     0,   130,
-       0,    56,   158,     0,    56,     0,     9,    55,    53,    53,
-      56,     0,   103,   105,   107,   109,    43,    57,    58,     0,
-      48,     0,    75,     0,   162,    37,    29,    33,     0,     0,
-       0,    42,    55,   159,    56,    51,     0,     0,     0,    18,
-      19,    56,     0,    49,     0,   160,   152,     0,    38,     0,
-       0,    27,     0,    51,    46,     0,    44,    30,     0,     0,
-       0,   161,    56,    51,    34,    47,    56,     0,    44,    51,
-       0,    39,    56,    44,    50,     0,    56,    31,     0,    35
+     144,   133,   124,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    47,    47,   131,   122,   157,    68,     0,
+       0,     0,   171,     0,     0,     3,     0,    91,    92,    89,
+      90,    93,    94,    86,    97,    98,    99,    88,    87,    96,
+      82,    83,    84,    85,   159,     0,   125,   168,    73,    75,
+      76,    78,   170,     0,     0,   141,    57,     0,     7,     8,
+      10,    11,    12,    13,     0,     0,    53,    17,    15,     0,
+       0,     0,    16,    14,    22,    23,    43,   127,     0,   104,
+       0,   106,     0,   108,     0,   110,     0,   102,   103,     0,
+      58,     0,   182,   181,   180,   177,     0,     0,     0,   179,
+      58,   164,     0,     0,   164,   130,   158,     0,    38,    30,
+      46,    18,    19,     0,   134,     0,     0,     0,     0,    57,
+       0,   132,     0,    58,   160,     0,    58,     0,     9,    57,
+      55,    55,    58,     0,   105,   107,   109,   111,    45,    59,
+      60,     0,    50,     0,    77,     0,   164,    39,    31,    35,
+       0,     0,     0,    44,    57,   161,    58,    53,     0,     0,
+       0,    20,    21,    58,     0,    51,     0,   162,   154,     0,
+      40,     0,     0,    29,     0,    53,    48,     0,    46,    32,
+       0,     0,     0,   163,    58,    53,    36,    49,    58,     0,
+      46,    53,     0,    41,    58,    46,    52,     0,    58,    33,
+       0,    37
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -326,   127,  -326,  -326,   -12,    13,  -326,  -326,  -326,  -326,
-    -326,  -326,  -326,  -326,  -326,  -318,    63,  -326,  -326,  -326,
-    -161,  -325,   -55,  -326,   -76,   -71,     3,    -6,  -326,  -326,
-      93,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,   -11,
-    -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -143,  -326,
-    -277,  -326,    26,   -21,  -326,  -326,  -326,  -326,    57
+    -328,   125,  -328,  -328,   -17,    15,  -328,  -328,  -328,  -328,
+    -328,  -328,  -328,  -328,  -328,  -308,    62,  -328,  -328,  -328,
+    -163,  -327,   -58,  -328,   -76,   -81,     3,    -6,  -328,  -328,
+      38,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,   -11,
+    -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -147,  -328,
+    -279,  -328,    26,   -29,  -328,  -328,  -328,  -328,    53
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    44,    45,    46,    47,   318,   308,   336,   363,   309,
-     337,   369,   307,   335,   356,   310,   267,    49,   332,   343,
-     206,   320,   326,    50,   145,   298,    51,    52,   281,    53,
+      -1,    44,    45,    46,    47,   320,   310,   338,   365,   311,
+     339,   371,   309,   337,   358,   312,   269,    49,   334,   345,
+     206,   322,   328,    50,   145,   300,    51,    52,   283,    53,
       54,    55,    80,   111,   103,   159,   196,   182,    56,    86,
-      57,    77,    58,    87,   236,    78,    59,   112,   225,   346,
-     301,    60,   154,    76,    61,   121,   122,   123,   124
+      57,    77,    58,    87,   236,    78,    59,   112,   225,   348,
+     303,    60,   154,    76,    61,   121,   122,   123,   124
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1093,478 +1095,463 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      68,    68,   157,   338,    75,   304,     8,    64,   238,   170,
-      62,    72,    85,    48,   233,   134,   169,    90,   102,   171,
-     242,   279,   100,   101,   280,   104,   105,   106,   107,   108,
-     109,   110,    69,    71,   113,   114,   115,   120,   362,   143,
-     144,   243,    91,    92,   127,   374,   146,   334,   226,   150,
-     372,   199,   174,     1,    73,   376,    32,    33,    34,    35,
-     147,   148,   175,    98,   148,    99,     2,   125,   148,     3,
-       4,    68,   176,     5,   162,   160,   152,   134,    63,    11,
-      79,    12,   177,   288,   134,   247,    88,   135,   274,   275,
-     180,   276,   126,   149,   329,   248,   151,   172,   173,   141,
-     142,   143,   144,   156,   330,   140,   141,   142,   143,   144,
-     282,   158,   324,   280,   146,   280,   146,   229,   230,   228,
-     150,   150,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,    48,
-      68,   305,   231,   150,   227,    93,    94,    95,    42,   232,
-     161,    43,   322,   155,    96,   235,   341,   342,   155,   163,
-     284,    97,   164,   244,   245,   246,   168,   237,   250,   251,
-     252,   253,   254,   255,   348,   178,   181,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   195,   197,   200,
-     201,   202,   360,   270,   271,   272,   203,   273,   204,   224,
-     234,   240,   368,   241,   249,   256,   269,   300,   373,   283,
-     278,   285,   291,   292,   299,   199,   302,   128,   129,   130,
-     131,   316,   319,   331,   134,   345,   350,   135,   136,   137,
-     321,   325,   349,   323,   351,   354,   286,   287,   358,   328,
-     355,   289,   290,   138,   139,   140,   141,   142,   143,   144,
-     361,   365,   366,   205,   327,   297,   344,   268,   239,     0,
-     303,   277,     0,   347,     0,     0,     0,     0,     0,     0,
-     352,     0,     0,     0,     0,    75,   359,     0,     0,   306,
-       0,     0,     0,     0,     0,     0,     0,   312,   313,   314,
-     315,   367,     0,     0,   311,   370,     0,     0,     0,     0,
-       0,   375,     0,     0,     0,   378,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   339,   340,     0,     0,     0,     0,     0,
-       0,     0,  -164,     1,     0,     0,   353,     0,     0,     0,
-       0,     0,     0,   357,     0,     0,     2,     0,     0,     3,
-       4,     0,   364,     5,  -164,     7,     8,     9,    65,    11,
-       0,    12,  -164,  -164,     0,    15,  -164,  -164,  -164,  -164,
-    -164,  -164,  -164,  -164,     0,  -164,     0,  -164,  -164,  -164,
-       0,    66,  -164,    25,  -164,  -164,  -164,  -164,     0,     0,
-    -164,  -164,  -164,  -164,  -164,  -164,  -164,  -164,  -164,    31,
-    -164,  -164,  -164,  -164,  -164,  -164,    32,    33,    34,    35,
-      36,  -164,  -164,  -164,  -164,     0,  -164,  -164,  -164,  -164,
-    -164,  -164,    40,    41,  -164,  -164,     1,  -164,    70,  -164,
-    -164,    43,  -164,     0,     0,     0,     0,     0,     0,     2,
-       0,   165,     3,     4,     0,     0,     5,     0,     7,     8,
-       9,   116,   117,     0,   118,     0,     0,     0,    15,   128,
-     129,   130,   131,   132,   133,     0,   134,   166,   167,   135,
-     136,   137,     0,     0,    66,     0,    25,     0,     0,     0,
-       0,     0,     0,     0,     0,   138,   139,   140,   141,   142,
-     143,   144,    31,     0,     0,     0,     0,     0,     0,    32,
-      33,    34,    35,    36,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   -63,     1,    40,    41,     0,     0,     0,
-       0,    42,     0,     0,    43,  -170,   119,     2,     0,     0,
-       3,     4,     0,     0,     5,   -63,     7,     8,     9,    65,
-      11,     0,    12,   -63,   -63,     0,    15,     0,   -63,   -63,
-     -63,   -63,   -63,   -63,   -63,     0,     0,     0,     0,   -63,
-       0,     0,    66,   -63,    25,     0,     0,   -63,     0,     0,
-       0,   -63,   -63,   -63,   -63,   -63,   -63,   -63,   -63,   -63,
-      31,   -63,     0,     0,   -63,   -63,   -63,    32,    33,    34,
-      35,    36,     0,     0,   -63,   -63,     0,   -63,   -63,   -63,
-     -63,   -63,   -63,    40,    41,   -63,   -63,     0,   -63,    74,
-    -164,     1,    43,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     2,     0,     0,     3,     4,     0,
-       0,     5,  -164,     7,     8,     9,    65,    11,     0,    12,
-    -164,  -164,     0,    15,     0,  -164,  -164,  -164,  -164,  -164,
-    -164,  -164,     0,     0,     0,     0,  -164,     0,     0,    66,
-    -164,    25,     0,     0,  -164,     0,     0,     0,  -164,  -164,
-    -164,     0,     0,     0,     0,     0,     0,    31,     0,     0,
-       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,  -164,  -164,     0,  -164,  -164,  -164,  -164,     1,     0,
-      40,    41,     0,     0,     0,  -164,    67,     0,  -164,    43,
-       0,     2,     0,     0,     3,     4,     0,     0,     5,  -164,
-       7,     8,     9,    65,    11,     0,    12,  -164,  -164,     0,
-      15,     0,  -164,  -164,  -164,  -164,  -164,  -164,  -164,     0,
-       0,     0,     0,  -164,     0,     0,    66,  -164,    25,     0,
-       0,  -164,     0,     0,     0,  -164,  -164,  -164,     0,     0,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,    32,    33,    34,    35,    36,     0,     0,  -164,  -164,
-       0,  -164,  -164,  -164,    -4,     1,     0,    40,    41,     0,
-       0,     0,  -164,    42,     0,  -164,    43,     0,     2,     0,
-       0,     3,     4,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,     0,    12,     0,    13,    14,    15,     0,     0,
-       0,    16,    17,    18,    19,    20,     0,     0,    21,     0,
-      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
-       0,    27,    28,    29,    30,     0,     0,     0,     0,     0,
-       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
-      34,    35,    36,     0,     0,    37,    38,    39,  -153,     1,
-       0,     0,     0,     0,    40,    41,     0,     0,     0,    -4,
-      42,     0,     2,    43,     0,     3,     4,     0,     0,     5,
-       6,     7,     8,     9,    10,    11,     0,    12,   333,    13,
-       0,    15,     0,     0,     0,    16,    17,    18,    19,    20,
-       0,     0,     0,     0,    22,     0,     0,    23,    24,    25,
-       0,     0,    26,     0,     0,     0,    28,    29,    30,     0,
-       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,    32,    33,    34,    35,    36,     0,     0,    37,
-      38,  -151,     1,     0,     0,     0,     0,     0,    40,    41,
-       0,     0,     0,   317,    42,     2,     0,    43,     3,     4,
-       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,     0,    13,     0,    15,     0,     0,     0,    16,    17,
-      18,    19,    20,     0,     0,     0,     0,    22,     0,     0,
-      23,    24,    25,     0,     0,    26,     0,     0,     0,    28,
-      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
-       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
-       0,     0,    37,    38,  -148,     1,     0,     0,     0,     0,
-       0,    40,    41,     0,     0,     0,   317,    42,     2,     0,
-      43,     3,     4,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,     0,    12,     0,    13,     0,    15,     0,     0,
-       0,    16,    17,    18,    19,    20,     0,     0,     0,     0,
-      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
-       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
-       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
-      34,    35,    36,     0,     0,    37,    38,     0,     1,     0,
-       0,     0,     0,     0,    40,    41,     0,     0,     0,   317,
-      42,     2,     0,    43,     3,     4,     0,     0,     5,     6,
-       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
-      15,     0,   -52,   -52,    16,    17,    18,    19,    20,     0,
-       0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
-       0,    26,     0,     0,     0,    28,    29,    30,     0,     0,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
-       0,   -52,     1,     0,     0,     0,     0,    40,    41,     0,
-       0,     0,   317,    42,     0,     2,    43,     0,     3,     4,
-       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,     0,    13,     0,    15,     0,     0,     0,    16,    17,
-      18,    19,    20,     0,     0,     0,     0,    22,     0,     0,
-      23,    24,    25,     0,     0,    26,     0,     0,     0,    28,
-      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
-       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
-       0,     0,    37,    38,     0,     1,     0,   -55,     0,     0,
-       0,    40,    41,     0,     0,     0,   317,    42,     2,     0,
-      43,     3,     4,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,     0,    12,     0,    13,     0,    15,     0,     0,
-       0,    16,    17,    18,    19,    20,     0,     0,     0,     0,
-      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
-       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
-       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
-      34,    35,    36,     0,     0,    37,    38,     0,     1,   -52,
-       0,     0,     0,     0,    40,    41,     0,     0,     0,   317,
-      42,     2,     0,    43,     3,     4,     0,     0,     5,     6,
-       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
-      15,     0,     0,     0,    16,    17,    18,    19,    20,     0,
-       0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
-       0,    26,     0,     0,     0,    28,    29,    30,     0,     0,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
-       0,   -55,     1,     0,     0,     0,     0,    40,    41,     0,
-       0,     0,   317,    42,     0,     2,    43,     0,     3,     4,
-       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,     0,    13,     0,    15,     0,     0,     0,    16,    17,
-      18,    19,    20,     0,     0,     0,     0,    22,     0,     0,
-      23,    24,    25,     0,     0,    26,     0,     0,     0,    28,
-      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
-       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
-       0,     0,    37,    38,     0,     1,   371,     0,     0,     0,
-       0,    40,    41,     0,     0,     0,   317,    42,     2,     0,
-      43,     3,     4,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,     0,    12,     0,    13,     0,    15,     0,     0,
-       0,    16,    17,    18,    19,    20,     0,     0,     0,     0,
-      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
-       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
-       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
-      34,    35,    36,     0,     0,    37,    38,     0,     1,   377,
-       0,     0,     0,     0,    40,    41,     0,     0,     0,   317,
-      42,     2,     0,    43,     3,     4,     0,     0,     5,     6,
-       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
-      15,     0,     0,     0,    16,    17,    18,    19,    20,     0,
-       0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
-       0,    26,     0,     0,     0,    28,    29,    30,     0,     0,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
-       0,     1,   379,     0,     0,     0,     0,    40,    41,     0,
-       0,     0,   317,    42,     2,     0,    43,     3,     4,     0,
+      68,    68,   157,   340,    75,   306,     8,    64,   238,    62,
+     233,    72,    85,    73,   134,    48,   169,    90,   102,   244,
+      79,   281,   100,   101,   282,   104,   105,   106,   107,   108,
+     109,   110,    69,    71,   113,   114,   115,   120,   143,   144,
+     245,   146,    91,    92,   127,   376,   199,   336,    88,     8,
+     364,   240,   284,     1,    98,   282,    32,    33,    34,    35,
+     147,   148,   374,     8,   148,   242,     2,   378,   148,     3,
+       4,    68,   170,     5,   162,   160,   152,    99,    63,    11,
+     125,    12,   171,   290,   134,   276,   277,   135,   278,   146,
+     180,   343,   344,   149,   174,   134,   151,   172,   173,    32,
+      33,    34,    35,   156,   175,   140,   141,   142,   143,   144,
+     150,   176,   126,    32,    33,    34,    35,   141,   142,   143,
+     144,   177,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   307,
+      68,    48,   249,   331,   227,    93,    94,    95,    42,   232,
+     158,    43,   250,   332,    96,   235,   326,   226,   150,   282,
+     286,    97,   155,   246,   247,   248,   161,   237,   252,   253,
+     254,   255,   256,   257,   350,   228,   150,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   146,   229,   230,
+     231,   150,   362,   272,   273,   274,   163,   275,   164,   302,
+     324,   155,   370,   239,   241,   243,   168,   178,   375,   181,
+     195,   197,   200,   201,   202,   203,   204,   224,   234,   280,
+     251,   258,   323,   318,   321,   325,   285,   271,   293,   287,
+     294,   330,   301,   327,   199,   304,   333,   347,   288,   289,
+     351,   352,   353,   291,   292,   356,   357,   360,   363,   367,
+     368,   205,   299,   329,   305,   349,   270,   279,   346,     0,
+       0,     0,   354,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   -34,     0,     0,    75,   361,     0,
+       0,   308,     0,   369,     0,     0,     0,   372,     0,   314,
+     315,   316,   317,   377,     0,     0,   313,   380,     0,     0,
+       0,   128,   129,   130,   131,   132,   133,     0,   134,     0,
+       0,   135,   136,   137,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   341,   342,   138,   139,   140,
+     141,   142,   143,   144,  -166,     1,     0,     0,   355,     0,
+       0,     0,     0,     0,     0,   359,     0,     0,     2,     0,
+       0,     3,     4,     0,   366,     5,  -166,     7,     8,     9,
+      65,    11,     0,    12,  -166,  -166,     0,    15,  -166,  -166,
+    -166,  -166,  -166,  -166,  -166,  -166,     0,  -166,     0,  -166,
+    -166,  -166,     0,    66,  -166,    25,  -166,  -166,  -166,  -166,
+       0,     0,  -166,  -166,  -166,  -166,  -166,  -166,  -166,  -166,
+    -166,    31,  -166,  -166,  -166,  -166,  -166,  -166,    32,    33,
+      34,    35,    36,  -166,  -166,  -166,  -166,     0,  -166,  -166,
+    -166,  -166,  -166,  -166,    40,    41,  -166,  -166,     1,  -166,
+      70,  -166,  -166,    43,  -166,     0,     0,     0,     0,     0,
+       0,     2,     0,   165,     3,     4,     0,     0,     5,     0,
+       7,     8,     9,   116,   117,     0,   118,     0,     0,     0,
+      15,   128,   129,   130,   131,   132,   133,     0,   134,   166,
+     167,   135,   136,   137,     0,     0,    66,     0,    25,     0,
+       0,     0,     0,     0,     0,     0,     0,   138,   139,   140,
+     141,   142,   143,   144,    31,     0,     0,     0,     0,     0,
+       0,    32,    33,    34,    35,    36,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   -65,     1,    40,    41,     0,
+       0,     0,     0,    42,     0,     0,    43,  -172,   119,     2,
+       0,     0,     3,     4,     0,     0,     5,   -65,     7,     8,
+       9,    65,    11,     0,    12,   -65,   -65,     0,    15,     0,
+     -65,   -65,   -65,   -65,   -65,   -65,   -65,     0,     0,     0,
+       0,   -65,     0,     0,    66,   -65,    25,     0,     0,   -65,
+       0,     0,     0,   -65,   -65,   -65,   -65,   -65,   -65,   -65,
+     -65,   -65,    31,   -65,     0,     0,   -65,   -65,   -65,    32,
+      33,    34,    35,    36,     0,     0,   -65,   -65,     0,   -65,
+     -65,   -65,   -65,   -65,   -65,    40,    41,   -65,   -65,     0,
+     -65,    74,  -166,     1,    43,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     2,     0,     0,     3,
+       4,     0,     0,     5,  -166,     7,     8,     9,    65,    11,
+       0,    12,  -166,  -166,     0,    15,     0,  -166,  -166,  -166,
+    -166,  -166,  -166,  -166,     0,     0,     0,     0,  -166,     0,
+       0,    66,  -166,    25,     0,     0,  -166,     0,     0,     0,
+    -166,  -166,  -166,     0,     0,     0,     0,     0,     0,    31,
+       0,     0,     0,     0,     0,     0,    32,    33,    34,    35,
+      36,     0,     0,  -166,  -166,     0,  -166,  -166,  -166,  -166,
+       1,     0,    40,    41,     0,     0,     0,  -166,    67,     0,
+    -166,    43,     0,     2,     0,     0,     3,     4,     0,     0,
+       5,  -166,     7,     8,     9,    65,    11,     0,    12,  -166,
+    -166,     0,    15,     0,  -166,  -166,  -166,  -166,  -166,  -166,
+    -166,     0,     0,     0,     0,  -166,     0,     0,    66,  -166,
+      25,     0,     0,  -166,     0,     0,     0,  -166,  -166,  -166,
+       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
+    -166,  -166,     0,  -166,  -166,  -166,    -4,     1,     0,    40,
+      41,     0,     0,     0,  -166,    42,     0,  -166,    43,     0,
+       2,     0,     0,     3,     4,     0,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,    12,     0,    13,    14,    15,
+       0,     0,     0,    16,    17,    18,    19,    20,     0,     0,
+      21,     0,    22,     0,     0,    23,    24,    25,     0,     0,
+      26,     0,     0,    27,    28,    29,    30,     0,     0,     0,
+       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
+      32,    33,    34,    35,    36,     0,     0,    37,    38,    39,
+    -155,     1,     0,     0,     0,     0,    40,    41,     0,     0,
+       0,    -4,    42,     0,     2,    43,     0,     3,     4,     0,
        0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
-       0,    13,     0,    15,     0,     0,     0,    16,    17,    18,
-      19,     0,     0,     0,     0,     0,     0,     0,     0,    23,
-       0,    25,     0,     0,     0,     0,     0,     0,    28,    29,
+     335,    13,     0,    15,     0,     0,     0,    16,    17,    18,
+      19,    20,     0,     0,     0,     0,    22,     0,     0,    23,
+      24,    25,     0,     0,    26,     0,     0,     0,    28,    29,
       30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
        0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,     1,    38,     0,     0,     0,     0,     0,     0,     0,
-      40,    41,     0,     0,     2,     0,    42,     3,     4,    43,
-       0,     5,     0,     7,     8,     9,    65,    11,     0,    12,
-       0,     0,     0,    15,     0,     0,     0,     1,     0,     0,
-       0,     0,     0,     0,     0,    81,    82,    83,    84,    66,
-       2,    25,     0,     3,     4,     0,     0,     5,     0,     7,
-       8,     9,    65,    11,     0,    12,     0,    31,     0,    15,
-       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,    81,     0,    83,     0,    66,     0,    25,     0,     0,
-      40,    41,     0,     0,     0,     0,    42,     0,     0,    43,
+       0,    37,    38,  -153,     1,     0,     0,     0,     0,     0,
+      40,    41,     0,     0,     0,   319,    42,     2,     0,    43,
+       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
+      11,     0,    12,     0,    13,     0,    15,     0,     0,     0,
+      16,    17,    18,    19,    20,     0,     0,     0,     0,    22,
+       0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
+       0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
+      35,    36,     0,     0,    37,    38,  -150,     1,     0,     0,
+       0,     0,     0,    40,    41,     0,     0,     0,   319,    42,
+       2,     0,    43,     3,     4,     0,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
+       0,     0,     0,    16,    17,    18,    19,    20,     0,     0,
+       0,     0,    22,     0,     0,    23,    24,    25,     0,     0,
+      26,     0,     0,     0,    28,    29,    30,     0,     0,     0,
+       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
+      32,    33,    34,    35,    36,     0,     0,    37,    38,     0,
+       1,     0,     0,     0,     0,     0,    40,    41,     0,     0,
+       0,   319,    42,     2,     0,    43,     3,     4,     0,     0,
+       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
+      13,     0,    15,     0,   -54,   -54,    16,    17,    18,    19,
+      20,     0,     0,     0,     0,    22,     0,     0,    23,    24,
+      25,     0,     0,    26,     0,     0,     0,    28,    29,    30,
+       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
+      37,    38,     0,   -54,     1,     0,     0,     0,     0,    40,
+      41,     0,     0,     0,   319,    42,     0,     2,    43,     0,
+       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
+      11,     0,    12,     0,    13,     0,    15,     0,     0,     0,
+      16,    17,    18,    19,    20,     0,     0,     0,     0,    22,
+       0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
+       0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
+      35,    36,     0,     0,    37,    38,     0,     1,     0,   -57,
+       0,     0,     0,    40,    41,     0,     0,     0,   319,    42,
+       2,     0,    43,     3,     4,     0,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
+       0,     0,     0,    16,    17,    18,    19,    20,     0,     0,
+       0,     0,    22,     0,     0,    23,    24,    25,     0,     0,
+      26,     0,     0,     0,    28,    29,    30,     0,     0,     0,
        0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,     1,     0,     0,
-       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
-       2,     0,    42,     3,     4,    43,     0,     5,     0,     7,
-       8,     9,    65,    11,     0,    12,     0,     0,     0,    15,
-       0,     0,     0,     1,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    66,     2,    25,     0,     3,
-       4,     0,     0,     5,     0,     7,     8,     9,   153,    11,
-       0,    12,     0,    31,     0,    15,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,     0,     0,     0,
-       0,    66,     0,    25,     0,     0,    40,    41,     0,     0,
-       0,     0,    42,  -164,  -164,    43,     0,     0,     0,    31,
+      32,    33,    34,    35,    36,     0,     0,    37,    38,     0,
+       1,   -54,     0,     0,     0,     0,    40,    41,     0,     0,
+       0,   319,    42,     2,     0,    43,     3,     4,     0,     0,
+       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
+      13,     0,    15,     0,     0,     0,    16,    17,    18,    19,
+      20,     0,     0,     0,     0,    22,     0,     0,    23,    24,
+      25,     0,     0,    26,     0,     0,     0,    28,    29,    30,
+       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
+      37,    38,     0,   -57,     1,     0,     0,     0,     0,    40,
+      41,     0,     0,     0,   319,    42,     0,     2,    43,     0,
+       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
+      11,     0,    12,     0,    13,     0,    15,     0,     0,     0,
+      16,    17,    18,    19,    20,     0,     0,     0,     0,    22,
+       0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
+       0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
+      35,    36,     0,     0,    37,    38,     0,     1,   373,     0,
+       0,     0,     0,    40,    41,     0,     0,     0,   319,    42,
+       2,     0,    43,     3,     4,     0,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
+       0,     0,     0,    16,    17,    18,    19,    20,     0,     0,
+       0,     0,    22,     0,     0,    23,    24,    25,     0,     0,
+      26,     0,     0,     0,    28,    29,    30,     0,     0,     0,
+       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
+      32,    33,    34,    35,    36,     0,     0,    37,    38,     0,
+       1,   379,     0,     0,     0,     0,    40,    41,     0,     0,
+       0,   319,    42,     2,     0,    43,     3,     4,     0,     0,
+       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
+      13,     0,    15,     0,     0,     0,    16,    17,    18,    19,
+      20,     0,     0,     0,     0,    22,     0,     0,    23,    24,
+      25,     0,     0,    26,     0,     0,     0,    28,    29,    30,
+       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
+      37,    38,     0,     1,   381,     0,     0,     0,     0,    40,
+      41,     0,     0,     0,   319,    42,     2,     0,    43,     3,
+       4,     0,     0,     5,     6,     7,     8,     9,    10,    11,
+       0,    12,     0,    13,     0,    15,     0,     0,     0,    16,
+      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
+       0,    23,     0,    25,     0,     0,     0,     0,     0,     0,
+      28,    29,    30,     0,     0,     0,     0,     0,     0,    31,
        0,     0,     0,     0,     0,     0,    32,    33,    34,    35,
-      36,     0,     0,     0,     0,     0,     0,     0,     0,     1,
-       0,     0,    40,    41,     0,     0,     0,     0,    42,  -164,
-    -164,    43,     2,     0,     0,     3,     4,     0,    89,     5,
+      36,     0,     0,     1,    38,     0,     0,     0,     0,     0,
+       0,     0,    40,    41,     0,     0,     2,     0,    42,     3,
+       4,    43,     0,     5,     0,     7,     8,     9,    65,    11,
+       0,    12,     0,     0,     0,    15,     0,     0,     0,     1,
+       0,     0,     0,     0,     0,     0,     0,    81,    82,    83,
+      84,    66,     2,    25,     0,     3,     4,     0,     0,     5,
+       0,     7,     8,     9,    65,    11,     0,    12,     0,    31,
+       0,    15,     0,     0,     0,     0,    32,    33,    34,    35,
+      36,     0,     0,    81,     0,    83,     0,    66,     0,    25,
+       0,     0,    40,    41,     0,     0,     0,     0,    42,     0,
+       0,    43,     0,     0,     0,    31,     0,     0,     0,     0,
+       0,     0,    32,    33,    34,    35,    36,     0,     0,     1,
+       0,     0,     0,     0,     0,     0,     0,     0,    40,    41,
+       0,     0,     2,     0,    42,     3,     4,    43,     0,     5,
        0,     7,     8,     9,    65,    11,     0,    12,     0,     0,
        0,    15,     0,     0,     0,     1,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    66,     2,    25,
        0,     3,     4,     0,     0,     5,     0,     7,     8,     9,
-      65,    11,     0,    12,     0,    31,     0,    15,     0,     0,
+     153,    11,     0,    12,     0,    31,     0,    15,     0,     0,
        0,     0,    32,    33,    34,    35,    36,     0,     0,     0,
        0,     0,     0,    66,     0,    25,     0,     0,    40,    41,
-       0,     0,     0,     0,    42,     0,     0,    43,     0,     0,
-       0,    31,     0,     0,     0,     0,     0,   -32,    32,    33,
+       0,     0,     0,     0,    42,  -166,  -166,    43,     0,     0,
+       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
       34,    35,    36,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
-      42,     0,     0,    43,   128,   129,   130,   131,   132,   133,
+       0,     1,     0,     0,    40,    41,     0,     0,     0,     0,
+      42,  -166,  -166,    43,     2,     0,     0,     3,     4,     0,
+      89,     5,     0,     7,     8,     9,    65,    11,     0,    12,
+       0,     0,     0,    15,     0,     0,     0,     1,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    66,
+       2,    25,     0,     3,     4,     0,     0,     5,     0,     7,
+       8,     9,    65,    11,     0,    12,     0,    31,     0,    15,
+       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
+       0,     0,     0,     0,     0,    66,     0,    25,     0,     0,
+      40,    41,     0,     0,     0,     0,    42,     0,     0,    43,
+       0,     0,    81,    31,    83,     0,     0,     0,     0,     0,
+      32,    33,    34,    35,    36,     0,     0,     0,   128,   129,
+     130,   131,   132,   133,     0,   134,    40,    41,   135,   136,
+     137,     0,    42,     0,     0,    43,     0,   183,     0,     0,
+       0,     0,     0,   184,   138,   139,   140,   141,   142,   143,
+     144,   128,   129,   130,   131,   132,   133,     0,   134,     0,
+       0,   135,   136,   137,     0,     0,     0,     0,     0,     0,
+     185,     0,     0,     0,     0,     0,   186,   138,   139,   140,
+     141,   142,   143,   144,   128,   129,   130,   131,   132,   133,
        0,   134,     0,     0,   135,   136,   137,     0,     0,     0,
-       0,    81,     0,    83,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   187,     0,     0,     0,     0,     0,   188,
      138,   139,   140,   141,   142,   143,   144,   128,   129,   130,
      131,   132,   133,     0,   134,     0,     0,   135,   136,   137,
-       0,     0,     0,     0,     0,     0,   183,     0,     0,     0,
-       0,     0,   184,   138,   139,   140,   141,   142,   143,   144,
+       0,     0,     0,     0,     0,     0,   189,     0,     0,     0,
+       0,     0,   190,   138,   139,   140,   141,   142,   143,   144,
      128,   129,   130,   131,   132,   133,     0,   134,     0,     0,
-     135,   136,   137,     0,     0,     0,     0,     0,     0,   185,
-       0,     0,     0,     0,     0,   186,   138,   139,   140,   141,
+     135,   136,   137,     0,     0,     0,     0,     0,     0,   295,
+       0,     0,     0,     0,     0,     0,   138,   139,   140,   141,
      142,   143,   144,   128,   129,   130,   131,   132,   133,     0,
      134,     0,     0,   135,   136,   137,     0,     0,     0,     0,
-       0,     0,   187,     0,     0,     0,     0,     0,   188,   138,
+       0,     0,   296,     0,     0,     0,     0,     0,     0,   138,
      139,   140,   141,   142,   143,   144,   128,   129,   130,   131,
      132,   133,     0,   134,     0,     0,   135,   136,   137,     0,
-       0,     0,     0,     0,     0,   189,     0,     0,     0,     0,
-       0,   190,   138,   139,   140,   141,   142,   143,   144,   128,
+       0,     0,     0,     0,     0,   297,     0,     0,     0,     0,
+       0,     0,   138,   139,   140,   141,   142,   143,   144,   128,
      129,   130,   131,   132,   133,     0,   134,     0,     0,   135,
-     136,   137,     0,     0,     0,     0,     0,     0,   293,     0,
+     136,   137,     0,     0,     0,     0,     0,     0,   298,     0,
        0,     0,     0,     0,     0,   138,   139,   140,   141,   142,
      143,   144,   128,   129,   130,   131,   132,   133,     0,   134,
        0,     0,   135,   136,   137,     0,     0,     0,     0,     0,
-       0,   294,     0,     0,     0,     0,     0,     0,   138,   139,
+       0,     0,     0,     0,     0,     0,     0,   193,   138,   139,
      140,   141,   142,   143,   144,   128,   129,   130,   131,   132,
      133,     0,   134,     0,     0,   135,   136,   137,     0,     0,
-       0,     0,     0,     0,   295,     0,     0,     0,     0,     0,
-       0,   138,   139,   140,   141,   142,   143,   144,   128,   129,
-     130,   131,   132,   133,     0,   134,     0,     0,   135,   136,
-     137,     0,     0,     0,     0,     0,     0,   296,     0,     0,
-       0,     0,     0,     0,   138,   139,   140,   141,   142,   143,
-     144,   128,   129,   130,   131,   132,   133,     0,   134,     0,
-       0,   135,   136,   137,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   193,   138,   139,   140,
-     141,   142,   143,   144,   128,   129,   130,   131,   132,   133,
-       0,   134,     0,     0,   135,   136,   137,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     138,   139,   140,   141,   142,   143,   144,   179,   194,     0,
-       0,     0,     0,   128,   129,   130,   131,   132,   133,     0,
-     134,     0,     0,   135,   136,   137,   128,   129,   130,   131,
-     132,   133,     0,   134,     0,     0,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,     0,     0,     0,     0,
-       0,     0,   138,   139,   140,   141,   142,   143,   144,     0,
-       0,     0,   198,   128,   129,   130,   131,   132,   133,     0,
-     134,     0,     0,   135,   136,   137,     0,     0,     0,     0,
-       0,   191,   192,     0,     0,     0,     0,     0,     0,   138,
-     139,   140,   141,   142,   143,   144,   128,   129,   130,   131,
-     132,   133,     0,   134,     0,     0,   135,   136,   137,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   138,   139,   140,   141,   142,   143,   144
+       0,   138,   139,   140,   141,   142,   143,   144,   179,   194,
+       0,     0,     0,     0,   128,   129,   130,   131,   132,   133,
+       0,   134,     0,     0,   135,   136,   137,   128,   129,   130,
+     131,   132,   133,     0,   134,     0,     0,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,     0,     0,     0,
+       0,     0,     0,   138,   139,   140,   141,   142,   143,   144,
+       0,     0,     0,   198,   128,   129,   130,   131,   132,   133,
+       0,   134,     0,     0,   135,   136,   137,     0,     0,     0,
+       0,     0,   191,   192,     0,     0,     0,     0,     0,     0,
+     138,   139,   140,   141,   142,   143,   144,   128,   129,   130,
+     131,   132,   133,     0,   134,     0,     0,   135,   136,   137,
+     128,   129,   130,   131,     0,     0,     0,   134,     0,     0,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+       0,     0,     0,     0,     0,     0,   138,   139,   140,   141,
+     142,   143,   144
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,    78,   328,    10,   282,    24,     4,    26,    53,
-      95,     8,    18,     0,   157,    68,    92,    23,    29,    63,
-      42,    95,    28,    29,    98,    31,    32,    33,    34,    35,
-      36,    37,     6,     7,    40,    41,    42,    43,   356,    92,
-      93,    63,    55,    56,    50,   370,    96,   324,    97,    98,
-     368,   101,    53,     1,    47,   373,    74,    75,    76,    77,
-      66,    67,    63,    26,    70,    26,    14,     0,    74,    17,
-      18,    77,    53,    21,    85,    81,    73,    68,    26,    27,
-      50,    29,    63,   244,    68,    53,    50,    71,    26,    27,
-     101,    29,    95,    67,    53,    63,    70,    94,    95,    90,
-      91,    92,    93,    77,    63,    89,    90,    91,    92,    93,
-      95,    26,    95,    98,    96,    98,    96,    97,    98,    97,
-      98,    98,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   126,
-     146,   284,    97,    98,   150,    17,    18,    19,    96,   155,
-      45,    99,    97,    98,    26,   161,    35,    36,    98,    26,
-     236,    33,    26,   169,   170,   171,    26,   164,   174,   175,
-     176,   177,   178,   179,   335,    52,    26,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,    26,    26,   101,
-     101,   100,   353,   199,   200,   201,    98,   203,    98,    26,
-      98,    26,   363,    26,    47,    98,    98,   278,   369,    26,
-      52,    43,    26,    26,    26,   101,    26,    61,    62,    63,
-      64,   297,   298,    86,    68,    26,    34,    71,    72,    73,
-     301,   307,    53,   304,    85,    84,   242,   243,    53,   310,
-      98,   247,   248,    87,    88,    89,    90,    91,    92,    93,
-      26,    84,    52,   126,   309,   267,   332,   194,   165,    -1,
-     281,   204,    -1,   334,    -1,    -1,    -1,    -1,    -1,    -1,
-     341,    -1,    -1,    -1,    -1,   281,   352,    -1,    -1,   285,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   293,   294,   295,
-     296,   362,    -1,    -1,   291,   366,    -1,    -1,    -1,    -1,
-      -1,   372,    -1,    -1,    -1,   376,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   329,   330,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     0,     1,    -1,    -1,   342,    -1,    -1,    -1,
-      -1,    -1,    -1,   349,    -1,    -1,    14,    -1,    -1,    17,
-      18,    -1,   358,    21,    22,    23,    24,    25,    26,    27,
-      -1,    29,    30,    31,    -1,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    -1,    43,    -1,    45,    46,    47,
-      -1,    49,    50,    51,    52,    53,    54,    55,    -1,    -1,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    -1,    84,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,     1,    95,    96,    97,
-      98,    99,   100,    -1,    -1,    -1,    -1,    -1,    -1,    14,
-      -1,    43,    17,    18,    -1,    -1,    21,    -1,    23,    24,
-      25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,    61,
-      62,    63,    64,    65,    66,    -1,    68,    69,    70,    71,
-      72,    73,    -1,    -1,    49,    -1,    51,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,
-      92,    93,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
-      75,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     0,     1,    90,    91,    -1,    -1,    -1,
-      -1,    96,    -1,    -1,    99,   100,   101,    14,    -1,    -1,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
-      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
-      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
-      -1,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    -1,    -1,    71,    72,    73,    74,    75,    76,
-      77,    78,    -1,    -1,    81,    82,    -1,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    -1,    95,    96,
-       0,     1,    99,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
+       6,     7,    78,   330,    10,   284,    24,     4,    26,    95,
+     157,     8,    18,    47,    68,     0,    92,    23,    29,    42,
+      50,    95,    28,    29,    98,    31,    32,    33,    34,    35,
+      36,    37,     6,     7,    40,    41,    42,    43,    92,    93,
+      63,    96,    55,    56,    50,   372,   101,   326,    50,    24,
+     358,    26,    95,     1,    26,    98,    74,    75,    76,    77,
+      66,    67,   370,    24,    70,    26,    14,   375,    74,    17,
+      18,    77,    53,    21,    85,    81,    73,    26,    26,    27,
+       0,    29,    63,   246,    68,    26,    27,    71,    29,    96,
+     101,    35,    36,    67,    53,    68,    70,    94,    95,    74,
+      75,    76,    77,    77,    63,    89,    90,    91,    92,    93,
+      98,    53,    95,    74,    75,    76,    77,    90,    91,    92,
+      93,    63,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   286,
+     146,   126,    53,    53,   150,    17,    18,    19,    96,   155,
+      26,    99,    63,    63,    26,   161,    95,    97,    98,    98,
+     236,    33,    98,   169,   170,   171,    45,   164,   174,   175,
+     176,   177,   178,   179,   337,    97,    98,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,    96,    97,    98,
+      97,    98,   355,   199,   200,   201,    26,   203,    26,   280,
+      97,    98,   365,   165,   166,   167,    26,    52,   371,    26,
+      26,    26,   101,   101,   100,    98,    98,    26,    98,    52,
+      47,    98,   303,   299,   300,   306,    26,    98,    26,    43,
+      26,   312,    26,   309,   101,    26,    86,    26,   244,   245,
+      53,    34,    85,   249,   250,    84,    98,    53,    26,    84,
+      52,   126,   269,   311,   283,   336,   194,   204,   334,    -1,
+      -1,    -1,   343,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    34,    -1,    -1,   283,   354,    -1,
+      -1,   287,    -1,   364,    -1,    -1,    -1,   368,    -1,   295,
+     296,   297,   298,   374,    -1,    -1,   293,   378,    -1,    -1,
+      -1,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
+      -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   331,   332,    87,    88,    89,
+      90,    91,    92,    93,     0,     1,    -1,    -1,   344,    -1,
+      -1,    -1,    -1,    -1,    -1,   351,    -1,    -1,    14,    -1,
+      -1,    17,    18,    -1,   360,    21,    22,    23,    24,    25,
+      26,    27,    -1,    29,    30,    31,    -1,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    -1,    43,    -1,    45,
+      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
+      -1,    -1,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    -1,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,     1,    95,
+      96,    97,    98,    99,   100,    -1,    -1,    -1,    -1,    -1,
+      -1,    14,    -1,    43,    17,    18,    -1,    -1,    21,    -1,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,
+      33,    61,    62,    63,    64,    65,    66,    -1,    68,    69,
+      70,    71,    72,    73,    -1,    -1,    49,    -1,    51,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
+      90,    91,    92,    93,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    74,    75,    76,    77,    78,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     0,     1,    90,    91,    -1,
+      -1,    -1,    -1,    96,    -1,    -1,    99,   100,   101,    14,
+      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    -1,
+      35,    36,    37,    38,    39,    40,    41,    -1,    -1,    -1,
+      -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,
+      -1,    -1,    -1,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    -1,    -1,    71,    72,    73,    74,
+      75,    76,    77,    78,    -1,    -1,    81,    82,    -1,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    -1,
+      95,    96,     0,     1,    99,    -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,    -1,    35,    36,    37,
+      38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,    -1,
+      -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,
+      58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,
+      78,    -1,    -1,    81,    82,    -1,    84,    85,    86,     0,
+       1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,    -1,
+      98,    99,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
+      31,    -1,    33,    -1,    35,    36,    37,    38,    39,    40,
+      41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
+      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
+      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,
+      81,    82,    -1,    84,    85,    86,     0,     1,    -1,    90,
+      91,    -1,    -1,    -1,    95,    96,    -1,    98,    99,    -1,
+      14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    31,    32,    33,
+      -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,    -1,
+      44,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
+      54,    -1,    -1,    57,    58,    59,    60,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
+      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    83,
+       0,     1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
+      -1,    95,    96,    -1,    14,    99,    -1,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      30,    31,    -1,    33,    -1,    35,    36,    37,    38,    39,
+      30,    31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,
       40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
       50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
       60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
       -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,    81,    82,    -1,    84,    85,    86,     0,     1,    -1,
-      90,    91,    -1,    -1,    -1,    95,    96,    -1,    98,    99,
-      -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
-      33,    -1,    35,    36,    37,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
-      -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
-      -1,    84,    85,    86,     0,     1,    -1,    90,    91,    -1,
-      -1,    -1,    95,    96,    -1,    98,    99,    -1,    14,    -1,
-      -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    31,    32,    33,    -1,    -1,
-      -1,    37,    38,    39,    40,    41,    -1,    -1,    44,    -1,
-      46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
-      -1,    57,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,    81,    82,    83,     0,     1,
-      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,
-      96,    -1,    14,    99,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
-      -1,    33,    -1,    -1,    -1,    37,    38,    39,    40,    41,
-      -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,
-      -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
-      -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,    81,
-      82,     0,     1,    -1,    -1,    -1,    -1,    -1,    90,    91,
-      -1,    -1,    -1,    95,    96,    14,    -1,    99,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,
-      39,    40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,
-      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
-      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,
-      -1,    -1,    81,    82,     0,     1,    -1,    -1,    -1,    -1,
-      -1,    90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,
-      99,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
-      46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
-      -1,    -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,    81,    82,    -1,     1,    -1,
-      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,
-      96,    14,    -1,    99,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
-      33,    -1,    35,    36,    37,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
-      -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
-      -1,    84,     1,    -1,    -1,    -1,    -1,    90,    91,    -1,
-      -1,    -1,    95,    96,    -1,    14,    99,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,
-      39,    40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,
-      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
-      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,
-      -1,    -1,    81,    82,    -1,     1,    -1,    86,    -1,    -1,
-      -1,    90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,
-      99,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
-      46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
-      -1,    -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,    81,    82,    -1,     1,    85,
-      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,
-      96,    14,    -1,    99,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
-      33,    -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
-      -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
-      -1,    84,     1,    -1,    -1,    -1,    -1,    90,    91,    -1,
-      -1,    -1,    95,    96,    -1,    14,    99,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,
-      39,    40,    41,    -1,    -1,    -1,    -1,    46,    -1,    -1,
-      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
-      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,
-      -1,    -1,    81,    82,    -1,     1,    85,    -1,    -1,    -1,
-      -1,    90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,
-      99,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
-      46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
-      -1,    -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,    81,    82,    -1,     1,    85,
-      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,
-      96,    14,    -1,    99,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
-      33,    -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
-      -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    74,    75,    76,    77,    78,    -1,    -1,    81,    82,
-      -1,     1,    85,    -1,    -1,    -1,    -1,    90,    91,    -1,
-      -1,    -1,    95,    96,    14,    -1,    99,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,
-      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
-      -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
-      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
-      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,     1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      90,    91,    -1,    -1,    14,    -1,    96,    17,    18,    99,
-      -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    -1,    -1,    33,    -1,    -1,    -1,     1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,
-      14,    51,    -1,    17,    18,    -1,    -1,    21,    -1,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    67,    -1,    33,
-      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
-      -1,    45,    -1,    47,    -1,    49,    -1,    51,    -1,    -1,
-      90,    91,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,
+      -1,    81,    82,     0,     1,    -1,    -1,    -1,    -1,    -1,
+      90,    91,    -1,    -1,    -1,    95,    96,    14,    -1,    99,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
+      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
+      -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
+      77,    78,    -1,    -1,    81,    82,     0,     1,    -1,    -1,
+      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
+      14,    -1,    99,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
+      -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,    -1,
+      -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
+      54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
       -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,     1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
-      14,    -1,    96,    17,    18,    99,    -1,    21,    -1,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,
-      -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    49,    14,    51,    -1,    17,
-      18,    -1,    -1,    21,    -1,    23,    24,    25,    26,    27,
-      -1,    29,    -1,    67,    -1,    33,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    -1,    -1,    90,    91,    -1,    -1,
-      -1,    -1,    96,    97,    98,    99,    -1,    -1,    -1,    67,
+      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    -1,
+       1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
+      -1,    95,    96,    14,    -1,    99,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      31,    -1,    33,    -1,    35,    36,    37,    38,    39,    40,
+      41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
+      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
+      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,
+      81,    82,    -1,    84,     1,    -1,    -1,    -1,    -1,    90,
+      91,    -1,    -1,    -1,    95,    96,    -1,    14,    99,    -1,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
+      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
+      -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
+      77,    78,    -1,    -1,    81,    82,    -1,     1,    -1,    86,
+      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
+      14,    -1,    99,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
+      -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,    -1,
+      -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
+      54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
+      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    -1,
+       1,    85,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
+      -1,    95,    96,    14,    -1,    99,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,    40,
+      41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
+      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
+      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,
+      81,    82,    -1,    84,     1,    -1,    -1,    -1,    -1,    90,
+      91,    -1,    -1,    -1,    95,    96,    -1,    14,    99,    -1,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
+      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
+      -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
+      77,    78,    -1,    -1,    81,    82,    -1,     1,    85,    -1,
+      -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
+      14,    -1,    99,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
+      -1,    -1,    -1,    37,    38,    39,    40,    41,    -1,    -1,
+      -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
+      54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
+      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    -1,
+       1,    85,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
+      -1,    95,    96,    14,    -1,    99,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      31,    -1,    33,    -1,    -1,    -1,    37,    38,    39,    40,
+      41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
+      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
+      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,
+      81,    82,    -1,     1,    85,    -1,    -1,    -1,    -1,    90,
+      91,    -1,    -1,    -1,    95,    96,    14,    -1,    99,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
+      38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    49,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,
+      58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
       -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,    77,
-      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
-      -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    96,    97,
-      98,    99,    14,    -1,    -1,    17,    18,    -1,    20,    21,
+      78,    -1,    -1,     1,    82,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    90,    91,    -1,    -1,    14,    -1,    96,    17,
+      18,    99,    -1,    21,    -1,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    -1,    -1,    33,    -1,    -1,    -1,     1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,
+      48,    49,    14,    51,    -1,    17,    18,    -1,    -1,    21,
+      -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    67,
+      -1,    33,    -1,    -1,    -1,    -1,    74,    75,    76,    77,
+      78,    -1,    -1,    45,    -1,    47,    -1,    49,    -1,    51,
+      -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    96,    -1,
+      -1,    99,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+      -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,     1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
+      -1,    -1,    14,    -1,    96,    17,    18,    99,    -1,    21,
       -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
       -1,    33,    -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    14,    51,
@@ -1572,59 +1559,68 @@ static const yytype_int16 yycheck[] =
       26,    27,    -1,    29,    -1,    67,    -1,    33,    -1,    -1,
       -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,    -1,
       -1,    -1,    -1,    49,    -1,    51,    -1,    -1,    90,    91,
-      -1,    -1,    -1,    -1,    96,    -1,    -1,    99,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    34,    74,    75,
+      -1,    -1,    -1,    -1,    96,    97,    98,    99,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
       76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,
-      96,    -1,    -1,    99,    61,    62,    63,    64,    65,    66,
+      -1,     1,    -1,    -1,    90,    91,    -1,    -1,    -1,    -1,
+      96,    97,    98,    99,    14,    -1,    -1,    17,    18,    -1,
+      20,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    -1,    -1,    33,    -1,    -1,    -1,     1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      14,    51,    -1,    17,    18,    -1,    -1,    21,    -1,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    67,    -1,    33,
+      -1,    -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,
+      -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    -1,
+      90,    91,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,
+      -1,    -1,    45,    67,    47,    -1,    -1,    -1,    -1,    -1,
+      74,    75,    76,    77,    78,    -1,    -1,    -1,    61,    62,
+      63,    64,    65,    66,    -1,    68,    90,    91,    71,    72,
+      73,    -1,    96,    -1,    -1,    99,    -1,    47,    -1,    -1,
+      -1,    -1,    -1,    53,    87,    88,    89,    90,    91,    92,
+      93,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
+      -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,    89,
+      90,    91,    92,    93,    61,    62,    63,    64,    65,    66,
       -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,
-      -1,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    53,
       87,    88,    89,    90,    91,    92,    93,    61,    62,    63,
       64,    65,    66,    -1,    68,    -1,    -1,    71,    72,    73,
       -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,
       -1,    -1,    53,    87,    88,    89,    90,    91,    92,    93,
       61,    62,    63,    64,    65,    66,    -1,    68,    -1,    -1,
       71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    53,    87,    88,    89,    90,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,
       91,    92,    93,    61,    62,    63,    64,    65,    66,    -1,
       68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    87,
+      -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    87,
       88,    89,    90,    91,    92,    93,    61,    62,    63,    64,
       65,    66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,
       -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,
-      -1,    53,    87,    88,    89,    90,    91,    92,    93,    61,
+      -1,    -1,    87,    88,    89,    90,    91,    92,    93,    61,
       62,    63,    64,    65,    66,    -1,    68,    -1,    -1,    71,
       72,    73,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,
       -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,
       92,    93,    61,    62,    63,    64,    65,    66,    -1,    68,
       -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,
       89,    90,    91,    92,    93,    61,    62,    63,    64,    65,
       66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
-      -1,    87,    88,    89,    90,    91,    92,    93,    61,    62,
-      63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    72,
-      73,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,    92,
-      93,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
-      -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,    89,
-      90,    91,    92,    93,    61,    62,    63,    64,    65,    66,
-      -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      87,    88,    89,    90,    91,    92,    93,    55,    95,    -1,
-      -1,    -1,    -1,    61,    62,    63,    64,    65,    66,    -1,
-      68,    -1,    -1,    71,    72,    73,    61,    62,    63,    64,
-      65,    66,    -1,    68,    -1,    -1,    71,    72,    73,    87,
-      88,    89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,
-      -1,    -1,    87,    88,    89,    90,    91,    92,    93,    -1,
-      -1,    -1,    97,    61,    62,    63,    64,    65,    66,    -1,
-      68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,
-      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
-      88,    89,    90,    91,    92,    93,    61,    62,    63,    64,
-      65,    66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    87,    88,    89,    90,    91,    92,    93
+      -1,    87,    88,    89,    90,    91,    92,    93,    55,    95,
+      -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,    66,
+      -1,    68,    -1,    -1,    71,    72,    73,    61,    62,    63,
+      64,    65,    66,    -1,    68,    -1,    -1,    71,    72,    73,
+      87,    88,    89,    90,    91,    92,    93,    -1,    -1,    -1,
+      -1,    -1,    -1,    87,    88,    89,    90,    91,    92,    93,
+      -1,    -1,    -1,    97,    61,    62,    63,    64,    65,    66,
+      -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,
+      -1,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    88,    89,    90,    91,    92,    93,    61,    62,    63,
+      64,    65,    66,    -1,    68,    -1,    -1,    71,    72,    73,
+      61,    62,    63,    64,    -1,    -1,    -1,    68,    -1,    -1,
+      71,    72,    73,    87,    88,    89,    90,    91,    92,    93,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,
+      91,    92,    93
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1655,20 +1651,21 @@ static const yytype_uint8 yystos[] =
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
      129,   129,   129,   129,    26,   150,    97,   129,    97,    97,
       98,    97,   129,   150,    98,   129,   146,   128,    26,   132,
-      26,    26,    42,    63,   129,   129,   129,    53,    63,    47,
-     129,   129,   129,   129,   129,   129,    98,   129,   129,   129,
-     129,   129,   129,   129,   129,   129,   129,   118,   118,    98,
-     129,   129,   129,   129,    26,    27,    29,   160,    52,    95,
-      98,   130,    95,    26,   126,    43,   129,   129,   122,   129,
-     129,    26,    26,    47,    47,    47,    47,   106,   127,    26,
-     127,   152,    26,   155,   152,   150,   129,   114,   108,   111,
-     117,   128,   129,   129,   129,   129,   126,    95,   107,   126,
-     123,   127,    97,   127,    95,   126,   124,   124,   127,    53,
-      63,    86,   120,    30,   152,   115,   109,   112,   123,   129,
-     129,    35,    36,   121,   126,    26,   151,   127,   122,    53,
-      34,    85,   127,   129,    84,    98,   116,   129,    53,   126,
-     122,    26,   117,   110,   129,    84,    52,   127,   122,   113,
-     127,    85,   117,   122,   123,   127,   117,    85,   127,    85
+      26,   132,    26,   132,    42,    63,   129,   129,   129,    53,
+      63,    47,   129,   129,   129,   129,   129,   129,    98,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   118,
+     118,    98,   129,   129,   129,   129,    26,    27,    29,   160,
+      52,    95,    98,   130,    95,    26,   126,    43,   129,   129,
+     122,   129,   129,    26,    26,    47,    47,    47,    47,   106,
+     127,    26,   127,   152,    26,   155,   152,   150,   129,   114,
+     108,   111,   117,   128,   129,   129,   129,   129,   126,    95,
+     107,   126,   123,   127,    97,   127,    95,   126,   124,   124,
+     127,    53,    63,    86,   120,    30,   152,   115,   109,   112,
+     123,   129,   129,    35,    36,   121,   126,    26,   151,   127,
+     122,    53,    34,    85,   127,   129,    84,    98,   116,   129,
+      53,   126,   122,    26,   117,   110,   129,    84,    52,   127,
+     122,   113,   127,    85,   117,   122,   123,   127,   117,    85,
+     127,    85
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1676,47 +1673,47 @@ static const yytype_uint8 yyr1[] =
 {
        0,   102,   103,   103,   104,   104,   104,   105,   105,   105,
      105,   105,   105,   105,   105,   105,   105,   105,   105,   105,
-     105,   105,   106,   106,   106,   107,   107,   107,   108,   109,
-     110,   107,   111,   112,   113,   107,   114,   115,   116,   107,
-     107,   107,   107,   107,   117,   118,   119,   119,   120,   120,
-     121,   122,   123,   124,   125,   126,   127,   127,   127,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   129,
-     129,   129,   129,   129,   130,   129,   129,   129,   129,   129,
+     105,   105,   105,   105,   106,   106,   106,   107,   107,   107,
+     108,   109,   110,   107,   111,   112,   113,   107,   114,   115,
+     116,   107,   107,   107,   107,   107,   117,   118,   119,   119,
+     120,   120,   121,   122,   123,   124,   125,   126,   127,   127,
+     127,   128,   128,   128,   128,   128,   128,   128,   128,   128,
+     128,   129,   129,   129,   129,   129,   130,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   131,   131,   131,   131,   131,   131,   131,   131,
-     132,   132,   133,   133,   133,   133,   133,   134,   133,   135,
-     133,   136,   133,   133,   133,   133,   133,   137,   137,   138,
-     138,   139,   139,   140,   140,   140,   140,   140,   140,   141,
-     141,   142,   142,   142,   143,   142,   145,   146,   144,   144,
-     147,   144,   144,   144,   149,   148,   150,   150,   150,   151,
-     151,   151,   152,   153,   154,   154,   154,   155,   155,   156,
-     157,   157,   157,   157,   158,   158,   159,   159,   160,   160,
-     160
+     129,   129,   129,   129,   131,   131,   131,   131,   131,   131,
+     131,   131,   132,   132,   133,   133,   133,   133,   133,   134,
+     133,   135,   133,   136,   133,   133,   133,   133,   133,   137,
+     137,   138,   138,   139,   139,   140,   140,   140,   140,   140,
+     140,   141,   141,   142,   142,   142,   143,   142,   145,   146,
+     144,   144,   147,   144,   144,   144,   149,   148,   150,   150,
+     150,   151,   151,   151,   152,   153,   154,   154,   154,   155,
+     155,   156,   157,   157,   157,   157,   158,   158,   159,   159,
+     160,   160,   160
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_int8 yyr2[] =
 {
        0,     2,     1,     3,     0,     1,     1,     4,     4,     6,
-       4,     4,     4,     4,     4,     4,     5,     5,     8,     8,
-       4,     4,     1,     1,     1,     1,     1,     9,     0,     0,
-       0,    15,     0,     0,     0,    16,     0,     0,     0,    13,
-       2,     4,     7,     6,     0,     0,     9,    11,     0,     2,
-       6,     0,     0,     0,     1,     0,     0,     2,     2,     1,
-       1,     1,     1,     1,     1,     2,     3,     1,     2,     1,
-       1,     4,     2,     4,     0,     7,     4,     3,     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,
-       3
+       4,     4,     4,     4,     4,     4,     4,     4,     5,     5,
+       8,     8,     4,     4,     1,     1,     1,     1,     1,     9,
+       0,     0,     0,    15,     0,     0,     0,    16,     0,     0,
+       0,    13,     2,     4,     7,     6,     0,     0,     9,    11,
+       0,     2,     6,     0,     0,     0,     1,     0,     0,     2,
+       2,     1,     1,     1,     1,     1,     1,     2,     3,     1,
+       2,     1,     1,     4,     2,     4,     0,     7,     4,     3,
+       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,     3
 };
 
 
@@ -1990,73 +1987,73 @@ yydestruct (const char *yymsg,
     case 22: /* BLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1994 "engines/director/lingo/lingo-gr.cpp"
+#line 1991 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2000 "engines/director/lingo/lingo-gr.cpp"
+#line 1997 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2006 "engines/director/lingo/lingo-gr.cpp"
+#line 2003 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* THEFBLTIN  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2012 "engines/director/lingo/lingo-gr.cpp"
+#line 2009 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ID  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2018 "engines/director/lingo/lingo-gr.cpp"
+#line 2015 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* STRING  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2024 "engines/director/lingo/lingo-gr.cpp"
+#line 2021 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* HANDLER  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2030 "engines/director/lingo/lingo-gr.cpp"
+#line 2027 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* SYMBOL  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2036 "engines/director/lingo/lingo-gr.cpp"
+#line 2033 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* ENDCLAUSE  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2042 "engines/director/lingo/lingo-gr.cpp"
+#line 2039 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tPLAYACCEL  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2048 "engines/director/lingo/lingo-gr.cpp"
+#line 2045 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* tMETHOD  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2054 "engines/director/lingo/lingo-gr.cpp"
+#line 2051 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 148: /* on  */
 #line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2060 "engines/director/lingo/lingo-gr.cpp"
+#line 2057 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2343,7 +2340,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2347 "engines/director/lingo/lingo-gr.cpp"
+#line 2344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2351,7 +2348,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2355 "engines/director/lingo/lingo-gr.cpp"
+#line 2352 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2367,7 +2364,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2371 "engines/director/lingo/lingo-gr.cpp"
+#line 2368 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
@@ -2379,11 +2376,19 @@ yyreduce:
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2383 "engines/director/lingo/lingo-gr.cpp"
+#line 2380 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 254 "engines/director/lingo/lingo-gr.y"
+                                                {
+		g_lingo->code1(LC::c_after);
+		(yyval.code) = (yyvsp[-2].code); }
+#line 2388 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 12:
+#line 257 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2391,11 +2396,19 @@ yyreduce:
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2395 "engines/director/lingo/lingo-gr.cpp"
+#line 2400 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 12:
-#line 261 "engines/director/lingo/lingo-gr.y"
+  case 13:
+#line 264 "engines/director/lingo/lingo-gr.y"
+                                                {
+		g_lingo->code1(LC::c_before);
+		(yyval.code) = (yyvsp[-2].code); }
+#line 2408 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 14:
+#line 267 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2403,11 +2416,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2407 "engines/director/lingo/lingo-gr.cpp"
+#line 2420 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 13:
-#line 268 "engines/director/lingo/lingo-gr.y"
+  case 15:
+#line 274 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2415,11 +2428,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2419 "engines/director/lingo/lingo-gr.cpp"
+#line 2432 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 14:
-#line 275 "engines/director/lingo/lingo-gr.y"
+  case 16:
+#line 281 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2427,11 +2440,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2431 "engines/director/lingo/lingo-gr.cpp"
+#line 2444 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 15:
-#line 282 "engines/director/lingo/lingo-gr.y"
+  case 17:
+#line 288 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2439,33 +2452,33 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2443 "engines/director/lingo/lingo-gr.cpp"
+#line 2456 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 16:
-#line 289 "engines/director/lingo/lingo-gr.y"
+  case 18:
+#line 295 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2454 "engines/director/lingo/lingo-gr.cpp"
+#line 2467 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 17:
-#line 295 "engines/director/lingo/lingo-gr.y"
+  case 19:
+#line 301 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2465 "engines/director/lingo/lingo-gr.cpp"
+#line 2478 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 18:
-#line 302 "engines/director/lingo/lingo-gr.y"
+  case 20:
+#line 308 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2477,11 +2490,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2481 "engines/director/lingo/lingo-gr.cpp"
+#line 2494 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 19:
-#line 313 "engines/director/lingo/lingo-gr.y"
+  case 21:
+#line 319 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2493,11 +2506,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2497 "engines/director/lingo/lingo-gr.cpp"
+#line 2510 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 20:
-#line 324 "engines/director/lingo/lingo-gr.y"
+  case 22:
+#line 330 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2505,11 +2518,11 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2509 "engines/director/lingo/lingo-gr.cpp"
+#line 2522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 21:
-#line 331 "engines/director/lingo/lingo-gr.y"
+  case 23:
+#line 337 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2517,11 +2530,11 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2521 "engines/director/lingo/lingo-gr.cpp"
+#line 2534 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 27:
-#line 349 "engines/director/lingo/lingo-gr.y"
+  case 29:
+#line 355 "engines/director/lingo/lingo-gr.y"
                                                                                                 {
 		inst start = 0, end = 0;
 		WRITE_UINT32(&start, (yyvsp[-6].code) - (yyvsp[-1].code) + 1);
@@ -2529,32 +2542,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2533 "engines/director/lingo/lingo-gr.cpp"
+#line 2546 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 28:
-#line 362 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#line 368 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2541 "engines/director/lingo/lingo-gr.cpp"
+#line 2554 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 29:
-#line 366 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#line 372 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2548 "engines/director/lingo/lingo-gr.cpp"
+#line 2561 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 30:
-#line 369 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 375 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2554 "engines/director/lingo/lingo-gr.cpp"
+#line 2567 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 31:
-#line 369 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 375 "engines/director/lingo/lingo-gr.y"
                                                                                                       {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2575,32 +2588,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2579 "engines/director/lingo/lingo-gr.cpp"
+#line 2592 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 32:
-#line 396 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 402 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2587 "engines/director/lingo/lingo-gr.cpp"
+#line 2600 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 33:
-#line 400 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 406 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2594 "engines/director/lingo/lingo-gr.cpp"
+#line 2607 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 34:
-#line 403 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 409 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2600 "engines/director/lingo/lingo-gr.cpp"
+#line 2613 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 35:
-#line 404 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 410 "engines/director/lingo/lingo-gr.y"
                                                                 {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2621,32 +2634,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+#line 2638 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 36:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 436 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);
 				  g_lingo->codeInt(0);
 				  Common::String count("count");
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2636 "engines/director/lingo/lingo-gr.cpp"
+#line 2649 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 37:
-#line 437 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 443 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get counter
 				  g_lingo->codeInt(0);
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2646 "engines/director/lingo/lingo-gr.cpp"
+#line 2659 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 38:
-#line 443 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 449 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get list
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_stackpeek);	// get counter
@@ -2657,11 +2670,11 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2661 "engines/director/lingo/lingo-gr.cpp"
+#line 2674 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 39:
-#line 453 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 459 "engines/director/lingo/lingo-gr.y"
                                                         {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2681,11 +2694,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2685 "engines/director/lingo/lingo-gr.cpp"
+#line 2698 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 40:
-#line 473 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 479 "engines/director/lingo/lingo-gr.y"
                         {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -2694,43 +2707,43 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2698 "engines/director/lingo/lingo-gr.cpp"
+#line 2711 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 41:
-#line 481 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 487 "engines/director/lingo/lingo-gr.y"
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2706 "engines/director/lingo/lingo-gr.cpp"
+#line 2719 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
-#line 484 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 490 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2712 "engines/director/lingo/lingo-gr.cpp"
+#line 2725 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 43:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 491 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2718 "engines/director/lingo/lingo-gr.cpp"
+#line 2731 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 44:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 493 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2724 "engines/director/lingo/lingo-gr.cpp"
+#line 2737 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 495 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2730 "engines/director/lingo/lingo-gr.cpp"
+#line 2743 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 46:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 497 "engines/director/lingo/lingo-gr.y"
                                                                                          {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2738,11 +2751,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2742 "engines/director/lingo/lingo-gr.cpp"
+#line 2755 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 47:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 504 "engines/director/lingo/lingo-gr.y"
                                                                                                           {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
@@ -2750,107 +2763,107 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2754 "engines/director/lingo/lingo-gr.cpp"
+#line 2767 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 50:
-#line 509 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 515 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2764 "engines/director/lingo/lingo-gr.cpp"
+#line 2777 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 51:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 521 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2772 "engines/director/lingo/lingo-gr.cpp"
+#line 2785 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 52:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 525 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2780 "engines/director/lingo/lingo-gr.cpp"
+#line 2793 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 529 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2788 "engines/director/lingo/lingo-gr.cpp"
+#line 2801 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 54:
-#line 527 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 533 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2795 "engines/director/lingo/lingo-gr.cpp"
+#line 2808 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 536 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2801 "engines/director/lingo/lingo-gr.cpp"
+#line 2814 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 532 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 538 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2807 "engines/director/lingo/lingo-gr.cpp"
+#line 2820 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 59:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 542 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2815 "engines/director/lingo/lingo-gr.cpp"
+#line 2828 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 60:
-#line 539 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 545 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2823 "engines/director/lingo/lingo-gr.cpp"
+#line 2836 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 61:
-#line 542 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 548 "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 2832 "engines/director/lingo/lingo-gr.cpp"
+#line 2845 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 546 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 552 "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 2841 "engines/director/lingo/lingo-gr.cpp"
+#line 2854 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 556 "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 2850 "engines/director/lingo/lingo-gr.cpp"
+#line 2863 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 554 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 560 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2859,28 +2872,28 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2863 "engines/director/lingo/lingo-gr.cpp"
+#line 2876 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 562 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 568 "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 2874 "engines/director/lingo/lingo-gr.cpp"
+#line 2887 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 568 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 574 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+#line 2893 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 576 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2891,280 +2904,280 @@ yyreduce:
 			yyerrok;
 		}
 	}
-#line 2895 "engines/director/lingo/lingo-gr.cpp"
+#line 2908 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 581 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 587 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2901 "engines/director/lingo/lingo-gr.cpp"
+#line 2914 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 589 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2909 "engines/director/lingo/lingo-gr.cpp"
+#line 2922 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 586 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 592 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2917 "engines/director/lingo/lingo-gr.cpp"
+#line 2930 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 595 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2928 "engines/director/lingo/lingo-gr.cpp"
+#line 2941 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 601 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2934 "engines/director/lingo/lingo-gr.cpp"
+#line 2947 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 602 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2943 "engines/director/lingo/lingo-gr.cpp"
+#line 2956 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 600 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 606 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2951 "engines/director/lingo/lingo-gr.cpp"
+#line 2964 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 603 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 609 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2959 "engines/director/lingo/lingo-gr.cpp"
+#line 2972 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 606 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 612 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_objectproppush);
 		g_lingo->codeString((yyvsp[0].objectprop).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2970 "engines/director/lingo/lingo-gr.cpp"
+#line 2983 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 613 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 619 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2976 "engines/director/lingo/lingo-gr.cpp"
+#line 2989 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 620 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2982 "engines/director/lingo/lingo-gr.cpp"
+#line 2995 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 621 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2988 "engines/director/lingo/lingo-gr.cpp"
+#line 3001 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 622 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2994 "engines/director/lingo/lingo-gr.cpp"
+#line 3007 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 617 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 623 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 3000 "engines/director/lingo/lingo-gr.cpp"
+#line 3013 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 624 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 3006 "engines/director/lingo/lingo-gr.cpp"
+#line 3019 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 619 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 625 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 3012 "engines/director/lingo/lingo-gr.cpp"
+#line 3025 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 620 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 626 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 3018 "engines/director/lingo/lingo-gr.cpp"
+#line 3031 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 621 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 627 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 3024 "engines/director/lingo/lingo-gr.cpp"
+#line 3037 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 628 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 3030 "engines/director/lingo/lingo-gr.cpp"
+#line 3043 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 623 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 629 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 3036 "engines/director/lingo/lingo-gr.cpp"
+#line 3049 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 624 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 630 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 3042 "engines/director/lingo/lingo-gr.cpp"
+#line 3055 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 625 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 631 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 3048 "engines/director/lingo/lingo-gr.cpp"
+#line 3061 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 626 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 632 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 3054 "engines/director/lingo/lingo-gr.cpp"
+#line 3067 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 627 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 633 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 3060 "engines/director/lingo/lingo-gr.cpp"
+#line 3073 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 628 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 634 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 3066 "engines/director/lingo/lingo-gr.cpp"
+#line 3079 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 629 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 635 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 3072 "engines/director/lingo/lingo-gr.cpp"
+#line 3085 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 630 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 636 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 3078 "engines/director/lingo/lingo-gr.cpp"
+#line 3091 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 631 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 637 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 3084 "engines/director/lingo/lingo-gr.cpp"
+#line 3097 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 632 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 638 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 3090 "engines/director/lingo/lingo-gr.cpp"
+#line 3103 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 633 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 639 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 3096 "engines/director/lingo/lingo-gr.cpp"
+#line 3109 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
-#line 634 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 640 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 3102 "engines/director/lingo/lingo-gr.cpp"
+#line 3115 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 636 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 642 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
-#line 3108 "engines/director/lingo/lingo-gr.cpp"
+#line 3121 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 637 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 643 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 3114 "engines/director/lingo/lingo-gr.cpp"
+#line 3127 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 638 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 644 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3120 "engines/director/lingo/lingo-gr.cpp"
+#line 3133 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 639 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 645 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 3126 "engines/director/lingo/lingo-gr.cpp"
+#line 3139 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 640 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 646 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3132 "engines/director/lingo/lingo-gr.cpp"
+#line 3145 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 641 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 647 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 3138 "engines/director/lingo/lingo-gr.cpp"
+#line 3151 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 642 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 648 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3144 "engines/director/lingo/lingo-gr.cpp"
+#line 3157 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 643 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 649 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 3150 "engines/director/lingo/lingo-gr.cpp"
+#line 3163 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 651 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 3158 "engines/director/lingo/lingo-gr.cpp"
+#line 3171 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 650 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 656 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3164 "engines/director/lingo/lingo-gr.cpp"
+#line 3177 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 653 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 659 "engines/director/lingo/lingo-gr.y"
                                                 {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -3173,260 +3186,260 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3177 "engines/director/lingo/lingo-gr.cpp"
+#line 3190 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 661 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 667 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3183 "engines/director/lingo/lingo-gr.cpp"
+#line 3196 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 668 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3189 "engines/director/lingo/lingo-gr.cpp"
+#line 3202 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 668 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3195 "engines/director/lingo/lingo-gr.cpp"
+#line 3208 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 669 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3201 "engines/director/lingo/lingo-gr.cpp"
+#line 3214 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 669 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3207 "engines/director/lingo/lingo-gr.cpp"
+#line 3220 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 664 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 670 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3213 "engines/director/lingo/lingo-gr.cpp"
+#line 3226 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 664 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 670 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3219 "engines/director/lingo/lingo-gr.cpp"
+#line 3232 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 665 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 671 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3227 "engines/director/lingo/lingo-gr.cpp"
+#line 3240 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 668 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 674 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3235 "engines/director/lingo/lingo-gr.cpp"
+#line 3248 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 677 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
-#line 3241 "engines/director/lingo/lingo-gr.cpp"
+#line 3254 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 672 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 678 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3247 "engines/director/lingo/lingo-gr.cpp"
+#line 3260 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 674 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 680 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3255 "engines/director/lingo/lingo-gr.cpp"
+#line 3268 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 677 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 683 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3263 "engines/director/lingo/lingo-gr.cpp"
+#line 3276 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 681 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 687 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3271 "engines/director/lingo/lingo-gr.cpp"
+#line 3284 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 684 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 690 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3279 "engines/director/lingo/lingo-gr.cpp"
+#line 3292 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 688 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 694 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3287 "engines/director/lingo/lingo-gr.cpp"
+#line 3300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 691 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 697 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3295 "engines/director/lingo/lingo-gr.cpp"
+#line 3308 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 702 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 708 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3301 "engines/director/lingo/lingo-gr.cpp"
+#line 3314 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 703 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 709 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3307 "engines/director/lingo/lingo-gr.cpp"
+#line 3320 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 704 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 710 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3313 "engines/director/lingo/lingo-gr.cpp"
+#line 3326 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 705 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 711 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3322 "engines/director/lingo/lingo-gr.cpp"
+#line 3335 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 709 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 715 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3331 "engines/director/lingo/lingo-gr.cpp"
+#line 3344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 713 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 719 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3340 "engines/director/lingo/lingo-gr.cpp"
+#line 3353 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 721 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 727 "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 3349 "engines/director/lingo/lingo-gr.cpp"
+#line 3362 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 725 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 731 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3358 "engines/director/lingo/lingo-gr.cpp"
+#line 3371 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 729 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 735 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3367 "engines/director/lingo/lingo-gr.cpp"
+#line 3380 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 733 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 739 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3373 "engines/director/lingo/lingo-gr.cpp"
+#line 3386 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 733 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 739 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3382 "engines/director/lingo/lingo-gr.cpp"
+#line 3395 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 763 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 769 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3388 "engines/director/lingo/lingo-gr.cpp"
+#line 3401 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 763 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 769 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory = NULL; }
-#line 3394 "engines/director/lingo/lingo-gr.cpp"
+#line 3407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 764 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 770 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3404 "engines/director/lingo/lingo-gr.cpp"
+#line 3417 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 769 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 775 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3410 "engines/director/lingo/lingo-gr.cpp"
+#line 3423 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 770 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 776 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
-#line 3416 "engines/director/lingo/lingo-gr.cpp"
+#line 3429 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 771 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 777 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg), g_lingo->_currentFactory);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3426 "engines/director/lingo/lingo-gr.cpp"
+#line 3439 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 776 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 782 "engines/director/lingo/lingo-gr.y"
                                                                    {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3435,70 +3448,70 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3439 "engines/director/lingo/lingo-gr.cpp"
+#line 3452 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 784 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 790 "engines/director/lingo/lingo-gr.y"
                                                {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3449 "engines/director/lingo/lingo-gr.cpp"
+#line 3462 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 790 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 796 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3455 "engines/director/lingo/lingo-gr.cpp"
+#line 3468 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 790 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 796 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory = NULL; }
-#line 3462 "engines/director/lingo/lingo-gr.cpp"
+#line 3475 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 793 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 799 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3468 "engines/director/lingo/lingo-gr.cpp"
+#line 3481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 794 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 800 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3474 "engines/director/lingo/lingo-gr.cpp"
+#line 3487 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 795 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 801 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3480 "engines/director/lingo/lingo-gr.cpp"
+#line 3493 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 798 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 804 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3486 "engines/director/lingo/lingo-gr.cpp"
+#line 3499 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 799 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 805 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3492 "engines/director/lingo/lingo-gr.cpp"
+#line 3505 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 801 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 807 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3498 "engines/director/lingo/lingo-gr.cpp"
+#line 3511 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 803 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 809 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3506,122 +3519,122 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3510 "engines/director/lingo/lingo-gr.cpp"
+#line 3523 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 811 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 817 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3516 "engines/director/lingo/lingo-gr.cpp"
+#line 3529 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 812 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 818 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3522 "engines/director/lingo/lingo-gr.cpp"
+#line 3535 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 813 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 819 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3528 "engines/director/lingo/lingo-gr.cpp"
+#line 3541 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 815 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 821 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3534 "engines/director/lingo/lingo-gr.cpp"
+#line 3547 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 816 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 822 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3540 "engines/director/lingo/lingo-gr.cpp"
+#line 3553 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 818 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 824 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3546 "engines/director/lingo/lingo-gr.cpp"
+#line 3559 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 820 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 826 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3552 "engines/director/lingo/lingo-gr.cpp"
+#line 3565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 821 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 827 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3558 "engines/director/lingo/lingo-gr.cpp"
+#line 3571 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 822 "engines/director/lingo/lingo-gr.y"
+  case 174:
+#line 828 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3564 "engines/director/lingo/lingo-gr.cpp"
+#line 3577 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173:
-#line 823 "engines/director/lingo/lingo-gr.y"
+  case 175:
+#line 829 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3570 "engines/director/lingo/lingo-gr.cpp"
+#line 3583 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 174:
-#line 825 "engines/director/lingo/lingo-gr.y"
+  case 176:
+#line 831 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3576 "engines/director/lingo/lingo-gr.cpp"
+#line 3589 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 175:
-#line 826 "engines/director/lingo/lingo-gr.y"
+  case 177:
+#line 832 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3582 "engines/director/lingo/lingo-gr.cpp"
+#line 3595 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 176:
-#line 828 "engines/director/lingo/lingo-gr.y"
+  case 178:
+#line 834 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3588 "engines/director/lingo/lingo-gr.cpp"
+#line 3601 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 177:
-#line 829 "engines/director/lingo/lingo-gr.y"
+  case 179:
+#line 835 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3594 "engines/director/lingo/lingo-gr.cpp"
+#line 3607 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 178:
-#line 831 "engines/director/lingo/lingo-gr.y"
+  case 180:
+#line 837 "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 3603 "engines/director/lingo/lingo-gr.cpp"
+#line 3616 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 179:
-#line 835 "engines/director/lingo/lingo-gr.y"
+  case 181:
+#line 841 "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 3612 "engines/director/lingo/lingo-gr.cpp"
+#line 3625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 180:
-#line 839 "engines/director/lingo/lingo-gr.y"
+  case 182:
+#line 845 "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 3621 "engines/director/lingo/lingo-gr.cpp"
+#line 3634 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3625 "engines/director/lingo/lingo-gr.cpp"
+#line 3638 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3820,7 +3833,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 845 "engines/director/lingo/lingo-gr.y"
+#line 851 "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 c6f7cc5f5e..6029f8761d 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -251,6 +251,9 @@ asgn: tPUT expr tINTO ID 		{
 		g_lingo->code1(LC::c_after);
 		$$ = $expr;
 		delete $ID; }		// D3
+	| tPUT expr tAFTER reference 		{
+		g_lingo->code1(LC::c_after);
+		$$ = $expr; }
 	| tPUT expr tBEFORE ID 		{
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString($ID->c_str());
@@ -258,6 +261,9 @@ asgn: tPUT expr tINTO ID 		{
 		g_lingo->code1(LC::c_before);
 		$$ = $expr;
 		delete $ID; }		// D3
+	| tPUT expr tBEFORE reference 		{
+		g_lingo->code1(LC::c_before);
+		$$ = $expr; }
 	| tSET ID tEQ expr			{
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString($ID->c_str());




More information about the Scummvm-git-logs mailing list