Add an option to support for GL_OES_EGL_image_external.

Comes with this extension is the new sampler type samplerExternalOES.

ANGLEBUG=175
TEST=compile the attached shader file
Review URL: http://codereview.appspot.com/4809076

git-svn-id: https://angleproject.googlecode.com/svn/trunk@728 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/glslang_tab.cpp b/src/compiler/glslang_tab.cpp
index 47ca2ee..e1f033e 100644
--- a/src/compiler/glslang_tab.cpp
+++ b/src/compiler/glslang_tab.cpp
@@ -106,57 +106,58 @@
      WHILE = 295,
      SAMPLER2D = 296,
      SAMPLERCUBE = 297,
-     IDENTIFIER = 298,
-     TYPE_NAME = 299,
-     FLOATCONSTANT = 300,
-     INTCONSTANT = 301,
-     BOOLCONSTANT = 302,
-     FIELD_SELECTION = 303,
-     LEFT_OP = 304,
-     RIGHT_OP = 305,
-     INC_OP = 306,
-     DEC_OP = 307,
-     LE_OP = 308,
-     GE_OP = 309,
-     EQ_OP = 310,
-     NE_OP = 311,
-     AND_OP = 312,
-     OR_OP = 313,
-     XOR_OP = 314,
-     MUL_ASSIGN = 315,
-     DIV_ASSIGN = 316,
-     ADD_ASSIGN = 317,
-     MOD_ASSIGN = 318,
-     LEFT_ASSIGN = 319,
-     RIGHT_ASSIGN = 320,
-     AND_ASSIGN = 321,
-     XOR_ASSIGN = 322,
-     OR_ASSIGN = 323,
-     SUB_ASSIGN = 324,
-     LEFT_PAREN = 325,
-     RIGHT_PAREN = 326,
-     LEFT_BRACKET = 327,
-     RIGHT_BRACKET = 328,
-     LEFT_BRACE = 329,
-     RIGHT_BRACE = 330,
-     DOT = 331,
-     COMMA = 332,
-     COLON = 333,
-     EQUAL = 334,
-     SEMICOLON = 335,
-     BANG = 336,
-     DASH = 337,
-     TILDE = 338,
-     PLUS = 339,
-     STAR = 340,
-     SLASH = 341,
-     PERCENT = 342,
-     LEFT_ANGLE = 343,
-     RIGHT_ANGLE = 344,
-     VERTICAL_BAR = 345,
-     CARET = 346,
-     AMPERSAND = 347,
-     QUESTION = 348
+     SAMPLER_EXTERNAL_OES = 298,
+     IDENTIFIER = 299,
+     TYPE_NAME = 300,
+     FLOATCONSTANT = 301,
+     INTCONSTANT = 302,
+     BOOLCONSTANT = 303,
+     FIELD_SELECTION = 304,
+     LEFT_OP = 305,
+     RIGHT_OP = 306,
+     INC_OP = 307,
+     DEC_OP = 308,
+     LE_OP = 309,
+     GE_OP = 310,
+     EQ_OP = 311,
+     NE_OP = 312,
+     AND_OP = 313,
+     OR_OP = 314,
+     XOR_OP = 315,
+     MUL_ASSIGN = 316,
+     DIV_ASSIGN = 317,
+     ADD_ASSIGN = 318,
+     MOD_ASSIGN = 319,
+     LEFT_ASSIGN = 320,
+     RIGHT_ASSIGN = 321,
+     AND_ASSIGN = 322,
+     XOR_ASSIGN = 323,
+     OR_ASSIGN = 324,
+     SUB_ASSIGN = 325,
+     LEFT_PAREN = 326,
+     RIGHT_PAREN = 327,
+     LEFT_BRACKET = 328,
+     RIGHT_BRACKET = 329,
+     LEFT_BRACE = 330,
+     RIGHT_BRACE = 331,
+     DOT = 332,
+     COMMA = 333,
+     COLON = 334,
+     EQUAL = 335,
+     SEMICOLON = 336,
+     BANG = 337,
+     DASH = 338,
+     TILDE = 339,
+     PLUS = 340,
+     STAR = 341,
+     SLASH = 342,
+     PERCENT = 343,
+     LEFT_ANGLE = 344,
+     RIGHT_ANGLE = 345,
+     VERTICAL_BAR = 346,
+     CARET = 347,
+     AMPERSAND = 348,
+     QUESTION = 349
    };
 #endif
 /* Tokens.  */
@@ -200,57 +201,58 @@
 #define WHILE 295
 #define SAMPLER2D 296
 #define SAMPLERCUBE 297
-#define IDENTIFIER 298
-#define TYPE_NAME 299
-#define FLOATCONSTANT 300
-#define INTCONSTANT 301
-#define BOOLCONSTANT 302
-#define FIELD_SELECTION 303
-#define LEFT_OP 304
-#define RIGHT_OP 305
-#define INC_OP 306
-#define DEC_OP 307
-#define LE_OP 308
-#define GE_OP 309
-#define EQ_OP 310
-#define NE_OP 311
-#define AND_OP 312
-#define OR_OP 313
-#define XOR_OP 314
-#define MUL_ASSIGN 315
-#define DIV_ASSIGN 316
-#define ADD_ASSIGN 317
-#define MOD_ASSIGN 318
-#define LEFT_ASSIGN 319
-#define RIGHT_ASSIGN 320
-#define AND_ASSIGN 321
-#define XOR_ASSIGN 322
-#define OR_ASSIGN 323
-#define SUB_ASSIGN 324
-#define LEFT_PAREN 325
-#define RIGHT_PAREN 326
-#define LEFT_BRACKET 327
-#define RIGHT_BRACKET 328
-#define LEFT_BRACE 329
-#define RIGHT_BRACE 330
-#define DOT 331
-#define COMMA 332
-#define COLON 333
-#define EQUAL 334
-#define SEMICOLON 335
-#define BANG 336
-#define DASH 337
-#define TILDE 338
-#define PLUS 339
-#define STAR 340
-#define SLASH 341
-#define PERCENT 342
-#define LEFT_ANGLE 343
-#define RIGHT_ANGLE 344
-#define VERTICAL_BAR 345
-#define CARET 346
-#define AMPERSAND 347
-#define QUESTION 348
+#define SAMPLER_EXTERNAL_OES 298
+#define IDENTIFIER 299
+#define TYPE_NAME 300
+#define FLOATCONSTANT 301
+#define INTCONSTANT 302
+#define BOOLCONSTANT 303
+#define FIELD_SELECTION 304
+#define LEFT_OP 305
+#define RIGHT_OP 306
+#define INC_OP 307
+#define DEC_OP 308
+#define LE_OP 309
+#define GE_OP 310
+#define EQ_OP 311
+#define NE_OP 312
+#define AND_OP 313
+#define OR_OP 314
+#define XOR_OP 315
+#define MUL_ASSIGN 316
+#define DIV_ASSIGN 317
+#define ADD_ASSIGN 318
+#define MOD_ASSIGN 319
+#define LEFT_ASSIGN 320
+#define RIGHT_ASSIGN 321
+#define AND_ASSIGN 322
+#define XOR_ASSIGN 323
+#define OR_ASSIGN 324
+#define SUB_ASSIGN 325
+#define LEFT_PAREN 326
+#define RIGHT_PAREN 327
+#define LEFT_BRACKET 328
+#define RIGHT_BRACKET 329
+#define LEFT_BRACE 330
+#define RIGHT_BRACE 331
+#define DOT 332
+#define COMMA 333
+#define COLON 334
+#define EQUAL 335
+#define SEMICOLON 336
+#define BANG 337
+#define DASH 338
+#define TILDE 339
+#define PLUS 340
+#define STAR 341
+#define SLASH 342
+#define PERCENT 343
+#define LEFT_ANGLE 344
+#define RIGHT_ANGLE 345
+#define VERTICAL_BAR 346
+#define CARET 347
+#define AMPERSAND 348
+#define QUESTION 349
 
 
 
@@ -578,22 +580,22 @@
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  69
+#define YYFINAL  70
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1362
+#define YYLAST   1381
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  94
+#define YYNTOKENS  95
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  78
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  193
+#define YYNRULES  194
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  296
+#define YYNSTATES  297
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   348
+#define YYMAXUTOK   349
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -635,7 +637,7 @@
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94
 };
 
 #if YYDEBUG
@@ -656,74 +658,74 @@
      298,   303,   306,   308,   311,   313,   315,   317,   320,   322,
      324,   327,   329,   331,   333,   335,   340,   342,   344,   346,
      348,   350,   352,   354,   356,   358,   360,   362,   364,   366,
-     368,   370,   372,   374,   376,   378,   380,   386,   391,   393,
-     396,   400,   402,   406,   408,   413,   415,   417,   419,   421,
-     423,   425,   427,   429,   431,   434,   435,   436,   442,   444,
-     446,   449,   453,   455,   458,   460,   463,   469,   473,   475,
-     477,   482,   483,   490,   491,   500,   501,   509,   511,   513,
-     515,   516,   519,   523,   526,   529,   532,   536,   539,   541,
-     544,   546,   548,   549
+     368,   370,   372,   374,   376,   378,   380,   382,   388,   393,
+     395,   398,   402,   404,   408,   410,   415,   417,   419,   421,
+     423,   425,   427,   429,   431,   433,   436,   437,   438,   444,
+     446,   448,   451,   455,   457,   460,   462,   465,   471,   475,
+     477,   479,   484,   485,   492,   493,   502,   503,   511,   513,
+     515,   517,   518,   521,   525,   528,   531,   534,   538,   541,
+     543,   546,   548,   550,   551
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     168,     0,    -1,    43,    -1,    95,    -1,    46,    -1,    45,
-      -1,    47,    -1,    70,   122,    71,    -1,    96,    -1,    97,
-      72,    98,    73,    -1,    99,    -1,    97,    76,    48,    -1,
-      97,    51,    -1,    97,    52,    -1,   122,    -1,   100,    -1,
-     101,    -1,    97,    76,   101,    -1,   103,    71,    -1,   102,
-      71,    -1,   104,    39,    -1,   104,    -1,   104,   120,    -1,
-     103,    77,   120,    -1,   105,    70,    -1,   140,    -1,    43,
-      -1,    48,    -1,    97,    -1,    51,   106,    -1,    52,   106,
-      -1,   107,   106,    -1,    84,    -1,    82,    -1,    81,    -1,
-     106,    -1,   108,    85,   106,    -1,   108,    86,   106,    -1,
-     108,    -1,   109,    84,   108,    -1,   109,    82,   108,    -1,
-     109,    -1,   110,    -1,   111,    88,   110,    -1,   111,    89,
-     110,    -1,   111,    53,   110,    -1,   111,    54,   110,    -1,
-     111,    -1,   112,    55,   111,    -1,   112,    56,   111,    -1,
-     112,    -1,   113,    -1,   114,    -1,   115,    -1,   116,    57,
-     115,    -1,   116,    -1,   117,    59,   116,    -1,   117,    -1,
-     118,    58,   117,    -1,   118,    -1,   118,    93,   122,    78,
-     120,    -1,   119,    -1,   106,   121,   120,    -1,    79,    -1,
-      60,    -1,    61,    -1,    62,    -1,    69,    -1,   120,    -1,
-     122,    77,   120,    -1,   119,    -1,   125,    80,    -1,   133,
-      80,    -1,     7,   138,   139,    80,    -1,   126,    71,    -1,
-     128,    -1,   127,    -1,   128,   130,    -1,   127,    77,   130,
-      -1,   135,    43,    70,    -1,   137,    43,    -1,   137,    43,
-      72,   123,    73,    -1,   136,   131,   129,    -1,   131,   129,
-      -1,   136,   131,   132,    -1,   131,   132,    -1,    -1,    33,
-      -1,    34,    -1,    35,    -1,   137,    -1,   134,    -1,   133,
-      77,    43,    -1,   133,    77,    43,    72,    73,    -1,   133,
-      77,    43,    72,   123,    73,    -1,   133,    77,    43,    79,
-     146,    -1,   135,    -1,   135,    43,    -1,   135,    43,    72,
-      73,    -1,   135,    43,    72,   123,    73,    -1,   135,    43,
-      79,   146,    -1,     3,    43,    -1,   137,    -1,   136,   137,
+     169,     0,    -1,    44,    -1,    96,    -1,    47,    -1,    46,
+      -1,    48,    -1,    71,   123,    72,    -1,    97,    -1,    98,
+      73,    99,    74,    -1,   100,    -1,    98,    77,    49,    -1,
+      98,    52,    -1,    98,    53,    -1,   123,    -1,   101,    -1,
+     102,    -1,    98,    77,   102,    -1,   104,    72,    -1,   103,
+      72,    -1,   105,    39,    -1,   105,    -1,   105,   121,    -1,
+     104,    78,   121,    -1,   106,    71,    -1,   141,    -1,    44,
+      -1,    49,    -1,    98,    -1,    52,   107,    -1,    53,   107,
+      -1,   108,   107,    -1,    85,    -1,    83,    -1,    82,    -1,
+     107,    -1,   109,    86,   107,    -1,   109,    87,   107,    -1,
+     109,    -1,   110,    85,   109,    -1,   110,    83,   109,    -1,
+     110,    -1,   111,    -1,   112,    89,   111,    -1,   112,    90,
+     111,    -1,   112,    54,   111,    -1,   112,    55,   111,    -1,
+     112,    -1,   113,    56,   112,    -1,   113,    57,   112,    -1,
+     113,    -1,   114,    -1,   115,    -1,   116,    -1,   117,    58,
+     116,    -1,   117,    -1,   118,    60,   117,    -1,   118,    -1,
+     119,    59,   118,    -1,   119,    -1,   119,    94,   123,    79,
+     121,    -1,   120,    -1,   107,   122,   121,    -1,    80,    -1,
+      61,    -1,    62,    -1,    63,    -1,    70,    -1,   121,    -1,
+     123,    78,   121,    -1,   120,    -1,   126,    81,    -1,   134,
+      81,    -1,     7,   139,   140,    81,    -1,   127,    72,    -1,
+     129,    -1,   128,    -1,   129,   131,    -1,   128,    78,   131,
+      -1,   136,    44,    71,    -1,   138,    44,    -1,   138,    44,
+      73,   124,    74,    -1,   137,   132,   130,    -1,   132,   130,
+      -1,   137,   132,   133,    -1,   132,   133,    -1,    -1,    33,
+      -1,    34,    -1,    35,    -1,   138,    -1,   135,    -1,   134,
+      78,    44,    -1,   134,    78,    44,    73,    74,    -1,   134,
+      78,    44,    73,   124,    74,    -1,   134,    78,    44,    80,
+     147,    -1,   136,    -1,   136,    44,    -1,   136,    44,    73,
+      74,    -1,   136,    44,    73,   124,    74,    -1,   136,    44,
+      80,   147,    -1,     3,    44,    -1,   138,    -1,   137,   138,
       -1,     9,    -1,     8,    -1,    37,    -1,     3,    37,    -1,
-      36,    -1,   139,    -1,   138,   139,    -1,     4,    -1,     5,
-      -1,     6,    -1,   140,    -1,   140,    72,   123,    73,    -1,
+      36,    -1,   140,    -1,   139,   140,    -1,     4,    -1,     5,
+      -1,     6,    -1,   141,    -1,   141,    73,   124,    74,    -1,
       39,    -1,    11,    -1,    12,    -1,    10,    -1,    27,    -1,
       28,    -1,    29,    -1,    21,    -1,    22,    -1,    23,    -1,
       24,    -1,    25,    -1,    26,    -1,    30,    -1,    31,    -1,
-      32,    -1,    41,    -1,    42,    -1,   141,    -1,    44,    -1,
-      38,    43,    74,   142,    75,    -1,    38,    74,   142,    75,
-      -1,   143,    -1,   142,   143,    -1,   137,   144,    80,    -1,
-     145,    -1,   144,    77,   145,    -1,    43,    -1,    43,    72,
-     123,    73,    -1,   120,    -1,   124,    -1,   150,    -1,   149,
-      -1,   147,    -1,   156,    -1,   157,    -1,   160,    -1,   167,
-      -1,    74,    75,    -1,    -1,    -1,    74,   151,   155,   152,
-      75,    -1,   154,    -1,   149,    -1,    74,    75,    -1,    74,
-     155,    75,    -1,   148,    -1,   155,   148,    -1,    80,    -1,
-     122,    80,    -1,    18,    70,   122,    71,   158,    -1,   148,
-      16,   148,    -1,   148,    -1,   122,    -1,   135,    43,    79,
-     146,    -1,    -1,    40,    70,   161,   159,    71,   153,    -1,
-      -1,    15,   162,   148,    40,    70,   122,    71,    80,    -1,
-      -1,    17,    70,   163,   164,   166,    71,   153,    -1,   156,
-      -1,   147,    -1,   159,    -1,    -1,   165,    80,    -1,   165,
-      80,   122,    -1,    14,    80,    -1,    13,    80,    -1,    20,
-      80,    -1,    20,   122,    80,    -1,    19,    80,    -1,   169,
-      -1,   168,   169,    -1,   170,    -1,   124,    -1,    -1,   125,
-     171,   154,    -1
+      32,    -1,    41,    -1,    42,    -1,    43,    -1,   142,    -1,
+      45,    -1,    38,    44,    75,   143,    76,    -1,    38,    75,
+     143,    76,    -1,   144,    -1,   143,   144,    -1,   138,   145,
+      81,    -1,   146,    -1,   145,    78,   146,    -1,    44,    -1,
+      44,    73,   124,    74,    -1,   121,    -1,   125,    -1,   151,
+      -1,   150,    -1,   148,    -1,   157,    -1,   158,    -1,   161,
+      -1,   168,    -1,    75,    76,    -1,    -1,    -1,    75,   152,
+     156,   153,    76,    -1,   155,    -1,   150,    -1,    75,    76,
+      -1,    75,   156,    76,    -1,   149,    -1,   156,   149,    -1,
+      81,    -1,   123,    81,    -1,    18,    71,   123,    72,   159,
+      -1,   149,    16,   149,    -1,   149,    -1,   123,    -1,   136,
+      44,    80,   147,    -1,    -1,    40,    71,   162,   160,    72,
+     154,    -1,    -1,    15,   163,   149,    40,    71,   123,    72,
+      81,    -1,    -1,    17,    71,   164,   165,   167,    72,   154,
+      -1,   157,    -1,   148,    -1,   160,    -1,    -1,   166,    81,
+      -1,   166,    81,   123,    -1,    14,    81,    -1,    13,    81,
+      -1,    20,    81,    -1,    20,   123,    81,    -1,    19,    81,
+      -1,   170,    -1,   169,   170,    -1,   171,    -1,   125,    -1,
+      -1,   126,   172,   155,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -742,13 +744,13 @@
     1316,  1336,  1412,  1421,  1444,  1447,  1453,  1461,  1469,  1477,
     1487,  1494,  1497,  1500,  1506,  1509,  1524,  1528,  1532,  1536,
     1545,  1550,  1555,  1560,  1565,  1570,  1575,  1580,  1585,  1590,
-    1596,  1602,  1608,  1613,  1618,  1623,  1636,  1649,  1657,  1660,
-    1675,  1707,  1711,  1717,  1725,  1741,  1745,  1749,  1750,  1756,
-    1757,  1758,  1759,  1760,  1764,  1765,  1765,  1765,  1775,  1776,
-    1781,  1784,  1794,  1797,  1803,  1804,  1808,  1816,  1820,  1830,
-    1835,  1852,  1852,  1857,  1857,  1864,  1864,  1872,  1875,  1881,
-    1884,  1890,  1894,  1901,  1908,  1915,  1922,  1933,  1942,  1946,
-    1953,  1956,  1962,  1962
+    1596,  1602,  1608,  1613,  1618,  1627,  1632,  1645,  1658,  1666,
+    1669,  1684,  1716,  1720,  1726,  1734,  1750,  1754,  1758,  1759,
+    1765,  1766,  1767,  1768,  1769,  1773,  1774,  1774,  1774,  1784,
+    1785,  1790,  1793,  1803,  1806,  1812,  1813,  1817,  1825,  1829,
+    1839,  1844,  1861,  1861,  1866,  1866,  1873,  1873,  1881,  1884,
+    1890,  1893,  1899,  1903,  1910,  1917,  1924,  1931,  1942,  1951,
+    1955,  1962,  1965,  1971,  1971
 };
 #endif
 
@@ -764,12 +766,12 @@
   "BVEC4", "IVEC2", "IVEC3", "IVEC4", "VEC2", "VEC3", "VEC4", "MATRIX2",
   "MATRIX3", "MATRIX4", "IN_QUAL", "OUT_QUAL", "INOUT_QUAL", "UNIFORM",
   "VARYING", "STRUCT", "VOID_TYPE", "WHILE", "SAMPLER2D", "SAMPLERCUBE",
-  "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "INTCONSTANT",
-  "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP", "INC_OP",
-  "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP",
-  "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN",
-  "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN",
-  "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
+  "SAMPLER_EXTERNAL_OES", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT",
+  "INTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP",
+  "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP",
+  "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN",
+  "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN",
+  "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
   "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON",
   "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH",
   "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET",
@@ -819,33 +821,33 @@
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348
+     345,   346,   347,   348,   349
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    94,    95,    96,    96,    96,    96,    96,    97,    97,
-      97,    97,    97,    97,    98,    99,   100,   100,   101,   101,
-     102,   102,   103,   103,   104,   105,   105,   105,   106,   106,
-     106,   106,   107,   107,   107,   108,   108,   108,   109,   109,
-     109,   110,   111,   111,   111,   111,   111,   112,   112,   112,
-     113,   114,   115,   116,   116,   117,   117,   118,   118,   119,
-     119,   120,   120,   121,   121,   121,   121,   121,   122,   122,
-     123,   124,   124,   124,   125,   126,   126,   127,   127,   128,
-     129,   129,   130,   130,   130,   130,   131,   131,   131,   131,
-     132,   133,   133,   133,   133,   133,   134,   134,   134,   134,
-     134,   134,   135,   135,   136,   136,   136,   136,   136,   137,
-     137,   138,   138,   138,   139,   139,   140,   140,   140,   140,
-     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
-     140,   140,   140,   140,   140,   140,   141,   141,   142,   142,
-     143,   144,   144,   145,   145,   146,   147,   148,   148,   149,
-     149,   149,   149,   149,   150,   151,   152,   150,   153,   153,
-     154,   154,   155,   155,   156,   156,   157,   158,   158,   159,
-     159,   161,   160,   162,   160,   163,   160,   164,   164,   165,
-     165,   166,   166,   167,   167,   167,   167,   167,   168,   168,
-     169,   169,   171,   170
+       0,    95,    96,    97,    97,    97,    97,    97,    98,    98,
+      98,    98,    98,    98,    99,   100,   101,   101,   102,   102,
+     103,   103,   104,   104,   105,   106,   106,   106,   107,   107,
+     107,   107,   108,   108,   108,   109,   109,   109,   110,   110,
+     110,   111,   112,   112,   112,   112,   112,   113,   113,   113,
+     114,   115,   116,   117,   117,   118,   118,   119,   119,   120,
+     120,   121,   121,   122,   122,   122,   122,   122,   123,   123,
+     124,   125,   125,   125,   126,   127,   127,   128,   128,   129,
+     130,   130,   131,   131,   131,   131,   132,   132,   132,   132,
+     133,   134,   134,   134,   134,   134,   135,   135,   135,   135,
+     135,   135,   136,   136,   137,   137,   137,   137,   137,   138,
+     138,   139,   139,   139,   140,   140,   141,   141,   141,   141,
+     141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
+     141,   141,   141,   141,   141,   141,   141,   142,   142,   143,
+     143,   144,   145,   145,   146,   146,   147,   148,   149,   149,
+     150,   150,   150,   150,   150,   151,   152,   153,   151,   154,
+     154,   155,   155,   156,   156,   157,   157,   158,   159,   159,
+     160,   160,   162,   161,   163,   161,   164,   161,   165,   165,
+     166,   166,   167,   167,   168,   168,   168,   168,   168,   169,
+     169,   170,   170,   172,   171
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -864,13 +866,13 @@
        4,     2,     1,     2,     1,     1,     1,     2,     1,     1,
        2,     1,     1,     1,     1,     4,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     5,     4,     1,     2,
-       3,     1,     3,     1,     4,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     0,     0,     5,     1,     1,
-       2,     3,     1,     2,     1,     2,     5,     3,     1,     1,
-       4,     0,     6,     0,     8,     0,     7,     1,     1,     1,
-       0,     2,     3,     2,     2,     2,     3,     2,     1,     2,
-       1,     1,     0,     3
+       1,     1,     1,     1,     1,     1,     1,     5,     4,     1,
+       2,     3,     1,     3,     1,     4,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     0,     0,     5,     1,
+       1,     2,     3,     1,     2,     1,     2,     5,     3,     1,
+       1,     4,     0,     6,     0,     8,     0,     7,     1,     1,
+       1,     0,     2,     3,     2,     2,     2,     3,     2,     1,
+       2,     1,     1,     0,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -880,97 +882,97 @@
 {
        0,     0,   111,   112,   113,     0,   105,   104,   119,   117,
      118,   123,   124,   125,   126,   127,   128,   120,   121,   122,
-     129,   130,   131,   108,   106,     0,   116,   132,   133,   135,
-     191,   192,     0,    76,    86,     0,    91,    96,     0,   102,
-       0,   109,   114,   134,     0,   188,   190,   107,   101,     0,
-       0,     0,    71,     0,    74,    86,     0,    87,    88,    89,
-      77,     0,    86,     0,    72,    97,   103,   110,     0,     1,
-     189,     0,     0,     0,     0,   138,     0,   193,    78,    83,
-      85,    90,     0,    92,    79,     0,     0,     2,     5,     4,
-       6,    27,     0,     0,     0,    34,    33,    32,     3,     8,
-      28,    10,    15,    16,     0,     0,    21,     0,    35,     0,
-      38,    41,    42,    47,    50,    51,    52,    53,    55,    57,
-      59,    70,     0,    25,    73,     0,   143,     0,   141,   137,
-     139,     0,     0,   173,     0,     0,     0,     0,     0,   155,
-     160,   164,    35,    61,    68,     0,   146,     0,   114,   149,
-     162,   148,   147,     0,   150,   151,   152,   153,    80,    82,
-      84,     0,     0,    98,     0,   145,   100,    29,    30,     0,
-      12,    13,     0,     0,    19,    18,     0,    20,    22,    24,
-      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   115,   136,     0,     0,   140,
-     184,   183,     0,   175,     0,   187,   185,     0,   171,   154,
-       0,    64,    65,    66,    67,    63,     0,     0,   165,   161,
-     163,     0,    93,     0,    95,    99,     7,     0,    14,    26,
-      11,    17,    23,    36,    37,    40,    39,    45,    46,    43,
-      44,    48,    49,    54,    56,    58,     0,     0,   142,     0,
-       0,     0,   186,     0,   156,    62,    69,     0,    94,     9,
-       0,   144,     0,   178,   177,   180,     0,   169,     0,     0,
-       0,    81,    60,     0,   179,     0,     0,   168,   166,     0,
-       0,   157,     0,   181,     0,     0,     0,   159,   172,   158,
-       0,   182,   176,   167,   170,   174
+     129,   130,   131,   108,   106,     0,   116,   132,   133,   134,
+     136,   192,   193,     0,    76,    86,     0,    91,    96,     0,
+     102,     0,   109,   114,   135,     0,   189,   191,   107,   101,
+       0,     0,     0,    71,     0,    74,    86,     0,    87,    88,
+      89,    77,     0,    86,     0,    72,    97,   103,   110,     0,
+       1,   190,     0,     0,     0,     0,   139,     0,   194,    78,
+      83,    85,    90,     0,    92,    79,     0,     0,     2,     5,
+       4,     6,    27,     0,     0,     0,    34,    33,    32,     3,
+       8,    28,    10,    15,    16,     0,     0,    21,     0,    35,
+       0,    38,    41,    42,    47,    50,    51,    52,    53,    55,
+      57,    59,    70,     0,    25,    73,     0,   144,     0,   142,
+     138,   140,     0,     0,   174,     0,     0,     0,     0,     0,
+     156,   161,   165,    35,    61,    68,     0,   147,     0,   114,
+     150,   163,   149,   148,     0,   151,   152,   153,   154,    80,
+      82,    84,     0,     0,    98,     0,   146,   100,    29,    30,
+       0,    12,    13,     0,     0,    19,    18,     0,    20,    22,
+      24,    31,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   115,   137,     0,     0,
+     141,   185,   184,     0,   176,     0,   188,   186,     0,   172,
+     155,     0,    64,    65,    66,    67,    63,     0,     0,   166,
+     162,   164,     0,    93,     0,    95,    99,     7,     0,    14,
+      26,    11,    17,    23,    36,    37,    40,    39,    45,    46,
+      43,    44,    48,    49,    54,    56,    58,     0,     0,   143,
+       0,     0,     0,   187,     0,   157,    62,    69,     0,    94,
+       9,     0,   145,     0,   179,   178,   181,     0,   170,     0,
+       0,     0,    81,    60,     0,   180,     0,     0,   169,   167,
+       0,     0,   158,     0,   182,     0,     0,     0,   160,   173,
+     159,     0,   183,   177,   168,   171,   175
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    98,    99,   100,   227,   101,   102,   103,   104,   105,
-     106,   107,   142,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   143,   144,   216,   145,   122,
-     146,   147,    32,    33,    34,    79,    60,    61,    80,    35,
-      36,    37,    38,    39,    40,    41,   123,    43,    74,    75,
-     127,   128,   166,   149,   150,   151,   152,   210,   270,   288,
-     289,   153,   154,   155,   278,   269,   156,   253,   202,   250,
-     265,   275,   276,   157,    44,    45,    46,    53
+      -1,    99,   100,   101,   228,   102,   103,   104,   105,   106,
+     107,   108,   143,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   144,   145,   217,   146,   123,
+     147,   148,    33,    34,    35,    80,    61,    62,    81,    36,
+      37,    38,    39,    40,    41,    42,   124,    44,    75,    76,
+     128,   129,   167,   150,   151,   152,   153,   211,   271,   289,
+     290,   154,   155,   156,   279,   270,   157,   254,   203,   251,
+     266,   276,   277,   158,    45,    46,    47,    54
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -250
+#define YYPACT_NINF -251
 static const yytype_int16 yypact[] =
 {
-    1218,   -13,  -250,  -250,  -250,   137,  -250,  -250,  -250,  -250,
-    -250,  -250,  -250,  -250,  -250,  -250,  -250,  -250,  -250,  -250,
-    -250,  -250,  -250,  -250,  -250,   -28,  -250,  -250,  -250,  -250,
-    -250,   -55,   -38,    -4,    33,   -20,  -250,    44,  1259,  -250,
-    1318,  -250,    18,  -250,  1176,  -250,  -250,  -250,  -250,  1318,
-     -22,  1259,  -250,    29,  -250,    85,    73,  -250,  -250,  -250,
-    -250,  1259,   113,    70,  -250,    13,  -250,  -250,   949,  -250,
-    -250,    49,  1259,    90,  1080,  -250,   283,  -250,  -250,  -250,
-    -250,   101,  1259,   -56,  -250,   757,   949,    80,  -250,  -250,
-    -250,  -250,   949,   949,   949,  -250,  -250,  -250,  -250,  -250,
-     -33,  -250,  -250,  -250,    81,   -15,  1013,    92,  -250,   949,
-      52,   -75,  -250,   -25,    40,  -250,  -250,  -250,   106,   105,
-     -46,  -250,    93,  -250,  -250,  1121,    95,     9,  -250,  -250,
-    -250,    88,    89,  -250,   100,   102,    91,   821,   104,   103,
-    -250,  -250,    66,  -250,  -250,    20,  -250,   -55,    79,  -250,
-    -250,  -250,  -250,   365,  -250,  -250,  -250,  -250,   107,  -250,
-    -250,   885,   949,  -250,   109,  -250,  -250,  -250,  -250,    -6,
-    -250,  -250,   949,  1283,  -250,  -250,   949,   110,  -250,  -250,
-    -250,   949,   949,   949,   949,   949,   949,   949,   949,   949,
-     949,   949,   949,   949,   949,  -250,  -250,   949,    90,  -250,
-    -250,  -250,   447,  -250,   949,  -250,  -250,    34,  -250,  -250,
-     447,  -250,  -250,  -250,  -250,  -250,   949,   949,  -250,  -250,
-    -250,   949,  -250,   111,  -250,  -250,  -250,   112,    99,  -250,
-     116,  -250,  -250,  -250,  -250,    52,    52,  -250,  -250,  -250,
-    -250,   -25,   -25,  -250,   106,   105,    77,   114,  -250,   125,
-     611,     4,  -250,   693,   447,  -250,  -250,   115,  -250,  -250,
-     949,  -250,   119,  -250,  -250,   693,   447,    99,   134,   122,
-     108,  -250,  -250,   949,  -250,   117,   123,   174,  -250,   120,
-     529,  -250,     7,   949,   529,   447,   949,  -250,  -250,  -250,
-     118,    99,  -250,  -250,  -250,  -250
+    1233,   -19,  -251,  -251,  -251,   130,  -251,  -251,  -251,  -251,
+    -251,  -251,  -251,  -251,  -251,  -251,  -251,  -251,  -251,  -251,
+    -251,  -251,  -251,  -251,  -251,   -24,  -251,  -251,  -251,  -251,
+    -251,  -251,   -62,    -6,    17,    34,   -20,  -251,    36,  1275,
+    -251,  1336,  -251,    32,  -251,  1190,  -251,  -251,  -251,  -251,
+    1336,    44,  1275,  -251,    47,  -251,    51,    78,  -251,  -251,
+    -251,  -251,  1275,   109,    81,  -251,   -50,  -251,  -251,   959,
+    -251,  -251,    56,  1275,   102,  1092,  -251,   284,  -251,  -251,
+    -251,  -251,   111,  1275,   -44,  -251,   764,   959,    87,  -251,
+    -251,  -251,  -251,   959,   959,   959,  -251,  -251,  -251,  -251,
+    -251,    37,  -251,  -251,  -251,    89,    22,  1024,    88,  -251,
+     959,   -54,    -9,  -251,   -43,    92,  -251,  -251,  -251,   105,
+     104,   -45,  -251,    91,  -251,  -251,  1134,    93,    15,  -251,
+    -251,  -251,    86,    90,  -251,    97,    98,    94,   829,    99,
+     101,  -251,  -251,     2,  -251,  -251,    31,  -251,   -62,    74,
+    -251,  -251,  -251,  -251,   367,  -251,  -251,  -251,  -251,   100,
+    -251,  -251,   894,   959,  -251,   107,  -251,  -251,  -251,  -251,
+      25,  -251,  -251,   959,  1300,  -251,  -251,   959,   103,  -251,
+    -251,  -251,   959,   959,   959,   959,   959,   959,   959,   959,
+     959,   959,   959,   959,   959,   959,  -251,  -251,   959,   102,
+    -251,  -251,  -251,   450,  -251,   959,  -251,  -251,    40,  -251,
+    -251,   450,  -251,  -251,  -251,  -251,  -251,   959,   959,  -251,
+    -251,  -251,   959,  -251,   108,  -251,  -251,  -251,   110,   113,
+    -251,   112,  -251,  -251,  -251,  -251,   -54,   -54,  -251,  -251,
+    -251,  -251,   -43,   -43,  -251,   105,   104,    72,   114,  -251,
+     138,   616,    26,  -251,   699,   450,  -251,  -251,   115,  -251,
+    -251,   959,  -251,   116,  -251,  -251,   699,   450,   113,   135,
+     121,   118,  -251,  -251,   959,  -251,   117,   123,   169,  -251,
+     106,   533,  -251,    35,   959,   533,   450,   959,  -251,  -251,
+    -251,   119,   113,  -251,  -251,  -251,  -251
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -250,  -250,  -250,  -250,  -250,  -250,  -250,    22,  -250,  -250,
-    -250,  -250,    31,  -250,   -27,  -250,   -79,   -30,  -250,  -250,
-    -250,     5,     8,    12,  -250,   -63,   -85,  -250,   -92,   -82,
-      10,    11,  -250,  -250,  -250,   121,   149,   144,   126,  -250,
-    -250,  -233,   -21,   -24,   202,   -23,     0,  -250,   139,   -66,
-    -250,    27,  -156,   -41,  -149,  -249,  -250,  -250,  -250,   -58,
-     176,    17,   -19,  -250,  -250,   -35,  -250,  -250,  -250,  -250,
-    -250,  -250,  -250,  -250,  -250,   188,  -250,  -250
+    -251,  -251,  -251,  -251,  -251,  -251,  -251,    23,  -251,  -251,
+    -251,  -251,    30,  -251,   -32,  -251,   -58,   -34,  -251,  -251,
+    -251,     4,     6,     7,  -251,   -60,   -85,  -251,   -94,   -81,
+       8,    10,  -251,  -251,  -251,   122,   148,   143,   124,  -251,
+    -251,  -238,   -22,   -35,   203,   -26,     0,  -251,   136,   -69,
+    -251,    11,  -160,   -25,  -147,  -250,  -251,  -251,  -251,   -56,
+     171,    16,   -21,  -251,  -251,   -33,  -251,  -251,  -251,  -251,
+    -251,  -251,  -251,  -251,  -251,   186,  -251,  -251
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -980,284 +982,288 @@
 #define YYTABLE_NINF -117
 static const yytype_int16 yytable[] =
 {
-      42,   165,   169,   164,   220,   121,   224,   183,   130,   184,
-      30,    31,   193,    62,    66,    50,   161,    67,   170,   171,
-     268,   178,   121,   162,    47,    52,    71,    73,   185,   186,
-      48,   287,   268,    54,    62,   287,    56,    81,    42,   172,
-      42,     6,     7,   173,    42,   207,    51,   194,    73,    42,
-      73,    42,    72,   249,    30,    31,   175,    63,    81,   130,
-      64,    42,   176,   187,   188,   226,    57,    58,    59,    23,
-      24,   217,    42,    55,    42,   266,   148,   165,   290,   223,
-     228,   217,    42,    84,   217,    85,   198,    65,    56,   199,
-      68,   232,    86,     6,     7,   189,   190,   217,   121,   108,
-     218,    73,   246,    76,   -75,   220,   237,   238,   239,   240,
-      47,   217,   251,    83,   252,   247,   108,   277,    57,    58,
-      59,    23,    24,   167,   168,    42,   211,   212,   213,   124,
-     294,   255,   256,   126,   121,   214,   293,   181,   182,   257,
-     180,     2,     3,     4,   158,   215,    57,    58,    59,   -25,
-     -26,    68,   174,   148,   217,   260,   235,   236,   121,   241,
-     242,   267,   179,   191,   192,   262,   195,   197,   200,   201,
-     203,   205,   204,   267,   208,   272,   217,   279,   209,   221,
-    -116,   282,   225,   281,   258,   259,   -27,   261,   271,   273,
-     285,   291,   108,   280,   284,   231,   243,   283,   295,   286,
-     244,   165,   148,   159,    78,   245,    82,    49,   160,   263,
-     148,   125,   233,   234,   108,   108,   108,   108,   108,   108,
-     108,   108,   108,   108,   108,   248,   292,   254,   108,    77,
-     274,   264,    70,     0,     0,     0,     0,     0,     0,     0,
+      43,   170,   166,   225,    67,   165,   131,   221,    31,   122,
+      32,   186,   187,    63,   194,    68,   269,    74,    48,    53,
+      51,    85,   179,    86,    72,    49,   122,    82,   269,   162,
+      87,   288,   182,   183,    63,   288,   163,    57,    74,    43,
+      74,    43,     6,     7,   208,    43,   188,   189,    82,   195,
+      43,    52,    43,    31,    57,    32,   250,   131,    64,     6,
+       7,    65,    43,   212,   213,   214,    55,    58,    59,    60,
+      23,    24,   215,    43,   184,    43,   185,   149,   166,   229,
+      66,   224,   216,    43,    58,    59,    60,    23,    24,   171,
+     172,    74,   233,   199,   176,    56,   200,   227,   267,   109,
+     177,   247,   122,   218,   218,    69,   -75,   291,   221,   218,
+     173,   252,   219,   218,   174,    48,   109,   248,   218,    73,
+     278,   253,    77,   168,   169,    84,    43,   295,   238,   239,
+     240,   241,   256,   257,     2,     3,     4,   125,   122,   294,
+     181,   258,    58,    59,    60,   -25,   127,    69,   190,   191,
+     218,   261,   236,   237,   149,   159,   242,   243,   -26,   180,
+     268,   175,   122,   192,   193,   196,   198,   201,   204,   205,
+     209,   202,   268,   222,  -116,   206,   273,   210,   263,   280,
+     283,   226,   259,   -27,   260,   286,   287,   274,   262,   272,
+     292,   218,   109,   281,   282,   285,   244,   232,   284,   245,
+     296,   246,   166,   149,    79,   160,    83,   161,    50,   126,
+     249,   149,   234,   235,   109,   109,   109,   109,   109,   109,
+     109,   109,   109,   109,   109,    78,   264,   255,   109,   293,
+     265,    71,     0,   275,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     148,     0,   108,   148,   148,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   148,   148,     0,     0,     0,
+       0,   149,   109,     0,   149,   149,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   149,   149,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     148,     0,     0,     0,   148,   148,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,   131,   132,   133,     0,
-     134,   135,   136,   137,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
-      24,    25,    26,   138,    27,    28,    87,    29,    88,    89,
-      90,    91,     0,     0,    92,    93,     0,     0,     0,     0,
+       0,   149,     0,     0,     0,   149,   149,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,   132,   133,   134,
+       0,   135,   136,   137,   138,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
+      23,    24,    25,    26,   139,    27,    28,    29,    88,    30,
+      89,    90,    91,    92,     0,     0,    93,    94,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    94,     0,     0,     0,   139,   140,     0,
-       0,     0,     0,   141,    95,    96,     0,    97,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,   131,   132,
-     133,     0,   134,   135,   136,   137,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
-       0,    23,    24,    25,    26,   138,    27,    28,    87,    29,
-      88,    89,    90,    91,     0,     0,    92,    93,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    94,     0,     0,     0,   139,
-     219,     0,     0,     0,     0,   141,    95,    96,     0,    97,
+       0,     0,     0,     0,     0,    95,     0,     0,     0,   140,
+     141,     0,     0,     0,     0,   142,    96,    97,     0,    98,
        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-     131,   132,   133,     0,   134,   135,   136,   137,    11,    12,
+     132,   133,   134,     0,   135,   136,   137,   138,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-       0,     0,     0,    23,    24,    25,    26,   138,    27,    28,
-      87,    29,    88,    89,    90,    91,     0,     0,    92,    93,
+       0,     0,     0,    23,    24,    25,    26,   139,    27,    28,
+      29,    88,    30,    89,    90,    91,    92,     0,     0,    93,
+      94,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    95,     0,
+       0,     0,   140,   220,     0,     0,     0,     0,   142,    96,
+      97,     0,    98,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,   132,   133,   134,     0,   135,   136,   137,
+     138,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,     0,     0,     0,    23,    24,    25,    26,
+     139,    27,    28,    29,    88,    30,    89,    90,    91,    92,
+       0,     0,    93,    94,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    94,     0,     0,
-       0,   139,     0,     0,     0,     0,     0,   141,    95,    96,
-       0,    97,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,   131,   132,   133,     0,   134,   135,   136,   137,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,     0,     0,     0,    23,    24,    25,    26,   138,
-      27,    28,    87,    29,    88,    89,    90,    91,     0,     0,
-      92,    93,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    94,
-       0,     0,     0,    76,     0,     0,     0,     0,     0,   141,
-      95,    96,     0,    97,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,     0,     0,     0,     0,     0,     0,
-       0,     0,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,     0,     0,     0,    23,    24,    25,
-      26,     0,    27,    28,    87,    29,    88,    89,    90,    91,
-       0,     0,    92,    93,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    94,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   141,    95,    96,     0,    97,    56,     2,     3,     4,
-       0,     6,     7,     8,     9,    10,     0,     0,     0,     0,
-       0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
+       0,    95,     0,     0,     0,   140,     0,     0,     0,     0,
+       0,   142,    96,    97,     0,    98,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,   132,   133,   134,     0,
+     135,   136,   137,   138,    11,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
-      24,    25,    26,     0,    27,    28,    87,    29,    88,    89,
-      90,    91,     0,     0,    92,    93,     0,     0,     0,     0,
+      24,    25,    26,   139,    27,    28,    29,    88,    30,    89,
+      90,    91,    92,     0,     0,    93,    94,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    94,     0,     0,     0,     8,     9,    10,
-       0,     0,     0,     0,    95,    96,     0,    97,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-       0,     0,     0,     0,     0,    25,    26,     0,    27,    28,
-      87,    29,    88,    89,    90,    91,     0,     0,    92,    93,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    94,     0,     0,
-     163,     8,     9,    10,     0,     0,     0,     0,    95,    96,
-       0,    97,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,     0,     0,     0,     0,     0,    25,
-      26,     0,    27,    28,    87,    29,    88,    89,    90,    91,
-       0,     0,    92,    93,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    94,     0,     0,     0,     8,     9,    10,     0,     0,
-       0,   206,    95,    96,     0,    97,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
-       0,     0,     0,    25,    26,     0,    27,    28,    87,    29,
-      88,    89,    90,    91,     0,     0,    92,    93,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    94,     0,     0,   222,     8,
-       9,    10,     0,     0,     0,     0,    95,    96,     0,    97,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,     0,     0,     0,     0,     0,    25,    26,     0,
-      27,    28,    87,    29,    88,    89,    90,    91,     0,     0,
-      92,    93,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    94,
-       0,     0,     0,     8,     9,    10,     0,     0,     0,     0,
-      95,    96,     0,    97,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,     0,     0,     0,     0,
-       0,    25,   177,     0,    27,    28,    87,    29,    88,    89,
-      90,    91,     0,     0,    92,    93,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    94,     2,     3,     4,     0,     0,     0,
-       8,     9,    10,     0,    95,    96,     0,    97,     0,     0,
-       0,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,     0,     0,     0,     0,     0,    25,    26,
-       0,    27,    28,     0,    29,     2,     3,     4,     0,     0,
-       0,     8,     9,    10,     0,     0,     0,     0,     0,     0,
-       0,     0,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,     0,   129,     0,     0,     0,    25,
-      26,     0,    27,    28,     0,    29,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    69,     0,     0,     1,
+       0,     0,     0,     0,    95,     0,     0,     0,    77,     0,
+       0,     0,     0,     0,   142,    96,    97,     0,    98,     1,
        2,     3,     4,     5,     6,     7,     8,     9,    10,     0,
-       0,     0,     0,     0,     0,     0,   196,    11,    12,    13,
+       0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
-       0,     0,    23,    24,    25,    26,     0,    27,    28,     0,
-      29,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      10,     0,     0,     0,     0,     0,     0,     0,     0,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,     0,     0,     0,    23,    24,    25,    26,     0,    27,
-      28,     0,    29,     2,     3,     4,     0,     0,     0,     8,
+       0,     0,    23,    24,    25,    26,     0,    27,    28,    29,
+      88,    30,    89,    90,    91,    92,     0,     0,    93,    94,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    95,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   142,    96,    97,
+       0,    98,    57,     2,     3,     4,     0,     6,     7,     8,
        9,    10,     0,     0,     0,     0,     0,     0,     0,     0,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,     0,     8,     9,    10,     0,    25,    26,     0,
-      27,    28,     0,    29,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,     0,     0,     0,     0,
-       0,    25,    26,     0,    27,    28,   229,    29,     8,     9,
-      10,   230,     0,     0,     0,     0,     0,     0,     0,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,     0,     0,     0,     0,     0,    25,    26,     0,    27,
-      28,     0,    29
+      21,    22,     0,     0,     0,    23,    24,    25,    26,     0,
+      27,    28,    29,    88,    30,    89,    90,    91,    92,     0,
+       0,    93,    94,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      95,     0,     0,     0,     8,     9,    10,     0,     0,     0,
+       0,    96,    97,     0,    98,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
+       0,     0,    25,    26,     0,    27,    28,    29,    88,    30,
+      89,    90,    91,    92,     0,     0,    93,    94,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    95,     0,     0,   164,     8,
+       9,    10,     0,     0,     0,     0,    96,    97,     0,    98,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,     0,     0,     0,     0,     0,    25,    26,     0,
+      27,    28,    29,    88,    30,    89,    90,    91,    92,     0,
+       0,    93,    94,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      95,     0,     0,     0,     8,     9,    10,     0,     0,     0,
+     207,    96,    97,     0,    98,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
+       0,     0,    25,    26,     0,    27,    28,    29,    88,    30,
+      89,    90,    91,    92,     0,     0,    93,    94,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    95,     0,     0,   223,     8,
+       9,    10,     0,     0,     0,     0,    96,    97,     0,    98,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,     0,     0,     0,     0,     0,    25,    26,     0,
+      27,    28,    29,    88,    30,    89,    90,    91,    92,     0,
+       0,    93,    94,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      95,     0,     0,     0,     8,     9,    10,     0,     0,     0,
+       0,    96,    97,     0,    98,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
+       0,     0,    25,   178,     0,    27,    28,    29,    88,    30,
+      89,    90,    91,    92,     0,     0,    93,    94,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    95,     2,     3,     4,     0,
+       0,     0,     8,     9,    10,     0,    96,    97,     0,    98,
+       0,     0,     0,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,     0,     0,     0,     0,     0,
+      25,    26,     0,    27,    28,    29,     0,    30,     2,     3,
+       4,     0,     0,     0,     8,     9,    10,     0,     0,     0,
+       0,     0,     0,     0,     0,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,     0,   130,     0,
+       0,     0,    25,    26,     0,    27,    28,    29,     0,    30,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      70,     0,     0,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,     0,     0,     0,     0,     0,     0,     0,
+     197,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,     0,     0,     0,    23,    24,    25,    26,
+       0,    27,    28,    29,     0,    30,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,     0,     0,     0,     0,
+       0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,     0,    27,    28,    29,     0,    30,     2,
+       3,     4,     0,     0,     0,     8,     9,    10,     0,     0,
+       0,     0,     0,     0,     0,     0,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
+       8,     9,    10,    25,    26,     0,    27,    28,    29,     0,
+      30,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,     0,     0,     0,     0,     0,    25,    26,
+       0,    27,    28,    29,   230,    30,     8,     9,    10,   231,
+       0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
+       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
+       0,    30
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    86,    94,    85,   153,    68,   162,    82,    74,    84,
-       0,     0,    58,    34,    38,    43,    72,    40,    51,    52,
-     253,   106,    85,    79,    37,    80,    49,    51,    53,    54,
-      43,   280,   265,    71,    55,   284,     3,    61,    38,    72,
-      40,     8,     9,    76,    44,   137,    74,    93,    72,    49,
-      74,    51,    74,   202,    44,    44,    71,    77,    82,   125,
-      80,    61,    77,    88,    89,    71,    33,    34,    35,    36,
-      37,    77,    72,    77,    74,    71,    76,   162,    71,   161,
-     172,    77,    82,    70,    77,    72,    77,    43,     3,    80,
-      72,   176,    79,     8,     9,    55,    56,    77,   161,    68,
-      80,   125,   194,    74,    71,   254,   185,   186,   187,   188,
-      37,    77,   204,    43,    80,   197,    85,   266,    33,    34,
-      35,    36,    37,    92,    93,   125,    60,    61,    62,    80,
-     286,   216,   217,    43,   197,    69,   285,    85,    86,   221,
-     109,     4,     5,     6,    43,    79,    33,    34,    35,    70,
-      70,    72,    71,   153,    77,    78,   183,   184,   221,   189,
-     190,   253,    70,    57,    59,    40,    73,    72,    80,    80,
-      70,    80,    70,   265,    70,   260,    77,    43,    75,    72,
-      70,   273,    73,    75,    73,    73,    70,    73,    73,    70,
-      16,   283,   161,    71,    71,   173,   191,    80,    80,    79,
-     192,   286,   202,    82,    55,   193,    62,     5,    82,   250,
-     210,    72,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   198,   284,   210,   197,    53,
-     265,   250,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,    95,    87,   163,    39,    86,    75,   154,     0,    69,
+       0,    54,    55,    35,    59,    41,   254,    52,    37,    81,
+      44,    71,   107,    73,    50,    44,    86,    62,   266,    73,
+      80,   281,    86,    87,    56,   285,    80,     3,    73,    39,
+      75,    41,     8,     9,   138,    45,    89,    90,    83,    94,
+      50,    75,    52,    45,     3,    45,   203,   126,    78,     8,
+       9,    81,    62,    61,    62,    63,    72,    33,    34,    35,
+      36,    37,    70,    73,    83,    75,    85,    77,   163,   173,
+      44,   162,    80,    83,    33,    34,    35,    36,    37,    52,
+      53,   126,   177,    78,    72,    78,    81,    72,    72,    69,
+      78,   195,   162,    78,    78,    73,    72,    72,   255,    78,
+      73,   205,    81,    78,    77,    37,    86,   198,    78,    75,
+     267,    81,    75,    93,    94,    44,   126,   287,   186,   187,
+     188,   189,   217,   218,     4,     5,     6,    81,   198,   286,
+     110,   222,    33,    34,    35,    71,    44,    73,    56,    57,
+      78,    79,   184,   185,   154,    44,   190,   191,    71,    71,
+     254,    72,   222,    58,    60,    74,    73,    81,    71,    71,
+      71,    81,   266,    73,    71,    81,   261,    76,    40,    44,
+     274,    74,    74,    71,    74,    16,    80,    71,    74,    74,
+     284,    78,   162,    72,    76,    72,   192,   174,    81,   193,
+      81,   194,   287,   203,    56,    83,    63,    83,     5,    73,
+     199,   211,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,    54,   251,   211,   198,   285,
+     251,    45,    -1,   266,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     250,    -1,   221,   253,   254,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   265,   266,    -1,    -1,    -1,
+      -1,   251,   222,    -1,   254,   255,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   266,   267,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     280,    -1,    -1,    -1,   284,   285,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    -1,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    -1,    -1,    51,    52,    -1,    -1,    -1,    -1,
+      -1,   281,    -1,    -1,    -1,   285,   286,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    -1,    -1,    52,    53,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    70,    -1,    -1,    -1,    74,    75,    -1,
-      -1,    -1,    -1,    80,    81,    82,    -1,    84,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
-      -1,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    -1,    -1,    51,    52,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    74,
-      75,    -1,    -1,    -1,    -1,    80,    81,    82,    -1,    84,
+      -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,
+      76,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    85,
        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    -1,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       -1,    -1,    -1,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    -1,    -1,    51,    52,
+      43,    44,    45,    46,    47,    48,    49,    -1,    -1,    52,
+      53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,
+      -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    81,    82,
+      83,    -1,    85,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    -1,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,    -1,    -1,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      -1,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
-      -1,    74,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
-      -1,    84,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    -1,    -1,    -1,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    -1,    -1,
-      51,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
-      -1,    -1,    -1,    74,    -1,    -1,    -1,    -1,    -1,    80,
-      81,    82,    -1,    84,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    -1,    -1,    36,    37,    38,
-      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      -1,    -1,    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    82,    -1,    84,     3,     4,     5,     6,
-      -1,     8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      -1,    71,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,
+      -1,    81,    82,    83,    -1,    85,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    -1,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    36,
-      37,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
-      47,    48,    -1,    -1,    51,    52,    -1,    -1,    -1,    -1,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    -1,    -1,    52,    53,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    70,    -1,    -1,    -1,    10,    11,    12,
-      -1,    -1,    -1,    -1,    81,    82,    -1,    84,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      -1,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,
-      43,    44,    45,    46,    47,    48,    -1,    -1,    51,    52,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
-      73,    10,    11,    12,    -1,    -1,    -1,    -1,    81,    82,
-      -1,    84,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,
-      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      -1,    -1,    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    70,    -1,    -1,    -1,    10,    11,    12,    -1,    -1,
-      -1,    80,    81,    82,    -1,    84,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
-      -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,    44,
-      45,    46,    47,    48,    -1,    -1,    51,    52,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    73,    10,
-      11,    12,    -1,    -1,    -1,    -1,    81,    82,    -1,    84,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,
-      41,    42,    43,    44,    45,    46,    47,    48,    -1,    -1,
-      51,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
-      -1,    -1,    -1,    10,    11,    12,    -1,    -1,    -1,    -1,
-      81,    82,    -1,    84,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,
-      -1,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
-      47,    48,    -1,    -1,    51,    52,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    70,     4,     5,     6,    -1,    -1,    -1,
-      10,    11,    12,    -1,    81,    82,    -1,    84,    -1,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,
-      -1,    41,    42,    -1,    44,     4,     5,     6,    -1,    -1,
-      -1,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    75,    -1,    -1,    -1,    38,
-      39,    -1,    41,    42,    -1,    44,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,     3,
+      -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,
+      -1,    -1,    -1,    -1,    81,    82,    83,    -1,    85,     3,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    75,    21,    22,    23,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-      -1,    -1,    36,    37,    38,    39,    -1,    41,    42,    -1,
-      44,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    -1,    -1,    -1,    36,    37,    38,    39,    -1,    41,
-      42,    -1,    44,     4,     5,     6,    -1,    -1,    -1,    10,
+      -1,    -1,    36,    37,    38,    39,    -1,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    -1,    -1,    52,    53,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
+      -1,    85,     3,     4,     5,     6,    -1,     8,     9,    10,
       11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    -1,    10,    11,    12,    -1,    38,    39,    -1,
-      41,    42,    -1,    44,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,
-      -1,    38,    39,    -1,    41,    42,    43,    44,    10,    11,
-      12,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,
-      42,    -1,    44
+      31,    32,    -1,    -1,    -1,    36,    37,    38,    39,    -1,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    -1,
+      -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    -1,    -1,    -1,    10,    11,    12,    -1,    -1,    -1,
+      -1,    82,    83,    -1,    85,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
+      -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    -1,    -1,    52,    53,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    74,    10,
+      11,    12,    -1,    -1,    -1,    -1,    82,    83,    -1,    85,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    -1,
+      -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    -1,    -1,    -1,    10,    11,    12,    -1,    -1,    -1,
+      81,    82,    83,    -1,    85,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
+      -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    -1,    -1,    52,    53,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    74,    10,
+      11,    12,    -1,    -1,    -1,    -1,    82,    83,    -1,    85,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    -1,
+      -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    -1,    -1,    -1,    10,    11,    12,    -1,    -1,    -1,
+      -1,    82,    83,    -1,    85,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
+      -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    -1,    -1,    52,    53,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    71,     4,     5,     6,    -1,
+      -1,    -1,    10,    11,    12,    -1,    82,    83,    -1,    85,
+      -1,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
+      38,    39,    -1,    41,    42,    43,    -1,    45,     4,     5,
+       6,    -1,    -1,    -1,    10,    11,    12,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    -1,    76,    -1,
+      -1,    -1,    38,    39,    -1,    41,    42,    43,    -1,    45,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,    -1,    -1,    36,    37,    38,    39,
+      -1,    41,    42,    43,    -1,    45,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    36,
+      37,    38,    39,    -1,    41,    42,    43,    -1,    45,     4,
+       5,     6,    -1,    -1,    -1,    10,    11,    12,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
+      10,    11,    12,    38,    39,    -1,    41,    42,    43,    -1,
+      45,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,
+      -1,    41,    42,    43,    44,    45,    10,    11,    12,    49,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
+      -1,    45
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1266,34 +1272,34 @@
 {
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    36,    37,    38,    39,    41,    42,    44,
-     124,   125,   126,   127,   128,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   168,   169,   170,    37,    43,   138,
-      43,    74,    80,   171,    71,    77,     3,    33,    34,    35,
-     130,   131,   136,    77,    80,    43,   137,   139,    72,     0,
-     169,   139,    74,   137,   142,   143,    74,   154,   130,   129,
-     132,   137,   131,    43,    70,    72,    79,    43,    45,    46,
-      47,    48,    51,    52,    70,    81,    82,    84,    95,    96,
-      97,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+      30,    31,    32,    36,    37,    38,    39,    41,    42,    43,
+      45,   125,   126,   127,   128,   129,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   169,   170,   171,    37,    44,
+     139,    44,    75,    81,   172,    72,    78,     3,    33,    34,
+      35,   131,   132,   137,    78,    81,    44,   138,   140,    73,
+       0,   170,   140,    75,   138,   143,   144,    75,   155,   131,
+     130,   133,   138,   132,    44,    71,    73,    80,    44,    46,
+      47,    48,    49,    52,    53,    71,    82,    83,    85,    96,
+      97,    98,   100,   101,   102,   103,   104,   105,   106,   107,
      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   123,   140,    80,   142,    43,   144,   145,    75,
-     143,    13,    14,    15,    17,    18,    19,    20,    40,    74,
-      75,    80,   106,   119,   120,   122,   124,   125,   140,   147,
-     148,   149,   150,   155,   156,   157,   160,   167,    43,   129,
-     132,    72,    79,    73,   123,   120,   146,   106,   106,   122,
-      51,    52,    72,    76,    71,    71,    77,    39,   120,    70,
-     106,    85,    86,    82,    84,    53,    54,    88,    89,    55,
-      56,    57,    59,    58,    93,    73,    75,    72,    77,    80,
-      80,    80,   162,    70,    70,    80,    80,   122,    70,    75,
-     151,    60,    61,    62,    69,    79,   121,    77,    80,    75,
-     148,    72,    73,   123,   146,    73,    71,    98,   122,    43,
-      48,   101,   120,   106,   106,   108,   108,   110,   110,   110,
-     110,   111,   111,   115,   116,   117,   122,   123,   145,   148,
-     163,   122,    80,   161,   155,   120,   120,   123,    73,    73,
-      78,    73,    40,   147,   156,   164,    71,   122,   135,   159,
-     152,    73,   120,    70,   159,   165,   166,   148,   158,    43,
-      71,    75,   122,    80,    71,    16,    79,   149,   153,   154,
-      71,   122,   153,   148,   146,    80
+     118,   119,   120,   124,   141,    81,   143,    44,   145,   146,
+      76,   144,    13,    14,    15,    17,    18,    19,    20,    40,
+      75,    76,    81,   107,   120,   121,   123,   125,   126,   141,
+     148,   149,   150,   151,   156,   157,   158,   161,   168,    44,
+     130,   133,    73,    80,    74,   124,   121,   147,   107,   107,
+     123,    52,    53,    73,    77,    72,    72,    78,    39,   121,
+      71,   107,    86,    87,    83,    85,    54,    55,    89,    90,
+      56,    57,    58,    60,    59,    94,    74,    76,    73,    78,
+      81,    81,    81,   163,    71,    71,    81,    81,   123,    71,
+      76,   152,    61,    62,    63,    70,    80,   122,    78,    81,
+      76,   149,    73,    74,   124,   147,    74,    72,    99,   123,
+      44,    49,   102,   121,   107,   107,   109,   109,   111,   111,
+     111,   111,   112,   112,   116,   117,   118,   123,   124,   146,
+     149,   164,   123,    81,   162,   156,   121,   121,   124,    74,
+      74,    79,    74,    40,   148,   157,   165,    72,   123,   136,
+     160,   153,    74,   121,    71,   160,   166,   167,   149,   159,
+      44,    72,    76,   123,    81,    72,    16,    80,   150,   154,
+     155,    72,   123,   154,   149,   147,    81
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -3884,13 +3890,26 @@
   case 134:
 
     {
+        if (!context->supportsExtension("GL_OES_EGL_image_external")) {
+            context->error((yyvsp[(1) - (1)].lex).line, "unsupported type", "samplerExternalOES", "");
+            context->recover();
+        }
+        FRAG_VERT_ONLY("samplerExternalOES", (yyvsp[(1) - (1)].lex).line);
+        TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+        (yyval.interm.type).setBasic(EbtSamplerExternalOES, qual, (yyvsp[(1) - (1)].lex).line);
+    ;}
+    break;
+
+  case 135:
+
+    {
         FRAG_VERT_ONLY("struct", (yyvsp[(1) - (1)].interm.type).line);
         (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
         (yyval.interm.type).qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
     ;}
     break;
 
-  case 135:
+  case 136:
 
     {
         //
@@ -3904,7 +3923,7 @@
     ;}
     break;
 
-  case 136:
+  case 137:
 
     {
         if (context->reservedErrorCheck((yyvsp[(2) - (5)].lex).line, *(yyvsp[(2) - (5)].lex).string))
@@ -3921,7 +3940,7 @@
     ;}
     break;
 
-  case 137:
+  case 138:
 
     {
         TType* structure = new TType((yyvsp[(3) - (4)].interm.typeList), TString(""));
@@ -3930,14 +3949,14 @@
     ;}
     break;
 
-  case 138:
+  case 139:
 
     {
         (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList);
     ;}
     break;
 
-  case 139:
+  case 140:
 
     {
         (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList);
@@ -3953,7 +3972,7 @@
     ;}
     break;
 
-  case 140:
+  case 141:
 
     {
         (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList);
@@ -3986,7 +4005,7 @@
     ;}
     break;
 
-  case 141:
+  case 142:
 
     {
         (yyval.interm.typeList) = NewPoolTTypeList();
@@ -3994,14 +4013,14 @@
     ;}
     break;
 
-  case 142:
+  case 143:
 
     {
         (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine));
     ;}
     break;
 
-  case 143:
+  case 144:
 
     {
         if (context->reservedErrorCheck((yyvsp[(1) - (1)].lex).line, *(yyvsp[(1) - (1)].lex).string))
@@ -4013,7 +4032,7 @@
     ;}
     break;
 
-  case 144:
+  case 145:
 
     {
         if (context->reservedErrorCheck((yyvsp[(1) - (4)].lex).line, *(yyvsp[(1) - (4)].lex).string))
@@ -4030,24 +4049,19 @@
     ;}
     break;
 
-  case 145:
+  case 146:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
     break;
 
-  case 146:
-
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
-    break;
-
   case 147:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
     break;
 
   case 148:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); ;}
     break;
 
   case 149:
@@ -4077,21 +4091,26 @@
 
   case 154:
 
-    { (yyval.interm.intermAggregate) = 0; ;}
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
     break;
 
   case 155:
 
-    { context->symbolTable.push(); ;}
+    { (yyval.interm.intermAggregate) = 0; ;}
     break;
 
   case 156:
 
-    { context->symbolTable.pop(); ;}
+    { context->symbolTable.push(); ;}
     break;
 
   case 157:
 
+    { context->symbolTable.pop(); ;}
+    break;
+
+  case 158:
+
     {
         if ((yyvsp[(3) - (5)].interm.intermAggregate) != 0) {
             (yyvsp[(3) - (5)].interm.intermAggregate)->setOp(EOpSequence);
@@ -4101,11 +4120,6 @@
     ;}
     break;
 
-  case 158:
-
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
-    break;
-
   case 159:
 
     { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
@@ -4113,12 +4127,17 @@
 
   case 160:
 
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
+    break;
+
+  case 161:
+
     {
         (yyval.interm.intermNode) = 0;
     ;}
     break;
 
-  case 161:
+  case 162:
 
     {
         if ((yyvsp[(2) - (3)].interm.intermAggregate)) {
@@ -4129,31 +4148,31 @@
     ;}
     break;
 
-  case 162:
+  case 163:
 
     {
         (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), 0);
     ;}
     break;
 
-  case 163:
+  case 164:
 
     {
         (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), 0);
     ;}
     break;
 
-  case 164:
+  case 165:
 
     { (yyval.interm.intermNode) = 0; ;}
     break;
 
-  case 165:
+  case 166:
 
     { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); ;}
     break;
 
-  case 166:
+  case 167:
 
     {
         if (context->boolErrorCheck((yyvsp[(1) - (5)].lex).line, (yyvsp[(3) - (5)].interm.intermTypedNode)))
@@ -4162,7 +4181,7 @@
     ;}
     break;
 
-  case 167:
+  case 168:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
@@ -4170,7 +4189,7 @@
     ;}
     break;
 
-  case 168:
+  case 169:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
@@ -4178,7 +4197,7 @@
     ;}
     break;
 
-  case 169:
+  case 170:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
@@ -4187,7 +4206,7 @@
     ;}
     break;
 
-  case 170:
+  case 171:
 
     {
         TIntermNode* intermNode;
@@ -4205,12 +4224,12 @@
     ;}
     break;
 
-  case 171:
+  case 172:
 
     { context->symbolTable.push(); ++context->loopNestingLevel; ;}
     break;
 
-  case 172:
+  case 173:
 
     {
         context->symbolTable.pop();
@@ -4219,12 +4238,12 @@
     ;}
     break;
 
-  case 173:
+  case 174:
 
     { ++context->loopNestingLevel; ;}
     break;
 
-  case 174:
+  case 175:
 
     {
         if (context->boolErrorCheck((yyvsp[(8) - (8)].lex).line, (yyvsp[(6) - (8)].interm.intermTypedNode)))
@@ -4235,24 +4254,17 @@
     ;}
     break;
 
-  case 175:
-
-    { context->symbolTable.push(); ++context->loopNestingLevel; ;}
-    break;
-
   case 176:
 
-    {
-        context->symbolTable.pop();
-        (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[(4) - (7)].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node2), (yyvsp[(7) - (7)].interm.intermNode), (yyvsp[(1) - (7)].lex).line);
-        --context->loopNestingLevel;
-    ;}
+    { context->symbolTable.push(); ++context->loopNestingLevel; ;}
     break;
 
   case 177:
 
     {
-        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+        context->symbolTable.pop();
+        (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[(4) - (7)].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node2), (yyvsp[(7) - (7)].interm.intermNode), (yyvsp[(1) - (7)].lex).line);
+        --context->loopNestingLevel;
     ;}
     break;
 
@@ -4266,26 +4278,33 @@
   case 179:
 
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     ;}
     break;
 
   case 180:
 
     {
-        (yyval.interm.intermTypedNode) = 0;
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     ;}
     break;
 
   case 181:
 
     {
+        (yyval.interm.intermTypedNode) = 0;
+    ;}
+    break;
+
+  case 182:
+
+    {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = 0;
     ;}
     break;
 
-  case 182:
+  case 183:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
@@ -4293,7 +4312,7 @@
     ;}
     break;
 
-  case 183:
+  case 184:
 
     {
         if (context->loopNestingLevel <= 0) {
@@ -4304,7 +4323,7 @@
     ;}
     break;
 
-  case 184:
+  case 185:
 
     {
         if (context->loopNestingLevel <= 0) {
@@ -4315,7 +4334,7 @@
     ;}
     break;
 
-  case 185:
+  case 186:
 
     {
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).line);
@@ -4326,7 +4345,7 @@
     ;}
     break;
 
-  case 186:
+  case 187:
 
     {
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).line);
@@ -4341,7 +4360,7 @@
     ;}
     break;
 
-  case 187:
+  case 188:
 
     {
         FRAG_ONLY("discard", (yyvsp[(1) - (2)].lex).line);
@@ -4349,18 +4368,10 @@
     ;}
     break;
 
-  case 188:
-
-    {
-        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
-        context->treeRoot = (yyval.interm.intermNode);
-    ;}
-    break;
-
   case 189:
 
     {
-        (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), 0);
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
         context->treeRoot = (yyval.interm.intermNode);
     ;}
     break;
@@ -4368,7 +4379,8 @@
   case 190:
 
     {
-        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+        (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), 0);
+        context->treeRoot = (yyval.interm.intermNode);
     ;}
     break;
 
@@ -4382,6 +4394,13 @@
   case 192:
 
     {
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+    ;}
+    break;
+
+  case 193:
+
+    {
         TFunction* function = (yyvsp[(1) - (1)].interm).function;
         TFunction* prevDec = static_cast<TFunction*>(context->symbolTable.find(function->getMangledName()));
         //
@@ -4464,7 +4483,7 @@
     ;}
     break;
 
-  case 193:
+  case 194:
 
     {
         //?? Check that all paths return a value if return type != void ?