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

sev- sev at scummvm.org
Sun Dec 1 22:22:57 UTC 2019


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

Summary:
9084dcc70d DIRECTOR: LINGO: Fix syntax of repeatwith operator
c33a4f9d8d DIRECTOR: LINGO: Implement extened 'on' clause syntax


Commit: 9084dcc70df87d4447c078fd2ad4aaf695a7aed2
    https://github.com/scummvm/scummvm/commit/9084dcc70df87d4447c078fd2ad4aaf695a7aed2
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-01T23:21:03+01:00

Commit Message:
DIRECTOR: LINGO: Fix syntax of repeatwith operator

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index f8f973f..fa08d82 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -540,7 +540,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  127
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1757
+#define YYLAST   1771
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  106
@@ -549,7 +549,7 @@ union yyalloc
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  170
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  367
+#define YYNSTATES  365
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -605,22 +605,22 @@ static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     7,     9,    12,    14,    16,    18,    20,
       21,    23,    25,    27,    32,    37,    42,    47,    52,    57,
-      63,    68,    73,    79,    81,    83,    85,    87,    95,   106,
-     118,   122,   129,   134,   141,   151,   161,   171,   178,   189,
-     200,   201,   205,   208,   210,   213,   215,   222,   224,   231,
-     238,   242,   243,   244,   247,   251,   253,   255,   256,   257,
-     259,   262,   265,   269,   271,   273,   275,   277,   279,   281,
-     283,   286,   289,   294,   299,   301,   303,   306,   308,   312,
-     316,   320,   324,   328,   332,   336,   340,   344,   348,   352,
-     356,   360,   363,   367,   371,   375,   379,   382,   385,   389,
-     393,   398,   403,   408,   415,   420,   427,   432,   439,   444,
-     451,   454,   457,   459,   461,   464,   466,   469,   472,   475,
-     477,   480,   483,   485,   488,   493,   498,   505,   510,   513,
-     517,   519,   523,   525,   529,   531,   535,   538,   541,   544,
-     547,   551,   554,   557,   559,   563,   566,   569,   572,   576,
-     579,   580,   584,   585,   594,   597,   598,   607,   615,   622,
-     625,   626,   628,   632,   637,   638,   641,   642,   644,   648,
-     650
+      63,    68,    73,    79,    81,    83,    85,    87,    93,   104,
+     116,   120,   127,   132,   139,   149,   159,   169,   176,   187,
+     198,   199,   203,   206,   208,   211,   213,   220,   222,   229,
+     236,   240,   241,   242,   245,   249,   251,   253,   254,   255,
+     257,   260,   263,   267,   269,   271,   273,   275,   277,   279,
+     281,   284,   287,   292,   297,   299,   301,   304,   306,   310,
+     314,   318,   322,   326,   330,   334,   338,   342,   346,   350,
+     354,   358,   361,   365,   369,   373,   377,   380,   383,   387,
+     391,   396,   401,   406,   413,   418,   425,   430,   437,   442,
+     449,   452,   455,   457,   459,   462,   464,   467,   470,   473,
+     475,   478,   481,   483,   486,   491,   496,   503,   508,   511,
+     515,   517,   521,   523,   527,   529,   533,   536,   539,   542,
+     545,   549,   552,   555,   557,   561,   564,   567,   570,   574,
+     577,   578,   582,   583,   592,   595,   596,   605,   613,   620,
+     623,   624,   626,   630,   635,   636,   639,   640,   642,   646,
+     648
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -634,64 +634,64 @@ static const yytype_int16 yyrhs[] =
      134,    -1,    51,    13,    91,   134,    -1,    51,    14,   134,
       91,   134,    -1,    51,    28,    54,   134,    -1,    51,    13,
       54,   134,    -1,    51,    14,   134,    54,   134,    -1,   134,
-      -1,   136,    -1,   114,    -1,   116,    -1,   125,    99,   122,
-     100,   131,   130,    32,    -1,   126,    91,   134,   130,    54,
-     134,   130,   131,   130,    32,    -1,   126,    91,   134,   130,
-      34,    54,   134,   130,   131,   130,    32,    -1,   132,   114,
-     130,    -1,   133,   134,   108,   131,   130,    32,    -1,   133,
-     134,    54,   134,    -1,   127,   122,   109,   131,   130,    32,
-      -1,   127,   122,   109,   131,   130,   110,   131,   130,    32,
-      -1,   127,   122,   109,   131,   130,   129,   118,   130,    32,
-      -1,   127,   122,   109,   131,   130,   110,   129,   114,   130,
-      -1,   127,   122,    52,   129,   114,   130,    -1,   127,   122,
-      52,   129,   114,   130,   110,   129,   114,   130,    -1,   127,
-     122,    52,   129,   114,   130,   119,   130,   117,   130,    -1,
-      -1,   110,   129,   114,    -1,   118,   121,    -1,   121,    -1,
-     119,   120,    -1,   120,    -1,   128,   122,    52,   129,   115,
-     130,    -1,   119,    -1,   128,   122,    52,   129,   131,   130,
-      -1,   128,   122,    53,   129,   131,   130,    -1,   123,   134,
-     124,    -1,    -1,    -1,    50,    57,    -1,    50,    56,    28,
-      -1,    41,    -1,   111,    -1,    -1,    -1,   129,    -1,   131,
-     108,    -1,   131,   115,    -1,    55,    28,    52,    -1,    87,
-      -1,    12,    -1,    15,    -1,    31,    -1,    29,    -1,   135,
-      -1,    23,    -1,    24,   134,    -1,    25,   153,    -1,    25,
-      99,   153,   100,    -1,    28,    99,   152,   100,    -1,    28,
-      -1,    13,    -1,    14,   134,    -1,   113,    -1,   134,    93,
-     134,    -1,   134,    94,   134,    -1,   134,    95,   134,    -1,
-     134,    96,   134,    -1,   134,    74,   134,    -1,   134,   101,
-     134,    -1,   134,   102,   134,    -1,   134,    69,   134,    -1,
-     134,    70,   134,    -1,   134,    65,   134,    -1,   134,    66,
-     134,    -1,   134,    71,   134,    -1,   134,    72,   134,    -1,
-      73,   134,    -1,   134,    92,   134,    -1,   134,    77,   134,
-      -1,   134,    78,   134,    -1,   134,    79,   134,    -1,    93,
-     134,    -1,    94,   134,    -1,    99,   134,   100,    -1,   103,
-     152,   104,    -1,    84,   134,    85,   134,    -1,    84,   134,
-      86,   134,    -1,    80,   134,    47,   134,    -1,    80,   134,
-      54,   134,    47,   134,    -1,    81,   134,    47,   134,    -1,
-      81,   134,    54,   134,    47,   134,    -1,    82,   134,    47,
-     134,    -1,    82,   134,    54,   134,    47,   134,    -1,    83,
-     134,    47,   134,    -1,    83,   134,    54,   134,    47,   134,
-      -1,    27,   134,    -1,    49,   134,    -1,   140,    -1,   143,
-      -1,    37,    50,    -1,    37,    -1,    39,   137,    -1,    88,
-     138,    -1,    64,   139,    -1,    17,    -1,    19,   134,    -1,
-      18,   134,    -1,    18,    -1,    20,   153,    -1,    20,    99,
-     153,   100,    -1,    90,    99,    28,   100,    -1,    90,    99,
-      28,   105,   152,   100,    -1,    61,   134,    56,   134,    -1,
-      61,   134,    -1,    21,    28,   152,    -1,    28,    -1,   137,
-     105,    28,    -1,    28,    -1,   138,   105,    28,    -1,    28,
-      -1,   139,   105,    28,    -1,    40,    43,    -1,    40,    46,
-      -1,    40,    48,    -1,    40,   141,    -1,    40,   141,   142,
-      -1,    40,   142,    -1,    38,   134,    -1,   134,    -1,    47,
-      45,   134,    -1,    45,   134,    -1,    62,    63,    -1,    62,
-     141,    -1,    62,   141,   142,    -1,    62,   142,    -1,    -1,
-      33,   144,   152,    -1,    -1,    44,    28,   146,   129,   149,
-     108,   150,   131,    -1,    59,    28,    -1,    -1,    60,    28,
-     147,   129,   149,   108,   150,   131,    -1,   148,   129,   149,
-     108,   150,   131,    32,    -1,   148,   129,   149,   108,   150,
-     131,    -1,    89,    28,    -1,    -1,    28,    -1,   149,   105,
-      28,    -1,   149,   108,   105,    28,    -1,    -1,    28,   153,
-      -1,    -1,   134,    -1,   152,   105,   134,    -1,   134,    -1,
-     153,   105,   134,    -1
+      -1,   136,    -1,   114,    -1,   116,    -1,   125,   122,   131,
+     130,    32,    -1,   126,    91,   134,   130,    54,   134,   130,
+     131,   130,    32,    -1,   126,    91,   134,   130,    34,    54,
+     134,   130,   131,   130,    32,    -1,   132,   114,   130,    -1,
+     133,   134,   108,   131,   130,    32,    -1,   133,   134,    54,
+     134,    -1,   127,   122,   109,   131,   130,    32,    -1,   127,
+     122,   109,   131,   130,   110,   131,   130,    32,    -1,   127,
+     122,   109,   131,   130,   129,   118,   130,    32,    -1,   127,
+     122,   109,   131,   130,   110,   129,   114,   130,    -1,   127,
+     122,    52,   129,   114,   130,    -1,   127,   122,    52,   129,
+     114,   130,   110,   129,   114,   130,    -1,   127,   122,    52,
+     129,   114,   130,   119,   130,   117,   130,    -1,    -1,   110,
+     129,   114,    -1,   118,   121,    -1,   121,    -1,   119,   120,
+      -1,   120,    -1,   128,   122,    52,   129,   115,   130,    -1,
+     119,    -1,   128,   122,    52,   129,   131,   130,    -1,   128,
+     122,    53,   129,   131,   130,    -1,   123,   134,   124,    -1,
+      -1,    -1,    50,    57,    -1,    50,    56,    28,    -1,    41,
+      -1,   111,    -1,    -1,    -1,   129,    -1,   131,   108,    -1,
+     131,   115,    -1,    55,    28,    52,    -1,    87,    -1,    12,
+      -1,    15,    -1,    31,    -1,    29,    -1,   135,    -1,    23,
+      -1,    24,   134,    -1,    25,   153,    -1,    25,    99,   153,
+     100,    -1,    28,    99,   152,   100,    -1,    28,    -1,    13,
+      -1,    14,   134,    -1,   113,    -1,   134,    93,   134,    -1,
+     134,    94,   134,    -1,   134,    95,   134,    -1,   134,    96,
+     134,    -1,   134,    74,   134,    -1,   134,   101,   134,    -1,
+     134,   102,   134,    -1,   134,    69,   134,    -1,   134,    70,
+     134,    -1,   134,    65,   134,    -1,   134,    66,   134,    -1,
+     134,    71,   134,    -1,   134,    72,   134,    -1,    73,   134,
+      -1,   134,    92,   134,    -1,   134,    77,   134,    -1,   134,
+      78,   134,    -1,   134,    79,   134,    -1,    93,   134,    -1,
+      94,   134,    -1,    99,   134,   100,    -1,   103,   152,   104,
+      -1,    84,   134,    85,   134,    -1,    84,   134,    86,   134,
+      -1,    80,   134,    47,   134,    -1,    80,   134,    54,   134,
+      47,   134,    -1,    81,   134,    47,   134,    -1,    81,   134,
+      54,   134,    47,   134,    -1,    82,   134,    47,   134,    -1,
+      82,   134,    54,   134,    47,   134,    -1,    83,   134,    47,
+     134,    -1,    83,   134,    54,   134,    47,   134,    -1,    27,
+     134,    -1,    49,   134,    -1,   140,    -1,   143,    -1,    37,
+      50,    -1,    37,    -1,    39,   137,    -1,    88,   138,    -1,
+      64,   139,    -1,    17,    -1,    19,   134,    -1,    18,   134,
+      -1,    18,    -1,    20,   153,    -1,    20,    99,   153,   100,
+      -1,    90,    99,    28,   100,    -1,    90,    99,    28,   105,
+     152,   100,    -1,    61,   134,    56,   134,    -1,    61,   134,
+      -1,    21,    28,   152,    -1,    28,    -1,   137,   105,    28,
+      -1,    28,    -1,   138,   105,    28,    -1,    28,    -1,   139,
+     105,    28,    -1,    40,    43,    -1,    40,    46,    -1,    40,
+      48,    -1,    40,   141,    -1,    40,   141,   142,    -1,    40,
+     142,    -1,    38,   134,    -1,   134,    -1,    47,    45,   134,
+      -1,    45,   134,    -1,    62,    63,    -1,    62,   141,    -1,
+      62,   141,   142,    -1,    62,   142,    -1,    -1,    33,   144,
+     152,    -1,    -1,    44,    28,   146,   129,   149,   108,   150,
+     131,    -1,    59,    28,    -1,    -1,    60,    28,   147,   129,
+     149,   108,   150,   131,    -1,   148,   129,   149,   108,   150,
+     131,    32,    -1,   148,   129,   149,   108,   150,   131,    -1,
+      89,    28,    -1,    -1,    28,    -1,   149,   105,    28,    -1,
+     149,   108,   105,    28,    -1,    -1,    28,   153,    -1,    -1,
+     134,    -1,   152,   105,   134,    -1,   134,    -1,   153,   105,
+     134,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -797,7 +797,7 @@ static const yytype_uint8 yyr2[] =
 {
        0,     2,     3,     1,     2,     1,     1,     1,     1,     0,
        1,     1,     1,     4,     4,     4,     4,     4,     4,     5,
-       4,     4,     5,     1,     1,     1,     1,     7,    10,    11,
+       4,     4,     5,     1,     1,     1,     1,     5,    10,    11,
        3,     6,     4,     6,     9,     9,     9,     6,    10,    10,
        0,     3,     2,     1,     2,     1,     6,     1,     6,     6,
        3,     0,     0,     2,     3,     1,     1,     0,     0,     1,
@@ -825,102 +825,102 @@ static const yytype_uint8 yydefact[] =
        0,     0,    55,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    63,
        0,     0,     0,     0,     0,     0,   166,     0,     3,    77,
-      25,    12,    26,     0,     0,    51,     0,     0,    23,    68,
+      25,    12,    26,    51,     0,    51,     0,     0,    23,    68,
       24,   112,   113,    10,    57,    11,     5,     4,    74,     0,
       76,   121,   120,     0,   169,   123,   166,    70,     0,    71,
      110,   166,   165,   166,   114,   130,   116,     0,   136,     0,
      137,     0,   138,   143,   139,   141,   152,   111,     0,    53,
        0,     0,     0,     0,   154,   155,   128,   146,   147,   149,
      134,   118,    91,     0,     0,     0,     0,     0,   132,   117,
-     159,     0,    96,    97,     0,   167,     0,     1,     9,    51,
+     159,     0,    96,    97,     0,   167,     0,     1,     9,    57,
        0,     0,     0,    58,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,   160,   166,     0,   169,     0,     0,   129,     0,
      167,     0,   151,     0,   142,   145,     0,   140,    57,     0,
        0,     0,    54,     0,     0,     0,     0,     0,    62,    57,
        0,   148,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    98,    99,     0,     2,     0,
-      58,    57,     6,    57,    52,    30,     0,    57,    87,    88,
-      85,    86,    89,    90,    82,    93,    94,    95,    92,    78,
-      79,    80,    81,    83,    84,   161,     0,   124,   170,    72,
-      73,   131,   144,   160,    13,    14,    15,    16,    21,    18,
-       0,     0,    20,    17,   160,   127,   135,   102,     0,   104,
-       0,   106,     0,   108,     0,   100,   101,   133,   125,   166,
-     168,    57,     0,     0,    59,    58,    50,    32,    58,     0,
-     164,     0,    22,    19,     0,     0,     0,     0,     0,     0,
-      58,     0,     0,    58,    60,    61,    57,     0,   162,     0,
-      57,   164,   164,   103,   105,   107,   109,   126,     0,     0,
-      58,    37,    33,     7,    57,     0,    31,   163,   158,    57,
-      57,    27,    58,    57,     8,    57,    56,    58,    45,    51,
-      59,    58,    58,    47,    43,    51,   157,   153,   156,    57,
-      58,     0,    44,    40,     0,    58,     0,    42,     0,     0,
-      58,     0,    58,    57,    58,    57,    36,    34,    35,    57,
-      57,     0,    28,    38,     0,    39,     0,    57,    57,    29,
-      41,    58,    58,    58,    46,    48,    49
+       0,     0,     0,     0,     0,    98,    99,     0,     2,    59,
+      58,    52,    58,    57,     6,    57,    30,     0,    57,    87,
+      88,    85,    86,    89,    90,    82,    93,    94,    95,    92,
+      78,    79,    80,    81,    83,    84,   161,     0,   124,   170,
+      72,    73,   131,   144,   160,    13,    14,    15,    16,    21,
+      18,     0,     0,    20,    17,   160,   127,   135,   102,     0,
+     104,     0,   106,     0,   108,     0,   100,   101,   133,   125,
+     166,   168,    60,    61,     0,    50,     0,     0,    58,    32,
+      58,     0,   164,     0,    22,    19,     0,     0,     0,     0,
+       0,     0,    27,     0,     0,    58,    57,     0,   162,     0,
+      57,   164,   164,   103,   105,   107,   109,   126,     0,    58,
+      37,    33,     7,    57,     0,    31,   163,   158,    57,    57,
+      58,    57,     8,    57,    56,    58,    45,    51,    59,    58,
+      58,    47,    43,    51,   157,   153,   156,    57,    58,     0,
+      44,    40,     0,    58,     0,    42,     0,     0,    58,     0,
+      58,    57,    58,    57,    36,    34,    35,    57,    57,     0,
+      28,    38,     0,    39,     0,    57,    57,    29,    41,    58,
+      58,    58,    46,    48,    49
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    47,   284,   203,   304,   316,    48,    49,    50,   285,
-      52,   344,   322,   323,   318,   324,   131,   132,   266,    53,
-      54,    55,   319,   264,   205,   265,    56,    57,    58,    59,
+      -1,    47,   262,   205,   303,   314,    48,    49,    50,   263,
+      52,   342,   320,   321,   316,   322,   129,   130,   265,    53,
+      54,    55,   317,   199,   206,   200,    56,    57,    58,    59,
       60,    86,   119,   111,    61,    94,    95,    62,    83,    63,
-     168,   179,    64,   226,   290,    65,   161,    75
+     168,   179,    64,   227,   290,    65,   161,    75
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -289
+#define YYPACT_NINF -290
 static const yytype_int16 yypact[] =
 {
-     358,   -95,  -289,  -289,  1015,  -289,  -289,  1015,  1015,  1055,
-      15,  -289,  1015,  1128,  1015,  1168,  -289,  -289,  -289,   -19,
-      39,   901,  -289,    43,  1015,    52,    42,    49,    57,    59,
-    1015,   942,    67,  1015,  1015,  1015,  1015,  1015,  1015,  -289,
-      73,    75,     7,  1015,  1015,  1015,  1015,     9,  -289,  -289,
-    -289,  -289,  -289,    30,    66,  -289,   818,  1015,  1621,  -289,
-    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,    35,  1015,
-    1621,  1621,  1621,  1015,  1621,    58,  1015,  1621,  1015,    58,
-    1621,  1015,    58,  1015,  -289,  -289,    60,  1015,  -289,  1015,
-    -289,   119,  -289,  1621,    18,  -289,  -289,   156,   138,  -289,
-     -40,  1015,   -34,   115,  -289,  -289,  1515,  -289,    18,  -289,
-    -289,    63,   -48,  1209,  1243,  1277,  1311,  1549,  -289,    77,
-    -289,   143,   -48,   -48,  1583,  1621,     8,  -289,   450,  -289,
-    1015,    70,  1015,  -289,   794,  1015,  1015,  1015,  1015,  1015,
-    1015,  1015,  1015,  1015,  1015,  1015,  1015,  1015,  1015,  1015,
-    1015,  1015,   144,  1015,   156,  1583,   -31,  1015,    79,   -27,
-    1583,   -25,    79,   147,  1621,  1621,  1015,  -289,  -289,   104,
-    1015,  1015,  -289,  1015,  1015,  1481,  1015,  1015,  -289,  -289,
-    1015,  -289,   150,  1015,  1015,  1015,  1015,  1015,  1015,  1015,
-    1015,  1015,  1015,   157,   -11,  -289,  -289,  1015,  -289,    97,
-    1621,  -289,  -289,  -289,  1621,  -289,  1015,  -289,    23,    23,
-      23,    23,  1655,  1655,   -48,  1621,    23,    23,   217,    25,
-      25,   -48,   -48,  1621,  1621,  -289,   -46,  -289,  1621,  -289,
-    -289,  -289,  1621,   144,  -289,  -289,  1621,  1621,  1621,  1621,
-    1015,  1015,  1621,  1621,   144,  1621,  -289,  1621,  1345,  1621,
-    1379,  1621,  1413,  1621,  1447,  1621,  1621,  -289,  -289,  1015,
-    1621,  -289,    -4,   818,  -289,   634,  -289,  1621,   634,   171,
-      96,   -46,  1621,  1621,   -46,  1015,  1015,  1015,  1015,    -7,
-     634,   151,  1015,  -289,  -289,  -289,   -30,   174,  -289,   179,
-    -289,    96,    96,  1621,  1621,  1621,  1621,  -289,   178,  1015,
-    1621,   -32,  -289,  -289,  -289,   175,  -289,  -289,   542,  -289,
-    -289,  -289,  1621,  -289,  -289,  -289,  -289,   175,  -289,  -289,
-     818,   634,   175,   175,  -289,  -289,  -289,   634,   634,  -289,
-     634,   818,  -289,   154,   161,  -289,   182,  -289,   183,    84,
-     634,   184,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
-    -289,   185,  -289,  -289,   818,  -289,   726,   726,  -289,  -289,
-    -289,  -289,   634,   634,  -289,  -289,  -289
+     344,   -33,  -290,  -290,  1001,  -290,  -290,  1001,  1001,  1041,
+      20,  -290,  1001,  1114,  1001,  1154,  -290,  -290,  -290,    23,
+      48,   887,  -290,    59,  1001,    39,    43,    69,    75,    85,
+    1001,   928,    87,  1001,  1001,  1001,  1001,  1001,  1001,  -290,
+     101,   102,    34,  1001,  1001,  1001,  1001,     6,  -290,  -290,
+    -290,  -290,  -290,  -290,    44,  -290,   804,  1001,  1635,  -290,
+    -290,  -290,  -290,  -290,  -290,  -290,  -290,  -290,    35,  1001,
+    1635,  1635,  1635,  1001,  1635,    50,  1001,  1635,  1001,    50,
+    1635,  1001,    50,  1001,  -290,  -290,    51,  1001,  -290,  1001,
+    -290,   112,  -290,  1635,    16,  -290,  -290,  1189,   132,  -290,
+     -42,  1001,   -37,   109,  -290,  -290,  1529,  -290,    16,  -290,
+    -290,    57,   -50,  1223,  1257,  1291,  1325,  1563,  -290,    58,
+    -290,   136,   -50,   -50,  1597,  1635,    17,  -290,   436,  -290,
+    1001,  1001,    53,  -290,   780,  1001,  1001,  1001,  1001,  1001,
+    1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,
+    1001,  1001,   137,  1001,  1189,  1597,   -82,  1001,    61,   -36,
+    1597,   -22,    61,   140,  1635,  1635,  1001,  -290,  -290,    92,
+    1001,  1001,  -290,  1001,  1001,  1495,  1001,  1001,  -290,  -290,
+    1001,  -290,   141,  1001,  1001,  1001,  1001,  1001,  1001,  1001,
+    1001,  1001,  1001,   145,   -20,  -290,  -290,  1001,  -290,  -290,
+     620,  1635,  1635,  -290,  -290,  -290,  -290,  1001,  -290,    15,
+      15,    15,    15,  1669,  1669,   -50,  1635,    15,    15,   164,
+      -2,    -2,   -50,   -50,  1635,  1635,  -290,   -45,  -290,  1635,
+    -290,  -290,  -290,  1635,   137,  -290,  -290,  1635,  1635,  1635,
+    1635,  1001,  1001,  1635,  1635,   137,  1635,  -290,  1635,  1359,
+    1635,  1393,  1635,  1427,  1635,  1461,  1635,  1635,  -290,  -290,
+    1001,  1635,  -290,  -290,   144,  -290,   -13,   804,   620,  1635,
+     620,   151,    90,   -45,  1635,  1635,   -45,  1001,  1001,  1001,
+    1001,    18,  -290,   146,  1001,  -290,    -8,   167,  -290,   175,
+    -290,    90,    90,  1635,  1635,  1635,  1635,  -290,  1001,  1635,
+     -29,  -290,  -290,  -290,   169,  -290,  -290,   528,  -290,  -290,
+    1635,  -290,  -290,  -290,  -290,   169,  -290,  -290,   804,   620,
+     169,   169,  -290,  -290,  -290,   620,   620,  -290,   620,   804,
+    -290,   148,   155,  -290,   177,  -290,   178,    72,   620,   181,
+    -290,  -290,  -290,  -290,  -290,  -290,  -290,  -290,  -290,   182,
+    -290,  -290,   804,  -290,   712,   712,  -290,  -290,  -290,  -290,
+     620,   620,  -290,  -290,  -290
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -289,  -289,    21,  -289,  -288,  -289,    91,  -289,   -55,     0,
-    -289,  -289,  -289,   -81,  -259,   -99,  -123,  -289,  -289,  -289,
-    -289,  -289,  -261,     2,     4,  -199,  -289,  -289,     3,    55,
-    -289,  -289,  -289,  -289,  -289,   198,   -12,  -289,  -289,  -289,
-    -289,  -289,  -289,  -212,  -130,  -289,   -41,    10
+    -290,  -290,    19,  -290,  -289,  -290,    88,  -290,   -55,     0,
+    -290,  -290,  -290,   -85,  -253,  -102,   -53,  -290,  -290,  -290,
+    -290,  -290,  -261,    -9,   -88,  -107,  -290,  -290,     1,    52,
+    -290,  -290,  -290,  -290,  -290,   188,   -27,  -290,  -290,  -290,
+    -290,  -290,  -290,  -215,  -165,  -290,   -43,    13
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -930,315 +930,315 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -10
 static const yytype_int16 yytable[] =
 {
-      51,   133,   302,    66,   314,   126,   199,    70,   268,   127,
-      71,    72,    74,   315,   173,    77,    74,    80,    74,   109,
-     176,   271,    67,    79,    93,    82,   303,    97,   303,   142,
-     281,    84,   274,   106,    93,   158,   112,   113,   114,   115,
-     116,   117,   162,    76,   325,   343,   122,   123,   124,   125,
-     282,   174,    66,   150,   151,   100,   101,   177,   332,   269,
-     134,   325,   280,    89,   332,    91,   152,    85,   128,   227,
-     102,    96,   154,   229,   157,   230,   155,   103,   157,   125,
-     197,   155,   167,   156,   160,   104,   125,   105,   159,   258,
-     164,   308,   165,   297,   259,   110,   181,   141,   197,   141,
-     142,   118,   142,   120,   175,   321,   121,    66,    98,    99,
-     327,   328,   196,   197,   330,   145,   146,   147,   148,   149,
-     148,   149,   201,   202,   150,   151,   150,   151,    51,   129,
-     340,    14,   234,   200,   153,   204,   349,   350,   208,   209,
-     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   207,   125,   130,   362,   363,
-     228,   309,   310,   157,   166,   163,   172,   178,   182,   232,
-     233,   194,   225,   236,   237,   231,   238,   239,   246,   242,
-     243,   244,   193,   245,   197,   257,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   334,   261,   169,   288,
-     260,   289,   339,   263,   262,   299,   306,   307,   283,   267,
-     311,   314,   303,   345,   347,   348,   352,   359,   279,   198,
-     317,   135,   136,   337,   235,   137,   138,   139,   140,   108,
-     141,   170,   171,   142,   143,   144,     0,     0,     0,     0,
-       0,     0,     0,   272,   273,     0,     0,   270,   145,   146,
-     147,   148,   149,     0,     0,     0,     0,   150,   151,     0,
-       0,     0,   125,     0,     0,   335,     0,     0,     0,   286,
-       0,     0,   287,     0,     0,     0,   342,     0,   293,   294,
-     295,   296,     0,     0,   298,   300,     0,   301,   305,     0,
-       0,   141,   291,     0,   142,   292,     0,     0,     0,   360,
-       0,     0,   312,     0,   313,     0,   320,     0,     0,     0,
-     146,   147,   148,   149,     0,     0,   329,   331,   150,   151,
-       0,   333,     0,     0,     0,   336,   338,     0,     0,     0,
-       0,     0,     0,     0,   341,     0,     0,     0,     0,   346,
-       0,     0,     0,     0,   351,   354,   353,   356,   355,     0,
-       0,   357,   358,     0,     0,     0,   361,   361,    -9,     1,
-       0,     0,     0,     0,     0,   364,   365,   366,     0,     0,
+      51,   133,   132,   126,   109,    70,   127,   312,    71,    72,
+      74,   313,   173,    77,    74,    80,    74,   176,   228,   273,
+      67,   283,    93,   157,   301,    97,    79,   142,    82,   302,
+     276,   106,    93,   158,   112,   113,   114,   115,   116,   117,
+     162,   284,   341,   323,   122,   123,   124,   125,    76,   174,
+     302,   150,   151,    66,   177,   152,   100,   101,   134,   323,
+     271,    89,   330,    91,   230,    66,   128,   167,   330,   157,
+     154,   102,   141,    84,   155,   142,    85,   125,   231,   155,
+     259,   181,   160,   197,   125,   260,   156,    96,   164,   141,
+     165,   159,   142,   148,   149,    98,    99,   103,   268,   150,
+     151,   270,   175,   104,    66,   203,   204,   145,   146,   147,
+     148,   149,   264,   105,   266,   110,   150,   151,   297,    14,
+     235,   196,   197,   197,   347,   348,   308,   309,    51,   118,
+     120,   201,   202,   121,   153,   131,   209,   210,   211,   212,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   208,   125,   157,   163,   166,   229,   234,
+     172,   178,   182,   193,   194,   226,   197,   233,   232,   247,
+     245,   237,   238,   258,   239,   240,   282,   243,   244,   288,
+     286,   246,   287,   307,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   267,   289,   319,   300,   261,   305,
+     298,   325,   326,   306,   328,   312,   302,   343,   269,   345,
+     346,   311,   285,   350,   357,   315,   198,   281,   335,   108,
+     338,   236,   327,     0,     0,     0,     0,   331,     0,     0,
+       0,   334,   336,     0,     0,     0,     0,     0,   141,     0,
+     339,   142,   274,   275,     0,   344,   272,     0,   360,   361,
+     349,     0,   351,     0,   353,     0,     0,   146,   147,   148,
+     149,   125,     0,   333,   332,   150,   151,     0,     0,     0,
+     337,   362,   363,   364,   340,     0,     0,   304,   293,   294,
+     295,   296,     0,     0,     0,   299,     0,     0,     0,     0,
+       0,     0,   291,     0,   318,   292,     0,   358,     0,   310,
+       0,     0,     0,     0,   329,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   352,     0,   354,     0,     0,     0,   355,   356,
+       0,     0,     0,     0,    -9,     1,     0,     0,     0,     0,
+       0,     0,     0,     0,   359,   359,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
+       0,    14,    15,    16,     0,    17,     0,    18,     0,     0,
+       0,    19,     0,    20,    21,    22,     0,     0,    23,     0,
+       0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
+       0,     0,     0,    28,    29,    30,    31,     0,    32,     0,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
+       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
+       0,    39,    40,    41,    42,     0,     0,    43,    44,     0,
+       0,     0,    -9,    45,     0,     0,     0,    46,     2,     3,
+       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
+      12,    13,     0,    14,    15,    16,     0,    17,     0,    18,
+       0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
+      23,     0,     0,     0,     0,    24,    25,    26,     0,     0,
+       0,    27,     0,     0,     0,    28,    29,    30,    31,     0,
+      32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
+      38,     0,     0,    39,    40,    41,    42,     0,     0,    43,
+      44,     0,     0,     0,     0,    45,     0,     0,     0,    46,
        2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-       0,    11,    12,    13,     0,    14,    15,    16,     0,    17,
-       0,    18,     0,     0,     0,    19,     0,    20,    21,    22,
-       0,     0,    23,     0,     0,     0,     0,    24,    25,    26,
-       0,     0,     0,    27,     0,     0,     0,    28,    29,    30,
+       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
+     324,    18,     0,     0,     0,    19,     0,    20,    21,    22,
+       0,     0,     0,     0,     0,     0,     0,    24,    25,    26,
+       0,     0,     0,    27,     0,     0,     0,     0,     0,    30,
       31,     0,    32,     0,     0,     0,     0,     0,     0,     0,
        0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,    39,    40,    41,    42,     0,
-       0,    43,    44,     0,     0,     0,    -9,    45,     0,     0,
+      36,    37,    38,     0,     0,    39,    40,     0,    42,     0,
+       0,    43,    44,     0,     0,     0,    66,    45,     0,     0,
        0,    46,     2,     3,     4,     5,     0,     6,     7,     8,
-       9,    10,     0,    11,    12,    13,     0,    14,    15,    16,
+       9,    10,     0,    11,    12,    13,     0,    14,    68,    16,
        0,    17,     0,    18,     0,     0,     0,    19,     0,    20,
-      21,    22,     0,     0,    23,     0,     0,     0,     0,    24,
-      25,    26,     0,     0,     0,    27,     0,     0,     0,    28,
-      29,    30,    31,     0,    32,     0,     0,     0,     0,     0,
+      21,    22,     0,     0,     0,     0,     0,     0,     0,    24,
+      25,    26,     0,     0,     0,    27,     0,     0,     0,     0,
+       0,    30,    31,     0,    32,     0,     0,     0,     0,     0,
        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-      34,    35,    36,    37,    38,     0,     0,    39,    40,    41,
-      42,     0,     0,    43,    44,     0,     0,     0,     0,    45,
+      34,    35,    36,    37,    38,     0,     0,    39,    40,     0,
+      42,     0,     0,    43,    44,     0,     0,     0,    66,    45,
        0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
        7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,   326,    18,     0,     0,     0,    19,
+      68,    16,     0,    17,     0,    18,     0,     0,     0,    19,
        0,    20,    21,    22,     0,     0,     0,     0,     0,     0,
        0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
        0,     0,     0,    30,    31,     0,    32,     0,     0,     0,
        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
        0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
       40,     0,    42,     0,     0,    43,    44,     0,     0,     0,
-      66,    45,     0,     0,     0,    46,     2,     3,     4,     5,
+       0,    45,     0,     0,     0,    46,     2,     3,     4,     5,
        0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    68,    16,     0,    17,     0,    18,     0,     0,
-       0,    19,     0,    20,    21,    22,     0,     0,     0,     0,
-       0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
+       0,    14,    68,    16,   207,    17,     0,    18,     0,     0,
+       0,    19,     0,    20,    21,   135,   136,     0,     0,   137,
+     138,   139,   140,    24,   141,    26,     0,   142,   143,   144,
        0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
-       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
-       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,    39,    40,     0,    42,     0,     0,    43,    44,     0,
-       0,     0,    66,    45,     0,     0,     0,    46,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    68,    16,     0,    17,     0,    18,
-       0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
-       0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
-       0,    27,     0,     0,     0,     0,     0,    30,    31,     0,
-      32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
-       0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     0,     0,    39,    40,     0,    42,     0,     0,    43,
-      44,     0,     0,     0,     0,    45,     0,     0,     0,    46,
-       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-       0,    11,    12,    13,     0,    14,    68,    16,   206,    17,
-       0,    18,     0,     0,     0,    19,     0,    20,    21,   135,
-     136,     0,     0,   137,   138,   139,   140,    24,   141,    26,
-       0,   142,   143,   144,     0,     0,     0,     0,     0,    30,
-      31,     0,    32,     0,     0,     0,   145,   146,   147,   148,
-     149,    33,    66,     0,     0,   150,   151,     0,    34,    35,
-      36,    37,    38,     0,     0,     0,    40,     0,    42,     0,
-       0,    43,    44,     2,     3,     4,     5,    45,     0,     0,
-       0,    46,     0,     0,    11,    12,    13,     0,    14,    68,
-      16,     0,    17,     0,     0,     0,     0,     0,     0,    87,
-       0,     0,     0,     0,    88,     0,    89,    90,    91,    92,
-      69,     0,    26,     0,     2,     3,     4,     5,     0,     0,
-       0,     0,     0,     0,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,    33,     0,     0,     0,     0,     0,
-      87,    34,    35,    36,    37,    38,     0,    89,     0,    91,
-       0,    69,     0,    26,    43,    44,     0,     0,     0,     0,
-      45,     0,     0,     0,    46,   107,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     2,     3,     4,
-       5,     0,     0,     0,     0,    43,    44,     0,    11,    12,
-      13,    45,    14,    68,    16,    46,    17,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    69,     0,    26,     2,     3,     4,
-       5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-      13,     0,    14,    68,    16,     0,    17,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,     0,     0,    69,     0,    26,     0,    43,    44,
-       0,     0,     0,     0,    45,     0,     0,     0,    46,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       2,     3,     4,     5,     0,     0,     0,     0,    43,    44,
-       0,    11,    12,    13,    73,    14,    68,    16,    46,    17,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    69,     0,    26,
+       0,     0,   145,   146,   147,   148,   149,    33,    66,     0,
+       0,   150,   151,     0,    34,    35,    36,    37,    38,     0,
+       0,     0,    40,     0,    42,     0,     0,    43,    44,     2,
+       3,     4,     5,    45,     0,     0,     0,    46,     0,     0,
+      11,    12,    13,     0,    14,    68,    16,     0,    17,     0,
+       0,     0,     0,     0,     0,    87,     0,     0,     0,     0,
+      88,     0,    89,    90,    91,    92,    69,     0,    26,     0,
        2,     3,     4,     5,     0,     0,     0,     0,     0,     0,
        0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
+      33,     0,     0,     0,     0,     0,    87,    34,    35,    36,
+      37,    38,     0,    89,     0,    91,     0,    69,     0,    26,
+      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
+      46,   107,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,     0,     0,    69,     0,    26,
-       0,    43,    44,     0,     0,     0,     0,    78,     0,     0,
-       0,    46,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,     0,   183,     0,     0,     0,
-       0,    43,    44,   184,     0,     0,     0,    81,     0,     0,
-       0,    46,     0,     0,   135,   136,     0,     0,   137,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-     185,     0,     0,     0,     0,     0,     0,   186,     0,     0,
+      36,    37,    38,     2,     3,     4,     5,     0,     0,     0,
+       0,    43,    44,     0,    11,    12,    13,    45,    14,    68,
+      16,    46,    17,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      69,     0,    26,     2,     3,     4,     5,     0,     0,     0,
+       0,     0,     0,     0,    11,    12,    13,     0,    14,    68,
+      16,     0,    17,     0,    33,     0,     0,     0,     0,     0,
+       0,    34,    35,    36,    37,    38,     0,     0,     0,     0,
+      69,     0,    26,     0,    43,    44,     0,     0,     0,     0,
+      45,     0,     0,     0,    46,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,    34,    35,    36,    37,    38,     2,     3,     4,     5,
+       0,     0,     0,     0,    43,    44,     0,    11,    12,    13,
+      73,    14,    68,    16,    46,    17,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    69,     0,    26,     2,     3,     4,     5,
+       0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
+       0,    14,    68,    16,     0,    17,     0,    33,     0,     0,
+       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
+       0,     0,     0,    69,     0,    26,     0,    43,    44,     0,
+       0,     0,     0,    78,     0,     0,     0,    46,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
+       0,   169,     0,     0,    34,    35,    36,    37,    38,     0,
+       0,     0,     0,     0,     0,     0,     0,    43,    44,     0,
+       0,     0,     0,    81,   135,   136,     0,    46,   137,   138,
+     139,   140,     0,   141,   170,   171,   142,   143,   144,     0,
+     183,     0,     0,     0,     0,     0,     0,   184,     0,     0,
        0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
      150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,   187,     0,     0,     0,     0,     0,
-       0,   188,     0,     0,     0,   145,   146,   147,   148,   149,
+     142,   143,   144,     0,   185,     0,     0,     0,     0,     0,
+       0,   186,     0,     0,     0,   145,   146,   147,   148,   149,
        0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,   189,     0,
-       0,     0,     0,     0,     0,   190,     0,     0,     0,   145,
+       0,   141,     0,     0,   142,   143,   144,     0,   187,     0,
+       0,     0,     0,     0,     0,   188,     0,     0,     0,   145,
      146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
      137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,   275,     0,     0,     0,     0,     0,     0,     0,
+     144,     0,   189,     0,     0,     0,     0,     0,     0,   190,
        0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
      135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,     0,   276,     0,     0,     0,
+       0,     0,   142,   143,   144,     0,   277,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
      148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
      139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-     277,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     278,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
      150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,   278,     0,     0,     0,     0,     0,
+     142,   143,   144,     0,   279,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
        0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
-       0,     0,     0,     0,     0,   240,     0,     0,     0,   145,
+       0,   141,     0,     0,   142,   143,   144,     0,   280,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
      146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
      137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   180,   241,   145,   146,   147,   148,   149,     0,     0,
+     144,     0,     0,     0,     0,     0,     0,     0,     0,   241,
+       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
      135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
        0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
+       0,     0,     0,     0,     0,   180,   242,   145,   146,   147,
      148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
      139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-       0,     0,     0,     0,   191,   192,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
      150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
+     142,   143,   144,     0,     0,     0,     0,     0,   191,   192,
        0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,     0,     0,   195,   150,   151,   135,   136,     0,     0,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
-     135,   136,   150,   151,   137,   138,     0,     0,     0,   141,
+       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
+     146,   147,   148,   149,     0,     0,     0,   195,   150,   151,
+     135,   136,     0,     0,   137,   138,   139,   140,     0,   141,
        0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
-     148,   149,     0,     0,     0,     0,   150,   151
+     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
+       0,     0,     0,   141,     0,     0,   142,   143,   144,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   145,   146,   147,   148,   149,     0,     0,     0,     0,
+     150,   151
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    56,    32,    98,    36,    46,   129,     4,   207,     0,
-       7,     8,     9,   301,    54,    12,    13,    14,    15,    31,
-      54,   233,     1,    13,    21,    15,    58,    24,    58,    77,
-      34,    50,   244,    30,    31,    76,    33,    34,    35,    36,
-      37,    38,    83,    28,   305,   333,    43,    44,    45,    46,
-      54,    91,    98,   101,   102,    13,    14,    91,   317,   105,
-      57,   322,   261,    45,   323,    47,    64,    28,    47,   100,
-      28,    28,    69,   100,   105,   100,    73,    28,   105,    76,
-     105,    78,    94,    73,    81,    28,    83,    28,    78,   100,
-      87,   290,    89,   100,   105,    28,   108,    74,   105,    74,
-      77,    28,    77,    28,   101,   304,    99,    98,    56,    57,
-     309,   310,   104,   105,   313,    92,    93,    94,    95,    96,
-      95,    96,    52,    53,   101,   102,   101,   102,   128,    99,
-     329,    27,    28,   130,    99,   132,    52,    53,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   134,   153,    91,   357,   358,
-     157,   291,   292,   105,    45,   105,    28,    52,   105,   166,
-     168,    28,    28,   170,   171,    28,   173,   174,    28,   176,
-     177,   179,   105,   180,   105,    28,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   319,   100,    42,    28,
-     197,   105,   325,   201,   200,    54,    32,    28,   263,   206,
-      32,    36,    58,    52,    32,    32,    32,    32,   259,   128,
-     301,    65,    66,   322,   169,    69,    70,    71,    72,    31,
-      74,    75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   240,   241,    -1,    -1,   226,    92,    93,
-      94,    95,    96,    -1,    -1,    -1,    -1,   101,   102,    -1,
-      -1,    -1,   259,    -1,    -1,   320,    -1,    -1,    -1,   265,
-      -1,    -1,   268,    -1,    -1,    -1,   331,    -1,   275,   276,
-     277,   278,    -1,    -1,   280,   282,    -1,   283,   286,    -1,
-      -1,    74,   271,    -1,    77,   274,    -1,    -1,    -1,   354,
-      -1,    -1,   299,    -1,   300,    -1,   304,    -1,    -1,    -1,
-      93,    94,    95,    96,    -1,    -1,   312,   315,   101,   102,
-      -1,   317,    -1,    -1,    -1,   321,   322,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   330,    -1,    -1,    -1,    -1,   335,
-      -1,    -1,    -1,    -1,   340,   343,   342,   345,   344,    -1,
-      -1,   349,   350,    -1,    -1,    -1,   356,   357,     0,     1,
-      -1,    -1,    -1,    -1,    -1,   361,   362,   363,    -1,    -1,
+       0,    56,    55,    46,    31,     4,     0,    36,     7,     8,
+       9,   300,    54,    12,    13,    14,    15,    54,   100,   234,
+       1,    34,    21,   105,    32,    24,    13,    77,    15,    58,
+     245,    30,    31,    76,    33,    34,    35,    36,    37,    38,
+      83,    54,   331,   304,    43,    44,    45,    46,    28,    91,
+      58,   101,   102,    98,    91,    64,    13,    14,    57,   320,
+     105,    45,   315,    47,   100,    98,    47,    94,   321,   105,
+      69,    28,    74,    50,    73,    77,    28,    76,   100,    78,
+     100,   108,    81,   105,    83,   105,    73,    28,    87,    74,
+      89,    78,    77,    95,    96,    56,    57,    28,   205,   101,
+     102,   208,   101,    28,    98,    52,    53,    92,    93,    94,
+      95,    96,   200,    28,   202,    28,   101,   102,   100,    27,
+      28,   104,   105,   105,    52,    53,   291,   292,   128,    28,
+      28,   130,   131,    99,    99,    91,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   134,   153,   105,   105,    45,   157,   168,
+      28,    52,   105,   105,    28,    28,   105,   166,    28,    28,
+     179,   170,   171,    28,   173,   174,    32,   176,   177,    28,
+     268,   180,   270,   290,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   203,   105,   303,   285,   197,    32,
+      54,   308,   309,    28,   311,    36,    58,    52,   207,    32,
+      32,   299,   267,    32,    32,   300,   128,   260,   320,    31,
+     327,   169,   310,    -1,    -1,    -1,    -1,   315,    -1,    -1,
+      -1,   319,   320,    -1,    -1,    -1,    -1,    -1,    74,    -1,
+     328,    77,   241,   242,    -1,   333,   227,    -1,   355,   356,
+     338,    -1,   340,    -1,   342,    -1,    -1,    93,    94,    95,
+      96,   260,    -1,   318,   317,   101,   102,    -1,    -1,    -1,
+     323,   359,   360,   361,   329,    -1,    -1,   286,   277,   278,
+     279,   280,    -1,    -1,    -1,   284,    -1,    -1,    -1,    -1,
+      -1,    -1,   273,    -1,   303,   276,    -1,   352,    -1,   298,
+      -1,    -1,    -1,    -1,   313,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   341,    -1,   343,    -1,    -1,    -1,   347,   348,
+      -1,    -1,    -1,    -1,     0,     1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   354,   355,    12,    13,    14,    15,
+      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
+      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
+      -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,    -1,
+      -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
+      -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    87,    88,    89,    90,    -1,    -1,    93,    94,    -1,
+      -1,    -1,    98,    99,    -1,    -1,    -1,   103,    12,    13,
+      14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
+      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    33,
+      -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
+      44,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
+      -1,    55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,
+      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
+      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
+      84,    -1,    -1,    87,    88,    89,    90,    -1,    -1,    93,
+      94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
       12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
       -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
-      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
-      -1,    -1,    44,    -1,    -1,    -1,    -1,    49,    50,    51,
-      -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
+      32,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
+      -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,
       62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    87,    88,    89,    90,    -1,
+      82,    83,    84,    -1,    -1,    87,    88,    -1,    90,    -1,
       -1,    93,    94,    -1,    -1,    -1,    98,    99,    -1,    -1,
       -1,   103,    12,    13,    14,    15,    -1,    17,    18,    19,
       20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
       -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,
-      40,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    49,
-      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,
-      60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,
+      -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    89,
-      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
+      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    -1,
+      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,    99,
       -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,    17,
       18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    32,    33,    -1,    -1,    -1,    37,
+      28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
       -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,
       -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
       -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
       88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
-      98,    99,    -1,    -1,    -1,   103,    12,    13,    14,    15,
+      -1,    99,    -1,    -1,    -1,   103,    12,    13,    14,    15,
       -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
-      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
+      -1,    27,    28,    29,    54,    31,    -1,    33,    -1,    -1,
+      -1,    37,    -1,    39,    40,    65,    66,    -1,    -1,    69,
+      70,    71,    72,    49,    74,    51,    -1,    77,    78,    79,
       -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,
-      -1,    -1,    98,    99,    -1,    -1,    -1,   103,    12,    13,
-      14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    33,
-      -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
-      -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
-      -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    87,    88,    -1,    90,    -1,    -1,    93,
-      94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
-      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
-      -1,    23,    24,    25,    -1,    27,    28,    29,    54,    31,
-      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    65,
-      66,    -1,    -1,    69,    70,    71,    72,    49,    74,    51,
-      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    61,
-      62,    -1,    64,    -1,    -1,    -1,    92,    93,    94,    95,
-      96,    73,    98,    -1,    -1,   101,   102,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    -1,    88,    -1,    90,    -1,
-      -1,    93,    94,    12,    13,    14,    15,    99,    -1,    -1,
-      -1,   103,    -1,    -1,    23,    24,    25,    -1,    27,    28,
-      29,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    38,
-      -1,    -1,    -1,    -1,    43,    -1,    45,    46,    47,    48,
-      49,    -1,    51,    -1,    12,    13,    14,    15,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    73,    -1,    -1,    -1,    -1,    -1,
-      38,    80,    81,    82,    83,    84,    -1,    45,    -1,    47,
-      -1,    49,    -1,    51,    93,    94,    -1,    -1,    -1,    -1,
-      99,    -1,    -1,    -1,   103,    63,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    12,    13,    14,
-      15,    -1,    -1,    -1,    -1,    93,    94,    -1,    23,    24,
-      25,    99,    27,    28,    29,   103,    31,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,
-      15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,
-      25,    -1,    27,    28,    29,    -1,    31,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    93,    94,
-      -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      12,    13,    14,    15,    -1,    -1,    -1,    -1,    93,    94,
-      -1,    23,    24,    25,    99,    27,    28,    29,   103,    31,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    51,
+      -1,    -1,    92,    93,    94,    95,    96,    73,    98,    -1,
+      -1,   101,   102,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    -1,    88,    -1,    90,    -1,    -1,    93,    94,    12,
+      13,    14,    15,    99,    -1,    -1,    -1,   103,    -1,    -1,
+      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
+      -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,
+      43,    -1,    45,    46,    47,    48,    49,    -1,    51,    -1,
       12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
+      73,    -1,    -1,    -1,    -1,    -1,    38,    80,    81,    82,
+      83,    84,    -1,    45,    -1,    47,    -1,    49,    -1,    51,
+      93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,
+     103,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    -1,    -1,    49,    -1,    51,
-      -1,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,
-      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    -1,    -1,    -1,    47,    -1,    -1,    -1,
-      -1,    93,    94,    54,    -1,    -1,    -1,    99,    -1,    -1,
-      -1,   103,    -1,    -1,    65,    66,    -1,    -1,    69,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      82,    83,    84,    12,    13,    14,    15,    -1,    -1,    -1,
+      -1,    93,    94,    -1,    23,    24,    25,    99,    27,    28,
+      29,   103,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      49,    -1,    51,    12,    13,    14,    15,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,    28,
+      29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,    -1,
+      -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,
+      49,    -1,    51,    -1,    93,    94,    -1,    -1,    -1,    -1,
+      99,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,
+      -1,    80,    81,    82,    83,    84,    12,    13,    14,    15,
+      -1,    -1,    -1,    -1,    93,    94,    -1,    23,    24,    25,
+      99,    27,    28,    29,   103,    31,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,    15,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,    25,
+      -1,    27,    28,    29,    -1,    31,    -1,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    -1,    -1,    49,    -1,    51,    -1,    93,    94,    -1,
+      -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+      -1,    42,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    -1,
+      -1,    -1,    -1,    99,    65,    66,    -1,   103,    69,    70,
+      71,    72,    -1,    74,    75,    76,    77,    78,    79,    -1,
       47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,
       -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
      101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
@@ -1249,7 +1249,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,
       93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
       69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
       -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
       65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
       -1,    -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,
@@ -1262,30 +1262,34 @@ static const yytype_int16 yycheck[] =
       77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
       -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,
+      -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
       93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
       69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    56,    91,    92,    93,    94,    95,    96,    -1,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
       65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
       -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
+      -1,    -1,    -1,    -1,    -1,    56,    91,    92,    93,    94,
       95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
       71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
      101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    85,    86,
       -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    -1,    -1,   100,   101,   102,    65,    66,    -1,    -1,
-      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
-      65,    66,   101,   102,    69,    70,    -1,    -1,    -1,    74,
+      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    -1,    -1,   100,   101,   102,
+      65,    66,    -1,    -1,    69,    70,    71,    72,    -1,    74,
       -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
-      95,    96,    -1,    -1,    -1,    -1,   101,   102
+      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
+      -1,    -1,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,
+     101,   102
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1304,31 +1308,31 @@ static const yytype_uint8 yystos[] =
       46,    47,    48,   134,   141,   142,    28,   134,    56,    57,
       13,    14,    28,    28,    28,    28,   134,    63,   141,   142,
       28,   139,   134,   134,   134,   134,   134,   134,    28,   138,
-      28,    99,   134,   134,   134,   134,   152,     0,   108,    99,
-      91,   122,   123,   114,   134,    65,    66,    69,    70,    71,
+      28,    99,   134,   134,   134,   134,   152,     0,   108,   122,
+     123,    91,   122,   114,   134,    65,    66,    69,    70,    71,
       72,    74,    77,    78,    79,    92,    93,    94,    95,    96,
      101,   102,   129,    99,   134,   134,   153,   105,   152,   153,
      134,   152,   152,   105,   134,   134,    45,   142,   146,    42,
       75,    76,    28,    54,    91,   134,    54,    91,    52,   147,
       56,   142,   105,    47,    54,    47,    54,    47,    54,    47,
-      54,    85,    86,   105,    28,   100,   104,   105,   112,   122,
-     134,    52,    53,   109,   134,   130,    54,   108,   134,   134,
+      54,    85,    86,   105,    28,   100,   104,   105,   112,   129,
+     131,   134,   134,    52,    53,   109,   130,    54,   108,   134,
      134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,    28,   149,   100,   134,   100,
-     100,    28,   134,   129,    28,   135,   134,   134,   134,   134,
-      54,    91,   134,   134,   129,   134,    28,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,    28,   100,   105,
-     134,   100,   130,   129,   129,   131,   124,   134,   131,   105,
-     108,   149,   134,   134,   149,    47,    47,    47,    47,   152,
-     131,    34,    54,   114,   108,   115,   130,   130,    28,   105,
-     150,   108,   108,   134,   134,   134,   134,   100,   130,    54,
-     134,   130,    32,    58,   110,   129,    32,    28,   131,   150,
-     150,    32,   134,   130,    36,   110,   111,   119,   120,   128,
-     129,   131,   118,   119,   121,   128,    32,   131,   131,   130,
-     131,   129,   120,   130,   122,   114,   130,   121,   130,   122,
-     131,   130,   114,   110,   117,    52,   130,    32,    32,    52,
-      53,   130,    32,   130,   129,   130,   129,   129,   129,    32,
-     114,   115,   131,   131,   130,   130,   130
+     134,   134,   134,   134,   134,   134,    28,   149,   100,   134,
+     100,   100,    28,   134,   129,    28,   135,   134,   134,   134,
+     134,    54,    91,   134,   134,   129,   134,    28,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,    28,   100,
+     105,   134,   108,   115,   130,   124,   130,   129,   131,   134,
+     131,   105,   108,   149,   134,   134,   149,    47,    47,    47,
+      47,   152,    32,    34,    54,   114,   130,   130,    28,   105,
+     150,   108,   108,   134,   134,   134,   134,   100,    54,   134,
+     130,    32,    58,   110,   129,    32,    28,   131,   150,   150,
+     134,   130,    36,   110,   111,   119,   120,   128,   129,   131,
+     118,   119,   121,   128,    32,   131,   131,   130,   131,   129,
+     120,   130,   122,   114,   130,   121,   130,   122,   131,   130,
+     114,   110,   117,    52,   130,    32,    32,    52,    53,   130,
+      32,   130,   129,   130,   129,   129,   129,    32,   114,   115,
+     131,   131,   130,   130,   130
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2272,12 +2276,12 @@ yyreduce:
 #line 213 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
-		WRITE_UINT32(&body, (yyvsp[(5) - (7)].code) - (yyvsp[(1) - (7)].code));
-		WRITE_UINT32(&end, (yyvsp[(6) - (7)].code) - (yyvsp[(1) - (7)].code));
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (7)].code) + 1] = body;	/* body of loop */
-		(*g_lingo->_currentScript)[(yyvsp[(1) - (7)].code) + 2] = end;	/* end, if cond fails */
+		WRITE_UINT32(&body, (yyvsp[(3) - (5)].code) - (yyvsp[(1) - (5)].code));
+		WRITE_UINT32(&end, (yyvsp[(4) - (5)].code) - (yyvsp[(1) - (5)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (5)].code) + 1] = body;	/* body of loop */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (5)].code) + 2] = end;	/* end, if cond fails */
 
-		checkEnd((yyvsp[(7) - (7)].s), "repeat", true); ;}
+		checkEnd((yyvsp[(5) - (5)].s), "repeat", true); ;}
     break;
 
   case 28:
@@ -3123,7 +3127,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 3131 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 6024ff1..9bc9c09 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -210,14 +210,14 @@ stmt: stmtoneliner
 	//   statements
 	// end repeat
 	//
-	| repeatwhile '(' cond ')' stmtlist end ENDCLAUSE	{
+	| repeatwhile cond stmtlist end ENDCLAUSE	{
 		inst body = 0, end = 0;
-		WRITE_UINT32(&body, $5 - $1);
-		WRITE_UINT32(&end, $6 - $1);
+		WRITE_UINT32(&body, $3 - $1);
+		WRITE_UINT32(&end, $4 - $1);
 		(*g_lingo->_currentScript)[$1 + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[$1 + 2] = end;	/* end, if cond fails */
 
-		checkEnd($7, "repeat", true); }
+		checkEnd($5, "repeat", true); }
 	;
 	// repeat with index = start to end
 	//   statements
diff --git a/engines/director/lingo/tests/loops.lingo b/engines/director/lingo/tests/loops.lingo
index e4c5cce..6214461 100644
--- a/engines/director/lingo/tests/loops.lingo
+++ b/engines/director/lingo/tests/loops.lingo
@@ -20,3 +20,8 @@ end repeat
 repeat with y = 5 down to 1
 put y
 end repeat
+
+repeat while y < 5
+set y = y + 1
+put y
+end repeat


Commit: c33a4f9d8d36e738d0045262cf1c3bf6c521c9ab
    https://github.com/scummvm/scummvm/commit/c33a4f9d8d36e738d0045262cf1c3bf6c521c9ab
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-01T23:22:26+01:00

Commit Message:
DIRECTOR: LINGO: Implement extened 'on' clause syntax

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index fa08d82..ef1b8d9 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -540,16 +540,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  127
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1771
+#define YYLAST   1807
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  106
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  48
+#define YYNNTS  49
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  170
+#define YYNRULES  173
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  365
+#define YYNSTATES  369
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -618,9 +618,9 @@ static const yytype_uint16 yyprhs[] =
      475,   478,   481,   483,   486,   491,   496,   503,   508,   511,
      515,   517,   521,   523,   527,   529,   533,   536,   539,   542,
      545,   549,   552,   555,   557,   561,   564,   567,   570,   574,
-     577,   578,   582,   583,   592,   595,   596,   605,   613,   620,
-     623,   624,   626,   630,   635,   636,   639,   640,   642,   646,
-     648
+     577,   578,   582,   583,   592,   595,   596,   605,   614,   621,
+     624,   625,   627,   631,   636,   637,   639,   643,   644,   647,
+     648,   650,   654,   656
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -628,7 +628,7 @@ static const yytype_int16 yyrhs[] =
 {
      107,     0,    -1,   107,   108,   112,    -1,   112,    -1,     1,
      108,    -1,    98,    -1,    53,    -1,    58,    -1,    36,    -1,
-      -1,   145,    -1,   151,    -1,   115,    -1,    49,   134,    42,
+      -1,   145,    -1,   152,    -1,   115,    -1,    49,   134,    42,
       28,    -1,    49,   134,    42,   135,    -1,    49,   134,    75,
      134,    -1,    49,   134,    76,   134,    -1,    51,    28,    91,
      134,    -1,    51,    13,    91,   134,    -1,    51,    14,   134,
@@ -654,8 +654,8 @@ static const yytype_int16 yyrhs[] =
       -1,   111,    -1,    -1,    -1,   129,    -1,   131,   108,    -1,
      131,   115,    -1,    55,    28,    52,    -1,    87,    -1,    12,
       -1,    15,    -1,    31,    -1,    29,    -1,   135,    -1,    23,
-      -1,    24,   134,    -1,    25,   153,    -1,    25,    99,   153,
-     100,    -1,    28,    99,   152,   100,    -1,    28,    -1,    13,
+      -1,    24,   134,    -1,    25,   154,    -1,    25,    99,   154,
+     100,    -1,    28,    99,   153,   100,    -1,    28,    -1,    13,
       -1,    14,   134,    -1,   113,    -1,   134,    93,   134,    -1,
      134,    94,   134,    -1,   134,    95,   134,    -1,   134,    96,
      134,    -1,   134,    74,   134,    -1,   134,   101,   134,    -1,
@@ -664,7 +664,7 @@ static const yytype_int16 yyrhs[] =
      134,    71,   134,    -1,   134,    72,   134,    -1,    73,   134,
       -1,   134,    92,   134,    -1,   134,    77,   134,    -1,   134,
       78,   134,    -1,   134,    79,   134,    -1,    93,   134,    -1,
-      94,   134,    -1,    99,   134,   100,    -1,   103,   152,   104,
+      94,   134,    -1,    99,   134,   100,    -1,   103,   153,   104,
       -1,    84,   134,    85,   134,    -1,    84,   134,    86,   134,
       -1,    80,   134,    47,   134,    -1,    80,   134,    54,   134,
       47,   134,    -1,    81,   134,    47,   134,    -1,    81,   134,
@@ -674,24 +674,24 @@ static const yytype_int16 yyrhs[] =
      134,    -1,    49,   134,    -1,   140,    -1,   143,    -1,    37,
       50,    -1,    37,    -1,    39,   137,    -1,    88,   138,    -1,
       64,   139,    -1,    17,    -1,    19,   134,    -1,    18,   134,
-      -1,    18,    -1,    20,   153,    -1,    20,    99,   153,   100,
+      -1,    18,    -1,    20,   154,    -1,    20,    99,   154,   100,
       -1,    90,    99,    28,   100,    -1,    90,    99,    28,   105,
-     152,   100,    -1,    61,   134,    56,   134,    -1,    61,   134,
-      -1,    21,    28,   152,    -1,    28,    -1,   137,   105,    28,
+     153,   100,    -1,    61,   134,    56,   134,    -1,    61,   134,
+      -1,    21,    28,   153,    -1,    28,    -1,   137,   105,    28,
       -1,    28,    -1,   138,   105,    28,    -1,    28,    -1,   139,
      105,    28,    -1,    40,    43,    -1,    40,    46,    -1,    40,
       48,    -1,    40,   141,    -1,    40,   141,   142,    -1,    40,
      142,    -1,    38,   134,    -1,   134,    -1,    47,    45,   134,
       -1,    45,   134,    -1,    62,    63,    -1,    62,   141,    -1,
       62,   141,   142,    -1,    62,   142,    -1,    -1,    33,   144,
-     152,    -1,    -1,    44,    28,   146,   129,   149,   108,   150,
+     153,    -1,    -1,    44,    28,   146,   129,   149,   108,   151,
      131,    -1,    59,    28,    -1,    -1,    60,    28,   147,   129,
-     149,   108,   150,   131,    -1,   148,   129,   149,   108,   150,
-     131,    32,    -1,   148,   129,   149,   108,   150,   131,    -1,
-      89,    28,    -1,    -1,    28,    -1,   149,   105,    28,    -1,
-     149,   108,   105,    28,    -1,    -1,    28,   153,    -1,    -1,
-     134,    -1,   152,   105,   134,    -1,   134,    -1,   153,   105,
-     134,    -1
+     149,   108,   151,   131,    -1,   148,   129,   149,   108,   151,
+     131,    32,   150,    -1,   148,   129,   149,   108,   151,   131,
+      -1,    89,    28,    -1,    -1,    28,    -1,   149,   105,    28,
+      -1,   149,   108,   105,    28,    -1,    -1,    28,    -1,   150,
+     105,    28,    -1,    -1,    28,   154,    -1,    -1,   134,    -1,
+     153,   105,   134,    -1,   134,    -1,   154,   105,   134,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -713,8 +713,8 @@ static const yytype_uint16 yyrline[] =
      550,   551,   554,   555,   558,   559,   570,   571,   572,   573,
      577,   581,   587,   588,   591,   592,   595,   596,   600,   604,
      608,   608,   638,   638,   643,   644,   644,   649,   656,   662,
-     664,   665,   666,   667,   670,   674,   682,   683,   684,   687,
-     688
+     664,   665,   666,   667,   670,   671,   672,   675,   679,   687,
+     688,   689,   692,   693
 };
 #endif
 
@@ -745,8 +745,8 @@ static const char *const yytname[] =
   "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist",
   "when", "tell", "expr", "reference", "proc", "globallist",
   "propertylist", "instancelist", "gotofunc", "gotoframe", "gotomovie",
-  "playfunc", "@1", "defn", "@2", "@3", "on", "argdef", "argstore",
-  "macro", "arglist", "nonemptyarglist", 0
+  "playfunc", "@1", "defn", "@2", "@3", "on", "argdef", "endargdef",
+  "argstore", "macro", "arglist", "nonemptyarglist", 0
 };
 #endif
 
@@ -788,8 +788,8 @@ static const yytype_uint8 yyr1[] =
      137,   137,   138,   138,   139,   139,   140,   140,   140,   140,
      140,   140,   141,   141,   142,   142,   143,   143,   143,   143,
      144,   143,   146,   145,   145,   147,   145,   145,   145,   148,
-     149,   149,   149,   149,   150,   151,   152,   152,   152,   153,
-     153
+     149,   149,   149,   149,   150,   150,   150,   151,   152,   153,
+     153,   153,   154,   154
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -810,9 +810,9 @@ static const yytype_uint8 yyr2[] =
        2,     2,     1,     2,     4,     4,     6,     4,     2,     3,
        1,     3,     1,     3,     1,     3,     2,     2,     2,     2,
        3,     2,     2,     1,     3,     2,     2,     2,     3,     2,
-       0,     3,     0,     8,     2,     0,     8,     7,     6,     2,
-       0,     1,     3,     4,     0,     2,     0,     1,     3,     1,
-       3
+       0,     3,     0,     8,     2,     0,     8,     8,     6,     2,
+       0,     1,     3,     4,     0,     1,     3,     0,     2,     0,
+       1,     3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -824,103 +824,103 @@ static const yytype_uint8 yydefact[] =
        0,    69,     0,     0,     0,    74,    67,    66,   150,   115,
        0,     0,    55,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    63,
-       0,     0,     0,     0,     0,     0,   166,     0,     3,    77,
+       0,     0,     0,     0,     0,     0,   169,     0,     3,    77,
       25,    12,    26,    51,     0,    51,     0,     0,    23,    68,
       24,   112,   113,    10,    57,    11,     5,     4,    74,     0,
-      76,   121,   120,     0,   169,   123,   166,    70,     0,    71,
-     110,   166,   165,   166,   114,   130,   116,     0,   136,     0,
+      76,   121,   120,     0,   172,   123,   169,    70,     0,    71,
+     110,   169,   168,   169,   114,   130,   116,     0,   136,     0,
      137,     0,   138,   143,   139,   141,   152,   111,     0,    53,
        0,     0,     0,     0,   154,   155,   128,   146,   147,   149,
      134,   118,    91,     0,     0,     0,     0,     0,   132,   117,
-     159,     0,    96,    97,     0,   167,     0,     1,     9,    57,
+     159,     0,    96,    97,     0,   170,     0,     1,     9,    57,
        0,     0,     0,    58,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   160,   166,     0,   169,     0,     0,   129,     0,
-     167,     0,   151,     0,   142,   145,     0,   140,    57,     0,
+       0,     0,   160,   169,     0,   172,     0,     0,   129,     0,
+     170,     0,   151,     0,   142,   145,     0,   140,    57,     0,
        0,     0,    54,     0,     0,     0,     0,     0,    62,    57,
        0,   148,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    98,    99,     0,     2,    59,
       58,    52,    58,    57,     6,    57,    30,     0,    57,    87,
       88,    85,    86,    89,    90,    82,    93,    94,    95,    92,
-      78,    79,    80,    81,    83,    84,   161,     0,   124,   170,
+      78,    79,    80,    81,    83,    84,   161,     0,   124,   173,
       72,    73,   131,   144,   160,    13,    14,    15,    16,    21,
       18,     0,     0,    20,    17,   160,   127,   135,   102,     0,
      104,     0,   106,     0,   108,     0,   100,   101,   133,   125,
-     166,   168,    60,    61,     0,    50,     0,     0,    58,    32,
-      58,     0,   164,     0,    22,    19,     0,     0,     0,     0,
+     169,   171,    60,    61,     0,    50,     0,     0,    58,    32,
+      58,     0,   167,     0,    22,    19,     0,     0,     0,     0,
        0,     0,    27,     0,     0,    58,    57,     0,   162,     0,
-      57,   164,   164,   103,   105,   107,   109,   126,     0,    58,
+      57,   167,   167,   103,   105,   107,   109,   126,     0,    58,
       37,    33,     7,    57,     0,    31,   163,   158,    57,    57,
       58,    57,     8,    57,    56,    58,    45,    51,    59,    58,
-      58,    47,    43,    51,   157,   153,   156,    57,    58,     0,
-      44,    40,     0,    58,     0,    42,     0,     0,    58,     0,
-      58,    57,    58,    57,    36,    34,    35,    57,    57,     0,
-      28,    38,     0,    39,     0,    57,    57,    29,    41,    58,
-      58,    58,    46,    48,    49
+      58,    47,    43,    51,   164,   153,   156,    57,    58,     0,
+      44,    40,     0,    58,     0,    42,     0,     0,   165,   157,
+      58,     0,    58,    57,    58,    57,    36,    34,    35,    57,
+      57,     0,     0,    28,    38,     0,    39,     0,    57,    57,
+     166,    29,    41,    58,    58,    58,    46,    48,    49
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,    47,   262,   205,   303,   314,    48,    49,    50,   263,
-      52,   342,   320,   321,   316,   322,   129,   130,   265,    53,
+      52,   344,   320,   321,   316,   322,   129,   130,   265,    53,
       54,    55,   317,   199,   206,   200,    56,    57,    58,    59,
       60,    86,   119,   111,    61,    94,    95,    62,    83,    63,
-     168,   179,    64,   227,   290,    65,   161,    75
+     168,   179,    64,   227,   339,   290,    65,   161,    75
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -290
+#define YYPACT_NINF -285
 static const yytype_int16 yypact[] =
 {
-     344,   -33,  -290,  -290,  1001,  -290,  -290,  1001,  1001,  1041,
-      20,  -290,  1001,  1114,  1001,  1154,  -290,  -290,  -290,    23,
-      48,   887,  -290,    59,  1001,    39,    43,    69,    75,    85,
-    1001,   928,    87,  1001,  1001,  1001,  1001,  1001,  1001,  -290,
-     101,   102,    34,  1001,  1001,  1001,  1001,     6,  -290,  -290,
-    -290,  -290,  -290,  -290,    44,  -290,   804,  1001,  1635,  -290,
-    -290,  -290,  -290,  -290,  -290,  -290,  -290,  -290,    35,  1001,
-    1635,  1635,  1635,  1001,  1635,    50,  1001,  1635,  1001,    50,
-    1635,  1001,    50,  1001,  -290,  -290,    51,  1001,  -290,  1001,
-    -290,   112,  -290,  1635,    16,  -290,  -290,  1189,   132,  -290,
-     -42,  1001,   -37,   109,  -290,  -290,  1529,  -290,    16,  -290,
-    -290,    57,   -50,  1223,  1257,  1291,  1325,  1563,  -290,    58,
-    -290,   136,   -50,   -50,  1597,  1635,    17,  -290,   436,  -290,
-    1001,  1001,    53,  -290,   780,  1001,  1001,  1001,  1001,  1001,
-    1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,
-    1001,  1001,   137,  1001,  1189,  1597,   -82,  1001,    61,   -36,
-    1597,   -22,    61,   140,  1635,  1635,  1001,  -290,  -290,    92,
-    1001,  1001,  -290,  1001,  1001,  1495,  1001,  1001,  -290,  -290,
-    1001,  -290,   141,  1001,  1001,  1001,  1001,  1001,  1001,  1001,
-    1001,  1001,  1001,   145,   -20,  -290,  -290,  1001,  -290,  -290,
-     620,  1635,  1635,  -290,  -290,  -290,  -290,  1001,  -290,    15,
-      15,    15,    15,  1669,  1669,   -50,  1635,    15,    15,   164,
-      -2,    -2,   -50,   -50,  1635,  1635,  -290,   -45,  -290,  1635,
-    -290,  -290,  -290,  1635,   137,  -290,  -290,  1635,  1635,  1635,
-    1635,  1001,  1001,  1635,  1635,   137,  1635,  -290,  1635,  1359,
-    1635,  1393,  1635,  1427,  1635,  1461,  1635,  1635,  -290,  -290,
-    1001,  1635,  -290,  -290,   144,  -290,   -13,   804,   620,  1635,
-     620,   151,    90,   -45,  1635,  1635,   -45,  1001,  1001,  1001,
-    1001,    18,  -290,   146,  1001,  -290,    -8,   167,  -290,   175,
-    -290,    90,    90,  1635,  1635,  1635,  1635,  -290,  1001,  1635,
-     -29,  -290,  -290,  -290,   169,  -290,  -290,   528,  -290,  -290,
-    1635,  -290,  -290,  -290,  -290,   169,  -290,  -290,   804,   620,
-     169,   169,  -290,  -290,  -290,   620,   620,  -290,   620,   804,
-    -290,   148,   155,  -290,   177,  -290,   178,    72,   620,   181,
-    -290,  -290,  -290,  -290,  -290,  -290,  -290,  -290,  -290,   182,
-    -290,  -290,   804,  -290,   712,   712,  -290,  -290,  -290,  -290,
-     620,   620,  -290,  -290,  -290
+     380,   -71,  -285,  -285,  1037,  -285,  -285,  1037,  1037,  1077,
+      10,  -285,  1037,  1150,  1037,  1190,  -285,  -285,  -285,    20,
+      46,   923,  -285,    57,  1037,    34,    41,    66,    73,    98,
+    1037,   964,    99,  1037,  1037,  1037,  1037,  1037,  1037,  -285,
+     103,   104,    54,  1037,  1037,  1037,  1037,     4,  -285,  -285,
+    -285,  -285,  -285,  -285,    42,  -285,   840,  1037,  1671,  -285,
+    -285,  -285,  -285,  -285,  -285,  -285,  -285,  -285,    55,  1037,
+    1671,  1671,  1671,  1037,  1671,    50,  1037,  1671,  1037,    50,
+    1671,  1037,    50,  1037,  -285,  -285,    53,  1037,  -285,  1037,
+    -285,   114,  -285,  1671,    52,  -285,  -285,  1225,   132,  -285,
+     -39,  1037,   -32,   109,  -285,  -285,  1565,  -285,    52,  -285,
+    -285,    58,   -52,  1259,  1293,  1327,  1361,  1599,  -285,    59,
+    -285,   134,   -52,   -52,  1633,  1671,     1,  -285,   472,  -285,
+    1037,  1037,    51,  -285,   816,  1037,  1037,  1037,  1037,  1037,
+    1037,  1037,  1037,  1037,  1037,  1037,  1037,  1037,  1037,  1037,
+    1037,  1037,   138,  1037,  1225,  1633,   -40,  1037,    62,   -38,
+    1633,   -34,    62,   143,  1671,  1671,  1037,  -285,  -285,    91,
+    1037,  1037,  -285,  1037,  1037,  1531,  1037,  1037,  -285,  -285,
+    1037,  -285,   146,  1037,  1037,  1037,  1037,  1037,  1037,  1037,
+    1037,  1037,  1037,   149,   -24,  -285,  -285,  1037,  -285,  -285,
+     656,  1671,  1671,  -285,  -285,  -285,  -285,  1037,  -285,    15,
+      15,    15,    15,  1705,  1705,   -52,  1671,    15,    15,    19,
+     120,   120,   -52,   -52,  1671,  1671,  -285,   -47,  -285,  1671,
+    -285,  -285,  -285,  1671,   138,  -285,  -285,  1671,  1671,  1671,
+    1671,  1037,  1037,  1671,  1671,   138,  1671,  -285,  1671,  1395,
+    1671,  1429,  1671,  1463,  1671,  1497,  1671,  1671,  -285,  -285,
+    1037,  1671,  -285,  -285,   163,  -285,     7,   840,   656,  1671,
+     656,   150,    76,   -47,  1671,  1671,   -47,  1037,  1037,  1037,
+    1037,   -22,  -285,   148,  1037,  -285,   -27,   168,  -285,   175,
+    -285,    76,    76,  1671,  1671,  1671,  1671,  -285,  1037,  1671,
+     -10,  -285,  -285,  -285,   169,  -285,  -285,   564,  -285,  -285,
+    1671,  -285,  -285,  -285,  -285,   169,  -285,  -285,   840,   656,
+     169,   169,  -285,  -285,   176,   656,   656,  -285,   656,   840,
+    -285,   151,   155,  -285,   178,  -285,   179,    70,  -285,   108,
+     656,   182,  -285,  -285,  -285,  -285,  -285,  -285,  -285,  -285,
+    -285,   180,   186,  -285,  -285,   840,  -285,   748,   748,  -285,
+    -285,  -285,  -285,  -285,   656,   656,  -285,  -285,  -285
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -290,  -290,    19,  -290,  -289,  -290,    88,  -290,   -55,     0,
-    -290,  -290,  -290,   -85,  -253,  -102,   -53,  -290,  -290,  -290,
-    -290,  -290,  -261,    -9,   -88,  -107,  -290,  -290,     1,    52,
-    -290,  -290,  -290,  -290,  -290,   188,   -27,  -290,  -290,  -290,
-    -290,  -290,  -290,  -215,  -165,  -290,   -43,    13
+    -285,  -285,    17,  -285,  -284,  -285,    92,  -285,   -55,     0,
+    -285,  -285,  -285,   -81,  -258,   -96,   -53,  -285,  -285,  -285,
+    -285,  -285,  -280,   -11,    26,  -110,  -285,  -285,    -1,    56,
+    -285,  -285,  -285,  -285,  -285,   196,   -21,  -285,  -285,  -285,
+    -285,  -285,  -285,  -217,  -285,  -167,  -285,   -37,     6
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -930,315 +930,325 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -10
 static const yytype_int16 yytable[] =
 {
-      51,   133,   132,   126,   109,    70,   127,   312,    71,    72,
-      74,   313,   173,    77,    74,    80,    74,   176,   228,   273,
-      67,   283,    93,   157,   301,    97,    79,   142,    82,   302,
-     276,   106,    93,   158,   112,   113,   114,   115,   116,   117,
-     162,   284,   341,   323,   122,   123,   124,   125,    76,   174,
-     302,   150,   151,    66,   177,   152,   100,   101,   134,   323,
-     271,    89,   330,    91,   230,    66,   128,   167,   330,   157,
-     154,   102,   141,    84,   155,   142,    85,   125,   231,   155,
-     259,   181,   160,   197,   125,   260,   156,    96,   164,   141,
-     165,   159,   142,   148,   149,    98,    99,   103,   268,   150,
-     151,   270,   175,   104,    66,   203,   204,   145,   146,   147,
-     148,   149,   264,   105,   266,   110,   150,   151,   297,    14,
-     235,   196,   197,   197,   347,   348,   308,   309,    51,   118,
-     120,   201,   202,   121,   153,   131,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   208,   125,   157,   163,   166,   229,   234,
-     172,   178,   182,   193,   194,   226,   197,   233,   232,   247,
-     245,   237,   238,   258,   239,   240,   282,   243,   244,   288,
-     286,   246,   287,   307,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   267,   289,   319,   300,   261,   305,
-     298,   325,   326,   306,   328,   312,   302,   343,   269,   345,
-     346,   311,   285,   350,   357,   315,   198,   281,   335,   108,
-     338,   236,   327,     0,     0,     0,     0,   331,     0,     0,
-       0,   334,   336,     0,     0,     0,     0,     0,   141,     0,
-     339,   142,   274,   275,     0,   344,   272,     0,   360,   361,
-     349,     0,   351,     0,   353,     0,     0,   146,   147,   148,
-     149,   125,     0,   333,   332,   150,   151,     0,     0,     0,
-     337,   362,   363,   364,   340,     0,     0,   304,   293,   294,
-     295,   296,     0,     0,     0,   299,     0,     0,     0,     0,
-       0,     0,   291,     0,   318,   292,     0,   358,     0,   310,
-       0,     0,     0,     0,   329,     0,     0,     0,     0,     0,
+      51,   133,   132,    70,   127,   301,    71,    72,    74,   126,
+     109,    77,    74,    80,    74,   173,   313,   273,    67,    79,
+      93,    82,   176,    97,   323,   142,   312,    66,   276,   106,
+      93,   302,   112,   113,   114,   115,   116,   117,    76,   158,
+     323,   283,   122,   123,   124,   125,   162,   343,   302,   150,
+     151,    66,   174,   152,   100,   101,   134,   330,   271,   177,
+     228,   284,   230,   330,   128,   157,   231,   157,   154,   102,
+      84,   197,   155,   167,    85,   125,   259,   155,   297,   156,
+     160,   260,   125,   197,   159,    96,   164,   181,   165,   141,
+      98,    99,   142,   141,   103,   268,   142,    89,   270,    91,
+     175,   104,    66,   203,   204,   196,   197,   145,   146,   147,
+     148,   149,   146,   147,   148,   149,   150,   151,    14,   235,
+     150,   151,   349,   350,   308,   309,   105,   110,    51,   201,
+     202,   118,   120,   131,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   208,   125,   121,   153,   157,   229,   234,   163,   166,
+     172,   178,   194,   182,   193,   233,   226,   197,   245,   237,
+     238,   232,   239,   240,   247,   243,   244,   258,   288,   246,
+     307,   289,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   267,   319,   141,   282,   261,   142,   325,   326,
+     305,   328,   298,   306,   338,   312,   269,   345,   360,   302,
+     347,   348,   285,   351,   353,   148,   149,   340,   361,   315,
+     198,   150,   151,   281,   335,   236,   264,   108,   266,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   352,     0,   354,     0,     0,     0,   355,   356,
-       0,     0,     0,     0,    -9,     1,     0,     0,     0,     0,
-       0,     0,     0,     0,   359,   359,     2,     3,     4,     5,
+     274,   275,     0,     0,   272,     0,     0,     0,   364,   365,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   125,
+       0,     0,     0,   333,   332,     0,     0,     0,     0,     0,
+     337,     0,     0,     0,   342,   304,   293,   294,   295,   296,
+       0,     0,     0,   299,     0,     0,     0,     0,     0,     0,
+     291,     0,   318,   292,   286,     0,   287,   310,     0,     0,
+     362,     0,   329,     0,     0,     0,     0,     0,     0,     0,
+       0,   300,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   311,     0,     0,     0,     0,
+       0,     0,   355,     0,   357,     0,   327,     0,   358,   359,
+       0,   331,     0,     0,     0,   334,   336,     0,     0,     0,
+       0,     0,     0,     0,   341,     0,     0,   363,   363,   346,
+       0,     0,     0,     0,     0,     0,   352,     0,   354,     0,
+     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      -9,     1,     0,     0,     0,     0,     0,     0,     0,   366,
+     367,   368,     2,     3,     4,     5,     0,     6,     7,     8,
+       9,    10,     0,    11,    12,    13,     0,    14,    15,    16,
+       0,    17,     0,    18,     0,     0,     0,    19,     0,    20,
+      21,    22,     0,     0,    23,     0,     0,     0,     0,    24,
+      25,    26,     0,     0,     0,    27,     0,     0,     0,    28,
+      29,    30,    31,     0,    32,     0,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
+      34,    35,    36,    37,    38,     0,     0,    39,    40,    41,
+      42,     0,     0,    43,    44,     0,     0,     0,    -9,    45,
+       0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
+      15,    16,     0,    17,     0,    18,     0,     0,     0,    19,
+       0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
+       0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
+       0,    28,    29,    30,    31,     0,    32,     0,     0,     0,
+       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
+      40,    41,    42,     0,     0,    43,    44,     0,     0,     0,
+       0,    45,     0,     0,     0,    46,     2,     3,     4,     5,
        0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    15,    16,     0,    17,     0,    18,     0,     0,
-       0,    19,     0,    20,    21,    22,     0,     0,    23,     0,
+       0,    14,    68,    16,     0,    17,   324,    18,     0,     0,
+       0,    19,     0,    20,    21,    22,     0,     0,     0,     0,
        0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
-       0,     0,     0,    28,    29,    30,    31,     0,    32,     0,
+       0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
        0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,    39,    40,    41,    42,     0,     0,    43,    44,     0,
-       0,     0,    -9,    45,     0,     0,     0,    46,     2,     3,
+       0,    39,    40,     0,    42,     0,     0,    43,    44,     0,
+       0,     0,    66,    45,     0,     0,     0,    46,     2,     3,
        4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    15,    16,     0,    17,     0,    18,
+      12,    13,     0,    14,    68,    16,     0,    17,     0,    18,
        0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
-      23,     0,     0,     0,     0,    24,    25,    26,     0,     0,
-       0,    27,     0,     0,     0,    28,    29,    30,    31,     0,
+       0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
+       0,    27,     0,     0,     0,     0,     0,    30,    31,     0,
       32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
        0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     0,     0,    39,    40,    41,    42,     0,     0,    43,
-      44,     0,     0,     0,     0,    45,     0,     0,     0,    46,
+      38,     0,     0,    39,    40,     0,    42,     0,     0,    43,
+      44,     0,     0,     0,    66,    45,     0,     0,     0,    46,
        2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
        0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
-     324,    18,     0,     0,     0,    19,     0,    20,    21,    22,
+       0,    18,     0,     0,     0,    19,     0,    20,    21,    22,
        0,     0,     0,     0,     0,     0,     0,    24,    25,    26,
        0,     0,     0,    27,     0,     0,     0,     0,     0,    30,
       31,     0,    32,     0,     0,     0,     0,     0,     0,     0,
        0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
       36,    37,    38,     0,     0,    39,    40,     0,    42,     0,
-       0,    43,    44,     0,     0,     0,    66,    45,     0,     0,
+       0,    43,    44,     0,     0,     0,     0,    45,     0,     0,
        0,    46,     2,     3,     4,     5,     0,     6,     7,     8,
        9,    10,     0,    11,    12,    13,     0,    14,    68,    16,
-       0,    17,     0,    18,     0,     0,     0,    19,     0,    20,
-      21,    22,     0,     0,     0,     0,     0,     0,     0,    24,
-      25,    26,     0,     0,     0,    27,     0,     0,     0,     0,
-       0,    30,    31,     0,    32,     0,     0,     0,     0,     0,
-       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-      34,    35,    36,    37,    38,     0,     0,    39,    40,     0,
-      42,     0,     0,    43,    44,     0,     0,     0,    66,    45,
-       0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,     0,    18,     0,     0,     0,    19,
-       0,    20,    21,    22,     0,     0,     0,     0,     0,     0,
-       0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
-       0,     0,     0,    30,    31,     0,    32,     0,     0,     0,
-       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
-      40,     0,    42,     0,     0,    43,    44,     0,     0,     0,
-       0,    45,     0,     0,     0,    46,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    68,    16,   207,    17,     0,    18,     0,     0,
-       0,    19,     0,    20,    21,   135,   136,     0,     0,   137,
-     138,   139,   140,    24,   141,    26,     0,   142,   143,   144,
-       0,     0,     0,     0,     0,    30,    31,     0,    32,     0,
-       0,     0,   145,   146,   147,   148,   149,    33,    66,     0,
-       0,   150,   151,     0,    34,    35,    36,    37,    38,     0,
-       0,     0,    40,     0,    42,     0,     0,    43,    44,     2,
-       3,     4,     5,    45,     0,     0,     0,    46,     0,     0,
-      11,    12,    13,     0,    14,    68,    16,     0,    17,     0,
-       0,     0,     0,     0,     0,    87,     0,     0,     0,     0,
-      88,     0,    89,    90,    91,    92,    69,     0,    26,     0,
-       2,     3,     4,     5,     0,     0,     0,     0,     0,     0,
-       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
-      33,     0,     0,     0,     0,     0,    87,    34,    35,    36,
-      37,    38,     0,    89,     0,    91,     0,    69,     0,    26,
-      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
-      46,   107,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     2,     3,     4,     5,     0,     0,     0,
-       0,    43,    44,     0,    11,    12,    13,    45,    14,    68,
-      16,    46,    17,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      69,     0,    26,     2,     3,     4,     5,     0,     0,     0,
-       0,     0,     0,     0,    11,    12,    13,     0,    14,    68,
-      16,     0,    17,     0,    33,     0,     0,     0,     0,     0,
-       0,    34,    35,    36,    37,    38,     0,     0,     0,     0,
-      69,     0,    26,     0,    43,    44,     0,     0,     0,     0,
-      45,     0,     0,     0,    46,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
-       0,    34,    35,    36,    37,    38,     2,     3,     4,     5,
-       0,     0,     0,     0,    43,    44,     0,    11,    12,    13,
-      73,    14,    68,    16,    46,    17,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    69,     0,    26,     2,     3,     4,     5,
+     207,    17,     0,    18,     0,     0,     0,    19,     0,    20,
+      21,   135,   136,     0,     0,   137,   138,   139,   140,    24,
+     141,    26,     0,   142,   143,   144,     0,     0,     0,     0,
+       0,    30,    31,     0,    32,     0,     0,     0,   145,   146,
+     147,   148,   149,    33,    66,     0,     0,   150,   151,     0,
+      34,    35,    36,    37,    38,     0,     0,     0,    40,     0,
+      42,     0,     0,    43,    44,     2,     3,     4,     5,    45,
+       0,     0,     0,    46,     0,     0,    11,    12,    13,     0,
+      14,    68,    16,     0,    17,     0,     0,     0,     0,     0,
+       0,    87,     0,     0,     0,     0,    88,     0,    89,    90,
+      91,    92,    69,     0,    26,     0,     2,     3,     4,     5,
        0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
-       0,    14,    68,    16,     0,    17,     0,    33,     0,     0,
-       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,     0,     0,    69,     0,    26,     0,    43,    44,     0,
-       0,     0,     0,    78,     0,     0,     0,    46,     0,     0,
+       0,    14,    68,    16,     0,    17,    33,     0,     0,     0,
+       0,     0,    87,    34,    35,    36,    37,    38,     0,    89,
+       0,    91,     0,    69,     0,    26,    43,    44,     0,     0,
+       0,     0,    45,     0,     0,     0,    46,   107,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
-       0,   169,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,     0,     0,     0,     0,     0,     0,    43,    44,     0,
-       0,     0,     0,    81,   135,   136,     0,    46,   137,   138,
-     139,   140,     0,   141,   170,   171,   142,   143,   144,     0,
-     183,     0,     0,     0,     0,     0,     0,   184,     0,     0,
+       0,     0,     0,     0,    34,    35,    36,    37,    38,     2,
+       3,     4,     5,     0,     0,     0,     0,    43,    44,     0,
+      11,    12,    13,    45,    14,    68,    16,    46,    17,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    69,     0,    26,     2,
+       3,     4,     5,     0,     0,     0,     0,     0,     0,     0,
+      11,    12,    13,     0,    14,    68,    16,     0,    17,     0,
+      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
+      37,    38,     0,     0,     0,     0,    69,     0,    26,     0,
+      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
+      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
+      37,    38,     2,     3,     4,     5,     0,     0,     0,     0,
+      43,    44,     0,    11,    12,    13,    73,    14,    68,    16,
+      46,    17,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    69,
+       0,    26,     2,     3,     4,     5,     0,     0,     0,     0,
+       0,     0,     0,    11,    12,    13,     0,    14,    68,    16,
+       0,    17,     0,    33,     0,     0,     0,     0,     0,     0,
+      34,    35,    36,    37,    38,     0,     0,     0,     0,    69,
+       0,    26,     0,    43,    44,     0,     0,     0,     0,    78,
+       0,     0,     0,    46,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,     0,   169,     0,     0,
+      34,    35,    36,    37,    38,     0,     0,     0,     0,     0,
+       0,     0,     0,    43,    44,     0,     0,     0,     0,    81,
+     135,   136,     0,    46,   137,   138,   139,   140,     0,   141,
+     170,   171,   142,   143,   144,     0,   183,     0,     0,     0,
+       0,     0,     0,   184,     0,     0,     0,   145,   146,   147,
+     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
+     185,     0,     0,     0,     0,     0,     0,   186,     0,     0,
        0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
      150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,   185,     0,     0,     0,     0,     0,
-       0,   186,     0,     0,     0,   145,   146,   147,   148,   149,
+     142,   143,   144,     0,   187,     0,     0,     0,     0,     0,
+       0,   188,     0,     0,     0,   145,   146,   147,   148,   149,
        0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,   187,     0,
-       0,     0,     0,     0,     0,   188,     0,     0,     0,   145,
+       0,   141,     0,     0,   142,   143,   144,     0,   189,     0,
+       0,     0,     0,     0,     0,   190,     0,     0,     0,   145,
      146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
      137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,   189,     0,     0,     0,     0,     0,     0,   190,
+     144,     0,   277,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
      135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,     0,   277,     0,     0,     0,
+       0,     0,   142,   143,   144,     0,   278,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
      148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
      139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-     278,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     279,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
      150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,   279,     0,     0,     0,     0,     0,
+     142,   143,   144,     0,   280,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
        0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,   280,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
+       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
+       0,     0,     0,     0,     0,   241,     0,     0,     0,   145,
      146,   147,   148,   149,     0,     0,   135,   136,   150,   151,
      137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,     0,     0,     0,     0,     0,     0,     0,   241,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
+     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   180,   242,   145,   146,   147,   148,   149,     0,     0,
      135,   136,   150,   151,   137,   138,   139,   140,     0,   141,
        0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   180,   242,   145,   146,   147,
+       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
      148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
      139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   191,   192,     0,     0,     0,     0,
        0,   145,   146,   147,   148,   149,     0,     0,   135,   136,
      150,   151,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,     0,     0,     0,     0,   191,   192,
+     142,   143,   144,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,     0,   135,   136,   150,   151,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
-     146,   147,   148,   149,     0,     0,     0,   195,   150,   151,
-     135,   136,     0,     0,   137,   138,   139,   140,     0,   141,
+       0,     0,     0,   195,   150,   151,   135,   136,     0,     0,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
+     135,   136,   150,   151,   137,   138,     0,     0,     0,   141,
        0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
-     148,   149,     0,     0,   135,   136,   150,   151,   137,   138,
-       0,     0,     0,   141,     0,     0,   142,   143,   144,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   145,   146,   147,   148,   149,     0,     0,     0,     0,
-     150,   151
+     148,   149,     0,     0,     0,     0,   150,   151
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    56,    55,    46,    31,     4,     0,    36,     7,     8,
-       9,   300,    54,    12,    13,    14,    15,    54,   100,   234,
-       1,    34,    21,   105,    32,    24,    13,    77,    15,    58,
-     245,    30,    31,    76,    33,    34,    35,    36,    37,    38,
-      83,    54,   331,   304,    43,    44,    45,    46,    28,    91,
-      58,   101,   102,    98,    91,    64,    13,    14,    57,   320,
-     105,    45,   315,    47,   100,    98,    47,    94,   321,   105,
-      69,    28,    74,    50,    73,    77,    28,    76,   100,    78,
-     100,   108,    81,   105,    83,   105,    73,    28,    87,    74,
-      89,    78,    77,    95,    96,    56,    57,    28,   205,   101,
-     102,   208,   101,    28,    98,    52,    53,    92,    93,    94,
-      95,    96,   200,    28,   202,    28,   101,   102,   100,    27,
-      28,   104,   105,   105,    52,    53,   291,   292,   128,    28,
-      28,   130,   131,    99,    99,    91,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   134,   153,   105,   105,    45,   157,   168,
-      28,    52,   105,   105,    28,    28,   105,   166,    28,    28,
-     179,   170,   171,    28,   173,   174,    32,   176,   177,    28,
-     268,   180,   270,   290,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   203,   105,   303,   285,   197,    32,
-      54,   308,   309,    28,   311,    36,    58,    52,   207,    32,
-      32,   299,   267,    32,    32,   300,   128,   260,   320,    31,
-     327,   169,   310,    -1,    -1,    -1,    -1,   315,    -1,    -1,
-      -1,   319,   320,    -1,    -1,    -1,    -1,    -1,    74,    -1,
-     328,    77,   241,   242,    -1,   333,   227,    -1,   355,   356,
-     338,    -1,   340,    -1,   342,    -1,    -1,    93,    94,    95,
-      96,   260,    -1,   318,   317,   101,   102,    -1,    -1,    -1,
-     323,   359,   360,   361,   329,    -1,    -1,   286,   277,   278,
-     279,   280,    -1,    -1,    -1,   284,    -1,    -1,    -1,    -1,
-      -1,    -1,   273,    -1,   303,   276,    -1,   352,    -1,   298,
-      -1,    -1,    -1,    -1,   313,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,    56,    55,     4,     0,    32,     7,     8,     9,    46,
+      31,    12,    13,    14,    15,    54,   300,   234,     1,    13,
+      21,    15,    54,    24,   304,    77,    36,    98,   245,    30,
+      31,    58,    33,    34,    35,    36,    37,    38,    28,    76,
+     320,    34,    43,    44,    45,    46,    83,   331,    58,   101,
+     102,    98,    91,    64,    13,    14,    57,   315,   105,    91,
+     100,    54,   100,   321,    47,   105,   100,   105,    69,    28,
+      50,   105,    73,    94,    28,    76,   100,    78,   100,    73,
+      81,   105,    83,   105,    78,    28,    87,   108,    89,    74,
+      56,    57,    77,    74,    28,   205,    77,    45,   208,    47,
+     101,    28,    98,    52,    53,   104,   105,    92,    93,    94,
+      95,    96,    93,    94,    95,    96,   101,   102,    27,    28,
+     101,   102,    52,    53,   291,   292,    28,    28,   128,   130,
+     131,    28,    28,    91,   135,   136,   137,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   134,   153,    99,    99,   105,   157,   168,   105,    45,
+      28,    52,    28,   105,   105,   166,    28,   105,   179,   170,
+     171,    28,   173,   174,    28,   176,   177,    28,    28,   180,
+     290,   105,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   203,   303,    74,    32,   197,    77,   308,   309,
+      32,   311,    54,    28,    28,    36,   207,    52,    28,    58,
+      32,    32,   267,   105,    32,    95,    96,   327,    32,   300,
+     128,   101,   102,   260,   320,   169,   200,    31,   202,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   341,    -1,   343,    -1,    -1,    -1,   347,   348,
-      -1,    -1,    -1,    -1,     0,     1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   354,   355,    12,    13,    14,    15,
+     241,   242,    -1,    -1,   227,    -1,    -1,    -1,   358,   359,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   260,
+      -1,    -1,    -1,   318,   317,    -1,    -1,    -1,    -1,    -1,
+     323,    -1,    -1,    -1,   329,   286,   277,   278,   279,   280,
+      -1,    -1,    -1,   284,    -1,    -1,    -1,    -1,    -1,    -1,
+     273,    -1,   303,   276,   268,    -1,   270,   298,    -1,    -1,
+     355,    -1,   313,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   285,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   299,    -1,    -1,    -1,    -1,
+      -1,    -1,   343,    -1,   345,    -1,   310,    -1,   349,   350,
+      -1,   315,    -1,    -1,    -1,   319,   320,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   328,    -1,    -1,   357,   358,   333,
+      -1,    -1,    -1,    -1,    -1,    -1,   340,    -1,   342,    -1,
+     344,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   363,
+     364,   365,    12,    13,    14,    15,    -1,    17,    18,    19,
+      20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
+      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,
+      40,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    49,
+      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,
+      60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    89,
+      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,    99,
+      -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
+      28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
+      -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,
+      -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,
+      -1,    59,    60,    61,    62,    -1,    64,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
+      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
+      88,    89,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
+      -1,    99,    -1,    -1,    -1,   103,    12,    13,    14,    15,
       -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
-      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,    -1,
+      -1,    27,    28,    29,    -1,    31,    32,    33,    -1,    -1,
+      -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
-      -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
       -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    87,    88,    89,    90,    -1,    -1,    93,    94,    -1,
+      -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,
       -1,    -1,    98,    99,    -1,    -1,    -1,   103,    12,    13,
       14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
       24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    33,
       -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
-      44,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
-      -1,    55,    -1,    -1,    -1,    59,    60,    61,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
+      -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
       64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
       -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    87,    88,    89,    90,    -1,    -1,    93,
-      94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
+      84,    -1,    -1,    87,    88,    -1,    90,    -1,    -1,    93,
+      94,    -1,    -1,    -1,    98,    99,    -1,    -1,    -1,   103,
       12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
       -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
-      32,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
+      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
       -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,
       62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
       82,    83,    84,    -1,    -1,    87,    88,    -1,    90,    -1,
-      -1,    93,    94,    -1,    -1,    -1,    98,    99,    -1,    -1,
+      -1,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,
       -1,   103,    12,    13,    14,    15,    -1,    17,    18,    19,
       20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
-      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,
-      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
-      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    -1,
-      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,    99,
-      -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,    17,
-      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
-      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,
-      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
-      88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
-      -1,    99,    -1,    -1,    -1,   103,    12,    13,    14,    15,
-      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
-      -1,    27,    28,    29,    54,    31,    -1,    33,    -1,    -1,
-      -1,    37,    -1,    39,    40,    65,    66,    -1,    -1,    69,
-      70,    71,    72,    49,    74,    51,    -1,    77,    78,    79,
-      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
-      -1,    -1,    92,    93,    94,    95,    96,    73,    98,    -1,
-      -1,   101,   102,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    -1,    88,    -1,    90,    -1,    -1,    93,    94,    12,
-      13,    14,    15,    99,    -1,    -1,    -1,   103,    -1,    -1,
-      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
-      -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,
-      43,    -1,    45,    46,    47,    48,    49,    -1,    51,    -1,
-      12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
-      73,    -1,    -1,    -1,    -1,    -1,    38,    80,    81,    82,
-      83,    84,    -1,    45,    -1,    47,    -1,    49,    -1,    51,
-      93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,
-     103,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    12,    13,    14,    15,    -1,    -1,    -1,
-      -1,    93,    94,    -1,    23,    24,    25,    99,    27,    28,
-      29,   103,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      49,    -1,    51,    12,    13,    14,    15,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,    28,
-      29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,
-      49,    -1,    51,    -1,    93,    94,    -1,    -1,    -1,    -1,
-      99,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    82,    83,    84,    12,    13,    14,    15,
-      -1,    -1,    -1,    -1,    93,    94,    -1,    23,    24,    25,
-      99,    27,    28,    29,   103,    31,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,    15,
+      54,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,
+      40,    65,    66,    -1,    -1,    69,    70,    71,    72,    49,
+      74,    51,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    61,    62,    -1,    64,    -1,    -1,    -1,    92,    93,
+      94,    95,    96,    73,    98,    -1,    -1,   101,   102,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    -1,    88,    -1,
+      90,    -1,    -1,    93,    94,    12,    13,    14,    15,    99,
+      -1,    -1,    -1,   103,    -1,    -1,    23,    24,    25,    -1,
+      27,    28,    29,    -1,    31,    -1,    -1,    -1,    -1,    -1,
+      -1,    38,    -1,    -1,    -1,    -1,    43,    -1,    45,    46,
+      47,    48,    49,    -1,    51,    -1,    12,    13,    14,    15,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,    25,
-      -1,    27,    28,    29,    -1,    31,    -1,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    -1,    -1,    49,    -1,    51,    -1,    93,    94,    -1,
-      -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,    -1,
+      -1,    27,    28,    29,    -1,    31,    73,    -1,    -1,    -1,
+      -1,    -1,    38,    80,    81,    82,    83,    84,    -1,    45,
+      -1,    47,    -1,    49,    -1,    51,    93,    94,    -1,    -1,
+      -1,    -1,    99,    -1,    -1,    -1,   103,    63,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
-      -1,    42,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    -1,
-      -1,    -1,    -1,    99,    65,    66,    -1,   103,    69,    70,
-      71,    72,    -1,    74,    75,    76,    77,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    12,
+      13,    14,    15,    -1,    -1,    -1,    -1,    93,    94,    -1,
+      23,    24,    25,    99,    27,    28,    29,   103,    31,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    12,
+      13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
+      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
+      83,    84,    -1,    -1,    -1,    -1,    49,    -1,    51,    -1,
+      93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,
+     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
+      83,    84,    12,    13,    14,    15,    -1,    -1,    -1,    -1,
+      93,    94,    -1,    23,    24,    25,    99,    27,    28,    29,
+     103,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      -1,    51,    12,    13,    14,    15,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    23,    24,    25,    -1,    27,    28,    29,
+      -1,    31,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,    49,
+      -1,    51,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
+      -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    -1,    -1,    -1,    42,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
+      65,    66,    -1,   103,    69,    70,    71,    72,    -1,    74,
+      75,    76,    77,    78,    79,    -1,    47,    -1,    -1,    -1,
+      -1,    -1,    -1,    54,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
       47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,
       -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
      101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
@@ -1249,7 +1259,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,
       93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
       69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
+      79,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
       65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
       -1,    -1,    77,    78,    79,    -1,    47,    -1,    -1,    -1,
@@ -1262,34 +1272,30 @@ static const yytype_int16 yycheck[] =
       77,    78,    79,    -1,    47,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
       -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,
       93,    94,    95,    96,    -1,    -1,    65,    66,   101,   102,
       69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    56,    91,    92,    93,    94,    95,    96,    -1,    -1,
       65,    66,   101,   102,    69,    70,    71,    72,    -1,    74,
       -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    56,    91,    92,    93,    94,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
       95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
       71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,    -1,
       -1,    92,    93,    94,    95,    96,    -1,    -1,    65,    66,
      101,   102,    69,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    85,    86,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    -1,    65,    66,   101,   102,    69,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    -1,    -1,   100,   101,   102,
-      65,    66,    -1,    -1,    69,    70,    71,    72,    -1,    74,
+      -1,    -1,    -1,   100,   101,   102,    65,    66,    -1,    -1,
+      69,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+      65,    66,   101,   102,    69,    70,    -1,    -1,    -1,    74,
       -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
-      95,    96,    -1,    -1,    65,    66,   101,   102,    69,    70,
-      -1,    -1,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,
-     101,   102
+      95,    96,    -1,    -1,    -1,    -1,   101,   102
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1302,17 +1308,17 @@ static const yytype_uint8 yystos[] =
       61,    62,    64,    73,    80,    81,    82,    83,    84,    87,
       88,    89,    90,    93,    94,    99,   103,   107,   112,   113,
      114,   115,   116,   125,   126,   127,   132,   133,   134,   135,
-     136,   140,   143,   145,   148,   151,    98,   108,    28,    49,
-     134,   134,   134,    99,   134,   153,    28,   134,    99,   153,
-     134,    99,   153,   144,    50,    28,   137,    38,    43,    45,
+     136,   140,   143,   145,   148,   152,    98,   108,    28,    49,
+     134,   134,   134,    99,   134,   154,    28,   134,    99,   154,
+     134,    99,   154,   144,    50,    28,   137,    38,    43,    45,
       46,    47,    48,   134,   141,   142,    28,   134,    56,    57,
       13,    14,    28,    28,    28,    28,   134,    63,   141,   142,
       28,   139,   134,   134,   134,   134,   134,   134,    28,   138,
-      28,    99,   134,   134,   134,   134,   152,     0,   108,   122,
+      28,    99,   134,   134,   134,   134,   153,     0,   108,   122,
      123,    91,   122,   114,   134,    65,    66,    69,    70,    71,
       72,    74,    77,    78,    79,    92,    93,    94,    95,    96,
-     101,   102,   129,    99,   134,   134,   153,   105,   152,   153,
-     134,   152,   152,   105,   134,   134,    45,   142,   146,    42,
+     101,   102,   129,    99,   134,   134,   154,   105,   153,   154,
+     134,   153,   153,   105,   134,   134,    45,   142,   146,    42,
       75,    76,    28,    54,    91,   134,    54,    91,    52,   147,
       56,   142,   105,    47,    54,    47,    54,    47,    54,    47,
       54,    85,    86,   105,    28,   100,   104,   105,   112,   129,
@@ -1324,15 +1330,15 @@ static const yytype_uint8 yystos[] =
      134,   134,   134,   134,   134,   134,   134,   134,    28,   100,
      105,   134,   108,   115,   130,   124,   130,   129,   131,   134,
      131,   105,   108,   149,   134,   134,   149,    47,    47,    47,
-      47,   152,    32,    34,    54,   114,   130,   130,    28,   105,
-     150,   108,   108,   134,   134,   134,   134,   100,    54,   134,
-     130,    32,    58,   110,   129,    32,    28,   131,   150,   150,
+      47,   153,    32,    34,    54,   114,   130,   130,    28,   105,
+     151,   108,   108,   134,   134,   134,   134,   100,    54,   134,
+     130,    32,    58,   110,   129,    32,    28,   131,   151,   151,
      134,   130,    36,   110,   111,   119,   120,   128,   129,   131,
      118,   119,   121,   128,    32,   131,   131,   130,   131,   129,
-     120,   130,   122,   114,   130,   121,   130,   122,   131,   130,
-     114,   110,   117,    52,   130,    32,    32,    52,    53,   130,
-      32,   130,   129,   130,   129,   129,   129,    32,   114,   115,
-     131,   131,   130,   130,   130
+     120,   130,   122,   114,   130,   121,   130,   122,    28,   150,
+     131,   130,   114,   110,   117,    52,   130,    32,    32,    52,
+      53,   105,   130,    32,   130,   129,   130,   129,   129,   129,
+      28,    32,   114,   115,   131,   131,   130,   130,   130
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -3044,11 +3050,11 @@ yyreduce:
 #line 649 "engines/director/lingo/lingo-gr.y"
     {	// D3
 		g_lingo->code1(g_lingo->c_procret);
-		g_lingo->define(*(yyvsp[(1) - (7)].s), (yyvsp[(2) - (7)].code), (yyvsp[(3) - (7)].narg));
+		g_lingo->define(*(yyvsp[(1) - (8)].s), (yyvsp[(2) - (8)].code), (yyvsp[(3) - (8)].narg));
 		g_lingo->_indef = false;
 		g_lingo->_ignoreMe = false;
 
-		checkEnd((yyvsp[(7) - (7)].s), (yyvsp[(1) - (7)].s)->c_str(), false); ;}
+		checkEnd((yyvsp[(7) - (8)].s), (yyvsp[(1) - (8)].s)->c_str(), false); ;}
     break;
 
   case 158:
@@ -3085,13 +3091,13 @@ yyreduce:
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 164:
-#line 670 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 675 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 165:
-#line 674 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 679 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3100,34 +3106,34 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 166:
-#line 682 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 687 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 167:
-#line 683 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 688 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 168:
-#line 684 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 689 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 169:
-#line 687 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 692 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 170:
-#line 688 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 693 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3131 "engines/director/lingo/lingo-gr.cpp"
+#line 3137 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3341,6 +3347,6 @@ yyreturn:
 }
 
 
-#line 691 "engines/director/lingo/lingo-gr.y"
+#line 696 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 9bc9c09..8eb7913 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -646,7 +646,7 @@ defn: tMACRO ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*$2, $4, $5 + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; }
-	| on begin  argdef nl argstore stmtlist ENDCLAUSE {	// D3
+	| on begin  argdef nl argstore stmtlist ENDCLAUSE endargdef {	// D3
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*$1, $2, $3);
 		g_lingo->_indef = false;
@@ -667,6 +667,11 @@ argdef:  /* nothing */ 		{ $$ = 0; }
 	| argdef nl ',' ID		{ g_lingo->codeArg($4); $$ = $1 + 1; }
 	;
 
+endargdef:	/* nothing */
+	| ID
+	| endargdef ',' ID
+	;
+
 argstore:	  /* nothing */		{ g_lingo->codeArgStore(); }
 	;
 
diff --git a/engines/director/lingo/tests/events.lingo b/engines/director/lingo/tests/events.lingo
index a04a12d..86ca9bc 100644
--- a/engines/director/lingo/tests/events.lingo
+++ b/engines/director/lingo/tests/events.lingo
@@ -10,3 +10,8 @@ on annoy howMuch
 	beep random(howMuch)
 	alert "Aren't handlers fun?"
 end annoy
+
+on annoy2 howMuch
+	beep random(howMuch)
+	alert "Aren't handlers fun?"
+end annoy2 howMuch




More information about the Scummvm-git-logs mailing list