as3compile: small bugfixes, added documentation
authorMatthias Kramm <kramm@quiss.org>
Mon, 13 Apr 2009 20:11:39 +0000 (22:11 +0200)
committerMatthias Kramm <kramm@quiss.org>
Mon, 13 Apr 2009 20:11:39 +0000 (22:11 +0200)
20 files changed:
lib/as3/expr.c
lib/as3/ok/for-in.as
lib/as3/ok/if.as
lib/as3/ok/namespaces2.as
lib/as3/ok/xml.as
lib/as3/parser.tab.c
lib/as3/parser.y
src/as3compile.1
src/as3compile.c
src/as3compile.doc
src/font2swf.1
src/font2swf.c
src/gif2swf.1
src/jpeg2swf.1
src/png2swf.1
src/swfbbox.1
src/swfc.1
src/swfcombine.1
src/swfdump.1
src/wav2swf.1

index c07478b..30cb855 100644 (file)
@@ -155,7 +155,7 @@ static code_t* toreadwrite(code_t*in, code_t*middlepart, char justassign, char r
                 prefix = abc_dup(prefix); // we need the object, too
             }
             use_temp_var = 1;
-        } else if(m->type == MULTINAMEL) {
+        } else if(m->type == MULTINAMEL || m->type == MULTINAMELA) {
             if(!justassign) {
                 /* dupping two values on the stack requires 5 operations and one register- 
                    couldn't adobe just have given us a dup2? */
index 3e17b38..849250a 100644 (file)
@@ -1,33 +1,36 @@
 package {
     import flash.display.MovieClip
     public class Main extends flash.display.MovieClip {
+
+        var ci:int = 0;
+
         function Main() {
             var a:Array = new Array(1,2,3,4,6,5,7,8,9,10);
             var j:int = 0;
             for(var x in a) {
                 j += x;
             }
-            if(j==45) trace("ok 1/5");
+            if(j==45) trace("ok 1/6");
            
             var y;
             j = 0;
             for(y in a) {
                 j += y;
             }
-            if(j==45) trace("ok 2/5");
+            if(j==45) trace("ok 2/6");
             
             j = 0;
             for each(var x in a) {
                 j += x;
             }
-            if(j==55) trace("ok 3/5");
+            if(j==55) trace("ok 3/6");
             
             var z = 0;
             j = 0;
             for each(z in a) {
                 j += z;
             }
-            if(j==55) trace("ok 4/5");
+            if(j==55) trace("ok 4/6");
             
             var i:int = 0;
             j = 0;
@@ -38,7 +41,14 @@ package {
                 else
                     continue;
             }
-            if(j==16) trace("ok 5/5");
+            if(j==16) trace("ok 5/6");
+
+            j = 0;
+            for each(ci in a) {
+                j += ci;
+            }
+            if(j == 55) trace("ok 6/6");
+
             trace("[exit]");
         }
     }
index 3b4d4dd..5a8e3f4 100644 (file)
@@ -15,6 +15,13 @@ package {
             else if(false) trace("error");
             else if(true) trace("ok 5/5");
             else if(false) trace("error");
+
+            if(true) {
+                var x;
+            } else {
+                var x;
+            }
+
             trace("[exit]");
         }
     }
index 6a065bd..bbb6e6d 100644 (file)
@@ -23,6 +23,7 @@ package {
             {
                 this.tf(1);
                 tf(2);
+                var ns:Namespace = flash_proxy;
                 trace("[exit]");
             }
            
index 6cda8fe..a9d79f3 100644 (file)
@@ -117,6 +117,10 @@ package {
             assert(x10 != x11);
             x11.b.@a = "x";
             assert(x10 == x11);
+            x11.b.@["a"] = "y";
+            assert(x10 != x11);
+            x11.b.@["a"] = "x";
+            assert(x10 == x11);
 
             var x12:XML = <x><a/></x>;
             x12.a += <b/>;
index f03b96f..3e68d39 100644 (file)
@@ -292,7 +292,7 @@ tokenunion
 /* Copy the second part of user declarations.  */
 
 /* Line 273 of skeleton.m4  */
-#line 275 "parser.y"
+#line 276 "parser.y"
 
 
 static int a3_error(char*s)
@@ -591,6 +591,7 @@ void initialize_file(char*filename)
         state->method->late_binding = 1; // init scripts use getglobalscope, so we need a getlocal0/pushscope
     } else {
         state->method = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount);
+        state->method->variable_count = 0;
         if(!state->method)
             syntaxerror("internal error: skewed tokencount");
         function_initvars(state->method, 0, 0, 0, 1);
@@ -967,6 +968,13 @@ static void function_initvars(methodstate_t*m, char has_params, params_t*params,
             index = new_variable((flags&FLAG_STATIC)?"class":"this", state->cls?state->cls->info:0, 0, 0);
         else
             index = new_variable("globalscope", 0, 0, 0);
+        if(index) {
+            printf("pass: %d\n", as3_pass);
+            DICT_ITERATE_ITEMS(state->vars, char*, name, variable_t*, v) {
+                printf("%d) %s\n", v->index, name);
+            }
+            printf("count: %d\n", state->method->variable_count);
+        }
         parserassert(!index);
     }
 
@@ -1923,11 +1931,11 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 273 of skeleton.m4  */
-#line 1927 "parser.tab.c"
+#line 1935 "parser.tab.c"
 /* Unqualified %code blocks.  */
 
 /* Line 274 of skeleton.m4  */
-#line 2008 "parser.y"
+#line 2017 "parser.y"
 
     char is_subtype_of(classinfo_t*type, classinfo_t*supertype)
     {
@@ -1936,7 +1944,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 2458 "parser.y"
+#line 2468 "parser.y"
 
     static void state_has_imports()
     {
@@ -1959,7 +1967,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 2591 "parser.y"
+#line 2607 "parser.y"
 
     static int slotstate_varconst = 0;
     static modifiers_t*slotstate_flags = 0;
@@ -2021,13 +2029,13 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 2776 "parser.y"
+#line 2787 "parser.y"
 
     static int xml_level = 0;
 
 
 /* Line 274 of skeleton.m4  */
-#line 3555 "parser.y"
+#line 3566 "parser.y"
 
     node_t* resolve_identifier(char*name)
     {
@@ -2144,7 +2152,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 3697 "parser.y"
+#line 3708 "parser.y"
 
     void add_active_url(const char*url)
     {
@@ -2156,7 +2164,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 2160 "parser.tab.c"
+#line 2168 "parser.tab.c"
 
 #ifdef short
 # undef short
@@ -2369,16 +2377,16 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  161
+#define YYFINAL  163
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3421
+#define YYLAST   3351
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  136
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  135
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  351
+#define YYNRULES  353
 /* YYNRULES -- Number of states.  */
 #define YYNSTATES  598
 
@@ -2447,31 +2455,31 @@ static const yytype_uint16 yyprhs[] =
      204,   212,   214,   217,   219,   222,   223,   225,   227,   230,
      232,   235,   240,   244,   245,   254,   255,   265,   266,   272,
      274,   277,   279,   282,   284,   285,   292,   295,   297,   302,
-     305,   307,   309,   311,   313,   317,   319,   320,   327,   328,
-     334,   337,   342,   343,   345,   347,   350,   352,   354,   356,
-     358,   360,   362,   364,   366,   368,   370,   371,   374,   375,
-     378,   379,   382,   383,   393,   394,   403,   404,   406,   408,
-     411,   413,   418,   420,   422,   424,   425,   427,   429,   432,
-     434,   437,   446,   448,   450,   451,   456,   458,   462,   466,
-     467,   470,   472,   474,   476,   478,   480,   482,   484,   486,
-     488,   490,   492,   494,   495,   496,   501,   502,   507,   508,
-     511,   514,   517,   520,   524,   526,   528,   539,   546,   558,
-     559,   561,   563,   566,   568,   572,   576,   580,   584,   585,
-     587,   590,   595,   599,   601,   606,   609,   611,   613,   614,
-     615,   628,   630,   631,   632,   643,   645,   649,   651,   653,
-     655,   659,   661,   663,   665,   668,   669,   670,   674,   675,
-     677,   679,   681,   684,   687,   688,   693,   698,   703,   706,
-     708,   711,   713,   715,   717,   721,   723,   727,   728,   730,
-     732,   734,   736,   738,   740,   744,   750,   752,   754,   756,
-     758,   760,   762,   764,   766,   768,   770,   774,   778,   782,
-     786,   790,   794,   798,   802,   806,   810,   814,   818,   821,
-     824,   828,   832,   836,   840,   844,   848,   852,   856,   860,
-     864,   868,   872,   876,   880,   884,   889,   892,   894,   898,
-     901,   906,   910,   914,   918,   922,   926,   930,   934,   938,
-     942,   946,   950,   954,   960,   963,   966,   969,   972,   976,
-     979,   980,   987,   989,   991,   993,   995,   997,  1003,  1007,
-    1013,  1018,  1023,  1030,  1037,  1041,  1043,  1046,  1051,  1056,
-    1059,  1064
+     305,   307,   309,   311,   313,   315,   319,   321,   322,   329,
+     330,   336,   339,   342,   347,   348,   350,   352,   355,   357,
+     359,   361,   363,   365,   367,   369,   371,   373,   375,   376,
+     379,   380,   383,   384,   387,   388,   398,   399,   408,   409,
+     411,   413,   416,   418,   423,   425,   427,   429,   430,   432,
+     434,   437,   439,   442,   451,   453,   455,   456,   461,   463,
+     467,   471,   472,   475,   477,   479,   481,   483,   485,   487,
+     489,   491,   493,   495,   497,   499,   500,   501,   506,   507,
+     512,   513,   516,   519,   522,   525,   529,   531,   533,   544,
+     551,   563,   564,   566,   568,   571,   573,   577,   581,   585,
+     589,   590,   592,   595,   600,   604,   606,   611,   614,   616,
+     618,   619,   620,   633,   635,   636,   637,   648,   650,   654,
+     656,   658,   660,   664,   666,   668,   670,   673,   674,   675,
+     679,   680,   682,   684,   686,   689,   692,   693,   698,   703,
+     708,   711,   713,   716,   718,   720,   722,   726,   728,   732,
+     733,   735,   737,   739,   741,   743,   745,   749,   755,   757,
+     759,   761,   763,   765,   767,   769,   771,   773,   775,   779,
+     783,   787,   791,   795,   799,   803,   807,   811,   815,   819,
+     823,   826,   829,   833,   837,   841,   845,   849,   853,   857,
+     861,   865,   869,   873,   877,   881,   885,   889,   892,   895,
+     897,   901,   904,   909,   913,   917,   921,   925,   929,   933,
+     937,   941,   945,   949,   953,   957,   963,   966,   969,   972,
+     975,   979,   982,   983,   990,   992,   994,   996,   998,  1000,
+    1006,  1010,  1016,  1021,  1026,  1033,  1040,  1044,  1046,  1049,
+    1054,  1059,  1062,  1067
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -2508,123 +2516,124 @@ static const yytype_int16 yyrhs[] =
      177,    -1,   177,    -1,    -1,    52,   128,   182,   144,   134,
      180,    -1,    37,   255,    -1,    37,    -1,    39,   124,   255,
      135,    -1,   184,   148,    -1,     3,    -1,    17,    -1,    16,
-      -1,     4,    -1,   187,   129,   186,    -1,   186,    -1,    -1,
-      17,   187,   128,   189,   141,   134,    -1,    -1,    17,   128,
-     190,   141,   134,    -1,    41,   240,    -1,    41,   187,   129,
-     117,    -1,    -1,   193,    -1,   194,    -1,   193,   194,    -1,
-      20,    -1,    21,    -1,    18,    -1,    38,    -1,    47,    -1,
-      49,    -1,    48,    -1,    25,    -1,    23,    -1,     4,    -1,
-      -1,    54,   241,    -1,    -1,    54,   242,    -1,    -1,    15,
-     242,    -1,    -1,   192,    31,     3,   195,   197,   128,   199,
-     202,   134,    -1,    -1,   192,    44,     3,   196,   128,   201,
-     205,   134,    -1,    -1,   203,    -1,   204,    -1,   203,   204,
-      -1,   101,    -1,   150,   128,   202,   134,    -1,   209,    -1,
-     234,    -1,   146,    -1,    -1,   206,    -1,   207,    -1,   206,
-     207,    -1,   101,    -1,    46,     3,    -1,   192,    26,   233,
-       3,   124,   230,   135,   244,    -1,    46,    -1,    32,    -1,
-      -1,   192,   208,   210,   211,    -1,   212,    -1,   211,   102,
-     212,    -1,     3,   244,   151,    -1,    -1,   104,   261,    -1,
-       8,    -1,     9,    -1,    10,    -1,     5,    -1,    56,    -1,
-      55,    -1,    45,    -1,    28,    -1,    29,    -1,   226,    -1,
-     111,    -1,   112,    -1,    -1,    -1,   128,   261,   220,   134,
-      -1,    -1,   128,   261,   222,   134,    -1,    -1,   223,   219,
-      -1,   223,     5,    -1,   223,   112,    -1,   226,   223,    -1,
-     224,   226,   223,    -1,     3,    -1,   221,    -1,   216,   225,
-     227,   217,   223,   111,   116,   225,   218,   112,    -1,   216,
-     225,   227,   116,   218,   112,    -1,   216,   225,   227,   217,
-     223,   224,   111,   116,   225,   218,   112,    -1,    -1,   228,
-      -1,   229,    -1,   228,   229,    -1,   221,    -1,   221,   104,
-       5,    -1,   221,   104,   221,    -1,     3,   104,   221,    -1,
-       3,   104,     5,    -1,    -1,   231,    -1,    95,   232,    -1,
-     231,   102,    95,   232,    -1,   231,   102,   232,    -1,   232,
-      -1,     3,   106,   243,   213,    -1,     3,   213,    -1,    51,
-      -1,    35,    -1,    -1,    -1,   192,    26,   233,     3,   124,
-     230,   135,   244,   128,   235,   144,   134,    -1,     3,    -1,
-      -1,    -1,    26,   236,   124,   230,   135,   244,   128,   238,
-     144,   134,    -1,   186,    -1,   187,   129,   186,    -1,   240,
-      -1,   239,    -1,   241,    -1,   242,   102,   241,    -1,   241,
-      -1,   117,    -1,    36,    -1,   106,   243,    -1,    -1,    -1,
-     124,   246,   135,    -1,    -1,   247,    -1,   248,    -1,   254,
-      -1,   247,   102,    -1,   248,   254,    -1,    -1,    24,   261,
-     249,   245,    -1,   261,   124,   246,   135,    -1,    53,   124,
-     246,   135,    -1,    64,   261,    -1,    42,    -1,    42,   255,
-      -1,   261,    -1,   256,    -1,   261,    -1,   256,   102,   261,
-      -1,   261,    -1,   257,   102,   261,    -1,    -1,   260,    -1,
-       3,    -1,     5,    -1,     8,    -1,     9,    -1,    10,    -1,
-     259,   106,   254,    -1,   260,   102,   259,   106,   254,    -1,
-     237,    -1,   265,    -1,   250,    -1,   252,    -1,   251,    -1,
-     266,    -1,   214,    -1,   215,    -1,     6,    -1,    19,    -1,
-     126,   246,   127,    -1,    71,   258,   134,    -1,   261,   111,
-     261,    -1,   261,   112,   261,    -1,   261,    76,   261,    -1,
-     261,    77,   261,    -1,   261,    72,   261,    -1,   261,    73,
-     261,    -1,   261,    75,   261,    -1,   261,    74,   261,    -1,
-     261,    89,   261,    -1,   261,    90,   261,    -1,   120,   261,
-      -1,   119,   261,    -1,   261,   109,   261,    -1,   261,   108,
-     261,    -1,   261,   107,   261,    -1,   261,    98,   261,    -1,
-     261,    97,   261,    -1,   261,    96,   261,    -1,   261,   116,
-     261,    -1,   261,   118,   261,    -1,   261,   115,   261,    -1,
-     261,   114,   261,    -1,   261,   117,   261,    -1,   261,    69,
-     261,    -1,   261,    70,   261,    -1,   261,    40,   261,    -1,
-     261,    68,   261,    -1,    43,   124,   261,   135,    -1,    36,
-     261,    -1,    36,    -1,   124,   256,   135,    -1,   114,   261,
-      -1,   261,   126,   261,   127,    -1,   261,    81,   261,    -1,
-     261,    80,   261,    -1,   261,    87,   261,    -1,   261,    86,
-     261,    -1,   261,    88,   261,    -1,   261,    79,   261,    -1,
-     261,    78,   261,    -1,   261,    85,   261,    -1,   261,    82,
-     261,    -1,   261,    83,   261,    -1,   261,    84,   261,    -1,
-     261,   104,   261,    -1,   261,   105,   261,   106,   261,    -1,
-     261,    93,    -1,   261,    92,    -1,    93,   261,    -1,    92,
-     261,    -1,    53,   129,     3,    -1,   130,     3,    -1,    -1,
-     261,   129,   124,   262,   261,   135,    -1,     3,    -1,   117,
-      -1,     4,    -1,   186,    -1,   117,    -1,   261,   129,   263,
-      91,   264,    -1,   261,    94,   264,    -1,   261,   129,   126,
-     261,   127,    -1,   261,   129,   130,   264,    -1,   261,    94,
-     130,   264,    -1,   261,   129,   130,   126,   261,   127,    -1,
-     261,    94,   130,   126,   261,   127,    -1,   261,   129,   264,
-      -1,     3,    -1,    16,     3,    -1,    16,     3,   104,     3,
-      -1,    16,     3,   104,     5,    -1,   192,   267,    -1,    63,
-      16,   104,   261,    -1,    22,    16,   241,    -1
+      -1,    29,    -1,     4,    -1,   187,   129,   186,    -1,   186,
+      -1,    -1,    17,   187,   128,   189,   141,   134,    -1,    -1,
+      17,   128,   190,   141,   134,    -1,    41,     3,    -1,    41,
+     240,    -1,    41,   187,   129,   117,    -1,    -1,   193,    -1,
+     194,    -1,   193,   194,    -1,    20,    -1,    21,    -1,    18,
+      -1,    38,    -1,    47,    -1,    49,    -1,    48,    -1,    25,
+      -1,    23,    -1,     4,    -1,    -1,    54,   241,    -1,    -1,
+      54,   242,    -1,    -1,    15,   242,    -1,    -1,   192,    31,
+       3,   195,   197,   128,   199,   202,   134,    -1,    -1,   192,
+      44,     3,   196,   128,   201,   205,   134,    -1,    -1,   203,
+      -1,   204,    -1,   203,   204,    -1,   101,    -1,   150,   128,
+     202,   134,    -1,   209,    -1,   234,    -1,   146,    -1,    -1,
+     206,    -1,   207,    -1,   206,   207,    -1,   101,    -1,    46,
+       3,    -1,   192,    26,   233,     3,   124,   230,   135,   244,
+      -1,    46,    -1,    32,    -1,    -1,   192,   208,   210,   211,
+      -1,   212,    -1,   211,   102,   212,    -1,     3,   244,   151,
+      -1,    -1,   104,   261,    -1,     8,    -1,     9,    -1,    10,
+      -1,     5,    -1,    56,    -1,    55,    -1,    45,    -1,    28,
+      -1,    29,    -1,   226,    -1,   111,    -1,   112,    -1,    -1,
+      -1,   128,   261,   220,   134,    -1,    -1,   128,   261,   222,
+     134,    -1,    -1,   223,   219,    -1,   223,     5,    -1,   223,
+     112,    -1,   226,   223,    -1,   224,   226,   223,    -1,     3,
+      -1,   221,    -1,   216,   225,   227,   217,   223,   111,   116,
+     225,   218,   112,    -1,   216,   225,   227,   116,   218,   112,
+      -1,   216,   225,   227,   217,   223,   224,   111,   116,   225,
+     218,   112,    -1,    -1,   228,    -1,   229,    -1,   228,   229,
+      -1,   221,    -1,   221,   104,     5,    -1,   221,   104,   221,
+      -1,     3,   104,   221,    -1,     3,   104,     5,    -1,    -1,
+     231,    -1,    95,   232,    -1,   231,   102,    95,   232,    -1,
+     231,   102,   232,    -1,   232,    -1,     3,   106,   243,   213,
+      -1,     3,   213,    -1,    51,    -1,    35,    -1,    -1,    -1,
+     192,    26,   233,     3,   124,   230,   135,   244,   128,   235,
+     144,   134,    -1,     3,    -1,    -1,    -1,    26,   236,   124,
+     230,   135,   244,   128,   238,   144,   134,    -1,   186,    -1,
+     187,   129,   186,    -1,   240,    -1,   239,    -1,   241,    -1,
+     242,   102,   241,    -1,   241,    -1,   117,    -1,    36,    -1,
+     106,   243,    -1,    -1,    -1,   124,   246,   135,    -1,    -1,
+     247,    -1,   248,    -1,   254,    -1,   247,   102,    -1,   248,
+     254,    -1,    -1,    24,   261,   249,   245,    -1,   261,   124,
+     246,   135,    -1,    53,   124,   246,   135,    -1,    64,   261,
+      -1,    42,    -1,    42,   255,    -1,   261,    -1,   256,    -1,
+     261,    -1,   256,   102,   261,    -1,   261,    -1,   257,   102,
+     261,    -1,    -1,   260,    -1,     3,    -1,     5,    -1,     8,
+      -1,     9,    -1,    10,    -1,   259,   106,   254,    -1,   260,
+     102,   259,   106,   254,    -1,   237,    -1,   265,    -1,   250,
+      -1,   252,    -1,   251,    -1,   266,    -1,   214,    -1,   215,
+      -1,     6,    -1,    19,    -1,   126,   246,   127,    -1,    71,
+     258,   134,    -1,   261,   111,   261,    -1,   261,   112,   261,
+      -1,   261,    76,   261,    -1,   261,    77,   261,    -1,   261,
+      72,   261,    -1,   261,    73,   261,    -1,   261,    75,   261,
+      -1,   261,    74,   261,    -1,   261,    89,   261,    -1,   261,
+      90,   261,    -1,   120,   261,    -1,   119,   261,    -1,   261,
+     109,   261,    -1,   261,   108,   261,    -1,   261,   107,   261,
+      -1,   261,    98,   261,    -1,   261,    97,   261,    -1,   261,
+      96,   261,    -1,   261,   116,   261,    -1,   261,   118,   261,
+      -1,   261,   115,   261,    -1,   261,   114,   261,    -1,   261,
+     117,   261,    -1,   261,    69,   261,    -1,   261,    70,   261,
+      -1,   261,    40,   261,    -1,   261,    68,   261,    -1,    43,
+     261,    -1,    36,   261,    -1,    36,    -1,   124,   256,   135,
+      -1,   114,   261,    -1,   261,   126,   261,   127,    -1,   261,
+      81,   261,    -1,   261,    80,   261,    -1,   261,    87,   261,
+      -1,   261,    86,   261,    -1,   261,    88,   261,    -1,   261,
+      79,   261,    -1,   261,    78,   261,    -1,   261,    85,   261,
+      -1,   261,    82,   261,    -1,   261,    83,   261,    -1,   261,
+      84,   261,    -1,   261,   104,   261,    -1,   261,   105,   261,
+     106,   261,    -1,   261,    93,    -1,   261,    92,    -1,    93,
+     261,    -1,    92,   261,    -1,    53,   129,     3,    -1,   130,
+       3,    -1,    -1,   261,   129,   124,   262,   261,   135,    -1,
+       3,    -1,   117,    -1,     4,    -1,   186,    -1,   117,    -1,
+     261,   129,   263,    91,   264,    -1,   261,    94,   264,    -1,
+     261,   129,   126,   261,   127,    -1,   261,   129,   130,   264,
+      -1,   261,    94,   130,   264,    -1,   261,   129,   130,   126,
+     261,   127,    -1,   261,    94,   130,   126,   261,   127,    -1,
+     261,   129,   264,    -1,     3,    -1,    16,     3,    -1,    16,
+       3,   104,     3,    -1,    16,     3,   104,     5,    -1,   192,
+     267,    -1,    63,    16,   104,   261,    -1,    22,    16,   241,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,  1908,  1908,  1910,  1910,  1911,  1912,  1914,  1915,  1916,
-    1917,  1918,  1919,  1920,  1921,  1923,  1923,  1924,  1925,  1927,
-    1928,  1929,  1930,  1931,  1932,  1933,  1935,  1936,  1938,  1941,
-    1944,  1945,  1946,  1947,  1948,  1949,  1950,  1951,  1952,  1953,
-    1954,  1955,  1956,  1957,  1958,  1961,  1962,  1963,  1964,  1965,
-    1966,  1967,  1968,  1980,  1981,  1985,  1996,  2015,  2016,  2018,
-    2019,  2021,  2022,  2024,  2084,  2085,  2088,  2088,  2107,  2108,
-    2109,  2114,  2118,  2123,  2124,  2126,  2146,  2194,  2194,  2213,
-    2213,  2228,  2231,  2234,  2237,  2241,  2242,  2243,  2244,  2245,
-    2246,  2248,  2259,  2262,  2262,  2293,  2293,  2318,  2318,  2334,
-    2335,  2336,  2337,  2345,  2354,  2354,  2403,  2407,  2418,  2428,
-    2445,  2446,  2447,  2448,  2450,  2451,  2453,  2453,  2455,  2455,
-    2478,  2492,  2508,  2509,  2510,  2511,  2518,  2519,  2520,  2521,
-    2522,  2523,  2524,  2525,  2526,  2527,  2531,  2532,  2534,  2535,
-    2537,  2538,  2542,  2540,  2548,  2546,  2555,  2556,  2557,  2558,
-    2559,  2560,  2561,  2562,  2564,  2570,  2571,  2572,  2573,  2574,
-    2575,  2578,  2651,  2651,  2653,  2653,  2655,  2656,  2658,  2742,
-    2743,  2752,  2753,  2756,  2757,  2758,  2759,  2760,  2761,  2762,
-    2780,  2782,  2783,  2784,  2786,  2786,  2790,  2790,  2794,  2795,
-    2798,  2799,  2801,  2802,  2804,  2805,  2807,  2811,  2814,  2819,
-    2820,  2821,  2822,  2824,  2827,  2831,  2834,  2837,  2847,  2851,
-    2857,  2863,  2871,  2876,  2882,  2890,  2898,  2899,  2900,  2903,
-    2902,  2919,  2920,  2922,  2921,  2945,  2964,  2978,  2979,  2981,
-    2982,  2984,  2985,  2986,  2995,  2996,  3000,  3001,  3003,  3004,
-    3005,  3007,  3011,  3012,  3017,  3018,  3062,  3112,  3133,  3155,
-    3158,  3165,  3168,  3171,  3174,  3177,  3180,  3185,  3186,  3188,
-    3189,  3190,  3191,  3192,  3194,  3200,  3209,  3210,  3211,  3212,
-    3213,  3214,  3216,  3220,  3232,  3250,  3261,  3271,  3280,  3281,
-    3282,  3283,  3284,  3285,  3286,  3287,  3288,  3289,  3290,  3291,
-    3292,  3293,  3294,  3295,  3296,  3297,  3298,  3299,  3300,  3301,
-    3302,  3303,  3304,  3305,  3306,  3307,  3308,  3309,  3310,  3311,
-    3312,  3313,  3314,  3315,  3316,  3317,  3318,  3319,  3320,  3321,
-    3322,  3323,  3324,  3325,  3327,  3328,  3329,  3330,  3332,  3347,
-    3355,  3355,  3409,  3410,  3411,  3412,  3413,  3421,  3439,  3446,
-    3457,  3464,  3471,  3481,  3492,  3670,  3706,  3713,  3720,  3727,
-    3749,  3754
+       0,  1917,  1917,  1919,  1919,  1920,  1921,  1923,  1924,  1925,
+    1926,  1927,  1928,  1929,  1930,  1932,  1932,  1933,  1934,  1936,
+    1937,  1938,  1939,  1940,  1941,  1942,  1944,  1945,  1947,  1950,
+    1953,  1954,  1955,  1956,  1957,  1958,  1959,  1960,  1961,  1962,
+    1963,  1964,  1965,  1966,  1967,  1970,  1971,  1972,  1973,  1974,
+    1975,  1976,  1977,  1989,  1990,  1994,  2005,  2024,  2025,  2027,
+    2028,  2030,  2031,  2033,  2093,  2094,  2097,  2097,  2116,  2117,
+    2118,  2123,  2127,  2132,  2133,  2135,  2155,  2203,  2203,  2222,
+    2222,  2237,  2240,  2243,  2246,  2250,  2251,  2252,  2253,  2254,
+    2255,  2257,  2268,  2271,  2271,  2302,  2302,  2327,  2327,  2343,
+    2344,  2345,  2346,  2354,  2363,  2363,  2412,  2416,  2427,  2437,
+    2454,  2455,  2456,  2457,  2458,  2460,  2461,  2463,  2463,  2465,
+    2465,  2489,  2497,  2508,  2524,  2525,  2526,  2527,  2534,  2535,
+    2536,  2537,  2538,  2539,  2540,  2541,  2542,  2543,  2547,  2548,
+    2550,  2551,  2553,  2554,  2558,  2556,  2564,  2562,  2571,  2572,
+    2573,  2574,  2575,  2576,  2577,  2578,  2580,  2586,  2587,  2588,
+    2589,  2590,  2591,  2594,  2667,  2667,  2669,  2669,  2671,  2672,
+    2674,  2758,  2759,  2768,  2769,  2772,  2773,  2774,  2775,  2776,
+    2777,  2778,  2791,  2793,  2794,  2795,  2797,  2797,  2801,  2801,
+    2805,  2806,  2809,  2810,  2812,  2813,  2815,  2816,  2818,  2822,
+    2825,  2830,  2831,  2832,  2833,  2835,  2838,  2842,  2845,  2848,
+    2858,  2862,  2868,  2874,  2882,  2887,  2893,  2901,  2909,  2910,
+    2911,  2914,  2913,  2930,  2931,  2933,  2932,  2956,  2975,  2989,
+    2990,  2992,  2993,  2995,  2996,  2997,  3006,  3007,  3011,  3012,
+    3014,  3015,  3016,  3018,  3022,  3023,  3028,  3029,  3073,  3123,
+    3144,  3166,  3169,  3176,  3179,  3182,  3185,  3188,  3191,  3196,
+    3197,  3199,  3200,  3201,  3202,  3203,  3205,  3211,  3220,  3221,
+    3222,  3223,  3224,  3225,  3227,  3231,  3243,  3261,  3272,  3282,
+    3291,  3292,  3293,  3294,  3295,  3296,  3297,  3298,  3299,  3300,
+    3301,  3302,  3303,  3304,  3305,  3306,  3307,  3308,  3309,  3310,
+    3311,  3312,  3313,  3314,  3315,  3316,  3317,  3318,  3319,  3320,
+    3321,  3322,  3323,  3324,  3325,  3326,  3327,  3328,  3329,  3330,
+    3331,  3332,  3333,  3334,  3335,  3336,  3338,  3339,  3340,  3341,
+    3343,  3358,  3366,  3366,  3420,  3421,  3422,  3423,  3424,  3432,
+    3450,  3457,  3468,  3475,  3482,  3492,  3503,  3681,  3717,  3724,
+    3731,  3738,  3760,  3766
 };
 #endif
 
@@ -2725,31 +2734,31 @@ static const yytype_uint16 yyr1[] =
      165,   167,   167,   168,   168,   169,   169,   169,   169,   170,
      170,   171,   172,   174,   173,   176,   175,   178,   177,   179,
      179,   180,   180,   180,   182,   181,   183,   183,   184,   185,
-     186,   186,   186,   186,   187,   187,   189,   188,   190,   188,
-     191,   191,   192,   192,   193,   193,   194,   194,   194,   194,
-     194,   194,   194,   194,   194,   194,   195,   195,   196,   196,
-     197,   197,   199,   198,   201,   200,   202,   202,   203,   203,
-     204,   204,   204,   204,   204,   205,   205,   206,   206,   207,
-     207,   207,   208,   208,   210,   209,   211,   211,   212,   213,
-     213,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     215,   216,   217,   218,   220,   219,   222,   221,   223,   223,
-     223,   223,   224,   224,   225,   225,   226,   226,   226,   227,
-     227,   228,   228,   229,   229,   229,   229,   229,   230,   230,
-     230,   230,   231,   231,   232,   232,   233,   233,   233,   235,
-     234,   236,   236,   238,   237,   239,   240,   241,   241,   242,
-     242,   243,   243,   243,   244,   244,   245,   245,   246,   246,
-     246,   247,   248,   247,   249,   250,   251,   251,   252,   253,
-     253,   254,   255,   256,   256,   257,   257,   258,   258,   259,
-     259,   259,   259,   259,   260,   260,   261,   261,   261,   261,
+     186,   186,   186,   186,   186,   187,   187,   189,   188,   190,
+     188,   191,   191,   191,   192,   192,   193,   193,   194,   194,
+     194,   194,   194,   194,   194,   194,   194,   194,   195,   195,
+     196,   196,   197,   197,   199,   198,   201,   200,   202,   202,
+     203,   203,   204,   204,   204,   204,   204,   205,   205,   206,
+     206,   207,   207,   207,   208,   208,   210,   209,   211,   211,
+     212,   213,   213,   214,   214,   214,   214,   214,   214,   214,
+     214,   214,   215,   216,   217,   218,   220,   219,   222,   221,
+     223,   223,   223,   223,   224,   224,   225,   225,   226,   226,
+     226,   227,   227,   228,   228,   229,   229,   229,   229,   229,
+     230,   230,   230,   230,   231,   231,   232,   232,   233,   233,
+     233,   235,   234,   236,   236,   238,   237,   239,   240,   241,
+     241,   242,   242,   243,   243,   243,   244,   244,   245,   245,
+     246,   246,   246,   247,   248,   247,   249,   250,   251,   251,
+     252,   253,   253,   254,   255,   256,   256,   257,   257,   258,
+     258,   259,   259,   259,   259,   259,   260,   260,   261,   261,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
-     262,   261,   263,   263,   263,   264,   264,   261,   261,   261,
-     261,   261,   261,   261,   265,   266,   267,   267,   267,   268,
-     269,   270
+     261,   261,   262,   261,   263,   263,   263,   264,   264,   261,
+     261,   261,   261,   261,   261,   261,   265,   266,   267,   267,
+     267,   268,   269,   270
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -2766,31 +2775,31 @@ static const yytype_uint8 yyr2[] =
        7,     1,     2,     1,     2,     0,     1,     1,     2,     1,
        2,     4,     3,     0,     8,     0,     9,     0,     5,     1,
        2,     1,     2,     1,     0,     6,     2,     1,     4,     2,
-       1,     1,     1,     1,     3,     1,     0,     6,     0,     5,
-       2,     4,     0,     1,     1,     2,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     2,     0,     2,
-       0,     2,     0,     9,     0,     8,     0,     1,     1,     2,
-       1,     4,     1,     1,     1,     0,     1,     1,     2,     1,
-       2,     8,     1,     1,     0,     4,     1,     3,     3,     0,
-       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     0,     0,     4,     0,     4,     0,     2,
-       2,     2,     2,     3,     1,     1,    10,     6,    11,     0,
-       1,     1,     2,     1,     3,     3,     3,     3,     0,     1,
-       2,     4,     3,     1,     4,     2,     1,     1,     0,     0,
-      12,     1,     0,     0,    10,     1,     3,     1,     1,     1,
-       3,     1,     1,     1,     2,     0,     0,     3,     0,     1,
-       1,     1,     2,     2,     0,     4,     4,     4,     2,     1,
-       2,     1,     1,     1,     3,     1,     3,     0,     1,     1,
-       1,     1,     1,     1,     3,     5,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     2,     2,
+       1,     1,     1,     1,     1,     3,     1,     0,     6,     0,
+       5,     2,     2,     4,     0,     1,     1,     2,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     2,
+       0,     2,     0,     2,     0,     9,     0,     8,     0,     1,
+       1,     2,     1,     4,     1,     1,     1,     0,     1,     1,
+       2,     1,     2,     8,     1,     1,     0,     4,     1,     3,
+       3,     0,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     0,     4,     0,     4,
+       0,     2,     2,     2,     2,     3,     1,     1,    10,     6,
+      11,     0,     1,     1,     2,     1,     3,     3,     3,     3,
+       0,     1,     2,     4,     3,     1,     4,     2,     1,     1,
+       0,     0,    12,     1,     0,     0,    10,     1,     3,     1,
+       1,     1,     3,     1,     1,     1,     2,     0,     0,     3,
+       0,     1,     1,     1,     2,     2,     0,     4,     4,     4,
+       2,     1,     2,     1,     1,     1,     3,     1,     3,     0,
+       1,     1,     1,     1,     1,     1,     3,     5,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     4,     2,     1,     3,     2,
-       4,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     5,     2,     2,     2,     2,     3,     2,
-       0,     6,     1,     1,     1,     1,     1,     5,     3,     5,
-       4,     4,     6,     6,     3,     1,     2,     4,     4,     2,
-       4,     3
+       2,     2,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     2,     2,     1,
+       3,     2,     4,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     5,     2,     2,     2,     2,
+       3,     2,     0,     6,     1,     1,     1,     1,     1,     5,
+       3,     5,     4,     4,     6,     6,     3,     1,     2,     4,
+       4,     2,     4,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -2798,303 +2807,303 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-     122,   345,   135,   174,   274,   171,   172,   173,     0,     0,
-      79,     0,     0,   128,   275,   126,   127,     0,   134,     0,
-     133,   222,   178,   179,   307,   129,     0,     0,     0,   177,
-     130,   132,   131,     0,     0,   176,   175,     0,     0,     0,
-     257,     0,     0,    14,   181,     0,     0,     0,     0,   238,
-     122,     0,     0,     2,   122,     5,    55,    12,     0,    37,
-      68,    32,    33,    34,    35,    36,    39,   122,    38,     7,
-      31,     0,   123,   124,     9,     8,    11,   272,   273,     0,
-     180,    10,   266,   268,   270,   269,    40,   255,   267,   271,
-      42,    30,    41,     0,     0,    73,    77,   122,    93,   110,
-     113,   112,   111,   118,   115,     0,     0,   345,   244,   221,
-       0,   306,     0,     0,   120,     0,   104,   238,     0,     0,
-     248,    66,   259,   260,   261,   262,   263,     0,     0,   258,
-     327,   326,   309,   289,   288,     0,   253,     0,   239,   240,
-     241,   251,    83,     0,   107,   249,     0,    81,    45,    44,
-     122,    46,    29,     0,    47,    48,    49,    51,     0,    50,
-     329,     1,     6,   122,   345,     0,    69,     0,     0,    70,
-      54,   109,     0,   218,     0,   163,     0,   162,   164,   349,
-     125,   194,     0,   195,   199,     0,     0,     0,     0,     0,
+     124,   347,   137,   176,   276,   173,   174,   175,     0,     0,
+      79,     0,     0,   130,   277,   128,   129,     0,   136,     0,
+     135,   224,   180,   181,   309,   131,     0,     0,     0,   179,
+     132,   134,   133,     0,     0,   178,   177,     0,     0,     0,
+     259,     0,     0,    14,   183,     0,     0,     0,     0,   240,
+     124,     0,     0,     2,   124,     5,    55,    12,     0,    37,
+      68,    32,    33,    34,    35,    36,    39,   124,    38,     7,
+      31,     0,   125,   126,     9,     8,    11,   274,   275,     0,
+     182,    10,   268,   270,   272,   271,    40,   257,   269,   273,
+      42,    30,    41,     0,     0,    73,    77,   124,    93,   110,
+     114,   112,   111,   113,   119,   116,     0,     0,   347,   246,
+     223,     0,   308,     0,   121,     0,   122,   307,   104,   240,
+       0,     0,   250,    66,   261,   262,   263,   264,   265,     0,
+       0,   260,   329,   328,   311,   291,   290,     0,   255,     0,
+     241,   242,   243,   253,    83,     0,   107,   251,     0,    81,
+      45,    44,   124,    46,    29,     0,    47,    48,    49,    51,
+       0,    50,   331,     1,     6,   124,   347,     0,    69,     0,
+       0,    70,    54,   109,     0,   220,     0,   165,     0,   164,
+     166,   351,   127,   196,     0,   197,   201,     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,     0,     0,     0,     0,     0,   325,
-     324,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   238,     0,     0,
-      56,    74,     0,     0,     0,   122,   116,     0,   225,     0,
-     228,   227,   351,   236,   208,     0,   252,     0,     0,    27,
-       0,   328,     0,     0,   277,     0,     0,     0,   308,   276,
-     242,   243,    84,   235,    60,    61,   106,   250,    59,    82,
-      43,    28,   122,     0,   235,     0,     0,    53,   346,   217,
-     216,     0,   136,   138,     0,   186,     0,   203,     0,   200,
-     201,   256,   303,   304,   301,   302,   282,   283,   285,   284,
-     280,   281,   317,   316,   312,   311,   319,   320,   321,   318,
-     314,   313,   315,   286,   287,   336,     0,   335,   338,   295,
-     294,   293,   322,     0,   292,   291,   290,   278,   279,   299,
-     298,   296,   300,   297,     0,     0,   110,   113,   336,   330,
-       0,     0,     0,   344,     0,     0,     0,    25,     0,   122,
-      17,    23,     0,    20,    19,    22,    21,   122,   114,     0,
-     238,   245,   169,     0,     0,   209,   213,   108,   121,   226,
-     305,     0,    26,   247,   350,     0,   264,     0,   254,     0,
-      58,     0,   122,    13,    58,     0,     0,     0,     0,     0,
-     140,     0,     0,   235,   165,   166,     0,     0,     0,   182,
-     183,   188,   202,     0,   341,     0,   246,   310,     0,     0,
-       0,   340,     0,   122,     0,     0,   119,    18,   122,     0,
-       0,     0,     0,   215,   210,   235,     0,     0,   122,     0,
-     233,   232,   231,   234,     0,    63,    62,    52,     0,   122,
-     347,   348,   208,   137,     0,     0,   229,   139,   144,    58,
-       0,   187,   207,   206,   204,   205,     0,     0,     0,   323,
-       0,   339,     0,   337,    78,     0,    85,     0,   117,   237,
-     170,   169,     0,     0,   212,     0,     0,    99,   103,   101,
-     105,    64,   265,    57,     0,    76,     0,   141,   142,     0,
-     122,   168,   167,   197,   190,   181,   191,     0,   189,     0,
-     188,   343,   331,   342,    80,     0,     0,     0,    86,    89,
-      87,    24,   214,   223,   211,    97,     0,   100,   102,   122,
-      67,   122,   235,   122,   230,     0,   159,     0,     0,   122,
-     157,     0,   184,   181,   188,   192,     0,    27,    94,    90,
-      88,    27,    27,   235,    65,    75,     0,   150,   154,     0,
-       0,     0,   122,   148,   152,   153,   160,   218,   145,   158,
-     183,     0,     0,   193,    27,    92,     0,     0,     0,   219,
-     122,   143,   149,     0,     0,   185,   183,    91,   224,    98,
-      95,    27,     0,     0,   196,     0,     0,     0,   151,   208,
-     198,    27,   220,     0,     0,   235,    96,   161
+       0,   327,   326,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   240,
+       0,     0,    56,    74,     0,     0,     0,   124,   117,     0,
+     227,     0,   230,   229,   353,   238,   210,     0,   254,     0,
+      27,     0,   330,     0,     0,   279,     0,     0,     0,   310,
+     278,   244,   245,    84,   237,    60,    61,   106,   252,    59,
+      82,    43,    28,   124,     0,   237,     0,     0,    53,   348,
+     219,   218,     0,   138,   140,     0,   188,     0,   205,     0,
+     202,   203,   258,   305,   306,   303,   304,   284,   285,   287,
+     286,   282,   283,   319,   318,   314,   313,   321,   322,   323,
+     320,   316,   315,   317,   288,   289,   338,     0,   337,   340,
+     297,   296,   295,   324,     0,   294,   293,   292,   280,   281,
+     301,   300,   298,   302,   299,     0,     0,   110,   114,   338,
+     332,     0,     0,     0,   346,     0,     0,     0,    25,     0,
+     124,    17,    23,     0,    20,    19,    22,    21,   124,   115,
+       0,   240,   247,   171,     0,     0,   211,   215,   108,   123,
+     228,     0,    26,   249,   352,     0,   266,     0,   256,     0,
+      58,     0,   124,    13,    58,     0,     0,     0,     0,     0,
+     142,     0,     0,   237,   167,   168,     0,     0,     0,   184,
+     185,   190,   204,     0,   343,     0,   248,   312,     0,     0,
+       0,   342,     0,   124,     0,     0,   120,    18,   124,     0,
+       0,     0,     0,   217,   212,   237,     0,     0,   124,     0,
+     235,   234,   233,   236,     0,    63,    62,    52,     0,   124,
+     349,   350,   210,   139,     0,     0,   231,   141,   146,    58,
+       0,   189,   209,   208,   206,   207,     0,     0,     0,   325,
+       0,   341,     0,   339,    78,     0,    85,     0,   118,   239,
+     172,   171,     0,     0,   214,     0,     0,    99,   103,   101,
+     105,    64,   267,    57,     0,    76,     0,   143,   144,     0,
+     124,   170,   169,   199,   192,   183,   193,     0,   191,     0,
+     190,   345,   333,   344,    80,     0,     0,     0,    86,    89,
+      87,    24,   216,   225,   213,    97,     0,   100,   102,   124,
+      67,   124,   237,   124,   232,     0,   161,     0,     0,   124,
+     159,     0,   186,   183,   190,   194,     0,    27,    94,    90,
+      88,    27,    27,   237,    65,    75,     0,   152,   156,     0,
+       0,     0,   124,   150,   154,   155,   162,   220,   147,   160,
+     185,     0,     0,   195,    27,    92,     0,     0,     0,   221,
+     124,   145,   151,     0,     0,   187,   185,    91,   226,    98,
+      95,    27,     0,     0,   198,     0,     0,     0,   153,   210,
+     200,    27,   222,     0,     0,   237,    96,   163
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    52,    53,    54,    55,   348,   349,   350,   371,   372,
-     151,   152,   171,   351,   153,   435,   154,   268,   265,   520,
-      59,   253,   167,   168,    60,    61,    62,    63,   232,    64,
-      97,   155,   156,   507,   508,   509,   510,    65,   234,   477,
-     586,   478,   542,   479,   480,    66,   249,   157,    67,    68,
-     238,   239,    69,   357,   235,    70,   158,    72,    73,   390,
-     392,   445,   353,   523,   354,   490,   551,   552,   553,   528,
-     529,   530,   178,   355,   284,   394,   395,   423,    77,    78,
-      79,   401,   456,   498,   561,   183,   396,   457,   499,   184,
-      80,   288,   289,   290,   364,   365,   366,   281,   356,   581,
-     110,    82,   541,   240,   241,   432,   447,   433,   380,   361,
-     137,   138,   139,   243,    83,    84,    85,   159,   140,   245,
-     246,    86,   127,   128,   129,    87,   408,   342,   318,    88,
-      89,   179,    90,    91,    92
+      -1,    52,    53,    54,    55,   349,   350,   351,   371,   372,
+     153,   154,   173,   352,   155,   435,   156,   269,   266,   520,
+      59,   254,   169,   170,    60,    61,    62,    63,   234,    64,
+      97,   157,   158,   507,   508,   509,   510,    65,   236,   477,
+     586,   478,   542,   479,   480,    66,   250,   159,    67,    68,
+     240,   241,    69,   358,   237,    70,   160,    72,    73,   390,
+     392,   445,   354,   523,   355,   490,   551,   552,   553,   528,
+     529,   530,   180,   356,   285,   394,   395,   423,    77,    78,
+      79,   401,   456,   498,   561,   185,   396,   457,   499,   186,
+      80,   289,   290,   291,   365,   366,   367,   282,   357,   581,
+     111,    82,   541,   242,   243,   432,   447,   433,   380,   362,
+     139,   140,   141,   245,    83,    84,    85,   161,   142,   247,
+     248,    86,   129,   130,   131,    87,   408,   343,   319,    88,
+      89,   181,    90,    91,    92
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -494
+#define YYPACT_NINF -490
 static const yytype_int16 yypact[] =
 {
-    1763,   -21,  -494,  -494,  -494,  -494,  -494,  -494,   -29,   -45,
-    -494,   -36,    68,  -494,  -494,  -494,  -494,    75,  -494,  2217,
-    -494,    91,  -494,  -494,   438,  -494,   -15,   316,    -5,  -494,
-    -494,  -494,  -494,     7,   -37,  -494,  -494,   107,  2217,    24,
-     367,  2217,  2217,  -494,  -494,  2217,  2217,  2217,  2217,  2217,
-     707,   127,   139,  -494,   575,  -494,  -494,  -494,    23,  -494,
-    2145,  -494,  -494,  -494,  -494,  -494,  -494,  2019,  -494,  -494,
-    -494,   488,   431,  -494,  -494,  -494,  -494,  -494,  -494,    17,
-    -494,  -494,  -494,  -494,  -494,  -494,    57,  2920,  -494,  -494,
-    -494,  -494,  -494,   155,    36,  -494,  -494,  2019,  -494,  -494,
-    -494,  -494,  -494,  -494,  -494,    28,   316,  -494,   -48,  -494,
-      47,   213,  2217,    69,  -494,  2217,  -494,  2217,   194,   116,
-     213,  -494,  -494,  -494,  -494,  -494,  -494,    92,   121,   132,
-     213,   213,   379,   213,   213,   -42,  2858,   114,   146,  2217,
-    -494,  2858,   246,   247,  2217,  2217,   247,   249,  -494,  -494,
-     839,  -494,  -494,   125,  -494,  -494,  -494,  -494,   248,  -494,
-    -494,  -494,  -494,  1103,   197,   264,  -494,   168,   203,    57,
-     173,  -494,   274,    66,   276,  -494,   278,  -494,  -494,  -494,
-    -494,  -494,  2217,  -494,    21,  2217,  2217,  2217,  2217,  2217,
+    1763,   -22,  -490,  -490,  -490,  -490,  -490,  -490,   -28,   -44,
+    -490,   -38,    94,  -490,  -490,  -490,  -490,    73,  -490,  2217,
+    -490,   102,  -490,  -490,   247,  -490,   -12,   547,  2217,  -490,
+    -490,  -490,  -490,    10,   -36,  -490,  -490,   120,  2217,     5,
+     147,  2217,  2217,  -490,  -490,  2217,  2217,  2217,  2217,  2217,
+     707,   136,   141,  -490,   575,  -490,  -490,  -490,    20,  -490,
+    2145,  -490,  -490,  -490,  -490,  -490,  -490,  2019,  -490,  -490,
+    -490,   338,   286,  -490,  -490,  -490,  -490,  -490,  -490,    17,
+    -490,  -490,  -490,  -490,  -490,  -490,    49,  2850,  -490,  -490,
+    -490,  -490,  -490,   151,    34,  -490,  -490,  2019,  -490,  -490,
+    -490,  -490,  -490,  -490,  -490,  -490,    -9,   671,  -490,   -27,
+    -490,    35,   406,  2217,    32,    41,  -490,   406,  -490,  2217,
+     160,    68,   406,  -490,  -490,  -490,  -490,  -490,  -490,    39,
+      92,   118,   406,   406,   378,   406,   406,   -41,  2788,    99,
+     125,  2217,  -490,  2788,   225,   229,  2217,  2217,   229,   230,
+    -490,  -490,   839,  -490,  -490,   103,  -490,  -490,  -490,  -490,
+     218,  -490,  -490,  -490,  -490,  1103,   166,   233,  -490,   145,
+     178,    49,   161,  -490,   258,    28,   264,  -490,   265,  -490,
+    -490,  -490,  -490,  -490,  2217,  -490,    18,  2217,  2217,  2217,
     2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,
-    2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  -494,
-    -494,   138,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,
-    2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,   130,
-    -494,  -494,  2217,   273,  2217,  1235,  -494,   316,   158,   160,
-    -494,  -494,  -494,   167,    15,   157,   192,   229,  2276,  1891,
-     165,  -494,  2217,  2217,  -494,  2217,   367,  2217,  -494,  -494,
-    -494,  -494,  -494,   207,   212,  -494,  -494,  -494,   212,  -494,
-    -494,  -494,  2019,   181,   207,  2217,  2217,  -494,   217,  -494,
-    -494,   314,   262,   269,   315,  2858,   220,   221,     6,    21,
-    -494,  2858,  1095,   567,   567,   567,  3292,  3292,  3292,  3292,
-    1095,  1095,  2858,  2858,  2858,  2858,  2858,  2858,  2858,  2858,
-    2858,  2858,  2858,  2982,  3044,  -494,   214,  -494,  -494,   313,
-     313,   313,  2858,  2486,  3106,  3168,  3230,  1095,  1095,   379,
-     379,   213,   213,   213,   199,  2548,   238,   244,   245,  -494,
-    2217,   267,   254,  -494,   226,   224,  2346,  -494,   228,  1367,
-    -494,  -494,   235,  -494,  -494,  -494,  -494,  1235,  -494,   316,
-    2217,  -494,   -55,   363,   232,   280,  -494,  -494,  -494,   240,
-    -494,   237,  1891,  -494,  2858,   243,  -494,   277,  2858,   292,
-     281,   247,   971,  -494,    -6,   279,   252,   135,   270,   316,
-     376,   316,   268,   207,   296,  -494,   265,    22,    34,  -494,
-    -494,  -494,  -494,  2217,  -494,  2217,  -494,  -494,  2217,  2610,
-    2217,  -494,   294,  2019,  2217,   272,  -494,  -494,  1235,   283,
-     275,  2217,   292,  -494,  -494,   207,    19,    78,  2019,  2217,
-    -494,  -494,  -494,  -494,  2217,  -494,  -494,  -494,  2217,  2019,
-    -494,  -494,    15,  -494,   316,   284,  -494,   300,  -494,   281,
-     315,  -494,  -494,  -494,  -494,  -494,   291,   253,  2672,  2858,
-    2416,  -494,  2734,  -494,  -494,   287,    46,   289,  -494,  -494,
-    2858,   309,   286,   363,  -494,   297,   312,  -494,  -494,    78,
-    -494,   338,  -494,  2858,   -38,  -494,   298,   300,  -494,   316,
-      27,  -494,  -494,  -494,  -494,   299,  -494,  2217,  -494,   327,
-    -494,  -494,  -494,  -494,  -494,  2217,   318,   306,    46,  -494,
-    -494,  -494,  -494,  -494,  -494,  -494,   442,  -494,  -494,  2019,
-    -494,  2019,   207,  1499,  -494,   447,  -494,   427,   321,   255,
-    -494,    17,  2858,   342,  -494,    25,  2796,  1891,  -494,  -494,
-    -494,  1891,  1891,   207,  -494,  -494,   332,  -494,  -494,   335,
-     328,   331,  1631,  -494,  -494,  -494,  -494,    66,  -494,  -494,
-    -494,   334,    17,    25,  1891,  -494,   336,   340,   341,  -494,
-    1499,  -494,  -494,   472,   365,  -494,  -494,  -494,  -494,  -494,
-    -494,  1891,   347,   358,  -494,   373,   359,   352,  -494,    15,
-    -494,  1891,  -494,   353,   355,   207,  -494,  -494
+    2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,
+    2217,  -490,  -490,    23,  2217,  2217,  2217,  2217,  2217,  2217,
+    2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,  2217,
+    2217,   327,  -490,  -490,  2217,   260,  2217,  1235,  -490,   671,
+     149,   150,  -490,  -490,  -490,   146,    40,   153,   182,   358,
+    1891,   154,  -490,  2217,  2217,  -490,  2217,   147,  2217,  -490,
+    -490,  -490,  -490,  -490,   179,   184,  -490,  -490,  -490,   184,
+    -490,  -490,  -490,  2019,   163,   179,  2217,  2217,  -490,   190,
+    -490,  -490,   296,   251,   256,   298,  2788,   209,   210,    -8,
+      18,  -490,  2788,  1095,   567,   567,   567,  3222,  3222,  3222,
+    3222,  1095,  1095,  2788,  2788,  2788,  2788,  2788,  2788,  2788,
+    2788,  2788,  2788,  2788,  2912,  2974,  -490,   396,  -490,  -490,
+     362,   362,   362,  2788,  2416,  3036,  3098,  3160,  1095,  1095,
+     378,   378,   406,   406,   406,   181,  2478,   226,   232,   234,
+    -490,  2217,   420,   235,  -490,   185,   195,  2276,  -490,   193,
+    1367,  -490,  -490,   201,  -490,  -490,  -490,  -490,  1235,  -490,
+     671,  2217,  -490,    11,   334,   203,   239,  -490,  -490,  -490,
+     213,   211,  1891,  -490,  2788,   214,  -490,   257,  2788,   279,
+     253,   229,   971,  -490,    -1,   266,   231,   113,   241,   671,
+     357,   671,   248,   179,   276,  -490,   249,    71,    72,  -490,
+    -490,  -490,  -490,  2217,  -490,  2217,  -490,  -490,  2217,  2540,
+    2217,  -490,   431,  2019,  2217,   261,  -490,  -490,  1235,   259,
+     246,  2217,   279,  -490,  -490,   179,    42,    57,  2019,  2217,
+    -490,  -490,  -490,  -490,  2217,  -490,  -490,  -490,  2217,  2019,
+    -490,  -490,    40,  -490,   671,   275,  -490,   283,  -490,   253,
+     298,  -490,  -490,  -490,  -490,  -490,   282,   137,  2602,  2788,
+    2346,  -490,  2664,  -490,  -490,   271,     8,   277,  -490,  -490,
+    2788,   306,   287,   334,  -490,   289,   290,  -490,  -490,    57,
+    -490,   360,  -490,  2788,   -40,  -490,   293,   283,  -490,   671,
+      26,  -490,  -490,  -490,  -490,   322,  -490,  2217,  -490,   328,
+    -490,  -490,  -490,  -490,  -490,  2217,   335,   308,     8,  -490,
+    -490,  -490,  -490,  -490,  -490,  -490,   437,  -490,  -490,  2019,
+    -490,  2019,   179,  1499,  -490,   440,  -490,   419,   312,   384,
+    -490,    17,  2788,   336,  -490,    19,  2726,  1891,  -490,  -490,
+    -490,  1891,  1891,   179,  -490,  -490,   330,  -490,  -490,   337,
+     228,   329,  1631,  -490,  -490,  -490,  -490,    28,  -490,  -490,
+    -490,   339,    17,    19,  1891,  -490,   340,   347,   333,  -490,
+    1499,  -490,  -490,   461,   370,  -490,  -490,  -490,  -490,  -490,
+    -490,  1891,   349,   345,  -490,   375,   365,   363,  -490,    40,
+    -490,  1891,  -490,   366,   369,   179,  -490,  -490
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -494,  -494,   337,  -494,   444,  -315,  -494,   150,  -475,   -34,
-       1,   -60,   -87,    53,     2,    52,   446,   364,   129,  -494,
-    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-    -494,  -494,  -494,  -494,  -494,     5,     8,  -494,  -494,    32,
-    -494,    33,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
-      14,    56,  -494,  -494,  -494,  -494,     0,  -494,   430,  -494,
-    -494,  -494,    59,  -494,    61,  -494,   -53,  -494,   -31,  -494,
-    -494,   -14,  -494,     3,  -494,  -494,    72,    62,  -494,  -494,
-    -494,  -494,  -464,  -494,  -494,  -169,  -494,  -457,  -494,  -493,
-    -413,  -494,  -494,   239,  -419,  -494,  -344,   -39,     4,  -494,
-    -494,  -494,  -494,  -494,   508,  -101,    93,   117,  -257,  -494,
-    -103,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -130,  -132,
-     490,   -52,  -494,   285,  -494,   -13,  -494,  -494,  -189,  -494,
-    -494,  -494,  -494,  -494,  -494
+    -490,  -490,   343,  -490,   451,  -327,  -490,   159,   -75,   -31,
+       1,   -60,   -92,    53,     2,    61,   452,   372,   130,  -490,
+    -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
+    -490,  -490,  -490,  -490,  -490,     6,     7,  -490,  -490,    52,
+    -490,    55,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -490,
+      38,    54,  -490,  -490,  -490,  -490,     0,  -490,   447,  -490,
+    -490,  -490,    59,  -490,    60,  -490,   -50,  -490,   -24,  -490,
+    -490,     9,  -490,     3,  -490,  -490,    83,    50,  -490,  -490,
+    -490,  -490,  -489,  -490,  -490,  -168,  -490,  -452,  -490,  -453,
+    -416,  -490,  -490,   250,  -425,  -490,  -341,   -21,     4,  -490,
+    -490,  -490,  -490,  -490,   512,   -98,    97,   121,  -263,  -490,
+    -103,  -490,  -490,  -490,  -490,  -490,  -490,  -490,  -131,  -133,
+     494,   -52,  -490,   288,  -490,   -13,  -490,  -490,  -193,  -490,
+    -490,  -490,  -490,  -490,  -490
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -335
+#define YYTABLE_NINF -337
 static const yytype_int16 yytable[] =
 {
-      71,    56,    58,    76,    81,   242,   108,   170,   169,   261,
-     233,   111,   266,   267,   250,   287,   150,   384,   362,   424,
-     181,    94,   362,   486,   286,   120,   104,   452,   130,   131,
-     494,     2,   132,   133,   134,   136,   141,   170,   560,   454,
-     343,   104,   419,   535,   500,    13,   211,    15,    16,   421,
-      18,   422,    20,    57,    71,    56,    58,    76,    81,    74,
-     257,    75,   565,   -71,   185,    25,   566,   567,   105,   576,
-      93,    99,   100,   525,    30,    31,    32,   563,   228,    96,
-     505,   229,   474,   113,   101,   102,   534,   117,    98,   577,
-     271,   106,   118,   258,   109,    95,   574,   521,   434,   136,
-     344,   279,   248,   467,   141,   475,   587,    57,   506,   112,
-     363,   476,   585,    74,   473,    75,   594,   280,   399,   115,
-     287,   375,   400,   119,   334,   376,   141,   404,   526,   514,
-     160,   136,   136,   336,   337,   116,   449,   496,   440,   161,
-     441,    99,   100,   385,   386,   182,   101,   102,   121,   182,
-     182,   163,   411,   497,   101,   102,   236,   237,   230,   185,
-     231,  -155,   182,    71,    56,    58,    76,    81,   472,   285,
-     593,   244,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   103,   251,   247,   319,
-     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     330,   331,   332,   333,   141,   335,    57,    99,   100,   136,
-     252,   346,    74,   463,    75,   317,   254,   255,   453,   455,
-     101,   102,    99,   100,   256,    71,    56,   352,   382,   374,
-     136,   259,   141,   317,   378,   101,   102,   338,   260,   262,
-     263,   358,   269,   272,   339,   315,   340,   420,   494,     2,
-     341,   369,   136,   136,   172,   546,   -72,   274,   316,   275,
-      99,   100,   276,    13,   277,    15,    16,   278,    18,   282,
-      20,   283,   465,   101,   102,   345,   568,  -115,   443,   359,
-     446,   360,   367,    25,   257,    99,   100,    99,   100,   482,
-     373,   525,    30,    31,    32,   209,   210,   211,   101,   102,
-     101,   102,   271,   379,   381,   383,   389,   388,   393,    99,
-     100,   387,   271,   391,   397,   398,   464,   409,   430,  -332,
-     317,   315,   101,   102,   406,  -334,  -333,   227,   597,   228,
-     403,   481,   229,   446,   172,   412,   368,   141,   414,    71,
-      56,   352,   485,   170,   173,   317,   526,    71,    56,   352,
-     175,   413,   416,   418,   495,   496,   362,   425,   170,  -114,
-     122,   427,   123,   369,   177,   124,   125,   126,   428,   170,
-     438,   497,   426,   429,   315,   434,   484,   439,   524,  -156,
-     458,   444,   459,   410,   442,   460,   448,   462,   450,   451,
-     466,   136,   489,   493,   519,   209,   210,   211,   470,   431,
-     469,   315,   488,   421,   513,   531,   141,   468,    71,    56,
-     352,   483,   504,   511,   537,   515,   317,   222,   223,   224,
-     225,   226,   544,   522,   545,     2,   516,   227,   533,   228,
-     538,   107,   229,     3,     4,   543,     5,     6,     7,    13,
-     556,    15,    16,   557,    18,   558,    20,    14,   562,   170,
-     569,   170,    19,   570,    21,   571,    22,    23,   575,    25,
-     578,   209,   210,   211,   579,   583,   580,   584,    30,    31,
-      32,   588,   589,    29,   532,   590,   592,   591,   595,   596,
-     527,    34,   536,    35,    36,   224,   225,   226,   162,   417,
-     273,   491,   180,   227,   172,   228,   166,   264,   229,    40,
-     436,   517,   518,   539,   173,   559,   540,   582,   573,   174,
-     175,   572,   492,   550,   548,   549,   554,   555,   402,   527,
-      41,    42,   176,   512,   177,   114,     0,   487,   135,   471,
-       0,   377,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   550,   548,   549,   554,   555,     0,     0,     0,
-       0,     0,    48,     0,    49,     0,     0,     0,    51,     0,
-     550,   548,   549,   554,   555,    -4,     0,     0,     1,     2,
+      71,    56,    58,    76,    81,   235,   109,   172,   171,   244,
+     262,   112,   384,   267,   268,   117,   251,   486,   288,   152,
+     183,   287,    94,   424,   494,   122,    99,   100,   132,   133,
+       2,   419,   134,   135,   136,   138,   143,   172,   344,   101,
+     102,   500,   505,   363,    13,   363,    15,    16,   535,    18,
+     105,    20,   103,    57,    71,    56,    58,    76,    81,    74,
+      75,   258,   187,   280,    25,   105,   106,   213,   -71,    93,
+     506,   574,   525,    30,    31,    32,   452,   454,   560,   281,
+      96,   115,   563,   534,   475,   474,    98,   585,   119,   107,
+     476,   467,   272,   120,   259,   521,    95,    99,   100,   230,
+     138,   345,   231,   434,   399,   110,   143,    57,   400,   576,
+     101,   102,   113,    74,    75,   421,   440,   422,   441,   238,
+     239,   375,   288,   103,   404,   376,   335,   526,   143,   123,
+     449,   496,   514,   138,   138,   364,   121,   473,   118,   162,
+     316,   163,   494,   385,   386,   184,   184,   497,   165,   411,
+     124,   187,   125,   317,   232,   126,   127,   128,   233,   246,
+    -157,  -110,   472,   252,   593,    71,    56,    58,    76,    81,
+     249,   286,   253,   255,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,   315,   256,   184,
+     184,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   143,   336,    57,   463,
+     257,   138,   104,   347,    74,    75,   260,   261,   263,   453,
+     455,   273,   264,   270,   174,   -72,   275,    71,    56,   353,
+     374,   138,   382,   143,   174,   378,   276,   277,   495,   496,
+     108,   318,     3,     4,   175,     5,     6,     7,   420,   546,
+     177,   279,   278,   138,   138,   497,    14,   283,   284,   318,
+     361,    19,   346,    21,   179,    22,    23,   359,  -116,   360,
+     568,   465,    99,   100,   258,   379,   381,   370,   368,   373,
+       2,   443,    29,   446,   387,   101,   102,   383,   482,   388,
+      34,   393,    35,    36,    13,   389,    15,    16,   103,    18,
+     391,    20,   272,   397,   398,   430,   406,  -334,    40,   414,
+     413,   464,   272,  -336,    25,  -335,   412,   416,   409,   418,
+     337,   338,   597,    30,    31,    32,   481,   363,   425,    41,
+      42,   426,  -115,   101,   102,   427,   446,   485,   143,   428,
+      71,    56,   353,   172,   174,   318,   103,   434,    71,    56,
+     353,    99,   100,   429,   175,   442,   439,   438,   172,   176,
+     177,    48,   444,    49,   101,   102,   448,    51,   450,   172,
+     318,   469,   178,   451,   179,   489,   484,   103,     2,   466,
+     458,   524,   459,   468,   493,   460,   431,   462,   370,    99,
+     100,   138,    13,   488,    15,    16,   504,    18,   470,    20,
+     421,   511,   101,   102,   516,   513,   143,   515,    71,    56,
+     353,   483,    25,    99,   100,   103,   519,   544,   522,   545,
+     525,    30,    31,    32,    99,   100,   101,   102,   531,   533,
+     543,   537,   538,   556,   339,   557,   558,   101,   102,   103,
+     318,   340,   562,   341,   211,   212,   213,   342,   569,   172,
+     103,   172,   565,   571,   583,   570,   566,   567,   580,   589,
+     211,   212,   213,   575,   578,   369,   224,   225,   226,   227,
+     228,   579,   584,   588,   532,   526,   229,   590,   230,   577,
+     527,   231,   536,   591,   226,   227,   228,   592,   211,   212,
+     213,   595,   229,   596,   230,   164,   587,   231,   274,   417,
+     491,   436,   168,   316,   539,   540,   594,   265,  -158,   182,
+     582,   512,   403,   550,   548,   549,   554,   555,   572,   527,
+     229,   517,   230,   492,   518,   231,   573,   316,   559,   116,
+     402,   487,   137,   471,     0,   377,   410,     0,   316,     0,
+     114,   100,   550,   548,   549,   554,   555,     0,     0,     0,
+       0,     0,     0,   101,   102,     0,     0,     0,     0,     0,
+     550,   548,   549,   554,   555,    -4,   103,     0,     1,     2,
        3,     4,     0,     5,     6,     7,     8,     9,    10,    11,
        0,     0,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,     0,     0,    22,    23,     0,     0,   186,     0,     0,
+      20,     0,     0,    22,    23,     0,     0,   188,     0,     0,
        0,    24,     0,    25,    26,     0,    27,     0,    28,     0,
       29,     0,    30,    31,    32,     0,     0,    33,    34,     0,
-      35,    36,     0,     0,     0,  -335,  -335,  -335,    37,    38,
-      39,     0,     0,   194,   195,     0,    40,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   209,
-     210,   211,     0,   212,   213,   214,     0,    41,    42,     0,
-       0,     0,     0,     0,     0,     0,    43,     0,   220,   221,
-       0,   222,   223,   224,   225,   226,    44,     0,     0,    45,
-       0,   227,     0,   228,    46,    47,   229,     0,     0,    48,
-       0,    49,     0,    50,     0,    51,     0,     0,     0,    -4,
+      35,    36,     0,     0,     0,  -337,  -337,  -337,    37,    38,
+      39,     0,     0,   196,   197,     0,    40,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   211,
+     212,   213,     0,   214,   215,   216,     0,    41,    42,     0,
+       0,     0,     0,     0,    99,   100,    43,     0,   222,   223,
+       0,   224,   225,   226,   227,   228,    44,   101,   102,    45,
+       0,   229,     0,   230,    46,    47,   231,     0,     0,    48,
+     103,    49,     0,    50,     0,    51,     0,     0,     0,    -4,
        1,     2,     3,     4,     0,     5,     6,     7,     8,     9,
       10,    11,     0,     0,     0,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,     0,    22,    23,   142,     0,   143,
-       0,     0,     0,    24,   144,    25,    26,     0,    27,   145,
-      28,     0,    29,   146,    30,    31,    32,     0,     0,    33,
+      18,    19,    20,    21,     0,    22,    23,   144,     0,   145,
+       0,     0,     0,    24,   146,    25,    26,     0,    27,   147,
+      28,     0,    29,   148,    30,    31,    32,     0,     0,    33,
       34,     0,    35,    36,     0,     0,     0,     0,     0,     0,
-      37,    38,    39,     0,   147,     0,     0,     0,    40,     0,
+      37,    38,    39,     0,   149,     0,     0,     0,    40,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,     0,     0,     0,     0,   148,     0,
+      42,     0,     0,     0,     0,     0,     0,     0,   150,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    44,     0,
        0,    45,     0,     0,     0,     0,    46,    47,     0,     0,
        0,    48,     0,    49,     0,    50,     0,    51,     0,     0,
-       0,   149,     1,     2,     3,     4,     0,     5,     6,     7,
+       0,   151,     1,     2,     3,     4,     0,     5,     6,     7,
        8,     9,    10,    11,     0,     0,     0,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,     0,    22,    23,   142,
-       0,   143,     0,     0,     0,    24,   144,    25,    26,     0,
-      27,   145,    28,     0,    29,   146,    30,    31,    32,     0,
+      16,    17,    18,    19,    20,    21,     0,    22,    23,   144,
+       0,   145,     0,     0,     0,    24,   146,    25,    26,     0,
+      27,   147,    28,     0,    29,   148,    30,    31,    32,     0,
        0,    33,    34,     0,    35,    36,     0,     0,     0,     0,
-       0,     0,    37,    38,    39,     0,   147,     0,     0,     0,
+       0,     0,    37,    38,    39,     0,   149,     0,     0,     0,
       40,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
-     148,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     150,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       44,     0,     0,    45,     0,     0,     0,     0,    46,    47,
        0,     0,     0,    48,     0,    49,     0,    50,     0,    51,
-       0,     0,     0,   270,     1,     2,     3,     4,     0,     5,
+       0,     0,     0,   271,     1,     2,     3,     4,     0,     5,
        6,     7,     8,     9,    10,    11,     0,     0,     0,    13,
       14,    15,    16,    17,    18,    19,    20,    21,     0,    22,
-      23,   142,     0,   143,     0,     0,     0,    24,   144,    25,
-      26,     0,    27,   145,    28,     0,    29,   146,    30,    31,
+      23,   144,     0,   145,     0,     0,     0,    24,   146,    25,
+      26,     0,    27,   147,    28,     0,    29,   148,    30,    31,
       32,     0,     0,    33,    34,     0,    35,    36,     0,     0,
-       0,     0,     0,     0,    37,    38,    39,     0,   147,     0,
+       0,     0,     0,     0,    37,    38,    39,     0,   149,     0,
        0,     0,    40,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    41,    42,     0,     0,     0,     0,     0,
-       0,     0,   148,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   150,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    44,     0,     0,    45,     0,     0,     0,     0,
       46,    47,     0,     0,     0,    48,     0,    49,     0,    50,
        0,    51,     0,     0,     0,   437,     1,     2,     3,     4,
        0,     5,     6,     7,     8,     9,    10,    11,     0,     0,
       12,    13,    14,    15,    16,    17,    18,    19,    20,     0,
-       0,    22,    23,     0,     0,  -335,     0,     0,     0,    24,
+       0,    22,    23,     0,     0,  -337,     0,     0,     0,    24,
        0,    25,    26,     0,    27,     0,    28,     0,    29,     0,
       30,    31,    32,     0,     0,    33,    34,     0,    35,    36,
        0,     0,     0,     0,     0,     0,    37,    38,    39,     0,
-       0,  -335,  -335,     0,    40,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   209,   210,   211,
-       0,   212,   213,   214,     0,    41,    42,     0,     0,     0,
-       0,     0,     0,     0,    43,     0,  -335,  -335,     0,   222,
-     223,   224,   225,   226,    44,     0,     0,    45,     0,   227,
-       0,   228,    46,    47,   229,     0,     0,    48,     0,    49,
+       0,  -337,  -337,     0,    40,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   211,   212,   213,
+       0,   214,   215,   216,     0,    41,    42,     0,     0,     0,
+       0,     0,     0,     0,    43,     0,  -337,  -337,     0,   224,
+     225,   226,   227,   228,    44,     0,     0,    45,     0,   229,
+       0,   230,    46,    47,   231,     0,     0,    48,     0,    49,
        0,    50,     0,    51,     0,     0,     0,    -3,     1,     2,
        3,     4,     0,     5,     6,     7,     8,     9,    10,    11,
        0,     0,     0,    13,    14,    15,    16,    17,    18,    19,
@@ -3105,7 +3114,7 @@ static const yytype_int16 yytable[] =
       39,     0,     0,     0,     0,     0,    40,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
-       0,     0,     0,     0,     0,     0,   347,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   348,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    44,     0,     0,    45,
        0,     0,     0,     0,    46,    47,     0,     0,     0,    48,
        0,    49,     0,    50,     0,    51,     0,     0,     0,   -15,
@@ -3118,7 +3127,7 @@ static const yytype_int16 yytable[] =
       37,    38,    39,     0,     0,     0,     0,     0,    40,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,     0,     0,     0,     0,   347,     0,
+      42,     0,     0,     0,     0,     0,     0,     0,   348,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    44,     0,
        0,    45,     0,     0,     0,     0,    46,    47,     0,     0,
        0,    48,     0,    49,     0,    50,     0,    51,     0,     0,
@@ -3135,7 +3144,7 @@ static const yytype_int16 yytable[] =
      547,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       44,     0,     0,    45,     0,     0,     0,     0,    46,    47,
        0,     0,     0,    48,     0,    49,     0,    50,     0,    51,
-       0,     0,     0,  -146,     1,     2,     3,     4,     0,     5,
+       0,     0,     0,  -148,     1,     2,     3,     4,     0,     5,
        6,     7,     8,     9,    10,    11,     0,     0,     0,    13,
       14,    15,    16,    17,    18,    19,    20,     0,     0,    22,
       23,     0,     0,     0,     0,     0,     0,    24,     0,    25,
@@ -3148,7 +3157,7 @@ static const yytype_int16 yytable[] =
        0,     0,   547,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    44,     0,     0,    45,     0,     0,     0,     0,
       46,    47,     0,     0,     0,    48,     0,    49,     0,    50,
-       0,    51,     0,    -3,     0,  -147,     1,     2,     3,     4,
+       0,    51,     0,    -3,     0,  -149,     1,     2,     3,     4,
        0,     5,     6,     7,     8,     9,    10,    11,     0,     0,
       12,    13,    14,    15,    16,    17,    18,    19,    20,     0,
        0,    22,    23,     0,     0,     0,     0,     0,     0,    24,
@@ -3162,39 +3171,39 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,    44,     0,     0,    45,     0,     0,
        0,     0,    46,    47,     0,     0,     0,    48,     0,    49,
        0,    50,     0,    51,     1,     2,     3,     4,     0,     5,
-       6,     7,     8,     9,    10,    11,     0,  -122,     0,    13,
+       6,     7,     8,     9,    10,    11,     0,  -124,     0,    13,
       14,    15,    16,    17,    18,    19,    20,    21,     0,    22,
-      23,   142,     0,   143,     0,     0,     0,    24,   144,    25,
-      26,     0,    27,   145,    28,     0,    29,   146,    30,    31,
+      23,   144,     0,   145,     0,     0,     0,    24,   146,    25,
+      26,     0,    27,   147,    28,     0,    29,   148,    30,    31,
       32,     0,     0,    33,    34,     0,    35,    36,     0,     0,
-       0,     0,     0,     0,    37,    38,    39,     0,   147,     0,
+       0,     0,     0,     0,    37,    38,    39,     0,   149,     0,
        0,     0,    40,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    41,    42,     0,     0,     0,     0,     0,
-       0,     0,   148,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   150,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    44,     0,     0,    45,     0,     0,     0,     0,
       46,    47,     0,     0,     0,    48,     0,    49,     0,    50,
        0,    51,     1,     2,     3,     4,     0,     5,     6,     7,
        8,     9,    10,    11,     0,     0,     0,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,     0,    22,    23,   142,
-       0,   143,     0,     0,     0,    24,   144,    25,    26,     0,
-      27,   145,    28,     0,    29,   146,    30,    31,    32,     0,
+      16,    17,    18,    19,    20,    21,     0,    22,    23,   144,
+       0,   145,     0,     0,     0,    24,   146,    25,    26,     0,
+      27,   147,    28,     0,    29,   148,    30,    31,    32,     0,
        0,    33,    34,     0,    35,    36,     0,     0,     0,     0,
-       0,     0,    37,    38,    39,     0,   147,     0,     0,     0,
+       0,     0,    37,    38,    39,     0,   149,     0,     0,     0,
       40,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
-     148,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     150,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       44,     0,     0,    45,     0,     0,     0,     0,    46,    47,
-       0,     0,     0,    48,     0,    49,     0,    50,   164,    51,
+       0,     0,     0,    48,     0,    49,     0,    50,   166,    51,
        3,     4,     0,     5,     6,     7,     0,     0,     0,     0,
        0,     0,     0,     0,    14,     0,     0,     0,     0,    19,
-       0,    21,     0,    22,    23,     0,     0,   143,     0,     0,
+       0,    21,     0,    22,    23,     0,     0,   145,     0,     0,
        0,    24,     0,     0,     0,     0,     0,     0,    28,     0,
-      29,   165,     0,     0,     0,     0,     0,     0,    34,     0,
+      29,   167,     0,     0,     0,     0,     0,     0,    34,     0,
       35,    36,     0,     0,     0,     0,     0,     0,     0,    38,
        0,     0,     0,     0,     0,     0,    40,     0,     0,     0,
-     107,     0,     3,     4,     0,     5,     6,     7,     0,     0,
+     108,     0,     3,     4,     0,     5,     6,     7,     0,     0,
        0,     0,     0,     0,     0,     0,    14,    41,    42,     0,
        0,    19,     0,    21,     0,    22,    23,     0,     0,     0,
        0,     0,     0,    24,     0,     0,    44,     0,     0,    45,
@@ -3203,180 +3212,173 @@ static const yytype_int16 yytable[] =
        0,    38,     0,     0,     0,     0,     0,     0,    40,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,     0,     0,   186,     0,     0,     0,
+      42,     0,     0,     0,     0,     0,   188,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    44,     0,
        0,    45,     0,     0,     0,     0,    46,    47,     0,     0,
-       0,    48,     0,    49,   187,   188,   189,    51,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,     0,   209,   210,
-     211,     0,   212,   213,   214,     0,     0,     0,     0,     0,
-     215,   216,     0,   217,   218,   219,   186,   220,   221,     0,
-     222,   223,   224,   225,   226,     0,     0,     0,     0,     0,
-     227,     0,   228,     0,     0,   229,     0,     0,     0,     0,
-       0,   370,     0,     0,   187,   188,   189,     0,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,     0,   209,   210,
-     211,     0,   212,   213,   214,     0,     0,     0,     0,     0,
-     215,   216,     0,   217,   218,   219,   186,   220,   221,     0,
-     222,   223,   224,   225,   226,     0,     0,     0,     0,     0,
-     227,     0,   228,     0,     0,   229,     0,     0,     0,     0,
-       0,   415,     0,     0,   187,   188,   189,     0,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,     0,   209,   210,
-     211,     0,   212,   213,   214,     0,     0,     0,     0,     0,
-     215,   216,     0,   217,   218,   219,   186,   220,   221,     0,
-     222,   223,   224,   225,   226,     0,     0,     0,     0,     0,
-     227,     0,   228,     0,     0,   229,     0,     0,     0,     0,
-       0,   502,     0,     0,   187,   188,   189,     0,   190,   191,
+       0,    48,     0,    49,   189,   190,   191,    51,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,     0,   211,   212,
+     213,     0,   214,   215,   216,     0,     0,     0,     0,     0,
+     217,   218,     0,   219,   220,   221,   188,   222,   223,     0,
+     224,   225,   226,   227,   228,     0,     0,     0,     0,     0,
+     229,     0,   230,     0,     0,   231,     0,     0,     0,     0,
+       0,   415,     0,     0,   189,   190,   191,     0,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,     0,   211,   212,
+     213,     0,   214,   215,   216,     0,     0,     0,     0,     0,
+     217,   218,     0,   219,   220,   221,   188,   222,   223,     0,
+     224,   225,   226,   227,   228,     0,     0,     0,     0,     0,
+     229,     0,   230,     0,     0,   231,     0,     0,     0,     0,
+       0,   502,     0,     0,   189,   190,   191,     0,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,     0,   211,   212,
+     213,     0,   214,   215,   216,     0,     0,     0,   188,     0,
+     217,   218,   405,   219,   220,   221,     0,   222,   223,     0,
+     224,   225,   226,   227,   228,     0,     0,     0,     0,     0,
+     229,     0,   230,     0,     0,   231,   189,   190,   191,     0,
      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,     0,   209,   210,
-     211,     0,   212,   213,   214,     0,     0,     0,   186,     0,
-     215,   216,   405,   217,   218,   219,     0,   220,   221,     0,
-     222,   223,   224,   225,   226,     0,     0,     0,     0,     0,
-     227,     0,   228,     0,     0,   229,   187,   188,   189,     0,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,     0,
-     209,   210,   211,     0,   212,   213,   214,     0,     0,     0,
-     186,     0,   215,   216,     0,   217,   218,   219,     0,   220,
-     221,     0,   222,   223,   224,   225,   226,     0,     0,     0,
-       0,     0,   227,     0,   228,   407,     0,   229,   187,   188,
-     189,     0,   190,   191,   192,   193,   194,   195,   196,   197,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,     0,
+     211,   212,   213,     0,   214,   215,   216,     0,     0,     0,
+     188,     0,   217,   218,     0,   219,   220,   221,     0,   222,
+     223,     0,   224,   225,   226,   227,   228,     0,     0,     0,
+       0,     0,   229,     0,   230,   407,     0,   231,   189,   190,
+     191,     0,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,     0,   211,   212,   213,     0,   214,   215,   216,     0,
+       0,     0,   188,     0,   217,   218,     0,   219,   220,   221,
+       0,   222,   223,     0,   224,   225,   226,   227,   228,     0,
+       0,     0,     0,     0,   229,     0,   230,   461,     0,   231,
+     189,   190,   191,     0,   192,   193,   194,   195,   196,   197,
      198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,     0,   209,   210,   211,     0,   212,   213,   214,     0,
-       0,     0,   186,     0,   215,   216,     0,   217,   218,   219,
-       0,   220,   221,     0,   222,   223,   224,   225,   226,     0,
-       0,     0,     0,     0,   227,     0,   228,   461,     0,   229,
-     187,   188,   189,     0,   190,   191,   192,   193,   194,   195,
+     208,   209,   210,     0,   211,   212,   213,     0,   214,   215,
+     216,     0,     0,     0,   188,     0,   217,   218,     0,   219,
+     220,   221,     0,   222,   223,     0,   224,   225,   226,   227,
+     228,     0,     0,     0,     0,     0,   229,     0,   230,   501,
+       0,   231,   189,   190,   191,     0,   192,   193,   194,   195,
      196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,     0,   209,   210,   211,     0,   212,   213,
-     214,     0,     0,     0,   186,     0,   215,   216,     0,   217,
-     218,   219,     0,   220,   221,     0,   222,   223,   224,   225,
-     226,     0,     0,     0,     0,     0,   227,     0,   228,   501,
-       0,   229,   187,   188,   189,     0,   190,   191,   192,   193,
+     206,   207,   208,   209,   210,     0,   211,   212,   213,     0,
+     214,   215,   216,     0,     0,     0,   188,     0,   217,   218,
+       0,   219,   220,   221,     0,   222,   223,     0,   224,   225,
+     226,   227,   228,     0,     0,     0,     0,     0,   229,     0,
+     230,   503,     0,   231,   189,   190,   191,     0,   192,   193,
      194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,     0,   209,   210,   211,     0,
-     212,   213,   214,     0,     0,     0,   186,     0,   215,   216,
-       0,   217,   218,   219,     0,   220,   221,     0,   222,   223,
-     224,   225,   226,     0,     0,     0,     0,     0,   227,     0,
-     228,   503,     0,   229,   187,   188,   189,     0,   190,   191,
+     204,   205,   206,   207,   208,   209,   210,     0,   211,   212,
+     213,     0,   214,   215,   216,     0,     0,     0,   188,     0,
+     217,   218,   564,   219,   220,   221,     0,   222,   223,     0,
+     224,   225,   226,   227,   228,     0,     0,     0,     0,     0,
+     229,     0,   230,     0,     0,   231,   189,   190,   191,     0,
      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,     0,   209,   210,
-     211,     0,   212,   213,   214,     0,     0,     0,   186,     0,
-     215,   216,   564,   217,   218,   219,     0,   220,   221,     0,
-     222,   223,   224,   225,   226,     0,     0,     0,     0,     0,
-     227,     0,   228,     0,     0,   229,   187,   188,   189,     0,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,     0,
-     209,   210,   211,     0,   212,   213,   214,     0,     0,     0,
-     186,     0,   215,   216,     0,   217,   218,   219,     0,   220,
-     221,     0,   222,   223,   224,   225,   226,     0,     0,     0,
-       0,     0,   227,     0,   228,     0,     0,   229,   187,   188,
-     189,     0,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,     0,   209,   210,   211,     0,   212,   213,   214,     0,
-       0,     0,   186,     0,   215,   216,     0,   217,   218,   219,
-       0,     0,   221,     0,   222,   223,   224,   225,   226,     0,
-       0,     0,     0,     0,   227,     0,   228,     0,     0,   229,
-     187,   188,   189,     0,   190,   191,   192,   193,   194,   195,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,     0,
+     211,   212,   213,     0,   214,   215,   216,     0,     0,     0,
+     188,     0,   217,   218,     0,   219,   220,   221,     0,   222,
+     223,     0,   224,   225,   226,   227,   228,     0,     0,     0,
+       0,     0,   229,     0,   230,     0,     0,   231,   189,   190,
+     191,     0,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,     0,   211,   212,   213,     0,   214,   215,   216,     0,
+       0,     0,   188,     0,   217,   218,     0,   219,   220,   221,
+       0,     0,   223,     0,   224,   225,   226,   227,   228,     0,
+       0,     0,     0,     0,   229,     0,   230,     0,     0,   231,
+     189,   190,   191,     0,   192,   193,   194,   195,   196,   197,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   208,     0,   209,   210,   211,     0,   212,   213,
-     214,     0,     0,     0,   186,     0,     0,     0,     0,   217,
-     218,   219,     0,   220,   221,     0,   222,   223,   224,   225,
-     226,     0,     0,     0,     0,     0,   227,     0,   228,     0,
-       0,   229,   187,   188,   189,     0,   190,   191,   192,   193,
-     194,   195,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   209,   210,   211,     0,
-     212,   213,   214,     0,     0,     0,   186,     0,     0,     0,
-       0,   217,   218,   219,     0,   220,   221,     0,   222,   223,
-     224,   225,   226,     0,     0,     0,     0,     0,   227,     0,
-     228,     0,     0,   229,   187,   188,   189,     0,   190,   191,
-     192,   193,   194,   195,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   209,   210,
-     211,     0,   212,   213,   214,     0,     0,     0,   186,     0,
-       0,     0,     0,     0,   218,   219,     0,   220,   221,     0,
-     222,   223,   224,   225,   226,     0,     0,     0,     0,     0,
-     227,     0,   228,     0,     0,   229,   187,   188,   189,     0,
-     190,   191,   192,   193,   194,   195,     0,     0,     0,     0,
+       0,     0,   210,     0,   211,   212,   213,     0,   214,   215,
+     216,     0,     0,     0,   188,     0,     0,     0,     0,   219,
+     220,   221,     0,   222,   223,     0,   224,   225,   226,   227,
+     228,     0,     0,     0,     0,     0,   229,     0,   230,     0,
+       0,   231,   189,   190,   191,     0,   192,   193,   194,   195,
+     196,   197,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   211,   212,   213,     0,
+     214,   215,   216,     0,     0,     0,   188,     0,     0,     0,
+       0,   219,   220,   221,     0,   222,   223,     0,   224,   225,
+     226,   227,   228,     0,     0,     0,     0,     0,   229,     0,
+     230,     0,     0,   231,   189,   190,   191,     0,   192,   193,
+     194,   195,   196,   197,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   211,   212,
+     213,     0,   214,   215,   216,     0,     0,     0,   188,     0,
+       0,     0,     0,     0,   220,   221,     0,   222,   223,     0,
+     224,   225,   226,   227,   228,     0,     0,     0,     0,     0,
+     229,     0,   230,     0,     0,   231,   189,   190,   191,     0,
+     192,   193,   194,   195,   196,   197,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     209,   210,   211,     0,   212,   213,   214,     0,     0,     0,
-     186,     0,     0,     0,     0,     0,     0,   219,     0,   220,
-     221,     0,   222,   223,   224,   225,   226,     0,     0,     0,
-       0,     0,   227,     0,   228,     0,     0,   229,   187,   188,
-     189,     0,   190,   191,   192,   193,   194,   195,     0,     0,
+     211,   212,   213,     0,   214,   215,   216,     0,     0,     0,
+     188,     0,     0,     0,     0,     0,     0,   221,     0,   222,
+     223,     0,   224,   225,   226,   227,   228,     0,     0,     0,
+       0,     0,   229,     0,   230,     0,     0,   231,   189,   190,
+     191,     0,   192,   193,   194,   195,   196,   197,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   209,   210,   211,     0,   212,   213,   214,     0,
-       0,     0,   186,     0,     0,     0,     0,     0,     0,  -335,
-       0,   220,   221,     0,   222,   223,   224,   225,   226,     0,
-       0,     0,     0,     0,   227,     0,   228,     0,     0,   229,
-     187,   188,   189,     0,  -335,  -335,  -335,  -335,   194,   195,
+       0,     0,   211,   212,   213,     0,   214,   215,   216,     0,
+       0,     0,   188,     0,     0,     0,     0,     0,     0,  -337,
+       0,   222,   223,     0,   224,   225,   226,   227,   228,     0,
+       0,     0,     0,     0,   229,     0,   230,     0,     0,   231,
+     189,   190,   191,     0,  -337,  -337,  -337,  -337,   196,   197,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   209,   210,   211,     0,   212,   213,
-     214,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   220,   221,     0,   222,   223,   224,   225,
-     226,     0,     0,     0,     0,     0,   227,     0,   228,     0,
-       0,   229
+       0,     0,     0,     0,   211,   212,   213,     0,   214,   215,
+     216,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   222,   223,     0,   224,   225,   226,   227,
+     228,     0,     0,     0,     0,     0,   229,     0,   230,     0,
+       0,   231
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,     0,     0,     0,     0,   106,    19,    67,    60,   139,
-      97,    24,   144,   145,   117,   184,    50,   274,     3,   363,
-       3,    50,     3,   442,     3,    38,    12,     5,    41,    42,
-       5,     4,    45,    46,    47,    48,    49,    97,   531,     5,
-     229,    27,   357,   500,   457,    18,    94,    20,    21,   104,
-      23,   106,    25,     0,    54,    54,    54,    54,    54,     0,
-     102,     0,   537,    69,   102,    38,   541,   542,    12,   562,
-      91,     3,     4,    46,    47,    48,    49,   534,   126,   124,
-      34,   129,   426,    27,    16,    17,   499,   124,   124,   564,
-     150,    16,   129,   135,     3,   124,   560,   135,   104,   112,
-     232,    35,   115,   418,   117,    27,   581,    54,    62,   124,
-      95,    33,   576,    54,    95,    54,   591,    51,   112,   124,
-     289,   253,   116,    16,   227,   255,   139,   316,   101,   473,
-       3,   144,   145,     3,     4,   128,   393,   112,     3,     0,
-       5,     3,     4,   275,   276,   128,    16,    17,   124,   128,
-     128,   128,   341,   128,    16,    17,   128,   129,     3,   102,
-     124,   134,   128,   163,   163,   163,   163,   163,   425,   182,
-     589,   124,   185,   186,   187,   188,   189,   190,   191,   192,
+       0,     0,     0,     0,     0,    97,    19,    67,    60,   107,
+     141,    24,   275,   146,   147,    28,   119,   442,   186,    50,
+       3,     3,    50,   364,     5,    38,     3,     4,    41,    42,
+       4,   358,    45,    46,    47,    48,    49,    97,   231,    16,
+      17,   457,    34,     3,    18,     3,    20,    21,   500,    23,
+      12,    25,    29,     0,    54,    54,    54,    54,    54,     0,
+       0,   102,   102,    35,    38,    27,    12,    94,    69,    91,
+      62,   560,    46,    47,    48,    49,     5,     5,   531,    51,
+     124,    27,   534,   499,    27,   426,   124,   576,   124,    16,
+      33,   418,   152,   129,   135,   135,   124,     3,     4,   126,
+     113,   234,   129,   104,   112,     3,   119,    54,   116,   562,
+      16,    17,   124,    54,    54,   104,     3,   106,     5,   128,
+     129,   254,   290,    29,   317,   256,   229,   101,   141,   124,
+     393,   112,   473,   146,   147,    95,    16,    95,   128,     3,
+     117,     0,     5,   276,   277,   128,   128,   128,   128,   342,
+       3,   102,     5,   130,     3,     8,     9,    10,   124,   124,
+     134,   129,   425,     3,   589,   165,   165,   165,   165,   165,
+     129,   184,   104,   134,   187,   188,   189,   190,   191,   192,
      193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   128,     3,   129,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   163,     3,     4,   232,
-     104,   234,   163,   412,   163,   211,   134,   106,   397,   398,
-      16,    17,     3,     4,   102,   235,   235,   235,   272,   252,
-     253,   127,   255,   229,   257,    16,    17,   117,   102,     3,
-       3,   237,     3,   128,   124,   117,   126,   360,     5,     4,
-     130,   247,   275,   276,    16,   522,    69,     3,   130,   101,
-       3,     4,    69,    18,   101,    20,    21,     3,    23,     3,
-      25,     3,   414,    16,    17,    12,   543,   129,   389,   129,
-     391,   124,   135,    38,   102,     3,     4,     3,     4,   429,
-     135,    46,    47,    48,    49,    92,    93,    94,    16,    17,
-      16,    17,   372,   106,   102,   134,    54,     3,     3,     3,
-       4,   104,   382,    54,   104,   104,   413,   340,    36,    91,
-     316,   117,    16,    17,   135,    91,    91,   124,   595,   126,
-     126,   428,   129,   444,    16,    91,   117,   360,   124,   349,
-     349,   349,   439,   413,    26,   341,   101,   357,   357,   357,
-      32,   135,   134,   128,   111,   112,     3,   135,   428,   129,
-       3,   134,     5,   359,    46,     8,     9,    10,   135,   439,
-     101,   128,   102,   106,   117,   104,   438,   135,   489,   134,
-     403,    15,   405,   126,   124,   408,   128,   410,   102,   134,
-     128,   414,   102,   112,    66,    92,    93,    94,   421,   117,
-     135,   117,   128,   104,   128,   116,   429,   134,   418,   418,
-     418,   434,   135,   134,   106,   128,   412,   114,   115,   116,
-     117,   118,   519,   135,   521,     4,   124,   124,   111,   126,
-     134,     3,   129,     5,     6,     3,     8,     9,    10,    18,
-       3,    20,    21,    26,    23,   134,    25,    19,   116,   519,
-     128,   521,    24,   128,    26,   134,    28,    29,   134,    38,
-     134,    92,    93,    94,   134,     3,   135,   112,    47,    48,
-      49,   134,   124,    45,   497,   112,   134,   128,   135,   134,
-     490,    53,   505,    55,    56,   116,   117,   118,    54,   349,
-     163,   449,    72,   124,    16,   126,    60,   143,   129,    71,
-     381,   479,   479,   508,    26,   529,   508,   570,   557,    31,
-      32,   552,   450,   523,   523,   523,   523,   523,   289,   529,
-      92,    93,    44,   471,    46,    27,    -1,   444,    48,   422,
-      -1,   256,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   552,   552,   552,   552,   552,    -1,    -1,    -1,
-      -1,    -1,   124,    -1,   126,    -1,    -1,    -1,   130,    -1,
-     570,   570,   570,   570,   570,     0,    -1,    -1,     3,     4,
+     203,   204,   205,   206,   207,   208,   209,   210,   106,   128,
+     128,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   226,   227,   228,   229,   230,   165,   412,
+     102,   234,   128,   236,   165,   165,   127,   102,     3,   397,
+     398,   128,     3,     3,    16,    69,     3,   237,   237,   237,
+     253,   254,   273,   256,    16,   258,   101,    69,   111,   112,
+       3,   213,     5,     6,    26,     8,     9,    10,   361,   522,
+      32,     3,   101,   276,   277,   128,    19,     3,     3,   231,
+     124,    24,    12,    26,    46,    28,    29,   239,   129,   129,
+     543,   414,     3,     4,   102,   106,   102,   249,   135,   135,
+       4,   389,    45,   391,   104,    16,    17,   134,   429,     3,
+      53,     3,    55,    56,    18,    54,    20,    21,    29,    23,
+      54,    25,   372,   104,   104,    36,   135,    91,    71,   124,
+     135,   413,   382,    91,    38,    91,    91,   134,   341,   128,
+       3,     4,   595,    47,    48,    49,   428,     3,   135,    92,
+      93,   102,   129,    16,    17,   134,   444,   439,   361,   135,
+     350,   350,   350,   413,    16,   317,    29,   104,   358,   358,
+     358,     3,     4,   106,    26,   124,   135,   101,   428,    31,
+      32,   124,    15,   126,    16,    17,   128,   130,   102,   439,
+     342,   135,    44,   134,    46,   102,   438,    29,     4,   128,
+     403,   489,   405,   134,   112,   408,   117,   410,   360,     3,
+       4,   414,    18,   128,    20,    21,   135,    23,   421,    25,
+     104,   134,    16,    17,   124,   128,   429,   128,   418,   418,
+     418,   434,    38,     3,     4,    29,    66,   519,   135,   521,
+      46,    47,    48,    49,     3,     4,    16,    17,   116,   111,
+       3,   106,   134,     3,   117,    26,   134,    16,    17,    29,
+     412,   124,   116,   126,    92,    93,    94,   130,   128,   519,
+      29,   521,   537,   134,     3,   128,   541,   542,   135,   124,
+      92,    93,    94,   134,   134,   117,   114,   115,   116,   117,
+     118,   134,   112,   134,   497,   101,   124,   112,   126,   564,
+     490,   129,   505,   128,   116,   117,   118,   134,    92,    93,
+      94,   135,   124,   134,   126,    54,   581,   129,   165,   350,
+     449,   381,    60,   117,   508,   508,   591,   145,   134,    72,
+     570,   471,   126,   523,   523,   523,   523,   523,   552,   529,
+     124,   479,   126,   450,   479,   129,   557,   117,   529,    27,
+     290,   444,    48,   422,    -1,   257,   126,    -1,   117,    -1,
+       3,     4,   552,   552,   552,   552,   552,    -1,    -1,    -1,
+      -1,    -1,    -1,    16,    17,    -1,    -1,    -1,    -1,    -1,
+     570,   570,   570,   570,   570,     0,    29,    -1,     3,     4,
        5,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
       -1,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    -1,    -1,    28,    29,    -1,    -1,    40,    -1,    -1,
@@ -3386,10 +3388,10 @@ static const yytype_int16 yycheck[] =
       65,    -1,    -1,    76,    77,    -1,    71,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
       93,    94,    -1,    96,    97,    98,    -1,    92,    93,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   111,   112,
-      -1,   114,   115,   116,   117,   118,   111,    -1,    -1,   114,
+      -1,    -1,    -1,    -1,     3,     4,   101,    -1,   111,   112,
+      -1,   114,   115,   116,   117,   118,   111,    16,    17,   114,
       -1,   124,    -1,   126,   119,   120,   129,    -1,    -1,   124,
-      -1,   126,    -1,   128,    -1,   130,    -1,    -1,    -1,   134,
+      29,   126,    -1,   128,    -1,   130,    -1,    -1,    -1,   134,
        3,     4,     5,     6,    -1,     8,     9,    10,    11,    12,
       13,    14,    -1,    -1,    -1,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    -1,    28,    29,    30,    -1,    32,
@@ -3570,13 +3572,6 @@ static const yytype_int16 yycheck[] =
       -1,   135,    -1,    -1,    68,    69,    70,    -1,    72,    73,
       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
       84,    85,    86,    87,    88,    89,    90,    -1,    92,    93,
-      94,    -1,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
-     104,   105,    -1,   107,   108,   109,    40,   111,   112,    -1,
-     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
-     124,    -1,   126,    -1,    -1,   129,    -1,    -1,    -1,    -1,
-      -1,   135,    -1,    -1,    68,    69,    70,    -1,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    -1,    92,    93,
       94,    -1,    96,    97,    98,    -1,    -1,    -1,    40,    -1,
      104,   105,   106,   107,   108,   109,    -1,   111,   112,    -1,
      114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
@@ -3678,34 +3673,34 @@ static const yytype_uint16 yystos[] =
      191,   192,   193,   194,   198,   200,   209,   214,   215,   216,
      226,   234,   237,   250,   251,   252,   257,   261,   265,   266,
      268,   269,   270,    91,    50,   124,   124,   166,   124,     3,
-       4,    16,    17,   128,   186,   187,    16,     3,   261,     3,
-     236,   261,   124,   187,   240,   124,   128,   124,   129,    16,
-     261,   124,     3,     5,     8,     9,    10,   258,   259,   260,
-     261,   261,   261,   261,   261,   256,   261,   246,   247,   248,
-     254,   261,    30,    32,    37,    42,    46,    67,   101,   134,
-     145,   146,   147,   150,   152,   167,   168,   183,   192,   253,
-       3,     0,   140,   128,     3,    46,   152,   158,   159,   257,
-     147,   148,    16,    26,    31,    32,    44,    46,   208,   267,
-     194,     3,   128,   221,   225,   102,    40,    68,    69,    70,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    87,    88,    89,    90,    92,
-      93,    94,    96,    97,    98,   104,   105,   107,   108,   109,
-     111,   112,   114,   115,   116,   117,   118,   124,   126,   129,
-       3,   124,   164,   148,   174,   190,   128,   129,   186,   187,
-     239,   240,   241,   249,   124,   255,   256,   129,   261,   182,
-     246,     3,   104,   157,   134,   106,   102,   102,   135,   127,
-     102,   254,     3,     3,   153,   154,   255,   255,   153,     3,
-     134,   147,   128,   138,     3,   101,    69,   101,     3,    35,
-      51,   233,     3,     3,   210,   261,     3,   221,   227,   228,
-     229,   261,   261,   261,   261,   261,   261,   261,   261,   261,
+       4,    16,    17,    29,   128,   186,   187,    16,     3,   261,
+       3,   236,   261,   124,     3,   187,   240,   261,   128,   124,
+     129,    16,   261,   124,     3,     5,     8,     9,    10,   258,
+     259,   260,   261,   261,   261,   261,   261,   256,   261,   246,
+     247,   248,   254,   261,    30,    32,    37,    42,    46,    67,
+     101,   134,   145,   146,   147,   150,   152,   167,   168,   183,
+     192,   253,     3,     0,   140,   128,     3,    46,   152,   158,
+     159,   257,   147,   148,    16,    26,    31,    32,    44,    46,
+     208,   267,   194,     3,   128,   221,   225,   102,    40,    68,
+      69,    70,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    92,    93,    94,    96,    97,    98,   104,   105,   107,
+     108,   109,   111,   112,   114,   115,   116,   117,   118,   124,
+     126,   129,     3,   124,   164,   148,   174,   190,   128,   129,
+     186,   187,   239,   240,   241,   249,   124,   255,   256,   129,
+     182,   246,     3,   104,   157,   134,   106,   102,   102,   135,
+     127,   102,   254,     3,     3,   153,   154,   255,   255,   153,
+       3,   134,   147,   128,   138,     3,   101,    69,   101,     3,
+      35,    51,   233,     3,     3,   210,   261,     3,   221,   227,
+     228,   229,   261,   261,   261,   261,   261,   261,   261,   261,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
-     261,   261,   261,   261,   261,   117,   130,   186,   264,   261,
+     261,   261,   261,   261,   261,   261,   117,   130,   186,   264,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
-     261,   261,   261,   261,   246,   261,     3,     4,   117,   124,
-     126,   130,   263,   264,   255,    12,   261,   101,   141,   142,
-     143,   149,   150,   198,   200,   209,   234,   189,   186,   129,
-     124,   245,     3,    95,   230,   231,   232,   135,   117,   186,
-     135,   144,   145,   135,   261,   255,   254,   259,   261,   106,
+     261,   261,   261,   261,   261,   246,   261,     3,     4,   117,
+     124,   126,   130,   263,   264,   255,    12,   261,   101,   141,
+     142,   143,   149,   150,   198,   200,   209,   234,   189,   186,
+     129,   124,   245,     3,    95,   230,   231,   232,   135,   117,
+     186,   144,   145,   135,   261,   255,   254,   259,   261,   106,
      244,   102,   145,   134,   244,   255,   255,   104,     3,    54,
      195,    54,   196,     3,   211,   212,   222,   104,   104,   112,
      116,   217,   229,   126,   264,   106,   135,   127,   262,   261,
@@ -4543,7 +4538,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1920 "parser.y"
+#line 1929 "parser.y"
     {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
     }
     break;
@@ -4554,7 +4549,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1932 "parser.y"
+#line 1941 "parser.y"
     {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
     }
     break;
@@ -4565,7 +4560,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1935 "parser.y"
+#line 1944 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -4576,7 +4571,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1936 "parser.y"
+#line 1945 "parser.y"
     {(yyval.code)=code_new();}
     }
     break;
@@ -4587,7 +4582,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1938 "parser.y"
+#line 1947 "parser.y"
     {
     (yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));
 }
@@ -4600,7 +4595,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1941 "parser.y"
+#line 1950 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -4611,7 +4606,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1957 "parser.y"
+#line 1966 "parser.y"
     {(yyval.code)=(yyvsp[(2) - (3)].code);}
     }
     break;
@@ -4622,7 +4617,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1958 "parser.y"
+#line 1967 "parser.y"
     {(yyval.code)=0;}
     }
     break;
@@ -4633,7 +4628,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1961 "parser.y"
+#line 1970 "parser.y"
     {(yyval.code)=0;}
     }
     break;
@@ -4644,7 +4639,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1968 "parser.y"
+#line 1977 "parser.y"
     {
     PASS_ALWAYS 
     if(as3_pass) {
@@ -4663,7 +4658,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1980 "parser.y"
+#line 1989 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (2)].code);}
     }
     break;
@@ -4674,7 +4669,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1981 "parser.y"
+#line 1990 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -4685,7 +4680,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1985 "parser.y"
+#line 1994 "parser.y"
     {
     if((yyvsp[(1) - (1)].code)) {
         if(!global->init) 
@@ -4703,7 +4698,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1996 "parser.y"
+#line 2005 "parser.y"
     {
     PASS12
     (yyval.number_int)=as3_pass;
@@ -4722,7 +4717,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2015 "parser.y"
+#line 2024 "parser.y"
     {(yyval.node)=(yyvsp[(2) - (2)].node);}
     }
     break;
@@ -4733,7 +4728,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2016 "parser.y"
+#line 2025 "parser.y"
     {(yyval.node)=mkdummynode();}
     }
     break;
@@ -4744,7 +4739,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2018 "parser.y"
+#line 2027 "parser.y"
     {(yyval.code)=(yyvsp[(2) - (2)].code);}
     }
     break;
@@ -4755,7 +4750,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2019 "parser.y"
+#line 2028 "parser.y"
     {(yyval.code)=(yyvsp[(2) - (2)].code);}
     }
     break;
@@ -4766,7 +4761,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2021 "parser.y"
+#line 2030 "parser.y"
     {(yyval.code) = (yyvsp[(1) - (1)].code);}
     }
     break;
@@ -4777,7 +4772,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2022 "parser.y"
+#line 2031 "parser.y"
     {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));}
     }
     break;
@@ -4788,7 +4783,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2025 "parser.y"
+#line 2034 "parser.y"
     {
 PASS12
     if(variable_exists((yyvsp[(1) - (3)].id)))
@@ -4854,7 +4849,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2084 "parser.y"
+#line 2093 "parser.y"
     {(yyval.code) = code_new();}
     }
     break;
@@ -4865,7 +4860,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2085 "parser.y"
+#line 2094 "parser.y"
     {(yyval.code)=(yyvsp[(2) - (2)].code);}
     }
     break;
@@ -4876,7 +4871,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2088 "parser.y"
+#line 2097 "parser.y"
     {PASS12 new_state();}
     }
     break;
@@ -4887,7 +4882,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2088 "parser.y"
+#line 2097 "parser.y"
     {
      
     (yyval.code) = code_new();
@@ -4915,7 +4910,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2107 "parser.y"
+#line 2116 "parser.y"
     {(yyval.code)=code_new();}
     }
     break;
@@ -4926,7 +4921,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2114 "parser.y"
+#line 2123 "parser.y"
     {
     PASS1 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),0,1,0);
     PASS2 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].classinfo),1,0);
@@ -4940,7 +4935,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2118 "parser.y"
+#line 2127 "parser.y"
     {
     PASS12
     (yyval.id)=(yyvsp[(1) - (1)].id);
@@ -4954,7 +4949,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2123 "parser.y"
+#line 2132 "parser.y"
     {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;}
     }
     break;
@@ -4965,7 +4960,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2124 "parser.y"
+#line 2133 "parser.y"
     {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;}
     }
     break;
@@ -4976,7 +4971,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2126 "parser.y"
+#line 2135 "parser.y"
     {
     if((yyvsp[(1) - (8)].for_start).each) syntaxerror("invalid syntax: ; not allowed in for each statement");
     (yyval.code) = code_new();
@@ -5005,7 +5000,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2146 "parser.y"
+#line 2155 "parser.y"
     {
     variable_t*var = find_variable(state, (yyvsp[(2) - (6)].id));
     if(!var) {
@@ -5062,7 +5057,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2194 "parser.y"
+#line 2203 "parser.y"
     {PASS12 new_state();}
     }
     break;
@@ -5073,7 +5068,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2194 "parser.y"
+#line 2203 "parser.y"
     {
 
     (yyval.code) = code_new();
@@ -5101,7 +5096,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2213 "parser.y"
+#line 2222 "parser.y"
     {PASS12 new_state();}
     }
     break;
@@ -5112,7 +5107,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2213 "parser.y"
+#line 2222 "parser.y"
     {
     (yyval.code) = code_new();
     code_t*loopstart = (yyval.code) = abc_label((yyval.code));
@@ -5136,7 +5131,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2228 "parser.y"
+#line 2237 "parser.y"
     {
     (yyval.code) = abc___break__(0, "");
 }
@@ -5149,7 +5144,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2231 "parser.y"
+#line 2240 "parser.y"
     {
     (yyval.code) = abc___break__(0, (yyvsp[(2) - (2)].id));
 }
@@ -5162,7 +5157,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2234 "parser.y"
+#line 2243 "parser.y"
     {
     (yyval.code) = abc___continue__(0, "");
 }
@@ -5175,7 +5170,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2237 "parser.y"
+#line 2246 "parser.y"
     {
     (yyval.code) = abc___continue__(0, (yyvsp[(2) - (2)].id));
 }
@@ -5188,7 +5183,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2241 "parser.y"
+#line 2250 "parser.y"
     {(yyval.code)=0;}
     }
     break;
@@ -5199,7 +5194,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2242 "parser.y"
+#line 2251 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -5210,7 +5205,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2243 "parser.y"
+#line 2252 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -5221,7 +5216,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2244 "parser.y"
+#line 2253 "parser.y"
     {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));}
     }
     break;
@@ -5232,7 +5227,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2245 "parser.y"
+#line 2254 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -5243,7 +5238,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2246 "parser.y"
+#line 2255 "parser.y"
     {(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));}
     }
     break;
@@ -5254,7 +5249,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2248 "parser.y"
+#line 2257 "parser.y"
     {
     (yyval.code) = abc_getlocal(0, state->switch_var);
     (yyval.code) = code_append((yyval.code), node_read((yyvsp[(2) - (4)].node)).c);
@@ -5275,7 +5270,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2259 "parser.y"
+#line 2268 "parser.y"
     {
     (yyval.code) = (yyvsp[(3) - (3)].code);
 }
@@ -5288,7 +5283,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2262 "parser.y"
+#line 2271 "parser.y"
     {PASS12 new_state();state->switch_var=alloc_local();}
     }
     break;
@@ -5299,7 +5294,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2262 "parser.y"
+#line 2271 "parser.y"
     {
     (yyval.code) = node_read((yyvsp[(4) - (8)].node)).c;
     (yyval.code) = abc_setlocal((yyval.code), state->switch_var);
@@ -5337,7 +5332,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2293 "parser.y"
+#line 2302 "parser.y"
     {PASS12 new_state();
                                                       state->exception_name=(yyvsp[(3) - (5)].id);
                                                PASS1 new_variable((yyvsp[(3) - (5)].id), 0, 0, 0);
@@ -5352,7 +5347,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2298 "parser.y"
+#line 2307 "parser.y"
     {
     namespace_t name_ns = {ACCESS_PACKAGE, ""};
     multiname_t name = {QNAME, &name_ns, 0, (yyvsp[(3) - (9)].id)};
@@ -5382,7 +5377,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2318 "parser.y"
+#line 2327 "parser.y"
     {PASS12 new_state();state->exception_name=0;}
     }
     break;
@@ -5393,7 +5388,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2318 "parser.y"
+#line 2327 "parser.y"
     {
     (yyvsp[(4) - (5)].code) = var_block((yyvsp[(4) - (5)].code));
     if(!(yyvsp[(4) - (5)].code)) {
@@ -5418,7 +5413,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2334 "parser.y"
+#line 2343 "parser.y"
     {(yyval.catch_list).l=list_new();(yyval.catch_list).finally=0;list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));}
     }
     break;
@@ -5429,7 +5424,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2335 "parser.y"
+#line 2344 "parser.y"
     {(yyval.catch_list)=(yyvsp[(1) - (2)].catch_list);list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));}
     }
     break;
@@ -5440,7 +5435,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2336 "parser.y"
+#line 2345 "parser.y"
     {(yyval.catch_list)=(yyvsp[(1) - (1)].catch_list);}
     }
     break;
@@ -5451,7 +5446,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2337 "parser.y"
+#line 2346 "parser.y"
     {
     (yyval.catch_list) = (yyvsp[(1) - (2)].catch_list);
     (yyval.catch_list).finally = 0;
@@ -5469,7 +5464,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2345 "parser.y"
+#line 2354 "parser.y"
     {
     (yyval.catch_list).l=list_new();
     (yyval.catch_list).finally = 0;
@@ -5487,7 +5482,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2354 "parser.y"
+#line 2363 "parser.y"
     {PASS12 new_state();
                  state->method->has_exceptions=1;
                  state->method->late_binding=1;//for invariant scope_code
@@ -5501,7 +5496,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2357 "parser.y"
+#line 2366 "parser.y"
     {
     code_t*out = abc_nop(0);
 
@@ -5554,7 +5549,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2403 "parser.y"
+#line 2412 "parser.y"
     {
     (yyval.code)=(yyvsp[(2) - (2)].value).c;
     (yyval.code)=abc_throw((yyval.code));
@@ -5568,7 +5563,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2407 "parser.y"
+#line 2416 "parser.y"
     {
     if(!state->exception_name)
         syntaxerror("re-throw only possible within a catch block");
@@ -5586,7 +5581,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2418 "parser.y"
+#line 2427 "parser.y"
     {
      new_state();
      if(state->method->has_exceptions) {
@@ -5606,7 +5601,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2428 "parser.y"
+#line 2437 "parser.y"
     {
      /* remove getlocal;pushwith from scope code again */
      state->method->scope_code = code_cutlast(code_cutlast(state->method->scope_code));
@@ -5630,7 +5625,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2446 "parser.y"
+#line 2455 "parser.y"
     {PASS12 (yyval.id)="package";}
     }
     break;
@@ -5641,7 +5636,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2447 "parser.y"
+#line 2456 "parser.y"
     {PASS12 (yyval.id)="namespace";}
     }
     break;
@@ -5652,8 +5647,8 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2448 "parser.y"
-    {PASS12 (yyval.id)=(yyvsp[(1) - (1)].id);}
+#line 2457 "parser.y"
+    {PASS12 (yyval.id)="NaN";}
     }
     break;
 
@@ -5663,8 +5658,8 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2450 "parser.y"
-    {PASS12 (yyval.id) = concat3((yyvsp[(1) - (3)].id),".",(yyvsp[(3) - (3)].id));free((yyvsp[(1) - (3)].id));(yyvsp[(1) - (3)].id)=0;}
+#line 2458 "parser.y"
+    {PASS12 (yyval.id)=(yyvsp[(1) - (1)].id);}
     }
     break;
 
@@ -5674,8 +5669,8 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2451 "parser.y"
-    {PASS12 (yyval.id)=strdup((yyvsp[(1) - (1)].id));}
+#line 2460 "parser.y"
+    {PASS12 (yyval.id) = concat3((yyvsp[(1) - (3)].id),".",(yyvsp[(3) - (3)].id));free((yyvsp[(1) - (3)].id));(yyvsp[(1) - (3)].id)=0;}
     }
     break;
 
@@ -5685,8 +5680,8 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2453 "parser.y"
-    {PASS12 startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;}
+#line 2461 "parser.y"
+    {PASS12 (yyval.id)=strdup((yyvsp[(1) - (1)].id));}
     }
     break;
 
@@ -5696,8 +5691,8 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2454 "parser.y"
-    {PASS12 endpackage();(yyval.code)=0;}
+#line 2463 "parser.y"
+    {PASS12 startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;}
     }
     break;
 
@@ -5707,8 +5702,8 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2455 "parser.y"
-    {PASS12 startpackage("");}
+#line 2464 "parser.y"
+    {PASS12 endpackage();(yyval.code)=0;}
     }
     break;
 
@@ -5718,8 +5713,8 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2456 "parser.y"
-    {PASS12 endpackage();(yyval.code)=0;}
+#line 2465 "parser.y"
+    {PASS12 startpackage("");}
     }
     break;
 
@@ -5729,19 +5724,45 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2478 "parser.y"
+#line 2466 "parser.y"
+    {PASS12 endpackage();(yyval.code)=0;}
+    }
+    break;
+
+
+  
+    case 121:
+    if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4  */
+#line 2489 "parser.y"
+    {
+       PASS12
+       slotinfo_t*s = registry_find(state->package, (yyvsp[(2) - (2)].id));
+       if(!s && as3_pass==1) {as3_schedule_class(state->package, (yyvsp[(2) - (2)].id));}
+       state_has_imports();
+       dict_put(state->imports, state->package, (yyvsp[(2) - (2)].id));
+       (yyval.code)=0;
+}
+    }
+    break;
+
+
+  
+    case 122:
+    if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4  */
+#line 2497 "parser.y"
     {
        PASS12
        slotinfo_t*s = registry_find((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name);
        if(!s && as3_pass==1) {// || !(s->flags&FLAG_BUILTIN)) {
            as3_schedule_class((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name);
        }
-       classinfo_t*c = (yyvsp[(2) - (2)].classinfo);
-       if(!c) 
-            syntaxerror("Couldn't import class\n");
        state_has_imports();
-       dict_put(state->imports, c->name, c);
-       import_toplevel(c->package);
+       dict_put(state->imports, (yyvsp[(2) - (2)].classinfo)->name, (yyvsp[(2) - (2)].classinfo));
+       import_toplevel((yyvsp[(2) - (2)].classinfo)->package);
        (yyval.code)=0;
 }
     }
@@ -5749,11 +5770,11 @@ PASS2
 
 
   
-    case 121:
+    case 123:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2492 "parser.y"
+#line 2508 "parser.y"
     {
        PASS12
        if(strncmp("flash.", (yyvsp[(2) - (4)].id), 6) && as3_pass==1) {
@@ -5772,44 +5793,44 @@ PASS2
 
 
   
-    case 122:
+    case 124:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2508 "parser.y"
+#line 2524 "parser.y"
     {PASS12 (yyval.flags).flags=0;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 123:
+    case 125:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2509 "parser.y"
+#line 2525 "parser.y"
     {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
     }
     break;
 
 
   
-    case 124:
+    case 126:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2510 "parser.y"
+#line 2526 "parser.y"
     {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
     }
     break;
 
 
   
-    case 125:
+    case 127:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2511 "parser.y"
+#line 2527 "parser.y"
     {
     PASS12 
     (yyval.flags).flags=(yyvsp[(1) - (2)].flags).flags|(yyvsp[(2) - (2)].flags).flags;
@@ -5822,110 +5843,110 @@ PASS2
 
 
   
-    case 126:
+    case 128:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2518 "parser.y"
+#line 2534 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_PUBLIC;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 127:
+    case 129:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2519 "parser.y"
+#line 2535 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_PRIVATE;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 128:
+    case 130:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2520 "parser.y"
+#line 2536 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_PROTECTED;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 129:
+    case 131:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2521 "parser.y"
+#line 2537 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_STATIC;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 130:
+    case 132:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2522 "parser.y"
+#line 2538 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_DYNAMIC;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 131:
+    case 133:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2523 "parser.y"
+#line 2539 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_FINAL;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 132:
+    case 134:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2524 "parser.y"
+#line 2540 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_OVERRIDE;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 133:
+    case 135:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2525 "parser.y"
+#line 2541 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_NATIVE;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 134:
+    case 136:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2526 "parser.y"
+#line 2542 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_PACKAGEINTERNAL;(yyval.flags).ns=0;}
     }
     break;
 
 
   
-    case 135:
+    case 137:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2527 "parser.y"
+#line 2543 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_NAMESPACE;
                                (yyval.flags).ns=(yyvsp[(1) - (1)].id);
                        }
@@ -5934,99 +5955,99 @@ PASS2
 
 
   
-    case 136:
+    case 138:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2531 "parser.y"
+#line 2547 "parser.y"
     {PASS12 (yyval.classinfo)=0;}
     }
     break;
 
 
   
-    case 137:
+    case 139:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2532 "parser.y"
+#line 2548 "parser.y"
     {PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
     }
     break;
 
 
   
-    case 138:
+    case 140:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2534 "parser.y"
+#line 2550 "parser.y"
     {PASS12 (yyval.classinfo_list)=list_new();}
     }
     break;
 
 
   
-    case 139:
+    case 141:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2535 "parser.y"
+#line 2551 "parser.y"
     {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
     }
     break;
 
 
   
-    case 140:
+    case 142:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2537 "parser.y"
+#line 2553 "parser.y"
     {PASS12 (yyval.classinfo_list)=list_new();}
     }
     break;
 
 
   
-    case 141:
+    case 143:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2538 "parser.y"
+#line 2554 "parser.y"
     {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
     }
     break;
 
 
   
-    case 142:
+    case 144:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2542 "parser.y"
+#line 2558 "parser.y"
     {PASS12 startclass(&(yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list));}
     }
     break;
 
 
   
-    case 143:
+    case 145:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2544 "parser.y"
+#line 2560 "parser.y"
     {PASS12 endclass();(yyval.code)=0;}
     }
     break;
 
 
   
-    case 144:
+    case 146:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2548 "parser.y"
+#line 2564 "parser.y"
     {PASS12 (yyvsp[(1) - (5)].flags).flags|=FLAG_INTERFACE;
                                           startclass(&(yyvsp[(1) - (5)].flags),(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list));}
     }
@@ -6034,33 +6055,33 @@ PASS2
 
 
   
-    case 145:
+    case 147:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2551 "parser.y"
+#line 2567 "parser.y"
     {PASS12 endclass();(yyval.code)=0;}
     }
     break;
 
 
   
-    case 151:
+    case 153:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2560 "parser.y"
+#line 2576 "parser.y"
     {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
     }
     break;
 
 
   
-    case 154:
+    case 156:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2564 "parser.y"
+#line 2580 "parser.y"
     {
     code_t*c = state->cls->static_init->header;
     c = code_append(c, (yyvsp[(1) - (1)].code));  
@@ -6071,11 +6092,11 @@ PASS2
 
 
   
-    case 160:
+    case 162:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2575 "parser.y"
+#line 2591 "parser.y"
     {
     syntaxerror("variable declarations not allowed in interfaces");
 }
@@ -6084,11 +6105,11 @@ PASS2
 
 
   
-    case 161:
+    case 163:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2578 "parser.y"
+#line 2594 "parser.y"
     {
     PASS12
     (yyvsp[(1) - (8)].flags).flags |= FLAG_PUBLIC;
@@ -6104,55 +6125,55 @@ PASS2
 
 
   
-    case 164:
+    case 166:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2653 "parser.y"
+#line 2669 "parser.y"
     {PASS12 setslotstate(&(yyvsp[(1) - (2)].flags),(yyvsp[(2) - (2)].token));}
     }
     break;
 
 
   
-    case 165:
+    case 167:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2653 "parser.y"
+#line 2669 "parser.y"
     {PASS12 (yyval.code)=(yyvsp[(4) - (4)].code);setslotstate(0, 0);}
     }
     break;
 
 
   
-    case 166:
+    case 168:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2655 "parser.y"
+#line 2671 "parser.y"
     {PASS12 (yyval.code)=0;}
     }
     break;
 
 
   
-    case 167:
+    case 169:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2656 "parser.y"
+#line 2672 "parser.y"
     {PASS12 (yyval.code)=0;}
     }
     break;
 
 
   
-    case 168:
+    case 170:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2659 "parser.y"
+#line 2675 "parser.y"
     {
 PASS12
     int flags = slotstate_flags->flags;
@@ -6238,22 +6259,22 @@ PASS12
 
 
   
-    case 169:
+    case 171:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2742 "parser.y"
+#line 2758 "parser.y"
     {(yyval.constant)=0;}
     }
     break;
 
 
   
-    case 170:
+    case 172:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2743 "parser.y"
+#line 2759 "parser.y"
     {
   (yyval.constant) = malloc(sizeof(constant_t));
   *(yyval.constant) = node_eval((yyvsp[(2) - (2)].node));
@@ -6266,22 +6287,22 @@ PASS12
 
 
   
-    case 171:
+    case 173:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2752 "parser.y"
+#line 2768 "parser.y"
     {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));}
     }
     break;
 
 
   
-    case 172:
+    case 174:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2753 "parser.y"
+#line 2769 "parser.y"
     {
     (yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));
 }
@@ -6290,132 +6311,132 @@ PASS12
 
 
   
-    case 173:
+    case 175:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2756 "parser.y"
+#line 2772 "parser.y"
     {(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));}
     }
     break;
 
 
   
-    case 174:
+    case 176:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2757 "parser.y"
+#line 2773 "parser.y"
     {(yyval.constant) = constant_new_string2((yyvsp[(1) - (1)].str).str,(yyvsp[(1) - (1)].str).len);free((char*)(yyvsp[(1) - (1)].str).str);}
     }
     break;
 
 
   
-    case 175:
+    case 177:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2758 "parser.y"
+#line 2774 "parser.y"
     {(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));}
     }
     break;
 
 
   
-    case 176:
+    case 178:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2759 "parser.y"
+#line 2775 "parser.y"
     {(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));}
     }
     break;
 
 
   
-    case 177:
+    case 179:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2760 "parser.y"
+#line 2776 "parser.y"
     {(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));}
     }
     break;
 
 
   
-    case 178:
+    case 180:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2761 "parser.y"
+#line 2777 "parser.y"
     {(yyval.constant) = constant_new_undefined((yyvsp[(1) - (1)].token));}
     }
     break;
 
 
   
-    case 179:
+    case 181:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2762 "parser.y"
+#line 2778 "parser.y"
     {(yyval.constant) = constant_new_float(__builtin_nan(""));}
     }
     break;
 
 
   
-    case 181:
+    case 183:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2782 "parser.y"
+#line 2793 "parser.y"
     {PASS_ALWAYS if(!xml_level++) tokenizer_begin_xml();}
     }
     break;
 
 
   
-    case 182:
+    case 184:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2783 "parser.y"
+#line 2794 "parser.y"
     {PASS_ALWAYS tokenizer_begin_xmltext();}
     }
     break;
 
 
   
-    case 183:
+    case 185:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2784 "parser.y"
+#line 2795 "parser.y"
     {PASS_ALWAYS if(!--xml_level) tokenizer_end_xml(); else tokenizer_begin_xmltext();}
     }
     break;
 
 
   
-    case 184:
+    case 186:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2786 "parser.y"
+#line 2797 "parser.y"
     {PASS_ALWAYS tokenizer_begin_xmltext();}
     }
     break;
 
 
   
-    case 185:
+    case 187:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2786 "parser.y"
+#line 2797 "parser.y"
     {
     (yyval.id)=strdup("{...}");
     as3_warning("xml string substitution not yet supported");
@@ -6425,22 +6446,22 @@ PASS12
 
 
   
-    case 186:
+    case 188:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2790 "parser.y"
+#line 2801 "parser.y"
     {PASS_ALWAYS tokenizer_begin_xml();}
     }
     break;
 
 
   
-    case 187:
+    case 189:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2790 "parser.y"
+#line 2801 "parser.y"
     {
     (yyval.id)=strdup("{...}");
     as3_warning("xml string substitution not yet supported");
@@ -6450,22 +6471,22 @@ PASS12
 
 
   
-    case 188:
+    case 190:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2794 "parser.y"
+#line 2805 "parser.y"
     {(yyval.id)="";}
     }
     break;
 
 
   
-    case 189:
+    case 191:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2795 "parser.y"
+#line 2806 "parser.y"
     {
     (yyval.id) = concat2((yyvsp[(1) - (2)].id), "{...}");
 }
@@ -6474,77 +6495,77 @@ PASS12
 
 
   
-    case 190:
+    case 192:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2798 "parser.y"
+#line 2809 "parser.y"
     {(yyval.id)=concat2((yyvsp[(1) - (2)].id), string_cstr(&(yyvsp[(2) - (2)].str)));}
     }
     break;
 
 
   
-    case 191:
+    case 193:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2799 "parser.y"
+#line 2810 "parser.y"
     {(yyval.id)=concat2((yyvsp[(1) - (2)].id), ">");}
     }
     break;
 
 
   
-    case 192:
+    case 194:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2801 "parser.y"
+#line 2812 "parser.y"
     {(yyval.id)=concat2((yyvsp[(1) - (2)].id),(yyvsp[(2) - (2)].id));}
     }
     break;
 
 
   
-    case 193:
+    case 195:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2802 "parser.y"
+#line 2813 "parser.y"
     {(yyval.id)=concat3((yyvsp[(1) - (3)].id),(yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].id));free((yyvsp[(1) - (3)].id));free((yyvsp[(2) - (3)].id));free((yyvsp[(3) - (3)].id));}
     }
     break;
 
 
   
-    case 194:
+    case 196:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2804 "parser.y"
+#line 2815 "parser.y"
     {(yyval.id)=(yyvsp[(1) - (1)].id);}
     }
     break;
 
 
   
-    case 195:
+    case 197:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2805 "parser.y"
+#line 2816 "parser.y"
     {(yyval.id)=(yyvsp[(1) - (1)].id);}
     }
     break;
 
 
   
-    case 196:
+    case 198:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2807 "parser.y"
+#line 2818 "parser.y"
     {
     (yyval.id) = allocprintf("<%s%s>%s</%s>", (yyvsp[(2) - (10)].id), (yyvsp[(3) - (10)].id), (yyvsp[(5) - (10)].id), (yyvsp[(8) - (10)].id));
     free((yyvsp[(2) - (10)].id));free((yyvsp[(3) - (10)].id));free((yyvsp[(5) - (10)].id));free((yyvsp[(8) - (10)].id));
@@ -6554,11 +6575,11 @@ PASS12
 
 
   
-    case 197:
+    case 199:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2811 "parser.y"
+#line 2822 "parser.y"
     {
     (yyval.id) = allocprintf("<%s%s/>", (yyvsp[(2) - (6)].id), (yyvsp[(3) - (6)].id));
 }
@@ -6567,11 +6588,11 @@ PASS12
 
 
   
-    case 198:
+    case 200:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2814 "parser.y"
+#line 2825 "parser.y"
     {
     (yyval.id) = allocprintf("<%s%s>%s%s</%s>", (yyvsp[(2) - (11)].id), (yyvsp[(3) - (11)].id), (yyvsp[(5) - (11)].id), (yyvsp[(6) - (11)].id), (yyvsp[(9) - (11)].id));
     free((yyvsp[(2) - (11)].id));free((yyvsp[(3) - (11)].id));free((yyvsp[(5) - (11)].id));free((yyvsp[(6) - (11)].id));free((yyvsp[(9) - (11)].id));
@@ -6581,55 +6602,55 @@ PASS12
 
 
   
-    case 199:
+    case 201:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2819 "parser.y"
+#line 2830 "parser.y"
     {(yyval.id)=strdup("");}
     }
     break;
 
 
   
-    case 200:
+    case 202:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2820 "parser.y"
+#line 2831 "parser.y"
     {(yyval.id)=concat2(" ",(yyvsp[(1) - (1)].id));}
     }
     break;
 
 
   
-    case 201:
+    case 203:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2821 "parser.y"
+#line 2832 "parser.y"
     {(yyval.id)=(yyvsp[(1) - (1)].id);}
     }
     break;
 
 
   
-    case 202:
+    case 204:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2822 "parser.y"
+#line 2833 "parser.y"
     {(yyval.id)=concat3((yyvsp[(1) - (2)].id)," ",(yyvsp[(2) - (2)].id));free((yyvsp[(1) - (2)].id));free((yyvsp[(2) - (2)].id));}
     }
     break;
 
 
   
-    case 203:
+    case 205:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2824 "parser.y"
+#line 2835 "parser.y"
     {
     (yyval.id) = strdup("{...}");
 }
@@ -6638,11 +6659,11 @@ PASS12
 
 
   
-    case 204:
+    case 206:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2827 "parser.y"
+#line 2838 "parser.y"
     {
     char* str = string_cstr(&(yyvsp[(3) - (3)].str));
     (yyval.id) = concat2("{...}=",str);
@@ -6652,11 +6673,11 @@ PASS12
 
 
   
-    case 205:
+    case 207:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2831 "parser.y"
+#line 2842 "parser.y"
     {
     (yyval.id) = strdup("{...}={...}");
 }
@@ -6665,11 +6686,11 @@ PASS12
 
 
   
-    case 206:
+    case 208:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2834 "parser.y"
+#line 2845 "parser.y"
     {
     (yyval.id) = concat2((yyvsp[(1) - (3)].id),"={...}");
 }
@@ -6678,11 +6699,11 @@ PASS12
 
 
   
-    case 207:
+    case 209:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2837 "parser.y"
+#line 2848 "parser.y"
     {
     char* str = string_cstr(&(yyvsp[(3) - (3)].str));
     (yyval.id)=allocprintf("%s=%s", (yyvsp[(1) - (3)].id),str);
@@ -6694,11 +6715,11 @@ PASS12
 
 
   
-    case 208:
+    case 210:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2847 "parser.y"
+#line 2858 "parser.y"
     {
     PASS12
     memset(&(yyval.params),0,sizeof((yyval.params)));
@@ -6708,11 +6729,11 @@ PASS12
 
 
   
-    case 209:
+    case 211:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2851 "parser.y"
+#line 2862 "parser.y"
     {
     PASS12
     (yyval.params)=(yyvsp[(1) - (1)].params);
@@ -6722,11 +6743,11 @@ PASS12
 
 
   
-    case 210:
+    case 212:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2857 "parser.y"
+#line 2868 "parser.y"
     {
     PASS12
     memset(&(yyval.params),0,sizeof((yyval.params)));
@@ -6738,11 +6759,11 @@ PASS12
 
 
   
-    case 211:
+    case 213:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2863 "parser.y"
+#line 2874 "parser.y"
     {
     PASS12
     (yyval.params) =(yyvsp[(1) - (4)].params);
@@ -6754,11 +6775,11 @@ PASS12
 
 
   
-    case 212:
+    case 214:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2871 "parser.y"
+#line 2882 "parser.y"
     {
     PASS12
     (yyval.params) = (yyvsp[(1) - (3)].params);
@@ -6769,11 +6790,11 @@ PASS12
 
 
   
-    case 213:
+    case 215:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2876 "parser.y"
+#line 2887 "parser.y"
     {
     PASS12
     memset(&(yyval.params),0,sizeof((yyval.params)));
@@ -6784,11 +6805,11 @@ PASS12
 
 
   
-    case 214:
+    case 216:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2882 "parser.y"
+#line 2893 "parser.y"
     {
      PASS12
      (yyval.param) = rfx_calloc(sizeof(param_t));
@@ -6802,11 +6823,11 @@ PASS12
 
 
   
-    case 215:
+    case 217:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2890 "parser.y"
+#line 2901 "parser.y"
     {
      PASS12
      (yyval.param) = rfx_calloc(sizeof(param_t));
@@ -6820,33 +6841,33 @@ PASS12
 
 
   
-    case 218:
+    case 220:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2900 "parser.y"
+#line 2911 "parser.y"
     {PASS12 (yyval.token)=0;}
     }
     break;
 
 
   
-    case 219:
+    case 221:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2903 "parser.y"
+#line 2914 "parser.y"
     {PASS12 startfunction(&(yyvsp[(1) - (9)].flags),(yyvsp[(3) - (9)].token),(yyvsp[(4) - (9)].id),&(yyvsp[(6) - (9)].params),(yyvsp[(8) - (9)].classinfo));}
     }
     break;
 
 
   
-    case 220:
+    case 222:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2904 "parser.y"
+#line 2915 "parser.y"
     {
     PASS1 
     endfunction(&(yyvsp[(1) - (12)].flags),(yyvsp[(3) - (12)].token),(yyvsp[(4) - (12)].id),&(yyvsp[(6) - (12)].params),0,0);
@@ -6866,33 +6887,33 @@ PASS12
 
 
   
-    case 222:
+    case 224:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2920 "parser.y"
+#line 2931 "parser.y"
     {PASS12 (yyval.id)=0;}
     }
     break;
 
 
   
-    case 223:
+    case 225:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2922 "parser.y"
+#line 2933 "parser.y"
     {PASS12 innerfunction((yyvsp[(2) - (7)].id),&(yyvsp[(4) - (7)].params),(yyvsp[(6) - (7)].classinfo));}
     }
     break;
 
 
   
-    case 224:
+    case 226:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2923 "parser.y"
+#line 2934 "parser.y"
     {
     PASS1
     endfunction(0,0,(yyvsp[(2) - (10)].id),&(yyvsp[(4) - (10)].params),0,0);
@@ -6916,11 +6937,11 @@ PASS12
 
 
   
-    case 225:
+    case 227:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2945 "parser.y"
+#line 2956 "parser.y"
     {
     PASS1 NEW(unresolvedinfo_t,c);
           memset(c, 0, sizeof(*c));
@@ -6944,11 +6965,11 @@ PASS12
 
 
   
-    case 226:
+    case 228:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2964 "parser.y"
+#line 2975 "parser.y"
     {
     PASS1 NEW(unresolvedinfo_t,c);
           memset(c, 0, sizeof(*c));
@@ -6967,121 +6988,121 @@ PASS12
 
 
   
-    case 229:
+    case 231:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2981 "parser.y"
+#line 2992 "parser.y"
     {PASS12 (yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));}
     }
     break;
 
 
   
-    case 230:
+    case 232:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2982 "parser.y"
+#line 2993 "parser.y"
     {PASS12 (yyval.classinfo_list)=(yyvsp[(1) - (3)].classinfo_list);list_append((yyval.classinfo_list),(yyvsp[(3) - (3)].classinfo));}
     }
     break;
 
 
   
-    case 231:
+    case 233:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2984 "parser.y"
+#line 2995 "parser.y"
     {PASS12 (yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);}
     }
     break;
 
 
   
-    case 232:
+    case 234:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2985 "parser.y"
+#line 2996 "parser.y"
     {PASS12 (yyval.classinfo)=TYPE_ANY;}
     }
     break;
 
 
   
-    case 233:
+    case 235:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2986 "parser.y"
+#line 2997 "parser.y"
     {PASS12 (yyval.classinfo)=TYPE_VOID;}
     }
     break;
 
 
   
-    case 234:
+    case 236:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2995 "parser.y"
+#line 3006 "parser.y"
     {PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
     }
     break;
 
 
   
-    case 235:
+    case 237:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2996 "parser.y"
+#line 3007 "parser.y"
     {PASS12 (yyval.classinfo)=0;}
     }
     break;
 
 
   
-    case 236:
+    case 238:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3000 "parser.y"
+#line 3011 "parser.y"
     {(yyval.value_list).cc=0;(yyval.value_list).number=0;}
     }
     break;
 
 
   
-    case 237:
+    case 239:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3001 "parser.y"
+#line 3012 "parser.y"
     {(yyval.value_list)=(yyvsp[(2) - (3)].value_list);}
     }
     break;
 
 
   
-    case 238:
+    case 240:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3003 "parser.y"
+#line 3014 "parser.y"
     {(yyval.value_list).cc=0;(yyval.value_list).number=0;}
     }
     break;
 
 
   
-    case 241:
+    case 243:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3007 "parser.y"
+#line 3018 "parser.y"
     {(yyval.value_list).number=1;
                                                   (yyval.value_list).cc = (yyvsp[(1) - (1)].value).c;
                                                  }
@@ -7090,22 +7111,22 @@ PASS12
 
 
   
-    case 242:
+    case 244:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3011 "parser.y"
+#line 3022 "parser.y"
     {(yyval.value_list) = (yyvsp[(1) - (2)].value_list);}
     }
     break;
 
 
   
-    case 243:
+    case 245:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3012 "parser.y"
+#line 3023 "parser.y"
     {
                                                   (yyval.value_list).number= (yyvsp[(1) - (2)].value_list).number+1;
                                                   (yyval.value_list).cc = code_append((yyvsp[(1) - (2)].value_list).cc, (yyvsp[(2) - (2)].value).c);
@@ -7115,11 +7136,11 @@ PASS12
 
 
   
-    case 245:
+    case 247:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3018 "parser.y"
+#line 3029 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(2) - (4)].node));
     (yyval.value).c = v.c;
@@ -7164,11 +7185,11 @@ PASS12
 
 
   
-    case 246:
+    case 248:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3062 "parser.y"
+#line 3073 "parser.y"
     {
    
     typedcode_t v = node_read((yyvsp[(1) - (4)].node));
@@ -7223,11 +7244,11 @@ PASS12
 
 
   
-    case 247:
+    case 249:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3112 "parser.y"
+#line 3123 "parser.y"
     {
     if(!state->cls) syntaxerror("super() not allowed outside of a class");
     if(!state->method) syntaxerror("super() not allowed outside of a function");
@@ -7253,11 +7274,11 @@ PASS12
 
 
   
-    case 248:
+    case 250:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3133 "parser.y"
+#line 3144 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(2) - (2)].node));
     (yyval.value).c = v.c;
@@ -7284,11 +7305,11 @@ PASS12
 
 
   
-    case 249:
+    case 251:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3155 "parser.y"
+#line 3166 "parser.y"
     {
     (yyval.code) = abc_returnvoid(0);
 }
@@ -7297,11 +7318,11 @@ PASS12
 
 
   
-    case 250:
+    case 252:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3158 "parser.y"
+#line 3169 "parser.y"
     {
     (yyval.code) = (yyvsp[(2) - (2)].value).c;
     (yyval.code) = abc_returnvalue((yyval.code));
@@ -7311,11 +7332,11 @@ PASS12
 
 
   
-    case 251:
+    case 253:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3165 "parser.y"
+#line 3176 "parser.y"
     {
     (yyval.value) = node_read((yyvsp[(1) - (1)].node));
 }
@@ -7324,11 +7345,11 @@ PASS12
 
 
   
-    case 252:
+    case 254:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3168 "parser.y"
+#line 3179 "parser.y"
     {
     (yyval.value) = node_read((yyvsp[(1) - (1)].node));
 }
@@ -7337,11 +7358,11 @@ PASS12
 
 
   
-    case 253:
+    case 255:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3171 "parser.y"
+#line 3182 "parser.y"
     {
     (yyval.node) = mkmultinode(&node_comma, (yyvsp[(1) - (1)].node));
 }
@@ -7350,11 +7371,11 @@ PASS12
 
 
   
-    case 254:
+    case 256:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3174 "parser.y"
+#line 3185 "parser.y"
     {
     (yyval.node) = multinode_extend((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 }
@@ -7363,11 +7384,11 @@ PASS12
 
 
   
-    case 255:
+    case 257:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3177 "parser.y"
+#line 3188 "parser.y"
     { 
     (yyval.code) = node_exec((yyvsp[(1) - (1)].node)); 
 }
@@ -7376,11 +7397,11 @@ PASS12
 
 
   
-    case 256:
+    case 258:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3180 "parser.y"
+#line 3191 "parser.y"
     { 
     (yyval.code) = (yyvsp[(1) - (3)].code);
     (yyval.code) = code_append((yyval.code), node_exec((yyvsp[(3) - (3)].node))); 
@@ -7390,88 +7411,88 @@ PASS12
 
 
   
-    case 257:
+    case 259:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3185 "parser.y"
+#line 3196 "parser.y"
     {(yyval.value_list).cc=0;(yyval.value_list).number=0;}
     }
     break;
 
 
   
-    case 258:
+    case 260:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3186 "parser.y"
+#line 3197 "parser.y"
     {(yyval.value_list)=(yyvsp[(1) - (1)].value_list);}
     }
     break;
 
 
   
-    case 259:
+    case 261:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3188 "parser.y"
+#line 3199 "parser.y"
     {(yyval.code)=abc_pushstring(0,(yyvsp[(1) - (1)].id));}
     }
     break;
 
 
   
-    case 260:
+    case 262:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3189 "parser.y"
+#line 3200 "parser.y"
     {(yyval.code)=abc_pushstring2(0,&(yyvsp[(1) - (1)].str));}
     }
     break;
 
 
   
-    case 261:
+    case 263:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3190 "parser.y"
+#line 3201 "parser.y"
     {syntaxerror("dictionary keys must be strings");}
     }
     break;
 
 
   
-    case 262:
+    case 264:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3191 "parser.y"
+#line 3202 "parser.y"
     {syntaxerror("dictionary keys must be strings");}
     }
     break;
 
 
   
-    case 263:
+    case 265:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3192 "parser.y"
+#line 3203 "parser.y"
     {syntaxerror("dictionary keys must be strings");}
     }
     break;
 
 
   
-    case 264:
+    case 266:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3194 "parser.y"
+#line 3205 "parser.y"
     {
     (yyval.value_list).cc = 0;
     (yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(1) - (3)].code));
@@ -7483,11 +7504,11 @@ PASS12
 
 
   
-    case 265:
+    case 267:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3200 "parser.y"
+#line 3211 "parser.y"
     {
     (yyval.value_list).cc = (yyvsp[(1) - (5)].value_list).cc;
     (yyval.value_list).number = (yyvsp[(1) - (5)].value_list).number+2;
@@ -7499,77 +7520,77 @@ PASS12
 
 
   
-    case 266:
+    case 268:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3209 "parser.y"
+#line 3220 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
 
 
   
-    case 267:
+    case 269:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3210 "parser.y"
+#line 3221 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
 
 
   
-    case 268:
+    case 270:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3211 "parser.y"
+#line 3222 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
 
 
   
-    case 269:
+    case 271:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3212 "parser.y"
+#line 3223 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
 
 
   
-    case 270:
+    case 272:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3213 "parser.y"
+#line 3224 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
 
 
   
-    case 271:
+    case 273:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3214 "parser.y"
+#line 3225 "parser.y"
     {(yyval.node) = (yyvsp[(1) - (1)].node);}
     }
     break;
 
 
   
-    case 272:
+    case 274:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3216 "parser.y"
+#line 3227 "parser.y"
     { 
     (yyval.node) = mkconstnode((yyvsp[(1) - (1)].constant));
 }
@@ -7578,11 +7599,11 @@ PASS12
 
 
   
-    case 273:
+    case 275:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3220 "parser.y"
+#line 3231 "parser.y"
     {
     typedcode_t v;
     v.c = 0;
@@ -7598,11 +7619,11 @@ PASS12
 
 
   
-    case 274:
+    case 276:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3232 "parser.y"
+#line 3243 "parser.y"
     {
     typedcode_t v;
     v.c = 0;
@@ -7625,11 +7646,11 @@ PASS12
 
 
   
-    case 275:
+    case 277:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3250 "parser.y"
+#line 3261 "parser.y"
     {
     PASS1
     state->method->need_arguments = 1;
@@ -7644,11 +7665,11 @@ PASS12
 
 
   
-    case 276:
+    case 278:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3261 "parser.y"
+#line 3272 "parser.y"
     {
     typedcode_t v;
     v.c = code_new();
@@ -7662,11 +7683,11 @@ PASS12
 
 
   
-    case 277:
+    case 279:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3271 "parser.y"
+#line 3282 "parser.y"
     {
     typedcode_t v;
     v.c = code_new();
@@ -7680,561 +7701,561 @@ PASS12
 
 
   
-    case 278:
+    case 280:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3280 "parser.y"
+#line 3291 "parser.y"
     {(yyval.node) = mknode2(&node_lt,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 279:
+    case 281:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3281 "parser.y"
+#line 3292 "parser.y"
     {(yyval.node) = mknode2(&node_gt,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 280:
+    case 282:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3282 "parser.y"
+#line 3293 "parser.y"
     {(yyval.node) = mknode2(&node_le,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 281:
+    case 283:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3283 "parser.y"
+#line 3294 "parser.y"
     {(yyval.node) = mknode2(&node_ge,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 282:
+    case 284:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3284 "parser.y"
+#line 3295 "parser.y"
     {(yyval.node) = mknode2(&node_eqeq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 283:
+    case 285:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3285 "parser.y"
+#line 3296 "parser.y"
     {(yyval.node) = mknode2(&node_eqeqeq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 284:
+    case 286:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3286 "parser.y"
+#line 3297 "parser.y"
     {(yyval.node) = mknode2(&node_noteqeq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 285:
+    case 287:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3287 "parser.y"
+#line 3298 "parser.y"
     {(yyval.node) = mknode2(&node_noteq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 286:
+    case 288:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3288 "parser.y"
+#line 3299 "parser.y"
     {(yyval.node) = mknode2(&node_oror,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 287:
+    case 289:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3289 "parser.y"
+#line 3300 "parser.y"
     {(yyval.node) = mknode2(&node_andand,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 288:
+    case 290:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3290 "parser.y"
+#line 3301 "parser.y"
     {(yyval.node) = mknode1(&node_not, (yyvsp[(2) - (2)].node));}
     }
     break;
 
 
   
-    case 289:
+    case 291:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3291 "parser.y"
+#line 3302 "parser.y"
     {(yyval.node) = mknode1(&node_bitnot, (yyvsp[(2) - (2)].node));}
     }
     break;
 
 
   
-    case 290:
+    case 292:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3292 "parser.y"
+#line 3303 "parser.y"
     {(yyval.node) = mknode2(&node_bitand, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 291:
+    case 293:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3293 "parser.y"
+#line 3304 "parser.y"
     {(yyval.node) = mknode2(&node_bitxor, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 292:
+    case 294:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3294 "parser.y"
+#line 3305 "parser.y"
     {(yyval.node) = mknode2(&node_bitor, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 293:
+    case 295:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3295 "parser.y"
+#line 3306 "parser.y"
     {(yyval.node) = mknode2(&node_shr, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 294:
+    case 296:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3296 "parser.y"
+#line 3307 "parser.y"
     {(yyval.node) = mknode2(&node_ushr, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 295:
+    case 297:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3297 "parser.y"
+#line 3308 "parser.y"
     {(yyval.node) = mknode2(&node_shl, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 296:
+    case 298:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3298 "parser.y"
+#line 3309 "parser.y"
     {(yyval.node) = mknode2(&node_div, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 297:
+    case 299:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3299 "parser.y"
+#line 3310 "parser.y"
     {(yyval.node) = mknode2(&node_mod, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 298:
+    case 300:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3300 "parser.y"
+#line 3311 "parser.y"
     {(yyval.node) = mknode2(&node_plus, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 299:
+    case 301:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3301 "parser.y"
+#line 3312 "parser.y"
     {(yyval.node) = mknode2(&node_minus, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 300:
+    case 302:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3302 "parser.y"
+#line 3313 "parser.y"
     {(yyval.node) = mknode2(&node_multiply, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 301:
+    case 303:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3303 "parser.y"
+#line 3314 "parser.y"
     {(yyval.node) = mknode2(&node_in, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 302:
+    case 304:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3304 "parser.y"
+#line 3315 "parser.y"
     {(yyval.node) = mknode2(&node_as, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 303:
+    case 305:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3305 "parser.y"
+#line 3316 "parser.y"
     {(yyval.node) = mknode2(&node_instanceof, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 304:
+    case 306:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3306 "parser.y"
+#line 3317 "parser.y"
     {(yyval.node) = mknode2(&node_is, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 305:
+    case 307:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3307 "parser.y"
-    {(yyval.node) = mknode1(&node_typeof, (yyvsp[(3) - (4)].node));}
+#line 3318 "parser.y"
+    {(yyval.node) = mknode1(&node_typeof, (yyvsp[(2) - (2)].node));}
     }
     break;
 
 
   
-    case 306:
+    case 308:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3308 "parser.y"
+#line 3319 "parser.y"
     {(yyval.node) = mknode1(&node_void, (yyvsp[(2) - (2)].node));}
     }
     break;
 
 
   
-    case 307:
+    case 309:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3309 "parser.y"
+#line 3320 "parser.y"
     { (yyval.node) = mkconstnode(constant_new_undefined());}
     }
     break;
 
 
   
-    case 308:
+    case 310:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3310 "parser.y"
+#line 3321 "parser.y"
     { (yyval.node)=(yyvsp[(2) - (3)].node);}
     }
     break;
 
 
   
-    case 309:
+    case 311:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3311 "parser.y"
+#line 3322 "parser.y"
     {(yyval.node) = mknode1(&node_neg, (yyvsp[(2) - (2)].node));}
     }
     break;
 
 
   
-    case 310:
+    case 312:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3312 "parser.y"
+#line 3323 "parser.y"
     {(yyval.node) = mknode2(&node_arraylookup, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node));}
     }
     break;
 
 
   
-    case 311:
+    case 313:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3313 "parser.y"
+#line 3324 "parser.y"
     {(yyval.node) = mknode2(&node_muleq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 312:
+    case 314:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3314 "parser.y"
+#line 3325 "parser.y"
     {(yyval.node) = mknode2(&node_modeq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 313:
+    case 315:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3315 "parser.y"
+#line 3326 "parser.y"
     {(yyval.node) = mknode2(&node_shleq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 314:
+    case 316:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3316 "parser.y"
+#line 3327 "parser.y"
     {(yyval.node) = mknode2(&node_shreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 315:
+    case 317:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3317 "parser.y"
+#line 3328 "parser.y"
     {(yyval.node) = mknode2(&node_ushreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 316:
+    case 318:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3318 "parser.y"
+#line 3329 "parser.y"
     { (yyval.node) = mknode2(&node_diveq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 317:
+    case 319:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3319 "parser.y"
+#line 3330 "parser.y"
     { (yyval.node) = mknode2(&node_bitoreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 318:
+    case 320:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3320 "parser.y"
+#line 3331 "parser.y"
     { (yyval.node) = mknode2(&node_bitxoreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 319:
+    case 321:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3321 "parser.y"
+#line 3332 "parser.y"
     { (yyval.node) = mknode2(&node_bitandeq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 320:
+    case 322:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3322 "parser.y"
+#line 3333 "parser.y"
     { (yyval.node) = mknode2(&node_pluseq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 321:
+    case 323:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3323 "parser.y"
+#line 3334 "parser.y"
     { (yyval.node) = mknode2(&node_minuseq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 322:
+    case 324:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3324 "parser.y"
+#line 3335 "parser.y"
     { (yyval.node) = mknode2(&node_assign, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
 
 
   
-    case 323:
+    case 325:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3325 "parser.y"
+#line 3336 "parser.y"
     { (yyval.node) = mknode3(&node_tenary, (yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node));}
     }
     break;
 
 
   
-    case 324:
+    case 326:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3327 "parser.y"
+#line 3338 "parser.y"
     { (yyval.node) = mknode1(&node_rplusplus, (yyvsp[(1) - (2)].node));}
     }
     break;
 
 
   
-    case 325:
+    case 327:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3328 "parser.y"
+#line 3339 "parser.y"
     { (yyval.node) = mknode1(&node_rminusminus, (yyvsp[(1) - (2)].node));}
     }
     break;
 
 
   
-    case 326:
+    case 328:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3329 "parser.y"
+#line 3340 "parser.y"
     {(yyval.node) = mknode1(&node_lplusplus, (yyvsp[(2) - (2)].node)); }
     }
     break;
 
 
   
-    case 327:
+    case 329:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3330 "parser.y"
+#line 3341 "parser.y"
     {(yyval.node) = mknode1(&node_lminusminus, (yyvsp[(2) - (2)].node)); }
     }
     break;
 
 
   
-    case 328:
+    case 330:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3333 "parser.y"
+#line 3344 "parser.y"
     { if(!state->cls->info)
                   syntaxerror("super keyword not allowed outside a class");
               classinfo_t*t = state->cls->info->superclass;
@@ -8253,11 +8274,11 @@ PASS12
 
 
   
-    case 329:
+    case 331:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3347 "parser.y"
+#line 3358 "parser.y"
     {
     typedcode_t v;
     multiname_t m = {MULTINAMEA, 0, &nopackage_namespace_set, (yyvsp[(2) - (2)].id)};
@@ -8270,22 +8291,22 @@ PASS12
 
 
   
-    case 330:
+    case 332:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3355 "parser.y"
+#line 3366 "parser.y"
     {PASS12 new_state();state->xmlfilter=1;}
     }
     break;
 
 
   
-    case 331:
+    case 333:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3355 "parser.y"
+#line 3366 "parser.y"
     {
     PASS1 old_state();
     PASS2
@@ -8344,55 +8365,55 @@ PASS12
 
 
   
-    case 332:
+    case 334:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3409 "parser.y"
+#line 3420 "parser.y"
     {(yyval.id)=(yyvsp[(1) - (1)].id);}
     }
     break;
 
 
   
-    case 333:
+    case 335:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3410 "parser.y"
+#line 3421 "parser.y"
     {(yyval.id)="*";}
     }
     break;
 
 
   
-    case 334:
+    case 336:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3411 "parser.y"
+#line 3422 "parser.y"
     {(yyval.id)=(char*)(yyvsp[(1) - (1)].id);}
     }
     break;
 
 
   
-    case 336:
+    case 338:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3413 "parser.y"
+#line 3424 "parser.y"
     {(yyval.id)="*";}
     }
     break;
 
 
   
-    case 337:
+    case 339:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3421 "parser.y"
+#line 3432 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (5)].node));
     typedcode_t w = node_read(resolve_identifier((yyvsp[(3) - (5)].id)));
@@ -8416,11 +8437,11 @@ PASS12
 
 
   
-    case 338:
+    case 340:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3439 "parser.y"
+#line 3450 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (3)].node));
     multiname_t m = {MULTINAME, 0, &nopackage_namespace_set, (yyvsp[(3) - (3)].id)};
@@ -8433,11 +8454,11 @@ PASS12
 
 
   
-    case 339:
+    case 341:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3446 "parser.y"
+#line 3457 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (5)].node));
     typedcode_t w = node_read((yyvsp[(4) - (5)].node));
@@ -8453,11 +8474,11 @@ PASS12
 
 
   
-    case 340:
+    case 342:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3457 "parser.y"
+#line 3468 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (4)].node));
     multiname_t m = {MULTINAMEA, 0, &nopackage_namespace_set, (yyvsp[(4) - (4)].id)};
@@ -8470,11 +8491,11 @@ PASS12
 
 
   
-    case 341:
+    case 343:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3464 "parser.y"
+#line 3475 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (4)].node));
     multiname_t m = {MULTINAMEA, 0, &nopackage_namespace_set, (yyvsp[(4) - (4)].id)};
@@ -8487,11 +8508,11 @@ PASS12
 
 
   
-    case 342:
+    case 344:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3471 "parser.y"
+#line 3482 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (6)].node));
     typedcode_t w = node_read((yyvsp[(5) - (6)].node));
@@ -8507,11 +8528,11 @@ PASS12
 
 
   
-    case 343:
+    case 345:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3481 "parser.y"
+#line 3492 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (6)].node));
     typedcode_t w = node_read((yyvsp[(5) - (6)].node));
@@ -8527,11 +8548,11 @@ PASS12
 
 
   
-    case 344:
+    case 346:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3492 "parser.y"
+#line 3503 "parser.y"
     {
     typedcode_t v1 = node_read((yyvsp[(1) - (3)].node));
     (yyval.value).c = v1.c;
@@ -8599,11 +8620,11 @@ PASS12
 
 
   
-    case 345:
+    case 347:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3670 "parser.y"
+#line 3681 "parser.y"
     {
     PASS1
     /* Queue unresolved identifiers for checking against the parent
@@ -8633,11 +8654,11 @@ PASS12
 
 
   
-    case 346:
+    case 348:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3706 "parser.y"
+#line 3717 "parser.y"
     {
     PASS12
     NEW(namespace_decl_t,n);
@@ -8650,11 +8671,11 @@ PASS12
 
 
   
-    case 347:
+    case 349:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3713 "parser.y"
+#line 3724 "parser.y"
     {
     PASS12
     NEW(namespace_decl_t,n);
@@ -8667,11 +8688,11 @@ PASS12
 
 
   
-    case 348:
+    case 350:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3720 "parser.y"
+#line 3731 "parser.y"
     {
     PASS12
     NEW(namespace_decl_t,n);
@@ -8684,11 +8705,11 @@ PASS12
 
 
   
-    case 349:
+    case 351:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3727 "parser.y"
+#line 3738 "parser.y"
     {
     PASS12
     trie_put(active_namespaces, (yyvsp[(2) - (2)].namespace_decl)->name, (void*)(yyvsp[(2) - (2)].namespace_decl)->url);
@@ -8715,24 +8736,25 @@ PASS12
 
 
   
-    case 350:
+    case 352:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3750 "parser.y"
+#line 3761 "parser.y"
     {
     as3_warning("default xml namespaces not supported yet");
+    (yyval.code) = 0;
 }
     }
     break;
 
 
   
-    case 351:
+    case 353:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3754 "parser.y"
+#line 3766 "parser.y"
     {
     PASS12
     const char*url = (yyvsp[(3) - (3)].classinfo)->name;
@@ -8761,7 +8783,7 @@ PASS12
 
 
 /* Line 1464 of skeleton.m4  */
-#line 8765 "parser.tab.c"
+#line 8787 "parser.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
index 37ad268..d21da23 100644 (file)
@@ -266,7 +266,8 @@ extern int a3_lex();
 
 // needed for "return" precedence:
 %nonassoc T_STRING T_REGEXP
-%nonassoc T_INT T_UINT T_FLOAT KW_NAN
+%nonassoc T_INT T_UINT T_FLOAT KW_NAN 
+%left T_NAMESPACE
 %nonassoc "false" "true" "null" "undefined" "super" "function"
 %left above_function
 
@@ -570,6 +571,7 @@ void initialize_file(char*filename)
         state->method->late_binding = 1; // init scripts use getglobalscope, so we need a getlocal0/pushscope
     } else {
         state->method = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount);
+        state->method->variable_count = 0;
         if(!state->method)
             syntaxerror("internal error: skewed tokencount");
         function_initvars(state->method, 0, 0, 0, 1);
@@ -2445,6 +2447,7 @@ WITH : WITH_HEAD CODEBLOCK {
 X_IDENTIFIER: T_IDENTIFIER
             | "package" {PASS12 $$="package";}
             | "namespace" {PASS12 $$="namespace";}
+            | "NaN" {PASS12 $$="NaN";}
             | T_NAMESPACE {PASS12 $$=$1;}
 
 PACKAGE: PACKAGE '.' X_IDENTIFIER {PASS12 $$ = concat3($1,".",$3);free($1);$1=0;}
@@ -2475,18 +2478,24 @@ PACKAGE_DECLARATION : "package" '{' {PASS12 startpackage("");}
         free(s);
     }
 };
+
+IMPORT : "import" T_IDENTIFIER {
+       PASS12
+       slotinfo_t*s = registry_find(state->package, $2);
+       if(!s && as3_pass==1) {as3_schedule_class(state->package, $2);}
+       state_has_imports();
+       dict_put(state->imports, state->package, $2);
+       $$=0;
+}
 IMPORT : "import" PACKAGEANDCLASS {
        PASS12
        slotinfo_t*s = registry_find($2->package, $2->name);
        if(!s && as3_pass==1) {// || !(s->flags&FLAG_BUILTIN)) {
            as3_schedule_class($2->package, $2->name);
        }
-       classinfo_t*c = $2;
-       if(!c) 
-            syntaxerror("Couldn't import class\n");
        state_has_imports();
-       dict_put(state->imports, c->name, c);
-       import_toplevel(c->package);
+       dict_put(state->imports, $2->name, $2);
+       import_toplevel($2->package);
        $$=0;
 }
 IMPORT : "import" PACKAGE '.' '*' {
@@ -2761,14 +2770,9 @@ CONSTANT : "null" {$$ = constant_new_null($1);}
 CONSTANT : "undefined" {$$ = constant_new_undefined($1);}
 CONSTANT : KW_NAN {$$ = constant_new_float(__builtin_nan(""));}
 
-/*
-CONSTANT : T_IDENTIFIER {
-    if(!strcmp($1, "NaN")) {
-        $$ = constant_new_float(__builtin_nan(""));
-    } else {
-        as3_warning("Couldn't evaluate constant value of %s", $1);
-        $$ = constant_new_null($1);
-    }
+/*CONSTANT : T_NAMESPACE {
+    // TODO
+    $$ = constant_new_namespace(namespace_new_namespace($1.url));
 }*/
 
 /* ---------------------------xml ------------------------------ */
@@ -3304,7 +3308,7 @@ E : E "in" E {$$ = mknode2(&node_in, $1, $3);}
 E : E "as" E {$$ = mknode2(&node_as, $1, $3);}
 E : E "instanceof" E {$$ = mknode2(&node_instanceof, $1, $3);}
 E : E "is" E {$$ = mknode2(&node_is, $1, $3);}
-E : "typeof" '(' E ')' {$$ = mknode1(&node_typeof, $3);}
+E : "typeof" E  {$$ = mknode1(&node_typeof, $2);}
 E : "void" E {$$ = mknode1(&node_void, $2);}
 E : "void" { $$ = mkconstnode(constant_new_undefined());}
 E : '(' COMMA_EXPRESSION ')' { $$=$2;}
@@ -3749,6 +3753,7 @@ NAMESPACE_DECLARATION : MAYBE_MODIFIERS NAMESPACE_ID {
 DEFAULT_NAMESPACE : "default xml" "namespace" '=' E 
 {
     as3_warning("default xml namespaces not supported yet");
+    $$ = 0;
 }
 
 USE_NAMESPACE : "use" "namespace" CLASS_SPEC {
index c8b1de1..e39f65e 100644 (file)
@@ -1,4 +1,4 @@
-.TH as3compile "1" "February 2009" "as3compile" "swftools"
+.TH as3compile "1" "April 2009" "as3compile" "swftools"
 .SH NAME
 as3compile - Compile .as ActionScript 3.0 files to swf.
 
@@ -6,7 +6,7 @@ as3compile - Compile .as ActionScript 3.0 files to swf.
 .B as3compile file.as [-o file.swf] 
 
 .SH DESCRIPTION
-Compiles a file written in ActionScript to a SWF file.
+Compiles a file written in ActionScript 3.0 to a SWF file.
 
 .SH OPTIONS
 .TP
@@ -25,6 +25,12 @@ Compiles a file written in ActionScript to a SWF file.
 \fB\-C\fR, \fB\-\-cgi\fR 
     Output to stdout (for use in CGI environments)
 .TP
+\fB\-R\fR, \fB\-\-resolve\fR 
+    This flag will cause the compiler to try filenames like "FooBar.as" for classes named "FooBar".
+.TP
+\fB\-D\fR, \fB\-\-define\fR \fInamespace::variable\fR
+    Set a compile time variable (for doing conditional compilation)
+.TP
 \fB\-X\fR, \fB\-\-width\fR 
     Set target SWF width
 .TP
@@ -35,16 +41,48 @@ Compiles a file written in ActionScript to a SWF file.
     Set target SWF framerate
 .TP
 \fB\-l\fR, \fB\-\-library\fR \fIfile\fR
-    Include library file \fIfile\fR
+    Include library file \fIfile\fR. <file> can be an .abc or .swf file.
 .TP
 \fB\-I\fR, \fB\-\-include\fR \fIdir\fR
-    Add include dir \fIdir\fR
+    Add additional include dir \fIdir\fR.
+.TP
+\fB\-N\fR, \fB\-\-local-with-network\fR 
+    Make output file "local with networking"
+.TP
+\fB\-L\fR, \fB\-\-local-with-filesystem\fR 
+    Make output file "local with filesystem"
 .TP
 \fB\-T\fR, \fB\-\-flashversion\fR \fInum\fR
     \fInum\fR must be >= 9.
 .TP
 \fB\-o\fR, \fB\-\-output\fR \fIfilename\fR
     Set output file to \fIfilename\fR.
+.SH EXAMPLE
+
+ The following is a basic as3 file that can be compiled e.g.
+ with \fBas3compile -X 400 -Y 400 smiley.as\fR
+
+ // smiley.as
+ package
+ {
+     import flash.display.MovieClip
+     public class Main extends MovieClip
+     {
+         function Main()
+         {
+             this.graphics.beginFill(0xcccc00)
+             this.graphics.drawCircle(200,200,200)
+             this.graphics.endFill()
+             this.graphics.beginFill(0x000000)
+             this.graphics.drawCircle(140,150,50)
+             this.graphics.drawCircle(260,150,50)
+             this.graphics.drawRoundRect(140,270,120,10,20);
+             this.graphics.endFill()
+         }
+     }
+ }
+
 .SH AUTHOR
 
 Matthias Kramm <kramm@quiss.org>
index e59f691..5d20d31 100644 (file)
@@ -40,6 +40,7 @@ static int flashversion = 9;
 static int verbose = 1;
 static char local_with_networking = 0;
 static char local_with_filesystem = 0;
+static char*mainclass = 0;
 
 static struct options_t options[] = {
 {"h", "help"},
@@ -47,14 +48,16 @@ static struct options_t options[] = {
 {"v", "verbose"},
 {"q", "quiet"},
 {"C", "cgi"},
+{"R", "resolve"},
 {"D", "define"},
 {"X", "width"},
 {"Y", "height"},
 {"r", "rate"},
 {"l", "library"},
 {"I", "include"},
+{"N", "local-with-network"},
+{"L", "local-with-filesystem"},
 {"T", "flashversion"},
-{"R", "recurse"},
 {"o", "output"},
 {0,0}
 };
@@ -74,6 +77,10 @@ int args_callback_option(char*name,char*val)
        framerate = atof(val);
         return 1;
     }
+    else if(!strcmp(name, "M")) {
+        mainclass = val;
+        return 1;
+    }
     else if(!strcmp(name, "v")) {
        verbose++;
         return 0;
@@ -144,11 +151,15 @@ void args_callback_usage(char *name)
     printf("-v , --verbose                 Increase verbosity\n");
     printf("-q , --quiet                   Decrease verbosity\n");
     printf("-C , --cgi                     Output to stdout (for use in CGI environments)\n");
+    printf("-R , --resolve                 Try to resolve undefined classes automatically.\n");
+    printf("-D , --define <namespace::variable>    Set a compile time variable (for doing conditional compilation)\n");
     printf("-X , --width                   Set target SWF width\n");
     printf("-Y , --height                  Set target SWF width\n");
     printf("-r , --rate                    Set target SWF framerate\n");
-    printf("-l , --library <file>          Include library file <file>\n");
-    printf("-I , --include <dir>           Add include dir <dir>\n");
+    printf("-l , --library <file>          Include library file <file>. <file> can be an .abc or .swf file.\n");
+    printf("-I , --include <dir>           Add additional include dir <dir>.\n");
+    printf("-N , --local-with-network      Make output file \"local with networking\"\n");
+    printf("-L , --local-with-filesystem     Make output file \"local with filesystem\"\n");
     printf("-T , --flashversion <num>      Set target SWF flash version to <num>.\n");
     printf("-o , --output <filename>       Set output file to <filename>.\n");
     printf("\n");
@@ -225,7 +236,9 @@ int main (int argc,char ** argv)
     TAG*tag = swf.firstTag = swf_InsertTag(0, ST_DOABC);
     swf_WriteABC(tag, code);
 
-    if(as3_getglobalclass()) {
+    if(!mainclass)
+        mainclass = as3_getglobalclass();
+    if(mainclass) {
         tag = swf_InsertTag(tag, ST_SYMBOLCLASS);
         swf_SetU16(tag, 1);
         swf_SetU16(tag, 0);
index b370903..c6c007c 100644 (file)
@@ -2,7 +2,7 @@ Usage: %s file.as [-o file.swf]
 
 Compile .as ActionScript 3.0 files to swf.
 
-Compiles a file written in ActionScript to a SWF file.
+Compiles a file written in ActionScript 3.0 to a SWF file.
 
 -h, --help
     Print short help message and exit
@@ -14,6 +14,11 @@ Compiles a file written in ActionScript to a SWF file.
     Decrease verbosity
 -C, --cgi
     Output to stdout (for use in CGI environments)
+-R, --resolve
+    Try to resolve undefined classes automatically.
+    This flag will cause the compiler to try filenames like "FooBar.as" for classes named "FooBar".
+-D, --define <namespace::variable>
+    Set a compile time variable (for doing conditional compilation)
 -X, --width
     Set target SWF width
 -Y, --height
@@ -21,9 +26,9 @@ Compiles a file written in ActionScript to a SWF file.
 -r, --rate
     Set target SWF framerate
 -l, --library <file>
-    Include library file <file>
+    Include library file <file>. <file> can be an .abc or .swf file.
 -I, --include <dir>
-    Add include dir <dir>
+    Add additional include dir <dir>.
 -N, --local-with-network
     Make output file "local with networking"
 -L, --local-with-filesystem
@@ -34,6 +39,32 @@ Compiles a file written in ActionScript to a SWF file.
 -o, --output <filename>
     Set output file to <filename>.
 
+.SH EXAMPLE
+
+ The following is a basic as3 file that can be compiled e.g.
+ with \fBas3compile -X 400 -Y 400 smiley.as\fR
+
+ // smiley.as
+ package
+ {
+     import flash.display.MovieClip
+     public class Main extends MovieClip
+     {
+         function Main()
+         {
+             this.graphics.beginFill(0xcccc00)
+             this.graphics.drawCircle(200,200,200)
+             this.graphics.endFill()
+             this.graphics.beginFill(0x000000)
+             this.graphics.drawCircle(140,150,50)
+             this.graphics.drawCircle(260,150,50)
+             this.graphics.drawRoundRect(140,270,120,10,20);
+             this.graphics.endFill()
+         }
+     }
+ }
+
 .SH AUTHOR
 
 Matthias Kramm <kramm@quiss.org>
index bbb31e3..9b4a9f6 100644 (file)
@@ -1,4 +1,4 @@
-.TH font2swf "1" "January 2009" "font2swf" "swftools"
+.TH font2swf "1" "April 2009" "font2swf" "swftools"
 .SH NAME
 font2swf - Converts a font to SWF.
 
index 36ac40b..cd30118 100644 (file)
@@ -79,7 +79,6 @@ void args_callback_usage(char *name)
     printf("\n");
     printf("-h , --help                    Print short help message and exit\n");
     printf("-v , --verbose                 Be verbose. Use more than one -v for greater effect.\n");
-    printf("-n , --name <name>             Name of the font (class) in the output file\n");
     printf("-o , --output <filename>       Write output to file <filename>.\n");
     printf("-V , --version                 Print version info and exit\n");
     printf("\n");
index 62f9fce..56fd09d 100644 (file)
@@ -1,4 +1,4 @@
-.TH gif2swf "1" "January 2009" "gif2swf" "swftools"
+.TH gif2swf "1" "April 2009" "gif2swf" "swftools"
 .SH NAME
 gif2swf - Takes a number of gif  files and converts them to a swf movie, one
 picture per frame.
index 0cea6c4..e9a854b 100644 (file)
@@ -1,4 +1,4 @@
-.TH jpeg2swf "1" "January 2009" "jpeg2swf" "swftools"
+.TH jpeg2swf "1" "April 2009" "jpeg2swf" "swftools"
 .SH NAME
 jpeg2swf - Converts jpeg images to SWF.
 
index 9a8f899..e69679f 100644 (file)
@@ -1,4 +1,4 @@
-.TH png2swf "1" "January 2009" "png2swf" "swftools"
+.TH png2swf "1" "April 2009" "png2swf" "swftools"
 .SH NAME
 png2swf - Takes a number of png files and converts them to a swf movie, one
 picture per frame.
index d710ff1..636a3b1 100644 (file)
@@ -1,4 +1,4 @@
-.TH swfbbox "1" "January 2009" "swfbbox" "swftools"
+.TH swfbbox "1" "April 2009" "swfbbox" "swftools"
 .SH NAME
 swfbbox - Tool for playing around with SWF bounding boxes.
 
index 6e2a6ac..efca89c 100644 (file)
@@ -1,4 +1,4 @@
-.TH swfc "1" "January 2009" "swfc" "swftools"
+.TH swfc "1" "April 2009" "swfc" "swftools"
 .SH NAME
 swfc - compile .sc files to swf.
 
index d2c2ebb..350ecf6 100644 (file)
@@ -1,4 +1,4 @@
-.TH swfcombine "1" "January 2009" "swfcombine" "swftools"
+.TH swfcombine "1" "April 2009" "swfcombine" "swftools"
 .SH NAME
 swfcombine - a tool for combining swf (flash) files
 
index f89b2cf..0bde677 100644 (file)
@@ -1,4 +1,4 @@
-.TH swfdump "1" "January 2009" "swfdump" "swftools"
+.TH swfdump "1" "April 2009" "swfdump" "swftools"
 .SH NAME
 swfdump - Display an SWF file's content.
 
index e06b02c..c837680 100644 (file)
@@ -1,4 +1,4 @@
-.TH wav2swf "1" "January 2009" "wav2swf" "swftools"
+.TH wav2swf "1" "April 2009" "wav2swf" "swftools"
 .SH NAME
 wav2swf - convert a WAV file to an SWF animation.