diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 2001-06-11 07:49:15 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 2001-06-11 07:49:15 +0000 |
commit | e3dc9c7ad43521350854f6cfc892def6c853f938 (patch) | |
tree | 78d6ba34a9de5cfb6657bc7d06ab8616b28eab13 | |
parent | f7c20d1e66b328169b2a25edeede0115605e777a (diff) | |
parent | c4968b8c1fd33346b57653dcfcc0f9a34387a828 (diff) | |
download | perl-e3dc9c7ad43521350854f6cfc892def6c853f938.tar.gz |
Integrate mainline
p4raw-id: //depot/perlio@10509
-rw-r--r-- | Makefile.SH | 5 | ||||
-rw-r--r-- | embed.h | 16 | ||||
-rwxr-xr-x | embed.pl | 4 | ||||
-rw-r--r-- | global.sym | 2 | ||||
-rw-r--r-- | lib/ExtUtils/Constant.pm | 33 | ||||
-rw-r--r-- | lib/ExtUtils/Manifest.pm | 2 | ||||
-rw-r--r-- | objXSUB.h | 8 | ||||
-rw-r--r-- | perl.h | 10 | ||||
-rw-r--r-- | perlapi.c | 16 | ||||
-rw-r--r-- | perly.c | 2617 | ||||
-rwxr-xr-x | perly.fixer | 15 | ||||
-rw-r--r-- | perly.y | 271 | ||||
-rw-r--r-- | perly_c.diff | 622 | ||||
-rw-r--r-- | pod/perl572delta.pod | 288 | ||||
-rw-r--r-- | pod/perlapi.pod | 44 | ||||
-rw-r--r-- | proto.h | 4 | ||||
-rw-r--r-- | sv.c | 189 | ||||
-rw-r--r-- | t/lib/extutils.t | 69 | ||||
-rw-r--r-- | util.c | 211 | ||||
-rw-r--r-- | vms/perly_c.vms | 2613 |
20 files changed, 3912 insertions, 3127 deletions
diff --git a/Makefile.SH b/Makefile.SH index 9ba53130c0..29f614280f 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -676,7 +676,10 @@ install.html: all installhtml # to run with precisely the same version of byacc as I use. You # normally shouldn't remake perly.[ch]. -run_byacc: FORCE +check_byacc: + @$(BYACC) -V 2>&1 | grep 'version 1\.8\.2' + +run_byacc: FORCE check_byacc $(BYACC) -d perly.y -chmod 664 perly.c perly.h sh $(shellflags) ./perly.fixer y.tab.c perly.c @@ -343,6 +343,8 @@ #define vload_module Perl_vload_module #define localize Perl_localize #define looks_like_number Perl_looks_like_number +#define grok_number Perl_grok_number +#define grok_numeric_radix Perl_grok_numeric_radix #define magic_clearenv Perl_magic_clearenv #define magic_clear_all_env Perl_magic_clear_all_env #define magic_clearpack Perl_magic_clearpack @@ -1114,8 +1116,6 @@ # if defined(USE_ITHREADS) #define gv_share S_gv_share # endif -#define grok_number S_grok_number -#define grok_numeric_radix S_grok_numeric_radix #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) #define check_uni S_check_uni @@ -1849,6 +1849,8 @@ #define vload_module(a,b,c,d) Perl_vload_module(aTHX_ a,b,c,d) #define localize(a,b) Perl_localize(aTHX_ a,b) #define looks_like_number(a) Perl_looks_like_number(aTHX_ a) +#define grok_number(a,b,c) Perl_grok_number(aTHX_ a,b,c) +#define grok_numeric_radix(a,b) Perl_grok_numeric_radix(aTHX_ a,b) #define magic_clearenv(a,b) Perl_magic_clearenv(aTHX_ a,b) #define magic_clear_all_env(a,b) Perl_magic_clear_all_env(aTHX_ a,b) #define magic_clearpack(a,b) Perl_magic_clearpack(aTHX_ a,b) @@ -2609,8 +2611,6 @@ # if defined(USE_ITHREADS) #define gv_share(a) S_gv_share(aTHX_ a) # endif -#define grok_number(a,b,c) S_grok_number(aTHX_ a,b,c) -#define grok_numeric_radix(a,b) S_grok_numeric_radix(aTHX_ a,b) #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) #define check_uni() S_check_uni(aTHX) @@ -3630,6 +3630,10 @@ #define localize Perl_localize #define Perl_looks_like_number CPerlObj::Perl_looks_like_number #define looks_like_number Perl_looks_like_number +#define Perl_grok_number CPerlObj::Perl_grok_number +#define grok_number Perl_grok_number +#define Perl_grok_numeric_radix CPerlObj::Perl_grok_numeric_radix +#define grok_numeric_radix Perl_grok_numeric_radix #define Perl_magic_clearenv CPerlObj::Perl_magic_clearenv #define magic_clearenv Perl_magic_clearenv #define Perl_magic_clear_all_env CPerlObj::Perl_magic_clear_all_env @@ -5083,10 +5087,6 @@ #define S_gv_share CPerlObj::S_gv_share #define gv_share S_gv_share # endif -#define S_grok_number CPerlObj::S_grok_number -#define grok_number S_grok_number -#define S_grok_numeric_radix CPerlObj::S_grok_numeric_radix -#define grok_numeric_radix S_grok_numeric_radix #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) #define S_check_uni CPerlObj::S_check_uni @@ -1682,6 +1682,8 @@ Apd |void |load_module|U32 flags|SV* name|SV* ver|... Ap |void |vload_module|U32 flags|SV* name|SV* ver|va_list* args p |OP* |localize |OP* arg|I32 lexical Apd |I32 |looks_like_number|SV* sv +Apd |int |grok_number |const char *pv|STRLEN len|UV *valuep +Apd |bool |grok_numeric_radix|const char **sp|const char *send p |int |magic_clearenv |SV* sv|MAGIC* mg p |int |magic_clear_all_env|SV* sv|MAGIC* mg p |int |magic_clearpack|SV* sv|MAGIC* mg @@ -2521,8 +2523,6 @@ s |I32 |expect_number |char** pattern # if defined(USE_ITHREADS) s |SV* |gv_share |SV *sv # endif -s |int |grok_number |const char *pv|STRLEN len|UV *valuep -s |bool |grok_numeric_radix|const char **sp|const char *send #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) diff --git a/global.sym b/global.sym index 14d9ef0376..ef481fa28b 100644 --- a/global.sym +++ b/global.sym @@ -211,6 +211,8 @@ Perl_op_null Perl_load_module Perl_vload_module Perl_looks_like_number +Perl_grok_number +Perl_grok_numeric_radix Perl_markstack_grow Perl_mess Perl_vmess diff --git a/lib/ExtUtils/Constant.pm b/lib/ExtUtils/Constant.pm index 4efccfe8db..25feacc5ff 100644 --- a/lib/ExtUtils/Constant.pm +++ b/lib/ExtUtils/Constant.pm @@ -55,6 +55,18 @@ NUL terminated string, length will be determined with C<strlen> A fixed length thing, given as a [pointer, length] pair. If you know the length of a string at compile time you may use this instead of I<PV> +=item YES + +Truth. (C<PL_sv_yes>) The value is not needed (and ignored). + +=item NO + +Defined Falsehood. (C<PL_sv_no>) The value is not needed (and ignored). + +=item UNDEF + +C<undef>. The value of the macro is not needed. + =back =head1 FUNCTIONS @@ -75,7 +87,7 @@ $Text::Wrap::huge = 'overflow'; $Text::Wrap::columns = 80; @ISA = 'Exporter'; -$VERSION = '0.03'; +$VERSION = '0.04'; %EXPORT_TAGS = ( 'all' => [ qw( XS_constant constant_types return_clause memEQ_clause C_stringify @@ -89,7 +101,10 @@ $VERSION = '0.03'; UV => 'PUSHu((UV)iv)', NV => 'PUSHn(nv)', PV => 'PUSHp(pv, strlen(pv))', - PVN => 'PUSHp(pv, iv)' + PVN => 'PUSHp(pv, iv)', + YES => 'PUSHs(&PL_sv_yes)', + NO => 'PUSHs(&PL_sv_no)', + UNDEF => '' # implicit undef ); %XS_TypeSet = ( @@ -97,7 +112,8 @@ $VERSION = '0.03'; UV => '*iv_return = (IV)', NV => '*nv_return =', PV => '*pv_return =', - PVN => ['*pv_return =', '*iv_return = (IV)'] + PVN => ['*pv_return =', '*iv_return = (IV)'], + YES => undef, NO => undef, UNDEF => undef ); @@ -116,6 +132,9 @@ sub C_stringify { s/([\"\'])/\\$1/g; # Grr. fix perl mode. s/\n/\\n/g; # Ensure newlines don't end up in octal s/\r/\\r/g; + s/\t/\\t/g; + s/\f/\\f/g; + s/\a/\\a/g; s/([[:cntrl:]])/sprintf "\\%03o", ord $1/ge; s/\177/\\177/g; # DEL doesn't seem to be a [:cntrl:] $_; @@ -201,16 +220,16 @@ I<VALUE>s for the components. sub assign { my $indent = shift; my $type = shift; - my $typeset = $XS_TypeSet{$type}; my $clause; - die "Can't generate code for type $type" unless defined $typeset; + die "Can't generate code for type $type" unless exists $XS_TypeSet{$type}; + my $typeset = $XS_TypeSet{$type}; if (ref $typeset) { die "Type $type is aggregate, but only single value given" if @_ == 1; foreach (0 .. $#$typeset) { $clause .= $indent . "$typeset->[$_] $_[$_];\n"; } - } else { + } elsif (defined $typeset) { die "Aggregate value given for type $type" if @_ > 1; $clause .= $indent . "$typeset $_[0];\n"; @@ -372,6 +391,8 @@ EOT # Ensure that the enclosing C comment doesn't end # by turning */ into *" . "/ $line =~ s!\*\/!\*" . "/!gs; + # gcc -Wall doesn't like finding /* inside a comment + $line =~ s!\/\*!/" . "\*!gs; $result .= $line; } } diff --git a/lib/ExtUtils/Manifest.pm b/lib/ExtUtils/Manifest.pm index 244214a765..4e38774ca3 100644 --- a/lib/ExtUtils/Manifest.pm +++ b/lib/ExtUtils/Manifest.pm @@ -121,7 +121,7 @@ sub _manicheck { } warn "Debug: manicheck checking from disk $file\n" if $Debug; unless ( exists $read->{$file} ) { - my $canon = "\t" . _unmacify($file) if $Is_MacOS; + my $canon = $Is_MacOS ? "\t" . _unmacify($file) : ''; warn "Not in $MANIFEST: $file$canon\n" unless $Quiet; push @missentry, $file; } @@ -811,6 +811,14 @@ #define Perl_looks_like_number pPerl->Perl_looks_like_number #undef looks_like_number #define looks_like_number Perl_looks_like_number +#undef Perl_grok_number +#define Perl_grok_number pPerl->Perl_grok_number +#undef grok_number +#define grok_number Perl_grok_number +#undef Perl_grok_numeric_radix +#define Perl_grok_numeric_radix pPerl->Perl_grok_numeric_radix +#undef grok_numeric_radix +#define grok_numeric_radix Perl_grok_numeric_radix #if defined(USE_THREADS) #endif #if defined(USE_LOCALE_COLLATE) @@ -3726,6 +3726,16 @@ int flock(int fd, int op); #define EXEC_ARGV_CAST(x) x #endif +#define IS_NUMBER_IN_UV 0x01 /* number within UV range (maybe not + int). value returned in pointed- + to UV */ +#define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 /* pointed to UV undefined */ +#define IS_NUMBER_NOT_INT 0x04 /* saw . or E notation */ +#define IS_NUMBER_NEG 0x08 /* leading minus sign */ +#define IS_NUMBER_INFINITY 0x10 /* this is big */ + +#define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) + /* and finally... */ #define PERL_PATCHLEVEL_H_IMPLICIT #include "patchlevel.h" @@ -1505,6 +1505,20 @@ Perl_looks_like_number(pTHXo_ SV* sv) { return ((CPerlObj*)pPerl)->Perl_looks_like_number(sv); } + +#undef Perl_grok_number +int +Perl_grok_number(pTHXo_ const char *pv, STRLEN len, UV *valuep) +{ + return ((CPerlObj*)pPerl)->Perl_grok_number(pv, len, valuep); +} + +#undef Perl_grok_numeric_radix +bool +Perl_grok_numeric_radix(pTHXo_ const char **sp, const char *send) +{ + return ((CPerlObj*)pPerl)->Perl_grok_numeric_radix(sp, send); +} #if defined(USE_THREADS) #endif #if defined(USE_LOCALE_COLLATE) @@ -1596,7 +1610,7 @@ Perl_mg_set(pTHXo_ SV* sv) } #undef Perl_mg_size -I32 +IV Perl_mg_size(pTHXo_ SV* sv) { return ((CPerlObj*)pPerl)->Perl_mg_size(sv); @@ -1,5 +1,5 @@ #ifndef lint -static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; +/* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */ #endif #define YYBYACC 1 #line 16 "perly.y" @@ -53,26 +53,26 @@ typedef union { #line 54 "perly.c" #define YYERRCODE 256 static short yylhs[] = { -1, - 50, 0, 8, 6, 9, 7, 10, 10, 10, 11, + 54, 0, 8, 6, 9, 7, 10, 10, 10, 11, 11, 11, 11, 24, 24, 24, 24, 24, 24, 24, 14, 14, 14, 13, 13, 42, 42, 12, 12, 12, 12, 12, 12, 12, 26, 26, 27, 27, 28, 29, - 30, 31, 32, 49, 49, 1, 1, 1, 1, 1, - 2, 38, 38, 46, 51, 3, 4, 5, 39, 40, - 40, 44, 44, 44, 45, 45, 41, 41, 52, 52, - 54, 53, 15, 15, 15, 25, 25, 25, 36, 36, - 36, 36, 36, 36, 36, 36, 55, 36, 37, 37, + 30, 31, 32, 53, 53, 1, 1, 1, 1, 1, + 2, 38, 38, 46, 55, 3, 4, 5, 39, 40, + 40, 44, 44, 44, 45, 45, 41, 41, 56, 56, + 58, 57, 15, 15, 15, 25, 25, 25, 36, 36, + 36, 36, 36, 36, 36, 36, 59, 36, 37, 37, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 17, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, + 50, 50, 51, 51, 51, 51, 51, 52, 52, 52, + 52, 52, 52, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 47, 47, 48, 48, 48, 48, 48, 33, 33, 34, - 34, 34, 43, 23, 18, 19, 20, 21, 22, 35, - 35, 35, 35, + 16, 16, 16, 16, 47, 47, 48, 48, 48, 48, + 48, 33, 33, 34, 34, 34, 43, 23, 18, 19, + 20, 21, 22, 35, 35, 35, 35, }; static short yylen[] = { 2, 0, 2, 4, 0, 4, 0, 0, 2, 2, 2, @@ -86,1045 +86,1076 @@ static short yylen[] = { 2, 6, 3, 3, 5, 2, 4, 0, 5, 1, 1, 5, 4, 5, 4, 5, 6, 5, 4, 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 5, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 3, 2, 3, 2, - 4, 3, 5, 1, 1, 1, 1, 1, 1, 6, - 5, 4, 5, 1, 1, 3, 4, 3, 2, 2, - 4, 5, 4, 5, 1, 2, 2, 1, 2, 2, - 2, 1, 3, 1, 3, 4, 4, 6, 1, 1, - 3, 2, 3, 2, 1, 1, 1, 0, 1, 0, - 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, - 1, 1, 1, + 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 4, 3, 5, 2, 2, 4, + 5, 4, 5, 1, 1, 1, 1, 5, 2, 1, + 2, 3, 2, 1, 1, 1, 1, 1, 1, 6, + 5, 4, 5, 1, 1, 3, 4, 3, 1, 2, + 2, 1, 2, 2, 2, 1, 3, 1, 3, 4, + 4, 6, 1, 1, 3, 2, 3, 2, 1, 1, + 1, 0, 1, 0, 1, 2, 1, 2, 2, 2, + 2, 2, 2, 1, 1, 1, 1, }; static short yydefred[] = { 1, 0, 7, 0, 45, 58, 56, 0, 56, 56, 8, 46, 9, 11, 48, 0, 47, 49, 50, 0, 0, - 0, 70, 71, 0, 14, 4, 169, 0, 0, 144, - 0, 164, 0, 57, 57, 0, 0, 0, 0, 0, + 0, 70, 71, 0, 14, 4, 173, 0, 0, 154, + 0, 168, 0, 57, 57, 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, 12, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 0, 0, 0, 136, 138, 0, 0, 0, - 0, 170, 125, 52, 0, 59, 0, 69, 0, 0, - 7, 190, 193, 192, 191, 0, 0, 0, 0, 0, - 0, 4, 4, 4, 4, 4, 4, 0, 0, 0, - 0, 0, 159, 0, 0, 0, 0, 85, 0, 188, - 0, 150, 0, 0, 0, 0, 0, 0, 0, 175, - 177, 176, 0, 184, 0, 0, 0, 0, 0, 0, - 0, 0, 130, 0, 0, 0, 185, 186, 187, 189, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 146, 148, 0, 0, 0, + 0, 174, 140, 134, 135, 136, 137, 52, 0, 59, + 0, 69, 0, 0, 7, 194, 197, 196, 195, 0, + 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, + 4, 0, 0, 0, 0, 0, 163, 0, 0, 0, + 0, 85, 0, 192, 0, 129, 0, 0, 0, 0, + 0, 0, 0, 179, 181, 180, 0, 188, 0, 0, + 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, + 189, 190, 191, 193, 0, 34, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 120, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 51, 61, 0, 0, 0, 0, 83, 0, 0, + 87, 0, 0, 0, 0, 0, 0, 0, 4, 167, + 169, 0, 0, 0, 0, 0, 0, 0, 126, 0, + 158, 178, 0, 0, 175, 0, 0, 123, 27, 0, + 0, 19, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 121, 122, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 51, 61, 0, - 0, 0, 0, 83, 0, 0, 87, 0, 0, 0, - 0, 0, 0, 0, 4, 163, 165, 0, 0, 0, - 0, 0, 0, 0, 132, 0, 148, 174, 0, 0, - 171, 0, 0, 129, 27, 0, 0, 19, 0, 0, - 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, - 0, 90, 0, 0, 101, 0, 0, 0, 0, 0, - 0, 0, 146, 0, 0, 0, 0, 0, 0, 3, - 0, 0, 167, 0, 0, 0, 42, 0, 43, 0, - 0, 0, 0, 183, 0, 0, 36, 41, 0, 0, - 0, 166, 182, 86, 0, 151, 0, 153, 0, 131, - 173, 65, 0, 0, 0, 0, 98, 0, 0, 0, - 0, 100, 94, 0, 92, 0, 142, 0, 147, 63, - 68, 67, 55, 0, 54, 84, 0, 88, 133, 0, - 0, 0, 0, 0, 0, 0, 0, 80, 152, 154, - 141, 0, 0, 0, 99, 93, 0, 97, 95, 143, - 91, 72, 168, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 140, 96, 81, 7, 28, 29, 0, 0, - 24, 25, 0, 32, 0, 0, 0, 22, 0, 0, - 0, 31, 5, 0, 30, 0, 0, 33, 0, 23, + 0, 0, 89, 0, 0, 90, 0, 0, 101, 0, + 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 171, 0, 0, 0, + 42, 0, 43, 0, 0, 0, 0, 187, 0, 0, + 36, 41, 0, 0, 0, 170, 186, 86, 0, 130, + 0, 132, 0, 125, 177, 65, 0, 0, 0, 0, + 98, 0, 0, 0, 0, 100, 94, 0, 92, 0, + 152, 0, 157, 63, 68, 67, 55, 0, 54, 84, + 0, 88, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 80, 131, 133, 151, 0, 0, 0, 99, 93, + 0, 97, 95, 153, 91, 72, 172, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 150, 96, 81, 7, + 28, 29, 0, 0, 24, 25, 0, 32, 0, 0, + 0, 22, 0, 0, 0, 31, 5, 0, 30, 0, + 0, 33, 0, 23, }; static short yydgoto[] = { 1, - 10, 11, 20, 100, 19, 91, 366, 94, 355, 3, - 12, 13, 70, 371, 281, 72, 73, 74, 75, 76, - 77, 78, 79, 287, 81, 288, 277, 279, 282, 290, - 278, 280, 118, 210, 96, 82, 253, 85, 87, 190, - 323, 152, 285, 267, 221, 14, 83, 133, 15, 2, - 16, 17, 18, 89, 274, + 10, 11, 20, 104, 19, 95, 370, 98, 359, 3, + 12, 13, 70, 375, 285, 72, 73, 74, 75, 76, + 77, 78, 79, 291, 81, 292, 281, 283, 286, 294, + 282, 284, 122, 214, 100, 82, 257, 89, 91, 194, + 327, 156, 289, 271, 225, 14, 83, 137, 84, 85, + 86, 87, 15, 2, 16, 17, 18, 93, 278, }; static short yysindex[] = { 0, - 0, 0, -199, 0, 0, 0, -53, 0, 0, 0, - 0, 0, 0, 0, 646, 0, 0, 0, -217, -207, - 44, 0, 0, -207, 0, 0, 0, -32, -32, 0, - 66, 0, 2177, 0, 0, 69, 83, 93, 110, -35, - 2177, 119, 121, 136, 1013, 973, -32, 1077, 1344, -146, - 2177, 68, -32, 2177, 2177, 2177, 2177, 2177, 2177, 1384, - 1424, 0, 2177, 2177, -32, -32, -32, -32, -152, 0, - 470, 845, -13, -65, -63, 0, 0, 55, 137, 122, - 138, 0, 0, 0, 60, 0, -70, 0, -66, -70, - 0, 0, 0, 0, 0, 2177, 146, 2177, 1085, 60, - -70, 0, 0, 0, 0, 0, 0, 152, 845, 153, - 1464, 973, 0, 1085, 0, -65, 138, 0, 2177, 0, - 160, 0, 1085, 2, 76, -52, 2177, 1085, 1524, 0, - 0, 0, -96, 0, 138, -181, -181, -181, -112, -112, - 123, -38, 0, -74, -181, -181, 0, 0, 0, 0, - 60, 0, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, - 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, - 2177, 2177, 2177, 0, 0, -16, 2177, 1731, 2177, 2177, - 2177, 2177, 2177, 2177, 1791, 0, 2177, 0, 0, -88, - -34, -88, 339, 0, 2177, 287, 0, -88, 2177, 2177, - 2177, 2177, 173, 1850, 0, 0, 0, -33, 46, 180, - 2177, 138, 1910, 2025, 0, 97, 0, 0, -31, -29, - 0, 2177, 133, 0, 0, -237, -237, 0, -237, -237, - -237, -69, 0, 1614, 1085, 684, 167, 107, 845, 3800, - 1125, 405, 1164, 778, -228, -181, -181, 2177, 0, 2117, - 2177, 0, 197, -48, 0, -9, -72, -45, -7, -42, - 56, -36, 0, -4, 845, -10, -47, 2177, -47, 0, - 216, 2177, 0, 2177, 60, -237, 0, 219, 0, 230, - -237, 233, 237, 0, 242, 470, 0, 0, 246, 225, - 2177, 0, 0, 0, 13, 0, 18, 0, 29, 0, - 0, 0, 61, 2177, 2177, 54, 0, 32, 63, 2177, - 165, 0, 0, 174, 0, 178, 0, 191, 0, 0, - 0, 0, 0, 261, 0, 0, 350, 0, 0, 182, - 182, 182, 182, 2177, 182, 2177, 281, 0, 0, 0, - 0, 102, 1237, 202, 0, 0, 294, 0, 0, 0, - 0, 0, 0, 0, -152, -152, -130, -130, 297, -152, - 290, 182, 0, 0, 0, 0, 0, 0, 182, 318, - 0, 0, 182, 0, 1850, -152, 407, 0, 2177, -152, - 324, 0, 0, 326, 0, 182, 182, 0, -130, 0, + 0, 0, -132, 0, 0, 0, -51, 0, 0, 0, + 0, 0, 0, 0, 650, 0, 0, 0, -239, -215, + 5, 0, 0, -215, 0, 0, 0, -31, -31, 0, + -24, 0, 2181, 0, 0, 11, 16, 32, 46, -34, + 2181, 49, 72, 76, 1017, 977, -31, 1081, 1348, -134, + 2181, 85, -31, 2181, 2181, 2181, 2181, 2181, 2181, 1388, + 1428, 0, 2181, 2181, -31, -31, -31, -31, -150, 0, + 337, 849, -13, -58, -48, 0, 0, 8, 97, 92, + 116, 0, 0, 0, 0, 0, 0, 0, 52, 0, + -97, 0, -75, -97, 0, 0, 0, 0, 0, 2181, + 146, 2181, 395, 52, -97, 0, 0, 0, 0, 0, + 0, 150, 849, 153, 1468, 977, 0, 395, 0, -58, + 116, 0, 2181, 0, 157, 0, 395, -8, 83, -52, + 2181, 395, 1528, 0, 0, 0, -89, 0, 116, 107, + 107, 107, -104, -104, 123, -37, 0, -73, 107, 107, + 0, 0, 0, 0, 52, 0, 2181, 2181, 2181, 2181, + 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + 2181, 2181, 2181, 2181, 2181, 2181, 2181, 0, 0, -12, + 2181, 1735, 2181, 2181, 2181, 2181, 2181, 2181, 1795, 0, + 2181, 0, 0, -64, -32, -64, 411, 0, 2181, 291, + 0, -64, 2181, 2181, 2181, 2181, 187, 1854, 0, 0, + 0, -29, 58, 189, 2181, 116, 1914, 2029, 0, 111, + 0, 0, -26, -19, 0, 2181, 165, 0, 0, -241, + -241, 0, -241, -241, -241, -40, 0, 1618, 395, 1306, + 185, 168, 849, 1235, 1129, 1169, 1268, 782, 235, 107, + 107, 2181, 0, 2121, 2181, 0, 218, -46, 0, -3, + -68, 61, 106, 65, 108, 68, 0, 17, 849, 26, + -30, 2181, -30, 0, 236, 2181, 0, 2181, 52, -241, + 0, 250, 0, 255, -241, 259, 260, 0, 248, 337, + 0, 0, 262, 261, 2181, 0, 0, 0, 22, 0, + 33, 0, 36, 0, 0, 0, 125, 2181, 2181, 71, + 0, 50, 127, 2181, 182, 0, 0, 184, 0, 199, + 0, 201, 0, 0, 0, 0, 0, 272, 0, 0, + 354, 0, 0, 216, 216, 216, 216, 2181, 216, 2181, + 301, 0, 0, 0, 0, 167, 2418, 228, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, -150, -150, + -123, -123, 322, -150, 308, 216, 0, 0, 0, 0, + 0, 0, 216, 334, 0, 0, 216, 0, 1854, -150, + 449, 0, 2181, -150, 340, 0, 0, 355, 0, 216, + 216, 0, -123, 0, }; static short yyrindex[] = { 0, - 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, + 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 451, 0, 0, 2208, 2271, 0, 0, 0, 0, + 40, 455, 0, 0, 2367, 2469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, - -12, 939, 2325, 2385, 2463, 0, 0, 2510, 2561, 0, - 1220, 0, 0, 0, 0, 0, -44, 0, 0, -44, - 0, 0, 0, 0, 0, 2271, 0, 0, 3846, 0, - -105, 0, 0, 0, 0, 0, 0, 0, 2612, 0, - 0, 327, 0, 3883, 522, 583, 3032, 0, 0, 0, - 2621, 0, 3893, 2385, 0, 0, 2271, 3930, 0, 0, - 0, 0, 2667, 0, 3092, 3374, 3418, 3458, 3219, 3331, - 2746, 0, 0, 0, 3496, 3567, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, + 3, 943, 2515, 2603, 2653, 0, 0, 2708, 2754, 0, + -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -33, 0, 0, -33, 0, 0, 0, 0, 0, 2469, + 0, 0, 3919, 0, -102, 0, 0, 0, 0, 0, + 0, 0, 3216, 0, 0, 359, 0, 3955, 526, 587, + 2276, 0, 0, 0, 2801, 0, 3999, 2603, 0, 0, + 2469, 4043, 0, 0, 0, 0, 2858, 0, 3225, 3461, + 3527, 3588, 3352, 3399, 2908, 0, 0, 0, 3635, 3680, 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, 0, 0, 0, 0, 2797, 0, 0, -23, - 0, -23, 913, 0, 327, 0, 0, 247, 336, 0, - 0, 0, 0, 333, 0, 0, 0, 0, 352, 0, - 0, 3138, 0, 0, 0, 0, 0, 0, 0, 2857, - 0, 0, 2903, 0, 0, -8, -2, 0, 7, 33, - 42, 2255, 0, -28, 3968, 1822, 3732, 3769, 3023, 0, - 4119, 4082, 4021, 4005, 1044, 3610, 3694, 0, 0, 0, - 0, 0, 2949, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3657, -21, 0, 345, 0, 0, - 0, 0, 0, 2271, 0, 71, 0, 0, 0, 0, - 364, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, + 2990, 0, 0, -28, 0, -28, 917, 0, 359, 0, + 0, 295, 379, 0, 0, 0, 0, 370, 0, 0, + 0, 0, 390, 0, 0, 3291, 0, 0, 0, 0, + 0, 0, 0, 3056, 0, 0, 3113, 0, 0, 14, + 35, 0, 55, 91, 117, 1991, 0, 4235, 4090, 1826, + 3807, 3871, 3283, 0, -22, 4191, 4155, 4145, 1048, 3719, + 3763, 0, 0, 0, 0, 0, 3163, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4267, -10, + 0, 375, 0, 0, 0, 0, 0, 2469, 0, 136, + 0, 0, 0, 0, 400, 0, 0, 0, 0, 139, 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, 355, 0, 0, 0, 0, - 0, 0, 2972, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 115, 115, 175, 175, 0, 115, + 0, 0, 0, 359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 374, 115, 913, 0, 0, 115, - 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, + 0, 0, 0, 0, 0, 0, 4080, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, + 179, 179, 0, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 415, 119, + 917, 0, 0, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 179, 0, }; static short yygindex[] = { 0, - 0, 0, 164, 383, 0, 14, 0, 37, 655, -89, - 0, 0, 0, -336, -15, 3415, 0, 2211, 368, 369, - 0, 0, 0, 410, 916, 0, 0, 273, -163, 62, - 94, 249, -71, -186, 634, 0, 0, 0, 428, -46, - 184, 118, 0, -149, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, + 0, 0, 196, 425, 0, -2, 0, 37, 634, -94, + 0, 0, 0, -323, -15, 2445, 0, 999, 414, 417, + 0, 0, 0, 463, -43, 0, 0, 321, -198, 103, + 147, 280, -91, -185, 1, 0, 0, 0, 464, -44, + 222, 338, 0, -179, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -#define YYTABLESIZE 4423 +#define YYTABLESIZE 4568 static short yytable[] = { 71, - 65, 193, 223, 65, 107, 22, 216, 292, 271, 301, - 311, 321, 111, 314, 60, 111, 316, 60, 224, 65, - 313, 372, 318, 250, 194, 181, 178, 183, 15, 111, - 111, 312, 18, 126, 111, 62, 319, 64, 39, 84, - 289, 214, 269, 192, 142, 144, 15, 16, 275, 86, - 18, 69, 390, 338, 198, 217, 39, 180, 339, 182, - 163, 164, 158, 159, 111, 16, 4, 5, 6, 340, - 7, 8, 345, 17, 251, 26, 155, 179, 60, 155, - 172, 113, 20, 173, 122, 315, 174, 175, 176, 293, - 26, 17, 181, 155, 155, 208, 209, 9, 155, 62, - 20, 64, 88, 65, 67, 98, 248, 129, 102, 177, - 127, 38, 344, 219, 26, 199, 200, 201, 202, 203, - 204, 188, 103, 347, 180, 151, 40, 337, 155, 38, - 173, 66, 104, 174, 175, 176, 197, 226, 227, 229, - 230, 231, 232, 233, 15, 369, 370, 26, 317, 105, - 26, 26, 26, 341, 26, 346, 26, 26, 110, 26, - 111, 254, 256, 257, 258, 259, 260, 261, 262, 264, - 359, 23, 24, 26, 21, 112, 185, 184, 26, 209, - 186, 187, 26, 276, 227, 195, 227, 225, 286, 189, - 191, 205, 60, 206, 363, 295, 324, 297, 299, 213, - 215, 220, 328, 21, 176, 26, 303, 21, 65, 266, - 21, 21, 21, 222, 21, 384, 21, 21, 291, 21, - 294, 300, 268, 304, 92, 158, 159, 158, 159, 93, - 302, 159, 306, 21, 308, 309, 310, 26, 21, 26, - 26, 249, 2, 111, 111, 111, 111, 158, 159, 320, - 111, 158, 159, 60, 158, 159, 326, 158, 159, 330, - 106, 158, 159, 158, 159, 21, 158, 159, 158, 159, - 331, 111, 111, 332, 111, 44, 377, 333, 44, 44, - 44, 334, 44, 336, 44, 44, 335, 44, 342, 348, - 158, 159, 158, 159, 209, 158, 159, 21, 349, 21, - 21, 44, 350, 322, 354, 322, 44, 155, 155, 155, - 155, 329, 158, 159, 155, 351, 155, 158, 159, 352, - 276, 362, 155, 155, 155, 155, 364, 273, 158, 159, - 272, 158, 159, 44, 365, 155, 155, 373, 155, 155, - 155, 155, 155, 155, 155, 158, 159, 155, 375, 166, - 155, 155, 155, 158, 159, 158, 159, 379, 53, 71, - 158, 159, 158, 159, 386, 44, 387, 180, 44, 62, - 26, 26, 26, 26, 26, 26, 37, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 353, 35, 181, 26, 26, 163, 26, 26, 26, 26, - 26, 158, 159, 178, 40, 26, 26, 26, 26, 26, - 26, 26, 166, 37, 35, 172, 26, 101, 173, 131, - 132, 174, 175, 176, 80, 26, 228, 26, 26, 361, - 21, 21, 21, 21, 21, 21, 381, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 283, 90, 325, 21, 21, 0, 21, 21, 21, 21, - 21, 0, 0, 270, 0, 21, 21, 21, 21, 21, - 21, 21, 367, 368, 0, 172, 21, 374, 173, 0, - 0, 174, 175, 176, 0, 21, 0, 21, 21, 0, - 0, 162, 0, 382, 162, 0, 0, 385, 44, 44, - 44, 44, 44, 44, 0, 44, 44, 44, 162, 162, - 0, 44, 0, 162, 44, 44, 44, 44, 0, 0, - 0, 44, 44, 0, 44, 44, 44, 44, 44, 0, - 0, 383, 0, 44, 44, 44, 44, 44, 44, 0, - 0, 0, 0, 162, 44, 0, 0, 0, 0, 0, - 0, 0, 0, 44, 190, 44, 44, 190, 190, 190, - 0, 190, 169, 190, 190, 169, 190, 160, 0, 0, - 0, 0, 0, 161, 162, 163, 164, 0, 0, 169, - 169, 0, 0, 0, 169, 190, 0, 0, 0, 165, - 167, 168, 169, 170, 171, 172, 0, 0, 173, 0, - 0, 174, 175, 176, 4, 5, 6, 0, 7, 8, - 0, 0, 190, 0, 169, 191, 0, 0, 191, 191, - 191, 0, 191, 134, 191, 191, 134, 191, 0, 0, - 160, 0, 0, 0, 0, 9, 161, 162, 163, 164, - 134, 134, 0, 0, 0, 134, 191, 190, 0, 0, - 0, 0, 165, 167, 168, 169, 170, 171, 172, 0, - 0, 173, 97, 0, 174, 175, 176, 0, 0, 0, - 0, 0, 4, 5, 6, 134, 7, 8, 55, 119, - 120, 65, 67, 53, 0, 60, 134, 68, 64, 0, - 63, 161, 162, 163, 164, 0, 0, 0, 147, 148, - 149, 150, 0, 9, 62, 0, 0, 0, 191, 66, - 169, 170, 171, 172, 0, 0, 173, 0, 0, 174, - 175, 176, 162, 162, 162, 162, 0, 0, 0, 162, - 0, 162, 0, 0, 0, 0, 61, 162, 162, 162, - 162, 153, 154, 155, 156, 211, 0, 0, 157, 0, - 162, 162, 0, 162, 162, 162, 162, 162, 162, 162, - 0, 0, 162, 0, 0, 162, 162, 162, 26, 158, - 159, 56, 0, 0, 0, 0, 0, 0, 190, 190, - 190, 190, 190, 0, 190, 190, 190, 0, 0, 0, - 190, 0, 0, 169, 169, 169, 169, 0, 0, 0, - 169, 190, 169, 190, 190, 190, 190, 190, 169, 169, - 169, 169, 190, 190, 190, 190, 190, 190, 0, 0, - 0, 169, 169, 190, 169, 169, 169, 169, 169, 169, - 169, 0, 190, 169, 190, 190, 169, 169, 169, 191, - 191, 191, 191, 191, 0, 191, 191, 191, 0, 0, - 0, 191, 0, 0, 134, 134, 134, 134, 0, 0, - 0, 134, 191, 134, 191, 191, 191, 191, 191, 134, - 134, 134, 134, 191, 191, 191, 191, 191, 191, 0, - 0, 0, 134, 134, 191, 134, 134, 134, 134, 134, - 134, 134, 0, 191, 134, 191, 191, 134, 134, 134, - 0, 25, 27, 28, 29, 30, 31, 166, 32, 33, - 34, 0, 0, 0, 35, 0, 0, 36, 37, 38, - 39, 0, 0, 0, 40, 41, 0, 42, 43, 44, - 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, - 51, 52, 0, 0, 0, 44, 0, 54, 44, 44, - 44, 0, 44, 0, 44, 44, 57, 44, 58, 59, - 0, 117, 0, 0, 0, 0, 0, 0, 0, 135, - 161, 44, 163, 164, 0, 0, 44, 0, 0, 78, - 0, 0, 78, 0, 0, 356, 357, 358, 0, 360, - 0, 171, 172, 0, 0, 173, 78, 78, 174, 175, - 176, 0, 0, 44, 0, 55, 0, 0, 65, 67, - 53, 117, 60, 0, 68, 64, 376, 63, 0, 0, - 0, 0, 0, 378, 0, 0, 0, 380, 0, 0, - 0, 78, 0, 0, 212, 44, 66, 0, 44, 0, - 388, 389, 117, 0, 0, 55, 0, 0, 65, 67, - 53, 0, 60, 0, 68, 64, 0, 63, 0, 0, - 0, 0, 0, 61, 161, 162, 163, 164, 0, 0, - 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, - 0, 0, 0, 0, 106, 171, 172, 106, 0, 173, - 0, 0, 174, 175, 176, 26, 0, 0, 56, 0, - 0, 106, 106, 61, 0, 0, 106, 0, 0, 55, - 0, 0, 65, 67, 53, 0, 60, 0, 68, 64, - 0, 63, 0, 0, 0, 160, 0, 0, 0, 0, - 0, 161, 162, 163, 164, 26, 106, 0, 56, 0, - 66, 0, 0, 0, 0, 0, 0, 165, 167, 168, - 169, 170, 171, 172, 0, 0, 173, 0, 0, 174, - 175, 176, 0, 0, 0, 0, 0, 61, 44, 44, - 44, 44, 44, 44, 0, 44, 44, 44, 0, 0, - 0, 44, 0, 117, 44, 44, 44, 44, 0, 117, - 0, 44, 44, 0, 44, 44, 44, 44, 44, 26, - 0, 0, 56, 44, 44, 44, 44, 44, 44, 0, - 78, 78, 78, 78, 44, 0, 0, 78, 0, 0, - 0, 0, 0, 44, 0, 44, 44, 0, 0, 115, - 28, 29, 30, 31, 93, 32, 33, 34, 78, 78, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 41, 0, 42, 43, 44, 45, 46, 0, - 75, 0, 0, 47, 48, 49, 50, 51, 52, 27, - 28, 29, 30, 31, 54, 32, 33, 34, 75, 0, - 0, 35, 0, 57, 0, 58, 59, 0, 0, 0, - 0, 0, 41, 0, 42, 43, 44, 45, 46, 166, - 0, 0, 0, 47, 48, 49, 50, 51, 52, 0, - 0, 0, 75, 0, 54, 106, 106, 106, 106, 0, - 0, 0, 106, 57, 106, 58, 59, 0, 0, 0, - 106, 106, 0, 121, 28, 29, 30, 31, 0, 32, - 33, 34, 0, 106, 106, 35, 106, 106, 106, 106, - 106, 106, 0, 0, 0, 0, 41, 0, 42, 43, + 197, 65, 121, 227, 65, 111, 220, 22, 198, 293, + 139, 296, 315, 275, 305, 102, 273, 88, 113, 228, + 60, 113, 279, 65, 317, 60, 182, 254, 325, 101, + 62, 218, 185, 130, 75, 113, 113, 316, 376, 221, + 113, 90, 187, 15, 146, 148, 123, 124, 64, 196, + 106, 69, 75, 138, 18, 107, 121, 323, 162, 163, + 202, 15, 342, 92, 184, 151, 152, 153, 154, 394, + 113, 108, 18, 343, 186, 39, 344, 183, 255, 216, + 159, 117, 185, 159, 126, 109, 75, 121, 114, 60, + 349, 26, 26, 39, 62, 16, 341, 159, 159, 212, + 213, 297, 159, 203, 204, 205, 206, 207, 208, 181, + 252, 115, 64, 16, 184, 116, 215, 223, 26, 318, + 65, 67, 131, 320, 133, 192, 322, 155, 351, 348, + 188, 17, 159, 4, 5, 6, 189, 7, 8, 363, + 201, 230, 231, 233, 234, 235, 236, 237, 66, 17, + 190, 26, 373, 374, 26, 26, 26, 20, 26, 191, + 26, 26, 193, 26, 9, 258, 260, 261, 262, 263, + 264, 265, 266, 268, 26, 20, 38, 26, 21, 40, + 328, 195, 26, 213, 388, 199, 332, 280, 231, 209, + 231, 229, 290, 210, 38, 60, 217, 15, 319, 299, + 321, 301, 303, 23, 24, 21, 295, 219, 224, 26, + 307, 21, 180, 226, 21, 21, 21, 345, 21, 350, + 21, 21, 65, 21, 272, 96, 162, 163, 121, 298, + 97, 162, 163, 270, 121, 304, 310, 21, 312, 313, + 306, 26, 21, 26, 26, 253, 2, 162, 163, 113, + 113, 113, 113, 162, 163, 308, 113, 314, 113, 367, + 163, 110, 162, 163, 60, 75, 75, 75, 75, 21, + 162, 163, 75, 162, 163, 381, 330, 113, 113, 44, + 113, 113, 44, 44, 44, 324, 44, 338, 44, 44, + 334, 44, 346, 75, 75, 335, 162, 163, 213, 336, + 337, 21, 339, 21, 21, 44, 352, 326, 353, 326, + 44, 159, 159, 159, 159, 333, 162, 163, 159, 340, + 159, 162, 163, 354, 280, 355, 159, 159, 159, 159, + 356, 277, 162, 163, 276, 162, 163, 44, 358, 159, + 159, 366, 159, 159, 159, 159, 159, 159, 159, 162, + 163, 159, 368, 170, 159, 159, 159, 162, 163, 369, + 162, 163, 377, 71, 162, 163, 379, 162, 163, 44, + 162, 163, 44, 383, 26, 26, 26, 26, 26, 26, + 390, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 357, 391, 53, 26, 26, 184, + 26, 26, 26, 26, 26, 162, 163, 162, 163, 26, + 26, 26, 26, 26, 26, 26, 170, 62, 177, 37, + 26, 178, 179, 180, 162, 163, 162, 163, 35, 26, + 185, 26, 26, 182, 21, 21, 21, 21, 21, 21, + 40, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 37, 35, 167, 21, 21, 105, + 21, 21, 21, 21, 21, 135, 162, 163, 136, 21, + 21, 21, 21, 21, 21, 21, 176, 80, 232, 177, + 21, 385, 178, 179, 180, 287, 365, 94, 0, 21, + 0, 21, 21, 176, 329, 166, 177, 0, 166, 178, + 179, 180, 44, 44, 44, 44, 44, 44, 0, 44, + 44, 44, 166, 166, 0, 44, 0, 166, 44, 44, + 44, 44, 0, 167, 168, 44, 44, 0, 44, 44, + 44, 44, 44, 0, 0, 274, 0, 44, 44, 44, + 44, 44, 44, 176, 0, 0, 177, 166, 44, 178, + 179, 180, 0, 0, 0, 0, 0, 44, 194, 44, + 44, 194, 194, 194, 0, 194, 173, 194, 194, 173, + 194, 164, 0, 387, 0, 0, 0, 165, 166, 167, + 168, 0, 0, 173, 173, 0, 0, 0, 173, 194, + 0, 0, 0, 169, 171, 172, 173, 174, 175, 176, + 0, 0, 177, 0, 0, 178, 179, 180, 157, 158, + 159, 160, 0, 0, 0, 161, 194, 0, 173, 195, + 0, 0, 195, 195, 195, 0, 195, 144, 195, 195, + 144, 195, 0, 0, 164, 0, 162, 163, 0, 0, + 165, 166, 167, 168, 144, 144, 0, 0, 0, 144, + 195, 194, 0, 0, 0, 0, 169, 171, 172, 173, + 174, 175, 176, 0, 0, 177, 0, 0, 178, 179, + 180, 0, 0, 0, 0, 0, 4, 5, 6, 144, + 7, 8, 55, 167, 168, 65, 67, 53, 0, 60, + 0, 68, 64, 0, 63, 0, 371, 372, 0, 0, + 0, 378, 175, 176, 0, 0, 177, 9, 62, 178, + 179, 180, 195, 66, 4, 5, 6, 386, 7, 8, + 0, 389, 0, 0, 0, 0, 166, 166, 166, 166, + 0, 0, 0, 166, 0, 166, 0, 0, 0, 0, + 61, 166, 166, 166, 166, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 166, 166, 0, 166, 166, 166, + 166, 166, 166, 166, 0, 0, 166, 0, 0, 166, + 166, 166, 26, 0, 0, 56, 0, 0, 0, 0, + 0, 0, 194, 194, 194, 194, 194, 0, 194, 194, + 194, 0, 0, 0, 194, 0, 0, 173, 173, 173, + 173, 0, 0, 0, 173, 194, 173, 194, 194, 194, + 194, 194, 173, 173, 173, 173, 194, 194, 194, 194, + 194, 194, 0, 0, 0, 173, 173, 194, 173, 173, + 173, 173, 173, 173, 173, 0, 194, 173, 194, 194, + 173, 173, 173, 195, 195, 195, 195, 195, 0, 195, + 195, 195, 0, 0, 0, 195, 0, 0, 144, 144, + 144, 144, 0, 0, 0, 144, 195, 144, 195, 195, + 195, 195, 195, 144, 144, 144, 144, 195, 195, 195, + 195, 195, 195, 0, 0, 0, 144, 144, 195, 144, + 144, 144, 144, 144, 144, 144, 0, 195, 144, 195, + 195, 144, 144, 144, 0, 25, 27, 28, 29, 30, + 31, 170, 32, 33, 34, 0, 0, 0, 35, 0, + 0, 36, 37, 38, 39, 0, 0, 0, 40, 41, + 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, + 47, 48, 49, 50, 51, 52, 0, 0, 0, 44, + 0, 54, 44, 44, 44, 0, 44, 0, 44, 44, + 57, 44, 58, 59, 0, 0, 0, 0, 360, 361, + 362, 0, 364, 0, 0, 44, 0, 0, 0, 0, + 44, 0, 0, 78, 0, 0, 78, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, + 78, 78, 0, 0, 0, 0, 382, 44, 0, 55, + 384, 0, 65, 67, 53, 0, 60, 0, 68, 64, + 0, 63, 0, 392, 393, 0, 99, 99, 0, 0, + 0, 0, 0, 0, 0, 78, 0, 0, 112, 44, + 66, 0, 44, 0, 120, 99, 128, 0, 0, 55, + 134, 99, 65, 67, 53, 0, 60, 0, 68, 64, + 0, 63, 0, 99, 99, 99, 99, 61, 165, 166, + 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 0, 0, 0, 0, 0, 0, 0, 106, 175, + 176, 106, 0, 177, 0, 0, 178, 179, 180, 26, + 0, 0, 56, 0, 0, 106, 106, 61, 0, 0, + 106, 0, 0, 55, 120, 0, 65, 67, 53, 0, + 60, 0, 68, 64, 0, 63, 0, 0, 0, 164, + 0, 0, 0, 0, 0, 165, 166, 167, 168, 26, + 106, 0, 56, 0, 66, 0, 0, 0, 0, 0, + 0, 169, 171, 172, 173, 174, 175, 176, 0, 0, + 177, 0, 0, 178, 179, 180, 0, 0, 0, 0, + 0, 61, 44, 44, 44, 44, 44, 44, 256, 44, + 44, 44, 0, 0, 0, 44, 0, 0, 44, 44, + 44, 44, 0, 0, 0, 44, 44, 0, 44, 44, + 44, 44, 44, 26, 0, 288, 56, 44, 44, 44, + 44, 44, 44, 0, 78, 78, 78, 78, 44, 0, + 0, 78, 0, 0, 0, 0, 0, 44, 0, 44, + 44, 0, 0, 119, 28, 29, 30, 31, 97, 32, + 33, 34, 78, 78, 0, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, - 50, 51, 52, 163, 164, 0, 55, 0, 54, 65, - 67, 53, 0, 60, 0, 68, 64, 57, 63, 58, - 59, 0, 171, 172, 0, 0, 173, 0, 0, 174, - 175, 176, 125, 0, 0, 0, 0, 66, 0, 0, - 0, 161, 162, 163, 164, 0, 55, 0, 0, 65, - 67, 53, 0, 60, 141, 68, 64, 0, 63, 168, - 169, 170, 171, 172, 61, 0, 173, 0, 0, 174, - 175, 176, 0, 0, 0, 0, 0, 66, 0, 0, - 161, 162, 163, 164, 0, 0, 55, 0, 0, 65, - 67, 53, 0, 60, 0, 68, 64, 0, 63, 56, - 170, 171, 172, 0, 61, 173, 0, 0, 174, 175, - 176, 0, 0, 0, 0, 0, 0, 66, 0, 0, - 0, 75, 75, 75, 75, 0, 55, 0, 75, 65, - 67, 53, 0, 60, 207, 68, 64, 0, 63, 56, - 0, 0, 0, 0, 61, 0, 143, 160, 0, 75, - 75, 0, 0, 161, 162, 163, 164, 66, 0, 0, + 50, 51, 52, 27, 28, 29, 30, 31, 54, 32, + 33, 34, 0, 0, 0, 35, 0, 57, 0, 58, + 59, 0, 309, 0, 0, 0, 41, 170, 42, 43, + 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, + 50, 51, 52, 0, 0, 0, 0, 0, 54, 106, + 106, 106, 106, 0, 0, 0, 106, 57, 106, 58, + 59, 0, 0, 0, 106, 106, 0, 125, 28, 29, + 30, 31, 0, 32, 33, 34, 0, 106, 106, 35, + 106, 106, 106, 106, 106, 106, 0, 0, 0, 0, + 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, + 0, 47, 48, 49, 50, 51, 52, 0, 0, 0, + 55, 0, 54, 65, 67, 53, 0, 60, 0, 68, + 64, 57, 63, 58, 59, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, + 0, 66, 0, 0, 0, 165, 166, 167, 168, 0, + 55, 0, 0, 65, 67, 53, 0, 60, 145, 68, + 64, 0, 63, 172, 173, 174, 175, 176, 61, 0, + 177, 0, 0, 178, 179, 180, 0, 0, 0, 0, + 0, 66, 0, 0, 0, 165, 166, 167, 168, 0, + 55, 0, 0, 65, 67, 53, 0, 60, 0, 68, + 64, 0, 63, 56, 173, 174, 175, 176, 61, 0, + 177, 0, 0, 178, 179, 180, 0, 0, 0, 0, + 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 65, 67, 53, 0, 60, 211, 68, + 64, 0, 63, 56, 0, 164, 0, 0, 61, 0, + 147, 165, 166, 167, 168, 0, 0, 0, 0, 0, + 0, 66, 0, 0, 0, 0, 0, 169, 171, 172, + 173, 174, 175, 176, 0, 0, 177, 0, 0, 178, + 179, 180, 0, 56, 165, 166, 167, 168, 61, 0, + 55, 0, 0, 65, 67, 53, 0, 60, 222, 68, + 64, 0, 63, 0, 174, 175, 176, 0, 0, 177, + 0, 0, 178, 179, 180, 0, 0, 0, 0, 0, + 0, 66, 165, 56, 167, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 28, 29, 30, 31, 0, + 32, 33, 34, 175, 176, 0, 35, 177, 61, 0, + 178, 179, 180, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 27, 28, 29, 30, 31, 54, + 32, 33, 34, 56, 0, 0, 35, 0, 57, 0, + 58, 59, 0, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 27, 28, 29, 30, 31, 54, + 32, 33, 34, 0, 0, 0, 35, 0, 57, 0, + 58, 59, 0, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 27, 28, 29, 30, 31, 54, + 32, 33, 34, 0, 0, 0, 35, 0, 57, 0, + 58, 59, 0, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 0, 0, 0, 55, 0, 54, + 65, 67, 53, 0, 60, 259, 68, 64, 57, 63, + 58, 59, 0, 0, 27, 28, 29, 30, 31, 0, + 32, 33, 34, 0, 0, 0, 35, 0, 66, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 0, 61, 0, 55, 0, 54, + 65, 67, 53, 0, 60, 267, 68, 64, 57, 63, + 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, + 56, 0, 0, 0, 0, 0, 108, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 167, 168, 169, 170, 171, 172, 0, 0, 173, 56, - 0, 174, 175, 176, 61, 0, 55, 0, 0, 65, - 67, 53, 0, 60, 218, 68, 64, 0, 63, 0, + 0, 0, 0, 108, 108, 61, 55, 0, 108, 65, + 67, 53, 0, 60, 0, 68, 64, 0, 63, 0, + 0, 0, 0, 0, 165, 166, 167, 168, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 66, 108, 0, + 56, 171, 172, 173, 174, 175, 176, 0, 0, 177, + 0, 0, 178, 179, 180, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 61, 0, 55, 0, 0, 65, + 67, 53, 0, 60, 300, 68, 64, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 28, 29, 30, 31, 0, 32, 33, 34, 0, - 0, 0, 35, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 27, 28, 29, 30, 31, 54, 32, 33, 34, 56, - 0, 0, 35, 0, 57, 0, 58, 59, 0, 0, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 27, 28, 29, 30, 31, 54, 32, 33, 34, 0, - 0, 0, 35, 0, 57, 0, 58, 59, 0, 0, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 27, 28, 29, 30, 31, 54, 32, 33, 34, 0, - 0, 0, 35, 0, 57, 0, 58, 59, 0, 0, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, + 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, + 0, 0, 0, 35, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 41, 0, 42, 43, 44, 45, + 46, 0, 0, 0, 0, 47, 48, 49, 50, 51, + 52, 74, 0, 0, 74, 0, 54, 0, 0, 56, + 0, 0, 0, 0, 0, 57, 0, 58, 59, 74, + 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, + 0, 55, 0, 35, 65, 67, 53, 0, 60, 302, + 68, 64, 0, 63, 41, 0, 42, 43, 44, 45, + 46, 0, 0, 74, 0, 47, 48, 49, 50, 51, + 52, 0, 66, 0, 0, 0, 54, 108, 108, 108, + 108, 0, 0, 0, 108, 57, 108, 58, 59, 25, + 27, 28, 29, 30, 31, 0, 32, 33, 34, 61, + 0, 0, 35, 0, 0, 108, 108, 0, 108, 108, + 108, 108, 108, 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 0, 0, 0, 55, 0, 54, 65, 67, 53, 0, - 60, 255, 68, 64, 57, 63, 58, 59, 0, 0, + 0, 0, 0, 55, 56, 54, 65, 67, 53, 0, + 60, 311, 68, 64, 57, 63, 58, 59, 0, 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, 0, 0, 0, 35, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, 0, 61, 0, 55, 0, 54, 65, 67, 53, 0, - 60, 263, 68, 64, 57, 63, 58, 59, 0, 0, + 60, 0, 68, 64, 57, 63, 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 56, 0, 0, 0, - 0, 0, 108, 0, 0, 108, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, - 108, 61, 55, 0, 108, 65, 67, 53, 0, 60, - 0, 68, 64, 0, 63, 0, 0, 0, 0, 0, - 161, 162, 163, 164, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 108, 0, 56, 167, 168, 169, - 170, 171, 172, 0, 0, 173, 0, 0, 174, 175, - 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 61, 0, 55, 0, 0, 65, 67, 53, 0, 60, - 296, 68, 64, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 0, 56, 0, 0, 0, 0, + 0, 0, 74, 74, 74, 74, 0, 0, 0, 74, + 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, + 74, 32, 33, 34, 0, 0, 0, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 41, 0, + 42, 43, 44, 45, 46, 0, 183, 0, 0, 47, + 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, + 54, 0, 0, 183, 183, 0, 0, 0, 183, 57, + 0, 58, 59, 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, 183, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, 0, 0, 0, 35, - 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, - 0, 47, 48, 49, 50, 51, 52, 0, 0, 0, - 0, 0, 54, 0, 0, 56, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 41, 0, 42, 43, 44, 45, 46, 162, 0, 0, + 162, 47, 48, 49, 50, 51, 52, 0, 0, 0, + 0, 0, 54, 0, 162, 162, 0, 0, 0, 162, 0, 57, 0, 58, 59, 0, 0, 27, 28, 29, - 30, 31, 0, 32, 33, 34, 0, 55, 0, 35, - 65, 67, 53, 0, 60, 298, 68, 64, 0, 63, + 30, 31, 0, 32, 33, 34, 0, 0, 0, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, - 0, 47, 48, 49, 50, 51, 52, 0, 66, 0, - 0, 0, 54, 108, 108, 108, 108, 0, 0, 0, - 108, 57, 108, 58, 59, 25, 27, 28, 29, 30, - 31, 0, 32, 33, 34, 61, 0, 0, 35, 0, - 0, 108, 108, 0, 108, 108, 108, 108, 108, 41, - 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, - 47, 48, 49, 50, 51, 52, 0, 0, 0, 55, - 56, 54, 65, 67, 53, 0, 60, 307, 68, 64, - 57, 63, 58, 59, 0, 0, 27, 28, 29, 30, - 31, 0, 32, 33, 34, 0, 0, 0, 35, 0, - 66, 0, 0, 0, 0, 0, 0, 0, 0, 41, - 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, - 47, 48, 49, 50, 51, 52, 0, 61, 0, 55, - 0, 54, 65, 67, 53, 0, 60, 0, 68, 64, - 57, 63, 58, 59, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, - 66, 0, 56, 0, 0, 0, 0, 0, 158, 0, - 108, 158, 0, 0, 0, 0, 116, 95, 124, 0, - 0, 0, 130, 95, 0, 158, 158, 61, 0, 0, - 158, 0, 0, 0, 0, 95, 95, 95, 95, 0, - 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, - 0, 0, 0, 35, 0, 74, 0, 0, 74, 0, - 158, 0, 56, 0, 41, 0, 42, 43, 44, 45, - 46, 178, 0, 74, 178, 47, 48, 49, 50, 51, - 52, 0, 116, 0, 0, 0, 54, 0, 178, 178, - 0, 0, 0, 178, 0, 57, 0, 58, 59, 0, - 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, + 0, 47, 48, 49, 50, 51, 52, 103, 0, 0, + 170, 0, 54, 0, 0, 113, 0, 0, 0, 118, + 0, 57, 127, 58, 59, 132, 0, 0, 0, 140, + 141, 142, 143, 144, 0, 0, 0, 149, 150, 182, + 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 182, 182, 0, 0, + 0, 182, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 200, 183, 183, 183, + 183, 0, 0, 0, 183, 149, 183, 0, 149, 0, + 0, 182, 183, 183, 183, 183, 0, 0, 0, 0, + 0, 0, 149, 149, 0, 183, 183, 149, 183, 183, + 183, 183, 183, 183, 183, 0, 0, 183, 0, 0, + 183, 183, 183, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 149, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 269, 0, 0, 162, 162, + 162, 162, 0, 144, 0, 162, 144, 162, 0, 0, + 0, 0, 0, 162, 162, 162, 162, 0, 0, 0, + 144, 144, 0, 0, 0, 144, 162, 162, 0, 162, + 162, 162, 162, 162, 162, 162, 0, 0, 162, 0, + 0, 162, 162, 162, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 147, 0, 144, 147, 0, 164, 0, + 0, 0, 0, 0, 165, 166, 167, 168, 0, 0, + 147, 147, 0, 0, 0, 147, 0, 0, 0, 0, + 331, 171, 172, 173, 174, 175, 176, 0, 0, 177, + 0, 0, 178, 179, 180, 0, 0, 0, 0, 0, + 182, 182, 182, 182, 0, 147, 0, 182, 145, 182, + 0, 145, 0, 347, 0, 182, 182, 182, 182, 0, + 0, 0, 0, 0, 0, 145, 145, 0, 182, 182, + 145, 182, 182, 182, 182, 182, 182, 182, 0, 0, + 182, 0, 0, 182, 182, 182, 149, 149, 149, 149, + 0, 0, 0, 149, 155, 149, 0, 155, 0, 0, + 145, 149, 149, 149, 149, 0, 0, 0, 0, 0, + 0, 155, 155, 0, 149, 149, 155, 149, 149, 149, + 149, 149, 149, 149, 0, 0, 149, 0, 0, 149, + 149, 149, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 173, 0, 0, 173, 0, 155, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, + 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 144, 144, 144, 144, 0, 0, + 0, 144, 0, 144, 0, 0, 0, 0, 0, 144, + 144, 144, 144, 173, 0, 0, 0, 0, 176, 0, + 0, 176, 144, 144, 0, 144, 144, 144, 144, 144, + 144, 144, 0, 0, 144, 176, 176, 144, 144, 144, + 176, 0, 0, 0, 147, 147, 147, 147, 0, 0, + 0, 147, 0, 147, 0, 0, 0, 0, 0, 147, + 147, 147, 147, 0, 0, 0, 0, 0, 143, 0, + 176, 143, 147, 147, 0, 147, 147, 147, 147, 147, + 147, 147, 0, 0, 147, 143, 143, 147, 147, 147, + 143, 0, 0, 0, 0, 0, 0, 0, 0, 145, + 145, 145, 145, 0, 0, 0, 145, 0, 145, 0, + 0, 0, 0, 0, 145, 145, 145, 145, 0, 0, + 143, 0, 0, 0, 0, 0, 0, 145, 145, 0, + 145, 145, 145, 145, 145, 145, 145, 0, 0, 145, + 0, 0, 145, 145, 145, 155, 155, 155, 155, 0, + 76, 0, 155, 76, 155, 0, 0, 0, 0, 0, + 155, 155, 155, 155, 0, 0, 0, 76, 76, 0, + 0, 0, 76, 155, 155, 0, 155, 155, 155, 155, + 155, 155, 155, 0, 0, 155, 0, 0, 155, 155, + 155, 0, 173, 173, 173, 173, 0, 0, 0, 173, + 0, 173, 76, 0, 0, 0, 0, 173, 173, 173, + 173, 0, 0, 0, 0, 0, 66, 0, 0, 66, + 173, 173, 0, 173, 173, 173, 173, 173, 173, 173, + 0, 0, 173, 66, 66, 173, 173, 173, 66, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, + 176, 176, 176, 0, 0, 0, 176, 0, 176, 0, + 0, 0, 0, 0, 176, 176, 176, 176, 66, 0, + 0, 0, 0, 142, 0, 0, 142, 176, 176, 0, + 176, 176, 176, 176, 176, 176, 176, 0, 0, 176, + 142, 142, 176, 176, 176, 142, 0, 0, 0, 143, + 143, 143, 143, 0, 0, 0, 143, 0, 143, 0, + 0, 0, 0, 0, 143, 143, 143, 143, 0, 0, + 0, 0, 0, 82, 0, 142, 82, 143, 143, 0, + 143, 143, 143, 143, 143, 143, 143, 0, 0, 143, + 82, 82, 143, 143, 143, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 178, 0, 139, 0, 0, 139, 0, - 0, 0, 0, 27, 28, 29, 30, 31, 0, 32, - 33, 34, 139, 139, 0, 35, 252, 139, 0, 0, - 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, - 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, - 50, 51, 52, 284, 0, 0, 0, 139, 54, 0, - 0, 0, 0, 0, 0, 134, 0, 57, 134, 58, - 59, 0, 0, 27, 28, 29, 30, 31, 0, 32, - 33, 34, 134, 134, 0, 35, 0, 134, 0, 0, - 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, - 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, - 50, 51, 52, 0, 0, 0, 0, 134, 54, 158, - 158, 158, 158, 0, 0, 0, 158, 57, 158, 58, - 59, 0, 0, 0, 158, 158, 158, 158, 0, 0, - 0, 0, 0, 137, 0, 0, 137, 158, 158, 0, - 158, 158, 158, 158, 158, 158, 158, 0, 0, 158, - 137, 137, 158, 158, 158, 137, 74, 74, 74, 74, - 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 178, 178, 178, 178, 0, 0, 0, 178, - 135, 178, 0, 135, 74, 137, 0, 178, 178, 178, - 178, 0, 0, 0, 0, 0, 0, 135, 135, 0, - 178, 178, 135, 178, 178, 178, 178, 178, 178, 178, - 0, 0, 178, 0, 0, 178, 178, 178, 0, 0, - 0, 0, 0, 0, 0, 0, 139, 139, 139, 139, - 0, 145, 135, 139, 145, 139, 0, 0, 0, 0, - 0, 139, 139, 139, 139, 0, 0, 0, 145, 145, - 0, 0, 0, 145, 139, 139, 0, 139, 139, 139, - 139, 139, 139, 139, 0, 0, 139, 0, 0, 139, - 139, 139, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 156, 145, 0, 156, 134, 134, 134, 134, - 0, 169, 0, 134, 169, 134, 0, 0, 0, 156, - 156, 134, 134, 134, 134, 0, 0, 0, 169, 169, - 0, 0, 0, 169, 134, 134, 0, 134, 134, 134, - 134, 134, 134, 134, 0, 0, 134, 0, 0, 134, - 134, 134, 0, 0, 156, 0, 0, 172, 0, 0, - 172, 0, 0, 169, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 172, 172, 0, 0, 0, 172, - 0, 0, 0, 0, 137, 137, 137, 137, 0, 0, - 0, 137, 0, 137, 0, 0, 0, 0, 0, 137, - 137, 137, 137, 0, 0, 0, 0, 0, 0, 172, - 0, 0, 137, 137, 0, 137, 137, 137, 137, 137, - 137, 137, 0, 0, 137, 0, 0, 137, 137, 137, - 0, 135, 135, 135, 135, 0, 128, 0, 135, 128, - 135, 0, 0, 0, 0, 0, 135, 135, 135, 135, - 0, 0, 0, 128, 128, 0, 0, 0, 128, 135, - 135, 0, 135, 135, 135, 135, 135, 135, 135, 0, - 0, 135, 0, 0, 135, 135, 135, 0, 0, 0, - 0, 0, 145, 145, 145, 145, 0, 76, 128, 145, - 76, 145, 0, 0, 0, 0, 0, 145, 145, 145, - 145, 0, 0, 0, 76, 76, 0, 0, 0, 76, - 145, 145, 0, 145, 145, 145, 145, 145, 145, 145, - 0, 0, 145, 0, 0, 145, 145, 145, 0, 0, - 0, 0, 0, 156, 156, 156, 156, 0, 0, 76, - 156, 0, 169, 169, 169, 169, 0, 66, 0, 169, - 66, 169, 0, 0, 0, 0, 0, 169, 169, 169, - 169, 156, 156, 0, 66, 66, 0, 0, 0, 66, - 169, 169, 0, 169, 169, 169, 169, 169, 169, 169, - 0, 0, 169, 0, 0, 169, 169, 169, 172, 172, - 172, 172, 0, 127, 0, 172, 127, 172, 0, 66, - 0, 0, 0, 172, 172, 172, 172, 0, 0, 0, - 127, 127, 0, 0, 0, 127, 172, 172, 0, 172, - 172, 172, 172, 172, 172, 172, 0, 0, 172, 0, - 0, 172, 172, 172, 0, 0, 0, 0, 0, 82, - 0, 0, 82, 0, 0, 127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 82, 82, 0, 0, - 0, 82, 114, 0, 0, 114, 0, 128, 128, 128, - 128, 0, 0, 0, 128, 0, 128, 0, 0, 114, - 114, 0, 128, 128, 128, 128, 0, 0, 0, 0, - 0, 82, 0, 0, 0, 128, 128, 0, 128, 128, - 128, 128, 128, 128, 128, 0, 0, 128, 0, 0, - 128, 128, 128, 102, 114, 0, 102, 0, 76, 76, - 76, 76, 179, 0, 0, 76, 0, 76, 0, 0, - 102, 102, 0, 76, 76, 76, 76, 0, 0, 179, - 179, 0, 0, 0, 179, 0, 76, 76, 0, 76, - 76, 76, 76, 76, 76, 76, 0, 0, 76, 0, - 0, 76, 76, 76, 0, 102, 0, 0, 0, 0, - 0, 0, 0, 0, 179, 0, 0, 0, 66, 66, - 66, 66, 157, 0, 0, 66, 0, 66, 0, 0, - 0, 0, 0, 66, 66, 66, 66, 0, 0, 157, - 157, 0, 0, 0, 157, 0, 66, 66, 0, 66, - 66, 66, 66, 66, 66, 66, 0, 0, 66, 0, - 0, 66, 66, 66, 127, 127, 127, 127, 79, 0, - 0, 127, 0, 127, 157, 0, 0, 0, 0, 127, - 127, 127, 127, 0, 0, 79, 79, 0, 0, 0, - 79, 0, 127, 127, 0, 127, 127, 127, 127, 127, - 127, 127, 0, 0, 127, 0, 0, 127, 127, 127, - 82, 82, 82, 82, 0, 0, 0, 82, 0, 82, - 79, 0, 0, 0, 0, 82, 82, 82, 82, 0, - 0, 0, 0, 114, 114, 114, 114, 0, 82, 82, - 114, 82, 82, 82, 82, 82, 82, 82, 0, 123, - 82, 0, 123, 82, 82, 82, 0, 0, 0, 0, - 0, 114, 114, 0, 114, 0, 123, 123, 0, 0, - 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 102, 102, 102, 102, 0, 0, - 0, 102, 0, 179, 179, 179, 179, 0, 0, 0, - 179, 123, 179, 0, 0, 0, 0, 0, 179, 179, - 179, 179, 102, 102, 0, 0, 0, 0, 0, 0, - 0, 179, 179, 0, 179, 179, 179, 179, 179, 179, - 179, 0, 0, 179, 0, 0, 179, 179, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 157, 157, 157, 157, 0, 0, 0, - 157, 124, 157, 0, 124, 0, 0, 0, 157, 157, - 157, 157, 0, 0, 0, 0, 0, 0, 124, 124, - 0, 157, 157, 124, 157, 157, 157, 157, 157, 157, - 157, 0, 0, 157, 0, 0, 157, 157, 157, 79, - 79, 79, 79, 0, 118, 0, 79, 118, 79, 0, - 0, 0, 0, 124, 79, 79, 79, 79, 0, 0, - 0, 118, 118, 0, 0, 0, 118, 79, 79, 0, - 79, 79, 79, 79, 79, 79, 79, 99, 0, 79, - 0, 0, 79, 79, 79, 109, 0, 0, 119, 114, - 0, 119, 123, 0, 0, 128, 118, 0, 0, 136, - 137, 138, 139, 140, 0, 119, 119, 145, 146, 0, - 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 123, 123, 123, 123, 0, 0, 0, 123, 120, 123, - 0, 120, 0, 0, 0, 123, 123, 123, 123, 0, - 119, 0, 196, 0, 0, 120, 120, 0, 123, 123, - 120, 123, 123, 123, 123, 123, 123, 123, 0, 0, - 123, 0, 0, 0, 0, 0, 116, 0, 0, 116, + 0, 0, 0, 0, 0, 82, 160, 0, 0, 160, + 0, 76, 76, 76, 76, 161, 0, 0, 76, 0, + 76, 0, 0, 160, 160, 0, 76, 76, 76, 76, + 0, 0, 161, 161, 0, 0, 0, 161, 0, 76, + 76, 0, 76, 76, 76, 76, 76, 76, 76, 0, + 0, 76, 0, 0, 76, 76, 76, 0, 160, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, + 0, 0, 0, 102, 0, 0, 102, 66, 66, 66, + 66, 79, 0, 0, 66, 0, 66, 0, 0, 0, + 102, 102, 66, 66, 66, 66, 0, 0, 79, 79, + 0, 0, 0, 79, 0, 66, 66, 0, 66, 66, + 66, 66, 66, 66, 66, 0, 0, 66, 0, 0, + 66, 66, 66, 0, 0, 102, 0, 0, 0, 0, + 0, 0, 0, 79, 142, 142, 142, 142, 0, 0, + 0, 142, 121, 142, 0, 121, 0, 0, 0, 142, + 142, 142, 142, 0, 0, 0, 0, 0, 0, 121, + 121, 0, 142, 142, 121, 142, 142, 142, 142, 142, + 142, 142, 0, 0, 142, 0, 0, 142, 142, 142, + 0, 0, 0, 0, 82, 82, 82, 82, 0, 122, + 0, 82, 122, 82, 121, 0, 0, 0, 0, 82, + 82, 82, 82, 0, 0, 0, 122, 122, 0, 0, + 0, 122, 82, 82, 0, 82, 82, 82, 82, 82, + 82, 82, 0, 0, 82, 0, 0, 82, 82, 82, + 0, 0, 0, 0, 0, 0, 0, 160, 160, 160, + 160, 122, 0, 0, 160, 0, 161, 161, 161, 161, + 0, 117, 0, 161, 117, 161, 0, 0, 0, 0, + 0, 161, 161, 161, 161, 160, 160, 0, 117, 117, + 0, 0, 0, 117, 161, 161, 0, 161, 161, 161, + 161, 161, 161, 161, 0, 0, 161, 0, 0, 161, + 161, 161, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 102, 102, 102, 102, 0, 0, + 0, 102, 79, 79, 79, 79, 0, 118, 0, 79, + 118, 79, 0, 0, 0, 0, 0, 79, 79, 79, + 79, 0, 102, 102, 118, 118, 0, 0, 0, 118, + 79, 79, 0, 79, 79, 79, 79, 79, 79, 79, + 0, 0, 79, 0, 0, 79, 79, 79, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, + 0, 0, 0, 121, 121, 121, 121, 0, 139, 0, + 121, 139, 121, 0, 0, 0, 0, 0, 121, 121, + 121, 121, 0, 0, 0, 139, 139, 0, 0, 0, + 139, 121, 121, 0, 121, 121, 121, 121, 121, 121, + 121, 0, 0, 121, 0, 0, 0, 0, 0, 0, + 122, 122, 122, 122, 0, 115, 0, 122, 115, 122, + 139, 0, 0, 0, 0, 122, 122, 122, 122, 0, + 0, 0, 115, 115, 0, 0, 0, 115, 122, 122, + 0, 122, 122, 122, 122, 122, 122, 122, 0, 0, + 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 116, 0, 0, 116, 0, 0, 0, 115, 0, 0, + 0, 0, 117, 117, 117, 117, 0, 116, 116, 117, + 0, 117, 116, 0, 0, 0, 0, 117, 117, 117, + 117, 0, 0, 0, 0, 0, 0, 0, 0, 114, + 117, 117, 114, 117, 117, 117, 117, 117, 117, 117, + 0, 0, 116, 0, 0, 0, 114, 114, 0, 0, + 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, + 118, 118, 0, 103, 0, 118, 103, 118, 0, 0, + 0, 114, 0, 118, 118, 118, 118, 0, 0, 0, + 103, 103, 0, 0, 0, 103, 118, 118, 0, 118, + 118, 118, 118, 118, 118, 118, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, + 104, 0, 0, 0, 0, 103, 0, 0, 0, 139, + 139, 139, 139, 0, 104, 104, 139, 0, 139, 104, + 0, 0, 0, 0, 139, 139, 139, 139, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 139, 139, 0, + 139, 139, 139, 139, 139, 139, 139, 0, 0, 104, + 0, 0, 0, 0, 0, 0, 115, 115, 115, 115, + 0, 105, 0, 115, 105, 115, 0, 0, 0, 0, + 0, 115, 115, 115, 115, 0, 0, 0, 105, 105, + 0, 0, 0, 105, 115, 115, 0, 115, 115, 115, + 115, 115, 115, 115, 0, 0, 0, 0, 0, 0, + 0, 116, 116, 116, 116, 0, 0, 0, 116, 165, + 116, 0, 165, 105, 0, 0, 116, 116, 116, 116, + 0, 0, 0, 0, 0, 0, 165, 165, 0, 116, + 116, 165, 116, 116, 116, 116, 116, 116, 116, 0, + 114, 114, 114, 114, 0, 164, 0, 114, 164, 114, + 0, 0, 0, 0, 0, 114, 114, 114, 114, 0, + 0, 165, 164, 164, 0, 0, 0, 164, 114, 114, + 0, 114, 114, 114, 114, 114, 114, 114, 0, 0, + 0, 0, 0, 0, 103, 103, 103, 103, 0, 128, + 0, 103, 128, 103, 0, 0, 0, 164, 0, 103, + 103, 103, 103, 0, 0, 0, 128, 128, 0, 0, + 0, 128, 103, 103, 0, 103, 103, 103, 103, 103, + 103, 103, 0, 0, 0, 0, 0, 0, 104, 104, + 104, 104, 0, 141, 0, 104, 141, 104, 0, 0, + 0, 128, 0, 104, 104, 104, 104, 0, 0, 0, + 141, 141, 0, 0, 0, 141, 104, 104, 0, 104, + 104, 104, 104, 104, 104, 0, 0, 0, 0, 0, + 138, 0, 0, 138, 0, 0, 0, 0, 0, 0, + 107, 0, 0, 107, 0, 141, 0, 138, 138, 0, + 0, 0, 105, 105, 105, 105, 0, 107, 107, 105, + 0, 105, 107, 0, 0, 0, 0, 105, 105, 0, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 105, 105, 138, 105, 105, 105, 105, 105, 105, 0, + 0, 0, 107, 0, 0, 109, 0, 0, 109, 0, + 165, 165, 165, 165, 0, 110, 0, 165, 110, 165, + 0, 0, 109, 109, 0, 165, 165, 109, 0, 0, + 0, 0, 110, 110, 0, 0, 0, 110, 165, 165, + 0, 165, 165, 165, 165, 165, 164, 164, 164, 164, + 0, 112, 0, 164, 112, 164, 0, 109, 0, 0, + 0, 164, 164, 0, 0, 0, 0, 110, 112, 112, + 0, 0, 0, 112, 164, 164, 0, 164, 164, 164, + 164, 164, 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 0, 111, 0, 128, 111, 128, + 0, 0, 0, 112, 0, 128, 128, 0, 0, 0, + 0, 0, 111, 111, 0, 0, 0, 111, 128, 128, + 0, 128, 128, 128, 128, 128, 0, 77, 0, 0, + 77, 0, 0, 0, 141, 141, 141, 141, 0, 0, + 0, 141, 0, 141, 77, 77, 0, 111, 0, 141, + 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 141, 141, 0, 141, 141, 141, 141, 141, + 0, 138, 138, 138, 138, 0, 0, 0, 138, 77, + 0, 107, 107, 107, 107, 0, 0, 0, 107, 0, + 107, 0, 0, 0, 0, 0, 0, 107, 0, 138, + 138, 0, 138, 0, 0, 0, 0, 0, 0, 107, + 107, 0, 107, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 120, 0, 0, 116, 116, 0, 0, 0, 116, 0, + 0, 0, 0, 0, 0, 0, 109, 109, 109, 109, + 0, 0, 0, 109, 0, 109, 110, 110, 110, 110, + 0, 0, 0, 110, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 109, 0, 109, 109, 109, + 109, 109, 0, 0, 110, 110, 0, 110, 110, 110, + 110, 0, 112, 112, 112, 112, 0, 0, 0, 112, + 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 116, 0, + 112, 112, 0, 112, 112, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 111, 111, 111, 111, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 265, 124, 124, 124, 124, 0, 117, 0, 124, - 117, 124, 0, 0, 0, 0, 0, 124, 124, 124, - 124, 0, 0, 0, 117, 117, 0, 0, 0, 117, - 124, 124, 0, 124, 124, 124, 124, 124, 124, 124, - 0, 0, 124, 0, 0, 118, 118, 118, 118, 0, - 115, 0, 118, 115, 118, 0, 0, 0, 0, 117, - 118, 118, 118, 118, 0, 0, 0, 115, 115, 0, - 0, 0, 115, 118, 118, 0, 118, 118, 118, 118, - 118, 118, 118, 0, 0, 0, 327, 0, 0, 119, - 119, 119, 119, 0, 0, 0, 119, 77, 119, 0, - 77, 0, 115, 0, 119, 119, 119, 119, 0, 0, - 0, 0, 0, 0, 77, 77, 0, 119, 119, 343, - 119, 119, 119, 119, 119, 119, 119, 0, 0, 120, - 120, 120, 120, 0, 103, 0, 120, 103, 120, 0, - 0, 0, 0, 0, 120, 120, 120, 120, 0, 77, - 0, 103, 103, 0, 0, 0, 103, 120, 120, 0, - 120, 120, 120, 120, 120, 120, 120, 116, 116, 116, - 116, 0, 104, 0, 116, 104, 116, 0, 0, 0, - 0, 0, 116, 116, 116, 116, 103, 0, 0, 104, - 104, 0, 0, 0, 104, 116, 116, 0, 116, 116, - 116, 116, 116, 116, 116, 0, 0, 0, 0, 105, - 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 104, 0, 105, 105, 0, 0, - 0, 105, 0, 0, 0, 0, 0, 0, 117, 117, - 117, 117, 0, 0, 0, 117, 0, 117, 0, 0, - 0, 0, 0, 117, 117, 117, 117, 305, 0, 0, - 0, 105, 166, 0, 0, 0, 117, 117, 0, 117, - 117, 117, 117, 117, 117, 117, 0, 0, 0, 0, - 0, 115, 115, 115, 115, 0, 161, 0, 115, 161, - 115, 0, 0, 0, 0, 0, 115, 115, 115, 115, - 0, 0, 0, 161, 161, 0, 0, 0, 161, 115, - 115, 0, 115, 115, 115, 115, 115, 115, 115, 0, - 0, 0, 0, 160, 0, 0, 160, 0, 77, 77, - 77, 77, 0, 149, 0, 77, 149, 0, 161, 0, - 160, 160, 0, 0, 0, 160, 0, 0, 0, 0, - 149, 149, 0, 0, 0, 149, 77, 77, 0, 0, - 0, 0, 0, 0, 0, 103, 103, 103, 103, 0, - 126, 0, 103, 126, 103, 160, 0, 0, 0, 0, - 103, 103, 103, 103, 0, 149, 0, 126, 126, 0, - 0, 0, 126, 103, 103, 0, 103, 103, 103, 103, - 103, 103, 103, 104, 104, 104, 104, 0, 107, 0, - 104, 107, 104, 0, 0, 0, 0, 0, 104, 104, - 104, 104, 126, 0, 0, 107, 107, 0, 0, 0, - 107, 104, 104, 0, 104, 104, 104, 104, 104, 104, - 105, 105, 105, 105, 0, 109, 0, 105, 109, 105, - 0, 0, 0, 0, 0, 105, 105, 0, 105, 0, - 107, 110, 109, 109, 110, 0, 0, 109, 105, 105, - 0, 105, 105, 105, 105, 105, 105, 0, 110, 110, - 160, 0, 0, 110, 0, 0, 161, 162, 163, 164, - 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, - 0, 0, 165, 167, 168, 169, 170, 171, 172, 0, - 0, 173, 0, 110, 174, 175, 176, 161, 161, 161, - 161, 0, 112, 0, 161, 112, 161, 0, 0, 0, - 0, 0, 161, 161, 0, 0, 0, 0, 0, 112, - 112, 0, 0, 0, 112, 161, 161, 0, 161, 161, - 161, 161, 161, 0, 160, 160, 160, 160, 0, 113, - 0, 160, 113, 160, 149, 149, 149, 149, 0, 160, - 160, 149, 0, 149, 112, 0, 113, 113, 0, 149, - 149, 113, 160, 160, 0, 160, 160, 160, 160, 160, - 0, 0, 149, 149, 0, 149, 149, 149, 149, 149, - 0, 126, 126, 126, 126, 0, 0, 0, 126, 0, - 126, 113, 0, 0, 0, 0, 126, 126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, - 126, 0, 126, 126, 126, 126, 126, 0, 0, 107, - 107, 107, 107, 0, 0, 0, 107, 0, 107, 0, - 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 107, 107, 0, - 107, 107, 107, 107, 107, 0, 109, 109, 109, 109, - 0, 0, 0, 109, 0, 109, 0, 0, 0, 0, - 0, 0, 110, 110, 110, 110, 0, 0, 0, 110, - 0, 110, 0, 0, 109, 109, 0, 109, 109, 109, - 109, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 110, 110, 0, 110, 110, 110, 110, 0, 0, 0, + 0, 0, 0, 0, 111, 111, 0, 111, 77, 77, + 77, 77, 0, 0, 0, 77, 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, 112, 112, 112, 112, 0, 0, 0, - 112, 0, 112, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 112, 112, 0, 112, 112, 112, 0, 0, 0, - 113, 113, 113, 113, 0, 0, 0, 113, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, - 0, 113, 113, + 0, 0, 0, 0, 0, 0, 77, 77, }; static short yycheck[] = { 15, - 36, 91, 41, 36, 40, 59, 59, 41, 195, 41, - 59, 59, 41, 59, 59, 44, 59, 123, 93, 36, - 93, 358, 59, 40, 96, 91, 40, 91, 41, 58, - 59, 41, 41, 49, 63, 59, 41, 59, 41, 257, - 204, 40, 192, 90, 60, 61, 59, 41, 198, 257, - 59, 15, 389, 41, 101, 127, 59, 123, 41, 123, - 289, 290, 300, 301, 93, 59, 266, 267, 268, 41, - 270, 271, 41, 41, 91, 123, 41, 91, 123, 44, - 309, 45, 41, 312, 48, 93, 315, 316, 317, 44, - 123, 59, 91, 58, 59, 111, 112, 297, 63, 123, - 59, 123, 59, 36, 37, 40, 123, 40, 40, 123, - 257, 41, 59, 129, 0, 102, 103, 104, 105, 106, - 107, 85, 40, 310, 123, 278, 41, 291, 93, 59, - 312, 64, 40, 315, 316, 317, 100, 153, 154, 155, - 156, 157, 158, 159, 59, 276, 277, 33, 93, 40, - 36, 37, 38, 93, 40, 93, 42, 43, 40, 45, - 40, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 334, 8, 9, 59, 0, 40, 40, 123, 64, 195, - 59, 44, 123, 199, 200, 40, 202, 151, 204, 260, - 257, 40, 298, 41, 93, 211, 268, 213, 214, 40, - 125, 298, 274, 257, 317, 91, 222, 33, 36, 298, - 36, 37, 38, 91, 40, 379, 42, 43, 205, 45, - 41, 125, 257, 91, 257, 300, 301, 300, 301, 262, - 260, 301, 248, 59, 250, 251, 40, 123, 64, 125, - 126, 258, 0, 272, 273, 274, 275, 300, 301, 260, - 279, 300, 301, 298, 300, 301, 41, 300, 301, 41, - 296, 300, 301, 300, 301, 91, 300, 301, 300, 301, - 41, 300, 301, 41, 303, 33, 366, 41, 36, 37, - 38, 40, 40, 59, 42, 43, 41, 45, 304, 125, - 300, 301, 300, 301, 310, 300, 301, 123, 125, 125, - 126, 59, 125, 267, 123, 269, 64, 272, 273, 274, - 275, 275, 300, 301, 279, 125, 281, 300, 301, 59, - 336, 41, 287, 288, 289, 290, 125, 41, 300, 301, - 44, 300, 301, 91, 41, 300, 301, 41, 303, 304, - 305, 306, 307, 308, 309, 300, 301, 312, 59, 63, - 315, 316, 317, 300, 301, 300, 301, 40, 123, 375, - 300, 301, 300, 301, 41, 123, 41, 41, 126, 123, - 256, 257, 258, 259, 260, 261, 41, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 41, 59, 41, 279, 280, 289, 282, 283, 284, 285, - 286, 300, 301, 59, 41, 291, 292, 293, 294, 295, - 296, 297, 63, 59, 41, 309, 302, 35, 312, 52, - 52, 315, 316, 317, 15, 311, 154, 313, 314, 336, - 256, 257, 258, 259, 260, 261, 375, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 202, 24, 269, 279, 280, -1, 282, 283, 284, 285, - 286, -1, -1, 125, -1, 291, 292, 293, 294, 295, - 296, 297, 355, 356, -1, 309, 302, 360, 312, -1, - -1, 315, 316, 317, -1, 311, -1, 313, 314, -1, - -1, 41, -1, 376, 44, -1, -1, 380, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 58, 59, - -1, 269, -1, 63, 272, 273, 274, 275, -1, -1, - -1, 279, 280, -1, 282, 283, 284, 285, 286, -1, - -1, 125, -1, 291, 292, 293, 294, 295, 296, -1, - -1, -1, -1, 93, 302, -1, -1, -1, -1, -1, - -1, -1, -1, 311, 33, 313, 314, 36, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 281, -1, -1, - -1, -1, -1, 287, 288, 289, 290, -1, -1, 58, - 59, -1, -1, -1, 63, 64, -1, -1, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, - -1, 315, 316, 317, 266, 267, 268, -1, 270, 271, - -1, -1, 91, -1, 93, 33, -1, -1, 36, 37, - 38, -1, 40, 41, 42, 43, 44, 45, -1, -1, - 281, -1, -1, -1, -1, 297, 287, 288, 289, 290, - 58, 59, -1, -1, -1, 63, 64, 126, -1, -1, - -1, -1, 303, 304, 305, 306, 307, 308, 309, -1, - -1, 312, 29, -1, 315, 316, 317, -1, -1, -1, - -1, -1, 266, 267, 268, 93, 270, 271, 33, 46, - 47, 36, 37, 38, -1, 40, 53, 42, 43, -1, - 45, 287, 288, 289, 290, -1, -1, -1, 65, 66, - 67, 68, -1, 297, 59, -1, -1, -1, 126, 64, + 95, 36, 46, 41, 36, 40, 59, 59, 100, 208, + 54, 41, 59, 199, 41, 40, 196, 257, 41, 93, + 123, 44, 202, 36, 93, 59, 40, 40, 59, 29, + 59, 40, 91, 49, 41, 58, 59, 41, 362, 131, + 63, 257, 91, 41, 60, 61, 46, 47, 59, 94, + 40, 15, 59, 53, 41, 40, 100, 41, 300, 301, + 105, 59, 41, 59, 123, 65, 66, 67, 68, 393, + 93, 40, 59, 41, 123, 41, 41, 91, 91, 123, + 41, 45, 91, 44, 48, 40, 93, 131, 40, 123, + 41, 123, 123, 59, 123, 41, 295, 58, 59, 115, + 116, 44, 63, 106, 107, 108, 109, 110, 111, 123, + 123, 40, 123, 59, 123, 40, 116, 133, 0, 59, + 36, 37, 257, 59, 40, 89, 59, 278, 314, 59, + 123, 41, 93, 266, 267, 268, 40, 270, 271, 338, + 104, 157, 158, 159, 160, 161, 162, 163, 64, 59, + 59, 33, 276, 277, 36, 37, 38, 41, 40, 44, + 42, 43, 260, 45, 297, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 123, 59, 41, 59, 0, 41, + 272, 257, 64, 199, 383, 40, 278, 203, 204, 40, + 206, 155, 208, 41, 59, 298, 40, 59, 93, 215, + 93, 217, 218, 8, 9, 257, 209, 125, 298, 91, + 226, 33, 317, 91, 36, 37, 38, 93, 40, 93, + 42, 43, 36, 45, 257, 257, 300, 301, 272, 41, + 262, 300, 301, 298, 278, 125, 252, 59, 254, 255, + 260, 123, 64, 125, 126, 258, 0, 300, 301, 272, + 273, 274, 275, 300, 301, 91, 279, 40, 281, 93, + 301, 296, 300, 301, 298, 272, 273, 274, 275, 91, + 300, 301, 279, 300, 301, 370, 41, 300, 301, 33, + 303, 304, 36, 37, 38, 260, 40, 40, 42, 43, + 41, 45, 308, 300, 301, 41, 300, 301, 314, 41, + 41, 123, 41, 125, 126, 59, 125, 271, 125, 273, + 64, 272, 273, 274, 275, 279, 300, 301, 279, 59, + 281, 300, 301, 125, 340, 125, 287, 288, 289, 290, + 59, 41, 300, 301, 44, 300, 301, 91, 123, 300, + 301, 41, 303, 304, 305, 306, 307, 308, 309, 300, + 301, 312, 125, 63, 315, 316, 317, 300, 301, 41, + 300, 301, 41, 379, 300, 301, 59, 300, 301, 123, + 300, 301, 126, 40, 256, 257, 258, 259, 260, 261, + 41, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 41, 41, 123, 279, 280, 41, + 282, 283, 284, 285, 286, 300, 301, 300, 301, 291, + 292, 293, 294, 295, 296, 297, 63, 123, 312, 41, + 302, 315, 316, 317, 300, 301, 300, 301, 59, 311, + 41, 313, 314, 59, 256, 257, 258, 259, 260, 261, + 41, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 59, 41, 289, 279, 280, 35, + 282, 283, 284, 285, 286, 52, 300, 301, 52, 291, + 292, 293, 294, 295, 296, 297, 309, 15, 158, 312, + 302, 379, 315, 316, 317, 206, 340, 24, -1, 311, + -1, 313, 314, 309, 273, 41, 312, -1, 44, 315, + 316, 317, 256, 257, 258, 259, 260, 261, -1, 263, + 264, 265, 58, 59, -1, 269, -1, 63, 272, 273, + 274, 275, -1, 289, 290, 279, 280, -1, 282, 283, + 284, 285, 286, -1, -1, 125, -1, 291, 292, 293, + 294, 295, 296, 309, -1, -1, 312, 93, 302, 315, + 316, 317, -1, -1, -1, -1, -1, 311, 33, 313, + 314, 36, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 281, -1, 125, -1, -1, -1, 287, 288, 289, + 290, -1, -1, 58, 59, -1, -1, -1, 63, 64, + -1, -1, -1, 303, 304, 305, 306, 307, 308, 309, + -1, -1, 312, -1, -1, 315, 316, 317, 272, 273, + 274, 275, -1, -1, -1, 279, 91, -1, 93, 33, + -1, -1, 36, 37, 38, -1, 40, 41, 42, 43, + 44, 45, -1, -1, 281, -1, 300, 301, -1, -1, + 287, 288, 289, 290, 58, 59, -1, -1, -1, 63, + 64, 126, -1, -1, -1, -1, 303, 304, 305, 306, + 307, 308, 309, -1, -1, 312, -1, -1, 315, 316, + 317, -1, -1, -1, -1, -1, 266, 267, 268, 93, + 270, 271, 33, 289, 290, 36, 37, 38, -1, 40, + -1, 42, 43, -1, 45, -1, 359, 360, -1, -1, + -1, 364, 308, 309, -1, -1, 312, 297, 59, 315, + 316, 317, 126, 64, 266, 267, 268, 380, 270, 271, + -1, 384, -1, -1, -1, -1, 272, 273, 274, 275, + -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, + 91, 287, 288, 289, 290, 297, -1, -1, -1, -1, + -1, -1, -1, -1, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, - 316, 317, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, -1, -1, 91, 287, 288, 289, - 290, 272, 273, 274, 275, 112, -1, -1, 279, -1, - 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 315, 316, 317, 123, 300, - 301, 126, -1, -1, -1, -1, -1, -1, 257, 258, - 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, - 269, -1, -1, 272, 273, 274, 275, -1, -1, -1, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, -1, -1, - -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, -1, 311, 312, 313, 314, 315, 316, 317, 257, - 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, - -1, 269, -1, -1, 272, 273, 274, 275, -1, -1, - -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, - -1, -1, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, -1, 311, 312, 313, 314, 315, 316, 317, - -1, 256, 257, 258, 259, 260, 261, 63, 263, 264, + 316, 317, 123, -1, -1, 126, -1, -1, -1, -1, + -1, -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, 280, -1, 282, 283, 284, - 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, - 295, 296, -1, -1, -1, 33, -1, 302, 36, 37, - 38, -1, 40, -1, 42, 43, 311, 45, 313, 314, - -1, 46, -1, -1, -1, -1, -1, -1, -1, 54, - 287, 59, 289, 290, -1, -1, 64, -1, -1, 41, - -1, -1, 44, -1, -1, 331, 332, 333, -1, 335, - -1, 308, 309, -1, -1, 312, 58, 59, 315, 316, - 317, -1, -1, 91, -1, 33, -1, -1, 36, 37, - 38, 96, 40, -1, 42, 43, 362, 45, -1, -1, - -1, -1, -1, 369, -1, -1, -1, 373, -1, -1, - -1, 93, -1, -1, 119, 123, 64, -1, 126, -1, - 386, 387, 127, -1, -1, 33, -1, -1, 36, 37, - 38, -1, 40, -1, 42, 43, -1, 45, -1, -1, - -1, -1, -1, 91, 287, 288, 289, 290, -1, -1, - -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, - -1, -1, -1, -1, 41, 308, 309, 44, -1, 312, - -1, -1, 315, 316, 317, 123, -1, -1, 126, -1, - -1, 58, 59, 91, -1, -1, 63, -1, -1, 33, - -1, -1, 36, 37, 38, -1, 40, -1, 42, 43, - -1, 45, -1, -1, -1, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, 123, 93, -1, 126, -1, - 64, -1, -1, -1, -1, -1, -1, 303, 304, 305, - 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, - 316, 317, -1, -1, -1, -1, -1, 91, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, - -1, 269, -1, 268, 272, 273, 274, 275, -1, 274, - -1, 279, 280, -1, 282, 283, 284, 285, 286, 123, - -1, -1, 126, 291, 292, 293, 294, 295, 296, -1, - 272, 273, 274, 275, 302, -1, -1, 279, -1, -1, - -1, -1, -1, 311, -1, 313, 314, -1, -1, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 300, 301, - -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, - 41, -1, -1, 291, 292, 293, 294, 295, 296, 257, - 258, 259, 260, 261, 302, 263, 264, 265, 59, -1, - -1, 269, -1, 311, -1, 313, 314, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, 63, - -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, - -1, -1, 93, -1, 302, 272, 273, 274, 275, -1, - -1, -1, 279, 311, 281, 313, 314, -1, -1, -1, - 287, 288, -1, 257, 258, 259, 260, 261, -1, 263, - 264, 265, -1, 300, 301, 269, 303, 304, 305, 306, - 307, 308, -1, -1, -1, -1, 280, -1, 282, 283, + 275, -1, -1, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, -1, -1, -1, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, -1, 311, 312, 313, 314, + 315, 316, 317, 257, 258, 259, 260, 261, -1, 263, + 264, 265, -1, -1, -1, 269, -1, -1, 272, 273, + 274, 275, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, -1, -1, -1, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, + 314, 315, 316, 317, -1, 256, 257, 258, 259, 260, + 261, 63, 263, 264, 265, -1, -1, -1, 269, -1, + -1, 272, 273, 274, 275, -1, -1, -1, 279, 280, + -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, + 291, 292, 293, 294, 295, 296, -1, -1, -1, 33, + -1, 302, 36, 37, 38, -1, 40, -1, 42, 43, + 311, 45, 313, 314, -1, -1, -1, -1, 335, 336, + 337, -1, 339, -1, -1, 59, -1, -1, -1, -1, + 64, -1, -1, 41, -1, -1, 44, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 366, + 58, 59, -1, -1, -1, -1, 373, 91, -1, 33, + 377, -1, 36, 37, 38, -1, 40, -1, 42, 43, + -1, 45, -1, 390, 391, -1, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 93, -1, -1, 40, 123, + 64, -1, 126, -1, 46, 47, 48, -1, -1, 33, + 52, 53, 36, 37, 38, -1, 40, -1, 42, 43, + -1, 45, -1, 65, 66, 67, 68, 91, 287, 288, + 289, 290, -1, -1, -1, -1, -1, -1, -1, -1, + 64, -1, -1, -1, -1, -1, -1, -1, 41, 308, + 309, 44, -1, 312, -1, -1, 315, 316, 317, 123, + -1, -1, 126, -1, -1, 58, 59, 91, -1, -1, + 63, -1, -1, 33, 116, -1, 36, 37, 38, -1, + 40, -1, 42, 43, -1, 45, -1, -1, -1, 281, + -1, -1, -1, -1, -1, 287, 288, 289, 290, 123, + 93, -1, 126, -1, 64, -1, -1, -1, -1, -1, + -1, 303, 304, 305, 306, 307, 308, 309, -1, -1, + 312, -1, -1, 315, 316, 317, -1, -1, -1, -1, + -1, 91, 256, 257, 258, 259, 260, 261, 180, 263, + 264, 265, -1, -1, -1, 269, -1, -1, 272, 273, + 274, 275, -1, -1, -1, 279, 280, -1, 282, 283, + 284, 285, 286, 123, -1, 207, 126, 291, 292, 293, + 294, 295, 296, -1, 272, 273, 274, 275, 302, -1, + -1, 279, -1, -1, -1, -1, -1, 311, -1, 313, + 314, -1, -1, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 300, 301, -1, 269, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, + 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, + 294, 295, 296, 257, 258, 259, 260, 261, 302, 263, + 264, 265, -1, -1, -1, 269, -1, 311, -1, 313, + 314, -1, 58, -1, -1, -1, 280, 63, 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, - 294, 295, 296, 289, 290, -1, 33, -1, 302, 36, - 37, 38, -1, 40, -1, 42, 43, 311, 45, 313, - 314, -1, 308, 309, -1, -1, 312, -1, -1, 315, - 316, 317, 59, -1, -1, -1, -1, 64, -1, -1, - -1, 287, 288, 289, 290, -1, 33, -1, -1, 36, - 37, 38, -1, 40, 41, 42, 43, -1, 45, 305, - 306, 307, 308, 309, 91, -1, 312, -1, -1, 315, - 316, 317, -1, -1, -1, -1, -1, 64, -1, -1, - 287, 288, 289, 290, -1, -1, 33, -1, -1, 36, - 37, 38, -1, 40, -1, 42, 43, -1, 45, 126, - 307, 308, 309, -1, 91, 312, -1, -1, 315, 316, - 317, -1, -1, -1, -1, -1, -1, 64, -1, -1, - -1, 272, 273, 274, 275, -1, 33, -1, 279, 36, - 37, 38, -1, 40, 41, 42, 43, -1, 45, 126, - -1, -1, -1, -1, 91, -1, 93, 281, -1, 300, - 301, -1, -1, 287, 288, 289, 290, 64, -1, -1, + 294, 295, 296, -1, -1, -1, -1, -1, 302, 272, + 273, 274, 275, -1, -1, -1, 279, 311, 281, 313, + 314, -1, -1, -1, 287, 288, -1, 257, 258, 259, + 260, 261, -1, 263, 264, 265, -1, 300, 301, 269, + 303, 304, 305, 306, 307, 308, -1, -1, -1, -1, + 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, + -1, 291, 292, 293, 294, 295, 296, -1, -1, -1, + 33, -1, 302, 36, 37, 38, -1, 40, -1, 42, + 43, 311, 45, 313, 314, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, + -1, 64, -1, -1, -1, 287, 288, 289, 290, -1, + 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, + 43, -1, 45, 305, 306, 307, 308, 309, 91, -1, + 312, -1, -1, 315, 316, 317, -1, -1, -1, -1, + -1, 64, -1, -1, -1, 287, 288, 289, 290, -1, + 33, -1, -1, 36, 37, 38, -1, 40, -1, 42, + 43, -1, 45, 126, 306, 307, 308, 309, 91, -1, + 312, -1, -1, 315, 316, 317, -1, -1, -1, -1, + -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, + 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, + 43, -1, 45, 126, -1, 281, -1, -1, 91, -1, + 93, 287, 288, 289, 290, -1, -1, -1, -1, -1, + -1, 64, -1, -1, -1, -1, -1, 303, 304, 305, + 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, + 316, 317, -1, 126, 287, 288, 289, 290, 91, -1, + 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, + 43, -1, 45, -1, 307, 308, 309, -1, -1, 312, + -1, -1, 315, 316, 317, -1, -1, -1, -1, -1, + -1, 64, 287, 126, 289, 290, -1, -1, -1, -1, + -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, + 263, 264, 265, 308, 309, -1, 269, 312, 91, -1, + 315, 316, 317, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, 257, 258, 259, 260, 261, 302, + 263, 264, 265, 126, -1, -1, 269, -1, 311, -1, + 313, 314, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, 257, 258, 259, 260, 261, 302, + 263, 264, 265, -1, -1, -1, 269, -1, 311, -1, + 313, 314, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, 257, 258, 259, 260, 261, 302, + 263, 264, 265, -1, -1, -1, 269, -1, 311, -1, + 313, 314, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, -1, -1, -1, 33, -1, 302, + 36, 37, 38, -1, 40, 41, 42, 43, 311, 45, + 313, 314, -1, -1, 257, 258, 259, 260, 261, -1, + 263, 264, 265, -1, -1, -1, 269, -1, 64, -1, + -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, -1, 91, -1, 33, -1, 302, + 36, 37, 38, -1, 40, 41, 42, 43, 311, 45, + 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, + 126, -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 304, 305, 306, 307, 308, 309, -1, -1, 312, 126, - -1, 315, 316, 317, 91, -1, 33, -1, -1, 36, + -1, -1, -1, 58, 59, 91, 33, -1, 63, 36, + 37, 38, -1, 40, -1, 42, 43, -1, 45, -1, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 64, 93, -1, + 126, 304, 305, 306, 307, 308, 309, -1, -1, 312, + -1, -1, 315, 316, 317, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 91, -1, 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 257, 258, 259, 260, 261, -1, 263, 264, 265, -1, - -1, -1, 269, -1, 91, -1, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - 257, 258, 259, 260, 261, 302, 263, 264, 265, 126, - -1, -1, 269, -1, 311, -1, 313, 314, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - 257, 258, 259, 260, 261, 302, 263, 264, 265, -1, - -1, -1, 269, -1, 311, -1, 313, 314, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - 257, 258, 259, 260, 261, 302, 263, 264, 265, -1, - -1, -1, 269, -1, 311, -1, 313, 314, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, + -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, + -1, -1, -1, 269, 91, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, + 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, + 296, 41, -1, -1, 44, -1, 302, -1, -1, 126, + -1, -1, -1, -1, -1, 311, -1, 313, 314, 59, + -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, + -1, 33, -1, 269, 36, 37, 38, -1, 40, 41, + 42, 43, -1, 45, 280, -1, 282, 283, 284, 285, + 286, -1, -1, 93, -1, 291, 292, 293, 294, 295, + 296, -1, 64, -1, -1, -1, 302, 272, 273, 274, + 275, -1, -1, -1, 279, 311, 281, 313, 314, 256, + 257, 258, 259, 260, 261, -1, 263, 264, 265, 91, + -1, -1, 269, -1, -1, 300, 301, -1, 303, 304, + 305, 306, 307, 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - -1, -1, -1, 33, -1, 302, 36, 37, 38, -1, + -1, -1, -1, 33, 126, 302, 36, 37, 38, -1, 40, 41, 42, 43, 311, 45, 313, 314, -1, -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, 91, -1, 33, -1, 302, 36, 37, 38, -1, - 40, 41, 42, 43, 311, 45, 313, 314, -1, -1, + 40, -1, 42, 43, 311, 45, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, 126, -1, -1, -1, - -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 91, 33, -1, 63, 36, 37, 38, -1, 40, - -1, 42, 43, -1, 45, -1, -1, -1, -1, -1, - 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 64, 93, -1, 126, 304, 305, 306, - 307, 308, 309, -1, -1, 312, -1, -1, 315, 316, - 317, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 91, -1, 33, -1, -1, 36, 37, 38, -1, 40, - 41, 42, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 64, -1, 126, -1, -1, -1, -1, + -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, + -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, + 300, 263, 264, 265, -1, -1, -1, 269, -1, -1, + -1, -1, -1, -1, -1, -1, 126, -1, 280, -1, + 282, 283, 284, 285, 286, -1, 41, -1, -1, 291, + 292, 293, 294, 295, 296, -1, -1, -1, -1, -1, + 302, -1, -1, 58, 59, -1, -1, -1, 63, 311, + -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, - 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, - -1, 291, 292, 293, 294, 295, 296, -1, -1, -1, - -1, -1, 302, -1, -1, 126, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 280, -1, 282, 283, 284, 285, 286, 41, -1, -1, + 44, 291, 292, 293, 294, 295, 296, -1, -1, -1, + -1, -1, 302, -1, 58, 59, -1, -1, -1, 63, -1, 311, -1, 313, 314, -1, -1, 257, 258, 259, - 260, 261, -1, 263, 264, 265, -1, 33, -1, 269, - 36, 37, 38, -1, 40, 41, 42, 43, -1, 45, + 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, - -1, 291, 292, 293, 294, 295, 296, -1, 64, -1, - -1, -1, 302, 272, 273, 274, 275, -1, -1, -1, - 279, 311, 281, 313, 314, 256, 257, 258, 259, 260, - 261, -1, 263, 264, 265, 91, -1, -1, 269, -1, - -1, 300, 301, -1, 303, 304, 305, 306, 307, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, -1, -1, 33, - 126, 302, 36, 37, 38, -1, 40, 41, 42, 43, - 311, 45, 313, 314, -1, -1, 257, 258, 259, 260, - 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, - 64, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, 91, -1, 33, - -1, 302, 36, 37, 38, -1, 40, -1, 42, 43, - 311, 45, 313, 314, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, - 64, -1, 126, -1, -1, -1, -1, -1, 41, -1, - 40, 44, -1, -1, -1, -1, 46, 47, 48, -1, - -1, -1, 52, 53, -1, 58, 59, 91, -1, -1, - 63, -1, -1, -1, -1, 65, 66, 67, 68, -1, - -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, - -1, -1, -1, 269, -1, 41, -1, -1, 44, -1, - 93, -1, 126, -1, 280, -1, 282, 283, 284, 285, - 286, 41, -1, 59, 44, 291, 292, 293, 294, 295, - 296, -1, 112, -1, -1, -1, 302, -1, 58, 59, - -1, -1, -1, 63, -1, 311, -1, 313, 314, -1, - -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, -1, 41, -1, -1, 44, -1, - -1, -1, -1, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 58, 59, -1, 269, 176, 63, -1, -1, - -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, - 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, - 294, 295, 296, 203, -1, -1, -1, 93, 302, -1, - -1, -1, -1, -1, -1, 41, -1, 311, 44, 313, - 314, -1, -1, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 58, 59, -1, 269, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, - 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, - 294, 295, 296, -1, -1, -1, -1, 93, 302, 272, - 273, 274, 275, -1, -1, -1, 279, 311, 281, 313, - 314, -1, -1, -1, 287, 288, 289, 290, -1, -1, - -1, -1, -1, 41, -1, -1, 44, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, - 58, 59, 315, 316, 317, 63, 272, 273, 274, 275, - -1, -1, -1, 279, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, - 41, 281, -1, 44, 300, 93, -1, 287, 288, 289, - 290, -1, -1, -1, -1, -1, -1, 58, 59, -1, - 300, 301, 63, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 315, 316, 317, -1, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, 41, 93, 279, 44, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, 58, 59, - -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, + -1, 291, 292, 293, 294, 295, 296, 33, -1, -1, + 63, -1, 302, -1, -1, 41, -1, -1, -1, 45, + -1, 311, 48, 313, 314, 51, -1, -1, -1, 55, + 56, 57, 58, 59, -1, -1, -1, 63, 64, 41, + -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, + -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 102, 272, 273, 274, + 275, -1, -1, -1, 279, 41, 281, -1, 44, -1, + -1, 93, 287, 288, 289, 290, -1, -1, -1, -1, + -1, -1, 58, 59, -1, 300, 301, 63, 303, 304, + 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, + 315, 316, 317, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 191, -1, -1, 272, 273, + 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, + -1, -1, -1, 287, 288, 289, 290, -1, -1, -1, + 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, + -1, 315, 316, 317, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 41, -1, 93, 44, -1, 281, -1, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, + 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, + 276, 304, 305, 306, 307, 308, 309, -1, -1, 312, + -1, -1, 315, 316, 317, -1, -1, -1, -1, -1, + 272, 273, 274, 275, -1, 93, -1, 279, 41, 281, + -1, 44, -1, 309, -1, 287, 288, 289, 290, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 300, 301, + 63, 303, 304, 305, 306, 307, 308, 309, -1, -1, + 312, -1, -1, 315, 316, 317, 272, 273, 274, 275, + -1, -1, -1, 279, 41, 281, -1, 44, -1, -1, + 93, 287, 288, 289, 290, -1, -1, -1, -1, -1, + -1, 58, 59, -1, 300, 301, 63, 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 41, 93, -1, 44, 272, 273, 274, 275, - -1, 41, -1, 279, 44, 281, -1, -1, -1, 58, - 59, 287, 288, 289, 290, -1, -1, -1, 58, 59, - -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, - 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, - 316, 317, -1, -1, 93, -1, -1, 41, -1, -1, - 44, -1, -1, 93, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, + -1, 41, -1, -1, 44, -1, 93, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, + -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, -1, 287, - 288, 289, 290, -1, -1, -1, -1, -1, -1, 93, - -1, -1, 300, 301, -1, 303, 304, 305, 306, 307, - 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, - -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, -1, 303, 304, 305, 306, 307, 308, 309, -1, - -1, 312, -1, -1, 315, 316, 317, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, 41, 93, 279, - 44, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, 58, 59, -1, -1, -1, 63, - 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 315, 316, 317, -1, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, 93, - 279, -1, 272, 273, 274, 275, -1, 41, -1, 279, - 44, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, 300, 301, -1, 58, 59, -1, -1, -1, 63, + 288, 289, 290, 93, -1, -1, -1, -1, 41, -1, + -1, 44, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, -1, -1, 312, 58, 59, 315, 316, 317, + 63, -1, -1, -1, 272, 273, 274, 275, -1, -1, + -1, 279, -1, 281, -1, -1, -1, -1, -1, 287, + 288, 289, 290, -1, -1, -1, -1, -1, 41, -1, + 93, 44, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, -1, -1, 312, 58, 59, 315, 316, 317, + 63, -1, -1, -1, -1, -1, -1, -1, -1, 272, + 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, + 93, -1, -1, -1, -1, -1, -1, 300, 301, -1, + 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, + -1, -1, 315, 316, 317, 272, 273, 274, 275, -1, + 41, -1, 279, 44, 281, -1, -1, -1, -1, -1, + 287, 288, 289, 290, -1, -1, -1, 58, 59, -1, + -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, + 307, 308, 309, -1, -1, 312, -1, -1, 315, 316, + 317, -1, 272, 273, 274, 275, -1, -1, -1, 279, + -1, 281, 93, -1, -1, -1, -1, 287, 288, 289, + 290, -1, -1, -1, -1, -1, 41, -1, -1, 44, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 315, 316, 317, 272, 273, - 274, 275, -1, 41, -1, 279, 44, 281, -1, 93, - -1, -1, -1, 287, 288, 289, 290, -1, -1, -1, - 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, - -1, 315, 316, 317, -1, -1, -1, -1, -1, 41, - -1, -1, 44, -1, -1, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, - -1, 63, 41, -1, -1, 44, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, -1, -1, 58, - 59, -1, 287, 288, 289, 290, -1, -1, -1, -1, - -1, 93, -1, -1, -1, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, - 315, 316, 317, 41, 93, -1, 44, -1, 272, 273, - 274, 275, 41, -1, -1, 279, -1, 281, -1, -1, - 58, 59, -1, 287, 288, 289, 290, -1, -1, 58, - 59, -1, -1, -1, 63, -1, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, - -1, 315, 316, 317, -1, 93, -1, -1, -1, -1, - -1, -1, -1, -1, 93, -1, -1, -1, 272, 273, - 274, 275, 41, -1, -1, 279, -1, 281, -1, -1, - -1, -1, -1, 287, 288, 289, 290, -1, -1, 58, - 59, -1, -1, -1, 63, -1, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, - -1, 315, 316, 317, 272, 273, 274, 275, 41, -1, - -1, 279, -1, 281, 93, -1, -1, -1, -1, 287, - 288, 289, 290, -1, -1, 58, 59, -1, -1, -1, - 63, -1, 300, 301, -1, 303, 304, 305, 306, 307, - 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, - 272, 273, 274, 275, -1, -1, -1, 279, -1, 281, - 93, -1, -1, -1, -1, 287, 288, 289, 290, -1, - -1, -1, -1, 272, 273, 274, 275, -1, 300, 301, - 279, 303, 304, 305, 306, 307, 308, 309, -1, 41, - 312, -1, 44, 315, 316, 317, -1, -1, -1, -1, - -1, 300, 301, -1, 303, -1, 58, 59, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, - -1, 279, -1, 272, 273, 274, 275, -1, -1, -1, - 279, 93, 281, -1, -1, -1, -1, -1, 287, 288, - 289, 290, 300, 301, -1, -1, -1, -1, -1, -1, - -1, 300, 301, -1, 303, 304, 305, 306, 307, 308, - 309, -1, -1, 312, -1, -1, 315, 316, 317, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, - 279, 41, 281, -1, 44, -1, -1, -1, 287, 288, - 289, 290, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 300, 301, 63, 303, 304, 305, 306, 307, 308, - 309, -1, -1, 312, -1, -1, 315, 316, 317, 272, - 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, - -1, -1, -1, 93, 287, 288, 289, 290, -1, -1, - -1, 58, 59, -1, -1, -1, 63, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 33, -1, 312, - -1, -1, 315, 316, 317, 41, -1, -1, 41, 45, - -1, 44, 48, -1, -1, 51, 93, -1, -1, 55, - 56, 57, 58, 59, -1, 58, 59, 63, 64, -1, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 272, 273, 274, 275, -1, -1, -1, 279, 41, 281, - -1, 44, -1, -1, -1, 287, 288, 289, 290, -1, - 93, -1, 98, -1, -1, 58, 59, -1, 300, 301, - 63, 303, 304, 305, 306, 307, 308, 309, -1, -1, - 312, -1, -1, -1, -1, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, 58, 59, -1, -1, -1, 63, -1, + -1, -1, 312, 58, 59, 315, 316, 317, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, + 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, + -1, -1, -1, -1, 287, 288, 289, 290, 93, -1, + -1, -1, -1, 41, -1, -1, 44, 300, 301, -1, + 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, + 58, 59, 315, 316, 317, 63, -1, -1, -1, 272, + 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, + -1, -1, -1, 41, -1, 93, 44, 300, 301, -1, + 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, + 58, 59, 315, 316, 317, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 187, 272, 273, 274, 275, -1, 41, -1, 279, + -1, -1, -1, -1, -1, 93, 41, -1, -1, 44, + -1, 272, 273, 274, 275, 41, -1, -1, 279, -1, + 281, -1, -1, 58, 59, -1, 287, 288, 289, 290, + -1, -1, 58, 59, -1, -1, -1, 63, -1, 300, + 301, -1, 303, 304, 305, 306, 307, 308, 309, -1, + -1, 312, -1, -1, 315, 316, 317, -1, 93, -1, + -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, + -1, -1, -1, 41, -1, -1, 44, 272, 273, 274, + 275, 41, -1, -1, 279, -1, 281, -1, -1, -1, + 58, 59, 287, 288, 289, 290, -1, -1, 58, 59, + -1, -1, -1, 63, -1, 300, 301, -1, 303, 304, + 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, + 315, 316, 317, -1, -1, 93, -1, -1, -1, -1, + -1, -1, -1, 93, 272, 273, 274, 275, -1, -1, + -1, 279, 41, 281, -1, 44, -1, -1, -1, 287, + 288, 289, 290, -1, -1, -1, -1, -1, -1, 58, + 59, -1, 300, 301, 63, 303, 304, 305, 306, 307, + 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, + -1, -1, -1, -1, 272, 273, 274, 275, -1, 41, + -1, 279, 44, 281, 93, -1, -1, -1, -1, 287, + 288, 289, 290, -1, -1, -1, 58, 59, -1, -1, + -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, + -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, + 275, 93, -1, -1, 279, -1, 272, 273, 274, 275, + -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, + -1, 287, 288, 289, 290, 300, 301, -1, 58, 59, + -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, + 316, 317, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, 272, 273, 274, 275, -1, -1, + -1, 279, 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, 58, 59, -1, -1, -1, 63, + 290, -1, 300, 301, 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 272, 273, 274, 275, -1, - 41, -1, 279, 44, 281, -1, -1, -1, -1, 93, - 287, 288, 289, 290, -1, -1, -1, 58, 59, -1, - -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, - 307, 308, 309, -1, -1, -1, 272, -1, -1, 272, - 273, 274, 275, -1, -1, -1, 279, 41, 281, -1, - 44, -1, 93, -1, 287, 288, 289, 290, -1, -1, - -1, -1, -1, -1, 58, 59, -1, 300, 301, 305, - 303, 304, 305, 306, 307, 308, 309, -1, -1, 272, - 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, - -1, -1, -1, -1, 287, 288, 289, 290, -1, 93, - -1, 58, 59, -1, -1, -1, 63, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 272, 273, 274, - 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, 93, -1, -1, 58, - 59, -1, -1, -1, 63, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, -1, -1, -1, -1, 41, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 93, -1, 58, 59, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, 272, 273, - 274, 275, -1, -1, -1, 279, -1, 281, -1, -1, - -1, -1, -1, 287, 288, 289, 290, 58, -1, -1, - -1, 93, 63, -1, -1, -1, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, -1, 303, 304, 305, 306, 307, 308, 309, -1, - -1, -1, -1, 41, -1, -1, 44, -1, 272, 273, - 274, 275, -1, 41, -1, 279, 44, -1, 93, -1, - 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, - 58, 59, -1, -1, -1, 63, 300, 301, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, - 41, -1, 279, 44, 281, 93, -1, -1, -1, -1, - 287, 288, 289, 290, -1, 93, -1, 58, 59, -1, - -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 272, 273, 274, 275, -1, 41, -1, + -1, -1, 312, -1, -1, 315, 316, 317, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + -1, -1, -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, -1, 287, 288, - 289, 290, 93, -1, -1, 58, 59, -1, -1, -1, + 289, 290, -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, 308, + 309, -1, -1, 312, -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, - -1, -1, -1, -1, -1, 287, 288, -1, 290, -1, - 93, 41, 58, 59, 44, -1, -1, 63, 300, 301, - -1, 303, 304, 305, 306, 307, 308, -1, 58, 59, - 281, -1, -1, 63, -1, -1, 287, 288, 289, 290, - -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, - -1, -1, 303, 304, 305, 306, 307, 308, 309, -1, - -1, 312, -1, 93, 315, 316, 317, 272, 273, 274, - 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, - -1, -1, 287, 288, -1, -1, -1, -1, -1, 58, - 59, -1, -1, -1, 63, 300, 301, -1, 303, 304, - 305, 306, 307, -1, 272, 273, 274, 275, -1, 41, - -1, 279, 44, 281, 272, 273, 274, 275, -1, 287, - 288, 279, -1, 281, 93, -1, 58, 59, -1, 287, - 288, 63, 300, 301, -1, 303, 304, 305, 306, 307, - -1, -1, 300, 301, -1, 303, 304, 305, 306, 307, - -1, 272, 273, 274, 275, -1, -1, -1, 279, -1, - 281, 93, -1, -1, -1, -1, 287, 288, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, - 301, -1, 303, 304, 305, 306, 307, -1, -1, 272, - 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, - -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, + 93, -1, -1, -1, -1, 287, 288, 289, 290, -1, + -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, -1, -1, + 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, -1, 44, -1, -1, -1, 93, -1, -1, + -1, -1, 272, 273, 274, 275, -1, 58, 59, 279, + -1, 281, 63, -1, -1, -1, -1, 287, 288, 289, + 290, -1, -1, -1, -1, -1, -1, -1, -1, 41, + 300, 301, 44, 303, 304, 305, 306, 307, 308, 309, + -1, -1, 93, -1, -1, -1, 58, 59, -1, -1, + -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, + 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, + -1, 93, -1, 287, 288, 289, 290, -1, -1, -1, + 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, + 44, -1, -1, -1, -1, 93, -1, -1, -1, 272, + 273, 274, 275, -1, 58, 59, 279, -1, 281, 63, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, 301, -1, - 303, 304, 305, 306, 307, -1, 272, 273, 274, 275, - -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, 300, 301, -1, 303, 304, 305, + 303, 304, 305, 306, 307, 308, 309, -1, -1, 93, + -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, + -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, + -1, 287, 288, 289, 290, -1, -1, -1, 58, 59, + -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, -1, -1, -1, -1, -1, -1, + -1, 272, 273, 274, 275, -1, -1, -1, 279, 41, + 281, -1, 44, 93, -1, -1, 287, 288, 289, 290, + -1, -1, -1, -1, -1, -1, 58, 59, -1, 300, + 301, 63, 303, 304, 305, 306, 307, 308, 309, -1, + 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, + -1, -1, -1, -1, -1, 287, 288, 289, 290, -1, + -1, 93, 58, 59, -1, -1, -1, 63, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, -1, -1, + -1, -1, -1, -1, 272, 273, 274, 275, -1, 41, + -1, 279, 44, 281, -1, -1, -1, 93, -1, 287, + 288, 289, 290, -1, -1, -1, 58, 59, -1, -1, + -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, -1, -1, -1, -1, -1, -1, 272, 273, + 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, + -1, 93, -1, 287, 288, 289, 290, -1, -1, -1, + 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, + 304, 305, 306, 307, 308, -1, -1, -1, -1, -1, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + 41, -1, -1, 44, -1, 93, -1, 58, 59, -1, + -1, -1, 272, 273, 274, 275, -1, 58, 59, 279, + -1, 281, 63, -1, -1, -1, -1, 287, 288, -1, + 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 300, 301, 93, 303, 304, 305, 306, 307, 308, -1, + -1, -1, 93, -1, -1, 41, -1, -1, 44, -1, + 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, + -1, -1, 58, 59, -1, 287, 288, 63, -1, -1, + -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, + -1, 303, 304, 305, 306, 307, 272, 273, 274, 275, + -1, 41, -1, 279, 44, 281, -1, 93, -1, -1, + -1, 287, 288, -1, -1, -1, -1, 93, 58, 59, + -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, -1, 303, 304, 305, 306, -1, -1, -1, + 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, + -1, -1, -1, 93, -1, 287, 288, -1, -1, -1, + -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, + -1, 303, 304, 305, 306, 307, -1, 41, -1, -1, + 44, -1, -1, -1, 272, 273, 274, 275, -1, -1, + -1, 279, -1, 281, 58, 59, -1, 93, -1, 287, + 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 300, 301, -1, 303, 304, 305, 306, 307, + -1, 272, 273, 274, 275, -1, -1, -1, 279, 93, + -1, 272, 273, 274, 275, -1, -1, -1, 279, -1, + 281, -1, -1, -1, -1, -1, -1, 288, -1, 300, + 301, -1, 303, -1, -1, -1, -1, -1, -1, 300, + 301, -1, 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, + -1, -1, -1, 279, -1, 281, 272, 273, 274, 275, + -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, + -1, -1, -1, -1, 300, 301, -1, 303, 304, 305, + 306, 307, -1, -1, 300, 301, -1, 303, 304, 305, + 306, -1, 272, 273, 274, 275, -1, -1, -1, 279, + -1, 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, - 279, -1, 281, -1, -1, -1, -1, -1, -1, -1, + 300, 301, -1, 303, 304, 305, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, + -1, -1, -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 300, 301, -1, 303, 304, 305, -1, -1, -1, - 272, 273, 274, 275, -1, -1, -1, 279, -1, 281, + -1, -1, -1, -1, 300, 301, -1, 303, 272, 273, + 274, 275, -1, -1, -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 300, 301, - -1, 303, 304, + -1, -1, -1, -1, -1, -1, 300, 301, }; #define YYFINAL 1 #ifndef YYDEBUG @@ -1252,38 +1283,48 @@ static char *yyrule[] = { "subscripted : term ARROW '(' expr ')'", "subscripted : subscripted '(' expr ')'", "subscripted : subscripted '(' ')'", -"term : term ASSIGNOP term", -"term : term POWOP term", -"term : term MULOP term", -"term : term ADDOP term", -"term : term SHIFTOP term", -"term : term RELOP term", -"term : term EQOP term", -"term : term BITANDOP term", -"term : term BITOROP term", -"term : term DOTDOT term", -"term : term ANDAND term", -"term : term OROR term", +"termbinop : term ASSIGNOP term", +"termbinop : term POWOP term", +"termbinop : term MULOP term", +"termbinop : term ADDOP term", +"termbinop : term SHIFTOP term", +"termbinop : term RELOP term", +"termbinop : term EQOP term", +"termbinop : term BITANDOP term", +"termbinop : term BITOROP term", +"termbinop : term DOTDOT term", +"termbinop : term ANDAND term", +"termbinop : term OROR term", +"termbinop : term MATCHOP term", +"termunop : '-' term", +"termunop : '+' term", +"termunop : '!' term", +"termunop : '~' term", +"termunop : term POSTINC", +"termunop : term POSTDEC", +"termunop : PREINC term", +"termunop : PREDEC term", +"anonymous : '[' expr ']'", +"anonymous : '[' ']'", +"anonymous : HASHBRACK expr ';' '}'", +"anonymous : HASHBRACK ';' '}'", +"anonymous : ANONSUB startanonsub proto subattrlist block", +"termdo : DO term", +"termdo : DO block", +"termdo : DO WORD '(' ')'", +"termdo : DO WORD '(' expr ')'", +"termdo : DO scalar '(' ')'", +"termdo : DO scalar '(' expr ')'", +"term : termbinop", +"term : termunop", +"term : anonymous", +"term : termdo", "term : term '?' term ':' term", -"term : term MATCHOP term", -"term : '-' term", -"term : '+' term", -"term : '!' term", -"term : '~' term", "term : REFGEN term", -"term : term POSTINC", -"term : term POSTDEC", -"term : PREINC term", -"term : PREDEC term", "term : myattrterm", "term : LOCAL term", "term : '(' expr ')'", "term : '(' ')'", -"term : '[' expr ']'", -"term : '[' ']'", -"term : HASHBRACK expr ';' '}'", -"term : HASHBRACK ';' '}'", -"term : ANONSUB startanonsub proto subattrlist block", "term : scalar", "term : star", "term : hsh", @@ -1299,12 +1340,6 @@ static char *yyrule[] = { "term : amper '(' ')'", "term : amper '(' expr ')'", "term : NOAMP WORD listexpr", -"term : DO term", -"term : DO block", -"term : DO WORD '(' ')'", -"term : DO WORD '(' expr ')'", -"term : DO scalar '(' ')'", -"term : DO scalar '(' expr ')'", "term : LOOPEX", "term : LOOPEX term", "term : NOTOP argexpr", @@ -1360,7 +1395,7 @@ static char *yyrule[] = { #define YYMAXDEPTH 500 #endif #endif -#line 736 "perly.y" +#line 789 "perly.y" /* PROGRAM */ /* more stuff added to make perly_c.diff easier to apply */ @@ -1370,7 +1405,7 @@ static char *yyrule[] = { #endif #define yyparse() Perl_yyparse(pTHX) -#line 1446 "perly.c" +#line 1481 "perly.c" #define YYABORT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab @@ -1474,7 +1509,9 @@ yyloop: if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && + if ( +((yyn = yyrindex[yystate])) && +(yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; @@ -1484,12 +1521,12 @@ yyloop: #ifdef lint goto yynewerror; #endif -yynewerror: + yyerror("syntax error"); #ifdef lint goto yyerrlab; #endif -yyerrlab: + ++yynerrs; yyinrecovery: if (yyerrflag < 3) @@ -1565,7 +1602,7 @@ yyreduce: switch (yyn) { case 1: -#line 128 "perly.y" +#line 130 "perly.y" { #if defined(YYDEBUG) && defined(DEBUGGING) yydebug = (DEBUG_p_TEST); @@ -1574,50 +1611,50 @@ case 1: } break; case 2: -#line 135 "perly.y" +#line 137 "perly.y" { newPROG(block_end(yyvsp[-1].ival,yyvsp[0].opval)); } break; case 3: -#line 139 "perly.y" +#line 142 "perly.y" { if (PL_copline > (line_t)yyvsp[-3].ival) PL_copline = yyvsp[-3].ival; yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } break; case 4: -#line 145 "perly.y" +#line 148 "perly.y" { yyval.ival = block_start(TRUE); } break; case 5: -#line 149 "perly.y" +#line 152 "perly.y" { if (PL_copline > (line_t)yyvsp[-3].ival) PL_copline = yyvsp[-3].ival; yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } break; case 6: -#line 155 "perly.y" +#line 158 "perly.y" { yyval.ival = block_start(FALSE); } break; case 7: -#line 159 "perly.y" +#line 163 "perly.y" { yyval.opval = Nullop; } break; case 8: -#line 161 "perly.y" +#line 165 "perly.y" { yyval.opval = yyvsp[-1].opval; } break; case 9: -#line 163 "perly.y" +#line 167 "perly.y" { yyval.opval = append_list(OP_LINESEQ, (LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval); PL_pad_reset_pending = TRUE; if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; } break; case 10: -#line 170 "perly.y" +#line 175 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); } break; case 12: -#line 173 "perly.y" +#line 178 "perly.y" { if (yyvsp[-1].pval != Nullch) { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0)); } @@ -1628,75 +1665,75 @@ case 12: PL_expect = XSTATE; } break; case 13: -#line 182 "perly.y" +#line 187 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval); PL_expect = XSTATE; } break; case 14: -#line 187 "perly.y" +#line 193 "perly.y" { yyval.opval = Nullop; } break; case 15: -#line 189 "perly.y" +#line 195 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 16: -#line 191 "perly.y" +#line 197 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); } break; case 17: -#line 193 "perly.y" +#line 199 "perly.y" { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); } break; case 18: -#line 195 "perly.y" +#line 201 "perly.y" { yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); } break; case 19: -#line 197 "perly.y" +#line 203 "perly.y" { yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);} break; case 20: -#line 199 "perly.y" +#line 205 "perly.y" { yyval.opval = newFOROP(0, Nullch, yyvsp[-1].ival, Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); } break; case 21: -#line 204 "perly.y" +#line 211 "perly.y" { yyval.opval = Nullop; } break; case 22: -#line 206 "perly.y" +#line 213 "perly.y" { (yyvsp[0].opval)->op_flags |= OPf_PARENS; yyval.opval = scope(yyvsp[0].opval); } break; case 23: -#line 208 "perly.y" +#line 215 "perly.y" { PL_copline = yyvsp[-5].ival; yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval); PL_hints |= HINT_BLOCK_SCOPE; } break; case 24: -#line 214 "perly.y" +#line 222 "perly.y" { PL_copline = yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } break; case 25: -#line 218 "perly.y" +#line 226 "perly.y" { PL_copline = yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } break; case 26: -#line 224 "perly.y" +#line 233 "perly.y" { yyval.opval = Nullop; } break; case 27: -#line 226 "perly.y" +#line 235 "perly.y" { yyval.opval = scope(yyvsp[0].opval); } break; case 28: -#line 230 "perly.y" +#line 240 "perly.y" { PL_copline = yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newSTATEOP(0, yyvsp[-7].pval, @@ -1704,7 +1741,7 @@ case 28: yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } break; case 29: -#line 236 "perly.y" +#line 246 "perly.y" { PL_copline = yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newSTATEOP(0, yyvsp[-7].pval, @@ -1712,23 +1749,23 @@ case 29: yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } break; case 30: -#line 242 "perly.y" +#line 252 "perly.y" { yyval.opval = block_end(yyvsp[-6].ival, newFOROP(0, yyvsp[-9].pval, yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 31: -#line 245 "perly.y" +#line 255 "perly.y" { yyval.opval = block_end(yyvsp[-4].ival, newFOROP(0, yyvsp[-8].pval, yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP), yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 32: -#line 249 "perly.y" +#line 259 "perly.y" { yyval.opval = block_end(yyvsp[-4].ival, newFOROP(0, yyvsp[-7].pval, yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 33: -#line 253 "perly.y" +#line 263 "perly.y" { OP *forop; PL_copline = yyvsp[-9].ival; forop = newSTATEOP(0, yyvsp[-10].pval, @@ -1745,97 +1782,97 @@ case 33: yyval.opval = block_end(yyvsp[-7].ival, forop); } break; case 34: -#line 268 "perly.y" +#line 278 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, newWHILEOP(0, 1, (LOOP*)Nullop, NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 35: -#line 274 "perly.y" +#line 285 "perly.y" { yyval.opval = Nullop; } break; case 37: -#line 279 "perly.y" +#line 291 "perly.y" { (void)scan_num("1", &yylval); yyval.opval = yylval.opval; } break; case 39: -#line 284 "perly.y" +#line 297 "perly.y" { yyval.opval = invert(scalar(yyvsp[0].opval)); } break; case 40: -#line 288 "perly.y" +#line 302 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 41: -#line 292 "perly.y" +#line 306 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 42: -#line 296 "perly.y" +#line 310 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 43: -#line 300 "perly.y" +#line 314 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 44: -#line 304 "perly.y" +#line 319 "perly.y" { yyval.pval = Nullch; } break; case 46: -#line 309 "perly.y" +#line 325 "perly.y" { yyval.ival = 0; } break; case 47: -#line 311 "perly.y" +#line 327 "perly.y" { yyval.ival = 0; } break; case 48: -#line 313 "perly.y" +#line 329 "perly.y" { yyval.ival = 0; } break; case 49: -#line 315 "perly.y" +#line 331 "perly.y" { yyval.ival = 0; } break; case 50: -#line 317 "perly.y" +#line 333 "perly.y" { yyval.ival = 0; } break; case 51: -#line 321 "perly.y" +#line 337 "perly.y" { newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); } break; case 52: -#line 324 "perly.y" +#line 340 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 53: -#line 325 "perly.y" +#line 341 "perly.y" { yyval.opval = Nullop; } break; case 54: -#line 329 "perly.y" +#line 346 "perly.y" { newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } break; case 55: -#line 333 "perly.y" +#line 351 "perly.y" { newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } break; case 56: -#line 337 "perly.y" +#line 355 "perly.y" { yyval.ival = start_subparse(FALSE, 0); } break; case 57: -#line 341 "perly.y" +#line 359 "perly.y" { yyval.ival = start_subparse(FALSE, CVf_ANON); } break; case 58: -#line 345 "perly.y" +#line 363 "perly.y" { yyval.ival = start_subparse(TRUE, 0); } break; case 59: -#line 348 "perly.y" +#line 367 "perly.y" { STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a); if (strEQ(name, "BEGIN") || strEQ(name, "END") || strEQ(name, "INIT") || strEQ(name, "CHECK")) @@ -1843,361 +1880,403 @@ case 59: yyval.opval = yyvsp[0].opval; } break; case 60: -#line 356 "perly.y" +#line 376 "perly.y" { yyval.opval = Nullop; } break; case 62: -#line 361 "perly.y" +#line 382 "perly.y" { yyval.opval = Nullop; } break; case 63: -#line 363 "perly.y" +#line 384 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 64: -#line 365 "perly.y" +#line 386 "perly.y" { yyval.opval = Nullop; } break; case 65: -#line 369 "perly.y" +#line 391 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 66: -#line 371 "perly.y" +#line 393 "perly.y" { yyval.opval = Nullop; } break; case 67: -#line 374 "perly.y" +#line 397 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 68: -#line 375 "perly.y" +#line 398 "perly.y" { yyval.opval = Nullop; PL_expect = XSTATE; } break; case 69: -#line 379 "perly.y" +#line 402 "perly.y" { package(yyvsp[-1].opval); } break; case 70: -#line 381 "perly.y" +#line 404 "perly.y" { package(Nullop); } break; case 71: -#line 385 "perly.y" +#line 408 "perly.y" { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } break; case 72: -#line 387 "perly.y" +#line 410 "perly.y" { utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); } break; case 73: -#line 391 "perly.y" +#line 415 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 74: -#line 393 "perly.y" +#line 417 "perly.y" { yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 76: -#line 398 "perly.y" +#line 423 "perly.y" { yyval.opval = yyvsp[-1].opval; } break; case 77: -#line 400 "perly.y" +#line 425 "perly.y" { yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); } break; case 79: -#line 405 "perly.y" +#line 431 "perly.y" { yyval.opval = convert(yyvsp[-2].ival, OPf_STACKED, prepend_elem(OP_LIST, newGVREF(yyvsp[-2].ival,yyvsp[-1].opval), yyvsp[0].opval) ); } break; case 80: -#line 408 "perly.y" +#line 434 "perly.y" { yyval.opval = convert(yyvsp[-4].ival, OPf_STACKED, prepend_elem(OP_LIST, newGVREF(yyvsp[-4].ival,yyvsp[-2].opval), yyvsp[-1].opval) ); } break; case 81: -#line 411 "perly.y" +#line 437 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, scalar(yyvsp[-5].opval), yyvsp[-1].opval), newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); } break; case 82: -#line 416 "perly.y" +#line 442 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, scalar(yyvsp[-2].opval), newUNOP(OP_METHOD, 0, yyvsp[0].opval))); } break; case 83: -#line 420 "perly.y" +#line 446 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-1].opval, yyvsp[0].opval), newUNOP(OP_METHOD, 0, yyvsp[-2].opval))); } break; case 84: -#line 425 "perly.y" +#line 451 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-3].opval, yyvsp[-1].opval), newUNOP(OP_METHOD, 0, yyvsp[-4].opval))); } break; case 85: -#line 430 "perly.y" +#line 456 "perly.y" { yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); } break; case 86: -#line 432 "perly.y" +#line 458 "perly.y" { yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); } break; case 87: -#line 434 "perly.y" +#line 460 "perly.y" { yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); } break; case 88: -#line 436 "perly.y" +#line 462 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval), yyvsp[-4].opval)); } break; case 91: -#line 446 "perly.y" +#line 476 "perly.y" { yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval)); } break; case 92: -#line 448 "perly.y" +#line 478 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); } break; case 93: -#line 450 "perly.y" +#line 480 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, ref(newAVREF(yyvsp[-4].opval),OP_RV2AV), scalar(yyvsp[-1].opval));} break; case 94: -#line 454 "perly.y" +#line 484 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, ref(newAVREF(yyvsp[-3].opval),OP_RV2AV), scalar(yyvsp[-1].opval));} break; case 95: -#line 458 "perly.y" +#line 488 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval)); PL_expect = XOPERATOR; } break; case 96: -#line 461 "perly.y" +#line 491 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, ref(newHVREF(yyvsp[-5].opval),OP_RV2HV), jmaybe(yyvsp[-2].opval)); PL_expect = XOPERATOR; } break; case 97: -#line 466 "perly.y" +#line 496 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, ref(newHVREF(yyvsp[-4].opval),OP_RV2HV), jmaybe(yyvsp[-2].opval)); PL_expect = XOPERATOR; } break; case 98: -#line 471 "perly.y" +#line 501 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar(yyvsp[-3].opval))); } break; case 99: -#line 474 "perly.y" +#line 504 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, newCVREF(0, scalar(yyvsp[-4].opval)))); } break; case 100: -#line 479 "perly.y" +#line 509 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, newCVREF(0, scalar(yyvsp[-3].opval)))); } break; case 101: -#line 483 "perly.y" +#line 513 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar(yyvsp[-2].opval))); } break; case 102: -#line 489 "perly.y" +#line 519 "perly.y" { yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); } break; case 103: -#line 491 "perly.y" +#line 521 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 104: -#line 493 "perly.y" +#line 523 "perly.y" { if (yyvsp[-1].ival != OP_REPEAT) scalar(yyvsp[-2].opval); yyval.opval = newBINOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, scalar(yyvsp[0].opval)); } break; case 105: -#line 497 "perly.y" +#line 527 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 106: -#line 499 "perly.y" +#line 529 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 107: -#line 501 "perly.y" +#line 531 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 108: -#line 503 "perly.y" +#line 533 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 109: -#line 505 "perly.y" +#line 535 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 110: -#line 507 "perly.y" +#line 537 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 111: -#line 509 "perly.y" +#line 539 "perly.y" { yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));} break; case 112: -#line 511 "perly.y" +#line 541 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 113: -#line 513 "perly.y" +#line 543 "perly.y" { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 114: -#line 515 "perly.y" -{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 115: -#line 517 "perly.y" +#line 545 "perly.y" { yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); } break; -case 116: -#line 520 "perly.y" +case 115: +#line 550 "perly.y" { yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); } break; -case 117: -#line 522 "perly.y" +case 116: +#line 552 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 118: -#line 524 "perly.y" +case 117: +#line 554 "perly.y" { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } break; -case 119: -#line 526 "perly.y" +case 118: +#line 556 "perly.y" { yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));} break; -case 120: -#line 528 "perly.y" -{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); } -break; -case 121: -#line 530 "perly.y" +case 119: +#line 558 "perly.y" { yyval.opval = newUNOP(OP_POSTINC, 0, mod(scalar(yyvsp[-1].opval), OP_POSTINC)); } break; -case 122: -#line 533 "perly.y" +case 120: +#line 561 "perly.y" { yyval.opval = newUNOP(OP_POSTDEC, 0, mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); } break; -case 123: -#line 536 "perly.y" +case 121: +#line 564 "perly.y" { yyval.opval = newUNOP(OP_PREINC, 0, mod(scalar(yyvsp[0].opval), OP_PREINC)); } break; -case 124: -#line 539 "perly.y" +case 122: +#line 567 "perly.y" { yyval.opval = newUNOP(OP_PREDEC, 0, mod(scalar(yyvsp[0].opval), OP_PREDEC)); } break; +case 123: +#line 574 "perly.y" +{ yyval.opval = newANONLIST(yyvsp[-1].opval); } +break; +case 124: +#line 576 "perly.y" +{ yyval.opval = newANONLIST(Nullop); } +break; case 125: -#line 542 "perly.y" -{ yyval.opval = yyvsp[0].opval; } +#line 578 "perly.y" +{ yyval.opval = newANONHASH(yyvsp[-2].opval); } break; case 126: -#line 544 "perly.y" -{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } +#line 580 "perly.y" +{ yyval.opval = newANONHASH(Nullop); } break; case 127: -#line 546 "perly.y" -{ yyval.opval = sawparens(yyvsp[-1].opval); } +#line 582 "perly.y" +{ yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } break; case 128: -#line 548 "perly.y" -{ yyval.opval = sawparens(newNULLLIST()); } +#line 588 "perly.y" +{ yyval.opval = dofile(yyvsp[0].opval); } break; case 129: -#line 550 "perly.y" -{ yyval.opval = newANONLIST(yyvsp[-1].opval); } +#line 590 "perly.y" +{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); } break; case 130: -#line 552 "perly.y" -{ yyval.opval = newANONLIST(Nullop); } +#line 592 "perly.y" +{ yyval.opval = newUNOP(OP_ENTERSUB, + OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + scalar(newCVREF( + (OPpENTERSUB_AMPER<<8), + scalar(yyvsp[-2].opval) + )),Nullop)); dep();} break; case 131: -#line 554 "perly.y" -{ yyval.opval = newANONHASH(yyvsp[-2].opval); } +#line 600 "perly.y" +{ yyval.opval = newUNOP(OP_ENTERSUB, + OPf_SPECIAL|OPf_STACKED, + append_elem(OP_LIST, + yyvsp[-1].opval, + scalar(newCVREF( + (OPpENTERSUB_AMPER<<8), + scalar(yyvsp[-3].opval) + )))); dep();} break; case 132: -#line 556 "perly.y" -{ yyval.opval = newANONHASH(Nullop); } +#line 609 "perly.y" +{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();} break; case 133: -#line 558 "perly.y" -{ yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } +#line 613 "perly.y" +{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + yyvsp[-1].opval, + scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();} break; -case 134: -#line 560 "perly.y" +case 138: +#line 625 "perly.y" +{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); } +break; +case 139: +#line 627 "perly.y" +{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); } +break; +case 140: +#line 629 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 135: -#line 562 "perly.y" +case 141: +#line 631 "perly.y" +{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } +break; +case 142: +#line 633 "perly.y" +{ yyval.opval = sawparens(yyvsp[-1].opval); } +break; +case 143: +#line 635 "perly.y" +{ yyval.opval = sawparens(newNULLLIST()); } +break; +case 144: +#line 637 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 136: -#line 564 "perly.y" +case 145: +#line 639 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 137: -#line 566 "perly.y" +case 146: +#line 641 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 138: -#line 568 "perly.y" +case 147: +#line 643 "perly.y" +{ yyval.opval = yyvsp[0].opval; } +break; +case 148: +#line 645 "perly.y" { yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));} break; -case 139: -#line 570 "perly.y" +case 149: +#line 647 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 140: -#line 572 "perly.y" +case 150: +#line 649 "perly.y" { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); } break; -case 141: -#line 574 "perly.y" +case 151: +#line 651 "perly.y" { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); } break; -case 142: -#line 576 "perly.y" +case 152: +#line 653 "perly.y" { yyval.opval = prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, list(yyvsp[-1].opval), ref(yyvsp[-3].opval, OP_ASLICE))); } break; -case 143: -#line 582 "perly.y" +case 153: +#line 659 "perly.y" { yyval.opval = prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -2205,222 +2284,180 @@ case 143: ref(oopsHV(yyvsp[-4].opval), OP_HSLICE))); PL_expect = XOPERATOR; } break; -case 144: -#line 589 "perly.y" +case 154: +#line 666 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 145: -#line 591 "perly.y" +case 155: +#line 668 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); } break; -case 146: -#line 593 "perly.y" +case 156: +#line 670 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); } break; -case 147: -#line 595 "perly.y" +case 157: +#line 672 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); } break; -case 148: -#line 598 "perly.y" +case 158: +#line 675 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } break; -case 149: -#line 601 "perly.y" -{ yyval.opval = dofile(yyvsp[0].opval); } -break; -case 150: -#line 603 "perly.y" -{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); } -break; -case 151: -#line 605 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar(yyvsp[-2].opval) - )),Nullop)); dep();} -break; -case 152: -#line 613 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - append_elem(OP_LIST, - yyvsp[-1].opval, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar(yyvsp[-3].opval) - )))); dep();} -break; -case 153: -#line 622 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();} -break; -case 154: -#line 626 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - yyvsp[-1].opval, - scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();} -break; -case 155: -#line 631 "perly.y" +case 159: +#line 678 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; } break; -case 156: -#line 634 "perly.y" +case 160: +#line 681 "perly.y" { yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); } break; -case 157: -#line 636 "perly.y" +case 161: +#line 683 "perly.y" { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } break; -case 158: -#line 638 "perly.y" +case 162: +#line 685 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, 0); } break; -case 159: -#line 640 "perly.y" +case 163: +#line 687 "perly.y" { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } break; -case 160: -#line 642 "perly.y" +case 164: +#line 689 "perly.y" { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } break; -case 161: -#line 644 "perly.y" +case 165: +#line 691 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } break; -case 162: -#line 647 "perly.y" +case 166: +#line 694 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, 0); } break; -case 163: -#line 649 "perly.y" +case 167: +#line 696 "perly.y" { yyval.opval = newOP(yyvsp[-2].ival, 0); } break; -case 164: -#line 651 "perly.y" +case 168: +#line 698 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[0].opval)); } break; -case 165: -#line 654 "perly.y" +case 169: +#line 701 "perly.y" { yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); } break; -case 166: -#line 656 "perly.y" +case 170: +#line 703 "perly.y" { yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); } break; -case 167: -#line 658 "perly.y" +case 171: +#line 705 "perly.y" { yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); } break; -case 168: -#line 660 "perly.y" +case 172: +#line 707 "perly.y" { yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); } break; -case 171: -#line 666 "perly.y" +case 175: +#line 714 "perly.y" { yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); } break; -case 172: -#line 668 "perly.y" +case 176: +#line 716 "perly.y" { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } break; -case 173: -#line 672 "perly.y" +case 177: +#line 721 "perly.y" { yyval.opval = sawparens(yyvsp[-1].opval); } break; -case 174: -#line 674 "perly.y" +case 178: +#line 723 "perly.y" { yyval.opval = sawparens(newNULLLIST()); } break; -case 175: -#line 676 "perly.y" +case 179: +#line 725 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 176: -#line 678 "perly.y" +case 180: +#line 727 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 177: -#line 680 "perly.y" +case 181: +#line 729 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 178: -#line 684 "perly.y" +case 182: +#line 734 "perly.y" { yyval.opval = Nullop; } break; -case 179: -#line 686 "perly.y" +case 183: +#line 736 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 180: -#line 690 "perly.y" +case 184: +#line 740 "perly.y" { yyval.opval = Nullop; } break; -case 181: -#line 692 "perly.y" +case 185: +#line 742 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 182: -#line 694 "perly.y" +case 186: +#line 744 "perly.y" { yyval.opval = yyvsp[-1].opval; } break; -case 183: -#line 698 "perly.y" +case 187: +#line 750 "perly.y" { PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); } break; -case 184: -#line 702 "perly.y" +case 188: +#line 754 "perly.y" { yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); } break; -case 185: -#line 706 "perly.y" +case 189: +#line 758 "perly.y" { yyval.opval = newSVREF(yyvsp[0].opval); } break; -case 186: -#line 710 "perly.y" +case 190: +#line 762 "perly.y" { yyval.opval = newAVREF(yyvsp[0].opval); } break; -case 187: -#line 714 "perly.y" +case 191: +#line 766 "perly.y" { yyval.opval = newHVREF(yyvsp[0].opval); } break; -case 188: -#line 718 "perly.y" +case 192: +#line 770 "perly.y" { yyval.opval = newAVREF(yyvsp[0].opval); } break; -case 189: -#line 722 "perly.y" +case 193: +#line 774 "perly.y" { yyval.opval = newGVREF(0,yyvsp[0].opval); } break; -case 190: -#line 726 "perly.y" +case 194: +#line 779 "perly.y" { yyval.opval = scalar(yyvsp[0].opval); } break; -case 191: -#line 728 "perly.y" +case 195: +#line 781 "perly.y" { yyval.opval = scalar(yyvsp[0].opval); } break; -case 192: -#line 730 "perly.y" +case 196: +#line 783 "perly.y" { yyval.opval = scope(yyvsp[0].opval); } break; -case 193: -#line 733 "perly.y" +case 197: +#line 786 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -#line 2442 "perly.c" +#line 2477 "perly.c" } yyssp -= yym; yystate = *yyssp; diff --git a/perly.fixer b/perly.fixer index 00f583c675..16ea925144 100755 --- a/perly.fixer +++ b/perly.fixer @@ -2,7 +2,7 @@ # Fix up yacc output to allow dynamic allocation. Since perly.c # is now provided with the perl source, this should not be necessary. -# +# # However, if the user wishes to use byacc, or wishes to try another # compiler compiler (e.g. bison or yacc), this script will get run. # See makefile run_byacc target for more details. @@ -14,6 +14,9 @@ # # Additional information to make the BSD section work with SunOS 4.0.2 # tdinger@East.Sun.COM (Tom Dinger) 4/15/1991 +# +# Also edit some practices gcc -Wall finds questionable. +# input=$1 output=$2 @@ -41,6 +44,11 @@ if grep 'yaccpar 1.8 (Berkeley)' $input >/dev/null 2>&1; then -e '/^static static/s/^static //' \ -e '/^#define.WORD/,/^#define.ARROW/d' \ -e '/^int.yydebug/,/^#define.yystacksize/d' \ + -e 's/^yyerrlab:$//' \ + -e 's/^ goto yyerrlab;//' \ + -e 's/^yynewerror:$//' \ + -e 's/^ goto yynewerror;//' \ + -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \ < $output > $tmp && mv -f $tmp $output || exit 1 rm -rf $input echo "If you need to debug perly.c, you need to fix up the #line" @@ -56,6 +64,11 @@ elif grep 'yaccpar 1.9 (Berkeley)' $input >/dev/null 2>&1; then -e '/^static static/s/^static //' \ -e '/^#define.WORD/,/^#define.ARROW/d' \ -e '/^int.yydebug/,/^#define.yystacksize/d' \ + -e 's/^yyerrlab:$//' \ + -e 's/^ goto yyerrlab;//' \ + -e 's/^yynewerror:$//' \ + -e 's/^ goto yynewerror;//' \ + -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \ < $output > $tmp && mv -f $tmp $output || exit 1 rm -rf $input echo "If you need to debug perly.c, you need to fix up the #line" @@ -90,6 +90,7 @@ static void yydestruct(pTHXo_ void *ptr); %type <opval> listexpr listexprcom indirob listop method %type <opval> formname subname proto subbody cont my_scalar %type <opval> subattrlist myattrlist mysubrout myattrterm myterm +%type <opval> termbinop termunop anonymous termdo %type <pval> label %nonassoc PREC_LOW @@ -124,6 +125,7 @@ static void yydestruct(pTHXo_ void *ptr); %% /* RULES */ +/* The whole program */ prog : /* NULL */ { #if defined(YYDEBUG) && defined(DEBUGGING) @@ -135,6 +137,7 @@ prog : /* NULL */ { newPROG(block_end($1,$2)); } ; +/* An ordinary block */ block : '{' remember lineseq '}' { if (PL_copline > (line_t)$1) PL_copline = $1; @@ -155,6 +158,7 @@ mremember: /* NULL */ /* start a partial lexical scope */ { $$ = block_start(FALSE); } ; +/* A collection of "lines" in the program */ lineseq : /* NULL */ { $$ = Nullop; } | lineseq decl @@ -166,6 +170,7 @@ lineseq : /* NULL */ if ($1 && $2) PL_hints |= HINT_BLOCK_SCOPE; } ; +/* A "line" in the program */ line : label cond { $$ = newSTATEOP(0, $1, $2); } | loop /* loops add their own labels */ @@ -183,6 +188,7 @@ line : label cond PL_expect = XSTATE; } ; +/* An expression which may have a side-effect */ sideff : error { $$ = Nullop; } | expr @@ -200,6 +206,7 @@ sideff : error Nullop, $3, $1, Nullop); } ; +/* else and elsif blocks */ else : /* NULL */ { $$ = Nullop; } | ELSE mblock @@ -210,6 +217,7 @@ else : /* NULL */ PL_hints |= HINT_BLOCK_SCOPE; } ; +/* Real conditional expressions */ cond : IF '(' remember mexpr ')' mblock else { PL_copline = $1; $$ = block_end($3, @@ -220,12 +228,14 @@ cond : IF '(' remember mexpr ')' mblock else newCONDOP(0, $4, scope($6), $7)); } ; +/* Continue blocks */ cont : /* NULL */ { $$ = Nullop; } | CONTINUE block { $$ = scope($2); } ; +/* Loops: while, until, for, and a bare block */ loop : label WHILE '(' remember mtexpr ')' mblock cont { PL_copline = $2; $$ = block_end($4, @@ -270,20 +280,24 @@ loop : label WHILE '(' remember mtexpr ')' mblock cont NOLINE, Nullop, $2, $3)); } ; +/* Normal expression */ nexpr : /* NULL */ { $$ = Nullop; } | sideff ; +/* Boolean expression */ texpr : /* NULL means true */ { (void)scan_num("1", &yylval); $$ = yylval.opval; } | expr ; +/* Inverted boolean expression */ iexpr : expr { $$ = invert(scalar($1)); } ; +/* Expression with its own lexical scope */ mexpr : expr { $$ = $1; intro_my(); } ; @@ -300,11 +314,13 @@ miexpr : iexpr { $$ = $1; intro_my(); } ; +/* Optional "MAIN:"-style loop labels */ label : /* empty */ { $$ = Nullch; } | LABEL ; +/* Some kind of declaration - does not take part in the parse tree */ decl : format { $$ = 0; } | subrout @@ -325,10 +341,12 @@ formname: WORD { $$ = $1; } | /* NULL */ { $$ = Nullop; } ; +/* Unimplemented "my sub foo { }" */ mysubrout: MYSUB startsub subname proto subattrlist subbody { newMYSUB($2, $3, $4, $5, $6); } ; +/* Subroutine definition */ subrout : SUB startsub subname proto subattrlist subbody { newATTRSUB($2, $3, $4, $5, $6); } ; @@ -345,6 +363,7 @@ startformsub: /* NULL */ /* start a format subroutine scope */ { $$ = start_subparse(TRUE, 0); } ; +/* Name of a subroutine - must be a bareword, could be special */ subname : WORD { STRLEN n_a; char *name = SvPV(((SVOP*)$1)->op_sv,n_a); if (strEQ(name, "BEGIN") || strEQ(name, "END") || strEQ(name, "INIT") || strEQ(name, "CHECK")) @@ -352,11 +371,13 @@ subname : WORD { STRLEN n_a; char *name = SvPV(((SVOP*)$1)->op_sv,n_a); $$ = $1; } ; +/* Subroutine prototype */ proto : /* NULL */ { $$ = Nullop; } | THING ; +/* Optional list of subroutine attributes */ subattrlist: /* NULL */ { $$ = Nullop; } | COLONATTR THING @@ -365,12 +386,14 @@ subattrlist: /* NULL */ { $$ = Nullop; } ; +/* List of attributes for a "my" variable declaration */ myattrlist: COLONATTR THING { $$ = $2; } | COLONATTR { $$ = Nullop; } ; +/* Subroutine body - either null or a block */ subbody : block { $$ = $1; } | ';' { $$ = Nullop; PL_expect = XSTATE; } ; @@ -387,6 +410,7 @@ use : USE startsub { utilize($1, $2, $4, $5, $6); } ; +/* Ordinary expressions; logical combinations */ expr : expr ANDOP expr { $$ = newLOGOP(OP_AND, 0, $1, $3); } | expr OROP expr @@ -394,6 +418,7 @@ expr : expr ANDOP expr | argexpr %prec PREC_LOW ; +/* Expressions are a list of terms joined by commas */ argexpr : argexpr ',' { $$ = $1; } | argexpr ',' term @@ -401,143 +426,205 @@ argexpr : argexpr ',' | term %prec PREC_LOW ; -listop : LSTOP indirob argexpr +/* List operators */ +listop : LSTOP indirob argexpr /* print $fh @args */ { $$ = convert($1, OPf_STACKED, prepend_elem(OP_LIST, newGVREF($1,$2), $3) ); } - | FUNC '(' indirob expr ')' + | FUNC '(' indirob expr ')' /* print ($fh @args */ { $$ = convert($1, OPf_STACKED, prepend_elem(OP_LIST, newGVREF($1,$3), $4) ); } - | term ARROW method '(' listexprcom ')' + | term ARROW method '(' listexprcom ')' /* $foo->bar(list) */ { $$ = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, scalar($1), $5), newUNOP(OP_METHOD, 0, $3))); } - | term ARROW method + | term ARROW method /* $foo->bar */ { $$ = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, scalar($1), newUNOP(OP_METHOD, 0, $3))); } - | METHOD indirob listexpr + | METHOD indirob listexpr /* new Class @args */ { $$ = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, $2, $3), newUNOP(OP_METHOD, 0, $1))); } - | FUNCMETH indirob '(' listexprcom ')' + | FUNCMETH indirob '(' listexprcom ')' /* method $object (@args) */ { $$ = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, $2, $4), newUNOP(OP_METHOD, 0, $1))); } - | LSTOP listexpr + | LSTOP listexpr /* print @args */ { $$ = convert($1, 0, $2); } - | FUNC '(' listexprcom ')' + | FUNC '(' listexprcom ')' /* print (@args) */ { $$ = convert($1, 0, $3); } - | LSTOPSUB startanonsub block + | LSTOPSUB startanonsub block /* map { foo } ... */ { $3 = newANONATTRSUB($2, 0, Nullop, $3); } - listexpr %prec LSTOP + listexpr %prec LSTOP /* ... @bar */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, $3, $5), $1)); } ; +/* Names of methods. May use $object->$methodname */ method : METHOD | scalar ; -subscripted: star '{' expr ';' '}' +/* Some kind of subscripted expression */ +subscripted: star '{' expr ';' '}' /* *main::{something} */ + /* In this and all the hash accessors, ';' is + * provided by the tokeniser */ { $$ = newBINOP(OP_GELEM, 0, $1, scalar($3)); } - | scalar '[' expr ']' + | scalar '[' expr ']' /* $array[$element] */ { $$ = newBINOP(OP_AELEM, 0, oopsAV($1), scalar($3)); } - | term ARROW '[' expr ']' + | term ARROW '[' expr ']' /* somearef->[$element] */ { $$ = newBINOP(OP_AELEM, 0, ref(newAVREF($1),OP_RV2AV), scalar($4));} - | subscripted '[' expr ']' + | subscripted '[' expr ']' /* $foo->[$bar]->[$baz] */ { $$ = newBINOP(OP_AELEM, 0, ref(newAVREF($1),OP_RV2AV), scalar($3));} - | scalar '{' expr ';' '}' + | scalar '{' expr ';' '}' /* $foo->{bar();} */ { $$ = newBINOP(OP_HELEM, 0, oopsHV($1), jmaybe($3)); PL_expect = XOPERATOR; } - | term ARROW '{' expr ';' '}' + | term ARROW '{' expr ';' '}' /* somehref->{bar();} */ { $$ = newBINOP(OP_HELEM, 0, ref(newHVREF($1),OP_RV2HV), jmaybe($4)); PL_expect = XOPERATOR; } - | subscripted '{' expr ';' '}' + | subscripted '{' expr ';' '}' /* $foo->[bar]->{baz;} */ { $$ = newBINOP(OP_HELEM, 0, ref(newHVREF($1),OP_RV2HV), jmaybe($3)); PL_expect = XOPERATOR; } - | term ARROW '(' ')' + | term ARROW '(' ')' /* $subref->() */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar($1))); } - | term ARROW '(' expr ')' + | term ARROW '(' expr ')' /* $subref->(@args) */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, $4, newCVREF(0, scalar($1)))); } - | subscripted '(' expr ')' + | subscripted '(' expr ')' /* $foo->{bar}->(@args) */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, $3, newCVREF(0, scalar($1)))); } - | subscripted '(' ')' + | subscripted '(' ')' /* $foo->{bar}->() */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar($1))); } + ; - - -term : term ASSIGNOP term +/* Binary operators between terms */ +termbinop : term ASSIGNOP term /* $x = $y */ { $$ = newASSIGNOP(OPf_STACKED, $1, $2, $3); } - | term POWOP term + | term POWOP term /* $x ** $y */ { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term MULOP term + | term MULOP term /* $x * $y, $x x $y */ { if ($2 != OP_REPEAT) scalar($1); $$ = newBINOP($2, 0, $1, scalar($3)); } - | term ADDOP term + | term ADDOP term /* $x + $y */ { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term SHIFTOP term + | term SHIFTOP term /* $x >> $y, $x << $y */ { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term RELOP term + | term RELOP term /* $x > $y, etc. */ { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term EQOP term + | term EQOP term /* $x == $y, $x eq $y */ { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term BITANDOP term + | term BITANDOP term /* $x & $y */ { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term BITOROP term + | term BITOROP term /* $x | $y */ { $$ = newBINOP($2, 0, scalar($1), scalar($3)); } - | term DOTDOT term + | term DOTDOT term /* $x..$y, $x...$y */ { $$ = newRANGE($2, scalar($1), scalar($3));} - | term ANDAND term + | term ANDAND term /* $x && $y */ { $$ = newLOGOP(OP_AND, 0, $1, $3); } - | term OROR term + | term OROR term /* $x || $y */ { $$ = newLOGOP(OP_OR, 0, $1, $3); } - | term '?' term ':' term - { $$ = newCONDOP(0, $1, $3, $5); } - | term MATCHOP term + | term MATCHOP term /* $x =~ /$y/ */ { $$ = bind_match($2, $1, $3); } + ; - | '-' term %prec UMINUS +/* Unary operators and terms */ +termunop : '-' term %prec UMINUS /* -$x */ { $$ = newUNOP(OP_NEGATE, 0, scalar($2)); } - | '+' term %prec UMINUS + | '+' term %prec UMINUS /* +$x */ { $$ = $2; } - | '!' term + | '!' term /* !$x */ { $$ = newUNOP(OP_NOT, 0, scalar($2)); } - | '~' term + | '~' term /* ~$x */ { $$ = newUNOP(OP_COMPLEMENT, 0, scalar($2));} - | REFGEN term - { $$ = newUNOP(OP_REFGEN, 0, mod($2,OP_REFGEN)); } - | term POSTINC + | term POSTINC /* $x++ */ { $$ = newUNOP(OP_POSTINC, 0, mod(scalar($1), OP_POSTINC)); } - | term POSTDEC + | term POSTDEC /* $x-- */ { $$ = newUNOP(OP_POSTDEC, 0, mod(scalar($1), OP_POSTDEC)); } - | PREINC term + | PREINC term /* ++$x */ { $$ = newUNOP(OP_PREINC, 0, mod(scalar($2), OP_PREINC)); } - | PREDEC term + | PREDEC term /* --$x */ { $$ = newUNOP(OP_PREDEC, 0, mod(scalar($2), OP_PREDEC)); } + + ; + +/* Constructors for anonymous data */ +anonymous: '[' expr ']' + { $$ = newANONLIST($2); } + | '[' ']' + { $$ = newANONLIST(Nullop); } + | HASHBRACK expr ';' '}' %prec '(' /* { foo => "Bar" } */ + { $$ = newANONHASH($2); } + | HASHBRACK ';' '}' %prec '(' /* { } (';' by tokener) */ + { $$ = newANONHASH(Nullop); } + | ANONSUB startanonsub proto subattrlist block %prec '(' + { $$ = newANONATTRSUB($2, $3, $4, $5); } + + ; + +/* Things called with "do" */ +termdo : DO term %prec UNIOP /* do $filename */ + { $$ = dofile($2); } + | DO block %prec '(' /* do { code */ + { $$ = newUNOP(OP_NULL, OPf_SPECIAL, scope($2)); } + | DO WORD '(' ')' /* do somesub() */ + { $$ = newUNOP(OP_ENTERSUB, + OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + scalar(newCVREF( + (OPpENTERSUB_AMPER<<8), + scalar($2) + )),Nullop)); dep();} + | DO WORD '(' expr ')' /* do somesub(@args) */ + { $$ = newUNOP(OP_ENTERSUB, + OPf_SPECIAL|OPf_STACKED, + append_elem(OP_LIST, + $4, + scalar(newCVREF( + (OPpENTERSUB_AMPER<<8), + scalar($2) + )))); dep();} + | DO scalar '(' ')' /* do $subref () */ + { $$ = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + scalar(newCVREF(0,scalar($2))), Nullop)); dep();} + | DO scalar '(' expr ')' /* do $subref (@args) */ + { $$ = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + $4, + scalar(newCVREF(0,scalar($2))))); dep();} + + ; + +term : termbinop + | termunop + | anonymous + | termdo + | term '?' term ':' term + { $$ = newCONDOP(0, $1, $3, $5); } + | REFGEN term /* \$x, \@y, \%z */ + { $$ = newUNOP(OP_REFGEN, 0, mod($2,OP_REFGEN)); } | myattrterm %prec UNIOP { $$ = $1; } | LOCAL term %prec UNIOP @@ -546,16 +633,6 @@ term : term ASSIGNOP term { $$ = sawparens($2); } | '(' ')' { $$ = sawparens(newNULLLIST()); } - | '[' expr ']' - { $$ = newANONLIST($2); } - | '[' ']' - { $$ = newANONLIST(Nullop); } - | HASHBRACK expr ';' '}' %prec '(' - { $$ = newANONHASH($2); } - | HASHBRACK ';' '}' %prec '(' - { $$ = newANONHASH(Nullop); } - | ANONSUB startanonsub proto subattrlist block %prec '(' - { $$ = newANONATTRSUB($2, $3, $4, $5); } | scalar %prec '(' { $$ = $1; } | star %prec '(' @@ -564,21 +641,21 @@ term : term ASSIGNOP term { $$ = $1; } | ary %prec '(' { $$ = $1; } - | arylen %prec '(' + | arylen %prec '(' /* $#x, $#{ something } */ { $$ = newUNOP(OP_AV2ARYLEN, 0, ref($1, OP_AV2ARYLEN));} | subscripted { $$ = $1; } - | '(' expr ')' '[' expr ']' + | '(' expr ')' '[' expr ']' /* list slice */ { $$ = newSLICEOP(0, $5, $2); } - | '(' ')' '[' expr ']' + | '(' ')' '[' expr ']' /* empty list slice! */ { $$ = newSLICEOP(0, $4, Nullop); } - | ary '[' expr ']' + | ary '[' expr ']' /* array slice */ { $$ = prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, list($3), ref($1, OP_ASLICE))); } - | ary '{' expr ';' '}' + | ary '{' expr ';' '}' /* @hash{@keys} */ { $$ = prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -587,87 +664,59 @@ term : term ASSIGNOP term PL_expect = XOPERATOR; } | THING %prec '(' { $$ = $1; } - | amper + | amper /* &foo; */ { $$ = newUNOP(OP_ENTERSUB, 0, scalar($1)); } - | amper '(' ')' + | amper '(' ')' /* &foo() */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($1)); } - | amper '(' expr ')' + | amper '(' expr ')' /* &foo(@args) */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, $3, scalar($1))); } - | NOAMP WORD listexpr + | NOAMP WORD listexpr /* foo(@args) */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, $3, scalar($2))); } - | DO term %prec UNIOP - { $$ = dofile($2); } - | DO block %prec '(' - { $$ = newUNOP(OP_NULL, OPf_SPECIAL, scope($2)); } - | DO WORD '(' ')' - { $$ = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar($2) - )),Nullop)); dep();} - | DO WORD '(' expr ')' - { $$ = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - append_elem(OP_LIST, - $4, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar($2) - )))); dep();} - | DO scalar '(' ')' - { $$ = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF(0,scalar($2))), Nullop)); dep();} - | DO scalar '(' expr ')' - { $$ = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - $4, - scalar(newCVREF(0,scalar($2))))); dep();} - | LOOPEX + | LOOPEX /* loop exiting command (goto, last, dump, etc) */ { $$ = newOP($1, OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; } | LOOPEX term { $$ = newLOOPEX($1,$2); } - | NOTOP argexpr + | NOTOP argexpr /* not $foo */ { $$ = newUNOP(OP_NOT, 0, scalar($2)); } - | UNIOP + | UNIOP /* Unary op, $_ implied */ { $$ = newOP($1, 0); } - | UNIOP block + | UNIOP block /* eval { foo }, I *think* */ { $$ = newUNOP($1, 0, $2); } - | UNIOP term + | UNIOP term /* Unary op */ { $$ = newUNOP($1, 0, $2); } - | UNIOPSUB term + | UNIOPSUB term /* Sub treated as unop */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, $2, scalar($1))); } - | FUNC0 + | FUNC0 /* Nullary operator */ { $$ = newOP($1, 0); } | FUNC0 '(' ')' { $$ = newOP($1, 0); } - | FUNC0SUB + | FUNC0SUB /* Sub treated as nullop */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($1)); } - | FUNC1 '(' ')' + | FUNC1 '(' ')' /* not () */ { $$ = newOP($1, OPf_SPECIAL); } - | FUNC1 '(' expr ')' + | FUNC1 '(' expr ')' /* not($foo) */ { $$ = newUNOP($1, 0, $3); } - | PMFUNC '(' term ')' + | PMFUNC '(' term ')' /* split (/foo/) */ { $$ = pmruntime($1, $3, Nullop); } - | PMFUNC '(' term ',' term ')' + | PMFUNC '(' term ',' term ')' /* split (/foo/,$bar) */ { $$ = pmruntime($1, $3, $5); } | WORD | listop ; +/* "my" declarations, with optional attributes */ myattrterm: MY myterm myattrlist { $$ = my_attrs($2,$3); } | MY myterm { $$ = localize($2,$1); } ; +/* Things that can be "my"'d */ myterm : '(' expr ')' { $$ = sawparens($2); } | '(' ')' @@ -680,6 +729,7 @@ myterm : '(' expr ')' { $$ = $1; } ; +/* Basic list expressions */ listexpr: /* NULL */ %prec PREC_LOW { $$ = Nullop; } | argexpr %prec PREC_LOW @@ -694,6 +744,8 @@ listexprcom: /* NULL */ { $$ = $1; } ; +/* A little bit of trickery to make "for my $foo (@bar)" actually be + lexical */ my_scalar: scalar { PL_in_my = 0; $$ = my($1); } ; @@ -722,6 +774,7 @@ star : '*' indirob { $$ = newGVREF(0,$2); } ; +/* Indirect objects */ indirob : WORD { $$ = scalar($1); } | scalar %prec PREC_LOW diff --git a/perly_c.diff b/perly_c.diff index 20990601d7..c15e95be27 100644 --- a/perly_c.diff +++ b/perly_c.diff @@ -1,189 +1,433 @@ -*** y.tab.c.orig Thu Aug 26 22:31:26 1999 ---- y.tab.c Thu Aug 26 22:32:22 1999 -*************** -*** 1448,1457 **** - yyparse() - { - register int yym, yyn, yystate; - #if YYDEBUG - register char *yys; -! extern char *getenv(); - - if (yys = getenv("YYDEBUG")) - { - yyn = *yys; ---- 1448,1477 ---- - yyparse() - { - register int yym, yyn, yystate; -+ register short *yyssp; -+ register YYSTYPE *yyvsp; -+ short* yyss; -+ YYSTYPE* yyvs; -+ unsigned yystacksize = YYSTACKSIZE; -+ int retval = 0; - #if YYDEBUG - register char *yys; -! #endif - -+ struct ysv *ysave; -+ #ifdef USE_ITHREADS -+ ENTER; /* force yydestruct() before we return */ -+ #endif -+ New(73, ysave, 1, struct ysv); -+ SAVEDESTRUCTOR_X(yydestruct, ysave); -+ ysave->oldyydebug = yydebug; -+ ysave->oldyynerrs = yynerrs; -+ ysave->oldyyerrflag = yyerrflag; -+ ysave->oldyychar = yychar; -+ ysave->oldyyval = yyval; -+ ysave->oldyylval = yylval; -+ -+ #if YYDEBUG - if (yys = getenv("YYDEBUG")) - { - yyn = *yys; -*************** -*** 1464,1469 **** ---- 1484,1499 ---- - yyerrflag = 0; - yychar = (-1); - -+ /* -+ ** Initialize private stacks (yyparse may be called from an action) -+ */ -+ New(73, yyss, yystacksize, short); -+ New(73, yyvs, yystacksize, YYSTYPE); -+ ysave->yyss = yyss; -+ ysave->yyvs = yyvs; -+ if (!yyvs || !yyss) -+ goto yyoverflow; -+ - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; -*************** -*** 1494,1500 **** - #endif - if (yyssp >= yyss + yystacksize - 1) - { -! goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; ---- 1524,1542 ---- - #endif - if (yyssp >= yyss + yystacksize - 1) - { -! /* -! ** reallocate and recover. Note that pointers -! ** have to be reset, or bad things will happen -! */ -! int yyps_index = (yyssp - yyss); -! int yypv_index = (yyvsp - yyvs); -! yystacksize += YYSTACKSIZE; -! ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); -! ysave->yyss = Renew(yyss, yystacksize, short); -! if (!yyvs || !yyss) -! goto yyoverflow; -! yyssp = yyss + yyps_index; -! yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; -*************** -*** 1535,1541 **** - #endif - if (yyssp >= yyss + yystacksize - 1) - { -! goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; ---- 1577,1595 ---- - #endif - if (yyssp >= yyss + yystacksize - 1) - { -! /* -! ** reallocate and recover. Note that pointers -! ** have to be reset, or bad things will happen -! */ -! int yyps_index = (yyssp - yyss); -! int yypv_index = (yyvsp - yyvs); -! yystacksize += YYSTACKSIZE; -! ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); -! ysave->yyss = Renew(yyss, yystacksize, short); -! if (!yyvs || !yyss) -! goto yyoverflow; -! yyssp = yyss + yyps_index; -! yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; -*************** -*** 2481,2495 **** - #endif - if (yyssp >= yyss + yystacksize - 1) - { -! goto yyoverflow; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; - yyoverflow: -! yyerror("yacc stack overflow"); - yyabort: -! return (1); - yyaccept: -! return (0); - } ---- 2535,2583 ---- - #endif - if (yyssp >= yyss + yystacksize - 1) - { -! /* -! ** reallocate and recover. Note that pointers -! ** have to be reset, or bad things will happen -! */ -! int yyps_index = (yyssp - yyss); -! int yypv_index = (yyvsp - yyvs); -! yystacksize += YYSTACKSIZE; -! ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); -! ysave->yyss = Renew(yyss, yystacksize, short); -! if (!yyvs || !yyss) -! goto yyoverflow; -! yyssp = yyss + yyps_index; -! yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; - yyoverflow: -! yyerror("Out of memory for yacc stack"); - yyabort: -! retval = 1; - yyaccept: -! #ifdef USE_ITHREADS -! LEAVE; /* force yydestruct() before we return */ -! #endif -! return retval; -! } -! -! #ifdef PERL_OBJECT -! #include "XSUB.h" -! #endif -! -! static void -! yydestruct(pTHXo_ void *ptr) -! { -! struct ysv* ysave = (struct ysv*)ptr; -! if (ysave->yyss) Safefree(ysave->yyss); -! if (ysave->yyvs) Safefree(ysave->yyvs); -! yydebug = ysave->oldyydebug; -! yynerrs = ysave->oldyynerrs; -! yyerrflag = ysave->oldyyerrflag; -! yychar = ysave->oldyychar; -! yyval = ysave->oldyyval; -! yylval = ysave->oldyylval; -! Safefree(ysave); - } +--- perly.c.orig Sun Jun 10 21:13:50 2001 ++++ perly.c Sun Jun 10 21:13:51 2001 +@@ -50,70 +50,9 @@ + #define yylex yylex_r + #endif + +-#line 54 "y.tab.c" +-#define WORD 257 +-#define METHOD 258 +-#define FUNCMETH 259 +-#define THING 260 +-#define PMFUNC 261 +-#define PRIVATEREF 262 +-#define FUNC0SUB 263 +-#define UNIOPSUB 264 +-#define LSTOPSUB 265 +-#define LABEL 266 +-#define FORMAT 267 +-#define SUB 268 +-#define ANONSUB 269 +-#define PACKAGE 270 +-#define USE 271 +-#define WHILE 272 +-#define UNTIL 273 +-#define IF 274 +-#define UNLESS 275 +-#define ELSE 276 +-#define ELSIF 277 +-#define CONTINUE 278 +-#define FOR 279 +-#define LOOPEX 280 +-#define DOTDOT 281 +-#define FUNC0 282 +-#define FUNC1 283 +-#define FUNC 284 +-#define UNIOP 285 +-#define LSTOP 286 +-#define RELOP 287 +-#define EQOP 288 +-#define MULOP 289 +-#define ADDOP 290 +-#define DOLSHARP 291 +-#define DO 292 +-#define HASHBRACK 293 +-#define NOAMP 294 +-#define LOCAL 295 +-#define MY 296 +-#define MYSUB 297 +-#define COLONATTR 298 +-#define PREC_LOW 299 +-#define OROP 300 +-#define ANDOP 301 +-#define NOTOP 302 +-#define ASSIGNOP 303 +-#define OROR 304 +-#define ANDAND 305 +-#define BITOROP 306 +-#define BITANDOP 307 +-#define SHIFTOP 308 +-#define MATCHOP 309 +-#define UMINUS 310 +-#define REFGEN 311 +-#define POWOP 312 +-#define PREINC 313 +-#define PREDEC 314 +-#define POSTINC 315 +-#define POSTDEC 316 +-#define ARROW 317 ++#line 54 "perly.c" + #define YYERRCODE 256 +-short yylhs[] = { -1, ++static short yylhs[] = { -1, + 54, 0, 8, 6, 9, 7, 10, 10, 10, 11, + 11, 11, 11, 24, 24, 24, 24, 24, 24, 24, + 14, 14, 14, 13, 13, 42, 42, 12, 12, 12, +@@ -135,7 +74,7 @@ + 48, 33, 33, 34, 34, 34, 43, 23, 18, 19, + 20, 21, 22, 35, 35, 35, 35, + }; +-short yylen[] = { 2, ++static short yylen[] = { 2, + 0, 2, 4, 0, 4, 0, 0, 2, 2, 2, + 1, 2, 3, 1, 1, 3, 3, 3, 3, 3, + 0, 2, 6, 7, 7, 0, 2, 8, 8, 10, +@@ -157,7 +96,7 @@ + 1, 0, 1, 0, 1, 2, 1, 2, 2, 2, + 2, 2, 2, 1, 1, 1, 1, + }; +-short yydefred[] = { 1, ++static short yydefred[] = { 1, + 0, 7, 0, 45, 58, 56, 0, 56, 56, 8, + 46, 9, 11, 48, 0, 47, 49, 50, 0, 0, + 0, 70, 71, 0, 14, 4, 173, 0, 0, 154, +@@ -199,7 +138,7 @@ + 0, 22, 0, 0, 0, 31, 5, 0, 30, 0, + 0, 33, 0, 23, + }; +-short yydgoto[] = { 1, ++static short yydgoto[] = { 1, + 10, 11, 20, 104, 19, 95, 370, 98, 359, 3, + 12, 13, 70, 375, 285, 72, 73, 74, 75, 76, + 77, 78, 79, 291, 81, 292, 281, 283, 286, 294, +@@ -207,7 +146,7 @@ + 327, 156, 289, 271, 225, 14, 83, 137, 84, 85, + 86, 87, 15, 2, 16, 17, 18, 93, 278, + }; +-short yysindex[] = { 0, ++static short yysindex[] = { 0, + 0, 0, -132, 0, 0, 0, -51, 0, 0, 0, + 0, 0, 0, 0, 650, 0, 0, 0, -239, -215, + 5, 0, 0, -215, 0, 0, 0, -31, -31, 0, +@@ -249,7 +188,7 @@ + 449, 0, 2181, -150, 340, 0, 0, 355, 0, 216, + 216, 0, -123, 0, + }; +-short yyrindex[] = { 0, ++static short yyrindex[] = { 0, + 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 274, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +@@ -291,7 +230,7 @@ + 917, 0, 0, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 179, 0, + }; +-short yygindex[] = { 0, ++static short yygindex[] = { 0, + 0, 0, 196, 425, 0, -2, 0, 37, 634, -94, + 0, 0, 0, -323, -15, 2445, 0, 999, 414, 417, + 0, 0, 0, 463, -43, 0, 0, 321, -198, 103, +@@ -300,7 +239,7 @@ + 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + #define YYTABLESIZE 4568 +-short yytable[] = { 71, ++static short yytable[] = { 71, + 197, 65, 121, 227, 65, 111, 220, 22, 198, 293, + 139, 296, 315, 275, 305, 102, 273, 88, 113, 228, + 60, 113, 279, 65, 317, 60, 182, 254, 325, 101, +@@ -759,7 +698,7 @@ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 77, + }; +-short yycheck[] = { 15, ++static short yycheck[] = { 15, + 95, 36, 46, 41, 36, 40, 59, 59, 100, 208, + 54, 41, 59, 199, 41, 40, 196, 257, 41, 93, + 123, 44, 202, 36, 93, 59, 40, 40, 59, 29, +@@ -1224,7 +1163,7 @@ + #endif + #define YYMAXTOKEN 317 + #if YYDEBUG +-char *yyname[] = { ++static char *yyname[] = { + "end-of-file",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, + "'!'",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,0,0,0,0,0,0, +@@ -1241,7 +1180,7 @@ + "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP", + "PREINC","PREDEC","POSTINC","POSTDEC","ARROW", + }; +-char *yyrule[] = { ++static char *yyrule[] = { + "$accept : prog", + "$$1 :", + "prog : $$1 lineseq", +@@ -1456,17 +1395,6 @@ + #define YYMAXDEPTH 500 + #endif + #endif +-int yydebug; +-int yynerrs; +-int yyerrflag; +-int yychar; +-short *yyssp; +-YYSTYPE *yyvsp; +-YYSTYPE yyval; +-YYSTYPE yylval; +-short yyss[YYSTACKSIZE]; +-YYSTYPE yyvs[YYSTACKSIZE]; +-#define yystacksize YYSTACKSIZE + #line 789 "perly.y" + /* PROGRAM */ + +@@ -1477,7 +1405,7 @@ + #endif + #define yyparse() Perl_yyparse(pTHX) + +-#line 1481 "y.tab.c" ++#line 1481 "perly.c" + #define YYABORT goto yyabort + #define YYACCEPT goto yyaccept + #define YYERROR goto yyerrlab +@@ -1485,10 +1413,30 @@ + yyparse() + { + register int yym, yyn, yystate; ++ register short *yyssp; ++ register YYSTYPE *yyvsp; ++ short* yyss; ++ YYSTYPE* yyvs; ++ unsigned yystacksize = YYSTACKSIZE; ++ int retval = 0; + #if YYDEBUG + register char *yys; +- extern char *getenv(); ++#endif + ++ struct ysv *ysave; ++#ifdef USE_ITHREADS ++ ENTER; /* force yydestruct() before we return */ ++#endif ++ New(73, ysave, 1, struct ysv); ++ SAVEDESTRUCTOR_X(yydestruct, ysave); ++ ysave->oldyydebug = yydebug; ++ ysave->oldyynerrs = yynerrs; ++ ysave->oldyyerrflag = yyerrflag; ++ ysave->oldyychar = yychar; ++ ysave->oldyyval = yyval; ++ ysave->oldyylval = yylval; ++ ++#if YYDEBUG + if (yys = getenv("YYDEBUG")) + { + yyn = *yys; +@@ -1501,6 +1449,16 @@ + yyerrflag = 0; + yychar = (-1); + ++ /* ++ ** Initialize private stacks (yyparse may be called from an action) ++ */ ++ New(73, yyss, yystacksize, short); ++ New(73, yyvs, yystacksize, YYSTYPE); ++ ysave->yyss = yyss; ++ ysave->yyvs = yyvs; ++ if (!yyvs || !yyss) ++ goto yyoverflow; ++ + yyssp = yyss; + yyvsp = yyvs; + *yyssp = yystate = 0; +@@ -1516,7 +1474,7 @@ + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; +- printf("yydebug: state %d, reading %d (%s)\n", yystate, ++ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate, + yychar, yys); + } + #endif +@@ -1526,12 +1484,24 @@ + { + #if YYDEBUG + if (yydebug) +- printf("yydebug: state %d, shifting to state %d\n", ++ PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n", + yystate, yytable[yyn]); + #endif + if (yyssp >= yyss + yystacksize - 1) + { +- goto yyoverflow; ++ /* ++ ** reallocate and recover. Note that pointers ++ ** have to be reset, or bad things will happen ++ */ ++ int yyps_index = (yyssp - yyss); ++ int yypv_index = (yyvsp - yyvs); ++ yystacksize += YYSTACKSIZE; ++ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); ++ ysave->yyss = Renew(yyss, yystacksize, short); ++ if (!yyvs || !yyss) ++ goto yyoverflow; ++ yyssp = yyss + yyps_index; ++ yyvsp = yyvs + yypv_index; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; +@@ -1549,12 +1519,12 @@ + #ifdef lint + goto yynewerror; + #endif +-yynewerror: ++ + yyerror("syntax error"); + #ifdef lint + goto yyerrlab; + #endif +-yyerrlab: ++ + ++yynerrs; + yyinrecovery: + if (yyerrflag < 3) +@@ -1567,12 +1537,24 @@ + { + #if YYDEBUG + if (yydebug) +- printf("yydebug: state %d, error recovery shifting\ ++ PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery shifting\ + to state %d\n", *yyssp, yytable[yyn]); + #endif + if (yyssp >= yyss + yystacksize - 1) + { +- goto yyoverflow; ++ /* ++ ** reallocate and recover. Note that pointers ++ ** have to be reset, or bad things will happen ++ */ ++ int yyps_index = (yyssp - yyss); ++ int yypv_index = (yyvsp - yyvs); ++ yystacksize += YYSTACKSIZE; ++ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); ++ ysave->yyss = Renew(yyss, yystacksize, short); ++ if (!yyvs || !yyss) ++ goto yyoverflow; ++ yyssp = yyss + yyps_index; ++ yyvsp = yyvs + yypv_index; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; +@@ -1582,7 +1564,7 @@ + { + #if YYDEBUG + if (yydebug) +- printf("yydebug: error recovery discarding state %d\n", ++ PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n", + *yyssp); + #endif + if (yyssp <= yyss) goto yyabort; +@@ -1600,7 +1582,7 @@ + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; +- printf("yydebug: state %d, error recovery discards token %d (%s)\n", ++ PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n", + yystate, yychar, yys); + } + #endif +@@ -1610,7 +1592,7 @@ + yyreduce: + #if YYDEBUG + if (yydebug) +- printf("yydebug: state %d, reducing by rule %d (%s)\n", ++ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n", + yystate, yyn, yyrule[yyn]); + #endif + yym = yylen[yyn]; +@@ -2473,7 +2455,7 @@ + #line 786 "perly.y" + { yyval.opval = yyvsp[0].opval; } + break; +-#line 2477 "y.tab.c" ++#line 2477 "perly.c" + } + yyssp -= yym; + yystate = *yyssp; +@@ -2483,7 +2465,7 @@ + { + #if YYDEBUG + if (yydebug) +- printf("yydebug: after reduction, shifting from state 0 to\ ++ PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\ + state %d\n", YYFINAL); + #endif + yystate = YYFINAL; +@@ -2498,7 +2480,7 @@ + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; +- printf("yydebug: state %d, reading %d (%s)\n", ++ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", + YYFINAL, yychar, yys); + } + #endif +@@ -2513,20 +2495,54 @@ + yystate = yydgoto[yym]; + #if YYDEBUG + if (yydebug) +- printf("yydebug: after reduction, shifting from state %d \ ++ PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state %d \ + to state %d\n", *yyssp, yystate); + #endif + if (yyssp >= yyss + yystacksize - 1) + { +- goto yyoverflow; ++ /* ++ ** reallocate and recover. Note that pointers ++ ** have to be reset, or bad things will happen ++ */ ++ int yyps_index = (yyssp - yyss); ++ int yypv_index = (yyvsp - yyvs); ++ yystacksize += YYSTACKSIZE; ++ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); ++ ysave->yyss = Renew(yyss, yystacksize, short); ++ if (!yyvs || !yyss) ++ goto yyoverflow; ++ yyssp = yyss + yyps_index; ++ yyvsp = yyvs + yypv_index; + } + *++yyssp = yystate; + *++yyvsp = yyval; + goto yyloop; + yyoverflow: +- yyerror("yacc stack overflow"); ++ yyerror("Out of memory for yacc stack"); + yyabort: +- return (1); ++ retval = 1; + yyaccept: +- return (0); ++#ifdef USE_ITHREADS ++ LEAVE; /* force yydestruct() before we return */ ++#endif ++ return retval; ++} ++ ++#ifdef PERL_OBJECT ++#include "XSUB.h" ++#endif ++ ++static void ++yydestruct(pTHXo_ void *ptr) ++{ ++ struct ysv* ysave = (struct ysv*)ptr; ++ if (ysave->yyss) Safefree(ysave->yyss); ++ if (ysave->yyvs) Safefree(ysave->yyvs); ++ yydebug = ysave->oldyydebug; ++ yynerrs = ysave->oldyynerrs; ++ yyerrflag = ysave->oldyyerrflag; ++ yychar = ysave->oldyychar; ++ yyval = ysave->oldyyval; ++ yylval = ysave->oldyylval; ++ Safefree(ysave); + } diff --git a/pod/perl572delta.pod b/pod/perl572delta.pod index fe1eed0d4f..65ecd81bbb 100644 --- a/pod/perl572delta.pod +++ b/pod/perl572delta.pod @@ -20,13 +20,20 @@ was found in August 2000. The vulnerability does not affect default installations and as far as is known affects only the Linux platform. You should upgrade your Perl to 5.6.1 as soon as possible. Patches -for earlier releases exist but they require full recompilation from -the source code so 5.6.1 is your best choice. +for earlier releases exist but using the patches require full +recompilation from the source code anyway, so 5.6.1 is your best +choice. + See http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt for more information. =head1 Incompatible Changes +If your pointers are 64 bits wide, the Perl malloc is no more being +used because it simply does not work with 8-byte pointers. Also, +usually the system malloc on such platforms are much better optimized +for such large memory models than the Perl malloc. + =head1 Future Deprecations The current user-visible implementation of pseudo-hashes (the weird @@ -36,32 +43,303 @@ differently. Not only is the current interface rather ugly, but the current implementation slows down normal array and hash use quite noticeably. The 'fields' pragma interface will remain available. +The suidperl is also considered to be too much a risk to continue +maintaining and the suidperl code is likely to be removed in a future +release. + =head1 Core Enhancements +In general a lot of fixing has happened in the area of Perl's understanding +of numbers, both integer and floating point. Since in many systems the +standard number parsing functions like C<strtoul()> and C<atof()> seem +to have bugs, Perl tries to work around their deficiencies. This results +hopefully in more accurate numbers. + +=over 4 + +=item * + +The rules for allowing underscores (underbars) in numeric constants +have been relaxed and simplified: now you can have an underscore +B<between digits>. + +=item * + +VMS now works under PerlIO. + +=item * + +GMAGIC (right-hand side magic) could in many cases such as concatenation +of string be invoked too many times. + +=item * + +The MAGIC constants (e.g. C<'P'>) have been macrofied +(e.g. C<PERL_MAGIC_TIED>) for better source code readability +and maintainability. + +=item * + +The C<op_clear> and C<op_null> are now exported. + +=item * + +The Perl parser has been stress tested using both random input and +Markov chain input. + +=back + =head1 Modules and Pragmata =head2 New Modules +=over 4 + +=item * + +Attribute::Handlers - Simpler definition of attribute handlers + +=item * + +ExtUtils::Constant - generate XS code to import C header constants + +=item * + +I18N::LangTags - functions for dealing with RFC3066-style language tags + +=item * + +List::Util - selection of general-utility list subroutines + +=item * + +Locale::Maketext - framework for localization + +=item * + +NEXT - pseudo-class for method redispatch + +=item * + +Scalar::Util - selection of general-utility scalar subroutines + +=item * + +Time::HiRes - high resolution ualarm, usleep, and gettimeofday + +=back + =head2 Updated And Improved Modules and Pragmata +=over 4 + +=item * + +L<B::Deparse> module has been significantly enhanced. It now +can deparse almost all of the standard test suite (so that the +tests still succeed). + +=item * + +L<Class::Struct> now assigns the array/hash element if the accessor +is called with an array/hash element as the B<sole> argument. + +=item * + +L<Cwd> extension is now (even) faster. + +=item * + +L<DB_File> extension has been updated to version 1.77. + +=item * + +L<Fcntl>, L<Socket>, and L<Sys::Syslog> have been rewritten to use the +new-style constant dispatch section (see L<ExtUtils::Constant>). + +=item * + +L<File::Glob> now supports C<GLOB_LIMIT> constant to limit the +size of the returned list of filenames. + +=back + =head1 Performance Enhancements =head1 Utility Changes +=over 4 + +=item * + +L<h2xs> uses the new L<ExtUtils::Constant> module which will affect +newly created extensions that define constants. Since the new code is +more correct (if you have two constants where the first one is a +prefix of the second one, the first constant B<never> gets defined), +less lossy (it uses integers for integer constant, as opposed to the +old code that used floating point numbers even for integer constants), +and slightly faster, you might want to consider regenerating your +extension code (the new scheme makes regenerating easy). + +=item * + +The F<emacs/e2ctags.pl> is now much faster. + +=item * + +The F<Pod::Html> (and thusly L<pod2html>) now allows specifying +a cache directory. + +=back + =head1 New Documentation +=over 4 + +=item * + +L<Locale::Maketext::TPJ13> is an article about software localization, +originally published in The Perl Journal #13, republished here with +kind permission. + +=item * + +More README.$PLATFORM files have been converted into pod, which also +means that they also be installed as perl$PLATFORM documentation +files. The new files are L<perlapollo>, L<perlbeos>, L<perldgux>, +L<perlhurd>, L<perlmint>, L<perlplan9>, L<perlqnx>, and L<perltru64>. + +=item * + +The F<Todo> and F<Todo-5.6> files have been merged into L<perltodo>. + +=item * + +Use of the F<gprof> tool to profile Perl has been documented in L<perlhack>. + +=back + =head1 Installation and Configuration Improvements =head2 New Or Improved Platforms +=over 4 + +=item * + +AIX should now work better with gcc. Also longdouble support in +AIX should be better now. + +=item * + +AtheOS (http://www.atheos.cx/) is a new platform. + +=item * + +DG/UX platform now supports the 5.005-style threads. + +=item * + +MacOS (Classic) [HOPEFULLY] + +=item * + +MacOS X (or Darwin) should now be able to build Perl even on HFS+ filesystem. +(The case-insensitivity confused the Perl build process.) + +=item * + +Netware [HOPEFULLY] + +=item * + +The Amdahl UTS UNIX mainframe platform is now supported. + +=back + =head2 Generic Improvements +=over 4 + +=item * + +The C code has been made much more C<gcc -Wall> clean. Some warning +messages still remain, though, so if you are compiling with gcc you +will see some warnings about dubious practices. The warnings are +being worked on. + +=item * + +In AFS installations one can configure the root of the AFS to be +somewhere else than the default F</afs> by using the Configure +parameter C<-Dafsroot=/some/where/else>. + +=item * + +The version of Berkeley DB used when the Perl (and, presumably, the +DB_File extension) was built is now available as +C<@Config{qw(db_version_major db_version_minor db_version_patch)}> +from Perl and as C<DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG +DB_VERSION_PATCH_CFG> from C. + +=item * + +The Thread extension is not built at all under ithreads (C<Configure +-Duseithreads>) because it wouldn't work anyway (the Thread extension +requires being Configured with C<-Duse5005threads>). + +=item * + +The C<B::Deparse> compiler backend has been so significantly improved +that almost the whole Perl test suite passes after being deparsed. A +make target has been added to help in further testing: C<make test.deparse>. + +=back + =head1 Selected Bug Fixes =head2 Platform Specific Changes and Fixes +=over 4 + +=item * + +Some versions of glibc have a broken modfl(). This affects builds +with C<-Duselongdouble>. This version of Perl detects this brokenness +and has a workaround for it. The glibc release 2.2.2 is known to have +fixed the modfl() bug. + +=back + =head1 New or Changed Diagnostics +=over 4 + +=item * + +In the regular expression diagnostics the C<E<lt>E<lt> HERE> marker +introduced in 5.7.0 has been changed to be C<E<lt>-- HERE> since too +many people found the C<E<lt>E<lt>> to be too similar to here-document +starters. + +=item * + +If you try to L<perlfunc/pack> a number less than 0 or larger than 255 +using the C<"C"> format you will get an optional warning. Similarly +for the C<"c"> format and a number less than -128 or more than 127. + +=item * + +Certain regex modifiers such as C<(?o)> make sense only if applied to +the entire regex. You will an optional warning if you try to do otherwise. + +=item * + +Using arrays or hashes as references (e.g. C<%foo->{bar}> has been +deprecated for a while. Now you will get an optional warning. + +=back + =head1 Changed Internals =head2 Regex pre-/post-compilation items matched up @@ -74,6 +352,12 @@ complete information. =head1 New Tests +Several new tests have been added, especially for the F<lib> subsection. + +=back + +The test F<camel-III/vstring> has been merged with F<op/ver>. + =head1 Known Problems Note that unlike other sections in this document (which describe diff --git a/pod/perlapi.pod b/pod/perlapi.pod index 41283b8618..84e2dc721f 100644 --- a/pod/perlapi.pod +++ b/pod/perlapi.pod @@ -318,7 +318,7 @@ L<perlsub/"Constant Functions">. SV* cv_const_sv(CV* cv) =for hackers -Found in file opmini.c +Found in file op.c =item dMARK @@ -519,6 +519,28 @@ respectively. =for hackers Found in file op.h +=item grok_number + +Recognise (or not) a number. The type of the number is returned +(0 if unrecognised), otherwise it is a bit-ORed combination of +IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT, +IS_NUMBER_NEG, IS_NUMBER_INFINITY (defined in perl.h). If the value +of the number can fit an in UV, it is returned in the *valuep. + + int grok_number(const char *pv, STRLEN len, UV *valuep) + +=for hackers +Found in file util.c + +=item grok_numeric_radix + +Scan and skip for a numeric decimal separator (radix). + + bool grok_numeric_radix(const char **sp, const char *send) + +=for hackers +Found in file util.c + =item GvSV Return the SV from the GV. @@ -1100,7 +1122,7 @@ method, similar to C<use Foo::Bar VERSION LIST>. void load_module(U32 flags, SV* name, SV* ver, ...) =for hackers -Found in file opmini.c +Found in file op.c =item looks_like_number @@ -1239,7 +1261,7 @@ eligible for inlining at compile-time. CV* newCONSTSUB(HV* stash, char* name, SV* sv) =for hackers -Found in file opmini.c +Found in file op.c =item newHV @@ -1385,7 +1407,7 @@ Found in file sv.c Used by C<xsubpp> to hook up XSUBs as Perl subs. =for hackers -Found in file opmini.c +Found in file op.c =item newXSproto @@ -2408,19 +2430,19 @@ false, defined or undefined. Does not handle 'get' magic. =for hackers Found in file sv.h -=item svtype +=item SvTYPE -An enum of flags for Perl types. These are found in the file B<sv.h> -in the C<svtype> enum. Test these flags with the C<SvTYPE> macro. +Returns the type of the SV. See C<svtype>. + + svtype SvTYPE(SV* sv) =for hackers Found in file sv.h -=item SvTYPE - -Returns the type of the SV. See C<svtype>. +=item svtype - svtype SvTYPE(SV* sv) +An enum of flags for Perl types. These are found in the file B<sv.h> +in the C<svtype> enum. Test these flags with the C<SvTYPE> macro. =for hackers Found in file sv.h @@ -405,6 +405,8 @@ PERL_CALLCONV void Perl_load_module(pTHX_ U32 flags, SV* name, SV* ver, ...); PERL_CALLCONV void Perl_vload_module(pTHX_ U32 flags, SV* name, SV* ver, va_list* args); PERL_CALLCONV OP* Perl_localize(pTHX_ OP* arg, I32 lexical); PERL_CALLCONV I32 Perl_looks_like_number(pTHX_ SV* sv); +PERL_CALLCONV int Perl_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep); +PERL_CALLCONV bool Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send); PERL_CALLCONV int Perl_magic_clearenv(pTHX_ SV* sv, MAGIC* mg); PERL_CALLCONV int Perl_magic_clear_all_env(pTHX_ SV* sv, MAGIC* mg); PERL_CALLCONV int Perl_magic_clearpack(pTHX_ SV* sv, MAGIC* mg); @@ -1245,8 +1247,6 @@ STATIC I32 S_expect_number(pTHX_ char** pattern); # if defined(USE_ITHREADS) STATIC SV* S_gv_share(pTHX_ SV *sv); # endif -STATIC int S_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep); -STATIC int S_grok_numeric_radix(pTHX_ const char **sp, const char *send); #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) @@ -1486,195 +1486,6 @@ S_not_a_number(pTHX_ SV *sv) "Argument \"%s\" isn't numeric", tmpbuf); } -#define IS_NUMBER_IN_UV 0x01 /* number within UV range (maybe not - int). value returned in pointed- - to UV */ -#define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 /* pointed to UV undefined */ -#define IS_NUMBER_NOT_INT 0x04 /* saw . or E notation */ -#define IS_NUMBER_NEG 0x08 /* leading minus sign */ -#define IS_NUMBER_INFINITY 0x10 /* this is big */ - -static bool -S_grok_numeric_radix(pTHX_ const char **sp, const char *send) -{ -#ifdef USE_LOCALE_NUMERIC - if (PL_numeric_radix_sv && IN_LOCALE) { - STRLEN len; - char* radix = SvPV(PL_numeric_radix_sv, len); - if (*sp + len <= send && memEQ(*sp, radix, len)) { - *sp += len; - return TRUE; - } - } - /* always try "." if numeric radix didn't match because - * we may have data from different locales mixed */ -#endif - if (*sp < send && **sp == '.') { - ++*sp; - return TRUE; - } - return FALSE; -} - -#define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) - -static int -S_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep) -{ - const char *s = pv; - const char *send = pv + len; - const UV max_div_10 = UV_MAX / 10; - const char max_mod_10 = UV_MAX % 10 + '0'; - int numtype = 0; - int sawinf = 0; - - while (isSPACE(*s)) - s++; - if (*s == '-') { - s++; - numtype = IS_NUMBER_NEG; - } - else if (*s == '+') - s++; - - /* next must be digit or the radix separator or beginning of infinity */ - if (isDIGIT(*s)) { - /* UVs are at least 32 bits, so the first 9 decimal digits cannot - overflow. */ - UV value = *s - '0'; - /* This construction seems to be more optimiser friendly. - (without it gcc does the isDIGIT test and the *s - '0' separately) - With it gcc on arm is managing 6 instructions (6 cycles) per digit. - In theory the optimiser could deduce how far to unroll the loop - before checking for overflow. */ - int digit = *++s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - digit = *++s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - digit = *++s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - digit = *++s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - digit = *++s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - digit = *++s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - digit = *++s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - digit = *++s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - /* Now got 9 digits, so need to check - each time for overflow. */ - digit = *++s - '0'; - while (digit >= 0 && digit <= 9 - && (value < max_div_10 - || (value == max_div_10 - && *s <= max_mod_10))) { - value = value * 10 + digit; - digit = *++s - '0'; - } - if (digit >= 0 && digit <= 9) { - /* value overflowed. - skip the remaining digits, don't - worry about setting *valuep. */ - do { - s++; - } while (isDIGIT(*s)); - numtype |= - IS_NUMBER_GREATER_THAN_UV_MAX; - goto skip_value; - } - } - } - } - } - } - } - } - } - numtype |= IS_NUMBER_IN_UV; - if (valuep) - *valuep = value; - - skip_value: - if (GROK_NUMERIC_RADIX(&s, send)) { - numtype |= IS_NUMBER_NOT_INT; - while (isDIGIT(*s)) /* optional digits after the radix */ - s++; - } - } - else if (GROK_NUMERIC_RADIX(&s, send)) { - numtype |= IS_NUMBER_NOT_INT; - /* no digits before the radix means we need digits after it */ - if (isDIGIT(*s)) { - do { - s++; - } while (isDIGIT(*s)); - numtype |= IS_NUMBER_IN_UV; - if (valuep) { - /* integer approximation is valid - it's 0. */ - *valuep = 0; - } - } - else - return 0; - } - else if (*s == 'I' || *s == 'i') { - s++; if (*s != 'N' && *s != 'n') return 0; - s++; if (*s != 'F' && *s != 'f') return 0; - s++; if (*s == 'I' || *s == 'i') { - s++; if (*s != 'N' && *s != 'n') return 0; - s++; if (*s != 'I' && *s != 'i') return 0; - s++; if (*s != 'T' && *s != 't') return 0; - s++; if (*s != 'Y' && *s != 'y') return 0; - s++; - } - sawinf = 1; - } - else /* Add test for NaN here. */ - return 0; - - if (sawinf) { - numtype &= IS_NUMBER_NEG; /* Keep track of sign */ - numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT; - } else { - /* we can have an optional exponent part */ - if (*s == 'e' || *s == 'E') { - /* The only flag we keep is sign. Blow away any "it's UV" */ - numtype &= IS_NUMBER_NEG; - numtype |= IS_NUMBER_NOT_INT; - s++; - if (*s == '-' || *s == '+') - s++; - if (isDIGIT(*s)) { - do { - s++; - } while (isDIGIT(*s)); - } - else - return 0; - } - } - while (isSPACE(*s)) - s++; - if (s >= send) - return numtype; - if (len == 10 && memEQ(pv, "0 but true", 10)) { - if (valuep) - *valuep = 0; - return IS_NUMBER_IN_UV; - } - return 0; -} - /* =for apidoc looks_like_number diff --git a/t/lib/extutils.t b/t/lib/extutils.t index 9d54dad05c..48c2aa30e4 100644 --- a/t/lib/extutils.t +++ b/t/lib/extutils.t @@ -1,6 +1,6 @@ #!./perl -w -print "1..18\n"; +print "1..21\n"; BEGIN { chdir 't' if -d 't'; @@ -47,9 +47,15 @@ my @names = ("FIVE", {name=>"OK6", type=>"PV",}, value=>['"not ok 7\\n\\0ok 7\\n"', 15]}, {name => "FARTHING", type=>"NV"}, {name => "NOT_ZERO", type=>"UV", value=>"~(UV)0"}, + {name => "OPEN", type=>"PV", value=>'"/*"', + macro=>["#if 1\n", "#endif\n"]}, {name => "CLOSE", type=>"PV", value=>'"*/"', macro=>["#if 1\n", "#endif\n"]}, - {name => "ANSWER", default=>["UV", 42]}, "NOTDEF"); + {name => "ANSWER", default=>["UV", 42]}, "NOTDEF", + {name => "Yes", type=>"YES"}, + {name => "No", type=>"NO"}, + {name => "Undef", type=>"UNDEF"} +); my @names_only = map {(ref $_) ? $_->{name} : $_} @names; @@ -69,6 +75,9 @@ print FH <<'EOT'; #define OK7 1 #define FARTHING 0.25 #define NOT_ZERO 1 +#define Yes 0 +#define No 1 +#define Undef 1 #undef NOTDEF EOT close FH or die "close $header: $!\n"; @@ -199,6 +208,30 @@ if (defined $notthere) { print "ok 13\n"; } +# Truth +my $yes = Yes; +if ($yes) { + print "ok 14\n"; +} else { + print "not ok 14 # $yes='\$yes'\n"; +} + +# Falsehood +my $no = No; +if (defined $no and !$no) { + print "ok 15\n"; +} else { + print "not ok 15 # \$no=" . defined ($no) ? "'$no'\n" : "undef\n"; +} + +# Undef +my $undef = Undef; +unless (defined $undef) { + print "ok 16\n"; +} else { + print "not ok 16 # \$undef='$undef'\n"; +} + EOT close FH or die "close $testpl: $!\n"; @@ -276,27 +309,29 @@ if ($Config{usedl}) { } } -my $test = 14; +my $test = 17; my $maketest = "$make test"; print "# make = '$maketest'\n"; $makeout = `$maketest`; -if ($?) { - print "not ok $test # $maketest failed: $?\n"; -} else { - # echo of running the test script - $makeout =~ s/^\s*PERL_DL_NONLAZY=.+?\n//m; - $makeout =~ s/^MCR.+test.pl\n//mig if $^O eq 'VMS'; - # GNU make babblings - $makeout =~ s/^\w*?make.+?(?:entering|leaving) directory.+?\n//mig; +# echo of running the test script +$makeout =~ s/^\s*PERL_DL_NONLAZY=.+?\n//m; +$makeout =~ s/^MCR.+test.pl\n//mig if $^O eq 'VMS'; + +# GNU make babblings +$makeout =~ s/^\w*?make.+?(?:entering|leaving) directory.+?\n//mig; - # Hopefully gets most make's babblings - # make -f Makefile.aperl perl - $makeout =~ s/^\w*?make.+\sperl[^A-Za-z0-9]*\n//mig; - # make[1]: `perl' is up to date. - $makeout =~ s/^\w*?make.+perl.+?is up to date.*?\n//mig; +# Hopefully gets most make's babblings +# make -f Makefile.aperl perl +$makeout =~ s/^\w*?make.+\sperl[^A-Za-z0-9]*\n//mig; +# make[1]: `perl' is up to date. +$makeout =~ s/^\w*?make.+perl.+?is up to date.*?\n//mig; - print $makeout; +print $makeout; + +if ($?) { + print "not ok $test # $maketest failed: $?\n"; +} else { print "ok $test\n"; } $test++; @@ -4018,6 +4018,8 @@ Perl_my_atof(pTHX_ const char* s) if (PL_numeric_local && IN_LOCALE) { NV y; + /* Scan the number twice; once using locale and once without; + * choose the larger result (in absolute value). */ Perl_atof2(aTHX_ s, &x); SET_NUMERIC_STANDARD(); Perl_atof2(aTHX_ s, &y); @@ -4057,14 +4059,210 @@ S_mulexp10(NV value, I32 exponent) return negative ? value / result : value * result; } +/* +=for apidoc grok_numeric_radix + +Scan and skip for a numeric decimal separator (radix). + +=cut + */ +bool +Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send) +{ +#ifdef USE_LOCALE_NUMERIC + if (PL_numeric_radix_sv && IN_LOCALE) { + STRLEN len; + char* radix = SvPV(PL_numeric_radix_sv, len); + if (*sp + len <= send && memEQ(*sp, radix, len)) { + *sp += len; + return TRUE; + } + } + /* always try "." if numeric radix didn't match because + * we may have data from different locales mixed */ +#endif + if (*sp < send && **sp == '.') { + ++*sp; + return TRUE; + } + return FALSE; +} + +/* +=for apidoc grok_number + +Recognise (or not) a number. The type of the number is returned +(0 if unrecognised), otherwise it is a bit-ORed combination of +IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT, +IS_NUMBER_NEG, IS_NUMBER_INFINITY (defined in perl.h). If the value +of the number can fit an in UV, it is returned in the *valuep. + +=cut + */ +int +Perl_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep) +{ + const char *s = pv; + const char *send = pv + len; + const UV max_div_10 = UV_MAX / 10; + const char max_mod_10 = UV_MAX % 10 + '0'; + int numtype = 0; + int sawinf = 0; + + while (isSPACE(*s)) + s++; + if (*s == '-') { + s++; + numtype = IS_NUMBER_NEG; + } + else if (*s == '+') + s++; + + /* next must be digit or the radix separator or beginning of infinity */ + if (isDIGIT(*s)) { + /* UVs are at least 32 bits, so the first 9 decimal digits cannot + overflow. */ + UV value = *s - '0'; + /* This construction seems to be more optimiser friendly. + (without it gcc does the isDIGIT test and the *s - '0' separately) + With it gcc on arm is managing 6 instructions (6 cycles) per digit. + In theory the optimiser could deduce how far to unroll the loop + before checking for overflow. */ + int digit = *++s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + digit = *++s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + digit = *++s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + digit = *++s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + digit = *++s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + digit = *++s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + digit = *++s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + digit = *++s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + /* Now got 9 digits, so need to check + each time for overflow. */ + digit = *++s - '0'; + while (digit >= 0 && digit <= 9 + && (value < max_div_10 + || (value == max_div_10 + && *s <= max_mod_10))) { + value = value * 10 + digit; + digit = *++s - '0'; + } + if (digit >= 0 && digit <= 9) { + /* value overflowed. + skip the remaining digits, don't + worry about setting *valuep. */ + do { + s++; + } while (isDIGIT(*s)); + numtype |= + IS_NUMBER_GREATER_THAN_UV_MAX; + goto skip_value; + } + } + } + } + } + } + } + } + } + numtype |= IS_NUMBER_IN_UV; + if (valuep) + *valuep = value; + + skip_value: + if (GROK_NUMERIC_RADIX(&s, send)) { + numtype |= IS_NUMBER_NOT_INT; + while (isDIGIT(*s)) /* optional digits after the radix */ + s++; + } + } + else if (GROK_NUMERIC_RADIX(&s, send)) { + numtype |= IS_NUMBER_NOT_INT; + /* no digits before the radix means we need digits after it */ + if (isDIGIT(*s)) { + do { + s++; + } while (isDIGIT(*s)); + numtype |= IS_NUMBER_IN_UV; + if (valuep) { + /* integer approximation is valid - it's 0. */ + *valuep = 0; + } + } + else + return 0; + } + else if (*s == 'I' || *s == 'i') { + s++; if (*s != 'N' && *s != 'n') return 0; + s++; if (*s != 'F' && *s != 'f') return 0; + s++; if (*s == 'I' || *s == 'i') { + s++; if (*s != 'N' && *s != 'n') return 0; + s++; if (*s != 'I' && *s != 'i') return 0; + s++; if (*s != 'T' && *s != 't') return 0; + s++; if (*s != 'Y' && *s != 'y') return 0; + s++; + } + sawinf = 1; + } + else /* Add test for NaN here. */ + return 0; + + if (sawinf) { + numtype &= IS_NUMBER_NEG; /* Keep track of sign */ + numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT; + } else { + /* we can have an optional exponent part */ + if (*s == 'e' || *s == 'E') { + /* The only flag we keep is sign. Blow away any "it's UV" */ + numtype &= IS_NUMBER_NEG; + numtype |= IS_NUMBER_NOT_INT; + s++; + if (*s == '-' || *s == '+') + s++; + if (isDIGIT(*s)) { + do { + s++; + } while (isDIGIT(*s)); + } + else + return 0; + } + } + while (isSPACE(*s)) + s++; + if (s >= send) + return numtype; + if (len == 10 && memEQ(pv, "0 but true", 10)) { + if (valuep) + *valuep = 0; + return IS_NUMBER_IN_UV; + } + return 0; +} + char* Perl_my_atof2(pTHX_ const char* orig, NV* value) { NV result = 0.0; bool negative = 0; char* s = (char*)orig; - char* point = "."; /* locale-dependent decimal point equivalent */ - STRLEN pointlen = 1; + char* send = s + strlen(orig) - 1; bool seendigit = 0; I32 expextra = 0; I32 exponent = 0; @@ -4082,11 +4280,6 @@ Perl_my_atof2(pTHX_ const char* orig, NV* value) I32 ipart = 0; /* index into part[] */ I32 offcount; /* number of digits in least significant part */ -#ifdef USE_LOCALE_NUMERIC - if (PL_numeric_radix_sv && IN_LOCALE) - point = SvPV(PL_numeric_radix_sv, pointlen); -#endif - /* sign */ switch (*s) { case '-': @@ -4130,8 +4323,7 @@ Perl_my_atof2(pTHX_ const char* orig, NV* value) } /* decimal point */ - if (memEQ(s, point, pointlen)) { - s += pointlen; + if (GROK_NUMERIC_RADIX((const char **)&s, send)) { if (isDIGIT(*s)) seendigit = 1; /* get this over with */ @@ -4893,3 +5085,4 @@ Perl_sv_realpath(pTHX_ SV *sv, char *path, STRLEN len) return FALSE; #endif } + diff --git a/vms/perly_c.vms b/vms/perly_c.vms index 7d071a0020..9528fa1a18 100644 --- a/vms/perly_c.vms +++ b/vms/perly_c.vms @@ -1,6 +1,6 @@ /* Postprocessed by vms_yfix.pl 1.11 to add VMS declarations of globals */ #ifndef lint -static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; +/* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */ #endif #define YYBYACC 1 #line 16 "perly.y" @@ -54,26 +54,26 @@ typedef union { #line 54 "perly.c" #define YYERRCODE 256 static short yylhs[] = { -1, - 50, 0, 8, 6, 9, 7, 10, 10, 10, 11, + 54, 0, 8, 6, 9, 7, 10, 10, 10, 11, 11, 11, 11, 24, 24, 24, 24, 24, 24, 24, 14, 14, 14, 13, 13, 42, 42, 12, 12, 12, 12, 12, 12, 12, 26, 26, 27, 27, 28, 29, - 30, 31, 32, 49, 49, 1, 1, 1, 1, 1, - 2, 38, 38, 46, 51, 3, 4, 5, 39, 40, - 40, 44, 44, 44, 45, 45, 41, 41, 52, 52, - 54, 53, 15, 15, 15, 25, 25, 25, 36, 36, - 36, 36, 36, 36, 36, 36, 55, 36, 37, 37, + 30, 31, 32, 53, 53, 1, 1, 1, 1, 1, + 2, 38, 38, 46, 55, 3, 4, 5, 39, 40, + 40, 44, 44, 44, 45, 45, 41, 41, 56, 56, + 58, 57, 15, 15, 15, 25, 25, 25, 36, 36, + 36, 36, 36, 36, 36, 36, 59, 36, 37, 37, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 17, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, + 50, 50, 51, 51, 51, 51, 51, 52, 52, 52, + 52, 52, 52, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 47, 47, 48, 48, 48, 48, 48, 33, 33, 34, - 34, 34, 43, 23, 18, 19, 20, 21, 22, 35, - 35, 35, 35, + 16, 16, 16, 16, 47, 47, 48, 48, 48, 48, + 48, 33, 33, 34, 34, 34, 43, 23, 18, 19, + 20, 21, 22, 35, 35, 35, 35, }; static short yylen[] = { 2, 0, 2, 4, 0, 4, 0, 0, 2, 2, 2, @@ -87,1045 +87,1076 @@ static short yylen[] = { 2, 6, 3, 3, 5, 2, 4, 0, 5, 1, 1, 5, 4, 5, 4, 5, 6, 5, 4, 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 5, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 3, 2, 3, 2, - 4, 3, 5, 1, 1, 1, 1, 1, 1, 6, - 5, 4, 5, 1, 1, 3, 4, 3, 2, 2, - 4, 5, 4, 5, 1, 2, 2, 1, 2, 2, - 2, 1, 3, 1, 3, 4, 4, 6, 1, 1, - 3, 2, 3, 2, 1, 1, 1, 0, 1, 0, - 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, - 1, 1, 1, + 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 4, 3, 5, 2, 2, 4, + 5, 4, 5, 1, 1, 1, 1, 5, 2, 1, + 2, 3, 2, 1, 1, 1, 1, 1, 1, 6, + 5, 4, 5, 1, 1, 3, 4, 3, 1, 2, + 2, 1, 2, 2, 2, 1, 3, 1, 3, 4, + 4, 6, 1, 1, 3, 2, 3, 2, 1, 1, + 1, 0, 1, 0, 1, 2, 1, 2, 2, 2, + 2, 2, 2, 1, 1, 1, 1, }; static short yydefred[] = { 1, 0, 7, 0, 45, 58, 56, 0, 56, 56, 8, 46, 9, 11, 48, 0, 47, 49, 50, 0, 0, - 0, 70, 71, 0, 14, 4, 169, 0, 0, 144, - 0, 164, 0, 57, 57, 0, 0, 0, 0, 0, + 0, 70, 71, 0, 14, 4, 173, 0, 0, 154, + 0, 168, 0, 57, 57, 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, 12, 0, 0, 0, 0, 0, 0, 0, 10, - 0, 0, 0, 0, 0, 136, 138, 0, 0, 0, - 0, 170, 125, 52, 0, 59, 0, 69, 0, 0, - 7, 190, 193, 192, 191, 0, 0, 0, 0, 0, - 0, 4, 4, 4, 4, 4, 4, 0, 0, 0, - 0, 0, 159, 0, 0, 0, 0, 85, 0, 188, - 0, 150, 0, 0, 0, 0, 0, 0, 0, 175, - 177, 176, 0, 184, 0, 0, 0, 0, 0, 0, - 0, 0, 130, 0, 0, 0, 185, 186, 187, 189, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 146, 148, 0, 0, 0, + 0, 174, 140, 134, 135, 136, 137, 52, 0, 59, + 0, 69, 0, 0, 7, 194, 197, 196, 195, 0, + 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, + 4, 0, 0, 0, 0, 0, 163, 0, 0, 0, + 0, 85, 0, 192, 0, 129, 0, 0, 0, 0, + 0, 0, 0, 179, 181, 180, 0, 188, 0, 0, + 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, + 189, 190, 191, 193, 0, 34, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 120, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 0, 51, 61, 0, 0, 0, 0, 83, 0, 0, + 87, 0, 0, 0, 0, 0, 0, 0, 4, 167, + 169, 0, 0, 0, 0, 0, 0, 0, 126, 0, + 158, 178, 0, 0, 175, 0, 0, 123, 27, 0, + 0, 19, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 121, 122, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 51, 61, 0, - 0, 0, 0, 83, 0, 0, 87, 0, 0, 0, - 0, 0, 0, 0, 4, 163, 165, 0, 0, 0, - 0, 0, 0, 0, 132, 0, 148, 174, 0, 0, - 171, 0, 0, 129, 27, 0, 0, 19, 0, 0, - 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, - 0, 90, 0, 0, 101, 0, 0, 0, 0, 0, - 0, 0, 146, 0, 0, 0, 0, 0, 0, 3, - 0, 0, 167, 0, 0, 0, 42, 0, 43, 0, - 0, 0, 0, 183, 0, 0, 36, 41, 0, 0, - 0, 166, 182, 86, 0, 151, 0, 153, 0, 131, - 173, 65, 0, 0, 0, 0, 98, 0, 0, 0, - 0, 100, 94, 0, 92, 0, 142, 0, 147, 63, - 68, 67, 55, 0, 54, 84, 0, 88, 133, 0, - 0, 0, 0, 0, 0, 0, 0, 80, 152, 154, - 141, 0, 0, 0, 99, 93, 0, 97, 95, 143, - 91, 72, 168, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 140, 96, 81, 7, 28, 29, 0, 0, - 24, 25, 0, 32, 0, 0, 0, 22, 0, 0, - 0, 31, 5, 0, 30, 0, 0, 33, 0, 23, + 0, 0, 89, 0, 0, 90, 0, 0, 101, 0, + 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 171, 0, 0, 0, + 42, 0, 43, 0, 0, 0, 0, 187, 0, 0, + 36, 41, 0, 0, 0, 170, 186, 86, 0, 130, + 0, 132, 0, 125, 177, 65, 0, 0, 0, 0, + 98, 0, 0, 0, 0, 100, 94, 0, 92, 0, + 152, 0, 157, 63, 68, 67, 55, 0, 54, 84, + 0, 88, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 80, 131, 133, 151, 0, 0, 0, 99, 93, + 0, 97, 95, 153, 91, 72, 172, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 150, 96, 81, 7, + 28, 29, 0, 0, 24, 25, 0, 32, 0, 0, + 0, 22, 0, 0, 0, 31, 5, 0, 30, 0, + 0, 33, 0, 23, }; static short yydgoto[] = { 1, - 10, 11, 20, 100, 19, 91, 366, 94, 355, 3, - 12, 13, 70, 371, 281, 72, 73, 74, 75, 76, - 77, 78, 79, 287, 81, 288, 277, 279, 282, 290, - 278, 280, 118, 210, 96, 82, 253, 85, 87, 190, - 323, 152, 285, 267, 221, 14, 83, 133, 15, 2, - 16, 17, 18, 89, 274, + 10, 11, 20, 104, 19, 95, 370, 98, 359, 3, + 12, 13, 70, 375, 285, 72, 73, 74, 75, 76, + 77, 78, 79, 291, 81, 292, 281, 283, 286, 294, + 282, 284, 122, 214, 100, 82, 257, 89, 91, 194, + 327, 156, 289, 271, 225, 14, 83, 137, 84, 85, + 86, 87, 15, 2, 16, 17, 18, 93, 278, }; static short yysindex[] = { 0, - 0, 0, -199, 0, 0, 0, -53, 0, 0, 0, - 0, 0, 0, 0, 646, 0, 0, 0, -217, -207, - 44, 0, 0, -207, 0, 0, 0, -32, -32, 0, - 66, 0, 2177, 0, 0, 69, 83, 93, 110, -35, - 2177, 119, 121, 136, 1013, 973, -32, 1077, 1344, -146, - 2177, 68, -32, 2177, 2177, 2177, 2177, 2177, 2177, 1384, - 1424, 0, 2177, 2177, -32, -32, -32, -32, -152, 0, - 470, 845, -13, -65, -63, 0, 0, 55, 137, 122, - 138, 0, 0, 0, 60, 0, -70, 0, -66, -70, - 0, 0, 0, 0, 0, 2177, 146, 2177, 1085, 60, - -70, 0, 0, 0, 0, 0, 0, 152, 845, 153, - 1464, 973, 0, 1085, 0, -65, 138, 0, 2177, 0, - 160, 0, 1085, 2, 76, -52, 2177, 1085, 1524, 0, - 0, 0, -96, 0, 138, -181, -181, -181, -112, -112, - 123, -38, 0, -74, -181, -181, 0, 0, 0, 0, - 60, 0, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, - 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, - 2177, 2177, 2177, 0, 0, -16, 2177, 1731, 2177, 2177, - 2177, 2177, 2177, 2177, 1791, 0, 2177, 0, 0, -88, - -34, -88, 339, 0, 2177, 287, 0, -88, 2177, 2177, - 2177, 2177, 173, 1850, 0, 0, 0, -33, 46, 180, - 2177, 138, 1910, 2025, 0, 97, 0, 0, -31, -29, - 0, 2177, 133, 0, 0, -237, -237, 0, -237, -237, - -237, -69, 0, 1614, 1085, 684, 167, 107, 845, 3800, - 1125, 405, 1164, 778, -228, -181, -181, 2177, 0, 2117, - 2177, 0, 197, -48, 0, -9, -72, -45, -7, -42, - 56, -36, 0, -4, 845, -10, -47, 2177, -47, 0, - 216, 2177, 0, 2177, 60, -237, 0, 219, 0, 230, - -237, 233, 237, 0, 242, 470, 0, 0, 246, 225, - 2177, 0, 0, 0, 13, 0, 18, 0, 29, 0, - 0, 0, 61, 2177, 2177, 54, 0, 32, 63, 2177, - 165, 0, 0, 174, 0, 178, 0, 191, 0, 0, - 0, 0, 0, 261, 0, 0, 350, 0, 0, 182, - 182, 182, 182, 2177, 182, 2177, 281, 0, 0, 0, - 0, 102, 1237, 202, 0, 0, 294, 0, 0, 0, - 0, 0, 0, 0, -152, -152, -130, -130, 297, -152, - 290, 182, 0, 0, 0, 0, 0, 0, 182, 318, - 0, 0, 182, 0, 1850, -152, 407, 0, 2177, -152, - 324, 0, 0, 326, 0, 182, 182, 0, -130, 0, + 0, 0, -132, 0, 0, 0, -51, 0, 0, 0, + 0, 0, 0, 0, 650, 0, 0, 0, -239, -215, + 5, 0, 0, -215, 0, 0, 0, -31, -31, 0, + -24, 0, 2181, 0, 0, 11, 16, 32, 46, -34, + 2181, 49, 72, 76, 1017, 977, -31, 1081, 1348, -134, + 2181, 85, -31, 2181, 2181, 2181, 2181, 2181, 2181, 1388, + 1428, 0, 2181, 2181, -31, -31, -31, -31, -150, 0, + 337, 849, -13, -58, -48, 0, 0, 8, 97, 92, + 116, 0, 0, 0, 0, 0, 0, 0, 52, 0, + -97, 0, -75, -97, 0, 0, 0, 0, 0, 2181, + 146, 2181, 395, 52, -97, 0, 0, 0, 0, 0, + 0, 150, 849, 153, 1468, 977, 0, 395, 0, -58, + 116, 0, 2181, 0, 157, 0, 395, -8, 83, -52, + 2181, 395, 1528, 0, 0, 0, -89, 0, 116, 107, + 107, 107, -104, -104, 123, -37, 0, -73, 107, 107, + 0, 0, 0, 0, 52, 0, 2181, 2181, 2181, 2181, + 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + 2181, 2181, 2181, 2181, 2181, 2181, 2181, 0, 0, -12, + 2181, 1735, 2181, 2181, 2181, 2181, 2181, 2181, 1795, 0, + 2181, 0, 0, -64, -32, -64, 411, 0, 2181, 291, + 0, -64, 2181, 2181, 2181, 2181, 187, 1854, 0, 0, + 0, -29, 58, 189, 2181, 116, 1914, 2029, 0, 111, + 0, 0, -26, -19, 0, 2181, 165, 0, 0, -241, + -241, 0, -241, -241, -241, -40, 0, 1618, 395, 1306, + 185, 168, 849, 1235, 1129, 1169, 1268, 782, 235, 107, + 107, 2181, 0, 2121, 2181, 0, 218, -46, 0, -3, + -68, 61, 106, 65, 108, 68, 0, 17, 849, 26, + -30, 2181, -30, 0, 236, 2181, 0, 2181, 52, -241, + 0, 250, 0, 255, -241, 259, 260, 0, 248, 337, + 0, 0, 262, 261, 2181, 0, 0, 0, 22, 0, + 33, 0, 36, 0, 0, 0, 125, 2181, 2181, 71, + 0, 50, 127, 2181, 182, 0, 0, 184, 0, 199, + 0, 201, 0, 0, 0, 0, 0, 272, 0, 0, + 354, 0, 0, 216, 216, 216, 216, 2181, 216, 2181, + 301, 0, 0, 0, 0, 167, 2418, 228, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, -150, -150, + -123, -123, 322, -150, 308, 216, 0, 0, 0, 0, + 0, 0, 216, 334, 0, 0, 216, 0, 1854, -150, + 449, 0, 2181, -150, 340, 0, 0, 355, 0, 216, + 216, 0, -123, 0, }; static short yyrindex[] = { 0, - 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, + 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 451, 0, 0, 2208, 2271, 0, 0, 0, 0, + 40, 455, 0, 0, 2367, 2469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, - -12, 939, 2325, 2385, 2463, 0, 0, 2510, 2561, 0, - 1220, 0, 0, 0, 0, 0, -44, 0, 0, -44, - 0, 0, 0, 0, 0, 2271, 0, 0, 3846, 0, - -105, 0, 0, 0, 0, 0, 0, 0, 2612, 0, - 0, 327, 0, 3883, 522, 583, 3032, 0, 0, 0, - 2621, 0, 3893, 2385, 0, 0, 2271, 3930, 0, 0, - 0, 0, 2667, 0, 3092, 3374, 3418, 3458, 3219, 3331, - 2746, 0, 0, 0, 3496, 3567, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, + 3, 943, 2515, 2603, 2653, 0, 0, 2708, 2754, 0, + -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -33, 0, 0, -33, 0, 0, 0, 0, 0, 2469, + 0, 0, 3919, 0, -102, 0, 0, 0, 0, 0, + 0, 0, 3216, 0, 0, 359, 0, 3955, 526, 587, + 2276, 0, 0, 0, 2801, 0, 3999, 2603, 0, 0, + 2469, 4043, 0, 0, 0, 0, 2858, 0, 3225, 3461, + 3527, 3588, 3352, 3399, 2908, 0, 0, 0, 3635, 3680, 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, 0, 0, 0, 0, 2797, 0, 0, -23, - 0, -23, 913, 0, 327, 0, 0, 247, 336, 0, - 0, 0, 0, 333, 0, 0, 0, 0, 352, 0, - 0, 3138, 0, 0, 0, 0, 0, 0, 0, 2857, - 0, 0, 2903, 0, 0, -8, -2, 0, 7, 33, - 42, 2255, 0, -28, 3968, 1822, 3732, 3769, 3023, 0, - 4119, 4082, 4021, 4005, 1044, 3610, 3694, 0, 0, 0, - 0, 0, 2949, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3657, -21, 0, 345, 0, 0, - 0, 0, 0, 2271, 0, 71, 0, 0, 0, 0, - 364, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, + 2990, 0, 0, -28, 0, -28, 917, 0, 359, 0, + 0, 295, 379, 0, 0, 0, 0, 370, 0, 0, + 0, 0, 390, 0, 0, 3291, 0, 0, 0, 0, + 0, 0, 0, 3056, 0, 0, 3113, 0, 0, 14, + 35, 0, 55, 91, 117, 1991, 0, 4235, 4090, 1826, + 3807, 3871, 3283, 0, -22, 4191, 4155, 4145, 1048, 3719, + 3763, 0, 0, 0, 0, 0, 3163, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4267, -10, + 0, 375, 0, 0, 0, 0, 0, 2469, 0, 136, + 0, 0, 0, 0, 400, 0, 0, 0, 0, 139, 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, 355, 0, 0, 0, 0, - 0, 0, 2972, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 115, 115, 175, 175, 0, 115, + 0, 0, 0, 359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 374, 115, 913, 0, 0, 115, - 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, + 0, 0, 0, 0, 0, 0, 4080, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, + 179, 179, 0, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 415, 119, + 917, 0, 0, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 179, 0, }; static short yygindex[] = { 0, - 0, 0, 164, 383, 0, 14, 0, 37, 655, -89, - 0, 0, 0, -336, -15, 3415, 0, 2211, 368, 369, - 0, 0, 0, 410, 916, 0, 0, 273, -163, 62, - 94, 249, -71, -186, 634, 0, 0, 0, 428, -46, - 184, 118, 0, -149, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, + 0, 0, 196, 425, 0, -2, 0, 37, 634, -94, + 0, 0, 0, -323, -15, 2445, 0, 999, 414, 417, + 0, 0, 0, 463, -43, 0, 0, 321, -198, 103, + 147, 280, -91, -185, 1, 0, 0, 0, 464, -44, + 222, 338, 0, -179, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -#define YYTABLESIZE 4423 +#define YYTABLESIZE 4568 static short yytable[] = { 71, - 65, 193, 223, 65, 107, 22, 216, 292, 271, 301, - 311, 321, 111, 314, 60, 111, 316, 60, 224, 65, - 313, 372, 318, 250, 194, 181, 178, 183, 15, 111, - 111, 312, 18, 126, 111, 62, 319, 64, 39, 84, - 289, 214, 269, 192, 142, 144, 15, 16, 275, 86, - 18, 69, 390, 338, 198, 217, 39, 180, 339, 182, - 163, 164, 158, 159, 111, 16, 4, 5, 6, 340, - 7, 8, 345, 17, 251, 26, 155, 179, 60, 155, - 172, 113, 20, 173, 122, 315, 174, 175, 176, 293, - 26, 17, 181, 155, 155, 208, 209, 9, 155, 62, - 20, 64, 88, 65, 67, 98, 248, 129, 102, 177, - 127, 38, 344, 219, 26, 199, 200, 201, 202, 203, - 204, 188, 103, 347, 180, 151, 40, 337, 155, 38, - 173, 66, 104, 174, 175, 176, 197, 226, 227, 229, - 230, 231, 232, 233, 15, 369, 370, 26, 317, 105, - 26, 26, 26, 341, 26, 346, 26, 26, 110, 26, - 111, 254, 256, 257, 258, 259, 260, 261, 262, 264, - 359, 23, 24, 26, 21, 112, 185, 184, 26, 209, - 186, 187, 26, 276, 227, 195, 227, 225, 286, 189, - 191, 205, 60, 206, 363, 295, 324, 297, 299, 213, - 215, 220, 328, 21, 176, 26, 303, 21, 65, 266, - 21, 21, 21, 222, 21, 384, 21, 21, 291, 21, - 294, 300, 268, 304, 92, 158, 159, 158, 159, 93, - 302, 159, 306, 21, 308, 309, 310, 26, 21, 26, - 26, 249, 2, 111, 111, 111, 111, 158, 159, 320, - 111, 158, 159, 60, 158, 159, 326, 158, 159, 330, - 106, 158, 159, 158, 159, 21, 158, 159, 158, 159, - 331, 111, 111, 332, 111, 44, 377, 333, 44, 44, - 44, 334, 44, 336, 44, 44, 335, 44, 342, 348, - 158, 159, 158, 159, 209, 158, 159, 21, 349, 21, - 21, 44, 350, 322, 354, 322, 44, 155, 155, 155, - 155, 329, 158, 159, 155, 351, 155, 158, 159, 352, - 276, 362, 155, 155, 155, 155, 364, 273, 158, 159, - 272, 158, 159, 44, 365, 155, 155, 373, 155, 155, - 155, 155, 155, 155, 155, 158, 159, 155, 375, 166, - 155, 155, 155, 158, 159, 158, 159, 379, 53, 71, - 158, 159, 158, 159, 386, 44, 387, 180, 44, 62, - 26, 26, 26, 26, 26, 26, 37, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 353, 35, 181, 26, 26, 163, 26, 26, 26, 26, - 26, 158, 159, 178, 40, 26, 26, 26, 26, 26, - 26, 26, 166, 37, 35, 172, 26, 101, 173, 131, - 132, 174, 175, 176, 80, 26, 228, 26, 26, 361, - 21, 21, 21, 21, 21, 21, 381, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 283, 90, 325, 21, 21, 0, 21, 21, 21, 21, - 21, 0, 0, 270, 0, 21, 21, 21, 21, 21, - 21, 21, 367, 368, 0, 172, 21, 374, 173, 0, - 0, 174, 175, 176, 0, 21, 0, 21, 21, 0, - 0, 162, 0, 382, 162, 0, 0, 385, 44, 44, - 44, 44, 44, 44, 0, 44, 44, 44, 162, 162, - 0, 44, 0, 162, 44, 44, 44, 44, 0, 0, - 0, 44, 44, 0, 44, 44, 44, 44, 44, 0, - 0, 383, 0, 44, 44, 44, 44, 44, 44, 0, - 0, 0, 0, 162, 44, 0, 0, 0, 0, 0, - 0, 0, 0, 44, 190, 44, 44, 190, 190, 190, - 0, 190, 169, 190, 190, 169, 190, 160, 0, 0, - 0, 0, 0, 161, 162, 163, 164, 0, 0, 169, - 169, 0, 0, 0, 169, 190, 0, 0, 0, 165, - 167, 168, 169, 170, 171, 172, 0, 0, 173, 0, - 0, 174, 175, 176, 4, 5, 6, 0, 7, 8, - 0, 0, 190, 0, 169, 191, 0, 0, 191, 191, - 191, 0, 191, 134, 191, 191, 134, 191, 0, 0, - 160, 0, 0, 0, 0, 9, 161, 162, 163, 164, - 134, 134, 0, 0, 0, 134, 191, 190, 0, 0, - 0, 0, 165, 167, 168, 169, 170, 171, 172, 0, - 0, 173, 97, 0, 174, 175, 176, 0, 0, 0, - 0, 0, 4, 5, 6, 134, 7, 8, 55, 119, - 120, 65, 67, 53, 0, 60, 134, 68, 64, 0, - 63, 161, 162, 163, 164, 0, 0, 0, 147, 148, - 149, 150, 0, 9, 62, 0, 0, 0, 191, 66, - 169, 170, 171, 172, 0, 0, 173, 0, 0, 174, - 175, 176, 162, 162, 162, 162, 0, 0, 0, 162, - 0, 162, 0, 0, 0, 0, 61, 162, 162, 162, - 162, 153, 154, 155, 156, 211, 0, 0, 157, 0, - 162, 162, 0, 162, 162, 162, 162, 162, 162, 162, - 0, 0, 162, 0, 0, 162, 162, 162, 26, 158, - 159, 56, 0, 0, 0, 0, 0, 0, 190, 190, - 190, 190, 190, 0, 190, 190, 190, 0, 0, 0, - 190, 0, 0, 169, 169, 169, 169, 0, 0, 0, - 169, 190, 169, 190, 190, 190, 190, 190, 169, 169, - 169, 169, 190, 190, 190, 190, 190, 190, 0, 0, - 0, 169, 169, 190, 169, 169, 169, 169, 169, 169, - 169, 0, 190, 169, 190, 190, 169, 169, 169, 191, - 191, 191, 191, 191, 0, 191, 191, 191, 0, 0, - 0, 191, 0, 0, 134, 134, 134, 134, 0, 0, - 0, 134, 191, 134, 191, 191, 191, 191, 191, 134, - 134, 134, 134, 191, 191, 191, 191, 191, 191, 0, - 0, 0, 134, 134, 191, 134, 134, 134, 134, 134, - 134, 134, 0, 191, 134, 191, 191, 134, 134, 134, - 0, 25, 27, 28, 29, 30, 31, 166, 32, 33, - 34, 0, 0, 0, 35, 0, 0, 36, 37, 38, - 39, 0, 0, 0, 40, 41, 0, 42, 43, 44, - 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, - 51, 52, 0, 0, 0, 44, 0, 54, 44, 44, - 44, 0, 44, 0, 44, 44, 57, 44, 58, 59, - 0, 117, 0, 0, 0, 0, 0, 0, 0, 135, - 161, 44, 163, 164, 0, 0, 44, 0, 0, 78, - 0, 0, 78, 0, 0, 356, 357, 358, 0, 360, - 0, 171, 172, 0, 0, 173, 78, 78, 174, 175, - 176, 0, 0, 44, 0, 55, 0, 0, 65, 67, - 53, 117, 60, 0, 68, 64, 376, 63, 0, 0, - 0, 0, 0, 378, 0, 0, 0, 380, 0, 0, - 0, 78, 0, 0, 212, 44, 66, 0, 44, 0, - 388, 389, 117, 0, 0, 55, 0, 0, 65, 67, - 53, 0, 60, 0, 68, 64, 0, 63, 0, 0, - 0, 0, 0, 61, 161, 162, 163, 164, 0, 0, - 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, - 0, 0, 0, 0, 106, 171, 172, 106, 0, 173, - 0, 0, 174, 175, 176, 26, 0, 0, 56, 0, - 0, 106, 106, 61, 0, 0, 106, 0, 0, 55, - 0, 0, 65, 67, 53, 0, 60, 0, 68, 64, - 0, 63, 0, 0, 0, 160, 0, 0, 0, 0, - 0, 161, 162, 163, 164, 26, 106, 0, 56, 0, - 66, 0, 0, 0, 0, 0, 0, 165, 167, 168, - 169, 170, 171, 172, 0, 0, 173, 0, 0, 174, - 175, 176, 0, 0, 0, 0, 0, 61, 44, 44, - 44, 44, 44, 44, 0, 44, 44, 44, 0, 0, - 0, 44, 0, 117, 44, 44, 44, 44, 0, 117, - 0, 44, 44, 0, 44, 44, 44, 44, 44, 26, - 0, 0, 56, 44, 44, 44, 44, 44, 44, 0, - 78, 78, 78, 78, 44, 0, 0, 78, 0, 0, - 0, 0, 0, 44, 0, 44, 44, 0, 0, 115, - 28, 29, 30, 31, 93, 32, 33, 34, 78, 78, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 41, 0, 42, 43, 44, 45, 46, 0, - 75, 0, 0, 47, 48, 49, 50, 51, 52, 27, - 28, 29, 30, 31, 54, 32, 33, 34, 75, 0, - 0, 35, 0, 57, 0, 58, 59, 0, 0, 0, - 0, 0, 41, 0, 42, 43, 44, 45, 46, 166, - 0, 0, 0, 47, 48, 49, 50, 51, 52, 0, - 0, 0, 75, 0, 54, 106, 106, 106, 106, 0, - 0, 0, 106, 57, 106, 58, 59, 0, 0, 0, - 106, 106, 0, 121, 28, 29, 30, 31, 0, 32, - 33, 34, 0, 106, 106, 35, 106, 106, 106, 106, - 106, 106, 0, 0, 0, 0, 41, 0, 42, 43, + 197, 65, 121, 227, 65, 111, 220, 22, 198, 293, + 139, 296, 315, 275, 305, 102, 273, 88, 113, 228, + 60, 113, 279, 65, 317, 60, 182, 254, 325, 101, + 62, 218, 185, 130, 75, 113, 113, 316, 376, 221, + 113, 90, 187, 15, 146, 148, 123, 124, 64, 196, + 106, 69, 75, 138, 18, 107, 121, 323, 162, 163, + 202, 15, 342, 92, 184, 151, 152, 153, 154, 394, + 113, 108, 18, 343, 186, 39, 344, 183, 255, 216, + 159, 117, 185, 159, 126, 109, 75, 121, 114, 60, + 349, 26, 26, 39, 62, 16, 341, 159, 159, 212, + 213, 297, 159, 203, 204, 205, 206, 207, 208, 181, + 252, 115, 64, 16, 184, 116, 215, 223, 26, 318, + 65, 67, 131, 320, 133, 192, 322, 155, 351, 348, + 188, 17, 159, 4, 5, 6, 189, 7, 8, 363, + 201, 230, 231, 233, 234, 235, 236, 237, 66, 17, + 190, 26, 373, 374, 26, 26, 26, 20, 26, 191, + 26, 26, 193, 26, 9, 258, 260, 261, 262, 263, + 264, 265, 266, 268, 26, 20, 38, 26, 21, 40, + 328, 195, 26, 213, 388, 199, 332, 280, 231, 209, + 231, 229, 290, 210, 38, 60, 217, 15, 319, 299, + 321, 301, 303, 23, 24, 21, 295, 219, 224, 26, + 307, 21, 180, 226, 21, 21, 21, 345, 21, 350, + 21, 21, 65, 21, 272, 96, 162, 163, 121, 298, + 97, 162, 163, 270, 121, 304, 310, 21, 312, 313, + 306, 26, 21, 26, 26, 253, 2, 162, 163, 113, + 113, 113, 113, 162, 163, 308, 113, 314, 113, 367, + 163, 110, 162, 163, 60, 75, 75, 75, 75, 21, + 162, 163, 75, 162, 163, 381, 330, 113, 113, 44, + 113, 113, 44, 44, 44, 324, 44, 338, 44, 44, + 334, 44, 346, 75, 75, 335, 162, 163, 213, 336, + 337, 21, 339, 21, 21, 44, 352, 326, 353, 326, + 44, 159, 159, 159, 159, 333, 162, 163, 159, 340, + 159, 162, 163, 354, 280, 355, 159, 159, 159, 159, + 356, 277, 162, 163, 276, 162, 163, 44, 358, 159, + 159, 366, 159, 159, 159, 159, 159, 159, 159, 162, + 163, 159, 368, 170, 159, 159, 159, 162, 163, 369, + 162, 163, 377, 71, 162, 163, 379, 162, 163, 44, + 162, 163, 44, 383, 26, 26, 26, 26, 26, 26, + 390, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 357, 391, 53, 26, 26, 184, + 26, 26, 26, 26, 26, 162, 163, 162, 163, 26, + 26, 26, 26, 26, 26, 26, 170, 62, 177, 37, + 26, 178, 179, 180, 162, 163, 162, 163, 35, 26, + 185, 26, 26, 182, 21, 21, 21, 21, 21, 21, + 40, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 37, 35, 167, 21, 21, 105, + 21, 21, 21, 21, 21, 135, 162, 163, 136, 21, + 21, 21, 21, 21, 21, 21, 176, 80, 232, 177, + 21, 385, 178, 179, 180, 287, 365, 94, 0, 21, + 0, 21, 21, 176, 329, 166, 177, 0, 166, 178, + 179, 180, 44, 44, 44, 44, 44, 44, 0, 44, + 44, 44, 166, 166, 0, 44, 0, 166, 44, 44, + 44, 44, 0, 167, 168, 44, 44, 0, 44, 44, + 44, 44, 44, 0, 0, 274, 0, 44, 44, 44, + 44, 44, 44, 176, 0, 0, 177, 166, 44, 178, + 179, 180, 0, 0, 0, 0, 0, 44, 194, 44, + 44, 194, 194, 194, 0, 194, 173, 194, 194, 173, + 194, 164, 0, 387, 0, 0, 0, 165, 166, 167, + 168, 0, 0, 173, 173, 0, 0, 0, 173, 194, + 0, 0, 0, 169, 171, 172, 173, 174, 175, 176, + 0, 0, 177, 0, 0, 178, 179, 180, 157, 158, + 159, 160, 0, 0, 0, 161, 194, 0, 173, 195, + 0, 0, 195, 195, 195, 0, 195, 144, 195, 195, + 144, 195, 0, 0, 164, 0, 162, 163, 0, 0, + 165, 166, 167, 168, 144, 144, 0, 0, 0, 144, + 195, 194, 0, 0, 0, 0, 169, 171, 172, 173, + 174, 175, 176, 0, 0, 177, 0, 0, 178, 179, + 180, 0, 0, 0, 0, 0, 4, 5, 6, 144, + 7, 8, 55, 167, 168, 65, 67, 53, 0, 60, + 0, 68, 64, 0, 63, 0, 371, 372, 0, 0, + 0, 378, 175, 176, 0, 0, 177, 9, 62, 178, + 179, 180, 195, 66, 4, 5, 6, 386, 7, 8, + 0, 389, 0, 0, 0, 0, 166, 166, 166, 166, + 0, 0, 0, 166, 0, 166, 0, 0, 0, 0, + 61, 166, 166, 166, 166, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 166, 166, 0, 166, 166, 166, + 166, 166, 166, 166, 0, 0, 166, 0, 0, 166, + 166, 166, 26, 0, 0, 56, 0, 0, 0, 0, + 0, 0, 194, 194, 194, 194, 194, 0, 194, 194, + 194, 0, 0, 0, 194, 0, 0, 173, 173, 173, + 173, 0, 0, 0, 173, 194, 173, 194, 194, 194, + 194, 194, 173, 173, 173, 173, 194, 194, 194, 194, + 194, 194, 0, 0, 0, 173, 173, 194, 173, 173, + 173, 173, 173, 173, 173, 0, 194, 173, 194, 194, + 173, 173, 173, 195, 195, 195, 195, 195, 0, 195, + 195, 195, 0, 0, 0, 195, 0, 0, 144, 144, + 144, 144, 0, 0, 0, 144, 195, 144, 195, 195, + 195, 195, 195, 144, 144, 144, 144, 195, 195, 195, + 195, 195, 195, 0, 0, 0, 144, 144, 195, 144, + 144, 144, 144, 144, 144, 144, 0, 195, 144, 195, + 195, 144, 144, 144, 0, 25, 27, 28, 29, 30, + 31, 170, 32, 33, 34, 0, 0, 0, 35, 0, + 0, 36, 37, 38, 39, 0, 0, 0, 40, 41, + 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, + 47, 48, 49, 50, 51, 52, 0, 0, 0, 44, + 0, 54, 44, 44, 44, 0, 44, 0, 44, 44, + 57, 44, 58, 59, 0, 0, 0, 0, 360, 361, + 362, 0, 364, 0, 0, 44, 0, 0, 0, 0, + 44, 0, 0, 78, 0, 0, 78, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, + 78, 78, 0, 0, 0, 0, 382, 44, 0, 55, + 384, 0, 65, 67, 53, 0, 60, 0, 68, 64, + 0, 63, 0, 392, 393, 0, 99, 99, 0, 0, + 0, 0, 0, 0, 0, 78, 0, 0, 112, 44, + 66, 0, 44, 0, 120, 99, 128, 0, 0, 55, + 134, 99, 65, 67, 53, 0, 60, 0, 68, 64, + 0, 63, 0, 99, 99, 99, 99, 61, 165, 166, + 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 0, 0, 0, 0, 0, 0, 0, 106, 175, + 176, 106, 0, 177, 0, 0, 178, 179, 180, 26, + 0, 0, 56, 0, 0, 106, 106, 61, 0, 0, + 106, 0, 0, 55, 120, 0, 65, 67, 53, 0, + 60, 0, 68, 64, 0, 63, 0, 0, 0, 164, + 0, 0, 0, 0, 0, 165, 166, 167, 168, 26, + 106, 0, 56, 0, 66, 0, 0, 0, 0, 0, + 0, 169, 171, 172, 173, 174, 175, 176, 0, 0, + 177, 0, 0, 178, 179, 180, 0, 0, 0, 0, + 0, 61, 44, 44, 44, 44, 44, 44, 256, 44, + 44, 44, 0, 0, 0, 44, 0, 0, 44, 44, + 44, 44, 0, 0, 0, 44, 44, 0, 44, 44, + 44, 44, 44, 26, 0, 288, 56, 44, 44, 44, + 44, 44, 44, 0, 78, 78, 78, 78, 44, 0, + 0, 78, 0, 0, 0, 0, 0, 44, 0, 44, + 44, 0, 0, 119, 28, 29, 30, 31, 97, 32, + 33, 34, 78, 78, 0, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, - 50, 51, 52, 163, 164, 0, 55, 0, 54, 65, - 67, 53, 0, 60, 0, 68, 64, 57, 63, 58, - 59, 0, 171, 172, 0, 0, 173, 0, 0, 174, - 175, 176, 125, 0, 0, 0, 0, 66, 0, 0, - 0, 161, 162, 163, 164, 0, 55, 0, 0, 65, - 67, 53, 0, 60, 141, 68, 64, 0, 63, 168, - 169, 170, 171, 172, 61, 0, 173, 0, 0, 174, - 175, 176, 0, 0, 0, 0, 0, 66, 0, 0, - 161, 162, 163, 164, 0, 0, 55, 0, 0, 65, - 67, 53, 0, 60, 0, 68, 64, 0, 63, 56, - 170, 171, 172, 0, 61, 173, 0, 0, 174, 175, - 176, 0, 0, 0, 0, 0, 0, 66, 0, 0, - 0, 75, 75, 75, 75, 0, 55, 0, 75, 65, - 67, 53, 0, 60, 207, 68, 64, 0, 63, 56, - 0, 0, 0, 0, 61, 0, 143, 160, 0, 75, - 75, 0, 0, 161, 162, 163, 164, 66, 0, 0, + 50, 51, 52, 27, 28, 29, 30, 31, 54, 32, + 33, 34, 0, 0, 0, 35, 0, 57, 0, 58, + 59, 0, 309, 0, 0, 0, 41, 170, 42, 43, + 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, + 50, 51, 52, 0, 0, 0, 0, 0, 54, 106, + 106, 106, 106, 0, 0, 0, 106, 57, 106, 58, + 59, 0, 0, 0, 106, 106, 0, 125, 28, 29, + 30, 31, 0, 32, 33, 34, 0, 106, 106, 35, + 106, 106, 106, 106, 106, 106, 0, 0, 0, 0, + 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, + 0, 47, 48, 49, 50, 51, 52, 0, 0, 0, + 55, 0, 54, 65, 67, 53, 0, 60, 0, 68, + 64, 57, 63, 58, 59, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, + 0, 66, 0, 0, 0, 165, 166, 167, 168, 0, + 55, 0, 0, 65, 67, 53, 0, 60, 145, 68, + 64, 0, 63, 172, 173, 174, 175, 176, 61, 0, + 177, 0, 0, 178, 179, 180, 0, 0, 0, 0, + 0, 66, 0, 0, 0, 165, 166, 167, 168, 0, + 55, 0, 0, 65, 67, 53, 0, 60, 0, 68, + 64, 0, 63, 56, 173, 174, 175, 176, 61, 0, + 177, 0, 0, 178, 179, 180, 0, 0, 0, 0, + 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 65, 67, 53, 0, 60, 211, 68, + 64, 0, 63, 56, 0, 164, 0, 0, 61, 0, + 147, 165, 166, 167, 168, 0, 0, 0, 0, 0, + 0, 66, 0, 0, 0, 0, 0, 169, 171, 172, + 173, 174, 175, 176, 0, 0, 177, 0, 0, 178, + 179, 180, 0, 56, 165, 166, 167, 168, 61, 0, + 55, 0, 0, 65, 67, 53, 0, 60, 222, 68, + 64, 0, 63, 0, 174, 175, 176, 0, 0, 177, + 0, 0, 178, 179, 180, 0, 0, 0, 0, 0, + 0, 66, 165, 56, 167, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 28, 29, 30, 31, 0, + 32, 33, 34, 175, 176, 0, 35, 177, 61, 0, + 178, 179, 180, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 27, 28, 29, 30, 31, 54, + 32, 33, 34, 56, 0, 0, 35, 0, 57, 0, + 58, 59, 0, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 27, 28, 29, 30, 31, 54, + 32, 33, 34, 0, 0, 0, 35, 0, 57, 0, + 58, 59, 0, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 27, 28, 29, 30, 31, 54, + 32, 33, 34, 0, 0, 0, 35, 0, 57, 0, + 58, 59, 0, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 0, 0, 0, 55, 0, 54, + 65, 67, 53, 0, 60, 259, 68, 64, 57, 63, + 58, 59, 0, 0, 27, 28, 29, 30, 31, 0, + 32, 33, 34, 0, 0, 0, 35, 0, 66, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 0, 61, 0, 55, 0, 54, + 65, 67, 53, 0, 60, 267, 68, 64, 57, 63, + 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, + 56, 0, 0, 0, 0, 0, 108, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 167, 168, 169, 170, 171, 172, 0, 0, 173, 56, - 0, 174, 175, 176, 61, 0, 55, 0, 0, 65, - 67, 53, 0, 60, 218, 68, 64, 0, 63, 0, + 0, 0, 0, 108, 108, 61, 55, 0, 108, 65, + 67, 53, 0, 60, 0, 68, 64, 0, 63, 0, + 0, 0, 0, 0, 165, 166, 167, 168, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 66, 108, 0, + 56, 171, 172, 173, 174, 175, 176, 0, 0, 177, + 0, 0, 178, 179, 180, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 61, 0, 55, 0, 0, 65, + 67, 53, 0, 60, 300, 68, 64, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 28, 29, 30, 31, 0, 32, 33, 34, 0, - 0, 0, 35, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 27, 28, 29, 30, 31, 54, 32, 33, 34, 56, - 0, 0, 35, 0, 57, 0, 58, 59, 0, 0, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 27, 28, 29, 30, 31, 54, 32, 33, 34, 0, - 0, 0, 35, 0, 57, 0, 58, 59, 0, 0, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 27, 28, 29, 30, 31, 54, 32, 33, 34, 0, - 0, 0, 35, 0, 57, 0, 58, 59, 0, 0, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, + 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, + 0, 0, 0, 35, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 41, 0, 42, 43, 44, 45, + 46, 0, 0, 0, 0, 47, 48, 49, 50, 51, + 52, 74, 0, 0, 74, 0, 54, 0, 0, 56, + 0, 0, 0, 0, 0, 57, 0, 58, 59, 74, + 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, + 0, 55, 0, 35, 65, 67, 53, 0, 60, 302, + 68, 64, 0, 63, 41, 0, 42, 43, 44, 45, + 46, 0, 0, 74, 0, 47, 48, 49, 50, 51, + 52, 0, 66, 0, 0, 0, 54, 108, 108, 108, + 108, 0, 0, 0, 108, 57, 108, 58, 59, 25, + 27, 28, 29, 30, 31, 0, 32, 33, 34, 61, + 0, 0, 35, 0, 0, 108, 108, 0, 108, 108, + 108, 108, 108, 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 0, 0, 0, 55, 0, 54, 65, 67, 53, 0, - 60, 255, 68, 64, 57, 63, 58, 59, 0, 0, + 0, 0, 0, 55, 56, 54, 65, 67, 53, 0, + 60, 311, 68, 64, 57, 63, 58, 59, 0, 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, 0, 0, 0, 35, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, 0, 61, 0, 55, 0, 54, 65, 67, 53, 0, - 60, 263, 68, 64, 57, 63, 58, 59, 0, 0, + 60, 0, 68, 64, 57, 63, 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 56, 0, 0, 0, - 0, 0, 108, 0, 0, 108, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, - 108, 61, 55, 0, 108, 65, 67, 53, 0, 60, - 0, 68, 64, 0, 63, 0, 0, 0, 0, 0, - 161, 162, 163, 164, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 108, 0, 56, 167, 168, 169, - 170, 171, 172, 0, 0, 173, 0, 0, 174, 175, - 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 61, 0, 55, 0, 0, 65, 67, 53, 0, 60, - 296, 68, 64, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 0, 56, 0, 0, 0, 0, + 0, 0, 74, 74, 74, 74, 0, 0, 0, 74, + 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, + 74, 32, 33, 34, 0, 0, 0, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 41, 0, + 42, 43, 44, 45, 46, 0, 183, 0, 0, 47, + 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, + 54, 0, 0, 183, 183, 0, 0, 0, 183, 57, + 0, 58, 59, 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, 183, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, 0, 0, 0, 35, - 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, - 0, 47, 48, 49, 50, 51, 52, 0, 0, 0, - 0, 0, 54, 0, 0, 56, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 41, 0, 42, 43, 44, 45, 46, 162, 0, 0, + 162, 47, 48, 49, 50, 51, 52, 0, 0, 0, + 0, 0, 54, 0, 162, 162, 0, 0, 0, 162, 0, 57, 0, 58, 59, 0, 0, 27, 28, 29, - 30, 31, 0, 32, 33, 34, 0, 55, 0, 35, - 65, 67, 53, 0, 60, 298, 68, 64, 0, 63, + 30, 31, 0, 32, 33, 34, 0, 0, 0, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, - 0, 47, 48, 49, 50, 51, 52, 0, 66, 0, - 0, 0, 54, 108, 108, 108, 108, 0, 0, 0, - 108, 57, 108, 58, 59, 25, 27, 28, 29, 30, - 31, 0, 32, 33, 34, 61, 0, 0, 35, 0, - 0, 108, 108, 0, 108, 108, 108, 108, 108, 41, - 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, - 47, 48, 49, 50, 51, 52, 0, 0, 0, 55, - 56, 54, 65, 67, 53, 0, 60, 307, 68, 64, - 57, 63, 58, 59, 0, 0, 27, 28, 29, 30, - 31, 0, 32, 33, 34, 0, 0, 0, 35, 0, - 66, 0, 0, 0, 0, 0, 0, 0, 0, 41, - 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, - 47, 48, 49, 50, 51, 52, 0, 61, 0, 55, - 0, 54, 65, 67, 53, 0, 60, 0, 68, 64, - 57, 63, 58, 59, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, - 66, 0, 56, 0, 0, 0, 0, 0, 158, 0, - 108, 158, 0, 0, 0, 0, 116, 95, 124, 0, - 0, 0, 130, 95, 0, 158, 158, 61, 0, 0, - 158, 0, 0, 0, 0, 95, 95, 95, 95, 0, - 0, 27, 28, 29, 30, 31, 0, 32, 33, 34, - 0, 0, 0, 35, 0, 74, 0, 0, 74, 0, - 158, 0, 56, 0, 41, 0, 42, 43, 44, 45, - 46, 178, 0, 74, 178, 47, 48, 49, 50, 51, - 52, 0, 116, 0, 0, 0, 54, 0, 178, 178, - 0, 0, 0, 178, 0, 57, 0, 58, 59, 0, - 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, + 0, 47, 48, 49, 50, 51, 52, 103, 0, 0, + 170, 0, 54, 0, 0, 113, 0, 0, 0, 118, + 0, 57, 127, 58, 59, 132, 0, 0, 0, 140, + 141, 142, 143, 144, 0, 0, 0, 149, 150, 182, + 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 182, 182, 0, 0, + 0, 182, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 200, 183, 183, 183, + 183, 0, 0, 0, 183, 149, 183, 0, 149, 0, + 0, 182, 183, 183, 183, 183, 0, 0, 0, 0, + 0, 0, 149, 149, 0, 183, 183, 149, 183, 183, + 183, 183, 183, 183, 183, 0, 0, 183, 0, 0, + 183, 183, 183, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 149, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 269, 0, 0, 162, 162, + 162, 162, 0, 144, 0, 162, 144, 162, 0, 0, + 0, 0, 0, 162, 162, 162, 162, 0, 0, 0, + 144, 144, 0, 0, 0, 144, 162, 162, 0, 162, + 162, 162, 162, 162, 162, 162, 0, 0, 162, 0, + 0, 162, 162, 162, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 147, 0, 144, 147, 0, 164, 0, + 0, 0, 0, 0, 165, 166, 167, 168, 0, 0, + 147, 147, 0, 0, 0, 147, 0, 0, 0, 0, + 331, 171, 172, 173, 174, 175, 176, 0, 0, 177, + 0, 0, 178, 179, 180, 0, 0, 0, 0, 0, + 182, 182, 182, 182, 0, 147, 0, 182, 145, 182, + 0, 145, 0, 347, 0, 182, 182, 182, 182, 0, + 0, 0, 0, 0, 0, 145, 145, 0, 182, 182, + 145, 182, 182, 182, 182, 182, 182, 182, 0, 0, + 182, 0, 0, 182, 182, 182, 149, 149, 149, 149, + 0, 0, 0, 149, 155, 149, 0, 155, 0, 0, + 145, 149, 149, 149, 149, 0, 0, 0, 0, 0, + 0, 155, 155, 0, 149, 149, 155, 149, 149, 149, + 149, 149, 149, 149, 0, 0, 149, 0, 0, 149, + 149, 149, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 173, 0, 0, 173, 0, 155, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, + 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 144, 144, 144, 144, 0, 0, + 0, 144, 0, 144, 0, 0, 0, 0, 0, 144, + 144, 144, 144, 173, 0, 0, 0, 0, 176, 0, + 0, 176, 144, 144, 0, 144, 144, 144, 144, 144, + 144, 144, 0, 0, 144, 176, 176, 144, 144, 144, + 176, 0, 0, 0, 147, 147, 147, 147, 0, 0, + 0, 147, 0, 147, 0, 0, 0, 0, 0, 147, + 147, 147, 147, 0, 0, 0, 0, 0, 143, 0, + 176, 143, 147, 147, 0, 147, 147, 147, 147, 147, + 147, 147, 0, 0, 147, 143, 143, 147, 147, 147, + 143, 0, 0, 0, 0, 0, 0, 0, 0, 145, + 145, 145, 145, 0, 0, 0, 145, 0, 145, 0, + 0, 0, 0, 0, 145, 145, 145, 145, 0, 0, + 143, 0, 0, 0, 0, 0, 0, 145, 145, 0, + 145, 145, 145, 145, 145, 145, 145, 0, 0, 145, + 0, 0, 145, 145, 145, 155, 155, 155, 155, 0, + 76, 0, 155, 76, 155, 0, 0, 0, 0, 0, + 155, 155, 155, 155, 0, 0, 0, 76, 76, 0, + 0, 0, 76, 155, 155, 0, 155, 155, 155, 155, + 155, 155, 155, 0, 0, 155, 0, 0, 155, 155, + 155, 0, 173, 173, 173, 173, 0, 0, 0, 173, + 0, 173, 76, 0, 0, 0, 0, 173, 173, 173, + 173, 0, 0, 0, 0, 0, 66, 0, 0, 66, + 173, 173, 0, 173, 173, 173, 173, 173, 173, 173, + 0, 0, 173, 66, 66, 173, 173, 173, 66, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, + 176, 176, 176, 0, 0, 0, 176, 0, 176, 0, + 0, 0, 0, 0, 176, 176, 176, 176, 66, 0, + 0, 0, 0, 142, 0, 0, 142, 176, 176, 0, + 176, 176, 176, 176, 176, 176, 176, 0, 0, 176, + 142, 142, 176, 176, 176, 142, 0, 0, 0, 143, + 143, 143, 143, 0, 0, 0, 143, 0, 143, 0, + 0, 0, 0, 0, 143, 143, 143, 143, 0, 0, + 0, 0, 0, 82, 0, 142, 82, 143, 143, 0, + 143, 143, 143, 143, 143, 143, 143, 0, 0, 143, + 82, 82, 143, 143, 143, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 178, 0, 139, 0, 0, 139, 0, - 0, 0, 0, 27, 28, 29, 30, 31, 0, 32, - 33, 34, 139, 139, 0, 35, 252, 139, 0, 0, - 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, - 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, - 50, 51, 52, 284, 0, 0, 0, 139, 54, 0, - 0, 0, 0, 0, 0, 134, 0, 57, 134, 58, - 59, 0, 0, 27, 28, 29, 30, 31, 0, 32, - 33, 34, 134, 134, 0, 35, 0, 134, 0, 0, - 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, - 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, - 50, 51, 52, 0, 0, 0, 0, 134, 54, 158, - 158, 158, 158, 0, 0, 0, 158, 57, 158, 58, - 59, 0, 0, 0, 158, 158, 158, 158, 0, 0, - 0, 0, 0, 137, 0, 0, 137, 158, 158, 0, - 158, 158, 158, 158, 158, 158, 158, 0, 0, 158, - 137, 137, 158, 158, 158, 137, 74, 74, 74, 74, - 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 178, 178, 178, 178, 0, 0, 0, 178, - 135, 178, 0, 135, 74, 137, 0, 178, 178, 178, - 178, 0, 0, 0, 0, 0, 0, 135, 135, 0, - 178, 178, 135, 178, 178, 178, 178, 178, 178, 178, - 0, 0, 178, 0, 0, 178, 178, 178, 0, 0, - 0, 0, 0, 0, 0, 0, 139, 139, 139, 139, - 0, 145, 135, 139, 145, 139, 0, 0, 0, 0, - 0, 139, 139, 139, 139, 0, 0, 0, 145, 145, - 0, 0, 0, 145, 139, 139, 0, 139, 139, 139, - 139, 139, 139, 139, 0, 0, 139, 0, 0, 139, - 139, 139, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 156, 145, 0, 156, 134, 134, 134, 134, - 0, 169, 0, 134, 169, 134, 0, 0, 0, 156, - 156, 134, 134, 134, 134, 0, 0, 0, 169, 169, - 0, 0, 0, 169, 134, 134, 0, 134, 134, 134, - 134, 134, 134, 134, 0, 0, 134, 0, 0, 134, - 134, 134, 0, 0, 156, 0, 0, 172, 0, 0, - 172, 0, 0, 169, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 172, 172, 0, 0, 0, 172, - 0, 0, 0, 0, 137, 137, 137, 137, 0, 0, - 0, 137, 0, 137, 0, 0, 0, 0, 0, 137, - 137, 137, 137, 0, 0, 0, 0, 0, 0, 172, - 0, 0, 137, 137, 0, 137, 137, 137, 137, 137, - 137, 137, 0, 0, 137, 0, 0, 137, 137, 137, - 0, 135, 135, 135, 135, 0, 128, 0, 135, 128, - 135, 0, 0, 0, 0, 0, 135, 135, 135, 135, - 0, 0, 0, 128, 128, 0, 0, 0, 128, 135, - 135, 0, 135, 135, 135, 135, 135, 135, 135, 0, - 0, 135, 0, 0, 135, 135, 135, 0, 0, 0, - 0, 0, 145, 145, 145, 145, 0, 76, 128, 145, - 76, 145, 0, 0, 0, 0, 0, 145, 145, 145, - 145, 0, 0, 0, 76, 76, 0, 0, 0, 76, - 145, 145, 0, 145, 145, 145, 145, 145, 145, 145, - 0, 0, 145, 0, 0, 145, 145, 145, 0, 0, - 0, 0, 0, 156, 156, 156, 156, 0, 0, 76, - 156, 0, 169, 169, 169, 169, 0, 66, 0, 169, - 66, 169, 0, 0, 0, 0, 0, 169, 169, 169, - 169, 156, 156, 0, 66, 66, 0, 0, 0, 66, - 169, 169, 0, 169, 169, 169, 169, 169, 169, 169, - 0, 0, 169, 0, 0, 169, 169, 169, 172, 172, - 172, 172, 0, 127, 0, 172, 127, 172, 0, 66, - 0, 0, 0, 172, 172, 172, 172, 0, 0, 0, - 127, 127, 0, 0, 0, 127, 172, 172, 0, 172, - 172, 172, 172, 172, 172, 172, 0, 0, 172, 0, - 0, 172, 172, 172, 0, 0, 0, 0, 0, 82, - 0, 0, 82, 0, 0, 127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 82, 82, 0, 0, - 0, 82, 114, 0, 0, 114, 0, 128, 128, 128, - 128, 0, 0, 0, 128, 0, 128, 0, 0, 114, - 114, 0, 128, 128, 128, 128, 0, 0, 0, 0, - 0, 82, 0, 0, 0, 128, 128, 0, 128, 128, - 128, 128, 128, 128, 128, 0, 0, 128, 0, 0, - 128, 128, 128, 102, 114, 0, 102, 0, 76, 76, - 76, 76, 179, 0, 0, 76, 0, 76, 0, 0, - 102, 102, 0, 76, 76, 76, 76, 0, 0, 179, - 179, 0, 0, 0, 179, 0, 76, 76, 0, 76, - 76, 76, 76, 76, 76, 76, 0, 0, 76, 0, - 0, 76, 76, 76, 0, 102, 0, 0, 0, 0, - 0, 0, 0, 0, 179, 0, 0, 0, 66, 66, - 66, 66, 157, 0, 0, 66, 0, 66, 0, 0, - 0, 0, 0, 66, 66, 66, 66, 0, 0, 157, - 157, 0, 0, 0, 157, 0, 66, 66, 0, 66, - 66, 66, 66, 66, 66, 66, 0, 0, 66, 0, - 0, 66, 66, 66, 127, 127, 127, 127, 79, 0, - 0, 127, 0, 127, 157, 0, 0, 0, 0, 127, - 127, 127, 127, 0, 0, 79, 79, 0, 0, 0, - 79, 0, 127, 127, 0, 127, 127, 127, 127, 127, - 127, 127, 0, 0, 127, 0, 0, 127, 127, 127, - 82, 82, 82, 82, 0, 0, 0, 82, 0, 82, - 79, 0, 0, 0, 0, 82, 82, 82, 82, 0, - 0, 0, 0, 114, 114, 114, 114, 0, 82, 82, - 114, 82, 82, 82, 82, 82, 82, 82, 0, 123, - 82, 0, 123, 82, 82, 82, 0, 0, 0, 0, - 0, 114, 114, 0, 114, 0, 123, 123, 0, 0, - 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 102, 102, 102, 102, 0, 0, - 0, 102, 0, 179, 179, 179, 179, 0, 0, 0, - 179, 123, 179, 0, 0, 0, 0, 0, 179, 179, - 179, 179, 102, 102, 0, 0, 0, 0, 0, 0, - 0, 179, 179, 0, 179, 179, 179, 179, 179, 179, - 179, 0, 0, 179, 0, 0, 179, 179, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 157, 157, 157, 157, 0, 0, 0, - 157, 124, 157, 0, 124, 0, 0, 0, 157, 157, - 157, 157, 0, 0, 0, 0, 0, 0, 124, 124, - 0, 157, 157, 124, 157, 157, 157, 157, 157, 157, - 157, 0, 0, 157, 0, 0, 157, 157, 157, 79, - 79, 79, 79, 0, 118, 0, 79, 118, 79, 0, - 0, 0, 0, 124, 79, 79, 79, 79, 0, 0, - 0, 118, 118, 0, 0, 0, 118, 79, 79, 0, - 79, 79, 79, 79, 79, 79, 79, 99, 0, 79, - 0, 0, 79, 79, 79, 109, 0, 0, 119, 114, - 0, 119, 123, 0, 0, 128, 118, 0, 0, 136, - 137, 138, 139, 140, 0, 119, 119, 145, 146, 0, - 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 123, 123, 123, 123, 0, 0, 0, 123, 120, 123, - 0, 120, 0, 0, 0, 123, 123, 123, 123, 0, - 119, 0, 196, 0, 0, 120, 120, 0, 123, 123, - 120, 123, 123, 123, 123, 123, 123, 123, 0, 0, - 123, 0, 0, 0, 0, 0, 116, 0, 0, 116, + 0, 0, 0, 0, 0, 82, 160, 0, 0, 160, + 0, 76, 76, 76, 76, 161, 0, 0, 76, 0, + 76, 0, 0, 160, 160, 0, 76, 76, 76, 76, + 0, 0, 161, 161, 0, 0, 0, 161, 0, 76, + 76, 0, 76, 76, 76, 76, 76, 76, 76, 0, + 0, 76, 0, 0, 76, 76, 76, 0, 160, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, + 0, 0, 0, 102, 0, 0, 102, 66, 66, 66, + 66, 79, 0, 0, 66, 0, 66, 0, 0, 0, + 102, 102, 66, 66, 66, 66, 0, 0, 79, 79, + 0, 0, 0, 79, 0, 66, 66, 0, 66, 66, + 66, 66, 66, 66, 66, 0, 0, 66, 0, 0, + 66, 66, 66, 0, 0, 102, 0, 0, 0, 0, + 0, 0, 0, 79, 142, 142, 142, 142, 0, 0, + 0, 142, 121, 142, 0, 121, 0, 0, 0, 142, + 142, 142, 142, 0, 0, 0, 0, 0, 0, 121, + 121, 0, 142, 142, 121, 142, 142, 142, 142, 142, + 142, 142, 0, 0, 142, 0, 0, 142, 142, 142, + 0, 0, 0, 0, 82, 82, 82, 82, 0, 122, + 0, 82, 122, 82, 121, 0, 0, 0, 0, 82, + 82, 82, 82, 0, 0, 0, 122, 122, 0, 0, + 0, 122, 82, 82, 0, 82, 82, 82, 82, 82, + 82, 82, 0, 0, 82, 0, 0, 82, 82, 82, + 0, 0, 0, 0, 0, 0, 0, 160, 160, 160, + 160, 122, 0, 0, 160, 0, 161, 161, 161, 161, + 0, 117, 0, 161, 117, 161, 0, 0, 0, 0, + 0, 161, 161, 161, 161, 160, 160, 0, 117, 117, + 0, 0, 0, 117, 161, 161, 0, 161, 161, 161, + 161, 161, 161, 161, 0, 0, 161, 0, 0, 161, + 161, 161, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 102, 102, 102, 102, 0, 0, + 0, 102, 79, 79, 79, 79, 0, 118, 0, 79, + 118, 79, 0, 0, 0, 0, 0, 79, 79, 79, + 79, 0, 102, 102, 118, 118, 0, 0, 0, 118, + 79, 79, 0, 79, 79, 79, 79, 79, 79, 79, + 0, 0, 79, 0, 0, 79, 79, 79, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, + 0, 0, 0, 121, 121, 121, 121, 0, 139, 0, + 121, 139, 121, 0, 0, 0, 0, 0, 121, 121, + 121, 121, 0, 0, 0, 139, 139, 0, 0, 0, + 139, 121, 121, 0, 121, 121, 121, 121, 121, 121, + 121, 0, 0, 121, 0, 0, 0, 0, 0, 0, + 122, 122, 122, 122, 0, 115, 0, 122, 115, 122, + 139, 0, 0, 0, 0, 122, 122, 122, 122, 0, + 0, 0, 115, 115, 0, 0, 0, 115, 122, 122, + 0, 122, 122, 122, 122, 122, 122, 122, 0, 0, + 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 116, 0, 0, 116, 0, 0, 0, 115, 0, 0, + 0, 0, 117, 117, 117, 117, 0, 116, 116, 117, + 0, 117, 116, 0, 0, 0, 0, 117, 117, 117, + 117, 0, 0, 0, 0, 0, 0, 0, 0, 114, + 117, 117, 114, 117, 117, 117, 117, 117, 117, 117, + 0, 0, 116, 0, 0, 0, 114, 114, 0, 0, + 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, + 118, 118, 0, 103, 0, 118, 103, 118, 0, 0, + 0, 114, 0, 118, 118, 118, 118, 0, 0, 0, + 103, 103, 0, 0, 0, 103, 118, 118, 0, 118, + 118, 118, 118, 118, 118, 118, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, + 104, 0, 0, 0, 0, 103, 0, 0, 0, 139, + 139, 139, 139, 0, 104, 104, 139, 0, 139, 104, + 0, 0, 0, 0, 139, 139, 139, 139, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 139, 139, 0, + 139, 139, 139, 139, 139, 139, 139, 0, 0, 104, + 0, 0, 0, 0, 0, 0, 115, 115, 115, 115, + 0, 105, 0, 115, 105, 115, 0, 0, 0, 0, + 0, 115, 115, 115, 115, 0, 0, 0, 105, 105, + 0, 0, 0, 105, 115, 115, 0, 115, 115, 115, + 115, 115, 115, 115, 0, 0, 0, 0, 0, 0, + 0, 116, 116, 116, 116, 0, 0, 0, 116, 165, + 116, 0, 165, 105, 0, 0, 116, 116, 116, 116, + 0, 0, 0, 0, 0, 0, 165, 165, 0, 116, + 116, 165, 116, 116, 116, 116, 116, 116, 116, 0, + 114, 114, 114, 114, 0, 164, 0, 114, 164, 114, + 0, 0, 0, 0, 0, 114, 114, 114, 114, 0, + 0, 165, 164, 164, 0, 0, 0, 164, 114, 114, + 0, 114, 114, 114, 114, 114, 114, 114, 0, 0, + 0, 0, 0, 0, 103, 103, 103, 103, 0, 128, + 0, 103, 128, 103, 0, 0, 0, 164, 0, 103, + 103, 103, 103, 0, 0, 0, 128, 128, 0, 0, + 0, 128, 103, 103, 0, 103, 103, 103, 103, 103, + 103, 103, 0, 0, 0, 0, 0, 0, 104, 104, + 104, 104, 0, 141, 0, 104, 141, 104, 0, 0, + 0, 128, 0, 104, 104, 104, 104, 0, 0, 0, + 141, 141, 0, 0, 0, 141, 104, 104, 0, 104, + 104, 104, 104, 104, 104, 0, 0, 0, 0, 0, + 138, 0, 0, 138, 0, 0, 0, 0, 0, 0, + 107, 0, 0, 107, 0, 141, 0, 138, 138, 0, + 0, 0, 105, 105, 105, 105, 0, 107, 107, 105, + 0, 105, 107, 0, 0, 0, 0, 105, 105, 0, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 105, 105, 138, 105, 105, 105, 105, 105, 105, 0, + 0, 0, 107, 0, 0, 109, 0, 0, 109, 0, + 165, 165, 165, 165, 0, 110, 0, 165, 110, 165, + 0, 0, 109, 109, 0, 165, 165, 109, 0, 0, + 0, 0, 110, 110, 0, 0, 0, 110, 165, 165, + 0, 165, 165, 165, 165, 165, 164, 164, 164, 164, + 0, 112, 0, 164, 112, 164, 0, 109, 0, 0, + 0, 164, 164, 0, 0, 0, 0, 110, 112, 112, + 0, 0, 0, 112, 164, 164, 0, 164, 164, 164, + 164, 164, 0, 0, 0, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 0, 111, 0, 128, 111, 128, + 0, 0, 0, 112, 0, 128, 128, 0, 0, 0, + 0, 0, 111, 111, 0, 0, 0, 111, 128, 128, + 0, 128, 128, 128, 128, 128, 0, 77, 0, 0, + 77, 0, 0, 0, 141, 141, 141, 141, 0, 0, + 0, 141, 0, 141, 77, 77, 0, 111, 0, 141, + 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 141, 141, 0, 141, 141, 141, 141, 141, + 0, 138, 138, 138, 138, 0, 0, 0, 138, 77, + 0, 107, 107, 107, 107, 0, 0, 0, 107, 0, + 107, 0, 0, 0, 0, 0, 0, 107, 0, 138, + 138, 0, 138, 0, 0, 0, 0, 0, 0, 107, + 107, 0, 107, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 120, 0, 0, 116, 116, 0, 0, 0, 116, 0, + 0, 0, 0, 0, 0, 0, 109, 109, 109, 109, + 0, 0, 0, 109, 0, 109, 110, 110, 110, 110, + 0, 0, 0, 110, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 109, 0, 109, 109, 109, + 109, 109, 0, 0, 110, 110, 0, 110, 110, 110, + 110, 0, 112, 112, 112, 112, 0, 0, 0, 112, + 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 116, 0, + 112, 112, 0, 112, 112, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 111, 111, 111, 111, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 265, 124, 124, 124, 124, 0, 117, 0, 124, - 117, 124, 0, 0, 0, 0, 0, 124, 124, 124, - 124, 0, 0, 0, 117, 117, 0, 0, 0, 117, - 124, 124, 0, 124, 124, 124, 124, 124, 124, 124, - 0, 0, 124, 0, 0, 118, 118, 118, 118, 0, - 115, 0, 118, 115, 118, 0, 0, 0, 0, 117, - 118, 118, 118, 118, 0, 0, 0, 115, 115, 0, - 0, 0, 115, 118, 118, 0, 118, 118, 118, 118, - 118, 118, 118, 0, 0, 0, 327, 0, 0, 119, - 119, 119, 119, 0, 0, 0, 119, 77, 119, 0, - 77, 0, 115, 0, 119, 119, 119, 119, 0, 0, - 0, 0, 0, 0, 77, 77, 0, 119, 119, 343, - 119, 119, 119, 119, 119, 119, 119, 0, 0, 120, - 120, 120, 120, 0, 103, 0, 120, 103, 120, 0, - 0, 0, 0, 0, 120, 120, 120, 120, 0, 77, - 0, 103, 103, 0, 0, 0, 103, 120, 120, 0, - 120, 120, 120, 120, 120, 120, 120, 116, 116, 116, - 116, 0, 104, 0, 116, 104, 116, 0, 0, 0, - 0, 0, 116, 116, 116, 116, 103, 0, 0, 104, - 104, 0, 0, 0, 104, 116, 116, 0, 116, 116, - 116, 116, 116, 116, 116, 0, 0, 0, 0, 105, - 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 104, 0, 105, 105, 0, 0, - 0, 105, 0, 0, 0, 0, 0, 0, 117, 117, - 117, 117, 0, 0, 0, 117, 0, 117, 0, 0, - 0, 0, 0, 117, 117, 117, 117, 305, 0, 0, - 0, 105, 166, 0, 0, 0, 117, 117, 0, 117, - 117, 117, 117, 117, 117, 117, 0, 0, 0, 0, - 0, 115, 115, 115, 115, 0, 161, 0, 115, 161, - 115, 0, 0, 0, 0, 0, 115, 115, 115, 115, - 0, 0, 0, 161, 161, 0, 0, 0, 161, 115, - 115, 0, 115, 115, 115, 115, 115, 115, 115, 0, - 0, 0, 0, 160, 0, 0, 160, 0, 77, 77, - 77, 77, 0, 149, 0, 77, 149, 0, 161, 0, - 160, 160, 0, 0, 0, 160, 0, 0, 0, 0, - 149, 149, 0, 0, 0, 149, 77, 77, 0, 0, - 0, 0, 0, 0, 0, 103, 103, 103, 103, 0, - 126, 0, 103, 126, 103, 160, 0, 0, 0, 0, - 103, 103, 103, 103, 0, 149, 0, 126, 126, 0, - 0, 0, 126, 103, 103, 0, 103, 103, 103, 103, - 103, 103, 103, 104, 104, 104, 104, 0, 107, 0, - 104, 107, 104, 0, 0, 0, 0, 0, 104, 104, - 104, 104, 126, 0, 0, 107, 107, 0, 0, 0, - 107, 104, 104, 0, 104, 104, 104, 104, 104, 104, - 105, 105, 105, 105, 0, 109, 0, 105, 109, 105, - 0, 0, 0, 0, 0, 105, 105, 0, 105, 0, - 107, 110, 109, 109, 110, 0, 0, 109, 105, 105, - 0, 105, 105, 105, 105, 105, 105, 0, 110, 110, - 160, 0, 0, 110, 0, 0, 161, 162, 163, 164, - 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, - 0, 0, 165, 167, 168, 169, 170, 171, 172, 0, - 0, 173, 0, 110, 174, 175, 176, 161, 161, 161, - 161, 0, 112, 0, 161, 112, 161, 0, 0, 0, - 0, 0, 161, 161, 0, 0, 0, 0, 0, 112, - 112, 0, 0, 0, 112, 161, 161, 0, 161, 161, - 161, 161, 161, 0, 160, 160, 160, 160, 0, 113, - 0, 160, 113, 160, 149, 149, 149, 149, 0, 160, - 160, 149, 0, 149, 112, 0, 113, 113, 0, 149, - 149, 113, 160, 160, 0, 160, 160, 160, 160, 160, - 0, 0, 149, 149, 0, 149, 149, 149, 149, 149, - 0, 126, 126, 126, 126, 0, 0, 0, 126, 0, - 126, 113, 0, 0, 0, 0, 126, 126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, - 126, 0, 126, 126, 126, 126, 126, 0, 0, 107, - 107, 107, 107, 0, 0, 0, 107, 0, 107, 0, - 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 107, 107, 0, - 107, 107, 107, 107, 107, 0, 109, 109, 109, 109, - 0, 0, 0, 109, 0, 109, 0, 0, 0, 0, - 0, 0, 110, 110, 110, 110, 0, 0, 0, 110, - 0, 110, 0, 0, 109, 109, 0, 109, 109, 109, - 109, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 110, 110, 0, 110, 110, 110, 110, 0, 0, 0, + 0, 0, 0, 0, 111, 111, 0, 111, 77, 77, + 77, 77, 0, 0, 0, 77, 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, 112, 112, 112, 112, 0, 0, 0, - 112, 0, 112, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 112, 112, 0, 112, 112, 112, 0, 0, 0, - 113, 113, 113, 113, 0, 0, 0, 113, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, - 0, 113, 113, + 0, 0, 0, 0, 0, 0, 77, 77, }; static short yycheck[] = { 15, - 36, 91, 41, 36, 40, 59, 59, 41, 195, 41, - 59, 59, 41, 59, 59, 44, 59, 123, 93, 36, - 93, 358, 59, 40, 96, 91, 40, 91, 41, 58, - 59, 41, 41, 49, 63, 59, 41, 59, 41, 257, - 204, 40, 192, 90, 60, 61, 59, 41, 198, 257, - 59, 15, 389, 41, 101, 127, 59, 123, 41, 123, - 289, 290, 300, 301, 93, 59, 266, 267, 268, 41, - 270, 271, 41, 41, 91, 123, 41, 91, 123, 44, - 309, 45, 41, 312, 48, 93, 315, 316, 317, 44, - 123, 59, 91, 58, 59, 111, 112, 297, 63, 123, - 59, 123, 59, 36, 37, 40, 123, 40, 40, 123, - 257, 41, 59, 129, 0, 102, 103, 104, 105, 106, - 107, 85, 40, 310, 123, 278, 41, 291, 93, 59, - 312, 64, 40, 315, 316, 317, 100, 153, 154, 155, - 156, 157, 158, 159, 59, 276, 277, 33, 93, 40, - 36, 37, 38, 93, 40, 93, 42, 43, 40, 45, - 40, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 334, 8, 9, 59, 0, 40, 40, 123, 64, 195, - 59, 44, 123, 199, 200, 40, 202, 151, 204, 260, - 257, 40, 298, 41, 93, 211, 268, 213, 214, 40, - 125, 298, 274, 257, 317, 91, 222, 33, 36, 298, - 36, 37, 38, 91, 40, 379, 42, 43, 205, 45, - 41, 125, 257, 91, 257, 300, 301, 300, 301, 262, - 260, 301, 248, 59, 250, 251, 40, 123, 64, 125, - 126, 258, 0, 272, 273, 274, 275, 300, 301, 260, - 279, 300, 301, 298, 300, 301, 41, 300, 301, 41, - 296, 300, 301, 300, 301, 91, 300, 301, 300, 301, - 41, 300, 301, 41, 303, 33, 366, 41, 36, 37, - 38, 40, 40, 59, 42, 43, 41, 45, 304, 125, - 300, 301, 300, 301, 310, 300, 301, 123, 125, 125, - 126, 59, 125, 267, 123, 269, 64, 272, 273, 274, - 275, 275, 300, 301, 279, 125, 281, 300, 301, 59, - 336, 41, 287, 288, 289, 290, 125, 41, 300, 301, - 44, 300, 301, 91, 41, 300, 301, 41, 303, 304, - 305, 306, 307, 308, 309, 300, 301, 312, 59, 63, - 315, 316, 317, 300, 301, 300, 301, 40, 123, 375, - 300, 301, 300, 301, 41, 123, 41, 41, 126, 123, - 256, 257, 258, 259, 260, 261, 41, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 41, 59, 41, 279, 280, 289, 282, 283, 284, 285, - 286, 300, 301, 59, 41, 291, 292, 293, 294, 295, - 296, 297, 63, 59, 41, 309, 302, 35, 312, 52, - 52, 315, 316, 317, 15, 311, 154, 313, 314, 336, - 256, 257, 258, 259, 260, 261, 375, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 202, 24, 269, 279, 280, -1, 282, 283, 284, 285, - 286, -1, -1, 125, -1, 291, 292, 293, 294, 295, - 296, 297, 355, 356, -1, 309, 302, 360, 312, -1, - -1, 315, 316, 317, -1, 311, -1, 313, 314, -1, - -1, 41, -1, 376, 44, -1, -1, 380, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 58, 59, - -1, 269, -1, 63, 272, 273, 274, 275, -1, -1, - -1, 279, 280, -1, 282, 283, 284, 285, 286, -1, - -1, 125, -1, 291, 292, 293, 294, 295, 296, -1, - -1, -1, -1, 93, 302, -1, -1, -1, -1, -1, - -1, -1, -1, 311, 33, 313, 314, 36, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 281, -1, -1, - -1, -1, -1, 287, 288, 289, 290, -1, -1, 58, - 59, -1, -1, -1, 63, 64, -1, -1, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, - -1, 315, 316, 317, 266, 267, 268, -1, 270, 271, - -1, -1, 91, -1, 93, 33, -1, -1, 36, 37, - 38, -1, 40, 41, 42, 43, 44, 45, -1, -1, - 281, -1, -1, -1, -1, 297, 287, 288, 289, 290, - 58, 59, -1, -1, -1, 63, 64, 126, -1, -1, - -1, -1, 303, 304, 305, 306, 307, 308, 309, -1, - -1, 312, 29, -1, 315, 316, 317, -1, -1, -1, - -1, -1, 266, 267, 268, 93, 270, 271, 33, 46, - 47, 36, 37, 38, -1, 40, 53, 42, 43, -1, - 45, 287, 288, 289, 290, -1, -1, -1, 65, 66, - 67, 68, -1, 297, 59, -1, -1, -1, 126, 64, + 95, 36, 46, 41, 36, 40, 59, 59, 100, 208, + 54, 41, 59, 199, 41, 40, 196, 257, 41, 93, + 123, 44, 202, 36, 93, 59, 40, 40, 59, 29, + 59, 40, 91, 49, 41, 58, 59, 41, 362, 131, + 63, 257, 91, 41, 60, 61, 46, 47, 59, 94, + 40, 15, 59, 53, 41, 40, 100, 41, 300, 301, + 105, 59, 41, 59, 123, 65, 66, 67, 68, 393, + 93, 40, 59, 41, 123, 41, 41, 91, 91, 123, + 41, 45, 91, 44, 48, 40, 93, 131, 40, 123, + 41, 123, 123, 59, 123, 41, 295, 58, 59, 115, + 116, 44, 63, 106, 107, 108, 109, 110, 111, 123, + 123, 40, 123, 59, 123, 40, 116, 133, 0, 59, + 36, 37, 257, 59, 40, 89, 59, 278, 314, 59, + 123, 41, 93, 266, 267, 268, 40, 270, 271, 338, + 104, 157, 158, 159, 160, 161, 162, 163, 64, 59, + 59, 33, 276, 277, 36, 37, 38, 41, 40, 44, + 42, 43, 260, 45, 297, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 123, 59, 41, 59, 0, 41, + 272, 257, 64, 199, 383, 40, 278, 203, 204, 40, + 206, 155, 208, 41, 59, 298, 40, 59, 93, 215, + 93, 217, 218, 8, 9, 257, 209, 125, 298, 91, + 226, 33, 317, 91, 36, 37, 38, 93, 40, 93, + 42, 43, 36, 45, 257, 257, 300, 301, 272, 41, + 262, 300, 301, 298, 278, 125, 252, 59, 254, 255, + 260, 123, 64, 125, 126, 258, 0, 300, 301, 272, + 273, 274, 275, 300, 301, 91, 279, 40, 281, 93, + 301, 296, 300, 301, 298, 272, 273, 274, 275, 91, + 300, 301, 279, 300, 301, 370, 41, 300, 301, 33, + 303, 304, 36, 37, 38, 260, 40, 40, 42, 43, + 41, 45, 308, 300, 301, 41, 300, 301, 314, 41, + 41, 123, 41, 125, 126, 59, 125, 271, 125, 273, + 64, 272, 273, 274, 275, 279, 300, 301, 279, 59, + 281, 300, 301, 125, 340, 125, 287, 288, 289, 290, + 59, 41, 300, 301, 44, 300, 301, 91, 123, 300, + 301, 41, 303, 304, 305, 306, 307, 308, 309, 300, + 301, 312, 125, 63, 315, 316, 317, 300, 301, 41, + 300, 301, 41, 379, 300, 301, 59, 300, 301, 123, + 300, 301, 126, 40, 256, 257, 258, 259, 260, 261, + 41, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 41, 41, 123, 279, 280, 41, + 282, 283, 284, 285, 286, 300, 301, 300, 301, 291, + 292, 293, 294, 295, 296, 297, 63, 123, 312, 41, + 302, 315, 316, 317, 300, 301, 300, 301, 59, 311, + 41, 313, 314, 59, 256, 257, 258, 259, 260, 261, + 41, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 59, 41, 289, 279, 280, 35, + 282, 283, 284, 285, 286, 52, 300, 301, 52, 291, + 292, 293, 294, 295, 296, 297, 309, 15, 158, 312, + 302, 379, 315, 316, 317, 206, 340, 24, -1, 311, + -1, 313, 314, 309, 273, 41, 312, -1, 44, 315, + 316, 317, 256, 257, 258, 259, 260, 261, -1, 263, + 264, 265, 58, 59, -1, 269, -1, 63, 272, 273, + 274, 275, -1, 289, 290, 279, 280, -1, 282, 283, + 284, 285, 286, -1, -1, 125, -1, 291, 292, 293, + 294, 295, 296, 309, -1, -1, 312, 93, 302, 315, + 316, 317, -1, -1, -1, -1, -1, 311, 33, 313, + 314, 36, 37, 38, -1, 40, 41, 42, 43, 44, + 45, 281, -1, 125, -1, -1, -1, 287, 288, 289, + 290, -1, -1, 58, 59, -1, -1, -1, 63, 64, + -1, -1, -1, 303, 304, 305, 306, 307, 308, 309, + -1, -1, 312, -1, -1, 315, 316, 317, 272, 273, + 274, 275, -1, -1, -1, 279, 91, -1, 93, 33, + -1, -1, 36, 37, 38, -1, 40, 41, 42, 43, + 44, 45, -1, -1, 281, -1, 300, 301, -1, -1, + 287, 288, 289, 290, 58, 59, -1, -1, -1, 63, + 64, 126, -1, -1, -1, -1, 303, 304, 305, 306, + 307, 308, 309, -1, -1, 312, -1, -1, 315, 316, + 317, -1, -1, -1, -1, -1, 266, 267, 268, 93, + 270, 271, 33, 289, 290, 36, 37, 38, -1, 40, + -1, 42, 43, -1, 45, -1, 359, 360, -1, -1, + -1, 364, 308, 309, -1, -1, 312, 297, 59, 315, + 316, 317, 126, 64, 266, 267, 268, 380, 270, 271, + -1, 384, -1, -1, -1, -1, 272, 273, 274, 275, + -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, + 91, 287, 288, 289, 290, 297, -1, -1, -1, -1, + -1, -1, -1, -1, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, - 316, 317, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, -1, -1, 91, 287, 288, 289, - 290, 272, 273, 274, 275, 112, -1, -1, 279, -1, - 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 315, 316, 317, 123, 300, - 301, 126, -1, -1, -1, -1, -1, -1, 257, 258, - 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, - 269, -1, -1, 272, 273, 274, 275, -1, -1, -1, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, -1, -1, - -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, -1, 311, 312, 313, 314, 315, 316, 317, 257, - 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, - -1, 269, -1, -1, 272, 273, 274, 275, -1, -1, - -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, - -1, -1, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, -1, 311, 312, 313, 314, 315, 316, 317, - -1, 256, 257, 258, 259, 260, 261, 63, 263, 264, + 316, 317, 123, -1, -1, 126, -1, -1, -1, -1, + -1, -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, 280, -1, 282, 283, 284, - 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, - 295, 296, -1, -1, -1, 33, -1, 302, 36, 37, - 38, -1, 40, -1, 42, 43, 311, 45, 313, 314, - -1, 46, -1, -1, -1, -1, -1, -1, -1, 54, - 287, 59, 289, 290, -1, -1, 64, -1, -1, 41, - -1, -1, 44, -1, -1, 331, 332, 333, -1, 335, - -1, 308, 309, -1, -1, 312, 58, 59, 315, 316, - 317, -1, -1, 91, -1, 33, -1, -1, 36, 37, - 38, 96, 40, -1, 42, 43, 362, 45, -1, -1, - -1, -1, -1, 369, -1, -1, -1, 373, -1, -1, - -1, 93, -1, -1, 119, 123, 64, -1, 126, -1, - 386, 387, 127, -1, -1, 33, -1, -1, 36, 37, - 38, -1, 40, -1, 42, 43, -1, 45, -1, -1, - -1, -1, -1, 91, 287, 288, 289, 290, -1, -1, - -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, - -1, -1, -1, -1, 41, 308, 309, 44, -1, 312, - -1, -1, 315, 316, 317, 123, -1, -1, 126, -1, - -1, 58, 59, 91, -1, -1, 63, -1, -1, 33, - -1, -1, 36, 37, 38, -1, 40, -1, 42, 43, - -1, 45, -1, -1, -1, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, 123, 93, -1, 126, -1, - 64, -1, -1, -1, -1, -1, -1, 303, 304, 305, - 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, - 316, 317, -1, -1, -1, -1, -1, 91, 256, 257, - 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, - -1, 269, -1, 268, 272, 273, 274, 275, -1, 274, - -1, 279, 280, -1, 282, 283, 284, 285, 286, 123, - -1, -1, 126, 291, 292, 293, 294, 295, 296, -1, - 272, 273, 274, 275, 302, -1, -1, 279, -1, -1, - -1, -1, -1, 311, -1, 313, 314, -1, -1, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 300, 301, - -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, - 41, -1, -1, 291, 292, 293, 294, 295, 296, 257, - 258, 259, 260, 261, 302, 263, 264, 265, 59, -1, - -1, 269, -1, 311, -1, 313, 314, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, 63, - -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, - -1, -1, 93, -1, 302, 272, 273, 274, 275, -1, - -1, -1, 279, 311, 281, 313, 314, -1, -1, -1, - 287, 288, -1, 257, 258, 259, 260, 261, -1, 263, - 264, 265, -1, 300, 301, 269, 303, 304, 305, 306, - 307, 308, -1, -1, -1, -1, 280, -1, 282, 283, + 275, -1, -1, -1, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, -1, -1, -1, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, -1, 311, 312, 313, 314, + 315, 316, 317, 257, 258, 259, 260, 261, -1, 263, + 264, 265, -1, -1, -1, 269, -1, -1, 272, 273, + 274, 275, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, -1, -1, -1, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, + 314, 315, 316, 317, -1, 256, 257, 258, 259, 260, + 261, 63, 263, 264, 265, -1, -1, -1, 269, -1, + -1, 272, 273, 274, 275, -1, -1, -1, 279, 280, + -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, + 291, 292, 293, 294, 295, 296, -1, -1, -1, 33, + -1, 302, 36, 37, 38, -1, 40, -1, 42, 43, + 311, 45, 313, 314, -1, -1, -1, -1, 335, 336, + 337, -1, 339, -1, -1, 59, -1, -1, -1, -1, + 64, -1, -1, 41, -1, -1, 44, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 366, + 58, 59, -1, -1, -1, -1, 373, 91, -1, 33, + 377, -1, 36, 37, 38, -1, 40, -1, 42, 43, + -1, 45, -1, 390, 391, -1, 28, 29, -1, -1, + -1, -1, -1, -1, -1, 93, -1, -1, 40, 123, + 64, -1, 126, -1, 46, 47, 48, -1, -1, 33, + 52, 53, 36, 37, 38, -1, 40, -1, 42, 43, + -1, 45, -1, 65, 66, 67, 68, 91, 287, 288, + 289, 290, -1, -1, -1, -1, -1, -1, -1, -1, + 64, -1, -1, -1, -1, -1, -1, -1, 41, 308, + 309, 44, -1, 312, -1, -1, 315, 316, 317, 123, + -1, -1, 126, -1, -1, 58, 59, 91, -1, -1, + 63, -1, -1, 33, 116, -1, 36, 37, 38, -1, + 40, -1, 42, 43, -1, 45, -1, -1, -1, 281, + -1, -1, -1, -1, -1, 287, 288, 289, 290, 123, + 93, -1, 126, -1, 64, -1, -1, -1, -1, -1, + -1, 303, 304, 305, 306, 307, 308, 309, -1, -1, + 312, -1, -1, 315, 316, 317, -1, -1, -1, -1, + -1, 91, 256, 257, 258, 259, 260, 261, 180, 263, + 264, 265, -1, -1, -1, 269, -1, -1, 272, 273, + 274, 275, -1, -1, -1, 279, 280, -1, 282, 283, + 284, 285, 286, 123, -1, 207, 126, 291, 292, 293, + 294, 295, 296, -1, 272, 273, 274, 275, 302, -1, + -1, 279, -1, -1, -1, -1, -1, 311, -1, 313, + 314, -1, -1, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 300, 301, -1, 269, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, + 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, + 294, 295, 296, 257, 258, 259, 260, 261, 302, 263, + 264, 265, -1, -1, -1, 269, -1, 311, -1, 313, + 314, -1, 58, -1, -1, -1, 280, 63, 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, - 294, 295, 296, 289, 290, -1, 33, -1, 302, 36, - 37, 38, -1, 40, -1, 42, 43, 311, 45, 313, - 314, -1, 308, 309, -1, -1, 312, -1, -1, 315, - 316, 317, 59, -1, -1, -1, -1, 64, -1, -1, - -1, 287, 288, 289, 290, -1, 33, -1, -1, 36, - 37, 38, -1, 40, 41, 42, 43, -1, 45, 305, - 306, 307, 308, 309, 91, -1, 312, -1, -1, 315, - 316, 317, -1, -1, -1, -1, -1, 64, -1, -1, - 287, 288, 289, 290, -1, -1, 33, -1, -1, 36, - 37, 38, -1, 40, -1, 42, 43, -1, 45, 126, - 307, 308, 309, -1, 91, 312, -1, -1, 315, 316, - 317, -1, -1, -1, -1, -1, -1, 64, -1, -1, - -1, 272, 273, 274, 275, -1, 33, -1, 279, 36, - 37, 38, -1, 40, 41, 42, 43, -1, 45, 126, - -1, -1, -1, -1, 91, -1, 93, 281, -1, 300, - 301, -1, -1, 287, 288, 289, 290, 64, -1, -1, + 294, 295, 296, -1, -1, -1, -1, -1, 302, 272, + 273, 274, 275, -1, -1, -1, 279, 311, 281, 313, + 314, -1, -1, -1, 287, 288, -1, 257, 258, 259, + 260, 261, -1, 263, 264, 265, -1, 300, 301, 269, + 303, 304, 305, 306, 307, 308, -1, -1, -1, -1, + 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, + -1, 291, 292, 293, 294, 295, 296, -1, -1, -1, + 33, -1, 302, 36, 37, 38, -1, 40, -1, 42, + 43, 311, 45, 313, 314, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, + -1, 64, -1, -1, -1, 287, 288, 289, 290, -1, + 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, + 43, -1, 45, 305, 306, 307, 308, 309, 91, -1, + 312, -1, -1, 315, 316, 317, -1, -1, -1, -1, + -1, 64, -1, -1, -1, 287, 288, 289, 290, -1, + 33, -1, -1, 36, 37, 38, -1, 40, -1, 42, + 43, -1, 45, 126, 306, 307, 308, 309, 91, -1, + 312, -1, -1, 315, 316, 317, -1, -1, -1, -1, + -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, + 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, + 43, -1, 45, 126, -1, 281, -1, -1, 91, -1, + 93, 287, 288, 289, 290, -1, -1, -1, -1, -1, + -1, 64, -1, -1, -1, -1, -1, 303, 304, 305, + 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, + 316, 317, -1, 126, 287, 288, 289, 290, 91, -1, + 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, + 43, -1, 45, -1, 307, 308, 309, -1, -1, 312, + -1, -1, 315, 316, 317, -1, -1, -1, -1, -1, + -1, 64, 287, 126, 289, 290, -1, -1, -1, -1, + -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, + 263, 264, 265, 308, 309, -1, 269, 312, 91, -1, + 315, 316, 317, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, 257, 258, 259, 260, 261, 302, + 263, 264, 265, 126, -1, -1, 269, -1, 311, -1, + 313, 314, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, 257, 258, 259, 260, 261, 302, + 263, 264, 265, -1, -1, -1, 269, -1, 311, -1, + 313, 314, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, 257, 258, 259, 260, 261, 302, + 263, 264, 265, -1, -1, -1, 269, -1, 311, -1, + 313, 314, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, -1, -1, -1, 33, -1, 302, + 36, 37, 38, -1, 40, 41, 42, 43, 311, 45, + 313, 314, -1, -1, 257, 258, 259, 260, 261, -1, + 263, 264, 265, -1, -1, -1, 269, -1, 64, -1, + -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, 295, 296, -1, 91, -1, 33, -1, 302, + 36, 37, 38, -1, 40, 41, 42, 43, 311, 45, + 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, + 126, -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 304, 305, 306, 307, 308, 309, -1, -1, 312, 126, - -1, 315, 316, 317, 91, -1, 33, -1, -1, 36, + -1, -1, -1, 58, 59, 91, 33, -1, 63, 36, + 37, 38, -1, 40, -1, 42, 43, -1, 45, -1, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 64, 93, -1, + 126, 304, 305, 306, 307, 308, 309, -1, -1, 312, + -1, -1, 315, 316, 317, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 91, -1, 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 257, 258, 259, 260, 261, -1, 263, 264, 265, -1, - -1, -1, 269, -1, 91, -1, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - 257, 258, 259, 260, 261, 302, 263, 264, 265, 126, - -1, -1, 269, -1, 311, -1, 313, 314, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - 257, 258, 259, 260, 261, 302, 263, 264, 265, -1, - -1, -1, 269, -1, 311, -1, 313, 314, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - 257, 258, 259, 260, 261, 302, 263, 264, 265, -1, - -1, -1, 269, -1, 311, -1, 313, 314, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, + -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, + -1, -1, -1, 269, 91, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, + 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, + 296, 41, -1, -1, 44, -1, 302, -1, -1, 126, + -1, -1, -1, -1, -1, 311, -1, 313, 314, 59, + -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, + -1, 33, -1, 269, 36, 37, 38, -1, 40, 41, + 42, 43, -1, 45, 280, -1, 282, 283, 284, 285, + 286, -1, -1, 93, -1, 291, 292, 293, 294, 295, + 296, -1, 64, -1, -1, -1, 302, 272, 273, 274, + 275, -1, -1, -1, 279, 311, 281, 313, 314, 256, + 257, 258, 259, 260, 261, -1, 263, 264, 265, 91, + -1, -1, 269, -1, -1, 300, 301, -1, 303, 304, + 305, 306, 307, 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - -1, -1, -1, 33, -1, 302, 36, 37, 38, -1, + -1, -1, -1, 33, 126, 302, 36, 37, 38, -1, 40, 41, 42, 43, 311, 45, 313, 314, -1, -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, 91, -1, 33, -1, 302, 36, 37, 38, -1, - 40, 41, 42, 43, 311, 45, 313, 314, -1, -1, + 40, -1, 42, 43, 311, 45, 313, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, 126, -1, -1, -1, - -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 91, 33, -1, 63, 36, 37, 38, -1, 40, - -1, 42, 43, -1, 45, -1, -1, -1, -1, -1, - 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 64, 93, -1, 126, 304, 305, 306, - 307, 308, 309, -1, -1, 312, -1, -1, 315, 316, - 317, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 91, -1, 33, -1, -1, 36, 37, 38, -1, 40, - 41, 42, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 64, -1, 126, -1, -1, -1, -1, + -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, + -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, + 300, 263, 264, 265, -1, -1, -1, 269, -1, -1, + -1, -1, -1, -1, -1, -1, 126, -1, 280, -1, + 282, 283, 284, 285, 286, -1, 41, -1, -1, 291, + 292, 293, 294, 295, 296, -1, -1, -1, -1, -1, + 302, -1, -1, 58, 59, -1, -1, -1, 63, 311, + -1, 313, 314, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, - 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, - -1, 291, 292, 293, 294, 295, 296, -1, -1, -1, - -1, -1, 302, -1, -1, 126, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 280, -1, 282, 283, 284, 285, 286, 41, -1, -1, + 44, 291, 292, 293, 294, 295, 296, -1, -1, -1, + -1, -1, 302, -1, 58, 59, -1, -1, -1, 63, -1, 311, -1, 313, 314, -1, -1, 257, 258, 259, - 260, 261, -1, 263, 264, 265, -1, 33, -1, 269, - 36, 37, 38, -1, 40, 41, 42, 43, -1, 45, + 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, - -1, 291, 292, 293, 294, 295, 296, -1, 64, -1, - -1, -1, 302, 272, 273, 274, 275, -1, -1, -1, - 279, 311, 281, 313, 314, 256, 257, 258, 259, 260, - 261, -1, 263, 264, 265, 91, -1, -1, 269, -1, - -1, 300, 301, -1, 303, 304, 305, 306, 307, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, -1, -1, 33, - 126, 302, 36, 37, 38, -1, 40, 41, 42, 43, - 311, 45, 313, 314, -1, -1, 257, 258, 259, 260, - 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, - 64, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, 91, -1, 33, - -1, 302, 36, 37, 38, -1, 40, -1, 42, 43, - 311, 45, 313, 314, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, - 64, -1, 126, -1, -1, -1, -1, -1, 41, -1, - 40, 44, -1, -1, -1, -1, 46, 47, 48, -1, - -1, -1, 52, 53, -1, 58, 59, 91, -1, -1, - 63, -1, -1, -1, -1, 65, 66, 67, 68, -1, - -1, 257, 258, 259, 260, 261, -1, 263, 264, 265, - -1, -1, -1, 269, -1, 41, -1, -1, 44, -1, - 93, -1, 126, -1, 280, -1, 282, 283, 284, 285, - 286, 41, -1, 59, 44, 291, 292, 293, 294, 295, - 296, -1, 112, -1, -1, -1, 302, -1, 58, 59, - -1, -1, -1, 63, -1, 311, -1, 313, 314, -1, - -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, -1, 41, -1, -1, 44, -1, - -1, -1, -1, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 58, 59, -1, 269, 176, 63, -1, -1, - -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, - 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, - 294, 295, 296, 203, -1, -1, -1, 93, 302, -1, - -1, -1, -1, -1, -1, 41, -1, 311, 44, 313, - 314, -1, -1, 257, 258, 259, 260, 261, -1, 263, - 264, 265, 58, 59, -1, 269, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, - 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, - 294, 295, 296, -1, -1, -1, -1, 93, 302, 272, - 273, 274, 275, -1, -1, -1, 279, 311, 281, 313, - 314, -1, -1, -1, 287, 288, 289, 290, -1, -1, - -1, -1, -1, 41, -1, -1, 44, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, - 58, 59, 315, 316, 317, 63, 272, 273, 274, 275, - -1, -1, -1, 279, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, - 41, 281, -1, 44, 300, 93, -1, 287, 288, 289, - 290, -1, -1, -1, -1, -1, -1, 58, 59, -1, - 300, 301, 63, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 315, 316, 317, -1, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, 41, 93, 279, 44, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, 58, 59, - -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, + -1, 291, 292, 293, 294, 295, 296, 33, -1, -1, + 63, -1, 302, -1, -1, 41, -1, -1, -1, 45, + -1, 311, 48, 313, 314, 51, -1, -1, -1, 55, + 56, 57, 58, 59, -1, -1, -1, 63, 64, 41, + -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, + -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 102, 272, 273, 274, + 275, -1, -1, -1, 279, 41, 281, -1, 44, -1, + -1, 93, 287, 288, 289, 290, -1, -1, -1, -1, + -1, -1, 58, 59, -1, 300, 301, 63, 303, 304, + 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, + 315, 316, 317, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 191, -1, -1, 272, 273, + 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, + -1, -1, -1, 287, 288, 289, 290, -1, -1, -1, + 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, + -1, 315, 316, 317, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 41, -1, 93, 44, -1, 281, -1, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, + 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, + 276, 304, 305, 306, 307, 308, 309, -1, -1, 312, + -1, -1, 315, 316, 317, -1, -1, -1, -1, -1, + 272, 273, 274, 275, -1, 93, -1, 279, 41, 281, + -1, 44, -1, 309, -1, 287, 288, 289, 290, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 300, 301, + 63, 303, 304, 305, 306, 307, 308, 309, -1, -1, + 312, -1, -1, 315, 316, 317, 272, 273, 274, 275, + -1, -1, -1, 279, 41, 281, -1, 44, -1, -1, + 93, 287, 288, 289, 290, -1, -1, -1, -1, -1, + -1, 58, 59, -1, 300, 301, 63, 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 41, 93, -1, 44, 272, 273, 274, 275, - -1, 41, -1, 279, 44, 281, -1, -1, -1, 58, - 59, 287, 288, 289, 290, -1, -1, -1, 58, 59, - -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, - 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, - 316, 317, -1, -1, 93, -1, -1, 41, -1, -1, - 44, -1, -1, 93, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, + -1, 41, -1, -1, 44, -1, 93, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, + -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, -1, 287, - 288, 289, 290, -1, -1, -1, -1, -1, -1, 93, - -1, -1, 300, 301, -1, 303, 304, 305, 306, 307, - 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, - -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, -1, 303, 304, 305, 306, 307, 308, 309, -1, - -1, 312, -1, -1, 315, 316, 317, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, 41, 93, 279, - 44, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, 58, 59, -1, -1, -1, 63, - 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 315, 316, 317, -1, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, 93, - 279, -1, 272, 273, 274, 275, -1, 41, -1, 279, - 44, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, 300, 301, -1, 58, 59, -1, -1, -1, 63, + 288, 289, 290, 93, -1, -1, -1, -1, 41, -1, + -1, 44, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, -1, -1, 312, 58, 59, 315, 316, 317, + 63, -1, -1, -1, 272, 273, 274, 275, -1, -1, + -1, 279, -1, 281, -1, -1, -1, -1, -1, 287, + 288, 289, 290, -1, -1, -1, -1, -1, 41, -1, + 93, 44, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, -1, -1, 312, 58, 59, 315, 316, 317, + 63, -1, -1, -1, -1, -1, -1, -1, -1, 272, + 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, + 93, -1, -1, -1, -1, -1, -1, 300, 301, -1, + 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, + -1, -1, 315, 316, 317, 272, 273, 274, 275, -1, + 41, -1, 279, 44, 281, -1, -1, -1, -1, -1, + 287, 288, 289, 290, -1, -1, -1, 58, 59, -1, + -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, + 307, 308, 309, -1, -1, 312, -1, -1, 315, 316, + 317, -1, 272, 273, 274, 275, -1, -1, -1, 279, + -1, 281, 93, -1, -1, -1, -1, 287, 288, 289, + 290, -1, -1, -1, -1, -1, 41, -1, -1, 44, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 315, 316, 317, 272, 273, - 274, 275, -1, 41, -1, 279, 44, 281, -1, 93, - -1, -1, -1, 287, 288, 289, 290, -1, -1, -1, - 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, - -1, 315, 316, 317, -1, -1, -1, -1, -1, 41, - -1, -1, 44, -1, -1, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, - -1, 63, 41, -1, -1, 44, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, -1, -1, 58, - 59, -1, 287, 288, 289, 290, -1, -1, -1, -1, - -1, 93, -1, -1, -1, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, - 315, 316, 317, 41, 93, -1, 44, -1, 272, 273, - 274, 275, 41, -1, -1, 279, -1, 281, -1, -1, - 58, 59, -1, 287, 288, 289, 290, -1, -1, 58, - 59, -1, -1, -1, 63, -1, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, - -1, 315, 316, 317, -1, 93, -1, -1, -1, -1, - -1, -1, -1, -1, 93, -1, -1, -1, 272, 273, - 274, 275, 41, -1, -1, 279, -1, 281, -1, -1, - -1, -1, -1, 287, 288, 289, 290, -1, -1, 58, - 59, -1, -1, -1, 63, -1, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, 312, -1, - -1, 315, 316, 317, 272, 273, 274, 275, 41, -1, - -1, 279, -1, 281, 93, -1, -1, -1, -1, 287, - 288, 289, 290, -1, -1, 58, 59, -1, -1, -1, - 63, -1, 300, 301, -1, 303, 304, 305, 306, 307, - 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, - 272, 273, 274, 275, -1, -1, -1, 279, -1, 281, - 93, -1, -1, -1, -1, 287, 288, 289, 290, -1, - -1, -1, -1, 272, 273, 274, 275, -1, 300, 301, - 279, 303, 304, 305, 306, 307, 308, 309, -1, 41, - 312, -1, 44, 315, 316, 317, -1, -1, -1, -1, - -1, 300, 301, -1, 303, -1, 58, 59, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, - -1, 279, -1, 272, 273, 274, 275, -1, -1, -1, - 279, 93, 281, -1, -1, -1, -1, -1, 287, 288, - 289, 290, 300, 301, -1, -1, -1, -1, -1, -1, - -1, 300, 301, -1, 303, 304, 305, 306, 307, 308, - 309, -1, -1, 312, -1, -1, 315, 316, 317, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, - 279, 41, 281, -1, 44, -1, -1, -1, 287, 288, - 289, 290, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 300, 301, 63, 303, 304, 305, 306, 307, 308, - 309, -1, -1, 312, -1, -1, 315, 316, 317, 272, - 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, - -1, -1, -1, 93, 287, 288, 289, 290, -1, -1, - -1, 58, 59, -1, -1, -1, 63, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 33, -1, 312, - -1, -1, 315, 316, 317, 41, -1, -1, 41, 45, - -1, 44, 48, -1, -1, 51, 93, -1, -1, 55, - 56, 57, 58, 59, -1, 58, 59, 63, 64, -1, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 272, 273, 274, 275, -1, -1, -1, 279, 41, 281, - -1, 44, -1, -1, -1, 287, 288, 289, 290, -1, - 93, -1, 98, -1, -1, 58, 59, -1, 300, 301, - 63, 303, 304, 305, 306, 307, 308, 309, -1, -1, - 312, -1, -1, -1, -1, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, 58, 59, -1, -1, -1, 63, -1, + -1, -1, 312, 58, 59, 315, 316, 317, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, + 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, + -1, -1, -1, -1, 287, 288, 289, 290, 93, -1, + -1, -1, -1, 41, -1, -1, 44, 300, 301, -1, + 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, + 58, 59, 315, 316, 317, 63, -1, -1, -1, 272, + 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, + -1, -1, -1, 41, -1, 93, 44, 300, 301, -1, + 303, 304, 305, 306, 307, 308, 309, -1, -1, 312, + 58, 59, 315, 316, 317, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 187, 272, 273, 274, 275, -1, 41, -1, 279, + -1, -1, -1, -1, -1, 93, 41, -1, -1, 44, + -1, 272, 273, 274, 275, 41, -1, -1, 279, -1, + 281, -1, -1, 58, 59, -1, 287, 288, 289, 290, + -1, -1, 58, 59, -1, -1, -1, 63, -1, 300, + 301, -1, 303, 304, 305, 306, 307, 308, 309, -1, + -1, 312, -1, -1, 315, 316, 317, -1, 93, -1, + -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, + -1, -1, -1, 41, -1, -1, 44, 272, 273, 274, + 275, 41, -1, -1, 279, -1, 281, -1, -1, -1, + 58, 59, 287, 288, 289, 290, -1, -1, 58, 59, + -1, -1, -1, 63, -1, 300, 301, -1, 303, 304, + 305, 306, 307, 308, 309, -1, -1, 312, -1, -1, + 315, 316, 317, -1, -1, 93, -1, -1, -1, -1, + -1, -1, -1, 93, 272, 273, 274, 275, -1, -1, + -1, 279, 41, 281, -1, 44, -1, -1, -1, 287, + 288, 289, 290, -1, -1, -1, -1, -1, -1, 58, + 59, -1, 300, 301, 63, 303, 304, 305, 306, 307, + 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, + -1, -1, -1, -1, 272, 273, 274, 275, -1, 41, + -1, 279, 44, 281, 93, -1, -1, -1, -1, 287, + 288, 289, 290, -1, -1, -1, 58, 59, -1, -1, + -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, -1, -1, 312, -1, -1, 315, 316, 317, + -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, + 275, 93, -1, -1, 279, -1, 272, 273, 274, 275, + -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, + -1, 287, 288, 289, 290, 300, 301, -1, 58, 59, + -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, -1, -1, 312, -1, -1, 315, + 316, 317, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, 272, 273, 274, 275, -1, -1, + -1, 279, 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, 58, 59, -1, -1, -1, 63, + 290, -1, 300, 301, 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, 308, 309, - -1, -1, 312, -1, -1, 272, 273, 274, 275, -1, - 41, -1, 279, 44, 281, -1, -1, -1, -1, 93, - 287, 288, 289, 290, -1, -1, -1, 58, 59, -1, - -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, - 307, 308, 309, -1, -1, -1, 272, -1, -1, 272, - 273, 274, 275, -1, -1, -1, 279, 41, 281, -1, - 44, -1, 93, -1, 287, 288, 289, 290, -1, -1, - -1, -1, -1, -1, 58, 59, -1, 300, 301, 305, - 303, 304, 305, 306, 307, 308, 309, -1, -1, 272, - 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, - -1, -1, -1, -1, 287, 288, 289, 290, -1, 93, - -1, 58, 59, -1, -1, -1, 63, 300, 301, -1, - 303, 304, 305, 306, 307, 308, 309, 272, 273, 274, - 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, 93, -1, -1, 58, - 59, -1, -1, -1, 63, 300, 301, -1, 303, 304, - 305, 306, 307, 308, 309, -1, -1, -1, -1, 41, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 93, -1, 58, 59, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, 272, 273, - 274, 275, -1, -1, -1, 279, -1, 281, -1, -1, - -1, -1, -1, 287, 288, 289, 290, 58, -1, -1, - -1, 93, 63, -1, -1, -1, 300, 301, -1, 303, - 304, 305, 306, 307, 308, 309, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, -1, 303, 304, 305, 306, 307, 308, 309, -1, - -1, -1, -1, 41, -1, -1, 44, -1, 272, 273, - 274, 275, -1, 41, -1, 279, 44, -1, 93, -1, - 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, - 58, 59, -1, -1, -1, 63, 300, 301, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, - 41, -1, 279, 44, 281, 93, -1, -1, -1, -1, - 287, 288, 289, 290, -1, 93, -1, 58, 59, -1, - -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, - 307, 308, 309, 272, 273, 274, 275, -1, 41, -1, + -1, -1, 312, -1, -1, 315, 316, 317, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + -1, -1, -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, -1, 287, 288, - 289, 290, 93, -1, -1, 58, 59, -1, -1, -1, + 289, 290, -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, 308, + 309, -1, -1, 312, -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, - -1, -1, -1, -1, -1, 287, 288, -1, 290, -1, - 93, 41, 58, 59, 44, -1, -1, 63, 300, 301, - -1, 303, 304, 305, 306, 307, 308, -1, 58, 59, - 281, -1, -1, 63, -1, -1, 287, 288, 289, 290, - -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, - -1, -1, 303, 304, 305, 306, 307, 308, 309, -1, - -1, 312, -1, 93, 315, 316, 317, 272, 273, 274, - 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, - -1, -1, 287, 288, -1, -1, -1, -1, -1, 58, - 59, -1, -1, -1, 63, 300, 301, -1, 303, 304, - 305, 306, 307, -1, 272, 273, 274, 275, -1, 41, - -1, 279, 44, 281, 272, 273, 274, 275, -1, 287, - 288, 279, -1, 281, 93, -1, 58, 59, -1, 287, - 288, 63, 300, 301, -1, 303, 304, 305, 306, 307, - -1, -1, 300, 301, -1, 303, 304, 305, 306, 307, - -1, 272, 273, 274, 275, -1, -1, -1, 279, -1, - 281, 93, -1, -1, -1, -1, 287, 288, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, - 301, -1, 303, 304, 305, 306, 307, -1, -1, 272, - 273, 274, 275, -1, -1, -1, 279, -1, 281, -1, - -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, + 93, -1, -1, -1, -1, 287, 288, 289, 290, -1, + -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, -1, -1, + 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, -1, 44, -1, -1, -1, 93, -1, -1, + -1, -1, 272, 273, 274, 275, -1, 58, 59, 279, + -1, 281, 63, -1, -1, -1, -1, 287, 288, 289, + 290, -1, -1, -1, -1, -1, -1, -1, -1, 41, + 300, 301, 44, 303, 304, 305, 306, 307, 308, 309, + -1, -1, 93, -1, -1, -1, 58, 59, -1, -1, + -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, + 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, + -1, 93, -1, 287, 288, 289, 290, -1, -1, -1, + 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, + 304, 305, 306, 307, 308, 309, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, + 44, -1, -1, -1, -1, 93, -1, -1, -1, 272, + 273, 274, 275, -1, 58, 59, 279, -1, 281, 63, + -1, -1, -1, -1, 287, 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, 301, -1, - 303, 304, 305, 306, 307, -1, 272, 273, 274, 275, - -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, 300, 301, -1, 303, 304, 305, + 303, 304, 305, 306, 307, 308, 309, -1, -1, 93, + -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, + -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, + -1, 287, 288, 289, 290, -1, -1, -1, 58, 59, + -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, + 306, 307, 308, 309, -1, -1, -1, -1, -1, -1, + -1, 272, 273, 274, 275, -1, -1, -1, 279, 41, + 281, -1, 44, 93, -1, -1, 287, 288, 289, 290, + -1, -1, -1, -1, -1, -1, 58, 59, -1, 300, + 301, 63, 303, 304, 305, 306, 307, 308, 309, -1, + 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, + -1, -1, -1, -1, -1, 287, 288, 289, 290, -1, + -1, 93, 58, 59, -1, -1, -1, 63, 300, 301, + -1, 303, 304, 305, 306, 307, 308, 309, -1, -1, + -1, -1, -1, -1, 272, 273, 274, 275, -1, 41, + -1, 279, 44, 281, -1, -1, -1, 93, -1, 287, + 288, 289, 290, -1, -1, -1, 58, 59, -1, -1, + -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, + 308, 309, -1, -1, -1, -1, -1, -1, 272, 273, + 274, 275, -1, 41, -1, 279, 44, 281, -1, -1, + -1, 93, -1, 287, 288, 289, 290, -1, -1, -1, + 58, 59, -1, -1, -1, 63, 300, 301, -1, 303, + 304, 305, 306, 307, 308, -1, -1, -1, -1, -1, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + 41, -1, -1, 44, -1, 93, -1, 58, 59, -1, + -1, -1, 272, 273, 274, 275, -1, 58, 59, 279, + -1, 281, 63, -1, -1, -1, -1, 287, 288, -1, + 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 300, 301, 93, 303, 304, 305, 306, 307, 308, -1, + -1, -1, 93, -1, -1, 41, -1, -1, 44, -1, + 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, + -1, -1, 58, 59, -1, 287, 288, 63, -1, -1, + -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, + -1, 303, 304, 305, 306, 307, 272, 273, 274, 275, + -1, 41, -1, 279, 44, 281, -1, 93, -1, -1, + -1, 287, 288, -1, -1, -1, -1, 93, 58, 59, + -1, -1, -1, 63, 300, 301, -1, 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, -1, 303, 304, 305, 306, -1, -1, -1, + 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, + -1, -1, -1, 93, -1, 287, 288, -1, -1, -1, + -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, + -1, 303, 304, 305, 306, 307, -1, 41, -1, -1, + 44, -1, -1, -1, 272, 273, 274, 275, -1, -1, + -1, 279, -1, 281, 58, 59, -1, 93, -1, 287, + 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 300, 301, -1, 303, 304, 305, 306, 307, + -1, 272, 273, 274, 275, -1, -1, -1, 279, 93, + -1, 272, 273, 274, 275, -1, -1, -1, 279, -1, + 281, -1, -1, -1, -1, -1, -1, 288, -1, 300, + 301, -1, 303, -1, -1, -1, -1, -1, -1, 300, + 301, -1, 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, + -1, -1, -1, 279, -1, 281, 272, 273, 274, 275, + -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, + -1, -1, -1, -1, 300, 301, -1, 303, 304, 305, + 306, 307, -1, -1, 300, 301, -1, 303, 304, 305, + 306, -1, 272, 273, 274, 275, -1, -1, -1, 279, + -1, 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, - 279, -1, 281, -1, -1, -1, -1, -1, -1, -1, + 300, 301, -1, 303, 304, 305, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, + -1, -1, -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 300, 301, -1, 303, 304, 305, -1, -1, -1, - 272, 273, 274, 275, -1, -1, -1, 279, -1, 281, + -1, -1, -1, -1, 300, 301, -1, 303, 272, 273, + 274, 275, -1, -1, -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 300, 301, - -1, 303, 304, + -1, -1, -1, -1, -1, -1, 300, 301, }; #define YYFINAL 1 #ifndef YYDEBUG @@ -1253,38 +1284,48 @@ static char *yyrule[] = { "subscripted : term ARROW '(' expr ')'", "subscripted : subscripted '(' expr ')'", "subscripted : subscripted '(' ')'", -"term : term ASSIGNOP term", -"term : term POWOP term", -"term : term MULOP term", -"term : term ADDOP term", -"term : term SHIFTOP term", -"term : term RELOP term", -"term : term EQOP term", -"term : term BITANDOP term", -"term : term BITOROP term", -"term : term DOTDOT term", -"term : term ANDAND term", -"term : term OROR term", +"termbinop : term ASSIGNOP term", +"termbinop : term POWOP term", +"termbinop : term MULOP term", +"termbinop : term ADDOP term", +"termbinop : term SHIFTOP term", +"termbinop : term RELOP term", +"termbinop : term EQOP term", +"termbinop : term BITANDOP term", +"termbinop : term BITOROP term", +"termbinop : term DOTDOT term", +"termbinop : term ANDAND term", +"termbinop : term OROR term", +"termbinop : term MATCHOP term", +"termunop : '-' term", +"termunop : '+' term", +"termunop : '!' term", +"termunop : '~' term", +"termunop : term POSTINC", +"termunop : term POSTDEC", +"termunop : PREINC term", +"termunop : PREDEC term", +"anonymous : '[' expr ']'", +"anonymous : '[' ']'", +"anonymous : HASHBRACK expr ';' '}'", +"anonymous : HASHBRACK ';' '}'", +"anonymous : ANONSUB startanonsub proto subattrlist block", +"termdo : DO term", +"termdo : DO block", +"termdo : DO WORD '(' ')'", +"termdo : DO WORD '(' expr ')'", +"termdo : DO scalar '(' ')'", +"termdo : DO scalar '(' expr ')'", +"term : termbinop", +"term : termunop", +"term : anonymous", +"term : termdo", "term : term '?' term ':' term", -"term : term MATCHOP term", -"term : '-' term", -"term : '+' term", -"term : '!' term", -"term : '~' term", "term : REFGEN term", -"term : term POSTINC", -"term : term POSTDEC", -"term : PREINC term", -"term : PREDEC term", "term : myattrterm", "term : LOCAL term", "term : '(' expr ')'", "term : '(' ')'", -"term : '[' expr ']'", -"term : '[' ']'", -"term : HASHBRACK expr ';' '}'", -"term : HASHBRACK ';' '}'", -"term : ANONSUB startanonsub proto subattrlist block", "term : scalar", "term : star", "term : hsh", @@ -1300,12 +1341,6 @@ static char *yyrule[] = { "term : amper '(' ')'", "term : amper '(' expr ')'", "term : NOAMP WORD listexpr", -"term : DO term", -"term : DO block", -"term : DO WORD '(' ')'", -"term : DO WORD '(' expr ')'", -"term : DO scalar '(' ')'", -"term : DO scalar '(' expr ')'", "term : LOOPEX", "term : LOOPEX term", "term : NOTOP argexpr", @@ -1361,7 +1396,7 @@ static char *yyrule[] = { #define YYMAXDEPTH 500 #endif #endif -#line 736 "perly.y" +#line 789 "perly.y" /* PROGRAM */ /* more stuff added to make perly_c.diff easier to apply */ @@ -1371,7 +1406,7 @@ static char *yyrule[] = { #endif #define yyparse() Perl_yyparse(pTHX) -#line 1446 "perly.c" +#line 1481 "perly.c" #define YYABORT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab @@ -1486,12 +1521,12 @@ yyloop: #ifdef lint goto yynewerror; #endif -yynewerror: + yyerror("syntax error"); #ifdef lint goto yyerrlab; #endif -yyerrlab: + ++yynerrs; yyinrecovery: if (yyerrflag < 3) @@ -1567,7 +1602,7 @@ yyreduce: switch (yyn) { case 1: -#line 128 "perly.y" +#line 130 "perly.y" { #if defined(YYDEBUG) && defined(DEBUGGING) yydebug = (DEBUG_p_TEST); @@ -1576,50 +1611,50 @@ case 1: } break; case 2: -#line 135 "perly.y" +#line 137 "perly.y" { newPROG(block_end(yyvsp[-1].ival,yyvsp[0].opval)); } break; case 3: -#line 139 "perly.y" +#line 142 "perly.y" { if (PL_copline > (line_t)yyvsp[-3].ival) PL_copline = yyvsp[-3].ival; yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } break; case 4: -#line 145 "perly.y" +#line 148 "perly.y" { yyval.ival = block_start(TRUE); } break; case 5: -#line 149 "perly.y" +#line 152 "perly.y" { if (PL_copline > (line_t)yyvsp[-3].ival) PL_copline = yyvsp[-3].ival; yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } break; case 6: -#line 155 "perly.y" +#line 158 "perly.y" { yyval.ival = block_start(FALSE); } break; case 7: -#line 159 "perly.y" +#line 163 "perly.y" { yyval.opval = Nullop; } break; case 8: -#line 161 "perly.y" +#line 165 "perly.y" { yyval.opval = yyvsp[-1].opval; } break; case 9: -#line 163 "perly.y" +#line 167 "perly.y" { yyval.opval = append_list(OP_LINESEQ, (LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval); PL_pad_reset_pending = TRUE; if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; } break; case 10: -#line 170 "perly.y" +#line 175 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); } break; case 12: -#line 173 "perly.y" +#line 178 "perly.y" { if (yyvsp[-1].pval != Nullch) { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0)); } @@ -1630,75 +1665,75 @@ case 12: PL_expect = XSTATE; } break; case 13: -#line 182 "perly.y" +#line 187 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval); PL_expect = XSTATE; } break; case 14: -#line 187 "perly.y" +#line 193 "perly.y" { yyval.opval = Nullop; } break; case 15: -#line 189 "perly.y" +#line 195 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 16: -#line 191 "perly.y" +#line 197 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); } break; case 17: -#line 193 "perly.y" +#line 199 "perly.y" { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); } break; case 18: -#line 195 "perly.y" +#line 201 "perly.y" { yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); } break; case 19: -#line 197 "perly.y" +#line 203 "perly.y" { yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);} break; case 20: -#line 199 "perly.y" +#line 205 "perly.y" { yyval.opval = newFOROP(0, Nullch, yyvsp[-1].ival, Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); } break; case 21: -#line 204 "perly.y" +#line 211 "perly.y" { yyval.opval = Nullop; } break; case 22: -#line 206 "perly.y" +#line 213 "perly.y" { (yyvsp[0].opval)->op_flags |= OPf_PARENS; yyval.opval = scope(yyvsp[0].opval); } break; case 23: -#line 208 "perly.y" +#line 215 "perly.y" { PL_copline = yyvsp[-5].ival; yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval); PL_hints |= HINT_BLOCK_SCOPE; } break; case 24: -#line 214 "perly.y" +#line 222 "perly.y" { PL_copline = yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } break; case 25: -#line 218 "perly.y" +#line 226 "perly.y" { PL_copline = yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } break; case 26: -#line 224 "perly.y" +#line 233 "perly.y" { yyval.opval = Nullop; } break; case 27: -#line 226 "perly.y" +#line 235 "perly.y" { yyval.opval = scope(yyvsp[0].opval); } break; case 28: -#line 230 "perly.y" +#line 240 "perly.y" { PL_copline = yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newSTATEOP(0, yyvsp[-7].pval, @@ -1706,7 +1741,7 @@ case 28: yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } break; case 29: -#line 236 "perly.y" +#line 246 "perly.y" { PL_copline = yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newSTATEOP(0, yyvsp[-7].pval, @@ -1714,23 +1749,23 @@ case 29: yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } break; case 30: -#line 242 "perly.y" +#line 252 "perly.y" { yyval.opval = block_end(yyvsp[-6].ival, newFOROP(0, yyvsp[-9].pval, yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 31: -#line 245 "perly.y" +#line 255 "perly.y" { yyval.opval = block_end(yyvsp[-4].ival, newFOROP(0, yyvsp[-8].pval, yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP), yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 32: -#line 249 "perly.y" +#line 259 "perly.y" { yyval.opval = block_end(yyvsp[-4].ival, newFOROP(0, yyvsp[-7].pval, yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 33: -#line 253 "perly.y" +#line 263 "perly.y" { OP *forop; PL_copline = yyvsp[-9].ival; forop = newSTATEOP(0, yyvsp[-10].pval, @@ -1747,97 +1782,97 @@ case 33: yyval.opval = block_end(yyvsp[-7].ival, forop); } break; case 34: -#line 268 "perly.y" +#line 278 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, newWHILEOP(0, 1, (LOOP*)Nullop, NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); } break; case 35: -#line 274 "perly.y" +#line 285 "perly.y" { yyval.opval = Nullop; } break; case 37: -#line 279 "perly.y" +#line 291 "perly.y" { (void)scan_num("1", &yylval); yyval.opval = yylval.opval; } break; case 39: -#line 284 "perly.y" +#line 297 "perly.y" { yyval.opval = invert(scalar(yyvsp[0].opval)); } break; case 40: -#line 288 "perly.y" +#line 302 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 41: -#line 292 "perly.y" +#line 306 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 42: -#line 296 "perly.y" +#line 310 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 43: -#line 300 "perly.y" +#line 314 "perly.y" { yyval.opval = yyvsp[0].opval; intro_my(); } break; case 44: -#line 304 "perly.y" +#line 319 "perly.y" { yyval.pval = Nullch; } break; case 46: -#line 309 "perly.y" +#line 325 "perly.y" { yyval.ival = 0; } break; case 47: -#line 311 "perly.y" +#line 327 "perly.y" { yyval.ival = 0; } break; case 48: -#line 313 "perly.y" +#line 329 "perly.y" { yyval.ival = 0; } break; case 49: -#line 315 "perly.y" +#line 331 "perly.y" { yyval.ival = 0; } break; case 50: -#line 317 "perly.y" +#line 333 "perly.y" { yyval.ival = 0; } break; case 51: -#line 321 "perly.y" +#line 337 "perly.y" { newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); } break; case 52: -#line 324 "perly.y" +#line 340 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 53: -#line 325 "perly.y" +#line 341 "perly.y" { yyval.opval = Nullop; } break; case 54: -#line 329 "perly.y" +#line 346 "perly.y" { newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } break; case 55: -#line 333 "perly.y" +#line 351 "perly.y" { newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } break; case 56: -#line 337 "perly.y" +#line 355 "perly.y" { yyval.ival = start_subparse(FALSE, 0); } break; case 57: -#line 341 "perly.y" +#line 359 "perly.y" { yyval.ival = start_subparse(FALSE, CVf_ANON); } break; case 58: -#line 345 "perly.y" +#line 363 "perly.y" { yyval.ival = start_subparse(TRUE, 0); } break; case 59: -#line 348 "perly.y" +#line 367 "perly.y" { STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a); if (strEQ(name, "BEGIN") || strEQ(name, "END") || strEQ(name, "INIT") || strEQ(name, "CHECK")) @@ -1845,361 +1880,403 @@ case 59: yyval.opval = yyvsp[0].opval; } break; case 60: -#line 356 "perly.y" +#line 376 "perly.y" { yyval.opval = Nullop; } break; case 62: -#line 361 "perly.y" +#line 382 "perly.y" { yyval.opval = Nullop; } break; case 63: -#line 363 "perly.y" +#line 384 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 64: -#line 365 "perly.y" +#line 386 "perly.y" { yyval.opval = Nullop; } break; case 65: -#line 369 "perly.y" +#line 391 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 66: -#line 371 "perly.y" +#line 393 "perly.y" { yyval.opval = Nullop; } break; case 67: -#line 374 "perly.y" +#line 397 "perly.y" { yyval.opval = yyvsp[0].opval; } break; case 68: -#line 375 "perly.y" +#line 398 "perly.y" { yyval.opval = Nullop; PL_expect = XSTATE; } break; case 69: -#line 379 "perly.y" +#line 402 "perly.y" { package(yyvsp[-1].opval); } break; case 70: -#line 381 "perly.y" +#line 404 "perly.y" { package(Nullop); } break; case 71: -#line 385 "perly.y" +#line 408 "perly.y" { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } break; case 72: -#line 387 "perly.y" +#line 410 "perly.y" { utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); } break; case 73: -#line 391 "perly.y" +#line 415 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 74: -#line 393 "perly.y" +#line 417 "perly.y" { yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 76: -#line 398 "perly.y" +#line 423 "perly.y" { yyval.opval = yyvsp[-1].opval; } break; case 77: -#line 400 "perly.y" +#line 425 "perly.y" { yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); } break; case 79: -#line 405 "perly.y" +#line 431 "perly.y" { yyval.opval = convert(yyvsp[-2].ival, OPf_STACKED, prepend_elem(OP_LIST, newGVREF(yyvsp[-2].ival,yyvsp[-1].opval), yyvsp[0].opval) ); } break; case 80: -#line 408 "perly.y" +#line 434 "perly.y" { yyval.opval = convert(yyvsp[-4].ival, OPf_STACKED, prepend_elem(OP_LIST, newGVREF(yyvsp[-4].ival,yyvsp[-2].opval), yyvsp[-1].opval) ); } break; case 81: -#line 411 "perly.y" +#line 437 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, scalar(yyvsp[-5].opval), yyvsp[-1].opval), newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); } break; case 82: -#line 416 "perly.y" +#line 442 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, scalar(yyvsp[-2].opval), newUNOP(OP_METHOD, 0, yyvsp[0].opval))); } break; case 83: -#line 420 "perly.y" +#line 446 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-1].opval, yyvsp[0].opval), newUNOP(OP_METHOD, 0, yyvsp[-2].opval))); } break; case 84: -#line 425 "perly.y" +#line 451 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-3].opval, yyvsp[-1].opval), newUNOP(OP_METHOD, 0, yyvsp[-4].opval))); } break; case 85: -#line 430 "perly.y" +#line 456 "perly.y" { yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); } break; case 86: -#line 432 "perly.y" +#line 458 "perly.y" { yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); } break; case 87: -#line 434 "perly.y" +#line 460 "perly.y" { yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); } break; case 88: -#line 436 "perly.y" +#line 462 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval), yyvsp[-4].opval)); } break; case 91: -#line 446 "perly.y" +#line 476 "perly.y" { yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval)); } break; case 92: -#line 448 "perly.y" +#line 478 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); } break; case 93: -#line 450 "perly.y" +#line 480 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, ref(newAVREF(yyvsp[-4].opval),OP_RV2AV), scalar(yyvsp[-1].opval));} break; case 94: -#line 454 "perly.y" +#line 484 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, ref(newAVREF(yyvsp[-3].opval),OP_RV2AV), scalar(yyvsp[-1].opval));} break; case 95: -#line 458 "perly.y" +#line 488 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval)); PL_expect = XOPERATOR; } break; case 96: -#line 461 "perly.y" +#line 491 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, ref(newHVREF(yyvsp[-5].opval),OP_RV2HV), jmaybe(yyvsp[-2].opval)); PL_expect = XOPERATOR; } break; case 97: -#line 466 "perly.y" +#line 496 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, ref(newHVREF(yyvsp[-4].opval),OP_RV2HV), jmaybe(yyvsp[-2].opval)); PL_expect = XOPERATOR; } break; case 98: -#line 471 "perly.y" +#line 501 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar(yyvsp[-3].opval))); } break; case 99: -#line 474 "perly.y" +#line 504 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, newCVREF(0, scalar(yyvsp[-4].opval)))); } break; case 100: -#line 479 "perly.y" +#line 509 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, newCVREF(0, scalar(yyvsp[-3].opval)))); } break; case 101: -#line 483 "perly.y" +#line 513 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar(yyvsp[-2].opval))); } break; case 102: -#line 489 "perly.y" +#line 519 "perly.y" { yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); } break; case 103: -#line 491 "perly.y" +#line 521 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 104: -#line 493 "perly.y" +#line 523 "perly.y" { if (yyvsp[-1].ival != OP_REPEAT) scalar(yyvsp[-2].opval); yyval.opval = newBINOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, scalar(yyvsp[0].opval)); } break; case 105: -#line 497 "perly.y" +#line 527 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 106: -#line 499 "perly.y" +#line 529 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 107: -#line 501 "perly.y" +#line 531 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 108: -#line 503 "perly.y" +#line 533 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 109: -#line 505 "perly.y" +#line 535 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 110: -#line 507 "perly.y" +#line 537 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } break; case 111: -#line 509 "perly.y" +#line 539 "perly.y" { yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));} break; case 112: -#line 511 "perly.y" +#line 541 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 113: -#line 513 "perly.y" +#line 543 "perly.y" { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); } break; case 114: -#line 515 "perly.y" -{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 115: -#line 517 "perly.y" +#line 545 "perly.y" { yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); } break; -case 116: -#line 520 "perly.y" +case 115: +#line 550 "perly.y" { yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); } break; -case 117: -#line 522 "perly.y" +case 116: +#line 552 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 118: -#line 524 "perly.y" +case 117: +#line 554 "perly.y" { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } break; -case 119: -#line 526 "perly.y" +case 118: +#line 556 "perly.y" { yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));} break; -case 120: -#line 528 "perly.y" -{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); } -break; -case 121: -#line 530 "perly.y" +case 119: +#line 558 "perly.y" { yyval.opval = newUNOP(OP_POSTINC, 0, mod(scalar(yyvsp[-1].opval), OP_POSTINC)); } break; -case 122: -#line 533 "perly.y" +case 120: +#line 561 "perly.y" { yyval.opval = newUNOP(OP_POSTDEC, 0, mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); } break; -case 123: -#line 536 "perly.y" +case 121: +#line 564 "perly.y" { yyval.opval = newUNOP(OP_PREINC, 0, mod(scalar(yyvsp[0].opval), OP_PREINC)); } break; -case 124: -#line 539 "perly.y" +case 122: +#line 567 "perly.y" { yyval.opval = newUNOP(OP_PREDEC, 0, mod(scalar(yyvsp[0].opval), OP_PREDEC)); } break; +case 123: +#line 574 "perly.y" +{ yyval.opval = newANONLIST(yyvsp[-1].opval); } +break; +case 124: +#line 576 "perly.y" +{ yyval.opval = newANONLIST(Nullop); } +break; case 125: -#line 542 "perly.y" -{ yyval.opval = yyvsp[0].opval; } +#line 578 "perly.y" +{ yyval.opval = newANONHASH(yyvsp[-2].opval); } break; case 126: -#line 544 "perly.y" -{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } +#line 580 "perly.y" +{ yyval.opval = newANONHASH(Nullop); } break; case 127: -#line 546 "perly.y" -{ yyval.opval = sawparens(yyvsp[-1].opval); } +#line 582 "perly.y" +{ yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } break; case 128: -#line 548 "perly.y" -{ yyval.opval = sawparens(newNULLLIST()); } +#line 588 "perly.y" +{ yyval.opval = dofile(yyvsp[0].opval); } break; case 129: -#line 550 "perly.y" -{ yyval.opval = newANONLIST(yyvsp[-1].opval); } +#line 590 "perly.y" +{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); } break; case 130: -#line 552 "perly.y" -{ yyval.opval = newANONLIST(Nullop); } +#line 592 "perly.y" +{ yyval.opval = newUNOP(OP_ENTERSUB, + OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + scalar(newCVREF( + (OPpENTERSUB_AMPER<<8), + scalar(yyvsp[-2].opval) + )),Nullop)); dep();} break; case 131: -#line 554 "perly.y" -{ yyval.opval = newANONHASH(yyvsp[-2].opval); } +#line 600 "perly.y" +{ yyval.opval = newUNOP(OP_ENTERSUB, + OPf_SPECIAL|OPf_STACKED, + append_elem(OP_LIST, + yyvsp[-1].opval, + scalar(newCVREF( + (OPpENTERSUB_AMPER<<8), + scalar(yyvsp[-3].opval) + )))); dep();} break; case 132: -#line 556 "perly.y" -{ yyval.opval = newANONHASH(Nullop); } +#line 609 "perly.y" +{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();} break; case 133: -#line 558 "perly.y" -{ yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } +#line 613 "perly.y" +{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + yyvsp[-1].opval, + scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();} break; -case 134: -#line 560 "perly.y" +case 138: +#line 625 "perly.y" +{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); } +break; +case 139: +#line 627 "perly.y" +{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); } +break; +case 140: +#line 629 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 135: -#line 562 "perly.y" +case 141: +#line 631 "perly.y" +{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } +break; +case 142: +#line 633 "perly.y" +{ yyval.opval = sawparens(yyvsp[-1].opval); } +break; +case 143: +#line 635 "perly.y" +{ yyval.opval = sawparens(newNULLLIST()); } +break; +case 144: +#line 637 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 136: -#line 564 "perly.y" +case 145: +#line 639 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 137: -#line 566 "perly.y" +case 146: +#line 641 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 138: -#line 568 "perly.y" +case 147: +#line 643 "perly.y" +{ yyval.opval = yyvsp[0].opval; } +break; +case 148: +#line 645 "perly.y" { yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));} break; -case 139: -#line 570 "perly.y" +case 149: +#line 647 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 140: -#line 572 "perly.y" +case 150: +#line 649 "perly.y" { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); } break; -case 141: -#line 574 "perly.y" +case 151: +#line 651 "perly.y" { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); } break; -case 142: -#line 576 "perly.y" +case 152: +#line 653 "perly.y" { yyval.opval = prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, list(yyvsp[-1].opval), ref(yyvsp[-3].opval, OP_ASLICE))); } break; -case 143: -#line 582 "perly.y" +case 153: +#line 659 "perly.y" { yyval.opval = prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -2207,222 +2284,180 @@ case 143: ref(oopsHV(yyvsp[-4].opval), OP_HSLICE))); PL_expect = XOPERATOR; } break; -case 144: -#line 589 "perly.y" +case 154: +#line 666 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 145: -#line 591 "perly.y" +case 155: +#line 668 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); } break; -case 146: -#line 593 "perly.y" +case 156: +#line 670 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); } break; -case 147: -#line 595 "perly.y" +case 157: +#line 672 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); } break; -case 148: -#line 598 "perly.y" +case 158: +#line 675 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } break; -case 149: -#line 601 "perly.y" -{ yyval.opval = dofile(yyvsp[0].opval); } -break; -case 150: -#line 603 "perly.y" -{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); } -break; -case 151: -#line 605 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar(yyvsp[-2].opval) - )),Nullop)); dep();} -break; -case 152: -#line 613 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - append_elem(OP_LIST, - yyvsp[-1].opval, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar(yyvsp[-3].opval) - )))); dep();} -break; -case 153: -#line 622 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();} -break; -case 154: -#line 626 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - yyvsp[-1].opval, - scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();} -break; -case 155: -#line 631 "perly.y" +case 159: +#line 678 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; } break; -case 156: -#line 634 "perly.y" +case 160: +#line 681 "perly.y" { yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); } break; -case 157: -#line 636 "perly.y" +case 161: +#line 683 "perly.y" { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } break; -case 158: -#line 638 "perly.y" +case 162: +#line 685 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, 0); } break; -case 159: -#line 640 "perly.y" +case 163: +#line 687 "perly.y" { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } break; -case 160: -#line 642 "perly.y" +case 164: +#line 689 "perly.y" { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } break; -case 161: -#line 644 "perly.y" +case 165: +#line 691 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } break; -case 162: -#line 647 "perly.y" +case 166: +#line 694 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, 0); } break; -case 163: -#line 649 "perly.y" +case 167: +#line 696 "perly.y" { yyval.opval = newOP(yyvsp[-2].ival, 0); } break; -case 164: -#line 651 "perly.y" +case 168: +#line 698 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[0].opval)); } break; -case 165: -#line 654 "perly.y" +case 169: +#line 701 "perly.y" { yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); } break; -case 166: -#line 656 "perly.y" +case 170: +#line 703 "perly.y" { yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); } break; -case 167: -#line 658 "perly.y" +case 171: +#line 705 "perly.y" { yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); } break; -case 168: -#line 660 "perly.y" +case 172: +#line 707 "perly.y" { yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); } break; -case 171: -#line 666 "perly.y" +case 175: +#line 714 "perly.y" { yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); } break; -case 172: -#line 668 "perly.y" +case 176: +#line 716 "perly.y" { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } break; -case 173: -#line 672 "perly.y" +case 177: +#line 721 "perly.y" { yyval.opval = sawparens(yyvsp[-1].opval); } break; -case 174: -#line 674 "perly.y" +case 178: +#line 723 "perly.y" { yyval.opval = sawparens(newNULLLIST()); } break; -case 175: -#line 676 "perly.y" +case 179: +#line 725 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 176: -#line 678 "perly.y" +case 180: +#line 727 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 177: -#line 680 "perly.y" +case 181: +#line 729 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 178: -#line 684 "perly.y" +case 182: +#line 734 "perly.y" { yyval.opval = Nullop; } break; -case 179: -#line 686 "perly.y" +case 183: +#line 736 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 180: -#line 690 "perly.y" +case 184: +#line 740 "perly.y" { yyval.opval = Nullop; } break; -case 181: -#line 692 "perly.y" +case 185: +#line 742 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -case 182: -#line 694 "perly.y" +case 186: +#line 744 "perly.y" { yyval.opval = yyvsp[-1].opval; } break; -case 183: -#line 698 "perly.y" +case 187: +#line 750 "perly.y" { PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); } break; -case 184: -#line 702 "perly.y" +case 188: +#line 754 "perly.y" { yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); } break; -case 185: -#line 706 "perly.y" +case 189: +#line 758 "perly.y" { yyval.opval = newSVREF(yyvsp[0].opval); } break; -case 186: -#line 710 "perly.y" +case 190: +#line 762 "perly.y" { yyval.opval = newAVREF(yyvsp[0].opval); } break; -case 187: -#line 714 "perly.y" +case 191: +#line 766 "perly.y" { yyval.opval = newHVREF(yyvsp[0].opval); } break; -case 188: -#line 718 "perly.y" +case 192: +#line 770 "perly.y" { yyval.opval = newAVREF(yyvsp[0].opval); } break; -case 189: -#line 722 "perly.y" +case 193: +#line 774 "perly.y" { yyval.opval = newGVREF(0,yyvsp[0].opval); } break; -case 190: -#line 726 "perly.y" +case 194: +#line 779 "perly.y" { yyval.opval = scalar(yyvsp[0].opval); } break; -case 191: -#line 728 "perly.y" +case 195: +#line 781 "perly.y" { yyval.opval = scalar(yyvsp[0].opval); } break; -case 192: -#line 730 "perly.y" +case 196: +#line 783 "perly.y" { yyval.opval = scope(yyvsp[0].opval); } break; -case 193: -#line 733 "perly.y" +case 197: +#line 786 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -#line 2442 "perly.c" +#line 2477 "perly.c" } yyssp -= yym; yystate = *yyssp; |